// // sub_100DEC from 0x100dec to 0x101080 (660 bytes) // // 1 xrefs: // > @ 0x118b18 // // 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 // float __fastcall sub_100DEC(float *a1, float *s, unsigned int a3, float32x4_t *a4, __int64 a5, __int64 a6, int a7) { float32x4_t v7; // q24 float32x4_t v8; // q25 float32x4_t v9; // q26 float32x4_t v10; // q27 float32x4_t v11; // q28 float32x4_t v12; // q29 float *v15; // x20 float32x4_t v17; // q0 unsigned int v18; // w8 float32x4_t *v19; // x9 float32x4_t *i; // x10 float32x4_t v21; // q3 float32x4_t v22; // q4 int8x16_t v23; // q5 int8x16_t v24; // q6 int8x16_t v25; // q7 int8x16_t v26; // q16 int32x4_t v27; // q23 int8x16_t v28; // q17 int8x16_t v29; // q4 int32x4_t v30; // q6 int8x16_t v31; // q18 int8x16_t v32; // q19 float32x4_t v33; // q16 float32x4_t v34; // q6 int32x4_t v35; // q23 int8x16_t v36; // q20 int8x16_t v37; // q21 int32x4_t v38; // q4 int8x16_t v39; // q22 int8x16_t v40; // q3 float32x4_t v41; // q19 float32x4_t v42; // q4 int32x4_t v43; // q23 int32x4_t v44; // q21 float32x4_t v45; // q1 float32x4_t v46; // q2 int v47; // w8 float v48; // s1 float v49; // s4 float v50; // s5 float v51; // s3 float v52; // s6 float v53; // s2 float v54; // s0 float v55; // s7 float v56; // s1 float v57; // s3 float v58; // s4 float32x4_t v60; // [xsp+0h] [xbp-80h] float32x4_t v61; // [xsp+10h] [xbp-70h] float32x4_t v62; // [xsp+20h] [xbp-60h] float32x4_t v63; // [xsp+30h] [xbp-50h] float32x4_t v64; // [xsp+40h] [xbp-40h] float32x4_t v65; // [xsp+50h] [xbp-30h] v7 = *a4; v8 = a4[8]; v9 = a4[16]; v10 = a4[24]; v11 = a4[32]; v12 = a4[40]; v15 = s; if ( a7 ) { v65 = *a4; v63 = a4[16]; v64 = a4[8]; v61 = a4[32]; v62 = a4[24]; v60 = a4[40]; memset(s, 0, 24LL * a3); v12 = v60; v11 = v61; v10 = v62; v9 = v63; v8 = v64; v7 = v65; } v18 = a3 >> 1; v19 = (float32x4_t *)v15; for ( i = (float32x4_t *)a1; v18; v19 += 3 ) { v22 = *i; v21 = i[1]; i += 2; --v18; v23 = vmulq_f32(v22, v7); v24 = vmulq_f32(v22, v8); v25 = vmulq_f32(v22, v9); v26 = vmulq_f32(v22, v10); v27 = vextq_s8(v23, vextq_s8(v24, v23, 8u), 8u); v23.n128_u64[1] = v24.n128_u64[0]; v28 = vmulq_f32(v22, v11); v29 = vmulq_f32(v22, v12); v30 = vextq_s8(v25, vextq_s8(v26, v25, 8u), 8u); v31 = vmulq_f32(v21, v7); v32 = vmulq_f32(v21, v8); v25.n128_u64[1] = v26.n128_u64[0]; v33 = vuzp1q_s32(v27, v30); v34 = vuzp2q_s32(v27, v30); v35 = vextq_s8(v28, vextq_s8(v29, v28, 8u), 8u); v28.n128_u64[1] = v29.n128_u64[0]; v36 = vmulq_f32(v21, v9); v37 = vmulq_f32(v21, v10); v38 = vextq_s8(v31, vextq_s8(v32, v31, 8u), 8u); v39 = vmulq_f32(v21, v11); v40 = vmulq_f32(v21, v12); v31.n128_u64[1] = v32.n128_u64[0]; v41 = vuzp1q_s32(v35, v38); v42 = vuzp2q_s32(v35, v38); v43 = vextq_s8(v36, vextq_s8(v37, v36, 8u), 8u); v36.n128_u64[1] = v37.n128_u64[0]; v44 = vextq_s8(v39, vextq_s8(v40, v39, 8u), 8u); v39.n128_u64[1] = v40.n128_u64[0]; v17 = vaddq_f32(vuzp1q_s32(v23, v25), vaddq_f32(vaddq_f32(vaddq_f32(*v19, vuzp2q_s32(v23, v25)), v33), v34)); v45 = vaddq_f32(vuzp1q_s32(v28, v31), vaddq_f32(vaddq_f32(vaddq_f32(v19[1], vuzp2q_s32(v28, v31)), v41), v42)); v46 = vaddq_f32( vuzp1q_s32(v36, v39), vaddq_f32(vaddq_f32(vaddq_f32(v19[2], vuzp2q_s32(v36, v39)), vuzp1q_s32(v43, v44)), vuzp2q_s32(v43, v44))); *v19 = v17; v19[1] = v45; v19[2] = v46; } v47 = a3 & 1; if ( (a3 & 1) != 0 ) { do { v48 = a1[1]; v49 = a1[2]; v50 = a1[3]; v51 = (float)((float)(a4[24].n128_f32[0] * *a1) + (float)(a4[24].n128_f32[1] * v48)) + (float)(a4[24].n128_f32[2] * v49); v52 = (float)((float)(a4[32].n128_f32[0] * *a1) + (float)(a4[32].n128_f32[1] * v48)) + (float)(a4[32].n128_f32[2] * v49); v53 = (float)((float)((float)(a4->n128_f32[0] * *a1) + (float)(a4->n128_f32[1] * v48)) + (float)(a4->n128_f32[2] * v49)) + (float)(a4->n128_f32[3] * v50); v54 = (float)((float)((float)(a4[40].n128_f32[0] * *a1) + (float)(a4[40].n128_f32[1] * v48)) + (float)(a4[40].n128_f32[2] * v49)) + (float)(a4[40].n128_f32[3] * v50); v55 = (float)((float)((float)((float)(a4[8].n128_f32[0] * *a1) + (float)(a4[8].n128_f32[1] * v48)) + (float)(a4[8].n128_f32[2] * v49)) + (float)(a4[8].n128_f32[3] * v50)) + v15[1]; v56 = (float)((float)((float)((float)(a4[16].n128_f32[0] * *a1) + (float)(a4[16].n128_f32[1] * v48)) + (float)(a4[16].n128_f32[2] * v49)) + (float)(a4[16].n128_f32[3] * v50)) + v15[2]; v57 = (float)(v51 + (float)(a4[24].n128_f32[3] * v50)) + v15[3]; --v47; v58 = (float)(v52 + (float)(a4[32].n128_f32[3] * v50)) + v15[4]; v17.n128_f32[0] = v54 + v15[5]; a1 += 4; *v15 = v53 + *v15; v15[1] = v55; v15[2] = v56; v15[3] = v57; v15[4] = v58; v15[5] = v17.n128_f32[0]; v15 += 6; } while ( v47 ); } return v17.n128_f32[0]; }