// File: splatlab[P]debgr/main.cc
// Function: fastq_to_uint64kmers_prod(flush_object*)
static bool fastq_to_uint64kmers_prod(flush_object* obj) 
{
	file_pointer* fp;

	while (num_files) {
		while (ip_files.pop(fp)) {
			if (fastq_read_parts(fp->mode, fp)) {
				ip_files.push(fp);
				chunk c(fp->part, fp->size);
				reads_to_kmers(c, obj);
			} else {
				/* close the file */
				if (fp->mode == 0)
					fclose(fp->freader->in);
				else if (fp->mode == 1)
					gzclose(fp->freader->in_gzip);
				else if (fp->mode == 2)
					if (fp->freader->in) {
						BZ2_bzReadClose(&(fp->freader->bzerror), fp->freader->in_bzip2);
						fclose(fp->freader->in);
					}
				delete[] fp->part_buffer;
				delete fp;
				num_files--;
			}
		}
	}
	if (obj->count) {
		dump_local_qf_to_main(obj);
		obj->count = 0;
	}

		return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1a0, %rsp            # imm = 0x1A0
movq %rdi, -0x120(%rbp)
leaq 0x1ebaf(%rip), %rax     # 0x28508
movq %rax, -0x118(%rbp)
movq -0x118(%rbp), %rax
movq %rax, -0xf8(%rbp)
movl $0xe, -0xfc(%rbp)
movq -0xf8(%rbp), %rax
movq %rax, -0x140(%rbp)
cmpl $0x4, -0xfc(%rbp)
je 0x999a
cmpl $0x6, -0xfc(%rbp)
jne 0x99d8
jmp 0x99b9
leaq 0x130b0(%rip), %rdi     # 0x1ca51
leaq 0x130c7(%rip), %rsi     # 0x1ca6f
movl $0x14f, %edx            # imm = 0x14F
leaq 0x130ec(%rip), %rcx     # 0x1caa0
callq 0x6280
leaq 0x1316f(%rip), %rdi     # 0x1cb2f
leaq 0x130a8(%rip), %rsi     # 0x1ca6f
movl $0x150, %edx            # imm = 0x150
leaq 0x130cd(%rip), %rcx     # 0x1caa0
callq 0x6280
movq -0x140(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rcx
movl -0xfc(%rbp), %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
movq -0xe0(%rbp), %rax
movq %rax, -0x148(%rbp)
movl -0xe4(%rbp), %eax
movl %eax, -0x84(%rbp)
cmpl $0x0, -0x84(%rbp)
jne 0x9a30
xorl %eax, %eax
movl %eax, -0x14c(%rbp)
jmp 0x9ab2
cmpl $0x1, -0x84(%rbp)
jne 0x9a46
movl $0x1, %eax
movl %eax, -0x150(%rbp)
jmp 0x9aa6
cmpl $0x2, -0x84(%rbp)
jne 0x9a5c
movl $0x2, %eax
movl %eax, -0x154(%rbp)
jmp 0x9a9a
cmpl $0x4, -0x84(%rbp)
jne 0x9a72
movl $0x3, %eax
movl %eax, -0x158(%rbp)
jmp 0x9a8e
movl -0x84(%rbp), %edx
movl $0x5, %eax
movl $0x4, %ecx
cmpl $0x6, %edx
cmovel %ecx, %eax
movl %eax, -0x158(%rbp)
movl -0x158(%rbp), %eax
movl %eax, -0x154(%rbp)
movl -0x154(%rbp), %eax
movl %eax, -0x150(%rbp)
movl -0x150(%rbp), %eax
movl %eax, -0x14c(%rbp)
movl -0x14c(%rbp), %eax
movl %eax, -0x15c(%rbp)
decl %eax
subl $0x2, %eax
jb 0x9ae5
jmp 0x9ac7
movl -0x15c(%rbp), %eax
subl $0x5, %eax
je 0x9af6
jmp 0x9ad4
movq -0x148(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xe8(%rbp)
jmp 0x9b05
movq -0x148(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xe8(%rbp)
jmp 0x9b05
movq -0x148(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xe8(%rbp)
movl -0xe8(%rbp), %eax
movl %eax, -0xec(%rbp)
movl -0xec(%rbp), %eax
movl %eax, -0xcc(%rbp)
movl -0xcc(%rbp), %eax
movl %eax, -0xc4(%rbp)
movl -0xc4(%rbp), %eax
movl %eax, -0xc8(%rbp)
leaq -0xc8(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq %rax, -0xb0(%rbp)
leaq -0xb4(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rax
movq -0xb0(%rbp), %rcx
movq %rcx, -0xa0(%rbp)
movq -0xa0(%rbp), %rcx
movl (%rcx), %ecx
movl %ecx, (%rax)
leaq -0xb4(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x90(%rbp)
cmpl $0x0, -0xb4(%rbp)
je 0x9f13
jmp 0x9baa
leaq 0x1e8bf(%rip), %rdi     # 0x28470
leaq -0x128(%rbp), %rsi
callq 0x10cd0
testb $0x1, %al
jne 0x9bc6
jmp 0x9f0e
movq -0x128(%rbp), %rax
movl 0x18(%rax), %edi
movq -0x128(%rbp), %rsi
callq 0x9fe0
testb $0x1, %al
jne 0x9be2
jmp 0x9c31
leaq 0x1e887(%rip), %rdi     # 0x28470
leaq -0x128(%rbp), %rsi
callq 0xb000
movq -0x128(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x128(%rbp), %rax
movq 0x20(%rax), %rax
movl %eax, %edx
leaq -0x138(%rbp), %rdi
callq 0x6a50
movq -0x120(%rbp), %rsi
leaq -0x138(%rbp), %rdi
callq 0x7610
jmp 0x9f09
movq -0x128(%rbp), %rax
cmpl $0x0, 0x18(%rax)
jne 0x9c57
movq -0x128(%rbp), %rdi
callq 0x10d00
movq (%rax), %rdi
callq 0x6430
jmp 0x9ce7
movq -0x128(%rbp), %rax
cmpl $0x1, 0x18(%rax)
jne 0x9c7b
movq -0x128(%rbp), %rdi
callq 0x10d00
movq 0x8(%rax), %rdi
callq 0x6770
jmp 0x9ce5
movq -0x128(%rbp), %rax
cmpl $0x2, 0x18(%rax)
jne 0x9ce3
movq -0x128(%rbp), %rdi
callq 0x10d00
cmpq $0x0, (%rax)
je 0x9ce1
movq -0x128(%rbp), %rdi
callq 0x10d00
addq $0x18, %rax
movq %rax, -0x168(%rbp)
movq -0x128(%rbp), %rdi
callq 0x10d00
movq -0x168(%rbp), %rdi
movq 0x10(%rax), %rsi
callq 0x6820
movq -0x128(%rbp), %rdi
callq 0x10d00
movq (%rax), %rdi
callq 0x6430
jmp 0x9ce3
jmp 0x9ce5
jmp 0x9ce7
movq -0x128(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x170(%rbp)
cmpq $0x0, %rax
je 0x9d0b
movq -0x170(%rbp), %rdi
callq 0x65b0
movq -0x128(%rbp), %rax
movq %rax, -0x178(%rbp)
cmpq $0x0, %rax
je 0x9d37
movq -0x178(%rbp), %rdi
callq 0x10d20
movq -0x178(%rbp), %rdi
callq 0x6400
leaq 0x1e7ca(%rip), %rax     # 0x28508
movq %rax, -0x108(%rbp)
movl $0x0, -0x10c(%rbp)
movq -0x108(%rbp), %rax
movq %rax, -0x78(%rbp)
movl $0x1, -0x7c(%rbp)
movl $0xe, -0x80(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rdx
movl -0x7c(%rbp), %ecx
movl -0x80(%rbp), %eax
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movl %eax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x180(%rbp)
movl -0x20(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jne 0x9da5
xorl %eax, %eax
movl %eax, -0x184(%rbp)
jmp 0x9e1b
cmpl $0x1, -0xc(%rbp)
jne 0x9db8
movl $0x1, %eax
movl %eax, -0x188(%rbp)
jmp 0x9e0f
cmpl $0x2, -0xc(%rbp)
jne 0x9dcb
movl $0x2, %eax
movl %eax, -0x18c(%rbp)
jmp 0x9e03
cmpl $0x4, -0xc(%rbp)
jne 0x9dde
movl $0x3, %eax
movl %eax, -0x190(%rbp)
jmp 0x9df7
movl -0xc(%rbp), %edx
movl $0x5, %eax
movl $0x4, %ecx
cmpl $0x6, %edx
cmovel %ecx, %eax
movl %eax, -0x190(%rbp)
movl -0x190(%rbp), %eax
movl %eax, -0x18c(%rbp)
movl -0x18c(%rbp), %eax
movl %eax, -0x188(%rbp)
movl -0x188(%rbp), %eax
movl %eax, -0x184(%rbp)
movl -0x184(%rbp), %eax
movl -0x1c(%rbp), %ecx
movl %ecx, -0x24(%rbp)
decl %eax
movl %eax, %ecx
movq %rcx, -0x198(%rbp)
subl $0x4, %eax
ja 0x9e4e
movq -0x198(%rbp), %rax
leaq 0x1222f(%rip), %rcx     # 0x1c074
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x180(%rbp), %rcx
movl -0x24(%rbp), %eax
negl %eax
lock
xaddl %eax, (%rcx)
movl %eax, -0x28(%rbp)
jmp 0x9eb5
movq -0x180(%rbp), %rcx
movl -0x24(%rbp), %eax
negl %eax
lock
xaddl %eax, (%rcx)
movl %eax, -0x28(%rbp)
jmp 0x9eb5
movq -0x180(%rbp), %rcx
movl -0x24(%rbp), %eax
negl %eax
lock
xaddl %eax, (%rcx)
movl %eax, -0x28(%rbp)
jmp 0x9eb5
movq -0x180(%rbp), %rcx
movl -0x24(%rbp), %eax
negl %eax
lock
xaddl %eax, (%rcx)
movl %eax, -0x28(%rbp)
jmp 0x9eb5
movq -0x180(%rbp), %rcx
movl -0x24(%rbp), %eax
negl %eax
lock
xaddl %eax, (%rcx)
movl %eax, -0x28(%rbp)
movl -0x28(%rbp), %eax
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %eax
movl %eax, -0x6c(%rbp)
movl -0x6c(%rbp), %eax
movl %eax, -0x64(%rbp)
movl -0x64(%rbp), %eax
movl %eax, -0x68(%rbp)
leaq -0x68(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x54(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq -0x50(%rbp), %rcx
movq %rcx, -0x40(%rbp)
movq -0x40(%rbp), %rcx
movl (%rcx), %ecx
movl %ecx, (%rax)
leaq -0x54(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x30(%rbp)
jmp 0x9baa
jmp 0x9952
movq -0x120(%rbp), %rax
cmpl $0x0, 0x28(%rax)
je 0x9f3a
movq -0x120(%rbp), %rdi
callq 0x8090
movq -0x120(%rbp), %rax
movl $0x0, 0x28(%rax)
movb $0x1, %al
andb $0x1, %al
addq $0x1a0, %rsp            # imm = 0x1A0
popq %rbp
retq
nopw (%rax,%rax)