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