{"type": "func", "start": 6443710308, "end": 6443710520, "name": "_umatherr", "pseudocode": "// \n// _umatherr from 0x180133764 to 0x180133838 (212 bytes)\n// \n// 2 xrefs:\n// > _except2 @ 0x180133115\n// > <???> @ 0x180203164\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 umatherr(int a1, int a2, double a3, double a4, double a5, __int64 a6)\n{\n  _DWORD *v7; // rax\n  int v8; // r8d\n  __int64 v9; // rax\n  int v11; // [rsp+20h] [rbp-38h] BYREF\n  __int64 v12; // [rsp+28h] [rbp-30h]\n  double v13; // [rsp+30h] [rbp-28h]\n  double v14; // [rsp+38h] [rbp-20h]\n  double v15; // [rsp+40h] [rbp-18h]\n\n  v7 = &unk_180173180;\n  v8 = 0;\n  while ( *v7 != a2 )\n  {\n    ++v8;\n    v7 += 4;\n    if ( (__int64)v7 >= (__int64)&dword_180173350 )\n    {\n      v9 = 0;\n      goto LABEL_6;\n    }\n  }\n  v9 = *((_QWORD *)&unk_180173180 + 2 * v8 + 1);\nLABEL_6:\n  v12 = v9;\n  if ( v9 )\n  {\n    v13 = a3;\n    v14 = a4;\n    v15 = a5;\n    v11 = a1;\n    ctrlfp(a6, 65472);\n    if ( !(unsigned int)_acrt_invoke_user_matherr(&v11) )\n      set_errno_from_matherr(a1);\n    return v15;\n  }\n  else\n  {\n    ctrlfp(a6, 65472);\n    set_errno_from_matherr(a1);\n    return a5;\n  }\n}", "assembly": "; \n; _umatherr from 0x180133764 to 0x180133838 (212 bytes)\n; \n; 2 xrefs:\n; > _except2 @ 0x180133115\n; > <???> @ 0x180203164\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\nmovsd   [rsp+arg_18], xmm3                                             ; +0x0, 0x180133764\nmovsd   [rsp+arg_10], xmm2                                             ; +0x6, 0x18013376a\npush    rbx                                                            ; +0xc, 0x180133770\nsub     rsp, 50h                                                       ; +0xd, 0x180133771\nlea     r9, unk_180173180                                              ; +0x11, 0x180133775\nmov     ebx, ecx                                                       ; +0x18, 0x18013377c\nmov     rax, r9                                                        ; +0x1a, 0x18013377e\nxor     r8d, r8d                                                       ; +0x1d, 0x180133781\ncmp     [rax], edx                                                     ; +0x20, 0x180133784\njz      short loc_18013379F                                            ; +0x22, 0x180133786\ninc     r8d                                                            ; +0x24, 0x180133788\nlea     rcx, dword_180173350                                           ; +0x27, 0x18013378b\nadd     rax, 10h                                                       ; +0x2e, 0x180133792\ncmp     rax, rcx                                                       ; +0x32, 0x180133796\njl      short loc_180133784                                            ; +0x35, 0x180133799\nxor     eax, eax                                                       ; +0x37, 0x18013379b\njmp     short loc_1801337AA                                            ; +0x39, 0x18013379d\nmovsxd  rax, r8d                                                       ; +0x3b, 0x18013379f\nadd     rax, rax                                                       ; +0x3e, 0x1801337a2\nmov     rax, [r9+rax*8+8]                                              ; +0x41, 0x1801337a5\nmov     rcx, [rsp+58h+arg_28]                                          ; +0x46, 0x1801337aa\nmov     edx, 0FFC0h                                                    ; +0x4e, 0x1801337b2\nmov     [rsp+58h+var_30], rax                                          ; +0x53, 0x1801337b7\ntest    rax, rax                                                       ; +0x58, 0x1801337bc\njz      short loc_18013381D                                            ; +0x5b, 0x1801337bf\nmov     eax, dword ptr [rsp+58h+arg_10]                                ; +0x5d, 0x1801337c1\nmov     dword ptr [rsp+58h+var_28], eax                                ; +0x61, 0x1801337c5\nmov     eax, dword ptr [rsp+58h+arg_10+4]                              ; +0x65, 0x1801337c9\nmov     dword ptr [rsp+58h+var_28+4], eax                              ; +0x69, 0x1801337cd\nmov     eax, dword ptr [rsp+58h+arg_18]                                ; +0x6d, 0x1801337d1\nmov     dword ptr [rsp+58h+var_20], eax                                ; +0x71, 0x1801337d5\nmov     eax, dword ptr [rsp+58h+arg_18+4]                              ; +0x75, 0x1801337d9\nmov     dword ptr [rsp+58h+var_20+4], eax                              ; +0x79, 0x1801337dd\nmov     eax, dword ptr [rsp+58h+arg_20]                                ; +0x7d, 0x1801337e1\nmov     dword ptr [rsp+58h+var_18], eax                                ; +0x84, 0x1801337e8\nmov     eax, dword ptr [rsp+58h+arg_20+4]                              ; +0x88, 0x1801337ec\nmov     dword ptr [rsp+58h+var_18+4], eax                              ; +0x8f, 0x1801337f3\nmov     [rsp+58h+var_38], ebx                                          ; +0x93, 0x1801337f7\ncall    _ctrlfp                                                        ; +0x97, 0x1801337fb\nlea     rcx, [rsp+58h+var_38]                                          ; +0x9c, 0x180133800\ncall    __acrt_invoke_user_matherr                                     ; +0xa1, 0x180133805\ntest    eax, eax                                                       ; +0xa6, 0x18013380a\njnz     short loc_180133815                                            ; +0xa8, 0x18013380c\nmov     ecx, ebx                                                       ; +0xaa, 0x18013380e\ncall    _set_errno_from_matherr                                        ; +0xac, 0x180133810\nmovsd   xmm0, [rsp+58h+var_18]                                         ; +0xb1, 0x180133815\njmp     short loc_180133832                                            ; +0xb7, 0x18013381b\ncall    _ctrlfp                                                        ; +0xb9, 0x18013381d\nmov     ecx, ebx                                                       ; +0xbe, 0x180133822\ncall    _set_errno_from_matherr                                        ; +0xc0, 0x180133824\nmovsd   xmm0, [rsp+58h+arg_20]                                         ; +0xc5, 0x180133829\nadd     rsp, 50h                                                       ; +0xce, 0x180133832\npop     rbx                                                            ; +0xd2, 0x180133836\nretn                                                                   ; +0xd3, 0x180133837", "xrefs": ["_except2 @ 0x180133115", "<???> @ 0x180203164"], "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"}