PipAddDependencyEdgeBetweenNodes
__int64 __fastcall PipAddDependencyEdgeBetweenNodes(__int64 a1, __int64 a2, PCUNICODE_STRING *a3){
__int64 v5;
_QWORD *v7;
unsigned int v8;
INT64 v9;
INT64 v10;
CHAR *NewDependencyEdge;
v5 = a1 + 16;
v7 = *(_QWORD **)(a1 + 16);
v8 = 0;
while( v7 != (_QWORD *)v5 )
{
v9 = (INT64)v7;
v7 = (_QWORD *)*v7;
if( *(_QWORD *)(v9 + 32) == a2 )
{
PipAddRequestToEdge(v9, a3);
return v8;
}
}
if( PipCheckValidNewDependencyEdge(a1, a2) )
{
NewDependencyEdge = PipCreateNewDependencyEdge(a1, v10, a3);
if( NewDependencyEdge )
{
if( *(_QWORD *)(*((_QWORD *)NewDependencyEdge + 4) + 48i64) )
PipAddtoRebuildPowerRelationsQueue(*(_QWORD *)(*((_QWORD *)NewDependencyEdge + 5) + 48i64));
}
else
{
return(unsigned int)-1073741670;
}
}
else
{
return(unsigned int)-1073741823;
}
return v8;
}Referenced by:
PipDependencyCopyEdge
PipSetDependency