// File: /workspace/github_c_makefile_star2_O3/BernardTatin[P]s7sh/s7.c
// Function: cell_optimize
static bool cell_optimize(s7_scheme *sc, s7_pointer expr)
                {
                    s7_pointer car_x, head;
                    /* fprintf(stderr, "%s: %s, %d\n", __func__, DISPLAY(expr), sc->pc); */

                    car_x = car(expr);
                    if (!is_pair(car_x)) /* wrap constants/symbols */
                        return(opt_cell_not_pair(sc, car_x));

                    head = car(car_x);
                    if (is_symbol(head))
                    {
                        s7_pointer s_func = NULL;
                        s7_int len;
                        len = s7_list_length(sc, car_x);

                        if ((is_syntactic_symbol(head)) ||
                                (is_syntactic_pair(car_x)))
                            return(p_syntax(sc, car_x, len));

                        if ((is_global(head)) ||
                                ((is_slot(global_slot(head))) &&
                                 (symbol_to_slot(sc, head) == global_slot(head))))
                            s_func = slot_value(global_slot(head));
                        else return(p_implicit(sc, car_x, len));

                        if (is_c_function(s_func))
                        {
                            opt_info *opc;
                            s7_pointer sig;
                            int32_t pstart;

                            sig = c_function_signature(s_func);
                            opc = alloc_opo(sc, car_x);
                            pstart = sc->pc;

                            switch (len)
                            {
                                case 1:
                                    if (p_ok(sc, opc, s_func, car_x))
                                        return(true);
                                    break;

                                case 2:
                                    if ((p_i_ok(sc, opc, s_func, car_x, sc->pc)) ||
                                            (p_d_ok(sc, opc, s_func, car_x, sc->pc)) ||
                                            (p_p_ok(sc, opc, s_func, car_x)))
                                        return(true);
                                    break;

                                case 3:
                                    {
                                        s7_i_ii_t ifunc;
                                        if (is_symbol(cadr(car_x)))
                                        {
                                            if ((is_pair(sig)) &&
                                                    (is_pair(cdr(sig))) &&
                                                    (is_pair(cddr(sig))) &&
                                                    (caddr(sig) == sc->is_integer_symbol))
                                            {
                                                if (p_pi_ok(sc, opc, s_func, sig, car_x))
                                                    return(true);

                                                if ((car(sig) == sc->is_float_symbol) ||
                                                        (car(sig) == sc->is_real_symbol))
                                                {
                                                    s7_d_7pi_t f;
                                                    f = s7_d_7pi_function(s_func);
                                                    if (f)
                                                    {
                                                        sc->pc = pstart - 1;
                                                        if (float_optimize(sc, expr))
                                                        {
                                                            if (oo_size(opc) < 8) oo_resize(opc, 8);
                                                            opc->v[7].fd = opc->v[0].fd;
                                                            opc->v[0].fp = d_to_p;
                                                            return(true);
                                                        }
                                                    }
                                                }
                                            }
                                            pc_fallback(sc, pstart);
                                        }

                                        ifunc = s7_i_ii_function(s_func);
                                        sc->pc = pstart - 1;
                                        if ((ifunc) &&
                                                (int_optimize(sc, expr)))
                                        {
                                            if (oo_size(opc) < 8) oo_resize(opc, 8);
                                            opc->v[7].fi = opc->v[0].fi;
                                            opc->v[0].fp = i_to_p;
                                            if (opc->v[7].fi == opt_i_ii_ss_add)
                                                opc->v[0].fp = opt_p_ii_ss_add;
                                            else
                                            {
                                                if (opc->v[7].fi == opt_i_ii_fc_add)
                                                    opc->v[0].fp = opt_p_ii_fc_add;
                                            }
                                            return(true);
                                        }
                                        pc_fallback(sc, pstart);

                                        if ((p_ii_ok(sc, opc, s_func, car_x, pstart)) ||
                                                (p_dd_ok(sc, opc, s_func, car_x, pstart)) ||
                                                (p_pp_ok(sc, opc, s_func, car_x, pstart)) ||
                                                (p_call_pp_ok(sc, opc, s_func, car_x, pstart)))
                                            return(true);
                                    }
                                    break;

                                case 4:
                                    if (is_symbol(cadr(car_x)))
                                    {
                                        if ((is_pair(sig)) &&
                                                (is_pair(cdr(sig))) &&
                                                (is_pair(cddr(sig))) &&
                                                (caddr(sig) == sc->is_integer_symbol))
                                        {
                                            if (p_pii_ok(sc, opc, s_func, car_x))
                                                return(true);
                                            if (p_pip_ok(sc, opc, s_func, car_x))
                                                return(true);

                                            if (((car(sig) == sc->is_float_symbol) ||
                                                        (car(sig) == sc->is_real_symbol)) &&
                                                    (s7_d_7pid_function(s_func)) &&
                                                    (d_7pid_ok(sc, opc, s_func, car_x)))
                                            {
                                                /* if d_7pid is ok, we need d_to_p for cell_optimize */
                                                if (oo_size(opc) < 8) oo_resize(opc, 8);
                                                opc->v[7].fd = opc->v[0].fd;
                                                opc->v[0].fp = d_to_p;
                                                return(true);
                                            }

                                            sc->pc = pstart - 1;
                                            if ((car(sig) == sc->is_integer_symbol) &&
                                                    (s7_i_7pii_function(s_func)) &&
                                                    (i_7pii_ok(sc, alloc_opo(sc, expr), s_func, car_x)))
                                            {
                                                if (oo_size(opc) < 8) oo_resize(opc, 8);
                                                opc->v[7].fi = opc->v[0].fi;
                                                opc->v[0].fp = i_to_p;
                                                return(true);
                                            }
                                        }
                                        pc_fallback(sc, pstart);
                                    }

                                    if ((p_ppi_ok(sc, opc, s_func, car_x)) ||
                                            (p_ppp_ok(sc, opc, s_func, car_x)) ||
                                            (p_call_ppp_ok(sc, opc, s_func, car_x)))
                                        return(true);
                                    break;

                                case 5:
                                    if ((head == sc->float_vector_set_symbol) &&
                                            (d_7piid_ok(sc, opc, s_func, car_x)))
                                    {
                                        if (oo_size(opc) < 8) oo_resize(opc, 8);
                                        opc->v[7].fd = opc->v[0].fd;
                                        opc->v[0].fp = d_to_p;         /* as above, if d_7piid is ok, we need d_to_p for cell_optimize */
                                        return(true);
                                    }
                                    /* pc_fallback(sc, pstart); */
                                    if (i_7piii_ok(sc, opc, s_func, car_x))
                                    {
                                        if (oo_size(opc) < 8) oo_resize(opc, 8);
                                        opc->v[7].fi = opc->v[0].fi;
                                        opc->v[0].fp = i_to_p;
                                        return(true);
                                    }
                                    if (head == sc->int_vector_set_symbol)
                                        return(return_false(sc, car_x, __func__, __LINE__));
                                    /* pc_fallback(sc, pstart); */
                                    if (p_piip_ok(sc, opc, s_func, car_x))
                                        return(true);
                                    pc_fallback(sc, pstart);

                                default:
                                    if (p_call_any_ok(sc, opc, s_func, car_x, len))
                                        return(true);
                                    break;
                            }
                        }
                        else
                        {
                            if (is_closure(s_func))
                            {
                                opt_info *opc;
                                opc = alloc_opo(sc, car_x);
                                if (p_fx_any_ok(sc, opc, s_func, expr))
                                    return(true);
                            }
                            if (is_macro(s_func))
                                return(return_false(sc, car_x, __func__, __LINE__)); /* macroexpand+cell_optimize here restarts the optimize process */
                        }
                    }
                    return(return_false(sc, car_x, __func__, __LINE__));
                }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
