// // sub_1025D4 from 0x1025d4 to 0x1026f0 (284 bytes) // // 1 xrefs: // > @ 0x11a110 // // 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 // float32x4_t *__fastcall sub_1025D4(float32x4_t *result, __int64 a2, __int64 a3, __int64 a4, __int64 a5) { __int64 i; // x30 int v6; // w8 int8x16_t v7; // q0 int64x2_t v8; // q1 int8x16_t v9; // q2 float32x4_t v10; // q3 __int64 v11; // x5 unsigned __int64 v12; // d4 unsigned __int64 v13; // d5 __int64 v14; // x9 int8x16_t v15; // q4 int8x16_t v16; // q6 __int64 v17; // x9 int8x16_t v18; // q5 float32x4_t v19; // q18 int32x4_t v20; // q7 float32x4_t v21; // q6 float v22; // w9 float v23; // s0 __int64 v24; // x1 int v25; // w8 if ( (int)a2 >> 2 ) { result = (float32x4_t *)sub_102CE0(result, a2, a3, a4, a5, i); for ( i = v11; v6; result += 2 ) { v12 = vshl_n_s32(vzip2_s32((int32x2_t)v7.n128_u64[0], (int32x2_t)vextq_s8(v7, v7, 8u).n128_u64[0]), 1u).n64_u64[0]; v13 = vshl_n_s32(vzip2_s32((int32x2_t)v9.n128_u64[0], (int32x2_t)vextq_s8(v9, v9, 8u).n128_u64[0]), 1u).n64_u64[0]; v14 = HIDWORD(v12); v15 = *(int8x16_t *)(a3 + 4LL * (unsigned int)v12); v16 = *(int8x16_t *)(a3 + 4 * v14); v17 = 4LL * HIDWORD(v13); v18 = *(int8x16_t *)(a3 + 4LL * (unsigned int)v13); v19 = vextq_s8(v15, vextq_s8(v16, v15, 8u), 8u); v15.n128_u64[1] = v16.n128_u64[0]; v20 = vmulq_f32(vcvtq_f32_u32(vshrq_n_u32(vuzp1q_s32(v7, v9), 1u)), v10); v21 = vextq_s8(v18, vextq_s8(*(int8x16_t *)(a3 + v17), v18, 8u), 8u); v18.n128_u64[1] = *(_QWORD *)(a3 + v17); --v6; v7 = vaddq_s64(v7, v8); v9 = vaddq_s64(v9, v8); *result = vmlaq_f32(v15, vzip1q_s32(v20, v20), vsubq_f32(v19, v15)); result[1] = vmlaq_f32(v18, vzip2q_s32(v20, v20), vsubq_f32(v21, v18)); } *(_QWORD *)a4 = v7.n128_u64[0]; } v22 = 2.3283e-10; v23 = 1.0; if ( (a2 & 3) != 0 ) { do { result->n128_u64[0] = vmla_n_f32( vmul_n_f32( *(float32x2_t *)(a3 + 4LL * (unsigned int)(2 * *(_DWORD *)(a4 + 4) + 2)), (float)*(unsigned int *)a4 * v22), *(float32x2_t *)(a3 + 4LL * (unsigned int)(2 * *(_DWORD *)(a4 + 4))), v23 - (float)((float)*(unsigned int *)a4 * v22)).n64_u64[0]; result = (float32x4_t *)sub_102E10(&result->n128_i8[8], i); i = v24; } while ( v25 ); } return result; }