// // acosf from 0x180127650 to 0x18012787c (556 bytes) // // 3 xrefs: // > sub_1800107D0 @ 0x180010fae // > sub_1800107D0 @ 0x180011494 // > @ 0x1802029fc // // This function is hookable on this platform! // // Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA // Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings // float __cdecl acosf(float X) { float v1; // xmm6_4 __int64 v2; // rdx float v3; // xmm6_4 float v4; // xmm4_4 float v5; // xmm2_4 float v6; // xmm5_4 float v7; // [rsp+70h] [rbp+8h] v1 = 0.0; v2 = (unsigned __int8)(LODWORD(X) >> 23); if ( (LODWORD(X) & 0x7FFFFFFFu) > 0x7F800000 ) return handle_nanf(LODWORD(X), v2); if ( (unsigned int)v2 < 0x65 ) { v3 = 1.5707964; LABEL_10: set_statfp(32); return v3; } if ( (unsigned int)v2 < 0x7F ) { v4 = X; if ( X < 0.0 ) v4 = -X; if ( (unsigned int)v2 < 0x7E ) { v5 = v4 * v4; v7 = v4 * v4; } else { v5 = (float)(1.0 - v4) * 0.5; v7 = v5; v1 = fsqrt(v5); v4 = v1; } v6 = (float)((float)((float)((float)((float)((float)(-0.013381929 - (float)(v5 * 0.0039613745)) * v5) - 0.056529868) * v5) + 0.1841616) * v5) / (float)(1.1049696 - (float)(v5 * 0.8364113)); if ( (unsigned int)v2 < 0x7E ) { return 1.570796326794897 - (X - (6.123233995736766e-17 - (float)(v6 * X))); } else if ( X >= 0.0 ) { return (float)((float)((float)(v4 + v4) * v6) + (float)((float)((float)(v7 - (float)(COERCE_FLOAT(LODWORD(v1) & 0xFFFF0000) * COERCE_FLOAT(LODWORD(v1) & 0xFFFF0000))) / (float)(COERCE_FLOAT(LODWORD(v1) & 0xFFFF0000) + v1)) + (float)((float)(v7 - (float)(COERCE_FLOAT(LODWORD(v1) & 0xFFFF0000) * COERCE_FLOAT(LODWORD(v1) & 0xFFFF0000))) / (float)(COERCE_FLOAT(LODWORD(v1) & 0xFFFF0000) + v1)))) + (float)(COERCE_FLOAT(LODWORD(v1) & 0xFFFF0000) * 2.0); } else { return 3.141592653589793 - ((float)(v6 * v4) - 6.123233995736766e-17 + v1 + (float)(v6 * v4) - 6.123233995736766e-17 + v1); } } else { if ( X == 1.0 ) return 0.0; if ( X == -1.0 ) { v3 = 3.1415927; goto LABEL_10; } handle_errorf((unsigned int)"acosf", 13, -4194304, 1, 8, 33, LODWORD(X), 0, 1); } return X; }