PnpCallAddDevice

__int64 __fastcall PnpCallAddDevice(
        __int64 a1,
        __int64 a2,
        __int64 (__fastcall *a3)(struct _DRIVER_OBJECT *, _DEVICE_OBJECT *),
        INT64 a4){
  int v4; 
  int v8; 
  int v9; 
  CHAR *v10; 
  EVENT_DESCRIPTOR *v11; 
  MCGEN_TRACE_CONTEXT *v12; 
  unsigned int v13; 
  GUID *v14; 
  INT64 v16[4]; 
  struct _GROUP_AFFINITY PreviousAffinity; 
  v16[0] = 0i64;
  v4 = a4;
  PreviousAffinity = 0i64;
  if( (byte_140C130BB & 8) != 0 )
    McTemplateK0qhzr1z_EtwWriteTransfer(
      *(_WORD *)(a2 + 56) >> 1,
      a2,
      (INT64)a3,
      a4,
      *(_WORD *)(a2 + 56) >> 1,
      *(_QWORD *)(a2 + 64),
      *(const WCHAR **)(a1 + 48));
  v8 = PnpSetDeviceAffinityThread(*(_DEVICE_OBJECT **)(a1 + 32), &PreviousAffinity);
  v16[1] = a1;
  v16[2] = a2;
  v9 = v8;
  v16[3] = (INT64)KeGetCurrentThread();
  v10 = PnpEnableWatchdog(4i64, (INT64)v16);
  v13 = PpvUtilCallAddDevice(*(_DEVICE_OBJECT **)(a1 + 32), (struct _DRIVER_OBJECT *)a2, a3, v4 + 1);
  if( v10 )
    PnpDisableWatchdog((INT64)v10);
  if( v9 )
    KeRevertToUserGroupAffinityThread(&PreviousAffinity);
  if( (byte_140C130BB & 8) != 0 )
    McTemplateK0q_EtwWriteTransfer(v12, v11, v14, v13);
  return v13;
}

Referenced by:

PipCallDriverAddDevice