(
        self,
        data: Union[str, bytes, None],
        mem_addr: int,
        arch: archinfo.Arch,
        max_inst: Optional[int] = None,
        max_bytes: Optional[int] = None,
        bytes_offset: int = 0,
        traceflags: int = 0,
        opt_level: int = 1,
        num_inst: Optional[int] = None,
        num_bytes: Optional[int] = None,
        strict_block_end: bool = False,
        skip_stmts: bool = False,
        collect_data_refs: bool = False,
    )
:param data:                The bytes to lift. Can be either a string of bytes or a cffi buffer object.
                                    You may also pass None to initialize an empty IRSB.
        :param int mem_addr:        The address to lift the data at.
        :param arch:                The architecture to lift the data as.
        :param max_inst:            The maximum number of instructions to lift. (See note below)
        :param max_bytes:           The maximum number of bytes to use.
        :param num_inst:            Replaces max_inst if max_inst is None. If set to None as well, no instruction limit is used.
        :param num_bytes:           Replaces max_bytes if max_bytes is None. If set to None as well, no  byte limit is used.
        :param bytes_offset:        The offset into `data` to start lifting at. Note that for ARM THUMB mode, both
                                    `mem_addr` and `bytes_offset` must be odd (typically `bytes_offset` is set to 1).
        :param traceflags:          Unused by P-Code lifter
        :param opt_level:           Unused by P-Code lifter
        :param strict_block_end:    Unused by P-Code lifter

        .. note:: Explicitly specifying the number of instructions to lift (`max_inst`) may not always work
                  exactly as expected. For example, on MIPS, it is meaningless to lift a branch or jump
                  instruction without its delay slot. VEX attempts to Do The Right Thing by possibly decoding
                  fewer instructions than requested. Specifically, this means that lifting a branch or jump
                  on MIPS as a single instruction (`max_inst=1`) will result in an empty IRSB, and subsequent
                  attempts to run this block will raise `SimIRSBError('Empty IRSB passed to SimIRSB.')`.

        .. note:: If no instruction and byte limit is used, the lifter will continue lifting the block until the block
                  ends properly or until it runs out of data to lift.
:param data:                The bytes to lift. Can be either a string of bytes or a cffi buffer object.
                                    You may also pass None to initialize an empty IRSB.
        :param int mem_addr:        The address to lift the data at.
        :param arch:                The architecture to lift the data as.
        :param max_inst:            The maximum number of instructions to lift. (See note below)
        :param max_bytes:           The maximum number of bytes to use.
        :param num_inst:            Replaces max_inst if max_inst is None. If set to None as well, no instruction limit is used.
        :param num_bytes:           Replaces max_bytes if max_bytes is None. If set to None as well, no  byte limit is used.
        :param bytes_offset:        The offset into `data` to start lifting at. Note that for ARM THUMB mode, both
                                    `mem_addr` and `bytes_offset` must be odd (typically `bytes_offset` is set to 1).
        :param traceflags:          Unused by P-Code lifter
        :param opt_level:           Unused by P-Code lifter
        :param strict_block_end:    Unused by P-Code lifter
