// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: op_do_end1
static goto_t op_do_end1(s7_scheme *sc)
                {
                    if (is_true(sc, sc->value))             /* sc->value is the result of end-test evaluation */
                    {
                        /* we're done -- deal with result exprs, if there isn't an end test, there also isn't a result (they're in the same list)
                         * multiple-value end-test result is ok
                         */
                        sc->code = T_Lst(cddr(sc->args));   /* result expr (a list -- implicit begin) */
                        free_cell(sc, sc->args);
                        sc->args = sc->nil;
                        if (is_null(sc->code))
                        {
                            if (is_multiple_value(sc->value))  /* (define (f) (+ 1 (do ((i 2 (+ i 1))) ((values i (+ i 1)))))) -> 6 */
                                sc->value = splice_in_values(sc, multiple_value(sc->value));
                            /* similarly, if the result is a multiple value:
                             * (define (f) (+ 1 (do ((i 2 (+ i 1))) ((= i 3) (values i (+ i 1)))))) -> 8
                             */
                            return(goto_start);
                        }
                        /* might be => here as in cond and case */
                        if (is_null(cdr(sc->code)))
                        {
                            if (has_fx(sc->code))
                            {
                                sc->value = fx_call(sc, sc->code);
                                return(goto_start);
                            }
                            sc->code = car(sc->code);
                            return(goto_eval);
                        }
                        if ((car(sc->code) == sc->feed_to_symbol) &&
                                (s7_symbol_value(sc, sc->feed_to_symbol) == sc->undefined))
                            return(goto_feed_to);
                        push_stack_no_args(sc, sc->begin_op, cdr(sc->code));
                        sc->code = car(sc->code);
                        return(goto_eval);
                    }
                    if (is_pair(sc->code))
                    {
                        if (is_null(car(sc->args)))
                            push_stack(sc, OP_DO_END, sc->args, sc->code);
                        else push_stack(sc, OP_DO_STEP, sc->args, sc->code);
                        return(goto_begin);
                    }
                    if (is_null(car(sc->args))) /* no steppers */
                        return(goto_do_end);
                    return(fall_through);
                }

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x18(%rsp), %rcx
cmpq 0x120(%rcx), %rax
je 0x13df88
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rcx
movq 0x18(%rsp), %rax
movq %rcx, (%rax)
movq 0x18(%rsp), %rdi
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rsi
callq 0x2bcd0
movq 0x18(%rsp), %rax
movq 0x110(%rax), %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rsp), %rcx
cmpq 0x110(%rcx), %rax
jne 0x13de2d
movq 0x18(%rsp), %rax
movq 0x20(%rax), %rax
movzwl (%rax), %eax
andl $0x8000, %eax           # imm = 0x8000
cmpl $0x0, %eax
je 0x13de20
movq 0x18(%rsp), %rdi
movq 0x18(%rsp), %rax
movq 0x20(%rax), %rsi
callq 0x28170
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x20(%rax)
movl $0x0, 0x24(%rsp)
jmp 0x13e0bc
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movq 0x18(%rsp), %rcx
cmpq 0x110(%rcx), %rax
jne 0x13dec2
movq 0x18(%rsp), %rax
movq (%rax), %rax
movzwl 0x6(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x13dea1
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rcx
movq 0x8(%rcx), %rsi
callq *%rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x20(%rax)
movl $0x0, 0x24(%rsp)
jmp 0x13e0bc
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rcx
movq 0x18(%rsp), %rax
movq %rcx, (%rax)
movl $0x5, 0x24(%rsp)
jmp 0x13e0bc
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq 0x18(%rsp), %rcx
cmpq 0x18f0(%rcx), %rax
jne 0x13df0d
movq 0x18(%rsp), %rdi
movq 0x18(%rsp), %rax
movq 0x18f0(%rax), %rsi
callq 0xb3a0
movq 0x18(%rsp), %rcx
cmpq 0x128(%rcx), %rax
jne 0x13df0d
movl $0x10, 0x24(%rsp)
jmp 0x13e0bc
jmp 0x13df0f
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rcx
movq 0x18(%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, (%rax)
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x18(%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, 0x8(%rax)
movq 0x18(%rsp), %rax
movq 0x688(%rax), %rcx
movq 0x18(%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, 0x18(%rax)
movq 0x18(%rsp), %rax
movq 0x50(%rax), %rcx
addq $0x20, %rcx
movq %rcx, 0x50(%rax)
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rcx
movq 0x18(%rsp), %rax
movq %rcx, (%rax)
movl $0x5, 0x24(%rsp)
jmp 0x13e0bc
movq 0x18(%rsp), %rax
movq (%rax), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0x13e08f
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0x18(%rsp), %rcx
cmpq 0x110(%rcx), %rax
jne 0x13e01e
jmp 0x13dfb9
movq 0x18(%rsp), %rax
movq (%rax), %rcx
movq 0x18(%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, (%rax)
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x18(%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, 0x8(%rax)
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x18(%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, 0x10(%rax)
movq 0x18(%rsp), %rax
movq 0x50(%rax), %rax
movl $0x1e5, %ecx            # imm = 0x1E5
movq %rcx, 0x18(%rax)
movq 0x18(%rsp), %rax
movq 0x50(%rax), %rcx
addq $0x20, %rcx
movq %rcx, 0x50(%rax)
jmp 0x13e085
jmp 0x13e020
movq 0x18(%rsp), %rax
movq (%rax), %rcx
movq 0x18(%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, (%rax)
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x18(%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, 0x8(%rax)
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x18(%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, 0x10(%rax)
movq 0x18(%rsp), %rax
movq 0x50(%rax), %rax
movl $0x1e7, %ecx            # imm = 0x1E7
movq %rcx, 0x18(%rax)
movq 0x18(%rsp), %rax
movq 0x50(%rax), %rcx
addq $0x20, %rcx
movq %rcx, 0x50(%rax)
jmp 0x13e085
movl $0x1, 0x24(%rsp)
jmp 0x13e0bc
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0x18(%rsp), %rcx
cmpq 0x110(%rcx), %rax
jne 0x13e0b4
movl $0x8, 0x24(%rsp)
jmp 0x13e0bc
movl $0x2, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)