// File: /workspace/github_c_makefile_star2_O2/BernardTatin[P]s7sh/s7.c
// Function: g_make_byte_vector
static s7_pointer g_make_byte_vector(s7_scheme *sc, s7_pointer args)
                {
#define H_make_byte_vector "(make-byte-vector len (byte 0)) makes a byte-vector of length len filled with byte."
#define Q_make_byte_vector s7_make_signature(sc, 3, sc->is_byte_vector_symbol, s7_make_signature(sc, 2, sc->is_integer_symbol, sc->is_pair_symbol), sc->is_byte_symbol)

                    s7_int len = 0, ib = 0;
                    s7_pointer p, init;
                    p = car(args);

                    if (!is_pair(p))
                    {
                        if (!s7_is_integer(p))
                            return(method_or_bust(sc, p, sc->make_byte_vector_symbol, args, T_INTEGER, 1));
                        len = s7_integer(p);
                        if ((len < 0) || (len > sc->max_vector_length))
                            return(out_of_range(sc, sc->make_byte_vector_symbol, small_int(1), p, (len < 0) ? its_negative_string : its_too_large_string));
                    }
                    if (is_pair(cdr(args)))
                    {
                        init = cadr(args);
                        if (!s7_is_integer(init))
                            return(method_or_bust(sc, init, sc->make_byte_vector_symbol, args, T_INTEGER, 2));
                        ib = s7_integer(init);
                        if ((ib < 0) || (ib > 255))
                            return(simple_wrong_type_argument_with_type(sc, sc->make_byte_vector_symbol, init, an_unsigned_byte_string));
                    }
                    else init = small_int(0);

                    if (!s7_is_integer(p))
                        return(g_make_vector_1(sc, set_plist_2(sc, p, init), sc->make_byte_vector_symbol));

                    p = make_simple_byte_vector(sc, len);
                    if ((len > 0) && (is_pair(cdr(args))))
                        local_memset((void *)(byte_vector_bytes(p)), ib, len);
                    return(p);
                }

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq 0x8(%rsi), %rcx
movzbl (%rcx), %edx
cmpl $0x1, %edx
je 0x6384f
cmpl $0xb, %edx
jne 0x638a1
movq 0x8(%rcx), %r14
testq %r14, %r14
js 0x63815
cmpq 0x2a0(%rdi), %r14
jle 0x63852
testq %r14, %r14
movq 0x12d0(%rdi), %rax
movq 0x8(%rax), %rsi
movq 0xb212e(%rip), %rdx     # 0x115958
leaq 0xb6217(%rip), %rax     # 0x119a48
leaq 0xb6208(%rip), %r8      # 0x119a40
cmovsq %rax, %r8
movq (%r8), %r8
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0xcb8f
xorl %r14d, %r14d
movq 0x10(%rbx), %rax
cmpb $0x1, (%rax)
jne 0x638b8
movq 0x8(%rax), %rax
cmpb $0xb, (%rax)
jne 0x63933
movq 0x8(%rax), %r12
cmpq $0x100, %r12            # imm = 0x100
jb 0x638c2
movq 0x12d0(%rdi), %rcx
movq 0x8(%rcx), %rsi
movq 0x140(%rdi), %rcx
movq 0xbe7d2(%rip), %r8      # 0x122060
movq %rax, %rdx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0xd456
movq 0x12d0(%rdi), %rdx
pushq $0xb
popq %r8
pushq $0x1
popq %r9
movq %rcx, %rsi
jmp 0x63945
movq 0xb2091(%rip), %rax     # 0x115950
xorl %r12d, %r12d
cmpb $0xb, %dl
jne 0x638ff
movq %r14, %rsi
callq 0x2fe85
movq %rax, %r15
testq %r14, %r14
je 0x638f0
movq 0x10(%rbx), %rax
cmpb $0x1, (%rax)
jne 0x638f0
movq 0x10(%r15), %rdi
movzbl %r12b, %esi
movq %r14, %rdx
callq 0x73e47
movq %r15, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq 0x708(%rdi), %rdx
movq %rcx, 0x8(%rdx)
movq 0x710(%rdi), %rcx
movq %rax, 0x8(%rcx)
movq 0x708(%rdi), %rsi
movq 0x12d0(%rdi), %rdx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x2f867
movq 0x12d0(%rdi), %rdx
pushq $0xb
popq %r8
pushq $0x2
popq %r9
movq %rax, %rsi
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0xcd70