// File: chhylp123[P]hifiasm/hic.cpp
// Function: prt_bubble_gfa_adv(_IO_FILE*, bubble_type*, char const*, char const*, char const*)
void prt_bubble_gfa_adv(FILE *fp, bubble_type *bub, const char* utg_pre, const char* bub_pre, const char* chain_pre)
{
    uint32_t i, k, m, *a, n, beg, sink, x; ma_utg_t *p; uint64_t occ;
    ma_ug_t *b_ug = bub->b_ug; char name[32], bname[32]; uint8_t *f; CALLOC(f, bub->ug->u.n);
    for (i = 0; i < b_ug->u.n; i++) {
        p = &b_ug->u.a[i];
        if(p->n == 0) continue;
        for (k = occ = 0; k < p->n; k++){
            x = p->a[k]>>33;
            get_bubbles(bub, x, &beg, &sink, &a, &n, NULL);

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

        sprintf(name, "%s%.6d%c", chain_pre, i + 1, "lc"[p->circ]);
        fprintf(fp, "S\t%s\t*\tLN:i:%lu\n", name, occ);
        for (k = 0; k < p->n; k++) {
            x = p->a[k]>>33;
            sprintf(bname, "%s%.6d", bub_pre, x + 1);
            fprintf(fp, "B\t%s\t%c\tcid:i:%s\tsm:%c\n", bname, "+-"[(p->a[k]>>32)&1], name, "01"[x<bub->f_bub]);

            get_bubbles(bub, x, &beg, &sink, &a, &n, NULL);
            if(beg != (uint32_t)-1) {
                fprintf(fp, "U\t%s%.6d%c\t%c\tcid:i:%s\tbid:b:%s\thom:%c\n", 
                utg_pre, (beg>>1)+1, "lc"[bub->ug->u.a[(beg>>1)].circ], "+-"[beg&1], name, bname, "10"[IF_HOM((beg>>1), *bub)]);
            }

            if(sink != (uint32_t)-1) {
                fprintf(fp, "U\t%s%.6d%c\t%c\tcid:i:%s\tbid:s:%s\thom:%c\n", 
                utg_pre, (sink>>1)+1, "lc"[bub->ug->u.a[(sink>>1)].circ], "+-"[sink&1], name, bname, "10"[IF_HOM((sink>>1), *bub)]);
            }
            for (m = 0; m < n; m++) {
                occ += bub->ug->u.a[a[m]>>1].n;
                fprintf(fp, "U\t%s%.6d%c\t%c\tcid:i:%s\tbid:c:%s\thom:%c\n", 
                utg_pre, (a[m]>>1)+1, "lc"[bub->ug->u.a[(a[m]>>1)].circ], "+-"[a[m]&1], name, bname, "10"[IF_HOM((a[m]>>1), *bub)]);
            }
        }
    }

    asg_arc_t* au = NULL;
    uint32_t nu, u, v, j;
    for (i = 0; i < b_ug->u.n; ++i) {
        if(b_ug->u.a[i].m == 0) continue;
        if(b_ug->u.a[i].circ)
        {
            fprintf(fp, "L\t%s%.6dc\t+\t%s%.6dc\t+\t%dM\tL1:i:%d\n", 
            chain_pre, i+1, chain_pre, i+1, 0, 0);
            fprintf(fp, "L\t%s%.6dc\t-\t%s%.6dc\t-\t%dM\tL1:i:%d\n", 
            chain_pre, i+1, chain_pre, i+1, 0, 0);
        } 
        u = i<<1;
        au = asg_arc_a(b_ug->g, u);
        nu = asg_arc_n(b_ug->g, u);
        for (j = 0; j < nu; j++)
        {
            if(au[j].del) continue;
            v = au[j].v;
            fprintf(fp, "L\t%s%.6d%c\t%c\t%s%.6d%c\t%c\t%dM\tL1:i:%d\n", 
            chain_pre, (u>>1)+1, "lc"[b_ug->u.a[u>>1].circ], "+-"[u&1],
            chain_pre, (v>>1)+1, "lc"[b_ug->u.a[v>>1].circ], "+-"[v&1], 0, 0);
        }


        u = (i<<1) + 1;
        au = asg_arc_a(b_ug->g, u);
        nu = asg_arc_n(b_ug->g, u);
        for (j = 0; j < nu; j++)
        {
            if(au[j].del) continue;
            v = au[j].v;
            fprintf(fp, "L\t%s%.6d%c\t%c\t%s%.6d%c\t%c\t%dM\tL1:i:%d\n", 
            chain_pre, (u>>1)+1, "lc"[b_ug->u.a[u>>1].circ], "+-"[u&1],
            chain_pre, (v>>1)+1, "lc"[b_ug->u.a[v>>1].circ], "+-"[v&1], 0, 0);
        }
    }
    
    for (i = 0; i < bub->ug->u.n; i++) {
        if(f[i]) continue;
        fprintf(fp, "U\t%s%.6d%c\t+\tcid:i:*\tbid:c:*\thom:%c\n", 
                utg_pre, i+1, "lc"[bub->ug->u.a[i].circ], "10"[IF_HOM(i, *bub)]);
    }
    free(f);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x100, %rsp            # imm = 0x100
movq %rdi, -0x18(%rbp)
movq %rsi, -0x20(%rbp)
movq %rdx, -0x28(%rbp)
movq %rcx, -0x30(%rbp)
movq %r8, -0x38(%rbp)
movq -0x20(%rbp), %rax
movq 0xc0(%rax), %rax
movq %rax, -0x78(%rbp)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
movl $0x1, %esi
callq 0x2140
movq %rax, -0xc8(%rbp)
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
movq -0x78(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x2093bd
movq -0x78(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x3c(%rbp), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
cmpl $0x0, 0x10(%rax)
jne 0x208e59
jmp 0x2093af
movq $0x0, -0x70(%rbp)
movl $0x0, -0x40(%rbp)
movl -0x40(%rbp), %eax
movq -0x68(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jae 0x208fcd
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x40(%rbp), %ecx
movq (%rax,%rcx,8), %rax
shrq $0x21, %rax
movl %eax, -0x60(%rbp)
movq -0x20(%rbp), %rdi
movl -0x60(%rbp), %eax
movl %eax, %esi
leaq -0x58(%rbp), %rdx
leaq -0x5c(%rbp), %rcx
leaq -0x50(%rbp), %r8
leaq -0x54(%rbp), %r9
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1c4b20
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
cmpl -0x54(%rbp), %eax
jae 0x208f15
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq -0x50(%rbp), %rcx
movl -0x44(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x10(%rax), %eax
addq -0x70(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0xc8(%rbp), %rax
movq -0x50(%rbp), %rcx
movl -0x44(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
movb $0x1, (%rax,%rcx)
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x208ebd
cmpl $-0x1, -0x58(%rbp)
je 0x208f69
movq -0xc8(%rbp), %rax
movl -0x58(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %eax
cmpl $0x0, %eax
jne 0x208f69
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movl -0x58(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x10(%rax), %eax
addq -0x70(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0xc8(%rbp), %rax
movl -0x58(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
movb $0x1, (%rax,%rcx)
cmpl $-0x1, -0x5c(%rbp)
je 0x208fbd
movq -0xc8(%rbp), %rax
movl -0x5c(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
movzbl (%rax,%rcx), %eax
cmpl $0x0, %eax
jne 0x208fbd
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movl -0x5c(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x10(%rax), %eax
addq -0x70(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0xc8(%rbp), %rax
movl -0x5c(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
movb $0x1, (%rax,%rcx)
jmp 0x208fbf
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x208e68
leaq -0xa0(%rbp), %rdi
movq -0x38(%rbp), %rdx
movl -0x3c(%rbp), %ecx
addl $0x1, %ecx
movq -0x68(%rbp), %rax
movl (%rax), %eax
shrl $0x1f, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x17c311(%rip), %rax    # 0x385303
movsbl (%rax,%rsi), %r8d
leaq 0x17de08(%rip), %rsi    # 0x386e06
movb $0x0, %al
callq 0x2050
movq -0x18(%rbp), %rdi
leaq -0xa0(%rbp), %rdx
movq -0x70(%rbp), %rcx
leaq 0x1844cc(%rip), %rsi    # 0x38d4e7
movb $0x0, %al
callq 0x22a0
movl $0x0, -0x40(%rbp)
movl -0x40(%rbp), %eax
movq -0x68(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jae 0x2093ad
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x40(%rbp), %ecx
movq (%rax,%rcx,8), %rax
shrq $0x21, %rax
movl %eax, -0x60(%rbp)
leaq -0xc0(%rbp), %rdi
movq -0x30(%rbp), %rdx
movl -0x60(%rbp), %ecx
addl $0x1, %ecx
leaq 0x184491(%rip), %rsi    # 0x38d4f8
movb $0x0, %al
callq 0x2050
movq -0x18(%rbp), %rdi
leaq -0xc0(%rbp), %rdx
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x40(%rbp), %ecx
movq (%rax,%rcx,8), %rcx
shrq $0x20, %rcx
andq $0x1, %rcx
leaq 0x179e04(%rip), %rax    # 0x382e9b
movsbl (%rax,%rcx), %ecx
leaq -0xa0(%rbp), %r8
movl -0x60(%rbp), %eax
movq -0x20(%rbp), %rsi
cmpq 0x80(%rsi), %rax
setb %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, %esi
leaq 0x18352b(%rip), %rax    # 0x38c5ec
movsbl (%rax,%rsi), %r9d
leaq 0x184432(%rip), %rsi    # 0x38d4ff
movb $0x0, %al
callq 0x22a0
movq -0x20(%rbp), %rdi
movl -0x60(%rbp), %eax
movl %eax, %esi
leaq -0x58(%rbp), %rdx
leaq -0x5c(%rbp), %rcx
leaq -0x50(%rbp), %r8
leaq -0x54(%rbp), %r9
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1c4b20
cmpl $-0x1, -0x58(%rbp)
je 0x2091bc
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
movl -0x58(%rbp), %ecx
shrl %ecx
addl $0x1, %ecx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movl -0x58(%rbp), %esi
shrl %esi
movl %esi, %esi
imulq $0x28, %rsi, %rsi
addq %rsi, %rax
movl (%rax), %eax
shrl $0x1f, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x17c1c3(%rip), %rax    # 0x385303
movsbl (%rax,%rsi), %r8d
movl -0x58(%rbp), %eax
andl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x179d45(%rip), %rax    # 0x382e9b
movsbl (%rax,%rsi), %r9d
leaq -0xa0(%rbp), %r11
leaq -0xc0(%rbp), %r10
movq -0x20(%rbp), %rax
movq (%rax), %rax
movl -0x58(%rbp), %esi
shrl %esi
movl %esi, %esi
movl (%rax,%rsi,4), %eax
movq -0x20(%rbp), %rsi
movq 0x80(%rsi), %rsi
addq $0x1, %rsi
cmpq %rsi, %rax
seta %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, %esi
leaq 0x1843a2(%rip), %rax    # 0x38d53f
movsbl (%rax,%rsi), %eax
leaq 0x18436f(%rip), %rsi    # 0x38d517
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movl %eax, 0x10(%rsp)
movb $0x0, %al
callq 0x22a0
cmpl $-0x1, -0x5c(%rbp)
je 0x20927c
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
movl -0x5c(%rbp), %ecx
shrl %ecx
addl $0x1, %ecx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movl -0x5c(%rbp), %esi
shrl %esi
movl %esi, %esi
imulq $0x28, %rsi, %rsi
addq %rsi, %rax
movl (%rax), %eax
shrl $0x1f, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x17c103(%rip), %rax    # 0x385303
movsbl (%rax,%rsi), %r8d
movl -0x5c(%rbp), %eax
andl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x179c85(%rip), %rax    # 0x382e9b
movsbl (%rax,%rsi), %r9d
leaq -0xa0(%rbp), %r11
leaq -0xc0(%rbp), %r10
movq -0x20(%rbp), %rax
movq (%rax), %rax
movl -0x5c(%rbp), %esi
shrl %esi
movl %esi, %esi
movl (%rax,%rsi,4), %eax
movq -0x20(%rbp), %rsi
movq 0x80(%rsi), %rsi
addq $0x1, %rsi
cmpq %rsi, %rax
seta %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, %esi
leaq 0x1842e2(%rip), %rax    # 0x38d53f
movsbl (%rax,%rsi), %eax
leaq 0x1842da(%rip), %rsi    # 0x38d542
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movl %eax, 0x10(%rsp)
movb $0x0, %al
callq 0x22a0
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
cmpl -0x54(%rbp), %eax
jae 0x20939d
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq -0x50(%rbp), %rcx
movl -0x44(%rbp), %edx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
movl %ecx, %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x10(%rax), %eax
addq -0x70(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
movq -0x50(%rbp), %rax
movl -0x44(%rbp), %ecx
movl (%rax,%rcx,4), %ecx
shrl %ecx
addl $0x1, %ecx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq -0x50(%rbp), %rsi
movl -0x44(%rbp), %r8d
movl (%rsi,%r8,4), %esi
shrl %esi
movl %esi, %esi
imulq $0x28, %rsi, %rsi
addq %rsi, %rax
movl (%rax), %eax
shrl $0x1f, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x17bffe(%rip), %rax    # 0x385303
movsbl (%rax,%rsi), %r8d
movq -0x50(%rbp), %rax
movl -0x44(%rbp), %esi
movl (%rax,%rsi,4), %eax
andl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x179b79(%rip), %rax    # 0x382e9b
movsbl (%rax,%rsi), %r9d
leaq -0xa0(%rbp), %r11
leaq -0xc0(%rbp), %r10
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq -0x50(%rbp), %rsi
movl -0x44(%rbp), %ebx
movl (%rsi,%rbx,4), %esi
shrl %esi
movl %esi, %esi
movl (%rax,%rsi,4), %eax
movq -0x20(%rbp), %rsi
movq 0x80(%rsi), %rsi
addq $0x1, %rsi
cmpq %rsi, %rax
seta %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, %esi
leaq 0x1841cf(%rip), %rax    # 0x38d53f
movsbl (%rax,%rsi), %eax
leaq 0x1841ef(%rip), %rsi    # 0x38d56a
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movl %eax, 0x10(%rsp)
movb $0x0, %al
callq 0x22a0
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x209283
jmp 0x20939f
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x209029
jmp 0x2093af
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x208e24
movq $0x0, -0xd0(%rbp)
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
movq -0x78(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x2097ff
movq -0x78(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x3c(%rbp), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0xc(%rax)
jne 0x2093fc
jmp 0x2097f1
movq -0x78(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x3c(%rbp), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x20948a
movq -0x18(%rbp), %rdi
movq -0x38(%rbp), %rdx
movl -0x3c(%rbp), %ecx
addl $0x1, %ecx
movq -0x38(%rbp), %r8
movl -0x3c(%rbp), %r9d
addl $0x1, %r9d
leaq 0x183bfe(%rip), %rsi    # 0x38d037
xorl %eax, %eax
movl $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
movb $0x0, %al
callq 0x22a0
movq -0x18(%rbp), %rdi
movq -0x38(%rbp), %rdx
movl -0x3c(%rbp), %ecx
addl $0x1, %ecx
movq -0x38(%rbp), %r8
movl -0x3c(%rbp), %r9d
addl $0x1, %r9d
leaq 0x183be8(%rip), %rsi    # 0x38d05a
xorl %eax, %eax
movl $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
movb $0x0, %al
callq 0x22a0
movl -0x3c(%rbp), %eax
shll %eax
movl %eax, -0xd8(%rbp)
movq -0x78(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x78(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0xd8(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xd0(%rbp)
movq -0x78(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movl -0xd8(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0xd4(%rbp)
movl $0x0, -0xe0(%rbp)
movl -0xe0(%rbp), %eax
cmpl -0xd4(%rbp), %eax
jae 0x20963b
movq -0xd0(%rbp), %rax
movl -0xe0(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x209525
jmp 0x209627
movq -0xd0(%rbp), %rax
movl -0xe0(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, -0xdc(%rbp)
movq -0x18(%rbp), %rdi
movq -0x38(%rbp), %rdx
movl -0xd8(%rbp), %ecx
shrl %ecx
addl $0x1, %ecx
movq -0x78(%rbp), %rax
movq 0x10(%rax), %rax
movl -0xd8(%rbp), %esi
shrl %esi
movl %esi, %esi
imulq $0x28, %rsi, %rsi
addq %rsi, %rax
movl (%rax), %eax
shrl $0x1f, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x17bd85(%rip), %rax    # 0x385303
movsbl (%rax,%rsi), %r8d
movl -0xd8(%rbp), %eax
andl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x179904(%rip), %rax    # 0x382e9b
movsbl (%rax,%rsi), %r9d
movq -0x38(%rbp), %rbx
movl -0xdc(%rbp), %r11d
shrl %r11d
addl $0x1, %r11d
movq -0x78(%rbp), %rax
movq 0x10(%rax), %rax
movl -0xdc(%rbp), %esi
shrl %esi
movl %esi, %esi
imulq $0x28, %rsi, %rsi
addq %rsi, %rax
movl (%rax), %eax
shrl $0x1f, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x17bd2c(%rip), %rax    # 0x385303
movsbl (%rax,%rsi), %r10d
movl -0xdc(%rbp), %eax
andl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x1798ab(%rip), %rax    # 0x382e9b
movsbl (%rax,%rsi), %eax
leaq 0x1839c4(%rip), %rsi    # 0x38cfbf
xorl %r14d, %r14d
movq %rbx, (%rsp)
movl %r11d, 0x8(%rsp)
movl %r10d, 0x10(%rsp)
movl %eax, 0x18(%rsp)
movl $0x0, 0x20(%rsp)
movl $0x0, 0x28(%rsp)
movb $0x0, %al
callq 0x22a0
movl -0xe0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xe0(%rbp)
jmp 0x2094ef
movl -0x3c(%rbp), %eax
shll %eax
addl $0x1, %eax
movl %eax, -0xd8(%rbp)
movq -0x78(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x78(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0xd8(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xd0(%rbp)
movq -0x78(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movl -0xd8(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0xd4(%rbp)
movl $0x0, -0xe0(%rbp)
movl -0xe0(%rbp), %eax
cmpl -0xd4(%rbp), %eax
jae 0x2097ef
movq -0xd0(%rbp), %rax
movl -0xe0(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x2096d9
jmp 0x2097db
movq -0xd0(%rbp), %rax
movl -0xe0(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, -0xdc(%rbp)
movq -0x18(%rbp), %rdi
movq -0x38(%rbp), %rdx
movl -0xd8(%rbp), %ecx
shrl %ecx
addl $0x1, %ecx
movq -0x78(%rbp), %rax
movq 0x10(%rax), %rax
movl -0xd8(%rbp), %esi
shrl %esi
movl %esi, %esi
imulq $0x28, %rsi, %rsi
addq %rsi, %rax
movl (%rax), %eax
shrl $0x1f, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x17bbd1(%rip), %rax    # 0x385303
movsbl (%rax,%rsi), %r8d
movl -0xd8(%rbp), %eax
andl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x179750(%rip), %rax    # 0x382e9b
movsbl (%rax,%rsi), %r9d
movq -0x38(%rbp), %rbx
movl -0xdc(%rbp), %r11d
shrl %r11d
addl $0x1, %r11d
movq -0x78(%rbp), %rax
movq 0x10(%rax), %rax
movl -0xdc(%rbp), %esi
shrl %esi
movl %esi, %esi
imulq $0x28, %rsi, %rsi
addq %rsi, %rax
movl (%rax), %eax
shrl $0x1f, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x17bb78(%rip), %rax    # 0x385303
movsbl (%rax,%rsi), %r10d
movl -0xdc(%rbp), %eax
andl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x1796f7(%rip), %rax    # 0x382e9b
movsbl (%rax,%rsi), %eax
leaq 0x183810(%rip), %rsi    # 0x38cfbf
xorl %r14d, %r14d
movq %rbx, (%rsp)
movl %r11d, 0x8(%rsp)
movl %r10d, 0x10(%rsp)
movl %eax, 0x18(%rsp)
movl $0x0, 0x20(%rsp)
movl $0x0, 0x28(%rsp)
movb $0x0, %al
callq 0x22a0
movl -0xe0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xe0(%rbp)
jmp 0x2096a3
jmp 0x2097f1
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x2093cf
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
movq -0x20(%rbp), %rcx
movq 0x10(%rcx), %rcx
cmpq (%rcx), %rax
jae 0x2098b6
movq -0xc8(%rbp), %rax
movl -0x3c(%rbp), %ecx
cmpb $0x0, (%rax,%rcx)
je 0x20982c
jmp 0x2098a8
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
movl -0x3c(%rbp), %ecx
addl $0x1, %ecx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movl -0x3c(%rbp), %esi
imulq $0x28, %rsi, %rsi
addq %rsi, %rax
movl (%rax), %eax
shrl $0x1f, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x17baa3(%rip), %rax    # 0x385303
movsbl (%rax,%rsi), %r8d
movq -0x20(%rbp), %rax
movq (%rax), %rax
movl -0x3c(%rbp), %esi
movl (%rax,%rsi,4), %eax
movq -0x20(%rbp), %rsi
movq 0x80(%rsi), %rsi
addq $0x1, %rsi
cmpq %rsi, %rax
seta %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, %esi
leaq 0x183caa(%rip), %rax    # 0x38d53f
movsbl (%rax,%rsi), %r9d
leaq 0x183cf1(%rip), %rsi    # 0x38d592
movb $0x0, %al
callq 0x22a0
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x209806
movq -0xc8(%rbp), %rdi
callq 0x2210
addq $0x100, %rsp            # imm = 0x100
popq %rbx
popq %r14
popq %rbp
retq
nop