MmGetControlAreaPartition

NTSTATUS __stdcall MmGetControlAreaPartition(INT64 a1){
  UINT8 CurrentIrql; 
  signed __int32 v3; 
  _MI_PARTITION *v4; 
  bool v6; 
  signed __int32 v7; 
  UINT64 SpinCount; 

  CurrentIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  LODWORD(SpinCount) = 0;
  if( _interlockedbittestandset((volatile signed __int32 *)&SpinLock, 0x1Fu) )
    LODWORD(SpinCount) = ExpWaitForSpinLockExclusiveAndAcquire(&SpinLock, CurrentIrql);
  v3 = SpinLock;
  while( (v3 & 0xBFFFFFFF) != 0x80000000 )
  {
    if( (v3 & 0x40000000) == 0 )
    {
      v7 = _InterlockedCompareExchange((volatile signed __int32 *)&SpinLock, v3 | 0x40000000, v3);
      v6 = v3 == v7;
      v3 = v7;
      if( !v6 )
        continue;
    }
    KeYieldProcessorEx(&SpinCount);
    v3 = SpinLock;
  }
  if( *(_QWORD *)a1 )
    v4 = *(_MI_PARTITION **)(*(&stru_140C4DB30 + 267) + 8i64 * (*(_WORD *)(*(_QWORD *)a1 + 60i64) & 0x3FF));
  else
    v4 = &Irp;
  LODWORD(SpinLock) = 0;
  __writecr8(CurrentIrql);
  return(NTSTATUS)v4->Core.PartitionObject;
}

Referenced by:

CcChargeDirtyPages
CcDeleteSectionsForPartition
CcGetFlushedValidData
CcMapAndCopyInToCache
CcNotifyOfMappedWriteComplete
CcPurgeCacheSection
CcSetDirtyInMask