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