(self, addr, block, func_addr, jumpkind)
return False, [ ]
Attempt to quickly resolve an indirect jump.

        :param int addr:        Basic block address of this indirect jump.
        :param block:           The basic block. The type is determined by the backend being used. It's pyvex.IRSB if
                                pyvex is used as the backend.
        :param int func_addr:   Address of the function that this indirect jump belongs to.
        :param str jumpkind:    The jumpkind.
        :return:                A tuple of a boolean indicating whether the resolution is successful or not, and a list
                                of resolved targets (ints).
        :rtype:                 tuple
Attempt to quickly resolve an indirect jump.
Attempt to quickly resolve an indirect jump .
def _resolve_indirect_jump_timelessly(self, addr, block, func_addr, jumpkind):
        """
        Attempt to quickly resolve an indirect jump.

        :param int addr:        Basic block address of this indirect jump.
        :param block:           The basic block. The type is determined by the backend being used. It's pyvex.IRSB if
                                pyvex is used as the backend.
        :param int func_addr:   Address of the function that this indirect jump belongs to.
        :param str jumpkind:    The jumpkind.
        :return:                A tuple of a boolean indicating whether the resolution is successful or not, and a list
                                of resolved targets (ints).
        :rtype:                 tuple
        """

        # pre-check: if re-lifting the block with full optimization (cross-instruction-optimization enabled) gives us
        # a constant next expression, we don't need to resolve it
        relifted = self.project.factory.block(block.addr, size=block.size, opt_level=1, cross_insn_opt=True).vex
        if isinstance(relifted.next, pyvex.IRExpr.Const):
            # yes!
            return True, [relifted.next.con.value]

        if block.statements is None:
            # make sure there are statements
            block = self.project.factory.block(block.addr, size=block.size).vex

        for res in self.timeless_indirect_jump_resolvers:
            if res.filter(self, addr, func_addr, block, jumpkind):
                r, resolved_targets = res.resolve(self, addr, func_addr, block, jumpkind)
                if r:
                    return True, resolved_targets
        return False, [ ]
def _resolve_indirect_jump_timelessly ( self , addr , block , func_addr , jumpkind ) : # pre-check: if re-lifting the block with full optimization (cross-instruction-optimization enabled) gives us # a constant next expression, we don't need to resolve it relifted = self . project . factory . block ( block . addr , size = block . size , opt_level = 1 , cross_insn_opt = True ) . vex if isinstance ( relifted . next , pyvex . IRExpr . Const ) : # yes! return True , [ relifted . next . con . value ] if block . statements is None : # make sure there are statements block = self . project . factory . block ( block . addr , size = block . size ) . vex for res in self . timeless_indirect_jump_resolvers : if res . filter ( self , addr , func_addr , block , jumpkind ) : r , resolved_targets = res . resolve ( self , addr , func_addr , block , jumpkind ) if r : return True , resolved_targets return False , [ ]