'Generate a list of successors (generating them each as entries) to IRSB.
Updates previous CFG nodes with edges.
:param int addr: The address to begin scanning
:param int current_function_addr: Address of the current function
:param str previous_jumpkind: The jumpkind of the edge going to this node
:param CFGNode previous_src_node: The previous CFGNode
:param int previous_src_stmt_idx: The previous ID of the statement
:return: a list of successors
:rtype: list'

def _scan_irsb(self, addr, current_function_addr, previous_jumpkind, previous_src_node, previous_src_ins_addr, previous_src_stmt_idx):

    (addr, function_addr, cfg_node, irsb) = self._generate_cfgnode(addr, current_function_addr)
    if (cfg_node is None):
        return []
    self._graph_add_edge(cfg_node, previous_src_node, previous_jumpkind, previous_src_ins_addr, previous_src_stmt_idx)
    self._function_add_node(addr, function_addr)
    self._changed_functions.add(current_function_addr)
    aligned_addr = (((addr >> 1) << 1) if (self.project.arch.name in ('ARMLE', 'ARMHF')) else addr)
    if (aligned_addr in self._traced_addresses):
        return []
    else:
        self._traced_addresses.add(aligned_addr)
    cfg_node.irsb = None
    self._process_block_arch_specific(addr, irsb, function_addr)
    if self._collect_data_ref:
        self._collect_data_references(irsb, addr)
    (irsb_next, jumpkind) = (irsb.next, irsb.jumpkind)
    successors = []
    last_ins_addr = None
    ins_addr = addr
    for (i, stmt) in enumerate(irsb.statements):
        if isinstance(stmt, pyvex.IRStmt.Exit):
            successors.append((i, (last_ins_addr if self.project.arch.branch_delay_slot else ins_addr), stmt.dst, stmt.jumpkind))
        elif isinstance(stmt, pyvex.IRStmt.IMark):
            last_ins_addr = ins_addr
            ins_addr = (stmt.addr + stmt.delta)
    successors.append(('default', (last_ins_addr if self.project.arch.branch_delay_slot else ins_addr), irsb_next, jumpkind))
    entries = []
    successors = self._post_process_successors(addr, successors)
    for suc in successors:
        (stmt_idx, ins_addr, target, jumpkind) = suc
        entries += self._create_jobs(target, jumpkind, function_addr, irsb, addr, cfg_node, ins_addr, stmt_idx)
    return entries
