PopIdlePhaseWatchdogCallback

NTSTATUS __stdcall PopIdlePhaseWatchdogCallback(INT64 a1, INT64 a2, INT64 a3, INT64 a4, INT64 P3, INT64 P4){
  unsigned int v7; 
  void *v9; 
  NTSTATUS v10; 
  VOID *v12; 
  INT64 *v13; 
  UINT64 v14; 
  PVOID P[10]; 

  v7 = a2;
  memset(P, 0i64, sizeof(P));
  PopSnapSystemIdleContext(&P[2], &P[3]);
  PopPdcSnapDiagnosticContext();
  PopAcquireRwLockExclusive((_POP_RW_LOCK *)((char *)&PopIrpWorkerControlEvent + 1960));
  v9 = (void *)*(&PopIrpWorkerControlEvent + 247);
  *(&PopIrpWorkerControlEvent + 247) = 0i64;
  *(&PopIrpWorkerControlEvent + 496) = 0;
  P[0] = v9;
  PopReleaseRwLock((_POP_RW_LOCK *)((char *)&PopIrpWorkerControlEvent + 1960));
  memset(&P[4], 0, 40);
  PopPowerAggregatorSnapDiagnosticContext((CHAR **)&P[9]);
  LODWORD(v12) = 0;
  v10 = DbgkWerCaptureLiveKernelDump(
          L"IdlePhaseWatchdog",
          v7,
          a3,
          a4,
          P3,
          P4,
          0i64,
          0i64,
          v12,
          v13,
          0i64,
          0i64,
          0i64,
          0i64,
          0i64,
          v14,
          (UINT64)P[0],
          (UINT64)P[1],
          (UINT64)P[2],
          P[3],
          (DBGK_LIVEDUMP_FLAGS)P[4]);
  if( P[0] )
    ExFreePoolWithTag(P[0], 0x67696450u);
  if( P[2] )
    ExFreePoolWithTag(P[2], 0x67696450u);
  if( P[4] )
    ExFreePoolWithTag(P[4], 0x54445050u);
  if( P[5] )
    ExFreePoolWithTag(P[5], 0x54445050u);
  if( P[6] )
    ExFreePoolWithTag(P[6], 0x54445050u);
  if( P[7] )
    ExFreePoolWithTag(P[7], 0x54445050u);
  if( P[8] )
    ExFreePoolWithTag(P[8], 0x54445050u);
  if( P[9] )
    ExFreePoolWithTag(P[9], 0x67696450u);
  return v10;
}

Referenced by:

No references.