PipDeleteDependencyNode

VOID __stdcall PipDeleteDependencyNode(_PNP_DEPENDENCY_NODE *Node){
  __int64 v2; 
  _PNP_DEPENDENCY_NODE **v3; 
  __int64 v4; 
  _PNP_DEPENDENCY_NODE **v5; 

  PipDeleteBindingIds(Node);
  v2 = *(_QWORD *)Node;
  if( *(_PNP_DEPENDENCY_NODE **)(*(_QWORD *)Node + 8i64) != Node
    || (v3 = (_PNP_DEPENDENCY_NODE **)*((_QWORD *)Node + 1), *v3 != Node)
    || (*v3 = (_PNP_DEPENDENCY_NODE *)v2,
        *(_QWORD *)(v2 + 8) = v3,
        v4 = *((_QWORD *)Node + 9),
        *(_PNP_DEPENDENCY_NODE **)(v4 + 8) != Node + 18)
    || (v5 = (_PNP_DEPENDENCY_NODE **)*((_QWORD *)Node + 10), *v5 != Node + 18) )
  {
    __fastfail(3u);
  }
  *v5 = (_PNP_DEPENDENCY_NODE *)v4;
  *(_QWORD *)(v4 + 8) = v5;
  ExFreePoolWithTag(Node, 0x53706E50u);
}

Referenced by:

IoDuplicateDependency
PipDeleteAllDependencyRelations
PipDereferenceDependencyNode
PipMergeDependencyEdgeList
PipMergeDependencyNodes
PipSetDependency
PipUnlinkDeviceObjectAndDependencyNode