// File: /workspace/github_c_makefile_star2_O2/BernardTatin[P]s7sh/s7.c
// Function: g_vector_fill_1
static s7_pointer g_vector_fill_1(s7_scheme *sc, s7_pointer caller, s7_pointer args)
                {
                    s7_pointer x, fill;
                    s7_int start = 0, end;

                    x = car(args);
                    if (!is_any_vector(x))
                    {
                        check_method(sc, x, sc->vector_fill_symbol, args);
                        /* not two_methods (and fill!) here else we get stuff like:
                         *   (let ((e (openlet (inlet 'fill! (lambda (obj val) (string-fill! (obj 'value) val)) 'value "01234")))) (vector-fill! e #\a) (e 'value)) -> "aaaaa"
                         */
                        return(wrong_type_argument(sc, caller, 1, x, T_VECTOR));
                    }
                    if (is_immutable_vector(x))
                        return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, caller, x)));

                    fill = cadr(args);
                    if (is_float_vector(x))
                    {
                        if (!s7_is_real(fill)) /* possibly a bignum */
                            return(method_or_bust(sc, fill, caller, args, T_REAL, 2));
                    }
                    else
                    {
                        if ((is_int_vector(x)) || (is_byte_vector(x)))
                        {
                            if (!s7_is_integer(fill))
                                return(method_or_bust(sc, fill, caller, args, T_INTEGER, 2));
                            if ((is_byte_vector(x)) &&
                                    ((s7_integer(fill) < 0) || (s7_integer(fill) > 255)))
                                return(out_of_range(sc, caller, small_int(2), fill, an_unsigned_byte_string));
                        }
                    }

                    end = vector_length(x);
                    if (!is_null(cddr(args)))
                    {
                        s7_pointer p;
                        p = start_and_end(sc, caller, args, 3, &start, &end);
                        if (p != sc->unused) return(p);
                        if (start == end) return(fill);
                    }
                    if (end == 0) return(fill);

                    if ((start == 0) && (end == vector_length(x)))
                        s7_vector_fill(sc, x, fill);
                    else
                    {
                        s7_int i;
                        if (is_normal_vector(x))
                        {
                            if ((is_typed_vector(x)) &&
                                    (typed_vector_typer_call(sc, x, set_plist_1(sc, fill)) == sc->F))
                                s7_wrong_type_arg_error(sc, "vector fill!", 2, fill, make_type_name(sc, typed_vector_typer_name(sc, x), INDEFINITE_ARTICLE));

                            for (i = start; i < end; i++)
                                vector_element(x, i) = fill;
                        }
                        else
                        {
                            if (is_int_vector(x))
                            {
                                s7_int k;
                                k = s7_integer(fill);
                                if (k == 0)
                                    memclr((void *)(int_vector_ints(x) + start), (end - start) * sizeof(s7_int));
                                else
                                {
                                    for (i = start; i < end; i++)
                                        int_vector(x, i) = k;
                                }
                            }
                            else
                            {
                                if (is_float_vector(x))
                                {
                                    s7_double y;
                                    y = s7_real(fill);
                                    if (y == 0.0)
                                        memclr((void *)(float_vector_floats(x) + start), (end - start) * sizeof(s7_double));
                                    else
                                    {
                                        s7_double *orig;
                                        s7_int left;
                                        orig = float_vector_floats(x);
                                        left = end - 8;
                                        i = start;
                                        while (i <= left)
                                            LOOP_8(orig[i++] = y);
                                        for (; i < end; i++)
                                            orig[i] = y;
                                    }
                                }
                                else
                                {
                                    if (is_byte_vector(x))
                                    {
                                        uint8_t k;
                                        k = (uint8_t)s7_integer(fill);
                                        if (k == 0)
                                            memclr((void *)(byte_vector_bytes(x) + start), end - start);
                                        else local_memset((void *)(byte_vector_bytes(x) + start), k, end - start);
                                    }}}}}
                    return(fill);
                }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, %r13
