PopDripsWatchdogStartWatchdog
VOID __stdcall PopDripsWatchdogStartWatchdog(){
INT64 v0;
_ETHREAD *CurrentThread;
UINT64 *v2;
signed __int32 v3;
signed __int32 v4;
__int64 v5;
__int64 v6;
__int128 v7;
__int128 v8;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v7 = 0i64;
v8 = 0i64;
--CurrentThread->Tcb.KernelApcDisable;
ExAcquireResourceExclusiveLite((UINT64)&PopIrpWorkerControlEvent + 2016, 1, v0);
if( (*(&PopIrpWorkerControlEvent + 2120) & 2) != 0 )
{
_m_prefetchw(&PopDirectedDripsUmTestDeviceCount);
v3 = PopDirectedDripsUmTestDeviceCount;
do
{
v4 = v3;
v3 = _InterlockedCompareExchange(&PopDirectedDripsUmTestDeviceCount, v3, v3);
}
while( v4 != v3 );
if( !v3 )
{
v5 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
PopCalculateIdleInformation((__int64)&v7, v2);
v6 = PopWdiCurrentScenarioInstanceId;
if( (*(&PopIrpWorkerControlEvent + 2308) & 1) != 0 )
{
*(&PopIrpWorkerControlEvent + 581) = 0;
*(&PopIrpWorkerControlEvent + 289) = 0i64;
*(_OWORD *)((char *)&PopIrpWorkerControlEvent + 2360) = v7;
*(&PopIrpWorkerControlEvent + 582) = *(&PopIrpWorkerControlEvent + 668);
*(&PopIrpWorkerControlEvent + 292) = v5;
*(&PopIrpWorkerControlEvent + 293) = v5;
*(_OWORD *)((char *)&PopIrpWorkerControlEvent + 2376) = v8;
PopDripsWatchdogScheduleNextTimer((_KTIMER2 *)((char *)&PopIrpWorkerControlEvent + 2128));
}
if( (*(&PopIrpWorkerControlEvent + 2572) & 1) != 0 )
{
memset((char *)&PopIrpWorkerControlEvent + 2576, 0i64, 0x50u);
*(&PopIrpWorkerControlEvent + 653) = HIDWORD(qword_140C23560);
*(&PopIrpWorkerControlEvent + 164) = v7;
*(&PopIrpWorkerControlEvent + 327) = qword_140C4FCA8;
*(&PopIrpWorkerControlEvent + 165) = v8;
PopDripsWatchdogScheduleNextTimer((_KTIMER2 *)((char *)&PopIrpWorkerControlEvent + 2392));
}
*(&PopIrpWorkerControlEvent + 530) |= 4u;
*(&PopIrpWorkerControlEvent + 333) = v6;
}
}
ExReleaseResourceLite((PERESOURCE)((char *)&PopIrpWorkerControlEvent + 2016));
KeLeaveCriticalRegionThread(KeGetCurrentThread());
}Referenced by:
PopPdcIdleResiliencyCallback