CcUninitializePartitionVacbs

_LIST_ENTRY *__fastcall CcUninitializePartitionVacbs(_VACB *Vacb){
  _LIST_ENTRY **p_Blink; 
  _LIST_ENTRY *result; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *v5; 
  _LIST_ENTRY *Blink; 
  INT64 v7; 
  INT64 v8; 
  UINT8 v9; 
  int BaseAddress; 

  p_Blink = &Vacb[22].Overlay.Links.Blink;
  while( 1 )
  {
    result = *p_Blink;
    if( *p_Blink == (_LIST_ENTRY *)p_Blink )
      break;
    Flink = result->Flink;
    v5 = result - 1;
    if( result->Flink->Blink != result || (Blink = result->Blink, Blink->Flink != result) )
      __fastfail(3u);
    Blink->Flink = Flink;
    Flink->Blink = Blink;
    MmFreeSystemCacheReserveView((ULONG_PTR)v5->Flink);
    v5->Flink = 0i64;
    v9 = KeAcquireQueuedSpinLock(4i64, v7, v8);
    CcSetVacbInFreeList(Vacb, (UINT8)v5);
    KeReleaseQueuedSpinLock(LockQueueVacbLock, v9);
    BaseAddress = (int)Vacb[23].BaseAddress;
    if( !BaseAddress )
      KeBugCheckEx(0x34u, (PVOID)0x6A1, (PVOID)0xFFFFFFFFC0000420i64, 0i64, 0i64);
    LODWORD(Vacb[23].BaseAddress) = BaseAddress - 1;
  }
  if( LODWORD(Vacb[23].BaseAddress) )
    KeBugCheckEx(0x34u, (PVOID)0x6A9, (PVOID)0xFFFFFFFFC0000420i64, 0i64, 0i64);
  return result;
}

Referenced by:

CcDeletePartition