MiGenerateRandomPte

CHAR *__stdcall MiGenerateRandomPte(INT64 a1){
  __int64 v1; 
  __int64 v2; 
  unsigned __int64 v3; 
  __int64 v4; 
  __int64 v6; 
  _LIST_ENTRY *v8[5]; 

  MiInitializeWalkBounds(a1, v8);
  v1 = (unsigned int)ExGenRandom(ExGenRandomDomainUserVisible);
  v2 = (unsigned int)ExGenRandom(ExGenRandomDomainUserVisible);
  v3 = (char *)v8[1] - (char *)v8[0] + 1;
  v4 = v1 | (v2 << 32);
  if( _BitScanReverse64((unsigned __int64 *)&v6, v3) )
    v3 = 1i64 << v6;
  return(char *)MmGetPteBase() + ((((unsigned __int64)v8[0] + (v4 & (v3 - 1))) >> 9) & 0x7FFFFFFFF8i64);
}

Referenced by:

MiAgeWorkingSet
MiSimpleAging
MiTrimWorkingSet