movq 0x8(%rsi), %r14
movzbl (%r14), %eax
cmpl $0x1, %eax
je 0xa2091
cmpl $0xa, %eax
jne 0xa211c
movq 0x8(%rbx), %rdi
movq %r14, %rsi
callq 0xa56a4
testq %rax, %rax
je 0xa2c21
movslq 0x2258(%rbx), %rcx
cmpq $0x100, %rcx            # imm = 0x100
jge 0xa2f6f
leal 0x1(%rcx), %edx
movl %edx, 0x2258(%rbx)
movq 0x2260(%rbx,%rcx,8), %rcx
movq $0x0, 0x38(%rcx)
movq %rax, 0x8(%rcx)
leaq 0x3691(%rip), %rax      # 0xa5705
movq %rax, (%rcx)
movabsq $0x100000002, %rax      # imm = 0x100000002
movq %rax, 0x60(%rcx)
movl $0x0, 0x70(%rcx)
jmp 0xa215e
movq 0x8(%r14), %rbp
cmpb $0xa, (%rbp)
jne 0xa2c21
movq %rsi, %r15
movq %rbx, %rdi
movq %r14, %rsi
callq 0x39d0d
movq %rax, %r9
cmpw $0x20a, (%rbp)          # imm = 0x20A
je 0xa20c4
cmpw $0x201, (%r14)          # imm = 0x201
jne 0xa21ae
movq 0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
xorl %ebp, %ebp
cmpq $0x1b5, %rax            # imm = 0x1B5
jg 0xa2166
leaq -0x19f(%rax), %rcx
cmpq $0xb, %rcx
ja 0xa250a
leaq 0x662c6(%rip), %rax     # 0x1083bc
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
cmpl $0x3, %r9d
jl 0xa2c21
movq %rbx, %rdi
movq %r14, %rsi
movl %r9d, %edx
callq 0xa6668
jmp 0xa25a7
movslq 0x2258(%rbx), %rax
cmpq $0x100, %rax            # imm = 0x100
jge 0xa2f6f
leal 0x1(%rax), %ecx
movl %ecx, 0x2258(%rbx)
movq 0x2260(%rbx,%rax,8), %rax
movq $0x0, 0x38(%rax)
movq %r14, 0x8(%rax)
leaq 0x354c(%rip), %rcx      # 0xa569f
movq %rcx, (%rax)
movq $0x2, 0x60(%rax)
movb $0x1, %bpl
jmp 0xa2c23
cmpq $0x1c9, %rax            # imm = 0x1C9
jle 0xa2358
leaq -0x1ca(%rax), %rcx
cmpq $0x2, %rcx
jb 0xa238a
cmpq $0x1d0, %rax            # imm = 0x1D0
je 0xa2592
cmpq $0x1e4, %rax            # imm = 0x1E4
jne 0xa2c23
movq %rbx, %rdi
movq %r14, %rsi
movl %r9d, %edx
callq 0xa712c
jmp 0xa25a7
movq 0x10(%rbp), %r13
testb $0x1, 0x2(%rbp)
jne 0xa22d6
cmpb $0x20, (%r13)
movq 0x8(%rbx), %r12
jne 0xa21e5
movq %r12, %rdi
movq %rbp, %rsi
movq %r9, 0x8(%rsp)
callq 0xbe33
movq 0x8(%rsp), %r9
cmpq %r13, %rax
je 0xa22d6
movq 0x18(%r12), %rdx
movq 0x20(%rbp), %rcx
movl $0x18, %eax
cmpq %rcx, %rdx
je 0xa2212
jle 0xa2209
movq 0x10(%r12), %r12
movq 0x18(%r12), %rdx
cmpq %rdx, %rcx
jl 0xa21fa
cmpq %rcx, %rdx
jne 0xa2667
movq (%rbp,%rax), %rcx
cmpb $0x20, (%rcx)
jne 0xa2c21
movq 0x10(%rcx), %r12
movzbl (%r12), %eax
leaq 0xb0950(%rip), %rdx     # 0x152b80
cmpb $0x0, (%rax,%rdx)
jne 0xa2242
testb $0x40, 0x3(%r12)
je 0xa2c21
movslq 0x2258(%rbx), %rax
cmpq $0x100, %rax            # imm = 0x100
jge 0xa2f6f
leal 0x1(%rax), %edx
movl %edx, 0x2258(%rbx)
movq 0x2260(%rbx,%rax,8), %r15
movq $0x0, 0x38(%r15)
movq %rcx, 0x8(%r15)
movl 0x2258(%rbx), %ebp
cmpl $0x2, %r9d
jne 0xa2698
movl %ebp, %r13d
movzbl (%r12), %eax
xorl %ebp, %ebp
leal -0x13(%rax), %ecx
cmpl $0x9, %ecx
ja 0xa2958
leaq 0x660c9(%rip), %rax     # 0x108368
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq 0x18(%r12), %rax
movq 0x20(%rax), %rcx
movl $0xd, %ebp
leaq -0x1fffe(%rip), %rax    # 0x822bf
testq %rcx, %rcx
je 0xa2997
cmpq $0x1, 0x10(%rcx)
je 0xa2997
jmp 0xa2c21
movq 0x10(%r13), %r12
movb (%r12), %al
cmpb $0x2f, %al
jbe 0xa24b7
movslq 0x2258(%rbx), %rax
cmpq $0x100, %rax            # imm = 0x100
jge 0xa2f6f
movq 0x8(%r12), %rcx
movq 0x38(%rcx), %rcx
leal 0x1(%rax), %edx
movl %edx, 0x2258(%rbx)
movq 0x2260(%rbx,%rax,8), %r13
movq $0x0, 0x38(%r13)
movq %r9, %rax
decq %rax
cmpq $0x4, %rax
ja 0xa2934
movl 0x2258(%rbx), %r8d
leaq 0x6606f(%rip), %rdx     # 0x1083a8
movslq (%rdx,%rax,4), %rax
addq %rdx, %rax
jmpq *%rax
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0xa2fb1
jmp 0xa2948
cmpq $0x1b6, %rax            # imm = 0x1B6
je 0xa2582
cmpq $0x1c3, %rax            # imm = 0x1C3
jne 0xa2c23
cmpl $0x2, %r9d
jl 0xa2c21
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa6766
jmp 0xa25a7
movslq 0x2258(%rbx), %rax
cmpq $0x100, %rax            # imm = 0x100
jge 0xa2f6f
leal 0x1(%rax), %ecx
movl %ecx, 0x2258(%rbx)
movq 0x2260(%rbx,%rax,8), %r15
movq $0x0, 0x38(%r15)
cmpl $0x3, %r9d
jne 0xa25ae
movq 0x8(%r14), %rax
cmpq 0x1828(%rbx), %rax
leaq 0x9b3a(%rip), %rax      # 0xabf0c
leaq 0x9b8a(%rip), %rcx      # 0xabf63
cmoveq %rax, %rcx
movq %rcx, (%r15)
movslq 0x2258(%rbx), %r13
movq 0x2260(%rbx,%r13,8), %r12
movq 0x10(%r14), %rsi
movq %rbx, %rdi
callq 0xa2000
testb %al, %al
jne 0xa243f
movl %r13d, 0x2258(%rbx)
movq 0x10(%r14), %rsi
movq %rbx, %rdi
callq 0xa9cd3
testb %al, %al
je 0xa2c21
cmpl $0x7, 0x60(%r12)
jg 0xa242b
movl $0x8, 0x60(%r12)
movq (%r12), %rax
movq %rax, 0x38(%r12)
leaq 0x9b85(%rip), %rax      # 0xabfc0
movq %rax, (%r12)
movl 0x2258(%rbx), %ebp
movq 0x10(%r14), %rax
movq 0x10(%rax), %rsi
movq %rbx, %rdi
callq 0xa2000
testb %al, %al
jne 0xa249c
movl %ebp, 0x2258(%rbx)
movq 0x10(%r14), %rax
movq 0x10(%rax), %rsi
movq %rbx, %rdi
callq 0xa9cd3
testb %al, %al
je 0xa2c21
cmpl $0x7, 0x60(%r12)
jg 0xa2488
movl $0x8, 0x60(%r12)
movq (%r12), %rax
movq %rax, 0x38(%r12)
leaq 0x9b28(%rip), %rax      # 0xabfc0
movq %rax, (%r12)
movslq 0x2258(%rbx), %rax
decq %rax
movq %rax, 0x8(%r15)
movq $0x2, 0x60(%r15)
jmp 0xa215e
cmpb $0x28, %al
jne 0xa2501
movslq 0x2258(%rbx), %rax
cmpq $0x100, %rax            # imm = 0x100
jge 0xa2f6f
leal 0x1(%rax), %ecx
movl %ecx, 0x2258(%rbx)
movq 0x2260(%rbx,%rax,8), %rsi
movq $0x0, 0x38(%rsi)
movq %rbx, %rdi
movq %r15, %rdx
callq 0xa5645
movb $0x1, %bpl
testb %al, %al
jne 0xa2c23
movb (%r12), %al
xorl %ebp, %ebp
cmpb $0x2a, %al
jmp 0xa2c23
cmpq $0x19b, %rax            # imm = 0x19B
jne 0xa2c23
movq 0x10(%r14), %rax
cmpb $0x1, (%rax)
jne 0xa2c21
movq 0x10(%rax), %rax
cmpq 0x110(%rbx), %rax
jne 0xa2c21
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa570e
jmp 0xa25a7
movq %rbx, %rdi
movq %r14, %rsi
movl %r9d, %edx
callq 0xa69d0
jmp 0xa25a7
cmpl $0x2, %r9d
jl 0xa2c21
movq %rbx, %rdi
movq %r14, %rsi
movl %r9d, %edx
callq 0xa65a2
jmp 0xa25a7
cmpl $0x3, %r9d
jne 0xa2c21
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa5784
jmp 0xa25a7
movq %rbx, %rdi
movq %r14, %rsi
movl %r9d, %edx
callq 0xa6fc3
jmp 0xa25a7
cmpl $0x3, %r9d
jl 0xa2c21
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa6dfa
movl %eax, %ebp
jmp 0xa2c23
testl %r9d, %r9d
jle 0xa2c21
leal -0x1(%r9), %eax
movq %rax, 0x8(%r15)
movq 0x8(%r14), %rax
cmpq 0x1828(%rbx), %rax
leaq 0x9a09(%rip), %rax      # 0xabfda
leaq 0x9a6d(%rip), %rcx      # 0xac045
cmoveq %rax, %rcx
movq %rcx, (%r15)
movq 0x10(%r14), %r14
cmpb $0x1, (%r14)
jne 0xa264c
leaq 0x99d0(%rip), %r12      # 0xabfc0
movslq 0x2258(%rbx), %rbp
movq 0x2260(%rbx,%rbp,8), %r13
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa2000
testb %al, %al
jne 0xa2642
movl %ebp, 0x2258(%rbx)
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa9cd3
testb %al, %al
je 0xa2c21
cmpl $0x7, 0x60(%r13)
jg 0xa2636
movl $0x8, 0x60(%r13)
movq (%r13), %rax
movq %rax, 0x38(%r13)
movq %r12, (%r13)
movq 0x10(%r14), %r14
cmpb $0x1, (%r14)
je 0xa25f0
movslq 0x2258(%rbx), %rax
decq %rax
movq %rax, 0x10(%r15)
movq $0x3, 0x60(%r15)
jmp 0xa215e
movl $0x10, %eax
cmpb $0x1c, (%r12)
jne 0xa2212
movq 0x8(%r12), %rcx
testq %rcx, %rcx
je 0xa2691
cmpq %rbp, 0x8(%rcx)
je 0xa2217
movq 0x18(%rcx), %rcx
jmp 0xa267c
movq 0x10(%r12), %r12
jmp 0xa266c
cmpl $0x3, %r9d
jl 0xa2c21
jne 0xa2bf2
cmpb $0x15, (%r12)
jne 0xa2bf2
movq 0x18(%r12), %rax
movq 0x20(%rax), %rax
testq %rax, %rax
je 0xa2bf2
cmpq $0x2, 0x10(%rax)
jne 0xa2bf2
movq %r9, %r13
movq 0x10(%r14), %rsi
movq %rbx, %rdi
callq 0x9fbc8
testb %al, %al
je 0xa2be9
movq 0x10(%r14), %rax
movq 0x10(%rax), %rsi
movq %rbx, %rdi
callq 0x9fbc8
testb %al, %al
je 0xa2be9
leaq 0xbc16(%rip), %rax      # 0xae31c
movq %rax, (%r15)
leaq 0xbc70(%rip), %rax      # 0xae380
movq %rax, 0x20(%r15)
movabsq $0x100000005, %rax      # imm = 0x100000005
movq %rax, 0x60(%r15)
movl $0x0, 0x70(%r15)
jmp 0xa215e
movq %r9, %r15
movq %r8, 0x8(%rsp)
cmpq 0xef8(%rbx), %rbp
jne 0xa28c1
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0x9f14e
testb %al, %al
je 0xa28c1
cmpl $0x7, 0x60(%r13)
jg 0xa276c
movl $0x8, 0x60(%r13)
movq (%r13), %rax
movq %rax, 0x38(%r13)
leaq 0x1159(%rip), %rax      # 0xa38d4
jmp 0xa28f4
movq 0x10(%r14), %rax
movq 0x8(%rax), %rax
cmpb $0xa, (%rax)
jne 0xa27bc
cmpb $0x1, (%rcx)
jne 0xa27b5
movq 0x10(%rcx), %rax
cmpb $0x1, (%rax)
jne 0xa27b5
movq 0x10(%rax), %rax
cmpb $0x1, (%rax)
jne 0xa27b5
movq 0x8(%rax), %rax
cmpq 0x10d0(%rbx), %rax
je 0xa2c9e
movl %r8d, 0x2258(%rbx)
cmpb $0x30, (%r12)
jb 0xa2adf
movq 0x8(%r12), %rax
movq 0x20(%rax), %rax
testq %rax, %rax
je 0xa2adf
cmpl $0x13, (%rax)
je 0xa2a64
movq 0x10(%rax), %rax
jmp 0xa27d0
movq 0x10(%r14), %rax
movq 0x8(%rax), %rax
cmpb $0xa, (%rax)
jne 0xa2824
cmpb $0x1, (%rcx)
jne 0xa281d
movq 0x10(%rcx), %rax
cmpb $0x1, (%rax)
jne 0xa281d
movq 0x10(%rax), %rax
cmpb $0x1, (%rax)
jne 0xa281d
movq 0x8(%rax), %rax
cmpq 0x10d0(%rbx), %rax
je 0xa2d14
movl %r8d, 0x2258(%rbx)
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0xa4ab7
movb $0x1, %bpl
testb %al, %al
jne 0xa2c23
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0xa4ba8
testb %al, %al
jne 0xa2c23
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0xa50b5
jmp 0xa294b
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0xa3049
movb $0x1, %bpl
testb %al, %al
jne 0xa2c23
movl 0x2258(%rbx), %r8d
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0xa311f
testb %al, %al
jne 0xa2c23
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0xa3207
jmp 0xa294b
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0xa1442
testb %al, %al
je 0xa28fd
cmpl $0x7, 0x60(%r13)
jg 0xa28e5
movl $0x8, 0x60(%r13)
movq (%r13), %rax
movq %rax, 0x38(%r13)
leaq 0x103c(%rip), %rax      # 0xa3930
movq %rax, (%r13)
jmp 0xa215e
cmpq 0xfb0(%rbx), %rbp
je 0xa2c21
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0xa5331
movb $0x1, %bpl
testb %al, %al
jne 0xa2c23
movq %r15, %r9
movq 0x8(%rsp), %rax
movl %eax, 0x2258(%rbx)
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
movl %r9d, %r8d
callq 0xa5579
movb $0x1, %bpl
testb %al, %al
je 0xa2c21
jmp 0xa2c23
cmpl $0x1, %eax
jne 0xa2c23
movl $0xb, %ebp
leaq -0x203a5(%rip), %rax    # 0x825c8
jmp 0xa2997
movl $0xc, %ebp
leaq -0x97430(%rip), %rax    # 0xb54b
jmp 0xa2997
movl $0x9, %ebp
leaq -0x1feaf(%rip), %rax    # 0x82ada
jmp 0xa2997
movl $0x8, %ebp
leaq -0x6c07d(%rip), %rax    # 0x3691a
movq %rax, 0x18(%r15)
movq 0x10(%r14), %rsi
movq 0x8(%rsi), %rax
movb (%rax), %cl
cmpb $0xa, %cl
jne 0xa29fc
movq 0x8(%rbx), %rdi
movq %rax, %rsi
callq 0xbe33
cmpb $0x20, (%rax)
jne 0xa2c21
movq %rax, 0x10(%r15)
movb (%r12), %cl
addb $-0x1b, %cl
cmpb $0x2, %cl
jae 0xa2b56
leaq 0xb88e(%rip), %rax      # 0xae268
movq %rax, (%r15)
movabsq $0x200000004, %rax      # imm = 0x200000004
movq %rax, 0x60(%r15)
movl %ebp, 0x70(%r15)
movl $0x0, 0x74(%r15)
jmp 0xa215e
movb (%r12), %dl
addb $-0x1b, %dl
cmpb $0x2, %dl
jae 0xa2a47
movq %rbx, %rdi
callq 0xa2000
testb %al, %al
je 0xa2c21
movslq %r13d, %rax
leaq 0xb8c2(%rip), %rcx      # 0xae2e4
movq %rcx, (%r15)
movq 0x2260(%rbx,%rax,8), %rax
movq %rax, 0x20(%r15)
movq (%rax), %rax
movq %rax, 0x28(%r15)
movabsq $0x100000006, %rax      # imm = 0x100000006
jmp 0xa2bdc
cmpb $0xb, %cl
jne 0xa2bbc
movq 0x8(%rax), %rax
movq %rax, 0x10(%r15)
leaq 0xb826(%rip), %rax      # 0xae285
jmp 0xa2bcf
leal -0x1(%r8), %ecx
cmpq $0x0, 0x8(%rax)
movl %ecx, 0x2258(%rbx)
je 0xa2adf
movq %rbx, %rdi
movq %r15, %rsi
movq %r8, %r15
callq 0x9fbc8
movq %r15, %r8
testb %al, %al
je 0xa2adf
cmpl $0x7, 0x60(%r13)
jg 0xa2a99
movl $0x8, 0x60(%r13)
movq (%r13), %rax
movq %rax, 0x38(%r13)
leaq 0xe88(%rip), %rcx       # 0xa3930
movq %rcx, (%r13)
leaq 0xee5(%rip), %rcx       # 0xa3998
cmpq %rcx, %rax
je 0xa2d97
movb $0x1, %bpl
leaq 0xf66(%rip), %rcx       # 0xa3a2c
cmpq %rcx, %rax
jne 0xa2c23
leaq 0xf7f(%rip), %rax       # 0xa3a55
movq %rax, (%r13)
jmp 0xa2c23
movl %r8d, 0x2258(%rbx)
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
movq %r8, %r15
callq 0xa3ade
movb $0x1, %bpl
testb %al, %al
jne 0xa2c23
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
movl %r15d, %r8d
callq 0xa3c2f
testb %al, %al
jne 0xa2c23
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
movl %r15d, %r8d
callq 0xa3d25
testb %al, %al
jne 0xa2c23
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
movl %r15d, %r8d
callq 0xa41af
jmp 0xa294b
movq 0x10(%rax), %rcx
cmpb $0xb, (%rcx)
jne 0xa2c21
leaq 0x6bf9(%rip), %rcx      # 0xa9763
movq %rcx, (%r15)
testb $0x4, 0x3(%rax)
je 0xa2e19
movzbl (%r12), %ecx
addl $-0x13, %ecx
cmpl $0x5, %ecx
ja 0xa2e19
leaq 0x65801(%rip), %rdx     # 0x108390
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
cmpq 0x8(%r12), %rax
jg 0xa2e19
movl $0x9, %ebp
leaq 0xb5bd(%rip), %rax      # 0xae174
jmp 0xa2e15
movq %rbx, %rdi
callq 0x9fbc8
testb %al, %al
je 0xa2c21
leaq 0xb6cf(%rip), %rax      # 0xae29e
movq %rax, (%r15)
movabsq $0x100000004, %rax      # imm = 0x100000004
movq %rax, 0x60(%r15)
movl %ebp, 0x70(%r15)
jmp 0xa215e
movl %ebp, 0x2258(%rbx)
movq %r13, %r9
andl $0x7fffffff, %r9d       # imm = 0x7FFFFFFF
movq %r9, 0x8(%r15)
cmpb $0x1, (%r14)
jne 0xa2c18
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa2000
testb %al, %al
je 0xa2c18
movq 0x10(%r14), %r14
jmp 0xa2bfd
cmpq 0x110(%rbx), %r14
je 0xa2c34
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xb868(%rip), %rax      # 0xae4a3
movq %rax, (%r15)
movzbl (%r12), %eax
xorl %ebp, %ebp
leal -0x15(%rax), %ecx
cmpl $0x6, %ecx
ja 0xa2c69
leaq 0x656f8(%rip), %rax     # 0x10834c
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq -0x28fd7(%rip), %rax    # 0x79c8d
jmp 0xa2656
cmpl $0x1, %eax
jne 0xa2c23
leaq -0x2c5e4(%rip), %rax    # 0x76691
jmp 0xa2656
leaq -0x27c3a(%rip), %rax    # 0x7b047
jmp 0xa2656
leaq -0x26d4d(%rip), %rax    # 0x7bf40
jmp 0xa2656
leaq -0x2755c(%rip), %rax    # 0x7b73d
jmp 0xa2656
movq %r8, 0x8(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %rcx, 0x10(%rsp)
movq %r14, %r8
callq 0xa3568
movb $0x1, %bpl
testb %al, %al
jne 0xa2c23
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
cmpq 0x11e0(%rbx), %rax
movq 0x8(%rsp), %r8
je 0xa2ce8
cmpq 0x1180(%rbx), %rax
jne 0xa27b5
cmpb $0x30, (%r12)
jb 0xa27b5
movq 0x8(%r12), %rax
movq 0x20(%rax), %rax
testq %rax, %rax
je 0xa27b5
cmpl $0x5, (%rax)
je 0xa2e38
movq 0x10(%rax), %rax
jmp 0xa2cfc
movq %rcx, %r15
movq %r8, 0x8(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0xa43b7
movb $0x1, %bpl
testb %al, %al
jne 0xa2c23
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0xa4568
testb %al, %al
jne 0xa2c23
movq 0x8(%r15), %rax
cmpq 0x11e0(%rbx), %rax
je 0xa2d6b
cmpq 0x1180(%rbx), %rax
jne 0xa2ea6
cmpb $0x30, (%r12)
jb 0xa2ea6
movq 0x8(%r12), %rax
movq 0x20(%rax), %rax
testq %rax, %rax
je 0xa2ea6
cmpl $0xa, (%rax)
je 0xa2e67
movq 0x10(%rax), %rax
jmp 0xa2d7f
leaq 0xc13(%rip), %rax       # 0xa39b1
jmp 0xa28f4
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
cmpq 0x8(%r12), %rax
jg 0xa2e19
movl $0x4, %ebp
leaq 0xb444(%rip), %rax      # 0xae202
jmp 0xa2e15
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
cmpq 0x8(%r12), %rax
jg 0xa2e19
movl $0x6, %ebp
leaq 0xb3c1(%rip), %rax      # 0xae19c
jmp 0xa2e15
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
cmpq 0x8(%r12), %rax
jg 0xa2e19
movl $0x5, %ebp
leaq 0xb3ad(%rip), %rax      # 0xae1a5
jmp 0xa2e15
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
cmpq 0x8(%r12), %rax
jg 0xa2e19
movl $0xa, %ebp
leaq 0xb373(%rip), %rax      # 0xae188
movq %rax, 0x18(%r15)
movabsq $0x200000004, %rax      # imm = 0x200000004
movq %rax, 0x60(%r15)
movl %ebp, 0x70(%r15)
movl $0x1, 0x74(%r15)
jmp 0xa215e
cmpq $0x0, 0x8(%rax)
je 0xa27b5
leal -0x1(%r8), %eax
movl %eax, 0x2258(%rbx)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x44f61
movq 0x8(%rsp), %r8
testb %al, %al
je 0xa27b5
jmp 0xa2e83
cmpq $0x0, 0x8(%rax)
je 0xa2ea6
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0x9e98d
testb %al, %al
je 0xa2ea6
cmpl $0x7, 0x60(%r13)
jg 0xa2e92
movl $0x8, 0x60(%r13)
movq (%r13), %rax
movq %rax, 0x38(%r13)
leaq 0xa33(%rip), %rax       # 0xa38d4
jmp 0xa2ad6
movq 0x8(%rsp), %r8
leal -0x1(%r8), %eax
movl %eax, 0x2258(%rbx)
movq 0x8(%r15), %rax
cmpq 0x10d0(%rbx), %rax
jne 0xa281d
cmpb $0x30, (%r12)
jb 0xa281d
movq 0x8(%r12), %rax
movq 0x20(%rax), %rcx
testq %rcx, %rcx
je 0xa281d
movslq %r8d, %rax
movq 0x8(%rsp), %r8
cmpl $0x17, (%rcx)
je 0xa2efe
movq 0x10(%rcx), %rcx
testq %rcx, %rcx
jne 0xa2eeb
jmp 0xa281d
cmpq $0x0, 0x8(%rcx)
movq 0x8(%rsp), %r8
je 0xa281d
cmpl $0x101, %r8d            # imm = 0x101
jge 0xa2f6f
movq 0x8(%rsp), %r15
movl %r15d, 0x2258(%rbx)
movq 0x2258(%rbx,%rax,8), %rsi
movq $0x0, 0x38(%rsi)
movq %rbx, %rdi
movq %r12, %rdx
movq %r14, %rcx
callq 0xa11fe
movq %r15, %r8
testb %al, %al
je 0xa281d
cmpl $0x7, 0x60(%r13)
jg 0xa2f5b
movl $0x8, 0x60(%r13)
movq (%r13), %rax
movq %rax, 0x38(%r13)
leaq 0x9c6(%rip), %rax       # 0xa3930
jmp 0xa2ad6
addq $0x2190, %rbx           # imm = 0x2190
movq %rbx, %rdi
movl $0x1, %esi
callq 0x8530