def get_call_results(self, *args):
        cc = simuvex.DefaultCC[self._project.arch.name](self._project.arch)
        if self._ty is not None:
            wantlen = len(self._ty.args)
            if len(args) != wantlen:
                raise TypeError("The function at {:#x} takes exactly {} argument{} ({} given)"\
                        .format(self._addr, wantlen, '' if wantlen == 1 else 's', len(args)))

        state = self._base_state.copy() \
                    if self._base_state is not None \
                    else self._project.factory.blank_state()

        if state.arch.name == 'PPC64' and self._toc is not None:
            state.regs.r2 = self._toc

        if self._ty is not None:
            pointed_args = [self._standardize_value(arg, ty, state) for arg, ty in zip(args, self._ty.args)]
        else:
            pointed_args = [self._standardize_value(arg, None, state) for arg in args]

        def step_func(pg):
            pg2 = pg.prune()
            if 1 > len(pg2.active):
                raise AngrCallableMultistateError("Execution split on symbolic condition!")
            return pg2

        caller = PathGroup.call(self._project, self._addr, pointed_args, start=self._project.factory.path(state))
        caller_end_unpruned = caller.step(until=lambda pg: len(pg.active) == 0, step_func=step_func if self._concrete_only else None).unstash(from_stash='deadended')
        caller_end_unmerged = caller_end_unpruned.prune(filter_func=lambda pt: pt.addr == self._deadend_addr)

        if len(caller_end_unmerged.active) == 0:
            raise AngrCallableError("No paths returned from function")

        caller_end = caller_end_unmerged.merge()
        out_state = caller_end.active[0].state
        out_val = out_state.se.simplify(cc.get_return_expr(out_state))
        return out_val, out_state
dataset/ETHPy150Open angr/angr/angr/surveyors/caller.py/Callable.get_call_results/swapped operands of `>`