// File: chhylp123[P]hifiasm/gfa_ut.cpp
// Function: gen_ng(ma_ug_t*, asg_t*, ug_opt_t*, ma_sub_t**, R_to_U*, unsigned long)
asg_t *gen_ng(ma_ug_t *ug, asg_t *sg, ug_opt_t *uopt, ma_sub_t **cov, R_to_U *ruI, 
uint64_t scaffold_len)
{
    ma_utg_t *u; uint64_t i, v, w, m, h, z, raw_v, raw_w, nocc, nv, vx, wx; int32_t r;
    asg_arc_t t, *p; asg_arc_t *av = NULL; uint64_t slen = scaffold_len + (uopt->min_ovlp*2);
    asg_ext_t ext; memset(&ext, 0, sizeof(ext)); ext.ext = asg_init(); asg_t *ng = ext.ext;
    ext.a_n = sg->n_seq; 
    ext.cnt.n = ext.cnt.m = ext.a_n;
    CALLOC(ext.cnt.a, ext.cnt.n);///count

    ext.idx_a.n = ext.idx_a.m = sg->n_seq; 
    MALLOC(ext.idx_a.a, ext.idx_a.n); 
    memset(ext.idx_a.a, -1, sizeof(*(ext.idx_a.a))*ext.idx_a.n);//map
    fprintf(stderr, "\n+[M::%s] 0\n", __func__);

    for (i = 0; i < ug->g->n_seq; ++i) {
        u = &(ug->u.a[i]);
        for (m = 0; m < u->n; m++) {
            v = u->a[m]>>32;
            ext.cnt.a[v>>1]++;
            if(ext.cnt.a[v>>1] == 1) {
                h = v>>1; ext.idx_a.a[h] = v>>1;
            } else {
                h = ext.idx_a.n; 
                kv_push(uint64_t, ext.idx_a, (v>>1));
            }

            z = (h<<1)|(v&1); z <<= 32; z |= ((uint32_t)u->a[m]);
            u->a[m] = z;
        }
    }

    for (i = 0; i < sg->n_seq; ++i) {
        asg_seq_set(ng, i, sg->seq[i].len, ext.idx_a.a[i]==((uint64_t)-1)?1:0);
        ng->seq[i].c = 0;
        if(ext.idx_a.a[i]!=((uint64_t)-1)) assert(ext.idx_a.a[i] == i);
        ext.idx_a.a[i] = i;///set for delted read
    }
    for (; i < ext.idx_a.n; i++) {
        asg_seq_set(ng, i, sg->seq[ext.idx_a.a[i]].len, 0);
        ng->seq[i].c = 0; assert(!(ng->seq[ext.idx_a.a[i]].del));
    }
    ng->r_seq = ng->n_seq;
    // fprintf(stderr, "+[M::%s] ng->n_seq::%u, ext.idx_a.n::%u\n", 
    // __func__, (uint32_t)ng->n_seq, (uint32_t)ext.idx_a.n);
    assert(ng->n_seq == ext.idx_a.n); 
    fprintf(stderr, "\n+[M::%s] 1\n", __func__);

    for (i = 0, nocc = ng->r_seq; i < ug->g->n_seq; ++i) {
        u = &(ug->u.a[i]);
        for (m = 1; m < u->n; m++) {
            v = u->a[m-1]>>32; w = u->a[m]>>32;
            raw_v = (ext.idx_a.a[v>>1]<<1)|(v&1);
            raw_w = (ext.idx_a.a[w>>1]<<1)|(w&1);
            assert((raw_v>>1) < sg->n_seq);
            assert((raw_w>>1) < sg->n_seq);
            if(gen_spec_edge(sg, uopt, raw_v, raw_w, &t) < 0) {
                asg_seq_set(ng, nocc, slen, 0);
                ng->seq[nocc].c = 0;
                kv_push(uint64_t, ext.idx_a, ((uint64_t)-1));
                nocc++;///a scaffold node
            }
        }

        v = i<<1; nv = asg_arc_n(ug->g, v); av = asg_arc_a(ug->g, v);
        for (m = 0; m < nv; m++) {
            if(av[m].del) continue;
            w = av[m].v;
            vx = (v&1?((ug->u.a[v>>1].a[0]>>32)^1):(ug->u.a[v>>1].a[ug->u.a[v>>1].n-1]>>32));
            wx = (w&1?((ug->u.a[w>>1].a[ug->u.a[w>>1].n-1]>>32)^1):(ug->u.a[w>>1].a[0]>>32));
            raw_v = (ext.idx_a.a[vx>>1]<<1)|(vx&1);
            raw_w = (ext.idx_a.a[wx>>1]<<1)|(wx&1);
            assert((raw_v>>1) < sg->n_seq);
            assert((raw_w>>1) < sg->n_seq);
            if(vx > wx) continue;
            if((vx == wx) && (vx&1)) continue;
            if(gen_spec_edge(sg, uopt, raw_v, raw_w, &t) < 0) {
                asg_seq_set(ng, nocc, slen, 0);
                ng->seq[nocc].c = 0;
                kv_push(uint64_t, ext.idx_a, ((uint64_t)-1));
                nocc++;///a scaffold node
            }
        }

        v = (i<<1)+1; nv = asg_arc_n(ug->g, v); av = asg_arc_a(ug->g, v);
        for (m = 0; m < nv; m++) {
            if(av[m].del) continue;
            w = av[m].v;
            vx = (v&1?((ug->u.a[v>>1].a[0]>>32)^1):(ug->u.a[v>>1].a[ug->u.a[v>>1].n-1]>>32));
            wx = (w&1?((ug->u.a[w>>1].a[ug->u.a[w>>1].n-1]>>32)^1):(ug->u.a[w>>1].a[0]>>32));
            raw_v = (ext.idx_a.a[vx>>1]<<1)|(vx&1);
            raw_w = (ext.idx_a.a[wx>>1]<<1)|(wx&1);
            assert((raw_v>>1) < sg->n_seq);
            assert((raw_w>>1) < sg->n_seq);
            if(vx > wx) continue;
            if((vx == wx) && (vx&1)) continue;
            if(gen_spec_edge(sg, uopt, raw_v, raw_w, &t) < 0) {
                asg_seq_set(ng, nocc, slen, 0);
                ng->seq[nocc].c = 0;
                kv_push(uint64_t, ext.idx_a, ((uint64_t)-1));
                nocc++;///a scaffold node
            }
        }
    }
    fprintf(stderr, "\n+[M::%s] 2\n", __func__);
    // fprintf(stderr, "+[M::%s] ng->n_seq::%u, ext.idx_a.n::%u\n", 
    // __func__, (uint32_t)ng->n_seq, (uint32_t)ext.idx_a.n);
    assert(ng->n_seq == ext.idx_a.n); 
    CALLOC(ng->seq_vis, (ng->n_seq<<1));
    realloc_rdb(&(R_INF), cov, ruI, ext.idx_a.a, ext.idx_a.n, slen, (char *)"scaf", ng, uopt);

    fprintf(stderr, "\n+[M::%s] 3\n", __func__);
    update_paf(R_INF.paf, R_INF.reverse_paf, ext.idx_a.a, ext.idx_a.n, sg->n_seq, ng);
    fprintf(stderr, "\n+[M::%s] 4\n", __func__);

    for (i = 0, nocc = ng->r_seq; i < ug->g->n_seq; ++i) {
        u = &(ug->u.a[i]);
        for (m = 1; m < u->n; m++) {
            // fprintf(stderr, "[M::%s] i::%lu, m::%lu\n", __func__, i, m);
            v = u->a[m-1]>>32; w = u->a[m]>>32;
            r = gen_spec_edge(ng, uopt, v, w, &t);
            if(r >= 0) {
                p = asg_arc_pushp(ng); *p = t;
                r = gen_spec_edge(ng, uopt, w^1, v^1, &t);
                assert(r >= 0); p = asg_arc_pushp(ng); *p = t;
            } else {
                z = nocc<<1; nocc++;
                push_scaff_node(R_INF.paf, v, z, uopt->min_ovlp, ng);
                push_scaff_node(R_INF.paf, z, w, uopt->min_ovlp, ng);

                r = gen_spec_edge(ng, uopt, v, z, &t);
                assert(r >= 0); p = asg_arc_pushp(ng); *p = t;
                r = gen_spec_edge(ng, uopt, z^1, v^1, &t);
                assert(r >= 0); p = asg_arc_pushp(ng); *p = t;

                r = gen_spec_edge(ng, uopt, z, w, &t);
                assert(r >= 0); p = asg_arc_pushp(ng); *p = t;
                r = gen_spec_edge(ng, uopt, w^1, z^1, &t);
                assert(r >= 0); p = asg_arc_pushp(ng); *p = t;
            }
        }

        v = i<<1; nv = asg_arc_n(ug->g, v); av = asg_arc_a(ug->g, v);
        for (m = 0; m < nv; m++) {
            if(av[m].del) continue;
            w = av[m].v;
            vx = (v&1?((ug->u.a[v>>1].a[0]>>32)^1):(ug->u.a[v>>1].a[ug->u.a[v>>1].n-1]>>32));
            wx = (w&1?((ug->u.a[w>>1].a[ug->u.a[w>>1].n-1]>>32)^1):(ug->u.a[w>>1].a[0]>>32));
            if(vx > wx) continue;
            if((vx == wx) && (vx&1)) continue;///it is possible

            r = gen_spec_edge(ng, uopt, vx, wx, &t);
            if(r >= 0) {
                p = asg_arc_pushp(ng); *p = t;
                r = gen_spec_edge(ng, uopt, wx^1, vx^1, &t);
                assert(r >= 0); p = asg_arc_pushp(ng); *p = t;
            } else {
                z = nocc<<1; nocc++;
                push_scaff_node(R_INF.paf, vx, z, uopt->min_ovlp, ng);
                push_scaff_node(R_INF.paf, z, wx, uopt->min_ovlp, ng);

                r = gen_spec_edge(ng, uopt, vx, z, &t);
                assert(r >= 0); p = asg_arc_pushp(ng); *p = t;
                r = gen_spec_edge(ng, uopt, z^1, vx^1, &t);
                assert(r >= 0); p = asg_arc_pushp(ng); *p = t;

                r = gen_spec_edge(ng, uopt, z, wx, &t);
                assert(r >= 0); p = asg_arc_pushp(ng); *p = t;
                r = gen_spec_edge(ng, uopt, wx^1, z^1, &t);
                assert(r >= 0); p = asg_arc_pushp(ng); *p = t;
            }
        }

        v = (i<<1)+1; nv = asg_arc_n(ug->g, v); av = asg_arc_a(ug->g, v);
        for (m = 0; m < nv; m++) {
            if(av[m].del) continue;
            w = av[m].v;
            vx = (v&1?((ug->u.a[v>>1].a[0]>>32)^1):(ug->u.a[v>>1].a[ug->u.a[v>>1].n-1]>>32));
            wx = (w&1?((ug->u.a[w>>1].a[ug->u.a[w>>1].n-1]>>32)^1):(ug->u.a[w>>1].a[0]>>32));
            if(vx > wx) continue;
            if((vx == wx) && (vx&1)) continue;///it is possible

            r = gen_spec_edge(ng, uopt, vx, wx, &t);
            if(r >= 0) {
                p = asg_arc_pushp(ng); *p = t;
                r = gen_spec_edge(ng, uopt, wx^1, vx^1, &t);
                assert(r >= 0); p = asg_arc_pushp(ng); *p = t;
            } else {
                z = nocc<<1; nocc++;
                push_scaff_node(R_INF.paf, vx, z, uopt->min_ovlp, ng);
                push_scaff_node(R_INF.paf, z, wx, uopt->min_ovlp, ng);

                r = gen_spec_edge(ng, uopt, vx, z, &t);
                assert(r >= 0); p = asg_arc_pushp(ng); *p = t;
                r = gen_spec_edge(ng, uopt, z^1, vx^1, &t);
                assert(r >= 0); p = asg_arc_pushp(ng); *p = t;

                r = gen_spec_edge(ng, uopt, z, wx, &t);
                assert(r >= 0); p = asg_arc_pushp(ng); *p = t;
                r = gen_spec_edge(ng, uopt, wx^1, z^1, &t);
                assert(r >= 0); p = asg_arc_pushp(ng); *p = t;
            }
        }
    }
    fprintf(stderr, "\n+[M::%s] 5\n", __func__);
    asg_cleanup(ng); ng->r_seq = ng->n_seq;
    free(ext.cnt.a); free(ext.idx_a.a); 
    fprintf(stderr, "[M::%s] nocc::%lu, ng->n_seq::%u, sg->n_seq::%u\n", 
    __func__, nocc, (uint32_t)ng->n_seq, (uint32_t)sg->n_seq);
    assert(nocc == ng->n_seq);
    return ng;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1a0, %rsp            # imm = 0x1A0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq $0x0, -0xc8(%rbp)
movq -0x30(%rbp), %rax
movq -0x18(%rbp), %rcx
movl 0x44(%rcx), %ecx
shll %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0xd0(%rbp)
leaq -0x118(%rbp), %rdi
xorl %esi, %esi
movl $0x48, %edx
callq 0x2100
callq 0xcd150
movq %rax, -0xe0(%rbp)
movq -0xe0(%rbp), %rax
movq %rax, -0x120(%rbp)
movq -0x10(%rbp), %rax
movl 0x14(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq %rax, -0x110(%rbp)
movq %rax, -0x118(%rbp)
movq -0x118(%rbp), %rdi
movl $0x8, %esi
callq 0x2140
movq %rax, -0x108(%rbp)
movq -0x10(%rbp), %rax
movl 0x14(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movq %rax, -0xf8(%rbp)
movq %rax, -0x100(%rbp)
movq -0x100(%rbp), %rdi
shlq $0x3, %rdi
callq 0x2270
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rdi
movq -0x100(%rbp), %rdx
shlq $0x3, %rdx
movl $0xff, %esi
callq 0x2100
movq 0x4d893(%rip), %rax     # 0x3c3fe0
movq (%rax), %rdi
leaq 0x248f8(%rip), %rsi     # 0x39b04f
leaq 0x248fe(%rip), %rdx     # 0x39b05c
movb $0x0, %al
callq 0x22a0
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq -0x8(%rbp), %rcx
movq 0x18(%rcx), %rcx
movl 0x14(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x376939
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
imulq $0x28, -0x40(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x38(%rbp)
movq $0x0, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq -0x38(%rbp), %rcx
movl 0x10(%rcx), %ecx
cmpq %rcx, %rax
jae 0x376926
movq -0x38(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movq %rax, -0x48(%rbp)
movq -0x108(%rbp), %rax
movq -0x48(%rbp), %rcx
shrq %rcx
movq (%rax,%rcx,8), %rdx
addq $0x1, %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x108(%rbp), %rax
movq -0x48(%rbp), %rcx
shrq %rcx
cmpq $0x1, (%rax,%rcx,8)
jne 0x37682a
movq -0x48(%rbp), %rax
shrq %rax
movq %rax, -0x60(%rbp)
movq -0x48(%rbp), %rdx
shrq %rdx
movq -0xf0(%rbp), %rax
movq -0x60(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
jmp 0x3768c5
movq -0x100(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x100(%rbp), %rax
cmpq -0xf8(%rbp), %rax
jne 0x37689c
cmpq $0x0, -0xf8(%rbp)
je 0x376862
movq -0xf8(%rbp), %rax
shlq %rax
movq %rax, -0x128(%rbp)
jmp 0x376870
movl $0x2, %eax
movq %rax, -0x128(%rbp)
jmp 0x376870
movq -0x128(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0xf0(%rbp), %rdi
movq -0xf8(%rbp), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, -0xf0(%rbp)
movq -0x48(%rbp), %rdx
shrq %rdx
movq -0xf0(%rbp), %rax
movq -0x100(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x100(%rbp)
movq %rdx, (%rax,%rcx,8)
jmp 0x3768c5
movq -0x60(%rbp), %rax
shlq %rax
movq -0x48(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
shlq $0x20, %rax
movq %rax, -0x68(%rbp)
movq -0x38(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl %eax, %eax
orq -0x68(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rdx
movq -0x38(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x58(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x3767a9
jmp 0x376928
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x37676d
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq -0x10(%rbp), %rcx
movl 0x14(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x376a23
movq -0x120(%rbp), %rdi
movq -0x40(%rbp), %rax
movl %eax, %esi
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x40(%rbp), %rcx
movl (%rax,%rcx,8), %edx
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
movq -0xf0(%rbp), %rax
movq -0x40(%rbp), %rcx
movq (%rax,%rcx,8), %r8
xorl %ecx, %ecx
movl $0x1, %eax
cmpq $-0x1, %r8
cmovel %eax, %ecx
callq 0xcd8f0
movq -0x120(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x40(%rbp), %rcx
movb $0x0, 0x4(%rax,%rcx,8)
movq -0xf0(%rbp), %rax
movq -0x40(%rbp), %rcx
cmpq $-0x1, (%rax,%rcx,8)
je 0x3769ff
movq -0xf0(%rbp), %rax
movq -0x40(%rbp), %rcx
movq (%rax,%rcx,8), %rax
cmpq -0x40(%rbp), %rax
jne 0x3769de
jmp 0x3769fd
leaq 0x2405a(%rip), %rdi     # 0x39aa3f
leaq 0x1f7cd(%rip), %rsi     # 0x3961b9
movl $0x438e, %edx           # imm = 0x438E
leaq 0x2466b(%rip), %rcx     # 0x39b063
callq 0x2130
jmp 0x3769ff
movq -0x40(%rbp), %rdx
movq -0xf0(%rbp), %rax
movq -0x40(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x376941
jmp 0x376a25
movq -0x40(%rbp), %rax
cmpq -0x100(%rbp), %rax
jae 0x376ae0
movq -0x120(%rbp), %rdi
movq -0x40(%rbp), %rax
movl %eax, %esi
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movq -0xf0(%rbp), %rcx
movq -0x40(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movl (%rax,%rcx,8), %edx
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
xorl %ecx, %ecx
callq 0xcd8f0
movq -0x120(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x40(%rbp), %rcx
movb $0x0, 0x4(%rax,%rcx,8)
movq -0x120(%rbp), %rax
movq 0x20(%rax), %rax
movq -0xf0(%rbp), %rcx
movq -0x40(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movl (%rax,%rcx,8), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x376aac
jmp 0x376aae
jmp 0x376acd
leaq 0x24006(%rip), %rdi     # 0x39aabb
leaq 0x1f6fd(%rip), %rsi     # 0x3961b9
movl $0x4393, %edx           # imm = 0x4393
leaq 0x2459b(%rip), %rcx     # 0x39b063
callq 0x2130
jmp 0x376acf
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x376a25
movq -0x120(%rbp), %rax
movl 0x14(%rax), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movq -0x120(%rbp), %rax
movl %ecx, 0x18(%rax)
movq -0x120(%rbp), %rax
movl 0x14(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
cmpq -0x100(%rbp), %rax
jne 0x376b16
jmp 0x376b35
leaq 0x23fbd(%rip), %rdi     # 0x39aada
leaq 0x1f695(%rip), %rsi     # 0x3961b9
movl $0x4398, %edx           # imm = 0x4398
leaq 0x24533(%rip), %rcx     # 0x39b063
callq 0x2130
movq 0x4d4a4(%rip), %rax     # 0x3c3fe0
movq (%rax), %rdi
leaq 0x2456c(%rip), %rsi     # 0x39b0b2
leaq 0x2450f(%rip), %rdx     # 0x39b05c
movb $0x0, %al
callq 0x22a0
movq $0x0, -0x40(%rbp)
movq -0x120(%rbp), %rax
movl 0x18(%rax), %eax
movq %rax, -0x80(%rbp)
movq -0x40(%rbp), %rax
movq -0x8(%rbp), %rcx
movq 0x18(%rcx), %rcx
movl 0x14(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x377573
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
imulq $0x28, -0x40(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x38(%rbp)
movq $0x1, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq -0x38(%rbp), %rcx
movl 0x10(%rcx), %ecx
cmpq %rcx, %rax
jae 0x376db2
movq -0x38(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x58(%rbp), %rcx
subq $0x1, %rcx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movq %rax, -0x48(%rbp)
movq -0x38(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movq %rax, -0x50(%rbp)
movq -0xf0(%rbp), %rax
movq -0x48(%rbp), %rcx
shrq %rcx
movq (%rax,%rcx,8), %rax
shlq %rax
movq -0x48(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0xf0(%rbp), %rax
movq -0x50(%rbp), %rcx
shrq %rcx
movq (%rax,%rcx,8), %rax
shlq %rax
movq -0x50(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
movq %rax, -0x78(%rbp)
movq -0x70(%rbp), %rax
shrq %rax
movq -0x10(%rbp), %rcx
movl 0x14(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x376c53
jmp 0x376c72
leaq 0x23e99(%rip), %rdi     # 0x39aaf3
leaq 0x1f558(%rip), %rsi     # 0x3961b9
movl $0x43a1, %edx           # imm = 0x43A1
leaq 0x243f6(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x78(%rbp), %rax
shrq %rax
movq -0x10(%rbp), %rcx
movl 0x14(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x376c8f
jmp 0x376cae
leaq 0x23e74(%rip), %rdi     # 0x39ab0a
leaq 0x1f51c(%rip), %rsi     # 0x3961b9
movl $0x43a2, %edx           # imm = 0x43A2
leaq 0x243ba(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x70(%rbp), %rax
movl %eax, %edx
movq -0x78(%rbp), %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
cmpl $0x0, %eax
jge 0x376d9f
movq -0x120(%rbp), %rdi
movq -0x80(%rbp), %rax
movl %eax, %esi
movq -0xd0(%rbp), %rax
movl %eax, %edx
xorl %ecx, %ecx
callq 0xcd8f0
movq -0x120(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x80(%rbp), %rcx
movb $0x0, 0x4(%rax,%rcx,8)
movq -0x100(%rbp), %rax
cmpq -0xf8(%rbp), %rax
jne 0x376d6f
cmpq $0x0, -0xf8(%rbp)
je 0x376d35
movq -0xf8(%rbp), %rax
shlq %rax
movq %rax, -0x130(%rbp)
jmp 0x376d43
movl $0x2, %eax
movq %rax, -0x130(%rbp)
jmp 0x376d43
movq -0x130(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0xf0(%rbp), %rdi
movq -0xf8(%rbp), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rax
movq -0x100(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x100(%rbp)
movq $-0x1, (%rax,%rcx,8)
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0x376da1
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x376ba6
movq -0x40(%rbp), %rax
shlq %rax
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl %eax, %eax
movq %rax, -0x88(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movq -0x48(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xc8(%rbp)
movq $0x0, -0x58(%rbp)
movq -0x58(%rbp), %rax
cmpq -0x88(%rbp), %rax
jae 0x377187
movq -0xc8(%rbp), %rax
imulq $0x18, -0x58(%rbp), %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x376e44
jmp 0x377176
movq -0xc8(%rbp), %rax
imulq $0x18, -0x58(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x376e96
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x48(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
shrq $0x20, %rax
xorq $0x1, %rax
movq %rax, -0x138(%rbp)
jmp 0x376edd
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x48(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x48(%rbp), %rdx
shrq %rdx
imulq $0x28, %rdx, %rdx
addq %rdx, %rcx
movl 0x10(%rcx), %ecx
subl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movq %rax, -0x138(%rbp)
movq -0x138(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x50(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x376f46
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x50(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x50(%rbp), %rdx
shrq %rdx
imulq $0x28, %rdx, %rdx
addq %rdx, %rcx
movl 0x10(%rcx), %ecx
subl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
xorq $0x1, %rax
movq %rax, -0x140(%rbp)
jmp 0x376f6e
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x50(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
shrq $0x20, %rax
movq %rax, -0x140(%rbp)
movq -0x140(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0xf0(%rbp), %rax
movq -0x90(%rbp), %rcx
shrq %rcx
movq (%rax,%rcx,8), %rax
shlq %rax
movq -0x90(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0xf0(%rbp), %rax
movq -0x98(%rbp), %rcx
shrq %rcx
movq (%rax,%rcx,8), %rax
shlq %rax
movq -0x98(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
movq %rax, -0x78(%rbp)
movq -0x70(%rbp), %rax
shrq %rax
movq -0x10(%rbp), %rcx
movl 0x14(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x376fed
jmp 0x37700c
leaq 0x23aff(%rip), %rdi     # 0x39aaf3
leaq 0x1f1be(%rip), %rsi     # 0x3961b9
movl $0x43b3, %edx           # imm = 0x43B3
leaq 0x2405c(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x78(%rbp), %rax
shrq %rax
movq -0x10(%rbp), %rcx
movl 0x14(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x377029
jmp 0x377048
leaq 0x23ada(%rip), %rdi     # 0x39ab0a
leaq 0x1f182(%rip), %rsi     # 0x3961b9
movl $0x43b4, %edx           # imm = 0x43B4
leaq 0x24020(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x90(%rbp), %rax
cmpq -0x98(%rbp), %rax
jbe 0x37705d
jmp 0x377176
movq -0x90(%rbp), %rax
cmpq -0x98(%rbp), %rax
jne 0x377083
movq -0x90(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x377083
jmp 0x377176
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x70(%rbp), %rax
movl %eax, %edx
movq -0x78(%rbp), %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
cmpl $0x0, %eax
jge 0x377174
movq -0x120(%rbp), %rdi
movq -0x80(%rbp), %rax
movl %eax, %esi
movq -0xd0(%rbp), %rax
movl %eax, %edx
xorl %ecx, %ecx
callq 0xcd8f0
movq -0x120(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x80(%rbp), %rcx
movb $0x0, 0x4(%rax,%rcx,8)
movq -0x100(%rbp), %rax
cmpq -0xf8(%rbp), %rax
jne 0x377144
cmpq $0x0, -0xf8(%rbp)
je 0x37710a
movq -0xf8(%rbp), %rax
shlq %rax
movq %rax, -0x148(%rbp)
jmp 0x377118
movl $0x2, %eax
movq %rax, -0x148(%rbp)
jmp 0x377118
movq -0x148(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0xf0(%rbp), %rdi
movq -0xf8(%rbp), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rax
movq -0x100(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x100(%rbp)
movq $-0x1, (%rax,%rcx,8)
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0x377176
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x376e14
movq -0x40(%rbp), %rax
shlq %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl %eax, %eax
movq %rax, -0x88(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movq -0x48(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xc8(%rbp)
movq $0x0, -0x58(%rbp)
movq -0x58(%rbp), %rax
cmpq -0x88(%rbp), %rax
jae 0x377560
movq -0xc8(%rbp), %rax
imulq $0x18, -0x58(%rbp), %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x37721d
jmp 0x37754f
movq -0xc8(%rbp), %rax
imulq $0x18, -0x58(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x37726f
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x48(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
shrq $0x20, %rax
xorq $0x1, %rax
movq %rax, -0x150(%rbp)
jmp 0x3772b6
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x48(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x48(%rbp), %rdx
shrq %rdx
imulq $0x28, %rdx, %rdx
addq %rdx, %rcx
movl 0x10(%rcx), %ecx
subl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movq %rax, -0x150(%rbp)
movq -0x150(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x50(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x37731f
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x50(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x50(%rbp), %rdx
shrq %rdx
imulq $0x28, %rdx, %rdx
addq %rdx, %rcx
movl 0x10(%rcx), %ecx
subl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
xorq $0x1, %rax
movq %rax, -0x158(%rbp)
jmp 0x377347
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x50(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
shrq $0x20, %rax
movq %rax, -0x158(%rbp)
movq -0x158(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0xf0(%rbp), %rax
movq -0x90(%rbp), %rcx
shrq %rcx
movq (%rax,%rcx,8), %rax
shlq %rax
movq -0x90(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0xf0(%rbp), %rax
movq -0x98(%rbp), %rcx
shrq %rcx
movq (%rax,%rcx,8), %rax
shlq %rax
movq -0x98(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
movq %rax, -0x78(%rbp)
movq -0x70(%rbp), %rax
shrq %rax
movq -0x10(%rbp), %rcx
movl 0x14(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x3773c6
jmp 0x3773e5
leaq 0x23726(%rip), %rdi     # 0x39aaf3
leaq 0x1ede5(%rip), %rsi     # 0x3961b9
movl $0x43c7, %edx           # imm = 0x43C7
leaq 0x23c83(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x78(%rbp), %rax
shrq %rax
movq -0x10(%rbp), %rcx
movl 0x14(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x377402
jmp 0x377421
leaq 0x23701(%rip), %rdi     # 0x39ab0a
leaq 0x1eda9(%rip), %rsi     # 0x3961b9
movl $0x43c8, %edx           # imm = 0x43C8
leaq 0x23c47(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x90(%rbp), %rax
cmpq -0x98(%rbp), %rax
jbe 0x377436
jmp 0x37754f
movq -0x90(%rbp), %rax
cmpq -0x98(%rbp), %rax
jne 0x37745c
movq -0x90(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x37745c
jmp 0x37754f
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x70(%rbp), %rax
movl %eax, %edx
movq -0x78(%rbp), %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
cmpl $0x0, %eax
jge 0x37754d
movq -0x120(%rbp), %rdi
movq -0x80(%rbp), %rax
movl %eax, %esi
movq -0xd0(%rbp), %rax
movl %eax, %edx
xorl %ecx, %ecx
callq 0xcd8f0
movq -0x120(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x80(%rbp), %rcx
movb $0x0, 0x4(%rax,%rcx,8)
movq -0x100(%rbp), %rax
cmpq -0xf8(%rbp), %rax
jne 0x37751d
cmpq $0x0, -0xf8(%rbp)
je 0x3774e3
movq -0xf8(%rbp), %rax
shlq %rax
movq %rax, -0x160(%rbp)
jmp 0x3774f1
movl $0x2, %eax
movq %rax, -0x160(%rbp)
jmp 0x3774f1
movq -0x160(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0xf0(%rbp), %rdi
movq -0xf8(%rbp), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rax
movq -0x100(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x100(%rbp)
movq $-0x1, (%rax,%rcx,8)
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0x37754f
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x3771ed
jmp 0x377562
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x376b6a
movq 0x4ca66(%rip), %rax     # 0x3c3fe0
movq (%rax), %rdi
leaq 0x23b3b(%rip), %rsi     # 0x39b0bf
leaq 0x23ad1(%rip), %rdx     # 0x39b05c
movb $0x0, %al
callq 0x22a0
movq -0x120(%rbp), %rax
movl 0x14(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
cmpq -0x100(%rbp), %rax
jne 0x3775ae
jmp 0x3775cd
leaq 0x23525(%rip), %rdi     # 0x39aada
leaq 0x1ebfd(%rip), %rsi     # 0x3961b9
movl $0x43d6, %edx           # imm = 0x43D6
leaq 0x23a9b(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x120(%rbp), %rax
movl 0x14(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
shll %eax
movslq %eax, %rdi
movl $0x1, %esi
callq 0x2140
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0xf0(%rbp), %rcx
movq -0x100(%rbp), %r8
movq -0xd0(%rbp), %r9
movq -0x120(%rbp), %r10
movq -0x18(%rbp), %rax
leaq 0x4dca8(%rip), %rdi     # 0x3c52d0
leaq 0x9d68(%rip), %r11      # 0x381397
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x375840
movq 0x4c997(%rip), %rax     # 0x3c3fe0
movq (%rax), %rdi
leaq 0x23a79(%rip), %rsi     # 0x39b0cc
leaq 0x23a02(%rip), %rdx     # 0x39b05c
movb $0x0, %al
callq 0x22a0
leaq 0x4dc68(%rip), %rax     # 0x3c52d0
movq 0x78(%rax), %rdi
leaq 0x4dc5d(%rip), %rax     # 0x3c52d0
movq 0x80(%rax), %rsi
movq -0xf0(%rbp), %rdx
movq -0x100(%rbp), %rcx
movq -0x10(%rbp), %rax
movl 0x14(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movl %eax, %r8d
movq -0x120(%rbp), %r9
callq 0x36b160
movq 0x4c934(%rip), %rax     # 0x3c3fe0
movq (%rax), %rdi
leaq 0x23a23(%rip), %rsi     # 0x39b0d9
leaq 0x2399f(%rip), %rdx     # 0x39b05c
movb $0x0, %al
callq 0x22a0
movq $0x0, -0x40(%rbp)
movq -0x120(%rbp), %rax
movl 0x18(%rax), %eax
movq %rax, -0x80(%rbp)
movq -0x40(%rbp), %rax
movq -0x8(%rbp), %rcx
movq 0x18(%rcx), %rcx
movl 0x14(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x37870d
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
imulq $0x28, -0x40(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x38(%rbp)
movq $0x1, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq -0x38(%rbp), %rcx
movl 0x10(%rcx), %ecx
cmpq %rcx, %rax
jae 0x377b24
movq -0x38(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x58(%rbp), %rcx
subq $0x1, %rcx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movq %rax, -0x48(%rbp)
movq -0x38(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movq %rax, -0x50(%rbp)
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x48(%rbp), %rax
movl %eax, %edx
movq -0x50(%rbp), %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x377868
movq -0x120(%rbp), %rdi
callq 0x31b110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x50(%rbp), %rax
xorq $0x1, %rax
movl %eax, %edx
movq -0x48(%rbp), %rax
xorq $0x1, %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x37780a
jmp 0x377829
leaq 0xd041(%rip), %rdi      # 0x384852
leaq 0x1e9a1(%rip), %rsi     # 0x3961b9
movl $0x43e7, %edx           # imm = 0x43E7
leaq 0x2383f(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x120(%rbp), %rdi
callq 0x31b110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x10(%rax)
jmp 0x377b11
movq -0x80(%rbp), %rax
shlq %rax
movq %rax, -0x68(%rbp)
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
leaq 0x4da4a(%rip), %rax     # 0x3c52d0
movq 0x78(%rax), %rdi
movq -0x48(%rbp), %rsi
movq -0x68(%rbp), %rdx
movq -0x18(%rbp), %rax
movslq 0x44(%rax), %rcx
movq -0x120(%rbp), %r8
callq 0x368530
leaq 0x4da23(%rip), %rax     # 0x3c52d0
movq 0x78(%rax), %rdi
movq -0x68(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq -0x18(%rbp), %rax
movslq 0x44(%rax), %rcx
movq -0x120(%rbp), %r8
callq 0x368530
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x48(%rbp), %rax
movl %eax, %edx
movq -0x68(%rbp), %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x377901
jmp 0x377920
leaq 0xcf4a(%rip), %rdi      # 0x384852
leaq 0x1e8aa(%rip), %rsi     # 0x3961b9
movl $0x43ee, %edx           # imm = 0x43EE
leaq 0x23748(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x120(%rbp), %rdi
callq 0x31b110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x68(%rbp), %rax
xorq $0x1, %rax
movl %eax, %edx
movq -0x48(%rbp), %rax
xorq $0x1, %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x377996
jmp 0x3779b5
leaq 0xceb5(%rip), %rdi      # 0x384852
leaq 0x1e815(%rip), %rsi     # 0x3961b9
movl $0x43f0, %edx           # imm = 0x43F0
leaq 0x236b3(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x120(%rbp), %rdi
callq 0x31b110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x68(%rbp), %rax
movl %eax, %edx
movq -0x50(%rbp), %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x377a23
jmp 0x377a42
leaq 0xce28(%rip), %rdi      # 0x384852
leaq 0x1e788(%rip), %rsi     # 0x3961b9
movl $0x43f3, %edx           # imm = 0x43F3
leaq 0x23626(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x120(%rbp), %rdi
callq 0x31b110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x50(%rbp), %rax
xorq $0x1, %rax
movl %eax, %edx
movq -0x68(%rbp), %rax
xorq $0x1, %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x377ab8
jmp 0x377ad7
leaq 0xcd93(%rip), %rdi      # 0x384852
leaq 0x1e6f3(%rip), %rsi     # 0x3961b9
movl $0x43f5, %edx           # imm = 0x43F5
leaq 0x23591(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x120(%rbp), %rdi
callq 0x31b110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x10(%rax)
jmp 0x377b13
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x377716
movq -0x40(%rbp), %rax
shlq %rax
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl %eax, %eax
movq %rax, -0x88(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movq -0x48(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xc8(%rbp)
movq $0x0, -0x58(%rbp)
movq -0x58(%rbp), %rax
cmpq -0x88(%rbp), %rax
jae 0x37810d
movq -0xc8(%rbp), %rax
imulq $0x18, -0x58(%rbp), %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x377bb6
jmp 0x3780fc
movq -0xc8(%rbp), %rax
imulq $0x18, -0x58(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x377c08
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x48(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
shrq $0x20, %rax
xorq $0x1, %rax
movq %rax, -0x168(%rbp)
jmp 0x377c4f
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x48(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x48(%rbp), %rdx
shrq %rdx
imulq $0x28, %rdx, %rdx
addq %rdx, %rcx
movl 0x10(%rcx), %ecx
subl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movq %rax, -0x168(%rbp)
movq -0x168(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x50(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x377cb8
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x50(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x50(%rbp), %rdx
shrq %rdx
imulq $0x28, %rdx, %rdx
addq %rdx, %rcx
movl 0x10(%rcx), %ecx
subl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
xorq $0x1, %rax
movq %rax, -0x170(%rbp)
jmp 0x377ce0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x50(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
shrq $0x20, %rax
movq %rax, -0x170(%rbp)
movq -0x170(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x90(%rbp), %rax
cmpq -0x98(%rbp), %rax
jbe 0x377d03
jmp 0x3780fc
movq -0x90(%rbp), %rax
cmpq -0x98(%rbp), %rax
jne 0x377d29
movq -0x90(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x377d29
jmp 0x3780fc
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x90(%rbp), %rax
movl %eax, %edx
movq -0x98(%rbp), %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x377e3f
movq -0x120(%rbp), %rdi
callq 0x31b110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x98(%rbp), %rax
xorq $0x1, %rax
movl %eax, %edx
movq -0x90(%rbp), %rax
xorq $0x1, %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x377de1
jmp 0x377e00
leaq 0xca6a(%rip), %rdi      # 0x384852
leaq 0x1e3ca(%rip), %rsi     # 0x3961b9
movl $0x4406, %edx           # imm = 0x4406
leaq 0x23268(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x120(%rbp), %rdi
callq 0x31b110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x10(%rax)
jmp 0x3780fa
movq -0x80(%rbp), %rax
shlq %rax
movq %rax, -0x68(%rbp)
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
leaq 0x4d473(%rip), %rax     # 0x3c52d0
movq 0x78(%rax), %rdi
movq -0x90(%rbp), %rsi
movq -0x68(%rbp), %rdx
movq -0x18(%rbp), %rax
movslq 0x44(%rax), %rcx
movq -0x120(%rbp), %r8
callq 0x368530
leaq 0x4d449(%rip), %rax     # 0x3c52d0
movq 0x78(%rax), %rdi
movq -0x68(%rbp), %rsi
movq -0x98(%rbp), %rdx
movq -0x18(%rbp), %rax
movslq 0x44(%rax), %rcx
movq -0x120(%rbp), %r8
callq 0x368530
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x90(%rbp), %rax
movl %eax, %edx
movq -0x68(%rbp), %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x377ee1
jmp 0x377f00
leaq 0xc96a(%rip), %rdi      # 0x384852
leaq 0x1e2ca(%rip), %rsi     # 0x3961b9
movl $0x440d, %edx           # imm = 0x440D
leaq 0x23168(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x120(%rbp), %rdi
callq 0x31b110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x68(%rbp), %rax
xorq $0x1, %rax
movl %eax, %edx
movq -0x90(%rbp), %rax
xorq $0x1, %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x377f79
jmp 0x377f98
leaq 0xc8d2(%rip), %rdi      # 0x384852
leaq 0x1e232(%rip), %rsi     # 0x3961b9
movl $0x440f, %edx           # imm = 0x440F
leaq 0x230d0(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x120(%rbp), %rdi
callq 0x31b110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x68(%rbp), %rax
movl %eax, %edx
movq -0x98(%rbp), %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x378009
jmp 0x378028
leaq 0xc842(%rip), %rdi      # 0x384852
leaq 0x1e1a2(%rip), %rsi     # 0x3961b9
movl $0x4412, %edx           # imm = 0x4412
leaq 0x23040(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x120(%rbp), %rdi
callq 0x31b110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x98(%rbp), %rax
xorq $0x1, %rax
movl %eax, %edx
movq -0x68(%rbp), %rax
xorq $0x1, %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x3780a1
jmp 0x3780c0
leaq 0xc7aa(%rip), %rdi      # 0x384852
leaq 0x1e10a(%rip), %rsi     # 0x3961b9
movl $0x4414, %edx           # imm = 0x4414
leaq 0x22fa8(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x120(%rbp), %rdi
callq 0x31b110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x10(%rax)
jmp 0x3780fc
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x377b86
movq -0x40(%rbp), %rax
shlq %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl %eax, %eax
movq %rax, -0x88(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movq -0x48(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xc8(%rbp)
movq $0x0, -0x58(%rbp)
movq -0x58(%rbp), %rax
cmpq -0x88(%rbp), %rax
jae 0x3786fa
movq -0xc8(%rbp), %rax
imulq $0x18, -0x58(%rbp), %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x3781a3
jmp 0x3786e9
movq -0xc8(%rbp), %rax
imulq $0x18, -0x58(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x3781f5
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x48(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
shrq $0x20, %rax
xorq $0x1, %rax
movq %rax, -0x178(%rbp)
jmp 0x37823c
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x48(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x48(%rbp), %rdx
shrq %rdx
imulq $0x28, %rdx, %rdx
addq %rdx, %rcx
movl 0x10(%rcx), %ecx
subl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movq %rax, -0x178(%rbp)
movq -0x178(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x50(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x3782a5
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x50(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x50(%rbp), %rdx
shrq %rdx
imulq $0x28, %rdx, %rdx
addq %rdx, %rcx
movl 0x10(%rcx), %ecx
subl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
xorq $0x1, %rax
movq %rax, -0x180(%rbp)
jmp 0x3782cd
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x50(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
shrq $0x20, %rax
movq %rax, -0x180(%rbp)
movq -0x180(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x90(%rbp), %rax
cmpq -0x98(%rbp), %rax
jbe 0x3782f0
jmp 0x3786e9
movq -0x90(%rbp), %rax
cmpq -0x98(%rbp), %rax
jne 0x378316
movq -0x90(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x378316
jmp 0x3786e9
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x90(%rbp), %rax
movl %eax, %edx
movq -0x98(%rbp), %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x37842c
movq -0x120(%rbp), %rdi
callq 0x31b110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x98(%rbp), %rax
xorq $0x1, %rax
movl %eax, %edx
movq -0x90(%rbp), %rax
xorq $0x1, %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x3783ce
jmp 0x3783ed
leaq 0xc47d(%rip), %rdi      # 0x384852
leaq 0x1dddd(%rip), %rsi     # 0x3961b9
movl $0x4425, %edx           # imm = 0x4425
leaq 0x22c7b(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x120(%rbp), %rdi
callq 0x31b110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x10(%rax)
jmp 0x3786e7
movq -0x80(%rbp), %rax
shlq %rax
movq %rax, -0x68(%rbp)
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
leaq 0x4ce86(%rip), %rax     # 0x3c52d0
movq 0x78(%rax), %rdi
movq -0x90(%rbp), %rsi
movq -0x68(%rbp), %rdx
movq -0x18(%rbp), %rax
movslq 0x44(%rax), %rcx
movq -0x120(%rbp), %r8
callq 0x368530
leaq 0x4ce5c(%rip), %rax     # 0x3c52d0
movq 0x78(%rax), %rdi
movq -0x68(%rbp), %rsi
movq -0x98(%rbp), %rdx
movq -0x18(%rbp), %rax
movslq 0x44(%rax), %rcx
movq -0x120(%rbp), %r8
callq 0x368530
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x90(%rbp), %rax
movl %eax, %edx
movq -0x68(%rbp), %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x3784ce
jmp 0x3784ed
leaq 0xc37d(%rip), %rdi      # 0x384852
leaq 0x1dcdd(%rip), %rsi     # 0x3961b9
movl $0x442c, %edx           # imm = 0x442C
leaq 0x22b7b(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x120(%rbp), %rdi
callq 0x31b110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x68(%rbp), %rax
xorq $0x1, %rax
movl %eax, %edx
movq -0x90(%rbp), %rax
xorq $0x1, %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x378566
jmp 0x378585
leaq 0xc2e5(%rip), %rdi      # 0x384852
leaq 0x1dc45(%rip), %rsi     # 0x3961b9
movl $0x442e, %edx           # imm = 0x442E
leaq 0x22ae3(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x120(%rbp), %rdi
callq 0x31b110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x68(%rbp), %rax
movl %eax, %edx
movq -0x98(%rbp), %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x3785f6
jmp 0x378615
leaq 0xc255(%rip), %rdi      # 0x384852
leaq 0x1dbb5(%rip), %rsi     # 0x3961b9
movl $0x4431, %edx           # imm = 0x4431
leaq 0x22a53(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x120(%rbp), %rdi
callq 0x31b110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x98(%rbp), %rax
xorq $0x1, %rax
movl %eax, %edx
movq -0x68(%rbp), %rax
xorq $0x1, %rax
movl %eax, %ecx
leaq -0xb8(%rbp), %r8
callq 0x31f5d0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x37868e
jmp 0x3786ad
leaq 0xc1bd(%rip), %rdi      # 0x384852
leaq 0x1db1d(%rip), %rsi     # 0x3961b9
movl $0x4433, %edx           # imm = 0x4433
leaq 0x229bb(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x120(%rbp), %rdi
callq 0x31b110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x10(%rax)
jmp 0x3786e9
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x378173
jmp 0x3786fc
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x3776da
movq 0x4b8cc(%rip), %rax     # 0x3c3fe0
movq (%rax), %rdi
leaq 0x229c8(%rip), %rsi     # 0x39b0e6
leaq 0x22937(%rip), %rdx     # 0x39b05c
movb $0x0, %al
callq 0x22a0
movq -0x120(%rbp), %rdi
callq 0xcdd10
movq -0x120(%rbp), %rax
movl 0x14(%rax), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movq -0x120(%rbp), %rax
movl %ecx, 0x18(%rax)
movq -0x108(%rbp), %rdi
callq 0x2210
movq -0xf0(%rbp), %rdi
callq 0x2210
movq 0x4b86f(%rip), %rax     # 0x3c3fe0
movq (%rax), %rdi
movq -0x80(%rbp), %rcx
movq -0x120(%rbp), %rax
movl 0x14(%rax), %r8d
andl $0x7fffffff, %r8d       # imm = 0x7FFFFFFF
movq -0x10(%rbp), %rax
movl 0x14(%rax), %r9d
andl $0x7fffffff, %r9d       # imm = 0x7FFFFFFF
leaq 0x223ea(%rip), %rsi     # 0x39ab8a
leaq 0x228b5(%rip), %rdx     # 0x39b05c
movb $0x0, %al
callq 0x22a0
movq -0x80(%rbp), %rax
movq -0x120(%rbp), %rcx
movl 0x14(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl %ecx, %ecx
cmpq %rcx, %rax
jne 0x3787cb
jmp 0x3787ea
leaq 0x223f2(%rip), %rdi     # 0x39abc4
leaq 0x1d9e0(%rip), %rsi     # 0x3961b9
movl $0x443c, %edx           # imm = 0x443C
leaq 0x2287e(%rip), %rcx     # 0x39b063
callq 0x2130
movq -0x120(%rbp), %rax
addq $0x1a0, %rsp            # imm = 0x1A0
popq %rbp
retq
nopw (%rax,%rax)