// File: /workspace/github_c_makefile_star2_O0/stetre[P]moonnuklear/src/./nuklear/nuklear.h
// Function: nk_textedit_key
NK_LIB void
nk_textedit_key(struct nk_text_edit *state, enum nk_keys key, int shift_mod,
    const struct nk_user_font *font, float row_height)
{
retry:
    switch (key)
    {
    case NK_KEY_NONE:
    case NK_KEY_CTRL:
    case NK_KEY_ENTER:
    case NK_KEY_SHIFT:
    case NK_KEY_TAB:
    case NK_KEY_COPY:
    case NK_KEY_CUT:
    case NK_KEY_PASTE:
    case NK_KEY_MAX:
    default: break;
    case NK_KEY_TEXT_UNDO:
         nk_textedit_undo(state);
         state->has_preferred_x = 0;
         break;

    case NK_KEY_TEXT_REDO:
        nk_textedit_redo(state);
        state->has_preferred_x = 0;
        break;

    case NK_KEY_TEXT_SELECT_ALL:
        nk_textedit_select_all(state);
        state->has_preferred_x = 0;
        break;

    case NK_KEY_TEXT_INSERT_MODE:
        if (state->mode == NK_TEXT_EDIT_MODE_VIEW)
            state->mode = NK_TEXT_EDIT_MODE_INSERT;
        break;
    case NK_KEY_TEXT_REPLACE_MODE:
        if (state->mode == NK_TEXT_EDIT_MODE_VIEW)
            state->mode = NK_TEXT_EDIT_MODE_REPLACE;
        break;
    case NK_KEY_TEXT_RESET_MODE:
        if (state->mode == NK_TEXT_EDIT_MODE_INSERT ||
            state->mode == NK_TEXT_EDIT_MODE_REPLACE)
            state->mode = NK_TEXT_EDIT_MODE_VIEW;
        break;

    case NK_KEY_LEFT:
        if (shift_mod) {
            nk_textedit_clamp(state);
            nk_textedit_prep_selection_at_cursor(state);
            /* move selection left */
            if (state->select_end > 0)
                --state->select_end;
            state->cursor = state->select_end;
            state->has_preferred_x = 0;
        } else {
            /* if currently there's a selection,
             * move cursor to start of selection */
            if (NK_TEXT_HAS_SELECTION(state))
                nk_textedit_move_to_first(state);
            else if (state->cursor > 0)
               --state->cursor;
            state->has_preferred_x = 0;
        } break;

    case NK_KEY_RIGHT:
        if (shift_mod) {
            nk_textedit_prep_selection_at_cursor(state);
            /* move selection right */
            ++state->select_end;
            nk_textedit_clamp(state);
            state->cursor = state->select_end;
            state->has_preferred_x = 0;
        } else {
            /* if currently there's a selection,
             * move cursor to end of selection */
            if (NK_TEXT_HAS_SELECTION(state))
                nk_textedit_move_to_last(state);
            else ++state->cursor;
            nk_textedit_clamp(state);
            state->has_preferred_x = 0;
        } break;

    case NK_KEY_TEXT_WORD_LEFT:
        if (shift_mod) {
            if( !NK_TEXT_HAS_SELECTION( state ) )
            nk_textedit_prep_selection_at_cursor(state);
            state->cursor = nk_textedit_move_to_word_previous(state);
            state->select_end = state->cursor;
            nk_textedit_clamp(state );
        } else {
            if (NK_TEXT_HAS_SELECTION(state))
                nk_textedit_move_to_first(state);
            else {
                state->cursor = nk_textedit_move_to_word_previous(state);
                nk_textedit_clamp(state );
            }
        } break;

    case NK_KEY_TEXT_WORD_RIGHT:
        if (shift_mod) {
            if( !NK_TEXT_HAS_SELECTION( state ) )
                nk_textedit_prep_selection_at_cursor(state);
            state->cursor = nk_textedit_move_to_word_next(state);
            state->select_end = state->cursor;
            nk_textedit_clamp(state);
        } else {
            if (NK_TEXT_HAS_SELECTION(state))
                nk_textedit_move_to_last(state);
            else {
                state->cursor = nk_textedit_move_to_word_next(state);
                nk_textedit_clamp(state );
            }
        } break;

    case NK_KEY_DOWN: {
        struct nk_text_find find;
        struct nk_text_edit_row row;
        int i, sel = shift_mod;

        if (state->single_line) {
            /* on windows, up&down in single-line behave like left&right */
            key = NK_KEY_RIGHT;
            goto retry;
        }

        if (sel)
            nk_textedit_prep_selection_at_cursor(state);
        else if (NK_TEXT_HAS_SELECTION(state))
            nk_textedit_move_to_last(state);

        /* compute current position of cursor point */
        nk_textedit_clamp(state);
        nk_textedit_find_charpos(&find, state, state->cursor, state->single_line,
            font, row_height);

        /* now find character position down a row */
        if (find.length)
        {
            float x;
            float goal_x = state->has_preferred_x ? state->preferred_x : find.x;
            int start = find.first_char + find.length;

            state->cursor = start;
            nk_textedit_layout_row(&row, state, state->cursor, row_height, font);
            x = row.x0;

            for (i=0; i < row.num_chars && x < row.x1; ++i) {
                float dx = nk_textedit_get_width(state, start, i, font);
                x += dx;
                if (x > goal_x)
                    break;
                ++state->cursor;
            }
            nk_textedit_clamp(state);

            state->has_preferred_x = 1;
            state->preferred_x = goal_x;
            if (sel)
                state->select_end = state->cursor;
        }
    } break;

    case NK_KEY_UP: {
        struct nk_text_find find;
        struct nk_text_edit_row row;
        int i, sel = shift_mod;

        if (state->single_line) {
            /* on windows, up&down become left&right */
            key = NK_KEY_LEFT;
            goto retry;
        }

        if (sel)
            nk_textedit_prep_selection_at_cursor(state);
        else if (NK_TEXT_HAS_SELECTION(state))
            nk_textedit_move_to_first(state);

         /* compute current position of cursor point */
         nk_textedit_clamp(state);
         nk_textedit_find_charpos(&find, state, state->cursor, state->single_line,
                font, row_height);

         /* can only go up if there's a previous row */
         if (find.prev_first != find.first_char) {
            /* now find character position up a row */
            float x;
            float goal_x = state->has_preferred_x ? state->preferred_x : find.x;

            state->cursor = find.prev_first;
            nk_textedit_layout_row(&row, state, state->cursor, row_height, font);
            x = row.x0;

            for (i=0; i < row.num_chars && x < row.x1; ++i) {
                float dx = nk_textedit_get_width(state, find.prev_first, i, font);
                x += dx;
                if (x > goal_x)
                    break;
                ++state->cursor;
            }
            nk_textedit_clamp(state);

            state->has_preferred_x = 1;
            state->preferred_x = goal_x;
            if (sel) state->select_end = state->cursor;
         }
      } break;

    case NK_KEY_DEL:
        if (state->mode == NK_TEXT_EDIT_MODE_VIEW)
            break;
        if (NK_TEXT_HAS_SELECTION(state))
            nk_textedit_delete_selection(state);
        else {
            int n = state->string.len;
            if (state->cursor < n)
                nk_textedit_delete(state, state->cursor, 1);
         }
         state->has_preferred_x = 0;
         break;

    case NK_KEY_BACKSPACE:
        if (state->mode == NK_TEXT_EDIT_MODE_VIEW)
            break;
        if (NK_TEXT_HAS_SELECTION(state))
            nk_textedit_delete_selection(state);
        else {
            nk_textedit_clamp(state);
            if (state->cursor > 0) {
                nk_textedit_delete(state, state->cursor-1, 1);
                --state->cursor;
            }
         }
         state->has_preferred_x = 0;
         break;

    case NK_KEY_TEXT_START:
         if (shift_mod) {
            nk_textedit_prep_selection_at_cursor(state);
            state->cursor = state->select_end = 0;
            state->has_preferred_x = 0;
         } else {
            state->cursor = state->select_start = state->select_end = 0;
            state->has_preferred_x = 0;
         }
         break;

    case NK_KEY_TEXT_END:
         if (shift_mod) {
            nk_textedit_prep_selection_at_cursor(state);
            state->cursor = state->select_end = state->string.len;
            state->has_preferred_x = 0;
         } else {
            state->cursor = state->string.len;
            state->select_start = state->select_end = 0;
            state->has_preferred_x = 0;
         }
         break;

    case NK_KEY_TEXT_LINE_START: {
        if (shift_mod) {
            struct nk_text_find find;
           nk_textedit_clamp(state);
            nk_textedit_prep_selection_at_cursor(state);
            if (state->string.len && state->cursor == state->string.len)
                --state->cursor;
            nk_textedit_find_charpos(&find, state,state->cursor, state->single_line,
                font, row_height);
            state->cursor = state->select_end = find.first_char;
            state->has_preferred_x = 0;
        } else {
            struct nk_text_find find;
            if (state->string.len && state->cursor == state->string.len)
                --state->cursor;
            nk_textedit_clamp(state);
            nk_textedit_move_to_first(state);
            nk_textedit_find_charpos(&find, state, state->cursor, state->single_line,
                font, row_height);
            state->cursor = find.first_char;
            state->has_preferred_x = 0;
        }
      } break;

    case NK_KEY_TEXT_LINE_END: {
        if (shift_mod) {
            struct nk_text_find find;
            nk_textedit_clamp(state);
            nk_textedit_prep_selection_at_cursor(state);
            nk_textedit_find_charpos(&find, state, state->cursor, state->single_line,
                font, row_height);
            state->has_preferred_x = 0;
            state->cursor = find.first_char + find.length;
            if (find.length > 0 && nk_str_rune_at(&state->string, state->cursor-1) == '\n')
                --state->cursor;
            state->select_end = state->cursor;
        } else {
            struct nk_text_find find;
            nk_textedit_clamp(state);
            nk_textedit_move_to_first(state);
            nk_textedit_find_charpos(&find, state, state->cursor, state->single_line,
                font, row_height);

            state->has_preferred_x = 0;
            state->cursor = find.first_char + find.length;
            if (find.length > 0 && nk_str_rune_at(&state->string, state->cursor-1) == '\n')
                --state->cursor;
        }} break;
    }
}

// Assembly:
subq $0x128, %rsp            # imm = 0x128
movq %rdi, 0x120(%rsp)
movl %esi, 0x11c(%rsp)
movl %edx, 0x118(%rsp)
movq %rcx, 0x110(%rsp)
movss %xmm0, 0x10c(%rsp)
movl 0x11c(%rsp), %eax
movq %rax, 0x10(%rsp)
subq $0x1e, %rax
ja 0x8c037
movq 0x10(%rsp), %rax
leaq 0x217bc(%rip), %rcx     # 0xad7e8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
jmp 0x8c037
jmp 0x8cffc
movq 0x120(%rsp), %rdi
callq 0x14ac0
movq 0x120(%rsp), %rax
movb $0x0, 0xb7(%rax)
jmp 0x8cffc
movq 0x120(%rsp), %rdi
callq 0x13920
movq 0x120(%rsp), %rax
movb $0x0, 0xb7(%rax)
jmp 0x8cffc
movq 0x120(%rsp), %rdi
callq 0x133a0
movq 0x120(%rsp), %rax
movb $0x0, 0xb7(%rax)
jmp 0x8cffc
movq 0x120(%rsp), %rax
movzbl 0xb4(%rax), %eax
cmpl $0x0, %eax
jne 0x8c0c2
movq 0x120(%rsp), %rax
movb $0x1, 0xb4(%rax)
jmp 0x8cffc
movq 0x120(%rsp), %rax
movzbl 0xb4(%rax), %eax
cmpl $0x0, %eax
jne 0x8c0ea
movq 0x120(%rsp), %rax
movb $0x2, 0xb4(%rax)
jmp 0x8cffc
movq 0x120(%rsp), %rax
movzbl 0xb4(%rax), %eax
cmpl $0x1, %eax
je 0x8c117
movq 0x120(%rsp), %rax
movzbl 0xb4(%rax), %eax
cmpl $0x2, %eax
jne 0x8c126
movq 0x120(%rsp), %rax
movb $0x0, 0xb4(%rax)
jmp 0x8cffc
cmpl $0x0, 0x118(%rsp)
je 0x8c1a4
movq 0x120(%rsp), %rdi
callq 0x6f6b0
movq 0x120(%rsp), %rdi
callq 0x8dcf0
movq 0x120(%rsp), %rax
cmpl $0x0, 0xb0(%rax)
jle 0x8c177
movq 0x120(%rsp), %rax
movl 0xb0(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0xb0(%rax)
movq 0x120(%rsp), %rax
movl 0xb0(%rax), %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xa8(%rax)
movq 0x120(%rsp), %rax
movb $0x0, 0xb7(%rax)
jmp 0x8c20a
movq 0x120(%rsp), %rax
movl 0xac(%rax), %eax
movq 0x120(%rsp), %rcx
cmpl 0xb0(%rcx), %eax
je 0x8c1d1
movq 0x120(%rsp), %rdi
callq 0x8dd50
jmp 0x8c1fb
movq 0x120(%rsp), %rax
cmpl $0x0, 0xa8(%rax)
jle 0x8c1f9
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0xa8(%rax)
jmp 0x8c1fb
movq 0x120(%rsp), %rax
movb $0x0, 0xb7(%rax)
jmp 0x8cffc
cmpl $0x0, 0x118(%rsp)
je 0x8c277
movq 0x120(%rsp), %rdi
callq 0x8dcf0
movq 0x120(%rsp), %rax
movl 0xb0(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xb0(%rax)
movq 0x120(%rsp), %rdi
callq 0x6f6b0
movq 0x120(%rsp), %rax
movl 0xb0(%rax), %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xa8(%rax)
movq 0x120(%rsp), %rax
movb $0x0, 0xb7(%rax)
jmp 0x8c2d7
movq 0x120(%rsp), %rax
movl 0xac(%rax), %eax
movq 0x120(%rsp), %rcx
cmpl 0xb0(%rcx), %eax
je 0x8c2a4
movq 0x120(%rsp), %rdi
callq 0x8ddb0
jmp 0x8c2bb
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xa8(%rax)
movq 0x120(%rsp), %rdi
callq 0x6f6b0
movq 0x120(%rsp), %rax
movb $0x0, 0xb7(%rax)
jmp 0x8cffc
cmpl $0x0, 0x118(%rsp)
je 0x8c359
movq 0x120(%rsp), %rax
movl 0xac(%rax), %eax
movq 0x120(%rsp), %rcx
cmpl 0xb0(%rcx), %eax
jne 0x8c311
movq 0x120(%rsp), %rdi
callq 0x8dcf0
movq 0x120(%rsp), %rdi
callq 0x8de20
movl %eax, %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xa8(%rax)
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xb0(%rax)
movq 0x120(%rsp), %rdi
callq 0x6f6b0
jmp 0x8c3b2
movq 0x120(%rsp), %rax
movl 0xac(%rax), %eax
movq 0x120(%rsp), %rcx
cmpl 0xb0(%rcx), %eax
je 0x8c386
movq 0x120(%rsp), %rdi
callq 0x8dd50
jmp 0x8c3b0
movq 0x120(%rsp), %rdi
callq 0x8de20
movl %eax, %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xa8(%rax)
movq 0x120(%rsp), %rdi
callq 0x6f6b0
jmp 0x8c3b2
jmp 0x8cffc
cmpl $0x0, 0x118(%rsp)
je 0x8c434
movq 0x120(%rsp), %rax
movl 0xac(%rax), %eax
movq 0x120(%rsp), %rcx
cmpl 0xb0(%rcx), %eax
jne 0x8c3ec
movq 0x120(%rsp), %rdi
callq 0x8dcf0
movq 0x120(%rsp), %rdi
callq 0x8dea0
movl %eax, %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xa8(%rax)
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xb0(%rax)
movq 0x120(%rsp), %rdi
callq 0x6f6b0
jmp 0x8c48d
movq 0x120(%rsp), %rax
movl 0xac(%rax), %eax
movq 0x120(%rsp), %rcx
cmpl 0xb0(%rcx), %eax
je 0x8c461
movq 0x120(%rsp), %rdi
callq 0x8ddb0
jmp 0x8c48b
movq 0x120(%rsp), %rdi
callq 0x8dea0
movl %eax, %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xa8(%rax)
movq 0x120(%rsp), %rdi
callq 0x6f6b0
jmp 0x8c48d
jmp 0x8cffc
movl 0x118(%rsp), %eax
movl %eax, 0xd4(%rsp)
movq 0x120(%rsp), %rax
cmpb $0x0, 0xb8(%rax)
je 0x8c4c1
movl $0xd, 0x11c(%rsp)
jmp 0x8c00e
cmpl $0x0, 0xd4(%rsp)
je 0x8c4da
movq 0x120(%rsp), %rdi
callq 0x8dcf0
jmp 0x8c507
movq 0x120(%rsp), %rax
movl 0xac(%rax), %eax
movq 0x120(%rsp), %rcx
cmpl 0xb0(%rcx), %eax
je 0x8c505
movq 0x120(%rsp), %rdi
callq 0x8ddb0
jmp 0x8c507
movq 0x120(%rsp), %rdi
callq 0x6f6b0
movq 0x120(%rsp), %rsi
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %edx
movq 0x120(%rsp), %rax
movzbl 0xb8(%rax), %ecx
movq 0x110(%rsp), %r8
movss 0x10c(%rsp), %xmm0
leaq 0xf4(%rsp), %rdi
callq 0x8df30
cmpl $0x0, 0x104(%rsp)
je 0x8c74f
movq 0x120(%rsp), %rax
movzbl 0xb7(%rax), %eax
cmpl $0x0, %eax
je 0x8c591
movq 0x120(%rsp), %rax
movss 0xbc(%rax), %xmm0
movss %xmm0, 0xc(%rsp)
jmp 0x8c5a0
movss 0xf4(%rsp), %xmm0
movss %xmm0, 0xc(%rsp)
movss 0xc(%rsp), %xmm0
movss %xmm0, 0xcc(%rsp)
movl 0x100(%rsp), %eax
addl 0x104(%rsp), %eax
movl %eax, 0xc8(%rsp)
movl 0xc8(%rsp), %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xa8(%rax)
movq 0x120(%rsp), %rsi
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %edx
movss 0x10c(%rsp), %xmm0
movq 0x110(%rsp), %rcx
leaq 0xdc(%rsp), %rdi
callq 0x8db60
movss 0xdc(%rsp), %xmm0
movss %xmm0, 0xd0(%rsp)
movl $0x0, 0xd8(%rsp)
movl 0xd8(%rsp), %ecx
xorl %eax, %eax
cmpl 0xf0(%rsp), %ecx
movb %al, 0xb(%rsp)
jge 0x8c65c
movss 0xd0(%rsp), %xmm1
movss 0xe0(%rsp), %xmm0
ucomiss %xmm1, %xmm0
seta %al
movb %al, 0xb(%rsp)
movb 0xb(%rsp), %al
testb $0x1, %al
jne 0x8c669
jmp 0x8c6f2
movq 0x120(%rsp), %rdi
movl 0xc8(%rsp), %esi
movl 0xd8(%rsp), %edx
movq 0x110(%rsp), %rcx
callq 0x8dc70
movss %xmm0, 0xc4(%rsp)
movss 0xc4(%rsp), %xmm0
addss 0xd0(%rsp), %xmm0
movss %xmm0, 0xd0(%rsp)
movss 0xd0(%rsp), %xmm0
ucomiss 0xcc(%rsp), %xmm0
jbe 0x8c6c5
jmp 0x8c6f2
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xa8(%rax)
movl 0xd8(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xd8(%rsp)
jmp 0x8c62a
movq 0x120(%rsp), %rdi
callq 0x6f6b0
movq 0x120(%rsp), %rax
movb $0x1, 0xb7(%rax)
movss 0xcc(%rsp), %xmm0
movq 0x120(%rsp), %rax
movss %xmm0, 0xbc(%rax)
cmpl $0x0, 0xd4(%rsp)
je 0x8c74d
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xb0(%rax)
jmp 0x8c74f
jmp 0x8cffc
movl 0x118(%rsp), %eax
movl %eax, 0x8c(%rsp)
movq 0x120(%rsp), %rax
cmpb $0x0, 0xb8(%rax)
je 0x8c783
movl $0xc, 0x11c(%rsp)
jmp 0x8c00e
cmpl $0x0, 0x8c(%rsp)
je 0x8c79c
movq 0x120(%rsp), %rdi
callq 0x8dcf0
jmp 0x8c7c9
movq 0x120(%rsp), %rax
movl 0xac(%rax), %eax
movq 0x120(%rsp), %rcx
cmpl 0xb0(%rcx), %eax
je 0x8c7c7
movq 0x120(%rsp), %rdi
callq 0x8dd50
jmp 0x8c7c9
movq 0x120(%rsp), %rdi
callq 0x6f6b0
movq 0x120(%rsp), %rsi
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %edx
movq 0x120(%rsp), %rax
movzbl 0xb8(%rax), %ecx
movq 0x110(%rsp), %r8
movss 0x10c(%rsp), %xmm0
leaq 0xac(%rsp), %rdi
callq 0x8df30
movl 0xc0(%rsp), %eax
cmpl 0xb8(%rsp), %eax
je 0x8ca02
movq 0x120(%rsp), %rax
movzbl 0xb7(%rax), %eax
cmpl $0x0, %eax
je 0x8c859
movq 0x120(%rsp), %rax
movss 0xbc(%rax), %xmm0
movss %xmm0, 0x4(%rsp)
jmp 0x8c868
movss 0xac(%rsp), %xmm0
movss %xmm0, 0x4(%rsp)
movss 0x4(%rsp), %xmm0
movss %xmm0, 0x84(%rsp)
movl 0xc0(%rsp), %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xa8(%rax)
movq 0x120(%rsp), %rsi
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %edx
movss 0x10c(%rsp), %xmm0
movq 0x110(%rsp), %rcx
leaq 0x94(%rsp), %rdi
callq 0x8db60
movss 0x94(%rsp), %xmm0
movss %xmm0, 0x88(%rsp)
movl $0x0, 0x90(%rsp)
movl 0x90(%rsp), %ecx
xorl %eax, %eax
cmpl 0xa8(%rsp), %ecx
movb %al, 0x3(%rsp)
jge 0x8c90f
movss 0x88(%rsp), %xmm1
movss 0x98(%rsp), %xmm0
ucomiss %xmm1, %xmm0
seta %al
movb %al, 0x3(%rsp)
movb 0x3(%rsp), %al
testb $0x1, %al
jne 0x8c91c
jmp 0x8c9a5
movq 0x120(%rsp), %rdi
movl 0xc0(%rsp), %esi
movl 0x90(%rsp), %edx
movq 0x110(%rsp), %rcx
callq 0x8dc70
movss %xmm0, 0x80(%rsp)
movss 0x80(%rsp), %xmm0
addss 0x88(%rsp), %xmm0
movss %xmm0, 0x88(%rsp)
movss 0x88(%rsp), %xmm0
ucomiss 0x84(%rsp), %xmm0
jbe 0x8c978
jmp 0x8c9a5
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xa8(%rax)
movl 0x90(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x90(%rsp)
jmp 0x8c8dd
movq 0x120(%rsp), %rdi
callq 0x6f6b0
movq 0x120(%rsp), %rax
movb $0x1, 0xb7(%rax)
movss 0x84(%rsp), %xmm0
movq 0x120(%rsp), %rax
movss %xmm0, 0xbc(%rax)
cmpl $0x0, 0x8c(%rsp)
je 0x8ca00
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xb0(%rax)
jmp 0x8ca02
jmp 0x8cffc
movq 0x120(%rsp), %rax
movzbl 0xb4(%rax), %eax
cmpl $0x0, %eax
jne 0x8ca20
jmp 0x8cffc
movq 0x120(%rsp), %rax
movl 0xac(%rax), %eax
movq 0x120(%rsp), %rcx
cmpl 0xb0(%rcx), %eax
je 0x8ca4d
movq 0x120(%rsp), %rdi
callq 0x150d0
jmp 0x8ca95
movq 0x120(%rsp), %rax
movl 0x90(%rax), %eax
movl %eax, 0x7c(%rsp)
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %eax
cmpl 0x7c(%rsp), %eax
jge 0x8ca93
movq 0x120(%rsp), %rdi
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %esi
movl $0x1, %edx
callq 0x133b0
jmp 0x8ca95
movq 0x120(%rsp), %rax
movb $0x0, 0xb7(%rax)
jmp 0x8cffc
movq 0x120(%rsp), %rax
movzbl 0xb4(%rax), %eax
cmpl $0x0, %eax
jne 0x8cac2
jmp 0x8cffc
movq 0x120(%rsp), %rax
movl 0xac(%rax), %eax
movq 0x120(%rsp), %rcx
cmpl 0xb0(%rcx), %eax
je 0x8caef
movq 0x120(%rsp), %rdi
callq 0x150d0
jmp 0x8cb49
movq 0x120(%rsp), %rdi
callq 0x6f6b0
movq 0x120(%rsp), %rax
cmpl $0x0, 0xa8(%rax)
jle 0x8cb47
movq 0x120(%rsp), %rdi
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %esi
subl $0x1, %esi
movl $0x1, %edx
callq 0x133b0
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0xa8(%rax)
jmp 0x8cb49
movq 0x120(%rsp), %rax
movb $0x0, 0xb7(%rax)
jmp 0x8cffc
cmpl $0x0, 0x118(%rsp)
je 0x8cba9
movq 0x120(%rsp), %rdi
callq 0x8dcf0
movq 0x120(%rsp), %rax
movl $0x0, 0xb0(%rax)
movq 0x120(%rsp), %rax
movl $0x0, 0xa8(%rax)
movq 0x120(%rsp), %rax
movb $0x0, 0xb7(%rax)
jmp 0x8cbee
movq 0x120(%rsp), %rax
movl $0x0, 0xb0(%rax)
movq 0x120(%rsp), %rax
movl $0x0, 0xac(%rax)
movq 0x120(%rsp), %rax
movl $0x0, 0xa8(%rax)
movq 0x120(%rsp), %rax
movb $0x0, 0xb7(%rax)
jmp 0x8cffc
cmpl $0x0, 0x118(%rsp)
je 0x8cc45
movq 0x120(%rsp), %rdi
callq 0x8dcf0
movq 0x120(%rsp), %rax
movl 0x90(%rax), %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xb0(%rax)
movq 0x120(%rsp), %rax
movl %ecx, 0xa8(%rax)
movq 0x120(%rsp), %rax
movb $0x0, 0xb7(%rax)
jmp 0x8cc94
movq 0x120(%rsp), %rax
movl 0x90(%rax), %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xa8(%rax)
movq 0x120(%rsp), %rax
movl $0x0, 0xb0(%rax)
movq 0x120(%rsp), %rax
movl $0x0, 0xac(%rax)
movq 0x120(%rsp), %rax
movb $0x0, 0xb7(%rax)
jmp 0x8cffc
cmpl $0x0, 0x118(%rsp)
je 0x8cd7b
movq 0x120(%rsp), %rdi
callq 0x6f6b0
movq 0x120(%rsp), %rdi
callq 0x8dcf0
movq 0x120(%rsp), %rax
cmpl $0x0, 0x90(%rax)
je 0x8cd07
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %eax
movq 0x120(%rsp), %rcx
cmpl 0x90(%rcx), %eax
jne 0x8cd07
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0xa8(%rax)
movq 0x120(%rsp), %rsi
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %edx
movq 0x120(%rsp), %rax
movzbl 0xb8(%rax), %ecx
movq 0x110(%rsp), %r8
movss 0x10c(%rsp), %xmm0
leaq 0x64(%rsp), %rdi
callq 0x8df30
movl 0x70(%rsp), %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xb0(%rax)
movq 0x120(%rsp), %rax
movl %ecx, 0xa8(%rax)
movq 0x120(%rsp), %rax
movb $0x0, 0xb7(%rax)
jmp 0x8ce3c
movq 0x120(%rsp), %rax
cmpl $0x0, 0x90(%rax)
je 0x8cdc1
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %eax
movq 0x120(%rsp), %rcx
cmpl 0x90(%rcx), %eax
jne 0x8cdc1
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0xa8(%rax)
movq 0x120(%rsp), %rdi
callq 0x6f6b0
movq 0x120(%rsp), %rdi
callq 0x8dd50
movq 0x120(%rsp), %rsi
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %edx
movq 0x120(%rsp), %rax
movzbl 0xb8(%rax), %ecx
movq 0x110(%rsp), %r8
movss 0x10c(%rsp), %xmm0
leaq 0x4c(%rsp), %rdi
callq 0x8df30
movl 0x58(%rsp), %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xa8(%rax)
movq 0x120(%rsp), %rax
movb $0x0, 0xb7(%rax)
jmp 0x8cffc
cmpl $0x0, 0x118(%rsp)
je 0x8cf34
movq 0x120(%rsp), %rdi
callq 0x6f6b0
movq 0x120(%rsp), %rdi
callq 0x8dcf0
movq 0x120(%rsp), %rsi
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %edx
movq 0x120(%rsp), %rax
movzbl 0xb8(%rax), %ecx
movq 0x110(%rsp), %r8
movss 0x10c(%rsp), %xmm0
leaq 0x34(%rsp), %rdi
callq 0x8df30
movq 0x120(%rsp), %rax
movb $0x0, 0xb7(%rax)
movl 0x40(%rsp), %ecx
addl 0x44(%rsp), %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xa8(%rax)
cmpl $0x0, 0x44(%rsp)
jle 0x8cf13
movq 0x120(%rsp), %rdi
addq $0x18, %rdi
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %esi
subl $0x1, %esi
callq 0x13a90
cmpl $0xa, %eax
jne 0x8cf13
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0xa8(%rax)
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xb0(%rax)
jmp 0x8cffa
movq 0x120(%rsp), %rdi
callq 0x6f6b0
movq 0x120(%rsp), %rdi
callq 0x8dd50
movq 0x120(%rsp), %rsi
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %edx
movq 0x120(%rsp), %rax
movzbl 0xb8(%rax), %ecx
movq 0x110(%rsp), %r8
movss 0x10c(%rsp), %xmm0
leaq 0x1c(%rsp), %rdi
callq 0x8df30
movq 0x120(%rsp), %rax
movb $0x0, 0xb7(%rax)
movl 0x28(%rsp), %ecx
addl 0x2c(%rsp), %ecx
movq 0x120(%rsp), %rax
movl %ecx, 0xa8(%rax)
cmpl $0x0, 0x2c(%rsp)
jle 0x8cff8
movq 0x120(%rsp), %rdi
addq $0x18, %rdi
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %esi
subl $0x1, %esi
callq 0x13a90
cmpl $0xa, %eax
jne 0x8cff8
movq 0x120(%rsp), %rax
movl 0xa8(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0xa8(%rax)
jmp 0x8cffa
jmp 0x8cffc
addq $0x128, %rsp            # imm = 0x128
retq
nopw %cs:(%rax,%rax)