andq $0x0, 0x10(%rsp)
movq %rsi, %rbp
movq %rdi, %r15
movq 0x8(%rdx), %r14
movzbl (%r14), %eax
leaq 0xe4b4b(%rip), %rdx     # 0x119c20
movq (%r14), %rcx
cmpb $0x0, (%rax,%rdx)
je 0x35129
btl $0x18, %ecx
jb 0x351bb
movq 0x10(%r13), %rax
movq 0x8(%rax), %rbx
cmpb $0x16, %cl
je 0x351fa
movzbl %cl, %edx
cmpl $0x18, %edx
je 0x351fa
cmpl $0x17, %edx
jne 0x3523d
movzbl (%rbx), %ecx
leaq 0xe4898(%rip), %rdx     # 0x1199b0
cmpb $0x0, (%rcx,%rdx)
jne 0x3523d
pushq $0xd
jmp 0x352a2
btl $0x1e, %ecx
jae 0x35189
cmpb $0x1, 0x24c(%r15)
jne 0x35189
movq %r15, %rdi
movq %r14, %rsi
callq 0x88f3
movq 0x1658(%r15), %rdx
movq %r15, %rdi
movq %rax, %rsi
callq 0x888f
cmpq 0x128(%r15), %rax
je 0x35189
movq %rax, %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x35492
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xa34c
movq 0x8(%rbp), %rsi
movq 0xe07c4(%rip), %rdx     # 0x115958
movq 0x140(%r15), %r8
movq 0xe4966(%rip), %r9      # 0x119b08
movq %r15, %rdi
movq %r14, %rcx
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x9bbb
movq 0xe47a6(%rip), %rax     # 0x119968
movq 0x6e8(%r15), %rcx
movq %rax, 0x8(%rcx)
movq 0x10(%rcx), %rax
movq %rbp, 0x8(%rax)
movq 0x10(%rax), %rax
movq %r14, 0x8(%rax)
movq 0x6e8(%r15), %rsi
movq %r15, %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x972b
cmpb $0xb, (%rbx)
jne 0x352a0
cmpb $0x18, %cl
jne 0x3523d
cmpq $0x100, 0x8(%rbx)       # imm = 0x100
jb 0x3523d
movq 0x8(%rbp), %rsi
movq 0xe0743(%rip), %rdx     # 0x115960
movq 0xece3c(%rip), %r8      # 0x122060
movq %r15, %rdi
movq %rbx, %rcx
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xcb8f
movq 0x8(%r14), %r12
movq %r12, 0x8(%rsp)
movq 0x10(%rax), %rax
cmpq 0x110(%r15), %rax
je 0x352c7
pushq $0x3
popq %rcx
leaq 0x10(%rsp), %r8
leaq 0x8(%rsp), %r9
movq %r15, %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq 0x7b9f4
cmpq 0x140(%r15), %rax
jne 0x35483
movq 0x10(%rsp), %r13
movq 0x8(%rsp), %r12
cmpq %r12, %r13
sete %al
testq %r12, %r12
sete %cl
orb %al, %cl
jne 0x35480
testq %r13, %r13
jne 0x352ec
jmp 0x352d0
pushq $0xb
popq %r8
pushq $0x2
popq %r9
movq %r15, %rdi
movq %rbx, %rsi
movq %rbp, %rdx
movq %r13, %rcx
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xcd70
testq %r12, %r12
je 0x35480
cmpq 0x8(%r14), %r12
jne 0x352e9
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x2ea29
jmp 0x35480
xorl %r13d, %r13d
movzbl (%r14), %eax
addl $-0x15, %eax
cmpl $0x3, %eax
ja 0x35480
leaq 0x9e535(%rip), %rcx     # 0xd3838
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
testb $0x2, 0x6(%r14)
je 0x3547b
movq 0x28(%r14), %rsi
cmpb $0x30, (%rsi)
jb 0x3541a
movq 0x10(%rsi), %rax
movq 0x700(%r15), %rcx
movq %rbx, 0x8(%rcx)
movq 0x700(%r15), %rsi
movq %r15, %rdi
callq *%rax
jmp 0x35434
movq %rbx, %rdi
callq 0xc42a
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
movq 0x10(%r14), %rax
jne 0x353d7
jp 0x353d7
leaq (%rax,%r13,8), %rdi
jmp 0x353c3
cmpb $0xb, (%rbx)
jne 0x353ab
movzbl 0x8(%rbx), %esi
testq %rsi, %rsi
je 0x353ab
subq %r13, %r12
addq 0x10(%r14), %r13
movq %r13, %rdi
movq %r12, %rdx
callq 0x73e47
jmp 0x35480
cmpb $0xb, (%rbx)
jne 0x353b7
movq 0x8(%rbx), %rax
testq %rax, %rax
je 0x353b7
cmpq %r12, %r13
jge 0x35480
movq 0x10(%r14), %rcx
movq %rax, (%rcx,%r13,8)
incq %r13
jmp 0x35395
subq %r13, %r12
addq 0x10(%r14), %r13
movq %r13, %rdi
jmp 0x353ca
leaq (,%r13,8), %rdi
addq 0x10(%r14), %rdi
subq %r13, %r12
shlq $0x3, %r12
movq %r12, %rsi
callq 0x78377
jmp 0x35480
leaq -0x8(%r12), %rcx
movapd %xmm0, %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
cmpq %rcx, %r13
jg 0x35413
movupd %xmm1, (%rax,%r13,8)
movupd %xmm1, 0x10(%rax,%r13,8)
movupd %xmm1, 0x20(%rax,%r13,8)
movupd %xmm1, 0x30(%rax,%r13,8)
addq $0x8, %r13
jmp 0x353e4
movsd %xmm0, (%rax,%r13,8)
incq %r13
cmpq %r12, %r13
jl 0x3540a
jmp 0x35480
movq 0x700(%r15), %rax
movq %rbx, 0x8(%rax)
movq 0x700(%r15), %rdx
movq %r15, %rdi
callq 0xa34c
cmpq 0x120(%r15), %rax
jne 0x3547b
movq %r15, %rdi
movq %r14, %rsi
callq 0x7b119
pushq $0x1
popq %rdx
movq %r15, %rdi
movq %rax, %rsi
callq 0x7b04d
leaq 0xadc41(%rip), %rsi     # 0xe309e
pushq $0x2
popq %rdx
movq %r15, %rdi
movq %rbx, %rcx
movq %rax, %r8
callq 0xc2b0
jmp 0x3547b
movq 0x10(%r14), %rax
movq %rbx, (%rax,%r13,8)
incq %r13
cmpq %r12, %r13
jl 0x35470
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq