// File: /workspace/github_c_makefile_star2_O3/BernardTatin[P]s7sh/s7.c
// Function: missing_close_paren_error
static s7_pointer missing_close_paren_error(s7_scheme *sc)
                {
                    s7_int len;
                    char *msg, *syntax_msg = NULL;
                    s7_pointer pt;

                    if ((unchecked_type(sc->envir) != T_LET) &&
                            (sc->envir != sc->nil))
                        sc->envir = sc->nil;

                    pt = sc->input_port;

                    /* check *missing-close-paren-hook* */
                    if (hook_has_functions(sc->missing_close_paren_hook))
                    {
                        s7_pointer result;
                        if ((port_line_number(pt) > 0) &&
                                (port_filename(pt)))
                        {
                            integer(slot_value(sc->error_line)) = port_line_number(pt);
                            slot_set_value(sc->error_file, wrap_string(sc, port_filename(pt), port_filename_length(pt)));
                        }
                        result = s7_call(sc, sc->missing_close_paren_hook, sc->nil);
                        if (result != sc->unspecified)
                            return(g_throw(sc, list_1(sc, result)));
                    }

                    if (is_pair(sc->args))
                    {
                        s7_pointer p;
                        p = tree_descend(sc, sc->args, 0);
                        if ((p) && (is_pair(p)) &&
                                (has_line_number(p)))
                        {
                            s7_int msg_len, form_len;
                            s7_pointer strp;
                            char *form;
                            strp = object_to_truncated_string(sc, p, 40);
                            form = string_value(strp);
                            form_len = string_length(strp);
                            msg_len = form_len + 128;
                            syntax_msg = (char *)malloc(msg_len);
                            snprintf(syntax_msg, msg_len, ";  current form awaiting a close paren starts around line %u: %s", pair_line_number(p), form);
                        }
                    }

                    if ((port_line_number(pt) > 0) &&
                            (port_filename(pt)))
                    {
                        s7_pointer p;
                        len = port_filename_length(pt) + safe_strlen(sc->current_file) + safe_strlen(syntax_msg) + 128;
                        p = make_empty_string(sc, len, '\0');
                        msg = string_value(p);
                        if (syntax_msg)
                        {
                            len = snprintf(msg, len, "missing close paren, %s[%u], last top-level form at %s[%" print_s7_int "]\n%s",
                                    port_filename(pt), port_line_number(pt),
                                    sc->current_file, sc->current_line, syntax_msg);
                            free(syntax_msg);
                        }
                        else len = snprintf(msg, len, "missing close paren, %s[%u], last top-level form at %s[%" print_s7_int "]",
                                port_filename(pt), port_line_number(pt),
                                sc->current_file, sc->current_line);
                        string_length(p) = len;
                        return(s7_error(sc, sc->read_error_symbol, set_elist_1(sc, p)));
                    }

                    if (syntax_msg)
                    {
                        s7_pointer p;
                        len = safe_strlen(syntax_msg) + 128;
                        p = make_empty_string(sc, len, '\0');
                        msg = string_value(p);
                        len = catstrs(msg, len, "missing close paren\n", syntax_msg, "\n", NULL);
                        free(syntax_msg);
                        string_length(p) = len;
                        return(s7_error(sc, sc->read_error_symbol, set_elist_1(sc, p)));
                    }

                    if ((is_input_port(pt)) &&
                            (!port_is_closed(pt)) &&
                            (port_data(pt)) &&
                            (port_position(pt) > 0))
                    {
                        s7_pointer p;
                        s7_int start, pos;

                        p = make_empty_string(sc, 128, '\0');
                        msg = string_value(p);
                        memcpy((void *)msg, (void *)"missing close paren: ", 21);

                        pos = port_position(pt);
                        start = pos - 40;
                        if (start < 0) start = 0;
                        memcpy((void *)(msg + 21), (void *)(port_data(pt) + start), pos - start);
                        string_length(p) = 21 + pos - start;
                        return(s7_error(sc, sc->read_error_symbol, set_elist_1(sc, p)));
                    }
                    return(s7_error(sc, sc->read_error_symbol, set_elist_1(sc, wrap_string(sc, "missing close paren", 19))));
                }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x8(%rdi), %rax
