def build(self, start_address, end_address, symbols=None):
        """Return the list of basic blocks.

        Linear Sweep Disassembly.

        @param start_address: Address of the first byte to start disassembling
        basic blocks.
        @param end_address: Address of the last byte (inclusive) to finish
        disassembling basic blocks.

        """
        if not symbols:
            symbols = {}

        # 1.
        # bbs = self._find_candidate_bbs(start_address, end_address, symbols=symbols)
        # bbs = self._refine_bbs(bbs, symbols)

        # 2.
        bbs = self._find_candidate_bbs(start_address, end_address, symbols=symbols)
        bbs = self._refine_bbs(bbs, symbols)

        # Collect subroutine address
        addrs = []
        for bb in bbs:
            for addr, _ in bb.branches:
                if not (start_address <= addr and end_address <= addr):
                    addrs.append(addr)
        addrs = sorted(list(set(addrs)))

        # Process subrutines
        bbs_new = []
        for addr in addrs:
            bbs_new += self._find_candidate_bbs(addr, end_address, symbols=symbols)

        bbs = self._refine_bbs(bbs_new + bbs, symbols)

        return bbs
dataset/ETHPy150Open programa-stic/barf-project/barf/barf/analysis/basicblock/basicblock.py/BasicBlockBuilder.build/swapped operands of `<=`