PnpSetPlugPlayEvent

VOID __stdcall PnpSetPlugPlayEvent(GUID *EventGuid, DEVICE_OBJECT *DeviceObject){
  DEVICE_OBJECT *v2; 
  __int64 v4; 
  int v5; 
  _DWORD *DeviceEventEntry; 
  __int64 v7; 
  GUID v8; 
  UINT8 *v9; 
  __int64 v10; 
  __int64 v11; 
  __int64 v12; 
  v2 = DeviceObject;
  if( !PnpShutdownEvent.Header.SignalState )
  {
    v4 = *(_QWORD *)(*((_QWORD *)DeviceObject + 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 = *EventGuid;
        DeviceEventEntry[37] = v5;
        v9 = (UINT8 *)(DeviceEventEntry + 40);
        *((GUID *)DeviceEventEntry + 7) = v8;
        v10 = *(_QWORD *)&EventGuid->Data1 - *(_QWORD *)&GUID_DEVICE_ENUMERATED.Data1;
        if( *(_QWORD *)&EventGuid->Data1 == *(_QWORD *)&GUID_DEVICE_ENUMERATED.Data1 )
          v10 = *(_QWORD *)EventGuid->Data4 - *(_QWORD *)GUID_DEVICE_ENUMERATED.Data4;
        if( v10 )
          *(_DWORD *)(v7 + 128) = 1;
        else
          *(_DWORD *)(v7 + 128) = 4;
        memmove(v9, *(UINT8 **)(v4 + 48), *(unsigned __int16 *)(v4 + 40));
        *(_WORD *)(v7 + 2 * ((unsigned __int64)*(unsigned __int16 *)(v4 + 40) >> 1) + 160) = 0;
        v11 = *(_QWORD *)&EventGuid->Data1 - *(_QWORD *)&GUID_DEVICE_ENUMERATED.Data1;
        if( *(_QWORD *)&EventGuid->Data1 == *(_QWORD *)&GUID_DEVICE_ENUMERATED.Data1 )
          v11 = *(_QWORD *)EventGuid->Data4 - *(_QWORD *)GUID_DEVICE_ENUMERATED.Data4;
        if( !v11 )
          goto LABEL_11;
        v12 = *(_QWORD *)&EventGuid->Data1 - *(_QWORD *)&GUID_DEVICE_ARRIVAL.Data1;
        if( *(_QWORD *)&EventGuid->Data1 == *(_QWORD *)&GUID_DEVICE_ARRIVAL.Data1 )
          v12 = *(_QWORD *)EventGuid->Data4 - *(_QWORD *)GUID_DEVICE_ARRIVAL.Data4;
        if( v12 )
          ObfReferenceObjectWithTag(v2, 0x56706E50u);
        else
LABEL_11:
          v2 = 0i64;
        *(_QWORD *)(v7 + 152) = v2;
        PnpInsertEventInQueue(v7);
      }
    }
  }
}

Referenced by:

PiInitializeDevice
PiProcessNewDeviceNode
PipProcessStartPhase3