CcUnmapInactiveViews

VOID __fastcall CcUnmapInactiveViews(UINT64 NumberOfViewsToUnmap, UINT64 Flags, VOID **ViewToUnmap){
  void **v3; 
  char v4; 
  void **v5; 
  unsigned int v6; 
  unsigned __int8 v7; 
  INT64 v8; 
  unsigned __int64 v9; 
  UINT64 v10; 
  UINT64 v11; 
  unsigned __int64 *v12; 

  v4 = 0;
  v5 = v3;
  v6 = (unsigned int)ViewToUnmap;
  if( dword_140C507FC && (_DWORD)CcNumberOfMappedVacbs )
  {
    if( NumberOfViewsToUnmap )
    {
      v12 = *(unsigned __int64 **)(NumberOfViewsToUnmap + 8);
      if( v12 )
        CcUnmapInactiveViewsInternal(v12, 64i64, (INT64)ViewToUnmap, v3);
    }
    else
    {
      while( 1 )
      {
        LODWORD(v10) = PsGetNextPartitionUnsafe((PVOID)NumberOfViewsToUnmap);
        v11 = v10;
        if( !v10 )
          break;
        v7 = KeAcquireSpinLockRaiseToDpc((UINT64 *)&CmpDummyThreadEvent + 364);
        v8 = *(_QWORD *)(v11 + 8);
        v9 = v7;
        if( v8 && *(_BYTE *)(v8 + 966) < 2u )
        {
          if( _InterlockedIncrement64((volatile signed __int64 *)(v8 + 968)) <= 1 )
            __fastfail(0xEu);
        }
        else
        {
          v8 = 0i64;
        }
        KxReleaseSpinLock((UINT64 *)&CmpDummyThreadEvent + 364);
        __writecr8(v9);
        if( v8 )
        {
          v4 |= CcUnmapInactiveViewsInternal((unsigned __int64 *)v8, 64i64, v6, v5);
          CcDereferencePartition(v8);
        }
        NumberOfViewsToUnmap = v11;
      }
    }
  }
}

Referenced by:

CcGetVacbMiss
MiDereferenceSegmentThread
MiObtainSystemCacheView
MiRemoveUnusedSegments