MiSimpleAgePte
NTSTATUS __stdcall MiSimpleAgePte(INT64 a1, UINT64 a2, INT64 a3){
_MMSUPPORT_INSTANCE *v3;
int v5;
UINT64 v7;
UINT64 v8;
_MMPFN *v9;
INT64 v10;
_QWORD *v11;
unsigned __int64 v12;
_BOOL4 v13;
UINT64 *v14;
INT64 a6;
UINT64 a5;
v3 = *(_MMSUPPORT_INSTANCE **)(a1 + 24);
v5 = a3;
LODWORD(v7) = MI_READ_PTE_LOCK_FREE(a2);
a5 = v7;
v8 = v7;
MiPteInShadowRange((UINT64)&a5);
v9 = &MmGetPfnDb()[(v8 >> 12) & 0xFFFFFFFFFi64];
if( !(unsigned int)MiWalkVaCheckCommon(v3, (_MMPTE *)a2, v9, v5 == 0, (__int64)&a5) )
return 0;
v11 = *(_QWORD **)(a1 + 168);
v12 = (__int64)((a2 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16;
v13 = MiGetVaAge(v10, v12) == 0;
if( (a5 & 0x20) != 0 )
{
v14 = (UINT64 *)v11[31];
if( v14 && v12 <= 0x7FFFFFFEFFFFi64 )
{
if( MiInsertVmAccessedEntry(v14, v12) )
return MiSimpleAgeWorkingSetTail(a1);
}
else
{
LODWORD(a6) = 3;
MiAgePteWorker(v3, (_MMPTE *)a2, (VOID *)v12, v9, (INT64)v11, a6);
}
}
if( v13 && (++v11[5], v11[5] >= v11[6]) )
return 3;
else
return 0;
}Referenced by:
No references.