// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: opinit_if_a_a_opla_laq
static opt_pid_t opinit_if_a_a_opla_laq(s7_scheme *sc, bool a_op)
                {
                    s7_pointer caller, c_op;
                    caller = opt3_pair(sc->code);

                    c_op = car(caller);
                    if ((is_symbol(c_op)) &&
                            ((is_global(c_op)) ||
                             ((is_slot(global_slot(c_op))) &&
                              (symbol_to_slot(sc, c_op) == global_slot(c_op)))))
                    {
                        s7_pointer s_func, slot;
                        s_func = slot_value(global_slot(c_op));
                        slot = let_slots(sc->envir);
                        if (is_c_function(s_func))
                        {
                            sc->pc = 0;
                            reset_opts(sc);
                            sc->rec_test_o = sc->opts[0];
                            if (bool_optimize(sc, cdr(sc->code)))
                            {
                                int32_t start_pc;
                                start_pc = sc->pc;
                                sc->rec_result_o = sc->opts[start_pc];
                                if (is_t_integer(slot_value(slot)))
                                {
                                    sc->rec_i_ii_f = s7_i_ii_function(s_func);
                                    if ((sc->rec_i_ii_f) &&
                                            (int_optimize(sc, (a_op) ? cddr(sc->code) : cdddr(sc->code))))
                                    {
                                        sc->rec_a1_o = sc->opts[sc->pc];
                                        if (int_optimize(sc, cdadr(caller)))
                                        {
                                            sc->rec_pc1 = sc->pc;
                                            sc->rec_a2_o = sc->opts[sc->pc];
                                            if (int_optimize(sc, cdr(opt3_pair(caller))))
                                            {
                                                sc->rec_val1 = make_mutable_integer(sc, integer(slot_value(slot)));
                                                slot_set_value(slot, sc->rec_val1);
                                                /* print_opts(sc); */
                                                if (sc->pc == 4)
                                                {
                                                    sc->rec_fb1 = sc->rec_test_o->v[0].fb;
                                                    sc->rec_fi1 = sc->rec_result_o->v[0].fi;
                                                    sc->rec_fi2 = sc->rec_a1_o->v[0].fi;
                                                    sc->rec_fi3 = sc->rec_a2_o->v[0].fi;
                                                    return(OPT_INT_0);
                                                }
                                                return(OPT_INT);
                                            }
                                        }
                                    }
                                }
                                if (is_float(slot_value(slot)))
                                {
                                    sc->rec_d_dd_f = s7_d_dd_function(s_func);
                                    if (sc->rec_d_dd_f)
                                    {
                                        sc->pc = start_pc;
                                        sc->rec_result_o = sc->opts[start_pc];
                                        if (float_optimize(sc, (a_op) ? cddr(sc->code) : cdddr(sc->code)))
                                        {
                                            sc->rec_pc1 = sc->pc;
                                            sc->rec_a1_o = sc->opts[sc->pc];
                                            if (float_optimize(sc, cdadr(caller)))
                                            {
                                                sc->rec_a2_o = sc->opts[sc->pc];
                                                if (float_optimize(sc, cdr(opt3_pair(caller))))
                                                {
                                                    sc->rec_val1 = s7_make_mutable_real(sc, real(slot_value(slot)));
                                                    slot_set_value(slot, sc->rec_val1);
                                                    return(OPT_DBL);
                                                }}}}}}}}

                    rec_set_test(sc, cdr(sc->code));
                    rec_set_res(sc, (a_op) ?  cddr(sc->code) : cdddr(sc->code));
                    rec_set_f1(sc, cdadr(caller));
                    rec_set_f2(sc, cdr(opt3_pair(caller)));
                    sc->rec_slot1 = let_slots(sc->envir);
                    sc->rec_call = c_callee(caller);
                    return(OPT_PTR);
                }

// Assembly:
subq $0x78, %rsp
movb %sil, %al
movq %rdi, 0x68(%rsp)
andb $0x1, %al
movb %al, 0x67(%rsp)
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x28(%rax), %rax
movq %rax, 0x58(%rsp)
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rax
movzbl (%rax), %eax
cmpl $0xa, %eax
jne 0x165d03
movq 0x50(%rsp), %rax
movq (%rax), %rax
andq $0x10000, %rax          # imm = 0x10000
cmpq $0x0, %rax
jne 0x165889
movq 0x50(%rsp), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
cmpl $0x20, %eax
jne 0x165d03
movq 0x68(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0xfc80
movq 0x50(%rsp), %rcx
cmpq 0x10(%rcx), %rax
jne 0x165d03
movq 0x50(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, 0x48(%rsp)
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, 0x40(%rsp)
movq 0x48(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x30, %eax
jl 0x165d01
movq 0x68(%rsp), %rax
movl $0x0, 0x2258(%rax)
movq 0x68(%rsp), %rax
movq 0x2260(%rax), %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x400(%rax)
movq 0x68(%rsp), %rdi
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rsi
callq 0xf83e0
testb $0x1, %al
jne 0x165904
jmp 0x165cff
movq 0x68(%rsp), %rax
movl 0x2258(%rax), %eax
movl %eax, 0x3c(%rsp)
movq 0x68(%rsp), %rax
movslq 0x3c(%rsp), %rcx
movq 0x2260(%rax,%rcx,8), %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x408(%rax)
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
cmpl $0xb, %eax
jne 0x165b44
movq 0x48(%rsp), %rdi
callq 0x472a0
movq %rax, %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x440(%rax)
movq 0x68(%rsp), %rax
cmpq $0x0, 0x440(%rax)
je 0x165b42
movq 0x68(%rsp), %rax
movq %rax, 0x30(%rsp)
testb $0x1, 0x67(%rsp)
je 0x16599a
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, 0x28(%rsp)
jmp 0x1659b3
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, 0x28(%rsp)
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xe59c0
testb $0x1, %al
jne 0x1659cb
jmp 0x165b42
movq 0x68(%rsp), %rax
movq 0x68(%rsp), %rcx
movslq 0x2258(%rcx), %rcx
movq 0x2260(%rax,%rcx,8), %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x410(%rax)
movq 0x68(%rsp), %rdi
movq 0x58(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rsi
callq 0xe59c0
testb $0x1, %al
jne 0x165a14
jmp 0x165b40
movq 0x68(%rsp), %rax
movl 0x2258(%rax), %ecx
movq 0x68(%rsp), %rax
movl %ecx, 0x460(%rax)
movq 0x68(%rsp), %rax
movq 0x68(%rsp), %rcx
movslq 0x2258(%rcx), %rcx
movq 0x2260(%rax,%rcx,8), %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x418(%rax)
movq 0x68(%rsp), %rdi
movq 0x58(%rsp), %rax
movq 0x28(%rax), %rax
movq 0x10(%rax), %rsi
callq 0xe59c0
testb $0x1, %al
jne 0x165a6f
jmp 0x165b3e
movq 0x68(%rsp), %rdi
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0xdd130
movq %rax, %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x450(%rax)
movq 0x68(%rsp), %rax
movq 0x450(%rax), %rcx
movq 0x40(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x68(%rsp), %rax
cmpl $0x4, 0x2258(%rax)
jne 0x165b31
movq 0x68(%rsp), %rax
movq 0x400(%rax), %rax
movq (%rax), %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x3f0(%rax)
movq 0x68(%rsp), %rax
movq 0x408(%rax), %rax
movq (%rax), %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x3c0(%rax)
movq 0x68(%rsp), %rax
movq 0x410(%rax), %rax
movq (%rax), %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x3c8(%rax)
movq 0x68(%rsp), %rax
movq 0x418(%rax), %rax
movq (%rax), %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x3d0(%rax)
movl $0x3, 0x74(%rsp)
jmp 0x165dd1
movl $0x1, 0x74(%rsp)
jmp 0x165dd1
jmp 0x165b40
jmp 0x165b42
jmp 0x165b44
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
cmpl $0xd, %eax
jne 0x165cfd
movq 0x48(%rsp), %rdi
callq 0x46da0
movq %rax, %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x448(%rax)
movq 0x68(%rsp), %rax
cmpq $0x0, 0x448(%rax)
je 0x165cfb
movl 0x3c(%rsp), %ecx
movq 0x68(%rsp), %rax
movl %ecx, 0x2258(%rax)
movq 0x68(%rsp), %rax
movslq 0x3c(%rsp), %rcx
movq 0x2260(%rax,%rcx,8), %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x408(%rax)
movq 0x68(%rsp), %rax
movq %rax, 0x20(%rsp)
testb $0x1, 0x67(%rsp)
je 0x165bda
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
jmp 0x165bf3
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x473f0
testb $0x1, %al
jne 0x165c0b
jmp 0x165cf9
movq 0x68(%rsp), %rax
movl 0x2258(%rax), %ecx
movq 0x68(%rsp), %rax
movl %ecx, 0x460(%rax)
movq 0x68(%rsp), %rax
movq 0x68(%rsp), %rcx
movslq 0x2258(%rcx), %rcx
movq 0x2260(%rax,%rcx,8), %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x410(%rax)
movq 0x68(%rsp), %rdi
movq 0x58(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rsi
callq 0x473f0
testb $0x1, %al
jne 0x165c6a
jmp 0x165cf7
movq 0x68(%rsp), %rax
movq 0x68(%rsp), %rcx
movslq 0x2258(%rcx), %rcx
movq 0x2260(%rax,%rcx,8), %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x418(%rax)
movq 0x68(%rsp), %rdi
movq 0x58(%rsp), %rax
movq 0x28(%rax), %rax
movq 0x10(%rax), %rsi
callq 0x473f0
testb $0x1, %al
jne 0x165cac
jmp 0x165cf5
movq 0x68(%rsp), %rdi
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movsd 0x8(%rax), %xmm0
callq 0x12220
movq %rax, %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x450(%rax)
movq 0x68(%rsp), %rax
movq 0x450(%rax), %rcx
movq 0x40(%rsp), %rax
movq %rcx, 0x10(%rax)
movl $0x2, 0x74(%rsp)
jmp 0x165dd1
jmp 0x165cf7
jmp 0x165cf9
jmp 0x165cfb
jmp 0x165cfd
jmp 0x165cff
jmp 0x165d01
jmp 0x165d03
movq 0x68(%rsp), %rdi
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rsi
callq 0x164f40
movq 0x68(%rsp), %rax
movq %rax, 0x10(%rsp)
testb $0x1, 0x67(%rsp)
je 0x165d41
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, 0x8(%rsp)
jmp 0x165d5a
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x164fa0
movq 0x68(%rsp), %rdi
movq 0x58(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rsi
callq 0x165000
movq 0x68(%rsp), %rdi
movq 0x58(%rsp), %rax
movq 0x28(%rax), %rax
movq 0x10(%rax), %rsi
callq 0x165060
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x348(%rax)
movq 0x58(%rsp), %rax
movq 0x20(%rax), %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x3b8(%rax)
movl $0x0, 0x74(%rsp)
movl 0x74(%rsp), %eax
addq $0x78, %rsp
retq
nopw (%rax,%rax)