// File: /workspace/github_c_makefile_star2_O3/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 0x79670
movq %rsi, %r15
cmpb $0x1, (%rsi)
jne 0x79649
xorl %r14d, %r14d
leaq 0xd15fa(%rip), %rax     # 0x14ac20
movq %r15, %rbp
movq 0x8(%rbp), %r12
movzbl (%r12), %ecx
cmpb $0x0, (%rcx,%rax)
je 0x79781
movq 0x10(%rbp), %rbp
incq %r14
cmpb $0x1, (%rbp)
je 0x79629
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 0xfe694
movq 0x90(%rbx), %rax
cmpq 0x98(%rbx), %rax
ja 0x7968f
movq %rbx, %rdi
callq 0xa550
movq 0x90(%rbx), %rax
leaq -0x8(%rax), %rcx
movq %rcx, 0x90(%rbx)
movq -0x8(%rax), %r14
movq $0x200015, (%r14)       # imm = 0x200015
movq $0x0, 0x8(%r14)
movq 0x838(%rbx), %rax
testq %rax, %rax
jne 0x796f8
movl $0x2800, %edi           # imm = 0x2800
callq 0x8480
movq %rax, 0x838(%rbx)
movq %rax, %rcx
addq $0x28, %rcx
movl $0xff, %edx
movq %rcx, -0x10(%rcx)
movl $0x0, -0x20(%rcx)
addq $0x28, %rcx
decl %edx
jne 0x796d6
movq $0x0, -0x10(%rcx)
movl $0x0, -0x20(%rcx)
movq 0x18(%rax), %rcx
movq %rcx, 0x838(%rbx)
movl $0x0, 0x8(%rax)
xorl %ecx, %ecx
movq %rcx, (%rax)
movq %rax, 0x18(%r14)
movq (%rax), %rdx
movq %rdx, 0x10(%r14)
movq %rcx, 0x20(%rax)
leaq -0x1d4dc(%rip), %rax    # 0x5c249
movq %rax, 0x20(%r14)
leaq -0x1d4de(%rip), %rax    # 0x5c252
movq %rax, 0x28(%r14)
movq 0x740(%rbx), %rbx
movq (%rbx), %rax
movq 0x10(%rbx), %rsi
cmpq 0x8(%rbx), %rsi
jne 0x79763
leaq (%rsi,%rsi), %rcx
movq %rcx, 0x8(%rbx)
shlq $0x4, %rsi
movq %rax, %rdi
callq 0x8510
movq %rax, (%rbx)
movq 0x10(%rbx), %rsi
leaq 0x1(%rsi), %rcx
movq %rcx, 0x10(%rbx)
movq %r14, (%rax,%rsi,8)
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
testb $0x40, 0x3(%r12)
je 0x7986b
cmpb $0x1, 0x24c(%rbx)
jne 0x7986b
movq %rbx, %rdi
movq %r12, %rsi
callq 0x8a63
movq 0x1648(%rbx), %rdx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x89ff
cmpq 0x128(%rbx), %rax
je 0x7986b
movq %rax, %r13
testq %r14, %r14
je 0x798f3
movq 0x120(%rbx), %rdx
movq %rbx, %rdi
movl %r14d, %esi
callq 0x3a029
movq %rax, 0x538(%rbx)
movq 0x8(%r15), %rcx
movq %rcx, 0x8(%rax)
movq 0x10(%r15), %r15
movq 0x10(%rax), %rax
decq %r14
jne 0x797e9
movq 0x538(%rbx), %rsi
movq %rbx, %rdi
callq 0x795fd
movq %rax, %r14
movq 0x90(%rbx), %rax
cmpq 0x98(%rbx), %rax
ja 0x7982f
movq %rbx, %rdi
callq 0xa550
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 %r13, %rsi
callq 0xaee6
movq 0x110(%rbx), %rcx
movq %rcx, 0x538(%rbx)
jmp 0x79772
movq 0x1648(%rbx), %rax
movq 0x8(%rax), %r15
cmpq $0x7fe, %r14            # imm = 0x7FE
ja 0x7988d
leaq 0xcd0ca(%rip), %rax     # 0x146950
movq 0x8(%rax,%r14,8), %rdx
jmp 0x798c9
incq %r14
movq 0x90(%rbx), %rax
cmpq 0x98(%rbx), %rax
ja 0x798af
movq %rbx, %rdi
callq 0xa550
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 0xd1231(%rip), %r9      # 0x14ab08
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xa4e4
movq %rbx, %rdi
movq %r13, %rsi
movq %r15, %rdx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xaee6