// File: chhylp123[P]hifiasm/gfa_ut.cpp
// Function: renew_ng(usg_t*, ma_ug_t*, asg_t*, ug_opt_t*, ma_sub_t**, R_to_U*, unsigned long, char const*)
asg_t *renew_ng(usg_t *eg, ma_ug_t *rug, asg_t *sg, ug_opt_t *uopt, ma_sub_t **cov, R_to_U *ruI, uint64_t scaffold_len, const char *bin_file)
{
    init_aux_table();
    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; usg_arc_t *av = NULL; usc_t *psa; ma_ug_t *ug1 = NULL;
    asg_ext_t ext; memset(&ext, 0, sizeof(ext)); ext.ext = asg_init(); asg_t *ng = ext.ext;
    usc_vec_t sa; memset(&sa, 0, sizeof(sa)); 
    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
    ug1 = convert_usg_t(eg, rug);

    // fprintf(stderr, "-0-[M::%s]\n", __func__);
    // print_vw_edge(sg, 681356, 73351, __func__);
    // prt_spec_edge(sg, R_INF.paf, R_INF.total_reads, 681356, 73351, uopt, "src");
    // // prt_spec_edge(sg, R_INF.reverse_paf, R_INF.total_reads, 681356, 73351, uopt, "rsrc");

    for (i = 0; i < ug1->u.n; ++i) {
        if(ug1->g->seq[i].del) continue;
        u = &(ug1->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 the deleted 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;
    assert(ng->n_seq == ext.idx_a.n);


    for (i = 0, nocc = ng->r_seq, sa.n = 0; i < eg->n; ++i) {
        if(ug1->g->seq[i].del) continue;
        ///there shouldn't any scaffolding within the nodes
        v = i<<1; nv = usg_arc_n(eg, v); av = usg_arc_a(eg, v);
        for (m = 0; m < nv; m++) {
            if(av[m].del || eg->a[av[m].v>>1].del) continue;
            w = av[m].v;
            vx = (v&1?((ug1->u.a[v>>1].a[0]>>32)^1):(ug1->u.a[v>>1].a[ug1->u.a[v>>1].n-1]>>32));
            wx = (w&1?((ug1->u.a[w>>1].a[ug1->u.a[w>>1].n-1]>>32)^1):(ug1->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, 0, 0);///this is a scaffold node
                ng->seq[nocc].c = 0;
                kv_push(uint64_t, ext.idx_a, ((uint64_t)-1));

                kv_pushp(usc_t, sa, &psa); 
                psa->ulid = (uint32_t)-1; psa->nid = nocc;
                psa->raw_sid = (eg->a[v>>1].mm<<1)|(v&1);///raw unitig id
                psa->raw_eid = (eg->a[w>>1].mm<<1)|(w&1);///raw unitig id
                psa->raw_sof = psa->raw_eof = (uint32_t)-1;
                nocc++;///a scaffold node
            }
        }

        v = (i<<1)+1; nv = usg_arc_n(eg, v); av = usg_arc_a(eg, v);
        for (m = 0; m < nv; m++) {
            if(av[m].del || eg->a[av[m].v>>1].del) continue;
            w = av[m].v;
            vx = (v&1?((ug1->u.a[v>>1].a[0]>>32)^1):(ug1->u.a[v>>1].a[ug1->u.a[v>>1].n-1]>>32));
            wx = (w&1?((ug1->u.a[w>>1].a[ug1->u.a[w>>1].n-1]>>32)^1):(ug1->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, 0, 0);///this is a scaffold node
                ng->seq[nocc].c = 0;
                kv_push(uint64_t, ext.idx_a, ((uint64_t)-1));

                kv_pushp(usc_t, sa, &psa); 
                psa->ulid = (uint32_t)-1; psa->nid = nocc;
                psa->raw_sid = (eg->a[v>>1].mm<<1)|(v&1);///raw unitig id
                psa->raw_eid = (eg->a[w>>1].mm<<1)|(w&1);///raw unitig id
                psa->raw_sof = psa->raw_eof = (uint32_t)-1;
                nocc++;///a scaffold node
            }
        }
    }

    assert(ng->n_seq == ext.idx_a.n); 
    CALLOC(ng->seq_vis, (ng->n_seq<<1));
    ///# scaffolding nodes
    if(sa.n > 0) fill_scaffolds(sa.a, sa.n, rug, uopt->min_ovlp, bin_file);
    realloc_rdb_adv(&(R_INF), &UL_INF, cov, ruI, ext.idx_a.a, ext.idx_a.n, scaffold_len, (char *)"scaf", ng, uopt, rug, sa.a);     
    update_paf(R_INF.paf, R_INF.reverse_paf, ext.idx_a.a, ext.idx_a.n, sg->n_seq, ng);

    for (i = 0, nocc = ng->r_seq; i < eg->n; ++i) {
        if(ug1->g->seq[i].del) continue;
        u = &(ug1->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);
            ///there shouldn't any scaffolding within the nodes
            assert(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;
        }

        v = i<<1; nv = usg_arc_n(eg, v); av = usg_arc_a(eg, v);
        for (m = 0; m < nv; m++) {
            if(av[m].del || eg->a[av[m].v>>1].del) continue;
            w = av[m].v;
            vx = (v&1?((ug1->u.a[v>>1].a[0]>>32)^1):(ug1->u.a[v>>1].a[ug1->u.a[v>>1].n-1]>>32));
            wx = (w&1?((ug1->u.a[w>>1].a[ug1->u.a[w>>1].n-1]>>32)^1):(ug1->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);
                // if(!(r >= 0)) {
                //     fprintf(stderr, "[M::%s]\tvx>>1::%lu(%c)\twx>>1::%lu(%c)\n", 
                //     __func__, vx>>1, "+-"[vx&1], wx>>1, "+-"[wx&1]);
                //     fprintf(stderr, "[M::%s]\t%.*s(%c)->%.*s(%c)\n", 
                //     __func__, (int)Get_NAME_LENGTH(R_INF, (vx>>1)), Get_NAME(R_INF, (vx>>1)), "+-"[vx&1],
                //     (int)Get_NAME_LENGTH(R_INF, (wx>>1)), Get_NAME(R_INF, (wx>>1)), "+-"[wx&1]);
                // }
                assert(r >= 0); p = asg_arc_pushp(ng); *p = t;
            } else {
                psa = &(sa.a[nocc-ng->r_seq]); z = nocc<<1; 
                assert(psa->nid == nocc);
                assert(psa->raw_sid == ((eg->a[v>>1].mm<<1)|(v&1)));
                assert(psa->raw_eid == ((eg->a[w>>1].mm<<1)|(w&1)));
                if(ng->seq[nocc].del) {///direct link vx and wx
                    push_direct_scaff_node(psa, ng, uopt, vx, wx);
                } else {
                    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;
                }
                nocc++;
            }
        }

        v = (i<<1)+1; nv = usg_arc_n(eg, v); av = usg_arc_a(eg, v);
        for (m = 0; m < nv; m++) {
            if(av[m].del || eg->a[av[m].v>>1].del) continue;
            w = av[m].v;
            vx = (v&1?((ug1->u.a[v>>1].a[0]>>32)^1):(ug1->u.a[v>>1].a[ug1->u.a[v>>1].n-1]>>32));
            wx = (w&1?((ug1->u.a[w>>1].a[ug1->u.a[w>>1].n-1]>>32)^1):(ug1->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 {
                psa = &(sa.a[nocc-ng->r_seq]); z = nocc<<1; 
                assert(psa->nid == nocc);
                assert(psa->raw_sid == ((eg->a[v>>1].mm<<1)|(v&1)));
                assert(psa->raw_eid == ((eg->a[w>>1].mm<<1)|(w&1)));
                if(ng->seq[nocc].del) {///direct link vx and wx
                    push_direct_scaff_node(psa, ng, uopt, vx, wx);
                } else {
                    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;
                }
                nocc++;
            }
        }
    }

    asg_cleanup(ng); ng->r_seq = ng->n_seq;
    free(ext.cnt.a); free(ext.idx_a.a); free(sa.a); ma_ug_destroy(ug1);

    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
pushq %r15
pushq %r14
pushq %rbx
subq $0x1d8, %rsp            # imm = 0x1D8
movq 0x18(%rbp), %rax
movq 0x10(%rbp), %rax
movq %rdi, -0x20(%rbp)
movq %rsi, -0x28(%rbp)
movq %rdx, -0x30(%rbp)
movq %rcx, -0x38(%rbp)
movq %r8, -0x40(%rbp)
movq %r9, -0x48(%rbp)
callq 0x9690
movq $0x0, -0xe0(%rbp)
movq $0x0, -0xf0(%rbp)
leaq -0x138(%rbp), %rdi
xorl %esi, %esi
movl $0x48, %edx
callq 0x2100
callq 0xcd150
movq %rax, -0x100(%rbp)
movq -0x100(%rbp), %rax
movq %rax, -0x140(%rbp)
leaq -0x158(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0x2100
movq -0x30(%rbp), %rax
movl 0x14(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movq %rax, -0xf8(%rbp)
movq -0xf8(%rbp), %rax
movq %rax, -0x130(%rbp)
movq %rax, -0x138(%rbp)
movq -0x138(%rbp), %rdi
movl $0x8, %esi
callq 0x2140
movq %rax, -0x128(%rbp)
movq -0x30(%rbp), %rax
movl 0x14(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movq %rax, -0x118(%rbp)
movq %rax, -0x120(%rbp)
movq -0x120(%rbp), %rdi
shlq $0x3, %rdi
callq 0x2270
movq %rax, -0x110(%rbp)
movq -0x110(%rbp), %rdi
movq -0x120(%rbp), %rdx
shlq $0x3, %rdx
movl $0xff, %esi
callq 0x2100
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x3679d0
movq %rax, -0xf0(%rbp)
movq $0x0, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq -0xf0(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x36909e
movq -0xf0(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x20(%rax), %rax
movq -0x58(%rbp), %rcx
movl (%rax,%rcx,8), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x368eef
jmp 0x36908d
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
imulq $0x28, -0x58(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq $0x0, -0x70(%rbp)
movq -0x70(%rbp), %rax
movq -0x50(%rbp), %rcx
movl 0x10(%rcx), %ecx
cmpq %rcx, %rax
jae 0x36908b
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x70(%rbp), %rcx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movq %rax, -0x60(%rbp)
movq -0x128(%rbp), %rax
movq -0x60(%rbp), %rcx
shrq %rcx
movq (%rax,%rcx,8), %rdx
addq $0x1, %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x128(%rbp), %rax
movq -0x60(%rbp), %rcx
shrq %rcx
cmpq $0x1, (%rax,%rcx,8)
jne 0x368f8f
movq -0x60(%rbp), %rax
shrq %rax
movq %rax, -0x78(%rbp)
movq -0x60(%rbp), %rdx
shrq %rdx
movq -0x110(%rbp), %rax
movq -0x78(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
jmp 0x36902a
movq -0x120(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x120(%rbp), %rax
cmpq -0x118(%rbp), %rax
jne 0x369001
cmpq $0x0, -0x118(%rbp)
je 0x368fc7
movq -0x118(%rbp), %rax
shlq %rax
movq %rax, -0x160(%rbp)
jmp 0x368fd5
movl $0x2, %eax
movq %rax, -0x160(%rbp)
jmp 0x368fd5
movq -0x160(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x110(%rbp), %rdi
movq -0x118(%rbp), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, -0x110(%rbp)
movq -0x60(%rbp), %rdx
shrq %rdx
movq -0x110(%rbp), %rax
movq -0x120(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x120(%rbp)
movq %rdx, (%rax,%rcx,8)
jmp 0x36902a
movq -0x78(%rbp), %rax
shlq %rax
movq -0x60(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
shlq $0x20, %rax
movq %rax, -0x80(%rbp)
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x70(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl %eax, %eax
orq -0x80(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rdx
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x70(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x70(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x70(%rbp)
jmp 0x368f0e
jmp 0x36908d
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x368eb8
movq $0x0, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq -0x30(%rbp), %rcx
movl 0x14(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x369188
movq -0x140(%rbp), %rdi
movq -0x58(%rbp), %rax
movl %eax, %esi
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x58(%rbp), %rcx
movl (%rax,%rcx,8), %edx
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
movq -0x110(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %r8
xorl %ecx, %ecx
movl $0x1, %eax
cmpq $-0x1, %r8
cmovel %eax, %ecx
callq 0xcd8f0
movq -0x140(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x58(%rbp), %rcx
movb $0x0, 0x4(%rax,%rcx,8)
movq -0x110(%rbp), %rax
movq -0x58(%rbp), %rcx
cmpq $-0x1, (%rax,%rcx,8)
je 0x369164
movq -0x110(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
cmpq -0x58(%rbp), %rax
jne 0x369143
jmp 0x369162
leaq 0x318f5(%rip), %rdi     # 0x39aa3f
leaq 0x2d068(%rip), %rsi     # 0x3961b9
movl $0x3b2d, %edx           # imm = 0x3B2D
leaq 0x318f6(%rip), %rcx     # 0x39aa53
callq 0x2130
jmp 0x369164
movq -0x58(%rbp), %rdx
movq -0x110(%rbp), %rax
movq -0x58(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x3690a6
jmp 0x36918a
movq -0x58(%rbp), %rax
cmpq -0x120(%rbp), %rax
jae 0x369245
movq -0x140(%rbp), %rdi
movq -0x58(%rbp), %rax
movl %eax, %esi
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x110(%rbp), %rcx
movq -0x58(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movl (%rax,%rcx,8), %edx
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
xorl %ecx, %ecx
callq 0xcd8f0
movq -0x140(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x58(%rbp), %rcx
movb $0x0, 0x4(%rax,%rcx,8)
movq -0x140(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x110(%rbp), %rcx
movq -0x58(%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 0x369211
jmp 0x369213
jmp 0x369232
leaq 0x318a1(%rip), %rdi     # 0x39aabb
leaq 0x2cf98(%rip), %rsi     # 0x3961b9
movl $0x3b32, %edx           # imm = 0x3B32
leaq 0x31826(%rip), %rcx     # 0x39aa53
callq 0x2130
jmp 0x369234
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x36918a
movq -0x140(%rbp), %rax
movl 0x14(%rax), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movq -0x140(%rbp), %rax
movl %ecx, 0x18(%rax)
movq -0x140(%rbp), %rax
movl 0x14(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
cmpq -0x120(%rbp), %rax
jne 0x36927b
jmp 0x36929a
leaq 0x31858(%rip), %rdi     # 0x39aada
leaq 0x2cf30(%rip), %rsi     # 0x3961b9
movl $0x3b35, %edx           # imm = 0x3B35
leaq 0x317be(%rip), %rcx     # 0x39aa53
callq 0x2130
movq $0x0, -0x58(%rbp)
movq -0x140(%rbp), %rax
movl 0x18(%rax), %eax
movq %rax, -0x98(%rbp)
movq $0x0, -0x150(%rbp)
movq -0x58(%rbp), %rax
movq -0x20(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jae 0x369df8
movq -0xf0(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x20(%rax), %rax
movq -0x58(%rbp), %rcx
movl (%rax,%rcx,8), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x3692f3
jmp 0x369de7
movq -0x58(%rbp), %rax
shlq %rax
movq %rax, -0x60(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq -0x60(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x60(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0xa0(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq -0x60(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x60(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq %rax, -0xe0(%rbp)
movq $0x0, -0x70(%rbp)
movq -0x70(%rbp), %rax
cmpq -0xa0(%rbp), %rax
jae 0x36986a
movq -0xe0(%rbp), %rax
movq -0x70(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
jne 0x3693c6
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq -0xe0(%rbp), %rcx
movq -0x70(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
cmpb $0x0, 0x70(%rax)
je 0x3693cb
jmp 0x369859
movq -0xe0(%rbp), %rax
movq -0x70(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x369423
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x60(%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 0x369470
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x60(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq -0xf0(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x60(%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, -0xa8(%rbp)
movq -0x68(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x3694df
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq -0xf0(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x68(%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 0x36950a
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x68(%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, -0xb0(%rbp)
movq -0x110(%rbp), %rax
movq -0xa8(%rbp), %rcx
shrq %rcx
movq (%rax,%rcx,8), %rax
shlq %rax
movq -0xa8(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
movq %rax, -0x88(%rbp)
movq -0x110(%rbp), %rax
movq -0xb0(%rbp), %rcx
shrq %rcx
movq (%rax,%rcx,8), %rax
shlq %rax
movq -0xb0(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
movq %rax, -0x90(%rbp)
movq -0x88(%rbp), %rax
shrq %rax
movq -0x30(%rbp), %rcx
movl 0x14(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x369592
jmp 0x3695b1
leaq 0x3155a(%rip), %rdi     # 0x39aaf3
leaq 0x2cc19(%rip), %rsi     # 0x3961b9
movl $0x3b43, %edx           # imm = 0x3B43
leaq 0x314a7(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0x90(%rbp), %rax
shrq %rax
movq -0x30(%rbp), %rcx
movl 0x14(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x3695d1
jmp 0x3695f0
leaq 0x31532(%rip), %rdi     # 0x39ab0a
leaq 0x2cbda(%rip), %rsi     # 0x3961b9
movl $0x3b44, %edx           # imm = 0x3B44
leaq 0x31468(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0xa8(%rbp), %rax
cmpq -0xb0(%rbp), %rax
jbe 0x369605
jmp 0x369859
movq -0xa8(%rbp), %rax
cmpq -0xb0(%rbp), %rax
jne 0x36962b
movq -0xa8(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x36962b
jmp 0x369859
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x88(%rbp), %rax
movl %eax, %edx
movq -0x90(%rbp), %rax
movl %eax, %ecx
leaq -0xd0(%rbp), %r8
callq 0x31f5d0
cmpl $0x0, %eax
jge 0x369857
movq -0x140(%rbp), %rdi
movq -0x98(%rbp), %rax
movl %eax, %esi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0xcd8f0
movq -0x140(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x98(%rbp), %rcx
movb $0x0, 0x4(%rax,%rcx,8)
movq -0x120(%rbp), %rax
cmpq -0x118(%rbp), %rax
jne 0x3696f1
cmpq $0x0, -0x118(%rbp)
je 0x3696b7
movq -0x118(%rbp), %rax
shlq %rax
movq %rax, -0x178(%rbp)
jmp 0x3696c5
movl $0x2, %eax
movq %rax, -0x178(%rbp)
jmp 0x3696c5
movq -0x178(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x110(%rbp), %rdi
movq -0x118(%rbp), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, -0x110(%rbp)
movq -0x110(%rbp), %rax
movq -0x120(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x120(%rbp)
movq $-0x1, (%rax,%rcx,8)
jmp 0x369717
movq -0x150(%rbp), %rax
cmpq -0x148(%rbp), %rax
jne 0x36977b
cmpq $0x0, -0x148(%rbp)
je 0x369744
movq -0x148(%rbp), %rax
shlq %rax
movq %rax, -0x180(%rbp)
jmp 0x369752
movl $0x2, %eax
movq %rax, -0x180(%rbp)
jmp 0x369752
movq -0x180(%rbp), %rax
movq %rax, -0x148(%rbp)
movq -0x158(%rbp), %rdi
imulq $0x18, -0x148(%rbp), %rsi
callq 0x2360
movq %rax, -0x158(%rbp)
movq -0x158(%rbp), %rax
movq -0x150(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x150(%rbp)
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xe8(%rbp)
movq -0xe8(%rbp), %rax
movl $0xffffffff, 0x4(%rax)  # imm = 0xFFFFFFFF
movq -0x98(%rbp), %rax
movl %eax, %ecx
movq -0xe8(%rbp), %rax
movl %ecx, (%rax)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq -0x60(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %eax
shll %eax
movl %eax, %eax
movq -0x60(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
movl %eax, %ecx
movq -0xe8(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %eax
shll %eax
movl %eax, %eax
movq -0x68(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
movl %eax, %ecx
movq -0xe8(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0xe8(%rbp), %rax
movl $0xffffffff, 0x14(%rax) # imm = 0xFFFFFFFF
movq -0xe8(%rbp), %rax
movl $0xffffffff, 0x10(%rax) # imm = 0xFFFFFFFF
movq -0x98(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x98(%rbp)
jmp 0x369859
movq -0x70(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x70(%rbp)
jmp 0x36936b
movq -0x58(%rbp), %rax
shlq %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq -0x60(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x60(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0xa0(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq -0x60(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x60(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq %rax, -0xe0(%rbp)
movq $0x0, -0x70(%rbp)
movq -0x70(%rbp), %rax
cmpq -0xa0(%rbp), %rax
jae 0x369de5
movq -0xe0(%rbp), %rax
movq -0x70(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
jne 0x369941
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq -0xe0(%rbp), %rcx
movq -0x70(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
cmpb $0x0, 0x70(%rax)
je 0x369946
jmp 0x369dd4
movq -0xe0(%rbp), %rax
movq -0x70(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x36999e
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x60(%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, -0x188(%rbp)
jmp 0x3699eb
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x60(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq -0xf0(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x60(%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, -0x188(%rbp)
movq -0x188(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x68(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x369a5a
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq -0xf0(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x68(%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, -0x190(%rbp)
jmp 0x369a85
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
shrq $0x20, %rax
movq %rax, -0x190(%rbp)
movq -0x190(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0x110(%rbp), %rax
movq -0xa8(%rbp), %rcx
shrq %rcx
movq (%rax,%rcx,8), %rax
shlq %rax
movq -0xa8(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
movq %rax, -0x88(%rbp)
movq -0x110(%rbp), %rax
movq -0xb0(%rbp), %rcx
shrq %rcx
movq (%rax,%rcx,8), %rax
shlq %rax
movq -0xb0(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
movq %rax, -0x90(%rbp)
movq -0x88(%rbp), %rax
shrq %rax
movq -0x30(%rbp), %rcx
movl 0x14(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x369b0d
jmp 0x369b2c
leaq 0x30fdf(%rip), %rdi     # 0x39aaf3
leaq 0x2c69e(%rip), %rsi     # 0x3961b9
movl $0x3b5d, %edx           # imm = 0x3B5D
leaq 0x30f2c(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0x90(%rbp), %rax
shrq %rax
movq -0x30(%rbp), %rcx
movl 0x14(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x369b4c
jmp 0x369b6b
leaq 0x30fb7(%rip), %rdi     # 0x39ab0a
leaq 0x2c65f(%rip), %rsi     # 0x3961b9
movl $0x3b5e, %edx           # imm = 0x3B5E
leaq 0x30eed(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0xa8(%rbp), %rax
cmpq -0xb0(%rbp), %rax
jbe 0x369b80
jmp 0x369dd4
movq -0xa8(%rbp), %rax
cmpq -0xb0(%rbp), %rax
jne 0x369ba6
movq -0xa8(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x369ba6
jmp 0x369dd4
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x88(%rbp), %rax
movl %eax, %edx
movq -0x90(%rbp), %rax
movl %eax, %ecx
leaq -0xd0(%rbp), %r8
callq 0x31f5d0
cmpl $0x0, %eax
jge 0x369dd2
movq -0x140(%rbp), %rdi
movq -0x98(%rbp), %rax
movl %eax, %esi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0xcd8f0
movq -0x140(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x98(%rbp), %rcx
movb $0x0, 0x4(%rax,%rcx,8)
movq -0x120(%rbp), %rax
cmpq -0x118(%rbp), %rax
jne 0x369c6c
cmpq $0x0, -0x118(%rbp)
je 0x369c32
movq -0x118(%rbp), %rax
shlq %rax
movq %rax, -0x198(%rbp)
jmp 0x369c40
movl $0x2, %eax
movq %rax, -0x198(%rbp)
jmp 0x369c40
movq -0x198(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x110(%rbp), %rdi
movq -0x118(%rbp), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, -0x110(%rbp)
movq -0x110(%rbp), %rax
movq -0x120(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x120(%rbp)
movq $-0x1, (%rax,%rcx,8)
jmp 0x369c92
movq -0x150(%rbp), %rax
cmpq -0x148(%rbp), %rax
jne 0x369cf6
cmpq $0x0, -0x148(%rbp)
je 0x369cbf
movq -0x148(%rbp), %rax
shlq %rax
movq %rax, -0x1a0(%rbp)
jmp 0x369ccd
movl $0x2, %eax
movq %rax, -0x1a0(%rbp)
jmp 0x369ccd
movq -0x1a0(%rbp), %rax
movq %rax, -0x148(%rbp)
movq -0x158(%rbp), %rdi
imulq $0x18, -0x148(%rbp), %rsi
callq 0x2360
movq %rax, -0x158(%rbp)
movq -0x158(%rbp), %rax
movq -0x150(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x150(%rbp)
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xe8(%rbp)
movq -0xe8(%rbp), %rax
movl $0xffffffff, 0x4(%rax)  # imm = 0xFFFFFFFF
movq -0x98(%rbp), %rax
movl %eax, %ecx
movq -0xe8(%rbp), %rax
movl %ecx, (%rax)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq -0x60(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %eax
shll %eax
movl %eax, %eax
movq -0x60(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
movl %eax, %ecx
movq -0xe8(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %eax
shll %eax
movl %eax, %eax
movq -0x68(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
movl %eax, %ecx
movq -0xe8(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0xe8(%rbp), %rax
movl $0xffffffff, 0x14(%rax) # imm = 0xFFFFFFFF
movq -0xe8(%rbp), %rax
movl $0xffffffff, 0x10(%rax) # imm = 0xFFFFFFFF
movq -0x98(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x98(%rbp)
jmp 0x369dd4
movq -0x70(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x70(%rbp)
jmp 0x3698e6
jmp 0x369de7
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x3692be
movq -0x140(%rbp), %rax
movl 0x14(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
cmpq -0x120(%rbp), %rax
jne 0x369e14
jmp 0x369e33
leaq 0x30cbf(%rip), %rdi     # 0x39aada
leaq 0x2c397(%rip), %rsi     # 0x3961b9
movl $0x3b70, %edx           # imm = 0x3B70
leaq 0x30c25(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0x140(%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 -0x140(%rbp), %rax
movq %rcx, 0x30(%rax)
cmpq $0x0, -0x150(%rbp)
jbe 0x369e8c
movq -0x158(%rbp), %rdi
movq -0x150(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x38(%rbp), %rax
movslq 0x44(%rax), %rcx
movq 0x18(%rbp), %r8
callq 0x3671b0
movq -0x40(%rbp), %rdx
movq -0x48(%rbp), %rcx
movq -0x110(%rbp), %r8
movq -0x120(%rbp), %r9
movq 0x10(%rbp), %r15
movq -0x140(%rbp), %rbx
movq -0x38(%rbp), %r11
movq -0x28(%rbp), %r10
movq -0x158(%rbp), %rax
leaq 0x5b40d(%rip), %rdi     # 0x3c52d0
leaq 0x5b4ee(%rip), %rsi     # 0x3c53b8
leaq 0x174c6(%rip), %r14     # 0x381397
movq %r15, (%rsp)
movq %r14, 0x8(%rsp)
movq %rbx, 0x10(%rsp)
movq %r11, 0x18(%rsp)
movq %r10, 0x20(%rsp)
movq %rax, 0x28(%rsp)
callq 0x365da0
leaq 0x5b3d6(%rip), %rax     # 0x3c52d0
movq 0x78(%rax), %rdi
leaq 0x5b3cb(%rip), %rax     # 0x3c52d0
movq 0x80(%rax), %rsi
movq -0x110(%rbp), %rdx
movq -0x120(%rbp), %rcx
movq -0x30(%rbp), %rax
movl 0x14(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movl %eax, %r8d
movq -0x140(%rbp), %r9
callq 0x36b160
movq $0x0, -0x58(%rbp)
movq -0x140(%rbp), %rax
movl 0x18(%rax), %eax
movq %rax, -0x98(%rbp)
movq -0x58(%rbp), %rax
movq -0x20(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jae 0x36b06e
movq -0xf0(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x20(%rax), %rax
movq -0x58(%rbp), %rcx
movl (%rax,%rcx,8), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x369f85
jmp 0x36b05d
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
imulq $0x28, -0x58(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq $0x1, -0x70(%rbp)
movq -0x70(%rbp), %rax
movq -0x50(%rbp), %rcx
movl 0x10(%rcx), %ecx
cmpq %rcx, %rax
jae 0x36a11f
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x70(%rbp), %rcx
subq $0x1, %rcx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movq %rax, -0x60(%rbp)
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x70(%rbp), %rcx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movq %rax, -0x68(%rbp)
movq -0x140(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x60(%rbp), %rax
movl %eax, %edx
movq -0x68(%rbp), %rax
movl %eax, %ecx
leaq -0xd0(%rbp), %r8
callq 0x31f5d0
movl %eax, -0xb4(%rbp)
cmpl $0x0, -0xb4(%rbp)
jl 0x36a020
jmp 0x36a03f
leaq 0x1a82b(%rip), %rdi     # 0x384852
leaq 0x2c18b(%rip), %rsi     # 0x3961b9
movl $0x3b7f, %edx           # imm = 0x3B7F
leaq 0x30a19(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0x140(%rbp), %rdi
callq 0x31b110
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq -0xd0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xc8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xc0(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x140(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x68(%rbp), %rax
xorq $0x1, %rax
movl %eax, %edx
movq -0x60(%rbp), %rax
xorq $0x1, %rax
movl %eax, %ecx
leaq -0xd0(%rbp), %r8
callq 0x31f5d0
movl %eax, -0xb4(%rbp)
cmpl $0x0, -0xb4(%rbp)
jl 0x36a0b5
jmp 0x36a0d4
leaq 0x1a796(%rip), %rdi     # 0x384852
leaq 0x2c0f6(%rip), %rsi     # 0x3961b9
movl $0x3b82, %edx           # imm = 0x3B82
leaq 0x30984(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0x140(%rbp), %rdi
callq 0x31b110
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq -0xd0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xc8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xc0(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x70(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x70(%rbp)
jmp 0x369fa4
movq -0x58(%rbp), %rax
shlq %rax
movq %rax, -0x60(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq -0x60(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x60(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0xa0(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq -0x60(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x60(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq %rax, -0xe0(%rbp)
movq $0x0, -0x70(%rbp)
movq -0x70(%rbp), %rax
cmpq -0xa0(%rbp), %rax
jae 0x36a8bb
movq -0xe0(%rbp), %rax
movq -0x70(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
jne 0x36a1f2
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq -0xe0(%rbp), %rcx
movq -0x70(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
cmpb $0x0, 0x70(%rax)
je 0x36a1f7
jmp 0x36a8aa
movq -0xe0(%rbp), %rax
movq -0x70(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x36a24f
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x60(%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, -0x1a8(%rbp)
jmp 0x36a29c
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x60(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq -0xf0(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x60(%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, -0x1a8(%rbp)
movq -0x1a8(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x68(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x36a30b
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq -0xf0(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x68(%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, -0x1b0(%rbp)
jmp 0x36a336
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
shrq $0x20, %rax
movq %rax, -0x1b0(%rbp)
movq -0x1b0(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0xa8(%rbp), %rax
cmpq -0xb0(%rbp), %rax
jbe 0x36a359
jmp 0x36a8aa
movq -0xa8(%rbp), %rax
cmpq -0xb0(%rbp), %rax
jne 0x36a37f
movq -0xa8(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x36a37f
jmp 0x36a8aa
movq -0x140(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0xa8(%rbp), %rax
movl %eax, %edx
movq -0xb0(%rbp), %rax
movl %eax, %ecx
leaq -0xd0(%rbp), %r8
callq 0x31f5d0
movl %eax, -0xb4(%rbp)
cmpl $0x0, -0xb4(%rbp)
jl 0x36a495
movq -0x140(%rbp), %rdi
callq 0x31b110
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq -0xd0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xc8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xc0(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x140(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0xb0(%rbp), %rax
xorq $0x1, %rax
movl %eax, %edx
movq -0xa8(%rbp), %rax
xorq $0x1, %rax
movl %eax, %ecx
leaq -0xd0(%rbp), %r8
callq 0x31f5d0
movl %eax, -0xb4(%rbp)
cmpl $0x0, -0xb4(%rbp)
jl 0x36a437
jmp 0x36a456
leaq 0x1a414(%rip), %rdi     # 0x384852
leaq 0x2bd74(%rip), %rsi     # 0x3961b9
movl $0x3b99, %edx           # imm = 0x3B99
leaq 0x30602(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0x140(%rbp), %rdi
callq 0x31b110
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq -0xd0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xc8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xc0(%rbp), %rcx
movq %rcx, 0x10(%rax)
jmp 0x36a8a8
movq -0x158(%rbp), %rax
movq -0x98(%rbp), %rcx
movq -0x140(%rbp), %rdx
movl 0x18(%rdx), %edx
subq %rdx, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xe8(%rbp)
movq -0x98(%rbp), %rax
shlq %rax
movq %rax, -0x80(%rbp)
movq -0xe8(%rbp), %rax
movl (%rax), %eax
cmpq -0x98(%rbp), %rax
jne 0x36a4e0
jmp 0x36a4ff
leaq 0x3063a(%rip), %rdi     # 0x39ab21
leaq 0x2bccb(%rip), %rsi     # 0x3961b9
movl $0x3b9c, %edx           # imm = 0x3B9C
leaq 0x30559(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0xe8(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x20(%rbp), %rcx
movq (%rcx), %rcx
movq -0x60(%rbp), %rdx
shrq %rdx
imulq $0x78, %rdx, %rdx
addq %rdx, %rcx
movl (%rcx), %ecx
shll %ecx
movl %ecx, %ecx
movq -0x60(%rbp), %rdx
andq $0x1, %rdx
orq %rdx, %rcx
cmpq %rcx, %rax
jne 0x36a536
jmp 0x36a555
leaq 0x305f5(%rip), %rdi     # 0x39ab32
leaq 0x2bc75(%rip), %rsi     # 0x3961b9
movl $0x3b9d, %edx           # imm = 0x3B9D
leaq 0x30503(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0xe8(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x20(%rbp), %rcx
movq (%rcx), %rcx
movq -0x68(%rbp), %rdx
shrq %rdx
imulq $0x78, %rdx, %rdx
addq %rdx, %rcx
movl (%rcx), %ecx
shll %ecx
movl %ecx, %ecx
movq -0x68(%rbp), %rdx
andq $0x1, %rdx
orq %rdx, %rcx
cmpq %rcx, %rax
jne 0x36a58c
jmp 0x36a5ab
leaq 0x305cb(%rip), %rdi     # 0x39ab5e
leaq 0x2bc1f(%rip), %rsi     # 0x3961b9
movl $0x3b9e, %edx           # imm = 0x3B9E
leaq 0x304ad(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0x140(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x98(%rbp), %rcx
movl (%rax,%rcx,8), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x36a5f2
movq -0xe8(%rbp), %rdi
movq -0x140(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq -0xa8(%rbp), %rcx
movq -0xb0(%rbp), %r8
callq 0x368030
jmp 0x36a896
leaq 0x5acd7(%rip), %rax     # 0x3c52d0
movq 0x78(%rax), %rdi
movq -0xa8(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq -0x38(%rbp), %rax
movslq 0x44(%rax), %rcx
movq -0x140(%rbp), %r8
callq 0x368530
leaq 0x5acad(%rip), %rax     # 0x3c52d0
movq 0x78(%rax), %rdi
movq -0x80(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq -0x38(%rbp), %rax
movslq 0x44(%rax), %rcx
movq -0x140(%rbp), %r8
callq 0x368530
movq -0x140(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0xa8(%rbp), %rax
movl %eax, %edx
movq -0x80(%rbp), %rax
movl %eax, %ecx
leaq -0xd0(%rbp), %r8
callq 0x31f5d0
movl %eax, -0xb4(%rbp)
cmpl $0x0, -0xb4(%rbp)
jl 0x36a67d
jmp 0x36a69c
leaq 0x1a1ce(%rip), %rdi     # 0x384852
leaq 0x2bb2e(%rip), %rsi     # 0x3961b9
movl $0x3ba6, %edx           # imm = 0x3BA6
leaq 0x303bc(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0x140(%rbp), %rdi
callq 0x31b110
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq -0xd0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xc8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xc0(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x140(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x80(%rbp), %rax
xorq $0x1, %rax
movl %eax, %edx
movq -0xa8(%rbp), %rax
xorq $0x1, %rax
movl %eax, %ecx
leaq -0xd0(%rbp), %r8
callq 0x31f5d0
movl %eax, -0xb4(%rbp)
cmpl $0x0, -0xb4(%rbp)
jl 0x36a715
jmp 0x36a734
leaq 0x1a136(%rip), %rdi     # 0x384852
leaq 0x2ba96(%rip), %rsi     # 0x3961b9
movl $0x3ba8, %edx           # imm = 0x3BA8
leaq 0x30324(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0x140(%rbp), %rdi
callq 0x31b110
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq -0xd0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xc8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xc0(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x140(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x80(%rbp), %rax
movl %eax, %edx
movq -0xb0(%rbp), %rax
movl %eax, %ecx
leaq -0xd0(%rbp), %r8
callq 0x31f5d0
movl %eax, -0xb4(%rbp)
cmpl $0x0, -0xb4(%rbp)
jl 0x36a7a5
jmp 0x36a7c4
leaq 0x1a0a6(%rip), %rdi     # 0x384852
leaq 0x2ba06(%rip), %rsi     # 0x3961b9
movl $0x3bab, %edx           # imm = 0x3BAB
leaq 0x30294(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0x140(%rbp), %rdi
callq 0x31b110
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq -0xd0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xc8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xc0(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x140(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0xb0(%rbp), %rax
xorq $0x1, %rax
movl %eax, %edx
movq -0x80(%rbp), %rax
xorq $0x1, %rax
movl %eax, %ecx
leaq -0xd0(%rbp), %r8
callq 0x31f5d0
movl %eax, -0xb4(%rbp)
cmpl $0x0, -0xb4(%rbp)
jl 0x36a83d
jmp 0x36a85c
leaq 0x1a00e(%rip), %rdi     # 0x384852
leaq 0x2b96e(%rip), %rsi     # 0x3961b9
movl $0x3bad, %edx           # imm = 0x3BAD
leaq 0x301fc(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0x140(%rbp), %rdi
callq 0x31b110
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq -0xd0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xc8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xc0(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x98(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x98(%rbp)
jmp 0x36a8aa
movq -0x70(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x70(%rbp)
jmp 0x36a197
movq -0x58(%rbp), %rax
shlq %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq -0x60(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x60(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0xa0(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq -0x60(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x60(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq %rax, -0xe0(%rbp)
movq $0x0, -0x70(%rbp)
movq -0x70(%rbp), %rax
cmpq -0xa0(%rbp), %rax
jae 0x36b05b
movq -0xe0(%rbp), %rax
movq -0x70(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
jne 0x36a992
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq -0xe0(%rbp), %rcx
movq -0x70(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
cmpb $0x0, 0x70(%rax)
je 0x36a997
jmp 0x36b04a
movq -0xe0(%rbp), %rax
movq -0x70(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x36a9ef
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x60(%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, -0x1b8(%rbp)
jmp 0x36aa3c
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x60(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq -0xf0(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x60(%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, -0x1b8(%rbp)
movq -0x1b8(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x68(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x36aaab
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq -0xf0(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x68(%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, -0x1c0(%rbp)
jmp 0x36aad6
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
shrq $0x20, %rax
movq %rax, -0x1c0(%rbp)
movq -0x1c0(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0xa8(%rbp), %rax
cmpq -0xb0(%rbp), %rax
jbe 0x36aaf9
jmp 0x36b04a
movq -0xa8(%rbp), %rax
cmpq -0xb0(%rbp), %rax
jne 0x36ab1f
movq -0xa8(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x36ab1f
jmp 0x36b04a
movq -0x140(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0xa8(%rbp), %rax
movl %eax, %edx
movq -0xb0(%rbp), %rax
movl %eax, %ecx
leaq -0xd0(%rbp), %r8
callq 0x31f5d0
movl %eax, -0xb4(%rbp)
cmpl $0x0, -0xb4(%rbp)
jl 0x36ac35
movq -0x140(%rbp), %rdi
callq 0x31b110
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq -0xd0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xc8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xc0(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x140(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0xb0(%rbp), %rax
xorq $0x1, %rax
movl %eax, %edx
movq -0xa8(%rbp), %rax
xorq $0x1, %rax
movl %eax, %ecx
leaq -0xd0(%rbp), %r8
callq 0x31f5d0
movl %eax, -0xb4(%rbp)
cmpl $0x0, -0xb4(%rbp)
jl 0x36abd7
jmp 0x36abf6
leaq 0x19c74(%rip), %rdi     # 0x384852
leaq 0x2b5d4(%rip), %rsi     # 0x3961b9
movl $0x3bc0, %edx           # imm = 0x3BC0
leaq 0x2fe62(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0x140(%rbp), %rdi
callq 0x31b110
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq -0xd0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xc8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xc0(%rbp), %rcx
movq %rcx, 0x10(%rax)
jmp 0x36b048
movq -0x158(%rbp), %rax
movq -0x98(%rbp), %rcx
movq -0x140(%rbp), %rdx
movl 0x18(%rdx), %edx
subq %rdx, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xe8(%rbp)
movq -0x98(%rbp), %rax
shlq %rax
movq %rax, -0x80(%rbp)
movq -0xe8(%rbp), %rax
movl (%rax), %eax
cmpq -0x98(%rbp), %rax
jne 0x36ac80
jmp 0x36ac9f
leaq 0x2fe9a(%rip), %rdi     # 0x39ab21
leaq 0x2b52b(%rip), %rsi     # 0x3961b9
movl $0x3bc3, %edx           # imm = 0x3BC3
leaq 0x2fdb9(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0xe8(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x20(%rbp), %rcx
movq (%rcx), %rcx
movq -0x60(%rbp), %rdx
shrq %rdx
imulq $0x78, %rdx, %rdx
addq %rdx, %rcx
movl (%rcx), %ecx
shll %ecx
movl %ecx, %ecx
movq -0x60(%rbp), %rdx
andq $0x1, %rdx
orq %rdx, %rcx
cmpq %rcx, %rax
jne 0x36acd6
jmp 0x36acf5
leaq 0x2fe55(%rip), %rdi     # 0x39ab32
leaq 0x2b4d5(%rip), %rsi     # 0x3961b9
movl $0x3bc4, %edx           # imm = 0x3BC4
leaq 0x2fd63(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0xe8(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x20(%rbp), %rcx
movq (%rcx), %rcx
movq -0x68(%rbp), %rdx
shrq %rdx
imulq $0x78, %rdx, %rdx
addq %rdx, %rcx
movl (%rcx), %ecx
shll %ecx
movl %ecx, %ecx
movq -0x68(%rbp), %rdx
andq $0x1, %rdx
orq %rdx, %rcx
cmpq %rcx, %rax
jne 0x36ad2c
jmp 0x36ad4b
leaq 0x2fe2b(%rip), %rdi     # 0x39ab5e
leaq 0x2b47f(%rip), %rsi     # 0x3961b9
movl $0x3bc5, %edx           # imm = 0x3BC5
leaq 0x2fd0d(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0x140(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x98(%rbp), %rcx
movl (%rax,%rcx,8), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x36ad92
movq -0xe8(%rbp), %rdi
movq -0x140(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq -0xa8(%rbp), %rcx
movq -0xb0(%rbp), %r8
callq 0x368030
jmp 0x36b036
leaq 0x5a537(%rip), %rax     # 0x3c52d0
movq 0x78(%rax), %rdi
movq -0xa8(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq -0x38(%rbp), %rax
movslq 0x44(%rax), %rcx
movq -0x140(%rbp), %r8
callq 0x368530
leaq 0x5a50d(%rip), %rax     # 0x3c52d0
movq 0x78(%rax), %rdi
movq -0x80(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq -0x38(%rbp), %rax
movslq 0x44(%rax), %rcx
movq -0x140(%rbp), %r8
callq 0x368530
movq -0x140(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0xa8(%rbp), %rax
movl %eax, %edx
movq -0x80(%rbp), %rax
movl %eax, %ecx
leaq -0xd0(%rbp), %r8
callq 0x31f5d0
movl %eax, -0xb4(%rbp)
cmpl $0x0, -0xb4(%rbp)
jl 0x36ae1d
jmp 0x36ae3c
leaq 0x19a2e(%rip), %rdi     # 0x384852
leaq 0x2b38e(%rip), %rsi     # 0x3961b9
movl $0x3bcd, %edx           # imm = 0x3BCD
leaq 0x2fc1c(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0x140(%rbp), %rdi
callq 0x31b110
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq -0xd0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xc8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xc0(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x140(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x80(%rbp), %rax
xorq $0x1, %rax
movl %eax, %edx
movq -0xa8(%rbp), %rax
xorq $0x1, %rax
movl %eax, %ecx
leaq -0xd0(%rbp), %r8
callq 0x31f5d0
movl %eax, -0xb4(%rbp)
cmpl $0x0, -0xb4(%rbp)
jl 0x36aeb5
jmp 0x36aed4
leaq 0x19996(%rip), %rdi     # 0x384852
leaq 0x2b2f6(%rip), %rsi     # 0x3961b9
movl $0x3bcf, %edx           # imm = 0x3BCF
leaq 0x2fb84(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0x140(%rbp), %rdi
callq 0x31b110
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq -0xd0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xc8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xc0(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x140(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x80(%rbp), %rax
movl %eax, %edx
movq -0xb0(%rbp), %rax
movl %eax, %ecx
leaq -0xd0(%rbp), %r8
callq 0x31f5d0
movl %eax, -0xb4(%rbp)
cmpl $0x0, -0xb4(%rbp)
jl 0x36af45
jmp 0x36af64
leaq 0x19906(%rip), %rdi     # 0x384852
leaq 0x2b266(%rip), %rsi     # 0x3961b9
movl $0x3bd2, %edx           # imm = 0x3BD2
leaq 0x2faf4(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0x140(%rbp), %rdi
callq 0x31b110
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq -0xd0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xc8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xc0(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x140(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0xb0(%rbp), %rax
xorq $0x1, %rax
movl %eax, %edx
movq -0x80(%rbp), %rax
xorq $0x1, %rax
movl %eax, %ecx
leaq -0xd0(%rbp), %r8
callq 0x31f5d0
movl %eax, -0xb4(%rbp)
cmpl $0x0, -0xb4(%rbp)
jl 0x36afdd
jmp 0x36affc
leaq 0x1986e(%rip), %rdi     # 0x384852
leaq 0x2b1ce(%rip), %rsi     # 0x3961b9
movl $0x3bd4, %edx           # imm = 0x3BD4
leaq 0x2fa5c(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0x140(%rbp), %rdi
callq 0x31b110
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq -0xd0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xc8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xc0(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x98(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x98(%rbp)
jmp 0x36b04a
movq -0x70(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x70(%rbp)
jmp 0x36a937
jmp 0x36b05d
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x369f50
movq -0x140(%rbp), %rdi
callq 0xcdd10
movq -0x140(%rbp), %rax
movl 0x14(%rax), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movq -0x140(%rbp), %rax
movl %ecx, 0x18(%rax)
movq -0x128(%rbp), %rdi
callq 0x2210
movq -0x110(%rbp), %rdi
callq 0x2210
movq -0x158(%rbp), %rdi
callq 0x2210
movq -0xf0(%rbp), %rdi
callq 0xcd6f0
movq 0x58f15(%rip), %rax     # 0x3c3fe0
movq (%rax), %rdi
movq -0x98(%rbp), %rcx
movq -0x140(%rbp), %rax
movl 0x14(%rax), %r8d
andl $0x7fffffff, %r8d       # imm = 0x7FFFFFFF
movq -0x30(%rbp), %rax
movl 0x14(%rax), %r9d
andl $0x7fffffff, %r9d       # imm = 0x7FFFFFFF
leaq 0x2fa8d(%rip), %rsi     # 0x39ab8a
leaq 0x2fab7(%rip), %rdx     # 0x39abbb
movb $0x0, %al
callq 0x22a0
movq -0x98(%rbp), %rax
movq -0x140(%rbp), %rcx
movl 0x14(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl %ecx, %ecx
cmpq %rcx, %rax
jne 0x36b12b
jmp 0x36b14a
leaq 0x2fa92(%rip), %rdi     # 0x39abc4
leaq 0x2b080(%rip), %rsi     # 0x3961b9
movl $0x3be0, %edx           # imm = 0x3BE0
leaq 0x2f90e(%rip), %rcx     # 0x39aa53
callq 0x2130
movq -0x140(%rbp), %rax
addq $0x1d8, %rsp            # imm = 0x1D8
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nop