MiExceptionForMappedVa

UINT64 __stdcall MiExceptionForMappedVa(PVOID VirtualAddress){
  unsigned int v1; 
  _MMSESSION *v3; 
  __int64 v4; 
  INT64 i; 
  INT64 v6; 
  UINT8 v7; 
  _RTL_BALANCED_NODE *Root; 
  unsigned __int64 v9; 
  _MMSESSION *v10; 
  unsigned int Right; 
  v1 = 0;
  v3 = &Session;
  v4 = *((_QWORD *)KeGetCurrentThread() + 23);
  for( i = (INT64)MiGetAnyMultiplexedVm(1i64); ; i = MiGetSessionVm() )
  {
    v6 = i;
    v7 = MiLockWorkingSetShared(i);
    Root = v3->ViewRoot.Root;
    while( Root )
    {
      v9 = Root[3].ParentValue & 0xFFFFFFFFFFFFF000ui64;
      if( VirtualAddress >= (char *)Root[1].Children[1] + v9 )
      {
        Root = Root->Children[1];
      }
      else
      {
        if( (unsigned __int64)VirtualAddress >= v9 )
        {
          Right = (unsigned int)Root[2].Right;
          MiUnlockWorkingSetShared(v6, v7);
          return(Right >> 1) & 1;
        }
        Root = Root->Children[0];
      }
    }
    MiUnlockWorkingSetShared(v6, v7);
    if( v3 != &Session )
      break;
    v10 = *(_MMSESSION **)(v4 + 1368);
    if( !v10 || (*(_DWORD *)(v4 + 2172) & 0x1000) != 0 )
      break;
    v3 = v10 + 6;
  }
  return v1;
}

Referenced by:

MiWaitForInPageComplete