// File: /workspace/github_c_makefile_star2_O1/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 $0x28, %rsp
movq %rdx, %r13
movq %rsi, %rbx
movq %rdi, %r15
movq $0x0, 0x10(%rsp)
movq 0x8(%rdx), %r14
movzbl (%r14), %ecx
leaq 0x10d7eb(%rip), %rdx    # 0x152c20
movq (%r14), %rax
cmpb $0x0, (%rcx,%rdx)
je 0x4549b
btl $0x18, %eax
jb 0x4561b
movq 0x10(%r13), %rax
movq 0x8(%rax), %rbp
movzbl (%r14), %ecx
cmpl $0x16, %ecx
je 0x4565b
cmpl $0x18, %ecx
je 0x4565b
cmpl $0x17, %ecx
jne 0x456c4
movzbl (%rbp), %ecx
leaq 0x10d536(%rip), %rdx    # 0x1529b0
cmpb $0x0, (%rcx,%rdx)
jne 0x456c4
movq %r15, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
movq %r13, %rcx
movl $0xd, %r8d
jmp 0x4576c
movb $0x1, %bpl
btl $0x1e, %eax
jae 0x455e0
cmpb $0x1, 0x24c(%r15)
jne 0x455e0
movq %r15, %rdi
movq %r14, %rsi
callq 0x9a55
movq 0x1658(%r15), %rdx
movq %r15, %rdi
movq %rax, %rsi
callq 0x99ef
cmpq 0x128(%r15), %rax
je 0x455e0
cmpb $0x1, (%r13)
jne 0x457dd
movq %rax, 0x18(%rsp)
movq %rbx, 0x20(%rsp)
movq %r13, 0x4c8(%r15)
movq 0x8(%r13), %rbp
movq 0x90(%r15), %rax
movq 0x110(%r15), %rbx
cmpq 0x98(%r15), %rax
ja 0x4551f
movq %r15, %rdi
callq 0xb389
movq 0x90(%r15), %rax
leaq -0x8(%rax), %rcx
movq %rcx, 0x90(%r15)
movq -0x8(%rax), %rax
movq $0x200001, (%rax)       # imm = 0x200001
movq %rbp, 0x8(%rax)
movq %rbx, 0x10(%rax)
movq %rax, (%rsp)
movq %rax, 0x4e8(%r15)
movq 0x10(%r13), %r13
cmpb $0x1, (%r13)
jne 0x455b8
movq (%rsp), %rbp
movq 0x8(%r13), %rbx
movq 0x90(%r15), %rax
movq 0x110(%r15), %r12
cmpq 0x98(%r15), %rax
ja 0x45581
movq %r15, %rdi
callq 0xb389
movq 0x90(%r15), %rax
leaq -0x8(%rax), %rcx
movq %rcx, 0x90(%r15)
movq -0x8(%rax), %rax
movq $0x200001, (%rax)       # imm = 0x200001
movq %rbx, 0x8(%rax)
movq %r12, 0x10(%rax)
movq %rax, 0x10(%rbp)
movq 0x10(%r13), %r13
cmpb $0x1, (%r13)
movq %rax, %rbp
je 0x4555e
movq 0x110(%r15), %rax
movq %rax, 0x4e8(%r15)
movq %rax, 0x4c8(%r15)
movq 0x20(%rsp), %rbx
movq 0x18(%rsp), %rax
movq (%rsp), %rdx
jmp 0x457e4
testb %bpl, %bpl
je 0x45a7b
movq 0x8(%rbx), %rsi
movq 0x109364(%rip), %rdx    # 0x14e958
movq 0x140(%r15), %r8
movq 0x10d506(%rip), %r9     # 0x152b08
movq %r15, %rdi
movq %r14, %rcx
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xb31d
movq 0x10d346(%rip), %rax    # 0x152968
movq 0x6e8(%r15), %rcx
movq %rax, 0x8(%rcx)
movq 0x10(%rcx), %rax
movq %rbx, 0x8(%rax)
movq 0x10(%rax), %rax
movq %r14, 0x8(%rax)
movq 0x6e8(%r15), %rdx
movq 0xea8(%r15), %r13
movq %r15, %rdi
movq %r13, %rsi
callq 0x3b366
jmp 0x45a7b
cmpb $0xb, (%rbp)
jne 0x4575a
cmpb $0x18, %cl
jne 0x456c4
cmpq $0x0, 0x8(%rbp)
js 0x4567b
cmpq $0x100, 0x8(%rbp)       # imm = 0x100
jl 0x456c4
movq 0x8(%rbx), %rax
movq 0x1092da(%rip), %rcx    # 0x14e960
movq 0x1159d3(%rip), %rdx    # 0x15b060
movq 0x1ee8(%r15), %rsi
movq 0x10(%rsi), %rsi
movq %rax, 0x8(%rsi)
movq 0x10(%rsi), %rax
movq %rcx, 0x8(%rax)
movq 0x10(%rax), %rax
movq %rbp, 0x8(%rax)
movq 0x10(%rax), %rax
movq %rdx, 0x8(%rax)
movq 0x1948(%r15), %r13
movq 0x1ee8(%r15), %rdx
jmp 0x4564b
movq 0x8(%r14), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
cmpq 0x110(%r15), %rax
je 0x45729
movq %rbp, %r12
leaq 0x10(%rsp), %rbp
movq %rbx, %rsi
leaq 0x8(%rsp), %rbx
movq %r15, %rdi
movq %r13, %rdx
movl $0x3, %ecx
movq %rbp, %r8
movq %rbx, %r9
callq 0xa0e7c
movq %rax, %r13
movq (%rbx), %rax
cmpq %rax, (%rbp)
movq %r12, %rbp
setne %al
cmpq 0x140(%r15), %r13
sete %cl
cmoveq %r12, %r13
andb %al, %cl
cmpb $0x1, %cl
jne 0x45a7b
movq 0x8(%rsp), %r12
testq %r12, %r12
je 0x45a78
movq 0x10(%rsp), %r13
testq %r13, %r13
jne 0x45785
cmpq 0x8(%r14), %r12
jne 0x45785
movq %r15, %rdi
movq %r14, %rsi
movq %rbp, %rdx
callq 0x3d67b
jmp 0x45a78
movq %r15, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
movq %r13, %rcx
movl $0xb, %r8d
movl $0x2, %r9d
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xf1ae
movzbl (%r14), %eax
addl $-0x15, %eax
cmpl $0x3, %eax
ja 0x45a78
leaq 0xcb0cc(%rip), %rcx     # 0x110868
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
testb $0x2, 0x6(%r14)
je 0x4598b
movq 0x28(%r14), %rsi
cmpb $0x30, (%rsi)
jb 0x45933
movq 0x10(%rsi), %rax
movq 0x700(%r15), %rcx
movq %rbp, 0x8(%rcx)
movq 0x700(%r15), %rsi
movq %r15, %rdi
callq *%rax
jmp 0x4594d
movq 0x110(%r15), %rdx
movq %r15, %rdi
movq %rax, %rsi
callq 0xbd41
movq %rax, %r13
xorl %ebp, %ebp
jmp 0x455e0
cmpb $0xd, (%rbp)
jne 0x45825
movsd 0x8(%rbp), %xmm0
jmp 0x4583b
cmpb $0xb, (%rbp)
jne 0x45865
movzbl 0x8(%rbp), %eax
jmp 0x45867
cmpb $0xb, (%rbp)
jne 0x458b4
movq 0x8(%rbp), %rax
jmp 0x458b6
movq 0x10d204(%rip), %rdi    # 0x152a30
leaq 0xcd735(%rip), %rdx     # 0x112f68
movq %rbp, %rsi
callq 0xe212
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x4584b
jnp 0x458d9
movq 0x10(%r14), %rcx
leaq -0x8(%r12), %rax
cmpq %rax, %r13
jle 0x459a9
movq %r13, %rdx
jmp 0x459d8
xorl %eax, %eax
subq %r13, %r12
testq %rax, %rax
je 0x458f3
addq 0x10(%r14), %r13
cmpq $0x8, %r12
jb 0x458a3
movq %r12, %rcx
shrq $0x3, %rcx
movabsq $0x101010101010101, %rdx # imm = 0x101010101010101
imulq %rax, %rdx
movq %rdx, (%r13)
addq $0x8, %r13
decq %rcx
jne 0x45892
andl $0x7, %r12d
testq %r12, %r12
je 0x45a78
movzbl %al, %esi
movq %r13, %rdi
jmp 0x45926
xorl %eax, %eax
testq %rax, %rax
je 0x458d9
cmpq %r13, %r12
jle 0x45a78
movq 0x10(%r14), %rcx
movq %rax, (%rcx,%r13,8)
incq %r13
cmpq %r13, %r12
jne 0x458c4
jmp 0x45a78
subq %r13, %r12
shlq $0x3, %r12
testq %r12, %r12
je 0x45a78
shlq $0x3, %r13
addq 0x10(%r14), %r13
jmp 0x45921
addq 0x10(%r14), %r13
cmpq $0x8, %r12
jb 0x45918
movq %r12, %rbx
andq $-0x8, %rbx
movq %r13, %rdi
xorl %esi, %esi
movq %rbx, %rdx
callq 0x9270
addq %rbx, %r13
andl $0x7, %r12d
testq %r12, %r12
je 0x45a78
movq %r13, %rdi
xorl %esi, %esi
movq %r12, %rdx
callq 0x9270
jmp 0x45a78
movq 0x700(%r15), %rax
movq %rbp, 0x8(%rax)
movq 0x700(%r15), %rdx
movq %r15, %rdi
callq 0xbd41
cmpq 0x120(%r15), %rax
jne 0x4598b
movq %r15, %rdi
movq %r14, %rsi
callq 0xa0581
movq %r15, %rdi
movq %rax, %rsi
movl $0x1, %edx
callq 0xa0491
leaq 0xda676(%rip), %rsi     # 0x11ffee
movl $0x2, %edx
movq %r15, %rdi
movq %rbp, %rcx
movq %rax, %r8
callq 0xe25f
cmpq %r13, %r12
jle 0x45a78
movq 0x10(%r14), %rax
movq %rbp, (%rax,%r13,8)
incq %r13
cmpq %r13, %r12
jne 0x45994
jmp 0x45a78
movapd %xmm0, %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
movupd %xmm1, (%rcx,%r13,8)
movupd %xmm1, 0x10(%rcx,%r13,8)
leaq 0x8(%r13), %rdx
movupd %xmm1, 0x20(%rcx,%r13,8)
movupd %xmm1, 0x30(%rcx,%r13,8)
movq %rdx, %r13
cmpq %rax, %rdx
jle 0x459b1
subq %rdx, %r12
jle 0x45a78
leaq 0x1(%r12), %rax
andq $-0x2, %rax
decq %r12
movq %r12, %xmm1
pshufd $0x44, %xmm1, %xmm1     # xmm1 = xmm1[0,1,0,1]
leaq (%rcx,%rdx,8), %rcx
addq $0x8, %rcx
xorl %edx, %edx
movdqa 0xcd3d7(%rip), %xmm2    # 0x112de0
movdqa 0xcd3df(%rip), %xmm3    # 0x112df0
pxor %xmm3, %xmm1
pcmpeqd %xmm4, %xmm4
movq %rdx, %xmm5
pshufd $0x44, %xmm5, %xmm5     # xmm5 = xmm5[0,1,0,1]
por %xmm2, %xmm5
pxor %xmm3, %xmm5
movdqa %xmm5, %xmm6
pcmpgtd %xmm1, %xmm6
pcmpeqd %xmm1, %xmm5
pshufd $0xf5, %xmm5, %xmm7     # xmm7 = xmm5[1,1,3,3]
pand %xmm6, %xmm7
pshufd $0xf5, %xmm6, %xmm5     # xmm5 = xmm6[1,1,3,3]
por %xmm7, %xmm5
movd %xmm5, %esi
notl %esi
testb $0x1, %sil
je 0x45a5b
movsd %xmm0, -0x8(%rcx,%rdx,8)
pxor %xmm4, %xmm5
pextrw $0x4, %xmm5, %esi
testb $0x1, %sil
je 0x45a6f
movsd %xmm0, (%rcx,%rdx,8)
addq $0x2, %rdx
cmpq %rdx, %rax
jne 0x45a19
movq %rbp, %r13
movq %r13, %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq