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

        if (!is_string(x))
            return(method_or_bust(sc, x, caller, args, T_STRING, 1)); /* not two methods here */
        if (is_immutable_string(x))
            return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, caller, x)));

        chr = cadr(args);
        if (!s7_is_character(chr))
            return(method_or_bust(sc, chr, caller, args, T_CHARACTER, 2));

        end = string_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(chr);
        }
        if (end == 0) return(chr);

        if ((int)(character(chr)) == 0)
            memclr((void *)(string_value(x) + start), end - start);
        else local_memset((void *)(string_value(x) + start), (int32_t)character(chr), end - start);

        return(chr);
    }

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x48(%rsp)
movq %rsi, 0x40(%rsp)
movq %rdx, 0x38(%rsp)
movq $0x0, 0x20(%rsp)
movq 0x38(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x13, %eax
je 0x42c56
movq 0x48(%rsp), %rdi
movq 0x30(%rsp), %rsi
movq 0x40(%rsp), %rdx
movq 0x38(%rsp), %rcx
movl $0x13, %r8d
movl $0x1, %r9d
callq 0x13c50
movq %rax, 0x50(%rsp)
jmp 0x42df6
movq 0x30(%rsp), %rax
movq (%rax), %rax
andq $0x1000000, %rax        # imm = 0x1000000
cmpq $0x0, %rax
je 0x42ca6
movq 0x48(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x48(%rsp), %rdi
movq 0x1d7818(%rip), %rsi    # 0x21a498
movq 0x40(%rsp), %rdx
movq 0x30(%rsp), %rcx
callq 0xf240
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0xb800
movq %rax, 0x50(%rsp)
jmp 0x42df6
movq 0x38(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rdi
callq 0x14430
testb $0x1, %al
jne 0x42cf5
movq 0x48(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq 0x40(%rsp), %rdx
movq 0x38(%rsp), %rcx
movl $0x8, %r8d
movl $0x2, %r9d
callq 0x13c50
movq %rax, 0x50(%rsp)
jmp 0x42df6
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x38(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x48(%rsp), %rcx
cmpq 0x110(%rcx), %rax
je 0x42d82
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rsi
movq 0x38(%rsp), %rdx
movl $0x3, %ecx
leaq 0x20(%rsp), %r8
leaq 0x18(%rsp), %r9
callq 0xda710
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq 0x48(%rsp), %rcx
cmpq 0x140(%rcx), %rax
je 0x42d68
movq 0x10(%rsp), %rax
movq %rax, 0x50(%rsp)
jmp 0x42df6
movq 0x20(%rsp), %rax
cmpq 0x18(%rsp), %rax
jne 0x42d80
movq 0x28(%rsp), %rax
movq %rax, 0x50(%rsp)
jmp 0x42df6
jmp 0x42d82
cmpq $0x0, 0x18(%rsp)
jne 0x42d96
movq 0x28(%rsp), %rax
movq %rax, 0x50(%rsp)
jmp 0x42df6
movq 0x28(%rsp), %rax
movzbl 0x8(%rax), %eax
cmpl $0x0, %eax
jne 0x42dc3
movq 0x30(%rsp), %rax
movq 0x10(%rax), %rdi
addq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rsi
subq 0x20(%rsp), %rsi
callq 0xd2340
jmp 0x42dec
movq 0x30(%rsp), %rax
movq 0x10(%rax), %rdi
addq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rax
movzbl 0x8(%rax), %eax
movq 0x18(%rsp), %rdx
subq 0x20(%rsp), %rdx
movzbl %al, %esi
callq 0xc85e0
movq 0x28(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rax
addq $0x58, %rsp
retq