CmpAdjustSecurityCacheSize

UINT8 __stdcall CmpAdjustSecurityCacheSize(CMHIVE *CmHive){
  unsigned int SecurityCount; 
  _CM_KEY_SECURITY_CACHE_ENTRY *v3; 
  _CM_KEY_SECURITY_CACHE_ENTRY *v4; 

  SecurityCount = CmHive->SecurityCount;
  if( SecurityCount >= CmHive->SecurityCacheSize )
    goto LABEL_4;
  v3 = (_CM_KEY_SECURITY_CACHE_ENTRY *)CmHive->Hive.Allocate(16 * SecurityCount, 0i64, 1666403651i64);
  v4 = v3;
  if( v3 )
  {
    memmove(v3, CmHive->SecurityCache, 16 * CmHive->SecurityCount);
    CmHive->Hive.Free(CmHive->SecurityCache, 16 * CmHive->SecurityCacheSize);
    CmHive->SecurityCacheSize = CmHive->SecurityCount;
    CmHive->SecurityCache = v4;
LABEL_4:
    LOBYTE(v3) = 1;
  }
  return(unsigned __int8)v3;
}

Referenced by:

CmpValidateHiveSecurityDescriptors