MiCheckForConflictingVad

_MMVAD *__stdcall MiCheckForConflictingVad(_EPROCESS *CurrentProcess, VOID *StartingAddress, VOID *EndingAddress){
  _MMVAD *Root; 
  unsigned __int64 v4; 
  unsigned __int64 v5; 

  Root = (_MMVAD *)CurrentProcess->VadRoot.Root;
  v4 = (unsigned __int64)StartingAddress >> 12;
  v5 = (unsigned __int64)EndingAddress >> 12;
  while( 1 )
  {
    while( 1 )
    {
      if( !Root )
        return 0i64;
      if( v5 >= (Root->Core.StartingVpn | ((unsigned __int64)Root->Core.StartingVpnHigh << 32)) )
        break;
      Root = (_MMVAD *)Root->Core.NextVad;
    }
    if( v4 <= (Root->Core.EndingVpn | ((unsigned __int64)Root->Core.EndingVpnHigh << 32)) )
      break;
    Root = (_MMVAD *)Root->Core.ExtraCreateInfo;
  }
  return Root;
}

Referenced by:

MiCheckForConflictingVadExistence
MiLocateLowestConflictingVad
MmGetImageInformation