MiGetAweNode

_MMPTE *__stdcall MiGetAweNode(UINT64 a1){
  _MMPTE *NextPteToTrim; 
  unsigned __int64 v2; 
  union {unsigned __int64 Long;volatile unsigned __int64 VolatileLong;_MMPTE_HARDWARE Hard;_MMPTE_PROTOTYPE Proto;_MMPTE_SOFTWARE Soft;_MMPTE_TIMESTAMP TimeStamp;_MMPTE_TRANSITION Trans;_MMPTE_SUBSECTION Subsect;_MMPTE_LIST List;} v3; 

  NextPteToTrim = KeGetCurrentThread()->ApcState.Process->Vm.Instance.VmWorkingSetList[10].NextPteToTrim;
  if( !NextPteToTrim )
    return 0i64;
  v2 = a1 >> 12;
  do
  {
    v3.Long = (unsigned __int64)NextPteToTrim[3].u;
    if( v2 > (*(unsigned int *)(v3.Long + 28) | ((unsigned __int64)*(unsigned __int8 *)(v3.Long + 33) << 32)) )
    {
      NextPteToTrim = (_MMPTE *)NextPteToTrim[1].u.Long;
    }
    else
    {
      if( v2 >= (*(unsigned int *)(v3.Long + 24) | ((unsigned __int64)*(unsigned __int8 *)(v3.Long + 32) << 32)) )
        break;
      NextPteToTrim = (_MMPTE *)NextPteToTrim->u.Long;
    }
  }
  while( NextPteToTrim );
  if( NextPteToTrim )
    return NextPteToTrim;
  else
    return 0i64;
}

Referenced by:

MiGetAwePageSizeFromVa
MiProtectAweRegion
MiReferenceIncomingPhysicalPages
MiWriteAwePtes
NtMapUserPhysicalPages
NtMapUserPhysicalPagesScatter