// // __libm_sse2_sincosf_ from 0x18011ffc0 to 0x180120003 (67 bytes) // // 21 xrefs: // > sub_1800107D0 @ 0x180011614 // > sub_18004DE50 @ 0x18004e06e // > sub_18006E7E0 @ 0x18006e87e // > sub_180077E50 @ 0x180077e8e // > sub_1800F3520 @ 0x1800f3573 // > sub_1800F3610 @ 0x1800f3668 // > sub_1800F5010 @ 0x1800f5222 // > sub_1800F5010 @ 0x1800f5292 // > sub_1800F74F0 @ 0x1800f76fb // > sub_1800F74F0 @ 0x1800f784d // > sub_1800F74F0 @ 0x1800f7884 // > sub_1800F78F0 @ 0x1800f794d // > sub_1800F7970 @ 0x1800f7b7c // > sub_1800F7970 @ 0x1800f7cb6 // > sub_1800F7970 @ 0x1800f7ce7 // > sub_1800F8340 @ 0x1800f864e // > sub_1800F8340 @ 0x1800f86af // > sub_1800F8E10 @ 0x1800f8e37 // > sub_1800FAA20 @ 0x1800faa9d // > sub_1800FAB00 @ 0x1800fab67 // > sub_18010DF80 @ 0x18010dfec // // 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 // // local variable allocation has failed, the output may be wrong! __m128 __fastcall _libm_sse2_sincosf_(double a1, __int64 a2, double a3) { __m128 v3; // xmm2 __m128 v4; // xmm1 *(float *)&a3 = *(float *)&a1; v3 = (__m128)_mm_and_si128(*(__m128i *)&a3, (__m128i)xmmword_18016FB10); if ( v3.m128_f32[0] < 0.00012207031 ) return _mm_unpacklo_ps( *(__m128 *)&a1, _mm_sub_ps((__m128)0x3F800000u, _mm_mul_ps(_mm_mul_ps(v3, v3), (__m128)xmmword_18016FB30))); v4 = 0; v4.m128_f32[0] = v3.m128_f32[0] + 1.5707964; _vdecl_sinf4(); return _mm_unpacklo_ps(*(__m128 *)&a1, v4); }