// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: g_string_upcase
static s7_pointer g_string_upcase(s7_scheme *sc, s7_pointer args)
    {
#define H_string_upcase "(string-upcase str) returns the upper case version of str."
#define Q_string_upcase 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_upcase_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] = uppers[(uint8_t)ostr[i]]; i--);
            while (i >= 0) {nstr[i] = uppers[(uint8_t)ostr[i]]; i--;}
        }
        else
        {
            for (i = 0; i < len; i++)
                nstr[i] = uppers[(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 0x8cbe5
movq 0x78(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x78(%rsp), %rax
movq 0x1570(%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 0x8cb64
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 0x8ce9b
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 0x8ce40
movq 0x50(%rsp), %rax
subq $0x1, %rax
movq %rax, 0x58(%rsp)
cmpq $0x8, 0x58(%rsp)
jl 0x8cdfd
jmp 0x8cc50
movq 0x40(%rsp), %rax
movq 0x58(%rsp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x195b09(%rip), %rax    # 0x222770
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 0x195ad4(%rip), %rax    # 0x222770
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 0x195a9f(%rip), %rax    # 0x222770
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 0x195a6a(%rip), %rax    # 0x222770
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 0x195a35(%rip), %rax    # 0x222770
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 0x195a00(%rip), %rax    # 0x222770
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 0x1959cb(%rip), %rax    # 0x222770
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 0x195996(%rip), %rax    # 0x222770
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 0x8cc42
jmp 0x8cdff
cmpq $0x0, 0x58(%rsp)
jl 0x8ce3e
movq 0x40(%rsp), %rax
movq 0x58(%rsp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x195952(%rip), %rax    # 0x222770
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 0x8cdff
jmp 0x8ce8e
movq $0x0, 0x58(%rsp)
movq 0x58(%rsp), %rax
cmpq 0x50(%rsp), %rax
jge 0x8ce8c
movq 0x40(%rsp), %rax
movq 0x58(%rsp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x195904(%rip), %rax    # 0x222770
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 0x8ce49
jmp 0x8ce8e
movq 0x60(%rsp), %rax
movq %rax, 0x80(%rsp)
movq 0x80(%rsp), %rax
addq $0x88, %rsp
retq
nopl (%rax,%rax)