MiRebuildPageTableLeafAges
UINT64 __stdcall MiRebuildPageTableLeafAges(INT64 rcx0, UINT64 a2){
UINT64 *v3;
UINT64 v4;
INT64 v5;
UINT64 *v6;
UINT64 result;
unsigned __int8 v8;
int v9;
UINT64 v10;
_OWORD a3[2];
v3 = (UINT64 *)((char *)MmGetPdeBase() + ((a2 >> 18) & 0x3FFFFFF8));
v4 = *v3;
MiPteInShadowRange((UINT64)v3);
v10 = v4;
MiPteInShadowRange((UINT64)&v10);
v6 = (UINT64 *)((char *)MmGetPfnDb() + 48 * ((v4 >> 12) & 0xFFFFFFFFFi64));
result = (unsigned __int64)*(unsigned int *)v6 >> 4;
if( (result & 0x3FF) == 0 )
{
MiCountWslesInPageTable(v5, a2, a3);
v8 = 8;
while( 1 )
{
result = --v8;
v9 = *((_DWORD *)a3 + v8);
if( v9 )
break;
if( !v8 )
return result;
}
result = *v6 & 0xFFFFFFFFFFFE000Fui64;
*v6 = result | (16 * (v9 & 0x3FF | ((unsigned __int64)(v8 & 7) << 10)));
}
return result;
}Referenced by:
MiConvertPrivateToProto
MiFreeWsleList
MmUnmapViewInSystemCache