PopDripsWatchdogCallbackWorker

VOID __stdcall PopDripsWatchdogCallbackWorker(INT64 a1){
  __int64 v1; 
  INT64 v2; 
  char v4; 
  __int64 v5; 
  UINT64 *v6; 
  int v7; 
  __int128 v8; 
  int v9; 
  __int128 v10; 
  unsigned int v11; 
  int v12; 
  int v13; 
  UINT64 v14; 
  unsigned __int64 v15; 
  __int64 v16; 
  INT64 v17; 
  __int128 v18; 
  __int128 v19; 
  char v20; 
  unsigned int v21; 
  INT64 v22; 

  v18 = 0i64;
  v19 = 0i64;
  PopDripsWatchdogAcquireContextLock((_ERESOURCE *)a1, v1, v2);
  if( (*(_DWORD *)(a1 + 104) & 4) != 0 && (*(_DWORD *)(a1 + 292) & 2) != 0 )
  {
    v4 = 1;
    ++*(_DWORD *)(a1 + 640);
    ++*(_DWORD *)(a1 + 308);
    PopDripsWatchdogScheduleNextTimer((_KTIMER2 *)(a1 + 112));
    v5 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
    PopCalculateIdleInformation((__int64)&v18, v6);
    v7 = DWORD2(v19) - *(_DWORD *)(a1 + 368);
    if( DWORD2(v19) != *(_DWORD *)(a1 + 368) )
    {
      v8 = v18;
      v9 = *(&PopIrpWorkerControlEvent + 668);
      v10 = v19;
      *(_DWORD *)(a1 + 308) = 0;
      *(_OWORD *)(a1 + 344) = v8;
      *(_QWORD *)(a1 + 328) = v5;
      *(_OWORD *)(a1 + 360) = v10;
      *(_DWORD *)(a1 + 312) = v9;
      *(_QWORD *)(a1 + 320) = v5;
    }
    v11 = *(_DWORD *)(a1 + 312);
    if( v11 )
    {
      if( *(_DWORD *)(a1 + 308) < v11 )
      {
        PopDirectedDripsClearDisengageReason(0);
      }
      else
      {
        PopDirectedDripsSetDisengageReason(0);
        *(_DWORD *)(a1 + 312) = *(&PopIrpWorkerControlEvent + 668) + *(_DWORD *)(a1 + 308);
      }
    }
    v12 = *(_DWORD *)(a1 + 292);
    if( (v12 & 4) == 0 )
    {
      v13 = *(_DWORD *)(a1 + 108);
      v14 = v5 - *(_QWORD *)(a1 + 320);
      v15 = v5 - *(_QWORD *)(a1 + 328);
      v21 = *(_DWORD *)(a1 + 304);
      v22 = *(_QWORD *)(a1 + 648);
      v20 = *(_BYTE *)(a1 + 336);
      *(_DWORD *)(a1 + 292) = v12 | 4;
      PopDripsWatchdogReleaseContextLock((PFN_WDFIOQUEUEASSIGNFORWARDPROGRESSPOLICY *)a1);
      PopAcquirePolicyLock();
      if( v7 || qword_140C4FC98 )
        v4 = 0;
      PopReleasePolicyLock();
      if( v4 )
        PopDripsWatchdogCallbackHandler(v13, v21, v14, v15, v22, v20);
      PopDripsWatchdogAcquireContextLock((_ERESOURCE *)a1, v16, v17);
      *(_QWORD *)(a1 + 320) = v5;
      *(_DWORD *)(a1 + 292) &= ~4u;
    }
  }
  PopDripsWatchdogReleaseContextLock((PFN_WDFIOQUEUEASSIGNFORWARDPROGRESSPOLICY *)a1);
}

Referenced by:

No references.