// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x28, %rsp
movb %dl, %al
movq %rdi, 0x18(%rsp)
movq %rsi, 0x10(%rsp)
andb $0x1, %al
movb %al, 0xf(%rsp)
movq 0x10(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0x47907
movq 0x10(%rsp), %rax
movq (%rax), %rax
andq $0x4000000, %rax        # imm = 0x4000000
cmpq $0x0, %rax
je 0x47915
movq $0x0, 0x20(%rsp)
jmp 0x47ac9
movq 0x18(%rsp), %rdi
addq $0x2190, %rdi           # imm = 0x2190
callq 0x9350
cmpl $0x0, %eax
jne 0x47ac0
movq 0x18(%rsp), %rax
movl $0x0, 0x2258(%rax)
movq 0x10(%rsp), %rax
movq (%rax), %rax
andq $0x2000000, %rax        # imm = 0x2000000
cmpq $0x0, %rax
jne 0x479a8
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xe59c0
testb $0x1, %al
jne 0x47967
jmp 0x4798a
movb 0xf(%rsp), %dl
leaq 0xd00be(%rip), %rax     # 0x117a30
leaq 0xd0067(%rip), %rcx     # 0x1179e0
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, 0x20(%rsp)
jmp 0x47ac9
movq 0x18(%rsp), %rdi
xorl %esi, %esi
callq 0xe59a0
movq 0x10(%rsp), %rax
movq (%rax), %rcx
orq $0x2000000, %rcx        # imm = 0x2000000
movq %rcx, (%rax)
movq 0x10(%rsp), %rax
movq (%rax), %rax
andq $0x800000, %rax         # imm = 0x800000
cmpq $0x0, %rax
jne 0x47a12
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x473f0
testb $0x1, %al
jne 0x479d1
jmp 0x479f4
movb 0xf(%rsp), %dl
leaq 0xd0194(%rip), %rax     # 0x117b70
leaq 0xd013d(%rip), %rcx     # 0x117b20
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, 0x20(%rsp)
jmp 0x47ac9
movq 0x18(%rsp), %rdi
xorl %esi, %esi
callq 0xe59a0
movq 0x10(%rsp), %rax
movq (%rax), %rcx
orq $0x800000, %rcx         # imm = 0x800000
movq %rcx, (%rax)
movq 0x10(%rsp), %rax
movq (%rax), %rax
andq $0x8000000, %rax        # imm = 0x8000000
cmpq $0x0, %rax
jne 0x47a79
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xf8720
testb $0x1, %al
jne 0x47a3b
jmp 0x47a5b
movb 0xf(%rsp), %dl
leaq 0xd023a(%rip), %rax     # 0x117c80
leaq 0xd01e3(%rip), %rcx     # 0x117c30
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, 0x20(%rsp)
jmp 0x47ac9
movq 0x18(%rsp), %rdi
xorl %esi, %esi
callq 0xe59a0
movq 0x10(%rsp), %rax
movq (%rax), %rcx
orq $0x8000000, %rcx        # imm = 0x8000000
movq %rcx, (%rax)
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xe9db0
testb $0x1, %al
jne 0x47a8e
jmp 0x47aae
movb 0xf(%rsp), %dl
leaq 0xd0297(%rip), %rax     # 0x117d30
leaq 0xd0250(%rip), %rcx     # 0x117cf0
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, 0x20(%rsp)
jmp 0x47ac9
movq 0x10(%rsp), %rax
movq (%rax), %rcx
orq $0x4000000, %rcx        # imm = 0x4000000
movq %rcx, (%rax)
movq $0x0, 0x20(%rsp)
movq 0x20(%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)