CcGetPartition

INT64 __fastcall CcGetPartition(_QWORD *a1){
  UINT64 *v1; 
  INT64 v2; 
  __int64 v3; 
  unsigned __int8 CurrentIrql; 
  signed __int32 v5; 
  ULONG_PTR *v6; 
  bool v8; 
  signed __int32 v9; 
  UINT64 SpinCount; 
  v2 = a1[66];
  if( a1[21] )
  {
    v3 = *(_QWORD *)((a1[12] & 0xFFFFFFFFFFFFFFF0ui64) + 0x28);
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(2ui64);
    LODWORD(SpinCount) = 0;
    if( _interlockedbittestandset(&dword_140C4C6C0, 0x1Fu) )
      LODWORD(SpinCount) = ExpWaitForSpinLockExclusiveAndAcquire((RTL_BITMAP *)&dword_140C4C6C0, CurrentIrql, v1);
    v5 = dword_140C4C6C0;
    while( (v5 & 0xBFFFFFFF) != 0x80000000 )
    {
      if( (v5 & 0x40000000) == 0 )
      {
        v9 = _InterlockedCompareExchange(&dword_140C4C6C0, v5 | 0x40000000, v5);
        v8 = v5 == v9;
        v5 = v9;
        if( !v8 )
          continue;
      }
      KeYieldProcessorEx(&SpinCount);
      v5 = dword_140C4C6C0;
    }
    if( *(_QWORD *)v3 )
      v6 = *(ULONG_PTR **)(qword_140C4E388 + 8i64 * (*(_WORD *)(*(_QWORD *)v3 + 60i64) & 0x3FF));
    else
      v6 = &MiSystemPartition;
    dword_140C4C6C0 = 0;
    __writecr8(CurrentIrql);
    if( v2 != *(_QWORD *)(v6[22] + 8) )
      KeBugCheckEx(0x34u, 0x1313ui64, 0xFFFFFFFFC0000420ui64, 0i64, 0i64);
  }
  return v2;
}

Referenced by:

CcAcquireByteRangeForWrite
CcAmILowPriorityWriter
CcAsyncCopyRead
CcCanIWrite
CcDecrementOpenCount
CcDeductDirtyPages
CcDeleteBcbs
CcDeleteMbcb
CcDeleteSharedCacheMap
CcFlushCachePriv
CcForceWriteThrough
CcGetFlushedValidData
CcGetPartitionFromFileObject
CcGetVacbMiss
CcInitializeCacheMapEx
CcMapDataForOverwrite
CcMdlWriteAbort
CcMdlWriteComplete2
CcNotifyOfMappedWrite
CcNotifyOfMappedWriteComplete
CcPerformReadAhead
CcPrepareMdlWrite
CcPurgeCacheSection
CcScheduleReadAheadEx
CcSetAdditionalCacheAttributes
CcSetAdditionalCacheAttributesEx
CcSetFileSizesEx
CcSetLogHandleForFile
CcSetParallelFlushFile
CcShouldLazyWriteCacheMap
CcUninitializeCacheMap
CcUnmapInactiveViewsInternal
CcUnmapVacbArray
CcUnpinRepinnedBcb
CcUpdateSharedCacheMapFlag
CcWaitForUninitializeCacheMap
CcWriteBehind
CcWriteBehindInternal