PopDirectedDripsBuildPs4BroadcastTree

NTSTATUS __stdcall PopDirectedDripsBuildPs4BroadcastTree(INT64 a1, INT64 a2, INT64 a3){
  INT64 v5; 
  __int64 v6; 
  INT64 v7; 
  _QWORD *v8; 
  _QWORD *v9; 
  _QWORD *v10; 
  NTSTATUS v11; 
  INT64 v13[2]; 

  v13[1] = (INT64)v13;
  v13[0] = (INT64)v13;
  PopDirectedDripsInsertQueueDevice((__int64)v13, (_QWORD *)(a1 + 728));
  while( 1 )
  {
    v5 = v13[0];
    if( (INT64 *)v13[0] == v13 )
      return 0;
    if( *(INT64 **)(v13[0] + 8) != v13 || (v6 = *(_QWORD *)v13[0], *(_QWORD *)(*(_QWORD *)v13[0] + 8i64) != v13[0]) )
      __fastfail(3u);
    v13[0] = *(_QWORD *)v13[0];
    *(_QWORD *)(v6 + 8) = v13;
    *(_QWORD *)(v5 + 8) = v5;
    *(_QWORD *)v5 = v5;
    if( (*(_DWORD *)(v5 + 32) & 0x20000) == 0 )
    {
      PopDirectedDripsVisitDevice(a2, v5, a3, 4i64);
      v7 = v5 - 728;
      if( v5 == 728 )
        goto LABEL_22;
      do
      {
        if( (*(_DWORD *)(v7 + 760) & 1) != 0 )
          break;
        v7 = *(_QWORD *)(v7 + 16);
      }
      while( v7 );
      if( !v7 )
      {
LABEL_22:
        *(_DWORD *)(v5 + 32) |= 0x40000u;
        PopDirectedDripsDiagTraceProblemDevice(v5 - 728, a3, 3i64);
LABEL_23:
        PopDirectedDripsFlushDeviceQueue();
        return v11;
      }
      if( PopDirectedDripsVisitPs4Device(v7, (INT64)v13, a2, a3) < 0 )
        goto LABEL_23;
      v8 = *(_QWORD **)(v7 + 8);
      v9 = (_QWORD *)v7;
      while( v8 )
      {
        v9 = v8;
        v8 = (_QWORD *)v8[1];
      }
      while( v9 != (_QWORD *)v7 )
      {
        if( PopDirectedDripsVisitPs4Device((INT64)v9, (INT64)v13, a2, a3) < 0 )
          goto LABEL_23;
        v10 = (_QWORD *)*v9;
        if( *v9 )
        {
          do
          {
            v9 = v10;
            v10 = (_QWORD *)v10[1];
          }
          while( v10 );
        }
        else
        {
          v9 = (_QWORD *)v9[2];
        }
      }
    }
  }
}

Referenced by:

PopDirectedDripsBuildBroadcastTreeFull