// // sub_1026F0 from 0x1026f0 to 0x102864 (372 bytes) // // 1 xrefs: // > @ 0x11a118 // // 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_1026F0(float32x4_t *result, __int64 a2, __int64 a3, __int64 a4, _QWORD *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 float32x4_t v13; // q6 unsigned __int64 v14; // d7 float v15; // w9 __int64 v16; // x1 int v17; // w8 for ( ; (_DWORD)a2; *(_QWORD *)a4 += *a5 ) { if ( ((unsigned __int8)result & 0xF) == 0 ) break; a2 = (unsigned int)(a2 - 1); *result++ = vmlaq_n_f32( *(float32x4_t *)(a3 + 4LL * (unsigned int)(4 * *(_DWORD *)(a4 + 4))), vsubq_f32( *(float32x4_t *)(a3 + 4LL * (unsigned int)(4 * *(_DWORD *)(a4 + 4) + 4)), *(float32x4_t *)(a3 + 4LL * (unsigned int)(4 * *(_DWORD *)(a4 + 4)))), (float)(*(_DWORD *)a4 >> 1) * 4.6566e-10); } if ( (int)a2 >> 2 ) { result = (float32x4_t *)sub_102CE0(result, a2, a3, a4, a5, i); for ( i = v11; v6; result += 4 ) { v12 = vshl_n_s32(vzip2_s32((int32x2_t)v7.n128_u64[0], (int32x2_t)vextq_s8(v7, v7, 8u).n128_u64[0]), 2u).n64_u64[0]; v13 = vmulq_f32(vcvtq_f32_u32(vshrq_n_u32(vuzp1q_s32(v7, v9), 1u)), v10); *result = vmlaq_n_f32( *(float32x4_t *)(a3 + 4LL * (unsigned int)v12), vsubq_f32( *(float32x4_t *)(a3 + 4LL * (unsigned int)v12 + 16), *(float32x4_t *)(a3 + 4LL * (unsigned int)v12)), v13.n128_f32[0]); v14 = vshl_n_s32(vzip2_s32((int32x2_t)v9.n128_u64[0], (int32x2_t)vextq_s8(v9, v9, 8u).n128_u64[0]), 2u).n64_u64[0]; result[1] = vmlaq_lane_f32( *(float32x4_t *)(a3 + 4LL * HIDWORD(v12)), vsubq_f32(*(float32x4_t *)(a3 + 4LL * HIDWORD(v12) + 16), *(float32x4_t *)(a3 + 4LL * HIDWORD(v12))), (float32x2_t)v13.n128_u64[0], 1); --v6; result[2] = vmlaq_laneq_f32( *(float32x4_t *)(a3 + 4LL * (unsigned int)v14), vsubq_f32( *(float32x4_t *)(a3 + 4LL * (unsigned int)v14 + 16), *(float32x4_t *)(a3 + 4LL * (unsigned int)v14)), v13, 2); v7 = vaddq_s64(v7, v8); v9 = vaddq_s64(v9, v8); result[3] = vmlaq_laneq_f32( *(float32x4_t *)(a3 + 4LL * HIDWORD(v14)), vsubq_f32(*(float32x4_t *)(a3 + 4LL * HIDWORD(v14) + 16), *(float32x4_t *)(a3 + 4LL * HIDWORD(v14))), v13, 3); } *(_QWORD *)a4 = v7.n128_u64[0]; } v15 = 4.6566e-10; if ( (a2 & 3) != 0 ) { do { *result = vmlaq_n_f32( *(float32x4_t *)(a3 + 4LL * (unsigned int)(4 * *(_DWORD *)(a4 + 4))), vsubq_f32( *(float32x4_t *)(a3 + 4LL * (unsigned int)(4 * *(_DWORD *)(a4 + 4) + 4)), *(float32x4_t *)(a3 + 4LL * (unsigned int)(4 * *(_DWORD *)(a4 + 4)))), (float)(*(_DWORD *)a4 >> 1) * v15); result = (float32x4_t *)sub_102E10(&result[1], i); i = v16; } while ( v17 ); } return result; }