// File: /workspace/github_c_makefile_star2_O2/c-zhou[P]oatk/path.c
// Function: asg_read
asg_t *asg_read(const char *fn)
{
    int dret, ret, is_fa, is_fq, is_gfa;
    gzFile fp;
    kstream_t *ks;
    asg_seg_t *fa_seg;
    uint64_t lineno;
    asg_t *g;
    kstring_t s = {0, 0, 0}, fa_seq = {0, 0, 0};

    fp = fn && strcmp(fn, "-")? gzopen(fn, "r") : gzdopen(0, "r");
    if (fp == 0) return 0;
    ks = ks_init(fp);
    g = asg_init();
    lineno = 0;
    fa_seg = 0;
    is_fa = is_fq = is_gfa = 0;
    
    while (ks_getuntil(ks, KS_SEP_LINE, &s, &dret) >= 0) {
        ++lineno;
        if (s.l == 0) // empty line
            continue;

        ret = 0;
        if (!is_gfa && s.s[0] == '>') { // FASTA header
            is_fa = 1;
            if (fa_seg) asg_update_seg_seq(fa_seg, fa_seq.l, fa_seq.s);
            // parse header
            asg_parse_fa_hdr(g, s.s, &fa_seg);
            fa_seq.l = 0;
        } else if (!is_gfa && s.s[0] == '@') { // FASTQ header
            is_fq = 1;
            // parse and write header
            asg_parse_fa_hdr(g, s.s, &fa_seg);
            // parse sequence
            if(ks_getuntil(ks, KS_SEP_LINE, &s, &dret) < 0)
                ret = PARSE_Q_ERR;
            else
                asg_update_seg_seq(fa_seg, s.l, s.s);
            ++lineno;
            // skip quality score lines
            if (ks_getuntil(ks, KS_SEP_LINE, &s, &dret) < 0 ||
                    ks_getuntil(ks, KS_SEP_LINE, &s, &dret) < 0)
                ret = PARSE_Q_ERR;
            lineno += 2;
        } else if (is_fa) { // FASTA sequence line
            // append sequence to seg
            kputsn(s.s, s.l, &fa_seq);
        } else {
            is_gfa = 1;
            if (s.s[0] == 'S')
                ret = gfa_parse_S(g, s.s);
            else if (s.s[0] == 'L')
                ret = gfa_parse_L(g, s.s);
        }

        if (ret < 0) {
            fprintf(stderr, "[E::%s] failed to parse %s file: %c-line at line %lu (error code %d)\n",
                    __func__, is_fa? "FASTA" : (is_fq? "FASTQ" : "GFA"), s.s[0], lineno, ret);
            exit(EXIT_FAILURE);
        }
    }
    if (is_fa && fa_seg) asg_update_seg_seq(fa_seg, fa_seq.l, fa_seq.s);

    free(fa_seq.s);
    free(s.s);
    ks_destroy(ks);
    gzclose(fp);

    // add vtx, fix symmetric arcs, sort and index etc
    asg_finalize_asmg(g);

    return g;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
xorpd %xmm0, %xmm0
movapd %xmm0, 0x70(%rsp)
andq $0x0, 0x80(%rsp)
testq %rdi, %rdi
je 0xa0a8
cmpb $0x2d, (%rdi)
jne 0xa09a
cmpb $0x0, 0x1(%rdi)
je 0xa0a8
leaq 0xc3dc(%rip), %rsi      # 0x1647d
callq 0x3350
jmp 0xa0b6
leaq 0xc3ce(%rip), %rsi      # 0x1647d
xorl %edi, %edi
callq 0x3110
movq %rax, %r14
testq %rax, %rax
je 0xab90
pushq $0x1
popq %rdi
pushq $0x20
popq %rbx
movq %rbx, %rsi
callq 0x3240
movq %rax, %r12
movq %r14, 0xb0(%rsp)
movq %r14, 0x10(%rax)
movl $0x40000, 0x8(%rax)     # imm = 0x40000
movl $0x10000, %edi          # imm = 0x10000
callq 0x32f0
movq %rax, 0x18(%r12)
callq 0x91a3
movq %rax, %r14
leaq 0x60(%rsp), %rax
andq $0x0, (%rax)
leaq 0x70(%rsp), %r13
movq $0x0, 0x50(%rsp)
movq $0x0, 0xa0(%rsp)
movq $0x0, 0x58(%rsp)
movl $0x0, 0x68(%rsp)
movl $0x0, 0x18(%rsp)
movl $0x0, 0x10(%rsp)
xorl %r15d, %r15d
leaq 0x6c(%rsp), %rbp
movq %r12, %rdi
movq %r13, %rsi
movq %rbp, %rdx
callq 0xac08
testl %eax, %eax
js 0xaaa8
incq %r15
movq 0x70(%rsp), %rax
testq %rax, %rax
je 0xa149
cmpl $0x0, 0x18(%rsp)
je 0xa1b9
movq 0x80(%rsp), %rbp
cmpl $0x0, 0x10(%rsp)
je 0xa21a
movslq %eax, %rcx
movq 0x50(%rsp), %rax
movq %rcx, 0x10(%rsp)
addq %rcx, %rax
incq %rax
cmpq 0xa0(%rsp), %rax
movq %r14, 0xa8(%rsp)
jae 0xa274
movq 0x58(%rsp), %r13
jmp 0xa2bd
movq 0x80(%rsp), %r13
movzbl (%r13), %ecx
cmpl $0x40, %ecx
je 0xa304
cmpl $0x3e, %ecx
jne 0xa173
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa1ed
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
callq 0xadbc
movq %r14, %rdi
movq %r13, %rsi
leaq 0x60(%rsp), %rdx
callq 0xae10
movq $0x0, 0x50(%rsp)
movl $0x0, 0x18(%rsp)
pushq $0x1
popq %rax
movl %eax, 0x10(%rsp)
jmp 0xa740
movzbl (%rbp), %eax
cmpl $0x4c, %eax
je 0xa389
cmpl $0x53, %eax
jne 0xa731
leaq 0x2(%rbp), %rdi
addq $0x3, %rbp
xorl %ecx, %ecx
xorl %eax, %eax
movzbl -0x1(%rbp), %r13d
cmpl $0x9, %r13d
je 0xa24c
testl %r13d, %r13d
jne 0xa26f
movb $0x0, -0x1(%rbp)
testl %eax, %eax
je 0xa25e
cmpl $0x1, %eax
jne 0xa261
jmp 0xa46d
movq %rdi, %rcx
testb %r13b, %r13b
je 0xa45b
incl %eax
movq %rbp, %rdi
incq %rbp
jmp 0xa23c
movq %rax, %rcx
shrq %rcx
orq %rax, %rcx
movq %rcx, %rax
shrq $0x2, %rax
orq %rcx, %rax
movq %rax, %rcx
shrq $0x4, %rcx
orq %rax, %rcx
movq %rcx, %rax
shrq $0x8, %rax
orq %rcx, %rax
movq %rax, %rsi
shrq $0x10, %rsi
orq %rax, %rsi
incq %rsi
movq 0x58(%rsp), %rdi
movq %rsi, 0xa0(%rsp)
callq 0x3330
movq %rax, %r13
movq 0x50(%rsp), %r14
leaq (%r14,%r13), %rdi
movq %rbp, %rsi
movq 0x10(%rsp), %rbp
movq %rbp, %rdx
callq 0x32c0
addq %rbp, %r14
movq %r13, 0x58(%rsp)
movq %r14, 0x50(%rsp)
movb $0x0, (%r13,%r14)
xorl %ebp, %ebp
pushq $0x1
popq %rax
movl %eax, 0x10(%rsp)
leaq 0x70(%rsp), %r13
movq 0xa8(%rsp), %r14
jmp 0xa9ae
movq %r14, %rdi
movq %r13, %rsi
leaq 0x60(%rsp), %rdx
callq 0xae10
movq %r12, %rdi
leaq 0x70(%rsp), %r13
movq %r13, %rsi
movq %rbp, %rdx
callq 0xac08
pushq $-0x2
popq %rbp
testl %eax, %eax
js 0xa346
movq 0x60(%rsp), %rdi
movl 0x70(%rsp), %esi
movq 0x80(%rsp), %rdx
callq 0xadbc
xorl %ebp, %ebp
movq %r12, %rdi
movq %r13, %rsi
leaq 0x6c(%rsp), %rdx
callq 0xac08
testl %eax, %eax
js 0xa36e
movq %r12, %rdi
movq %r13, %rsi
leaq 0x6c(%rsp), %rdx
callq 0xac08
testl %eax, %eax
jns 0xa371
pushq $-0x2
popq %rbp
addq $0x3, %r15
movl $0x0, 0x18(%rsp)
pushq $0x1
popq %rax
movl %eax, 0x68(%rsp)
jmp 0xa9ae
leaq 0x2(%rbp), %r10
movq %r10, 0x28(%rsp)
addq $0x3, %rbp
xorl %esi, %esi
pushq $-0x1
popq %rax
movq %rax, %r8
movq %rax, %r9
xorl %edi, %edi
xorl %eax, %eax
leaq 0xc234(%rip), %rdx      # 0x165e0
movzbl -0x1(%rbp), %r13d
cmpl $0x9, %r13d
je 0xa3bc
testl %r13d, %r13d
jne 0xa41e
movb $0x0, -0x1(%rbp)
cmpl $0x4, %eax
ja 0xa414
movl %eax, %ecx
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq %r10, %rdi
jmp 0xa414
movq %r10, %rsi
jmp 0xa414
movzbl (%r10), %ecx
cmpl $0x2d, %ecx
je 0xa3ec
cmpl $0x2b, %ecx
jne 0xa6a3
xorl %r9d, %r9d
cmpb $0x2b, %cl
setne %r9b
jmp 0xa414
movzbl (%r10), %ecx
cmpl $0x2d, %ecx
je 0xa40a
cmpl $0x2b, %ecx
jne 0xa6a3
xorl %r8d, %r8d
cmpb $0x2b, %cl
setne %r8b
incl %eax
testb %r13b, %r13b
je 0xa423
movq %rbp, %r10
incq %rbp
jmp 0xa3ac
movq %rbp, 0x28(%rsp)
pushq $-0x4
popq %rbp
cmpl $0x4, %eax
jne 0xa99a
movq %r9, 0x90(%rsp)
movq %r8, 0x48(%rsp)
movq %rdi, 0x30(%rsp)
movq %rsi, 0x18(%rsp)
xorl %ebp, %ebp
movq $0x0, 0x10(%rsp)
jmp 0xa8aa
movq %rcx, 0x18(%rsp)
movq $0x0, 0x10(%rsp)
xorl %ebp, %ebp
jmp 0xa495
movq %rcx, 0x18(%rsp)
cmpb $0x2a, (%rdi)
jne 0xa482
movq $0x0, 0x10(%rsp)
jmp 0xa48c
callq 0x3480
movq %rax, 0x10(%rsp)
xorl %eax, %eax
testb %r13b, %r13b
cmoveq %rax, %rbp
andl $0x0, 0x40(%rsp)
andq $0x0, 0x28(%rsp)
movq %rbp, %rdi
leaq 0x28(%rsp), %rsi
leaq 0x40(%rsp), %rdx
callq 0xf249
movl %eax, %ebp
xorl %r13d, %r13d
testl %eax, %eax
je 0xa4dc
movq 0x28(%rsp), %rsi
movl %ebp, %edi
leaq 0xcf6a(%rip), %rdx      # 0x17433
callq 0xf641
testq %rax, %rax
je 0xa4dc
cmpb $0x69, (%rax)
jne 0xa4dc
movl 0x1(%rax), %r13d
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xa529
callq 0x3130
movq %rax, %r9
testl %r13d, %r13d
je 0xa530
cmpl %r9d, %r13d
movq 0x18(%rsp), %rsi
je 0xa535
movq 0x12af4(%rip), %rax     # 0x1cff8
movq (%rax), %rdi
leaq 0xcf28(%rip), %rsi      # 0x17436
leaq 0xcf6d(%rip), %rdx      # 0x17482
movq 0x18(%rsp), %rcx
movl %r13d, %r8d
movq %r9, %r13
xorl %eax, %eax
callq 0x3290
jmp 0xa529
movq 0x18(%rsp), %rsi
jmp 0xa538
movq 0x18(%rsp), %rsi
movq %r9, %r13
movq %r14, %rdi
xorl %edx, %edx
callq 0x9283
movq 0x10(%r14), %rcx
movl %eax, %eax
imulq $0x18, %rax, %rax
leaq (%rcx,%rax), %rdx
movl %r13d, 0x10(%rcx,%rax)
movq 0x10(%rsp), %rsi
movq %rsi, 0x8(%rcx,%rax)
testl %ebp, %ebp
jle 0xa721
cmpb $0x0, 0x12d32(%rip)     # 0x1d2a0
movl %r13d, %eax
movq %rdx, 0x30(%rsp)
je 0xa5dc
movq %rax, 0x10(%rsp)
movzwl 0x12d1c(%rip), %eax     # 0x1d2a0
movw %ax, 0x24(%rsp)
movq 0x28(%rsp), %rsi
movl %ebp, %edi
leaq 0x24(%rsp), %rdx
callq 0xf641
testq %rax, %rax
je 0xa747
movzbl (%rax), %ecx
movsbl 0x12cf6(%rip), %edx     # 0x1d2a3
cmpl %edx, %ecx
jne 0xa747
movq %rax, %rdi
callq 0xf6d8
testl %r13d, %r13d
je 0xa5cd
cvtsi2sdq 0x10(%rsp), %xmm1
divsd %xmm1, %xmm0
movq 0x30(%rsp), %rdx
cvttsd2si %xmm0, %rax
jmp 0xa71e
cmpb $0x0, 0x12cb9(%rip)     # 0x1d29c
je 0xa6ab
movzwl 0x12cac(%rip), %eax     # 0x1d29c
movw %ax, 0x24(%rsp)
movq 0x28(%rsp), %rsi
movl %ebp, %edi
leaq 0x24(%rsp), %rdx
callq 0xf641
testq %rax, %rax
je 0xa747
movzbl (%rax), %ecx
movsbl 0x12c86(%rip), %edx     # 0x1d29f
cmpl %edx, %ecx
jne 0xa747
movq %rax, %rdi
callq 0xf6d8
jmp 0xa714
movq %r10, 0x28(%rsp)
movzbl (%r10), %eax
cmpl $0x2a, %eax
movq %rsi, 0x18(%rsp)
movq %rdi, 0x30(%rsp)
movq %r8, 0x48(%rsp)
movq %r9, 0x90(%rsp)
je 0xa7ab
movq %r10, 0x98(%rsp)
cmpl $0x3a, %eax
jne 0xa7b2
callq 0x34d0
movq (%rax), %rax
movq 0x98(%rsp), %rdi
movsbq 0x1(%rdi), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
pushq $-0x1
popq %rax
je 0xa899
incq %rdi
leaq 0x28(%rsp), %rsi
pushq $0xa
popq %rdx
callq 0x33d0
pushq $-0x1
popq %rax
jmp 0xa899
pushq $-0x4
popq %rbp
jmp 0xa99a
movq %rax, 0x10(%rsp)
movq %r13, 0x48(%rsp)
movq 0x28(%rsp), %rsi
movl %ebp, %edi
movq %rsi, %r13
leaq 0xcdf4(%rip), %rdx      # 0x174ba
callq 0xf641
testq %rax, %rax
je 0xa6d5
cmpb $0x69, (%rax)
je 0xa6f4
movl %ebp, %edi
movq %r13, %rsi
leaq 0xcddc(%rip), %rdx      # 0x174bd
callq 0xf641
xorpd %xmm0, %xmm0
testq %rax, %rax
je 0xa6fa
cmpb $0x69, (%rax)
jne 0xa6fa
cvtsi2sdq 0x1(%rax), %xmm0
movsd 0xbe26(%rip), %xmm1     # 0x16528
cmpl $0x0, 0x48(%rsp)
je 0xa710
cvtsi2sdq 0x10(%rsp), %xmm1
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %rax
movq 0x30(%rsp), %rdx
movl %eax, 0x14(%rdx)
cmpl $0x0, 0x14(%rdx)
je 0xa777
movq 0x28(%rsp), %rdi
callq 0x3060
movl $0x0, 0x10(%rsp)
pushq $0x1
popq %rax
movl %eax, 0x18(%rsp)
xorl %ebp, %ebp
jmp 0xa9a9
movq 0x128aa(%rip), %rax     # 0x1cff8
movq (%rax), %rdi
leaq 0xcd36(%rip), %rsi      # 0x1748e
leaq 0xcd23(%rip), %rdx      # 0x17482
movq 0x18(%rsp), %rcx
leaq 0x24(%rsp), %r8
xorl %eax, %eax
callq 0x3290
movq 0x30(%rsp), %rdx
jmp 0xa721
movq 0x1287a(%rip), %rax     # 0x1cff8
movq (%rax), %rdi
leaq 0xcd38(%rip), %rsi      # 0x174c0
movq %rdx, %r13
leaq 0xccf0(%rip), %rdx      # 0x17482
movq 0x18(%rsp), %rcx
xorl %eax, %eax
callq 0x3290
movl $0x1, 0x14(%r13)
jmp 0xa727
xorl %eax, %eax
jmp 0xa899
movsbq %al, %rax
movq %rax, 0x10(%rsp)
callq 0x34d0
movq (%rax), %rcx
movq 0x10(%rsp), %rdx
testb $0x8, 0x1(%rcx,%rdx,2)
je 0xa44b
movq 0x98(%rsp), %rdi
leaq 0x40(%rsp), %rsi
movq %rax, 0x88(%rsp)
pushq $0xa
popq %rdx
callq 0x32b0
movq %rax, 0x10(%rsp)
movq 0x88(%rsp), %rax
movq (%rax), %rax
movq 0x40(%rsp), %rdi
movsbq (%rdi), %rcx
testb $0x1, 0x1(%rax,%rcx,2)
jne 0xa837
cmpb $0x3a, %cl
jne 0xa44b
movsbq 0x1(%rdi), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
je 0xa894
incq %rdi
leaq 0x40(%rsp), %rsi
pushq $0xa
popq %rdx
callq 0x33d0
jmp 0xa894
movq $0x0, 0x10(%rsp)
movq 0x98(%rsp), %rdi
leaq 0x28(%rsp), %rsi
pushq $0xa
popq %rdx
callq 0x32b0
movq 0x28(%rsp), %rcx
movzbl (%rcx), %edx
addl $-0x44, %edx
cmpl $0xa, %edx
ja 0xa874
movl $0x601, %esi            # imm = 0x601
btl %edx, %esi
jae 0xa874
addq %rax, 0x10(%rsp)
movq 0x88(%rsp), %rax
leaq 0x1(%rcx), %rdi
movq %rdi, 0x28(%rsp)
movq (%rax), %rax
movsbq 0x1(%rcx), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
jne 0xa848
movq 0x10(%rsp), %rax
movq %rax, 0x10(%rsp)
testb %r13b, %r13b
movl $0x0, %eax
cmoveq %rax, %rbp
andl $0x0, 0x24(%rsp)
andq $0x0, 0x40(%rsp)
movq %r14, %rdi
movq 0x30(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0x9283
leal (%rax,%rax), %r13d
orq 0x48(%rsp), %r13
movq %r14, %rdi
movq 0x18(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0x9283
leal (%rax,%rax), %edx
orq 0x90(%rsp), %rdx
movq 0x20(%r14), %rdi
andl $0x0, (%rsp)
movq %r13, %rsi
xorl %ecx, %ecx
movq 0x10(%rsp), %r8
xorl %r9d, %r9d
callq 0xeeed
movq %rax, %r13
movq %rbp, %rdi
leaq 0x40(%rsp), %rsi
leaq 0x24(%rsp), %rdx
callq 0xf249
testl %eax, %eax
je 0xa984
cmpb $0x0, 0x12975(%rip)     # 0x1d298
je 0xa9bb
movzwl 0x12968(%rip), %ecx     # 0x1d298
movw %cx, 0x3e(%rsp)
movq 0x40(%rsp), %rsi
movl %eax, %edi
leaq 0x3e(%rsp), %rdx
callq 0xf641
testq %rax, %rax
je 0xaa50
movzbl (%rax), %ecx
movsbl 0x12942(%rip), %edx     # 0x1d29b
cmpl %edx, %ecx
jne 0xaa50
movq %rax, %rdi
callq 0xf6d8
cvttsd2si %xmm0, %rax
andl $0x3fffffff, %eax       # imm = 0x3FFFFFFF
movl 0x20(%r13), %ecx
movl $0xc0000000, %edx       # imm = 0xC0000000
andl %edx, %ecx
orl %eax, %ecx
movl %ecx, 0x20(%r13)
testl $0x3fffffff, 0x20(%r13) # imm = 0x3FFFFFFF
je 0xa9f1
movq 0x40(%rsp), %rdi
callq 0x3060
xorl %ebp, %ebp
movl $0x0, 0x10(%rsp)
pushq $0x1
popq %rax
movl %eax, 0x18(%rsp)
leaq 0x70(%rsp), %r13
testl %ebp, %ebp
jns 0xa144
jmp 0xaba8
movq 0x40(%rsp), %rsi
movl %eax, %edi
leaq 0xcb65(%rip), %rdx      # 0x1752e
callq 0xf641
testq %rax, %rax
je 0xa984
cmpb $0x69, (%rax)
jne 0xa984
movl 0x1(%rax), %eax
movl $0x3fffffff, %ecx       # imm = 0x3FFFFFFF
andl %ecx, %eax
movl 0x20(%r13), %ecx
movl $0xc0000000, %edx       # imm = 0xC0000000
andl %edx, %ecx
orl %eax, %ecx
jmp 0xa980
movq 0x12600(%rip), %rax     # 0x1cff8
movq (%rax), %rdi
leaq 0xbe6a(%rip), %rax      # 0x1686c
movq 0x48(%rsp), %rcx
movsbl (%rcx,%rax), %r8d
movq 0x90(%rsp), %rcx
movsbl (%rcx,%rax), %eax
movl %eax, (%rsp)
leaq 0xcb0f(%rip), %rsi      # 0x17531
leaq 0xcaf9(%rip), %rdx      # 0x17522
movq 0x30(%rsp), %rcx
movq 0x18(%rsp), %r9
xorl %eax, %eax
callq 0x3290
movl 0x20(%r13), %eax
movl $0xc0000000, %ecx       # imm = 0xC0000000
andl %ecx, %eax
incl %eax
movl %eax, 0x20(%r13)
jmp 0xa98e
movq 0x125a1(%rip), %rax     # 0x1cff8
movq (%rax), %rdi
leaq 0xbe0b(%rip), %rax      # 0x1686c
movq 0x48(%rsp), %rcx
movsbl (%rcx,%rax), %r8d
movq 0x90(%rsp), %rcx
movsbl (%rcx,%rax), %eax
leaq 0x3e(%rsp), %rcx
movq %rcx, 0x8(%rsp)
movl %eax, (%rsp)
leaq 0xca63(%rip), %rsi      # 0x174ee
leaq 0xca90(%rip), %rdx      # 0x17522
movq 0x30(%rsp), %rcx
movq 0x18(%rsp), %r9
xorl %eax, %eax
callq 0x3290
jmp 0xa984
cmpl $0x0, 0x10(%rsp)
setne %al
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
setne %cl
andb %al, %cl
cmpb $0x1, %cl
movq 0x58(%rsp), %r15
jne 0xaad4
movq 0x50(%rsp), %rsi
movq %r15, %rdx
callq 0xadbc
movq %r15, %rdi
callq 0x3060
movq 0x80(%rsp), %rdi
callq 0x3060
testq %r12, %r12
je 0xab00
movq 0x18(%r12), %rdi
callq 0x3060
movq %r12, %rdi
callq 0x3060
movq 0xb0(%rsp), %rdi
callq 0x3050
movq 0x20(%r14), %r15
testq %r15, %r15
jne 0xab28
pushq $0x1
popq %rdi
pushq $0x40
popq %rsi
callq 0x3240
movq %rax, %r15
movq %rax, 0x20(%r14)
movq 0x8(%r14), %r12
movq %r12, 0x8(%r15)
movq %r12, (%r15)
pushq $0x28
popq %rsi
movq %r12, %rdi
callq 0x3240
movq %rax, 0x10(%r15)
pushq $0x14
popq %rax
movl $0x3fffffff, %ecx       # imm = 0x3FFFFFFF
movl $0xc0000000, %edx       # imm = 0xC0000000
subq $0x1, %r12
jb 0xab84
movq 0x10(%r15), %rsi
movq 0x10(%r14), %rdi
movl -0x4(%rdi,%rax), %r8d
movq %r8, -0x8(%rsi,%rbx)
movl (%rdi,%rax), %edi
andl %ecx, %edi
movl (%rsi,%rbx), %r8d
andl %edx, %r8d
orl %edi, %r8d
movl %r8d, (%rsi,%rbx)
addq $0x18, %rax
addq $0x28, %rbx
jmp 0xab4f
movq %r15, %rdi
xorl %esi, %esi
callq 0xfcc3
jmp 0xab93
xorl %r14d, %r14d
movq %r14, %rax
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x12449(%rip), %rax     # 0x1cff8
movq (%rax), %rdi
cmpl $0x0, 0x68(%rsp)
leaq 0xc00c(%rip), %rax      # 0x16bca
leaq 0xbfff(%rip), %rdx      # 0x16bc4
cmoveq %rax, %rdx
cmpl $0x0, 0x10(%rsp)
leaq 0xbfe9(%rip), %rcx      # 0x16bbe
cmoveq %rdx, %rcx
movq 0x80(%rsp), %rax
movsbl (%rax), %r8d
movl %ebp, (%rsp)
leaq 0xbf80(%rip), %rsi      # 0x16b6f
leaq 0xbfbf(%rip), %rdx      # 0x16bb5
movq %r15, %r9
xorl %eax, %eax
callq 0x3290
pushq $0x1
popq %rdi
callq 0x3430