// File: /workspace/github_c_makefile_star2_O3/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 0x458bb
pushq %rbp
pushq %r14
pushq %rbx
movq %rsi, %rbx
testb $0x4, 0x3(%rsi)
jne 0x458b4
movl %edx, %ebp
movq %rdi, %r14
addq $0x2190, %rdi           # imm = 0x2190
callq 0x8350
testl %eax, %eax
je 0x458be
xorl %eax, %eax
popq %rbx
popq %r14
popq %rbp
retq
xorl %eax, %eax
retq
movl $0x0, 0x2258(%r14)
movq (%rbx), %rcx
movq %rcx, %rax
btl $0x19, %ecx
jb 0x4590d
movq %r14, %rdi
movq %rbx, %rsi
callq 0x9fbc8
testb %al, %al
je 0x458f7
leaq 0x776f8(%rip), %rax     # 0xbcfe3
leaq 0x77709(%rip), %rcx     # 0xbcffb
jmp 0x4599c
movl $0x0, 0x2258(%r14)
movl $0x2000000, %eax        # imm = 0x2000000
orq (%rbx), %rax
movq %rax, (%rbx)
movq %rax, %rcx
btl $0x17, %ecx
jb 0x4594b
movq %r14, %rdi
movq %rbx, %rsi
callq 0x44f61
testb %al, %al
je 0x45935
leaq 0x77742(%rip), %rax     # 0xbd06e
leaq 0x77753(%rip), %rcx     # 0xbd086
jmp 0x4599c
movl $0x0, 0x2258(%r14)
movl $0x800000, %eax         # imm = 0x800000
orq (%rbx), %rax
movq %rax, (%rbx)
btl $0x1b, %eax
jb 0x4597f
movq %r14, %rdi
movq %rbx, %rsi
callq 0xa9cd3
testb %al, %al
je 0x45970
leaq 0x77786(%rip), %rax     # 0xbd0ed
leaq 0x77797(%rip), %rcx     # 0xbd105
jmp 0x4599c
movl $0x0, 0x2258(%r14)
orb $0x8, 0x3(%rbx)
movq %r14, %rdi
movq %rbx, %rsi
callq 0xa2000
testb %al, %al
je 0x459ab
leaq 0x77796(%rip), %rax     # 0xbd12b
leaq 0x777a2(%rip), %rcx     # 0xbd13e
testb %bpl, %bpl
cmovneq %rax, %rcx
movq %rcx, %rax
jmp 0x458b6
orb $0x4, 0x3(%rbx)
jmp 0x458b4