PnpInitializeTargetDeviceRemoveEvent

void __fastcall PnpInitializeTargetDeviceRemoveEvent(
        void *a1,
        size_t Size,
        PVOID Object,
        int a4,
        int a5,
        int a6,
        int a7,
        int a8,
        int a9,
        __int64 a10,
        __int64 a11,
        __int64 a12,
        __int64 a13){
  __int64 v16; 
  unsigned int v17; 
  GUID v18; 
  ObfReferenceObjectWithTag(Object, 0x56706E50u);
  if( Object )
    v16 = *(_QWORD *)(*((_QWORD *)Object + 39) + 40i64);
  else
    v16 = 0i64;
  v17 = *(unsigned __int16 *)(v16 + 40) >> 1;
  memset((INT64)a1, 0i64);
  *((_QWORD *)a1 + 3) = a10;
  *((_DWORD *)a1 + 4) = a8;
  *((_DWORD *)a1 + 5) = a9;
  *((_QWORD *)a1 + 6) = a12;
  *((_QWORD *)a1 + 7) = a13;
  *((_DWORD *)a1 + 37) = 2 * v17 + 82;
  *((_QWORD *)a1 + 17) = a11;
  *((_DWORD *)a1 + 16) = 1;
  *((_QWORD *)a1 + 19) = Object;
  *((_DWORD *)a1 + 32) = 1;
  if( a6 )
    v18 = GUID_DEVICE_EJECT;
  else
    v18 = GUID_DEVICE_QUERY_AND_REMOVE;
  *((GUID *)a1 + 7) = v18;
  if( a5 )
    *((_DWORD *)a1 + 36) |= 2u;
  if( a4 )
    *((_DWORD *)a1 + 36) |= 4u;
  if( a7 )
    *((_DWORD *)a1 + 36) |= 8u;
  if( v17 )
    memmove((UINT8 *)a1 + 160, *(UINT8 **)(v16 + 48), 2i64 * v17);
  *((_WORD *)a1 + v17 + 80) = 0;
}

Referenced by:

PnpSetTargetDeviceRemove
PnpShutdownDevices