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