// File: chhylp123[P]hifiasm/hic.cpp
// Function: clean_sub_tangle(bubble_type*, unsigned char*, kvec_t_u32_warp*, unsigned char*, unsigned char*, kvec_asg_arc_t_warp*, unsigned int, unsigned int, unsigned int)
void clean_sub_tangle(bubble_type* bub, uint8_t* vis_flag, kvec_t_u32_warp *res_utg, 
uint8_t *dedup, uint8_t *is_tangle, kvec_asg_arc_t_warp* edges, uint32_t flag, uint32_t s, 
uint32_t e)
{
    uint32_t i, k_i, pv, v, occ, beg, sink, p_beg, p_sink, n, *a = NULL;
    ma_utg_t *u = NULL;

    for (i = 0, pv = (uint32_t)-1; i < res_utg->a.n; i++)
    {
        if(is_tangle[res_utg->a.a[i]>>1] == 1)
        {
            if(pv == (uint32_t)-1)
            {
                pv = res_utg->a.a[i]>>1;
            }
            else if(pv != (res_utg->a.a[i]>>1))
            {
                pv = (uint32_t)-1;
                break;
            }
        }
        else if(is_tangle[res_utg->a.a[i]>>1] == (uint8_t)-1)
        {
            pv = (uint32_t)-1;
            break;
        }
    }

    if(pv == (uint32_t)-1)
    {
        for (i = 0; i < res_utg->a.n; i++)
        {
            is_tangle[res_utg->a.a[i]>>1] = (uint8_t)-1;
        }
        return;
    } 

    occ = 0;
    u = &(bub->b_ug->u.a[s]);
    for (i = 0, p_beg = p_sink = (uint32_t)-1; i < u->n; i++)
    {
        get_bubbles(bub, u->a[i]>>33, &beg, &sink, &a, &n, NULL);

        for (k_i = 0; k_i < n; k_i++)
        {
            occ += bub->ug->u.a[a[k_i]>>1].n;
        }
        if(beg != (uint32_t)-1 && (beg>>1) != (p_beg>>1) && (beg>>1) != (p_sink>>1))
        {
            occ += bub->ug->u.a[beg>>1].n; 
        } 
        if(sink != (uint32_t)-1 && (sink>>1) != (p_beg>>1) && (sink>>1) != (p_sink>>1))
        {
            occ += bub->ug->u.a[sink>>1].n; 
        } 
        p_beg = beg; p_sink = sink;
    }

    u = &(bub->b_ug->u.a[e]);
    for (i = 0, p_beg = p_sink = (uint32_t)-1; i < u->n; i++)
    {
        get_bubbles(bub, u->a[i]>>33, &beg, &sink, &a, &n, NULL);

        for (k_i = 0; k_i < n; k_i++)
        {
            occ += bub->ug->u.a[a[k_i]>>1].n;
        }
        if(beg != (uint32_t)-1 && (beg>>1) != (p_beg>>1) && (beg>>1) != (p_sink>>1))
        {
            occ += bub->ug->u.a[beg>>1].n; 
        } 
        if(sink != (uint32_t)-1 && (sink>>1) != (p_beg>>1) && (sink>>1) != (p_sink>>1))
        {
            occ += bub->ug->u.a[sink>>1].n; 
        } 
        p_beg = beg; p_sink = sink;
    }

    if(occ <= bub->ug->u.a[pv].n*200)
    {
        for (i = 0; i < res_utg->a.n; i++)
        {
            is_tangle[res_utg->a.a[i]>>1] = (uint8_t)-1;
        }
        return;
    }

    if(!edges) return;

    u = &(bub->b_ug->u.a[s]);
    for (i = 0; i < u->n; i++)
    {
        get_bubbles(bub, u->a[i]>>33, &beg, &sink, &a, &n, NULL);

        for (k_i = 0; k_i < n; k_i++)
        {
            vis_flag[a[k_i]>>1] ^= flag;
        }
        if(beg != (uint32_t)-1)
        {
            vis_flag[beg>>1] ^= flag;
        } 
        if(sink != (uint32_t)-1)
        {
            vis_flag[sink>>1] ^= flag;
        } 
    }
    u = &(bub->b_ug->u.a[e]);
    for (i = 0; i < u->n; i++)
    {
        get_bubbles(bub, u->a[i]>>33, &beg, &sink, &a, &n, NULL);

        for (k_i = 0; k_i < n; k_i++)
        {
            vis_flag[a[k_i]>>1] ^= flag;
        }
        if(beg != (uint32_t)-1)
        {
            vis_flag[beg>>1] ^= flag;
        } 
        if(sink != (uint32_t)-1)
        {
            vis_flag[sink>>1] ^= flag;
        } 
    }
    for (i = 0; i < res_utg->a.n; i++)
    {
        if(dedup[res_utg->a.a[i]>>1] == 3)
        {
            vis_flag[res_utg->a.a[i]>>1] ^= flag;
        }
    }



    asg_arc_t *av = NULL, *p = NULL;
    uint32_t nv, c[2];

    c[0] = c[1] = 0;
    while (1)
    {
        c[0] = c[1] = 0; p = NULL;
        v = pv<<1;
        av = asg_arc_a(bub->ug->g, v);
        nv = asg_arc_n(bub->ug->g, v);
        for (i = 0; i < nv; i++)
        {
            if(av[i].del) continue;
            c[(!!(vis_flag[av[i].v>>1]&flag))]++;
            if(p == NULL || p->ol > av[i].ol)
            {
                p = &(av[i]);
            }
        }
        



        v = (pv<<1) + 1;
        av = asg_arc_a(bub->ug->g, v);
        nv = asg_arc_n(bub->ug->g, v);
        for (i = 0; i < nv; i++)
        {
            if(av[i].del) continue;
            c[(!!(vis_flag[av[i].v>>1]&flag))]++;
            if(p == NULL || p->ol > av[i].ol)
            {
                p = &(av[i]);
            }
        }

        if(p)
        {
            p->del = 1;
            c[(!!(vis_flag[p->v>>1]&flag))]--;
            if((p->v>>1) == pv)
            {
                asg_arc_del(bub->ug->g, (p->v)^1, (p->ul>>32)^1, 1);
                c[0] = c[1] = 0;
                v = pv<<1;
                av = asg_arc_a(bub->ug->g, v);
                nv = asg_arc_n(bub->ug->g, v);
                for (i = 0; i < nv; i++)
                {
                    if(av[i].del) continue;
                    c[(!!(vis_flag[av[i].v>>1]&flag))]++;
                }

                v = (pv<<1) + 1;
                av = asg_arc_a(bub->ug->g, v);
                nv = asg_arc_n(bub->ug->g, v);
                for (i = 0; i < nv; i++)
                {
                    if(av[i].del) continue;
                    c[(!!(vis_flag[av[i].v>>1]&flag))]++;
                }
            }

            
        }
        if(c[0] == 0 || c[1] == 0) break;
    }
    


    
    v = pv<<1;
    av = asg_arc_a(bub->ug->g, v);
    nv = asg_arc_n(bub->ug->g, v);
    for (i = 0; i < nv; i++)
    {
        if(!av[i].del) continue;
        av[i].del = 0;
        kv_push(asg_arc_t, edges->a, av[i]);
    }
    

    v = (pv<<1) + 1;
    av = asg_arc_a(bub->ug->g, v);
    nv = asg_arc_n(bub->ug->g, v);
    for (i = 0; i < nv; i++)
    {
        if(!av[i].del) continue;
        av[i].del = 0;
        kv_push(asg_arc_t, edges->a, av[i]);
    }

    is_tangle[pv] = (uint8_t)-1;


    u = &(bub->b_ug->u.a[s]);
    for (i = 0; i < u->n; i++)
    {
        get_bubbles(bub, u->a[i]>>33, &beg, &sink, &a, &n, NULL);

        for (k_i = 0; k_i < n; k_i++)
        {
            vis_flag[a[k_i]>>1] ^= flag;
        }
        if(beg != (uint32_t)-1)
        {
            vis_flag[beg>>1] ^= flag;
        } 
        if(sink != (uint32_t)-1)
        {
            vis_flag[sink>>1] ^= flag;
        } 
    }
    u = &(bub->b_ug->u.a[e]);
    for (i = 0; i < u->n; i++)
    {
        get_bubbles(bub, u->a[i]>>33, &beg, &sink, &a, &n, NULL);

        for (k_i = 0; k_i < n; k_i++)
        {
            vis_flag[a[k_i]>>1] ^= flag;
        }
        if(beg != (uint32_t)-1)
        {
            vis_flag[beg>>1] ^= flag;
        } 
        if(sink != (uint32_t)-1)
        {
            vis_flag[sink>>1] ^= flag;
        } 
    }
    for (i = 0; i < res_utg->a.n; i++)
    {
        if(dedup[res_utg->a.a[i]>>1] == 3)
        {
            vis_flag[res_utg->a.a[i]>>1] ^= flag;
        }
    }


}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movl 0x20(%rbp), %eax
movl 0x18(%rbp), %eax
movl 0x10(%rbp), %eax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq $0x0, -0x60(%rbp)
movq $0x0, -0x68(%rbp)
movl $0x0, -0x34(%rbp)
movl $0xffffffff, -0x3c(%rbp) # imm = 0xFFFFFFFF
movl -0x34(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x1fa4c4
movq -0x28(%rbp), %rax
movq -0x18(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x34(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %eax
cmpl $0x1, %eax
jne 0x1fa488
cmpl $-0x1, -0x3c(%rbp)
jne 0x1fa464
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x34(%rbp), %ecx
movl (%rax,%rcx,4), %eax
shrl %eax
movl %eax, -0x3c(%rbp)
jmp 0x1fa486
movl -0x3c(%rbp), %eax
movq -0x18(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x34(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
cmpl %ecx, %eax
je 0x1fa484
movl $0xffffffff, -0x3c(%rbp) # imm = 0xFFFFFFFF
jmp 0x1fa4c4
jmp 0x1fa486
jmp 0x1fa4b4
movq -0x28(%rbp), %rax
movq -0x18(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x34(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %eax
cmpl $0xff, %eax
jne 0x1fa4b2
movl $0xffffffff, -0x3c(%rbp) # imm = 0xFFFFFFFF
jmp 0x1fa4c4
jmp 0x1fa4b4
jmp 0x1fa4b6
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1fa41a
cmpl $-0x1, -0x3c(%rbp)
jne 0x1fa507
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x1fa502
movq -0x28(%rbp), %rax
movq -0x18(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x34(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movb $-0x1, (%rax,%rcx)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1fa4d1
jmp 0x1fb45c
movl $0x0, -0x44(%rbp)
movq -0x8(%rbp), %rax
movq 0xc0(%rax), %rax
movq 0x10(%rax), %rax
movl 0x18(%rbp), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movl $0x0, -0x34(%rbp)
movl $0xffffffff, -0x54(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x50(%rbp) # imm = 0xFFFFFFFF
movl -0x34(%rbp), %eax
movq -0x68(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jae 0x1fa66e
movq -0x8(%rbp), %rdi
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x34(%rbp), %ecx
movq (%rax,%rcx,8), %rsi
shrq $0x21, %rsi
leaq -0x48(%rbp), %rdx
leaq -0x4c(%rbp), %rcx
leaq -0x60(%rbp), %r8
leaq -0x58(%rbp), %r9
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1c4b20
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
cmpl -0x58(%rbp), %eax
jae 0x1fa5ca
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq -0x60(%rbp), %rcx
movl -0x38(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x10(%rax), %eax
addl -0x44(%rbp), %eax
movl %eax, -0x44(%rbp)
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x1fa58d
cmpl $-0x1, -0x48(%rbp)
je 0x1fa60f
movl -0x48(%rbp), %eax
shrl %eax
movl -0x50(%rbp), %ecx
shrl %ecx
cmpl %ecx, %eax
je 0x1fa60f
movl -0x48(%rbp), %eax
shrl %eax
movl -0x54(%rbp), %ecx
shrl %ecx
cmpl %ecx, %eax
je 0x1fa60f
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movl -0x48(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x10(%rax), %eax
addl -0x44(%rbp), %eax
movl %eax, -0x44(%rbp)
cmpl $-0x1, -0x4c(%rbp)
je 0x1fa654
movl -0x4c(%rbp), %eax
shrl %eax
movl -0x50(%rbp), %ecx
shrl %ecx
cmpl %ecx, %eax
je 0x1fa654
movl -0x4c(%rbp), %eax
shrl %eax
movl -0x54(%rbp), %ecx
shrl %ecx
cmpl %ecx, %eax
je 0x1fa654
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movl -0x4c(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x10(%rax), %eax
addl -0x44(%rbp), %eax
movl %eax, -0x44(%rbp)
movl -0x48(%rbp), %eax
movl %eax, -0x50(%rbp)
movl -0x4c(%rbp), %eax
movl %eax, -0x54(%rbp)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1fa540
movq -0x8(%rbp), %rax
movq 0xc0(%rax), %rax
movq 0x10(%rax), %rax
movl 0x20(%rbp), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movl $0x0, -0x34(%rbp)
movl $0xffffffff, -0x54(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x50(%rbp) # imm = 0xFFFFFFFF
movl -0x34(%rbp), %eax
movq -0x68(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jae 0x1fa7ce
movq -0x8(%rbp), %rdi
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x34(%rbp), %ecx
movq (%rax,%rcx,8), %rsi
shrq $0x21, %rsi
leaq -0x48(%rbp), %rdx
leaq -0x4c(%rbp), %rcx
leaq -0x60(%rbp), %r8
leaq -0x58(%rbp), %r9
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1c4b20
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
cmpl -0x58(%rbp), %eax
jae 0x1fa72a
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq -0x60(%rbp), %rcx
movl -0x38(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x10(%rax), %eax
addl -0x44(%rbp), %eax
movl %eax, -0x44(%rbp)
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x1fa6ed
cmpl $-0x1, -0x48(%rbp)
je 0x1fa76f
movl -0x48(%rbp), %eax
shrl %eax
movl -0x50(%rbp), %ecx
shrl %ecx
cmpl %ecx, %eax
je 0x1fa76f
movl -0x48(%rbp), %eax
shrl %eax
movl -0x54(%rbp), %ecx
shrl %ecx
cmpl %ecx, %eax
je 0x1fa76f
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movl -0x48(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x10(%rax), %eax
addl -0x44(%rbp), %eax
movl %eax, -0x44(%rbp)
cmpl $-0x1, -0x4c(%rbp)
je 0x1fa7b4
movl -0x4c(%rbp), %eax
shrl %eax
movl -0x50(%rbp), %ecx
shrl %ecx
cmpl %ecx, %eax
je 0x1fa7b4
movl -0x4c(%rbp), %eax
shrl %eax
movl -0x54(%rbp), %ecx
shrl %ecx
cmpl %ecx, %eax
je 0x1fa7b4
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movl -0x4c(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x10(%rax), %eax
addl -0x44(%rbp), %eax
movl %eax, -0x44(%rbp)
movl -0x48(%rbp), %eax
movl %eax, -0x50(%rbp)
movl -0x4c(%rbp), %eax
movl %eax, -0x54(%rbp)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1fa6a0
movl -0x44(%rbp), %eax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq 0x10(%rcx), %rcx
movl -0x3c(%rbp), %edx
imulq $0x28, %rdx, %rdx
addq %rdx, %rcx
imull $0xc8, 0x10(%rcx), %ecx
cmpl %ecx, %eax
ja 0x1fa82f
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x1fa82a
movq -0x28(%rbp), %rax
movq -0x18(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x34(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movb $-0x1, (%rax,%rcx)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1fa7f9
jmp 0x1fb45c
cmpq $0x0, -0x30(%rbp)
jne 0x1fa83b
jmp 0x1fb45c
movq -0x8(%rbp), %rax
movq 0xc0(%rax), %rax
movq 0x10(%rax), %rax
movl 0x18(%rbp), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x68(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jae 0x1fa927
movq -0x8(%rbp), %rdi
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x34(%rbp), %ecx
movq (%rax,%rcx,8), %rsi
shrq $0x21, %rsi
leaq -0x48(%rbp), %rdx
leaq -0x4c(%rbp), %rcx
leaq -0x60(%rbp), %r8
leaq -0x58(%rbp), %r9
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1c4b20
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
cmpl -0x58(%rbp), %eax
jae 0x1fa8dd
movl 0x10(%rbp), %esi
movq -0x10(%rbp), %rax
movq -0x60(%rbp), %rcx
movl -0x38(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x1fa8ac
cmpl $-0x1, -0x48(%rbp)
je 0x1fa8fa
movl 0x10(%rbp), %esi
movq -0x10(%rbp), %rax
movl -0x48(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
cmpl $-0x1, -0x4c(%rbp)
je 0x1fa917
movl 0x10(%rbp), %esi
movq -0x10(%rbp), %rax
movl -0x4c(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
jmp 0x1fa919
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1fa85f
movq -0x8(%rbp), %rax
movq 0xc0(%rax), %rax
movq 0x10(%rax), %rax
movl 0x20(%rbp), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x68(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jae 0x1faa13
movq -0x8(%rbp), %rdi
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x34(%rbp), %ecx
movq (%rax,%rcx,8), %rsi
shrq $0x21, %rsi
leaq -0x48(%rbp), %rdx
leaq -0x4c(%rbp), %rcx
leaq -0x60(%rbp), %r8
leaq -0x58(%rbp), %r9
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1c4b20
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
cmpl -0x58(%rbp), %eax
jae 0x1fa9c9
movl 0x10(%rbp), %esi
movq -0x10(%rbp), %rax
movq -0x60(%rbp), %rcx
movl -0x38(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x1fa998
cmpl $-0x1, -0x48(%rbp)
je 0x1fa9e6
movl 0x10(%rbp), %esi
movq -0x10(%rbp), %rax
movl -0x48(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
cmpl $-0x1, -0x4c(%rbp)
je 0x1faa03
movl 0x10(%rbp), %esi
movq -0x10(%rbp), %rax
movl -0x4c(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
jmp 0x1faa05
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1fa94b
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x1faa74
movq -0x20(%rbp), %rax
movq -0x18(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x34(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %eax
cmpl $0x3, %eax
jne 0x1faa67
movl 0x10(%rbp), %esi
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x34(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
jmp 0x1faa69
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1faa1a
movq $0x0, -0x70(%rbp)
movq $0x0, -0x78(%rbp)
movl $0x0, -0x80(%rbp)
movl $0x0, -0x84(%rbp)
movl $0x0, -0x80(%rbp)
movl $0x0, -0x84(%rbp)
movq $0x0, -0x78(%rbp)
movl -0x3c(%rbp), %eax
shll %eax
movl %eax, -0x40(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0x40(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movl -0x40(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0x7c(%rbp)
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl -0x7c(%rbp), %eax
jae 0x1fabc7
movq -0x70(%rbp), %rax
movl -0x34(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x1fab37
jmp 0x1fabb9
movq -0x10(%rbp), %rax
movq -0x70(%rbp), %rcx
movl -0x34(%rbp), %edx
imulq $0x18, %rdx, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %eax
andl 0x10(%rbp), %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movl -0x84(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x84(%rbp,%rax,4)
cmpq $0x0, -0x78(%rbp)
je 0x1faba5
movq -0x78(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq -0x70(%rbp), %rcx
movl -0x34(%rbp), %edx
imulq $0x18, %rdx, %rdx
addq %rdx, %rcx
movl 0xc(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
cmpl %ecx, %eax
jle 0x1fabb7
movq -0x70(%rbp), %rax
movl -0x34(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x78(%rbp)
jmp 0x1fabb9
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1fab0d
movl -0x3c(%rbp), %eax
shll %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0x40(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movl -0x40(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0x7c(%rbp)
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl -0x7c(%rbp), %eax
jae 0x1face3
movq -0x70(%rbp), %rax
movl -0x34(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x1fac53
jmp 0x1facd5
movq -0x10(%rbp), %rax
movq -0x70(%rbp), %rcx
movl -0x34(%rbp), %edx
imulq $0x18, %rdx, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %eax
andl 0x10(%rbp), %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movl -0x84(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x84(%rbp,%rax,4)
cmpq $0x0, -0x78(%rbp)
je 0x1facc1
movq -0x78(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq -0x70(%rbp), %rcx
movl -0x34(%rbp), %edx
imulq $0x18, %rdx, %rdx
addq %rdx, %rcx
movl 0xc(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
cmpl %ecx, %eax
jle 0x1facd3
movq -0x70(%rbp), %rax
movl -0x34(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x78(%rbp)
jmp 0x1facd5
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1fac29
cmpq $0x0, -0x78(%rbp)
je 0x1faf2f
movq -0x78(%rbp), %rax
movl 0xc(%rax), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
orl $0x80000000, %ecx       # imm = 0x80000000
movl %ecx, 0xc(%rax)
movq -0x10(%rbp), %rax
movq -0x78(%rbp), %rcx
movl 0x8(%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %eax
andl 0x10(%rbp), %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movl -0x84(%rbp,%rax,4), %ecx
addl $-0x1, %ecx
movl %ecx, -0x84(%rbp,%rax,4)
movq -0x78(%rbp), %rax
movl 0x8(%rax), %eax
shrl %eax
cmpl -0x3c(%rbp), %eax
jne 0x1faf2d
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rdi
movq -0x78(%rbp), %rax
movl 0x8(%rax), %esi
xorl $0x1, %esi
movq -0x78(%rbp), %rax
movq (%rax), %rax
shrq $0x20, %rax
xorq $0x1, %rax
movl %eax, %edx
movl $0x1, %ecx
callq 0x1de8a0
movl $0x0, -0x80(%rbp)
movl $0x0, -0x84(%rbp)
movl -0x3c(%rbp), %eax
shll %eax
movl %eax, -0x40(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0x40(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movl -0x40(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0x7c(%rbp)
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl -0x7c(%rbp), %eax
jae 0x1fae5b
movq -0x70(%rbp), %rax
movl -0x34(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x1fae10
jmp 0x1fae50
movq -0x10(%rbp), %rax
movq -0x70(%rbp), %rcx
movl -0x34(%rbp), %edx
imulq $0x18, %rdx, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %eax
andl 0x10(%rbp), %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movl -0x84(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x84(%rbp,%rax,4)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1faded
movl -0x3c(%rbp), %eax
shll %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0x40(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movl -0x40(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0x7c(%rbp)
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl -0x7c(%rbp), %eax
jae 0x1faf2b
movq -0x70(%rbp), %rax
movl -0x34(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x1faee0
jmp 0x1faf20
movq -0x10(%rbp), %rax
movq -0x70(%rbp), %rcx
movl -0x34(%rbp), %edx
imulq $0x18, %rdx, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %eax
andl 0x10(%rbp), %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movl -0x84(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x84(%rbp,%rax,4)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1faebd
jmp 0x1faf2d
jmp 0x1faf2f
cmpl $0x0, -0x84(%rbp)
je 0x1faf3e
cmpl $0x0, -0x80(%rbp)
jne 0x1faf40
jmp 0x1faf45
jmp 0x1faa95
movl -0x3c(%rbp), %eax
shll %eax
movl %eax, -0x40(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0x40(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movl -0x40(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0x7c(%rbp)
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl -0x7c(%rbp), %eax
jae 0x1fb0ad
movq -0x70(%rbp), %rax
movl -0x34(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
jne 0x1fafce
jmp 0x1fb09f
movq -0x70(%rbp), %rax
movl -0x34(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
orl $0x0, %ecx
movl %ecx, 0xc(%rax)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq -0x30(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x1fb059
movq -0x30(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x1fb01b
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0x90(%rbp)
jmp 0x1fb029
movl $0x2, %eax
movq %rax, -0x90(%rbp)
jmp 0x1fb029
movq -0x90(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x30(%rbp), %rax
imulq $0x18, 0x8(%rax), %rsi
callq 0x2360
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x70(%rbp), %rcx
movl -0x34(%rbp), %eax
imulq $0x18, %rax, %rax
addq %rax, %rcx
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x30(%rbp), %rsi
movq (%rsi), %rdx
movq %rdx, %rdi
addq $0x1, %rdi
movq %rdi, (%rsi)
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rax)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rax)
jmp 0x1fb09f
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1fafa4
movl -0x3c(%rbp), %eax
shll %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0x40(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movl -0x40(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0x7c(%rbp)
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl -0x7c(%rbp), %eax
jae 0x1fb218
movq -0x70(%rbp), %rax
movl -0x34(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
jne 0x1fb139
jmp 0x1fb20a
movq -0x70(%rbp), %rax
movl -0x34(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
orl $0x0, %ecx
movl %ecx, 0xc(%rax)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq -0x30(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x1fb1c4
movq -0x30(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x1fb186
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0x98(%rbp)
jmp 0x1fb194
movl $0x2, %eax
movq %rax, -0x98(%rbp)
jmp 0x1fb194
movq -0x98(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x30(%rbp), %rax
imulq $0x18, 0x8(%rax), %rsi
callq 0x2360
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x70(%rbp), %rcx
movl -0x34(%rbp), %eax
imulq $0x18, %rax, %rax
addq %rax, %rcx
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x30(%rbp), %rsi
movq (%rsi), %rdx
movq %rdx, %rdi
addq $0x1, %rdi
movq %rdi, (%rsi)
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rax)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rax)
jmp 0x1fb20a
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1fb10f
movq -0x28(%rbp), %rax
movl -0x3c(%rbp), %ecx
movb $-0x1, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0xc0(%rax), %rax
movq 0x10(%rax), %rax
movl 0x18(%rbp), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x68(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jae 0x1fb30f
movq -0x8(%rbp), %rdi
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x34(%rbp), %ecx
movq (%rax,%rcx,8), %rsi
shrq $0x21, %rsi
leaq -0x48(%rbp), %rdx
leaq -0x4c(%rbp), %rcx
leaq -0x60(%rbp), %r8
leaq -0x58(%rbp), %r9
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1c4b20
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
cmpl -0x58(%rbp), %eax
jae 0x1fb2c5
movl 0x10(%rbp), %esi
movq -0x10(%rbp), %rax
movq -0x60(%rbp), %rcx
movl -0x38(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x1fb294
cmpl $-0x1, -0x48(%rbp)
je 0x1fb2e2
movl 0x10(%rbp), %esi
movq -0x10(%rbp), %rax
movl -0x48(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
cmpl $-0x1, -0x4c(%rbp)
je 0x1fb2ff
movl 0x10(%rbp), %esi
movq -0x10(%rbp), %rax
movl -0x4c(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
jmp 0x1fb301
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1fb247
movq -0x8(%rbp), %rax
movq 0xc0(%rax), %rax
movq 0x10(%rax), %rax
movl 0x20(%rbp), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x68(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jae 0x1fb3fb
movq -0x8(%rbp), %rdi
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x34(%rbp), %ecx
movq (%rax,%rcx,8), %rsi
shrq $0x21, %rsi
leaq -0x48(%rbp), %rdx
leaq -0x4c(%rbp), %rcx
leaq -0x60(%rbp), %r8
leaq -0x58(%rbp), %r9
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1c4b20
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
cmpl -0x58(%rbp), %eax
jae 0x1fb3b1
movl 0x10(%rbp), %esi
movq -0x10(%rbp), %rax
movq -0x60(%rbp), %rcx
movl -0x38(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x1fb380
cmpl $-0x1, -0x48(%rbp)
je 0x1fb3ce
movl 0x10(%rbp), %esi
movq -0x10(%rbp), %rax
movl -0x48(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
cmpl $-0x1, -0x4c(%rbp)
je 0x1fb3eb
movl 0x10(%rbp), %esi
movq -0x10(%rbp), %rax
movl -0x4c(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
jmp 0x1fb3ed
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1fb333
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x1fb45c
movq -0x20(%rbp), %rax
movq -0x18(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x34(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %eax
cmpl $0x3, %eax
jne 0x1fb44f
movl 0x10(%rbp), %esi
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x34(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
jmp 0x1fb451
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x1fb402
addq $0xa0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)