{"type": "func", "start": 6443660880, "end": 6443661436, "name": "acosf", "pseudocode": "// \n// acosf from 0x180127650 to 0x18012787c (556 bytes)\n// \n// 3 xrefs:\n// > sub_1800107D0 @ 0x180010fae\n// > sub_1800107D0 @ 0x180011494\n// > <???> @ 0x1802029fc\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 acosf(float X)\n{\n  float v1; // xmm6_4\n  __int64 v2; // rdx\n  float v3; // xmm6_4\n  float v4; // xmm4_4\n  float v5; // xmm2_4\n  float v6; // xmm5_4\n  float v7; // [rsp+70h] [rbp+8h]\n\n  v1 = 0.0;\n  v2 = (unsigned __int8)(LODWORD(X) >> 23);\n  if ( (LODWORD(X) & 0x7FFFFFFFu) > 0x7F800000 )\n    return handle_nanf(LODWORD(X), v2);\n  if ( (unsigned int)v2 < 0x65 )\n  {\n    v3 = 1.5707964;\nLABEL_10:\n    set_statfp(32);\n    return v3;\n  }\n  if ( (unsigned int)v2 < 0x7F )\n  {\n    v4 = X;\n    if ( X < 0.0 )\n      v4 = -X;\n    if ( (unsigned int)v2 < 0x7E )\n    {\n      v5 = v4 * v4;\n      v7 = v4 * v4;\n    }\n    else\n    {\n      v5 = (float)(1.0 - v4) * 0.5;\n      v7 = v5;\n      v1 = fsqrt(v5);\n      v4 = v1;\n    }\n    v6 = (float)((float)((float)((float)((float)((float)(-0.013381929 - (float)(v5 * 0.0039613745)) * v5) - 0.056529868)\n                               * v5)\n                       + 0.1841616)\n               * v5)\n       / (float)(1.1049696 - (float)(v5 * 0.8364113));\n    if ( (unsigned int)v2 < 0x7E )\n    {\n      return 1.570796326794897 - (X - (6.123233995736766e-17 - (float)(v6 * X)));\n    }\n    else if ( X >= 0.0 )\n    {\n      return (float)((float)((float)(v4 + v4) * v6)\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)(COERCE_FLOAT(LODWORD(v1) & 0xFFFF0000) * 2.0);\n    }\n    else\n    {\n      return 3.141592653589793\n           - ((float)(v6 * v4)\n            - 6.123233995736766e-17\n            + v1\n            + (float)(v6 * v4)\n            - 6.123233995736766e-17\n            + v1);\n    }\n  }\n  else\n  {\n    if ( X == 1.0 )\n      return 0.0;\n    if ( X == -1.0 )\n    {\n      v3 = 3.1415927;\n      goto LABEL_10;\n    }\n    handle_errorf((unsigned int)\"acosf\", 13, -4194304, 1, 8, 33, LODWORD(X), 0, 1);\n  }\n  return X;\n}", "assembly": "; \n; acosf from 0x180127650 to 0x18012787c (556 bytes)\n; \n; 3 xrefs:\n; > sub_1800107D0 @ 0x180010fae\n; > sub_1800107D0 @ 0x180011494\n; > <???> @ 0x1802029fc\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, 0x180127650\nmovaps  xmm1, xmm0                                                     ; +0x4, 0x180127654\nmovaps  [rsp+68h+var_18], xmm6                                         ; +0x7, 0x180127657\nmovss   [rsp+68h+arg_8], xmm1                                          ; +0xc, 0x18012765c\nxorps   xmm6, xmm6                                                     ; +0x12, 0x180127662\nmov     ecx, [rsp+68h+arg_8]                                           ; +0x15, 0x180127665\nmov     eax, ecx                                                       ; +0x19, 0x180127669\nshr     eax, 17h                                                       ; +0x1b, 0x18012766b\nmovzx   edx, al                                                        ; +0x1e, 0x18012766e\nmov     eax, ecx                                                       ; +0x21, 0x180127671\nbtr     eax, 1Fh                                                       ; +0x23, 0x180127673\ncmp     eax, 7F800000h                                                 ; +0x27, 0x180127677\njbe     short loc_18012768C                                            ; +0x2c, 0x18012767c\nmovaps  xmm6, [rsp+68h+var_18]                                         ; +0x2e, 0x18012767e\nadd     rsp, 68h                                                       ; +0x33, 0x180127683\njmp     _handle_nanf                                                   ; +0x37, 0x180127687\ncmp     edx, 65h ; 'e'                                                 ; +0x3c, 0x18012768c\njnb     short loc_18012769B                                            ; +0x3f, 0x18012768f\nmovss   xmm6, cs:dword_180166F14                                       ; +0x41, 0x180127691\njmp     short loc_1801276C6                                            ; +0x49, 0x180127699\ncmp     edx, 7Fh                                                       ; +0x4b, 0x18012769b\njb      short loc_18012771A                                            ; +0x4e, 0x18012769e\nucomiss xmm1, cs:dword_180145744                                       ; +0x50, 0x1801276a0\njp      short loc_1801276B3                                            ; +0x57, 0x1801276a7\njnz     short loc_1801276B3                                            ; +0x59, 0x1801276a9\nxorps   xmm0, xmm0                                                     ; +0x5b, 0x1801276ab\njmp     loc_180127872                                                  ; +0x5e, 0x1801276ae\nucomiss xmm1, cs:X                                                     ; +0x63, 0x1801276b3\njp      short loc_1801276D8                                            ; +0x6a, 0x1801276ba\njnz     short loc_1801276D8                                            ; +0x6c, 0x1801276bc\nmovss   xmm6, cs:dword_180164B80                                       ; +0x6e, 0x1801276be\nmov     ecx, 20h ; ' '                                                 ; +0x76, 0x1801276c6\ncall    _set_statfp                                                    ; +0x7b, 0x1801276cb\nmovaps  xmm0, xmm6                                                     ; +0x80, 0x1801276d0\njmp     loc_180127872                                                  ; +0x83, 0x1801276d3\nmov     r9d, 1                                                         ; +0x88, 0x1801276d8\nlea     rcx, aAcosf                                                    ; +0x8e, 0x1801276de\nmov     [rsp+68h+var_28], r9d                                          ; +0x95, 0x1801276e5\nmov     r8d, 0FFC00000h                                                ; +0x9a, 0x1801276ea\nmovss   [rsp+68h+var_30], xmm6                                         ; +0xa0, 0x1801276f0\nmovss   [rsp+68h+var_38], xmm1                                         ; +0xa6, 0x1801276f6\nmov     [rsp+68h+var_40], 21h ; '!'                                    ; +0xac, 0x1801276fc\nlea     edx, [r9+0Ch]                                                  ; +0xb4, 0x180127704\nmov     [rsp+68h+var_48], 8                                            ; +0xb8, 0x180127708\ncall    _handle_errorf                                                 ; +0xc0, 0x180127710\njmp     loc_180127872                                                  ; +0xc5, 0x180127715\nmovaps  xmm4, xmm1                                                     ; +0xca, 0x18012771a\ntest    ecx, ecx                                                       ; +0xcd, 0x18012771d\njns     short loc_180127728                                            ; +0xcf, 0x18012771f\nxorps   xmm4, cs:xmmword_180144610                                     ; +0xd1, 0x180127721\ncmp     edx, 7Eh ; '~'                                                 ; +0xd8, 0x180127728\njb      short loc_180127759                                            ; +0xdb, 0x18012772b\nmovss   xmm2, cs:dword_180145744                                       ; +0xdd, 0x18012772d\nsubss   xmm2, xmm4                                                     ; +0xe5, 0x180127735\nmulss   xmm2, cs:dword_18014573C                                       ; +0xe9, 0x180127739\nmovss   [rsp+68h+arg_0], xmm2                                          ; +0xf1, 0x180127741\nmovss   xmm0, [rsp+68h+arg_0]                                          ; +0xf7, 0x180127747\nmovaps  xmm6, xmm0                                                     ; +0xfd, 0x18012774d\nsqrtss  xmm6, xmm0                                                     ; +0x100, 0x180127750\nmovaps  xmm4, xmm6                                                     ; +0x104, 0x180127754\njmp     short loc_180127766                                            ; +0x107, 0x180127757\nmovaps  xmm2, xmm4                                                     ; +0x109, 0x180127759\nmulss   xmm2, xmm4                                                     ; +0x10c, 0x18012775c\nmovss   [rsp+68h+arg_0], xmm2                                          ; +0x110, 0x180127760\nmovss   xmm5, cs:dword_180170C60                                       ; +0x116, 0x180127766\nmovaps  xmm0, xmm2                                                     ; +0x11e, 0x18012776e\nmulss   xmm0, cs:dword_180170C30                                       ; +0x121, 0x180127771\nsubss   xmm5, xmm0                                                     ; +0x129, 0x180127779\nmovss   xmm0, cs:dword_180170C4C                                       ; +0x12d, 0x18012777d\nmulss   xmm5, xmm2                                                     ; +0x135, 0x180127785\nsubss   xmm5, cs:dword_180170C40                                       ; +0x139, 0x180127789\nmulss   xmm5, xmm2                                                     ; +0x141, 0x180127791\naddss   xmm5, cs:dword_180170C44                                       ; +0x145, 0x180127795\nmulss   xmm5, xmm2                                                     ; +0x14d, 0x18012779d\nmulss   xmm2, cs:dword_180170C48                                       ; +0x151, 0x1801277a1\nsubss   xmm0, xmm2                                                     ; +0x159, 0x1801277a9\ndivss   xmm5, xmm0                                                     ; +0x15d, 0x1801277ad\njb      loc_180127844                                                  ; +0x161, 0x1801277b1\ntest    ecx, ecx                                                       ; +0x167, 0x1801277b7\njns     short loc_1801277EE                                            ; +0x169, 0x1801277b9\nxorps   xmm0, xmm0                                                     ; +0x16b, 0x1801277bb\nmulss   xmm5, xmm4                                                     ; +0x16e, 0x1801277be\ncvtss2sd xmm0, xmm6                                                    ; +0x172, 0x1801277c2\ncvtps2pd xmm1, xmm5                                                    ; +0x176, 0x1801277c6\nsubsd   xmm1, cs:qword_180170C38                                       ; +0x179, 0x1801277c9\naddsd   xmm1, xmm0                                                     ; +0x181, 0x1801277d1\nmovsd   xmm0, cs:qword_180170C58                                       ; +0x185, 0x1801277d5\naddsd   xmm1, xmm1                                                     ; +0x18d, 0x1801277dd\nsubsd   xmm0, xmm1                                                     ; +0x191, 0x1801277e1\ncvtpd2ps xmm0, xmm0                                                    ; +0x195, 0x1801277e5\njmp     loc_180127872                                                  ; +0x199, 0x1801277e9\nmovss   [rsp+68h+arg_8], xmm6                                          ; +0x19e, 0x1801277ee\naddss   xmm4, xmm4                                                     ; +0x1a4, 0x1801277f4\nmov     eax, [rsp+68h+arg_8]                                           ; +0x1a8, 0x1801277f8\nand     eax, 0FFFF0000h                                                ; +0x1ac, 0x1801277fc\nmov     [rsp+68h+arg_8], eax                                           ; +0x1b1, 0x180127801\nmovss   xmm3, [rsp+68h+arg_8]                                          ; +0x1b5, 0x180127805\nmovss   xmm2, [rsp+68h+arg_0]                                          ; +0x1bb, 0x18012780b\nmovaps  xmm0, xmm3                                                     ; +0x1c1, 0x180127811\nmulss   xmm0, xmm3                                                     ; +0x1c4, 0x180127814\nmovaps  xmm1, xmm3                                                     ; +0x1c8, 0x180127818\nmulss   xmm3, cs:flt_180145750                                         ; +0x1cb, 0x18012781b\naddss   xmm1, xmm6                                                     ; +0x1d3, 0x180127823\nsubss   xmm2, xmm0                                                     ; +0x1d7, 0x180127827\nmulss   xmm4, xmm5                                                     ; +0x1db, 0x18012782b\ndivss   xmm2, xmm1                                                     ; +0x1df, 0x18012782f\naddss   xmm2, xmm2                                                     ; +0x1e3, 0x180127833\naddss   xmm4, xmm2                                                     ; +0x1e7, 0x180127837\naddss   xmm4, xmm3                                                     ; +0x1eb, 0x18012783b\nmovaps  xmm0, xmm4                                                     ; +0x1ef, 0x18012783f\njmp     short loc_180127872                                            ; +0x1f2, 0x180127842\nmovsd   xmm2, cs:qword_180170C50                                       ; +0x1f4, 0x180127844\nxorps   xmm3, xmm3                                                     ; +0x1fc, 0x18012784c\nmulss   xmm5, xmm1                                                     ; +0x1ff, 0x18012784f\ncvtss2sd xmm3, xmm1                                                    ; +0x203, 0x180127853\nmovsd   xmm1, cs:qword_180170C38                                       ; +0x207, 0x180127857\ncvtps2pd xmm0, xmm5                                                    ; +0x20f, 0x18012785f\nsubsd   xmm1, xmm0                                                     ; +0x212, 0x180127862\nsubsd   xmm3, xmm1                                                     ; +0x216, 0x180127866\nsubsd   xmm2, xmm3                                                     ; +0x21a, 0x18012786a\ncvtpd2ps xmm0, xmm2                                                    ; +0x21e, 0x18012786e\nmovaps  xmm6, [rsp+68h+var_18]                                         ; +0x222, 0x180127872\nadd     rsp, 68h                                                       ; +0x227, 0x180127877\nretn                                                                   ; +0x22b, 0x18012787b", "xrefs": ["sub_1800107D0 @ 0x180010fae", "sub_1800107D0 @ 0x180011494", "<???> @ 0x1802029fc"], "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"}