{"type": "func", "start": 6443708504, "end": 6443708766, "name": "_except2", "pseudocode": "// \n// _except2 from 0x180133058 to 0x18013315e (262 bytes)\n// \n// 2 xrefs:\n// > ldexp @ 0x180127634\n// > <???> @ 0x18020311c\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 except2(__int64 a1, int a2, double a3, double a4, double a5, __int64 a6)\n{\n  __int64 v6; // rdi\n  int v8; // ebx\n  unsigned int v9; // ebx\n  int v10; // r8d\n  int v11; // r9d\n  double result; // xmm0_8\n  double v13[2]; // [rsp+48h] [rbp-79h] BYREF\n  char v14; // [rsp+58h] [rbp-69h] BYREF\n  double v15; // [rsp+88h] [rbp-39h]\n  unsigned int v16; // [rsp+98h] [rbp-29h]\n\n  v6 = a6;\n  v13[0] = a3;\n  v8 = a1;\n  if ( !(unsigned int)handle_exc(a1, &a5, a6) )\n  {\n    v15 = a4;\n    v16 = v16 & 0xFFFFFFE0 | 3;\n    raise_exc_ex((unsigned int)&v14, (unsigned int)&a6, v8, a2, (__int64)v13, (__int64)&a5, 0);\n    v6 = a6;\n  }\n  v9 = errcode(v8);\n  if ( (unsigned __int8)_acrt_has_user_matherr() && v9 )\n  {\n    result = a5;\n    umatherr(v9, a2, v10, v11, *(__int64 *)&a5, v6);\n  }\n  else\n  {\n    set_errno_from_matherr(v9);\n    ctrlfp(v6, 65472);\n    return a5;\n  }\n  return result;\n}", "assembly": "; \n; _except2 from 0x180133058 to 0x18013315e (262 bytes)\n; \n; 2 xrefs:\n; > ldexp @ 0x180127634\n; > <???> @ 0x18020311c\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, 0x180133058\nmov     [rax+10h], rbx                                                 ; +0x3, 0x18013305b\npush    rbp                                                            ; +0x7, 0x18013305f\npush    rsi                                                            ; +0x8, 0x180133060\npush    rdi                                                            ; +0x9, 0x180133061\nlea     rbp, [rax-4Fh]                                                 ; +0xa, 0x180133062\nsub     rsp, 0F0h                                                      ; +0xe, 0x180133066\nmovaps  xmmword ptr [rax-28h], xmm6                                    ; +0x15, 0x18013306d\nmovaps  xmmword ptr [rax-38h], xmm7                                    ; +0x19, 0x180133071\nmov     rax, cs:__security_cookie                                      ; +0x1d, 0x180133075\nxor     rax, rsp                                                       ; +0x24, 0x18013307c\nmov     [rbp+47h+var_40], rax                                          ; +0x27, 0x18013307f\nmov     rdi, [rbp+47h+arg_28]                                          ; +0x2b, 0x180133083\nmov     esi, edx                                                       ; +0x2f, 0x180133087\nmov     r8, rdi                                                        ; +0x31, 0x180133089\nmovsd   [rbp+47h+var_C0], xmm2                                         ; +0x34, 0x18013308c\nlea     rdx, [rbp+47h+arg_20]                                          ; +0x39, 0x180133091\nmovaps  xmm6, xmm3                                                     ; +0x3d, 0x180133095\nmovaps  xmm7, xmm2                                                     ; +0x40, 0x180133098\nmov     ebx, ecx                                                       ; +0x43, 0x18013309b\ncall    _handle_exc                                                    ; +0x45, 0x18013309d\ntest    eax, eax                                                       ; +0x4a, 0x1801330a2\njnz     short loc_1801330E5                                            ; +0x4c, 0x1801330a4\nmov     eax, [rbp+47h+var_70]                                          ; +0x4e, 0x1801330a6\nlea     rdx, [rbp+47h+arg_28]                                          ; +0x51, 0x1801330a9\nand     [rsp+100h+var_D0], 0                                           ; +0x55, 0x1801330ad\nlea     rcx, [rbp+47h+var_B0]                                          ; +0x5a, 0x1801330b2\nand     eax, 0FFFFFFE3h                                                ; +0x5e, 0x1801330b6\nmovsd   [rbp+47h+var_80], xmm6                                         ; +0x61, 0x1801330b9\nor      eax, 3                                                         ; +0x66, 0x1801330be\nmov     r9d, esi                                                       ; +0x69, 0x1801330c1\nmov     [rbp+47h+var_70], eax                                          ; +0x6c, 0x1801330c4\nmov     r8d, ebx                                                       ; +0x6f, 0x1801330c7\nlea     rax, [rbp+47h+arg_20]                                          ; +0x72, 0x1801330ca\nmov     qword ptr [rsp+100h+var_D8], rax                               ; +0x76, 0x1801330ce\nlea     rax, [rbp+47h+var_C0]                                          ; +0x7b, 0x1801330d3\nmov     [rsp+100h+var_E0], rax                                         ; +0x7f, 0x1801330d7\ncall    _raise_exc_ex                                                  ; +0x84, 0x1801330dc\nmov     rdi, [rbp+47h+arg_28]                                          ; +0x89, 0x1801330e1\nmov     ecx, ebx                                                       ; +0x8d, 0x1801330e5\ncall    _errcode                                                       ; +0x8f, 0x1801330e7\nmov     ebx, eax                                                       ; +0x94, 0x1801330ec\ncall    __acrt_has_user_matherr                                        ; +0x96, 0x1801330ee\ntest    al, al                                                         ; +0x9b, 0x1801330f3\njz      short loc_18013311C                                            ; +0x9d, 0x1801330f5\ntest    ebx, ebx                                                       ; +0x9f, 0x1801330f7\njz      short loc_18013311C                                            ; +0xa1, 0x1801330f9\nmovsd   xmm0, [rbp+47h+arg_20]                                         ; +0xa3, 0x1801330fb\nmovaps  xmm3, xmm6                                                     ; +0xa8, 0x180133100\nmov     qword ptr [rsp+100h+var_D8], rdi                               ; +0xab, 0x180133103\nmovaps  xmm2, xmm7                                                     ; +0xb0, 0x180133108\nmov     edx, esi                                                       ; +0xb3, 0x18013310b\nmovsd   [rsp+100h+var_E0], xmm0                                        ; +0xb5, 0x18013310d\nmov     ecx, ebx                                                       ; +0xbb, 0x180133113\ncall    _umatherr                                                      ; +0xbd, 0x180133115\njmp     short loc_180133135                                            ; +0xc2, 0x18013311a\nmov     ecx, ebx                                                       ; +0xc4, 0x18013311c\ncall    _set_errno_from_matherr                                        ; +0xc6, 0x18013311e\nmov     edx, 0FFC0h                                                    ; +0xcb, 0x180133123\nmov     rcx, rdi                                                       ; +0xd0, 0x180133128\ncall    _ctrlfp                                                        ; +0xd3, 0x18013312b\nmovsd   xmm0, [rbp+47h+arg_20]                                         ; +0xd8, 0x180133130\nmov     rcx, [rbp+47h+var_40]                                          ; +0xdd, 0x180133135\nxor     rcx, rsp; StackCookie                                          ; +0xe1, 0x180133139\ncall    __security_check_cookie                                        ; +0xe4, 0x18013313c\nlea     r11, [rsp+100h+var_10]                                         ; +0xe9, 0x180133141\nmov     rbx, [r11+28h]                                                 ; +0xf1, 0x180133149\nmovaps  xmm6, xmmword ptr [r11-10h]                                    ; +0xf5, 0x18013314d\nmovaps  xmm7, xmmword ptr [r11-20h]                                    ; +0xfa, 0x180133152\nmov     rsp, r11                                                       ; +0xff, 0x180133157\npop     rdi                                                            ; +0x102, 0x18013315a\npop     rsi                                                            ; +0x103, 0x18013315b\npop     rbp                                                            ; +0x104, 0x18013315c\nretn                                                                   ; +0x105, 0x18013315d", "xrefs": ["ldexp @ 0x180127634", "<???> @ 0x18020311c"], "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"}