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