// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: op_load_close_and_pop_if_eof
static bool op_load_close_and_pop_if_eof(s7_scheme *sc)
                {
                    /* (load "file") in scheme
                     *    read and evaluate all exprs, then upon EOF, close current and pop input port stack
                     */
                    if (sc->tok != TOKEN_EOF)
                    {
                        push_stack_op_let(sc, OP_LOAD_CLOSE_AND_POP_IF_EOF); /* was push args, code */
                        if ((!is_string_port(sc->input_port)) ||
                                (port_position(sc->input_port) < port_data_size(sc->input_port)))
                            push_stack_op_let(sc, OP_READ_INTERNAL);
                        else sc->tok = TOKEN_EOF;
                        sc->code = sc->value;
                        return(true);             /* we read an expression, now evaluate it, and return to read the next */
                    }
#if S7_DEBUGGING
                    if (!is_loader_port(sc->input_port))
                        fprintf(stderr, "%s not loading?\n", DISPLAY(sc->input_port));
                    /* if *#readers* func hits error, clear_loader_port might not be undone? */
#endif
                    s7_close_input_port(sc, sc->input_port);
                    pop_input_port(sc);
                    sc->current_file = NULL;

                    if (is_multiple_value(sc->value))                    /* (load "file") where "file" is (values 1 2 3) */
                        sc->value = splice_in_values(sc, multiple_value(sc->value));
                    return(false);
                }

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
movq 0x8(%rsp), %rax
cmpl $0x0, 0x30(%rax)
je 0x15875c
jmp 0x15868a
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x8(%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rax
movq 0x50(%rax), %rax
movl $0x1de, %ecx            # imm = 0x1DE
movq %rcx, 0x18(%rax)
movq 0x8(%rsp), %rax
movq 0x50(%rax), %rcx
addq $0x20, %rcx
movq %rcx, 0x50(%rax)
movq 0x8(%rsp), %rax
movq 0x170(%rax), %rax
movq 0x8(%rax), %rax
cmpl $0x1, 0x4(%rax)
jne 0x1586fb
movq 0x8(%rsp), %rax
movq 0x170(%rax), %rax
movq 0x20(%rax), %rax
movq 0x8(%rsp), %rcx
movq 0x170(%rcx), %rcx
cmpq 0x18(%rcx), %rax
jge 0x158738
jmp 0x1586fd
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x8(%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rax
movq 0x50(%rax), %rax
movl $0x190, %ecx            # imm = 0x190
movq %rcx, 0x18(%rax)
movq 0x8(%rsp), %rax
movq 0x50(%rax), %rcx
addq $0x20, %rcx
movq %rcx, 0x50(%rax)
jmp 0x158744
movq 0x8(%rsp), %rax
movl $0x0, 0x30(%rax)
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rcx
movq 0x8(%rsp), %rax
movq %rcx, (%rax)
movb $0x1, 0x17(%rsp)
jmp 0x1587c6
movq 0x8(%rsp), %rdi
movq 0x8(%rsp), %rax
movq 0x170(%rax), %rsi
callq 0x14ce0
movq 0x8(%rsp), %rdi
callq 0x274d0
movq 0x8(%rsp), %rax
movq $0x0, 0x6a8(%rax)
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rax
movzwl (%rax), %eax
andl $0x8000, %eax           # imm = 0x8000
cmpl $0x0, %eax
je 0x1587c1
movq 0x8(%rsp), %rdi
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rsi
callq 0x28170
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x20(%rax)
movb $0x0, 0x17(%rsp)
movb 0x17(%rsp), %al
andb $0x1, %al
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)