// File: /workspace/github_c_makefile_star2_O0/nh13[P]ksw/src/parasail/src/traceback_template.c
// Function: parasail_traceback_striped_8
static inline void CONCAT(NAME, T) (
        const char *seqA,
        int lena,
        const char *seqB,
        int lenb,
        const char *nameA,
        const char *nameB,
        const parasail_matrix_t *matrix,
        parasail_result_t *result,
        char match, char pos, char neg,
        int width,
        int name_width,
        int use_stats,
        int int_width,
        FILE *stream,
        int case_sensitive,
        const char *alphabet_aliases_)
{
    char alphabet_aliases[256];
    size_t aliases_size = 0;
    char *q = malloc(sizeof(char)*(lena+lenb));
    char *d = malloc(sizeof(char)*(lena+lenb));
    char *a = malloc(sizeof(char)*(lena+lenb));
    char *qc = q;
    char *dc = d;
    char *ac = a;
    int64_t i = result->end_query;
    int64_t j = result->end_ref;
    int where = PARASAIL_DIAG;
    int64_t c_ins = 0;
    int64_t c_del = 0;
    D *HT = (D*)result->trace->trace_table;
    int64_t namelenA = (NULL == nameA) ? 0 : (int64_t)strlen(nameA);
    int64_t namelenB = (NULL == nameB) ? 0 : (int64_t)strlen(nameB);
    char tmp[32];
    int _int_width = 0;
#if defined(STRIPED)
    int64_t segWidth = 0;
    int64_t segLen = 0;
    if (result->flag & PARASAIL_FLAG_LANES_1) {
        segWidth = 1;
    }
    if (result->flag & PARASAIL_FLAG_LANES_2) {
        segWidth = 2;
    }
    if (result->flag & PARASAIL_FLAG_LANES_4) {
        segWidth = 4;
    }
    if (result->flag & PARASAIL_FLAG_LANES_8) {
        segWidth = 8;
    }
    if (result->flag & PARASAIL_FLAG_LANES_16) {
        segWidth = 16;
    }
    if (result->flag & PARASAIL_FLAG_LANES_32) {
        segWidth = 32;
    }
    if (result->flag & PARASAIL_FLAG_LANES_64) {
        segWidth = 64;
    }
    segLen = (lena + segWidth - 1) / segWidth;
#endif
    if (NULL != alphabet_aliases_) {
        size_t i;
        aliases_size = strlen(alphabet_aliases_);
        PARASAIL_ASSERT_NORETVAL(aliases_size % 2 == 0 && aliases_size < 256); // even number of characters in alias
        for (i=0; i<aliases_size; ++i) {
            alphabet_aliases[i] = case_sensitive ? alphabet_aliases_[i] :
                                                   toupper(alphabet_aliases_[i]);
        }
    }
    /* how wide does our index label need to be? */
    _int_width = snprintf(tmp, 32, "%llu", (unsigned long long)lena+(unsigned long long)lenb);
    /* if requested int width is too small, override it */
    if (int_width < _int_width) {
        int_width = _int_width;
    }
    /* semi-global alignment includes the end gaps */
    if (result->flag & PARASAIL_FLAG_SG) {
        int k;
        if (result->end_query+1 == lena) {
            k = lenb-1;
            while (k > j) {
                ++c_ins;
                *(qc++) = '-';
                *(dc++) = seqB[k];
                *(ac++) = ' ';
                --k;
            }
        }
        else if (result->end_ref+1 == lenb) {
            k = lena-1;
            while (k > i) {
                ++c_del;
                *(qc++) = missing_char(seqA, k);
                *(dc++) = '-';
                *(ac++) = ' ';
                --k;
            }
        }
        else {
            PARASAIL_ASSERT_NORETVAL(0 && "internal error");
        }
    }
    while (i >= 0 || j >= 0) {
        LOC
        if (i < 0) {
            if (!(result->flag & PARASAIL_FLAG_SW)) {
                while (j >= 0) {
                    ++c_ins;
                    *(qc++) = '-';
                    *(dc++) = seqB[j];
                    *(ac++) = ' ';
                    --j;
                }
            }
            break;
        }
        if (j < 0) {
            if (!(result->flag & PARASAIL_FLAG_SW)) {
                while (i >= 0) {
                    ++c_del;
                    *(qc++) = missing_char(seqA, i);
                    *(dc++) = '-';
                    *(ac++) = ' ';
                    --i;
                }
            }
            break;
        }
        if (PARASAIL_DIAG == where) {
            if (HT[loc] & PARASAIL_DIAG) {
                *(qc++) = missing_char(seqA, i);
                *(dc++) = seqB[j];
                *(ac++) = match_char(seqA, i, seqB, j, matrix, match, pos, neg, case_sensitive, alphabet_aliases, aliases_size);
                --i;
                --j;
            }
            else if (HT[loc] & PARASAIL_INS) {
                where = PARASAIL_INS;
            }
            else if (HT[loc] & PARASAIL_DEL) {
                where = PARASAIL_DEL;
            }
            else {
                break;
            }
        }
        else if (PARASAIL_INS == where) {
            ++c_ins;
            *(qc++) = '-';
            *(dc++) = seqB[j];
            *(ac++) = ' ';
            --j;
            if (HT[loc] & PARASAIL_DIAG_E) {
                where = PARASAIL_DIAG;
            }
            else if (HT[loc] & PARASAIL_INS_E) {
                where = PARASAIL_INS;
            }
            else {
                PARASAIL_ASSERT_NORETVAL(0 && "internal error");
            }
        }
        else if (PARASAIL_DEL == where) {
            ++c_del;
            *(qc++) = missing_char(seqA, i);
            *(dc++) = '-';
            *(ac++) = ' ';
            --i;
            if (HT[loc] & PARASAIL_DIAG_F) {
                where = PARASAIL_DIAG;
            }
            else if (HT[loc] & PARASAIL_DEL_F) {
                where = PARASAIL_DEL;
            }
            else {
                PARASAIL_ASSERT_NORETVAL(0 && "internal error");
            }
        }
        else if (PARASAIL_ZERO == where) {
            break;
        }
        else {
            PARASAIL_ASSERT_NORETVAL(0 && "internal error");
        }
    }
    *(qc++) = '\0';
    *(dc++) = '\0';
    *(ac++) = '\0';

    if (1) {
        char *qr = NULL;
        char *ar = NULL;
        char *dr = NULL;
        int64_t mch = 0;
        int64_t sim = 0;
        int64_t gap = 0;
        int64_t len = strlen(a);
        int64_t q_pindex = 0;
        int64_t d_pindex = 0;
        int64_t qi = 0;
        int64_t ai = 0;
        int64_t di = 0;

        if (result->flag & PARASAIL_FLAG_SW) {
            q_pindex = result->end_query + 1 - len + c_ins;
            d_pindex = result->end_ref + 1 - len + c_del;
        }
        else {
            q_pindex = 0;
            d_pindex = 0;
        }
        qr = parasail_reverse(q, strlen(q));
        ar = parasail_reverse(a, strlen(a));
        dr = parasail_reverse(d, strlen(d));
        for (i=0; i<len; i+=width) {
            fprintf(stream, "\n");
            for (j=0; j<name_width; ++j) {
                if (j >= namelenB) break;
                fprintf(stream, "%c", nameB[j]);
            }
            for (; j<name_width; ++j) {
                fprintf(stream, " ");
            }
            fprintf(stream, " %*lld ", int_width, (long long)d_pindex+1);
            for (j=0; j<len&&j<width&&di<len; ++j) {
                if (dr[di] != '-') ++d_pindex;
                fprintf(stream, "%c", dr[di]);
                ++di;
            }
            fprintf(stream, " %*lld\n", int_width, (long long)d_pindex);
            for (j=0; j<name_width+1+int_width+1; ++j) {
                fprintf(stream, " ");
            }
            for (j=0; j<len&&j<width&&ai<len; ++j) {
                if (ar[ai] == match) { ++mch; ++sim; }
                else if (ar[ai] == pos) ++sim;
                else if (ar[ai] == neg) ;
                else if (ar[ai] == ' ') ++gap;
                else {
                    fprintf(stderr, "bad char in traceback '%c'\n", ar[ai]);
                    PARASAIL_ASSERT_NORETVAL(0 && "internal error");
                }
                fprintf(stream, "%c", ar[ai]);
                ++ai;
            }
            fprintf(stream, "\n");
            for (j=0; j<name_width; ++j) {
                if (j >= namelenA) break;
                fprintf(stream, "%c", nameA[j]);
            }
            for (; j<name_width; ++j) {
                fprintf(stream, " ");
            }
            fprintf(stream, " %*lld ", int_width, (long long)q_pindex+1);
            for (j=0; j<len&&j<width&&qi<len; ++j) {
                if (qr[qi] != '-') ++q_pindex;
                fprintf(stream, "%c", qr[qi]);
                ++qi;
            }
            fprintf(stream, " %*lld\n", int_width, (long long)q_pindex);
        }
        if (use_stats) {
            fprintf(stream, "\n");
            fprintf(stream, "Length: %lld\n", (long long)len);
            fprintf(stream, "Identity:   %*lld/%lld (%4.1f%%)\n", int_width, (long long)mch, (long long)len, 100.0*mch/len);
            fprintf(stream, "Similarity: %*lld/%lld (%4.1f%%)\n", int_width, (long long)sim, (long long)len, 100.0*sim/len);
            fprintf(stream, "Gaps:       %*lld/%lld (%4.1f%%)\n", int_width, (long long)gap, (long long)len, 100.0*gap/len);
            fprintf(stream, "Score: %d\n", result->score);
        }
        free(qr);
        free(ar);
        free(dr);
    }
    else {
        fprintf(stream, "%s\n", q);
        fprintf(stream, "%s\n", a);
        fprintf(stream, "%s\n", d);
    }

    free(q);
    free(d);
    free(a);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x2d0, %rsp            # imm = 0x2D0
movq 0x68(%rbp), %rax
movl 0x60(%rbp), %eax
movq 0x58(%rbp), %rax
movl 0x50(%rbp), %eax
movl 0x48(%rbp), %eax
movl 0x40(%rbp), %eax
movl 0x38(%rbp), %eax
movb 0x30(%rbp), %al
movb 0x28(%rbp), %al
movb 0x20(%rbp), %al
movq 0x18(%rbp), %rax
movq 0x10(%rbp), %rax
movq %rdi, -0x18(%rbp)
movl %esi, -0x1c(%rbp)
movq %rdx, -0x28(%rbp)
movl %ecx, -0x2c(%rbp)
movq %r8, -0x38(%rbp)
movq %r9, -0x40(%rbp)
movq $0x0, -0x148(%rbp)
movl -0x1c(%rbp), %eax
addl -0x2c(%rbp), %eax
movslq %eax, %rdi
shlq $0x0, %rdi
callq 0x2af400
movq %rax, -0x150(%rbp)
movl -0x1c(%rbp), %eax
addl -0x2c(%rbp), %eax
movslq %eax, %rdi
shlq $0x0, %rdi
callq 0x2af400
movq %rax, -0x158(%rbp)
movl -0x1c(%rbp), %eax
addl -0x2c(%rbp), %eax
movslq %eax, %rdi
shlq $0x0, %rdi
callq 0x2af400
movq %rax, -0x160(%rbp)
movq -0x150(%rbp), %rax
movq %rax, -0x168(%rbp)
movq -0x158(%rbp), %rax
movq %rax, -0x170(%rbp)
movq -0x160(%rbp), %rax
movq %rax, -0x178(%rbp)
movq 0x18(%rbp), %rax
movslq 0x4(%rax), %rax
movq %rax, -0x180(%rbp)
movq 0x18(%rbp), %rax
movslq 0x8(%rax), %rax
movq %rax, -0x188(%rbp)
movl $0x4, -0x18c(%rbp)
movq $0x0, -0x198(%rbp)
movq $0x0, -0x1a0(%rbp)
movq 0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movq %rax, -0x1a8(%rbp)
xorl %eax, %eax
cmpq -0x38(%rbp), %rax
jne 0x3aff7f
xorl %eax, %eax
movq %rax, -0x278(%rbp)
jmp 0x3aff8f
movq -0x38(%rbp), %rdi
callq 0x2af0e0
movq %rax, -0x278(%rbp)
movq -0x278(%rbp), %rax
movq %rax, -0x1b0(%rbp)
xorl %eax, %eax
cmpq -0x40(%rbp), %rax
jne 0x3affb0
xorl %eax, %eax
movq %rax, -0x280(%rbp)
jmp 0x3affc0
movq -0x40(%rbp), %rdi
callq 0x2af0e0
movq %rax, -0x280(%rbp)
movq -0x280(%rbp), %rax
movq %rax, -0x1b8(%rbp)
movl $0x0, -0x1e4(%rbp)
movq $0x0, -0x1f0(%rbp)
movq $0x0, -0x1f8(%rbp)
movq 0x18(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x1000000, %eax        # imm = 0x1000000
cmpl $0x0, %eax
je 0x3b000a
movq $0x1, -0x1f0(%rbp)
movq 0x18(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x2000000, %eax        # imm = 0x2000000
cmpl $0x0, %eax
je 0x3b0026
movq $0x2, -0x1f0(%rbp)
movq 0x18(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x4000000, %eax        # imm = 0x4000000
cmpl $0x0, %eax
je 0x3b0042
movq $0x4, -0x1f0(%rbp)
movq 0x18(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x8000000, %eax        # imm = 0x8000000
cmpl $0x0, %eax
je 0x3b005e
movq $0x8, -0x1f0(%rbp)
movq 0x18(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x10000000, %eax       # imm = 0x10000000
cmpl $0x0, %eax
je 0x3b007a
movq $0x10, -0x1f0(%rbp)
movq 0x18(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x20000000, %eax       # imm = 0x20000000
cmpl $0x0, %eax
je 0x3b0096
movq $0x20, -0x1f0(%rbp)
movq 0x18(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x40000000, %eax       # imm = 0x40000000
cmpl $0x0, %eax
je 0x3b00b2
movq $0x40, -0x1f0(%rbp)
movslq -0x1c(%rbp), %rax
addq -0x1f0(%rbp), %rax
subq $0x1, %rax
cqto
idivq -0x1f0(%rbp)
movq %rax, -0x1f8(%rbp)
xorl %eax, %eax
cmpq 0x68(%rbp), %rax
je 0x3b01b6
movq 0x68(%rbp), %rdi
callq 0x2af0e0
movq %rax, -0x148(%rbp)
movq -0x148(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
jne 0x3b010b
cmpq $0x100, -0x148(%rbp) # imm = 0x100
jb 0x3b0136
movq 0xbcaebe(%rip), %rax    # 0xf7afd0
movq (%rax), %rdi
leaq 0x9ffef0(%rip), %rsi    # 0xdb000c
leaq 0xa8626c(%rip), %rdx    # 0xe3638f
leaq 0x9fff53(%rip), %rcx    # 0xdb007d
movb $0x0, %al
callq 0x2af440
jmp 0x3b1269
jmp 0x3b0138
movq $0x0, -0x200(%rbp)
movq -0x200(%rbp), %rax
cmpq -0x148(%rbp), %rax
jae 0x3b01b4
cmpl $0x0, 0x60(%rbp)
je 0x3b0170
movq 0x68(%rbp), %rax
movq -0x200(%rbp), %rcx
movsbl (%rax,%rcx), %eax
movl %eax, -0x284(%rbp)
jmp 0x3b018a
movq 0x68(%rbp), %rax
movq -0x200(%rbp), %rcx
movsbl (%rax,%rcx), %edi
callq 0x2af570
movl %eax, -0x284(%rbp)
movl -0x284(%rbp), %eax
movb %al, %cl
movq -0x200(%rbp), %rax
movb %cl, -0x140(%rbp,%rax)
movq -0x200(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x200(%rbp)
jmp 0x3b0143
jmp 0x3b01b6
leaq -0x1e0(%rbp), %rdi
movslq -0x1c(%rbp), %rcx
movslq -0x2c(%rbp), %rax
addq %rax, %rcx
movl $0x20, %esi
leaq 0xa861d8(%rip), %rdx    # 0xe363ac
movb $0x0, %al
callq 0x2af490
movl %eax, -0x1e4(%rbp)
movl 0x50(%rbp), %eax
cmpl -0x1e4(%rbp), %eax
jge 0x3b01f5
movl -0x1e4(%rbp), %eax
movl %eax, 0x50(%rbp)
movq 0x18(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x3b0397
movq 0x18(%rbp), %rax
movl 0x4(%rax), %eax
addl $0x1, %eax
cmpl -0x1c(%rbp), %eax
jne 0x3b02b7
movl -0x2c(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x204(%rbp)
movslq -0x204(%rbp), %rax
cmpq -0x188(%rbp), %rax
jle 0x3b02b2
movq -0x198(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x198(%rbp)
movq -0x168(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x168(%rbp)
movb $0x2d, (%rax)
movq -0x28(%rbp), %rax
movslq -0x204(%rbp), %rcx
movb (%rax,%rcx), %cl
movq -0x170(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x170(%rbp)
movb %cl, (%rax)
movq -0x178(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x178(%rbp)
movb $0x20, (%rax)
movl -0x204(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x204(%rbp)
jmp 0x3b0227
jmp 0x3b0395
movq 0x18(%rbp), %rax
movl 0x8(%rax), %eax
addl $0x1, %eax
cmpl -0x2c(%rbp), %eax
jne 0x3b0366
movl -0x1c(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x204(%rbp)
movslq -0x204(%rbp), %rax
cmpq -0x180(%rbp), %rax
jle 0x3b0364
movq -0x1a0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1a0(%rbp)
movq -0x18(%rbp), %rdi
movl -0x204(%rbp), %esi
callq 0x3b6400
movb %al, %cl
movq -0x168(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x168(%rbp)
movb %cl, (%rax)
movq -0x170(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x170(%rbp)
movb $0x2d, (%rax)
movq -0x178(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x178(%rbp)
movb $0x20, (%rax)
movl -0x204(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x204(%rbp)
jmp 0x3b02d6
jmp 0x3b0393
jmp 0x3b0368
movq 0xbcac61(%rip), %rax    # 0xf7afd0
movq (%rax), %rdi
leaq 0x9ffc93(%rip), %rsi    # 0xdb000c
leaq 0xa8600f(%rip), %rdx    # 0xe3638f
leaq 0xa85f57(%rip), %rcx    # 0xe362de
movb $0x0, %al
callq 0x2af440
jmp 0x3b1269
jmp 0x3b0395
jmp 0x3b0397
jmp 0x3b0399
movb $0x1, %al
cmpq $0x0, -0x180(%rbp)
movb %al, -0x285(%rbp)
jge 0x3b03bc
cmpq $0x0, -0x188(%rbp)
setge %al
movb %al, -0x285(%rbp)
movb -0x285(%rbp), %al
testb $0x1, %al
jne 0x3b03cb
jmp 0x3b0977
movq -0x188(%rbp), %rax
imulq -0x1f8(%rbp), %rax
imulq -0x1f0(%rbp), %rax
movq %rax, -0x298(%rbp)
movq -0x180(%rbp), %rax
cqto
idivq -0x1f8(%rbp)
movq -0x298(%rbp), %rax
imulq -0x1f0(%rbp), %rdx
addq %rdx, %rax
movq %rax, -0x290(%rbp)
movq -0x180(%rbp), %rax
cqto
idivq -0x1f8(%rbp)
movq %rax, %rcx
movq -0x290(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x210(%rbp)
cmpq $0x0, -0x180(%rbp)
jge 0x3b04e8
movq 0x18(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
jne 0x3b04e3
jmp 0x3b0459
cmpq $0x0, -0x188(%rbp)
jl 0x3b04e1
movq -0x198(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x198(%rbp)
movq -0x168(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x168(%rbp)
movb $0x2d, (%rax)
movq -0x28(%rbp), %rax
movq -0x188(%rbp), %rcx
movb (%rax,%rcx), %cl
movq -0x170(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x170(%rbp)
movb %cl, (%rax)
movq -0x178(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x178(%rbp)
movb $0x20, (%rax)
movq -0x188(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x188(%rbp)
jmp 0x3b0459
jmp 0x3b04e3
jmp 0x3b0977
cmpq $0x0, -0x188(%rbp)
jge 0x3b05a4
movq 0x18(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
jne 0x3b059f
jmp 0x3b050b
cmpq $0x0, -0x180(%rbp)
jl 0x3b059d
movq -0x1a0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1a0(%rbp)
movq -0x18(%rbp), %rdi
movq -0x180(%rbp), %rax
movl %eax, %esi
callq 0x3b6400
movb %al, %cl
movq -0x168(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x168(%rbp)
movb %cl, (%rax)
movq -0x170(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x170(%rbp)
movb $0x2d, (%rax)
movq -0x178(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x178(%rbp)
movb $0x20, (%rax)
movq -0x180(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x180(%rbp)
jmp 0x3b050b
jmp 0x3b059f
jmp 0x3b0977
movl $0x4, %eax
cmpl -0x18c(%rbp), %eax
jne 0x3b071e
movq -0x1a8(%rbp), %rax
movq -0x210(%rbp), %rcx
movsbl (%rax,%rcx), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x3b06c4
movq -0x18(%rbp), %rdi
movq -0x180(%rbp), %rax
movl %eax, %esi
callq 0x3b6400
movb %al, %cl
movq -0x168(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x168(%rbp)
movb %cl, (%rax)
movq -0x28(%rbp), %rax
movq -0x188(%rbp), %rcx
movb (%rax,%rcx), %cl
movq -0x170(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x170(%rbp)
movb %cl, (%rax)
movq -0x18(%rbp), %rdi
movq -0x180(%rbp), %rax
movl %eax, %esi
movq -0x28(%rbp), %rdx
movq -0x188(%rbp), %rax
movl %eax, %ecx
movq 0x10(%rbp), %r8
movb 0x20(%rbp), %r9b
movb 0x28(%rbp), %r14b
movb 0x30(%rbp), %bl
movl 0x60(%rbp), %r11d
leaq -0x140(%rbp), %r10
movq -0x148(%rbp), %rax
movsbl %r9b, %r9d
movsbl %r14b, %r14d
movl %r14d, (%rsp)
movsbl %bl, %ebx
movl %ebx, 0x8(%rsp)
movl %r11d, 0x10(%rsp)
movq %r10, 0x18(%rsp)
movq %rax, 0x20(%rsp)
callq 0x3b6430
movb %al, %cl
movq -0x178(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x178(%rbp)
movb %cl, (%rax)
movq -0x180(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x180(%rbp)
movq -0x188(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x188(%rbp)
jmp 0x3b0719
movq -0x1a8(%rbp), %rax
movq -0x210(%rbp), %rcx
movsbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x3b06ea
movl $0x1, -0x18c(%rbp)
jmp 0x3b0717
movq -0x1a8(%rbp), %rax
movq -0x210(%rbp), %rcx
movsbl (%rax,%rcx), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x3b0710
movl $0x2, -0x18c(%rbp)
jmp 0x3b0715
jmp 0x3b0977
jmp 0x3b0717
jmp 0x3b0719
jmp 0x3b0972
movl $0x1, %eax
cmpl -0x18c(%rbp), %eax
jne 0x3b0828
movq -0x198(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x198(%rbp)
movq -0x168(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x168(%rbp)
movb $0x2d, (%rax)
movq -0x28(%rbp), %rax
movq -0x188(%rbp), %rcx
movb (%rax,%rcx), %cl
movq -0x170(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x170(%rbp)
movb %cl, (%rax)
movq -0x178(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x178(%rbp)
movb $0x20, (%rax)
movq -0x188(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x188(%rbp)
movq -0x1a8(%rbp), %rax
movq -0x210(%rbp), %rcx
movsbl (%rax,%rcx), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x3b07ce
movl $0x4, -0x18c(%rbp)
jmp 0x3b0823
movq -0x1a8(%rbp), %rax
movq -0x210(%rbp), %rcx
movsbl (%rax,%rcx), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x3b07f4
movl $0x1, -0x18c(%rbp)
jmp 0x3b0821
jmp 0x3b07f6
movq 0xbca7d3(%rip), %rax    # 0xf7afd0
movq (%rax), %rdi
leaq 0x9ff805(%rip), %rsi    # 0xdb000c
leaq 0xa85b81(%rip), %rdx    # 0xe3638f
leaq 0xa85ac9(%rip), %rcx    # 0xe362de
movb $0x0, %al
callq 0x2af440
jmp 0x3b1269
jmp 0x3b0823
jmp 0x3b0970
movl $0x2, %eax
cmpl -0x18c(%rbp), %eax
jne 0x3b0935
movq -0x1a0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1a0(%rbp)
movq -0x18(%rbp), %rdi
movq -0x180(%rbp), %rax
movl %eax, %esi
callq 0x3b6400
movb %al, %cl
movq -0x168(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x168(%rbp)
movb %cl, (%rax)
movq -0x170(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x170(%rbp)
movb $0x2d, (%rax)
movq -0x178(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x178(%rbp)
movb $0x20, (%rax)
movq -0x180(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x180(%rbp)
movq -0x1a8(%rbp), %rax
movq -0x210(%rbp), %rcx
movsbl (%rax,%rcx), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0x3b08de
movl $0x4, -0x18c(%rbp)
jmp 0x3b0933
movq -0x1a8(%rbp), %rax
movq -0x210(%rbp), %rcx
movsbl (%rax,%rcx), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x3b0904
movl $0x2, -0x18c(%rbp)
jmp 0x3b0931
jmp 0x3b0906
movq 0xbca6c3(%rip), %rax    # 0xf7afd0
movq (%rax), %rdi
leaq 0x9ff6f5(%rip), %rsi    # 0xdb000c
leaq 0xa85a71(%rip), %rdx    # 0xe3638f
leaq 0xa859b9(%rip), %rcx    # 0xe362de
movb $0x0, %al
callq 0x2af440
jmp 0x3b1269
jmp 0x3b0933
jmp 0x3b096e
xorl %eax, %eax
cmpl -0x18c(%rbp), %eax
jne 0x3b0941
jmp 0x3b0977
jmp 0x3b0943
movq 0xbca686(%rip), %rax    # 0xf7afd0
movq (%rax), %rdi
leaq 0x9ff6b8(%rip), %rsi    # 0xdb000c
leaq 0xa85a34(%rip), %rdx    # 0xe3638f
leaq 0xa8597c(%rip), %rcx    # 0xe362de
movb $0x0, %al
callq 0x2af440
jmp 0x3b1269
jmp 0x3b0970
jmp 0x3b0972
jmp 0x3b0399
movq -0x168(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x168(%rbp)
movb $0x0, (%rax)
movq -0x170(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x170(%rbp)
movb $0x0, (%rax)
movq -0x178(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x178(%rbp)
movb $0x0, (%rax)
movq $0x0, -0x218(%rbp)
movq $0x0, -0x220(%rbp)
movq $0x0, -0x228(%rbp)
movq $0x0, -0x230(%rbp)
movq $0x0, -0x238(%rbp)
movq $0x0, -0x240(%rbp)
movq -0x160(%rbp), %rdi
callq 0x2af0e0
movq %rax, -0x248(%rbp)
movq $0x0, -0x250(%rbp)
movq $0x0, -0x258(%rbp)
movq $0x0, -0x260(%rbp)
movq $0x0, -0x268(%rbp)
movq $0x0, -0x270(%rbp)
movq 0x18(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x3b0a9e
movq 0x18(%rbp), %rax
movl 0x4(%rax), %eax
addl $0x1, %eax
cltq
subq -0x248(%rbp), %rax
addq -0x198(%rbp), %rax
movq %rax, -0x250(%rbp)
movq 0x18(%rbp), %rax
movl 0x8(%rax), %eax
addl $0x1, %eax
cltq
subq -0x248(%rbp), %rax
addq -0x1a0(%rbp), %rax
movq %rax, -0x258(%rbp)
jmp 0x3b0ab4
movq $0x0, -0x250(%rbp)
movq $0x0, -0x258(%rbp)
movq -0x150(%rbp), %rax
movq %rax, -0x2b0(%rbp)
movq -0x150(%rbp), %rdi
callq 0x2af0e0
movq -0x2b0(%rbp), %rdi
movq %rax, %rsi
callq 0x2da790
movq %rax, -0x218(%rbp)
movq -0x160(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movq -0x160(%rbp), %rdi
callq 0x2af0e0
movq -0x2a8(%rbp), %rdi
movq %rax, %rsi
callq 0x2da790
movq %rax, -0x220(%rbp)
movq -0x158(%rbp), %rax
movq %rax, -0x2a0(%rbp)
movq -0x158(%rbp), %rdi
callq 0x2af0e0
movq -0x2a0(%rbp), %rdi
movq %rax, %rsi
callq 0x2da790
movq %rax, -0x228(%rbp)
movq $0x0, -0x180(%rbp)
movq -0x180(%rbp), %rax
cmpq -0x248(%rbp), %rax
jge 0x3b1105
movq 0x58(%rbp), %rdi
leaq 0x9fe65c(%rip), %rsi    # 0xdaf1ca
movb $0x0, %al
callq 0x2af440
movq $0x0, -0x188(%rbp)
movq -0x188(%rbp), %rax
movslq 0x40(%rbp), %rcx
cmpq %rcx, %rax
jge 0x3b0bd7
movq -0x188(%rbp), %rax
cmpq -0x1b8(%rbp), %rax
jl 0x3b0ba2
jmp 0x3b0bd7
movq 0x58(%rbp), %rdi
movq -0x40(%rbp), %rax
movq -0x188(%rbp), %rcx
movsbl (%rax,%rcx), %edx
leaq 0x9ff43e(%rip), %rsi    # 0xdafffa
movb $0x0, %al
callq 0x2af440
movq -0x188(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x188(%rbp)
jmp 0x3b0b80
jmp 0x3b0bd9
movq -0x188(%rbp), %rax
movslq 0x40(%rbp), %rcx
cmpq %rcx, %rax
jge 0x3b0c0f
movq 0x58(%rbp), %rdi
leaq 0x9fdbb6(%rip), %rsi    # 0xdae7aa
movb $0x0, %al
callq 0x2af440
movq -0x188(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x188(%rbp)
jmp 0x3b0bd9
movq 0x58(%rbp), %rdi
movl 0x50(%rbp), %edx
movq -0x258(%rbp), %rcx
addq $0x1, %rcx
leaq 0xa85789(%rip), %rsi    # 0xe363b1
movb $0x0, %al
callq 0x2af440
movq $0x0, -0x188(%rbp)
movq -0x188(%rbp), %rcx
xorl %eax, %eax
cmpq -0x248(%rbp), %rcx
movb %al, -0x2b1(%rbp)
jge 0x3b0c81
movq -0x188(%rbp), %rcx
movslq 0x38(%rbp), %rdx
xorl %eax, %eax
cmpq %rdx, %rcx
movb %al, -0x2b1(%rbp)
jge 0x3b0c81
movq -0x270(%rbp), %rax
cmpq -0x248(%rbp), %rax
setl %al
movb %al, -0x2b1(%rbp)
movb -0x2b1(%rbp), %al
testb $0x1, %al
jne 0x3b0c8d
jmp 0x3b0d03
movq -0x228(%rbp), %rax
movq -0x270(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x2d, %eax
je 0x3b0cb6
movq -0x258(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x258(%rbp)
movq 0x58(%rbp), %rdi
movq -0x228(%rbp), %rax
movq -0x270(%rbp), %rcx
movsbl (%rax,%rcx), %edx
leaq 0x9ff327(%rip), %rsi    # 0xdafffa
movb $0x0, %al
callq 0x2af440
movq -0x270(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x270(%rbp)
movq -0x188(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x188(%rbp)
jmp 0x3b0c3a
movq 0x58(%rbp), %rdi
movl 0x50(%rbp), %edx
movq -0x258(%rbp), %rcx
leaq 0xa856a1(%rip), %rsi    # 0xe363b9
movb $0x0, %al
callq 0x2af440
movq $0x0, -0x188(%rbp)
movq -0x188(%rbp), %rax
movl 0x40(%rbp), %ecx
addl $0x1, %ecx
addl 0x50(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
cmpq %rcx, %rax
jge 0x3b0d6b
movq 0x58(%rbp), %rdi
leaq 0x9fda5a(%rip), %rsi    # 0xdae7aa
movb $0x0, %al
callq 0x2af440
movq -0x188(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x188(%rbp)
jmp 0x3b0d2a
movq $0x0, -0x188(%rbp)
movq -0x188(%rbp), %rcx
xorl %eax, %eax
cmpq -0x248(%rbp), %rcx
movb %al, -0x2b2(%rbp)
jge 0x3b0dbd
movq -0x188(%rbp), %rcx
movslq 0x38(%rbp), %rdx
xorl %eax, %eax
cmpq %rdx, %rcx
movb %al, -0x2b2(%rbp)
jge 0x3b0dbd
movq -0x268(%rbp), %rax
cmpq -0x248(%rbp), %rax
setl %al
movb %al, -0x2b2(%rbp)
movb -0x2b2(%rbp), %al
testb $0x1, %al
jne 0x3b0dcc
jmp 0x3b0f32
movq -0x220(%rbp), %rax
movq -0x268(%rbp), %rcx
movsbl (%rax,%rcx), %eax
movsbl 0x20(%rbp), %ecx
cmpl %ecx, %eax
jne 0x3b0e0f
movq -0x230(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x230(%rbp)
movq -0x238(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x238(%rbp)
jmp 0x3b0ee5
movq -0x220(%rbp), %rax
movq -0x268(%rbp), %rcx
movsbl (%rax,%rcx), %eax
movsbl 0x28(%rbp), %ecx
cmpl %ecx, %eax
jne 0x3b0e40
movq -0x238(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x238(%rbp)
jmp 0x3b0ee3
movq -0x220(%rbp), %rax
movq -0x268(%rbp), %rcx
movsbl (%rax,%rcx), %eax
movsbl 0x30(%rbp), %ecx
cmpl %ecx, %eax
jne 0x3b0e5f
jmp 0x3b0ee1
movq -0x220(%rbp), %rax
movq -0x268(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x20, %eax
jne 0x3b0e8a
movq -0x240(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x240(%rbp)
jmp 0x3b0edf
movq 0xbca13f(%rip), %rax    # 0xf7afd0
movq (%rax), %rdi
movq -0x220(%rbp), %rax
movq -0x268(%rbp), %rcx
movsbl (%rax,%rcx), %edx
leaq 0xa85514(%rip), %rsi    # 0xe363c1
movb $0x0, %al
callq 0x2af440
movq 0xbca115(%rip), %rax    # 0xf7afd0
movq (%rax), %rdi
leaq 0x9ff147(%rip), %rsi    # 0xdb000c
leaq 0xa854c3(%rip), %rdx    # 0xe3638f
leaq 0xa8540b(%rip), %rcx    # 0xe362de
movb $0x0, %al
callq 0x2af440
jmp 0x3b1269
jmp 0x3b0ee1
jmp 0x3b0ee3
jmp 0x3b0ee5
movq 0x58(%rbp), %rdi
movq -0x220(%rbp), %rax
movq -0x268(%rbp), %rcx
movsbl (%rax,%rcx), %edx
leaq 0x9ff0f8(%rip), %rsi    # 0xdafffa
movb $0x0, %al
callq 0x2af440
movq -0x268(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x268(%rbp)
movq -0x188(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x188(%rbp)
jmp 0x3b0d76
movq 0x58(%rbp), %rdi
leaq 0x9fe28d(%rip), %rsi    # 0xdaf1ca
movb $0x0, %al
callq 0x2af440
movq $0x0, -0x188(%rbp)
movq -0x188(%rbp), %rax
movslq 0x40(%rbp), %rcx
cmpq %rcx, %rax
jge 0x3b0fa6
movq -0x188(%rbp), %rax
cmpq -0x1b0(%rbp), %rax
jl 0x3b0f71
jmp 0x3b0fa6
movq 0x58(%rbp), %rdi
movq -0x38(%rbp), %rax
movq -0x188(%rbp), %rcx
movsbl (%rax,%rcx), %edx
leaq 0x9ff06f(%rip), %rsi    # 0xdafffa
movb $0x0, %al
callq 0x2af440
movq -0x188(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x188(%rbp)
jmp 0x3b0f4f
jmp 0x3b0fa8
movq -0x188(%rbp), %rax
movslq 0x40(%rbp), %rcx
cmpq %rcx, %rax
jge 0x3b0fde
movq 0x58(%rbp), %rdi
leaq 0x9fd7e7(%rip), %rsi    # 0xdae7aa
movb $0x0, %al
callq 0x2af440
movq -0x188(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x188(%rbp)
jmp 0x3b0fa8
movq 0x58(%rbp), %rdi
movl 0x50(%rbp), %edx
movq -0x250(%rbp), %rcx
addq $0x1, %rcx
leaq 0xa853ba(%rip), %rsi    # 0xe363b1
movb $0x0, %al
callq 0x2af440
movq $0x0, -0x188(%rbp)
movq -0x188(%rbp), %rcx
xorl %eax, %eax
cmpq -0x248(%rbp), %rcx
movb %al, -0x2b3(%rbp)
jge 0x3b1050
movq -0x188(%rbp), %rcx
movslq 0x38(%rbp), %rdx
xorl %eax, %eax
cmpq %rdx, %rcx
movb %al, -0x2b3(%rbp)
jge 0x3b1050
movq -0x260(%rbp), %rax
cmpq -0x248(%rbp), %rax
setl %al
movb %al, -0x2b3(%rbp)
movb -0x2b3(%rbp), %al
testb $0x1, %al
jne 0x3b105c
jmp 0x3b10d2
movq -0x218(%rbp), %rax
movq -0x260(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x2d, %eax
je 0x3b1085
movq -0x250(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x250(%rbp)
movq 0x58(%rbp), %rdi
movq -0x218(%rbp), %rax
movq -0x260(%rbp), %rcx
movsbl (%rax,%rcx), %edx
leaq 0x9fef58(%rip), %rsi    # 0xdafffa
movb $0x0, %al
callq 0x2af440
movq -0x260(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x260(%rbp)
movq -0x188(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x188(%rbp)
jmp 0x3b1009
movq 0x58(%rbp), %rdi
movl 0x50(%rbp), %edx
movq -0x250(%rbp), %rcx
leaq 0xa852d2(%rip), %rsi    # 0xe363b9
movb $0x0, %al
callq 0x2af440
movslq 0x38(%rbp), %rax
addq -0x180(%rbp), %rax
movq %rax, -0x180(%rbp)
jmp 0x3b0b4f
cmpl $0x0, 0x48(%rbp)
je 0x3b1221
movq 0x58(%rbp), %rdi
leaq 0x9fe0b0(%rip), %rsi    # 0xdaf1ca
movb $0x0, %al
callq 0x2af440
movq 0x58(%rbp), %rdi
movq -0x248(%rbp), %rdx
leaq 0xa852aa(%rip), %rsi    # 0xe363dd
movb $0x0, %al
callq 0x2af440
movq 0x58(%rbp), %rdi
movl 0x50(%rbp), %edx
movq -0x230(%rbp), %rcx
movq -0x248(%rbp), %r8
cvtsi2sdq -0x230(%rbp), %xmm1
movsd 0xa85108(%rip), %xmm0   # 0xe36268
mulsd %xmm1, %xmm0
cvtsi2sdq -0x248(%rbp), %xmm1
divsd %xmm1, %xmm0
leaq 0xa85273(%rip), %rsi    # 0xe363eb
movb $0x1, %al
callq 0x2af440
movq 0x58(%rbp), %rdi
movl 0x50(%rbp), %edx
movq -0x238(%rbp), %rcx
movq -0x248(%rbp), %r8
cvtsi2sdq -0x238(%rbp), %xmm1
movsd 0xa850c3(%rip), %xmm0   # 0xe36268
mulsd %xmm1, %xmm0
cvtsi2sdq -0x248(%rbp), %xmm1
divsd %xmm1, %xmm0
leaq 0xa85250(%rip), %rsi    # 0xe3640d
movb $0x1, %al
callq 0x2af440
movq 0x58(%rbp), %rdi
movl 0x50(%rbp), %edx
movq -0x240(%rbp), %rcx
movq -0x248(%rbp), %r8
cvtsi2sdq -0x240(%rbp), %xmm1
movsd 0xa8507e(%rip), %xmm0   # 0xe36268
mulsd %xmm1, %xmm0
cvtsi2sdq -0x248(%rbp), %xmm1
divsd %xmm1, %xmm0
leaq 0xa8522d(%rip), %rsi    # 0xe3642f
movb $0x1, %al
callq 0x2af440
movq 0x58(%rbp), %rdi
movq 0x18(%rbp), %rax
movl (%rax), %edx
leaq 0xa85237(%rip), %rsi    # 0xe36451
movb $0x0, %al
callq 0x2af440
movq -0x218(%rbp), %rdi
callq 0x2af3a0
movq -0x220(%rbp), %rdi
callq 0x2af3a0
movq -0x228(%rbp), %rdi
callq 0x2af3a0
movq -0x150(%rbp), %rdi
callq 0x2af3a0
movq -0x158(%rbp), %rdi
callq 0x2af3a0
movq -0x160(%rbp), %rdi
callq 0x2af3a0
addq $0x2d0, %rsp            # imm = 0x2D0
popq %rbx
popq %r14
popq %rbp
retq
nopw %cs:(%rax,%rax)