// // sub_5D5B4 from 0x5d5b4 to 0x5d704 (336 bytes) // // 1 xrefs: // > sub_5E11C @ 0x5e330 // // 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_5D5B4(__int64 a1) { float32x2_t v1; // d0 float v3; // s2 float v4; // s4 __int64 v5; // x1 float v6; // s3 float32x2_t v7; // d6 float v8; // s2 float v9; // s4 float v10; // s5 float v11; // s1 __int64 v12; // d2 unsigned __int32 v13; // v0.s[1] __int64 v14; // x0 float32x2_t v16; // [xsp+0h] [xbp-30h] BYREF float v17; // [xsp+8h] [xbp-28h] unsigned __int64 v18; // [xsp+10h] [xbp-20h] BYREF float v19; // [xsp+18h] [xbp-18h] v1.n64_u32[0] = *(_DWORD *)(a1 + 88); v1.n64_u32[1] = *(_DWORD *)(a1 + 100); v18 = vmul_f32(vadd_f32(v1, *(float32x2_t *)(a1 + 92)), (float32x2_t)0x3F0000003F000000LL).n64_u64[0]; v19 = (float)(*(float *)(a1 + 104) + *(float *)(a1 + 108)) * 0.5; sub_5D704(a1 + 164, &v18, &v16); v16.n64_u64[0] = vadd_f32(v16, *(float32x2_t *)(a1 + 140)).n64_u64[0]; v17 = v17 + *(float *)(a1 + 148); v3 = (float)(*(float *)(a1 + 92) - *(float *)(a1 + 88)) * 0.5; v4 = (float)(*(float *)(a1 + 100) - *(float *)(a1 + 96)) * 0.5; v5 = *(_QWORD *)(a1 + 264); v6 = (float)(*(float *)(a1 + 108) - *(float *)(a1 + 104)) * 0.5; v7.n64_u64[0] = vmla_n_f32( vmla_n_f32( vmul_n_f32(vabs_f32(*(float32x2_t *)(a1 + 164)), v3), vabs_f32(*(float32x2_t *)(a1 + 180)), v4), vabs_f32(*(float32x2_t *)(a1 + 196)), v6).n64_u64[0]; v8 = (float)((float)(fabsf(*(float *)(a1 + 172)) * v3) + (float)(fabsf(*(float *)(a1 + 188)) * v4)) + (float)(fabsf(*(float *)(a1 + 204)) * v6); v9 = v16.n64_f32[1]; v10 = v8 + v17; v11 = v17 - v8; LODWORD(v12) = vadd_f32(v16, v7).n64_u32[0]; v13 = vsub_f32(v16, v7).n64_u32[1]; *(float *)v5 = v16.n64_f32[0] - v7.n64_f32[0]; HIDWORD(v12) = v13; *(float *)(v5 + 16) = v11; *(float *)(v5 + 20) = v10; *(_QWORD *)(v5 + 4) = v12; *(float *)(v5 + 12) = v7.n64_f32[1] + v9; v14 = *(_QWORD *)(*(_QWORD *)(a1 + 24) + 416LL); if ( *(_BYTE *)(a1 + 112) ) return sub_60F60(v14); else return sub_60D14(v14); }