// File: /workspace/github_c_makefile_star2_O0/c-zhou[P]oatk/syncasm.c
// Function: make_ma_block
static void make_ma_block(scg_t *g, sr_t *sr, scg_ra_t *ra, uint32_t n, ma_t *ma)
{
    uint32_t i, j, n_scm, n_frg;
    uint64_t uid, *scm, *u_scm, *lcs_b, s_beg, u_n, s_n;
    double score, intpart;
    int max_d, n_b;
    ra_frg_t *frg;

    // collect syncmers on read
    n_scm = sr->n;
    scm = sr->k_mer;

    score = modf(ra[0].s, &intpart);
    if (score < FLT_EPSILON) score = 1.0;
    max_d = n_scm - lround(ra[0].s - score);
    
    // find LCS blocks for each alignment record
    lcs_block_t lcs_blocks[n];
    for (i = 0; i < n; ++i) {
        n_frg = ra[i].n;
        kv_init(lcs_blocks[i]);

        for (j = 0; j < n_frg; ++j) {
            frg = &ra[i].a[j];
            uid = frg->uid >> 1;
            u_n = frg->u_end - frg->u_beg + 1;
            s_n = frg->s_end - frg->s_beg + 1;
            if (frg->uid & 1) {
                // mapped to reverse strand
                MYMALLOC(u_scm, u_n);
                memcpy(u_scm, &g->utg_asmg->vtx[uid].a[frg->u_beg], sizeof(uint64_t) * u_n);
                array_reverse(u_scm, u_n);
            } else {
                u_scm = &g->utg_asmg->vtx[uid].a[frg->u_beg];
            }
            // find LCS
            lcs_b = find_lcs(&scm[frg->s_beg], s_n, u_scm, u_n, frg->s_beg, max_d, &n_b);
            // add LCS blocks
            kv_pushn(uint64_t, lcs_blocks[i], lcs_b, n_b);
            free(lcs_b);
            if (frg->uid & 1) free(u_scm);
        }
        // merge blocks
        // lcs_block_merge(&lcs_blocks[i]);
    }

    // make multiple alignment
    uint64_t uids[n], frgs[n], lcsb[n], begs[n], lens[n];
    int m_ext, ext;
    kvec_t(uint32_t) n_match;
    kvec_t(uint64_t) u_match;
    kv_init(n_match);
    kv_init(u_match);
    MYBZERO(lcsb, n);
    MYBZERO(frgs, n);

    for (i = 0; i < n; ++i) {
        if (lcs_blocks[i].n == 0)
            goto ma_done;
        shift_lcs_block(i);
    }

    while (1) {
        // find left alignment position
        s_beg = 0;
        for (i = 0; i < n; ++i)
            s_beg = MAX(s_beg, begs[i]);
        // find max extension
        m_ext = INT32_MAX;
        for (i = 0; i < n; ++i) {
            ext = (int) lens[i] - s_beg + begs[i];
            m_ext = MIN(m_ext, ext);
        }
        if (m_ext > 0) {
            // add ma block
            kv_push(uint32_t, n_match, m_ext);
            for (i = 0; i < n; ++i)
                kv_push(uint64_t, u_match, uids[i]);
            // shift LCS blocks
            for (i = 0; i < n; ++i) {
                ext = (int) lens[i] - s_beg + begs[i];
                if (ext == m_ext) {
                    // shift the block
                    ++lcsb[i];
                    if (lcsb[i] == lcs_blocks[i].n)
                        goto ma_done;
                    shift_lcs_block(i);
                } else {
                    begs[i] = s_beg + m_ext;
                    lens[i] = ext - m_ext;
                }
            }
        } else {
            // shift the block with smallest begs
            for (i = 0, j = 1; j < n; ++j)
                if (begs[j] < begs[i])
                    i = j;
            ++lcsb[i];
            if (lcsb[i] == lcs_blocks[i].n)
                goto ma_done;
            shift_lcs_block(i);
        }
    }

ma_done:
    for (i = 0; i < n; ++i)
        kv_destroy(lcs_blocks[i]);

    ma->a = n;
    ma->b = n_match.n;
    ma->n = n_match.a;
    ma->u = u_match.a;

#ifdef DEBUG_LCS_MALIGN
    fprintf(stderr, "[DEBUG_LCS_MALIGN::%s] MA BLOCKs of read %lu - %s\n", __func__, sr->sid, sr->sname);
    for (i = 0; i < ma->a; ++i) {
        fprintf(stderr, "[DEBUG_LCS_MALIGN::%s] MA_RECORD %u -", __func__, i);
        for (j = 0; j < ma->b; ++j)
            fprintf(stderr, " BLOCK %u: %lu %u;", j, ma->u[j * (ma->a) + i], ma->n[j]);
        fputc('\n', stderr);
    }
#endif
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x180, %rsp            # imm = 0x180
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq %r8, -0x28(%rbp)
movq -0x10(%rbp), %rax
movl 0x38(%rax), %eax
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rax
movsd 0x18(%rax), %xmm0
leaq -0x80(%rbp), %rdi
callq 0x21b0
movsd %xmm0, -0x78(%rbp)
movsd 0x21ac5(%rip), %xmm0    # 0x2d7b8
ucomisd -0x78(%rbp), %xmm0
jbe 0xbd07
movsd 0x21a86(%rip), %xmm0    # 0x2d788
movsd %xmm0, -0x78(%rbp)
movl -0x34(%rbp), %eax
movl %eax, -0x124(%rbp)
movq -0x18(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd -0x78(%rbp), %xmm1
subsd %xmm1, %xmm0
callq 0x2110
movq %rax, %rcx
movl -0x124(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x84(%rbp)
movl -0x1c(%rbp), %eax
movq %rsp, %rcx
movq %rcx, -0x98(%rbp)
leaq (%rax,%rax,2), %rcx
leaq 0xf(,%rcx,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x120(%rbp)
movq %rcx, %rsp
movq %rax, -0xa0(%rbp)
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jae 0xc295
movq -0x120(%rbp), %rax
movq -0x18(%rbp), %rcx
movl -0x2c(%rbp), %edx
shlq $0x5, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
movl %ecx, -0x38(%rbp)
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq $0x0, 0x8(%rcx)
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq $0x0, (%rcx)
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq $0x0, 0x10(%rax)
movl $0x0, -0x30(%rbp)
movl -0x30(%rbp), %eax
cmpl -0x38(%rbp), %eax
jae 0xc285
movq -0x18(%rbp), %rax
movl -0x2c(%rbp), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movl -0x30(%rbp), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
movq (%rax), %rax
shrq %rax
movq %rax, -0x40(%rbp)
movq -0x90(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x90(%rbp), %rcx
subq 0x8(%rcx), %rax
addq $0x1, %rax
movq %rax, -0x68(%rbp)
movq -0x90(%rbp), %rax
movl 0x1c(%rax), %eax
movq -0x90(%rbp), %rcx
subl 0x18(%rcx), %eax
addl $0x1, %eax
movl %eax, %eax
movq %rax, -0x70(%rbp)
movq -0x90(%rbp), %rax
movq (%rax), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0xbf68
movq -0x68(%rbp), %rdi
shlq $0x3, %rdi
callq 0x2320
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
imulq $0x28, -0x40(%rbp), %rcx
addq %rcx, %rax
movq 0x8(%rax), %rsi
movq -0x90(%rbp), %rax
movq 0x8(%rax), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x68(%rbp), %rdx
shlq $0x3, %rdx
callq 0x22c0
cmpq $0x0, -0x68(%rbp)
jbe 0xbf62
movq $0x0, -0xa8(%rbp)
movq -0x68(%rbp), %rax
subq $0x1, %rax
movq %rax, -0xb0(%rbp)
movq -0xa8(%rbp), %rax
cmpq -0xb0(%rbp), %rax
jae 0xbf60
movq -0x50(%rbp), %rax
movq -0xa8(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xb8(%rbp)
movq -0x50(%rbp), %rax
movq -0xb0(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
movq -0x50(%rbp), %rax
movq -0xa8(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0xb8(%rbp), %rdx
movq -0x50(%rbp), %rax
movq -0xb0(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0xa8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xa8(%rbp)
movq -0xb0(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0xb0(%rbp)
jmp 0xbee0
jmp 0xbf62
jmp 0xbf64
jmp 0xbf66
jmp 0xbf96
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
imulq $0x28, -0x40(%rbp), %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq -0x90(%rbp), %rcx
movq 0x8(%rcx), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rdi
movq -0x90(%rbp), %rax
movl 0x18(%rax), %eax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x70(%rbp), %rax
movl %eax, %esi
movq -0x50(%rbp), %rdx
movq -0x68(%rbp), %rax
movl %eax, %ecx
movq -0x90(%rbp), %rax
movl 0x18(%rax), %r8d
movl -0x84(%rbp), %r9d
leaq -0x88(%rbp), %rax
subq $0x10, %rsp
movq %rax, (%rsp)
callq 0x10970
addq $0x10, %rsp
movq %rax, -0x58(%rbp)
movq -0x120(%rbp), %rcx
movl -0x2c(%rbp), %eax
imulq $0x18, %rax, %rdx
movq %rcx, %rax
addq %rdx, %rax
movq (%rax), %rax
movslq -0x88(%rbp), %rdx
addq %rdx, %rax
movl -0x2c(%rbp), %edx
imulq $0x18, %rdx, %rdx
addq %rdx, %rcx
cmpq 0x8(%rcx), %rax
jbe 0xc1ef
movq -0x120(%rbp), %rax
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq (%rcx), %rdx
movslq -0x88(%rbp), %rcx
addq %rcx, %rdx
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rsi
movq %rax, %rcx
addq %rsi, %rcx
movq %rdx, 0x8(%rcx)
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
cmpq $0x0, 0x8(%rax)
je 0xc07f
movq -0x120(%rbp), %rax
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq %rax, -0x130(%rbp)
jmp 0xc08d
movl $0x1, %eax
movq %rax, -0x130(%rbp)
jmp 0xc08d
movq -0x120(%rbp), %rax
movq -0x130(%rbp), %rdx
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rsi
movq %rax, %rcx
addq %rsi, %rcx
movq %rdx, 0x8(%rcx)
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq 0x8(%rcx), %rdx
addq $-0x1, %rdx
movq %rdx, 0x8(%rcx)
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq 0x8(%rcx), %rdx
shrq %rdx
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rsi
movq %rax, %rcx
addq %rsi, %rcx
orq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rcx)
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq 0x8(%rcx), %rdx
shrq $0x2, %rdx
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rsi
movq %rax, %rcx
addq %rsi, %rcx
orq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rcx)
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq 0x8(%rcx), %rdx
shrq $0x4, %rdx
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rsi
movq %rax, %rcx
addq %rsi, %rcx
orq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rcx)
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq 0x8(%rcx), %rdx
shrq $0x8, %rdx
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rsi
movq %rax, %rcx
addq %rsi, %rcx
orq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rcx)
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq 0x8(%rcx), %rdx
shrq $0x10, %rdx
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rsi
movq %rax, %rcx
addq %rsi, %rcx
orq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rcx)
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq 0x8(%rcx), %rdx
addq $0x1, %rdx
movq %rdx, 0x8(%rcx)
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq 0x10(%rcx), %rdi
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x120(%rbp), %rax
movl -0x2c(%rbp), %edx
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
movq %rcx, 0x10(%rax)
movq -0x120(%rbp), %rax
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq 0x10(%rcx), %rdi
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x58(%rbp), %rsi
movslq -0x88(%rbp), %rdx
shlq $0x3, %rdx
callq 0x22c0
movq -0x120(%rbp), %rax
movslq -0x88(%rbp), %rcx
movl -0x2c(%rbp), %edx
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
addq (%rax), %rcx
movq %rcx, (%rax)
jmp 0xc24f
movq -0x58(%rbp), %rdi
callq 0x2060
movq -0x90(%rbp), %rax
movq (%rax), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0xc275
movq -0x50(%rbp), %rdi
callq 0x2060
jmp 0xc277
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0xbddc
jmp 0xc287
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0xbd73
movl -0x1c(%rbp), %eax
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x158(%rbp)
movq %rcx, %rsp
movq %rax, -0xc0(%rbp)
movl -0x1c(%rbp), %eax
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x138(%rbp)
movq %rcx, %rsp
movq %rax, -0xc8(%rbp)
movl -0x1c(%rbp), %eax
leaq 0xf(,%rax,8), %rcx
andq $-0x10, %rcx
movq %rsp, %rdi
subq %rcx, %rdi
movq %rdi, -0x150(%rbp)
movq %rdi, %rsp
movq %rax, -0xd0(%rbp)
movl -0x1c(%rbp), %eax
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x148(%rbp)
movq %rcx, %rsp
movq %rax, -0xd8(%rbp)
movl -0x1c(%rbp), %eax
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x140(%rbp)
movq %rcx, %rsp
movq %rax, -0xe0(%rbp)
movq $0x0, -0xf8(%rbp)
movq $0x0, -0x100(%rbp)
movq $0x0, -0xf0(%rbp)
movq $0x0, -0x110(%rbp)
movq $0x0, -0x118(%rbp)
movq $0x0, -0x108(%rbp)
movl -0x1c(%rbp), %eax
movl %eax, %edx
shlq $0x3, %rdx
xorl %esi, %esi
callq 0x21f0
movq -0x138(%rbp), %rdi
movl -0x1c(%rbp), %eax
movl %eax, %edx
shlq $0x3, %rdx
xorl %esi, %esi
callq 0x21f0
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jae 0xc4f4
movq -0x120(%rbp), %rax
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
cmpq $0x0, (%rax)
jne 0xc3eb
jmp 0xca7a
jmp 0xc3ed
movq -0x140(%rbp), %rax
movq -0x150(%rbp), %rdx
movq -0x120(%rbp), %rcx
movq -0x148(%rbp), %rsi
movl -0x2c(%rbp), %edi
imulq $0x18, %rdi, %r8
movq %rcx, %rdi
addq %r8, %rdi
movq 0x10(%rdi), %rdi
movl -0x2c(%rbp), %r8d
movq (%rdx,%r8,8), %r8
movq (%rdi,%r8,8), %r8
shrq $0x20, %r8
movl -0x2c(%rbp), %edi
movq %r8, (%rsi,%rdi,8)
movl -0x2c(%rbp), %esi
imulq $0x18, %rsi, %rsi
addq %rsi, %rcx
movq 0x10(%rcx), %rcx
movl -0x2c(%rbp), %esi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movl %ecx, %ecx
movl %ecx, %edx
movl -0x2c(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
movq -0x148(%rbp), %rcx
movq -0x138(%rbp), %rdx
movq -0x18(%rbp), %rax
movl -0x2c(%rbp), %esi
shlq $0x5, %rsi
addq %rsi, %rax
movq 0x10(%rax), %rax
movl -0x2c(%rbp), %esi
movq (%rdx,%rsi,8), %rdx
shlq $0x5, %rdx
addq %rdx, %rax
movl 0x1c(%rax), %eax
movl -0x2c(%rbp), %edx
cmpq (%rcx,%rdx,8), %rax
jae 0xc4a7
movq -0x138(%rbp), %rax
movl -0x2c(%rbp), %ecx
movq (%rax,%rcx,8), %rdx
addq $0x1, %rdx
movq %rdx, (%rax,%rcx,8)
jmp 0xc455
movq -0x158(%rbp), %rax
movq -0x138(%rbp), %rdx
movq -0x18(%rbp), %rcx
movl -0x2c(%rbp), %esi
shlq $0x5, %rsi
addq %rsi, %rcx
movq 0x10(%rcx), %rcx
movl -0x2c(%rbp), %esi
movq (%rdx,%rsi,8), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movq (%rcx), %rdx
shrq %rdx
movl -0x2c(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
jmp 0xc4e4
jmp 0xc4e6
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0xc3c3
jmp 0xc4f6
jmp 0xc4f8
movq $0x0, -0x60(%rbp)
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jae 0xc55b
movq -0x148(%rbp), %rcx
movq -0x60(%rbp), %rax
movl -0x2c(%rbp), %edx
cmpq (%rcx,%rdx,8), %rax
jbe 0xc530
movq -0x60(%rbp), %rax
movq %rax, -0x160(%rbp)
jmp 0xc545
movq -0x148(%rbp), %rax
movl -0x2c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movq %rax, -0x160(%rbp)
movq -0x160(%rbp), %rax
movq %rax, -0x60(%rbp)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0xc507
movl $0x7fffffff, -0xe4(%rbp) # imm = 0x7FFFFFFF
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jae 0xc5db
movq -0x148(%rbp), %rcx
movq -0x140(%rbp), %rax
movl -0x2c(%rbp), %edx
movq (%rax,%rdx,8), %rax
cltq
subq -0x60(%rbp), %rax
movl -0x2c(%rbp), %edx
addq (%rcx,%rdx,8), %rax
movl %eax, -0xe8(%rbp)
movl -0xe4(%rbp), %eax
cmpl -0xe8(%rbp), %eax
jge 0xc5b8
movl -0xe4(%rbp), %eax
movl %eax, -0x164(%rbp)
jmp 0xc5c4
movl -0xe8(%rbp), %eax
movl %eax, -0x164(%rbp)
movl -0x164(%rbp), %eax
movl %eax, -0xe4(%rbp)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0xc56c
cmpl $0x0, -0xe4(%rbp)
jle 0xc902
jmp 0xc5ea
movq -0x100(%rbp), %rax
cmpq -0xf8(%rbp), %rax
jne 0xc651
cmpq $0x0, -0xf8(%rbp)
je 0xc617
movq -0xf8(%rbp), %rax
shlq %rax
movq %rax, -0x170(%rbp)
jmp 0xc625
movl $0x2, %eax
movq %rax, -0x170(%rbp)
jmp 0xc625
movq -0x170(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0xf0(%rbp), %rdi
movq -0xf8(%rbp), %rsi
shlq $0x2, %rsi
callq 0x2360
movq %rax, -0xf0(%rbp)
movl -0xe4(%rbp), %edx
movq -0xf0(%rbp), %rax
movq -0x100(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x100(%rbp)
movl %edx, (%rax,%rcx,4)
jmp 0xc678
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jae 0xc734
jmp 0xc68d
movq -0x118(%rbp), %rax
cmpq -0x110(%rbp), %rax
jne 0xc6f4
cmpq $0x0, -0x110(%rbp)
je 0xc6ba
movq -0x110(%rbp), %rax
shlq %rax
movq %rax, -0x178(%rbp)
jmp 0xc6c8
movl $0x2, %eax
movq %rax, -0x178(%rbp)
jmp 0xc6c8
movq -0x178(%rbp), %rax
movq %rax, -0x110(%rbp)
movq -0x108(%rbp), %rdi
movq -0x110(%rbp), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, -0x108(%rbp)
movq -0x158(%rbp), %rax
movl -0x2c(%rbp), %ecx
movq (%rax,%rcx,8), %rdx
movq -0x108(%rbp), %rax
movq -0x118(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x118(%rbp)
movq %rdx, (%rax,%rcx,8)
jmp 0xc724
jmp 0xc726
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0xc67f
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jae 0xc8fd
movq -0x148(%rbp), %rcx
movq -0x140(%rbp), %rax
movl -0x2c(%rbp), %edx
movq (%rax,%rdx,8), %rax
cltq
subq -0x60(%rbp), %rax
movl -0x2c(%rbp), %edx
addq (%rcx,%rdx,8), %rax
movl %eax, -0xe8(%rbp)
movl -0xe8(%rbp), %eax
cmpl -0xe4(%rbp), %eax
jne 0xc8b4
movq -0x120(%rbp), %rcx
movq -0x150(%rbp), %rax
movl -0x2c(%rbp), %edx
movq (%rax,%rdx,8), %rsi
addq $0x1, %rsi
movq %rsi, (%rax,%rdx,8)
movl -0x2c(%rbp), %edx
movq (%rax,%rdx,8), %rax
movl -0x2c(%rbp), %edx
imulq $0x18, %rdx, %rdx
addq %rdx, %rcx
cmpq (%rcx), %rax
jne 0xc7b9
jmp 0xca7a
jmp 0xc7bb
movq -0x140(%rbp), %rax
movq -0x150(%rbp), %rdx
movq -0x120(%rbp), %rcx
movq -0x148(%rbp), %rsi
movl -0x2c(%rbp), %edi
imulq $0x18, %rdi, %r8
movq %rcx, %rdi
addq %r8, %rdi
movq 0x10(%rdi), %rdi
movl -0x2c(%rbp), %r8d
movq (%rdx,%r8,8), %r8
movq (%rdi,%r8,8), %r8
shrq $0x20, %r8
movl -0x2c(%rbp), %edi
movq %r8, (%rsi,%rdi,8)
movl -0x2c(%rbp), %esi
imulq $0x18, %rsi, %rsi
addq %rsi, %rcx
movq 0x10(%rcx), %rcx
movl -0x2c(%rbp), %esi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movl %ecx, %ecx
movl %ecx, %edx
movl -0x2c(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
movq -0x148(%rbp), %rcx
movq -0x138(%rbp), %rdx
movq -0x18(%rbp), %rax
movl -0x2c(%rbp), %esi
shlq $0x5, %rsi
addq %rsi, %rax
movq 0x10(%rax), %rax
movl -0x2c(%rbp), %esi
movq (%rdx,%rsi,8), %rdx
shlq $0x5, %rdx
addq %rdx, %rax
movl 0x1c(%rax), %eax
movl -0x2c(%rbp), %edx
cmpq (%rcx,%rdx,8), %rax
jae 0xc875
movq -0x138(%rbp), %rax
movl -0x2c(%rbp), %ecx
movq (%rax,%rcx,8), %rdx
addq $0x1, %rdx
movq %rdx, (%rax,%rcx,8)
jmp 0xc823
movq -0x158(%rbp), %rax
movq -0x138(%rbp), %rdx
movq -0x18(%rbp), %rcx
movl -0x2c(%rbp), %esi
shlq $0x5, %rsi
addq %rsi, %rcx
movq 0x10(%rcx), %rcx
movl -0x2c(%rbp), %esi
movq (%rdx,%rsi,8), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movq (%rcx), %rdx
shrq %rdx
movl -0x2c(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
jmp 0xc8b2
jmp 0xc8ed
movq -0x140(%rbp), %rax
movq -0x148(%rbp), %rcx
movq -0x60(%rbp), %rsi
movslq -0xe4(%rbp), %rdx
addq %rdx, %rsi
movl -0x2c(%rbp), %edx
movq %rsi, (%rcx,%rdx,8)
movl -0xe8(%rbp), %ecx
subl -0xe4(%rbp), %ecx
movslq %ecx, %rdx
movl -0x2c(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
jmp 0xc8ef
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0xc73b
jmp 0xca75
movl $0x0, -0x2c(%rbp)
movl $0x1, -0x30(%rbp)
movl -0x30(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jae 0xc942
movq -0x148(%rbp), %rcx
movl -0x30(%rbp), %eax
movq (%rcx,%rax,8), %rax
movl -0x2c(%rbp), %edx
cmpq (%rcx,%rdx,8), %rax
jae 0xc935
movl -0x30(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0xc937
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0xc910
movq -0x120(%rbp), %rcx
movq -0x150(%rbp), %rax
movl -0x2c(%rbp), %edx
movq (%rax,%rdx,8), %rsi
addq $0x1, %rsi
movq %rsi, (%rax,%rdx,8)
movl -0x2c(%rbp), %edx
movq (%rax,%rdx,8), %rax
movl -0x2c(%rbp), %edx
imulq $0x18, %rdx, %rdx
addq %rdx, %rcx
cmpq (%rcx), %rax
jne 0xc97a
jmp 0xca7a
jmp 0xc97c
movq -0x140(%rbp), %rax
movq -0x150(%rbp), %rdx
movq -0x120(%rbp), %rcx
movq -0x148(%rbp), %rsi
movl -0x2c(%rbp), %edi
imulq $0x18, %rdi, %r8
movq %rcx, %rdi
addq %r8, %rdi
movq 0x10(%rdi), %rdi
movl -0x2c(%rbp), %r8d
movq (%rdx,%r8,8), %r8
movq (%rdi,%r8,8), %r8
shrq $0x20, %r8
movl -0x2c(%rbp), %edi
movq %r8, (%rsi,%rdi,8)
movl -0x2c(%rbp), %esi
imulq $0x18, %rsi, %rsi
addq %rsi, %rcx
movq 0x10(%rcx), %rcx
movl -0x2c(%rbp), %esi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movl %ecx, %ecx
movl %ecx, %edx
movl -0x2c(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
movq -0x148(%rbp), %rcx
movq -0x138(%rbp), %rdx
movq -0x18(%rbp), %rax
movl -0x2c(%rbp), %esi
shlq $0x5, %rsi
addq %rsi, %rax
movq 0x10(%rax), %rax
movl -0x2c(%rbp), %esi
movq (%rdx,%rsi,8), %rdx
shlq $0x5, %rdx
addq %rdx, %rax
movl 0x1c(%rax), %eax
movl -0x2c(%rbp), %edx
cmpq (%rcx,%rdx,8), %rax
jae 0xca36
movq -0x138(%rbp), %rax
movl -0x2c(%rbp), %ecx
movq (%rax,%rcx,8), %rdx
addq $0x1, %rdx
movq %rdx, (%rax,%rcx,8)
jmp 0xc9e4
movq -0x158(%rbp), %rax
movq -0x138(%rbp), %rdx
movq -0x18(%rbp), %rcx
movl -0x2c(%rbp), %esi
shlq $0x5, %rsi
addq %rsi, %rcx
movq 0x10(%rcx), %rcx
movl -0x2c(%rbp), %esi
movq (%rdx,%rsi,8), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movq (%rcx), %rdx
shrq %rdx
movl -0x2c(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
jmp 0xca73
jmp 0xca75
jmp 0xc4f6
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jae 0xcaae
movq -0x120(%rbp), %rax
movl -0x2c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rdi
callq 0x2060
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0xca81
movl -0x1c(%rbp), %ecx
movq -0x28(%rbp), %rax
movl %ecx, (%rax)
movq -0x100(%rbp), %rax
movl %eax, %ecx
movq -0x28(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0xf0(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x108(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x98(%rbp), %rax
movq %rax, %rsp
movq %rbp, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)