MiComputeZeroClusterMaximum

NTSTATUS __stdcall MiComputeZeroClusterMaximum(_MI_FAULT_VA_LIST *FaultHead, _MMVAD *Vad){
  __int64 v2; 
  __int64 v3; 
  __int64 v6; 
  unsigned __int64 v7; 
  unsigned __int64 v8; 
  unsigned __int64 v9; 
  __int64 ReferenceCount_high; 
  unsigned __int64 v11; 
  _MI_PARTITION *v12; 
  unsigned __int64 v13; 
  __int64 v14; 
  unsigned __int64 v15; 
  NTSTATUS v16; 
  __int64 v17; 
  unsigned __int64 v18; 
  union {_MI_VAD_SEQUENTIAL_INFO SequentialVa;_MMEXTEND_INFO *ExtendedInfo;} v19; 
  unsigned __int64 ParentValue; 
  unsigned int v21; 
  unsigned __int64 v22; 

  v3 = *((_QWORD *)FaultHead + 4);
  v6 = *((_QWORD *)FaultHead + 1) + 16i64 * *((_QWORD *)FaultHead + 3);
  v7 = (((unsigned __int64)(*(_DWORD *)v6 & 0xFFF) + *(_QWORD *)(v6 + 8) + 4095i64) >> 12) - v3;
  v8 = *(_QWORD *)v6 + (v3 << 12);
  if( v2 )
  {
    v9 = (*(unsigned int *)(v2 + 28) | ((unsigned __int64)*(unsigned __int8 *)(v2 + 33) << 32)) - (v8 >> 12);
    if( v7 > v9 + 1 )
      v7 = v9 + 1;
  }
  ReferenceCount_high = HIWORD(Vad[1].Core.ReferenceCount);
  v11 = 20000i64;
  v12 = *(_MI_PARTITION **)(*(&stru_140C4DB30 + 267) + 8 * ReferenceCount_high);
  v13 = *((_QWORD *)v12->WorkingSetControl + 298);
  v14 = 20000i64;
  if( v13 > 0x4E20 )
    v14 = *((_QWORD *)v12->WorkingSetControl + 298);
  if( (v14 & 0xFFFFFFFFFFFFFFFEui64) <= 0x4E20 )
  {
    v15 = 10000i64;
  }
  else
  {
    if( v13 > 0x4E20 )
      v11 = *((_QWORD *)v12->WorkingSetControl + 298);
    v15 = v11 >> 1;
  }
  v16 = MiSufficientAvailablePages((INT64)v12, v15 >> 1);
  v17 = 1i64;
  if( !v16 )
    v7 = 1i64;
  if( (Vad[1].Core.u.LongFlags & 0x40) != 0 && (*(_BYTE *)FaultHead != 1 || (FaultHead[20] & 0x4000) == 0) )
  {
    v19.SequentialVa = (_MI_VAD_SEQUENTIAL_INFO)Vad->u4;
    ParentValue = Vad[1].Core.VadNode.ParentValue;
    if( *(_QWORD *)&v19.SequentialVa >= ParentValue )
    {
      LODWORD(v18) = 1;
      return v18;
    }
    if( *(_QWORD *)&v19.SequentialVa + v7 > ParentValue )
      v7 = ParentValue - *(_QWORD *)&v19.SequentialVa;
  }
  if( *(_BYTE *)FaultHead == 1 )
  {
    v21 = FaultHead[20];
    if( (v21 & 0x4000) != 0 )
    {
      LODWORD(v22) = MiGetAvailablePagesBelowPriority(v12, ((v21 >> 3) & 7) + 1);
      if( v7 > v22 )
        v7 = v22;
    }
  }
  if( !v7 )
    v7 = v17;
  v18 = 512 - ((((unsigned int)MmGetPteBase() + ((v8 >> 9) & 0xFFFFFFF8)) >> 3) & 0x1FF);
  if( v7 <= v18 )
    LODWORD(v18) = v7;
  return v18;
}

Referenced by:

MiExpandSharedZeroCluster
MiGetClusterPage
MiResolvePrivateZeroFault