// File: /workspace/github_c_makefile_star2_O2/BernardTatin[P]s7sh/s7.c
// Function: s7_optimize_1
static s7_function s7_optimize_1(s7_scheme *sc, s7_pointer expr, bool nr)
                {
#if WITH_GMP
                    return(NULL);
#endif
                    if ((!is_pair(expr)) || (no_cell_opt(expr)))
                        return(NULL);

                    if (setjmp(sc->opt_exit) == 0)
                    {
                        sc->pc = 0;
                        reset_opts(sc);
                        if (!no_int_opt(expr))
                        {
                            if (int_optimize(sc, expr))
                                return((nr) ? opt_int_any_nr : opt_wrap_int);
                            pc_fallback(sc, 0);
                            set_no_int_opt(expr);
                        }
                        if (!no_float_opt(expr))
                        {
                            if (float_optimize(sc, expr))
                                return((nr) ? opt_float_any_nr : opt_wrap_float);
                            pc_fallback(sc, 0);
                            set_no_float_opt(expr);
                        }
                        if (!no_bool_opt(expr))
                        {
                            if (bool_optimize_nw(sc, expr))
                                return((nr) ? opt_bool_any_nr : opt_wrap_bool);
                            pc_fallback(sc, 0);
                            set_no_bool_opt(expr);
                        }
                        if (cell_optimize(sc, expr))
                            return((nr) ? opt_cell_any_nr : opt_wrap_cell);
                        set_no_cell_opt(expr); /* checked elsewhere */
                    }
                    return(NULL);
                }

// Assembly:
cmpb $0x1, (%rsi)
jne 0x38b36
pushq %rbp
pushq %r14
pushq %rbx
movq %rsi, %rbx
testb $0x4, 0x3(%rsi)
jne 0x38b2f
movl %edx, %ebp
movq %rdi, %r14
addq $0x2190, %rdi           # imm = 0x2190
callq 0x8350
testl %eax, %eax
je 0x38b39
xorl %eax, %eax
popq %rbx
popq %r14
popq %rbp
retq
xorl %eax, %eax
retq
andl $0x0, 0x2258(%r14)
movq (%rbx), %rcx
movq %rcx, %rax
btl $0x19, %ecx
jb 0x38b82
movq %r14, %rdi
movq %rbx, %rsi
callq 0x7e94f
testb %al, %al
je 0x38b6f
leaq 0x5c208(%rip), %rax     # 0x94d6b
leaq 0x5c216(%rip), %rcx     # 0x94d80
jmp 0x38c0b
andl $0x0, 0x2258(%r14)
movl $0x2000000, %eax        # imm = 0x2000000
orq (%rbx), %rax
movq %rax, (%rbx)
movq %rax, %rcx
btl $0x17, %ecx
jb 0x38bbd
movq %r14, %rdi
movq %rbx, %rsi
callq 0x36881
testb %al, %al
je 0x38baa
leaq 0x5c24f(%rip), %rax     # 0x94df0
leaq 0x5c25d(%rip), %rcx     # 0x94e05
jmp 0x38c0b
andl $0x0, 0x2258(%r14)
movl $0x800000, %eax         # imm = 0x800000
orq (%rbx), %rax
movq %rax, (%rbx)
btl $0x1b, %eax
jb 0x38bee
movq %r14, %rdi
movq %rbx, %rsi
callq 0x87382
testb %al, %al
je 0x38be2
leaq 0x5c290(%rip), %rax     # 0x94e69
leaq 0x5c29e(%rip), %rcx     # 0x94e7e
jmp 0x38c0b
andl $0x0, 0x2258(%r14)
orb $0x8, 0x3(%rbx)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x80a38
testb %al, %al
je 0x38c1a
leaq 0x5c29d(%rip), %rax     # 0x94ea1
leaq 0x5c2a6(%rip), %rcx     # 0x94eb1
testb %bpl, %bpl
cmovneq %rax, %rcx
movq %rcx, %rax
jmp 0x38b31
orb $0x4, 0x3(%rbx)
jmp 0x38b2f