// // sub_5AC04 from 0x5ac04 to 0x5ad18 (276 bytes) // // 3 xrefs: // > sub_5BE98 @ 0x5beb4 // > sub_5C618 @ 0x5c620 // > sub_6C64C @ 0x6ccc4 // // 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_5AC04(__int64 a1, __int64 a2, char a3, char a4) { __int64 v4; // x8 __int64 v6; // x11 _QWORD *v7; // x10 _QWORD *v8; // x12 __int64 v9; // x10 __int64 v10; // x10 __int64 result; // x0 __int64 v12; // x0 v4 = *(_QWORD *)(a1 + 32); if ( v4 ) { v6 = *(_QWORD *)(a1 + 512); v7 = (_QWORD *)(a1 + 512); if ( v6 == a1 + 512 ) { v8 = *(_QWORD **)(a1 + 520); if ( v8 == v7 ) return 0; } else { v8 = *(_QWORD **)(a1 + 520); } --*(_DWORD *)(v4 + 476); *v8 = v6; *(_QWORD *)(*(_QWORD *)(a1 + 512) + 8LL) = v8; *(_QWORD *)(a1 + 520) = v7; *(_QWORD *)(a1 + 512) = v7; } *(_QWORD *)(a1 + 32) = a2; *(_QWORD *)(a1 + 528) = a1; if ( !a2 ) return 0; v9 = *(_QWORD *)(a2 + 424); *(_QWORD *)(a1 + 520) = a2 + 424; *(_QWORD *)(a1 + 512) = v9; *(_QWORD *)(v9 + 8) = a1 + 512; **(_QWORD **)(a1 + 520) = a1 + 512; ++*(_DWORD *)(a2 + 476); v10 = *(_QWORD *)(a1 + 472); if ( v10 ) result = 0; else result = 30; if ( v10 ) { if ( (a3 & 1) != 0 ) { result = sub_5BDF0(a1, v4, a2, a4 & 1); if ( !(_DWORD)result ) { result = sub_5C5DC(result); if ( !(_DWORD)result ) { result = (*(__int64 (__fastcall **)(__int64, _QWORD))(*(_QWORD *)a1 + 16LL))(a1, *(_DWORD *)(a1 + 72) & 1); if ( !(_DWORD)result ) { v12 = sub_5C5F4(); if ( (*(_BYTE *)(*(_QWORD *)(a1 + 472) + 56LL) & 0x10) == 0 ) v12 = sub_5C514(v12); sub_5C728(v12); return 0; } } } } } return result; }