// File: /workspace/github_c_makefile_star2_O1/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 0xa8c4b
cmpl $0xa, %eax
jne 0xa8cd9
movq %rbx, %rdi
movq %r14, %rsi
callq 0xac2d6
testq %rax, %rax
je 0xa9adf
movslq 0x2258(%rbx), %rcx
cmpq $0x100, %rcx            # imm = 0x100
jge 0xa9b9a
leal 0x1(%rcx), %edx
movl %edx, 0x2258(%rbx)
movq 0x2260(%rbx,%rcx,8), %rcx
movq $0x0, 0x38(%rcx)
movq %rax, 0x8(%rcx)
leaq 0x371f(%rip), %rax      # 0xac34d
movq %rax, (%rcx)
movabsq $0x100000002, %rax      # imm = 0x100000002
movq %rax, 0x60(%rcx)
movl $0x0, 0x70(%rcx)
jmp 0xa8d1b
movq 0x8(%r14), %rbp
cmpb $0xa, (%rbp)
jne 0xa9adf
movq %rsi, %r15
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3c299
movq %rax, %r13
cmpw $0x20a, (%rbp)          # imm = 0x20A
je 0xa8c7e
cmpw $0x201, (%r14)          # imm = 0x201
jne 0xa8d73
movq 0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rcx
xorl %eax, %eax
cmpq $0x1b5, %rcx            # imm = 0x1B5
jg 0xa8d23
leaq -0x19f(%rcx), %rdx
cmpq $0xb, %rdx
ja 0xa9037
leaq 0x6869f(%rip), %rcx     # 0x111350
movslq (%rcx,%rdx,4), %rdx
addq %rcx, %rdx
xorl %ebp, %ebp
jmpq *%rdx
cmpl $0x3, %r13d
jl 0xa9ad7
movq %rbx, %rdi
movq %r14, %rsi
movl %r13d, %edx
callq 0xad3b3
jmp 0xa90da
movslq 0x2258(%rbx), %rax
cmpq $0x100, %rax            # imm = 0x100
jge 0xa9b9a
leal 0x1(%rax), %ecx
movl %ecx, 0x2258(%rbx)
movq 0x2260(%rbx,%rax,8), %rax
movq $0x0, 0x38(%rax)
movq %r14, 0x8(%rax)
leaq 0x35c1(%rip), %rcx      # 0xac2d1
movq %rcx, (%rax)
movq $0x2, 0x60(%rax)
movb $0x1, %bpl
jmp 0xa9ae1
cmpq $0x1c9, %rcx            # imm = 0x1C9
jle 0xa8e7b
leaq -0x1ca(%rcx), %rdx
cmpq $0x2, %rdx
jb 0xa8eb4
cmpq $0x1d0, %rcx            # imm = 0x1D0
je 0xa90c5
movl $0x0, %ebp
cmpq $0x1e4, %rcx            # imm = 0x1E4
jne 0xa9adb
movq %rbx, %rdi
movq %r14, %rsi
movl %r13d, %edx
callq 0xadebc
jmp 0xa90da
testb $0x1, 0x2(%rbp)
jne 0xa8df8
movq 0x10(%rbp), %r12
cmpb $0x20, (%r12)
jne 0xa8d94
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xccb2
cmpq %r12, %rax
je 0xa8df8
movq 0x8(%rbx), %rax
movq 0x18(%rax), %rdx
movq 0x20(%rbp), %rcx
cmpq %rcx, %rdx
je 0xa8dbd
jle 0xa8db4
movq 0x10(%rax), %rax
movq 0x18(%rax), %rdx
cmpq %rdx, %rcx
jl 0xa8da7
cmpq %rcx, %rdx
jne 0xa9233
movq 0x18(%rbp), %r12
cmpb $0x20, (%r12)
jne 0xa9ad7
movq 0x10(%r12), %r15
movzbl (%r15), %eax
leaq 0xb1da4(%rip), %rcx     # 0x15ab80
cmpb $0x0, (%rax,%rcx)
jne 0xa91a1
testb $0x40, 0x3(%r15)
jne 0xa91a1
movb $0x1, %al
jmp 0xa9acf
movq 0x10(%rbp), %rax
movq 0x10(%rax), %r12
movb (%r12), %al
cmpb $0x2f, %al
jbe 0xa8fe1
movslq 0x2258(%rbx), %rax
cmpq $0x100, %rax            # imm = 0x100
jge 0xa9b9a
movq 0x8(%r12), %rcx
movq 0x38(%rcx), %rcx
leal 0x1(%rax), %edx
movl %edx, 0x2258(%rbx)
movq 0x2260(%rbx,%rax,8), %rsi
movq $0x0, 0x38(%rsi)
movq %r13, %rax
decq %rax
cmpq $0x4, %rax
ja 0xa95ec
movl 0x2258(%rbx), %r8d
leaq 0x684dd(%rip), %rdx     # 0x11133c
movslq (%rdx,%rax,4), %rax
addq %rdx, %rax
jmpq *%rax
movq %rbx, %rdi
movq %r12, %rdx
movq %r14, %rcx
callq 0xa9bdc
jmp 0xa95fd
cmpq $0x1b6, %rcx            # imm = 0x1B6
je 0xa90b5
movl $0x0, %ebp
cmpq $0x1c3, %rcx            # imm = 0x1C3
jne 0xa9adb
cmpl $0x2, %r13d
jl 0xa9ad7
movq %rbx, %rdi
movq %r14, %rsi
callq 0xad4b8
jmp 0xa90da
movslq 0x2258(%rbx), %rax
cmpq $0x100, %rax            # imm = 0x100
jge 0xa9b9a
leal 0x1(%rax), %ecx
movl %ecx, 0x2258(%rbx)
movq 0x2260(%rbx,%rax,8), %r15
movq $0x0, 0x38(%r15)
cmpl $0x3, %r13d
jne 0xa90e3
movq 0x8(%r14), %rax
cmpq 0x1828(%rbx), %rax
leaq 0x9fde(%rip), %rax      # 0xb2eda
leaq 0xa02e(%rip), %rcx      # 0xb2f31
cmoveq %rax, %rcx
movq %rcx, (%r15)
movslq 0x2258(%rbx), %r13
movq 0x2260(%rbx,%r13,8), %r12
movq 0x10(%r14), %rsi
movq %rbx, %rdi
callq 0xa8bbb
testb %al, %al
jne 0xa8f69
movl %r13d, 0x2258(%rbx)
movq 0x10(%r14), %rsi
movq %rbx, %rdi
callq 0xb0bfb
testb %al, %al
je 0xa9ad7
cmpl $0x7, 0x60(%r12)
jg 0xa8f55
movl $0x8, 0x60(%r12)
movq (%r12), %rax
movq %rax, 0x38(%r12)
leaq 0xa029(%rip), %rax      # 0xb2f8e
movq %rax, (%r12)
movl 0x2258(%rbx), %ebp
movq 0x10(%r14), %rax
movq 0x10(%rax), %rsi
movq %rbx, %rdi
callq 0xa8bbb
testb %al, %al
jne 0xa8fc6
movl %ebp, 0x2258(%rbx)
movq 0x10(%r14), %rax
movq 0x10(%rax), %rsi
movq %rbx, %rdi
callq 0xb0bfb
testb %al, %al
je 0xa9ad7
cmpl $0x7, 0x60(%r12)
jg 0xa8fb2
movl $0x8, 0x60(%r12)
movq (%r12), %rax
movq %rax, 0x38(%r12)
leaq 0x9fcc(%rip), %rax      # 0xb2f8e
movq %rax, (%r12)
movslq 0x2258(%rbx), %rax
decq %rax
movq %rax, 0x8(%r15)
movq $0x2, 0x60(%r15)
jmp 0xa9199
cmpb $0x28, %al
jne 0xa9024
movslq 0x2258(%rbx), %rax
cmpq $0x100, %rax            # imm = 0x100
jge 0xa9b9a
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 0xac277
testb %al, %al
jne 0xa9199
movb $0x1, %bpl
cmpb $0x2a, (%r12)
jne 0xa9615
jmp 0xa9ad7
movl $0x0, %ebp
cmpq $0x19b, %rcx            # imm = 0x19B
jne 0xa9adb
movq 0x10(%r14), %rax
cmpb $0x1, (%rax)
jne 0xa9ad7
movq 0x10(%rax), %rax
cmpq 0x110(%rbx), %rax
jne 0xa9ad7
movq %rbx, %rdi
movq %r14, %rsi
callq 0xac356
jmp 0xa90da
movq %rbx, %rdi
movq %r14, %rsi
movl %r13d, %edx
callq 0xad752
jmp 0xa90da
cmpl $0x2, %r13d
jl 0xa9ad7
movq %rbx, %rdi
movq %r14, %rsi
movl %r13d, %edx
callq 0xad2d8
jmp 0xa90da
cmpl $0x3, %r13d
jne 0xa9ad7
movq %rbx, %rdi
movq %r14, %rsi
callq 0xac3cc
jmp 0xa90da
movq %rbx, %rdi
movq %r14, %rsi
movl %r13d, %edx
callq 0xadd54
jmp 0xa90da
cmpl $0x3, %r13d
jl 0xa9ad7
movq %rbx, %rdi
movq %r14, %rsi
callq 0xadb8b
movl %eax, %ebp
xorl %eax, %eax
jmp 0xa9adb
testl %r13d, %r13d
jle 0xa9ad7
leal -0x1(%r13), %eax
cltq
movq %rax, 0x8(%r15)
movq 0x8(%r14), %rax
cmpq 0x1828(%rbx), %rax
leaq 0x9ea0(%rip), %rax      # 0xb2fa8
leaq 0x9f08(%rip), %rcx      # 0xb3017
cmoveq %rax, %rcx
movq %rcx, (%r15)
movq 0x10(%r14), %r14
cmpb $0x1, (%r14)
jne 0xa9183
leaq 0x9e67(%rip), %r12      # 0xb2f8e
movslq 0x2258(%rbx), %rbp
movq 0x2260(%rbx,%rbp,8), %r13
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa8bbb
testb %al, %al
jne 0xa9179
movl %ebp, 0x2258(%rbx)
movq %rbx, %rdi
movq %r14, %rsi
callq 0xb0bfb
testb %al, %al
je 0xa9ad7
cmpl $0x7, 0x60(%r13)
jg 0xa916d
movl $0x8, 0x60(%r13)
movq (%r13), %rax
movq %rax, 0x38(%r13)
movq %r12, (%r13)
movq 0x10(%r14), %r14
cmpb $0x1, (%r14)
je 0xa9127
movslq 0x2258(%rbx), %rax
decq %rax
movq %rax, 0x10(%r15)
movq $0x3, 0x60(%r15)
movb $0x1, %bpl
jmp 0xa90dc
movslq 0x2258(%rbx), %rax
cmpq $0x100, %rax            # imm = 0x100
jge 0xa9b9a
leal 0x1(%rax), %ecx
movl %ecx, 0x2258(%rbx)
movq 0x2260(%rbx,%rax,8), %rdi
movq $0x0, 0x38(%rdi)
movq %r12, 0x8(%rdi)
movl 0x2258(%rbx), %r12d
cmpl $0x2, %r13d
jne 0xa9272
movzbl (%r15), %eax
xorl %ecx, %ecx
leal -0x13(%rax), %edx
cmpl $0x9, %edx
ja 0xa961c
leaq 0x68101(%rip), %rax     # 0x1112fc
movslq (%rax,%rdx,4), %rdx
addq %rax, %rdx
xorl %ebp, %ebp
jmpq *%rdx
movq 0x18(%r15), %rax
movq 0x20(%rax), %rcx
movl $0xd, %ebp
leaq -0x20a86(%rip), %rax    # 0x88794
testq %rcx, %rcx
je 0xa9660
cmpq $0x1, 0x10(%rcx)
je 0xa9660
jmp 0xa97f8
cmpb $0x1c, (%rax)
jne 0xa8dc1
movq 0x8(%rax), %rcx
testq %rcx, %rcx
sete %sil
je 0xa9255
cmpq %rbp, 0x8(%rcx)
je 0xa9258
movq 0x18(%rcx), %rcx
jmp 0xa9240
movq %rdx, %rcx
testb %sil, %sil
je 0xa95b4
movq 0x10(%rax), %rax
cmpb $0x1c, (%rax)
movq %rcx, %rdx
je 0xa923c
jmp 0xa8dc1
cmpl $0x3, %r13d
jl 0xa9acd
jne 0xa981a
cmpb $0x15, (%r15)
jne 0xa981a
movq 0x18(%r15), %rax
movq 0x20(%rax), %rax
testq %rax, %rax
je 0xa981a
cmpq $0x2, 0x10(%rax)
jne 0xa981a
movl %r12d, %ebp
movq %rdi, %r12
movq 0x10(%r14), %rsi
movq %rbx, %rdi
callq 0xa66f0
testb %al, %al
je 0xa9811
movq 0x10(%r14), %rax
movq 0x10(%rax), %rsi
movq %rbx, %rdi
callq 0xa66f0
testb %al, %al
je 0xa9811
leaq 0xc31d(%rip), %rax      # 0xb55fe
movq %rax, (%r12)
leaq 0xc376(%rip), %rax      # 0xb5662
movq %rax, 0x20(%r12)
movabsq $0x100000005, %rax      # imm = 0x100000005
movq %rax, 0x60(%r12)
movl $0x0, 0x70(%r12)
jmp 0xa98bf
movq %r8, 0x8(%rsp)
cmpq 0xef8(%rbx), %rbp
jne 0xa9502
movq %rbx, %rdi
movq %rsi, %r15
movq %r12, %rdx
movq %r14, %rcx
callq 0xa5bd1
movq %r15, %rsi
testb %al, %al
je 0xa9502
cmpl $0x7, 0x60(%rsi)
jg 0xa9349
movl $0x8, 0x60(%rsi)
movq (%rsi), %rax
movq %rax, 0x38(%rsi)
leaq 0x10cb(%rip), %rax      # 0xaa422
movq %rax, (%rsi)
jmp 0xa9601
movq %rsi, %r13
movq 0x10(%r14), %rax
movq 0x8(%rax), %rax
cmpb $0xa, (%rax)
jne 0xa939e
cmpb $0x1, (%rcx)
jne 0xa9397
movq 0x10(%rcx), %rax
cmpb $0x1, (%rax)
jne 0xa9397
movq 0x10(%rax), %rax
cmpb $0x1, (%rax)
jne 0xa9397
movq 0x8(%rax), %rax
cmpq 0x10d0(%rbx), %rax
je 0xa98d3
movl %r8d, 0x2258(%rbx)
movq %r12, %rdi
movq %r8, %rbp
callq 0x47a25
movq %rbp, %r8
leal -0x1(%rbp), %ecx
movl %ecx, 0x2258(%rbx)
testq %rax, %rax
je 0xa9540
movq %rbx, %rdi
movq %r15, %rsi
callq 0xa66f0
movq %rbp, %r8
testb %al, %al
je 0xa9540
cmpl $0x7, 0x60(%r13)
jg 0xa93e3
movl $0x8, 0x60(%r13)
movq (%r13), %rax
movq %rax, 0x38(%r13)
leaq 0x108c(%rip), %rcx      # 0xaa47e
movq %rcx, (%r13)
leaq 0x10e9(%rip), %rcx      # 0xaa4e6
cmpq %rcx, %rax
je 0xa9801
movb $0x1, %bpl
leaq 0x116a(%rip), %rcx      # 0xaa57a
cmpq %rcx, %rax
jne 0xa9604
leaq 0x1183(%rip), %rax      # 0xaa5a3
movq %rax, (%r13)
jmp 0xa9604
movq 0x10(%r14), %rax
movq 0x8(%rax), %rax
cmpb $0xa, (%rax)
jne 0xa9465
cmpb $0x1, (%rcx)
jne 0xa945e
movq 0x10(%rcx), %rax
cmpb $0x1, (%rax)
jne 0xa945e
movq 0x10(%rax), %rax
cmpb $0x1, (%rax)
jne 0xa945e
movq 0x8(%rax), %rax
cmpq 0x10d0(%rbx), %rax
je 0xa9978
movl %r8d, 0x2258(%rbx)
movq %rbx, %rdi
movq %rsi, %r15
movq %r12, %rdx
movq %r14, %rcx
callq 0xab673
movb $0x1, %bpl
testb %al, %al
jne 0xa9604
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0xab778
testb %al, %al
jne 0xa9604
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0xabcbd
jmp 0xa95ae
movq %rbx, %rdi
movq %rsi, %r15
movq %r12, %rdx
movq %r14, %rcx
callq 0xa9c90
movb $0x1, %bpl
testb %al, %al
jne 0xa9604
movl 0x2258(%rbx), %r8d
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0xa9d7b
testb %al, %al
jne 0xa9604
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0xa9e4a
jmp 0xa95ae
movq %rbx, %rdi
movq %rsi, %r15
movq %r12, %rdx
movq %r14, %rcx
callq 0xa7f63
testb %al, %al
je 0xa95bc
cmpl $0x7, 0x60(%r15)
jg 0xa952a
movl $0x8, 0x60(%r15)
movq (%r15), %rax
movq %rax, 0x38(%r15)
leaq 0xf46(%rip), %rax       # 0xaa47e
movq %rax, (%r15)
jmp 0xa9601
movl %r8d, 0x2258(%rbx)
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
movq %r8, %r15
callq 0xaa62c
movb $0x1, %bpl
testb %al, %al
jne 0xa9604
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
movl %r15d, %r8d
callq 0xaa7a4
testb %al, %al
jne 0xa9604
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
movl %r15d, %r8d
callq 0xaa879
testb %al, %al
jne 0xa9604
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
movl %r15d, %r8d
callq 0xaacec
testb %al, %al
jne 0xa9604
jmp 0xa9608
movq %rcx, %r12
jmp 0xa8dc1
cmpq 0xfb0(%rbx), %rbp
je 0xa974b
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0xabf27
testb %al, %al
jne 0xa9601
movq 0x8(%rsp), %rax
movl %eax, 0x2258(%rbx)
movq %r15, %rsi
movq %rbx, %rdi
movq %r12, %rdx
movq %r14, %rcx
movl %r13d, %r8d
callq 0xac194
testb %al, %al
je 0xa9608
movb $0x1, %bpl
xorl %eax, %eax
jmp 0xa960d
movb $0x1, %al
movb $0x1, %bpl
testb %al, %al
je 0xa90dc
movb $0x1, %al
jmp 0xa9adb
movl $0x0, %ebp
cmpl $0x1, %eax
jne 0xa9ac5
movl $0xb, %ebp
leaq -0x20b9d(%rip), %rax    # 0x88a99
jmp 0xa9660
movl $0xc, %ebp
leaq -0x9d298(%rip), %rax    # 0xc3ac
jmp 0xa9660
movl $0x9, %ebp
leaq -0x206a7(%rip), %rax    # 0x88fab
jmp 0xa9660
movl $0x8, %ebp
leaq -0x708b3(%rip), %rax    # 0x38dad
movq %rax, 0x18(%rdi)
movq 0x10(%r14), %rsi
movq 0x8(%rsi), %rax
movb (%rax), %cl
cmpb $0xa, %cl
jne 0xa96c5
movq %rdi, %r14
movq %rbx, %rdi
movq %rax, %rsi
callq 0xccb2
cmpb $0x20, (%rax)
setne %cl
jne 0xa97bd
movq %r14, %rdi
movq %rax, 0x10(%r14)
movb (%r15), %dl
addb $-0x1b, %dl
cmpb $0x2, %dl
jae 0xa9754
leaq 0xbea0(%rip), %rax      # 0xb554a
movq %rax, (%rdi)
movabsq $0x200000004, %rax      # imm = 0x200000004
movq %rax, 0x60(%rdi)
movl %ebp, 0x70(%rdi)
xorl %ebp, %ebp
jmp 0xa9aba
movb (%r15), %dl
addb $-0x1b, %dl
cmpb $0x2, %dl
jae 0xa971d
movq %rdi, %r14
movq %rbx, %rdi
callq 0xa8bbb
testb %al, %al
je 0xa97bb
movslq %r12d, %rax
leaq 0xbed9(%rip), %rcx      # 0xb55c6
movq %r14, %rdi
movq %rcx, (%r14)
movq 0x2260(%rbx,%rax,8), %rcx
movq %rcx, 0x20(%r14)
movq 0x2260(%rbx,%rax,8), %rax
movq (%rax), %rax
movq %rax, 0x28(%r14)
movabsq $0x100000006, %rax      # imm = 0x100000006
jmp 0xa97e8
cmpb $0xb, %cl
jne 0xa97c2
movq 0x8(%rax), %rax
movq %rax, 0x10(%rdi)
leaq 0xbe32(%rip), %rax      # 0xb5567
movq %rax, (%rdi)
movabsq $0x100000004, %rax      # imm = 0x100000004
movq %rax, 0x60(%rdi)
jmp 0xa97ec
xorl %eax, %eax
xorl %ebp, %ebp
jmp 0xa960d
movq 0x10(%rax), %rdx
cmpb $0xb, (%rdx)
jne 0xa97fa
leaq 0x6f23(%rip), %rdx      # 0xb068b
movq %rdx, (%rdi)
testb $0x4, 0x3(%rax)
je 0xa9aa4
movzbl (%r15), %edx
addl $-0x13, %edx
cmpl $0x5, %edx
ja 0xa9a1b
leaq 0x67b98(%rip), %rsi     # 0x111324
movslq (%rsi,%rdx,4), %rdx
addq %rsi, %rdx
jmpq *%rdx
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
cmpq 0x8(%r15), %rax
movq %r14, %rdi
jg 0xa9aa4
movl $0x9, %ebp
leaq 0xbca0(%rip), %rax      # 0xb5456
jmp 0xa9a9d
movb $0x1, %cl
jmp 0xa9ac5
movq %rdi, %r14
movq %rbx, %rdi
callq 0xa66f0
testb %al, %al
je 0xa97f8
leaq 0xbda8(%rip), %rax      # 0xb5580
movq %r14, %rdi
movq %rax, (%r14)
movabsq $0x100000004, %rax      # imm = 0x100000004
movq %rax, 0x60(%r14)
movl $0x70, %eax
xorl %ecx, %ecx
jmp 0xa9abf
xorl %ecx, %ecx
xorl %ebp, %ebp
jmp 0xa9ac5
leaq 0xcf7(%rip), %rax       # 0xaa4ff
movq %rax, (%r13)
jmp 0xa9601
movl %ebp, 0x2258(%rbx)
movq %r12, %rdi
andl $0x7fffffff, %r13d      # imm = 0x7FFFFFFF
movq %rdi, %r12
movq %r13, 0x8(%rdi)
cmpb $0x1, (%r14)
jne 0xa9843
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa8bbb
testb %al, %al
je 0xa9843
movq 0x10(%r14), %r14
jmp 0xa9828
cmpq 0x110(%rbx), %r14
je 0xa9850
movb $0x1, %al
jmp 0xa98c4
leaq 0xbf2e(%rip), %rax      # 0xb5785
movq %r12, %rsi
movq %rax, (%r12)
movzbl (%r15), %ecx
xorl %eax, %eax
leal -0x15(%rcx), %edx
cmpl $0x6, %edx
ja 0xa9887
leaq 0x67a6d(%rip), %rcx     # 0x1112e0
movslq (%rcx,%rdx,4), %rdx
addq %rcx, %rdx
xorl %ebp, %ebp
jmpq *%rdx
leaq -0x29bc8(%rip), %rax    # 0x7fcbd
jmp 0xa98b3
movl $0x0, %ebp
cmpl $0x1, %ecx
jne 0xa98c4
leaq -0x2d57b(%rip), %rax    # 0x7c31d
jmp 0xa98b3
leaq -0x286e8(%rip), %rax    # 0x811b9
jmp 0xa98b3
leaq -0x277a7(%rip), %rax    # 0x82103
jmp 0xa98b3
leaq -0x27fce(%rip), %rax    # 0x818e5
movq %rax, 0x10(%rsi)
movq $0x3, 0x60(%rsi)
movb $0x1, %bpl
xorl %eax, %eax
testb %al, %al
jne 0xa9acd
xorl %eax, %eax
jmp 0xa9acf
movq %r8, 0x8(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %rcx, 0x10(%rsp)
movq %r14, %r8
callq 0xaa10a
movb $0x1, %bpl
testb %al, %al
jne 0xa9604
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
cmpq 0x11e0(%rbx), %rax
movq 0x8(%rsp), %r8
je 0xa991d
cmpq 0x1180(%rbx), %rax
jne 0xa9397
movq %r12, %rdi
callq 0x4781d
movq 0x8(%rsp), %r8
testq %rax, %rax
je 0xa9397
leal -0x1(%r8), %eax
movl %eax, 0x2258(%rbx)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x47b96
movq 0x8(%rsp), %r8
testb %al, %al
je 0xa9397
cmpl $0x7, 0x60(%r13)
jg 0xa9964
movl $0x8, 0x60(%r13)
movq (%r13), %rax
movq %rax, 0x38(%r13)
leaq 0xaaf(%rip), %rax       # 0xaa422
jmp 0xa9420
movq %rcx, %r13
movq %r8, 0x8(%rsp)
movq %rbx, %rdi
movq %rsi, %r15
movq %r12, %rdx
movq %r14, %rcx
callq 0xaaf04
movb $0x1, %bpl
testb %al, %al
jne 0xa9604
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0xab0db
testb %al, %al
jne 0xa9604
movq 0x8(%r13), %rax
cmpq 0x11e0(%rbx), %rax
je 0xa99cf
cmpq 0x1180(%rbx), %rax
jne 0xa9af6
movq %r12, %rdi
callq 0x47615
testq %rax, %rax
je 0xa9af6
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0xa547c
testb %al, %al
je 0xa9af6
cmpl $0x7, 0x60(%r15)
jg 0xa9a08
movl $0x8, 0x60(%r15)
movq (%r15), %rax
movq %rax, 0x38(%r15)
leaq 0xa0c(%rip), %rax       # 0xaa422
jmp 0xa9b92
movq %r14, %rdi
jmp 0xa9aa4
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
cmpq 0x8(%r15), %rax
movq %r14, %rdi
jg 0xa9aa4
movl $0x4, %ebp
leaq 0xbaa4(%rip), %rax      # 0xb54e4
jmp 0xa9a9d
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
cmpq 0x8(%r15), %rax
movq %r14, %rdi
jg 0xa9aa4
movl $0x6, %ebp
leaq 0xba1f(%rip), %rax      # 0xb547e
jmp 0xa9a9d
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
cmpq 0x8(%r15), %rax
movq %r14, %rdi
jg 0xa9aa4
movl $0x5, %ebp
leaq 0xba09(%rip), %rax      # 0xb5487
jmp 0xa9a9d
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
cmpq 0x8(%r15), %rax
movq %r14, %rdi
jg 0xa9aa4
movl $0xa, %ebp
leaq 0xb9cd(%rip), %rax      # 0xb546a
movq %r14, %rdi
movq %rax, 0x18(%r14)
movabsq $0x200000004, %rax      # imm = 0x200000004
movq %rax, 0x60(%rdi)
movl %ebp, 0x70(%rdi)
movl $0x1, %ebp
movl $0x74, %eax
movl %ebp, (%rdi,%rax)
movb $0x1, %bpl
testb %cl, %cl
je 0xa98cc
movb $0x1, %al
testb %al, %al
je 0xa90dc
xorl %eax, %eax
xorl %ebp, %ebp
testb %al, %al
je 0xa9ae1
xorl %ebp, %ebp
andb $0x1, %bpl
movl %ebp, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x8(%rsp), %r8
leal -0x1(%r8), %eax
movl %eax, 0x2258(%rbx)
movq 0x8(%r13), %rax
cmpq 0x10d0(%rbx), %rax
movq %r15, %rsi
jne 0xa945e
movq %r12, %rdi
callq 0xab646
movq 0x8(%rsp), %r8
movq %r15, %rsi
testq %rax, %rax
je 0xa945e
cmpl $0x101, %r8d            # imm = 0x101
jge 0xa9b9a
movq 0x8(%rsp), %r13
movslq %r13d, %rax
movl %r13d, 0x2258(%rbx)
movq 0x2258(%rbx,%rax,8), %rsi
movq $0x0, 0x38(%rsi)
movq %rbx, %rdi
movq %r12, %rdx
movq %r14, %rcx
callq 0xa7d15
movq %r13, %r8
testb %al, %al
movq %r15, %rsi
je 0xa945e
cmpl $0x7, 0x60(%rsi)
jg 0xa9b84
movl $0x8, 0x60(%r15)
movq (%r15), %rax
movq %rax, 0x38(%r15)
leaq 0x8ec(%rip), %rax       # 0xaa47e
movq %rax, (%r15)
jmp 0xa9604
addq $0x2190, %rbx           # imm = 0x2190
movq %rbx, %rdi
movl $0x1, %esi
callq 0x9530