PnpDisableWatchdog

VOID __fastcall PnpDisableWatchdog(INT64 a1){
  __int64 v1; 
  INT64 v3; 
  v1 = *(_QWORD *)(a1 + 8);
  ExDeleteTimer(*(_QWORD *)(v1 + 56), 1, 1, 0i64);
  *(_QWORD *)(v1 + 56) = 0i64;
  if( *(int *)(v1 + 96) > 0 )
    KeWaitForSingleObject((PVOID)(v1 + 104), Executive, 0, 0, 0i64);
  ExFreePoolWithTag((PVOID)v1, 0x54645750u);
  v3 = *(unsigned int *)(a1 + 16);
  *(_QWORD *)(a1 + 8) = 0i64;
  PnpRecordBlackbox(0i64, v3);
  if( *(_BYTE *)(a1 + 32) )
    PnpWatchdogEtwWrite(a1, 0);
  PnpFreeWatchdog((VOID *)a1);
}

Referenced by:

PnpCallAddDevice
PnpDelayedRemoveWorker
PnpDeviceCompletionRequestDestroyWorkItem
PnpDeviceEventWorker
PnpProcessCompletedEject