PopDirectedDripsMarkDfxDevice

UINT64 __stdcall PopDirectedDripsMarkDfxDevice(INT64 a1, INT64 a2, INT64 a3, INT64 a4){
  UINT64 result; 
  __int64 v9; 
  bool v10; 
  __int16 v11; 
  _QWORD *i; 
  _QWORD **v13; 
  _QWORD *j; 
  __int64 v15; 

  *(_DWORD *)(a3 + 32) |= 0x10000u;
  PopDirectedDripsVisitDevice(a2, a3, a4, 1i64);
  result = *(unsigned int *)(a3 + 32);
  v9 = *(_QWORD *)(a3 - 648);
  v10 = 0;
  if( (result & 4) == 0 )
  {
    if( !v9
      || (v11 = _InterlockedCompareExchange((volatile signed __int32 *)(v9 + 824), 0, 0),
          result = (unsigned int)_InterlockedCompareExchange((volatile signed __int32 *)(v9 + 824), 0, 0),
          v10 = (result & 0x400) != 0,
          (v11 & 0x200) == 0) )
    {
      for( i = *(_QWORD **)(a3 - 720); i; i = (_QWORD *)*i )
      {
        PopDirectedDripsVisitDevice(a2, (INT64)(i + 91), a4, 2i64);
        result = (UINT64)PopDirectedDripsInsertQueueDevice(a1, i + 91);
      }
    }
    if( !v10 )
    {
      v13 = (_QWORD **)(a3 - 552);
      for( j = *v13; j != v13; j = (_QWORD *)*j )
      {
        v15 = *(j - 1);
        PopDirectedDripsVisitDevice(a2, v15 + 568, a4, 3i64);
        result = (UINT64)PopDirectedDripsInsertQueueDevice(a1, (_QWORD *)(v15 + 568));
      }
    }
  }
  return result;
}

Referenced by:

PopDirectedDripsBuildBroadcastTreeFull