// File: /workspace/github_cpp_makefile_star2_O3/BenLangmead[P]bowtie/./hit.h
// Function: HitSink::finish(bool)
void finish(bool hadoopOut) {
		// Flush all per-thread buffers
		flushAll();

		// Close all output streams
		closeOuts();

		// Print information about how many unpaired and/or paired
		// reads were aligned.
		if(!quiet_) {
			uint64_t numReported = 0, numReportedPaired = 0;
			uint64_t numAligned = 0, numUnaligned = 0;
			uint64_t numMaxed = 0;
			for(size_t i = 0; i < nthreads_; i++) {
				numReported += ptNumReported_[i];
				numReportedPaired += ptNumReportedPaired_[i];
				numAligned += ptNumAligned_[i];
				numUnaligned += ptNumUnaligned_[i];
				numMaxed += ptNumMaxed_[i];
			}

			uint64_t tot = numAligned + numUnaligned;
			if (!sampleMax_)
				tot += numMaxed;
			double alPct = 0.0, unalPct = 0.0, maxPct = 0.0;
			if(tot > 0) {
				if (sampleMax_)
					alPct   = 100.0 * (double)(numAligned) / (double)tot;
				else
					alPct   = 100.0 * (double)(numAligned + numMaxed) / (double)tot;
				unalPct = 100.0 * (double)numUnaligned / (double)tot;
				maxPct  = 100.0 * (double)numMaxed / (double)tot;
			}
			cerr << "# reads processed: " << tot << endl;
			cerr << "# reads with at least one alignment: "
			     << numAligned + (sampleMax_ ? 0 : numMaxed) << " (" << fixed << setprecision(2)
			     << alPct << "%)" << endl;
			cerr << "# reads that failed to align: "
			     << numUnaligned << " (" << fixed << setprecision(2)
			     << unalPct << "%)" << endl;
			if(numMaxed > 0) {
				if(sampleMax_) {
					cerr << "# reads with alignments sampled due to -M: "
						 << numMaxed << " (" << fixed << setprecision(2)
						 << maxPct << "%)" << endl;
				} else {
					cerr << "# reads with alignments suppressed due to -m: "
						 << numMaxed << " (" << fixed << setprecision(2)
						 << maxPct << "%)" << endl;
				}
			}
			if(numReported == 0 && numReportedPaired == 0) {
				cerr << "No alignments" << endl;
			}
			else if(numReportedPaired > 0 && numReported == 0) {
				cerr << "Reported " << (numReportedPaired >> 1)
					 << " paired-end alignments" << endl;
			}
			else if(numReported > 0 && numReportedPaired == 0) {
				cerr << "Reported " << numReported
					 << " alignments" << endl;
			}
			else {
				assert_gt(numReported + numReportedPaired, 0);
				cerr << "Reported " << (numReportedPaired >> 1)
					 << " paired-end alignments and " << numReported
					 << " singleton alignments" << endl;
			}
			if(hadoopOut) {
				cerr << "reporter:counter:Bowtie,Reads with reported alignments," << numAligned << endl;
				cerr << "reporter:counter:Bowtie,Reads with no alignments," << numUnaligned << endl;
				cerr << "reporter:counter:Bowtie,Reads exceeding -m limit," << numMaxed << endl;
				cerr << "reporter:counter:Bowtie,Unpaired alignments reported," << numReported << endl;
				cerr << "reporter:counter:Bowtie,Paired alignments reported," << numReportedPaired << endl;
			}
		}
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movl %esi, %r14d
movq %rdi, %rbp
cmpq $0x0, 0x20(%rdi)
je 0x1e6b0
xorl %ebx, %ebx
movq %rbp, %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq 0x20cb8
incq %rbx
cmpq 0x20(%rbp), %rbx
jb 0x1e697
movq 0x8(%rbp), %rdi
callq 0x21278
cmpb $0x0, 0x1f0(%rbp)
jne 0x1ed97
movl %r14d, 0xc(%rsp)
movq 0x20(%rbp), %rax
testq %rax, %rax
je 0x1e727
movq 0x1c8(%rbp), %rcx
movq 0x1d0(%rbp), %rdx
movq 0x1d8(%rbp), %rsi
movq 0x1e0(%rbp), %rdi
movq 0x1e8(%rbp), %r8
xorl %r14d, %r14d
xorl %r10d, %r10d
xorl %r13d, %r13d
xorl %r12d, %r12d
xorl %r9d, %r9d
xorl %r15d, %r15d
addq (%rdx,%r9,8), %r14
addq (%rsi,%r9,8), %r10
addq (%rcx,%r9,8), %r13
addq (%rdi,%r9,8), %r12
addq (%r8,%r9,8), %r15
incq %r9
cmpq %r9, %rax
jne 0x1e709
jmp 0x1e736
xorl %r15d, %r15d
xorl %r12d, %r12d
xorl %r13d, %r13d
xorl %r10d, %r10d
xorl %r14d, %r14d
movq %r10, (%rsp)
leaq (%r12,%r13), %rcx
movb 0x169(%rbp), %dl
leaq (%rcx,%r15), %rax
testb %dl, %dl
movq %rax, %rdi
cmovneq %rcx, %rdi
testq %rdi, %rdi
movq %rdi, 0x28(%rsp)
je 0x1e82b
xorl %esi, %esi
testb %dl, %dl
cmoveq %r15, %rsi
cmovneq %rcx, %rax
addq %r13, %rsi
movq %rsi, %xmm6
movq %r12, %xmm0
punpcklqdq %xmm0, %xmm6    # xmm6 = xmm6[0],xmm0[0]
movdqa 0x33bcc(%rip), %xmm0    # 0x52350
movdqa %xmm6, %xmm1
pand %xmm0, %xmm1
movdqa 0x33bcc(%rip), %xmm2    # 0x52360
por %xmm2, %xmm1
psrlq $0x20, %xmm6
movdqa 0x33bcb(%rip), %xmm3    # 0x52370
por %xmm3, %xmm6
movapd 0x33bcf(%rip), %xmm4    # 0x52380
subpd %xmm4, %xmm6
addpd %xmm1, %xmm6
mulpd 0x33bcf(%rip), %xmm6    # 0x52390
movq %rax, %xmm1
movq %rdi, %xmm5
punpcklqdq %xmm5, %xmm1    # xmm1 = xmm1[0],xmm5[0]
pand %xmm1, %xmm0
por %xmm2, %xmm0
psrlq $0x20, %xmm1
por %xmm3, %xmm1
subpd %xmm4, %xmm1
addpd %xmm0, %xmm1
movq %r15, %xmm0
punpckldq 0x33bab(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x33bb3(%rip), %xmm0    # 0x523b0
divpd %xmm1, %xmm6
movapd %xmm6, 0x10(%rsp)
movapd %xmm0, %xmm2
unpckhpd %xmm0, %xmm2            # xmm2 = xmm2[1],xmm0[1]
addsd %xmm0, %xmm2
mulsd 0x33c55(%rip), %xmm2    # 0x52470
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
divsd %xmm1, %xmm2
movapd %xmm2, 0x30(%rsp)
jmp 0x1e83f
xorpd %xmm0, %xmm0
movapd %xmm0, 0x10(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x30(%rsp)
movq 0x4b7aa(%rip), %rbx     # 0x69ff0
leaq 0x37a6b(%rip), %rsi     # 0x562b8
movl $0x13, %edx
movq %rbx, %rdi
callq 0x9560
movq %rbx, %rdi
movq 0x28(%rsp), %rsi
callq 0x92e0
movq %rax, %rbx
movq (%rax), %rcx
movq -0x18(%rcx), %rdi
addq %rax, %rdi
movl $0xa, %esi
callq 0x9480
movsbl %al, %esi
movq %rbx, %rdi
callq 0x9050
movq %rax, %rdi
callq 0x92f0
leaq 0x37a34(%rip), %rsi     # 0x562cc
movl $0x25, %edx
movq 0x4b74c(%rip), %rbx     # 0x69ff0
movq %rbx, %rdi
callq 0x9560
xorl %esi, %esi
cmpb $0x0, 0x169(%rbp)
cmoveq %r15, %rsi
addq %r13, %rsi
movq %rbx, %rdi
callq 0x92e0
movq %rax, %rbx
leaq 0x3435c(%rip), %rsi     # 0x52c2a
movl $0x2, %edx
movq %rax, %rdi
callq 0x9560
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl $0xfffffefb, %edx       # imm = 0xFFFFFEFB
movl 0x18(%rbx,%rax), %ecx
andl %edx, %ecx
orl $0x4, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl $0x2, %ecx
movq %rcx, 0x8(%rbx,%rax)
movq %rbx, %rdi
movaps 0x10(%rsp), %xmm0
callq 0x9820
movq %rax, %rbx
leaq 0x379d6(%rip), %rsi     # 0x562f2
movl $0x2, %edx
movq %rax, %rdi
callq 0x9560
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x9480
movsbl %al, %esi
movq %rbx, %rdi
callq 0x9050
movq %rax, %rdi
callq 0x92f0
leaq 0x3799e(%rip), %rsi     # 0x562f5
movl $0x1e, %edx
movq 0x4b68d(%rip), %rdi     # 0x69ff0
callq 0x9560
movq 0x4b681(%rip), %rdi     # 0x69ff0
movq %r12, %rsi
callq 0x92e0
movq %rax, %rbx
movl $0x2, %edx
movq %rax, %rdi
leaq 0x342a1(%rip), %rsi     # 0x52c2a
callq 0x9560
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl $0xfffffefb, %ecx       # imm = 0xFFFFFEFB
andl 0x18(%rbx,%rax), %ecx
orl $0x4, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl $0x2, %ecx
movq %rcx, 0x8(%rbx,%rax)
movaps 0x10(%rsp), %xmm0
movhlps %xmm0, %xmm0            # xmm0 = xmm0[1,1]
movq %rbx, %rdi
callq 0x9820
movq %rax, %rbx
movl $0x2, %edx
movq %rax, %rdi
leaq 0x3791a(%rip), %rsi     # 0x562f2
callq 0x9560
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x9480
movsbl %al, %esi
movq %rbx, %rdi
callq 0x9050
movq %rax, %rdi
callq 0x92f0
testq %r15, %r15
je 0x1eadb
cmpb $0x1, 0x169(%rbp)
jne 0x1ea2b
movq 0x4b5d3(%rip), %rdi     # 0x69ff0
leaq 0x378f0(%rip), %rsi     # 0x56314
movl $0x2b, %edx
jmp 0x1ea3e
movq 0x4b5be(%rip), %rdi     # 0x69ff0
leaq 0x37907(%rip), %rsi     # 0x56340
movl $0x2e, %edx
callq 0x9560
movq 0x4b5a6(%rip), %rdi     # 0x69ff0
movq %r15, %rsi
callq 0x92e0
movq %rax, %rbx
leaq 0x341ce(%rip), %rsi     # 0x52c2a
movl $0x2, %edx
movq %rax, %rdi
callq 0x9560
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl $0xfffffefb, %ecx       # imm = 0xFFFFFEFB
andl 0x18(%rbx,%rax), %ecx
orl $0x4, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq $0x2, 0x8(%rbx,%rax)
movq %rbx, %rdi
movaps 0x30(%rsp), %xmm0
callq 0x9820
movq %rax, %rbx
leaq 0x3784b(%rip), %rsi     # 0x562f2
movl $0x2, %edx
movq %rax, %rdi
callq 0x9560
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x9480
movsbl %al, %esi
movq %rbx, %rdi
callq 0x9050
movq %rax, %rdi
callq 0x92f0
movq %r14, %rax
movq (%rsp), %rbx
orq %rbx, %rax
jne 0x1eb02
leaq 0x37881(%rip), %rsi     # 0x5636f
movl $0xd, %edx
movq 0x4b4f6(%rip), %rbp     # 0x69ff0
movq %rbp, %rdi
jmp 0x1ebda
testq %rbx, %rbx
je 0x1eb4e
testq %r14, %r14
jne 0x1eb4e
movq 0x4b4dd(%rip), %rbx     # 0x69ff0
leaq 0x37863(%rip), %rsi     # 0x5637d
movl $0x9, %edx
movq %rbx, %rdi
callq 0x9560
movq (%rsp), %rsi
shrq %rsi
movq %rbx, %rdi
movq (%rsp), %rbx
callq 0x92e0
movq %rax, %rbp
leaq 0x37843(%rip), %rsi     # 0x56387
movl $0x16, %edx
jmp 0x1ebd7
movq 0x4b49b(%rip), %rdi     # 0x69ff0
leaq 0x37821(%rip), %rsi     # 0x5637d
movl $0x9, %edx
callq 0x9560
testq %r14, %r14
je 0x1eb90
testq %rbx, %rbx
jne 0x1eb90
movq 0x4b479(%rip), %rdi     # 0x69ff0
movq %r14, %rsi
callq 0x92e0
movq %rax, %rbp
leaq 0x363a4(%rip), %rsi     # 0x54f2d
movl $0xb, %edx
jmp 0x1ebd7
movq %rbx, %rsi
shrq %rsi
movq 0x4b453(%rip), %rdi     # 0x69ff0
callq 0x92e0
movq %rax, %rbx
leaq 0x377f2(%rip), %rsi     # 0x5639e
movl $0x1b, %edx
movq %rax, %rdi
callq 0x9560
movq %rbx, %rdi
movq (%rsp), %rbx
movq %r14, %rsi
callq 0x92e0
movq %rax, %rbp
leaq 0x377e8(%rip), %rsi     # 0x563ba
movl $0x15, %edx
movq %rax, %rdi
callq 0x9560
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x9480
movsbl %al, %esi
movq %rbp, %rdi
callq 0x9050
movq %rax, %rdi
callq 0x92f0
cmpb $0x0, 0xc(%rsp)
je 0x1ed97
movq 0x4b3d7(%rip), %rbp     # 0x69ff0
leaq 0x377b0(%rip), %rsi     # 0x563d0
movl $0x37, %edx
movq %rbp, %rdi
callq 0x9560
movq %rbp, %rdi
movq %r13, %rsi
callq 0x92e0
movq %rbx, %r13
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x9480
movsbl %al, %esi
movq %rbx, %rdi
callq 0x9050
movq %rax, %rdi
callq 0x92f0
leaq 0x3779c(%rip), %rsi     # 0x56408
movl $0x31, %edx
movq %rbp, %rdi
callq 0x9560
movq %rbp, %rdi
movq %r12, %rsi
callq 0x92e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x9480
movsbl %al, %esi
movq %rbx, %rdi
callq 0x9050
movq %rax, %rdi
callq 0x92f0
leaq 0x37785(%rip), %rsi     # 0x5643a
movl $0x31, %edx
movq %rbp, %rdi
callq 0x9560
movq %rbp, %rdi
movq %r15, %rsi
callq 0x92e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x9480
movsbl %al, %esi
movq %rbx, %rdi
callq 0x9050
movq %rax, %rdi
callq 0x92f0
leaq 0x3776e(%rip), %rsi     # 0x5646c
movl $0x35, %edx
movq %rbp, %rdi
callq 0x9560
movq %rbp, %rdi
movq %r14, %rsi
callq 0x92e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x9480
movsbl %al, %esi
movq %rbx, %rdi
callq 0x9050
movq %rax, %rdi
callq 0x92f0
leaq 0x3775b(%rip), %rsi     # 0x564a2
movl $0x33, %edx
movq %rbp, %rdi
callq 0x9560
movq %rbp, %rdi
movq %r13, %rsi
callq 0x92e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x9480
movsbl %al, %esi
movq %rbx, %rdi
callq 0x9050
movq %rax, %rdi
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x92f0
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq