// File: /workspace/github_c_makefile_star2_O0/akumrao[P]videoAnalyzer/encoder/macroblock.c
// Function: x264_macroblock_write_cavlc(x264_t*, bs_s*, x264_macroblock_t*)
void x264_macroblock_write_cavlc(x264_t *h, bs_t *s, x264_macroblock_t *mb) {LOG_CALL;
    int i_mb_i_offset;
    int i;

    switch (h->sh.i_type)
    {
        case SLICE_TYPE_I:
            i_mb_i_offset = 0;
            break;
        case SLICE_TYPE_P:
            i_mb_i_offset = 5;
            break;
        case SLICE_TYPE_B:
            i_mb_i_offset = 23;
            break;
        default:
            fprintf(stderr, "internal error or slice unsupported\n");
            return;
    }

    /* Write:
      - type
      - prediction
      - mv */
    if (mb->i_type == I_PCM)
    {
        /* Untested */
        bs_write_ue(s, i_mb_i_offset + 25,"i_mb_i_offset");

        bs_align_0(s);
        /* Luma */
        for (i = 0; i < 16 * 16; i++)
        {
            bs_write(s, 8, h->picture->plane[0][mb->i_mb_y * 16 * h->picture->i_stride[0] + mb->i_mb_x * 16 + i], "h->picture->plane[0][");
        }
        /* Cb */
        for (i = 0; i < 8 * 8; i++)
        {
            bs_write(s, 8, h->picture->plane[1][mb->i_mb_y * 8 * h->picture->i_stride[1] + mb->i_mb_x * 8 + i], "h->picture->plane[1][");
        }
        /* Cr */
        for (i = 0; i < 8 * 8; i++)
        {
            bs_write(s, 8, h->picture->plane[2][mb->i_mb_y * 8 * h->picture->i_stride[2] + mb->i_mb_x * 8 + i], "h->picture->plane[2][");
        }

        for (i = 0; i < 16 + 8; i++)
        {
            /* special case */
            mb->block[i].i_non_zero_count = 16;
        }
        return;
    } else if (mb->i_type == I_4x4)
    {
        bs_write_ue(s, i_mb_i_offset + 0,"i_mb_i_offset");

        /* Prediction: Luma */
        for (i = 0; i < 16; i++)
        {
            int i_predicted_mode = x264_mb_predict_intra4x4_mode(h, mb, i);
            int i_mode = mb->block[i].i_intra4x4_pred_mode;

            if (i_predicted_mode == i_mode)
            {
                bs_write1(s, 1,"b_prev_intra4x4_pred_mode"); /* b_prev_intra4x4_pred_mode */
            } else
            {
                bs_write1(s, 0,"b_prev_intra4x4_pred_mode"); /* b_prev_intra4x4_pred_mode */
                if (i_mode < i_predicted_mode)
                {
                    bs_write(s, 3, i_mode, "i_mode");
                } else
                {
                    bs_write(s, 3, i_mode - 1, "i_mode");
                }
            }
        }
        /* Prediction: chroma */
        bs_write_ue(s, mb->i_chroma_pred_mode,"i_chroma_pred_mode");
    } else if (mb->i_type == I_16x16)
    {
        bs_write_ue(s, i_mb_i_offset + 1 + mb->i_intra16x16_pred_mode +
                mb->i_cbp_chroma * 4 +
                (mb->i_cbp_luma == 0 ? 0 : 12),"i_mb_i_offset");
        /* Prediction: chroma */
        bs_write_ue(s, mb->i_chroma_pred_mode,"i_chroma_pred_mode");
    } else if (mb->i_type == P_L0)
    {
        int mvp[2];

        if (mb->i_partition == D_16x16)
        {
            bs_write_ue(s, 0,"i_partition==D_16x16");

            if (h->sh.i_num_ref_idx_l0_active > 1)
            {
                 bs_write_te(s, h->sh.i_num_ref_idx_l0_active - 1, mb->partition[0][0].i_ref[0],"i_num_ref_idx_l0_active");
            }
            x264_mb_predict_mv(mb, 0, 0, 0, mvp);
            bs_write_se(s, mb->partition[0][0].mv[0][0] - mvp[0],"mb->partition[0][0].mv[0][0] - mvp[0]");
            bs_write_se(s, mb->partition[0][0].mv[0][1] - mvp[1],"mb->partition[0][0].mv[0][1] - mvp[1]");
        } else if (mb->i_partition == D_16x8)
        {
            bs_write_ue(s, 1,"mb->i_partition == D_16x8");
            if (h->sh.i_num_ref_idx_l0_active > 1)
            {
                bs_write_te(s, h->sh.i_num_ref_idx_l0_active - 1, mb->partition[0][0].i_ref[0],"i_num_ref_idx_l0_active");
                bs_write_te(s, h->sh.i_num_ref_idx_l0_active - 1, mb->partition[0][2].i_ref[0],"i_num_ref_idx_l0_active");
            }

            x264_mb_predict_mv(mb, 0, 0, 0, mvp);
            bs_write_se(s, mb->partition[0][0].mv[0][0] - mvp[0],"mb->partition[0][0].mv[0][0] - mvp[0]");
            bs_write_se(s, mb->partition[0][0].mv[0][1] - mvp[1],"mb->partition[0][0].mv[0][1] - mvp[1]");

            x264_mb_predict_mv(mb, 0, 1, 0, mvp);
            bs_write_se(s, mb->partition[0][2].mv[0][0] - mvp[0],"mb->partition[0][2].mv[0][0] - mvp[0]");
            bs_write_se(s, mb->partition[0][2].mv[0][1] - mvp[1],"mb->partition[0][2].mv[0][1] - mvp[1]");
        } else if (mb->i_partition == D_8x16)
        {
            bs_write_ue(s, 2,"mb->i_partition == D_8x16");
            if (h->sh.i_num_ref_idx_l0_active > 1)
            {
                bs_write_te(s, h->sh.i_num_ref_idx_l0_active - 1, mb->partition[0][0].i_ref[0],"i_num_ref_idx_l0_active");
                bs_write_te(s, h->sh.i_num_ref_idx_l0_active - 1, mb->partition[2][0].i_ref[0],"i_num_ref_idx_l0_active");
            }

            x264_mb_predict_mv(mb, 0, 0, 0, mvp);
            bs_write_se(s, mb->partition[0][0].mv[0][0] - mvp[0],"mb->partition[0][0].mv[0][0] - mvp[0]");
            bs_write_se(s, mb->partition[0][0].mv[0][1] - mvp[1],"mb->partition[0][0].mv[0][1] - mvp[1]");

            x264_mb_predict_mv(mb, 0, 1, 0, mvp);
            bs_write_se(s, mb->partition[2][0].mv[0][0] - mvp[0],"mb->partition[2][0].mv[0][0] - mvp[0]");
            bs_write_se(s, mb->partition[2][0].mv[0][1] - mvp[1]," mb->partition[2][0].mv[0][1] - mvp[1]");
        }
    } else if (mb->i_type == P_8x8)
    {
        int b_sub_ref0;

        if (mb->partition[0][0].i_ref[0] == 0 &&
                mb->partition[0][2].i_ref[0] == 0 &&
                mb->partition[2][0].i_ref[0] == 0 &&
                mb->partition[2][2].i_ref[0] == 0)
        {
            bs_write_ue(s, 4, "partition");
            b_sub_ref0 = 0;
        } else
        {
            bs_write_ue(s, 3, "partition");
            b_sub_ref0 = 1;
        }
        /* sub mb type */
        for (i = 0; i < 4; i++)
        {
            switch (mb->i_sub_partition[i])
            {
                case D_L0_8x8:
                    bs_write_ue(s, 0,"D_L0_8x8");
                    break;
                case D_L0_8x4:
                    bs_write_ue(s, 1,"D_L0_8x4");
                    break;
                case D_L0_4x8:
                    bs_write_ue(s, 2,"D_L0_4x8");
                    break;
                case D_L0_4x4:
                    bs_write_ue(s, 3,"D_L0_4x4");
                    break;
            }
        }
        /* ref0 */
        if (h->sh.i_num_ref_idx_l0_active > 1 && b_sub_ref0)
        {
            bs_write_te(s, h->sh.i_num_ref_idx_l0_active - 1, mb->partition[0][0].i_ref[0],"i_num_ref_idx_l0_active");
            bs_write_te(s, h->sh.i_num_ref_idx_l0_active - 1, mb->partition[2][0].i_ref[0],"i_num_ref_idx_l0_active");
            bs_write_te(s, h->sh.i_num_ref_idx_l0_active - 1, mb->partition[0][2].i_ref[0],"i_num_ref_idx_l0_active");
            bs_write_te(s, h->sh.i_num_ref_idx_l0_active - 1, mb->partition[2][2].i_ref[0],"i_num_ref_idx_l0_active");
        }
        for (i = 0; i < 4; i++)
        {
            int i_part;
            for (i_part = 0; i_part < x264_mb_partition_count_table[mb->i_sub_partition[i]]; i_part++)
            {
                int mvx, mvy;
                int mvp[2];

                x264_mb_partition_get(mb, 0, i, i_part, NULL, &mvx, &mvy);
                x264_mb_predict_mv(mb, 0, i, i_part, mvp);

                bs_write_se(s, mvx - mvp[0],"mvy - mvp[0]");
                bs_write_se(s, mvy - mvp[1],"mvy - mvp[1]");
            }
        }
    } else if (mb->i_type == B_8x8)
    {
        fprintf(stderr, "invalid/unhandled mb_type (B_8x8)\n");
        return;
    } else if (mb->i_type != B_DIRECT)
    {
        /* All B mode */
        /* Motion Vector */
        int i_part = x264_mb_partition_count_table[mb->i_partition];
        int i_ref;
        int mvx, mvy;
        int mvp[2];

        int b_list0[2];
        int b_list1[2];

        /* init ref list utilisations */
        for (i = 0; i < 2; i++)
        {
            b_list0[i] = x264_mb_type_list0_table[mb->i_type][i];
            b_list1[i] = x264_mb_type_list1_table[mb->i_type][i];
        }


        if (mb->i_partition == D_16x16)
        {
            if (b_list0[0] && b_list1[0])
            {
                bs_write_ue(s, 3,"D_16x16 b_list0[0] && b_list1[0])");
            } else if (b_list1[0])
            {
                bs_write_ue(s, 2,"D_16x16 b_list1[0])");
            } else
            {
                bs_write_ue(s, 1,"D_16x16 not b_list0[0] && not b_list1[0])");
            }
        } else
        {
            if (mb->i_type == B_BI_BI)
            {
                bs_write_ue(s, 20 + (mb->i_partition == D_16x8 ? 0 : 1),"B_BI_BI");
            } else if (b_list0[0] && b_list1[0])
            {
                /* B_BI_LX* */
                bs_write_ue(s, 16 + (b_list0[1] ? 0 : 2) + (mb->i_partition == D_16x8 ? 0 : 1),"B_BI_LX");
            } else if (b_list0[1] && b_list1[1])
            {
                /* B_LX_BI */
                bs_write_ue(s, 12 + (b_list0[1] ? 0 : 2) + (mb->i_partition == D_16x8 ? 0 : 1),"B_LX_BI");
            } else if (b_list1[1])
            {
                /* B_LX_L1 */
                bs_write_ue(s, 6 + (b_list0[0] ? 2 : 0) + (mb->i_partition == D_16x8 ? 0 : 1),"B_LX_L1");
            } else if (b_list0[1])
            {
                /* B_LX_L0 */
                bs_write_ue(s, 4 + (b_list0[0] ? 0 : 6) + (mb->i_partition == D_16x8 ? 0 : 1),"B_LX_L0");
            }
        }

        if (h->sh.i_num_ref_idx_l0_active > 1)
        {
            for (i = 0; i < i_part; i++)
            {
                if (b_list0[i])
                {
                    x264_mb_partition_get(mb, 0, i, 0, &i_ref, NULL, NULL);
                    bs_write_te(s, h->sh.i_num_ref_idx_l0_active - 1, i_ref,"i_num_ref_idx_l0_active");
                }
            }
        }
        if (h->sh.i_num_ref_idx_l1_active > 1)
        {
            for (i = 0; i < i_part; i++)
            {
                if (b_list1[i])
                {
                    x264_mb_partition_get(mb, 1, i, 0, &i_ref, NULL, NULL);
                    bs_write_te(s, h->sh.i_num_ref_idx_l1_active - 1, i_ref,"i_num_ref_idx_l1_active");
                }
            }
        }

        for (i = 0; i < i_part; i++)
        {
            if (b_list0[i])
            {
                x264_mb_partition_get(mb, 0, i, 0, NULL, &mvx, &mvy);
                x264_mb_predict_mv(mb, 0, i, 0, mvp);

                bs_write_se(s, mvx - mvp[0],"mvy - mvp[0]");
                bs_write_se(s, mvy - mvp[1],"mvy - mvp[1]");
            }
        }
        for (i = 0; i < i_part; i++)
        {
            if (b_list1[i])
            {
                x264_mb_partition_get(mb, 1, i, 0, NULL, &mvx, &mvy);
                x264_mb_predict_mv(mb, 1, i, 0, mvp);

                bs_write_se(s, mvx - mvp[0],"mvy - mvp[0]");
                bs_write_se(s, mvy - mvp[1],"mvy - mvp[1]");
            }
        }
    } else if (mb->i_type == B_DIRECT)
    {
        bs_write_ue(s, 0,"B_DIRECT");
    } else
    {
        fprintf(stderr, "invalid/unhandled mb_type\n");
        return;
    }

    /* Coded block patern */
    if (mb->i_type == I_4x4)
    {
        bs_write_ue(s, intra4x4_cbp_to_golomb[(mb->i_cbp_chroma << 4) | mb->i_cbp_luma],"intra4x4_cbp_to_golomb");
    } else if (mb->i_type != I_16x16)
    {
        bs_write_ue(s, inter_cbp_to_golomb[(mb->i_cbp_chroma << 4) | mb->i_cbp_luma],"inter_cbp_to_golomb");
    }

    /* write residual */
    if (mb->i_type == I_16x16)
    {
        if (mb->i_mb_x > 0 || mb->i_mb_y > 0)
            bs_write_se(s, mb->i_qp - (mb - 1)->i_qp, "i_qp" );
        else
            bs_write_se(s, mb->i_qp - h->pps->i_pic_init_qp - h->sh.i_qp_delta,"i_qp");

        /* DC Luma */
        block_residual_write_cavlc(h, s, mb, BLOCK_INDEX_LUMA_DC, mb->luma16x16_dc, 16);

        if (mb->i_cbp_luma != 0)
        {
            /* AC Luma */
            for (i = 0; i < 16; i++)
            {
                block_residual_write_cavlc(h, s, mb, i, mb->block[i].residual_ac, 15);
            }
        }
    } else if (mb->i_cbp_luma != 0 || mb->i_cbp_chroma != 0)
    {
        bs_write_se(s, mb->i_qp - h->pps->i_pic_init_qp - h->sh.i_qp_delta, "i_qp");

        for (i = 0; i < 16; i++)
        {
            if (mb->i_cbp_luma & (1 << (i / 4)))
            {
                block_residual_write_cavlc(h, s, mb, i, mb->block[i].luma4x4, 16);
            }
        }
    }
    if (mb->i_cbp_chroma != 0)
    {
        /* Chroma DC residual present */
        block_residual_write_cavlc(h, s, mb, BLOCK_INDEX_CHROMA_DC, mb->chroma_dc[0], 4);
        block_residual_write_cavlc(h, s, mb, BLOCK_INDEX_CHROMA_DC, mb->chroma_dc[1], 4);
        if (mb->i_cbp_chroma & 0x02) /* Chroma AC residual present */
        {
            for (i = 0; i < 8; i++)
            {
                block_residual_write_cavlc(h, s, mb, 16 + i, mb->block[16 + i].residual_ac, 15);
            }
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
leaq 0xc832(%rip), %rdi      # 0x28eb0
leaq 0x1344f(%rip), %rsi     # 0x2fad4
leaq 0x1349e(%rip), %rdx     # 0x2fb2a
xorl %eax, %eax
callq 0x4d20
movq -0x8(%rbp), %rax
movl 0x10db00(%rax), %eax
movl %eax, -0x74(%rbp)
testl %eax, %eax
je 0x1c6c3
jmp 0x1c6a6
movl -0x74(%rbp), %eax
subl $0x1, %eax
je 0x1c6cc
jmp 0x1c6b0
movl -0x74(%rbp), %eax
subl $0x2, %eax
jne 0x1c6d5
jmp 0x1c6ba
movl $0x0, -0x1c(%rbp)
jmp 0x1c6f2
movl $0x5, -0x1c(%rbp)
jmp 0x1c6f2
movl $0x17, -0x1c(%rbp)
jmp 0x1c6f2
movq 0x198f4(%rip), %rax     # 0x35fd0
movq (%rax), %rdi
leaq 0xf568(%rip), %rsi      # 0x2bc4e
movb $0x0, %al
callq 0x2160
jmp 0x1d76b
movq -0x18(%rbp), %rax
cmpl $0x2, 0x18(%rax)
jne 0x1c89c
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
addl $0x19, %esi
leaq 0x13435(%rip), %rdx     # 0x2fb46
callq 0x1d780
movq -0x10(%rbp), %rdi
callq 0x1d840
movl $0x0, -0x20(%rbp)
cmpl $0x100, -0x20(%rbp)     # imm = 0x100
jge 0x1c78c
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x10ee48(%rax), %rax
movq 0x20(%rax), %rax
movq -0x18(%rbp), %rcx
movl 0x4(%rcx), %ecx
shll $0x4, %ecx
movq -0x8(%rbp), %rdx
movq 0x10ee48(%rdx), %rdx
imull 0xc(%rdx), %ecx
movq -0x18(%rbp), %rdx
movl (%rdx), %edx
shll $0x4, %edx
addl %edx, %ecx
addl -0x20(%rbp), %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edx
movl $0x8, %esi
leaq 0x133d8(%rip), %rcx     # 0x2fb54
callq 0x1d890
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x1c726
movl $0x0, -0x20(%rbp)
cmpl $0x40, -0x20(%rbp)
jge 0x1c7f6
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x10ee48(%rax), %rax
movq 0x28(%rax), %rax
movq -0x18(%rbp), %rcx
movl 0x4(%rcx), %ecx
shll $0x3, %ecx
movq -0x8(%rbp), %rdx
movq 0x10ee48(%rdx), %rdx
imull 0x10(%rdx), %ecx
movq -0x18(%rbp), %rdx
movl (%rdx), %edx
shll $0x3, %edx
addl %edx, %ecx
addl -0x20(%rbp), %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edx
movl $0x8, %esi
leaq 0x13384(%rip), %rcx     # 0x2fb6a
callq 0x1d890
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x1c793
movl $0x0, -0x20(%rbp)
cmpl $0x40, -0x20(%rbp)
jge 0x1c860
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x10ee48(%rax), %rax
movq 0x30(%rax), %rax
movq -0x18(%rbp), %rcx
movl 0x4(%rcx), %ecx
shll $0x3, %ecx
movq -0x8(%rbp), %rdx
movq 0x10ee48(%rdx), %rdx
imull 0x14(%rdx), %ecx
movq -0x18(%rbp), %rdx
movl (%rdx), %edx
shll $0x3, %edx
addl %edx, %ecx
addl -0x20(%rbp), %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edx
movl $0x8, %esi
leaq 0x13330(%rip), %rcx     # 0x2fb80
callq 0x1d890
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x1c7fd
movl $0x0, -0x20(%rbp)
cmpl $0x18, -0x20(%rbp)
jge 0x1c897
movq -0x18(%rbp), %rax
addq $0x324, %rax            # imm = 0x324
movslq -0x20(%rbp), %rcx
imulq $0x84, %rcx, %rcx
addq %rcx, %rax
movl $0x10, 0x4(%rax)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x1c867
jmp 0x1d76b
movq -0x18(%rbp), %rax
cmpl $0x0, 0x18(%rax)
jne 0x1c9a0
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
addl $0x0, %esi
leaq 0x1328b(%rip), %rdx     # 0x2fb46
callq 0x1d780
movl $0x0, -0x20(%rbp)
cmpl $0x10, -0x20(%rbp)
jge 0x1c981
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movl -0x20(%rbp), %edx
callq 0x7400
movl %eax, -0x24(%rbp)
movq -0x18(%rbp), %rax
addq $0x324, %rax            # imm = 0x324
movslq -0x20(%rbp), %rcx
imulq $0x84, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %eax
movl %eax, -0x28(%rbp)
movl -0x24(%rbp), %eax
cmpl -0x28(%rbp), %eax
jne 0x1c920
movq -0x10(%rbp), %rdi
movl $0x1, %esi
leaq 0x1327d(%rip), %rdx     # 0x2fb96
callq 0x1d980
jmp 0x1c971
movq -0x10(%rbp), %rdi
xorl %esi, %esi
leaq 0x13269(%rip), %rdx     # 0x2fb96
callq 0x1d980
movl -0x28(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x1c954
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %edx
movl $0x3, %esi
leaq 0xf36e(%rip), %rcx      # 0x2bcbb
callq 0x1d890
jmp 0x1c96f
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %edx
subl $0x1, %edx
movl $0x3, %esi
leaq 0xf351(%rip), %rcx      # 0x2bcbb
callq 0x1d890
jmp 0x1c971
jmp 0x1c973
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x1c8c7
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x2c0(%rax), %esi
leaq 0xf32c(%rip), %rdx      # 0x2bcc2
callq 0x1d780
jmp 0x1d437
movq -0x18(%rbp), %rax
cmpl $0x1, 0x18(%rax)
jne 0x1ca11
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
addl $0x1, %esi
movq -0x18(%rbp), %rax
addl 0x2bc(%rax), %esi
movq -0x18(%rbp), %rax
movl 0x2b4(%rax), %eax
shll $0x2, %eax
addl %eax, %esi
movq -0x18(%rbp), %rax
movl 0x2b8(%rax), %edx
movl $0xc, %eax
xorl %ecx, %ecx
cmpl $0x0, %edx
cmovel %ecx, %eax
addl %eax, %esi
leaq 0x13159(%rip), %rdx     # 0x2fb46
callq 0x1d780
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x2c0(%rax), %esi
leaq 0xf2bb(%rip), %rdx      # 0x2bcc2
callq 0x1d780
jmp 0x1d435
movq -0x18(%rbp), %rax
cmpl $0x3, 0x18(%rax)
jne 0x1ccee
movq -0x18(%rbp), %rax
cmpl $0x10, 0x1c(%rax)
jne 0x1cabc
movq -0x10(%rbp), %rdi
xorl %esi, %esi
leaq 0x13176(%rip), %rdx     # 0x2fbb0
callq 0x1d780
movq -0x8(%rbp), %rax
cmpl $0x1, 0x10db38(%rax)
jle 0x1ca70
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x10db38(%rax), %esi
subl $0x1, %esi
movq -0x18(%rbp), %rax
movl 0x30(%rax), %edx
leaq 0xeb1f(%rip), %rcx      # 0x2b58a
callq 0x1da50
movq -0x18(%rbp), %rdi
leaq -0x30(%rbp), %r8
xorl %ecx, %ecx
movl %ecx, %esi
movl %ecx, %edx
callq 0x7ff0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x38(%rax), %esi
subl -0x30(%rbp), %esi
leaq 0x1312d(%rip), %rdx     # 0x2fbc5
callq 0x1dac0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x3c(%rax), %esi
subl -0x2c(%rbp), %esi
leaq 0x13139(%rip), %rdx     # 0x2fbeb
callq 0x1dac0
jmp 0x1cce9
movq -0x18(%rbp), %rax
cmpl $0xe, 0x1c(%rax)
jne 0x1cbd3
movq -0x10(%rbp), %rdi
movl $0x1, %esi
leaq 0x13137(%rip), %rdx     # 0x2fc11
callq 0x1d780
movq -0x8(%rbp), %rax
cmpl $0x1, 0x10db38(%rax)
jle 0x1cb37
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x10db38(%rax), %esi
subl $0x1, %esi
movq -0x18(%rbp), %rax
movl 0x30(%rax), %edx
leaq 0xea7f(%rip), %rcx      # 0x2b58a
callq 0x1da50
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x10db38(%rax), %esi
subl $0x1, %esi
movq -0x18(%rbp), %rax
movl 0x80(%rax), %edx
leaq 0xea58(%rip), %rcx      # 0x2b58a
callq 0x1da50
movq -0x18(%rbp), %rdi
leaq -0x30(%rbp), %r8
xorl %ecx, %ecx
movl %ecx, %esi
movl %ecx, %edx
callq 0x7ff0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x38(%rax), %esi
subl -0x30(%rbp), %esi
leaq 0x13066(%rip), %rdx     # 0x2fbc5
callq 0x1dac0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x3c(%rax), %esi
subl -0x2c(%rbp), %esi
leaq 0x13072(%rip), %rdx     # 0x2fbeb
callq 0x1dac0
movq -0x18(%rbp), %rdi
leaq -0x30(%rbp), %r8
xorl %ecx, %ecx
movl $0x1, %edx
movl %ecx, %esi
callq 0x7ff0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x88(%rax), %esi
subl -0x30(%rbp), %esi
leaq 0x1307f(%rip), %rdx     # 0x2fc2b
callq 0x1dac0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x8c(%rax), %esi
subl -0x2c(%rbp), %esi
leaq 0x13088(%rip), %rdx     # 0x2fc51
callq 0x1dac0
jmp 0x1cce7
movq -0x18(%rbp), %rax
cmpl $0xf, 0x1c(%rax)
jne 0x1cce5
movq -0x10(%rbp), %rdi
movl $0x2, %esi
leaq 0x13086(%rip), %rdx     # 0x2fc77
callq 0x1d780
movq -0x8(%rbp), %rax
cmpl $0x1, 0x10db38(%rax)
jle 0x1cc4e
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x10db38(%rax), %esi
subl $0x1, %esi
movq -0x18(%rbp), %rax
movl 0x30(%rax), %edx
leaq 0xe968(%rip), %rcx      # 0x2b58a
callq 0x1da50
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x10db38(%rax), %esi
subl $0x1, %esi
movq -0x18(%rbp), %rax
movl 0x170(%rax), %edx
leaq 0xe941(%rip), %rcx      # 0x2b58a
callq 0x1da50
movq -0x18(%rbp), %rdi
leaq -0x30(%rbp), %r8
xorl %ecx, %ecx
movl %ecx, %esi
movl %ecx, %edx
callq 0x7ff0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x38(%rax), %esi
subl -0x30(%rbp), %esi
leaq 0x12f4f(%rip), %rdx     # 0x2fbc5
callq 0x1dac0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x3c(%rax), %esi
subl -0x2c(%rbp), %esi
leaq 0x12f5b(%rip), %rdx     # 0x2fbeb
callq 0x1dac0
movq -0x18(%rbp), %rdi
leaq -0x30(%rbp), %r8
xorl %ecx, %ecx
movl $0x1, %edx
movl %ecx, %esi
callq 0x7ff0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x178(%rax), %esi
subl -0x30(%rbp), %esi
leaq 0x12fce(%rip), %rdx     # 0x2fc91
callq 0x1dac0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x17c(%rax), %esi
subl -0x2c(%rbp), %esi
leaq 0x12fd7(%rip), %rdx     # 0x2fcb7
callq 0x1dac0
jmp 0x1cce7
jmp 0x1cce9
jmp 0x1d433
movq -0x18(%rbp), %rax
cmpl $0x4, 0x18(%rax)
jne 0x1cf77
movq -0x18(%rbp), %rax
cmpl $0x0, 0x30(%rax)
jne 0x1cd4b
movq -0x18(%rbp), %rax
cmpl $0x0, 0x80(%rax)
jne 0x1cd4b
movq -0x18(%rbp), %rax
cmpl $0x0, 0x170(%rax)
jne 0x1cd4b
movq -0x18(%rbp), %rax
cmpl $0x0, 0x1c0(%rax)
jne 0x1cd4b
movq -0x10(%rbp), %rdi
movl $0x4, %esi
leaq 0x1333d(%rip), %rdx     # 0x3007a
callq 0x1d780
movl $0x0, -0x34(%rbp)
jmp 0x1cd67
movq -0x10(%rbp), %rdi
movl $0x3, %esi
leaq 0x1331f(%rip), %rdx     # 0x3007a
callq 0x1d780
movl $0x1, -0x34(%rbp)
movl $0x0, -0x20(%rbp)
cmpl $0x4, -0x20(%rbp)
jge 0x1ce09
movq -0x18(%rbp), %rax
movslq -0x20(%rbp), %rcx
movl 0x20(%rax,%rcx,4), %eax
movq %rax, -0x80(%rbp)
subq $0x3, %rax
ja 0x1cdf9
movq -0x80(%rbp), %rax
leaq 0x108a7(%rip), %rcx     # 0x2d640
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rdi
xorl %esi, %esi
leaq 0x12f2f(%rip), %rdx     # 0x2fcde
callq 0x1d780
jmp 0x1cdf9
movq -0x10(%rbp), %rdi
movl $0x1, %esi
leaq 0x12f21(%rip), %rdx     # 0x2fce7
callq 0x1d780
jmp 0x1cdf9
movq -0x10(%rbp), %rdi
movl $0x2, %esi
leaq 0x12f13(%rip), %rdx     # 0x2fcf0
callq 0x1d780
jmp 0x1cdf9
movq -0x10(%rbp), %rdi
movl $0x3, %esi
leaq 0x12f05(%rip), %rdx     # 0x2fcf9
callq 0x1d780
jmp 0x1cdfb
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x1cd6e
movq -0x8(%rbp), %rax
cmpl $0x1, 0x10db38(%rax)
jle 0x1cebd
cmpl $0x0, -0x34(%rbp)
je 0x1cebd
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x10db38(%rax), %esi
subl $0x1, %esi
movq -0x18(%rbp), %rax
movl 0x30(%rax), %edx
leaq 0xe747(%rip), %rcx      # 0x2b58a
callq 0x1da50
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x10db38(%rax), %esi
subl $0x1, %esi
movq -0x18(%rbp), %rax
movl 0x170(%rax), %edx
leaq 0xe720(%rip), %rcx      # 0x2b58a
callq 0x1da50
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x10db38(%rax), %esi
subl $0x1, %esi
movq -0x18(%rbp), %rax
movl 0x80(%rax), %edx
leaq 0xe6f9(%rip), %rcx      # 0x2b58a
callq 0x1da50
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x10db38(%rax), %esi
subl $0x1, %esi
movq -0x18(%rbp), %rax
movl 0x1c0(%rax), %edx
leaq 0xe6d2(%rip), %rcx      # 0x2b58a
callq 0x1da50
movl $0x0, -0x20(%rbp)
cmpl $0x4, -0x20(%rbp)
jge 0x1cf72
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
movq -0x18(%rbp), %rcx
movslq -0x20(%rbp), %rdx
movslq 0x20(%rcx,%rdx,4), %rdx
leaq 0x108d4(%rip), %rcx     # 0x2d7c0
cmpl (%rcx,%rdx,4), %eax
jge 0x1cf62
movq -0x18(%rbp), %rdi
movl -0x20(%rbp), %edx
movl -0x38(%rbp), %ecx
xorl %esi, %esi
xorl %eax, %eax
movl %eax, %r8d
leaq -0x3c(%rbp), %r9
leaq -0x40(%rbp), %rax
movq %rax, (%rsp)
callq 0x7ef0
movq -0x18(%rbp), %rdi
movl -0x20(%rbp), %edx
movl -0x38(%rbp), %ecx
leaq -0x48(%rbp), %r8
xorl %esi, %esi
callq 0x7ff0
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
subl -0x48(%rbp), %esi
leaq 0x12dc9(%rip), %rdx     # 0x2fd02
callq 0x1dac0
movq -0x10(%rbp), %rdi
movl -0x40(%rbp), %esi
subl -0x44(%rbp), %esi
leaq 0x12dc0(%rip), %rdx     # 0x2fd0f
callq 0x1dac0
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x1ced5
jmp 0x1cf64
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x1cec4
jmp 0x1d431
movq -0x18(%rbp), %rax
cmpl $0x10, 0x18(%rax)
jne 0x1cf9e
movq 0x19048(%rip), %rax     # 0x35fd0
movq (%rax), %rdi
leaq 0x12d8a(%rip), %rsi     # 0x2fd1c
movb $0x0, %al
callq 0x2160
jmp 0x1d76b
movq -0x18(%rbp), %rax
cmpl $0x6, 0x18(%rax)
je 0x1d3f0
movq -0x18(%rbp), %rax
movslq 0x1c(%rax), %rcx
leaq 0x10805(%rip), %rax     # 0x2d7c0
movl (%rax,%rcx,4), %eax
movl %eax, -0x4c(%rbp)
movl $0x0, -0x20(%rbp)
cmpl $0x2, -0x20(%rbp)
jge 0x1d023
movq -0x18(%rbp), %rax
movslq 0x18(%rax), %rcx
leaq 0x10833(%rip), %rax     # 0x2d810
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x20(%rbp), %rcx
movl (%rax,%rcx,4), %ecx
movslq -0x20(%rbp), %rax
movl %ecx, -0x68(%rbp,%rax,4)
movq -0x18(%rbp), %rax
movslq 0x18(%rax), %rcx
leaq 0x1089e(%rip), %rax     # 0x2d8a0
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x20(%rbp), %rcx
movl (%rax,%rcx,4), %ecx
movslq -0x20(%rbp), %rax
movl %ecx, -0x70(%rbp,%rax,4)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x1cfc8
movq -0x18(%rbp), %rax
cmpl $0x10, 0x1c(%rax)
jne 0x1d089
cmpl $0x0, -0x68(%rbp)
je 0x1d050
cmpl $0x0, -0x70(%rbp)
je 0x1d050
movq -0x10(%rbp), %rdi
movl $0x3, %esi
leaq 0x12cf6(%rip), %rdx     # 0x2fd3f
callq 0x1d780
jmp 0x1d084
cmpl $0x0, -0x70(%rbp)
je 0x1d06d
movq -0x10(%rbp), %rdi
movl $0x2, %esi
leaq 0x12cfb(%rip), %rdx     # 0x2fd61
callq 0x1d780
jmp 0x1d082
movq -0x10(%rbp), %rdi
movl $0x1, %esi
leaq 0x12cf8(%rip), %rdx     # 0x2fd75
callq 0x1d780
jmp 0x1d084
jmp 0x1d1dd
movq -0x18(%rbp), %rax
cmpl $0xf, 0x18(%rax)
jne 0x1d0bf
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x1c(%rax), %ecx
movl $0x1, %esi
xorl %eax, %eax
cmpl $0xe, %ecx
cmovel %eax, %esi
addl $0x14, %esi
leaq 0x12cea(%rip), %rdx     # 0x2fd9f
callq 0x1d780
jmp 0x1d1db
cmpl $0x0, -0x68(%rbp)
je 0x1d109
cmpl $0x0, -0x70(%rbp)
je 0x1d109
movq -0x10(%rbp), %rdi
movl -0x64(%rbp), %ecx
movl $0x2, %esi
xorl %eax, %eax
cmpl $0x0, %ecx
cmovnel %eax, %esi
addl $0x10, %esi
movq -0x18(%rbp), %rax
movl 0x1c(%rax), %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0xe, %edx
cmovel %ecx, %eax
addl %eax, %esi
leaq 0x12ca8(%rip), %rdx     # 0x2fda7
callq 0x1d780
jmp 0x1d1d9
cmpl $0x0, -0x64(%rbp)
je 0x1d153
cmpl $0x0, -0x6c(%rbp)
je 0x1d153
movq -0x10(%rbp), %rdi
movl -0x64(%rbp), %ecx
movl $0x2, %esi
xorl %eax, %eax
cmpl $0x0, %ecx
cmovnel %eax, %esi
addl $0xc, %esi
movq -0x18(%rbp), %rax
movl 0x1c(%rax), %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0xe, %edx
cmovel %ecx, %eax
addl %eax, %esi
leaq 0x12c66(%rip), %rdx     # 0x2fdaf
callq 0x1d780
jmp 0x1d1d7
cmpl $0x0, -0x6c(%rbp)
je 0x1d194
movq -0x10(%rbp), %rdi
movl -0x68(%rbp), %ecx
xorl %esi, %esi
movl $0x2, %eax
cmpl $0x0, %ecx
cmovnel %eax, %esi
addl $0x6, %esi
movq -0x18(%rbp), %rax
movl 0x1c(%rax), %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0xe, %edx
cmovel %ecx, %eax
addl %eax, %esi
leaq 0x12c2a(%rip), %rdx     # 0x2fdb7
callq 0x1d780
jmp 0x1d1d5
cmpl $0x0, -0x64(%rbp)
je 0x1d1d3
movq -0x10(%rbp), %rdi
movl -0x68(%rbp), %ecx
movl $0x6, %esi
xorl %eax, %eax
cmpl $0x0, %ecx
cmovnel %eax, %esi
addl $0x4, %esi
movq -0x18(%rbp), %rax
movl 0x1c(%rax), %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0xe, %edx
cmovel %ecx, %eax
addl %eax, %esi
leaq 0x12bf1(%rip), %rdx     # 0x2fdbf
callq 0x1d780
jmp 0x1d1d5
jmp 0x1d1d7
jmp 0x1d1d9
jmp 0x1d1db
jmp 0x1d1dd
movq -0x8(%rbp), %rax
cmpl $0x1, 0x10db38(%rax)
jle 0x1d254
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
cmpl -0x4c(%rbp), %eax
jge 0x1d252
movslq -0x20(%rbp), %rax
cmpl $0x0, -0x68(%rbp,%rax,4)
je 0x1d245
movq -0x18(%rbp), %rdi
movl -0x20(%rbp), %edx
xorl %ecx, %ecx
leaq -0x50(%rbp), %r8
xorl %eax, %eax
movl %eax, %r9d
movl %ecx, %esi
movq $0x0, (%rsp)
callq 0x7ef0
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x10db38(%rax), %esi
subl $0x1, %esi
movl -0x50(%rbp), %edx
leaq 0xe34a(%rip), %rcx      # 0x2b58a
callq 0x1da50
jmp 0x1d247
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x1d1f1
jmp 0x1d254
movq -0x8(%rbp), %rax
cmpl $0x1, 0x10db3c(%rax)
jle 0x1d2ce
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
cmpl -0x4c(%rbp), %eax
jge 0x1d2cc
movslq -0x20(%rbp), %rax
cmpl $0x0, -0x70(%rbp,%rax,4)
je 0x1d2bf
movq -0x18(%rbp), %rdi
movl -0x20(%rbp), %edx
movl $0x1, %esi
xorl %ecx, %ecx
leaq -0x50(%rbp), %r8
xorl %eax, %eax
movl %eax, %r9d
movq $0x0, (%rsp)
callq 0x7ef0
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x10db3c(%rax), %esi
subl $0x1, %esi
movl -0x50(%rbp), %edx
leaq 0xe2e8(%rip), %rcx      # 0x2b5a2
callq 0x1da50
jmp 0x1d2c1
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x1d268
jmp 0x1d2ce
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
cmpl -0x4c(%rbp), %eax
jge 0x1d359
movslq -0x20(%rbp), %rax
cmpl $0x0, -0x68(%rbp,%rax,4)
je 0x1d349
movq -0x18(%rbp), %rdi
movl -0x20(%rbp), %edx
xorl %ecx, %ecx
xorl %eax, %eax
movl %eax, %r8d
leaq -0x54(%rbp), %r9
leaq -0x58(%rbp), %rax
movl %ecx, %esi
movq %rax, (%rsp)
callq 0x7ef0
movq -0x18(%rbp), %rdi
movl -0x20(%rbp), %edx
leaq -0x60(%rbp), %r8
xorl %ecx, %ecx
movl %ecx, %esi
callq 0x7ff0
movq -0x10(%rbp), %rdi
movl -0x54(%rbp), %esi
subl -0x60(%rbp), %esi
leaq 0x129d4(%rip), %rdx     # 0x2fd02
callq 0x1dac0
movq -0x10(%rbp), %rdi
movl -0x58(%rbp), %esi
subl -0x5c(%rbp), %esi
leaq 0x129cb(%rip), %rdx     # 0x2fd0f
callq 0x1dac0
jmp 0x1d34b
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x1d2d5
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
cmpl -0x4c(%rbp), %eax
jge 0x1d3ee
movslq -0x20(%rbp), %rax
cmpl $0x0, -0x70(%rbp,%rax,4)
je 0x1d3de
movq -0x18(%rbp), %rdi
movl -0x20(%rbp), %edx
movl $0x1, %esi
xorl %ecx, %ecx
xorl %eax, %eax
movl %eax, %r8d
leaq -0x54(%rbp), %r9
leaq -0x58(%rbp), %rax
movq %rax, (%rsp)
callq 0x7ef0
movq -0x18(%rbp), %rdi
movl -0x20(%rbp), %edx
leaq -0x60(%rbp), %r8
movl $0x1, %esi
xorl %ecx, %ecx
callq 0x7ff0
movq -0x10(%rbp), %rdi
movl -0x54(%rbp), %esi
subl -0x60(%rbp), %esi
leaq 0x1293f(%rip), %rdx     # 0x2fd02
callq 0x1dac0
movq -0x10(%rbp), %rdi
movl -0x58(%rbp), %esi
subl -0x5c(%rbp), %esi
leaq 0x12936(%rip), %rdx     # 0x2fd0f
callq 0x1dac0
jmp 0x1d3e0
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x1d360
jmp 0x1d42d
movq -0x18(%rbp), %rax
cmpl $0x6, 0x18(%rax)
jne 0x1d40e
movq -0x10(%rbp), %rdi
xorl %esi, %esi
leaq 0x129c0(%rip), %rdx     # 0x2fdc7
callq 0x1d780
jmp 0x1d42b
movq 0x18bbb(%rip), %rax     # 0x35fd0
movq (%rax), %rdi
leaq 0x129b1(%rip), %rsi     # 0x2fdd0
movb $0x0, %al
callq 0x2160
jmp 0x1d76b
jmp 0x1d42d
jmp 0x1d42f
jmp 0x1d431
jmp 0x1d433
jmp 0x1d435
jmp 0x1d437
jmp 0x1d439
movq -0x18(%rbp), %rax
cmpl $0x0, 0x18(%rax)
jne 0x1d47a
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x2b4(%rax), %eax
shll $0x4, %eax
movq -0x18(%rbp), %rcx
orl 0x2b8(%rcx), %eax
movslq %eax, %rcx
leaq 0x104c8(%rip), %rax     # 0x2d930
movzbl (%rax,%rcx), %esi
leaq 0x12978(%rip), %rdx     # 0x2fdeb
callq 0x1d780
jmp 0x1d4bb
movq -0x18(%rbp), %rax
cmpl $0x1, 0x18(%rax)
je 0x1d4b9
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x2b4(%rax), %eax
shll $0x4, %eax
movq -0x18(%rbp), %rcx
orl 0x2b8(%rcx), %eax
movslq %eax, %rcx
leaq 0x104b7(%rip), %rax     # 0x2d960
movzbl (%rax,%rcx), %esi
leaq 0x1294e(%rip), %rdx     # 0x2fe02
callq 0x1d780
jmp 0x1d4bb
movq -0x18(%rbp), %rax
cmpl $0x1, 0x18(%rax)
jne 0x1d5c1
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
jg 0x1d4dc
movq -0x18(%rbp), %rax
cmpl $0x0, 0x4(%rax)
jle 0x1d502
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x2b0(%rax), %esi
movq -0x18(%rbp), %rax
subl -0xcd8(%rax), %esi
leaq 0xe828(%rip), %rdx      # 0x2bd23
callq 0x1dac0
jmp 0x1d537
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x2b0(%rax), %esi
movq -0x8(%rbp), %rax
movq 0x10dae0(%rax), %rax
subl 0x1034(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x10db44(%rax), %esi
leaq 0xe7f1(%rip), %rdx      # 0x2bd23
callq 0x1dac0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x18(%rbp), %r8
addq $0x2c4, %r8             # imm = 0x2C4
movl $0xfffffffe, %ecx       # imm = 0xFFFFFFFE
movl $0x10, %r9d
callq 0x1db20
movq -0x18(%rbp), %rax
cmpl $0x0, 0x2b8(%rax)
je 0x1d5bc
movl $0x0, -0x20(%rbp)
cmpl $0x10, -0x20(%rbp)
jge 0x1d5ba
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movl -0x20(%rbp), %ecx
movq -0x18(%rbp), %r8
addq $0x324, %r8             # imm = 0x324
movslq -0x20(%rbp), %rax
imulq $0x84, %rax, %rax
addq %rax, %r8
addq $0x8, %r8
movl $0xf, %r9d
callq 0x1db20
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x1d572
jmp 0x1d5bc
jmp 0x1d69c
movq -0x18(%rbp), %rax
cmpl $0x0, 0x2b8(%rax)
jne 0x1d5df
movq -0x18(%rbp), %rax
cmpl $0x0, 0x2b4(%rax)
je 0x1d69a
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x2b0(%rax), %esi
movq -0x8(%rbp), %rax
movq 0x10dae0(%rax), %rax
subl 0x1034(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x10db44(%rax), %esi
leaq 0xe714(%rip), %rdx      # 0x2bd23
callq 0x1dac0
movl $0x0, -0x20(%rbp)
cmpl $0x10, -0x20(%rbp)
jge 0x1d698
movq -0x18(%rbp), %rax
movl 0x2b8(%rax), %eax
movl %eax, -0x84(%rbp)
movl -0x20(%rbp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x84(%rbp), %eax
movl $0x1, %edx
shll %cl, %edx
movl %edx, %ecx
andl %ecx, %eax
cmpl $0x0, %eax
je 0x1d68b
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movl -0x20(%rbp), %ecx
movq -0x18(%rbp), %r8
addq $0x324, %r8             # imm = 0x324
movslq -0x20(%rbp), %rax
imulq $0x84, %rax, %rax
addq %rax, %r8
addq $0x44, %r8
movl $0x10, %r9d
callq 0x1db20
jmp 0x1d68d
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x1d61b
jmp 0x1d69a
jmp 0x1d69c
movq -0x18(%rbp), %rax
cmpl $0x0, 0x2b4(%rax)
je 0x1d76b
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x18(%rbp), %r8
addq $0x304, %r8             # imm = 0x304
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
movl $0x4, %r9d
callq 0x1db20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x18(%rbp), %r8
addq $0x304, %r8             # imm = 0x304
addq $0x10, %r8
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
movl $0x4, %r9d
callq 0x1db20
movq -0x18(%rbp), %rax
movl 0x2b4(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x1d769
movl $0x0, -0x20(%rbp)
cmpl $0x8, -0x20(%rbp)
jge 0x1d767
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movl -0x20(%rbp), %ecx
addl $0x10, %ecx
movq -0x18(%rbp), %r8
addq $0x324, %r8             # imm = 0x324
movl -0x20(%rbp), %eax
addl $0x10, %eax
cltq
imulq $0x84, %rax, %rax
addq %rax, %r8
addq $0x8, %r8
movl $0xf, %r9d
callq 0x1db20
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x1d718
jmp 0x1d769
jmp 0x1d76b
addq $0x90, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)