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.