// File: /workspace/github_c_makefile_star2_O3/BernardTatin[P]s7sh/s7.c
// Function: opt_cell_do
static bool opt_cell_do(s7_scheme *sc, s7_pointer car_x, int32_t len)
                {
                    opt_info *opc;
                    s7_pointer p, end, frame = NULL, old_e, slot, stop, ind, ind_step, var;
                    int32_t i, var_len, body_len, body_index, step_len, rtn_len, step_pc;
                    bool has_set = false;

                    /* fprintf(stderr, "%s: %s\n", __func__, DISPLAY_80(car_x)); */

                    if (len < 3)
                        return(return_false(sc, car_x, __func__, __LINE__));

                    if (!s7_is_proper_list(sc, cadr(car_x)))
                        return(return_false(sc, car_x, __func__, __LINE__));
                    var_len = safe_list_length(cadr(car_x));
                    step_len = var_len;
                    body_len = len - 3;
                    end = caddr(car_x);
                    if (!is_pair(end))
                        return(return_false(sc, car_x, __func__, __LINE__));

                    old_e = sc->envir;
                    opc = alloc_opo(sc, car_x);

                    new_frame(sc, sc->envir, frame);
                    push_stack(sc, OP_GC_PROTECT, old_e, frame);

                    /* the vars have to be added to the frame before evaluating the inits
                     *    else symbol_id can be > let_id (see "(test (do ((i (do ((i (do ((i 0 (+ i 1)))...")
                     */
                    clear_symbol_list(sc);
                    for (p = cadr(car_x); is_pair(p); p = cdr(p))
                    {
                        s7_pointer var, sym;
                        var = car(p);
                        if ((is_pair(var)) &&
                                (is_symbol(car(var))) &&
                                (is_pair(cdr(var))))
                        {
                            sym = car(var);

                            if ((is_constant_symbol(sc, sym)) ||
                                    (symbol_has_setter(sym)))
                                return(return_false(sc, car_x, __func__, __LINE__));
                            if (symbol_is_in_list(sc, sym))
                                eval_error(sc, "duplicate identifier in do: ~A", 30, var);
                            add_symbol_to_list(sc, sym);
                            add_slot(frame, sym, sc->undefined);
                        }
                        else return(return_false(sc, car_x, __func__, __LINE__));
                    }

                    if (tis_slot(let_slots(frame)))
                        let_set_slots(frame, reverse_slots(sc, let_slots(frame)));

                    for (p = cadr(car_x), slot = let_slots(frame); is_pair(p); p = cdr(p), slot = next_slot(slot))
                    {
                        s7_pointer var;
                        var = car(p);
                        if (!cell_optimize(sc, cdr(var))) /* opt init in outer env */
                            return(return_false(sc, car_x, __func__, __LINE__));
                        if (is_pair(cddr(var)))
                        {
                            set_has_stepper(slot);
                            if (!is_null(cdddr(var)))
                                return(return_false(sc, car_x, __func__, __LINE__));
                        }
                        else
                        {
                            step_len--;
                            if (!is_null(cddr(var)))
                                return(return_false(sc, car_x, __func__, __LINE__));
                        }
                        if (is_symbol(cadr(var)))
                            slot_set_value(slot, slot_value(symbol_to_slot(sc, cadr(var))));
                        else
                        {
                            if (!is_pair(cadr(var)))
                                slot_set_value(slot, cadr(var));
                            else
                            {
                                if (is_proper_quote(sc, cadr(var)))
                                    slot_set_value(slot, cadadr(var));
                                else
                                {
                                    s7_pointer sf;
                                    sf = lookup_checked(sc, caadr(var));
                                    if (is_c_function(sf))
                                    {
                                        s7_pointer sig;
                                        sig = c_function_signature(sf);
                                        if ((is_pair(sig)) &&
                                                ((car(sig) == sc->is_integer_symbol) ||
                                                 ((is_pair(car(sig))) &&
                                                  (direct_memq(sc->is_integer_symbol, car(sig))))))
                                            slot_set_value(slot, small_int(0));
                                    }}}}}
                    sc->envir = frame;
                    for (p = cadr(car_x); is_pair(p); p = cdr(p))
                    {
                        s7_pointer var;
                        var = car(p);
                        if (is_pair(cddr(var)))
                        {
                            s7_pointer init_type;
                            init_type = opt_arg_type(sc, cdr(var));
                            if (((init_type == sc->is_integer_symbol) ||
                                        (init_type == sc->is_float_symbol)) &&
                                    (opt_arg_type(sc, cddr(var)) != init_type))
                            {
#if OPT_PRINT
                                fprintf(stderr, "init_type: %s, but opt_arg: %s\n", DISPLAY(init_type), DISPLAY(opt_arg_type(sc, cddr(var))));
#endif
                                unstack(sc); /* not pop_stack! */
                                sc->envir = old_e;
                                return(return_false(sc, car_x, __func__, __LINE__));
                            }
                        }
                    }

                    if (!bool_optimize_nw(sc, end))
                    {
                        unstack(sc); /* not pop_stack! */
                        sc->envir = old_e;
                        return(return_false(sc, car_x, __func__, __LINE__));
                    }

                    stop = car(end);
                    if ((is_proper_list_3(sc, stop)) &&
                            ((car(stop) == sc->num_eq_symbol) || (car(stop) == sc->geq_symbol) || (car(stop) == sc->gt_symbol)) &&
                            (is_symbol(cadr(stop))) &&
                            ((is_opt_int(caddr(stop))) || (is_symbol(caddr(stop)))))
                    {
                        s7_pointer stop_slot;
                        if (is_symbol(caddr(stop)))
                            stop_slot = opt_integer_symbol(sc, caddr(stop));
                        else stop_slot = sc->nil;
                        if (stop_slot)
                        {
                            s7_int lim;
                            bool set_stop = false;
                            s7_pointer slot;

                            if (is_slot(stop_slot))
                                lim = integer(slot_value(stop_slot));
                            else lim = integer(caddr(stop));
                            if (car(stop) == sc->gt_symbol) lim++;

                            for (p = cadr(car_x), slot = let_slots(frame); is_pair(p); p = cdr(p), slot = next_slot(slot))
                            {
                                /* this could be put off until it is needed (ref/set), but this code is not called much
                                 *    another choice: go from init downto 0: init is lim
                                 */
                                if (slot_symbol(slot) == cadr(stop))
                                    set_stop = true; /* don't overrule this decision below */
                                if (has_stepper(slot))
                                {
                                    s7_pointer var, step;
                                    var = car(p);
                                    step = caddr(var);
                                    if ((is_opt_int(slot_value(slot))) &&
                                            (is_pair(step)) &&
                                            (is_pair(cdr(step))) &&
                                            (car(var) == cadr(stop)) &&
                                            (car(var) == cadr(step)) &&
                                            ((car(stop) != sc->num_eq_symbol) || /* else > protects at least the top */
                                             ((caddr(step) == small_int(1)) && (car(step) == sc->add_symbol))))
                                    {
                                        set_step_end(slot);
                                        denominator(slot_value(slot)) = lim;
                                    }
                                }
                            }

                            if (!set_stop)
                            {
                                s7_pointer slot;
                                slot = opt_integer_symbol(sc, cadr(stop));
                                if ((slot) &&
                                        (stop_is_safe(sc, cadr(stop), cddr(car_x))))
                                {
                                    set_step_end(slot);
                                    denominator(slot_value(slot)) = lim;
                                }
                            }
                        }
                    }

                    /* opt body */
                    body_index = sc->pc;
                    for (i = 3, p = cdddr(car_x); i < len; i++, p = cdr(p))
                    {
                        opt_info *start;
                        start = sc->opts[sc->pc];
                        if (!cell_optimize(sc, p))
                            break;
                        oo_idp_nr_fixup(start);
                    }

                    if (!is_null(p))
                    {
                        unstack(sc);
                        sc->envir = old_e;
                        return(return_false(sc, car_x, __func__, __LINE__));
                    }

                    /* we faked up sc->envir above, so s7_optimize_1 (float_optimize) isn't safe here
                     *    this means if clm nested loops get here, they aren't fully optimized -- fallback into dox would be better
                     */
                    step_pc = sc->pc;
                    for (p = cadr(car_x); is_pair(p); p = cdr(p))
                    {
                        s7_pointer var;
                        var = car(p);
                        opc->v[9].i = sc->pc;
                        if ((is_pair(cddr(var))) &&
                                (!cell_optimize(sc, cddr(var))))
                            break;
                    }

                    if (!is_null(p))
                    {
                        unstack(sc);
                        sc->envir = old_e;
                        return(return_false(sc, car_x, __func__, __LINE__));
                    }

                    rtn_len = 0;
                    opc->v[1].i = sc->pc - 1;
                    if (!is_list(cdr(end)))
                    {
                        unstack(sc);
                        sc->envir = old_e;
                        return(return_false(sc, car_x, __func__, __LINE__));
                    }
                    for (p = cdr(end); is_pair(p); p = cdr(p), rtn_len++)
                        if (!cell_optimize(sc, p))
                            break;
                    if (!is_null(p))
                    {
                        unstack(sc);
                        sc->envir = old_e;
                        return(return_false(sc, car_x, __func__, __LINE__));
                    }
                    opc->v[2].p = frame;
                    opc->v[3].i = len - 3; /* body_len */
                    opc->v[4].i = rtn_len;
                    opc->v[5].i = sc->pc - 1;
                    opc->v[9].o1 = sc->opts[step_pc];
                    sc->envir = old_e;

                    if ((var_len == 0) && (rtn_len == 0))
                    {
                        opc->v[0].fp = opt_do_no_vars;
                        return(oo_set_type_0(opc, 10));
                    }
                    opc->v[8].i = 0;
                    if (body_len == 1)
                    {
                        s7_pointer expr;
                        expr = cadddr(car_x);
                        if ((is_pair(expr)) &&
                                ((is_safe_setter(car(expr))) ||
                                 ((car(expr) == sc->vector_set_symbol) &&
                                  (is_null(cddddr(expr))) &&
                                  (is_code_constant(sc, cadddr(expr))))))
                            opc->v[8].i = 1;
                    }
                    if ((var_len != 1) || (step_len != 1) || (rtn_len != 0))
                    {
                        opc->v[0].fp = ((step_len == 1) && (body_len == 1) && (rtn_len == 1)) ? opt_do_step_1 : opt_do_any;
                        /* (do ((sum 0.0) (k 0 (+ k 1))) ((= k size) (set! (C i j) sum)) (set! sum (+ sum (* (A i k) (B k j))))) tmat */
                        return(oo_set_type_0(opc, 10));
                    }

                    opc->v[0].fp = (body_len == 1) ? opt_do_1 : opt_do_n;

                    var = caadr(car_x);
                    ind = car(var);
                    ind_step = caddr(var);
                    end = caaddr(car_x);
                    slot = let_slots(frame);

                    if ((is_pair(end)) &&                      /* (= i len|100) */
                            (cadr(end) == ind) &&
                            (is_pair(ind_step)))                   /* (+ i 1) */
                    {
                        if (((car(end) == sc->num_eq_symbol) || (car(end) == sc->geq_symbol)) &&
                                ((is_symbol(caddr(end))) || (is_t_integer(caddr(end)))) &&
                                (is_null(cdddr(end))) &&
                                (car(ind_step) == sc->add_symbol) &&
                                (cadr(ind_step) == ind) &&
                                (caddr(ind_step) == small_int(1)) &&
                                (is_null(cdddr(ind_step))) &&
                                (do_is_safe(sc, cdddr(car_x), sc->w = list_1(sc, ind), sc->nil, &has_set)))
                        {
                            let_set_dox_slot1(frame, slot);
                            let_set_dox_slot2_unchecked(frame, (is_symbol(caddr(end))) ? symbol_to_slot(sc, caddr(end)) : sc->undefined);
                            slot_set_value(slot, make_mutable_integer(sc, integer(slot_value(slot))));
                            opc->v[4].i = body_index;
                            if (body_len == 1)
                            {
                                opt_info *o1;
                                opc->v[0].fp = opt_do_very_simple;
                                if (is_t_integer(caddr(end)))
                                    opc->v[3].i = integer(caddr(end));

                                o1 = sc->opts[body_index];
                                /* v2, v3, v4, v5 are in use */
                                if (o1->v[0].fp == d_to_p_nr)
                                {
                                    /* snd-test: (do ((k 0 (+ k 1))) ((= k N)) (float-vector-set! rl k (read-sample rd))) */
                                    opc->v[0].fp = opt_do_prepackaged;
                                    opc->v[7].fp = opt_do_dpnr;
                                }
                                else
                                {
                                    if (o1->v[0].fp == i_to_p_nr)
                                    {
                                        opc->v[0].fp = opt_do_prepackaged;
                                        opc->v[7].fp = opt_do_ipnr;
                                    }
                                    else
                                    {
                                        if (o1->v[0].fp == opt_set_p_i_fo1)
                                        {
                                            opc->v[0].fp = opt_do_prepackaged;
                                            opc->v[7].fp = opt_do_setpif;
                                        }}}}
                            else
                            {
                                opc->v[0].fp = opt_dotimes_2;
                                if (is_t_integer(caddr(end)))
                                    opc->v[6].i = integer(caddr(end));
                            }
                        }
                        else
                        {
                            if ((car(end) == sc->is_null_symbol) &&
                                    (is_null(cddr(end))) &&
                                    (car(ind_step) == sc->cdr_symbol) &&
                                    (cadr(ind_step) == ind) &&
                                    (is_null(cddr(ind_step))) &&
                                    (body_len == 1) &&
                                    (do_is_safe(sc, cdddr(car_x), sc->w = list_1(sc, ind), sc->nil, &has_set)))
                                opc->v[0].fp = opt_do_list_simple;
                        }
                    }
                    return(oo_set_type_0(opc, 10));
                }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movb $0x0, 0xf(%rsp)