cmpb $0x1c, (%rax)
je 0xcb566
movq 0x110(%rbx), %rcx
cmpq %rcx, %rax
je 0xcb566
movq %rcx, 0x8(%rbx)
movq 0x170(%rbx), %rbp
movq 0x1f8(%rbx), %r14
movq 0x18e0(%rbx), %rsi
movq 0x18(%r14), %rdx
movq %rbx, %rdi
callq 0xbe9a
cmpb $0x1, (%rax)
jne 0xcb66d
movq 0x8(%rbp), %rcx
movl 0x20(%rcx), %eax
testq %rax, %rax
je 0xcb5f5
cmpq $0x0, 0x10(%rcx)
je 0xcb5f5
movq 0x1b8(%rbx), %rcx
movq 0x10(%rcx), %rcx
movq %rax, 0x8(%rcx)
movq 0x8(%rbp), %rax
movq 0x10(%rax), %rcx
movq 0x30(%rax), %rax
movq 0x820(%rbx), %rdx
movslq 0x7dc(%rbx), %rsi
movq (%rdx,%rsi,8), %rdx
incl %esi
andl $0x7, %esi
movl %esi, 0x7dc(%rbx)
movq %rcx, 0x10(%rdx)
movq %rax, 0x8(%rdx)
movq 0x1c0(%rbx), %rax
movq %rdx, 0x10(%rax)
movq 0x1f8(%rbx), %r14
movq 0x110(%rbx), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x43bf0
cmpq 0x130(%rbx), %rax
je 0xcb66d
movq %rax, %r14
movq 0x90(%rbx), %rax
movq 0x110(%rbx), %r15
cmpq 0x98(%rbx), %rax
ja 0xcb639
movq %rbx, %rdi
callq 0xa550
movq 0x90(%rbx), %rax
leaq -0x8(%rax), %rcx
movq %rcx, 0x90(%rbx)
movq -0x8(%rax), %rsi
movq $0x200001, (%rsi)       # imm = 0x200001
movq %r14, 0x8(%rsi)
movq %r15, 0x10(%rsi)
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x7e6d4
movq 0x10(%rbx), %rdi
cmpb $0x1, (%rdi)
jne 0xcb698
xorl %r14d, %r14d
xorl %esi, %esi
callq 0xe8893
testq %rax, %rax
je 0xcb69b
movq %rax, %r15
cmpb $0x1, (%rax)
jne 0xcb698
testb $0x4, 0x2(%r15)
jne 0xcb90a
xorl %r14d, %r14d
movq 0x8(%rbp), %rax
cmpl $0x0, 0x20(%rax)
je 0xcb6cf
cmpq $0x0, 0x10(%rax)
je 0xcb6cf
movq 0x6a8(%rbx), %rdx
testq %rdx, %rdx
je 0xcb6fb
cmpb $0x0, (%rdx)
je 0xcb6fb
xorl %esi, %esi
leaq 0x1(%rsi), %rcx
cmpb $0x0, 0x1(%rdx,%rsi)
movq %rcx, %rsi
jne 0xcb6bf
jmp 0xcb6fd
testq %r14, %r14
je 0xcb78e
cmpb $0x0, (%r14)
je 0xcb88c
movl $0x80, %eax
leaq 0x1(%rax), %r15
cmpb $0x0, -0x7f(%r14,%rax)
movq %r15, %rax
jne 0xcb6e7
jmp 0xcb892
xorl %ecx, %ecx
movq 0x30(%rax), %rax
testq %r14, %r14
je 0xcb71f
cmpb $0x0, (%r14)
je 0xcb71f
xorl %esi, %esi
leaq 0x1(%rsi), %rdx
cmpb $0x0, 0x1(%r14,%rsi)
movq %rdx, %rsi
jne 0xcb70e
jmp 0xcb721
xorl %edx, %edx
addq %rcx, %rax
leaq (%rdx,%rax), %r12
addq $0x80, %r12
movq %rbx, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0xeab0
movq %rax, %r15
movq 0x10(%rax), %rdi
movq 0x8(%rbp), %rax
movq 0x10(%rax), %rcx
movl 0x20(%rax), %r8d
movq 0x690(%rbx), %r10
movq 0x6a8(%rbx), %r9
testq %r14, %r14
je 0xcb854
leaq 0x4de47(%rip), %rdx     # 0x1195b4
movq %r12, %rsi
xorl %eax, %eax
pushq %r14
pushq %r10
callq 0x8210
addq $0x10, %rsp
movl %eax, %ebp
movq %r14, %rdi
callq 0x8050
jmp 0xcb871
cmpb $0x23, (%rbp)
jne 0xcb80d
cmpb $0x0, 0x2(%rax)
jne 0xcb80d
cmpq $0x0, 0x10(%rbp)
je 0xcb80d
cmpq $0x0, 0x20(%rbp)
jle 0xcb80d
movl $0x80, %esi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xeab0
movq %rax, %r15
movq 0x10(%rax), %rdi
movups 0x4de7f(%rip), %xmm0    # 0x119644
movups %xmm0, (%rdi)
movabsq $0x203a6e6572617020, %rax # imm = 0x203A6E6572617020
movq %rax, 0xd(%rdi)
movq 0x20(%rbp), %r14
cmpq $0x29, %r14
movl $0x28, %r12d
cmovgeq %r14, %r12
leaq -0x28(%r12), %rsi
addq $0x15, %rdi
movq %r14, %rdx
subq %rsi, %rdx
addq 0x10(%rbp), %rsi
callq 0x83e0
subq %r12, %r14
addq $0x3d, %r14
movq %r14, 0x8(%r15)
jmp 0xcb878
movq 0x1908(%rbx), %r14
movq 0x820(%rbx), %rax
movslq 0x7dc(%rbx), %rcx
movq (%rax,%rcx,8), %rax
incl %ecx
andl $0x7, %ecx
movl %ecx, 0x7dc(%rbx)
leaq 0x4de22(%rip), %rcx     # 0x11965a
movq %rcx, 0x10(%rax)
movq $0x13, 0x8(%rax)
movq 0x6d8(%rbx), %rcx
movq %rax, 0x8(%rcx)
jmp 0xcb8e6
subq $0x8, %rsp
leaq 0x4dd94(%rip), %rdx     # 0x1195f3
movq %r12, %rsi
xorl %eax, %eax
pushq %r10
callq 0x8210
addq $0x10, %rsp
movl %eax, %ebp
movslq %ebp, %rax
movq %rax, 0x8(%r15)
movq 0x1908(%rbx), %r14
movq 0x6d8(%rbx), %rax
movq %r15, 0x8(%rax)
jmp 0xcb8e6
movl $0x80, %r15d
movq %rbx, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0xeab0
movq %rax, %r12
movq 0x10(%rax), %rdi
leaq 0x4dd82(%rip), %rdx     # 0x11962f
leaq 0x50c19(%rip), %r8      # 0x11c4cd
movq %r15, %rsi
movq %r14, %rcx
xorl %r9d, %r9d
xorl %eax, %eax
callq 0x9517
movq %rax, %r15
movq %r14, %rdi
callq 0x8050
movq %r15, 0x8(%r12)
movq 0x1908(%rbx), %r14
movq 0x6d8(%rbx), %rax
movq %r12, 0x8(%rax)
movq 0x6d8(%rbx), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x38dfa
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x28, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x43f21
movq 0x8(%rax), %r12
movq 0x10(%rax), %r13
subq $-0x80, %r12
movq %r12, %rdi
callq 0x8480
movq %rax, %r14
movl 0x2c(%r15), %ecx
leaq 0x4dc37(%rip), %rdx     # 0x119573
movq %rax, %rdi
movq %r12, %rsi
movq %r13, %r8
xorl %eax, %eax
callq 0x8210
jmp 0xcb69b