PnpSetPlugPlayEvent

void __fastcall PnpSetPlugPlayEvent(__int128 *a1, _QWORD *a2){
  _QWORD *v2; 
  __int64 v4; 
  int v5; 
  VOID **DeviceEventEntry; 
  __int64 v7; 
  __int128 v8; 
  VOID *v9; 
  __int64 v10; 
  __int64 v11; 
  __int64 v12; 

  v2 = a2;
  if( !*(&PnpReplaceEvent + 1665) )
  {
    v4 = *(_QWORD *)(a2[39] + 40i64);
    if( v4 )
    {
      v5 = *(unsigned __int16 *)(v4 + 40) + 80;
      DeviceEventEntry = PnpCreateDeviceEventEntry((unsigned int)*(unsigned __int16 *)(v4 + 40) + 192);
      v7 = (__int64)DeviceEventEntry;
      if( DeviceEventEntry )
      {
        v8 = *a1;
        *((_DWORD *)DeviceEventEntry + 37) = v5;
        v9 = DeviceEventEntry + 20;
        *((_OWORD *)DeviceEventEntry + 7) = v8;
        v10 = *(_QWORD *)a1 - *(_QWORD *)&GUID_DEVICE_ENUMERATED.Data1;
        if( *(_QWORD *)a1 == *(_QWORD *)&GUID_DEVICE_ENUMERATED.Data1 )
          v10 = *((_QWORD *)a1 + 1) - *(_QWORD *)GUID_DEVICE_ENUMERATED.Data4;
        if( v10 )
          *(_DWORD *)(v7 + 128) = 1;
        else
          *(_DWORD *)(v7 + 128) = 4;
        memmove(v9, *(const VOID **)(v4 + 48), *(unsigned __int16 *)(v4 + 40));
        *(_WORD *)(v7 + 2 * ((unsigned __int64)*(unsigned __int16 *)(v4 + 40) >> 1) + 160) = 0;
        v11 = *(_QWORD *)a1 - *(_QWORD *)&GUID_DEVICE_ENUMERATED.Data1;
        if( *(_QWORD *)a1 == *(_QWORD *)&GUID_DEVICE_ENUMERATED.Data1 )
          v11 = *((_QWORD *)a1 + 1) - *(_QWORD *)GUID_DEVICE_ENUMERATED.Data4;
        if( !v11 )
          goto LABEL_11;
        v12 = *(_QWORD *)a1 - *(_QWORD *)&GUID_DEVICE_ARRIVAL.Data1;
        if( *(_QWORD *)a1 == *(_QWORD *)&GUID_DEVICE_ARRIVAL.Data1 )
          v12 = *((_QWORD *)a1 + 1) - *(_QWORD *)GUID_DEVICE_ARRIVAL.Data4;
        if( v12 )
          ObfReferenceObjectWithTag(v2, 0x56706E50ui64);
        else
LABEL_11:
          v2 = 0i64;
        *(_QWORD *)(v7 + 152) = v2;
        PnpInsertEventInQueue(v7);
      }
    }
  }
}

Referenced by:

PiInitializeDevice
PiProcessNewDeviceNode
PipProcessStartPhase3