// File: chhylp123[P]hifiasm/hic.cpp
// Function: resolve_bubble_chain_by_hic(ha_ug_index*, kv_u_trans_t*, bubble_type*)
void resolve_bubble_chain_by_hic(ha_ug_index *idx, kv_u_trans_t *ta, bubble_type* bub)
{   
    // double index_time = yak_realtime();
    ma_ug_t* ug = idx->ug;
    ma_ug_t *bs_ug = bub->b_ug;
    uint32_t v, u, i, max_i, nv, rv, n_vx, root, flag_pri = 1, flag_aux = 2, flag_ava = 4, occ;
    double w, cutoff = 2;
    uint32_t max_w_occ = 4;
    asg_arc_t *av = NULL;
    n_vx = bs_ug->g->n_seq << 1;
    uint8_t *vis = NULL; CALLOC(vis, ug->g->n_seq<<1);
    uint8_t *is_vis = NULL; CALLOC(is_vis, ug->g->n_seq<<1);
    uint8_t *is_used = NULL; CALLOC(is_used, n_vx);
    uint8_t *dedup = NULL; CALLOC(dedup, ug->g->n_seq<<1);
    uint8_t *is_tangle = NULL; CALLOC(is_tangle, ug->g->n_seq);
    buf_t b; memset(&b, 0, sizeof(buf_t));
    kvec_t_u32_warp stack, result, res_utg;
    kv_init(stack.a); kv_init(result.a); kv_init(res_utg.a);
    double *e_w = NULL; MALLOC(e_w, bs_ug->g->n_arc);
    uint32_t *e_occ = NULL, *a_occ = NULL; CALLOC(e_occ, bs_ug->g->n_arc);
    double *aw = NULL, max_w = 0;
    kvec_asg_arc_t_warp edges; kv_init(edges.a);
    ma_ug_t *back_bs_ug = copy_untig_graph(bs_ug);

    for (i = 0; i < bs_ug->g->n_arc; i++)///weight of bs_ug's edges
    {
        e_w[i] = -1;
    }

    for (i = 0; i < bs_ug->g->n_seq; i++)///init all chain with flag_aux 
    {
        set_b_utg_weight_flag(bub, &b, i<<1, vis, flag_aux, NULL);
    }


    for (v = 0; v < n_vx; v++)
    {
        av = asg_arc_a(bs_ug->g, v);
        nv = asg_arc_n(bs_ug->g, v);
        aw = (&e_w[bs_ug->g->idx[v]>>32]);
        a_occ = (&e_occ[bs_ug->g->idx[v]>>32]);
        if(nv <= 1 || get_real_length(bs_ug->g, v, NULL) <= 1) continue;
        set_b_utg_weight_flag_xor(bub, bs_ug, &b, v^1, vis, flag_pri, NULL);

        for (i = 0; i < nv; i++)
        {
            if(av[i].del) continue;
            w = get_chain_weight_hic(bub, bs_ug, &b, av[i].v, v, ta, vis, is_vis, ug, &stack, &result, flag_pri, flag_ava, NULL, &occ);
            aw[i] = w;
            a_occ[i] = occ;
        }

        set_b_utg_weight_flag_xor(bub, bs_ug, &b, v^1, vis, flag_pri, NULL);
    }


    for (v = 0; v < n_vx; v++)
    {
        av = asg_arc_a(bs_ug->g, v);
        nv = asg_arc_n(bs_ug->g, v);
        aw = (&e_w[bs_ug->g->idx[v]>>32]);
        a_occ = (&e_occ[bs_ug->g->idx[v]>>32]);
        if(nv <= 1 || get_real_length(bs_ug->g, v, NULL) <= 1) continue;

        for (i = rv = 0, max_i = (uint32_t)-1; i < nv; i++)
        {
            if(av[i].del) continue;
            if(max_i == (uint32_t)-1)
            {
                max_i = i;
                max_w = aw[i];
            }
            else if(max_w < aw[i])
            {
                max_i = i;
                max_w = aw[i];
            }
            rv++;
        }

        if(max_i == (uint32_t)-1) continue;
        ///if(max_w <= max_w_cutoff) continue; //must be <=
        if(a_occ[max_i] <= max_w_occ) continue; //must be <=
        if(rv < 2) continue;

        for (i = 0; i < nv; i++)
        {
            if(av[i].del) continue;
            if(i == max_i) continue;
            ///if((av[i].v>>1) == (v>>1) && aw[i] <= max_w_cutoff) continue; ///might be not reasonable
            if((av[i].v>>1) == (v>>1) && a_occ[i] <= max_w_occ) continue; ///might be not reasonable
            if(aw[i]*cutoff < max_w && double_check_bub_branch(&av[i], bs_ug, e_w, e_occ, cutoff, max_w_occ))
            {
                av[i].del = 1; asg_arc_del(bs_ug->g, (av[i].v)^1, (av[i].ul>>32)^1, 1);
            }
        }
    }

    uint32_t rId_0, ori_0, rId_1, ori_1, root_0, root_1;
    for (v = 0; v < n_vx; v++)
    {
        av = asg_arc_a(bs_ug->g, v);
        nv = asg_arc_n(bs_ug->g, v);
        rv = get_real_length(bs_ug->g, v, NULL);
        if(nv == rv) continue;///no edge drop
        if(rv != 1 || nv <= 1) continue;
        get_real_length(bs_ug->g, v, &u);
        u ^= 1;
        if(get_real_length(bs_ug->g, u, NULL) != 1) continue;
        drop_g_edges_by_utg(bub, bub->b_g, bs_ug, NULL, v, u);
        if(is_used[v] || is_used[u]) continue;

        is_used[v] = is_used[u] = 1;
        root = get_utg_end_from_btg(bub, bs_ug, v);
        rId_0 = root>>1;
        ori_0 = root&1;
        get_bubbles(bub, rId_0, ori_0 == 1?&root_0:NULL, ori_0 == 0?&root_0:NULL, NULL, NULL, NULL);

        root = get_utg_end_from_btg(bub, bs_ug, u);
        rId_1 = root>>1;
        ori_1 = root&1;
        get_bubbles(bub, rId_1, ori_1 == 1?&root_1:NULL, ori_1 == 0?&root_1:NULL, NULL, NULL, NULL);

        res_utg.a.n = 0;
        set_b_utg_weight_flag_xor(bub, back_bs_ug, &b, v^1, vis, flag_pri, NULL);
        get_chain_weight_hic(bub, back_bs_ug, &b, u^1, v, ta, vis, is_vis, ug, &stack, &result, flag_pri, flag_ava, &res_utg, NULL);
        set_b_utg_weight_flag_xor(bub, back_bs_ug, &b, v^1, vis, flag_pri, NULL);
        for (i = 0; i < res_utg.a.n; i++) dedup[res_utg.a.a[i]>>1] |= 1;

        set_b_utg_weight_flag_xor(bub, back_bs_ug, &b, u^1, vis, flag_pri, NULL);
        get_chain_weight_hic(bub, back_bs_ug, &b, v^1, u, ta, vis, is_vis, ug, &stack, &result, flag_pri, flag_ava, &res_utg, NULL);
        set_b_utg_weight_flag_xor(bub, back_bs_ug, &b, u^1, vis, flag_pri, NULL);
        for (; i < res_utg.a.n; i++) dedup[res_utg.a.a[i]>>1] |= 2;

        for (i = 0; i < res_utg.a.n; i++)
        {
            if(dedup[res_utg.a.a[i]>>1] == 3)
            {
                is_tangle[res_utg.a.a[i]>>1] = 3;
            }
            else
            {
                if(is_tangle[res_utg.a.a[i]>>1] != 3)
                {
                    is_tangle[res_utg.a.a[i]>>1] = 1;
                }
            }
            dedup[res_utg.a.a[i]>>1] = 0;
        }
    }

    /*******************************for debug************************************/
    // for (i = 0; i < ug->g->n_seq; i++)
    // {
    //     if(is_tangle[i] == 1)
    //     {
    //         fprintf(stderr, "*****tangle-utg%.6ul\n", i+1);
    //     }
    // }
    /*******************************for debug************************************/
    memset(is_used, 0, n_vx);
    for (v = 0; v < n_vx; v++)
    {
        av = asg_arc_a(bs_ug->g, v);
        nv = asg_arc_n(bs_ug->g, v);
        rv = get_real_length(bs_ug->g, v, NULL);
        if(nv == rv) continue;///no edge drop
        if(rv != 1 || nv <= 1) continue;
        get_real_length(bs_ug->g, v, &u);
        u ^= 1;
        if(get_real_length(bs_ug->g, u, NULL) != 1) continue;
        drop_g_edges_by_utg(bub, bub->b_g, bs_ug, NULL, v, u);
        if(is_used[v] || is_used[u]) continue;

        is_used[v] = is_used[u] = 1;
        root = get_utg_end_from_btg(bub, bs_ug, v);
        rId_0 = root>>1;
        ori_0 = root&1;
        get_bubbles(bub, rId_0, ori_0 == 1?&root_0:NULL, ori_0 == 0?&root_0:NULL, NULL, NULL, NULL);

        root = get_utg_end_from_btg(bub, bs_ug, u);
        rId_1 = root>>1;
        ori_1 = root&1;
        get_bubbles(bub, rId_1, ori_1 == 1?&root_1:NULL, ori_1 == 0?&root_1:NULL, NULL, NULL, NULL);

        res_utg.a.n = 0;
        set_b_utg_weight_flag_xor(bub, back_bs_ug, &b, v^1, vis, flag_pri, NULL);
        get_chain_weight_hic(bub, back_bs_ug, &b, u^1, v, ta, vis, is_vis, ug, &stack, &result, flag_pri, flag_ava, &res_utg, NULL);
        set_b_utg_weight_flag_xor(bub, back_bs_ug, &b, v^1, vis, flag_pri, NULL);
        for (i = 0; i < res_utg.a.n; i++) dedup[res_utg.a.a[i]>>1] |= 1;

        set_b_utg_weight_flag_xor(bub, back_bs_ug, &b, u^1, vis, flag_pri, NULL);
        get_chain_weight_hic(bub, back_bs_ug, &b, v^1, u, ta, vis, is_vis, ug, &stack, &result, flag_pri, flag_ava, &res_utg, NULL);
        set_b_utg_weight_flag_xor(bub, back_bs_ug, &b, u^1, vis, flag_pri, NULL);
        for (; i < res_utg.a.n; i++) dedup[res_utg.a.a[i]>>1] |= 2;


        /*******************************for debug************************************/
        // fprintf(stderr, "\nres_utg.a.n: %u, beg-utg%.6ul, sink-utg%.6ul\n", 
        //             (uint32_t)res_utg.a.n, (root_0>>1)+1, (root_1>>1)+1);
        // for (i = 0; i < res_utg.a.n; i++)
        // {
        //     if(dedup[res_utg.a.a[i]>>1] == 3)
        //     {
        //         fprintf(stderr, "share-utg%.6ul\n", (res_utg.a.a[i]>>1)+1);
        //     }
        // }
        // for (i = 0; i < res_utg.a.n; i++)
        // {
        //     if(dedup[res_utg.a.a[i]>>1] == 1)
        //     {
        //         fprintf(stderr, "1-utg%.6ul\n", (res_utg.a.a[i]>>1)+1);
        //     }
        // }
        // for (i = 0; i < res_utg.a.n; i++)
        // {
        //     if(dedup[res_utg.a.a[i]>>1] == 2)
        //     {
        //         fprintf(stderr, "2-utg%.6ul\n", (res_utg.a.a[i]>>1)+1);
        //     }
        // }
        /*******************************for debug************************************/

        clean_sub_tangle(bub, vis, &res_utg, dedup, is_tangle, NULL, flag_pri, v>>1, u>>1);

        for (i = 0; i < res_utg.a.n; i++)
        {
            dedup[res_utg.a.a[i]>>1] = 0;
        }
    }


    edges.a.n = 0;
    memset(is_used, 0, n_vx);
    for (v = 0; v < n_vx; v++)
    {
        av = asg_arc_a(bs_ug->g, v);
        nv = asg_arc_n(bs_ug->g, v);
        rv = get_real_length(bs_ug->g, v, NULL);
        if(nv == rv) continue;///no edge drop
        if(rv != 1 || nv <= 1) continue;
        get_real_length(bs_ug->g, v, &u);
        u ^= 1;
        if(get_real_length(bs_ug->g, u, NULL) != 1) continue;
        drop_g_edges_by_utg(bub, bub->b_g, bs_ug, NULL, v, u);
        if(is_used[v] || is_used[u]) continue;

        is_used[v] = is_used[u] = 1;
        root = get_utg_end_from_btg(bub, bs_ug, v);
        rId_0 = root>>1;
        ori_0 = root&1;
        get_bubbles(bub, rId_0, ori_0 == 1?&root_0:NULL, ori_0 == 0?&root_0:NULL, NULL, NULL, NULL);

        root = get_utg_end_from_btg(bub, bs_ug, u);
        rId_1 = root>>1;
        ori_1 = root&1;
        get_bubbles(bub, rId_1, ori_1 == 1?&root_1:NULL, ori_1 == 0?&root_1:NULL, NULL, NULL, NULL);

        res_utg.a.n = 0;
        set_b_utg_weight_flag_xor(bub, back_bs_ug, &b, v^1, vis, flag_pri, NULL);
        get_chain_weight_hic(bub, back_bs_ug, &b, u^1, v, ta, vis, is_vis, ug, &stack, &result, flag_pri, flag_ava, &res_utg, NULL);
        set_b_utg_weight_flag_xor(bub, back_bs_ug, &b, v^1, vis, flag_pri, NULL);
        for (i = 0; i < res_utg.a.n; i++) dedup[res_utg.a.a[i]>>1] |= 1;

        set_b_utg_weight_flag_xor(bub, back_bs_ug, &b, u^1, vis, flag_pri, NULL);
        get_chain_weight_hic(bub, back_bs_ug, &b, v^1, u, ta, vis, is_vis, ug, &stack, &result, flag_pri, flag_ava, &res_utg, NULL);
        set_b_utg_weight_flag_xor(bub, back_bs_ug, &b, u^1, vis, flag_pri, NULL);
        for (; i < res_utg.a.n; i++) dedup[res_utg.a.a[i]>>1] |= 2;

        clean_sub_tangle(bub, vis, &res_utg, dedup, is_tangle, &edges, flag_pri, v>>1, u>>1);

        for (i = 0; i < res_utg.a.n; i++)
        {
            dedup[res_utg.a.a[i]>>1] = 0;
        }
    }


    /*******************************for debug************************************/
    // for (i = 0; i < ug->g->n_seq; i++)
    // {
    //     if(is_tangle[i] == 1)
    //     {
    //         fprintf(stderr, "####tangle-utg%.6ul\n", i+1);
    //     }
    // }

    // for (i = 0; i < edges.a.n; i++)
    // {
    //     fprintf(stderr, "s-utg%.6lul<------>d-utg%.6ul\n", (edges.a.a[i].ul>>33) + 1, (edges.a.a[i].v>>1) + 1);
        
    // }
    /*******************************for debug************************************/
    if(edges.a.n > 0)
    {
        for (i = 0; i < edges.a.n; i++)
        {
            asg_arc_del(bub->ug->g, edges.a.a[i].ul>>32, edges.a.a[i].v, 1);
            asg_arc_del(bub->ug->g, (edges.a.a[i].v)^1, (edges.a.a[i].ul>>32)^1, 1);
            delete_sg_e_by_ug(idx->read_g, idx->ug, edges.a.a[i].ul>>32, edges.a.a[i].v);
            delete_sg_e_by_ug(idx->read_g, idx->ug, (edges.a.a[i].v)^1, (edges.a.a[i].ul>>32)^1);
        }
        asg_cleanup(bub->ug->g);
        asg_cleanup(idx->read_g);
    }
    

    free(vis); free(is_vis); free(is_used); free(dedup); free(b.b.a); free(e_w); free(e_occ); free(is_tangle);
    kv_destroy(stack.a); kv_destroy(result.a); kv_destroy(res_utg.a); kv_destroy(edges.a);
    ma_ug_destroy(back_bs_ug);
    // fprintf(stderr, "[M::%s::%.3f]\n", __func__, yak_realtime()-index_time);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x338, %rsp            # imm = 0x338
movq %rdi, -0x30(%rbp)
movq %rsi, -0x38(%rbp)
movq %rdx, -0x40(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x40(%rbp), %rax
movq 0xc0(%rax), %rax
movq %rax, -0x50(%rbp)
movl $0x1, -0x74(%rbp)
movl $0x2, -0x78(%rbp)
movl $0x4, -0x7c(%rbp)
movsd 0x186cd1(%rip), %xmm0   # 0x3822e8
movsd %xmm0, -0x90(%rbp)
movl $0x4, -0x94(%rbp)
movq $0x0, -0xa0(%rbp)
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movl 0x14(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
shll %eax
movl %eax, -0x6c(%rbp)
movq $0x0, -0xa8(%rbp)
movq -0x48(%rbp), %rax
movq 0x18(%rax), %rax
movl 0x14(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
shll %eax
movslq %eax, %rdi
movl $0x1, %esi
callq 0x2140
movq %rax, -0xa8(%rbp)
movq $0x0, -0xb0(%rbp)
movq -0x48(%rbp), %rax
movq 0x18(%rax), %rax
movl 0x14(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
shll %eax
movslq %eax, %rdi
movl $0x1, %esi
callq 0x2140
movq %rax, -0xb0(%rbp)
movq $0x0, -0xb8(%rbp)
movl -0x6c(%rbp), %eax
movl %eax, %edi
movl $0x1, %esi
callq 0x2140
movq %rax, -0xb8(%rbp)
movq $0x0, -0xc0(%rbp)
movq -0x48(%rbp), %rax
movq 0x18(%rax), %rax
movl 0x14(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
shll %eax
movslq %eax, %rdi
movl $0x1, %esi
callq 0x2140
movq %rax, -0xc0(%rbp)
movq $0x0, -0xc8(%rbp)
movq -0x48(%rbp), %rax
movq 0x18(%rax), %rax
movl 0x14(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movl %eax, %edi
movl $0x1, %esi
callq 0x2140
movq %rax, -0xc8(%rbp)
leaq -0x130(%rbp), %rdi
xorl %esi, %esi
movl $0x68, %edx
callq 0x2100
movq $0x0, -0x148(%rbp)
movq $0x0, -0x150(%rbp)
movq $0x0, -0x140(%rbp)
movq $0x0, -0x168(%rbp)
movq $0x0, -0x170(%rbp)
movq $0x0, -0x160(%rbp)
movq $0x0, -0x188(%rbp)
movq $0x0, -0x190(%rbp)
movq $0x0, -0x180(%rbp)
movq $0x0, -0x198(%rbp)
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movl 0x4(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movl %eax, %edi
shlq $0x3, %rdi
callq 0x2270
movq %rax, -0x198(%rbp)
movq $0x0, -0x1a0(%rbp)
movq $0x0, -0x1a8(%rbp)
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movl 0x4(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movl %eax, %edi
movl $0x4, %esi
callq 0x2140
movq %rax, -0x1a0(%rbp)
movq $0x0, -0x1b0(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x1b8(%rbp)
movq $0x0, -0x1d0(%rbp)
movq $0x0, -0x1d8(%rbp)
movq $0x0, -0x1c8(%rbp)
movq -0x50(%rbp), %rdi
callq 0x10ba70
movq %rax, -0x1e0(%rbp)
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movq -0x50(%rbp), %rcx
movq 0x18(%rcx), %rcx
movl 0x4(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
cmpl %ecx, %eax
jae 0x1fb895
movq -0x198(%rbp), %rax
movl -0x5c(%rbp), %ecx
movsd 0x1869f3(%rip), %xmm0   # 0x382278
movsd %xmm0, (%rax,%rcx,8)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1fb85b
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movq -0x50(%rbp), %rcx
movq 0x18(%rcx), %rcx
movl 0x14(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
cmpl %ecx, %eax
jae 0x1fb8e4
movq -0x40(%rbp), %rdi
movl -0x5c(%rbp), %edx
shll %edx
movq -0xa8(%rbp), %rcx
movl -0x78(%rbp), %r8d
leaq -0x130(%rbp), %rsi
xorl %eax, %eax
movl %eax, %r9d
callq 0x1e0580
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1fb89c
movl $0x0, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl -0x6c(%rbp), %eax
jae 0x1fbb25
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x50(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0x54(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xa0(%rbp)
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movl -0x54(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0x64(%rbp)
movq -0x198(%rbp), %rax
movq -0x50(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0x54(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x1b0(%rbp)
movq -0x1a0(%rbp), %rax
movq -0x50(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0x54(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x1a8(%rbp)
cmpl $0x1, -0x64(%rbp)
jbe 0x1fb9b5
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x54(%rbp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x166b50
cmpl $0x1, %eax
jg 0x1fb9ba
jmp 0x1fbb17
movq -0x40(%rbp), %rdi
movq -0x50(%rbp), %rsi
movl -0x54(%rbp), %ecx
xorl $0x1, %ecx
movq -0xa8(%rbp), %r8
movl -0x74(%rbp), %r9d
leaq -0x130(%rbp), %rdx
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1e53f0
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x64(%rbp), %eax
jae 0x1fbae8
movq -0xa0(%rbp), %rax
movl -0x5c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x1fba1d
jmp 0x1fbada
movq -0x40(%rbp), %rdi
movq -0x50(%rbp), %rsi
movq -0xa0(%rbp), %rax
movl -0x5c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
movl -0x54(%rbp), %r8d
movq -0x38(%rbp), %r9
movq -0xa8(%rbp), %r13
movq -0xb0(%rbp), %r12
movq -0x48(%rbp), %r15
movl -0x74(%rbp), %r11d
movl -0x7c(%rbp), %r10d
leaq -0x130(%rbp), %rdx
leaq -0x150(%rbp), %r14
leaq -0x170(%rbp), %rbx
xorl %eax, %eax
leaq -0x80(%rbp), %rax
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq %rbx, 0x20(%rsp)
movl %r11d, 0x28(%rsp)
movl %r10d, 0x30(%rsp)
movq $0x0, 0x38(%rsp)
movq %rax, 0x40(%rsp)
callq 0x1f8150
movsd %xmm0, -0x88(%rbp)
movsd -0x88(%rbp), %xmm0
movq -0x1b0(%rbp), %rax
movl -0x5c(%rbp), %ecx
movsd %xmm0, (%rax,%rcx,8)
movl -0x80(%rbp), %edx
movq -0x1a8(%rbp), %rax
movl -0x5c(%rbp), %ecx
movl %edx, (%rax,%rcx,4)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1fb9f0
movq -0x40(%rbp), %rdi
movq -0x50(%rbp), %rsi
movl -0x54(%rbp), %ecx
xorl $0x1, %ecx
movq -0xa8(%rbp), %r8
movl -0x74(%rbp), %r9d
leaq -0x130(%rbp), %rdx
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1e53f0
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x1fb8eb
movl $0x0, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl -0x6c(%rbp), %eax
jae 0x1fbe4b
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x50(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0x54(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xa0(%rbp)
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movl -0x54(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0x64(%rbp)
movq -0x198(%rbp), %rax
movq -0x50(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0x54(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x1b0(%rbp)
movq -0x1a0(%rbp), %rax
movq -0x50(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0x54(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x1a8(%rbp)
cmpl $0x1, -0x64(%rbp)
jbe 0x1fbbf6
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x54(%rbp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x166b50
cmpl $0x1, %eax
jg 0x1fbbfb
jmp 0x1fbe3d
movl $0x0, -0x68(%rbp)
movl $0x0, -0x5c(%rbp)
movl $0xffffffff, -0x60(%rbp) # imm = 0xFFFFFFFF
movl -0x5c(%rbp), %eax
cmpl -0x64(%rbp), %eax
jae 0x1fbcb2
movq -0xa0(%rbp), %rax
movl -0x5c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x1fbc3a
jmp 0x1fbca4
cmpl $-0x1, -0x60(%rbp)
jne 0x1fbc5f
movl -0x5c(%rbp), %eax
movl %eax, -0x60(%rbp)
movq -0x1b0(%rbp), %rax
movl -0x5c(%rbp), %ecx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x1b8(%rbp)
jmp 0x1fbc9b
movsd -0x1b8(%rbp), %xmm1
movq -0x1b0(%rbp), %rax
movl -0x5c(%rbp), %ecx
movsd (%rax,%rcx,8), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x1fbc99
movl -0x5c(%rbp), %eax
movl %eax, -0x60(%rbp)
movq -0x1b0(%rbp), %rax
movl -0x5c(%rbp), %ecx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x1b8(%rbp)
jmp 0x1fbc9b
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1fbc10
cmpl $-0x1, -0x60(%rbp)
jne 0x1fbcbd
jmp 0x1fbe3d
movq -0x1a8(%rbp), %rax
movl -0x60(%rbp), %ecx
movl (%rax,%rcx,4), %eax
cmpl -0x94(%rbp), %eax
ja 0x1fbcd7
jmp 0x1fbe3d
cmpl $0x2, -0x68(%rbp)
jae 0x1fbce2
jmp 0x1fbe3d
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x64(%rbp), %eax
jae 0x1fbe3b
movq -0xa0(%rbp), %rax
movl -0x5c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x1fbd16
jmp 0x1fbe2d
movl -0x5c(%rbp), %eax
cmpl -0x60(%rbp), %eax
jne 0x1fbd23
jmp 0x1fbe2d
movq -0xa0(%rbp), %rax
movl -0x5c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
shrl %eax
movl -0x54(%rbp), %ecx
shrl %ecx
cmpl %ecx, %eax
jne 0x1fbd5c
movq -0x1a8(%rbp), %rax
movl -0x5c(%rbp), %ecx
movl (%rax,%rcx,4), %eax
cmpl -0x94(%rbp), %eax
ja 0x1fbd5c
jmp 0x1fbe2d
movq -0x1b0(%rbp), %rax
movl -0x5c(%rbp), %ecx
movsd (%rax,%rcx,8), %xmm1
mulsd -0x90(%rbp), %xmm1
movsd -0x1b8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x1fbe2b
movq -0xa0(%rbp), %rdi
movl -0x5c(%rbp), %eax
imulq $0x18, %rax, %rax
addq %rax, %rdi
movq -0x50(%rbp), %rsi
movq -0x198(%rbp), %rdx
movq -0x1a0(%rbp), %rcx
movsd -0x90(%rbp), %xmm0
movl -0x94(%rbp), %r8d
callq 0x1e6bd0
cmpl $0x0, %eax
je 0x1fbe2b
movq -0xa0(%rbp), %rax
movl -0x5c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
orl $0x80000000, %ecx       # imm = 0x80000000
movl %ecx, 0xc(%rax)
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0xa0(%rbp), %rax
movl -0x5c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %esi
xorl $0x1, %esi
movq -0xa0(%rbp), %rax
movl -0x5c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
shrq $0x20, %rax
xorq $0x1, %rax
movl %eax, %edx
movl $0x1, %ecx
callq 0x1de8a0
jmp 0x1fbe2d
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1fbce9
jmp 0x1fbe3d
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x1fbb2c
movl $0x0, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl -0x6c(%rbp), %eax
jae 0x1fc44f
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x50(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0x54(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xa0(%rbp)
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movl -0x54(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0x64(%rbp)
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x54(%rbp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x166b50
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %eax
cmpl -0x68(%rbp), %eax
jne 0x1fbec9
jmp 0x1fc441
cmpl $0x1, -0x68(%rbp)
jne 0x1fbed5
cmpl $0x1, -0x64(%rbp)
ja 0x1fbeda
jmp 0x1fc441
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x54(%rbp), %esi
leaq -0x58(%rbp), %rdx
callq 0x166b50
movl -0x58(%rbp), %eax
xorl $0x1, %eax
movl %eax, -0x58(%rbp)
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x58(%rbp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x166b50
cmpl $0x1, %eax
je 0x1fbf15
jmp 0x1fc441
movq -0x40(%rbp), %rdi
movq -0x40(%rbp), %rax
movq 0xb8(%rax), %rsi
movq -0x50(%rbp), %rdx
movl -0x54(%rbp), %r8d
movl -0x58(%rbp), %r9d
xorl %eax, %eax
movl %eax, %ecx
callq 0x1e22d0
movq -0xb8(%rbp), %rax
movl -0x54(%rbp), %ecx
cmpb $0x0, (%rax,%rcx)
jne 0x1fbf59
movq -0xb8(%rbp), %rax
movl -0x58(%rbp), %ecx
cmpb $0x0, (%rax,%rcx)
je 0x1fbf5e
jmp 0x1fc441
movq -0xb8(%rbp), %rax
movl -0x58(%rbp), %ecx
movb $0x1, (%rax,%rcx)
movq -0xb8(%rbp), %rax
movl -0x54(%rbp), %ecx
movb $0x1, (%rax,%rcx)
movq -0x40(%rbp), %rdi
movq -0x50(%rbp), %rsi
movl -0x54(%rbp), %edx
callq 0x1e2260
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %eax
shrl %eax
movl %eax, -0x1e4(%rbp)
movl -0x70(%rbp), %eax
andl $0x1, %eax
movl %eax, -0x1e8(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x208(%rbp)
movl -0x1e4(%rbp), %eax
movq %rax, -0x200(%rbp)
cmpl $0x1, -0x1e8(%rbp)
jne 0x1fbfd5
leaq -0x1f4(%rbp), %rax
movq %rax, -0x210(%rbp)
jmp 0x1fbfe0
xorl %eax, %eax
movq %rax, -0x210(%rbp)
jmp 0x1fbfe0
movq -0x210(%rbp), %rax
movq %rax, -0x218(%rbp)
cmpl $0x0, -0x1e8(%rbp)
jne 0x1fc007
leaq -0x1f4(%rbp), %rax
movq %rax, -0x220(%rbp)
jmp 0x1fc012
xorl %eax, %eax
movq %rax, -0x220(%rbp)
jmp 0x1fc012
movq -0x218(%rbp), %rdx
movq -0x200(%rbp), %rsi
movq -0x208(%rbp), %rdi
movq -0x220(%rbp), %rcx
xorl %eax, %eax
movl %eax, %r9d
movq %r9, %r8
movq $0x0, (%rsp)
callq 0x1c4b20
movq -0x40(%rbp), %rdi
movq -0x50(%rbp), %rsi
movl -0x58(%rbp), %edx
callq 0x1e2260
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %eax
shrl %eax
movl %eax, -0x1ec(%rbp)
movl -0x70(%rbp), %eax
andl $0x1, %eax
movl %eax, -0x1f0(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x230(%rbp)
movl -0x1ec(%rbp), %eax
movq %rax, -0x228(%rbp)
cmpl $0x1, -0x1f0(%rbp)
jne 0x1fc09e
leaq -0x1f8(%rbp), %rax
movq %rax, -0x238(%rbp)
jmp 0x1fc0a9
xorl %eax, %eax
movq %rax, -0x238(%rbp)
jmp 0x1fc0a9
movq -0x238(%rbp), %rax
movq %rax, -0x240(%rbp)
cmpl $0x0, -0x1f0(%rbp)
jne 0x1fc0d0
leaq -0x1f8(%rbp), %rax
movq %rax, -0x248(%rbp)
jmp 0x1fc0db
xorl %eax, %eax
movq %rax, -0x248(%rbp)
jmp 0x1fc0db
movq -0x240(%rbp), %rdx
movq -0x228(%rbp), %rsi
movq -0x230(%rbp), %rdi
movq -0x248(%rbp), %rcx
xorl %eax, %eax
movl %eax, %r9d
movq %r9, %r8
movq $0x0, (%rsp)
callq 0x1c4b20
movq $0x0, -0x190(%rbp)
movq -0x40(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
movl -0x54(%rbp), %ecx
xorl $0x1, %ecx
movq -0xa8(%rbp), %r8
movl -0x74(%rbp), %r9d
leaq -0x130(%rbp), %rdx
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1e53f0
movq -0x40(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
movl -0x58(%rbp), %ecx
xorl $0x1, %ecx
movl -0x54(%rbp), %r8d
movq -0x38(%rbp), %r9
movq -0xa8(%rbp), %r13
movq -0xb0(%rbp), %r12
movq -0x48(%rbp), %r15
movl -0x74(%rbp), %r11d
movl -0x7c(%rbp), %r10d
leaq -0x130(%rbp), %rdx
leaq -0x150(%rbp), %r14
leaq -0x170(%rbp), %rbx
leaq -0x190(%rbp), %rax
movq %rax, -0x250(%rbp)
xorl %eax, %eax
movq -0x250(%rbp), %rax
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq %rbx, 0x20(%rsp)
movl %r11d, 0x28(%rsp)
movl %r10d, 0x30(%rsp)
movq %rax, 0x38(%rsp)
movq $0x0, 0x40(%rsp)
callq 0x1f8150
movq -0x40(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
movl -0x54(%rbp), %ecx
xorl $0x1, %ecx
movq -0xa8(%rbp), %r8
movl -0x74(%rbp), %r9d
leaq -0x130(%rbp), %rdx
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1e53f0
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpq -0x190(%rbp), %rax
jae 0x1fc24f
movq -0xc0(%rbp), %rax
movq -0x180(%rbp), %rcx
movl -0x5c(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
orl $0x1, %edx
movb %dl, (%rax,%rcx)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1fc216
movq -0x40(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
movl -0x58(%rbp), %ecx
xorl $0x1, %ecx
movq -0xa8(%rbp), %r8
movl -0x74(%rbp), %r9d
leaq -0x130(%rbp), %rdx
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1e53f0
movq -0x40(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
movl -0x54(%rbp), %ecx
xorl $0x1, %ecx
movl -0x58(%rbp), %r8d
movq -0x38(%rbp), %r9
movq -0xa8(%rbp), %r13
movq -0xb0(%rbp), %r12
movq -0x48(%rbp), %r15
movl -0x74(%rbp), %r11d
movl -0x7c(%rbp), %r10d
leaq -0x130(%rbp), %rdx
leaq -0x150(%rbp), %r14
leaq -0x170(%rbp), %rbx
leaq -0x190(%rbp), %rax
movq %rax, -0x258(%rbp)
xorl %eax, %eax
movq -0x258(%rbp), %rax
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq %rbx, 0x20(%rsp)
movl %r11d, 0x28(%rsp)
movl %r10d, 0x30(%rsp)
movq %rax, 0x38(%rsp)
movq $0x0, 0x40(%rsp)
callq 0x1f8150
movq -0x40(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
movl -0x58(%rbp), %ecx
xorl $0x1, %ecx
movq -0xa8(%rbp), %r8
movl -0x74(%rbp), %r9d
leaq -0x130(%rbp), %rdx
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1e53f0
movl -0x5c(%rbp), %eax
cmpq -0x190(%rbp), %rax
jae 0x1fc380
movq -0xc0(%rbp), %rax
movq -0x180(%rbp), %rcx
movl -0x5c(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
orl $0x2, %edx
movb %dl, (%rax,%rcx)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1fc347
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpq -0x190(%rbp), %rax
jae 0x1fc43f
movq -0xc0(%rbp), %rax
movq -0x180(%rbp), %rcx
movl -0x5c(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %eax
cmpl $0x3, %eax
jne 0x1fc3d6
movq -0xc8(%rbp), %rax
movq -0x180(%rbp), %rcx
movl -0x5c(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movb $0x3, (%rax,%rcx)
jmp 0x1fc415
movq -0xc8(%rbp), %rax
movq -0x180(%rbp), %rcx
movl -0x5c(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %eax
cmpl $0x3, %eax
je 0x1fc413
movq -0xc8(%rbp), %rax
movq -0x180(%rbp), %rcx
movl -0x5c(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movb $0x1, (%rax,%rcx)
jmp 0x1fc415
movq -0xc0(%rbp), %rax
movq -0x180(%rbp), %rcx
movl -0x5c(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movb $0x0, (%rax,%rcx)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1fc387
jmp 0x1fc441
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x1fbe52
movq -0xb8(%rbp), %rdi
movl -0x6c(%rbp), %eax
movl %eax, %edx
xorl %esi, %esi
callq 0x2100
movl $0x0, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl -0x6c(%rbp), %eax
jae 0x1fca26
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x50(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0x54(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xa0(%rbp)
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movl -0x54(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0x64(%rbp)
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x54(%rbp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x166b50
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %eax
cmpl -0x68(%rbp), %eax
jne 0x1fc4e0
jmp 0x1fca18
cmpl $0x1, -0x68(%rbp)
jne 0x1fc4ec
cmpl $0x1, -0x64(%rbp)
ja 0x1fc4f1
jmp 0x1fca18
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x54(%rbp), %esi
leaq -0x58(%rbp), %rdx
callq 0x166b50
movl -0x58(%rbp), %eax
xorl $0x1, %eax
movl %eax, -0x58(%rbp)
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x58(%rbp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x166b50
cmpl $0x1, %eax
je 0x1fc52c
jmp 0x1fca18
movq -0x40(%rbp), %rdi
movq -0x40(%rbp), %rax
movq 0xb8(%rax), %rsi
movq -0x50(%rbp), %rdx
movl -0x54(%rbp), %r8d
movl -0x58(%rbp), %r9d
xorl %eax, %eax
movl %eax, %ecx
callq 0x1e22d0
movq -0xb8(%rbp), %rax
movl -0x54(%rbp), %ecx
cmpb $0x0, (%rax,%rcx)
jne 0x1fc570
movq -0xb8(%rbp), %rax
movl -0x58(%rbp), %ecx
cmpb $0x0, (%rax,%rcx)
je 0x1fc575
jmp 0x1fca18
movq -0xb8(%rbp), %rax
movl -0x58(%rbp), %ecx
movb $0x1, (%rax,%rcx)
movq -0xb8(%rbp), %rax
movl -0x54(%rbp), %ecx
movb $0x1, (%rax,%rcx)
movq -0x40(%rbp), %rdi
movq -0x50(%rbp), %rsi
movl -0x54(%rbp), %edx
callq 0x1e2260
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %eax
shrl %eax
movl %eax, -0x1e4(%rbp)
movl -0x70(%rbp), %eax
andl $0x1, %eax
movl %eax, -0x1e8(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x268(%rbp)
movl -0x1e4(%rbp), %eax
movq %rax, -0x260(%rbp)
cmpl $0x1, -0x1e8(%rbp)
jne 0x1fc5ec
leaq -0x1f4(%rbp), %rax
movq %rax, -0x270(%rbp)
jmp 0x1fc5f7
xorl %eax, %eax
movq %rax, -0x270(%rbp)
jmp 0x1fc5f7
movq -0x270(%rbp), %rax
movq %rax, -0x278(%rbp)
cmpl $0x0, -0x1e8(%rbp)
jne 0x1fc61e
leaq -0x1f4(%rbp), %rax
movq %rax, -0x280(%rbp)
jmp 0x1fc629
xorl %eax, %eax
movq %rax, -0x280(%rbp)
jmp 0x1fc629
movq -0x278(%rbp), %rdx
movq -0x260(%rbp), %rsi
movq -0x268(%rbp), %rdi
movq -0x280(%rbp), %rcx
xorl %eax, %eax
movl %eax, %r9d
movq %r9, %r8
movq $0x0, (%rsp)
callq 0x1c4b20
movq -0x40(%rbp), %rdi
movq -0x50(%rbp), %rsi
movl -0x58(%rbp), %edx
callq 0x1e2260
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %eax
shrl %eax
movl %eax, -0x1ec(%rbp)
movl -0x70(%rbp), %eax
andl $0x1, %eax
movl %eax, -0x1f0(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x290(%rbp)
movl -0x1ec(%rbp), %eax
movq %rax, -0x288(%rbp)
cmpl $0x1, -0x1f0(%rbp)
jne 0x1fc6b5
leaq -0x1f8(%rbp), %rax
movq %rax, -0x298(%rbp)
jmp 0x1fc6c0
xorl %eax, %eax
movq %rax, -0x298(%rbp)
jmp 0x1fc6c0
movq -0x298(%rbp), %rax
movq %rax, -0x2a0(%rbp)
cmpl $0x0, -0x1f0(%rbp)
jne 0x1fc6e7
leaq -0x1f8(%rbp), %rax
movq %rax, -0x2a8(%rbp)
jmp 0x1fc6f2
xorl %eax, %eax
movq %rax, -0x2a8(%rbp)
jmp 0x1fc6f2
movq -0x2a0(%rbp), %rdx
movq -0x288(%rbp), %rsi
movq -0x290(%rbp), %rdi
movq -0x2a8(%rbp), %rcx
xorl %eax, %eax
movl %eax, %r9d
movq %r9, %r8
movq $0x0, (%rsp)
callq 0x1c4b20
movq $0x0, -0x190(%rbp)
movq -0x40(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
movl -0x54(%rbp), %ecx
xorl $0x1, %ecx
movq -0xa8(%rbp), %r8
movl -0x74(%rbp), %r9d
leaq -0x130(%rbp), %rdx
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1e53f0
movq -0x40(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
movl -0x58(%rbp), %ecx
xorl $0x1, %ecx
movl -0x54(%rbp), %r8d
movq -0x38(%rbp), %r9
movq -0xa8(%rbp), %r13
movq -0xb0(%rbp), %r12
movq -0x48(%rbp), %r15
movl -0x74(%rbp), %r11d
movl -0x7c(%rbp), %r10d
leaq -0x130(%rbp), %rdx
leaq -0x150(%rbp), %r14
leaq -0x170(%rbp), %rbx
leaq -0x190(%rbp), %rax
movq %rax, -0x2b0(%rbp)
xorl %eax, %eax
movq -0x2b0(%rbp), %rax
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq %rbx, 0x20(%rsp)
movl %r11d, 0x28(%rsp)
movl %r10d, 0x30(%rsp)
movq %rax, 0x38(%rsp)
movq $0x0, 0x40(%rsp)
callq 0x1f8150
movq -0x40(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
movl -0x54(%rbp), %ecx
xorl $0x1, %ecx
movq -0xa8(%rbp), %r8
movl -0x74(%rbp), %r9d
leaq -0x130(%rbp), %rdx
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1e53f0
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpq -0x190(%rbp), %rax
jae 0x1fc866
movq -0xc0(%rbp), %rax
movq -0x180(%rbp), %rcx
movl -0x5c(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
orl $0x1, %edx
movb %dl, (%rax,%rcx)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1fc82d
movq -0x40(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
movl -0x58(%rbp), %ecx
xorl $0x1, %ecx
movq -0xa8(%rbp), %r8
movl -0x74(%rbp), %r9d
leaq -0x130(%rbp), %rdx
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1e53f0
movq -0x40(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
movl -0x54(%rbp), %ecx
xorl $0x1, %ecx
movl -0x58(%rbp), %r8d
movq -0x38(%rbp), %r9
movq -0xa8(%rbp), %r13
movq -0xb0(%rbp), %r12
movq -0x48(%rbp), %r15
movl -0x74(%rbp), %r11d
movl -0x7c(%rbp), %r10d
leaq -0x130(%rbp), %rdx
leaq -0x150(%rbp), %r14
leaq -0x170(%rbp), %rbx
leaq -0x190(%rbp), %rax
movq %rax, -0x2b8(%rbp)
xorl %eax, %eax
movq -0x2b8(%rbp), %rax
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq %rbx, 0x20(%rsp)
movl %r11d, 0x28(%rsp)
movl %r10d, 0x30(%rsp)
movq %rax, 0x38(%rsp)
movq $0x0, 0x40(%rsp)
callq 0x1f8150
movq -0x40(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
movl -0x58(%rbp), %ecx
xorl $0x1, %ecx
movq -0xa8(%rbp), %r8
movl -0x74(%rbp), %r9d
leaq -0x130(%rbp), %rdx
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1e53f0
movl -0x5c(%rbp), %eax
cmpq -0x190(%rbp), %rax
jae 0x1fc997
movq -0xc0(%rbp), %rax
movq -0x180(%rbp), %rcx
movl -0x5c(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
orl $0x2, %edx
movb %dl, (%rax,%rcx)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1fc95e
movq -0x40(%rbp), %rdi
movq -0xa8(%rbp), %rsi
movq -0xc0(%rbp), %rcx
movq -0xc8(%rbp), %r8
movl -0x74(%rbp), %r11d
movl -0x54(%rbp), %r10d
shrl %r10d
movl -0x58(%rbp), %eax
shrl %eax
leaq -0x190(%rbp), %rdx
xorl %r9d, %r9d
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
movl %eax, 0x10(%rsp)
callq 0x1fa3d0
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpq -0x190(%rbp), %rax
jae 0x1fca16
movq -0xc0(%rbp), %rax
movq -0x180(%rbp), %rcx
movl -0x5c(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movb $0x0, (%rax,%rcx)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1fc9e3
jmp 0x1fca18
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x1fc469
movq $0x0, -0x1d8(%rbp)
movq -0xb8(%rbp), %rdi
movl -0x6c(%rbp), %eax
movl %eax, %edx
xorl %esi, %esi
callq 0x2100
movl $0x0, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl -0x6c(%rbp), %eax
jae 0x1fd00c
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x50(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0x54(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xa0(%rbp)
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movl -0x54(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0x64(%rbp)
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x54(%rbp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x166b50
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %eax
cmpl -0x68(%rbp), %eax
jne 0x1fcac2
jmp 0x1fcffe
cmpl $0x1, -0x68(%rbp)
jne 0x1fcace
cmpl $0x1, -0x64(%rbp)
ja 0x1fcad3
jmp 0x1fcffe
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x54(%rbp), %esi
leaq -0x58(%rbp), %rdx
callq 0x166b50
movl -0x58(%rbp), %eax
xorl $0x1, %eax
movl %eax, -0x58(%rbp)
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x58(%rbp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x166b50
cmpl $0x1, %eax
je 0x1fcb0e
jmp 0x1fcffe
movq -0x40(%rbp), %rdi
movq -0x40(%rbp), %rax
movq 0xb8(%rax), %rsi
movq -0x50(%rbp), %rdx
movl -0x54(%rbp), %r8d
movl -0x58(%rbp), %r9d
xorl %eax, %eax
movl %eax, %ecx
callq 0x1e22d0
movq -0xb8(%rbp), %rax
movl -0x54(%rbp), %ecx
cmpb $0x0, (%rax,%rcx)
jne 0x1fcb52
movq -0xb8(%rbp), %rax
movl -0x58(%rbp), %ecx
cmpb $0x0, (%rax,%rcx)
je 0x1fcb57
jmp 0x1fcffe
movq -0xb8(%rbp), %rax
movl -0x58(%rbp), %ecx
movb $0x1, (%rax,%rcx)
movq -0xb8(%rbp), %rax
movl -0x54(%rbp), %ecx
movb $0x1, (%rax,%rcx)
movq -0x40(%rbp), %rdi
movq -0x50(%rbp), %rsi
movl -0x54(%rbp), %edx
callq 0x1e2260
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %eax
shrl %eax
movl %eax, -0x1e4(%rbp)
movl -0x70(%rbp), %eax
andl $0x1, %eax
movl %eax, -0x1e8(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x2c8(%rbp)
movl -0x1e4(%rbp), %eax
movq %rax, -0x2c0(%rbp)
cmpl $0x1, -0x1e8(%rbp)
jne 0x1fcbce
leaq -0x1f4(%rbp), %rax
movq %rax, -0x2d0(%rbp)
jmp 0x1fcbd9
xorl %eax, %eax
movq %rax, -0x2d0(%rbp)
jmp 0x1fcbd9
movq -0x2d0(%rbp), %rax
movq %rax, -0x2d8(%rbp)
cmpl $0x0, -0x1e8(%rbp)
jne 0x1fcc00
leaq -0x1f4(%rbp), %rax
movq %rax, -0x2e0(%rbp)
jmp 0x1fcc0b
xorl %eax, %eax
movq %rax, -0x2e0(%rbp)
jmp 0x1fcc0b
movq -0x2d8(%rbp), %rdx
movq -0x2c0(%rbp), %rsi
movq -0x2c8(%rbp), %rdi
movq -0x2e0(%rbp), %rcx
xorl %eax, %eax
movl %eax, %r9d
movq %r9, %r8
movq $0x0, (%rsp)
callq 0x1c4b20
movq -0x40(%rbp), %rdi
movq -0x50(%rbp), %rsi
movl -0x58(%rbp), %edx
callq 0x1e2260
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %eax
shrl %eax
movl %eax, -0x1ec(%rbp)
movl -0x70(%rbp), %eax
andl $0x1, %eax
movl %eax, -0x1f0(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x2f0(%rbp)
movl -0x1ec(%rbp), %eax
movq %rax, -0x2e8(%rbp)
cmpl $0x1, -0x1f0(%rbp)
jne 0x1fcc97
leaq -0x1f8(%rbp), %rax
movq %rax, -0x2f8(%rbp)
jmp 0x1fcca2
xorl %eax, %eax
movq %rax, -0x2f8(%rbp)
jmp 0x1fcca2
movq -0x2f8(%rbp), %rax
movq %rax, -0x300(%rbp)
cmpl $0x0, -0x1f0(%rbp)
jne 0x1fccc9
leaq -0x1f8(%rbp), %rax
movq %rax, -0x308(%rbp)
jmp 0x1fccd4
xorl %eax, %eax
movq %rax, -0x308(%rbp)
jmp 0x1fccd4
movq -0x300(%rbp), %rdx
movq -0x2e8(%rbp), %rsi
movq -0x2f0(%rbp), %rdi
movq -0x308(%rbp), %rcx
xorl %eax, %eax
movl %eax, %r9d
movq %r9, %r8
movq $0x0, (%rsp)
callq 0x1c4b20
movq $0x0, -0x190(%rbp)
movq -0x40(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
movl -0x54(%rbp), %ecx
xorl $0x1, %ecx
movq -0xa8(%rbp), %r8
movl -0x74(%rbp), %r9d
leaq -0x130(%rbp), %rdx
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1e53f0
movq -0x40(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
movl -0x58(%rbp), %ecx
xorl $0x1, %ecx
movl -0x54(%rbp), %r8d
movq -0x38(%rbp), %r9
movq -0xa8(%rbp), %r13
movq -0xb0(%rbp), %r12
movq -0x48(%rbp), %r15
movl -0x74(%rbp), %r11d
movl -0x7c(%rbp), %r10d
leaq -0x130(%rbp), %rdx
leaq -0x150(%rbp), %r14
leaq -0x170(%rbp), %rbx
leaq -0x190(%rbp), %rax
movq %rax, -0x310(%rbp)
xorl %eax, %eax
movq -0x310(%rbp), %rax
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq %rbx, 0x20(%rsp)
movl %r11d, 0x28(%rsp)
movl %r10d, 0x30(%rsp)
movq %rax, 0x38(%rsp)
movq $0x0, 0x40(%rsp)
callq 0x1f8150
movq -0x40(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
movl -0x54(%rbp), %ecx
xorl $0x1, %ecx
movq -0xa8(%rbp), %r8
movl -0x74(%rbp), %r9d
leaq -0x130(%rbp), %rdx
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1e53f0
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpq -0x190(%rbp), %rax
jae 0x1fce48
movq -0xc0(%rbp), %rax
movq -0x180(%rbp), %rcx
movl -0x5c(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
orl $0x1, %edx
movb %dl, (%rax,%rcx)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1fce0f
movq -0x40(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
movl -0x58(%rbp), %ecx
xorl $0x1, %ecx
movq -0xa8(%rbp), %r8
movl -0x74(%rbp), %r9d
leaq -0x130(%rbp), %rdx
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1e53f0
movq -0x40(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
movl -0x54(%rbp), %ecx
xorl $0x1, %ecx
movl -0x58(%rbp), %r8d
movq -0x38(%rbp), %r9
movq -0xa8(%rbp), %r13
movq -0xb0(%rbp), %r12
movq -0x48(%rbp), %r15
movl -0x74(%rbp), %r11d
movl -0x7c(%rbp), %r10d
leaq -0x130(%rbp), %rdx
leaq -0x150(%rbp), %r14
leaq -0x170(%rbp), %rbx
leaq -0x190(%rbp), %rax
movq %rax, -0x318(%rbp)
xorl %eax, %eax
movq -0x318(%rbp), %rax
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq %rbx, 0x20(%rsp)
movl %r11d, 0x28(%rsp)
movl %r10d, 0x30(%rsp)
movq %rax, 0x38(%rsp)
movq $0x0, 0x40(%rsp)
callq 0x1f8150
movq -0x40(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
movl -0x58(%rbp), %ecx
xorl $0x1, %ecx
movq -0xa8(%rbp), %r8
movl -0x74(%rbp), %r9d
leaq -0x130(%rbp), %rdx
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1e53f0
movl -0x5c(%rbp), %eax
cmpq -0x190(%rbp), %rax
jae 0x1fcf79
movq -0xc0(%rbp), %rax
movq -0x180(%rbp), %rcx
movl -0x5c(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
orl $0x2, %edx
movb %dl, (%rax,%rcx)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1fcf40
movq -0x40(%rbp), %rdi
movq -0xa8(%rbp), %rsi
movq -0xc0(%rbp), %rcx
movq -0xc8(%rbp), %r8
movl -0x74(%rbp), %r11d
movl -0x54(%rbp), %r10d
shrl %r10d
movl -0x58(%rbp), %eax
shrl %eax
leaq -0x190(%rbp), %rdx
leaq -0x1d8(%rbp), %r9
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
movl %eax, 0x10(%rsp)
callq 0x1fa3d0
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpq -0x190(%rbp), %rax
jae 0x1fcffc
movq -0xc0(%rbp), %rax
movq -0x180(%rbp), %rcx
movl -0x5c(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movb $0x0, (%rax,%rcx)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1fcfc9
jmp 0x1fcffe
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x1fca4b
cmpq $0x0, -0x1d8(%rbp)
jbe 0x1fd177
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpq -0x1d8(%rbp), %rax
jae 0x1fd159
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rdi
movq -0x1c8(%rbp), %rax
movl -0x5c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
shrq $0x20, %rax
movl %eax, %esi
movq -0x1c8(%rbp), %rax
movl -0x5c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %edx
movl $0x1, %ecx
callq 0x1de8a0
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rdi
movq -0x1c8(%rbp), %rax
movl -0x5c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %esi
xorl $0x1, %esi
movq -0x1c8(%rbp), %rax
movl -0x5c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
shrq $0x20, %rax
xorq $0x1, %rax
movl %eax, %edx
movl $0x1, %ecx
callq 0x1de8a0
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x30(%rbp), %rax
movq (%rax), %rsi
movq -0x1c8(%rbp), %rax
movl -0x5c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
shrq $0x20, %rax
movl %eax, %edx
movq -0x1c8(%rbp), %rax
movl -0x5c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
callq 0x1fb470
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x30(%rbp), %rax
movq (%rax), %rsi
movq -0x1c8(%rbp), %rax
movl -0x5c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %edx
xorl $0x1, %edx
movq -0x1c8(%rbp), %rax
movl -0x5c(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
shrq $0x20, %rax
xorq $0x1, %rax
movl %eax, %ecx
callq 0x1fb470
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1fd021
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rdi
callq 0xcdd10
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0xcdd10
movq -0xa8(%rbp), %rdi
callq 0x2210
movq -0xb0(%rbp), %rdi
callq 0x2210
movq -0xb8(%rbp), %rdi
callq 0x2210
movq -0xc0(%rbp), %rdi
callq 0x2210
movq -0xe8(%rbp), %rdi
callq 0x2210
movq -0x198(%rbp), %rdi
callq 0x2210
movq -0x1a0(%rbp), %rdi
callq 0x2210
movq -0xc8(%rbp), %rdi
callq 0x2210
movq -0x140(%rbp), %rdi
callq 0x2210
movq -0x160(%rbp), %rdi
callq 0x2210
movq -0x180(%rbp), %rdi
callq 0x2210
movq -0x1c8(%rbp), %rdi
callq 0x2210
movq -0x1e0(%rbp), %rdi
callq 0xcd6f0
addq $0x338, %rsp            # imm = 0x338
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopw %cs:(%rax,%rax)