// // sub_10449C from 0x10449c to 0x104768 (716 bytes) // // 1 xrefs: // > @ 0x11f748 // // 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_10449C(__int64 a1, _QWORD *a2, __int64 a3, __int64 a4, __int64 a5, int a6) { float32x4_t *v8; // x22 float32x4_t *v9; // x21 int v10; // w23 long double v11; // q0 int v12; // w5 int v13; // w23 __int64 j; // x0 int16x8_t v15; // q0 int8x16_t v16; // q3 int32x4_t v17; // q5 int32x4_t v18; // q4 int32x4_t v19; // q0 int32x4_t v20; // q2 long double v21; // q0 __int64 v22; // x0 __int64 v23; // x1 int8x16_t v24; // q0 int32x4_t v25; // q2 int32x4_t v26; // q3 long double v27; // q0 int16x8_t v28; // q0 float32x4_t v29; // q1 float32x4_t *v30; // x9 float32x4_t *v31; // x8 float32x4_t v32; // q4 int8x16_t v33; // q3 float32x4_t v34; // q5 int k; // w23 int32x4_t v36; // q5 int32x4_t v37; // q6 int32x4_t v38; // q4 int32x4_t v39; // q0 float32x4_t v40; // q2 float32x4_t v41; // q0 int16x8_t v43; // [xsp+0h] [xbp-D0h] int16x8_t v44; // [xsp+10h] [xbp-C0h] int16x8_t v45; // [xsp+20h] [xbp-B0h] int8x16_t v46; // [xsp+20h] [xbp-B0h] int16x8_t i; // [xsp+20h] [xbp-B0h] float32x4_t v48; // [xsp+30h] [xbp-A0h] float32x4_t v49; // [xsp+40h] [xbp-90h] int8x16_t v50; // [xsp+50h] [xbp-80h] int8x16_t v51; // [xsp+60h] [xbp-70h] BYREF __n128 v52[3]; // [xsp+70h] [xbp-60h] BYREF v50 = *(int8x16_t *)a1; v49 = *(float32x4_t *)(a1 + 16); v8 = (float32x4_t *)(*a2 + 4 * a3); v9 = (float32x4_t *)(a2[1] + 4 * a3); v10 = a6 >> 2; v48 = *(float32x4_t *)(a1 + 32); switch ( *(_BYTE *)(a1 + 100) ) { case 0: case 1: while ( v10 ) { v21 = sub_104768(a1); v46 = COERCE_INT8X16_T(sub_104774(v21)); v24.n128_u64[0] = sub_103C94(v22, v23); v25 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v46, v50)), v48); v26 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v24, v50)), v48); *v8 = vaddq_f32(vuzp1q_s32(v25, v26), *v8); --v10; ++v8; *v9 = vaddq_f32(vuzp2q_s32(v25, v26), *v9); ++v9; } break; case 2: case 3: for ( i = vdupq_n_s16(-*(unsigned __int8 *)(a1 + 102)); v10; v9 = v30 + 1 ) { v27 = sub_104768(a1); --v10; *(long double *)&v28 = sub_104804(v27, *(long double *)v8); *v8 = v29; v8 = v31; *v9 = vmlaq_f32(vaddq_f32(*v30, v32), vcvtq_f32_u32(vandq_s8(v33, vshlq_s16(v28, i))), v34); } break; case 4: case 5: case 6: case 7: v11 = sub_104780(); v13 = v12 >> 3; for ( j = sub_1047CC(v11); v13; v9 += 2 ) { *(long double *)&v15 = sub_104768(j); v16 = vshlq_s16(v15, v43); v17 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v50, vshlq_s16(v15, v45))), v48); v18 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v15, v50)), v48); v19 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v50, vshlq_s16(v15, v44))), v48); *v8 = vaddq_f32(vzip1q_s32(v18, v19), *v8); v20 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v50, v16)), v48); *v9 = vaddq_f32(vzip1q_s32(v17, v20), *v9); --v13; v8[1] = vaddq_f32(vzip2q_s32(v18, v19), v8[1]); v8 += 2; v9[1] = vaddq_f32(v9[1], vzip2q_s32(v17, v20)); } break; case 8: for ( k = a6 >> 3; k; v9 += 2 ) { sub_1047B8(a1); sub_1043B8(a1, a5, v52, &v51); --k; v36 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v52[1], v50)), v48); v37 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v52[0], v50)), v48); v38 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v52[2], v50)), v48); v39 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v51, v50)), v48); v40 = vaddq_f32(vuzp1q_s32(v37, v39), v8[1]); *v8 = vaddq_f32(*v8, vuzp1q_s32(v38, v36)); v8[1] = v40; v8 += 2; v41 = vaddq_f32(v9[1], vuzp2q_s32(v37, v39)); *v9 = vaddq_f32(*v9, vuzp2q_s32(v38, v36)); v9[1] = v41; } break; default: return 0; } return 0; }