// // sub_1055A8 from 0x1055a8 to 0x105778 (464 bytes) // // 1 xrefs: // > @ 0x11c0a0 // // 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_1055A8(_QWORD *a1, __int64 a2, _DWORD *a3, float *s) { int v4; // w8 int v5; // w13 int v6; // w15 __int64 v7; // x10 int v8; // w17 __int64 v9; // x0 int32x4_t v10; // q0 float32x4_t *v11; // x16 int v12; // w14 int v13; // w0 unsigned int v14; // w0 int v15; // w17 int v16; // w4 int v17; // w15 int32x4_t v18; // q1 int32x4_t v19; // q0 int i; // w0 int32x4_t v21; // q2 float32x4_t v22; // q3 __int64 v23; // x0 int v24; // w4 int v25; // w15 float v26; // s1 __int64 j; // x11 v4 = *(_DWORD *)(*(_QWORD *)(*a1 + 48LL) + 4LL * a1[6]) / 2; if ( a3 ) { v5 = 0; v6 = 0; v7 = 1; v8 = *(_DWORD *)(a2 + 56) * *a3; while ( v7 < *(int *)(a2 + 52) ) { v9 = *(unsigned __int8 *)(*(_QWORD *)(a2 + 24) + v7); if ( a3[v9] >> 15 ) { v12 = v8; } else { v10.n128_u32[3] = 0; v11 = (float32x4_t *)&s[v6]; v12 = *(_DWORD *)(a2 + 56) * (a3[v9] & 0x7FFF); v5 = *(unsigned __int16 *)(*(_QWORD *)(a2 + 16) + 2 * v9); if ( v12 - v8 >= 0 ) v13 = 1024; else v13 = 1047552; v14 = v13 & 0xFFFFF | ((unsigned __int16)v8 << 20); v15 = ((v12 - v8) << 20) / (v5 - v6); if ( v4 <= v5 ) v16 = v4; else v16 = v5; v17 = v16 - v6; v10.n128_u32[0] = 3 * v15; v10.n128_u32[1] = 2 * v15; v10.n128_u32[2] = v15; v18 = vdupq_n_s32(4 * v15); v19 = vaddq_s32(v10, vdupq_n_s32(v14)); for ( i = v17 >> 2; i; ++v11 ) { v21 = vshrq_n_s32(v19, 0x14u); v22.n128_f32[0] = flt_4F3F4[v21.n128_i32[3]]; v22.n128_f32[1] = flt_4F3F4[v21.n128_i32[2]]; v22.n128_f32[2] = flt_4F3F4[v21.n128_i32[1]]; v19 = vaddq_s32(v19, v18); v22.n128_f32[3] = flt_4F3F4[v21.n128_i32[0]]; --i; *v11 = vmulq_f32(v22, *v11); } if ( (v17 & 3) != 0 ) { v23 = 0; v24 = v19.n128_i32[3]; v25 = v17 & 3; while ( v25 != (_DWORD)v23 ) { v26 = flt_4F3F4[v24 >> 20]; v24 += v15; v11->n128_f32[v23] = v11->n128_f32[v23] * v26; ++v23; } } v6 = v5; } ++v7; v8 = v12; } for ( j = v5; j < v4; ++j ) s[j] = s[j] * flt_4F3F4[v8]; return 1; } else { memset(s, 0, 4LL * v4); return 0; } }