// // sub_103A80 from 0x103a80 to 0x103c94 (532 bytes) // // 1 xrefs: // > @ 0x11f740 // // 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 // __int64 __fastcall sub_103A80(int8x16_t *a1, float32x4_t *a2, __int64 a3, int a4) { unsigned int v4; // w9 int v5; // w8 int v6; // w9 int v8; // w23 int v9; // w9 __int64 v10; // x23 int v11; // w22 __int64 v12; // x24 __int64 v13; // x25 int8x16_t v14; // q0 int v15; // w22 __int64 v16; // x23 long double v17; // q0 int16x8_t v18; // q0 float32x4_t v19; // q1 int8x16_t v20; // q3 float32x4_t v21; // q4 float32x4_t v22; // q5 int16x8_t i; // [xsp+0h] [xbp-A0h] int16x8_t v25; // [xsp+10h] [xbp-90h] int16x8_t v26; // [xsp+20h] [xbp-80h] int16x8_t j; // [xsp+20h] [xbp-80h] float32x4_t v28; // [xsp+30h] [xbp-70h] float32x4_t v29; // [xsp+40h] [xbp-60h] int8x16_t v30; // [xsp+50h] [xbp-50h] v4 = a1[6].n128_u8[4]; if ( v4 <= 7 ) { v5 = a1[6].n128_u8[6]; v6 = 1 << v4; v30 = *a1; v29 = a1[1]; v8 = a4 >> 2; v28 = a1[2]; if ( (v6 & 0xF0) != 0 ) { v9 = v8 / 4; v26 = vdupq_n_s16(-v5); v25 = vdupq_n_s16(-2 * v5); v10 = v8 / 4; v11 = a4 >> 4; v12 = 2 * v9; v13 = 3 * v9; for ( i = vdupq_n_s16(-3 * v5); v11; ++a2 ) { *(long double *)&v14 = sub_104768(); --v11; *a2 = vaddq_f32(vmlaq_f32(v29, vcvtq_f32_u32(vandq_s8(v14, v30)), v28), *a2); a2[v10] = vaddq_f32(vmlaq_f32(v29, vcvtq_f32_u32(vandq_s8(v30, vshlq_s16(v14, v26))), v28), a2[v10]); a2[v12] = vaddq_f32(vmlaq_f32(v29, vcvtq_f32_u32(vandq_s8(v30, vshlq_s16(v14, v25))), v28), a2[v12]); a2[v13] = vaddq_f32(vmlaq_f32(v29, vcvtq_f32_u32(vandq_s8(v30, vshlq_s16(v14, i))), v28), a2[v13]); } } else if ( (v6 & 3) != 0 ) { for ( ; v8; ++a2 ) { --v8; *a2 = vmlaq_f32(vaddq_f32(*a2, v29), vcvtq_f32_u32(vandq_s8(COERCE_INT8X16_T(sub_104768()), v30)), v28); } } else { v15 = a4 >> 3; v16 = v8 / 2; for ( j = vdupq_n_s16(-v5); v15; ++a2 ) { v17 = sub_104768(); --v15; *(long double *)&v18 = sub_104804(v17, *(long double *)a2); *a2 = v19; a2[v16] = vmlaq_f32(vaddq_f32(a2[v16], v21), vcvtq_f32_u32(vandq_s8(v20, vshlq_s16(v18, j))), v22); } } } return 0; }