// File: /workspace/github_cpp_makefile_star2_O1/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 $0x58, %rsp
movl %esi, %r14d
movq %rdi, %rbp
cmpq $0x0, 0x20(%rdi)
je 0x1e8f4
xorl %ebx, %ebx
movq %rbp, %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq 0x20ff0
incq %rbx
cmpq 0x20(%rbp), %rbx
jb 0x1e8db
movq 0x8(%rbp), %rdi
callq 0x215aa
cmpb $0x0, 0x1f0(%rbp)
jne 0x1efbb
movl %r14d, 0x14(%rsp)
movq 0x20(%rbp), %rax
testq %rax, %rax
je 0x1e96b
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 0x1e94d
jmp 0x1e97a
xorl %r15d, %r15d
xorl %r12d, %r12d
xorl %r13d, %r13d
xorl %r10d, %r10d
xorl %r14d, %r14d
movq %r10, 0x8(%rsp)
leaq (%r12,%r13), %rcx
movb 0x169(%rbp), %al
xorl %ebx, %ebx
testb %al, %al
cmoveq %r15, %rbx
addq %rcx, %rbx
movq %rbx, 0x18(%rsp)
je 0x1ea4c
xorl %ecx, %ecx
testb %al, %al
cmoveq %r15, %rcx
addq %r13, %rcx
movq %rcx, %xmm2
movq 0x34999(%rip), %xmm0    # 0x53350
punpckldq %xmm0, %xmm2    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
movapd 0x3499d(%rip), %xmm1    # 0x53360
subpd %xmm1, %xmm2
movapd %xmm2, %xmm5
unpckhpd %xmm2, %xmm5            # xmm5 = xmm5[1],xmm2[1]
addsd %xmm2, %xmm5
movsd 0x349b5(%rip), %xmm2    # 0x53390
mulsd %xmm2, %xmm5
movq %rbx, %xmm3
punpckldq %xmm0, %xmm3    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]
subpd %xmm1, %xmm3
movapd %xmm3, %xmm4
unpckhpd %xmm3, %xmm4            # xmm4 = xmm4[1],xmm3[1]
addsd %xmm3, %xmm4
divsd %xmm4, %xmm5
movapd %xmm5, 0x30(%rsp)
movq %r12, %xmm3
punpckldq %xmm0, %xmm3    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]
subpd %xmm1, %xmm3
movapd %xmm3, %xmm5
unpckhpd %xmm3, %xmm5            # xmm5 = xmm5[1],xmm3[1]
addsd %xmm3, %xmm5
mulsd %xmm2, %xmm5
divsd %xmm4, %xmm5
movapd %xmm5, 0x40(%rsp)
movq %r15, %xmm3
punpckldq %xmm0, %xmm3    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]
subpd %xmm1, %xmm3
movapd %xmm3, %xmm0
unpckhpd %xmm3, %xmm0            # xmm0 = xmm0[1],xmm3[1]
addsd %xmm3, %xmm0
mulsd %xmm2, %xmm0
divsd %xmm4, %xmm0
jmp 0x1ea5c
xorpd %xmm0, %xmm0
movapd %xmm0, 0x30(%rsp)
movapd %xmm0, 0x40(%rsp)
movapd %xmm0, 0x20(%rsp)
movq 0x4c587(%rip), %rbx     # 0x6aff0
leaq 0x38768(%rip), %rsi     # 0x571d8
movl $0x13, %edx
movq %rbx, %rdi
callq 0x9560
movq %rbx, %rdi
movq 0x18(%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 0x38731(%rip), %rsi     # 0x571ec
movl $0x25, %edx
movq 0x4c529(%rip), %rbx     # 0x6aff0
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 0x35059(%rip), %rsi     # 0x53b4a
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 0x30(%rsp), %xmm0
callq 0x9820
movq %rax, %rbx
leaq 0x386d3(%rip), %rsi     # 0x57212
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 0x3869b(%rip), %rsi     # 0x57215
movl $0x1e, %edx
movq 0x4c46a(%rip), %rdi     # 0x6aff0
callq 0x9560
movq 0x4c45e(%rip), %rdi     # 0x6aff0
movq %r12, %rsi
callq 0x92e0
movq %rax, %rbx
movl $0x2, %edx
movq %rax, %rdi
leaq 0x34f9e(%rip), %rsi     # 0x53b4a
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)
movq %rbx, %rdi
movaps 0x40(%rsp), %xmm0
callq 0x9820
movq %rax, %rbx
movl $0x2, %edx
movq %rax, %rdi
leaq 0x3861a(%rip), %rsi     # 0x57212
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 0x1ecfb
cmpb $0x1, 0x169(%rbp)
jne 0x1ec4b
movq 0x4c3b3(%rip), %rdi     # 0x6aff0
leaq 0x385f0(%rip), %rsi     # 0x57234
movl $0x2b, %edx
jmp 0x1ec5e
movq 0x4c39e(%rip), %rdi     # 0x6aff0
leaq 0x38607(%rip), %rsi     # 0x57260
movl $0x2e, %edx
callq 0x9560
movq 0x4c386(%rip), %rdi     # 0x6aff0
movq %r15, %rsi
callq 0x92e0
movq %rax, %rbx
leaq 0x34ece(%rip), %rsi     # 0x53b4a
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 0x20(%rsp), %xmm0
callq 0x9820
movq %rax, %rbx
leaq 0x3854b(%rip), %rsi     # 0x57212
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 0x8(%rsp), %rbx
orq %rbx, %rax
jne 0x1ed23
leaq 0x38580(%rip), %rsi     # 0x5728f
movl $0xd, %edx
movq 0x4c2d5(%rip), %rbp     # 0x6aff0
movq %rbp, %rdi
jmp 0x1edfe
testq %rbx, %rbx
je 0x1ed71
testq %r14, %r14
jne 0x1ed71
movq 0x4c2bc(%rip), %rbx     # 0x6aff0
leaq 0x38562(%rip), %rsi     # 0x5729d
movl $0x9, %edx
movq %rbx, %rdi
callq 0x9560
movq 0x8(%rsp), %rsi
shrq %rsi
movq %rbx, %rdi
movq 0x8(%rsp), %rbx
callq 0x92e0
movq %rax, %rbp
leaq 0x38540(%rip), %rsi     # 0x572a7
movl $0x16, %edx
jmp 0x1edfb
movq 0x4c278(%rip), %rdi     # 0x6aff0
leaq 0x3851e(%rip), %rsi     # 0x5729d
movl $0x9, %edx
callq 0x9560
testq %r14, %r14
je 0x1edb3
testq %rbx, %rbx
jne 0x1edb3
movq 0x4c256(%rip), %rdi     # 0x6aff0
movq %r14, %rsi
callq 0x92e0
movq %rax, %rbp
leaq 0x370a1(%rip), %rsi     # 0x55e4d
movl $0xb, %edx
jmp 0x1edfb
movq %rbx, %rsi
shrq %rsi
movq 0x4c230(%rip), %rdi     # 0x6aff0
callq 0x92e0
movq %rax, %rbx
leaq 0x384ef(%rip), %rsi     # 0x572be
movl $0x1b, %edx
movq %rax, %rdi
callq 0x9560
movq %rbx, %rdi
movq 0x8(%rsp), %rbx
movq %r14, %rsi
callq 0x92e0
movq %rax, %rbp
leaq 0x384e4(%rip), %rsi     # 0x572da
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, 0x14(%rsp)
je 0x1efbb
movq 0x4c1b3(%rip), %rbp     # 0x6aff0
leaq 0x384ac(%rip), %rsi     # 0x572f0
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 0x38498(%rip), %rsi     # 0x57328
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 0x38481(%rip), %rsi     # 0x5735a
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 0x3846a(%rip), %rsi     # 0x5738c
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 0x38457(%rip), %rsi     # 0x573c2
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 $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x92f0
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq