MiComputeCommitChargeForZeroPteRange

NTSTATUS __stdcall MiComputeCommitChargeForZeroPteRange(_MMVAD_SHORT *Vad, _MMPTE *PointerPte, UINT64 NumberOfPages){
  NTSTATUS v3; 
  union {unsigned int LongFlags;_MMVAD_FLAGS VadFlags;_MM_PRIVATE_VAD_FLAGS PrivateVadFlags;_MM_GRAPHICS_VAD_FLAGS GraphicsVadFlags;_MM_SHARED_VAD_FLAGS SharedVadFlags;volatile unsigned int VolatileVadLong;} v5; 
  UINT64 v6; 
  unsigned __int64 v8; 
  int v9; 
  UINT64 PagesProcessedOut; 

  v3 = 0;
  v5.LongFlags = (unsigned int)Vad->u;
  v6 = NumberOfPages;
  PagesProcessedOut = 0i64;
  if( (v5.LongFlags & 0x100000) != 0 )
  {
    if( (Vad->u1.LongFlags1 & 0x80000000) == 0 )
      LODWORD(v6) = 0;
    return v6;
  }
  if( (v5.LongFlags & 0x70) != 32 )
  {
    if( (v5.LongFlags & 0x280) != 640 )
      LODWORD(v6) = 0;
    return v6;
  }
  v8 = (unsigned __int64)((__int64)(((_QWORD)PointerPte << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16) >> 12;
  if( NumberOfPages )
  {
    do
    {
      MiComputeImageVadCommitCharge((_MMVAD *)Vad, v8, v6, &PagesProcessedOut);
      v8 += PagesProcessedOut;
      v3 += v9;
      v6 -= PagesProcessedOut;
    }
    while( v6 );
  }
  return v3;
}

Referenced by:

MiCheckCommitReleaseFromVad