CcDeleteMbcb

VOID __stdcall CcDeleteMbcb(
        SINGLE_LIST_ENTRY *PropagateBoostsList,
        SINGLE_LIST_ENTRY *SelfBoostsList,
        SINGLE_LIST_ENTRY *ReadyList){
  INT64 Partition; 
  _SINGLE_LIST_ENTRY *Next; 
  _SINGLE_LIST_ENTRY *v6; 
  _SINGLE_LIST_ENTRY *v7; 
  _SINGLE_LIST_ENTRY *v8; 
  _SINGLE_LIST_ENTRY *v9; 
  _SINGLE_LIST_ENTRY *v10; 
  PVOID *v11; 
  PVOID v12; 
  PVOID *v13; 
  PVOID P; 
  PVOID *p_P; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  p_P = &P;
  P = &P;
  memset(&LockHandle, 0, sizeof(LockHandle));
  Partition = CcGetPartition(PropagateBoostsList);
  ExAcquireFastMutex((FAST_MUTEX *)&PropagateBoostsList[35]);
  Next = PropagateBoostsList[20].Next;
  if( Next )
  {
    KeAcquireInStackQueuedSpinLock((UINT64 *)(Partition + 128), &LockHandle);
    CcDeductDirtyPages((INT64)PropagateBoostsList, LODWORD(Next[1].Next));
    KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
    __writecr8(LockHandle.OldIrql);
    v6 = Next + 2;
    while( 1 )
    {
      v7 = v6->Next;
      if( v6->Next == v6 )
        break;
      v8 = v7->Next;
      v9 = v7[1].Next;
      if( v7->Next[1].Next != v7 || v9->Next != v7 )
LABEL_19:
        __fastfail(3u);
      v9->Next = v8;
      v8[1].Next = v9;
      v10 = v7[5].Next;
      if( v10 && v10 != &Next[12] )
        ExFreeToNPagedLookasideList((NPAGED_LOOKASIDE_LIST *)&CcBitmapLookasideList, v10);
      if( v7 < Next || v7 >= &Next[24] )
      {
        v11 = p_P;
        if( *p_P != &P )
          goto LABEL_19;
        v7[1].Next = (_SINGLE_LIST_ENTRY *)p_P;
        v7->Next = (_SINGLE_LIST_ENTRY *)&P;
        *v11 = v7;
        p_P = (PVOID *)&v7->Next;
      }
    }
    PropagateBoostsList[20].Next = 0i64;
    KeReleaseGuardedMutex((_FAST_MUTEX *)&PropagateBoostsList[35]);
    while( 1 )
    {
      v12 = P;
      if( P == &P )
        break;
      v13 = *(PVOID **)P;
      if( *((PVOID **)P + 1) != &P || v13[1] != P )
        goto LABEL_19;
      P = *(PVOID *)P;
      v13[1] = &P;
      ExFreePoolWithTag(v12, 0);
    }
    CcDeallocateBcb((CHAR *)Next);
  }
  else
  {
    KeReleaseGuardedMutex((_FAST_MUTEX *)&PropagateBoostsList[35]);
  }
}

Referenced by:

CcDeleteSharedCacheMap
CcSetFileSizesEx