// // sub_101AD8 from 0x101ad8 to 0x101be4 (268 bytes) // // 1 xrefs: // > @ 0x11a0e0 // // 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_101AD8(float32x4_t *result, __int64 a2, __int64 a3, __int64 a4, _QWORD *a5) { __int64 v5; // x30 int v6; // w8 float32x4_t v7; // q0 int32x4_t v8; // q1 int64x2_t v9; // q2 int32x4_t v10; // q3 float32x4_t v11; // q4 int16x8_t v12; // q6 float32x4_t v13; // q7 float32x4_t v14; // q5 int v15; // w8 __int64 v16; // x12 float v17; // s2 if ( (int)a2 >> 2 ) { for ( result = (float32x4_t *)sub_102CA4(result, a2, a3, a4, a5, v5); v6; --v6 ) { v12 = vzip1q_s32( vzip1q_s16(*(int16x8_t *)(a3 + 2LL * v8.n128_u32[1]), *(int16x8_t *)(a3 + 2LL * v8.n128_u32[3])), vzip1q_s16(*(int16x8_t *)(a3 + 2LL * v10.n128_u32[1]), *(int16x8_t *)(a3 + 2LL * v10.n128_u32[3]))); v13 = vcvtq_f32_s32(vmovl_s16((int16x4_t)v12.n128_u64[0])); v14 = vmulq_f32( vmlaq_f32( v13, vsubq_f32(vcvtq_f32_s32(vmovl_high_s16(v12)), v13), vmulq_f32(vcvtq_f32_u32(vshrq_n_u32(vuzp1q_s32(v8, v10), 1u)), v7)), v11); v8 = vaddq_s64(v8, v9); v10 = vaddq_s64(v10, v9); *result++ = v14; } *(_QWORD *)a4 = v8.n128_u64[0]; } v15 = a2 & 3; if ( (a2 & 3) != 0 ) { do { v16 = *(unsigned int *)(a4 + 4); v17 = (float)*(__int16 *)(a3 + 2 * v16); result->n128_f32[0] = (float)((float)(v17 + (float)((float)((float)*(unsigned int *)a4 * -2.3283e-10) * v17)) + (float)((float)((float)*(unsigned int *)a4 * 2.3283e-10) * (float)*(__int16 *)(a3 + 2LL * (unsigned int)(v16 + 1)))) * 0.000030518; result = (float32x4_t *)((char *)result + 4); --v15; *(_QWORD *)a4 += *a5; } while ( v15 ); } return result; }