{"type": "func", "start": 6443699088, "end": 6443699578, "name": "asinf", "pseudocode": "// \n// asinf from 0x180130b90 to 0x180130d7a (490 bytes)\n// \n// 2 xrefs:\n// > sub_1800F9FF0 @ 0x1800fa8c0\n// > <???> @ 0x180202e94\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\nfloat __cdecl asinf(float X)\n{\n  float v1; // xmm5_4\n  float v2; // xmm6_4\n  __int64 v3; // rdx\n  float v4; // xmm1_4\n  float v5; // xmm4_4\n  float v6; // xmm4_4\n  float v7; // [rsp+70h] [rbp+8h]\n\n  v1 = 0.0;\n  v2 = X;\n  v3 = (unsigned __int8)(LODWORD(X) >> 23);\n  if ( (LODWORD(X) & 0x7FFFFFFFu) > 0x7F800000 )\n    return handle_nanf(LODWORD(X), v3);\n  if ( (unsigned int)v3 < 0x71 )\n    goto LABEL_9;\n  if ( (unsigned int)v3 < 0x7F )\n  {\n    if ( X < 0.0 )\n      v2 = -X;\n    if ( (unsigned int)v3 < 0x7E )\n    {\n      v4 = v2 * v2;\n      v7 = v2 * v2;\n    }\n    else\n    {\n      v4 = (float)(1.0 - v2) * 0.5;\n      v7 = v4;\n      v1 = fsqrt(v4);\n      v2 = v1;\n    }\n    v5 = (float)((float)((float)((float)((float)((float)(-0.013381929 - (float)(v4 * 0.0039613745)) * v4) - 0.056529868)\n                               * v4)\n                       + 0.1841616)\n               * v4)\n       / (float)(1.1049696 - (float)(v4 * 0.8364113));\n    if ( (unsigned int)v3 < 0x7E )\n      v6 = (float)(v5 * v2) + v2;\n    else\n      v6 = 0.78539813\n         - (float)((float)((float)((float)(v1 + v1) * v5)\n                         - (float)(0.000000075497894\n                                 - (float)((float)((float)(v7\n                                                         - (float)(COERCE_FLOAT(LODWORD(v1) & 0xFFFF0000)\n                                                                 * COERCE_FLOAT(LODWORD(v1) & 0xFFFF0000)))\n                                                 / (float)(COERCE_FLOAT(LODWORD(v1) & 0xFFFF0000) + v1))\n                                         + (float)((float)(v7\n                                                         - (float)(COERCE_FLOAT(LODWORD(v1) & 0xFFFF0000)\n                                                                 * COERCE_FLOAT(LODWORD(v1) & 0xFFFF0000)))\n                                                 / (float)(COERCE_FLOAT(LODWORD(v1) & 0xFFFF0000) + v1)))))\n                 - (float)(0.78539813 - (float)(COERCE_FLOAT(LODWORD(v1) & 0xFFFF0000) * 2.0)));\n    if ( X < 0.0 )\n      return -v6;\n    return v6;\n  }\n  else\n  {\n    if ( X == 1.0 )\n    {\n      v2 = 1.5707964;\nLABEL_9:\n      set_statfp(32);\n      return v2;\n    }\n    if ( X == -1.0 )\n    {\n      v2 = -1.5707964;\n      goto LABEL_9;\n    }\n    handle_errorf((unsigned int)\"asinf\", 14, -4194304, 1, 8, 33, LODWORD(X), 0, 1);\n  }\n  return X;\n}", "assembly": "; \n; asinf from 0x180130b90 to 0x180130d7a (490 bytes)\n; \n; 2 xrefs:\n; > sub_1800F9FF0 @ 0x1800fa8c0\n; > <???> @ 0x180202e94\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\nsub     rsp, 68h                                                       ; +0x0, 0x180130b90\nmovaps  [rsp+68h+var_18], xmm6                                         ; +0x4, 0x180130b94\nxorps   xmm5, xmm5                                                     ; +0x9, 0x180130b99\nmovaps  xmm6, xmm0                                                     ; +0xc, 0x180130b9c\nmovss   [rsp+68h+arg_8], xmm6                                          ; +0xf, 0x180130b9f\nmov     ecx, [rsp+68h+arg_8]                                           ; +0x15, 0x180130ba5\nmov     eax, ecx                                                       ; +0x19, 0x180130ba9\nshr     eax, 17h                                                       ; +0x1b, 0x180130bab\nmovzx   edx, al                                                        ; +0x1e, 0x180130bae\nmov     eax, ecx                                                       ; +0x21, 0x180130bb1\nbtr     eax, 1Fh                                                       ; +0x23, 0x180130bb3\ncmp     eax, 7F800000h                                                 ; +0x27, 0x180130bb7\njbe     short loc_180130BCC                                            ; +0x2c, 0x180130bbc\nmovaps  xmm6, [rsp+68h+var_18]                                         ; +0x2e, 0x180130bbe\nadd     rsp, 68h                                                       ; +0x33, 0x180130bc3\njmp     _handle_nanf                                                   ; +0x37, 0x180130bc7\ncmp     edx, 71h ; 'q'                                                 ; +0x3c, 0x180130bcc\njb      short loc_180130BFE                                            ; +0x3f, 0x180130bcf\ncmp     edx, 7Fh                                                       ; +0x41, 0x180130bd1\njb      short loc_180130C52                                            ; +0x44, 0x180130bd4\nucomiss xmm6, cs:dword_180145744                                       ; +0x46, 0x180130bd6\njp      short loc_180130BEB                                            ; +0x4d, 0x180130bdd\njnz     short loc_180130BEB                                            ; +0x4f, 0x180130bdf\nmovss   xmm6, cs:dword_180166F14                                       ; +0x51, 0x180130be1\njmp     short loc_180130BFE                                            ; +0x59, 0x180130be9\nucomiss xmm6, cs:X                                                     ; +0x5b, 0x180130beb\njp      short loc_180130C10                                            ; +0x62, 0x180130bf2\njnz     short loc_180130C10                                            ; +0x64, 0x180130bf4\nmovss   xmm6, cs:dword_180168E90                                       ; +0x66, 0x180130bf6\nmov     ecx, 20h ; ' '                                                 ; +0x6e, 0x180130bfe\ncall    _set_statfp                                                    ; +0x73, 0x180130c03\nmovaps  xmm0, xmm6                                                     ; +0x78, 0x180130c08\njmp     loc_180130D70                                                  ; +0x7b, 0x180130c0b\nmov     r9d, 1                                                         ; +0x80, 0x180130c10\nlea     rcx, aAsinf                                                    ; +0x86, 0x180130c16\nmov     [rsp+68h+var_28], r9d                                          ; +0x8d, 0x180130c1d\nmov     r8d, 0FFC00000h                                                ; +0x92, 0x180130c22\nmovss   [rsp+68h+var_30], xmm5                                         ; +0x98, 0x180130c28\nmovss   [rsp+68h+var_38], xmm6                                         ; +0x9e, 0x180130c2e\nmov     [rsp+68h+var_40], 21h ; '!'                                    ; +0xa4, 0x180130c34\nlea     edx, [r9+0Dh]                                                  ; +0xac, 0x180130c3c\nmov     [rsp+68h+var_48], 8                                            ; +0xb0, 0x180130c40\ncall    _handle_errorf                                                 ; +0xb8, 0x180130c48\njmp     loc_180130D70                                                  ; +0xbd, 0x180130c4d\ntest    ecx, ecx                                                       ; +0xc2, 0x180130c52\njns     short loc_180130C5D                                            ; +0xc4, 0x180130c54\nxorps   xmm6, cs:xmmword_180144610                                     ; +0xc6, 0x180130c56\ncmp     edx, 7Eh ; '~'                                                 ; +0xcd, 0x180130c5d\njb      short loc_180130C8E                                            ; +0xd0, 0x180130c60\nmovss   xmm1, cs:dword_180145744                                       ; +0xd2, 0x180130c62\nsubss   xmm1, xmm6                                                     ; +0xda, 0x180130c6a\nmulss   xmm1, cs:dword_18014573C                                       ; +0xde, 0x180130c6e\nmovss   [rsp+68h+arg_0], xmm1                                          ; +0xe6, 0x180130c76\nmovss   xmm0, [rsp+68h+arg_0]                                          ; +0xec, 0x180130c7c\nmovaps  xmm5, xmm0                                                     ; +0xf2, 0x180130c82\nsqrtss  xmm5, xmm0                                                     ; +0xf5, 0x180130c85\nmovaps  xmm6, xmm5                                                     ; +0xf9, 0x180130c89\njmp     short loc_180130C9B                                            ; +0xfc, 0x180130c8c\nmovaps  xmm1, xmm6                                                     ; +0xfe, 0x180130c8e\nmulss   xmm1, xmm6                                                     ; +0x101, 0x180130c91\nmovss   [rsp+68h+arg_0], xmm1                                          ; +0x105, 0x180130c95\nmovss   xmm4, cs:dword_180170C60                                       ; +0x10b, 0x180130c9b\nmovaps  xmm0, xmm1                                                     ; +0x113, 0x180130ca3\nmulss   xmm0, cs:dword_180170C30                                       ; +0x116, 0x180130ca6\nsubss   xmm4, xmm0                                                     ; +0x11e, 0x180130cae\nmovss   xmm0, cs:dword_180170C4C                                       ; +0x122, 0x180130cb2\nmulss   xmm4, xmm1                                                     ; +0x12a, 0x180130cba\nsubss   xmm4, cs:dword_180170C40                                       ; +0x12e, 0x180130cbe\nmulss   xmm4, xmm1                                                     ; +0x136, 0x180130cc6\naddss   xmm4, cs:dword_180170C44                                       ; +0x13a, 0x180130cca\nmulss   xmm4, xmm1                                                     ; +0x142, 0x180130cd2\nmulss   xmm1, cs:dword_180170C48                                       ; +0x146, 0x180130cd6\nsubss   xmm0, xmm1                                                     ; +0x14e, 0x180130cde\ndivss   xmm4, xmm0                                                     ; +0x152, 0x180130ce2\njb      short loc_180130D5A                                            ; +0x156, 0x180130ce6\nmovss   [rsp+68h+arg_8], xmm5                                          ; +0x158, 0x180130ce8\nmov     eax, [rsp+68h+arg_8]                                           ; +0x15e, 0x180130cee\nand     eax, 0FFFF0000h                                                ; +0x162, 0x180130cf2\nmov     [rsp+68h+arg_8], eax                                           ; +0x167, 0x180130cf7\nmovss   xmm3, [rsp+68h+arg_8]                                          ; +0x16b, 0x180130cfb\nmovss   xmm2, [rsp+68h+arg_0]                                          ; +0x171, 0x180130d01\nmovaps  xmm0, xmm3                                                     ; +0x177, 0x180130d07\nmulss   xmm0, xmm3                                                     ; +0x17a, 0x180130d0a\nmovaps  xmm1, xmm3                                                     ; +0x17e, 0x180130d0e\nmulss   xmm3, cs:flt_180145750                                         ; +0x181, 0x180130d11\naddss   xmm1, xmm5                                                     ; +0x189, 0x180130d19\nsubss   xmm2, xmm0                                                     ; +0x18d, 0x180130d1d\nmovss   xmm0, cs:dword_180172C7C                                       ; +0x191, 0x180130d21\naddss   xmm5, xmm5                                                     ; +0x199, 0x180130d29\ndivss   xmm2, xmm1                                                     ; +0x19d, 0x180130d2d\nmulss   xmm5, xmm4                                                     ; +0x1a1, 0x180130d31\nmovss   xmm4, cs:dword_180172C80                                       ; +0x1a5, 0x180130d35\naddss   xmm2, xmm2                                                     ; +0x1ad, 0x180130d3d\nsubss   xmm0, xmm2                                                     ; +0x1b1, 0x180130d41\nsubss   xmm5, xmm0                                                     ; +0x1b5, 0x180130d45\nmovaps  xmm0, xmm4                                                     ; +0x1b9, 0x180130d49\nsubss   xmm0, xmm3                                                     ; +0x1bc, 0x180130d4c\nsubss   xmm5, xmm0                                                     ; +0x1c0, 0x180130d50\nsubss   xmm4, xmm5                                                     ; +0x1c4, 0x180130d54\njmp     short loc_180130D62                                            ; +0x1c8, 0x180130d58\nmulss   xmm4, xmm6                                                     ; +0x1ca, 0x180130d5a\naddss   xmm4, xmm6                                                     ; +0x1ce, 0x180130d5e\ntest    ecx, ecx                                                       ; +0x1d2, 0x180130d62\njns     short loc_180130D6D                                            ; +0x1d4, 0x180130d64\nxorps   xmm4, cs:xmmword_180144610                                     ; +0x1d6, 0x180130d66\nmovaps  xmm0, xmm4                                                     ; +0x1dd, 0x180130d6d\nmovaps  xmm6, [rsp+68h+var_18]                                         ; +0x1e0, 0x180130d70\nadd     rsp, 68h                                                       ; +0x1e5, 0x180130d75\nretn                                                                   ; +0x1e9, 0x180130d79", "xrefs": ["sub_1800F9FF0 @ 0x1800fa8c0", "<???> @ 0x180202e94"], "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"}