CmpDestroyHive

INT64 __stdcall CmpDestroyHive(PVOID P){
  struct _PRIVILEGE_SET *v2; 
  INT64 result; 
  CmpDestroySecurityCache((__int64)P);
  CmpUnJoinClassOfTrust((INT64)P);
  CmpVERemoveHiveFromSIDMappingTable((INT64)P);
  HvHiveCleanup((INT64)P);
  CmpCmdHiveClose((__int64)P);
  v2 = (struct _PRIVILEGE_SET *)*((_QWORD *)P + 604);
  if( v2 )
    CmpVolumeContextDecrementRefCount(v2);
  result = (unsigned int)_InterlockedExchangeAdd((volatile signed __int32 *)P + 1068, 0xFFFFFFFF);
  if( (_DWORD)result == 1 )
    return CmpDeleteHive(P);
  return result;
}

Referenced by:

CmLoadKey
CmReplaceKey
CmRestoreKey
CmSaveKey
CmSaveMergedKeys
CmpCreateEmptyHiveClone
CmpCreateHive
CmpFlushBackupHive
CmpFreeAllMemory
CmpLoadHiveVolatile
CmpLoadKeyCommon
CmpRefreshHive
CmpReorganizeHive