// // powf from 0x180127c80 to 0x180128b46 (3782 bytes) // // 81 xrefs: // > sub_18001CFD0 @ 0x18001f628 // > sub_18001CFD0 @ 0x18001f6e3 // > sub_180021100 @ 0x18002170d // > sub_1800228C0 @ 0x180022b27 // > sub_1800228C0 @ 0x180022ee2 // > sub_1800252C0 @ 0x180025741 // > sub_1800258D0 @ 0x180025caa // > sub_18002D350 @ 0x18002d5c0 // > sub_180032180 @ 0x180032280 // > sub_180032180 @ 0x18003230b // > sub_180032180 @ 0x18003275b // > sub_180032180 @ 0x18003278a // > sub_180032180 @ 0x180032794 // > sub_180040AD0 @ 0x180040c16 // > sub_1800500F0 @ 0x180050119 // > sub_1800501A0 @ 0x180050362 // > sub_1800564A0 @ 0x180056570 // > sub_1800564A0 @ 0x1800566e6 // > sub_1800564A0 @ 0x180056780 // > sub_1800564A0 @ 0x180056cb9 // > sub_1800564A0 @ 0x180056ec9 // > sub_180066D40 @ 0x180066e33 // > sub_180066D40 @ 0x180066e69 // > sub_180067510 @ 0x1800675a4 // > sub_180067510 @ 0x1800675e7 // > sub_180068510 @ 0x180068553 // > sub_180068700 @ 0x180068739 // > sub_180070690 @ 0x1800706df // > sub_180070690 @ 0x180070717 // > sub_1800740F0 @ 0x180074130 // > sub_180076390 @ 0x180076453 // > sub_1800767F0 @ 0x1800768b1 // > sub_1800896E0 @ 0x1800897f1 // > sub_1800896E0 @ 0x180089829 // > sub_1800899C0 @ 0x180089a2b // > sub_180089AE0 @ 0x180089b4d // > sub_18008AB50 @ 0x18008ac34 // > sub_18008AD00 @ 0x18008ad5d // > sub_18008AD00 @ 0x18008ada0 // > sub_18008AD00 @ 0x18008addc // > sub_18008B040 @ 0x18008b109 // > sub_18008B040 @ 0x18008b14a // > sub_18008B040 @ 0x18008b186 // > sub_18008CEE0 @ 0x18008cf71 // > sub_18008CEE0 @ 0x18008cfea // > sub_18008CEE0 @ 0x18008d05c // > sub_1800DBE80 @ 0x1800dbf26 // > sub_1800EB320 @ 0x1800eb637 // > sub_1800ECDE0 @ 0x1800ece39 // > sub_1800ED160 @ 0x1800ed201 // > sub_1800ED160 @ 0x1800ed308 // > sub_1800ED3F0 @ 0x1800ed46b // > sub_1800ED6C0 @ 0x1800ed707 // > sub_1800F0120 @ 0x1800f0559 // > sub_1800F05D0 @ 0x1800f0a37 // > sub_1800F0AC0 @ 0x1800f1009 // > sub_1800F10D0 @ 0x1800f1626 // > sub_1800F1710 @ 0x1800f1807 // > sub_1800F1890 @ 0x1800f19a3 // > sub_1800F1A40 @ 0x1800f1b85 // > sub_1800F1C50 @ 0x1800f1dbc // > sub_1800F5A00 @ 0x1800f5b58 // > sub_1800F5A00 @ 0x1800f5b76 // > sub_1800F5FF0 @ 0x1800f603b // > sub_1800F5FF0 @ 0x1800f6079 // > sub_180107D30 @ 0x180107dba // > sub_180107D30 @ 0x180107dfe // > sub_180107D30 @ 0x180107e44 // > sub_180107D30 @ 0x180107e8a // > sub_180107D30 @ 0x180107ed0 // > sub_180107D30 @ 0x180107f16 // > sub_180107D30 @ 0x180107f5c // > sub_180107D30 @ 0x180107fa2 // > sub_180108CC0 @ 0x180108cf7 // > sub_180109080 @ 0x1801090d8 // > sub_180109370 @ 0x180109435 // > sub_180109990 @ 0x180109bc6 // > sub_18010DF80 @ 0x18010e0e8 // > sub_18010DF80 @ 0x18010e19c // > sub_18010DF80 @ 0x18010e253 // > @ 0x180202a14 // // 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! float __cdecl powf(float X, float Y) { __m128i v5; // xmm1 int v7; // r9d unsigned int v8; // eax unsigned __int64 v9; // rcx __m128i v10; // xmm2 __int64 v11; // rax __m128i v12; // xmm2 double v13; // xmm1_8 __m128i v15; // xmm4 double v16; // xmm0_8 __int64 v17; // rax __m128i v18; // xmm0 __m128d v19; // xmm6 __m128d v20; // xmm2 __m128i v21; // xmm1 __m128d v22; // xmm4 __m128i v23; // xmm2 __int64 v24; // rdx int v25; // r10d bool v26; // sf bool v27; // cc unsigned int v28; // ecx __int64 v29; // rcx int v30; // ecx bool v31; // cc unsigned int v32; // ecx float v33; // eax int v38; // r9d unsigned int v39; // eax bool v44; // cf int v87; // r10d bool v88; // sf bool v89; // cc bool v97; // cc unsigned int v164; // [rsp+40h] [rbp-28h] unsigned int v165; // [rsp+40h] [rbp-28h] unsigned int v166; // [rsp+40h] [rbp-28h] int v167; // [rsp+40h] [rbp-28h] int v168; // [rsp+40h] [rbp-28h] int v169; // [rsp+40h] [rbp-28h] int v170; // [rsp+50h] [rbp-18h] int v171; // [rsp+50h] [rbp-18h] int v172; // [rsp+50h] [rbp-18h] if ( dword_1801F4D54 ) { __asm { vpunpckldq xmm1, xmm1, xmm0 vpxor xmm5, xmm5, xmm5 vmovd eax, xmm1 vmovd ecx, xmm0 } v38 = _ECX; v39 = _EAX & 0x7FFFFFFF; v9 = _ECX & 0x7FFFFFFF; if ( v39 >= 0x7F800000 ) { if ( v39 <= 0x7F800000 ) { if ( (unsigned int)v9 > 0x7F800000 ) goto Lpowf_fma3_return_x_nan; if ( (_DWORD)v9 == 1065353216 ) { _EDX = 1065353216; __asm { vmovd xmm0, edx vmovdqa xmm7, [rsp+68h+var_38] vmovdqa xmm6, [rsp+68h+var_48] } return X; } __asm { vmovd eax, xmm1 } if ( _EAX < 0 ) { _EAX = 0; if ( (unsigned int)v9 < 0x3F800000 ) _EAX = 2139095040; __asm { vmovd xmm0, eax vmovdqa xmm7, [rsp+68h+var_38] vmovdqa xmm6, [rsp+68h+var_48] } return X; } if ( (unsigned int)v9 >= 0x3F800000 ) goto Lpowf_fma3_return_pos_inf; goto Lpowf_fma3_return_pos_zero; } if ( (unsigned int)v9 > 0x7F800000 ) { if ( v38 == -4194304 ) { __asm { vmovd eax, xmm1 } _EAX |= 0x400000u; __asm { vmovd xmm2, eax } powf_special(v9, _RDX); __asm { vmovdqa xmm7, [rsp+68h+var_38] vmovdqa xmm6, [rsp+68h+var_48] } } else { __asm { vmovd ecx, xmm0 } _RCX = _ECX | 0x400000u; __asm { vmovd xmm2, ecx } powf_special(_RCX, _RDX); __asm { vmovdqa xmm7, [rsp+68h+var_38] vmovdqa xmm6, [rsp+68h+var_48] } } return X; } if ( v38 != 1065353216 ) { __asm { vmovdqa xmm0, xmm1 } __asm { vmovd eax, xmm1 } _EAX |= 0x400000u; __asm { vmovd xmm2, eax } powf_special(v9, _RDX); __asm { vmovdqa xmm7, [rsp+68h+var_38] vmovdqa xmm6, [rsp+68h+var_48] } return X; } if ( v39 < 0x7FC00000 ) { _EDX = 1065353216; __asm { vmovd xmm2, edx } powf_special(v9, 1065353216); __asm { vmovdqa xmm7, [rsp+68h+var_38] vmovdqa xmm6, [rsp+68h+var_48] } return X; } } else { if ( (int)v39 > 1065353216 ) goto Lpowf_fma3_y_is_not_zero_or_pos_one; if ( v39 ) { __asm { vmovd edx, xmm1 } if ( (_DWORD)_RDX == 1065353216 ) { if ( (unsigned int)v9 > 0x7F800000 ) { __asm { vmovd edx, xmm0 } _RDX = _EDX | 0x400000u; __asm { vmovd xmm2, edx } powf_special(v9, _RDX); } else { __asm { vmovdqa xmm7, [rsp+68h+var_38] vmovdqa xmm6, [rsp+68h+var_48] } } return X; } Lpowf_fma3_y_is_not_zero_or_pos_one: if ( (unsigned int)v9 < 0x7F800000 ) { __asm { vcvtps2pd xmm0, xmm1 } if ( v38 >= 1065877504 ) goto Lpowf_fma3_compute_logx; if ( v38 <= 0 ) { if ( !(_DWORD)v9 ) { __asm { vmovd edx, xmm1 } v87 = 0; v88 = (_RDX & 0x80000000) != 0LL; v89 = (int)_RDX <= 0; if ( (_RDX & 0x80000000) != 0LL ) _RDX = 2139095040; if ( v88 ) v87 = 2139095040; if ( !v89 ) _RDX = 0; if ( (v39 & 0x7F800000) <= 0x4B000000 ) { __asm { vstmxcsr [rsp+68h+var_28] } v171 = v168 | 0x1F80; __asm { vldmxcsr [rsp+68h+var_18] vcvtss2si r8d, xmm1 vcvtsi2ss xmm2, xmm2, r8d vldmxcsr [rsp+68h+var_28] vucomiss xmm2, xmm1 } } _ECX = _RDX; __asm { vmovd xmm0, ecx } if ( v87 ) { __asm { vmovdqa xmm2, xmm0 } powf_special((unsigned int)_RDX, _RDX); __asm { vmovdqa xmm7, [rsp+68h+var_38] vmovdqa xmm6, [rsp+68h+var_48] } } return X; } if ( (v39 & 0x7F800000) <= 0x4B000000 ) { __asm { vstmxcsr [rsp+68h+var_28] } v170 = v167 | 0x1F80; __asm { vldmxcsr [rsp+68h+var_18] vcvtss2si edx, xmm1 vcvtsi2ss xmm2, xmm2, edx vldmxcsr [rsp+68h+var_28] vucomiss xmm2, xmm1 } _EDX = -4194304; __asm { vmovd xmm2, edx } powf_special(v9, 4290772992LL); __asm { vmovdqa xmm7, [rsp+68h+var_38] vmovdqa xmm6, [rsp+68h+var_48] } return X; } } __asm { vpshufd xmm3, xmm0, 0EEh vsubsd xmm3, xmm3, cs:qword_180170E0C vmovq rdx, xmm3 } _RDX = _RDX & 0x7FFFFFFFFFFFFFFFLL; if ( _RDX >= 0x3FB0000000000000LL ) { Lpowf_fma3_compute_logx: __asm { vpshufd xmm2, xmm0, 0EEh vpand xmm2, xmm2, cs:xmmword_180170E90 vmovq rcx, xmm2 } _RCX = (__CFSHR__(_RCX, 44) + (_RCX >> 44)) | 0x3FE00; v44 = __CFSHL__(_RCX, 44); _RCX <<= 44; __asm { vmovq xmm1, rcx vpor xmm2, xmm2, cs:xmmword_180170E70 vpshufd xmm3, xmm2, 0EEh vpsrlq xmm3, xmm3, 34h ; '4' vpsubq xmm3, xmm3, cs:xmmword_180170E80 vcvtdq2pd xmm3, xmm3 } __asm { vsubsd xmm1, xmm1, xmm2 vmulsd xmm1, xmm1, qword ptr [rcx+rax*8] vmovapd xmm2, xmm1 vmovsd xmm4, cs:qword_180170DD4 vfmadd213sd xmm4, xmm1, qword ptr cs:xmmword_180170E70 vfmadd213sd xmm4, xmm1, cs:qword_180170E0C vmulsd xmm1, xmm1, xmm4 vmulsd xmm3, xmm3, cs:qword_180170DDC } __asm { vaddsd xmm3, xmm3, qword ptr [rcx+rax*8] vsubsd xmm3, xmm3, xmm1 vmulsd xmm0, xmm0, xmm3 vucomisd xmm0, cs:qword_180170DE4 } if ( v44 || _RCX == 0 ) { __asm { vucomisd xmm0, cs:qword_180170DEC } __asm { vpxor xmm2, xmm2, xmm2 vorps xmm2, xmm2, xmm5 } powf_special(dbl_180170EA0, _RDX); __asm { vmovdqa xmm7, [rsp+68h+var_38] vmovdqa xmm6, [rsp+68h+var_48] } } else { _EDX = 2139095040; __asm { vmovd xmm2, edx vorps xmm2, xmm2, xmm5 } powf_special(dbl_180170EA0, 2139095040); __asm { vmovdqa xmm7, [rsp+68h+var_38] vmovdqa xmm6, [rsp+68h+var_48] } } return X; } __asm { vpshufd xmm5, xmm5, 44h ; 'D' vmovapd xmm1, xmm3 vmovsd xmm5, xmm5, xmm3 vaddsd xmm1, xmm1, cs:qword_180170E14 vdivsd xmm5, xmm5, xmm1 vmovapd xmm2, xmm5 vmulsd xmm5, xmm5, xmm3 vaddsd xmm2, xmm2, xmm2 vmovapd xmm1, xmm2 vmulsd xmm1, xmm1, xmm2 vpshufd xmm4, xmm1, 44h ; 'D' vmulpd xmm4, xmm4, cs:xmmword_180170E30 vmulsd xmm2, xmm2, xmm1 vaddpd xmm4, xmm4, cs:xmmword_180170E40 vmulsd xmm1, xmm1, xmm1 vmulsd xmm1, xmm1, xmm2 vunpcklpd xmm2, xmm2, xmm1 vmulpd xmm2, xmm2, xmm4 vpshufd xmm1, xmm2, 0EEh vaddsd xmm2, xmm1, xmm2 vsubsd xmm2, xmm2, xmm5 vpshufd xmm5, xmm5, 0EEh vaddsd xmm3, xmm3, xmm2 } goto L__return_from_near_one; } __asm { vmovd ecx, xmm0 vmovd edx, xmm1 } if ( _ECX != 2139095040 ) { if ( _ECX == -8388608 ) { v97 = (int)_RDX <= 0; if ( (_RDX & 0x80000000) != 0LL ) LODWORD(_RDX) = 0; if ( !v97 ) LODWORD(_RDX) = 2139095040; if ( (v39 & 0x7F800000) <= 0x4B000000 ) { __asm { vstmxcsr [rsp+68h+var_28] } v172 = v169 | 0x1F80; __asm { vldmxcsr [rsp+68h+var_18] vcvtss2si r8d, xmm1 vcvtsi2ss xmm2, xmm2, r8d vldmxcsr [rsp+68h+var_28] vucomiss xmm2, xmm1 } } _ECX = _RDX; __asm { vmovd xmm0, ecx vmovdqa xmm7, [rsp+68h+var_38] vmovdqa xmm6, [rsp+68h+var_48] } return X; } Lpowf_fma3_return_x_nan: __asm { vmovd ecx, xmm0 } _RCX = _ECX | 0x400000u; __asm { vmovd xmm2, ecx } powf_special(_RCX, _RDX); __asm { vmovdqa xmm7, [rsp+68h+var_38] vmovdqa xmm6, [rsp+68h+var_48] } return X; } if ( (_RDX & 0x80000000) == 0LL ) { Lpowf_fma3_return_pos_inf: _EDX = 2139095040; __asm { vmovd xmm0, edx vmovdqa xmm7, [rsp+68h+var_38] vmovdqa xmm6, [rsp+68h+var_48] } return X; } Lpowf_fma3_return_pos_zero: __asm { vpxor xmm0, xmm0, xmm0 vmovdqa xmm7, [rsp+68h+var_38] vmovdqa xmm6, [rsp+68h+var_48] } return X; } if ( (unsigned int)v9 > 0x7F800000 && (unsigned int)v9 < 0x7FC00000 ) { _RDX = (unsigned int)v9 | 0x400000; __asm { vmovd xmm2, edx } powf_special(v9, _RDX); __asm { vmovdqa xmm7, [rsp+68h+var_38] vmovdqa xmm6, [rsp+68h+var_48] } return X; } } _EDX = 1065353216; __asm { vmovd xmm0, edx vmovdqa xmm7, [rsp+68h+var_38] vmovdqa xmm6, [rsp+68h+var_48] } return X; } v5 = _mm_unpacklo_epi32(*(__m128i *)&Y, *(__m128i *)&X); LODWORD(_XMM5) = 0; v9 = (unsigned int)_mm_cvtsi128_si32(*(__m128i *)&X); v7 = v9; v8 = _mm_cvtsi128_si32(v5) & 0x7FFFFFFF; LODWORD(v9) = v9 & 0x7FFFFFFF; if ( v8 >= 0x7F800000 ) { if ( v8 <= 0x7F800000 ) { if ( (unsigned int)v9 > 0x7F800000 ) goto Lpowf__x_is_nan_y_is_nan_return_x; if ( (_DWORD)v9 == 1065353216 ) return 1.0; if ( _mm_cvtsi128_si32(v5) < 0 ) { v33 = 0.0; if ( (_DWORD)v9 ) { if ( (unsigned int)v9 < 0x3F800000 ) return INFINITY; return v33; } return INFINITY; } if ( (unsigned int)v9 >= 0x3F800000 ) return INFINITY; return 0.0; } if ( (unsigned int)v9 > 0x7F800000 ) { if ( v7 != -4194304 ) goto Lpowf__x_is_nan_y_is_nan_return_x; } else if ( v7 == 1065353216 ) { if ( v8 < 0x7FC00000 ) { powf_special(v9, 1065353216); return X; } return 1.0; } LABEL_62: powf_special(v9, _RDX); return X; } if ( (int)v8 > 1065353216 ) goto L__y_is_not_zero_or_pos_one; if ( !v8 ) { if ( (unsigned int)v9 > 0x7F800000 && (unsigned int)v9 < 0x7FC00000 ) { powf_special(v9, (unsigned int)v9 | 0x400000); return X; } return 1.0; } _RDX = (unsigned int)_mm_cvtsi128_si32(v5); if ( (_DWORD)_RDX == 1065353216 ) { if ( (_mm_cvtsi128_si32(*(__m128i *)&X) & 0x7FFFFFFFu) > 0x7F800000 ) powf_special(v9, _mm_cvtsi128_si32(*(__m128i *)&X) | 0x400000u); return X; } L__y_is_not_zero_or_pos_one: if ( (unsigned int)v9 >= 0x7F800000 ) { v30 = _mm_cvtsi128_si32(*(__m128i *)&X); _RDX = (unsigned int)_mm_cvtsi128_si32(v5); if ( v30 != 2139095040 ) { if ( v30 == -8388608 ) { v31 = (int)_RDX <= 0; if ( (_RDX & 0x80000000) != 0LL ) LODWORD(_RDX) = 0; if ( !v31 ) LODWORD(_RDX) = 2139095040; v32 = 0x80000000; if ( (v8 & 0x7F800000) <= 0x4B000000 ) { v166 = _mm_getcsr(); _mm_setcsr(v166 | 0x1F80); _mm_setcsr(v166); if ( (float)(int)*(float *)v5.m128i_i32 == *(float *)v5.m128i_i32 ) { if ( !((int)*(float *)v5.m128i_i32 & 1) ) v32 = 0; } else { v32 = 0; } } else { v32 = 0; } LODWORD(X) = _RDX | v32; return X; } Lpowf__x_is_nan_y_is_nan_return_x: powf_special(_mm_cvtsi128_si32(*(__m128i *)&X) | 0x400000u, _RDX); return X; } if ( (_RDX & 0x80000000) == 0LL ) return INFINITY; return 0.0; } *(__m128d *)&X = _mm_cvtps_pd((__m128)v5); if ( v7 >= 1065877504 ) goto L__compute_logx; if ( v7 <= 0 ) { if ( !(_DWORD)v9 ) { v24 = (unsigned int)_mm_cvtsi128_si32(v5); v25 = 0; v26 = (int)v24 < 0; v27 = (int)v24 <= 0; if ( (int)v24 < 0 ) v24 = 2139095040; if ( v26 ) v25 = 2139095040; if ( !v27 ) v24 = 0; if ( (v8 & 0x7F800000) <= 0x4B000000 ) { v165 = _mm_getcsr(); _mm_setcsr(v165 | 0x1F80); _mm_setcsr(v165); if ( (float)(int)*(float *)v5.m128i_i32 == *(float *)v5.m128i_i32 ) { if ( (int)*(float *)v5.m128i_i32 & 1 ) v28 = v7 & 0x80000000; else v28 = 0; } else { v28 = 0; } } else { v28 = 0; } v29 = (unsigned int)v24 | v28; X = *(float *)&v29; if ( v25 ) powf_special(v29, v24); return X; } if ( (v8 & 0x7F800000) <= 0x4B000000 ) { v164 = _mm_getcsr(); _mm_setcsr(v164 | 0x1F80); _mm_setcsr(v164); if ( (float)(int)*(float *)v5.m128i_i32 != *(float *)v5.m128i_i32 ) { powf_special(v9, 4290772992LL); return X; } if ( (int)*(float *)v5.m128i_i32 & 1 ) LODWORD(_XMM5) = 0x80000000; } } _XMM3 = _mm_shuffle_epi32(*(__m128i *)&X, 238); *(double *)_XMM3.m128i_i64 = *(double *)_XMM3.m128i_i64 - 1.0; _RDX = _XMM3.m128i_i64[0] & 0x7FFFFFFFFFFFFFFFLL; if ( (_XMM3.m128i_i64[0] & 0x7FFFFFFFFFFFFFFFuLL) >= 0x3FB0000000000000LL ) { L__compute_logx: v10 = _mm_and_si128(_mm_shuffle_epi32(*(__m128i *)&X, 238), (__m128i)xmmword_180170E90); v11 = __CFSHR__(v10.m128i_i64[0], 44) + (unsigned int)((unsigned __int64)v10.m128i_i64[0] >> 44); v12 = _mm_or_si128(v10, (__m128i)xmmword_180170E70); v13 = (COERCE_DOUBLE((unsigned __int64)((unsigned int)v11 | 0x3FE00) << 44) - *(double *)v12.m128i_i64) * dbl_180173C60[v11]; v9 = (unsigned __int64)dbl_180170EA0; *(double *)_XMM3.m128i_i64 = _mm_cvtepi32_pd( _mm_sub_epi64( _mm_srli_epi64(_mm_shuffle_epi32(v12, 238), 0x34u), (__m128i)xmmword_180170E80)).m128d_f64[0] * 0.6931471805599453 + dbl_180170EA0[v11] - (v13 * v13 * (0.3333333333333333 * v13 + 0.5) + v13); } else { *(_QWORD *)&v19.m128d_f64[1] = _XMM3.m128i_i64[1]; v19.m128d_f64[0] = *(double *)_XMM3.m128i_i64 / (*(double *)_XMM3.m128i_i64 + 2.0); v20 = v19; v20.m128d_f64[0] = v20.m128d_f64[0] + v20.m128d_f64[0]; v21.m128i_i64[1] = _XMM3.m128i_i64[1]; *(double *)v21.m128i_i64 = v20.m128d_f64[0] * v20.m128d_f64[0]; v20.m128d_f64[0] = v20.m128d_f64[0] * (v20.m128d_f64[0] * v20.m128d_f64[0]); v22 = _mm_add_pd( _mm_mul_pd((__m128d)_mm_shuffle_epi32(v21, 68), (__m128d)xmmword_180170E30), (__m128d)xmmword_180170E40); *(double *)v21.m128i_i64 = *(double *)v21.m128i_i64 * *(double *)v21.m128i_i64 * v20.m128d_f64[0]; v23 = (__m128i)_mm_mul_pd(_mm_unpacklo_pd(v20, (__m128d)v21), v22); *(double *)_XMM3.m128i_i64 = *(double *)_XMM3.m128i_i64 + *(double *)v23.m128i_i64 + *(double *)_mm_shuffle_epi32(v23, 238).m128i_i64 - v19.m128d_f64[0] * *(double *)_XMM3.m128i_i64; } L__return_from_near_one: *(double *)&X = *(double *)&X * *(double *)_XMM3.m128i_i64; if ( *(double *)&X <= 88.72283935546875 ) { if ( *(double *)&X > -103.2789306640625 ) { v15 = _mm_cvtpd_epi32(_mm_mul_pd(*(__m128d *)&X, (__m128d)xmmword_180170E60)); v16 = *(double *)&X - _mm_cvtepi32_pd(v15).m128d_f64[0] * 0.01083042469624915; v17 = _mm_cvtsi128_si32(v15) & 0x3F; *(double *)v18.m128i_i64 = (v16 * v16 * (0.1666666666666667 * v16 + 0.5) + v16) * dbl_180173A60[v17] + dbl_180173A60[v17]; *(float *)v18.m128i_i32 = *(double *)_mm_add_epi64(_mm_slli_epi64(_mm_srai_epi32(v15, 6u), 0x34u), v18).m128i_i64; LODWORD(X) = v18.m128i_i32[0] | _XMM5; return X; } goto LABEL_62; } powf_special(v9, 2139095040); return X; }