// File: /workspace/github_c_makefile_star2_O0/lecram[P]congif/term.c
// Function: ctrlseq
static void
ctrlseq(Term *term, uint8_t byte)
{
    int private;
    int n, k, k1;
    int params[MAX_PARAMS];
    char *str;
    int ra, rb, ca, cb;
    int i, j;
    Cell cell;

    if (!within_bounds(term, term->row, term->col))
        return;
    term->partial[term->parlen] = '\0';
    if (*term->partial == '?') {
        private = 1;
        str = (char *) term->partial + 1;
    } else {
        private = 0;
        str = (char *) term->partial;
    }
    n = getparams(str, params, MAX_PARAMS);
    k = n ? *params : 0;
    k1 = k ? k : 1;
    switch (byte) {
    case '@':
        CLEARWRAP;
        /* TODO: insert the indicated # of blank characters */
        logfmt("NYI: Control Sequence @ (ICH)\n");
        break;
    case 'A':
        CLEARWRAP;
        term->row -= k1;
        CLIPROW(0);
        break;
    case 'B': case 'e':
        CLEARWRAP;
        term->row += k1;
        CLIPROW(term->rows-1);
        break;
    case 'C': case 'a':
        CLEARWRAP;
        term->col += k1;
        CLIPCOL(term->cols-1);
        break;
    case 'D':
        CLEARWRAP;
        term->col -= k1;
        CLIPCOL(0);
        break;
    case 'E':
        term->row += k1;
        term->col = 0;
        CLIPROW(term->rows-1);
        break;
    case 'F':
        term->row -= k1;
        term->col = 0;
        CLIPROW(0);
        break;
    case 'G': case '`':
        term->col = k1 - 1;
        CLIPCOL(term->cols-1);
        break;
    case 'H': case 'f':
        if (n == 2) {
            term->row = MAX(params[0], 1) - 1;
            term->col = MAX(params[1], 1) - 1;
        } else if (n == 1) {
            term->row = MAX(params[0], 1) - 1;
            term->col = 0;
        } else {
            term->row = term->col = 0;
        }
        if (term->mode & M_ORIGIN)
            term->row += term->top;
        CLIPROW(term->rows-1);
        CLIPCOL(term->cols-1);
        break;
    case 'J':
        CLEARWRAP;
        ra = 0; rb = term->rows - 1;
        ca = 0; cb = term->cols - 1;
        if (k == 0) {
            ra = term->row;
            ca = term->col;
        } else if (k == 1) {
            rb = term->row;
            cb = term->col;
        }
        for (j = ca; j < term->cols; j++)
            term->addr[ra][j] = BLANK;
        for (i = ra+1; i < rb; i++) {
            for (j = 0; j < term->cols; j++) {
                term->addr[i][j] = BLANK;
            }
        }
        for (j = 0; j <= cb; j++)
            term->addr[rb][j] = BLANK;
        break;
    case 'K':
        CLEARWRAP;
        ca = 0; cb = term->cols - 1;
        if (k == 0)
            ca = term->col;
        else if (k == 1)
            cb = term->col;
        for (j = ca; j <= cb; j++)
            term->addr[term->row][j] = BLANK;
        break;
    case 'L':
        CLEARWRAP;
        if (term->row < term->top || term->row > term->bot)
            break;
        /* This is implemented naively:
             1. temporarily change the top margin to current row;
             2. scroll up as many times as requested;
             3. restore top margin to previous value. */
        i = term->top;
        term->top = term->row;
        for (j = 0; j < k1; j++)
            scroll_up(term);
        term->top = i;
        break;
    case 'M':
        CLEARWRAP;
        if (term->row < term->top || term->row > term->bot)
            break;
        /* This is implemented naively:
             1. temporarily change the top margin to current row;
             2. scroll down as many times as requested;
             3. restore top margin to previous value. */
        /* TODO:
             vt102-ug says:
               "Lines added to bottom of screen have spaces with same character
               attributes as last line moved up."
             we need a more flexible scroll_down() to fix this. */
        i = term->top;
        term->top = term->row;
        for (j = 0; j < k1; j++)
            scroll_down(term);
        term->top = i;
        break;
    case 'P':
        CLEARWRAP;
        cell = term->addr[term->row][term->cols-1];
        cell.code = EMPTY;
        for (j = term->col; j < term->cols-k1; j++)
            term->addr[term->row][j] = term->addr[term->row][j+k1];
        for (j = term->cols-k1; j < term->cols; j++)
            term->addr[term->row][j] = cell;
        break;
    case 'X':
        CLEARWRAP;
        for (j = 0; j < k1; j++)
            term->addr[term->row][term->col+j] = BLANK;
        break;
    case 'c':
        /* Device Attributes (DA) */
        /* if we were a real terminal, we'd reply with "ESC [ ? 6 c" */
        /* since there is no application listening, we can ignore this */
        break;
    case 'd':
        CLEARWRAP;
        term->row = k1 - 1;
        break;
    case 'g':
        /* TODO: clear tab stop */
        logfmt("NYI: Control Sequence g (TBC)\n");
        break;
    case 'h':
        for (i = 0; i < n; i++)
            modeswitch(term, private, params[i], 1);
        break;
    case 'l':
        for (i = 0; i < n; i++)
            modeswitch(term, private, params[i], 0);
        break;
    case 'm':
        sgr(term, n, params);
        break;
    case 'n':
        /* Device Status Report (DSR) */
        /* if we were a real terminal, we'd send a status reply (e.g. CPR) */
        /* since there is no application listening, we can ignore this */
        break;
    case 'q':
        /* TODO: set keyboard LEDs */
        logfmt("NYI: Control Sequence q (DECLL)\n");
        break;
    case 'r':
        if (n == 2) {
            term->top = MAX(params[0], 1) - 1;
            term->bot = MAX(params[1], 1) - 1;
        } else {
            term->top = 0;
            term->bot = term->rows - 1;
        }
        term->row = term->mode & M_ORIGIN ? term->top : 0;
        term->col = 0;
        break;
    case 's':
        save_cursor(term);
        break;
    case 'u':
        load_cursor(term);
        break;
    default:
        logfmt("UNS: Control Sequence %c\n", byte);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x8(%rax), %esi
movq -0x8(%rbp), %rax
movl 0xc(%rax), %edx
callq 0x3790
cmpl $0x0, %eax
jne 0x2786
jmp 0x331c
movq -0x8(%rbp), %rax
movq -0x8(%rbp), %rcx
movslq 0x64(%rcx), %rcx
movb $0x0, 0x6c(%rax,%rcx)
movq -0x8(%rbp), %rax
movzbl 0x6c(%rax), %eax
cmpl $0x3f, %eax
jne 0x27bd
movl $0x1, -0x10(%rbp)
movq -0x8(%rbp), %rax
addq $0x6c, %rax
addq $0x1, %rax
movq %rax, -0x68(%rbp)
jmp 0x27d0
movl $0x0, -0x10(%rbp)
movq -0x8(%rbp), %rax
addq $0x6c, %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rdi
leaq -0x60(%rbp), %rsi
movl $0x10, %edx
callq 0x3a30
movl %eax, -0x14(%rbp)
cmpl $0x0, -0x14(%rbp)
je 0x27f6
movl -0x60(%rbp), %eax
movl %eax, -0x9c(%rbp)
jmp 0x2800
xorl %eax, %eax
movl %eax, -0x9c(%rbp)
jmp 0x2800
movl -0x9c(%rbp), %eax
movl %eax, -0x18(%rbp)
cmpl $0x0, -0x18(%rbp)
je 0x281a
movl -0x18(%rbp), %eax
movl %eax, -0xa0(%rbp)
jmp 0x2827
movl $0x1, %eax
movl %eax, -0xa0(%rbp)
jmp 0x2827
movl -0xa0(%rbp), %eax
movl %eax, -0x1c(%rbp)
movzbl -0x9(%rbp), %eax
addl $-0x40, %eax
movl %eax, %ecx
movq %rcx, -0xa8(%rbp)
subl $0x35, %eax
ja 0x330a
movq -0xa8(%rbp), %rax
leaq 0x4a31(%rip), %rcx      # 0x7288
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
jmp 0x2862
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jl 0x2883
movq -0x8(%rbp), %rax
movl 0x4(%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x2885
leaq 0x4e20(%rip), %rdi      # 0x76ac
movb $0x0, %al
callq 0x2220
jmp 0x331c
jmp 0x289a
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jl 0x28bb
movq -0x8(%rbp), %rax
movl 0x4(%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x28bd
movl -0x1c(%rbp), %edx
movq -0x8(%rbp), %rax
movl 0x8(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x8(%rax)
movq -0x8(%rbp), %rax
cmpl $0x0, 0x8(%rax)
jl 0x28e5
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl (%rcx), %eax
jl 0x28f0
movq -0x8(%rbp), %rax
movl $0x0, 0x8(%rax)
jmp 0x331c
jmp 0x28f7
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jl 0x2918
movq -0x8(%rbp), %rax
movl 0x4(%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x291a
movl -0x1c(%rbp), %ecx
movq -0x8(%rbp), %rax
addl 0x8(%rax), %ecx
movl %ecx, 0x8(%rax)
movq -0x8(%rbp), %rax
cmpl $0x0, 0x8(%rax)
jl 0x2940
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl (%rcx), %eax
jl 0x2950
movq -0x8(%rbp), %rax
movl (%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x8(%rax)
jmp 0x331c
jmp 0x2957
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jl 0x2978
movq -0x8(%rbp), %rax
movl 0x4(%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x297a
movl -0x1c(%rbp), %ecx
movq -0x8(%rbp), %rax
addl 0xc(%rax), %ecx
movl %ecx, 0xc(%rax)
movq -0x8(%rbp), %rax
cmpl $0x0, 0xc(%rax)
jl 0x29a1
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jl 0x29b2
movq -0x8(%rbp), %rax
movl 0x4(%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x331c
jmp 0x29b9
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jl 0x29da
movq -0x8(%rbp), %rax
movl 0x4(%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x29dc
movl -0x1c(%rbp), %edx
movq -0x8(%rbp), %rax
movl 0xc(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0xc(%rax)
movq -0x8(%rbp), %rax
cmpl $0x0, 0xc(%rax)
jl 0x2a05
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jl 0x2a10
movq -0x8(%rbp), %rax
movl $0x0, 0xc(%rax)
jmp 0x331c
movl -0x1c(%rbp), %ecx
movq -0x8(%rbp), %rax
addl 0x8(%rax), %ecx
movl %ecx, 0x8(%rax)
movq -0x8(%rbp), %rax
movl $0x0, 0xc(%rax)
movq -0x8(%rbp), %rax
cmpl $0x0, 0x8(%rax)
jl 0x2a46
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl (%rcx), %eax
jl 0x2a56
movq -0x8(%rbp), %rax
movl (%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x8(%rax)
jmp 0x331c
movl -0x1c(%rbp), %edx
movq -0x8(%rbp), %rax
movl 0x8(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x8(%rax)
movq -0x8(%rbp), %rax
movl $0x0, 0xc(%rax)
movq -0x8(%rbp), %rax
cmpl $0x0, 0x8(%rax)
jl 0x2a8e
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl (%rcx), %eax
jl 0x2a99
movq -0x8(%rbp), %rax
movl $0x0, 0x8(%rax)
jmp 0x331c
movl -0x1c(%rbp), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0x8(%rbp), %rax
cmpl $0x0, 0xc(%rax)
jl 0x2ac5
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jl 0x2ad6
movq -0x8(%rbp), %rax
movl 0x4(%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x331c
cmpl $0x2, -0x14(%rbp)
jne 0x2b3f
cmpl $0x1, -0x60(%rbp)
jle 0x2af2
movl -0x60(%rbp), %eax
movl %eax, -0xac(%rbp)
jmp 0x2aff
movl $0x1, %eax
movl %eax, -0xac(%rbp)
jmp 0x2aff
movl -0xac(%rbp), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x8(%rax)
cmpl $0x1, -0x5c(%rbp)
jle 0x2b20
movl -0x5c(%rbp), %eax
movl %eax, -0xb0(%rbp)
jmp 0x2b2d
movl $0x1, %eax
movl %eax, -0xb0(%rbp)
jmp 0x2b2d
movl -0xb0(%rbp), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x2b98
cmpl $0x1, -0x14(%rbp)
jne 0x2b80
cmpl $0x1, -0x60(%rbp)
jle 0x2b56
movl -0x60(%rbp), %eax
movl %eax, -0xb4(%rbp)
jmp 0x2b63
movl $0x1, %eax
movl %eax, -0xb4(%rbp)
jmp 0x2b63
movl -0xb4(%rbp), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x8(%rbp), %rax
movl $0x0, 0xc(%rax)
jmp 0x2b96
movq -0x8(%rbp), %rax
movl $0x0, 0xc(%rax)
movq -0x8(%rbp), %rax
movl $0x0, 0x8(%rax)
jmp 0x2b98
movq -0x8(%rbp), %rax
movzwl 0x18(%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x2bb9
movq -0x8(%rbp), %rax
movl 0x10(%rax), %ecx
movq -0x8(%rbp), %rax
addl 0x8(%rax), %ecx
movl %ecx, 0x8(%rax)
movq -0x8(%rbp), %rax
cmpl $0x0, 0x8(%rax)
jl 0x2bd2
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl (%rcx), %eax
jl 0x2be2
movq -0x8(%rbp), %rax
movl (%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x8(%rbp), %rax
cmpl $0x0, 0xc(%rax)
jl 0x2bfc
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jl 0x2c0d
movq -0x8(%rbp), %rax
movl 0x4(%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x331c
jmp 0x2c14
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jl 0x2c35
movq -0x8(%rbp), %rax
movl 0x4(%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x2c37
movl $0x0, -0x6c(%rbp)
movq -0x8(%rbp), %rax
movl (%rax), %eax
subl $0x1, %eax
movl %eax, -0x70(%rbp)
movl $0x0, -0x74(%rbp)
movq -0x8(%rbp), %rax
movl 0x4(%rax), %eax
subl $0x1, %eax
movl %eax, -0x78(%rbp)
cmpl $0x0, -0x18(%rbp)
jne 0x2c7a
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x6c(%rbp)
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x74(%rbp)
jmp 0x2c96
cmpl $0x1, -0x18(%rbp)
jne 0x2c94
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x70(%rbp)
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x78(%rbp)
jmp 0x2c96
movl -0x74(%rbp), %eax
movl %eax, -0x80(%rbp)
movl -0x80(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jge 0x2cf3
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x6c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x80(%rbp), %rcx
movw $0x20, -0x88(%rbp)
movq -0x8(%rbp), %rdx
movb 0x1a(%rdx), %dl
movb %dl, -0x86(%rbp)
movq -0x8(%rbp), %rdx
movb 0x1b(%rdx), %dl
movb %dl, -0x85(%rbp)
movl -0x88(%rbp), %edx
movl %edx, (%rax,%rcx,4)
movl -0x80(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x80(%rbp)
jmp 0x2c9c
movl -0x6c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
movl -0x7c(%rbp), %eax
cmpl -0x70(%rbp), %eax
jge 0x2d6f
movl $0x0, -0x80(%rbp)
movl -0x80(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jge 0x2d62
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x7c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x80(%rbp), %rcx
movw $0x20, -0x8c(%rbp)
movq -0x8(%rbp), %rdx
movb 0x1a(%rdx), %dl
movb %dl, -0x8a(%rbp)
movq -0x8(%rbp), %rdx
movb 0x1b(%rdx), %dl
movb %dl, -0x89(%rbp)
movl -0x8c(%rbp), %edx
movl %edx, (%rax,%rcx,4)
movl -0x80(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x80(%rbp)
jmp 0x2d0b
jmp 0x2d64
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0x2cfc
movl $0x0, -0x80(%rbp)
movl -0x80(%rbp), %eax
cmpl -0x78(%rbp), %eax
jg 0x2dc9
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x70(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x80(%rbp), %rcx
movw $0x20, -0x90(%rbp)
movq -0x8(%rbp), %rdx
movb 0x1a(%rdx), %dl
movb %dl, -0x8e(%rbp)
movq -0x8(%rbp), %rdx
movb 0x1b(%rdx), %dl
movb %dl, -0x8d(%rbp)
movl -0x90(%rbp), %edx
movl %edx, (%rax,%rcx,4)
movl -0x80(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x80(%rbp)
jmp 0x2d76
jmp 0x331c
jmp 0x2dd0
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jl 0x2df1
movq -0x8(%rbp), %rax
movl 0x4(%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x2df3
movl $0x0, -0x74(%rbp)
movq -0x8(%rbp), %rax
movl 0x4(%rax), %eax
subl $0x1, %eax
movl %eax, -0x78(%rbp)
cmpl $0x0, -0x18(%rbp)
jne 0x2e19
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x74(%rbp)
jmp 0x2e2b
cmpl $0x1, -0x18(%rbp)
jne 0x2e29
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x78(%rbp)
jmp 0x2e2b
movl -0x74(%rbp), %eax
movl %eax, -0x80(%rbp)
movl -0x80(%rbp), %eax
cmpl -0x78(%rbp), %eax
jg 0x2e88
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x8(%rbp), %rcx
movslq 0x8(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x80(%rbp), %rcx
movw $0x20, -0x94(%rbp)
movq -0x8(%rbp), %rdx
movb 0x1a(%rdx), %dl
movb %dl, -0x92(%rbp)
movq -0x8(%rbp), %rdx
movb 0x1b(%rdx), %dl
movb %dl, -0x91(%rbp)
movl -0x94(%rbp), %edx
movl %edx, (%rax,%rcx,4)
movl -0x80(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x80(%rbp)
jmp 0x2e31
jmp 0x331c
jmp 0x2e8f
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jl 0x2eb0
movq -0x8(%rbp), %rax
movl 0x4(%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x2eb2
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jl 0x2ed2
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x14(%rcx), %eax
jle 0x2ed7
jmp 0x331c
movq -0x8(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x7c(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x10(%rax)
movl $0x0, -0x80(%rbp)
movl -0x80(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x2f12
movq -0x8(%rbp), %rdi
callq 0x3870
movl -0x80(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x80(%rbp)
jmp 0x2ef6
movl -0x7c(%rbp), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x10(%rax)
jmp 0x331c
jmp 0x2f23
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jl 0x2f44
movq -0x8(%rbp), %rax
movl 0x4(%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x2f46
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jl 0x2f66
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x14(%rcx), %eax
jle 0x2f6b
jmp 0x331c
movq -0x8(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x7c(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x10(%rax)
movl $0x0, -0x80(%rbp)
movl -0x80(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x2fa6
movq -0x8(%rbp), %rdi
callq 0x3670
movl -0x80(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x80(%rbp)
jmp 0x2f8a
movl -0x7c(%rbp), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x10(%rax)
jmp 0x331c
jmp 0x2fb7
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jl 0x2fd8
movq -0x8(%rbp), %rax
movl 0x4(%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x2fda
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x8(%rbp), %rcx
movslq 0x8(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movl 0x4(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x84(%rbp)
movw $0x20, -0x84(%rbp)
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x80(%rbp)
movl -0x80(%rbp), %eax
movq -0x8(%rbp), %rcx
movl 0x4(%rcx), %ecx
subl -0x1c(%rbp), %ecx
cmpl %ecx, %eax
jge 0x306e
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x8(%rbp), %rcx
movslq 0x8(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x80(%rbp), %rcx
movq -0x8(%rbp), %rdx
movq 0x20(%rdx), %rdx
movq -0x8(%rbp), %rsi
movslq 0x8(%rsi), %rsi
movq (%rdx,%rsi,8), %rdx
movl -0x80(%rbp), %esi
addl -0x1c(%rbp), %esi
movslq %esi, %rsi
movl (%rdx,%rsi,4), %edx
movl %edx, (%rax,%rcx,4)
movl -0x80(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x80(%rbp)
jmp 0x3017
movq -0x8(%rbp), %rax
movl 0x4(%rax), %eax
subl -0x1c(%rbp), %eax
movl %eax, -0x80(%rbp)
movl -0x80(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jge 0x30b3
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x8(%rbp), %rcx
movslq 0x8(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x80(%rbp), %rcx
movl -0x84(%rbp), %edx
movl %edx, (%rax,%rcx,4)
movl -0x80(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x80(%rbp)
jmp 0x307b
jmp 0x331c
jmp 0x30ba
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jl 0x30db
movq -0x8(%rbp), %rax
movl 0x4(%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x30dd
movl $0x0, -0x80(%rbp)
movl -0x80(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x3144
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x8(%rbp), %rcx
movslq 0x8(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movl 0xc(%rcx), %ecx
addl -0x80(%rbp), %ecx
movslq %ecx, %rcx
movw $0x20, -0x98(%rbp)
movq -0x8(%rbp), %rdx
movb 0x1a(%rdx), %dl
movb %dl, -0x96(%rbp)
movq -0x8(%rbp), %rdx
movb 0x1b(%rdx), %dl
movb %dl, -0x95(%rbp)
movl -0x98(%rbp), %edx
movl %edx, (%rax,%rcx,4)
movl -0x80(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x80(%rbp)
jmp 0x30e4
jmp 0x331c
jmp 0x331c
jmp 0x3150
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jl 0x3171
movq -0x8(%rbp), %rax
movl 0x4(%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x3173
movl -0x1c(%rbp), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x8(%rax)
jmp 0x331c
leaq 0x453f(%rip), %rdi      # 0x76cb
movb $0x0, %al
callq 0x2220
jmp 0x331c
movl $0x0, -0x7c(%rbp)
movl -0x7c(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0x31cb
movq -0x8(%rbp), %rdi
movl -0x10(%rbp), %esi
movslq -0x7c(%rbp), %rax
movl -0x60(%rbp,%rax,4), %edx
movl $0x1, %ecx
callq 0x3b20
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0x319f
jmp 0x331c
movl $0x0, -0x7c(%rbp)
movl -0x7c(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0x3200
movq -0x8(%rbp), %rdi
movl -0x10(%rbp), %esi
movslq -0x7c(%rbp), %rax
movl -0x60(%rbp,%rax,4), %edx
xorl %ecx, %ecx
callq 0x3b20
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0x31d7
jmp 0x331c
movq -0x8(%rbp), %rdi
movl -0x14(%rbp), %esi
leaq -0x60(%rbp), %rdx
callq 0x3eb0
jmp 0x331c
jmp 0x331c
leaq 0x44c4(%rip), %rdi      # 0x76ea
movb $0x0, %al
callq 0x2220
jmp 0x331c
cmpl $0x2, -0x14(%rbp)
jne 0x3296
cmpl $0x1, -0x60(%rbp)
jle 0x3249
movl -0x60(%rbp), %eax
movl %eax, -0xb8(%rbp)
jmp 0x3256
movl $0x1, %eax
movl %eax, -0xb8(%rbp)
jmp 0x3256
movl -0xb8(%rbp), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x10(%rax)
cmpl $0x1, -0x5c(%rbp)
jle 0x3277
movl -0x5c(%rbp), %eax
movl %eax, -0xbc(%rbp)
jmp 0x3284
movl $0x1, %eax
movl %eax, -0xbc(%rbp)
jmp 0x3284
movl -0xbc(%rbp), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x14(%rax)
jmp 0x32b1
movq -0x8(%rbp), %rax
movl $0x0, 0x10(%rax)
movq -0x8(%rbp), %rax
movl (%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x14(%rax)
movq -0x8(%rbp), %rax
movzwl 0x18(%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x32d0
movq -0x8(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0xc0(%rbp)
jmp 0x32da
xorl %eax, %eax
movl %eax, -0xc0(%rbp)
jmp 0x32da
movl -0xc0(%rbp), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x8(%rbp), %rax
movl $0x0, 0xc(%rax)
jmp 0x331c
movq -0x8(%rbp), %rdi
callq 0x35c0
jmp 0x331c
movq -0x8(%rbp), %rdi
callq 0x4360
jmp 0x331c
movzbl -0x9(%rbp), %esi
leaq 0x43f6(%rip), %rdi      # 0x770b
movb $0x0, %al
callq 0x2220
addq $0xc0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)