// File: /workspace/github_c_makefile_star2_O3/akumrao[P]videoAnalyzer/encoder/macroblock.c
// Function: block_residual_write_cavlc(x264_t*, bs_s*, x264_macroblock_t*, int, int*, int)
static void block_residual_write_cavlc(x264_t *h, bs_t *s, x264_macroblock_t *mb, int i_idx, int *l, int i_count) {LOG_CALL;
    int level[16], run[16];
    int i_total, i_trailing;
    int i_total_zero;
    int i_last;
    unsigned int i_sign;

    int i;
    int i_zero_left;
    int i_suffix_length;

    /* first find i_last */
    i_last = i_count - 1;
    while (i_last >= 0 && l[i_last] == 0)
    {
        i_last--;
    }

    i_sign = 0;
    i_total = 0;
    i_trailing = 0;
    i_total_zero = 0;

    if (i_last >= 0)
    {
        int b_trailing = 1;
        int idx = 0;

        /* level and run and total */
        while (i_last >= 0)
        {
            level[idx] = l[i_last--];

            run[idx] = 0;
            while (i_last >= 0 && l[i_last] == 0)
            {
                run[idx]++;
                i_last--;
            }

            i_total++;
            i_total_zero += run[idx];

            if (b_trailing && abs(level[idx]) == 1 && i_trailing < 3)
            {
                i_sign <<= 1;
                if (level[idx] < 0)
                {
                    i_sign |= 0x01;
                }

                i_trailing++;
            } else
            {
                b_trailing = 0;
            }

            idx++;
        }
    }

    /* total/trailing */
    if (i_idx == BLOCK_INDEX_CHROMA_DC)
    {
        bs_write_vlc(s, x264_coeff_token[4][i_total * 4 + i_trailing], "vlc BLOCK_INDEX_CHROMA_DC x264_coeff_token");
    } else
    {
        /* x264_mb_predict_non_zero_code return 0 <-> (16+16+1)>>1 = 16 */
        static const int ct_index[17] = {0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3};
        int nC;

        if (i_idx == BLOCK_INDEX_LUMA_DC)
        {
            nC = x264_mb_predict_non_zero_code(h, mb, 0);
        } else
        {
            nC = x264_mb_predict_non_zero_code(h, mb, i_idx);
        }

        bs_write_vlc(s, x264_coeff_token[ct_index[nC]][i_total * 4 + i_trailing],"vlc x264_coeff_token");
    }

    if (i_total <= 0)
    {
        return;
    }

    i_suffix_length = i_total > 10 && i_trailing < 3 ? 1 : 0;
    if (i_trailing > 0)
    {
        bs_write(s, i_trailing, i_sign,"i_trailing");
    }
    for (i = i_trailing; i < i_total; i++)
    {
        int i_level_code;

        /* calculate level code */
        if (level[i] < 0)
        {
            i_level_code = -2 * level[i] - 1;
        } else /* if( level[i] > 0 ) */
        {
            i_level_code = 2 * level[i] - 2;
        }
        if (i == i_trailing && i_trailing < 3)
        {
            i_level_code -= 2; /* as level[i] can't be 1 for the first one if i_trailing < 3 */
        }

        if ((i_level_code >> i_suffix_length) < 14)
        {
            bs_write_vlc(s, x264_level_prefix[i_level_code >> i_suffix_length],"vlc x264_level_prefix");
            if (i_suffix_length > 0)
            {
                bs_write(s, i_suffix_length, i_level_code,"i_suffix_length");
            }
        } else if (i_suffix_length == 0 && i_level_code < 30)
        {
            bs_write_vlc(s, x264_level_prefix[14],"vlc x264_level_prefix");
            bs_write(s, 4, i_level_code - 14,"i_level_code");
        } else if (i_suffix_length > 0 && (i_level_code >> i_suffix_length) == 14)
        {
            bs_write_vlc(s, x264_level_prefix[14],"vlc x264_level_prefix");
            bs_write(s, i_suffix_length, i_level_code,"i_suffix_length");
        } else
        {
            bs_write_vlc(s, x264_level_prefix[15],"vlc x264_level_prefix");
            i_level_code -= 15 << i_suffix_length;
            if (i_suffix_length == 0)
            {
                i_level_code -= 15;
            }

            if (i_level_code >= (1 << 12) || i_level_code < 0)
            {
                fprintf(stderr, "OVERFLOW levelcode=%d\n", i_level_code);
            }

            bs_write(s, 12, i_level_code,"i_level_code"); /* check overflow ?? */
        }

        if (i_suffix_length == 0)
        {
            i_suffix_length++;
        }
        if (abs(level[i]) > (3 << (i_suffix_length - 1)) && i_suffix_length < 6)
        {
            i_suffix_length++;
        }
    }

    if (i_total < i_count)
    {
        if (i_idx == BLOCK_INDEX_CHROMA_DC)
        {
            bs_write_vlc(s, x264_total_zeros_dc[i_total - 1][i_total_zero],"vlc x264_total_zeros_dc");
        } else
        {
            bs_write_vlc(s, x264_total_zeros[i_total - 1][i_total_zero],"vlc x264_total_zeros");
        }
    }

    for (i = 0, i_zero_left = i_total_zero; i < i_total - 1; i++)
    {
        int i_zl;

        if (i_zero_left <= 0)
        {
            break;
        }

        i_zl = X264_MIN(i_zero_left - 1, 6);

        bs_write_vlc(s, x264_run_before[i_zl][run[i]],"vlc x264_run_before");

        i_zero_left -= run[i];
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movl %r9d, %r12d
movq %r8, %r15
movl %ecx, -0x4c(%rbp)
movq %rdx, -0x38(%rbp)
movq %rsi, %rbx
movq %rdi, %r13
leaq 0xd467(%rip), %rdi      # 0x271b4
leaq 0x13a10(%rip), %rsi     # 0x2d764
leaq 0x13e13(%rip), %rdx     # 0x2db6e
xorl %r14d, %r14d
xorl %eax, %eax
callq 0x4a56
movl %r12d, %eax
leaq (%r15,%rax,4), %rcx
addq $-0x4, %rcx
movl %r12d, %eax
movl %r12d, -0x50(%rbp)
testl %eax, %eax
jle 0x19e2d
decl %eax
cmpl $0x0, (%rcx)
leaq -0x4(%rcx), %rcx
je 0x19d77
movl $0x1, %edx
xorl %r12d, %r12d
xorl %r10d, %r10d
xorl %r8d, %r8d
xorl %r14d, %r14d
movl %eax, %ecx
movl (%r15,%rcx,4), %esi
movl %esi, -0xe0(%rbp,%r12,4)
testl %eax, %eax
je 0x19dcf
movl %r8d, %r9d
leal -0x1(%rax), %edi
xorl %ecx, %ecx
movl %edi, %r8d
cmpl $0x0, (%r15,%r8,4)
jne 0x19dd8
incl %ecx
addl $-0x1, %edi
jb 0x19db5
movl %eax, %ecx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
jmp 0x19dda
xorl %ecx, %ecx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
jmp 0x19ddd
movl %edi, %eax
movl %r9d, %r8d
movl %ecx, -0xa0(%rbp,%r12,4)
xorl %edi, %edi
testl %edx, %edx
je 0x19e1b
movl %r8d, %r9d
leal 0x1(%rsi), %edx
testl $0xfffffffd, %edx       # imm = 0xFFFFFFFD
sete %dl
cmpl $0x3, %r10d
setl %r8b
andb %dl, %r8b
cmpb $0x1, %r8b
jne 0x19e18
shldl $0x1, %esi, %r14d
incl %r10d
movl $0x1, %edi
movl %r9d, %r8d
incq %r12
addl %ecx, %r8d
movl %edi, %edx
testl %eax, %eax
jns 0x19d9b
jmp 0x19e36
xorl %r8d, %r8d
xorl %r10d, %r10d
xorl %r12d, %r12d
movl %r8d, -0x2c(%rbp)
movl -0x4c(%rbp), %edx
cmpl $-0x1, %edx
movq %r10, -0x40(%rbp)
je 0x19f32
xorl %eax, %eax
cmpl $-0x2, %edx
cmovel %eax, %edx
movq %r13, %rdi
movq -0x38(%rbp), %rsi
movq %r10, %r15
callq 0x660f
cltq
leaq 0x12226(%rip), %rcx     # 0x2c090
movslq (%rcx,%rax,4), %rax
leal (%r15,%r12,4), %ecx
movslq %ecx, %rcx
imulq $0x220, %rax, %rax      # imm = 0x220
leaq 0x1233d(%rip), %rdx     # 0x2c1c0
addq %rax, %rdx
movq (%rdx,%rcx,8), %r15
movq %r15, %r13
shrq $0x20, %r13
leaq 0xd31c(%rip), %rdi      # 0x271b4
leaq 0x138c5(%rip), %rsi     # 0x2d764
leaq 0x13d9c(%rip), %rdx     # 0x2dc42
xorl %eax, %eax
callq 0x4a56
leaq 0x113e4(%rip), %rdi     # 0x2b298
leaq 0x13cf9(%rip), %rcx     # 0x2dbb4
movl %r13d, %esi
movl %r15d, %edx
xorl %eax, %eax
callq 0x4a56
testl %r13d, %r13d
jle 0x19fe2
incl %r13d
movq 0x8(%rbx), %rax
cmpq 0x10(%rbx), %rax
jae 0x19fe2
movb 0x18(%rbx), %cl
decb %cl
movl $0x1, %edx
shll %cl, %edx
leal -0x2(%r13), %ecx
movzbl %cl, %ecx
movb (%rax), %sil
movl %edx, %edi
notb %dil
andb %sil, %dil
orb %dl, %sil
btl %ecx, %r15d
movzbl %sil, %ecx
movzbl %dil, %edx
cmovbl %ecx, %edx
movb %dl, (%rax)
decl 0x18(%rbx)
jne 0x19f24
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %r13d
cmpl $0x1, %r13d
ja 0x19ed4
jmp 0x19fe2
leal (%r10,%r12,4), %eax
cltq
leaq 0x12281(%rip), %rcx     # 0x2c1c0
movq 0x880(%rcx,%rax,8), %r15
movq %r15, %r13
shrq $0x20, %r13
leaq 0xd25f(%rip), %rdi      # 0x271b4
leaq 0x13808(%rip), %rsi     # 0x2d764
leaq 0x13cdf(%rip), %rdx     # 0x2dc42
xorl %eax, %eax
callq 0x4a56
leaq 0x11327(%rip), %rdi     # 0x2b298
leaq 0x13c11(%rip), %rcx     # 0x2db89
movl %r13d, %esi
movl %r15d, %edx
xorl %eax, %eax
callq 0x4a56
testl %r13d, %r13d
jle 0x19fe2
incl %r13d
movq 0x8(%rbx), %rax
cmpq 0x10(%rbx), %rax
jae 0x19fe2
movb 0x18(%rbx), %cl
decb %cl
movl $0x1, %edx
shll %cl, %edx
leal -0x2(%r13), %ecx
movzbl %cl, %ecx
movb (%rax), %sil
movl %edx, %edi
notb %dil
andb %sil, %dil
orb %dl, %sil
btl %ecx, %r15d
movzbl %sil, %ecx
movzbl %dil, %edx
cmovbl %ecx, %edx
movb %dl, (%rax)
decl 0x18(%rbx)
jne 0x19fd9
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %r13d
cmpl $0x1, %r13d
ja 0x19f8d
testl %r12d, %r12d
je 0x1a876
movq %r12, -0x48(%rbp)
cmpl $0xb, %r12d
setae %r15b
movq -0x40(%rbp), %r9
cmpl $0x3, %r9d
setl %r12b
testl %r9d, %r9d
jle 0x1a07f
leaq 0x11289(%rip), %rdi     # 0x2b298
leaq 0x13bb3(%rip), %rcx     # 0x2dbc9
movl %r9d, %esi
movl %r14d, %edx
xorl %eax, %eax
callq 0x4a56
movq -0x40(%rbp), %r9
leal 0x1(%r9), %eax
movq 0x8(%rbx), %rdx
cmpq 0x10(%rbx), %rdx
jae 0x1a07f
movb 0x18(%rbx), %cl
decb %cl
movl $0x1, %esi
shll %cl, %esi
leal -0x2(%rax), %ecx
movzbl %cl, %ecx
movb (%rdx), %dil
movl %esi, %r8d
notb %r8b
andb %dil, %r8b
orb %sil, %dil
btl %ecx, %r14d
movzbl %dil, %ecx
movzbl %r8b, %esi
cmovbl %ecx, %esi
movb %sil, (%rdx)
decl 0x18(%rbx)
jne 0x1a078
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %eax
cmpl $0x1, %eax
ja 0x1a02b
cmpl -0x48(%rbp), %r9d
jge 0x1a5e4
andb %r12b, %r15b
movzbl %r15b, %r13d
movslq %r9d, %rax
movq %rax, -0x58(%rbp)
movq %rax, %r14
movl -0xe0(%rbp,%r14,4), %ecx
leal (%rcx,%rcx), %eax
testl %ecx, %ecx
notl %eax
movq %rcx, -0x60(%rbp)
leal -0x2(%rcx,%rcx), %ecx
cmovsl %eax, %ecx
leal -0x2(%rcx), %r15d
movq %r14, -0x38(%rbp)
cmpq -0x58(%rbp), %r14
cmovnel %ecx, %r15d
cmpl $0x3, %r9d
cmovgel %ecx, %r15d
movl %r15d, %r14d
movl %r13d, %ecx
sarl %cl, %r14d
cmpl $0xd, %r14d
jg 0x1a21d
movslq %r14d, %rax
leaq 0x11ff7(%rip), %rcx     # 0x2c0e0
movq (%rcx,%rax,8), %r12
movq %r12, %r14
shrq $0x20, %r14
leaq 0xd0b9(%rip), %rdi      # 0x271b4
leaq 0x13662(%rip), %rsi     # 0x2d764
leaq 0x13b39(%rip), %rdx     # 0x2dc42
xorl %eax, %eax
callq 0x4a56
leaq 0x11181(%rip), %rdi     # 0x2b298
movl %r14d, %esi
movl %r12d, %edx
leaq 0x13ab0(%rip), %rcx     # 0x2dbd4
xorl %eax, %eax
callq 0x4a56
testl %r14d, %r14d
jle 0x1a188
incl %r14d
movq 0x8(%rbx), %rax
cmpq 0x10(%rbx), %rax
jae 0x1a188
movb 0x18(%rbx), %cl
decb %cl
movl $0x1, %edx
shll %cl, %edx
leal -0x2(%r14), %ecx
movzbl %cl, %ecx
movb (%rax), %sil
movl %edx, %edi
notb %dil
andb %sil, %dil
orb %dl, %sil
btl %ecx, %r12d
movzbl %sil, %ecx
movzbl %dil, %edx
cmovbl %ecx, %edx
movb %dl, (%rax)
decl 0x18(%rbx)
jne 0x1a17f
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %r14d
cmpl $0x1, %r14d
ja 0x1a133
testl %r13d, %r13d
movq -0x48(%rbp), %r12
movq -0x40(%rbp), %r9
movq -0x38(%rbp), %r14
jle 0x1a581
leaq 0x110f4(%rip), %rdi     # 0x2b298
movl %r13d, %esi
movl %r15d, %edx
leaq 0x10077(%rip), %rcx     # 0x2a228
xorl %eax, %eax
callq 0x4a56
movq -0x40(%rbp), %r9
leal 0x1(%r13), %eax
movq 0x8(%rbx), %rdx
cmpq 0x10(%rbx), %rdx
jae 0x1a581
movb 0x18(%rbx), %cl
decb %cl
movl $0x1, %esi
shll %cl, %esi
leal -0x2(%rax), %ecx
movzbl %cl, %ecx
movb (%rdx), %dil
movl %esi, %r8d
notb %r8b
andb %dil, %r8b
orb %sil, %dil
btl %ecx, %r15d
movzbl %dil, %ecx
movzbl %r8b, %esi
cmovbl %ecx, %esi
movb %sil, (%rdx)
decl 0x18(%rbx)
jne 0x1a211
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %eax
cmpl $0x1, %eax
ja 0x1a1c0
jmp 0x1a581
testl %r13d, %r13d
jne 0x1a349
cmpl $0x1d, %r15d
jg 0x1a349
leaq 0xcf7d(%rip), %rdi      # 0x271b4
leaq 0x13526(%rip), %rsi     # 0x2d764
leaq 0x139fd(%rip), %rdx     # 0x2dc42
xorl %eax, %eax
callq 0x4a56
leaq 0x11045(%rip), %rdi     # 0x2b298
movl $0xf, %esi
movl $0x1, %edx
leaq 0x13970(%rip), %rcx     # 0x2dbd4
xorl %eax, %eax
callq 0x4a56
movl $0x10, %eax
movq -0x48(%rbp), %r12
movq -0x38(%rbp), %r14
movq 0x8(%rbx), %rdx
cmpq 0x10(%rbx), %rdx
jae 0x1a2c2
movb 0x18(%rbx), %cl
decb %cl
movl $0x1, %esi
shll %cl, %esi
movb (%rdx), %cl
movl %esi, %edi
notb %dil
andb %cl, %dil
orb %sil, %cl
cmpl $0x2, %eax
movzbl %cl, %ecx
movzbl %dil, %esi
cmovel %ecx, %esi
movb %sil, (%rdx)
decl 0x18(%rbx)
jne 0x1a2bb
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %eax
cmpl $0x1, %eax
ja 0x1a278
addl $-0xe, %r15d
leaq 0x10fcb(%rip), %rdi     # 0x2b298
movl $0x4, %esi
movl %r15d, %edx
leaq 0xff5c(%rip), %rcx      # 0x2a238
xorl %eax, %eax
callq 0x4a56
movl $0x5, %eax
movq -0x40(%rbp), %r9
movq 0x8(%rbx), %rdx
cmpq 0x10(%rbx), %rdx
jae 0x1a581
movb 0x18(%rbx), %cl
decb %cl
movl $0x1, %esi
shll %cl, %esi
leal -0x2(%rax), %ecx
movzbl %cl, %ecx
movb (%rdx), %dil
movl %esi, %r8d
notb %r8b
andb %dil, %r8b
orb %sil, %dil
btl %ecx, %r15d
movzbl %dil, %ecx
movzbl %r8b, %esi
cmovbl %ecx, %esi
movb %sil, (%rdx)
decl 0x18(%rbx)
jne 0x1a33d
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %eax
cmpl $0x1, %eax
ja 0x1a2ec
jmp 0x1a581
leaq 0xce64(%rip), %rdi      # 0x271b4
leaq 0x1340d(%rip), %rsi     # 0x2d764
leaq 0x138e4(%rip), %rdx     # 0x2dc42
xorl %eax, %eax
callq 0x4a56
testl %r13d, %r13d
movq -0x48(%rbp), %r12
jle 0x1a46e
cmpl $0xe, %r14d
jne 0x1a46e
leaq 0x10f15(%rip), %rdi     # 0x2b298
movl $0xf, %esi
movl $0x1, %edx
leaq 0x13840(%rip), %rcx     # 0x2dbd4
xorl %eax, %eax
callq 0x4a56
movl $0x10, %eax
movq -0x38(%rbp), %r14
movq 0x8(%rbx), %rdx
cmpq 0x10(%rbx), %rdx
jae 0x1a3ee
movb 0x18(%rbx), %cl
decb %cl
movl $0x1, %esi
shll %cl, %esi
movb (%rdx), %cl
movl %esi, %edi
notb %dil
andb %cl, %dil
orb %sil, %cl
cmpl $0x2, %eax
movzbl %cl, %ecx
movzbl %dil, %esi
cmovel %ecx, %esi
movb %sil, (%rdx)
decl 0x18(%rbx)
jne 0x1a3e7
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %eax
cmpl $0x1, %eax
ja 0x1a3a4
leaq 0x10ea3(%rip), %rdi     # 0x2b298
movl %r13d, %esi
movl %r15d, %edx
leaq 0xfe26(%rip), %rcx      # 0x2a228
xorl %eax, %eax
callq 0x4a56
leal 0x1(%r13), %eax
movq -0x40(%rbp), %r9
movq 0x8(%rbx), %rdx
cmpq 0x10(%rbx), %rdx
jae 0x1a581
movb 0x18(%rbx), %cl
decb %cl
movl $0x1, %esi
shll %cl, %esi
leal -0x2(%rax), %ecx
movzbl %cl, %ecx
movb (%rdx), %dil
movl %esi, %r8d
notb %r8b
andb %dil, %r8b
orb %sil, %dil
btl %ecx, %r15d
movzbl %dil, %ecx
movzbl %r8b, %esi
cmovbl %ecx, %esi
movb %sil, (%rdx)
decl 0x18(%rbx)
jne 0x1a462
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %eax
cmpl $0x1, %eax
ja 0x1a411
jmp 0x1a581
leaq 0x10e23(%rip), %rdi     # 0x2b298
movl $0x10, %esi
movl $0x1, %edx
leaq 0x1374e(%rip), %rcx     # 0x2dbd4
xorl %eax, %eax
callq 0x4a56
movl $0x11, %eax
movq -0x38(%rbp), %r14
movq 0x8(%rbx), %rdx
cmpq 0x10(%rbx), %rdx
jae 0x1a4e0
movb 0x18(%rbx), %cl
decb %cl
movl $0x1, %esi
shll %cl, %esi
movb (%rdx), %cl
movl %esi, %edi
notb %dil
andb %cl, %dil
orb %sil, %cl
cmpl $0x2, %eax
movzbl %cl, %ecx
movzbl %dil, %esi
cmovel %ecx, %esi
movb %sil, (%rdx)
decl 0x18(%rbx)
jne 0x1a4d9
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %eax
cmpl $0x1, %eax
ja 0x1a496
movl $0xfffffff1, %eax       # imm = 0xFFFFFFF1
movl %r13d, %ecx
shll %cl, %eax
leal (%r15,%rax), %ecx
testl %r13d, %r13d
leal -0xf(%r15,%rax), %r15d
cmovnel %ecx, %r15d
cmpl $0x1000, %r15d          # imm = 0x1000
jae 0x1a5c4
leaq 0x10d8a(%rip), %rdi     # 0x2b298
movl $0xc, %esi
movl %r15d, %edx
leaq 0xfd1b(%rip), %rcx      # 0x2a238
xorl %eax, %eax
callq 0x4a56
movl $0xd, %eax
movq -0x40(%rbp), %r9
movq 0x8(%rbx), %rdx
cmpq 0x10(%rbx), %rdx
jae 0x1a581
movb 0x18(%rbx), %cl
decb %cl
movl $0x1, %esi
shll %cl, %esi
leal -0x2(%rax), %ecx
movzbl %cl, %ecx
movb (%rdx), %dil
movl %esi, %r8d
notb %r8b
andb %dil, %r8b
orb %sil, %dil
btl %ecx, %r15d
movzbl %dil, %ecx
movzbl %r8b, %esi
cmovbl %ecx, %esi
movb %sil, (%rdx)
decl 0x18(%rbx)
jne 0x1a57a
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %eax
cmpl $0x1, %eax
ja 0x1a52d
cmpl $0x1, %r13d
adcl $0x0, %r13d
movq -0x60(%rbp), %rcx
movl %ecx, %eax
negl %eax
cmovsl %ecx, %eax
leal -0x1(%r13), %ecx
movl $0x3, %edx
shll %cl, %edx
cmpl %edx, %eax
setg %al
cmpl $0x6, %r13d
setl %cl
andb %al, %cl
movzbl %cl, %eax
addl %r13d, %eax
incq %r14
movl %eax, %r13d
cmpl %r14d, %r12d
jne 0x1a09a
jmp 0x1a5e4
movq 0x18a05(%rip), %rax     # 0x32fd0
movq (%rax), %rdi
leaq 0x13615(%rip), %rsi     # 0x2dbea
movl %r15d, %edx
xorl %eax, %eax
callq 0x2170
jmp 0x1a507
movq -0x48(%rbp), %rax
leal -0x1(%rax), %r12d
cmpl -0x50(%rbp), %eax
movl -0x2c(%rbp), %r8d
jge 0x1a778
movl %r12d, %ecx
movslq %r8d, %rax
cmpl $-0x1, -0x4c(%rbp)
je 0x1a6c7
shlq $0x7, %rcx
leaq 0x1264c(%rip), %rdx     # 0x2cc60
addq %rcx, %rdx
movq (%rdx,%rax,8), %r14
movq %r14, %r15
shrq $0x20, %r15
leaq 0xcb8b(%rip), %rdi      # 0x271b4
leaq 0x13134(%rip), %rsi     # 0x2d764
leaq 0x1360b(%rip), %rdx     # 0x2dc42
xorl %eax, %eax
callq 0x4a56
leaq 0x10c53(%rip), %rdi     # 0x2b298
leaq 0x135cd(%rip), %rcx     # 0x2dc19
movl %r15d, %esi
movl %r14d, %edx
xorl %eax, %eax
callq 0x4a56
testl %r15d, %r15d
movl -0x2c(%rbp), %r8d
jle 0x1a778
incl %r15d
movq 0x8(%rbx), %rax
cmpq 0x10(%rbx), %rax
jae 0x1a778
movb 0x18(%rbx), %cl
decb %cl
movl $0x1, %edx
shll %cl, %edx
leal -0x2(%r15), %ecx
movzbl %cl, %ecx
movb (%rax), %sil
movl %edx, %edi
notb %dil
andb %sil, %dil
orb %dl, %sil
btl %ecx, %r14d
movzbl %sil, %ecx
movzbl %dil, %edx
cmovbl %ecx, %edx
movb %dl, (%rax)
decl 0x18(%rbx)
jne 0x1a6b9
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %r15d
cmpl $0x1, %r15d
ja 0x1a669
jmp 0x1a778
shlq $0x5, %rcx
leaq 0x11a8e(%rip), %rdx     # 0x2c160
addq %rcx, %rdx
movq (%rdx,%rax,8), %r14
movq %r14, %r15
shrq $0x20, %r15
leaq 0xcacd(%rip), %rdi      # 0x271b4
leaq 0x13076(%rip), %rsi     # 0x2d764
leaq 0x1354d(%rip), %rdx     # 0x2dc42
xorl %eax, %eax
callq 0x4a56
leaq 0x10b95(%rip), %rdi     # 0x2b298
leaq 0x134f7(%rip), %rcx     # 0x2dc01
movl %r15d, %esi
movl %r14d, %edx
xorl %eax, %eax
callq 0x4a56
testl %r15d, %r15d
movl -0x2c(%rbp), %r8d
jle 0x1a778
incl %r15d
movq 0x8(%rbx), %rax
cmpq 0x10(%rbx), %rax
jae 0x1a778
movb 0x18(%rbx), %cl
decb %cl
movl $0x1, %edx
shll %cl, %edx
leal -0x2(%r15), %ecx
movzbl %cl, %ecx
movb (%rax), %sil
movl %edx, %edi
notb %dil
andb %sil, %dil
orb %dl, %sil
btl %ecx, %r14d
movzbl %sil, %ecx
movzbl %dil, %edx
cmovbl %ecx, %edx
movb %dl, (%rax)
decl 0x18(%rbx)
jne 0x1a76f
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %r15d
cmpl $0x1, %r15d
ja 0x1a723
cmpl $0x2, -0x48(%rbp)
jl 0x1a876
testl %r8d, %r8d
jle 0x1a876
movslq %r12d, %rax
movq %rax, -0x38(%rbp)
xorl %r14d, %r14d
cmpl $0x7, %r8d
movl $0x7, %eax
movl %r8d, -0x2c(%rbp)
cmovbl %r8d, %eax
decl %eax
movslq -0xa0(%rbp,%r14,4), %r13
imulq $0x78, %rax, %rax
leaq 0x12c25(%rip), %rcx     # 0x2d3e0
addq %rcx, %rax
movq (%rax,%r13,8), %r12
movq %r12, %r15
shrq $0x20, %r15
leaq 0xc9e4(%rip), %rdi      # 0x271b4
leaq 0x12f8d(%rip), %rsi     # 0x2d764
leaq 0x13464(%rip), %rdx     # 0x2dc42
xorl %eax, %eax
callq 0x4a56
leaq 0x10aac(%rip), %rdi     # 0x2b298
movl %r15d, %esi
movl %r12d, %edx
leaq 0x13435(%rip), %rcx     # 0x2dc2e
xorl %eax, %eax
callq 0x4a56
testl %r15d, %r15d
jle 0x1a85d
incl %r15d
movq 0x8(%rbx), %rax
cmpq 0x10(%rbx), %rax
jae 0x1a85d
movb 0x18(%rbx), %cl
decb %cl
movl $0x1, %edx
shll %cl, %edx
leal -0x2(%r15), %ecx
movzbl %cl, %ecx
movb (%rax), %sil
movl %edx, %edi
notb %dil
andb %sil, %dil
orb %dl, %sil
btl %ecx, %r12d
movzbl %sil, %ecx
movzbl %dil, %edx
cmovbl %ecx, %edx
movb %dl, (%rax)
decl 0x18(%rbx)
jne 0x1a854
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %r15d
cmpl $0x1, %r15d
ja 0x1a808
incq %r14
cmpq -0x38(%rbp), %r14
movl -0x2c(%rbp), %r8d
jge 0x1a876
subl %r13d, %r8d
testl %r8d, %r8d
jg 0x1a795
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq