MiCheckForConflictingVad

INT64 **__fastcall MiCheckForConflictingVad(INT64 a1, UINT64 a2, UINT64 a3){
  INT64 *v3; 
  unsigned __int64 v4; 
  unsigned __int64 v5; 
  v3 = *(INT64 **)(a1 + 2008);
  v4 = a2 >> 12;
  v5 = a3 >> 12;
  while( 1 )
  {
    while( 1 )
    {
      if( !v3 )
        return 0i64;
      if( v5 >= (*((unsigned int *)v3 + 6) | ((unsigned __int64)*((unsigned __int8 *)v3 + 32) << 32)) )
        break;
      v3 = (INT64 *)*v3;
    }
    if( v4 <= (*((unsigned int *)v3 + 7) | ((unsigned __int64)*((unsigned __int8 *)v3 + 33) << 32)) )
      break;
    v3 = (INT64 *)v3[1];
  }
  return(INT64 **)v3;
}

Referenced by:

MiCheckForConflictingVadExistence
MiLocateLowestConflictingVad
MmGetImageInformation