IopEliminateBogusConflict

UINT8 __stdcall IopEliminateBogusConflict(_DEVICE_OBJECT *PhysicalDeviceObject, _DEVICE_OBJECT *ConflictDeviceObject){
  KIRQL v4; 
  _DEVICE_OBJECT *v5; 
  __int64 v6; 
  __int64 v7; 
  const UNICODE_STRING *v8; 
  const UNICODE_STRING *v9; 
  if( !PhysicalDeviceObject || !ConflictDeviceObject )
    return 0;
  v4 = KeAcquireQueuedSpinLock(0xAui64);
  v5 = PhysicalDeviceObject;
  do
  {
    if( v5 == ConflictDeviceObject )
    {
      KeReleaseQueuedSpinLock(0xAui64, v4);
      return 1;
    }
    v5 = (_DEVICE_OBJECT *)*((_QWORD *)v5 + 3);
  }
  while( v5 );
  KeReleaseQueuedSpinLock(0xAui64, v4);
  v6 = *(_QWORD *)(*((_QWORD *)PhysicalDeviceObject + 39) + 40i64);
  if( (*(_DWORD *)(v6 + 396) & 0x1000) != 0 && (*((_DWORD *)ConflictDeviceObject + 12) & 0x1000) == 0 )
  {
    v7 = *((_QWORD *)ConflictDeviceObject + 1);
    if( v7 )
    {
      v8 = (const UNICODE_STRING *)(v6 + 56);
      if( v8->Length )
      {
        v9 = (const UNICODE_STRING *)(*(_QWORD *)(v7 + 48) + 24i64);
        if( v8->Length == v9->Length && !(unsigned int)RtlCompareUnicodeString(v8, v9, 1u) )
          return 1;
      }
    }
  }
  return 0;
}

Referenced by:

IopQueryConflictFillConflicts