PnpFindRebalanceCandidates
__int64 __fastcall PnpFindRebalanceCandidates(unsigned int a1, __int64 a2, __int64 a3, _DWORD *a4, char a5, __int64 a6){
_DEVICE_NODE *v8;
_DWORD *v9;
int v10;
int Rebalance;
__int64 result;
v8 = (_DEVICE_NODE *)a2;
if( a1 || !a2 )
{
v9 = (_DWORD *)a6;
PnpQueryRebalance(
*(&PnpReplaceEvent + 831),
a3,
a4,
(_DEVICE_NODE **)(a6 + 64 + 8i64 * a1),
a6 + 80 + 4i64 * a1,
a5);
*(_QWORD *)(a6 + 24) = *(&PnpReplaceEvent + 831);
*(_BYTE *)(a6 + 32) = 1;
}
else
{
v9 = (_DWORD *)a6;
*(_QWORD *)(a6 + 40) = a2;
v10 = *(_DWORD *)(a2 + 300);
if( v10 != 776 )
v8 = *(_DEVICE_NODE **)(a2 + 16);
*(_DWORD *)(a6 + 8) = (v10 != 776) + 1;
if( v8 )
{
do
{
Rebalance = PnpQueryRebalance(v8, a3, a4, (_DEVICE_NODE **)(a6 + 64), a6 + 80, a5);
if( Rebalance != 281 )
break;
v8 = v8->Parent;
}
while( v8 );
if( v8 )
{
*(_BYTE *)(a6 + 32) = Rebalance >= 0;
*(_QWORD *)(a6 + 24) = v8;
}
}
}
result = (unsigned int)*a4;
*v9 = result;
return result;
}Referenced by:
PnpRebalance