@classmethod
    def call(cls, project, target, args=(), start=None, prototype=None, **kwargs): #pylint:disable=unused-argument

        fake_return_addr = project._extern_obj.get_pseudo_addr('FAKE_RETURN_ADDR')
        if not project.is_hooked(fake_return_addr):
            project.hook(fake_return_addr, CallReturn)
        cc = simuvex.DefaultCC[project.arch.name](project.arch)

        active_paths = []
        if start is None:
            active_paths.append(project.factory.path(addr=target))
        elif hasattr(start, '__iter__'):
            active_paths.extend(start)
        else:
            active_paths.append(start)

        ret_addr = claripy.BVV(fake_return_addr, project.arch.bits)

        def fix_arg(st, arg):
            if isinstance(arg, str):
                # store the string, nul-terminated, at the current heap location
                # then return a pointer to that location
                ptr = st.libc.heap_location
                st.memory.store(ptr, st.se.BVV(arg, st.arch.bits))
                st.memory.store(ptr + len(arg), st.se.BVV(0, 8))
                st.libc.heap_location += len(arg) + 1
                return ptr
            elif isinstance(arg, (tuple, list)):
                # fix the entries of the list, then store them in a
                # NULL-terminated array at the current heap location and return
                # a pointer to there
                # N.B.: uses host endianness to store entries!!! mostly useful for string arrays
                fixed_entries = [fix_arg(st, entry) for entry in arg]
                cur_ptr = start_ptr = st.libc.heap_location
                for entry in fixed_entries:
                    st.memory.store(cur_ptr, entry, endness=st.arch.memory_endness)
                    cur_ptr += entry.length

                entry_length = fixed_entries[0].length if len(fixed_entries) > 0 else st.arch.bits
                st.memory.store(cur_ptr, st.se.BVV(0, entry_length))

                st.libc.heap_location = cur_ptr + entry_length
                return start_ptr
            elif isinstance(arg, (int, long)):
                return st.se.BVV(arg, st.arch.bits)
            elif isinstance(arg, StringSpec):
                ptr = st.libc.heap_location
                arg.dump(st, ptr)
                st.libc.heap_location += len(arg)
                return ptr
            else:
                return arg

        for p in active_paths:
            p.state.ip = target
            fixed_args = [fix_arg(p.state, arg) for arg in args]
            cc.setup_callsite(p.state, ret_addr, fixed_args)

        return cls(project, active_paths=active_paths, **kwargs)

    #
    # Util functions
    #
Get statistics for message codes that start with the prefix.
dataset/ETHPy150Open angr/angr/angr/path_group.py/PathGroup.call--crossover with--dataset/ETHPy150Open sahana/eden/static/scripts/tools/pep8.py/get_statistics