PopDirectedDripsResumeDevices

NTSTATUS __stdcall PopDirectedDripsResumeDevices(VOID *a1){
  char v1; 
  char v2; 
  __int64 v4; 
  signed __int32 v5; 
  signed __int32 v6; 
  __int16 v7; 
  signed __int32 v8; 
  signed __int32 v9; 
  NTSTATUS result; 

  v2 = v1;
  v4 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
  _m_prefetchw(a1);
  v5 = *(_DWORD *)a1;
  do
  {
    v6 = v5;
    v5 = _InterlockedCompareExchange((volatile signed __int32 *)a1, v5, v5);
  }
  while( v6 != v5 );
  v7 = v5;
  if( (v5 & 0x10) != 0 )
  {
    *((_BYTE *)a1 + 85) = 1;
    PoBroadcastSystemState((PO_BROADCAST_SYSTEM_STATE *)((char *)a1 + 60));
    _InterlockedOr((volatile signed __int32 *)a1, 0x20u);
  }
  if( (v7 & 0x80u) != 0 )
    PopDirectedDripsDestroyBroadcast();
  if( !v2 && (v7 & 0x200) == 0 )
  {
    _m_prefetchw(&PopDirectedDripsUmTestDeviceCount);
    v8 = PopDirectedDripsUmTestDeviceCount;
    do
    {
      v9 = v8;
      v8 = _InterlockedCompareExchange(&PopDirectedDripsUmTestDeviceCount, v8, v8);
    }
    while( v9 != v8 );
    if( !v8 )
      PopFxClearDirectedDripsCandidateDeviceList();
  }
  _InterlockedAnd((volatile signed __int32 *)a1, 0xFFFFFF6F);
  if( !v2 )
    PopDirectedDripsReleaseTransitionLock(a1);
  PopDirectedDripsDiagTraceNotifyDevices(
    0,
    0i64,
    (NPTEXTMETRIC *)((*(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - v4) / 0x989680ui64));
  return result;
}

Referenced by:

PopDirectedDripsHandleResiliencyNotification
PopDirectedDripsWorkerRoutine