// File: BenLangmead[P]bowtie/./aligner_metrics.h
// Function: AlignerMetrics::finishRead()
void finishRead() {
		reads_++;
		if(curIsHomoPoly_) homoReads_++;
		else if(curIsLowEntropy_) lowEntReads_++;
		else hiEntReads_++;
		if(curHadRanges_) alignedReads_++;
		else unalignedReads_++;
		bwtOpsPerRead_.push((float)curBwtOps_);
		backtracksPerRead_.push((float)curBacktracks_);
		// Drill down by entropy
		if(curIsHomoPoly_) {
			bwtOpsPerHomoRead_.push((float)curBwtOps_);
			backtracksPerHomoRead_.push((float)curBacktracks_);
		} else if(curIsLowEntropy_) {
			bwtOpsPerLoEntRead_.push((float)curBwtOps_);
			backtracksPerLoEntRead_.push((float)curBacktracks_);
		} else {
			bwtOpsPerHiEntRead_.push((float)curBwtOps_);
			backtracksPerHiEntRead_.push((float)curBacktracks_);
		}
		// Drill down by whether it aligned
		if(curHadRanges_) {
			bwtOpsPerAlignedRead_.push((float)curBwtOps_);
			backtracksPerAlignedRead_.push((float)curBacktracks_);
		} else {
			bwtOpsPerUnalignedRead_.push((float)curBwtOps_);
			backtracksPerUnalignedRead_.push((float)curBacktracks_);
		}
		if(curNumNs_ == 0) {
			lessThanThreeNRreads_++;
			bwtOpsPer0nRead_.push((float)curBwtOps_);
			backtracksPer0nRead_.push((float)curBacktracks_);
		} else if(curNumNs_ == 1) {
			lessThanThreeNRreads_++;
			bwtOpsPer1nRead_.push((float)curBwtOps_);
			backtracksPer1nRead_.push((float)curBacktracks_);
		} else if(curNumNs_ == 2) {
			lessThanThreeNRreads_++;
			bwtOpsPer2nRead_.push((float)curBwtOps_);
			backtracksPer2nRead_.push((float)curBacktracks_);
		} else {
			threeOrMoreNReads_++;
			bwtOpsPer3orMoreNRead_.push((float)curBwtOps_);
			backtracksPer3orMoreNRead_.push((float)curBacktracks_);
		}
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
movl 0x10(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x10(%rax)
testb $0x1, 0xa(%rax)
je 0x4f9a2
movq -0x10(%rbp), %rax
movl 0x14(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x14(%rax)
jmp 0x4f9ca
movq -0x10(%rbp), %rax
testb $0x1, 0x9(%rax)
je 0x4f9bb
movq -0x10(%rbp), %rax
movl 0x18(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x18(%rax)
jmp 0x4f9c8
movq -0x10(%rbp), %rax
movl 0x1c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x1c(%rax)
jmp 0x4f9ca
movq -0x10(%rbp), %rax
testb $0x1, 0xb(%rax)
je 0x4f9e3
movq -0x10(%rbp), %rax
movl 0x20(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x20(%rax)
jmp 0x4f9f0
movq -0x10(%rbp), %rax
movl 0x24(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x24(%rax)
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x30, %rdi
movl 0x4(%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x60, %rdi
movl (%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
movq -0x10(%rbp), %rax
testb $0x1, 0xa(%rax)
je 0x4fa60
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x90, %rdi
movl 0x4(%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0xc0, %rdi
movl (%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
jmp 0x4fad8
movq -0x10(%rbp), %rax
testb $0x1, 0x9(%rax)
je 0x4faa1
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0xf0, %rdi
movl 0x4(%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x120, %rdi            # imm = 0x120
movl (%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
jmp 0x4fad6
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x150, %rdi            # imm = 0x150
movl 0x4(%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x180, %rdi            # imm = 0x180
movl (%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
jmp 0x4fad8
movq -0x10(%rbp), %rax
testb $0x1, 0xb(%rax)
je 0x4fb19
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x1b0, %rdi            # imm = 0x1B0
movl 0x4(%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x1e0, %rdi            # imm = 0x1E0
movl (%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
jmp 0x4fb4e
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x210, %rdi            # imm = 0x210
movl 0x4(%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x240, %rdi            # imm = 0x240
movl (%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
movq -0x10(%rbp), %rax
cmpl $0x0, 0xc(%rax)
jne 0x4fb9a
movq -0x10(%rbp), %rax
movl 0x2c(%rax), %ecx
incl %ecx
movl %ecx, 0x2c(%rax)
movq %rax, %rdi
addq $0x270, %rdi            # imm = 0x270
movl 0x4(%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x2a0, %rdi            # imm = 0x2A0
movl (%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
jmp 0x4fc70
movq -0x10(%rbp), %rax
cmpl $0x1, 0xc(%rax)
jne 0x4fbe6
movq -0x10(%rbp), %rax
movl 0x2c(%rax), %ecx
incl %ecx
movl %ecx, 0x2c(%rax)
movq %rax, %rdi
addq $0x2d0, %rdi            # imm = 0x2D0
movl 0x4(%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x300, %rdi            # imm = 0x300
movl (%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
jmp 0x4fc6e
movq -0x10(%rbp), %rax
cmpl $0x2, 0xc(%rax)
jne 0x4fc2f
movq -0x10(%rbp), %rax
movl 0x2c(%rax), %ecx
incl %ecx
movl %ecx, 0x2c(%rax)
movq %rax, %rdi
addq $0x330, %rdi            # imm = 0x330
movl 0x4(%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x360, %rdi            # imm = 0x360
movl (%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
jmp 0x4fc6c
movq -0x10(%rbp), %rax
movl 0x28(%rax), %ecx
incl %ecx
movl %ecx, 0x28(%rax)
movq %rax, %rdi
addq $0x390, %rdi            # imm = 0x390
movl 0x4(%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x3c0, %rdi            # imm = 0x3C0
movl (%rax), %eax
cvtsi2ss %rax, %xmm0
callq 0x4fed0
jmp 0x4fc6e
jmp 0x4fc70
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)