PnpRecordBlackboxDelayedRemoveWorkerInformation

VOID __fastcall PnpRecordBlackboxDelayedRemoveWorkerInformation(INT64 a1){
  _DWORD *v1; 
  __int64 v2; 
  __int64 v4; 
  _DWORD *PoolWithTag; 
  UINT64 v6; 
  __int64 InputBuffer[2]; 
  __int64 v8; 
  int v9; 
  int v10; 
  v8 = 0i64;
  v10 = 0;
  v1 = 0i64;
  v2 = 0i64;
  v4 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
  if( a1 )
  {
    v2 = 64i64;
    PoolWithTag = ExAllocatePoolWithTag(NonPagedPoolNx, 0x40ui64, 0x4B706E50ui64);
    v1 = PoolWithTag;
    if( PoolWithTag )
    {
      memset((INT64)PoolWithTag, 0i64);
      *v1 = 1;
      v1[1] = 64;
      v1[3] = (v4 - **(_QWORD **)(a1 + 24)) / 0x2710ui64;
      *((_QWORD *)v1 + 3) = *(_QWORD *)(a1 + 8);
      *((_QWORD *)v1 + 4) = *(_QWORD *)(a1 + 16);
      *((_QWORD *)v1 + 2) = *(_QWORD *)a1;
      *((_QWORD *)v1 + 5) = PnpDeviceEventThread;
      *((_QWORD *)v1 + 6) = *(_QWORD *)PnpDeviceActionThread;
      *((_QWORD *)v1 + 7) = PnpDelayedRemoveWorkerThread;
    }
  }
  v8 = 0i64;
  v10 = 0;
  LODWORD(v6) = 0;
  v9 = 11;
  InputBuffer[0] = (__int64)v1;
  InputBuffer[1] = v2;
  NtPowerInformation(TraceApplicationPowerMessage|0x40, InputBuffer, 0x20ui64, 0i64, v6);
  if( v1 )
    ExFreePoolWithTag(v1, 0x4B706E50u);
}

Referenced by:

PnpRecordBlackbox