IopCheckIfMergeRequired

UINT8 __stdcall IopCheckIfMergeRequired(_RELATION_LIST *PendingList, _RELATION_LIST *NewList){
  char v3; 
  __int64 v4; 
  char v5; 
  _LIST_ENTRY *ProviderList; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY **v8; 
  char v9; 
  _DEVICE_OBJECT *DeviceObject; 
  _DEVICE_OBJECT *Provider; 
  UINT64 DependencyTypes; 
  _RELATION_LIST_MARKER Marker; 

  DeviceObject = 0i64;
  Provider = 0i64;
  Marker.Mode = ENUMERATE_ANY_ORDER;
  Marker.Counter = 0;
LABEL_2:
  while( IopEnumerateRelations(PendingList, &Marker, &DeviceObject, 0i64, 0i64) )
  {
    PipIsDeviceInDeviceObjectList();
    if( v3 )
      return 1;
    PipIsDeviceInDeviceObjectList();
    if( v5 )
      return 1;
    ProviderList = PiGetProviderList(*(_DEVICE_OBJECT **)(v4 + 32));
    Flink = ProviderList->Flink;
    if( ProviderList->Flink != ProviderList )
    {
      while( 1 )
      {
        PiEnumerateProviderListEntry(Flink, &Provider, &DependencyTypes);
        Flink = *v8;
        if( Provider )
        {
          PipIsDeviceInDeviceObjectList();
          if( v9 )
            return 1;
        }
        if( Flink == ProviderList )
          goto LABEL_2;
      }
    }
  }
  return 0;
}

Referenced by:

PnpQueuePendingSurpriseRemoval