MiGetFastLargePages

NTSTATUS __stdcall MiGetFastLargePages(
        INT64 PageFrameIndex,
        INT64 a2,
        INT64 a3,
        INT64 a4,
        INT64 ProtectionMask,
        INT64 a6){
  UINT64 v7; 
  UINT64 v8; 
  UINT64 v9; 
  int v10; 
  int v11; 
  char *v12; 
  UINT64 v13; 
  char *v14; 
  char *i; 
  __int64 v16; 
  INT64 v18; 
  INT64 v19; 
  INT64 v20; 
  INT64 v21; 

  KeGetCurrentIrql();
  LODWORD(v21) = MiProtectionToCacheAttribute((unsigned int)ProtectionMask);
  v11 = v10 | 1;
  if( (a6 & 4) == 0 )
    v11 = v10;
  LODWORD(v20) = v11;
  LODWORD(v18) = 1;
  LODWORD(v12) = MiGetLargePagesDemoteAsNeeded(PageFrameIndex, v7, v8, v9, v18, v20, v21);
  v13 = -1i64;
  v14 = v12;
  for( i = v12; i; i = *(char **)i )
  {
    v16 = (i - (char *)MmGetPfnDb()) / 48;
    if( i == v14 )
      v13 = MiLargePageSizes[MiGetPfnPageSizeIndex((INT64)i)];
    LODWORD(v19) = 1;
    MiUpdateLargePageBitMap(PageFrameIndex, v16, v13, 1ui64, v19);
  }
  return(int)v14;
}

Referenced by:

MiAllocateLargeZeroPages