// File: BenLangmead[P]bowtie/./aligner.h
// Function: PairedBWAlignerV2<EbwtRangeSource>::reportSe(Range const&, std::pair<unsigned int, unsigned int>, unsigned int)
void reportSe(const Range& r, UPair h, uint32_t tlen) {
		EbwtSearchParams* params = (r.mate1 ? paramsSe1_ : paramsSe2_);
		assert(!(r.mate1 ? doneSe1_ : doneSe2_));
		params->setFw(r.fw);
		Read* buf = r.mate1 ? bufa_ : bufb_;
		bool ebwtFw = r.ebwt->fw();
		uint32_t len = r.mate1 ? alen_ : blen_;
		// Print upstream mate first
		if(params->reportHit(
			r.fw ? (ebwtFw?  buf->patFw   :  buf->patFwRev) :
			       (ebwtFw?  buf->patRc   :  buf->patRcRev),
			r.fw ? (ebwtFw? &buf->qual    : &buf->qualRev) :
			       (ebwtFw? &buf->qualRev : &buf->qual),
			&buf->name,
			ebwtFw,
			r.mms,                   // mismatch positions
			r.refcs,                 // reference characters for mms
			r.numMms,                // # mismatches
			h,                       // position
			make_pair(0, 0),         // (bogus) mate coords
			true,                    // (bogus) mate orientation
			0,                       // (bogus) mate length
			make_pair(r.top, r.bot), // arrows
			tlen,                    // textlen
			len,                     // qlen
			r.stratum,               // alignment stratum
			r.cost,                  // cost, including quality penalty
			r.bot - r.top - 1,       // # other hits
			buf->patid,
			buf->seed,
			0))
		{
			if(r.mate1) doneSe1_ = true;
			else        doneSe2_ = true;
			if(donePe_) driver_->removeMate(r.mate1 ? 1 : 2);
		}
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x188, %rsp            # imm = 0x188
movq %rdx, -0x30(%rbp)
movq %rdi, -0x38(%rbp)
movq %rsi, -0x40(%rbp)
movl %ecx, -0x44(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x40(%rbp), %rax
testb $0x1, 0x15(%rax)
je 0x649cf
movq -0x90(%rbp), %rax
movq 0xa0(%rax), %rax
movq %rax, -0x98(%rbp)
jmp 0x649e4
movq -0x90(%rbp), %rax
movq 0xa8(%rax), %rax
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
movq -0x40(%rbp), %rax
movb 0x14(%rax), %al
andb $0x1, %al
movzbl %al, %esi
callq 0x49a40
movq -0x40(%rbp), %rax
testb $0x1, 0x15(%rax)
je 0x64a22
movq -0x90(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0xa0(%rbp)
jmp 0x64a34
movq -0x90(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x40(%rbp), %rax
movq 0x58(%rax), %rdi
callq 0x402a0
andb $0x1, %al
movb %al, -0x59(%rbp)
movq -0x40(%rbp), %rax
testb $0x1, 0x15(%rax)
je 0x64a6d
movq -0x90(%rbp), %rax
movl 0x20(%rax), %eax
movl %eax, -0xa4(%rbp)
jmp 0x64a7d
movq -0x90(%rbp), %rax
movl 0x30(%rax), %eax
movl %eax, -0xa4(%rbp)
movl -0xa4(%rbp), %eax
movl %eax, -0x60(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0x40(%rbp), %rax
testb $0x1, 0x14(%rax)
je 0x64acf
testb $0x1, -0x59(%rbp)
je 0x64aae
movq -0x58(%rbp), %rax
movq %rax, -0xb8(%rbp)
jmp 0x64abf
movq -0x58(%rbp), %rax
addq $0x90, %rax
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rax
movq %rax, -0xc0(%rbp)
jmp 0x64b05
testb $0x1, -0x59(%rbp)
je 0x64ae6
movq -0x58(%rbp), %rax
addq $0x30, %rax
movq %rax, -0xc8(%rbp)
jmp 0x64af7
movq -0x58(%rbp), %rax
addq $0xc0, %rax
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0x40(%rbp), %rax
testb $0x1, 0x14(%rax)
je 0x64b55
testb $0x1, -0x59(%rbp)
je 0x64b34
movq -0x58(%rbp), %rax
addq $0x60, %rax
movq %rax, -0xd8(%rbp)
jmp 0x64b45
movq -0x58(%rbp), %rax
addq $0xf0, %rax
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x64b8b
testb $0x1, -0x59(%rbp)
je 0x64b6e
movq -0x58(%rbp), %rax
addq $0xf0, %rax
movq %rax, -0xe8(%rbp)
jmp 0x64b7d
movq -0x58(%rbp), %rax
addq $0x60, %rax
movq %rax, -0xe8(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq -0xe0(%rbp), %rax
movq %rax, -0x128(%rbp)
movq -0x58(%rbp), %rax
addq $0x150, %rax            # imm = 0x150
movq %rax, -0x120(%rbp)
movb -0x59(%rbp), %al
movb %al, -0x129(%rbp)
movq -0x40(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x118(%rbp)
movq -0x40(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x110(%rbp)
movq -0x40(%rbp), %rax
movl 0x10(%rax), %eax
movq %rax, -0x108(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x68(%rbp)
movl $0x0, -0x7c(%rbp)
movl $0x0, -0x80(%rbp)
leaq -0x7c(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x655f0
movq %rax, -0x78(%rbp)
leaq -0x70(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x65620
movq -0x40(%rbp), %rdi
movq -0x40(%rbp), %rsi
addq $0x4, %rsi
callq 0x4d4f0
movb -0x129(%rbp), %r8b
movq -0xb0(%rbp), %rdi
movq -0x128(%rbp), %rdx
movq -0x120(%rbp), %rcx
movq -0x118(%rbp), %r9
movq %rax, %rsi
movq -0x110(%rbp), %rax
movq %rsi, -0x88(%rbp)
movl -0x44(%rbp), %r12d
movl -0x60(%rbp), %r15d
movq -0x40(%rbp), %rsi
movl 0xc(%rsi), %r14d
movq -0x40(%rbp), %rsi
movw 0x8(%rsi), %bx
movq -0x40(%rbp), %rsi
movl 0x4(%rsi), %r11d
movq -0x40(%rbp), %rsi
subl (%rsi), %r11d
subl $0x1, %r11d
movq -0x58(%rbp), %rsi
movl 0x1a4(%rsi), %r10d
movq -0x58(%rbp), %rsi
movl 0x18c(%rsi), %esi
movl %esi, -0xec(%rbp)
movq -0x68(%rbp), %rsi
movq %rsi, -0x100(%rbp)
movq -0x70(%rbp), %rsi
movq %rsi, -0xf8(%rbp)
movq -0x88(%rbp), %r13
xorl %esi, %esi
movq -0xd0(%rbp), %rsi
andb $0x1, %r8b
movzbl %r8b, %r8d
movq %rax, (%rsp)
movq -0x108(%rbp), %rax
movq %rax, 0x8(%rsp)
movq -0x100(%rbp), %rax
movq %rax, 0x10(%rsp)
movq -0xf8(%rbp), %rax
movq %rax, 0x18(%rsp)
movl -0xec(%rbp), %eax
movl $0x1, 0x20(%rsp)
movl $0x0, 0x28(%rsp)
movq %r13, 0x30(%rsp)
movl %r12d, 0x38(%rsp)
movl %r15d, 0x40(%rsp)
movl %r14d, 0x48(%rsp)
movzwl %bx, %ebx
movl %ebx, 0x50(%rsp)
movl %r11d, 0x58(%rsp)
movl %r10d, 0x60(%rsp)
movl %eax, 0x68(%rsp)
movl $0x0, 0x70(%rsp)
callq 0x4cbe0
testb $0x1, %al
jne 0x64d46
jmp 0x64da2
movq -0x40(%rbp), %rax
testb $0x1, 0x15(%rax)
je 0x64d5d
movq -0x90(%rbp), %rax
movb $0x1, 0x6a(%rax)
jmp 0x64d68
movq -0x90(%rbp), %rax
movb $0x1, 0x6b(%rax)
movq -0x90(%rbp), %rax
testb $0x1, 0x69(%rax)
je 0x64da0
movq -0x90(%rbp), %rax
movq 0xd0(%rax), %rdi
movq -0x40(%rbp), %rax
movb 0x15(%rax), %cl
movl $0x2, %esi
movl $0x1, %eax
testb $0x1, %cl
cmovnel %eax, %esi
movq (%rdi), %rax
callq *0x48(%rax)
jmp 0x64da2
addq $0x188, %rsp            # imm = 0x188
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop