MiProcessVmAccessedInfo

char __fastcall MiProcessVmAccessedInfo(
        __int64 a1,
        _DWORD *a2,
        __int64 (__fastcall *a3)(__int64, _QWORD *, char *, unsigned __int64, __int64),
        __int64 a4){
  __int64 v4; 
  _QWORD *v5; 
  _DWORD *v10; 
  unsigned __int64 v11; 
  char *v12; 
  INT64 v13; 
  char *v14; 

  v4 = (unsigned int)*a2;
  v5 = a2 + 2;
  v10 = &a2[2 * v4 + 2];
  while( v5 < (_QWORD *)v10 )
  {
    v11 = *v5 & 0xFFFFFFFFFFFFF000ui64;
    v12 = (char *)MmGetPteBase() + ((v11 >> 9) & 0x7FFFFFFFF8i64);
    LOBYTE(v4) = MI_READ_PTE_LOCK_FREE((INT64)v12);
    if( (v4 & 1) != 0 )
    {
      LOBYTE(v4) = MiGetWsleContents(v13, v11);
      v14 = 0i64;
      LOBYTE(v4) = (v4 & 0xF) - 8;
      if( (unsigned __int8)v4 > 2u )
        v14 = v12;
      if( v14 )
      {
        LODWORD(v4) = a3(a1, v5, v14, v11, a4);
        if( (_DWORD)v4 )
          break;
      }
    }
    ++v5;
  }
  *a2 = 0;
  return v4;
}

Referenced by:

MiAgeWorkingSetTail
MiResetAccessBitsTail
MiSimpleAgeWorkingSetTail
MiTrimWorkingSetTail
MiUpdateOldWorkingSetPagesTail