// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: g_string_downcase
static s7_pointer g_string_downcase(s7_scheme *sc, s7_pointer args)
    {
#define H_string_downcase "(string-downcase str) returns the lower case version of str."
#define Q_string_downcase sc->pcl_s

        s7_pointer p, newstr;
        s7_int i, len;
        uint8_t *nstr, *ostr;

        p = car(args);
        if (!is_string(p))
            return(method_or_bust_one_arg(sc, p, sc->string_downcase_symbol, list_1(sc, p), T_STRING));
        len = string_length(p);
        newstr = make_empty_string(sc, len, 0);

        ostr = (uint8_t *)string_value(p);
        nstr = (uint8_t *)string_value(newstr);

        if (len >= 128)
        {
            i = len - 1;
            while (i >= 8)
                LOOP_8(nstr[i] = lowers[(uint8_t)ostr[i]]; i--);
            while (i >= 0) {nstr[i] = lowers[(uint8_t)ostr[i]]; i--;}
        }
        else
        {
            for (i = 0; i < len; i++)
                nstr[i] = lowers[(uint8_t)ostr[i]];
        }
        return(newstr);
    }

// Assembly:
subq $0x88, %rsp
movq %rdi, 0x78(%rsp)
movq %rsi, 0x70(%rsp)
movq 0x70(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x13, %eax
je 0x8c805
movq 0x78(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x78(%rsp), %rax
movq 0x1508(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x78(%rsp), %rax
movq 0x110(%rax), %rax
movq %rax, 0x28(%rsp)
movq 0x78(%rsp), %rax
movq 0x90(%rax), %rax
movq 0x78(%rsp), %rcx
cmpq 0x98(%rcx), %rax
ja 0x8c784
movq 0x78(%rsp), %rdi
callq 0xc670
movq 0x78(%rsp), %rcx
movq 0x90(%rcx), %rax
movq %rax, %rdx
addq $-0x8, %rdx
movq %rdx, 0x90(%rcx)
movq -0x8(%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rax
movq $0x200001, (%rax)       # imm = 0x200001
movq 0x18(%rsp), %rdx
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rdi
movq 0x30(%rsp), %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x28(%rsp), %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x38(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rcx
movl $0x13, %r8d
callq 0xcfd30
movq %rax, 0x80(%rsp)
jmp 0x8cabb
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x50(%rsp)
movq 0x78(%rsp), %rdi
movq 0x50(%rsp), %rsi
xorl %edx, %edx
callq 0x146a0
movq %rax, 0x60(%rsp)
movq 0x68(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x40(%rsp)
movq 0x60(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x48(%rsp)
cmpq $0x80, 0x50(%rsp)
jl 0x8ca60
movq 0x50(%rsp), %rax
subq $0x1, %rax
movq %rax, 0x58(%rsp)
cmpq $0x8, 0x58(%rsp)
jl 0x8ca1d
jmp 0x8c870
movq 0x40(%rsp), %rax
movq 0x58(%rsp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x198799(%rip), %rax    # 0x225020
movb (%rax,%rcx), %dl
movq 0x48(%rsp), %rax
movq 0x58(%rsp), %rcx
movb %dl, (%rax,%rcx)
movq 0x58(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x58(%rsp)
movq 0x40(%rsp), %rax
movq 0x58(%rsp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x198764(%rip), %rax    # 0x225020
movb (%rax,%rcx), %dl
movq 0x48(%rsp), %rax
movq 0x58(%rsp), %rcx
movb %dl, (%rax,%rcx)
movq 0x58(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x58(%rsp)
movq 0x40(%rsp), %rax
movq 0x58(%rsp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x19872f(%rip), %rax    # 0x225020
movb (%rax,%rcx), %dl
movq 0x48(%rsp), %rax
movq 0x58(%rsp), %rcx
movb %dl, (%rax,%rcx)
movq 0x58(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x58(%rsp)
movq 0x40(%rsp), %rax
movq 0x58(%rsp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x1986fa(%rip), %rax    # 0x225020
movb (%rax,%rcx), %dl
movq 0x48(%rsp), %rax
movq 0x58(%rsp), %rcx
movb %dl, (%rax,%rcx)
movq 0x58(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x58(%rsp)
movq 0x40(%rsp), %rax
movq 0x58(%rsp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x1986c5(%rip), %rax    # 0x225020
movb (%rax,%rcx), %dl
movq 0x48(%rsp), %rax
movq 0x58(%rsp), %rcx
movb %dl, (%rax,%rcx)
movq 0x58(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x58(%rsp)
movq 0x40(%rsp), %rax
movq 0x58(%rsp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x198690(%rip), %rax    # 0x225020
movb (%rax,%rcx), %dl
movq 0x48(%rsp), %rax
movq 0x58(%rsp), %rcx
movb %dl, (%rax,%rcx)
movq 0x58(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x58(%rsp)
movq 0x40(%rsp), %rax
movq 0x58(%rsp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x19865b(%rip), %rax    # 0x225020
movb (%rax,%rcx), %dl
movq 0x48(%rsp), %rax
movq 0x58(%rsp), %rcx
movb %dl, (%rax,%rcx)
movq 0x58(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x58(%rsp)
movq 0x40(%rsp), %rax
movq 0x58(%rsp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x198626(%rip), %rax    # 0x225020
movb (%rax,%rcx), %dl
movq 0x48(%rsp), %rax
movq 0x58(%rsp), %rcx
movb %dl, (%rax,%rcx)
movq 0x58(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x58(%rsp)
jmp 0x8c862
jmp 0x8ca1f
cmpq $0x0, 0x58(%rsp)
jl 0x8ca5e
movq 0x40(%rsp), %rax
movq 0x58(%rsp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x1985e2(%rip), %rax    # 0x225020
movb (%rax,%rcx), %dl
movq 0x48(%rsp), %rax
movq 0x58(%rsp), %rcx
movb %dl, (%rax,%rcx)
movq 0x58(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x58(%rsp)
jmp 0x8ca1f
jmp 0x8caae
movq $0x0, 0x58(%rsp)
movq 0x58(%rsp), %rax
cmpq 0x50(%rsp), %rax
jge 0x8caac
movq 0x40(%rsp), %rax
movq 0x58(%rsp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x198594(%rip), %rax    # 0x225020
movb (%rax,%rcx), %dl
movq 0x48(%rsp), %rax
movq 0x58(%rsp), %rcx
movb %dl, (%rax,%rcx)
movq 0x58(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x58(%rsp)
jmp 0x8ca69
jmp 0x8caae
movq 0x60(%rsp), %rax
movq %rax, 0x80(%rsp)
movq 0x80(%rsp), %rax
addq $0x88, %rsp
retq
nopl (%rax,%rax)