def jump(self, condition, to_addr, jumpkind=JumpKind.Boring, ip_offset=None):
        """
        Jump to a specified destination, under the specified condition.
        Used for branches, jumps, calls, returns, etc.

        :param condition: The VexValue representing the expression for the guard, or None for an unconditional jump
        :param to_addr: The address to jump to.
        :param jumpkind: The JumpKind to use.  See the VEX docs for what these are; you only need them for things
            aren't normal jumps (e.g., calls, interrupts, program exits, etc etc)
        :return: None
        """
        to_addr_ty = None
        if isinstance(to_addr, VexValue):
            # Unpack a VV
            to_addr_rdt = to_addr.rdt
            to_addr_ty = to_addr.ty
        elif isinstance(to_addr, int):
            # Direct jump to an int, make an RdT and Ty
            to_addr_ty = vex_int_class(self.irsb_c.irsb.arch.bits).type
            to_addr = self.constant(to_addr, to_addr_ty) # TODO archinfo may be changing
            to_addr_rdt = to_addr.rdt
        elif isinstance(to_addr, RdTmp):
            # An RdT; just get the Ty of the arch's pointer type
            to_addr_ty = vex_int_class(self.irsb_c.irsb.arch.bits).type
            to_addr_rdt = to_addr
        else:
            raise ValueError("Jump destination has unknown type: " + repr(type(to_addr)))
        if not condition:
            # This is the default exit.
            self.irsb_c.irsb.jumpkind = jumpkind
            self.irsb_c.irsb.next = to_addr_rdt
        else:
            # add another exit
            # EDG says: We should make sure folks set ArchXYZ.ip_offset like they're supposed to
            if ip_offset is None:
                ip_offset = self.arch.ip_offset
            assert ip_offset is not None

            negated_condition_rdt = self.ite(condition, self.constant(0, condition.ty), self.constant(1, condition.ty))
            direct_exit_target = self.constant(self.addr + (self.bitwidth // 8), to_addr_ty)
            self.irsb_c.add_exit(negated_condition_rdt, direct_exit_target.rdt, jumpkind, ip_offset)
            self.irsb_c.irsb.jumpkind = jumpkind
            self.irsb_c.irsb.next = to_addr_rdt
def jump ( self , condition , to_addr , jumpkind = JumpKind . Boring , ip_offset = None ) : to_addr_ty = None if isinstance ( to_addr , VexValue ) : to_addr_rdt = to_addr . rdt to_addr_ty = to_addr . ty elif isinstance ( to_addr , int ) : to_addr_ty = vex_int_class ( self . irsb_c . irsb . arch . bits ) . type to_addr = self . constant ( to_addr , to_addr_ty ) to_addr_rdt = to_addr . rdt elif isinstance ( to_addr , RdTmp ) : to_addr_ty = vex_int_class ( self . irsb_c . irsb . arch . bits ) . type to_addr_rdt = to_addr else : raise ValueError ( "Jump destination has unknown type: " + repr ( type ( to_addr ) ) ) if not condition : self . irsb_c . irsb . jumpkind = jumpkind self . irsb_c . irsb . next = to_addr_rdt else : if ip_offset is None : ip_offset = self . arch . ip_offset assert ip_offset is not None negated_condition_rdt = self . ite ( condition , self . constant ( 0 , condition . ty ) , self . constant ( 1 , condition . ty ) ) direct_exit_target = self . constant ( self . addr + ( self . bitwidth // 8 ) , to_addr_ty ) self . irsb_c . add_exit ( negated_condition_rdt , direct_exit_target . rdt , jumpkind , ip_offset ) self . irsb_c . irsb . jumpkind = jumpkind self . irsb_c . irsb . next = to_addr_rdt
Jump to a specified destination, under the specified condition.
        Used for branches, jumps, calls, returns, etc.

        :param condition: The VexValue representing the expression for the guard, or None for an unconditional jump
        :param to_addr: The address to jump to.
        :param jumpkind: The JumpKind to use.  See the VEX docs for what these are; you only need them for things
            aren't normal jumps (e.g., calls, interrupts, program exits, etc etc)
        :return: None