// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: op_unknown
static goto_t op_unknown(s7_scheme *sc, s7_pointer f)
                {
                    s7_pointer code;
                    if (!f) /* can be NULL if unbound variable */
                        return(unknown_unknown(sc));
#if SHOW_EVAL_OPS
                    fprintf(stderr, "%s %s\n", __func__, DISPLAY(f));
#endif

                    code = sc->code;
                    switch (type(f))
                    {
                        case T_CLOSURE:
                        case T_CLOSURE_STAR:
                            if (!has_methods(f))
                            {
                                int32_t hop = 0;
                                if (is_immutable_and_stable(sc, car(code))) hop = 1;

                                if (is_null(closure_args(f)))
                                {
                                    s7_pointer body;
                                    bool safe_case;
                                    body = closure_body(f);
                                    safe_case = is_safe_closure(f);

                                    if (is_null(cdr(body)))
                                    {
                                        if (is_fxable(sc, car(body)))
                                        {
                                            annotate_arg(sc, body, sc->envir);
                                            set_safe_optimize_op(code, hop + OP_SAFE_THUNK_A);
                                            set_closure_has_fx(f);
                                        }
                                        else
                                        {
                                            set_safe_optimize_op(code, hop + ((safe_case) ? OP_SAFE_THUNK_P : OP_THUNK_P));
                                            closure_clear_multiform(f); /* i.e. clear possible has_fx */
                                        }
                                    }
                                    else set_safe_optimize_op(code, hop + ((safe_case) ? OP_SAFE_THUNK : OP_THUNK));
                                    set_opt1_lambda(code, f);
                                    return(goto_eval);
                                }
                                if ((is_closure_star(f)) && (is_safe_closure(f)))
                                {
                                    set_safe_optimize_op(code, hop + OP_SAFE_CLOSURE_STAR_FX_0);
                                    set_opt1_lambda(code, f);
                                    return(goto_eval);
                                }
                            }
                            break;

                        case T_GOTO:       return(fixup_unknown_op(code, f, OP_IMPLICIT_GOTO));
                        case T_ITERATOR:   return(fixup_unknown_op(code, f, OP_IMPLICIT_ITERATE));
                        case T_MACRO:      return(fixup_unknown_op(code, f, OP_MACRO_D));
                        case T_MACRO_STAR: return(fixup_unknown_op(code, f, OP_MACRO_STAR_D));

                        default:
                                           if ((is_symbol(car(code))) &&
                                                   (!is_slot(symbol_to_slot(sc, car(code)))))
                                               eval_error_no_return(sc, sc->unbound_variable_symbol, "~A: unbound variable", 20, car(code));
                    }
                    return(fixup_unknown_op(code, f, OP_S));
                }

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x48(%rsp)
movq %rsi, 0x40(%rsp)
cmpq $0x0, 0x40(%rsp)
jne 0x120379
movq 0x48(%rsp), %rdi
callq 0x15ce10
movl %eax, 0x54(%rsp)
jmp 0x1206ea
movq 0x48(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x40(%rsp), %rax
movzbl (%rax), %eax
addl $-0x1d, %eax
movl %eax, %ecx
movq %rcx, 0x18(%rsp)
subl $0xe, %eax
ja 0x120643
movq 0x18(%rsp), %rax
leaq 0xbfd93(%rip), %rcx     # 0x1e0140
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x40(%rsp), %rax
movq (%rax), %rax
andq $0x40000000, %rax       # imm = 0x40000000
cmpq $0x0, %rax
jne 0x1205ca
movl $0x0, 0x34(%rsp)
movq 0x48(%rsp), %rdi
movq 0x38(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0x15cec0
testb $0x1, %al
jne 0x1203ef
jmp 0x1203f7
movl $0x1, 0x34(%rsp)
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x48(%rsp), %rcx
cmpq 0x110(%rcx), %rax
jne 0x120566
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x28(%rsp)
movq 0x40(%rsp), %rax
movzwl (%rax), %eax
andl $0x1000, %eax           # imm = 0x1000
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, 0x27(%rsp)
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x48(%rsp), %rcx
cmpq 0x110(%rcx), %rax
jne 0x12050e
movq 0x48(%rsp), %rdi
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0x15cfb0
testb $0x1, %al
jne 0x12046d
jmp 0x1204bf
movq 0x48(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq 0x48(%rsp), %rax
movq 0x8(%rax), %rdx
callq 0x15d020
movq 0x38(%rsp), %rax
movzwl (%rax), %ecx
orl $0x800, %ecx            # imm = 0x800
movw %cx, (%rax)
movl 0x34(%rsp), %eax
addl $0xa8, %eax
movw %ax, %cx
movq 0x38(%rsp), %rax
movw %cx, 0x4(%rax)
movq 0x40(%rsp), %rax
movq (%rax), %rcx
orq $0x500, %rcx            # imm = 0x500
movq %rcx, (%rax)
jmp 0x12050c
jmp 0x1204c1
movq 0x38(%rsp), %rax
movzwl (%rax), %ecx
orl $0x800, %ecx            # imm = 0x800
movw %cx, (%rax)
movl 0x34(%rsp), %eax
movb 0x27(%rsp), %sil
movl $0xa0, %ecx
movl $0xa6, %edx
testb $0x1, %sil
cmovnel %edx, %ecx
addl %ecx, %eax
movw %ax, %cx
movq 0x38(%rsp), %rax
movw %cx, 0x4(%rax)
movq 0x40(%rsp), %rax
movq (%rax), %rcx
andq $-0x101, %rcx           # imm = 0xFEFF
movq %rcx, (%rax)
jmp 0x12054b
jmp 0x120510
movq 0x38(%rsp), %rax
movzwl (%rax), %ecx
orl $0x800, %ecx            # imm = 0x800
movw %cx, (%rax)
movl 0x34(%rsp), %eax
movb 0x27(%rsp), %sil
movl $0x9e, %ecx
movl $0xa4, %edx
testb $0x1, %sil
cmovnel %edx, %ecx
addl %ecx, %eax
movw %ax, %cx
movq 0x38(%rsp), %rax
movw %cx, 0x4(%rax)
jmp 0x12054b
movq 0x40(%rsp), %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x18(%rax)
movl $0x5, 0x54(%rsp)
jmp 0x1206ea
movq 0x40(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x29, %eax
jne 0x1205c8
movq 0x40(%rsp), %rax
movzwl (%rax), %eax
andl $0x1000, %eax           # imm = 0x1000
cmpl $0x0, %eax
je 0x1205c8
jmp 0x120587
movq 0x38(%rsp), %rax
movzwl (%rax), %ecx
orl $0x800, %ecx            # imm = 0x800
movw %cx, (%rax)
movl 0x34(%rsp), %eax
addl $0x122, %eax            # imm = 0x122
movw %ax, %cx
movq 0x38(%rsp), %rax
movw %cx, 0x4(%rax)
movq 0x40(%rsp), %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x18(%rax)
movl $0x5, 0x54(%rsp)
jmp 0x1206ea
jmp 0x1205ca
jmp 0x1206d2
movq 0x38(%rsp), %rdi
movq 0x40(%rsp), %rsi
movl $0x170, %edx            # imm = 0x170
callq 0x15d0d0
movl %eax, 0x54(%rsp)
jmp 0x1206ea
movq 0x38(%rsp), %rdi
movq 0x40(%rsp), %rsi
movl $0x172, %edx            # imm = 0x172
callq 0x15d0d0
movl %eax, 0x54(%rsp)
jmp 0x1206ea
movq 0x38(%rsp), %rdi
movq 0x40(%rsp), %rsi
movl $0x168, %edx            # imm = 0x168
callq 0x15d0d0
movl %eax, 0x54(%rsp)
jmp 0x1206ea
movq 0x38(%rsp), %rdi
movq 0x40(%rsp), %rsi
movl $0x169, %edx            # imm = 0x169
callq 0x15d0d0
movl %eax, 0x54(%rsp)
jmp 0x1206ea
movq 0x38(%rsp), %rax
movq 0x8(%rax), %rax
movzbl (%rax), %eax
cmpl $0xa, %eax
jne 0x1206d0
movq 0x48(%rsp), %rdi
movq 0x38(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0xfc80
movzbl (%rax), %eax
cmpl $0x20, %eax
je 0x1206d0
movq 0x48(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x48(%rsp), %rax
movq 0x1958(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x48(%rsp), %rax
movq %rax, (%rsp)
movq 0x48(%rsp), %rdi
leaq 0xcfe3e(%rip), %rsi     # 0x1f04dd
movl $0x14, %edx
callq 0xb880
movq (%rsp), %rdi
movq %rax, %rsi
movq 0x38(%rsp), %rax
movq 0x8(%rax), %rdx
callq 0xb830
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq %rax, %rdx
callq 0x2f940
jmp 0x1206d2
movq 0x38(%rsp), %rdi
movq 0x40(%rsp), %rsi
movl $0x16a, %edx            # imm = 0x16A
callq 0x15d0d0
movl %eax, 0x54(%rsp)
movl 0x54(%rsp), %eax
addq $0x58, %rsp
retq
nopw %cs:(%rax,%rax)