// // sub_100928 from 0x100928 to 0x100aa8 (384 bytes) // // 1 xrefs: // > @ 0x118b08 // // 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_100928( float32x4_t *result, __int64 a2, unsigned int a3, __int64 a4, __int64 a5, __int64 a6, int a7) { float32x4_t v7; // q0 float v8; // s3 float v9; // s5 float v10; // s4 float v11; // s1 float v12; // s2 float32x4_t v13; // q6 float32x4_t v14; // q7 float32x2_t v15; // d17 unsigned int v16; // w8 float32x4_t v17; // t1 __int64 v18; // x8 float v19; // s6 float32x4_t v20; // t1 unsigned __int64 v21; // d20 unsigned __int64 v22; // d21 float32x4_t v23; // q22 float32x4_t v24; // q23 unsigned __int64 v25; // d24 unsigned __int64 v26; // d25 float32x4_t v27; // q26 __int64 v28; // x8 float v29; // s3 float32x4_t v30; // q4 float v31; // s5 float v32; // s3 v7.n128_u32[0] = *(_DWORD *)a4; v8 = *(float *)(a4 + 256); v9 = *(float *)(a4 + 128); v10 = *(float *)(a4 + 384); v11 = *(float *)(a4 + 512); v12 = *(float *)(a4 + 640); v13.n128_u32[0] = *(_DWORD *)a4; v14.n128_u64[0] = __PAIR64__(LODWORD(v10), LODWORD(v8)); v13.n128_f32[1] = v9; v15.n64_u32[0] = *(_DWORD *)a4; v13.n128_u64[1] = __PAIR64__(LODWORD(v10), LODWORD(v8)); v14.n128_u64[1] = __PAIR64__(LODWORD(v12), LODWORD(v11)); v15.n64_f32[1] = v9; v16 = a3 >> 2; if ( a7 ) { for ( ; v16; a2 += 96 ) { v17 = *result++; --v16; *(float32x4_t *)a2 = vmulq_n_f32(v13, v17.n128_f32[0]); *(float32x2_t *)(a2 + 16) = vmul_n_f32((float32x2_t)__PAIR64__(LODWORD(v12), LODWORD(v11)), v17.n128_f32[0]); *(float32x2_t *)(a2 + 24) = vmul_lane_f32(v15, (float32x2_t)v17.n128_u64[0], 1); *(float32x4_t *)(a2 + 32) = vmulq_lane_f32(v14, (float32x2_t)v17.n128_u64[0], 1); *(float32x4_t *)(a2 + 48) = vmulq_laneq_f32(v13, v17, 2); *(float32x2_t *)(a2 + 64) = vmul_laneq_f32((float32x2_t)__PAIR64__(LODWORD(v12), LODWORD(v11)), v17, 2); *(float32x2_t *)(a2 + 72) = vmul_laneq_f32(v15, v17, 3); *(float32x4_t *)(a2 + 80) = vmulq_laneq_f32(v14, v17, 3); } v18 = 0; while ( (a3 & 3) != (_DWORD)v18 ) { v19 = result->n128_f32[v18++]; *(float *)a2 = v19 * v7.n128_f32[0]; *(float *)(a2 + 4) = v19 * v9; *(float *)(a2 + 8) = v19 * v8; *(float *)(a2 + 12) = v19 * v10; *(float *)(a2 + 16) = v19 * v11; *(float *)(a2 + 20) = v19 * v12; a2 += 24; } } else { while ( v16 ) { v20 = *result++; v21 = vmla_n_f32(*(float32x2_t *)(a2 + 16), (float32x2_t)__PAIR64__(LODWORD(v12), LODWORD(v11)), v20.n128_f32[0]).n64_u64[0]; v22 = vmla_lane_f32(*(float32x2_t *)(a2 + 24), v15, (float32x2_t)v20.n128_u64[0], 1).n64_u64[0]; v23 = vmlaq_lane_f32(*(float32x4_t *)(a2 + 32), v14, (float32x2_t)v20.n128_u64[0], 1); v24 = vmlaq_laneq_f32(*(float32x4_t *)(a2 + 48), v13, v20, 2); v25 = vmla_laneq_f32(*(float32x2_t *)(a2 + 64), (float32x2_t)__PAIR64__(LODWORD(v12), LODWORD(v11)), v20, 2).n64_u64[0]; v26 = vmla_laneq_f32(*(float32x2_t *)(a2 + 72), v15, v20, 3).n64_u64[0]; v27 = vmlaq_laneq_f32(*(float32x4_t *)(a2 + 80), v14, v20, 3); *(float32x4_t *)a2 = vmlaq_n_f32(*(float32x4_t *)a2, v13, v20.n128_f32[0]); *(_QWORD *)(a2 + 16) = v21; *(_QWORD *)(a2 + 24) = v22; *(float32x4_t *)(a2 + 32) = v23; *(float32x4_t *)(a2 + 48) = v24; *(_QWORD *)(a2 + 64) = v25; *(_QWORD *)(a2 + 72) = v26; *(float32x4_t *)(a2 + 80) = v27; a2 += 96; --v16; } v7.n128_f32[1] = v9; v7.n128_u64[1] = __PAIR64__(LODWORD(v10), LODWORD(v8)); v28 = 0; while ( (a3 & 3) != (_DWORD)v28 ) { v29 = result->n128_f32[v28++]; v30 = vmlaq_n_f32(*(float32x4_t *)a2, v7, v29); v31 = *(float *)(a2 + 16) + (float)(v29 * v11); v32 = *(float *)(a2 + 20) + (float)(v29 * v12); *(float32x4_t *)a2 = v30; *(float *)(a2 + 16) = v31; *(float *)(a2 + 20) = v32; a2 += 24; } } return result; }