PsDereferencePartition

VOID __fastcall PsDereferencePartition(INT64 a1){
  signed __int64 v2; 
  bool v3; 
  signed __int64 v4; 
  WORK_QUEUE_ITEM *v5; 
  v2 = _InterlockedExchangeAdd64((volatile signed __int64 *)(a1 + 24), 0xFFFFFFFFFFFFFFFFui64);
  v3 = v2 <= 1;
  v4 = v2 - 1;
  if( v3 )
  {
    if( v4 )
      __fastfail(0xEu);
    v5 = (WORK_QUEUE_ITEM *)(a1 + 64);
    v5->Parameter = (void *)a1;
    v5->List.Flink = 0i64;
    v5->WorkerRoutine = (void(__fastcall *)(void *))PspTeardownPartition;
    ExQueueWorkItem(v5, DelayedWorkQueue);
  }
}

Referenced by:

CcGetPartitionWithCreate
EtwpClearPartitionContext
EtwpSetPartitionContext
IopSetFileMemoryPartitionInformation
MiAllocateVirtualMemoryCommon
MiCommitExistingVad
MiContractWsSwapPageFileWorker
MiCreateSection
MiInitializeCreateSectionPacket
MiObtainFreePages
MiQueryAddressState
MiRebalanceZeroFreeLists
MiRebuildLargePages
MiReleaseProcessReferenceToSessionDataPage
MiScanPagefileSpace
MiTrimUnusedPageFileRegionsWorker
MmAllocateVirtualMemory
MmMarkPhysicalMemoryAsBad
MmQueryMemoryListInformation
MmQueryVirtualMemory
NtAllocateVirtualMemory
NtCreatePartition
NtManagePartition
PsGetNextPartition
PsQuitNextPartition
PspAllocatePartition
PspClosePartitionHandle
PspSetJobMemoryPartition
PspTeardownPartition