// File: BenLangmead[P]bowtie/./hit.h
// Function: HitSink::HitSink(OutFileBuf&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool, EList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, 128>*, unsigned long, unsigned long, bool)
explicit HitSink(
		OutFileBuf& out,
		const std::string& dumpAl,
		const std::string& dumpUnal,
		const std::string& dumpMax,
		bool onePairFile,
		bool sampleMax,
		EList<string>* refnames,
		size_t nthreads,
		size_t perThreadBufSize,
		bool reorder) :
		out_(out),
		_refnames(refnames),
		mutex_(),
		dumpAlBase_(dumpAl),
		dumpUnalBase_(dumpUnal),
		dumpMaxBase_(dumpMax),
		onePairFile_(onePairFile),
		sampleMax_(sampleMax),
		quiet_(false),
		nthreads_((nthreads > 0) ? nthreads : 1),
		ptBufs_(),
		ptCounts_(nthreads_),
		perThreadBufSize_(perThreadBufSize),
		ptNumAligned_(NULL),
		reorder_(reorder),
		next_batch_to_flush_(0)
	{
		size_t nelt = 5 * nthreads_;
		ptNumAligned_ = new uint64_t[nelt];
		std::memset(reinterpret_cast<void*>(const_cast<uint64_t*>(ptNumAligned_)), 0, sizeof(uint64_t) * nelt);
		ptNumReported_ = ptNumAligned_ + nthreads_;
		ptNumReportedPaired_ = ptNumReported_ + nthreads_;
		ptNumUnaligned_ = ptNumReportedPaired_ + nthreads_;
		ptNumMaxed_ = ptNumUnaligned_ + nthreads_;
		ptBufs_.resize(nthreads_);
		ptCounts_.resize(nthreads_);
		ptCounts_.fillZero();
		initDumps();

		if (reorder_) {
			reorderInfo_.resize(nthreads_);
			for (size_t i = 0; i < nthreads_; i++) {
				reorderInfo_[i].batchId = 0;
				reorderInfo_[i].waiting = false;
				reorderInfo_[i].flushed = true;
			}
		}
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movl %r9d, %eax
movq %rcx, -0x70(%rbp)
movq %rdx, -0x68(%rbp)
movq %rsi, %r9
movq -0x70(%rbp), %rsi
movq %rdi, %r10
movq -0x68(%rbp), %rdi
movb %al, %dl
movb 0x30(%rbp), %al
movq 0x28(%rbp), %rcx
movq 0x20(%rbp), %rcx
movq 0x18(%rbp), %rcx
movb 0x10(%rbp), %cl
movq %r10, -0x8(%rbp)
movq %r9, -0x10(%rbp)
movq %rdi, -0x18(%rbp)
movq %rsi, -0x20(%rbp)
movq %r8, -0x28(%rbp)
andb $0x1, %dl
movb %dl, -0x29(%rbp)
andb $0x1, %cl
movb %cl, -0x2a(%rbp)
andb $0x1, %al
movb %al, -0x2b(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x60(%rbp)
leaq 0x79cc4(%rip), %rax     # 0xa6880
addq $0x10, %rax
movq %rax, (%rdi)
movq -0x10(%rbp), %rax
movq %rax, 0x8(%rdi)
movq 0x18(%rbp), %rax
movq %rax, 0x10(%rdi)
addq $0x18, %rdi
callq 0x273d0
movq -0x60(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x58(%rbp)
cmpq $0x0, 0x20(%rbp)
jbe 0x2cbf9
movq 0x20(%rbp), %rax
movq %rax, -0x78(%rbp)
jmp 0x2cc04
movl $0x1, %eax
movq %rax, -0x78(%rbp)
jmp 0x2cc04
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rax
movq -0x78(%rbp), %rcx
movq %rcx, (%rax)
addq $0x28, %rdi
movq %rdi, -0x88(%rbp)
callq 0x2d040
movq -0x60(%rbp), %rax
movq %rax, %rdi
addq $0x48, %rdi
movq %rdi, -0x80(%rbp)
movq 0x20(%rax), %rsi
xorl %edx, %edx
callq 0x2d080
jmp 0x2cc3f
movq -0x60(%rbp), %rdi
movq 0x28(%rbp), %rax
movq %rax, 0x68(%rdi)
movq $0x0, 0x70(%rdi)
movb -0x2b(%rbp), %al
andb $0x1, %al
movb %al, 0x78(%rdi)
subq $-0x80, %rdi
movq %rdi, -0x90(%rbp)
callq 0x2d0c0
jmp 0x2cc6d
movq -0x60(%rbp), %rdi
addq $0xa0, %rdi
callq 0x2d100
movq -0x60(%rbp), %rdi
addq $0xc8, %rdi
movq %rdi, -0x98(%rbp)
callq 0x2d120
jmp 0x2cc96
movq -0x60(%rbp), %rdi
addq $0x108, %rdi            # imm = 0x108
movq %rdi, -0xa0(%rbp)
movq -0x18(%rbp), %rsi
callq 0xa220
jmp 0x2ccb3
movq -0x60(%rbp), %rdi
addq $0x128, %rdi            # imm = 0x128
movq %rdi, -0xa8(%rbp)
movq -0x20(%rbp), %rsi
callq 0xa220
jmp 0x2ccd0
movq -0x60(%rbp), %rdi
addq $0x148, %rdi            # imm = 0x148
movq %rdi, -0xb0(%rbp)
movq -0x28(%rbp), %rsi
callq 0xa220
jmp 0x2cced
movq -0x60(%rbp), %rdi
movb -0x29(%rbp), %al
andb $0x1, %al
movb %al, 0x168(%rdi)
movb -0x2a(%rbp), %al
andb $0x1, %al
movb %al, 0x169(%rdi)
addq $0x1b8, %rdi            # imm = 0x1B8
callq 0x273d0
jmp 0x2cd15
movq -0x60(%rbp), %rdi
addq $0x1b9, %rdi            # imm = 0x1B9
callq 0x273d0
jmp 0x2cd27
movq -0x60(%rbp), %rdi
addq $0x1ba, %rdi            # imm = 0x1BA
callq 0x273d0
jmp 0x2cd39
movq -0x60(%rbp), %rdi
addq $0x1bb, %rdi            # imm = 0x1BB
callq 0x273d0
jmp 0x2cd4b
movq -0x60(%rbp), %rdi
addq $0x1bc, %rdi            # imm = 0x1BC
callq 0x273d0
jmp 0x2cd5d
movq -0x60(%rbp), %rdi
addq $0x1bd, %rdi            # imm = 0x1BD
callq 0x273d0
jmp 0x2cd6f
movq -0x60(%rbp), %rax
movq $0x0, 0x1c8(%rax)
movb $0x0, 0x1f0(%rax)
movq 0x20(%rax), %rax
leaq (%rax,%rax,4), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movl $0x8, %ecx
mulq %rcx
movq %rax, %rdi
movq $-0x1, %rax
cmovoq %rax, %rdi
callq 0xa040
movq %rax, -0xb8(%rbp)
jmp 0x2cdb9
movq -0x60(%rbp), %rax
movq -0xb8(%rbp), %rcx
movq %rcx, 0x1c8(%rax)
movq 0x1c8(%rax), %rdi
movq -0x48(%rbp), %rdx
shlq $0x3, %rdx
xorl %esi, %esi
callq 0xa2c0
movq -0x60(%rbp), %rax
movq 0x20(%rax), %rdx
movq 0x1c8(%rax), %rcx
leaq (%rcx,%rdx,8), %rcx
movq %rcx, 0x1d0(%rax)
movq 0x20(%rax), %rdx
movq 0x1d0(%rax), %rcx
leaq (%rcx,%rdx,8), %rcx
movq %rcx, 0x1d8(%rax)
movq 0x20(%rax), %rdx
movq 0x1d8(%rax), %rcx
leaq (%rcx,%rdx,8), %rcx
movq %rcx, 0x1e0(%rax)
movq 0x20(%rax), %rdx
movq 0x1e0(%rax), %rcx
leaq (%rcx,%rdx,8), %rcx
movq %rcx, 0x1e8(%rax)
movq %rax, %rdi
addq $0x28, %rdi
movq 0x20(%rax), %rsi
callq 0x2d170
jmp 0x2ce4f
movq -0x60(%rbp), %rax
movq %rax, %rdi
addq $0x48, %rdi
movq 0x20(%rax), %rsi
callq 0x2d1f0
jmp 0x2ce65
movq -0x60(%rbp), %rdi
addq $0x48, %rdi
callq 0x2d270
jmp 0x2ce74
movq -0x60(%rbp), %rdi
callq 0x2d2a0
jmp 0x2ce7f
movq -0x60(%rbp), %rax
testb $0x1, 0x78(%rax)
je 0x2cfb6
movq -0x60(%rbp), %rax
movq %rax, %rdi
subq $-0x80, %rdi
movq 0x20(%rax), %rsi
callq 0x2d370
jmp 0x2cea3
movq $0x0, -0x50(%rbp)
movq -0x60(%rbp), %rcx
movq -0x50(%rbp), %rax
cmpq 0x20(%rcx), %rax
jae 0x2cfb4
movq -0x60(%rbp), %rdi
subq $-0x80, %rdi
movq -0x50(%rbp), %rsi
callq 0x2d3f0
movq %rax, -0xc0(%rbp)
jmp 0x2ced7
movq -0x60(%rbp), %rdi
movq -0xc0(%rbp), %rax
movq $0x0, (%rax)
subq $-0x80, %rdi
movq -0x50(%rbp), %rsi
callq 0x2d3f0
movq %rax, -0xc8(%rbp)
jmp 0x2ceff
movq -0x60(%rbp), %rdi
movq -0xc8(%rbp), %rax
movb $0x0, 0x9(%rax)
subq $-0x80, %rdi
movq -0x50(%rbp), %rsi
callq 0x2d3f0
movq %rax, -0xd0(%rbp)
jmp 0x2cf24
movq -0xd0(%rbp), %rax
movb $0x1, 0x8(%rax)
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0x2ceab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x2cff8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x2cfef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x2cfe3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x2cfd7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x2cfcb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x2cfbf
movq -0xb0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
callq 0xacd8
jmp 0x2cfbf
jmp 0x2cfb6
addq $0xd0, %rsp
popq %rbp
retq
movq -0xa8(%rbp), %rdi
callq 0xacd8
movq -0xa0(%rbp), %rdi
callq 0xacd8
movq -0x98(%rbp), %rdi
callq 0x2d420
movq -0x90(%rbp), %rdi
callq 0x2d450
movq -0x80(%rbp), %rdi
callq 0x2a450
movq -0x88(%rbp), %rdi
callq 0x2d470
movq -0x38(%rbp), %rdi
callq 0xab60
nopl (%rax)