angr/analyses/cfg/cfg_utils.py
def find_merge_points(function_addr, function_endpoints, graph):  # pylint:disable=unused-argument
        """
        Given a local transition graph of a function, find all merge points inside, and then perform a
        quasi-topological sort of those merge points.

        A merge point might be one of the following cases:
        - two or more paths come together, and ends at the same address.
        - end of the current function

        :param int function_addr: Address of the function.
        :param list function_endpoints: Endpoints of the function. They typically come from Function.endpoints.
        :param networkx.DiGraph graph: A local transition graph of a function. Normally it comes from Function.graph.
        :return: A list of ordered addresses of merge points.
        :rtype: list
        """

        merge_points = set()

        for node in graph.nodes():
            if graph.in_degree(node) > 1:
                merge_points.add(node)

        ordered_merge_points = CFGUtils.quasi_topological_sort_nodes(graph, merge_points)

        addrs = [n.addr for n in ordered_merge_points]
        return addrs

        Given a local transition graph of a function, find all merge points inside, and then perform a
        quasi-topological sort of those merge points.

        A merge point might be one of the following cases:
        - two or more paths come together, and ends at the same address.
        - end of the current function

        :param int function_addr: Address of the function.
        :param list function_endpoints: Endpoints of the function. They typically come from Function.endpoints.
        :param networkx.DiGraph graph: A local transition graph of a function. Normally it comes from Function.graph.
        :return: A list of ordered addresses of merge points.
        :rtype: list
        
Given a local transition graph of a function, find all merge points inside, and then perform a
quasi-topological sort of those merge points.

A merge point might be one of the following cases:
two or more paths come together, and ends at the same address.
end of the current function
Given a local transition graph of a function find all merge points inside and then perform a quasi - topological sort of those merge points . A merge point might be one of the following cases : two or more paths come together and ends at the same address . end of the current function
def find_merge_points(function_addr, function_endpoints, graph):  
        merge_points = set()
        for node in graph.nodes():
            if graph.in_degree(node) > 1:
                merge_points.add(node)
        ordered_merge_points = CFGUtils.quasi_topological_sort_nodes(graph, merge_points)
        addrs = [n.addr for n in ordered_merge_points]
        return addrs
def find_merge_points ( function_addr , function_endpoints , graph ) : merge_points = set ( ) for node in graph . nodes ( ) : if graph . in_degree ( node ) > 1 : merge_points . add ( node ) ordered_merge_points = CFGUtils . quasi_topological_sort_nodes ( graph , merge_points ) addrs = [ n . addr for n in ordered_merge_points ] return addrs
Given a local transition graph of a function, find all merge points inside, and then perform a
quasi-topological sort of those merge points.
Given a local transition graph of a function find all merge points inside and then perform a quasi - topological sort of those merge points .
# pylint:disable=unused-argument """
        Given a local transition graph of a function, find all merge points inside, and then perform a
        quasi-topological sort of those merge points.

        A merge point might be one of the following cases:
        - two or more paths come together, and ends at the same address.
        - end of the current function

        :param int function_addr: Address of the function.
        :param list function_endpoints: Endpoints of the function. They typically come from Function.endpoints.
        :param networkx.DiGraph graph: A local transition graph of a function. Normally it comes from Function.graph.
        :return: A list of ordered addresses of merge points.
        :rtype: list
        """
A list of ordered addresses of merge points.
A list of ordered addresses of merge points .
list
function_addr
Address of the function.
Address of the function .
function_endpoints
Endpoints of the function. They typically come from Function.endpoints.
Endpoints of the function . They typically come from Function . endpoints .
graph
A local transition graph of a function. Normally it comes from Function.graph.
A local transition graph of a function . Normally it comes from Function . graph .