PopDripsWatchdogStartWatchdog
VOID __stdcall PopDripsWatchdogStartWatchdog(){
_ETHREAD *CurrentThread;
UINT64 *v1;
signed __int32 v2;
signed __int32 v3;
__int64 v4;
__int64 v5;
INT64 v6[2];
__int128 v7;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
*(_OWORD *)v6 = 0i64;
v7 = 0i64;
--*((_WORD *)CurrentThread + 242);
ExAcquireResourceExclusiveLite(&PopDripsWatchdogContext, 1u);
if( (dword_140C21228 & 2) != 0 )
{
_m_prefetchw(&PopDirectedDripsUmTestDeviceCount);
v2 = PopDirectedDripsUmTestDeviceCount;
do
{
v3 = v2;
v2 = _InterlockedCompareExchange(&PopDirectedDripsUmTestDeviceCount, v2, v2);
}
while( v3 != v2 );
if( !v2 )
{
v4 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
PopCalculateIdleInformation((INT64)v6, v1);
v5 = PopWdiCurrentScenarioInstanceId;
if( (dword_140C212E4 & 1) != 0 )
{
dword_140C212F4 = 0;
qword_140C212E8 = 0i64;
xmmword_140C21318 = *(_OWORD *)v6;
dword_140C212F8 = PopDripsWatchdogDebounceTickInterval;
qword_140C21300 = v4;
qword_140C21308 = v4;
xmmword_140C21328 = v7;
PopDripsWatchdogScheduleNextTimer((__int64)&qword_140C21230);
}
if( (dword_140C213EC & 1) != 0 )
{
memset((INT64)&qword_140C213F0, 0i64);
dword_140C21414 = dword_140C23564;
xmmword_140C21420 = *(_OWORD *)v6;
qword_140C21418 = qword_140C4FCA8;
xmmword_140C21430 = v7;
PopDripsWatchdogScheduleNextTimer((__int64)&qword_140C21338);
}
dword_140C21228 |= 4u;
qword_140C21448 = v5;
}
}
ExReleaseResourceLite(&PopDripsWatchdogContext);
KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
}Referenced by:
PopPdcIdleResiliencyCallback