IovpExamineDevObjForwarding

__int64 __fastcall IovpExamineDevObjForwarding(__int64 a1, __int64 a2){
  void *UpperDeviceObjectWithTag; 
  void *v5; 
  int v6; 
  v6 = 0;
  if( !a2 )
  {
    UpperDeviceObjectWithTag = IovUtilGetUpperDeviceObjectWithTag(a1);
    if( !UpperDeviceObjectWithTag )
      return 1i64;
    ObfDereferenceObjectWithTag(UpperDeviceObjectWithTag, 0x49667256ui64);
    return 4i64;
  }
  IovUtilRelateDeviceObjects(a1, a2, &v6);
  switch( v6 )
  {
    case 0:
      return 2i64;
    case 1:
      return 3i64;
    case 2:
      return 2i64;
    case 3:
    case 4:
      return 3i64;
  }
  if( v6 != 5 )
    return 2i64;
  v5 = IovUtilGetUpperDeviceObjectWithTag(a1);
  if( !v5 )
    return 5i64;
  ObfDereferenceObjectWithTag(v5, 0x49667256ui64);
  return 6i64;
}

Referenced by:

IovpCallDriver1