// File: /workspace/github_c_makefile_star2_O2/BernardTatin[P]s7sh/s7.c
// Function: g_vector_append
static s7_pointer g_vector_append(s7_scheme *sc, s7_pointer args)
                {
                    /* returns a one-dimensional vector.  To handle multidimensional vectors, we'd need to
                     *   ensure all the dimensional data matches (rank, size of each dimension except the last etc),
                     *   which is too much trouble.
                     */
#define H_vector_append "(vector-append . vectors) returns a new (1-dimensional) vector containing the elements of its vector arguments."
#define Q_vector_append sc->pcl_v

                    s7_pointer p;
                    int32_t i;

                    if (is_null(args))
                        return(make_simple_vector(sc, 0));

                    for (i = 0, p = args; is_pair(p); p = cdr(p), i++)
                    {
                        s7_pointer x;
                        x = car(p);
                        if (!is_any_vector(x))
                        {
                            if (has_active_methods(sc, x))
                            {
                                s7_pointer func;
                                func = find_method(sc, find_let(sc, x), sc->vector_append_symbol);
                                if (func != sc->undefined)
                                {
                                    int32_t k;
                                    s7_pointer v, y;
                                    if (i == 0)
                                        return(s7_apply_function(sc, func, args));
                                    /* we have to copy the arglist here */
                                    sc->temp9 = make_list(sc, i, sc->F);
                                    for (k = 0, y = args, v = sc->temp9; k < i; k++, y = cdr(y), v = cdr(v))
                                        set_car(v, car(y));
                                    v = g_vector_append(sc, sc->temp9);
                                    y = s7_apply_function(sc, func, cons(sc, v, p));
                                    sc->temp9 = sc->nil;
                                    return(y);
                                }
                            }
                            return(wrong_type_argument(sc, sc->vector_append_symbol, i + 1, x, T_VECTOR));
                        }
                    }
                    return(vector_append(sc, args, type(car(args)), sc->vector_append_symbol));
                }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpq %rsi, 0x110(%rdi)
je 0x622a4
movq %rsi, %r15
xorl %r14d, %r14d
leaq 0xb799d(%rip), %rax     # 0x119c20
movq %rsi, %rbp
cmpb $0x1, (%rbp)
jne 0x622bc
movq 0x8(%rbp), %r13
movzbl (%r13), %ecx
cmpb $0x0, (%rcx,%rax)
je 0x622e3
movq 0x10(%rbp), %rbp
incq %r14
jmp 0x62286
movq %rbx, %rdi
xorl %esi, %esi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2f202
movq 0x8(%r15), %rax
movzbl (%rax), %edx
movq 0x1648(%rbx), %rcx
movq %rbx, %rdi
movq %r15, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xcb2f7
testb $0x40, 0x3(%r13)
je 0x6235a
cmpb $0x1, 0x24c(%rbx)
jne 0x6235a
movq %rbx, %rdi
movq %r13, %rsi
callq 0x88f3
movq 0x1648(%rbx), %rdx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x888f
cmpq 0x128(%rbx), %rax
je 0x6235a
movq %rax, %r12
testq %r14, %r14
je 0x62459
movq 0x120(%rbx), %rdx
movq %rbx, %rdi
movl %r14d, %esi
callq 0x2ddf5
movq %rax, 0x538(%rbx)
subq $0x1, %r14
jb 0x623e2
movq 0x8(%r15), %rcx
movq %rcx, 0x8(%rax)
movq 0x10(%r15), %r15
movq 0x10(%rax), %rax
jmp 0x6233e
movq 0x1648(%rbx), %rax
movq 0x8(%rax), %r15
cmpq $0x7fe, %r14            # imm = 0x7FE
ja 0x6237c
leaq 0xb35db(%rip), %rax     # 0x115950
movq 0x8(%rax,%r14,8), %rdx
jmp 0x623b8
incq %r14
movq 0x90(%rbx), %rax
cmpq 0x98(%rbx), %rax
ja 0x6239e
movq %rbx, %rdi
callq 0x9c27
movq 0x90(%rbx), %rax
leaq -0x8(%rax), %rcx
movq %rcx, 0x90(%rbx)
movq -0x8(%rax), %rdx
movq $0xb, (%rdx)
movq %r14, 0x8(%rdx)
movq 0x140(%rbx), %r8
movq 0xb7742(%rip), %r9      # 0x119b08
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x9bbb
movq 0x538(%rbx), %rsi
movq %rbx, %rdi
callq 0x6225f
movq %rax, %r14
movq 0x90(%rbx), %rax
cmpq 0x98(%rbx), %rax
ja 0x62413
movq %rbx, %rdi
callq 0x9c27
movq 0x90(%rbx), %rax
leaq -0x8(%rax), %rcx
movq %rcx, 0x90(%rbx)
movq -0x8(%rax), %rdx
movq $0x200001, (%rdx)       # imm = 0x200001
movq %r14, 0x8(%rdx)
movq %rbp, 0x10(%rdx)
movq %rbx, %rdi
movq %r12, %rsi
callq 0xa34c
movq 0x110(%rbx), %rcx
movq %rcx, 0x538(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rbx, %rdi
movq %r12, %rsi
movq %r15, %rdx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xa34c