MmGetNodeFastLargePageCounts

NTSTATUS __stdcall MmGetNodeFastLargePageCounts(INT64 a1, UINT64 a2){
  __int64 v2; 
  __int64 v3; 
  __int64 *v4; 
  __int64 v5; 
  _QWORD *v6; 
  __int64 *v7; 
  unsigned __int64 i; 

  v2 = (unsigned int)a2;
  if( (unsigned int)a2 >= (unsigned __int16)KeNumberNodes )
    return 0;
  v3 = ((unsigned __int64)KeFeatureBits & 0x2000000000i64) == 0;
  v4 = &MiLargePageSizes[v3];
  do
  {
    if( *v4 == 512 )
      break;
    v3 = (unsigned int)(v3 + 1);
    ++v4;
  }
  while( (unsigned int)v3 < 3 );
  if( (_DWORD)v3 == 3 )
    return 0;
  LODWORD(v5) = MiPartitionObjectToPartition((PVOID)0xFFFFFFFFFFFFFFFFi64);
  if( !v5 )
    return 0;
  v6 = (_QWORD *)(*(_QWORD *)(v5 + 16) + 4544 * v2 + 1072i64 * (unsigned int)v3);
  v7 = &MiLargePageSizes[v3];
  for( i = ((unsigned __int64)*v7 >> 9) * (*v6 + v6[1]); (_DWORD)v3; LODWORD(v3) = v3 - 1 )
  {
    v6 -= 134;
    i += ((unsigned __int64)*--v7 >> 9) * (*v6 + v6[1]);
  }
  return i;
}

Referenced by:

VmpAccessFaultBatchResolve