// File: /workspace/github_cpp_makefile_star2_O3/chhylp123[P]hifiasm/Overlaps.cpp
// Function: hic_clean_adv(asg_t*, ug_opt_t*)
void hic_clean_adv(asg_t *sg, ug_opt_t *uopt)
{
    uint32_t i, k, m, z, v, w, mk; ma_utg_t *u = NULL; uint32_t *ba, bn, n_vtx, beg, end, n0, n1; ma_utg_t *mz = NULL;
    ma_ug_t *ug = ma_ug_gen_primary(sg, PRIMARY_LABLE); n_vtx = ug->g->n_seq<<1; double bub_rate = 0.1;
    uint8_t *bf = NULL; bubble_type *bub = gen_bubble_chain(sg, ug, uopt, &bf, ((asm_opt.polyploidy>2)?1:0)); 
    uint64_t tLen, vocc, socc, pocc; buf_t b; memset(&b, 0, sizeof(buf_t)); CALLOC(b.a, n_vtx);
    REALLOC(bf, n_vtx); memset(bf, 0, sizeof((*bf))*n_vtx);
    kvec_t(uint64_t) buf; kv_init(buf); n0 = n1 = 0;
    for (i = 0; i < ug->g->n_seq; ++i) {
        if(ug->g->seq[i].del) continue;
        ug->g->seq[i].c = PRIMARY_LABLE;
    }

    for (i = 0; i < bub->b_ug->u.n; i++) {
        u = &(bub->b_ug->u.a[i]);
        if(u->n == 0) continue;
        for (k = 0; k < u->n; k++) {///bubble chain
            get_bubbles(bub, u->a[k]>>33, &beg, &end, &ba, &bn, NULL);///bubble
			for (m = vocc = tLen = 0; m < bn; m++) {
                bf[ba[m]] = bf[ba[m]^1] = 1; 
                tLen += ug->u.a[ba[m]>>1].len;
                if(IF_HOM((ba[m]>>1), *bub)) continue;
                if(ug->g->seq[ba[m]>>1].del) continue;
                vocc += ug->u.a[ba[m]>>1].n;
            }
            if(beg != (uint32_t)-1) tLen += ug->u.a[beg>>1].len;
            if(end != (uint32_t)-1) tLen += ug->u.a[end>>1].len;

            if(vocc) {
                for (m = buf.n = 0; m < bn; m++) {
                    v = ba[m];
                    if(ug->g->seq[v>>1].del) continue;
                    if(asg_arc_n(ug->g, v) < 2) continue;
                    if(get_real_length(ug->g, v, NULL) < 2) continue;
                    if(asg_bub_pop1_primary_trio(ug->g, NULL, v, tLen, &b, (uint32_t)-1, (uint32_t)-1, 0, NULL, NULL, NULL, 0, 0, NULL)) {
                        //beg is v, end is b.S.a[0]
                        //note b.b include end, does not include beg
                        for (z = socc = 0; z < b.b.n; z++) {
                            if(b.b.a[z]==v || b.b.a[z]==b.S.a[0]) continue;
                            socc += ug->u.a[b.b.a[z]>>1].n;
                            if((!bf[b.b.a[z]])&&(!bf[b.b.a[z]^1])) break;
                        }
                        if(z < b.b.n) continue;
                        kv_push(uint64_t, buf, ((socc<<32)|v));
                    }

                    v ^= 1;
                    if(asg_arc_n(ug->g, v) < 2) continue;
                    if(get_real_length(ug->g, v, NULL) < 2) continue;
                    if(asg_bub_pop1_primary_trio(ug->g, NULL, v, tLen, &b, (uint32_t)-1, (uint32_t)-1, 0, NULL, NULL, NULL, 0, 0, NULL)) {
                        //beg is v, end is b.S.a[0]
                        //note b.b include end, does not include beg
                        for (z = socc = 0; z < b.b.n; z++) {
                            if(b.b.a[z]==v || b.b.a[z]==b.S.a[0]) continue;
                            socc += ug->u.a[b.b.a[z]>>1].n;
                            if((!bf[b.b.a[z]])&&(!bf[b.b.a[z]^1])) break;
                        }
                        if(z < b.b.n) continue;
                        kv_push(uint64_t, buf, ((socc<<32)|v));
                    }
                }

                radix_sort_arch64(buf.a, buf.a + buf.n); 
                for (m = pocc = 0; m < buf.n; m++) {
                    v = (uint32_t)buf.a[m];
                    if(ug->g->seq[v>>1].del) continue;
                    if(asg_arc_n(ug->g, v) < 2) continue;
                    if(get_real_length(ug->g, v, NULL) < 2) continue;
                    if(asg_bub_pop1_primary_trio(ug->g, NULL, v, tLen, &b, (uint32_t)-1, (uint32_t)-1, 0, NULL, NULL, NULL, 0, 0, NULL)) {
                        //beg is v, end is b.S.a[0]
                        //note b.b include end, does not include beg
                        for (z = socc = 0; z < b.b.n; z++) {
                            if(b.b.a[z]==v || b.b.a[z]==b.S.a[0]) continue;
                            socc += ug->u.a[b.b.a[z]>>1].n;
                            if((!bf[b.b.a[z]])&&(!bf[b.b.a[z]^1])) break;
                        }
                        if(z < b.b.n) continue;
                        if((pocc+socc) >= (vocc*bub_rate)) continue;
                        pocc += socc;
                        asg_bub_pop1_primary_trio(ug->g, NULL, v, tLen, &b, (uint32_t)-1, (uint32_t)-1, 1, NULL, NULL, NULL, 0, 0, NULL);
                        for (z = 0; z < b.b.n; z++) {
                            if(b.b.a[z]==v || b.b.a[z]==b.S.a[0]) continue;
                            // socc += ug->u.a[b.b.a[i]>>1].n;
                            if(ug->g->seq[b.b.a[z]>>1].del) continue;
                            if(ug->g->seq[b.b.a[z]>>1].c != ALTER_LABLE) continue;
                            mz = &(ug->u.a[b.b.a[z]>>1]);
                            if(mz->m == 0) continue;
                            for (mk = 0; mk < mz->n; mk++) asg_seq_del(sg, mz->a[mk]>>33);
                            asg_seq_del(ug->g, b.b.a[z]>>1);
                            if(ug->u.a[b.b.a[z]>>1].m) {
                                ug->u.a[b.b.a[z]>>1].m = ug->u.a[b.b.a[z]>>1].n = 0;
                                free(ug->u.a[b.b.a[z]>>1].a); ug->u.a[b.b.a[z]>>1].a = NULL;
                            }
                        }
                        // fprintf(stderr, "+utg%.6dl\tutg%.6dl\n", (int32_t)(v>>1)+1, (int32_t)(b.S.a[0]>>1)+1);
                        n0++;
                    }
                }
            }
            for (m = 0; m < bn; m++) {
                bf[ba[m]] = bf[ba[m]^1] = 0; 
            }
        }
    }

    for (v = 0; v < ug->g->n_seq; ++v) {
        if(ug->g->seq[v].del) continue;
        if(ug->g->seq[v].c != ALTER_LABLE) continue;
        mz = &(ug->u.a[v]);
        if(mz->m == 0) continue;
        for (k = 0; k < mz->n; k++) asg_seq_del(sg, mz->a[k]>>33);
        asg_seq_del(ug->g, v);
        if(ug->u.a[v].m) {
            ug->u.a[v].m = ug->u.a[v].n = 0;
            free(ug->u.a[v].a); ug->u.a[v].a = NULL;
        }
    }
    asg_cleanup(ug->g);



    tLen = get_bub_pop_max_dist_advance(ug->g, &b);
    for (v = buf.n = 0; v < n_vtx; ++v) {
        if(ug->g->seq[v>>1].del) continue;
        if(asg_arc_n(ug->g, v) < 2) continue;
        if(get_real_length(ug->g, v, NULL) < 2) continue;
        if(asg_bub_pop1_primary_trio(ug->g, NULL, v, tLen, &b, (uint32_t)-1, (uint32_t)-1, 0, NULL, NULL, NULL, 0, 0, NULL)) {
            //beg is v, end is b.S.a[0]
            //note b.b include end, does not include beg
            for (i = socc = 0; i < b.b.n; i++) {
                if(b.b.a[i]==v || b.b.a[i]==b.S.a[0]) continue;
                socc += ug->u.a[b.b.a[i]>>1].n;
            }
            if(socc <= 16) kv_push(uint64_t, buf, ((socc<<32)|v));
        }
    }

    uint32_t convex; long long ll, tmp, max_stop_nodeLen, max_stop_baseLen;
    radix_sort_arch64(buf.a, buf.a + buf.n); 
    for (m = 0; m < buf.n; m++) {
        v = (uint32_t)buf.a[m];
        if(ug->g->seq[v>>1].del) continue;
        if(asg_arc_n(ug->g, v) < 2) continue;
        if(get_real_length(ug->g, v, NULL) < 2) continue;
        if(asg_bub_pop1_primary_trio(ug->g, NULL, v, tLen, &b, (uint32_t)-1, (uint32_t)-1, 0, NULL, NULL, NULL, 0, 0, NULL)) {
            w = b.S.a[0]^1;
            for (i = socc = 0; i < b.b.n; i++) {
                if(b.b.a[i]==v || b.b.a[i]==b.S.a[0]) continue;
                socc += ug->u.a[b.b.a[i]>>1].n;
            }
            if(socc <= 16) {
                b.b.n = 0;
                get_unitig(ug->g, NULL, v^1, &convex, &ll, &tmp, &max_stop_nodeLen, &max_stop_baseLen, 1, &b);
                for (k = vocc = 0; k < b.b.n; k++) {
                    if(IF_HOM((b.b.a[k]>>1), *bub)) break;
                    vocc += ug->u.a[b.b.a[k]>>1].n;
                }
                if((socc) >= (vocc*bub_rate)) continue;

                b.b.n = 0;
                get_unitig(ug->g, NULL, w^1, &convex, &ll, &tmp, &max_stop_nodeLen, &max_stop_baseLen, 1, &b);
                for (k = vocc = 0; k < b.b.n; k++) {
                    if(IF_HOM((b.b.a[k]>>1), *bub)) break;
                    vocc += ug->u.a[b.b.a[k]>>1].n;
                }
                if((socc) >= (vocc*bub_rate)) continue;

                asg_bub_pop1_primary_trio(ug->g, NULL, v, tLen, &b, (uint32_t)-1, (uint32_t)-1, 1, NULL, NULL, NULL, 0, 0, NULL);
                for (i = 0; i < b.b.n; i++) {
                    if(b.b.a[i]==v || b.b.a[i]==b.S.a[0]) continue;
                    // socc += ug->u.a[b.b.a[i]>>1].n;
                    if(ug->g->seq[b.b.a[i]>>1].del) continue;
                    if(ug->g->seq[b.b.a[i]>>1].c != ALTER_LABLE) continue;
                    mz = &(ug->u.a[b.b.a[i]>>1]);
                    if(mz->m == 0) continue;
                    for (mk = 0; mk < mz->n; mk++) asg_seq_del(sg, mz->a[mk]>>33);
                    asg_seq_del(ug->g, b.b.a[i]>>1);
                    if(ug->u.a[b.b.a[i]>>1].m) {
                        ug->u.a[b.b.a[i]>>1].m = ug->u.a[b.b.a[i]>>1].n = 0;
                        free(ug->u.a[b.b.a[i]>>1].a); ug->u.a[b.b.a[i]>>1].a = NULL;
                    }
                }
                // fprintf(stderr, "-utg%.6dl\tutg%.6dl\n", (int32_t)(v>>1)+1, (int32_t)(b.S.a[0]>>1)+1);
                n1++;
            }
        }
    }
    // filter_sg_by_ug(sg, ug, uopt);
    for (v = 0; v < ug->g->n_seq; ++v) {
        if(ug->g->seq[v].del) continue;
        if(ug->g->seq[v].c != ALTER_LABLE) continue;
        mz = &(ug->u.a[v]);
        if(mz->m == 0) continue;
        for (k = 0; k < mz->n; k++) asg_seq_del(sg, mz->a[k]>>33);
        asg_seq_del(ug->g, v);
        if(ug->u.a[v].m) {
            ug->u.a[v].m = ug->u.a[v].n = 0;
            free(ug->u.a[v].a); ug->u.a[v].a = NULL;
        }
    }
    asg_cleanup(ug->g);

    asg_cleanup(sg);
    free(b.a); free(b.S.a); free(b.T.a); free(b.b.a); free(b.e.a); 
    ma_ug_destroy(ug); free(bf); kv_destroy(buf);
    destory_bubbles(bub); free(bub);
    // fprintf(stderr, "[M::%s::] # type0::%u, # type1::%u\n", __func__, n0, n1);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x178, %rsp            # imm = 0x178
movq %rsi, %r14
movq %rdi, %r15
xorl %esi, %esi
callq 0xb2a6d
movq %rax, %rbx
movq 0x18(%rax), %rax
movl 0x14(%rax), %r13d
addl %r13d, %r13d
leaq 0x80(%rsp), %r12
movq $0x0, (%r12)
leaq 0x1d43ed(%rip), %rax    # 0x295758
xorl %r8d, %r8d
cmpl $0x3, 0x1bc(%rax)
setge %r8b
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
movq %r12, %rcx
callq 0x1fba56
movq %rax, 0x88(%rsp)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x108(%rsp)
movupd %xmm0, 0xf8(%rsp)
movupd %xmm0, 0xe8(%rsp)
movupd %xmm0, 0xd8(%rsp)
movupd %xmm0, 0xc8(%rsp)
movupd %xmm0, 0xb8(%rsp)
movl $0x1c, %esi
movq %r13, %rdi
callq 0x2120
movq %rax, 0xb0(%rsp)
movq (%r12), %rdi
movq %r13, %rsi
callq 0x2370
movq %rax, (%r12)
movq %rax, %rdi
xorl %esi, %esi
movq %r13, 0xa8(%rsp)
movq %r13, %rdx
callq 0x20e0
movq %rbx, %r11
movq 0x18(%rbx), %rdi
movl 0x14(%rdi), %edx
testl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
je 0xc1446
movq 0x20(%rdi), %rax
xorl %ecx, %ecx
movq 0x88(%rsp), %rbx
cmpl $0x0, (%rax,%rcx,8)
js 0xc1434
movb $0x0, 0x4(%rax,%rcx,8)
movl 0x14(%rdi), %edx
incq %rcx
movl %edx, %esi
andl $0x7fffffff, %esi       # imm = 0x7FFFFFFF
cmpq %rsi, %rcx
jb 0xc1426
jmp 0xc144e
movq 0x88(%rsp), %rbx
movq 0xc0(%rbx), %rax
movq (%rax), %rcx
xorl %ebp, %ebp
testq %rcx, %rcx
movq %r11, 0x48(%rsp)
je 0xc1fba
leaq 0x9c(%rsp), %r12
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
xorl %edx, %edx
movq $0x0, 0x90(%rsp)
movq $0x0, 0x58(%rsp)
xorl %esi, %esi
movq %rsi, 0x120(%rsp)
movq 0x10(%rax), %rsi
leaq (%rdx,%rdx,4), %rdx
cmpl $0x0, 0x10(%rsi,%rdx,8)
je 0xc1f96
leaq (%rsi,%rdx,8), %rcx
xorl %edx, %edx
movq %rcx, 0x130(%rsp)
movq 0x18(%rcx), %rax
movq %rdx, 0x138(%rsp)
movq (%rax,%rdx,8), %rsi
shrq $0x21, %rsi
movq $0x0, (%rsp)
movq %rbx, %rdi
movq %r12, %rdx
leaq 0x11c(%rsp), %rcx
leaq 0xa0(%rsp), %r8
leaq 0x7c(%rsp), %r9
callq 0x13df01
cmpl $0x0, 0x7c(%rsp)
je 0xc15a8
movq 0xa0(%rsp), %rcx
xorl %eax, %eax
xorl %r10d, %r10d
xorl %r13d, %r13d
movq 0x48(%rsp), %r11
movq 0x80(%rsp), %rdx
movl (%rcx,%rax,4), %ecx
xorq $0x1, %rcx
movb $0x1, %sil
movb %sil, (%rdx,%rcx)
movq 0x80(%rsp), %rcx
movq 0xa0(%rsp), %rdx
movl (%rdx,%rax,4), %edx
movb %sil, (%rcx,%rdx)
movq 0x10(%r11), %rdx
movq 0xa0(%rsp), %rcx
movl (%rcx,%rax,4), %edi
shrl %edi
leaq (%rdi,%rdi,4), %rsi
movq (%rbx), %r8
movq 0x80(%rbx), %r9
movl (%r8,%rdi,4), %r8d
incq %r9
cmpq %r8, %r9
jb 0xc1585
movq 0x18(%r11), %r8
movq 0x20(%r8), %r8
cmpl $0x0, (%r8,%rdi,8)
js 0xc1585
leaq (%rdx,%rsi,8), %rdi
movl 0x10(%rdi), %edi
addq %rdi, %r10
movl (%rdx,%rsi,8), %edx
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
addq %rdx, %r13
incq %rax
movl 0x7c(%rsp), %edx
cmpq %rdx, %rax
jb 0xc1514
testl %edx, %edx
sete %al
jmp 0xc15b5
movb $0x1, %al
xorl %r13d, %r13d
xorl %r10d, %r10d
movq 0x48(%rsp), %r11
movl 0x9c(%rsp), %ecx
cmpq %r14, %rcx
je 0xc15d7
movq 0x10(%r11), %rdx
shrl %ecx
leaq (%rcx,%rcx,4), %rcx
movl (%rdx,%rcx,8), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
addq %rcx, %r13
movl 0x11c(%rsp), %ecx
cmpq %r14, %rcx
je 0xc15f9
movq 0x10(%r11), %rdx
shrl %ecx
leaq (%rcx,%rcx,4), %rcx
movl (%rdx,%rcx,8), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
addq %rcx, %r13
testq %r10, %r10
je 0xc1f26
testb %al, %al
je 0xc161d
movq 0x58(%rsp), %rdi
movq %rdi, %rsi
callq 0x9dc69
movq 0x48(%rsp), %r11
jmp 0xc1f26
movq %r10, 0x70(%rsp)
xorl %r12d, %r12d
xorl %edx, %edx
movq 0x58(%rsp), %rbx
movq 0xa0(%rsp), %rax
movl (%rax,%r12,4), %ebp
movq 0x18(%r11), %rdi
movq 0x20(%rdi), %rax
movl %ebp, %ecx
shrl %ecx
cmpl $0x0, (%rax,%rcx,8)
js 0xc1996
movq 0x28(%rdi), %rax
movq (%rax,%rbp,8), %rax
testl $0xfffffffe, %eax       # imm = 0xFFFFFFFE
je 0xc1996
movq %rax, %rcx
andq %r14, %rcx
je 0xc1996
movq %rdx, 0x50(%rsp)
movq 0x8(%rdi), %rdx
shrq $0x20, %rax
leaq (%rax,%rax,2), %rax
leaq (%rdx,%rax,8), %rax
addq $0xc, %rax
shlq $0x3, %rcx
leaq (%rcx,%rcx,2), %rcx
xorl %edx, %edx
xorl %esi, %esi
movl (%rax,%rdx), %r8d
notl %r8d
shrl $0x1f, %r8d
addl %r8d, %esi
addq $0x18, %rdx
cmpq %rdx, %rcx
jne 0xc1692
cmpl $0x2, %esi
jge 0xc16b8
movq 0x50(%rsp), %rdx
jmp 0xc1996
xorl %eax, %eax
movq %rax, 0x38(%rsp)
movl %eax, 0x30(%rsp)
movl %eax, 0x28(%rsp)
movq %rax, 0x20(%rsp)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x10(%rsp)
movl %eax, 0x8(%rsp)
movl $0xffffffff, (%rsp)     # imm = 0xFFFFFFFF
xorl %esi, %esi
movl %ebp, %edx
movq %r13, %rcx
leaq 0xb0(%rsp), %r8
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
callq 0xc02d6
testq %rax, %rax
je 0xc1787
movq %rbx, 0x58(%rsp)
movq 0xe8(%rsp), %rax
testq %rax, %rax
movq 0x48(%rsp), %r11
je 0xc1793
movq 0xc8(%rsp), %rcx
movq 0xf8(%rsp), %rdx
movl $0x1, %esi
movq 0x80(%rsp), %rdi
xorl %r8d, %r8d
xorl %ebx, %ebx
movl (%rdx,%r8,4), %r8d
cmpl %ebp, %r8d
je 0xc1777
cmpl (%rcx), %r8d
je 0xc1777
movq 0x10(%r11), %r9
movl %r8d, %r10d
shrl %r10d
leaq (%r10,%r10,4), %r10
movl 0x10(%r9,%r10,8), %r9d
addq %r9, %rbx
cmpb $0x0, (%rdi,%r8)
jne 0xc1777
xorq $0x1, %r8
cmpb $0x0, (%rdi,%r8)
je 0xc19a8
movl %esi, %r8d
incl %esi
cmpq %r8, %rax
ja 0xc173d
shlq $0x20, %rbx
jmp 0xc1795
movq 0x48(%rsp), %r11
movq 0x50(%rsp), %rdx
jmp 0xc17ec
xorl %ebx, %ebx
movq 0x50(%rsp), %rdx
cmpq 0x90(%rsp), %rdx
jne 0xc17da
leaq (%rdx,%rdx), %rax
testq %rdx, %rdx
movl $0x2, %ecx
cmoveq %rcx, %rax
movq %rax, 0x90(%rsp)
leaq (,%rax,8), %rsi
movq 0x58(%rsp), %rdi
callq 0x2370
movq 0x50(%rsp), %rdx
movq 0x48(%rsp), %r11
jmp 0xc17df
movq 0x58(%rsp), %rax
orq %rbp, %rbx
movq %rbx, (%rax,%rdx,8)
incq %rdx
movq %rax, %rbx
xorl $0x1, %ebp
movq 0x18(%r11), %rdi
movq 0x28(%rdi), %rax
movq (%rax,%rbp,8), %rax
testl $0xfffffffe, %eax       # imm = 0xFFFFFFFE
je 0xc1996
movq %rax, %rcx
andq %r14, %rcx
je 0xc1996
movq %rdx, 0x50(%rsp)
movq 0x8(%rdi), %rdx
shrq $0x20, %rax
leaq (%rax,%rax,2), %rax
leaq (%rdx,%rax,8), %rax
addq $0xc, %rax
shlq $0x3, %rcx
leaq (%rcx,%rcx,2), %rcx
xorl %edx, %edx
xorl %esi, %esi
movl (%rax,%rdx), %r8d
notl %r8d
shrl $0x1f, %r8d
addl %r8d, %esi
addq $0x18, %rdx
cmpq %rdx, %rcx
jne 0xc1837
cmpl $0x2, %esi
jl 0xc16ae
xorl %eax, %eax
movq %rax, 0x38(%rsp)
movl %eax, 0x30(%rsp)
movl %eax, 0x28(%rsp)
movq %rax, 0x20(%rsp)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x10(%rsp)
movl %eax, 0x8(%rsp)
movl $0xffffffff, (%rsp)     # imm = 0xFFFFFFFF
xorl %esi, %esi
movl %ebp, %edx
movq %r13, %rcx
leaq 0xb0(%rsp), %r8
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
callq 0xc02d6
testq %rax, %rax
je 0xc1926
movq %rbx, 0x58(%rsp)
movq 0xe8(%rsp), %rax
testq %rax, %rax
movq 0x48(%rsp), %r11
je 0xc1930
movq 0xc8(%rsp), %rcx
movq 0xf8(%rsp), %rdx
movl $0x1, %esi
movq 0x80(%rsp), %rdi
xorl %r8d, %r8d
xorl %ebx, %ebx
movl (%rdx,%r8,4), %r8d
cmpl %ebp, %r8d
je 0xc1916
cmpl (%rcx), %r8d
je 0xc1916
movq 0x10(%r11), %r9
movl %r8d, %r10d
shrl %r10d
leaq (%r10,%r10,4), %r10
movl 0x10(%r9,%r10,8), %r9d
addq %r9, %rbx
cmpb $0x0, (%rdi,%r8)
jne 0xc1916
xorq $0x1, %r8
cmpb $0x0, (%rdi,%r8)
je 0xc19a8
movl %esi, %r8d
incl %esi
cmpq %r8, %rax
ja 0xc18dc
shlq $0x20, %rbx
jmp 0xc1932
movq 0x48(%rsp), %r11
jmp 0xc16ae
xorl %ebx, %ebx
movq 0x90(%rsp), %rax
movq 0x50(%rsp), %rdx
cmpq %rax, %rdx
jne 0xc1984
leaq (%rax,%rax), %rcx
testq %rax, %rax
movl $0x2, %eax
cmoveq %rax, %rcx
movq %rcx, 0x68(%rsp)
leaq (,%rcx,8), %rsi
movq 0x58(%rsp), %rdi
callq 0x2370
movq 0x50(%rsp), %rdx
movq 0x48(%rsp), %r11
movq 0x68(%rsp), %rcx
movq %rcx, 0x90(%rsp)
jmp 0xc1989
movq 0x58(%rsp), %rax
orq %rbp, %rbx
movq %rbx, (%rax,%rdx,8)
incq %rdx
movq %rax, %rbx
incq %r12
movl 0x7c(%rsp), %eax
cmpq %rax, %r12
jb 0xc162c
jmp 0xc19b2
movq 0x58(%rsp), %rbx
jmp 0xc16ae
movq %rbx, %r12
leaq (%rbx,%rdx,8), %rsi
movq %rbx, %rdi
movq %rdx, 0x50(%rsp)
callq 0x9dc69
movq 0x50(%rsp), %rsi
testq %rsi, %rsi
movq %rbx, 0x58(%rsp)
je 0xc1f0f
movsd 0x70(%rsp), %xmm0
unpcklps 0x16f89a(%rip), %xmm0   # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x16f8a2(%rip), %xmm0   # 0x231290
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
mulsd 0x16f20e(%rip), %xmm1   # 0x230c10
movapd %xmm1, 0x160(%rsp)
xorl %r10d, %r10d
movq $0x0, 0x68(%rsp)
movq 0x48(%rsp), %r11
xorl %ebp, %ebp
movq (%r12,%r10,8), %rdx
movq 0x18(%r11), %rdi
movq 0x20(%rdi), %rax
movl %edx, %ecx
shrl %ecx
cmpl $0x0, (%rax,%rcx,8)
js 0xc1ef9
movq 0x28(%rdi), %rax
movl %edx, %ecx
movq (%rax,%rcx,8), %rax
testl $0xfffffffe, %eax       # imm = 0xFFFFFFFE
je 0xc1ef9
movq %rax, %rcx
andq %r14, %rcx
je 0xc1ef9
movq 0x8(%rdi), %rsi
shrq $0x20, %rax
leaq (%rax,%rax,2), %rax
leaq (%rsi,%rax,8), %rax
addq $0xc, %rax
shlq $0x3, %rcx
leaq (%rcx,%rcx,2), %rcx
xorl %r9d, %r9d
xorl %esi, %esi
movl (%rax,%r9), %r8d
notl %r8d
shrl $0x1f, %r8d
addl %r8d, %esi
addq $0x18, %r9
cmpq %r9, %rcx
jne 0xc1a7a
cmpl $0x2, %esi
jge 0xc1aa0
movq 0x50(%rsp), %rsi
jmp 0xc1ef9
movq %r10, 0x60(%rsp)
movq %rbp, 0x38(%rsp)
movl %ebp, 0x30(%rsp)
movl %ebp, 0x28(%rsp)
movq %rbp, 0x20(%rsp)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x10(%rsp)
movl %ebp, 0x8(%rsp)
movl $0xffffffff, (%rsp)     # imm = 0xFFFFFFFF
xorl %esi, %esi
movq %rdx, 0x70(%rsp)
movq %r13, %rcx
leaq 0xb0(%rsp), %r8
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
callq 0xc02d6
testq %rax, %rax
je 0xc1eea
movq 0xe8(%rsp), %rax
testq %rax, %rax
movq 0x48(%rsp), %r11
movq 0x60(%rsp), %r10
je 0xc1b90
movq 0xc8(%rsp), %rcx
movq 0xf8(%rsp), %r12
movl $0x1, %esi
movq 0x80(%rsp), %rdi
xorl %r8d, %r8d
xorl %ebx, %ebx
movq 0x70(%rsp), %rdx
movl (%r12,%r8,4), %r8d
cmpl %edx, %r8d
je 0xc1b84
cmpl (%rcx), %r8d
je 0xc1b84
movq 0x10(%r11), %r9
movl %r8d, %r10d
shrl %r10d
leaq (%r10,%r10,4), %r10
movl 0x10(%r9,%r10,8), %r9d
addq %r9, %rbx
cmpb $0x0, (%rdi,%r8)
je 0xc1b6b
movq 0x60(%rsp), %r10
movq 0x70(%rsp), %rdx
jmp 0xc1b84
xorq $0x1, %r8
cmpb $0x0, (%rdi,%r8)
movq 0x60(%rsp), %r10
movq 0x70(%rsp), %rdx
je 0xc1ed9
movl %esi, %r8d
incl %esi
cmpq %r8, %rax
ja 0xc1b34
jmp 0xc1b97
xorl %ebx, %ebx
movq 0x70(%rsp), %rdx
addq 0x68(%rsp), %rbx
movq %rbx, %xmm0
punpckldq 0x16f6d7(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x16f6df(%rip), %xmm0   # 0x231290
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
ucomisd 0x160(%rsp), %xmm1
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %r12
jae 0xc1ef9
movq 0x18(%r11), %rdi
movq %rbp, 0x38(%rsp)
movl %ebp, 0x30(%rsp)
movl %ebp, 0x28(%rsp)
movq %rbp, 0x20(%rsp)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x10(%rsp)
movl $0x1, 0x8(%rsp)
movl $0xffffffff, (%rsp)     # imm = 0xFFFFFFFF
xorl %esi, %esi
movq %r13, %rcx
leaq 0xb0(%rsp), %r8
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
callq 0xc02d6
cmpq %rbp, 0xe8(%rsp)
je 0xc1ee5
movq %rbx, 0x128(%rsp)
xorl %r12d, %r12d
movq 0xf8(%rsp), %rdx
movq 0x48(%rsp), %r11
movq 0x60(%rsp), %r10
movl (%rdx,%r12,4), %eax
cmpl 0x70(%rsp), %eax
je 0xc1ebb
movq 0xc8(%rsp), %rcx
cmpl (%rcx), %eax
je 0xc1ebb
movq 0x18(%r11), %rcx
movq 0x20(%rcx), %rsi
movl %eax, %edi
shrl %edi
cmpl $0x0, (%rsi,%rdi,8)
js 0xc1ebb
cmpb $0x1, 0x4(%rsi,%rdi,8)
jne 0xc1ebb
movq 0x10(%r11), %r8
leaq (%rdi,%rdi,4), %r9
cmpl $0x0, 0xc(%r8,%r9,8)
je 0xc1ebb
leaq (%r8,%r9,8), %rdx
cmpl $0x0, 0x10(%rdx)
je 0xc1d98
xorl %eax, %eax
movq %rdx, 0x68(%rsp)
movq 0x18(%rdx), %rcx
movq (%rcx,%rax,8), %rcx
shrq $0x21, %rcx
movq 0x20(%r15), %rdx
orl $0x80000000, (%rdx,%rcx,8) # imm = 0x80000000
addl %ecx, %ecx
movb $0x1, %sil
xorl %edi, %edi
orq %rcx, %rdi
movq 0x28(%r15), %rdx
movq (%rdx,%rdi,8), %rdx
movq %rdx, %r8
andq %r14, %r8
je 0xc1d53
shrq $0x20, %rdx
leaq (%rdx,%rdx,2), %r9
shlq $0x3, %r9
addq 0x8(%r15), %r9
xorl %r10d, %r10d
leaq (%r10,%r10,2), %rdx
orb $-0x80, 0xf(%r9,%rdx,8)
movl 0x8(%r9,%rdx,8), %edx
xorq $0x1, %rdx
movq 0x28(%r15), %r11
movq (%r11,%rdx,8), %rdx
movq %rdx, %r11
andq %r14, %r11
je 0xc1d4b
movq 0x8(%r15), %rbp
shrq $0x20, %rdx
shlq $0x3, %r11
leaq (%r11,%r11,2), %r11
leaq (%rdx,%rdx,2), %rdx
leaq 0xc(%rbp,%rdx,8), %rbp
xorl %edx, %edx
movl -0x4(%rbp,%rdx), %ebx
xorl %edi, %ebx
cmpl $0x1, %ebx
jne 0xc1d42
orb $-0x80, 0x3(%rbp,%rdx)
addq $0x18, %rdx
cmpq %rdx, %r11
jne 0xc1d32
incq %r10
cmpq %r8, %r10
jne 0xc1cf4
movl $0x1, %edi
testb $0x1, %sil
movl $0x0, %esi
jne 0xc1cce
incq %rax
movq 0x68(%rsp), %rdx
movl 0x10(%rdx), %ecx
cmpq %rcx, %rax
jb 0xc1cb0
movq 0x48(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0xf8(%rsp), %rax
movl (%rax,%r12,4), %eax
movq 0x20(%rcx), %rsi
movl %eax, %edi
shrl %edi
orb $-0x80, 0x3(%rsi,%rdi,8)
andl $-0x2, %eax
movb $0x1, %dl
xorl %esi, %esi
orq %rax, %rsi
movq 0x28(%rcx), %rdi
movq (%rdi,%rsi,8), %r8
movq %r8, %rdi
andq %r14, %rdi
je 0xc1e2e
shrq $0x20, %r8
leaq (%r8,%r8,2), %r8
shlq $0x3, %r8
addq 0x8(%rcx), %r8
xorl %r9d, %r9d
leaq (%r9,%r9,2), %r10
orb $-0x80, 0xf(%r8,%r10,8)
movl 0x8(%r8,%r10,8), %r10d
xorq $0x1, %r10
movq 0x28(%rcx), %r11
movq (%r11,%r10,8), %r11
movq %r11, %r10
andq %r14, %r10
je 0xc1e26
movq 0x8(%rcx), %rbx
shrq $0x20, %r11
shlq $0x3, %r10
leaq (%r10,%r10,2), %r10
leaq (%r11,%r11,2), %r11
leaq (%rbx,%r11,8), %r11
addq $0xc, %r11
xorl %ebp, %ebp
movl -0x4(%r11,%rbp), %ebx
xorl %esi, %ebx
cmpl $0x1, %ebx
jne 0xc1e1d
orb $-0x80, 0x3(%r11,%rbp)
addq $0x18, %rbp
cmpq %rbp, %r10
jne 0xc1e0b
incq %r9
cmpq %rdi, %r9
jne 0xc1dca
movl $0x1, %esi
testb $0x1, %dl
movl $0x0, %edx
jne 0xc1da4
movq 0x48(%rsp), %r11
movq 0x10(%r11), %rax
movq 0xf8(%rsp), %rdx
movl (%rdx,%r12,4), %ecx
shrl %ecx
leaq (%rcx,%rcx,4), %rcx
cmpl $0x0, 0xc(%rax,%rcx,8)
je 0xc1eb4
leaq (%rax,%rcx,8), %rcx
xorl %ebp, %ebp
movl %ebp, 0x10(%rcx)
movl (%rdx,%r12,4), %ecx
shrl %ecx
leaq (%rcx,%rcx,4), %rcx
movl %ebp, 0xc(%rax,%rcx,8)
movl (%rdx,%r12,4), %ecx
shrl %ecx
leaq (%rcx,%rcx,4), %rcx
movq 0x18(%rax,%rcx,8), %rdi
callq 0x2220
movq 0x48(%rsp), %r11
movq 0x10(%r11), %rax
movq 0xf8(%rsp), %rdx
movl (%rdx,%r12,4), %ecx
shrl %ecx
leaq (%rcx,%rcx,4), %rcx
movq $0x0, 0x18(%rax,%rcx,8)
jmp 0xc1eb6
xorl %ebp, %ebp
movq 0x60(%rsp), %r10
incl %r12d
cmpq %r12, 0xe8(%rsp)
ja 0xc1c48
movq 0x128(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %r12
jmp 0xc1ef9
movq %rbx, 0x68(%rsp)
movq 0x48(%rsp), %r11
movq 0x50(%rsp), %rsi
movq 0x60(%rsp), %r10
incl %r10d
cmpq %r10, %rsi
ja 0xc1a1e
movq 0x88(%rsp), %rbx
jmp 0xc1f1e
movq 0x48(%rsp), %r11
movq 0x88(%rsp), %rbx
xorl %ebp, %ebp
leaq 0x9c(%rsp), %r12
cmpl $0x0, 0x7c(%rsp)
je 0xc1f6d
xorl %eax, %eax
movq 0x80(%rsp), %rcx
movq 0xa0(%rsp), %rdx
movl (%rdx,%rax,4), %edx
xorq $0x1, %rdx
movb %bpl, (%rcx,%rdx)
movq 0x80(%rsp), %rcx
movq 0xa0(%rsp), %rdx
movl (%rdx,%rax,4), %edx
movb %bpl, (%rcx,%rdx)
incq %rax
movl 0x7c(%rsp), %ecx
cmpq %rcx, %rax
jb 0xc1f2f
movq 0x138(%rsp), %rdx
incq %rdx
movq 0x130(%rsp), %rcx
movl 0x10(%rcx), %eax
cmpq %rax, %rdx
jb 0xc14b8
movq 0xc0(%rbx), %rax
movq (%rax), %rcx
movq 0x120(%rsp), %rsi
incl %esi
movq %rsi, %rdx
cmpq %rsi, %rcx
ja 0xc148f
movq 0x18(%r11), %rdi
movl 0x14(%rdi), %edx
movq 0x58(%rsp), %rax
jmp 0xc1fc8
xorl %eax, %eax
movq $0x0, 0x90(%rsp)
testl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
movq %rax, 0x58(%rsp)
je 0xc2213
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
xorl %r12d, %r12d
movq 0x20(%rdi), %rdx
movl (%rdx,%r12,8), %esi
testl %esi, %esi
js 0xc21fb
cmpb $0x1, 0x4(%rdx,%r12,8)
jne 0xc21fb
movq 0x10(%r11), %rcx
leaq (%r12,%r12,4), %rbp
cmpl $0x0, 0xc(%rcx,%rbp,8)
je 0xc21fb
leaq (%rcx,%rbp,8), %rcx
cmpl $0x0, 0x10(%rcx)
je 0xc2107
movq %rbp, 0x50(%rsp)
xorl %edx, %edx
movq 0x18(%rcx), %rsi
movq (%rsi,%rdx,8), %rsi
shrq $0x21, %rsi
movq 0x20(%r15), %rdi
orl $0x80000000, (%rdi,%rsi,8) # imm = 0x80000000
addl %esi, %esi
movb $0x1, %dil
xorl %r8d, %r8d
orq %rsi, %r8
movq 0x28(%r15), %r9
movq (%r9,%r8,8), %r10
movq %r10, %r9
andq %r14, %r9
je 0xc20cd
shrq $0x20, %r10
leaq (%r10,%r10,2), %r10
shlq $0x3, %r10
addq 0x8(%r15), %r10
xorl %r11d, %r11d
leaq (%r11,%r11,2), %rbx
orb $-0x80, 0xf(%r10,%rbx,8)
movl 0x8(%r10,%rbx,8), %ebx
xorq $0x1, %rbx
movq 0x28(%r15), %r13
movq (%r13,%rbx,8), %rbx
movq %rbx, %r13
andq %r14, %r13
je 0xc20c5
movq 0x8(%r15), %rbp
shrq $0x20, %rbx
shlq $0x3, %r13
leaq (%r13,%r13,2), %r13
leaq (%rbx,%rbx,2), %rbx
leaq 0xc(%rbp,%rbx,8), %rbp
xorl %ebx, %ebx
movl -0x4(%rbp,%rbx), %eax
xorl %r8d, %eax
cmpl $0x1, %eax
jne 0xc20bc
orb $-0x80, 0x3(%rbp,%rbx)
addq $0x18, %rbx
cmpq %rbx, %r13
jne 0xc20ab
incq %r11
cmpq %r9, %r11
jne 0xc206b
movl $0x1, %r8d
testb $0x1, %dil
movl $0x0, %edi
jne 0xc2045
incq %rdx
movl 0x10(%rcx), %eax
cmpq %rax, %rdx
jb 0xc2026
movq 0x48(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x20(%rdi), %rdx
movl (%rdx,%r12,8), %esi
movq 0x50(%rsp), %rbp
orl $0x80000000, %esi       # imm = 0x80000000
movl %esi, (%rdx,%r12,8)
leaq (%r12,%r12), %rcx
movb $0x1, %dl
xorl %esi, %esi
orq %rcx, %rsi
movq 0x28(%rdi), %rax
movq (%rax,%rsi,8), %r9
movq %r9, %r8
andq %r14, %r8
je 0xc21a3
shrq $0x20, %r9
leaq (%r9,%r9,2), %r9
shlq $0x3, %r9
addq 0x8(%rdi), %r9
xorl %r10d, %r10d
leaq (%r10,%r10,2), %rax
orb $-0x80, 0xf(%r9,%rax,8)
movl 0x8(%r9,%rax,8), %eax
xorq $0x1, %rax
movq 0x28(%rdi), %r11
movq (%r11,%rax,8), %rbx
movq %rbx, %r11
andq %r14, %r11
je 0xc219b
movq 0x8(%rdi), %rax
shrq $0x20, %rbx
shlq $0x3, %r11
leaq (%r11,%r11,2), %r11
leaq (%rbx,%rbx,2), %rbx
leaq (%rax,%rbx,8), %r13
addq $0xc, %r13
xorl %ebx, %ebx
movl -0x4(%r13,%rbx), %eax
xorl %esi, %eax
cmpl $0x1, %eax
jne 0xc2192
orb $-0x80, 0x3(%r13,%rbx)
addq $0x18, %rbx
cmpq %rbx, %r11
jne 0xc2180
incq %r10
cmpq %r8, %r10
jne 0xc213f
movl $0x1, %esi
testb $0x1, %dl
movl $0x0, %edx
jne 0xc2119
movq 0x48(%rsp), %r11
movq 0x10(%r11), %rcx
cmpl $0x0, 0xc(%rcx,%rbp,8)
je 0xc21fb
leaq (%rcx,%rbp,8), %rax
xorl %edx, %edx
movl %edx, 0x10(%rax)
leaq (,%r12,8), %rax
leaq (%rax,%rax,4), %rbx
movl %edx, 0xc(%rcx,%rbx)
movq 0x18(%rcx,%rbx), %rdi
callq 0x2220
movq 0x48(%rsp), %r11
movq 0x10(%r11), %rax
movq $0x0, 0x18(%rax,%rbx)
incq %r12
movq 0x18(%r11), %rdi
movl 0x14(%rdi), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
cmpq %rax, %r12
jb 0xc1fe2
movq %r11, %rbx
callq 0xa0a7d
movq 0x18(%rbx), %rdi
leaq 0xb0(%rsp), %rsi
callq 0xc0162
movq %rax, 0x70(%rsp)
movq 0xa8(%rsp), %r10
testq %r10, %r10
je 0xc2a99
xorl %ebx, %ebx
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
xorl %ebp, %ebp
movq $0x0, 0x50(%rsp)
movq 0x48(%rsp), %r9
movq 0x18(%r9), %rdi
movq 0x20(%rdi), %rax
movl %ebp, %ecx
shrl %ecx
cmpl $0x0, (%rax,%rcx,8)
js 0xc23f5
movq 0x28(%rdi), %rax
movq (%rax,%rbp,8), %rax
testl $0xfffffffe, %eax       # imm = 0xFFFFFFFE
je 0xc23f5
movq %rax, %rcx
andq %r14, %rcx
je 0xc23f5
movq 0x8(%rdi), %rdx
shrq $0x20, %rax
leaq (%rax,%rax,2), %rax
leaq (%rdx,%rax,8), %rax
addq $0xc, %rax
shlq $0x3, %rcx
leaq (%rcx,%rcx,2), %rcx
xorl %edx, %edx
xorl %esi, %esi
movl (%rax,%rdx), %r8d
notl %r8d
shrl $0x1f, %r8d
addl %r8d, %esi
addq $0x18, %rdx
cmpq %rdx, %rcx
jne 0xc22af
cmpl $0x2, %esi
jl 0xc23f5
movq %rbx, 0x38(%rsp)
movl %ebx, 0x30(%rsp)
movl %ebx, 0x28(%rsp)
movq %rbx, 0x20(%rsp)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x10(%rsp)
movl %ebx, 0x8(%rsp)
movl $0xffffffff, (%rsp)     # imm = 0xFFFFFFFF
xorl %esi, %esi
movl %ebp, %edx
movq 0x70(%rsp), %rcx
leaq 0xb0(%rsp), %r8
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
callq 0xc02d6
testq %rax, %rax
je 0xc2376
movq 0xe8(%rsp), %rax
testq %rax, %rax
movq 0x48(%rsp), %r9
je 0xc2385
movq 0xc8(%rsp), %rcx
movq 0xf8(%rsp), %rdx
xorl %esi, %esi
xorl %r13d, %r13d
movq 0xa8(%rsp), %r10
movl (%rdx,%rsi,4), %edi
cmpq %rdi, %rbp
je 0xc2364
cmpl (%rcx), %edi
je 0xc2364
movq 0x10(%r9), %r8
shrl %edi
leaq (%rdi,%rdi,4), %rdi
movl 0x10(%r8,%rdi,8), %edi
addq %rdi, %r13
incq %rsi
movl %esi, %edi
cmpq %rdi, %rax
ja 0xc2346
cmpq $0x10, %r13
jbe 0xc2390
jmp 0xc23f5
movq 0x48(%rsp), %r9
movq 0xa8(%rsp), %r10
jmp 0xc23f5
xorl %r13d, %r13d
movq 0xa8(%rsp), %r10
movq 0x50(%rsp), %r12
cmpq 0x90(%rsp), %r12
jne 0xc23d8
leaq (%r12,%r12), %rax
testq %r12, %r12
movl $0x2, %ecx
cmoveq %rcx, %rax
movq %rax, 0x90(%rsp)
leaq (,%rax,8), %rsi
movq 0x58(%rsp), %rdi
callq 0x2370
movq 0xa8(%rsp), %r10
movq 0x48(%rsp), %r9
jmp 0xc23dd
movq 0x58(%rsp), %rax
shlq $0x20, %r13
orq %rbp, %r13
movq %rax, 0x58(%rsp)
movq %r13, (%rax,%r12,8)
incq %r12
movq %r12, 0x50(%rsp)
incq %rbp
cmpq %r10, %rbp
jne 0xc225a
movq 0x58(%rsp), %rbx
movq 0x50(%rsp), %r14
leaq (%rbx,%r14,8), %rsi
movq %rbx, %rdi
callq 0x9dc69
testq %r14, %r14
je 0xc2aa9
movq %r14, %r10
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
xorl %eax, %eax
xorl %r14d, %r14d
movq 0x48(%rsp), %r11
movq (%rbx,%rax,8), %rbp
movq 0x18(%r11), %rdi
movq 0x20(%rdi), %rax
movl %ebp, %ecx
shrl %ecx
cmpl $0x0, (%rax,%rcx,8)
js 0xc2a83
movq 0x28(%rdi), %rax
movl %ebp, %ecx
movq (%rax,%rcx,8), %rax
testl $0xfffffffe, %eax       # imm = 0xFFFFFFFE
je 0xc2a83
movq %rax, %rcx
andq %r12, %rcx
je 0xc2a83
movq 0x8(%rdi), %rdx
shrq $0x20, %rax
leaq (%rax,%rax,2), %rax
leaq (%rdx,%rax,8), %rax
addq $0xc, %rax
shlq $0x3, %rcx
leaq (%rcx,%rcx,2), %rcx
xorl %edx, %edx
xorl %esi, %esi
movl (%rax,%rdx), %r8d
notl %r8d
shrl $0x1f, %r8d
addl %r8d, %esi
addq $0x18, %rdx
cmpq %rdx, %rcx
jne 0xc248e
cmpl $0x2, %esi
jl 0xc2a83
xorl %eax, %eax
movq %rax, 0x38(%rsp)
movl %eax, 0x30(%rsp)
movl %eax, 0x28(%rsp)
movq %rax, 0x20(%rsp)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x10(%rsp)
movl %eax, 0x8(%rsp)
movl $0xffffffff, (%rsp)     # imm = 0xFFFFFFFF
xorl %esi, %esi
movl %ebp, %edx
movq 0x70(%rsp), %rcx
leaq 0xb0(%rsp), %r8
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
callq 0xc02d6
movq 0x50(%rsp), %r10
movq 0x48(%rsp), %r11
testq %rax, %rax
je 0xc2a83
movq 0xc8(%rsp), %rcx
movq 0xe8(%rsp), %rax
movl (%rcx), %r13d
testq %rax, %rax
je 0xc2567
movq 0xf8(%rsp), %rcx
xorl %edx, %edx
xorl %ebx, %ebx
movl (%rcx,%rdx,4), %esi
cmpl %ebp, %esi
sete %dil
cmpl %r13d, %esi
sete %r8b
orb %dil, %r8b
jne 0xc2552
movl %esi, %esi
movq 0x10(%r11), %rdi
shrl %esi
leaq (%rsi,%rsi,4), %rsi
movl 0x10(%rdi,%rsi,8), %esi
addq %rsi, %rbx
incq %rdx
movl %edx, %esi
cmpq %rsi, %rax
ja 0xc252a
cmpq $0x10, %rbx
jbe 0xc2569
jmp 0xc2a83
xorl %ebx, %ebx
movq $0x0, 0xe8(%rsp)
movq 0x18(%r11), %rdi
movl %ebp, %edx
xorl $0x1, %edx
leaq 0xb0(%rsp), %rax
movq %rax, 0x18(%rsp)
leaq 0x140(%rsp), %rax
movq %rax, 0x8(%rsp)
leaq 0x148(%rsp), %rax
movq %rax, (%rsp)
movl $0x1, 0x10(%rsp)
xorl %esi, %esi
leaq 0x118(%rsp), %rcx
leaq 0x158(%rsp), %r8
leaq 0x150(%rsp), %r9
callq 0x1053a7
movq 0x50(%rsp), %r10
movq 0x48(%rsp), %r11
movq 0xe8(%rsp), %rax
testq %rax, %rax
je 0xc2a83
movq 0x88(%rsp), %rdx
movq (%rdx), %rcx
movq 0x80(%rdx), %rdx
movq 0xf8(%rsp), %rsi
incq %rdx
movl $0x1, %r8d
xorl %r9d, %r9d
xorl %edi, %edi
movl (%rsi,%r9,4), %r9d
shrl %r9d
movl (%rcx,%r9,4), %r10d
cmpq %r10, %rdx
jb 0xc2639
movq 0x10(%r11), %r10
leaq (%r9,%r9,4), %r9
movl 0x10(%r10,%r9,8), %r9d
addq %r9, %rdi
movl %r8d, %r9d
incl %r8d
cmpq %r9, %rax
ja 0xc260e
movq %rdi, %xmm0
punpckldq 0x16ec3a(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x16ec42(%rip), %xmm0   # 0x231290
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
mulsd 0x16e5ae(%rip), %xmm1   # 0x230c10
xorps %xmm0, %xmm0
cvtsi2sd %rbx, %xmm0
ucomisd %xmm1, %xmm0
movq 0x50(%rsp), %r10
jae 0xc2a83
movq $0x0, 0xe8(%rsp)
movq 0x18(%r11), %rdi
leaq 0xb0(%rsp), %rax
movq %rax, 0x18(%rsp)
leaq 0x140(%rsp), %rax
movq %rax, 0x8(%rsp)
leaq 0x148(%rsp), %rax
movq %rax, (%rsp)
movl $0x1, 0x10(%rsp)
xorl %esi, %esi
movl %r13d, %edx
leaq 0x118(%rsp), %rcx
leaq 0x158(%rsp), %r8
leaq 0x150(%rsp), %r9
movsd %xmm0, 0x68(%rsp)
callq 0x1053a7
movsd 0x68(%rsp), %xmm2
movq 0x50(%rsp), %r10
movq 0x48(%rsp), %r11
movq 0xe8(%rsp), %rax
testq %rax, %rax
je 0xc2a83
movq 0x88(%rsp), %rdx
movq (%rdx), %rcx
movq 0x80(%rdx), %rdx
movq 0xf8(%rsp), %rsi
incq %rdx
movl $0x1, %r8d
xorl %r9d, %r9d
xorl %edi, %edi
movl (%rsi,%r9,4), %r9d
shrl %r9d
movl (%rcx,%r9,4), %r10d
cmpq %r10, %rdx
jb 0xc2753
movq 0x10(%r11), %r10
leaq (%r9,%r9,4), %r9
movl 0x10(%r10,%r9,8), %r9d
addq %r9, %rdi
movl %r8d, %r9d
incl %r8d
cmpq %r9, %rax
ja 0xc2728
movq %rdi, %xmm0
punpckldq 0x16eb20(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x16eb28(%rip), %xmm0   # 0x231290
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
mulsd 0x16e494(%rip), %xmm1   # 0x230c10
ucomisd %xmm1, %xmm2
movq 0x50(%rsp), %r10
jae 0xc2a83
movq 0x18(%r11), %rdi
xorl %ebx, %ebx
movq %rbx, 0x38(%rsp)
movl %ebx, 0x30(%rsp)
movl %ebx, 0x28(%rsp)
movq %rbx, 0x20(%rsp)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x10(%rsp)
movl $0x1, 0x8(%rsp)
movl $0xffffffff, (%rsp)     # imm = 0xFFFFFFFF
xorl %esi, %esi
movl %ebp, %edx
movq 0x70(%rsp), %rcx
leaq 0xb0(%rsp), %r8
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
callq 0xc02d6
movq 0x50(%rsp), %r10
movq 0x48(%rsp), %r11
cmpq %rbx, 0xe8(%rsp)
je 0xc2a83
xorl %ebx, %ebx
movq 0xf8(%rsp), %rdx
movl (%rdx,%rbx,4), %eax
cmpl %ebp, %eax
je 0xc2a73
movq 0xc8(%rsp), %rcx
cmpl (%rcx), %eax
je 0xc2a73
movq 0x18(%r11), %rcx
movq 0x20(%rcx), %rsi
movl %eax, %edi
shrl %edi
cmpl $0x0, (%rsi,%rdi,8)
js 0xc2a73
cmpb $0x1, 0x4(%rsi,%rdi,8)
jne 0xc2a73
movq 0x10(%r11), %r8
leaq (%rdi,%rdi,4), %r9
cmpl $0x0, 0xc(%r8,%r9,8)
je 0xc2a73
movq %rbx, 0x60(%rsp)
leaq (%r8,%r9,8), %rdx
cmpl $0x0, 0x10(%rdx)
je 0xc2952
xorl %eax, %eax
movq %rdx, 0x68(%rsp)
movq 0x18(%rdx), %rcx
movq (%rcx,%rax,8), %rcx
shrq $0x21, %rcx
movq 0x20(%r15), %rdx
orl $0x80000000, (%rdx,%rcx,8) # imm = 0x80000000
addl %ecx, %ecx
movb $0x1, %sil
xorl %edi, %edi
orq %rcx, %rdi
movq 0x28(%r15), %rdx
movq (%rdx,%rdi,8), %rdx
movq %rdx, %r8
andq %r12, %r8
je 0xc2909
shrq $0x20, %rdx
leaq (%rdx,%rdx,2), %r9
shlq $0x3, %r9
addq 0x8(%r15), %r9
xorl %r10d, %r10d
leaq (%r10,%r10,2), %rdx
orb $-0x80, 0xf(%r9,%rdx,8)
movl 0x8(%r9,%rdx,8), %edx
xorq $0x1, %rdx
movq 0x28(%r15), %r11
movq (%r11,%rdx,8), %rdx
movq %rdx, %r11
andq %r12, %r11
je 0xc2901
movq 0x8(%r15), %r13
shrq $0x20, %rdx
shlq $0x3, %r11
leaq (%r11,%r11,2), %r11
leaq (%rdx,%rdx,2), %rdx
leaq 0xc(%r13,%rdx,8), %r13
xorl %edx, %edx
movl -0x4(%r13,%rdx), %ebx
xorl %edi, %ebx
cmpl $0x1, %ebx
jne 0xc28f8
orb $-0x80, 0x3(%r13,%rdx)
addq $0x18, %rdx
cmpq %rdx, %r11
jne 0xc28e6
incq %r10
cmpq %r8, %r10
jne 0xc28a8
movl $0x1, %edi
testb $0x1, %sil
movl $0x0, %esi
jne 0xc2882
incq %rax
movq 0x68(%rsp), %rdx
movl 0x10(%rdx), %ecx
cmpq %rcx, %rax
jb 0xc2864
movq 0x48(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0xf8(%rsp), %rax
movq 0x60(%rsp), %rdx
movl (%rax,%rdx,4), %eax
movq 0x20(%rcx), %rsi
movl %eax, %edi
shrl %edi
orb $-0x80, 0x3(%rsi,%rdi,8)
andl $-0x2, %eax
movb $0x1, %dl
xorl %esi, %esi
orq %rax, %rsi
movq 0x28(%rcx), %rdi
movq (%rdi,%rsi,8), %r8
movq %r8, %rdi
andq %r12, %rdi
je 0xc29e9
shrq $0x20, %r8
leaq (%r8,%r8,2), %r8
shlq $0x3, %r8
addq 0x8(%rcx), %r8
xorl %r9d, %r9d
leaq (%r9,%r9,2), %r10
orb $-0x80, 0xf(%r8,%r10,8)
movl 0x8(%r8,%r10,8), %r10d
xorq $0x1, %r10
movq 0x28(%rcx), %r11
movq (%r11,%r10,8), %r11
movq %r11, %r10
andq %r12, %r10
je 0xc29e1
movq 0x8(%rcx), %rbx
shrq $0x20, %r11
shlq $0x3, %r10
leaq (%r10,%r10,2), %r10
leaq (%r11,%r11,2), %r11
leaq (%rbx,%r11,8), %r11
addq $0xc, %r11
xorl %r13d, %r13d
movl -0x4(%r11,%r13), %ebx
xorl %esi, %ebx
cmpl $0x1, %ebx
jne 0xc29d8
orb $-0x80, 0x3(%r11,%r13)
addq $0x18, %r13
cmpq %r13, %r10
jne 0xc29c6
incq %r9
cmpq %rdi, %r9
jne 0xc2984
movl $0x1, %esi
testb $0x1, %dl
movl $0x0, %edx
jne 0xc295e
movq 0x48(%rsp), %r11
movq 0x10(%r11), %rax
movq 0xf8(%rsp), %rdx
movq 0x60(%rsp), %rbx
movl (%rdx,%rbx,4), %ecx
shrl %ecx
leaq (%rcx,%rcx,4), %rcx
cmpl $0x0, 0xc(%rax,%rcx,8)
je 0xc2a6e
leaq (%rax,%rcx,8), %rcx
xorl %esi, %esi
movl %esi, 0x10(%rcx)
movl (%rdx,%rbx,4), %ecx
shrl %ecx
leaq (%rcx,%rcx,4), %rcx
movl %esi, 0xc(%rax,%rcx,8)
movl (%rdx,%rbx,4), %ecx
shrl %ecx
leaq (%rcx,%rcx,4), %rcx
movq 0x18(%rax,%rcx,8), %rdi
callq 0x2220
movq 0x48(%rsp), %r11
movq 0x10(%r11), %rax
movq 0xf8(%rsp), %rdx
movl (%rdx,%rbx,4), %ecx
shrl %ecx
leaq (%rcx,%rcx,4), %rcx
movq $0x0, 0x18(%rax,%rcx,8)
movq 0x50(%rsp), %r10
incl %ebx
cmpq %rbx, 0xe8(%rsp)
ja 0xc27fa
incl %r14d
movq %r14, %rax
cmpq %r14, %r10
movq 0x58(%rsp), %rbx
ja 0xc2433
jmp 0xc2aae
movq 0x58(%rsp), %rbx
movq %rbx, %rdi
movq %rbx, %rsi
callq 0x9dc69
movq 0x48(%rsp), %r11
movq 0x18(%r11), %rdi
testl $0x7fffffff, 0x14(%rdi) # imm = 0x7FFFFFFF
movq %rbx, 0x58(%rsp)
je 0xc2cfe
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
xorl %r12d, %r12d
movq 0x20(%rdi), %rdx
movl (%rdx,%r12,8), %esi
testl %esi, %esi
js 0xc2ce6
cmpb $0x1, 0x4(%rdx,%r12,8)
jne 0xc2ce6
movq 0x10(%r11), %rcx
leaq (%r12,%r12,4), %rbp
cmpl $0x0, 0xc(%rcx,%rbp,8)
je 0xc2ce6
leaq (%rcx,%rbp,8), %rcx
cmpl $0x0, 0x10(%rcx)
je 0xc2bf2
movq %rbp, 0x50(%rsp)
xorl %edx, %edx
movq 0x18(%rcx), %rsi
movq (%rsi,%rdx,8), %rsi
shrq $0x21, %rsi
movq 0x20(%r15), %rdi
orl $0x80000000, (%rdi,%rsi,8) # imm = 0x80000000
addl %esi, %esi
movb $0x1, %dil
xorl %r8d, %r8d
orq %rsi, %r8
movq 0x28(%r15), %r9
movq (%r9,%r8,8), %r10
movq %r10, %r9
andq %r14, %r9
je 0xc2bb8
shrq $0x20, %r10
leaq (%r10,%r10,2), %r10
shlq $0x3, %r10
addq 0x8(%r15), %r10
xorl %r11d, %r11d
leaq (%r11,%r11,2), %rbx
orb $-0x80, 0xf(%r10,%rbx,8)
movl 0x8(%r10,%rbx,8), %ebx
xorq $0x1, %rbx
movq 0x28(%r15), %r13
movq (%r13,%rbx,8), %rbx
movq %rbx, %r13
andq %r14, %r13
je 0xc2bb0
movq 0x8(%r15), %rbp
shrq $0x20, %rbx
shlq $0x3, %r13
leaq (%r13,%r13,2), %r13
leaq (%rbx,%rbx,2), %rbx
leaq 0xc(%rbp,%rbx,8), %rbp
xorl %ebx, %ebx
movl -0x4(%rbp,%rbx), %eax
xorl %r8d, %eax
cmpl $0x1, %eax
jne 0xc2ba7
orb $-0x80, 0x3(%rbp,%rbx)
addq $0x18, %rbx
cmpq %rbx, %r13
jne 0xc2b96
incq %r11
cmpq %r9, %r11
jne 0xc2b56
movl $0x1, %r8d
testb $0x1, %dil
movl $0x0, %edi
jne 0xc2b30
incq %rdx
movl 0x10(%rcx), %eax
cmpq %rax, %rdx
jb 0xc2b11
movq 0x48(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x20(%rdi), %rdx
movl (%rdx,%r12,8), %esi
movq 0x50(%rsp), %rbp
orl $0x80000000, %esi       # imm = 0x80000000
movl %esi, (%rdx,%r12,8)
leaq (%r12,%r12), %rcx
movb $0x1, %dl
xorl %esi, %esi
orq %rcx, %rsi
movq 0x28(%rdi), %rax
movq (%rax,%rsi,8), %r9
movq %r9, %r8
andq %r14, %r8
je 0xc2c8e
shrq $0x20, %r9
leaq (%r9,%r9,2), %r9
shlq $0x3, %r9
addq 0x8(%rdi), %r9
xorl %r10d, %r10d
leaq (%r10,%r10,2), %rax
orb $-0x80, 0xf(%r9,%rax,8)
movl 0x8(%r9,%rax,8), %eax
xorq $0x1, %rax
movq 0x28(%rdi), %r11
movq (%r11,%rax,8), %rbx
movq %rbx, %r11
andq %r14, %r11
je 0xc2c86
movq 0x8(%rdi), %rax
shrq $0x20, %rbx
shlq $0x3, %r11
leaq (%r11,%r11,2), %r11
leaq (%rbx,%rbx,2), %rbx
leaq (%rax,%rbx,8), %r13
addq $0xc, %r13
xorl %ebx, %ebx
movl -0x4(%r13,%rbx), %eax
xorl %esi, %eax
cmpl $0x1, %eax
jne 0xc2c7d
orb $-0x80, 0x3(%r13,%rbx)
addq $0x18, %rbx
cmpq %rbx, %r11
jne 0xc2c6b
incq %r10
cmpq %r8, %r10
jne 0xc2c2a
movl $0x1, %esi
testb $0x1, %dl
movl $0x0, %edx
jne 0xc2c04
movq 0x48(%rsp), %r11
movq 0x10(%r11), %rcx
cmpl $0x0, 0xc(%rcx,%rbp,8)
je 0xc2ce6
leaq (%rcx,%rbp,8), %rax
xorl %edx, %edx
movl %edx, 0x10(%rax)
leaq (,%r12,8), %rax
leaq (%rax,%rax,4), %rbx
movl %edx, 0xc(%rcx,%rbx)
movq 0x18(%rcx,%rbx), %rdi
callq 0x2220
movq 0x48(%rsp), %r11
movq 0x10(%r11), %rax
movq $0x0, 0x18(%rax,%rbx)
incq %r12
movq 0x18(%r11), %rdi
movl 0x14(%rdi), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
cmpq %rax, %r12
jb 0xc2acd
movq %r11, %rbx
callq 0xa0a7d
movq %r15, %rdi
callq 0xa0a7d
movq 0xb0(%rsp), %rdi
callq 0x2220
movq 0xc8(%rsp), %rdi
callq 0x2220
movq 0xe0(%rsp), %rdi
callq 0x2220
movq 0xf8(%rsp), %rdi
callq 0x2220
movq 0x110(%rsp), %rdi
callq 0x2220
movq %rbx, %rdi
callq 0xa0761
movq 0x80(%rsp), %rdi
callq 0x2220
movq 0x58(%rsp), %rdi
callq 0x2220
movq 0x88(%rsp), %rbx
movq %rbx, %rdi
callq 0x13dea7
movq %rbx, %rdi
callq 0x2220
addq $0x178, %rsp            # imm = 0x178
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq