// File: /workspace/github_cpp_makefile_star2_O2/BenLangmead[P]bowtie/./ebwt.h
// Function: Ebwt::report(SDnaStringExpandable<25, 2> const&, SStringExpandable<char, 25, 2, 0>*, SStringExpandable<char, 25, 2, 0>*, EList<unsigned int, 128> const&, EList<unsigned char, 128> const&, unsigned long, unsigned int, unsigned int, unsigned int, unsigned int, int, unsigned short, unsigned int, unsigned int, EbwtSearchParams const&) const
inline bool Ebwt::report(const BTDnaString& query,
			 BTString* quals,
			 BTString* name,
			 const EList<TIndexOffU>& mmui32,
			 const EList<uint8_t>& refcs,
			 size_t numMms,
			 TIndexOffU off,
			 TIndexOffU top,
			 TIndexOffU bot,
			 uint32_t qlen,
			 int stratum,
			 uint16_t cost,
			 uint32_t patid,
			 uint32_t seed,
			 const EbwtSearchParams& params) const
{
	VMSG_NL("In report");
	assert_geq(cost, (uint32_t)(stratum << 14));
	assert_lt(off, this->_eh._len);
	TIndexOffU tidx;
	TIndexOffU textoff;
	TIndexOffU tlen;
	joinedToTextOff(qlen, off, tidx, textoff, tlen);
	if(tidx == OFF_MASK) {
		return false;
	}
	return params.reportHit(
			query,                    // read sequence
			quals,                    // read quality values
			name,                     // read name
			_fw,                      // true = index is forward; false = mirror
			mmui32,                   // mismatch positions
			refcs,                    // reference characters for mms
			numMms,                   // # mismatches
			make_pair(tidx, textoff), // position
			make_pair<TIndexOffU,TIndexOffU>(0, 0),          // (bogus) mate position
			true,                     // (bogus) mate orientation
			0,                        // (bogus) mate length
			make_pair(top, bot),      // arrows
			tlen,                     // textlen
			qlen,                     // qlen
			stratum,                  // alignment stratum
			cost,                     // cost, including stratum & quality penalty
			bot-top-1,                // # other hits
			patid,                    // pattern id
			seed,                     // pseudo-random seed
			0);                       // mate (0 = unpaired)
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1b8, %rsp            # imm = 0x1B8
movq %r9, %rbx
movq %r8, %r14
movq %rcx, %r15
movq %rdx, %r12
movq %rsi, %r13
movq %rdi, %rbp
cmpb $0x1, 0xc(%rdi)
jne 0x36e22
leaq 0x30(%rsp), %rdi
callq 0x9340
leaq 0x40(%rsp), %rdi
leaq 0x14327(%rip), %rsi     # 0x4b10c
callq 0x94e0
movq %rax, %rdi
callq 0x9210
leaq 0x48(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x97f0
leaq 0x10(%rsp), %rsi
movq %rbp, %rdi
callq 0x15e38
leaq 0x10(%rsp), %rdi
callq 0x9a68
leaq 0x30(%rsp), %rdi
callq 0x9390
movq %r14, 0x8(%rsp)
movl 0x210(%rsp), %esi
movl 0x1f8(%rsp), %edx
leaq 0x30(%rsp), %r14
leaq 0x10(%rsp), %r8
leaq 0x4(%rsp), %r9
movq %rbp, %rdi
movq %r14, %rcx
callq 0xb012
movl (%r14), %ecx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
cmpq %rax, %rcx
je 0x36f07
movq 0x238(%rsp), %rdi
movzwl 0x220(%rsp), %edx
movl 0x208(%rsp), %esi
movl 0x200(%rsp), %r10d
movzbl 0x10(%rbp), %r8d
movl 0x10(%rsp), %eax
shlq $0x20, %rax
orq %rcx, %rax
movl %r10d, %r11d
notl %r10d
addl %esi, %r10d
shlq $0x20, %rsi
orq %rsi, %r11
movl 0x4(%rsp), %ebp
subq $0x8, %rsp
movzwl %dx, %r14d
movq %r13, %rsi
movq %r12, %rdx
movq %r15, %rcx
movq 0x10(%rsp), %r9
pushq $0x0
movl 0x240(%rsp), %r15d
pushq %r15
movl 0x240(%rsp), %r15d
pushq %r15
pushq %r10
pushq %r14
movl 0x248(%rsp), %r10d
pushq %r10
movl 0x248(%rsp), %r10d
pushq %r10
pushq %rbp
pushq %r11
pushq $0x0
pushq $0x1
pushq $0x0
pushq %rax
pushq 0x260(%rsp)
pushq %rbx
callq 0x287a4
addq $0x80, %rsp
jmp 0x36f09
xorl %eax, %eax
addq $0x1b8, %rsp            # imm = 0x1B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x9a68
jmp 0x36f2f
jmp 0x36f2c
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x9390
movq %rbx, %rdi
callq 0x9950
nop