// // sub_5DCA0 from 0x5dca0 to 0x5ddf4 (340 bytes) // // 2 xrefs: // > sub_5E794 @ 0x5eb68 // > FMOD::Geometry::addPolygon @ 0xd50ec // // 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 sub_5DCA0() { __int64 v0; // x19 long double v1; // q0 _DWORD *v2; // x4 _DWORD *v3; // x23 __int64 v4; // x8 __int64 *v5; // x3 __int64 *v6; // x20 int v7; // w2 int v8; // w21 char v9; // w1 char v10; // w22 int v11; // s1 int v12; // s8 int v13; // s9 __int64 v14; // x0 unsigned int v15; // w24 int v16; // w8 int v17; // w9 int v18; // w10 __int64 v19; // x11 __int64 v20; // x10 int v21; // w11 __int64 v22; // x8 __int64 v23; // x9 int v24; // w12 __int64 v25; // x10 int v26; // w11 __int64 v27; // t1 v1 = sub_5F2A0(); v3 = v2; v6 = v5; v8 = v7; v10 = v9; v12 = v11; v13 = LODWORD(v1); v14 = sub_5F218(*(_QWORD *)(v4 + 400)); v15 = 31; if ( v8 >= 3 && v6 ) { v16 = *(_DWORD *)(v0 + 44); if ( v16 < *(_DWORD *)(v0 + 40) && (v17 = *(_DWORD *)(v0 + 36) + v8, v17 <= *(_DWORD *)(v0 + 32)) ) { if ( v3 ) { *v3 = v16; v16 = *(_DWORD *)(v0 + 44); v17 = *(_DWORD *)(v0 + 36) + v8; } v18 = *(_DWORD *)(v0 + 56); v19 = *(_QWORD *)(v0 + 48); *(_DWORD *)(v0 + 36) = v17; *(_DWORD *)(v19 + 4LL * v16) = v18; v20 = *(int *)(v0 + 56); if ( (v10 & 1) != 0 ) v21 = v8 | 0x10000; else v21 = v8; v22 = *(_QWORD *)(v0 + 64) + v20; v23 = (unsigned __int16)v21; v24 = v20 + 12 * v8 + 188; ++*(_DWORD *)(v0 + 44); v25 = v22 + 188; *(_DWORD *)(v0 + 56) = v24; *(_OWORD *)(v22 + 32) = 0u; *(_OWORD *)(v22 + 48) = 0u; *(_OWORD *)v22 = 0u; *(_OWORD *)(v22 + 16) = 0u; *(_OWORD *)(v22 + 64) = 0u; *(_OWORD *)(v22 + 80) = 0u; *(_OWORD *)(v22 + 96) = 0u; *(_OWORD *)(v22 + 112) = 0u; *(_OWORD *)(v22 + 128) = 0u; *(_OWORD *)(v22 + 144) = 0u; *(_DWORD *)(v22 + 176) = v13; *(_DWORD *)(v22 + 180) = v12; *(_DWORD *)(v22 + 184) = v21; if ( (_WORD)v21 ) { do { v26 = *((_DWORD *)v6 + 2); v27 = *v6; v6 = (__int64 *)((char *)v6 + 12); --v23; *(_DWORD *)(v25 + 8) = v26; *(_QWORD *)v25 = v27; v25 += 12; } while ( v23 ); } *(_QWORD *)(v22 + 72) = *(_QWORD *)(v0 + 80); *(_QWORD *)(v0 + 80) = v22; v14 = sub_5D760(v0); v15 = 0; } else { v15 = 31; } } sub_5F234(v14); return v15; }