CcInitializePartitionVacbs

CHAR __fastcall CcInitializePartitionVacbs(INT64 ReserveMapping){
  CHAR v1; 
  KIRQL v3; 
  _LIST_ENTRY *VacbFromFreeList; 
  _LIST_ENTRY *v5; 
  UINT8 v6; 
  KIRQL v7; 
  _DWORD *v8; 
  _DWORD *v9; 
  UINT8 v10; 
  KIRQL v12; 
  v1 = 1;
  while( *(_DWORD *)(ReserveMapping + 920) < (unsigned int)CcMinimumFreeHighPriorityVacbs )
  {
    v3 = KeAcquireQueuedSpinLock(4ui64);
    VacbFromFreeList = CcGetVacbFromFreeList(ReserveMapping);
    KeReleaseQueuedSpinLock(4ui64, v3);
    if( VacbFromFreeList )
    {
      v5 = (_LIST_ENTRY *)MmReserveViewInSystemCache();
      VacbFromFreeList->Flink = v5;
      if( !v5 )
      {
        v1 = 0;
        v12 = KeAcquireQueuedSpinLock(4ui64);
        CcSetVacbInFreeList(ReserveMapping, VacbFromFreeList, 0);
        KeReleaseQueuedSpinLock(4ui64, v12);
        return v1;
      }
      v6 = KeAcquireQueuedSpinLock(4ui64);
      CcSetVacbInFreeList(ReserveMapping, VacbFromFreeList, 1);
      v7 = v6;
    }
    else
    {
      CcAllocateInitializeVacbArray();
      v9 = v8;
      if( !v8 )
        return 0;
      v10 = KeAcquireQueuedSpinLock(4ui64);
      CcInsertVacbArray(ReserveMapping, v9);
      if( CcVacbArraysAllocated == 1 )
        v9[1] = 1;
      v7 = v10;
    }
    KeReleaseQueuedSpinLock(4ui64, v7);
  }
  return v1;
}

Referenced by:

CcInitializePartition