: param data : The bytes to lift . Can be either a string of bytes or a cffi buffer object . You may also pass None to initialize an empty IRSB . : param int mem_addr : The address to lift the data at . : param arch : The architecture to lift the data as . : param max_inst : The maximum number of instructions to lift . ( See note below ) : param max_bytes : The maximum number of bytes to use . : param num_inst : Replaces max_inst if max_inst is None . If set to None as well no instruction limit is used . : param num_bytes : Replaces max_bytes if max_bytes is None . If set to None as well no byte limit is used . : param bytes_offset : The offset into data to start lifting at . Note that for ARM THUMB mode both mem_addr and bytes_offset must be odd ( typically bytes_offset is set to 1 ) . : param traceflags : Unused by P - Code lifter : param opt_level : Unused by P - Code lifter : param strict_block_end : Unused by P - Code lifter
def __init__(
        self,
        data: Union[str, bytes, None],
        mem_addr: int,
        arch: archinfo.Arch,
        max_inst: Optional[int] = None,
        max_bytes: Optional[int] = None,
        bytes_offset: int = 0,
        traceflags: int = 0,
        opt_level: int = 1,
        num_inst: Optional[int] = None,
        num_bytes: Optional[int] = None,
        strict_block_end: bool = False,
        skip_stmts: bool = False,
        collect_data_refs: bool = False,
    ) -> None:
        """
        :param data:                The bytes to lift. Can be either a string of bytes or a cffi buffer object.
                                    You may also pass None to initialize an empty IRSB.
        :param int mem_addr:        The address to lift the data at.
        :param arch:                The architecture to lift the data as.
        :param max_inst:            The maximum number of instructions to lift. (See note below)
        :param max_bytes:           The maximum number of bytes to use.
        :param num_inst:            Replaces max_inst if max_inst is None. If set to None as well, no instruction limit is used.
        :param num_bytes:           Replaces max_bytes if max_bytes is None. If set to None as well, no  byte limit is used.
        :param bytes_offset:        The offset into `data` to start lifting at. Note that for ARM THUMB mode, both
                                    `mem_addr` and `bytes_offset` must be odd (typically `bytes_offset` is set to 1).
        :param traceflags:          Unused by P-Code lifter
        :param opt_level:           Unused by P-Code lifter
        :param strict_block_end:    Unused by P-Code lifter

        .. note:: Explicitly specifying the number of instructions to lift (`max_inst`) may not always work
                  exactly as expected. For example, on MIPS, it is meaningless to lift a branch or jump
                  instruction without its delay slot. VEX attempts to Do The Right Thing by possibly decoding
                  fewer instructions than requested. Specifically, this means that lifting a branch or jump
                  on MIPS as a single instruction (`max_inst=1`) will result in an empty IRSB, and subsequent
                  attempts to run this block will raise `SimIRSBError('Empty IRSB passed to SimIRSB.')`.

        .. note:: If no instruction and byte limit is used, the lifter will continue lifting the block until the block
                  ends properly or until it runs out of data to lift.
        """
        if max_inst is None:
            max_inst = num_inst
        if max_bytes is None:
            max_bytes = num_bytes

        self._direct_next = None
        self._exit_statements = []
        self._instruction_addresses = ()
        self._instructions = []
        self._size = None
        self._statements = []
        self.addr = mem_addr
        self.arch = arch
        self.behaviors = None
        self.data_refs = ()
        self.default_exit_target = None
        self.jumpkind = None
        self.next = None
        self._disassembly = None

        if data is not None:
            # This is the slower path (because we need to call _from_py() to copy the content in the returned IRSB to
            # the current IRSB instance. You should always call `lift()` directly. This method is kept for compatibility
            # concerns.
            irsb = lift(
                data,
                mem_addr,
                arch,
                max_bytes=max_bytes,
                max_inst=max_inst,
                bytes_offset=bytes_offset,
                opt_level=opt_level,
                traceflags=traceflags,
                strict_block_end=strict_block_end,
                skip_stmts=skip_stmts,
                collect_data_refs=collect_data_refs,
            )
            self._from_py(irsb)
def __init__ ( self , data : Union [ str , bytes , None ] , mem_addr : int , arch : archinfo . Arch , max_inst : Optional [ int ] = None , max_bytes : Optional [ int ] = None , bytes_offset : int = 0 , traceflags : int = 0 , opt_level : int = 1 , num_inst : Optional [ int ] = None , num_bytes : Optional [ int ] = None , strict_block_end : bool = False , skip_stmts : bool = False , collect_data_refs : bool = False , ) -> None : if max_inst is None : max_inst = num_inst if max_bytes is None : max_bytes = num_bytes self . _direct_next = None self . _exit_statements = [ ] self . _instruction_addresses = ( ) self . _instructions = [ ] self . _size = None self . _statements = [ ] self . addr = mem_addr self . arch = arch self . behaviors = None self . data_refs = ( ) self . default_exit_target = None self . jumpkind = None self . next = None self . _disassembly = None if data is not None : # This is the slower path (because we need to call _from_py() to copy the content in the returned IRSB to # the current IRSB instance. You should always call `lift()` directly. This method is kept for compatibility # concerns. irsb = lift ( data , mem_addr , arch , max_bytes = max_bytes , max_inst = max_inst , bytes_offset = bytes_offset , opt_level = opt_level , traceflags = traceflags , strict_block_end = strict_block_end , skip_stmts = skip_stmts , collect_data_refs = collect_data_refs , ) self . _from_py ( irsb )