// // _powf_special from 0x180133ef0 to 0x18013407b (395 bytes) // // 24 xrefs: // > powf @ 0x180127fb6 // > powf @ 0x18012810a // > powf @ 0x180128190 // > powf @ 0x1801281d3 // > powf @ 0x180128207 // > powf @ 0x1801282b5 // > powf @ 0x1801282e4 // > powf @ 0x18012831e // > powf @ 0x180128348 // > powf @ 0x18012836e // > powf @ 0x1801283a3 // > powf @ 0x1801283d0 // > powf @ 0x18012870d // > powf @ 0x1801288d3 // > powf @ 0x180128913 // > powf @ 0x180128947 // > powf @ 0x180128a15 // > powf @ 0x180128a44 // > powf @ 0x180128a7e // > powf @ 0x180128aa8 // > powf @ 0x180128acf // > powf @ 0x180128b04 // > powf @ 0x180128b30 // > @ 0x180203224 // // 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 powf_special(float a1, float a2, double a3, unsigned int a4) { int v4; // r9d int v5; // r8d __m128 result; // xmm0 unsigned int v7; // [rsp+30h] [rbp-11h] float v8; // [rsp+38h] [rbp-9h] float v9; // [rsp+40h] [rbp-1h] if ( a4 == 1 ) { v9 = a2; v8 = a1; v7 = 0; v4 = 0; v5 = LODWORD(a3); LABEL_14: handle_errorf((__int64)"powf", 29, v5, v4, 8, v7, v8, v9, 2); return *(__m128 *)&a3; } if ( a4 == 2 ) { handle_errorf((__int64)"powf", 29, SLODWORD(a3), 2, 4, 0x22u, a1, a2, 2); } else if ( a4 > 2 ) { if ( a4 <= 5 ) { result.m128_f32[0] = handle_nanf(SLODWORD(a3)); return result; } if ( a4 != 6 ) { if ( a4 == 7 ) { handle_errorf((__int64)"powf", 29, SLODWORD(a3), 4, 18, 0x22u, a1, a2, 2); } else if ( a4 == 9 ) { handle_errorf((__int64)"powf", 29, SLODWORD(a3), 3, 17, 0x22u, a1, a2, 2); } return *(__m128 *)&a3; } v4 = 1; v9 = a2; v8 = a1; v5 = LODWORD(a3); v7 = 33; goto LABEL_14; } return *(__m128 *)&a3; }