// // sub_5C88C from 0x5c88c to 0x5c9b4 (296 bytes) // // 2 xrefs: // > sub_92AE0 @ 0x93138 // > sub_D7340 @ 0xd7354 // // 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_5C88C(int *a1, __int64 a2, int a3, char a4) { __int64 v7; // x8 __int64 i; // x23 _DWORD *v10; // x22 int v11; // w8 _BYTE v12[4]; // [xsp+Ch] [xbp-34h] BYREF if ( !a2 ) return 31; if ( a3 == -1 ) { for ( i = 0; i < *a1; ++i ) { v10 = *(_DWORD **)(*((_QWORD *)a1 + 3) + 8 * i); v11 = v10[15]; if ( (v11 & 0x8110) == 0 && ((v11 & 0x1000) == 0 || (a4 & 1) != 0) && !(*(unsigned int (__fastcall **)(_QWORD, _BYTE *, __int64))(*(_QWORD *)v10 + 184LL))( *(_QWORD *)(*((_QWORD *)a1 + 3) + 8 * i), v12, 1) && !v12[0] ) { v10[15] = v10[15] & 0xFFFFEE6F | 0x110; *(_QWORD *)a2 = v10; return 0; } } } else if ( (a3 & 0x80000000) == 0 && *a1 > a3 ) { v7 = *(_QWORD *)(*((_QWORD *)a1 + 3) + 8LL * a3); *(_DWORD *)(v7 + 60) = *(_DWORD *)(v7 + 60) & 0xFFFFFE6F | 0x110; *(_QWORD *)a2 = v7; return 0; } if ( *(_QWORD *)a2 ) *(_DWORD *)(*(_QWORD *)a2 + 60LL) = *(_DWORD *)(*(_QWORD *)a2 + 60LL) & 0xFFFFFE6F | 0x80; return 2; }