// File: /workspace/github_c_makefile_star2_O1/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, -0x48(%rbp)
movq %rsi, %rbx
movq %rdi, %r13
leaq 0xc188(%rip), %rdi      # 0x251b4
leaq 0x129e5(%rip), %rsi     # 0x2ba18
leaq 0x12de8(%rip), %rdx     # 0x2be22
xorl %r14d, %r14d
xorl %eax, %eax
callq 0x4c22
movl %r12d, %eax
leaq (%r15,%rax,4), %rcx
addq $-0x4, %rcx
movl %r12d, -0x50(%rbp)
movl %r12d, %eax
testl %eax, %eax
jle 0x190f5
decl %eax
cmpl $0x0, (%rcx)
leaq -0x4(%rcx), %rcx
je 0x19056
movl $0x1, %edx
xorl %r12d, %r12d
xorl %r10d, %r10d
xorl %r9d, %r9d
xorl %r14d, %r14d
movl %eax, %ecx
movl (%r15,%rcx,4), %esi
movl %esi, -0xe0(%rbp,%r12,4)
leal -0x1(%rax), %edi
xorl %ecx, %ecx
testl %eax, %eax
jle 0x190ab
movl %edi, %r8d
cmpl $0x0, (%r15,%r8,4)
jne 0x190ab
incl %ecx
addl $-0x1, %edi
jb 0x19091
movl %eax, %ecx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
jmp 0x190ad
movl %edi, %eax
movl %ecx, -0xa0(%rbp,%r12,4)
xorl %edi, %edi
testl %edx, %edx
jne 0x190c9
incq %r12
addl %ecx, %r9d
movl %edi, %edx
testl %eax, %eax
jns 0x1907a
jmp 0x190fe
leal 0x1(%rsi), %edx
testl $0xfffffffd, %edx       # imm = 0xFFFFFFFD
sete %dl
cmpl $0x3, %r10d
setl %r8b
andb %dl, %r8b
cmpb $0x1, %r8b
jne 0x190bb
shldl $0x1, %esi, %r14d
incl %r10d
movl $0x1, %edi
jmp 0x190bb
xorl %r9d, %r9d
xorl %r10d, %r10d
xorl %r12d, %r12d
movl %r9d, -0x2c(%rbp)
movl -0x4c(%rbp), %edx
cmpl $-0x1, %edx
movq %r10, -0x38(%rbp)
je 0x191fe
xorl %eax, %eax
cmpl $-0x2, %edx
cmovel %eax, %edx
movq %r13, %rdi
movq -0x48(%rbp), %rsi
movq %r10, %r15
callq 0x67eb
cltq
leaq 0x1115e(%rip), %rcx     # 0x2a290
movslq (%rcx,%rax,4), %rax
leal (%r15,%r12,4), %ecx
movslq %ecx, %rcx
imulq $0x220, %rax, %rax      # imm = 0x220
leaq 0x11275(%rip), %rdx     # 0x2a3c0
addq %rax, %rdx
movq (%rdx,%rcx,8), %r15
movq %r15, %r13
shrq $0x20, %r13
leaq 0xc054(%rip), %rdi      # 0x251b4
leaq 0x128b1(%rip), %rsi     # 0x2ba18
leaq 0x12d88(%rip), %rdx     # 0x2bef6
xorl %eax, %eax
callq 0x4c22
leaq 0x1031c(%rip), %rdi     # 0x29498
leaq 0x12ce5(%rip), %rcx     # 0x2be68
movl %r13d, %esi
movl %r15d, %edx
xorl %eax, %eax
callq 0x4c22
testl %r13d, %r13d
movl -0x2c(%rbp), %r9d
jle 0x192b2
incl %r13d
movq 0x8(%rbx), %rax
cmpq 0x10(%rbx), %rax
jae 0x192b2
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 0x191f0
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %r13d
cmpl $0x1, %r13d
jg 0x191a0
jmp 0x192b2
leal (%r10,%r12,4), %eax
cltq
leaq 0x111b5(%rip), %rcx     # 0x2a3c0
movq 0x880(%rcx,%rax,8), %r15
movq %r15, %r13
shrq $0x20, %r13
leaq 0xbf93(%rip), %rdi      # 0x251b4
leaq 0x127f0(%rip), %rsi     # 0x2ba18
leaq 0x12cc7(%rip), %rdx     # 0x2bef6
xorl %eax, %eax
callq 0x4c22
leaq 0x1025b(%rip), %rdi     # 0x29498
leaq 0x12bf9(%rip), %rcx     # 0x2be3d
movl %r13d, %esi
movl %r15d, %edx
xorl %eax, %eax
callq 0x4c22
testl %r13d, %r13d
movl -0x2c(%rbp), %r9d
jle 0x192b2
incl %r13d
movq 0x8(%rbx), %rax
cmpq 0x10(%rbx), %rax
jae 0x192b2
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 0x192a9
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %r13d
cmpl $0x1, %r13d
jg 0x1925d
testl %r12d, %r12d
je 0x19b65
movq %r12, -0x40(%rbp)
cmpl $0xb, %r12d
setae %r15b
movq -0x38(%rbp), %r10
cmpl $0x3, %r10d
setl %r12b
testl %r10d, %r10d
jle 0x19353
leaq 0x101b9(%rip), %rdi     # 0x29498
leaq 0x12b97(%rip), %rcx     # 0x2be7d
movl %r10d, %esi
movl %r14d, %edx
xorl %eax, %eax
callq 0x4c22
movq -0x38(%rbp), %r10
movl -0x2c(%rbp), %r9d
leal 0x1(%r10), %eax
movq 0x8(%rbx), %rdx
cmpq 0x10(%rbx), %rdx
jae 0x19353
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 0x1934c
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %eax
cmpl $0x1, %eax
jg 0x192ff
cmpl -0x40(%rbp), %r10d
jge 0x198cc
andb %r12b, %r15b
movzbl %r15b, %r13d
movslq %r10d, %rax
movq %rax, -0x58(%rbp)
movq %rax, %r14
movl -0xe0(%rbp,%r14,4), %edx
leal (%rdx,%rdx), %eax
testl %edx, %edx
notl %eax
leal -0x2(%rdx,%rdx), %ecx
cmovsl %eax, %ecx
leal -0x2(%rcx), %r15d
movq %r14, -0x48(%rbp)
cmpq -0x58(%rbp), %r14
cmovnel %ecx, %r15d
cmpl $0x3, %r10d
cmovgel %ecx, %r15d
movl %r15d, %r14d
movl %r13d, %ecx
sarl %cl, %r14d
cmpl $0xd, %r14d
movq %rdx, -0x60(%rbp)
jg 0x194f9
movslq %r14d, %rax
leaq 0x10f23(%rip), %rcx     # 0x2a2e0
movq (%rcx,%rax,8), %r12
movq %r12, %r14
shrq $0x20, %r14
leaq 0xbde5(%rip), %rdi      # 0x251b4
leaq 0x12642(%rip), %rsi     # 0x2ba18
leaq 0x12b19(%rip), %rdx     # 0x2bef6
xorl %eax, %eax
callq 0x4c22
leaq 0x100ad(%rip), %rdi     # 0x29498
movl %r14d, %esi
movl %r12d, %edx
leaq 0x12a90(%rip), %rcx     # 0x2be88
xorl %eax, %eax
callq 0x4c22
testl %r14d, %r14d
jle 0x1945c
incl %r14d
movq 0x8(%rbx), %rax
cmpq 0x10(%rbx), %rax
jae 0x1945c
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 0x19453
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %r14d
cmpl $0x1, %r14d
jg 0x19407
testl %r13d, %r13d
movq -0x40(%rbp), %r12
movl -0x2c(%rbp), %r9d
movq -0x38(%rbp), %r10
movq -0x48(%rbp), %r14
jle 0x19869
leaq 0x1001c(%rip), %rdi     # 0x29498
movl %r13d, %esi
movl %r15d, %edx
leaq 0xefab(%rip), %rcx      # 0x28434
xorl %eax, %eax
callq 0x4c22
movq -0x38(%rbp), %r10
movl -0x2c(%rbp), %r9d
leal 0x1(%r13), %eax
movq 0x8(%rbx), %rdx
cmpq 0x10(%rbx), %rdx
jae 0x19869
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 0x194ed
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %eax
cmpl $0x1, %eax
jg 0x1949c
jmp 0x19869
testl %r13d, %r13d
jne 0x19629
cmpl $0x1d, %r15d
jg 0x19629
leaq 0xbca1(%rip), %rdi      # 0x251b4
leaq 0x124fe(%rip), %rsi     # 0x2ba18
leaq 0x129d5(%rip), %rdx     # 0x2bef6
xorl %eax, %eax
callq 0x4c22
leaq 0xff69(%rip), %rdi      # 0x29498
movl $0xf, %esi
movl $0x1, %edx
leaq 0x12948(%rip), %rcx     # 0x2be88
xorl %eax, %eax
callq 0x4c22
movl $0x10, %eax
movq -0x40(%rbp), %r12
movq -0x48(%rbp), %r14
movq 0x8(%rbx), %rdx
cmpq 0x10(%rbx), %rdx
jae 0x1959e
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 0x19597
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %eax
cmpl $0x1, %eax
ja 0x19554
addl $-0xe, %r15d
leaq 0xfeef(%rip), %rdi      # 0x29498
movl $0x4, %esi
movl %r15d, %edx
leaq 0xee8c(%rip), %rcx      # 0x28444
xorl %eax, %eax
callq 0x4c22
movl $0x5, %eax
movl -0x2c(%rbp), %r9d
movq -0x38(%rbp), %r10
movq 0x8(%rbx), %rdx
cmpq 0x10(%rbx), %rdx
jae 0x19869
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 0x1961d
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %eax
cmpl $0x1, %eax
ja 0x195cc
jmp 0x19869
leaq 0xbb84(%rip), %rdi      # 0x251b4
leaq 0x123e1(%rip), %rsi     # 0x2ba18
leaq 0x128b8(%rip), %rdx     # 0x2bef6
xorl %eax, %eax
callq 0x4c22
testl %r13d, %r13d
movq -0x40(%rbp), %r12
jle 0x19752
cmpl $0xe, %r14d
jne 0x19752
leaq 0xfe35(%rip), %rdi      # 0x29498
movl $0xf, %esi
movl $0x1, %edx
leaq 0x12814(%rip), %rcx     # 0x2be88
xorl %eax, %eax
callq 0x4c22
movl $0x10, %eax
movq -0x48(%rbp), %r14
movq 0x8(%rbx), %rdx
cmpq 0x10(%rbx), %rdx
jae 0x196ce
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 0x196c7
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %eax
cmpl $0x1, %eax
ja 0x19684
leaq 0xfdc3(%rip), %rdi      # 0x29498
movl %r13d, %esi
movl %r15d, %edx
leaq 0xed52(%rip), %rcx      # 0x28434
xorl %eax, %eax
callq 0x4c22
leal 0x1(%r13), %eax
movl -0x2c(%rbp), %r9d
movq -0x38(%rbp), %r10
movq 0x8(%rbx), %rdx
cmpq 0x10(%rbx), %rdx
jae 0x19869
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 0x19746
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %eax
cmpl $0x1, %eax
jg 0x196f5
jmp 0x19869
leaq 0xfd3f(%rip), %rdi      # 0x29498
movl $0x10, %esi
movl $0x1, %edx
leaq 0x1271e(%rip), %rcx     # 0x2be88
xorl %eax, %eax
callq 0x4c22
movl $0x11, %eax
movq -0x48(%rbp), %r14
movq 0x8(%rbx), %rdx
cmpq 0x10(%rbx), %rdx
jae 0x197c4
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 0x197bd
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %eax
cmpl $0x1, %eax
ja 0x1977a
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 0x198ac
leaq 0xfca6(%rip), %rdi      # 0x29498
movl $0xc, %esi
movl %r15d, %edx
leaq 0xec43(%rip), %rcx      # 0x28444
xorl %eax, %eax
callq 0x4c22
movl $0xd, %eax
movl -0x2c(%rbp), %r9d
movq -0x38(%rbp), %r10
movq 0x8(%rbx), %rdx
cmpq 0x10(%rbx), %rdx
jae 0x19869
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 0x19862
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %eax
cmpl $0x1, %eax
ja 0x19815
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 0x1936e
jmp 0x198cc
movq 0x1871d(%rip), %rax     # 0x31fd0
movq (%rax), %rdi
leaq 0x125e1(%rip), %rsi     # 0x2be9e
movl %r15d, %edx
xorl %eax, %eax
callq 0x2180
jmp 0x197eb
movq -0x40(%rbp), %r12
cmpl -0x50(%rbp), %r12d
jge 0x19a5b
leal -0x1(%r12), %eax
movslq %r9d, %rcx
cmpl $-0x1, -0x4c(%rbp)
je 0x199aa
shlq $0x7, %rax
leaq 0x11569(%rip), %rdx     # 0x2ae60
addq %rax, %rdx
movq (%rdx,%rcx,8), %r14
movq %r14, %r15
shrq $0x20, %r15
leaq 0xb8a8(%rip), %rdi      # 0x251b4
leaq 0x12105(%rip), %rsi     # 0x2ba18
leaq 0x125dc(%rip), %rdx     # 0x2bef6
xorl %eax, %eax
callq 0x4c22
leaq 0xfb70(%rip), %rdi      # 0x29498
leaq 0x1259e(%rip), %rcx     # 0x2becd
movl %r15d, %esi
movl %r14d, %edx
xorl %eax, %eax
callq 0x4c22
testl %r15d, %r15d
movl -0x2c(%rbp), %r9d
jle 0x19a5b
incl %r15d
movq 0x8(%rbx), %rax
cmpq 0x10(%rbx), %rax
jae 0x19a5b
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 0x1999c
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %r15d
cmpl $0x1, %r15d
jg 0x1994c
jmp 0x19a5b
shlq $0x5, %rax
leaq 0x109ab(%rip), %rdx     # 0x2a360
addq %rax, %rdx
movq (%rdx,%rcx,8), %r14
movq %r14, %r15
shrq $0x20, %r15
leaq 0xb7ea(%rip), %rdi      # 0x251b4
leaq 0x12047(%rip), %rsi     # 0x2ba18
leaq 0x1251e(%rip), %rdx     # 0x2bef6
xorl %eax, %eax
callq 0x4c22
leaq 0xfab2(%rip), %rdi      # 0x29498
leaq 0x124c8(%rip), %rcx     # 0x2beb5
movl %r15d, %esi
movl %r14d, %edx
xorl %eax, %eax
callq 0x4c22
testl %r15d, %r15d
movl -0x2c(%rbp), %r9d
jle 0x19a5b
incl %r15d
movq 0x8(%rbx), %rax
cmpq 0x10(%rbx), %rax
jae 0x19a5b
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 0x19a52
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %r15d
cmpl $0x1, %r15d
jg 0x19a06
cmpl $0x2, %r12d
jl 0x19b65
decl %r12d
xorl %r13d, %r13d
movl %r9d, %eax
movq %r12, -0x40(%rbp)
testl %r9d, %r9d
jle 0x19b51
cmpl $0x7, %r9d
movl $0x7, %eax
movl %r9d, -0x2c(%rbp)
cmovll %r9d, %eax
decl %eax
movslq -0xa0(%rbp,%r13,4), %r14
imulq $0x78, %rax, %rax
leaq 0x11b3f(%rip), %rcx     # 0x2b5e0
addq %rcx, %rax
movq (%rax,%r14,8), %r12
movq %r12, %r15
shrq $0x20, %r15
leaq 0xb6fe(%rip), %rdi      # 0x251b4
leaq 0x11f5b(%rip), %rsi     # 0x2ba18
leaq 0x12432(%rip), %rdx     # 0x2bef6
xorl %eax, %eax
callq 0x4c22
leaq 0xf9c6(%rip), %rdi      # 0x29498
movl %r15d, %esi
movl %r12d, %edx
leaq 0x12403(%rip), %rcx     # 0x2bee2
xorl %eax, %eax
callq 0x4c22
testl %r15d, %r15d
jle 0x19b43
incl %r15d
movq 0x8(%rbx), %rax
cmpq 0x10(%rbx), %rax
jae 0x19b43
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 0x19b3a
incq 0x8(%rbx)
movl $0x8, 0x18(%rbx)
decl %r15d
cmpl $0x1, %r15d
jg 0x19aee
movl -0x2c(%rbp), %r9d
movl %r9d, %eax
subl %r14d, %eax
movq -0x40(%rbp), %r12
testl %r9d, %r9d
jle 0x19b65
incq %r13
movl %eax, %r9d
cmpq %r12, %r13
jne 0x19a72
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq