// // sub_100834 from 0x100834 to 0x100928 (244 bytes) // // 1 xrefs: // > @ 0x118af8 // // 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 // int32x4_t *__fastcall sub_100834( int32x4_t *result, float32x4_t *a2, unsigned int a3, __int64 a4, __int64 a5, __int64 a6, int a7) { float32x2_t v7; // d0 float v8; // s1 unsigned int v9; // w8 float32x4_t v10; // q2 int32x4_t v11; // q3 int32x4_t v12; // q4 __int64 v13; // x8 float v14; // s2 int32x4_t v15; // q5 int32x4_t v16; // q16 float32x4_t v17; // q4 float32x4_t v18; // q6 float32x4_t v19; // q7 __int64 v20; // x8 v7.n64_u32[0] = *(_DWORD *)a4; v8 = *(float *)(a4 + 128); v9 = a3 >> 3; v10.n128_u32[0] = *(_DWORD *)a4; v10.n128_f32[1] = v8; v10.n128_u32[2] = *(_DWORD *)a4; v10.n128_f32[3] = v8; if ( a7 ) { for ( ; v9; a2 += 4 ) { v11 = *result; v12 = result[1]; result += 2; --v9; *a2 = vmulq_f32(vzip1q_s32(v11, v11), v10); a2[1] = vmulq_f32(vzip2q_s32(v11, v11), v10); a2[2] = vmulq_f32(vzip1q_s32(v12, v12), v10); a2[3] = vmulq_f32(vzip2q_s32(v12, v12), v10); } v13 = 0; while ( (a3 & 7) != (_DWORD)v13 ) { v14 = result->n128_f32[v13++]; a2->n128_f32[0] = v14 * v7.n64_f32[0]; a2->n128_f32[1] = v14 * v8; a2 = (float32x4_t *)((char *)a2 + 8); } } else { while ( v9 ) { v15 = *result; v16 = result[1]; result += 2; --v9; v17 = vmlaq_f32(a2[1], v10, vzip2q_s32(v15, v15)); v18 = vmlaq_f32(a2[2], v10, vzip1q_s32(v16, v16)); v19 = vmlaq_f32(a2[3], v10, vzip2q_s32(v16, v16)); *a2 = vmlaq_f32(*a2, v10, vzip1q_s32(v15, v15)); a2[1] = v17; a2[2] = v18; a2[3] = v19; a2 += 4; } v20 = 0; v7.n64_f32[1] = v8; while ( (a3 & 7) != (_DWORD)v20 ) { a2->n128_u64[v20] = vmla_n_f32((float32x2_t)a2->n128_u64[v20], v7, result->n128_f32[v20]).n64_u64[0]; ++v20; } } return result; }