cmpl $0x3, %edx
jge 0xa714c
xorl %r15d, %r15d
jmp 0xa7858
movl %edx, %ebp
movq %rsi, %r13
movq %rdi, %rbx
movq 0x10(%rsi), %r14
movq 0x8(%r14), %r12
movq %r12, %rsi
callq 0x39d6f
xorl %r15d, %r15d
testb %al, %al
je 0xa7858
cmpb $0x1, (%r12)
jne 0xa7188
xorl %r15d, %r15d
incl %r15d
movq 0x10(%r12), %r12
cmpb $0x1, (%r12)
je 0xa7179
movq 0x10(%r14), %rax
movq 0x8(%rax), %rax
cmpb $0x1, (%rax)
jne 0xa7144
movq %rax, 0x48(%rsp)
movslq 0x2258(%rbx), %rax
cmpq $0x100, %rax            # imm = 0x100
jge 0xa7ccb
movq 0x8(%rbx), %r12
leal 0x1(%rax), %ecx
movl %ecx, 0x2258(%rbx)
movq 0x2260(%rbx,%rax,8), %r14
movq $0x0, 0x38(%r14)
movq 0x90(%rbx), %rax
cmpq 0x98(%rbx), %rax
ja 0xa71e9
movq %rbx, %rdi
callq 0xa550
movq 0x90(%rbx), %rax
leaq -0x8(%rax), %rcx
movq %rcx, 0x90(%rbx)
movq -0x8(%rax), %r11
movq $0x20001c, (%r11)       # imm = 0x20001C
movq 0x250(%rbx), %rax
incq %rax
movq %rax, 0x250(%rbx)
movq %rax, 0x18(%r11)
movq $0x0, 0x8(%r11)
movq 0x8(%rbx), %rax
movq %rax, 0x10(%r11)
movq 0x50(%rbx), %rax
movq %r11, (%rax)
movq 0x8(%rbx), %rax
movq 0x50(%rbx), %rcx
movq %rax, 0x8(%rcx)
movq 0x50(%rbx), %rax
movq %r12, 0x18(%rsp)
movq %r12, 0x10(%rax)
movq 0x50(%rbx), %rax
movq $0x1, 0x18(%rax)
addq $0x20, 0x50(%rbx)
incl 0xa88(%rbx)
jne 0xa726d
movl $0x1, 0xa88(%rbx)
incl 0xa8c(%rbx)
leaq 0x8(%r11), %r12
movq 0x10(%r13), %rax
movq 0x8(%rax), %rax
cmpb $0x1, (%rax)
jne 0xa73d0
movq 0x8(%rax), %rcx
cmpb $0x1, (%rcx)
jne 0xa7144
movq 0x8(%rcx), %rdx
cmpb $0xa, (%rdx)
jne 0xa7144
movq 0x10(%rcx), %rsi
cmpb $0x1, (%rsi)
jne 0xa7144
movq (%rdx), %rsi
btl $0x18, %esi
jb 0xa7144
btq $0x30, %rsi
jae 0xa730e
movq 0x8(%rbx), %r8
movq 0x18(%r8), %r10
movq 0x20(%rdx), %r9
movl $0x18, %edi
cmpq %r9, %r10
je 0xa72eb
jle 0xa72e2
movq 0x10(%r8), %r8
movq 0x18(%r8), %r10
cmpq %r10, %r9
jl 0xa72d5
cmpq %r9, %r10
jne 0xa73a2
movq (%rdx,%rdi), %r9
cmpb $0x20, (%r9)
jne 0xa730e
movq (%r9), %rdi
andl $0x1000000, %edi        # imm = 0x1000000
andl $0x40000, %esi          # imm = 0x40000
orq %rdi, %rsi
je 0xa7318
jmp 0xa7144
btl $0x12, %esi
jb 0xa7144
movl 0xa88(%rbx), %esi
movq 0x8(%rdx), %rdi
cmpl %esi, 0x2c(%rdx)
jne 0xa733c
movq 0x20(%rdi), %r8
movl 0xc(%r8), %r8d
cmpl 0xa8c(%rbx), %r8d
je 0xa77ee
movl %esi, 0x2c(%rdx)
movl 0xa8c(%rbx), %ecx
movq 0x20(%rdi), %rsi
movl %ecx, 0xc(%rsi)
movq 0x90(%rbx), %rcx
movq 0x128(%rbx), %rsi
leaq -0x8(%rcx), %rdi
movq %rdi, 0x90(%rbx)
movq -0x8(%rcx), %rcx
movq $0x20, (%rcx)
movq %rdx, 0x8(%rcx)
movq %rsi, 0x10(%rcx)
movq %rcx, 0x18(%rdx)
movq 0x18(%r11), %rsi
movq %rsi, 0x20(%rdx)
incl 0x28(%rdx)
movq 0x8(%r11), %rdx
movq %rdx, 0x18(%rcx)
movq %rcx, 0x8(%r11)
movq 0x10(%rax), %rax
cmpb $0x1, (%rax)
je 0xa7282
jmp 0xa73d9
movl $0x10, %edi
cmpb $0x1c, (%r8)
jne 0xa72eb
movq 0x8(%r8), %r9
testq %r9, %r9
je 0xa73ca
cmpq %rdx, 0x8(%r9)
je 0xa72ef
movq 0x18(%r9), %r9
jmp 0xa73b5
movq 0x10(%r8), %r8
jmp 0xa73a7
movq (%r12), %rcx
testq %rcx, %rcx
je 0xa73f2
xorl %eax, %eax
movq %rax, %rdx
movq %rcx, %rax
movq 0x18(%rcx), %rcx
movq %rdx, 0x18(%rax)
testq %rcx, %rcx
jne 0xa73db
movq %rax, (%r12)
movq %r12, 0x40(%rsp)
movq %r11, 0x38(%rsp)
movq %r14, 0x10(%rsp)
movq %r13, 0x20(%rsp)
movq 0x10(%r13), %rax
movq 0x8(%rax), %r12
cmpb $0x1, (%r12)
movl %r15d, 0x28(%rsp)
jne 0xa75ef
movq 0x40(%rsp), %r13
movl %r15d, 0x28(%rsp)
movq (%r13), %r13
movq 0x8(%r12), %r14
movq 0x10(%r14), %rsi
movq %rbx, %rdi
callq 0xa2000
testb %al, %al
je 0xa7144
movq 0x10(%r14), %rax
movq 0x10(%rax), %rcx
cmpb $0x1, (%rcx)
jne 0xa7471
orb $-0x80, 0x2(%r13)
movq 0x10(%r14), %rax
movq 0x10(%rax), %rcx
movq 0x10(%rcx), %rcx
cmpq 0x110(%rbx), %rcx
je 0xa7482
jmp 0xa7144
cmpq 0x110(%rbx), %rcx
jne 0xa7144
decl 0x28(%rsp)
movq 0x8(%rax), %rax
movzbl (%rax), %edx
cmpl $0x1, %edx
je 0xa74e6
cmpl $0xa, %edx
jne 0xa74c9
movq 0x8(%rbx), %rdx
movq 0x18(%rdx), %rdi
movq 0x20(%rax), %rsi
movl $0x18, %ecx
cmpq %rsi, %rdi
je 0xa74c1
jle 0xa74b8
movq 0x10(%rdx), %rdx
movq 0x18(%rdx), %rdi
cmpq %rdi, %rsi
jl 0xa74ab
cmpq %rsi, %rdi
jne 0xa759b
movq (%rax,%rcx), %rsi
movq 0x10(%rsi), %rax
movq %rax, 0x10(%r13)
addq $0x18, %r13
movq 0x10(%r12), %r12
cmpb $0x1, (%r12)
je 0xa7428
jmp 0xa75ef
movq 0x8(%rax), %rsi
cmpq 0x17b0(%rbx), %rsi
jne 0xa7506
movq 0x10(%rax), %rax
cmpb $0x1, (%rax)
jne 0xa7506
cmpq %rcx, 0x10(%rax)
je 0xa75e6
movq 0x8(%rbx), %rax
movq 0x18(%rax), %rdx
movq 0x20(%rsi), %rcx
cmpq %rcx, %rdx
je 0xa752b
jle 0xa7526
movq 0x10(%rax), %rax
movq 0x18(%rax), %rdx
cmpq %rdx, %rcx
jl 0xa7519
cmpq %rcx, %rdx
jne 0xa757b
movq 0x18(%rsi), %rcx
movq 0x10(%rcx), %rax
testq %rax, %rax
jne 0xa7540
movq %rbx, %rdi
callq 0x9c492
cmpb $0x30, (%rax)
jb 0xa74cd
movq 0x8(%rax), %rax
movq 0x38(%rax), %rax
cmpb $0x1, (%rax)
jne 0xa74cd
movq 0x8(%rax), %rax
movq 0x10d0(%rbx), %rcx
cmpq %rcx, %rax
je 0xa75c8
cmpb $0x1, (%rax)
jne 0xa74cd
cmpq %rcx, 0x8(%rax)
je 0xa75c8
movq 0x10(%rax), %rax
jmp 0xa7566
cmpb $0x1c, (%rax)
jne 0xa75d4
movq 0x8(%rax), %rcx
testq %rcx, %rcx
je 0xa7595
cmpq %rsi, 0x8(%rcx)
je 0xa752f
movq 0x18(%rcx), %rcx
jmp 0xa7584
movq 0x10(%rax), %rax
jmp 0xa757b
movl $0x10, %ecx
cmpb $0x1c, (%rdx)
jne 0xa74c1
movq 0x8(%rdx), %rsi
testq %rsi, %rsi
je 0xa75c2
cmpq %rax, 0x8(%rsi)
je 0xa74c5
movq 0x18(%rsi), %rsi
jmp 0xa75ad
movq 0x10(%rdx), %rdx
jmp 0xa75a0
movq 0x9f381(%rip), %rax     # 0x146950
jmp 0xa74c9
movq 0x10(%rsi), %rcx
cmpb $0x20, (%rcx)
je 0xa752f
jmp 0xa7538
movq 0x8(%rax), %rax
jmp 0xa74c9
movq 0x38(%rsp), %rax
movq %rax, 0x8(%rbx)
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %r12
cmpb $0x1, (%r12)
jne 0xa765b
movq 0x8(%r12), %r14
movq 0x10(%r14), %rsi
movq 0x10(%rsi), %rax
cmpb $0x1, (%rax)
jne 0xa7654
movq %rbx, %rdi
callq 0xa844a
movq %rax, %r13
cmpq 0x10d0(%rbx), %rax
je 0xa763b
cmpq 0x11e0(%rbx), %r13
jne 0xa7654
movq 0x10(%r14), %rax
movq 0x10(%rax), %rsi
movq %rbx, %rdi
callq 0xa844a
cmpq %r13, %rax
jne 0xa77db
movq 0x10(%r12), %r12
jmp 0xa7605
movq %rbx, %rdi
movq 0x48(%rsp), %r14
movq %r14, %rsi
callq 0xa9cd3
testb %al, %al
je 0xa77db
movq 0x8(%r14), %r12
cmpb $0x1, (%r12)
jne 0xa76a4
movq 0x10(%r12), %rcx
cmpb $0x1, (%rcx)
jne 0xa76a4
movq 0x10(%rcx), %r13
cmpb $0x1, (%r13)
jne 0xa76a4
movq 0x110(%rbx), %rax
cmpq %rax, 0x10(%r13)
je 0xa786a
movslq 0x2258(%rbx), %rax
movq %rax, 0x30(%rsp)
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %r13
cmpl $0x3, %ebp
je 0xa7706
cmpl $0x5, %ebp
movl $0x4, %r14d
cmovgel %ebp, %r14d
addl $-0x3, %r14d
movslq 0x2258(%rbx), %rax
movq 0x2260(%rbx,%rax,8), %r12
movq %rbx, %rdi
movq %r13, %rsi
callq 0xa2000
testb %al, %al
je 0xa7706
movq %r12, %rdi
callq 0xa98e2
movq 0x10(%r13), %r13
decl %r14d
jne 0xa76d7
cmpq 0x110(%rbx), %r13
jne 0xa77db
movslq 0x2258(%rbx), %r14
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %r12
cmpb $0x1, (%r12)
jne 0xa7779
movq %r14, 0x50(%rsp)
movq 0x10(%rsp), %r14
movq 0x8(%r12), %rax
movslq 0x2258(%rbx), %rcx
movq %rcx, 0x48(%r14)
movq 0x10(%rax), %rax
movq 0x10(%rax), %rsi
cmpb $0x1, (%rsi)
jne 0xa7761
movq %rbx, %rdi
callq 0xa2000
testb %al, %al
je 0xa776d
movq 0x10(%r12), %r12
cmpb $0x1, (%r12)
je 0xa7738
movq 0x110(%rbx), %r13
movq 0x50(%rsp), %r14
cmpq %r13, %r12
jne 0xa77db
movslq 0x2258(%rbx), %rax
decq %rax
movq 0x10(%rsp), %rcx
movq %rax, 0x8(%rcx)
movq 0x48(%rsp), %rax
movq 0x10(%rax), %r12
movb (%r12), %al
leal -0x1(%rax), %ecx
cmpb $0x1, %cl
ja 0xa77db
xorl %r13d, %r13d
cmpb $0x1, %al
jne 0xa77ce
xorl %r13d, %r13d
movq %rbx, %rdi
movq %r12, %rsi
callq 0xa2000
testb %al, %al
je 0xa77ce
incl %r13d
movq 0x10(%r12), %r12
cmpb $0x1, (%r12)
je 0xa77b0
cmpq 0x110(%rbx), %r12
je 0xa7a11
addq $-0x20, 0x50(%rbx)
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rbx)
jmp 0xa7144
movq 0x1918(%rbx), %r14
movq 0x820(%rbx), %rax
movslq 0x7dc(%rbx), %rdx
movq (%rax,%rdx,8), %rax
incl %edx
andl $0x7, %edx
movl %edx, 0x7dc(%rbx)
leaq 0x6fef7(%rip), %rdx     # 0x117710
movq %rdx, 0x10(%rax)
movq $0x1e, 0x8(%rax)
movq 0x6e0(%rbx), %rdx
movq %rax, 0x8(%rdx)
movq 0x6e0(%rbx), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x8(%rax)
movq 0x6e0(%rbx), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x38dfa
testq %r14, %r14
setne %r15b
movl %r15d, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x8(%r12), %rdi
cmpq 0xea0(%rbx), %rdi
je 0xa788e
cmpq 0xf48(%rbx), %rdi
je 0xa788e
cmpq 0xf58(%rbx), %rdi
jne 0xa76a4
movq 0x8(%rcx), %r14
cmpb $0xa, (%r14)
jne 0xa76a4
movq 0x8(%r13), %rsi
movb (%rsi), %cl
movl %ecx, %edx
andb $-0x2, %dl
cmpb $0xa, %dl
jne 0xa76a4
cmpb $0xa, %cl
jne 0xa78c7
movq %rdi, 0x30(%rsp)
movq %rbx, %rdi
callq 0x9f8a2
movq 0x30(%rsp), %rdi
testq %rax, %rax
je 0xa76a4
addq $0x8, %r13
leaq 0x10(%rax), %rcx
cmpb $0x20, (%rax)
cmovneq %r13, %rcx
xorl %r13d, %r13d
cmpq 0xf58(%rbx), %rdi
movq (%rcx), %rcx
sete %r13b
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
addq 0x8(%rcx), %r13
cmpb $0x1, (%rax)
jne 0xa79c6
xorl %ecx, %ecx
movq 0x40(%rsp), %rdx
movq (%rdx), %rdx
movq (%rdx), %rdi
movq 0x10(%r12), %rsi
movq 0x8(%rsi), %r9
cmpq %r9, 0x8(%rdx)
sete %sil
btl $0x17, %edi
jae 0xa79a0
movq 0x10(%rdx), %r8
cmpb $0xb, (%r8)
jne 0xa79a0
movq 0x8(%rax), %r14
movq 0x10(%r14), %r10
movq 0x10(%r10), %r10
movq 0x8(%r10), %r10
cmpb $0x1, (%r10)
jne 0xa79a0
movq 0x10(%r10), %r11
cmpb $0x1, (%r11)
jne 0xa79a0
cmpq %r9, 0x8(%r14)
jne 0xa79a0
cmpq 0x8(%r11), %r9
jne 0xa79a0
movq 0x8(%r12), %r9
cmpq 0xea0(%rbx), %r9
je 0xa7982
orq $0x4000000, %rdi        # imm = 0x4000000
movq %rdi, (%rdx)
movq %r13, 0x10(%r8)
jmp 0xa79a0
movq 0x10(%r11), %r9
movq 0x8(%r9), %r9
cmpq 0x9efc7(%rip), %r9      # 0x146958
jne 0xa79a0
movq 0x8(%r10), %r9
cmpq 0xba8(%rbx), %r9
je 0xa7972
orb %sil, %cl
addq $0x18, %rdx
movq 0x10(%rax), %rax
cmpb $0x1, (%rax)
je 0xa7911
testb $0x1, %cl
jne 0xa76a4
movq 0x10(%r12), %rax
movq 0x8(%rax), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x9f8a2
testq %rax, %rax
je 0xa76a4
movq %rax, %r12
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xac872
testb %al, %al
je 0xa76a4
orb $0x4, 0x3(%r12)
movq 0x10(%r12), %rax
movq %r13, 0x10(%rax)
jmp 0xa76a4
addl $-0x3, %ebp
movq 0x10(%rsp), %rcx
movq 0x38(%rsp), %rax
movq %rax, 0x10(%rcx)
movl %ebp, %eax
movq %rax, 0x18(%rcx)
movl %r13d, %eax
movq %rax, 0x20(%rcx)
movslq 0x2258(%rbx), %rax
decq %rax
movq %rax, 0x28(%rcx)
movq 0x2260(%rbx,%r14,8), %rax
movq %rax, 0x48(%rcx)
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rbx)
movl %r15d, %eax
orl %r13d, %eax
jne 0xa7a71
leaq 0x4e59(%rip), %rax      # 0xac8ba
movq %rax, (%rcx)
movq $0xa, 0x60(%rcx)
jmp 0xa7d26
movq $0x0, 0x40(%rcx)
cmpl $0x1, %ebp
jne 0xa7ae1
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
cmpb $0x1, (%rax)
jne 0xa7ae1
movq 0x8(%rax), %rcx
testb $0x1, 0x7(%rcx)
jne 0xa7ad4
cmpq 0x1668(%rbx), %rcx
jne 0xa7ae1
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rcx
cmpq 0x110(%rbx), %rcx
jne 0xa7ae1
movq 0x8(%rax), %rsi
movq %rbx, %rdi
callq 0xac996
testb %al, %al
je 0xa7ae1
movq 0x10(%rsp), %rax
movq $0x1, 0x40(%rax)
xorl $0x1, %r15d
movl 0x28(%rsp), %eax
xorl $0x1, %eax
orl %eax, %r15d
orl %r13d, %r15d
je 0xa7b1f
xorl $0x1, %ebp
xorl $0x1, %r13d
orl %eax, %ebp
leaq 0x4f21(%rip), %rax      # 0xaca25
leaq 0x503a(%rip), %rcx      # 0xacb45
orl %r13d, %ebp
cmoveq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, (%rax)
jmp 0xa7d1e
cmpl $0x1, %ebp
leaq 0x51a5(%rip), %rax      # 0xaccce
leaq 0x5347(%rip), %rcx      # 0xace77
cmoveq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, (%rax)
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x10(%rcx), %rax
movq 0x8(%rax), %rdx
movq 0x8(%rdx), %r12
cmpb $0x1, (%r12)
jne 0xa7d19
movq 0x8(%rcx), %rcx
movq 0x8(%rcx), %rcx
movq 0x8(%rcx), %r13
movq 0x10(%r12), %rdx
cmpq %r13, 0x8(%rdx)
jne 0xa7d19
movq 0x10(%rcx), %rcx
movq 0x10(%rcx), %rcx
movq 0x8(%rcx), %r15
cmpb $0x1, (%r15)
jne 0xa7d19
movq 0x40(%rsp), %rcx
movq (%rcx), %rcx
movq %rcx, 0x28(%rsp)
movq 0x8(%r12), %rcx
cmpq 0xea0(%rbx), %rcx
je 0xa7bb5
cmpq 0xf48(%rbx), %rcx
jne 0xa7ce4
movq 0x10(%rdx), %rdx
movq 0x8(%rdx), %rsi
movb (%rsi), %sil
andb $-0x2, %sil
cmpb $0xa, %sil
jne 0xa7ce4
movq 0x10(%rdx), %rdx
movq 0x110(%rbx), %r14
cmpq %r14, %rdx
jne 0xa7ce4
movq 0x8(%r15), %rsi
cmpq 0xba8(%rbx), %rsi
jne 0xa7ce4
movq 0x10(%r15), %rsi
cmpq %r13, 0x8(%rsi)
jne 0xa7ce4
movq 0x10(%rsi), %rsi
movq 0x8(%rsi), %rdi
cmpq 0x9ed48(%rip), %rdi     # 0x146958
jne 0xa7ce4
cmpq %rdx, 0x10(%rsi)
jne 0xa7ce4
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x90(%rbx), %rax
cmpq 0x98(%rbx), %rax
ja 0xa7c48
movq %rbx, %rdi
callq 0xa550
movq 0x90(%rbx), %rax
leaq -0x8(%rax), %rcx
movq %rcx, 0x90(%rbx)
movq -0x8(%rax), %rdx
movq $0x200001, (%rdx)       # imm = 0x200001
movq %r13, 0x8(%rdx)
movq %r14, 0x10(%rdx)
movq %rdx, 0x4d8(%rbx)
movq 0x110(%rbx), %rcx
leaq 0xf(%rsp), %r8
movq %rbx, %rdi
movq 0x18(%rsp), %rsi
callq 0xad00e
testb %al, %al
je 0xa7cdf
movq 0x38(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rax, 0x20(%rcx)
movq (%rcx), %r14
movq %r14, %rax
orq $0x10000, %rax          # imm = 0x10000
movq %rax, (%rcx)
movq 0x10(%r12), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
cmpb $0xa, (%rsi)
jne 0xa7dc1
movq 0x8(%rbx), %rdi
callq 0xbe33
jmp 0xa7dc8
addq $0x2190, %rbx           # imm = 0x2190
movq %rbx, %rdi
movl $0x1, %esi
callq 0x8530
movq 0x8(%r12), %rcx
cmpq 0x1118(%rbx), %rcx
jne 0xa7d19
movq 0x10(%r12), %rax
movq 0x10(%rax), %rax
movq 0x110(%rbx), %r12
cmpq %r12, %rax
jne 0xa7d19
movq 0x8(%r15), %rcx
cmpq 0xda0(%rbx), %rcx
jne 0xa7d19
movq 0x10(%r15), %rcx
cmpq %r13, 0x8(%rcx)
je 0xa7d2e
movq 0x10(%rsp), %rax
movq $0xa, 0x60(%rax)
movb $0x1, %r15b
jmp 0xa7858
cmpl $0x1, %ebp
jne 0xa7d19
cmpq %rax, 0x10(%rcx)
jne 0xa7d19
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %r14
movq 0x90(%rbx), %rax
cmpq 0x98(%rbx), %rax
ja 0xa7d69
movq %rbx, %rdi
callq 0xa550
movq 0x90(%rbx), %rax
leaq -0x8(%rax), %rcx
movq %rcx, 0x90(%rbx)
movq -0x8(%rax), %rdx
movq $0x200001, (%rdx)       # imm = 0x200001
movq %r13, 0x8(%rdx)
movq %r12, 0x10(%rdx)
movq %rdx, 0x4d8(%rbx)
movq 0x110(%rbx), %rcx
leaq 0xf(%rsp), %r8
movq %rbx, %rdi
movq %r14, %rsi
callq 0xad00e
testb %al, %al
je 0xa7d19
leaq 0x61e9(%rip), %rax      # 0xadf9d
movq 0x10(%rsp), %rcx
movq %rax, (%rcx)
jmp 0xa7d19
movq 0x128(%rbx), %rax
movq 0x38(%rsp), %rcx
movq %rax, 0x28(%rcx)
orq $0x810000, %r14         # imm = 0x810000
movq %r14, (%rcx)
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %r14
movq 0x90(%rbx), %rax
cmpq 0x98(%rbx), %rax
ja 0xa7e07
movq %rbx, %rdi
callq 0xa550
movq 0x90(%rbx), %rax
leaq -0x8(%rax), %rcx
movq %rcx, 0x90(%rbx)
movq -0x8(%rax), %rax
movq $0x500000b, (%rax)      # imm = 0x500000B
movq %r14, 0x8(%rax)
movq 0x28(%rsp), %rcx
movq %rax, 0x10(%rcx)
movq 0x10(%rsp), %rax
movq 0x30(%rsp), %rcx
movq %rcx, 0x20(%rax)
cmpl $0x1, %ebp
jne 0xa7ebb
leaq 0x59d9(%rip), %rax      # 0xad81d
movq 0x10(%rsp), %rcx
movq %rax, (%rcx)
movq 0x10(%r12), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
cmpb $0xb, (%rax)
jne 0xa7e6b
movq 0x8(%rax), %rax
movq 0x10(%rsp), %rcx
movq %rax, 0x18(%rcx)
movq 0x30(%rsp), %rax
movq 0x2260(%rbx,%rax,8), %rax
movq (%rax), %rax
leaq 0x1b80(%rip), %rcx      # 0xa9a02
cmpq %rcx, %rax
je 0xa7ef2
leaq 0x1ca5(%rip), %rcx      # 0xa9b33
cmpq %rcx, %rax
je 0xa7f0a
leaq 0x150e(%rip), %rcx      # 0xa93a8
cmpq %rcx, %rax
jne 0xa7d19
leaq 0x5d6b(%rip), %rax      # 0xadc15
movq 0x10(%rsp), %rcx
movq %rax, (%rcx)
leaq 0x5ec6(%rip), %rax      # 0xadd7f
jmp 0xa7f20
leaq 0x5f7f(%rip), %rax      # 0xade41
movq 0x10(%rsp), %rcx
movq %rax, (%rcx)
movq 0x10(%r12), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
cmpb $0xb, (%rax)
jne 0xa7d19
movq 0x8(%rax), %rax
movq 0x10(%rsp), %rcx
movq %rax, 0x30(%rcx)
jmp 0xa7d19
leaq 0x5d1c(%rip), %rax      # 0xadc15
movq 0x10(%rsp), %rcx
movq %rax, (%rcx)
leaq 0x5dbb(%rip), %rax      # 0xadcc3
jmp 0xa7f20
leaq 0x5d04(%rip), %rax      # 0xadc15
movq 0x10(%rsp), %rcx
movq %rax, (%rcx)
leaq 0x5e01(%rip), %rax      # 0xadd21
movq %rax, 0x38(%rcx)
jmp 0xa7d19