human
Here's a good function header given the following:
I wrote the below code

    order = []
    remaining = set()
    todo = [start_block]
    while todo:
        b = todo.pop()
        if (b in remaining):
            continue
        remaining.add(b)
        for c in b.get_children():
            if (c not in remaining):
                todo.append(c)
    dominators = {}
    for b in remaining:
        if (__debug__ and b.next):
            pass
        dominators.setdefault(b, set())
        for c in b.get_followers():
            while 1:
                dominators.setdefault(c, set()).add(b)
                if (c.prev and (c.prev[0] is not b)):
                    c = c.prev[0]
                else:
                    break
    def find_next():
        for b in remaining:
            for c in dominators[b]:
                if (c in remaining):
                    break
            else:
                return b
    b = start_block
    while 1:
        order.append(b)
        remaining.discard(b)
        if b.next:
            b = b.next[0]
            continue
        elif ((b is not exit_block) and (not b.has_unconditional_transfer())):
            order.append(exit_block)
        if (not remaining):
            break
        b = find_next()
    return order

What's a good function header?
assistant
#Here's a good function header.

def order_blocks(start_block, exit_block):