// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: opt_cell_if
static bool opt_cell_if(s7_scheme *sc, s7_pointer car_x, int32_t len)
                {
                    opt_info *opc;
                    opc = alloc_opo(sc, car_x);
                    if (len == 3)
                    {
                        opt_info *next;
                        next = sc->opts[sc->pc];
                        if ((is_proper_list_2(sc, cadr(car_x))) && /* (not arg) */
                                (caadr(car_x) == sc->not_symbol))
                        {
                            if ((bool_optimize(sc, cdadr(car_x))) &&
                                    (cell_optimize(sc, cddr(car_x))))
                            {
                                opc->v[0].fp = opt_if_nbp;
                                opc->v[1].i = sc->pc - 1;
                                if (next->v[0].fb == opt_b_p_f)
                                {
                                    opc->v[2].b_p_f = next->v[2].b_p_f;
                                    opc->v[0].fp = opt_if_nbp_f;
                                    return(oo_set_type_0(opc, 3));
                                }
                                if (next->v[0].fb == opt_b_p_s)
                                {
                                    opc->v[2].b_p_f = next->v[2].b_p_f;
                                    opc->v[3].p = next->v[1].p;
                                    opc->v[0].fp = opt_if_nbp_s;
                                    return(oo_set_type_1(opc, 4, 3, OO_P));
                                }
                                if (next->v[0].fb == opt_b_pi_fs)
                                {
                                    opc->v[2].b_pi_f = next->v[2].b_pi_f;
                                    opc->v[3].p = next->v[1].p;
                                    opc->v[0].fp = opt_if_nbp_fs;
                                    return(oo_set_type_1(opc, 4, 3, OO_P));
                                }
                                if ((next->v[0].fb == opt_b_pp_sf) ||
                                        (next->v[0].fb == opt_b_7pp_sf))
                                {
                                    if (next->v[0].fb == opt_b_pp_sf)
                                    {
                                        opc->v[2].b_pp_f = next->v[3].b_pp_f;
                                        opc->v[0].fp = opt_if_nbp_sf;
                                    }
                                    else
                                    {
                                        opc->v[2].b_7pp_f = next->v[3].b_7pp_f;
                                        opc->v[0].fp = opt_if_nbp_7sf;
                                    }
                                    opc->v[3].p = next->v[1].p;
                                    return(oo_set_type_1(opc, 4, 3, OO_P));
                                }
                                if ((next->v[0].fb == opt_b_pp_sc) ||
                                        (next->v[0].fb == opt_b_7pp_sc))
                                {
                                    if (next->v[0].fb == opt_b_pp_sc)
                                    {
                                        opc->v[3].b_pp_f = next->v[3].b_pp_f;
                                        opc->v[0].fp = opt_if_nbp_sc;
                                    }
                                    else
                                    {
                                        opc->v[3].b_7pp_f = next->v[3].b_7pp_f;
                                        opc->v[0].fp = opt_if_nbp_7sc;
                                    }
                                    opc->v[2].p = next->v[1].p;
                                    opc->v[4].p = next->v[2].p;
                                    return(oo_set_type_1(opc, 5, 2, OO_P));
                                }
                                if ((next->v[0].fb == opt_b_ii_ss) || (next->v[0].fb == opt_b_ii_ss_eq) ||
                                        (next->v[0].fb == opt_b_ii_ss_lt) || (next->v[0].fb == opt_b_ii_ss_gt) ||
                                        (next->v[0].fb == opt_b_ii_ss_leq) || (next->v[0].fb == opt_b_ii_ss_geq))
                                {
                                    opc->v[3].b_ii_f = next->v[3].b_ii_f;
                                    opc->v[2].p = next->v[1].p;
                                    opc->v[4].p = next->v[2].p;
                                    opc->v[0].fp = opt_if_nbp_ss;
                                    return(oo_set_type_2(opc, 5, 2, 4, OO_I, OO_I));
                                }
                                return(oo_set_type_0(opc, 2));
                            }
                        }
                        else
                        {
                            opt_info *bop;
                            bop = sc->opts[sc->pc];
                            if (bool_optimize(sc, cdr(car_x)))
                            {
                                opt_info *top;
                                top = sc->opts[sc->pc];
                                if (cell_optimize(sc, cddr(car_x)))
                                {
                                    opc->v[0].fp = opt_if_bp;
                                    opc->v[1].i = sc->pc - 1;

                                    if (next->v[0].fb == p_to_b)
                                    {
                                        opc->v[0].fp = opt_if_bp_pb;
                                        return(oo_set_type_0(opc, 2));
                                    }
                                    if (next->v[0].fb == opt_b_p_f)
                                    {
                                        opc->v[2].b_p_f = next->v[2].b_p_f;
                                        opc->v[0].fp = opt_if_bp_f;
                                        return(oo_set_type_0(opc, 3));
                                    }
                                    if (next->v[0].fb == opt_b_ii_fc)
                                    {
                                        opc->v[0].fp = opt_if_bp_ii_fc;
                                        return(oo_set_type_0(opc, 2));
                                    }
                                    opc->v[2].o1 = bop;
                                    opc->v[3].fb = bop->v[0].fb;
                                    opc->v[4].o1 = top;
                                    opc->v[5].fp = top->v[0].fp;
                                    return(oo_set_type_0(opc, 6));
                                }
                            }
                        }
                        return(return_false(sc, car_x, __func__, __LINE__));
                    }
                    if (len == 4)
                    {
                        if ((bool_optimize(sc, cdr(car_x))) &&
                                (cell_optimize(sc, cddr(car_x))))
                        {
                            opc->v[0].fp = opt_if_bpp;
                            opc->v[1].i = sc->pc - 1;
                            if (cell_optimize(sc, cdddr(car_x)))
                            {
                                opc->v[3].i = sc->pc - 1;
                                return(oo_set_type_0(opc, 4));
                            }}}
                    return(return_false(sc, car_x, __func__, __LINE__));
                }

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x48(%rsp)
movq %rsi, 0x40(%rsp)
movl %edx, 0x3c(%rsp)
movq 0x48(%rsp), %rdi
callq 0xe15e0
movq %rax, 0x30(%rsp)
cmpl $0x3, 0x3c(%rsp)
jne 0xf2d5f
movq 0x48(%rsp), %rax
movq 0x48(%rsp), %rcx
movslq 0x2258(%rcx), %rcx
movq 0x2260(%rax,%rcx,8), %rax
movq %rax, 0x28(%rsp)
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0xf7790
testb $0x1, %al
jne 0xf26fa
jmp 0xf2b68
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movq 0x48(%rsp), %rcx
cmpq 0x1368(%rcx), %rax
jne 0xf2b68
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rsi
callq 0xf83e0
testb $0x1, %al
jne 0xf2741
jmp 0xf2b63
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rsi
callq 0xe9db0
testb $0x1, %al
jne 0xf2761
jmp 0xf2b63
movq 0x30(%rsp), %rax
leaq 0x9e43(%rip), %rcx      # 0xfc5b0
movq %rcx, (%rax)
movq 0x48(%rsp), %rax
movl 0x2258(%rax), %eax
subl $0x1, %eax
movslq %eax, %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x28(%rsp), %rax
leaq 0x859a(%rip), %rcx      # 0xfad30
cmpq %rcx, (%rax)
jne 0xf27e2
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x30(%rsp), %rax
leaq 0x9ec7(%rip), %rcx      # 0xfc680
movq %rcx, (%rax)
movq 0x30(%rsp), %rdi
movl $0x3, %esi
leaq 0xfcbef(%rip), %rdx     # 0x1ef3bc
movl $0xf873, %ecx           # imm = 0xF873
callq 0xe4820
andb $0x1, %al
movb %al, 0x57(%rsp)
jmp 0xf2e36
movq 0x28(%rsp), %rax
leaq 0x84d2(%rip), %rcx      # 0xfacc0
cmpq %rcx, (%rax)
jne 0xf2854
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x30(%rsp), %rax
leaq 0x9f5d(%rip), %rcx      # 0xfc780
movq %rcx, (%rax)
movq 0x30(%rsp), %rdi
movl $0x4, %esi
movl $0x3, %edx
xorl %ecx, %ecx
leaq 0xfcb7e(%rip), %r8      # 0x1ef3bc
movl $0xf87a, %r9d           # imm = 0xF87A
callq 0xe4950
andb $0x1, %al
movb %al, 0x57(%rsp)
jmp 0xf2e36
movq 0x28(%rsp), %rax
leaq 0x8930(%rip), %rcx      # 0xfb190
cmpq %rcx, (%rax)
jne 0xf28c6
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x30(%rsp), %rax
leaq 0x9f9b(%rip), %rcx      # 0xfc830
movq %rcx, (%rax)
movq 0x30(%rsp), %rdi
movl $0x4, %esi
movl $0x3, %edx
xorl %ecx, %ecx
leaq 0xfcb0c(%rip), %r8      # 0x1ef3bc
movl $0xf881, %r9d           # imm = 0xF881
callq 0xe4950
andb $0x1, %al
movb %al, 0x57(%rsp)
jmp 0xf2e36
movq 0x28(%rsp), %rax
leaq 0x8d9e(%rip), %rcx      # 0xfb670
cmpq %rcx, (%rax)
je 0xf28ec
movq 0x28(%rsp), %rax
leaq 0x8e0d(%rip), %rcx      # 0xfb6f0
cmpq %rcx, (%rax)
jne 0xf2981
movq 0x28(%rsp), %rax
leaq 0x8d78(%rip), %rcx      # 0xfb670
cmpq %rcx, (%rax)
jne 0xf2920
movq 0x28(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x30(%rsp), %rax
leaq 0xa035(%rip), %rcx      # 0xfc950
movq %rcx, (%rax)
jmp 0xf2941
movq 0x28(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x30(%rsp), %rax
leaq 0xa122(%rip), %rcx      # 0xfca60
movq %rcx, (%rax)
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x30(%rsp), %rdi
movl $0x4, %esi
movl $0x3, %edx
xorl %ecx, %ecx
leaq 0xfca51(%rip), %r8      # 0x1ef3bc
movl $0xf891, %r9d           # imm = 0xF891
callq 0xe4950
andb $0x1, %al
movb %al, 0x57(%rsp)
jmp 0xf2e36
movq 0x28(%rsp), %rax
leaq 0x8b23(%rip), %rcx      # 0xfb4b0
cmpq %rcx, (%rax)
je 0xf29a7
movq 0x28(%rsp), %rax
leaq 0x8b42(%rip), %rcx      # 0xfb4e0
cmpq %rcx, (%rax)
jne 0xf2a4e
movq 0x28(%rsp), %rax
leaq 0x8afd(%rip), %rcx      # 0xfb4b0
cmpq %rcx, (%rax)
jne 0xf29db
movq 0x28(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x30(%rsp), %rax
leaq 0xa1aa(%rip), %rcx      # 0xfcb80
movq %rcx, (%rax)
jmp 0xf29fc
movq 0x28(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x30(%rsp), %rax
leaq 0xa247(%rip), %rcx      # 0xfcc40
movq %rcx, (%rax)
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x30(%rsp), %rdi
movl $0x5, %esi
movl $0x2, %edx
xorl %ecx, %ecx
leaq 0xfc984(%rip), %r8      # 0x1ef3bc
movl $0xf8a2, %r9d           # imm = 0xF8A2
callq 0xe4950
andb $0x1, %al
movb %al, 0x57(%rsp)
jmp 0xf2e36
movq 0x28(%rsp), %rax
leaq 0x7a76(%rip), %rcx      # 0xfa4d0
cmpq %rcx, (%rax)
je 0xf2ab8
movq 0x28(%rsp), %rax
leaq 0x83d5(%rip), %rcx      # 0xfae40
cmpq %rcx, (%rax)
je 0xf2ab8
movq 0x28(%rsp), %rax
leaq 0x7a94(%rip), %rcx      # 0xfa510
cmpq %rcx, (%rax)
je 0xf2ab8
movq 0x28(%rsp), %rax
leaq 0x7ab3(%rip), %rcx      # 0xfa540
cmpq %rcx, (%rax)
je 0xf2ab8
movq 0x28(%rsp), %rax
leaq 0x7ad2(%rip), %rcx      # 0xfa570
cmpq %rcx, (%rax)
je 0xf2ab8
movq 0x28(%rsp), %rax
leaq 0x7af1(%rip), %rcx      # 0xfa5a0
cmpq %rcx, (%rax)
jne 0xf2b3d
movq 0x28(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x30(%rsp), %rax
leaq 0xa216(%rip), %rcx      # 0xfcd10
movq %rcx, (%rax)
movq 0x30(%rsp), %rdi
movl $0x5, %esi
movl $0x2, %edx
movl $0x4, %ecx
movl $0x1, %r9d
leaq 0xfc89e(%rip), %rax     # 0x1ef3bc
movl %r9d, %r8d
movq %rax, (%rsp)
movl $0xf8ac, 0x8(%rsp)      # imm = 0xF8AC
callq 0xe54b0
andb $0x1, %al
movb %al, 0x57(%rsp)
jmp 0xf2e36
movq 0x30(%rsp), %rdi
movl $0x2, %esi
leaq 0xfc86e(%rip), %rdx     # 0x1ef3bc
movl $0xf8ae, %ecx           # imm = 0xF8AE
callq 0xe4820
andb $0x1, %al
movb %al, 0x57(%rsp)
jmp 0xf2e36
jmp 0xf2d55
movq 0x48(%rsp), %rax
movq 0x48(%rsp), %rcx
movslq 0x2258(%rcx), %rcx
movq 0x2260(%rax,%rcx,8), %rax
movq %rax, 0x20(%rsp)
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rsi
callq 0xf83e0
testb $0x1, %al
jne 0xf2ba2
jmp 0xf2d53
movq 0x48(%rsp), %rax
movq 0x48(%rsp), %rcx
movslq 0x2258(%rcx), %rcx
movq 0x2260(%rax,%rcx,8), %rax
movq %rax, 0x18(%rsp)
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rsi
callq 0xe9db0
testb $0x1, %al
jne 0xf2be0
jmp 0xf2d51
movq 0x30(%rsp), %rax
leaq 0xa1f4(%rip), %rcx      # 0xfcde0
movq %rcx, (%rax)
movq 0x48(%rsp), %rax
movl 0x2258(%rax), %eax
subl $0x1, %eax
movslq %eax, %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x28(%rsp), %rax
leaq 0x604b(%rip), %rcx      # 0xf8c60
cmpq %rcx, (%rax)
jne 0xf2c4f
movq 0x30(%rsp), %rax
leaq 0xa26a(%rip), %rcx      # 0xfce90
movq %rcx, (%rax)
movq 0x30(%rsp), %rdi
movl $0x2, %esi
leaq 0xfc782(%rip), %rdx     # 0x1ef3bc
movl $0xf8c1, %ecx           # imm = 0xF8C1
callq 0xe4820
andb $0x1, %al
movb %al, 0x57(%rsp)
jmp 0xf2e36
movq 0x28(%rsp), %rax
leaq 0x80d5(%rip), %rcx      # 0xfad30
cmpq %rcx, (%rax)
jne 0xf2ca7
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x30(%rsp), %rax
leaq 0xa2f2(%rip), %rcx      # 0xfcf70
movq %rcx, (%rax)
movq 0x30(%rsp), %rdi
movl $0x3, %esi
leaq 0xfc72a(%rip), %rdx     # 0x1ef3bc
movl $0xf8c7, %ecx           # imm = 0xF8C7
callq 0xe4820
andb $0x1, %al
movb %al, 0x57(%rsp)
jmp 0xf2e36
movq 0x28(%rsp), %rax
leaq 0x838d(%rip), %rcx      # 0xfb040
cmpq %rcx, (%rax)
jne 0xf2ced
movq 0x30(%rsp), %rax
leaq 0xa3ac(%rip), %rcx      # 0xfd070
movq %rcx, (%rax)
movq 0x30(%rsp), %rdi
movl $0x2, %esi
leaq 0xfc6e4(%rip), %rdx     # 0x1ef3bc
movl $0xf8cc, %ecx           # imm = 0xF8CC
callq 0xe4820
andb $0x1, %al
movb %al, 0x57(%rsp)
jmp 0xf2e36
movq 0x20(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x20(%rsp), %rax
movq (%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x18(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x18(%rsp), %rax
movq (%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x28(%rax)
movq 0x30(%rsp), %rdi
movl $0x6, %esi
leaq 0xfc680(%rip), %rdx     # 0x1ef3bc
movl $0xf8d2, %ecx           # imm = 0xF8D2
callq 0xe4820
andb $0x1, %al
movb %al, 0x57(%rsp)
jmp 0xf2e36
jmp 0xf2d53
jmp 0xf2d55
movb $0x0, 0x57(%rsp)
jmp 0xf2e36
cmpl $0x4, 0x3c(%rsp)
jne 0xf2e31
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rsi
callq 0xf83e0
testb $0x1, %al
jne 0xf2d86
jmp 0xf2e2f
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rsi
callq 0xe9db0
testb $0x1, %al
jne 0xf2da6
jmp 0xf2e2f
movq 0x30(%rsp), %rax
leaq 0xa3de(%rip), %rcx      # 0xfd190
movq %rcx, (%rax)
movq 0x48(%rsp), %rax
movl 0x2258(%rax), %eax
subl $0x1, %eax
movslq %eax, %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rsi
callq 0xe9db0
testb $0x1, %al
jne 0xf2df0
jmp 0xf2e2d
movq 0x48(%rsp), %rax
movl 0x2258(%rax), %eax
subl $0x1, %eax
movslq %eax, %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x30(%rsp), %rdi
movl $0x4, %esi
leaq 0xfc5a1(%rip), %rdx     # 0x1ef3bc
movl $0xf8e2, %ecx           # imm = 0xF8E2
callq 0xe4820
andb $0x1, %al
movb %al, 0x57(%rsp)
jmp 0xf2e36
jmp 0xf2e2f
jmp 0xf2e31
movb $0x0, 0x57(%rsp)
movb 0x57(%rsp), %al
andb $0x1, %al
addq $0x58, %rsp
retq
nopw %cs:(%rax,%rax)