SmcCacheCleanup

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);
}

Referenced by:

SmcCacheDelete
SmcProcessCreateRequest