PsReferencePartitionSafe

CHAR __fastcall PsReferencePartitionSafe(INT64 a1){
  signed __int64 v1; 
  unsigned __int64 i; 
  signed __int64 v3; 
  _m_prefetchw((const void *)(a1 + 24));
  v1 = *(_QWORD *)(a1 + 24);
  for( i = v1 + 1; i > 1; i = v1 + 1 )
  {
    v3 = v1;
    v1 = _InterlockedCompareExchange64((volatile signed __int64 *)(a1 + 24), i, v1);
    if( v3 == v1 )
      return 1;
  }
  if( i != 1 )
    __fastfail(0xEu);
  return 0;
}

Referenced by:

CcGetPartitionWithCreate
MiCheckTrimUnusedPageFileRegions
MiCheckZeroFreeRebalance
MiCommitExistingVad
MiContractWsSwapPageFile
MiCreateImageOrDataSection
MiObtainFreePages
MiPartitionObjectToPartition
MiQueryAddressState
MiScanPagefiles
MiWakeLargePageRebuild
MmMarkPhysicalMemoryAsBad
MmQueryMemoryListInformation
MmQueryVirtualMemory
PsGetNextPartition
PsReferencePartitionByHandle
PspAllocateProcess