VOID __stdcall SmcCacheCleanup(_SMC_CACHE *Cache, UINT64 DeleteCacheFile){
PPRIVILEGE_SET *v3;
__int64 v4;
UINT64 v5;
v3 = (PPRIVILEGE_SET *)(Cache + 44);
v4 = 16i64;
do
{
v5 = *((unsigned int *)v3 - 2);
if( (_DWORD)v5 != -1 )
{
SmStoreDelete((_SM_STORE_MANAGER_TYPE)(*((_DWORD *)v3 - 1) & 3), v5);
CmSiFreeMemory(*v3);
}
v3 += 3;
--v4;
}
while( v4 );
if( *((_QWORD *)Cache + 5) && *((_QWORD *)Cache + 6) )
SmKmStoreFileDelete(Cache + 10);
SmKmFileInfoCleanup(Cache + 10);
StEtaCleanup(Cache + 26);
}