// File: BenLangmead[P]bowtie/hit_set.cpp
// Function: HitSet::reportUpTo(std::ostream&, int)
void HitSet::reportUpTo(ostream& os, int khits) {
	khits = min(khits, (int)size());
	BTDnaString seqrc;
	BTString qualr;
	for(int i = 0; i < khits; i++) {
		const HitSetEnt& h = ents[i];
		if(!h.fw && seqrc.empty()) {
			// Lazily initialize seqrc and qualr
			seqrc = seq;
			reverseComplementInPlace(seqrc);
			assert_eq(seqrc.length(), seq.length());
			qualr = qual;
			reverseInPlace(qualr);
			assert_eq(qualr.length(), qual.length());
		}
		os << name << '\t'
		   << (h.fw ? '+' : '-') << '\t'
		   << h.h.first << '\t'
		   << h.h.second << '\t'
		   << (h.fw ? seq : seqrc) << '\t'
		   << (h.fw ? qual : qualr) << '\t'
		   << h.oms << '\t';
		for(size_t i = 0; i < h.edits.size(); i++) {
			const Edit& e = h.edits[i];
			os << e.pos;
			if(e.type == EDIT_TYPE_SNP) os << "S";
			os << ":" << (char)e.chr << ">" << (e.qchr != 0 ? (char)e.qchr : (char)seq[e.pos]);
			if(i < h.edits.size()-1) os << ",";
		}
		os << endl;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x180, %rsp            # imm = 0x180
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x84bd0
movl %eax, -0x18(%rbp)
leaq -0x14(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x59f80
movl (%rax), %eax
movl %eax, -0x14(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x34f80
leaq -0x78(%rbp), %rdi
callq 0x2e460
jmp 0x8435f
movl $0x0, -0x88(%rbp)
movl -0x88(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0x84855
movq -0xa8(%rbp), %rdi
addq $0x98, %rdi
movslq -0x88(%rbp), %rsi
callq 0x84c00
movq %rax, -0xb0(%rbp)
jmp 0x8439b
movq -0xb0(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
cmpb $0x0, 0x8(%rax)
jne 0x8444c
leaq -0x48(%rbp), %rdi
callq 0x2e700
movb %al, -0xb1(%rbp)
jmp 0x843cb
movb -0xb1(%rbp), %al
testb $0x1, %al
jne 0x843d7
jmp 0x8444c
movq -0xa8(%rbp), %rsi
addq $0x30, %rsi
leaq -0x48(%rbp), %rdi
callq 0x35e50
jmp 0x843ed
leaq -0x48(%rbp), %rdi
callq 0x84890
jmp 0x843f8
movq -0xa8(%rbp), %rsi
addq $0x60, %rsi
leaq -0x78(%rbp), %rdi
callq 0x2e7e0
jmp 0x8440e
leaq -0x78(%rbp), %rdi
callq 0x849e0
jmp 0x84419
jmp 0x8444c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x84870
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x2e4a0
jmp 0x84870
movq -0xa8(%rbp), %rsi
movq -0x10(%rbp), %rdi
callq 0x2c0d0
movq %rax, -0xc0(%rbp)
jmp 0x84465
movq -0xc0(%rbp), %rdi
movl $0x9, %esi
callq 0xa720
movq %rax, -0xc8(%rbp)
jmp 0x8447f
movq -0xc8(%rbp), %rdi
movq -0x90(%rbp), %rax
movb 0x8(%rax), %al
testb %al, %al
sete %al
movzbl %al, %ecx
movl %ecx, %eax
leal 0x2b(%rax,%rax), %esi
callq 0xa720
movq %rax, -0xd0(%rbp)
jmp 0x844ac
movq -0xd0(%rbp), %rdi
movl $0x9, %esi
callq 0xa720
movq %rax, -0xd8(%rbp)
jmp 0x844c6
movq -0xd8(%rbp), %rdi
movq -0x90(%rbp), %rax
movl (%rax), %esi
callq 0xa810
movq %rax, -0xe0(%rbp)
jmp 0x844e4
movq -0xe0(%rbp), %rdi
movl $0x9, %esi
callq 0xa720
movq %rax, -0xe8(%rbp)
jmp 0x844fe
movq -0xe8(%rbp), %rdi
movq -0x90(%rbp), %rax
movl 0x4(%rax), %esi
callq 0xa810
movq %rax, -0xf0(%rbp)
jmp 0x8451d
movq -0xf0(%rbp), %rdi
movl $0x9, %esi
callq 0xa720
movq %rax, -0xf8(%rbp)
jmp 0x84537
movq -0x90(%rbp), %rax
cmpb $0x0, 0x8(%rax)
je 0x84558
movq -0xa8(%rbp), %rax
addq $0x30, %rax
movq %rax, -0x100(%rbp)
jmp 0x84565
leaq -0x48(%rbp), %rax
movq %rax, -0x100(%rbp)
jmp 0x84565
movq -0xf8(%rbp), %rdi
movq -0x100(%rbp), %rsi
callq 0x2c0d0
movq %rax, -0x108(%rbp)
jmp 0x84581
movq -0x108(%rbp), %rdi
movl $0x9, %esi
callq 0xa720
movq %rax, -0x110(%rbp)
jmp 0x8459b
movq -0x90(%rbp), %rax
cmpb $0x0, 0x8(%rax)
je 0x845bc
movq -0xa8(%rbp), %rax
addq $0x60, %rax
movq %rax, -0x118(%rbp)
jmp 0x845c9
leaq -0x78(%rbp), %rax
movq %rax, -0x118(%rbp)
jmp 0x845c9
movq -0x110(%rbp), %rdi
movq -0x118(%rbp), %rsi
callq 0x2c0d0
movq %rax, -0x120(%rbp)
jmp 0x845e5
movq -0x120(%rbp), %rdi
movl $0x9, %esi
callq 0xa720
movq %rax, -0x128(%rbp)
jmp 0x845ff
movq -0x128(%rbp), %rdi
movq -0x90(%rbp), %rax
movl 0xc(%rax), %esi
callq 0xa810
movq %rax, -0x130(%rbp)
jmp 0x8461e
movq -0x130(%rbp), %rdi
movl $0x9, %esi
callq 0xa720
jmp 0x84631
movq $0x0, -0x98(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x140(%rbp)
movq -0x90(%rbp), %rdi
addq $0x10, %rdi
callq 0x84c20
movq %rax, -0x138(%rbp)
jmp 0x84663
movq -0x140(%rbp), %rax
movq -0x138(%rbp), %rcx
cmpq %rcx, %rax
jae 0x8482d
movq -0x90(%rbp), %rdi
addq $0x10, %rdi
movq -0x98(%rbp), %rsi
callq 0x84c40
movq %rax, -0x148(%rbp)
jmp 0x8469a
movq -0x148(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x10(%rbp), %rdi
movq -0xa0(%rbp), %rax
movl (%rax), %esi
shrl $0x14, %esi
andl $0x3ff, %esi            # imm = 0x3FF
callq 0xa810
jmp 0x846c5
movq -0xa0(%rbp), %rax
movl (%rax), %eax
shrl $0x10, %eax
andl $0xf, %eax
cmpl $0x2, %eax
jne 0x846ed
movq -0x10(%rbp), %rdi
leaq 0x90d8(%rip), %rsi      # 0x8d7bc
callq 0xa5d0
jmp 0x846eb
jmp 0x846ed
movq -0x10(%rbp), %rdi
leaq 0x5b5d(%rip), %rsi      # 0x8a255
callq 0xa5d0
movq %rax, -0x150(%rbp)
jmp 0x84706
movq -0x150(%rbp), %rdi
movq -0xa0(%rbp), %rax
movsbl (%rax), %esi
callq 0xa720
movq %rax, -0x158(%rbp)
jmp 0x84725
movq -0x158(%rbp), %rdi
leaq 0x8570(%rip), %rsi      # 0x8cca3
callq 0xa5d0
movq %rax, -0x160(%rbp)
jmp 0x84741
movq -0xa0(%rbp), %rax
movl (%rax), %eax
shrl $0x8, %eax
andl $0xff, %eax
cmpl $0x0, %eax
je 0x84770
movq -0xa0(%rbp), %rax
movl (%rax), %eax
shrl $0x8, %eax
andl $0xff, %eax
movb %al, -0x161(%rbp)
jmp 0x847ab
movq -0xa8(%rbp), %rdi
addq $0x30, %rdi
movq -0xa0(%rbp), %rax
movl (%rax), %eax
shrl $0x14, %eax
andl $0x3ff, %eax            # imm = 0x3FF
movl %eax, %esi
callq 0x403a0
movq %rax, -0x170(%rbp)
jmp 0x8479c
movq -0x170(%rbp), %rax
movb (%rax), %al
movb %al, -0x161(%rbp)
movq -0x160(%rbp), %rdi
movb -0x161(%rbp), %al
movsbl %al, %esi
callq 0xa720
jmp 0x847c2
movq -0x98(%rbp), %rax
movq %rax, -0x180(%rbp)
movq -0x90(%rbp), %rdi
addq $0x10, %rdi
callq 0x84c20
movq %rax, -0x178(%rbp)
jmp 0x847e9
movq -0x180(%rbp), %rax
movq -0x178(%rbp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x84814
movq -0x10(%rbp), %rdi
leaq 0x8f30(%rip), %rsi      # 0x8d73b
callq 0xa5d0
jmp 0x84812
jmp 0x84814
jmp 0x84816
movq -0x98(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x98(%rbp)
jmp 0x8463c
movq -0x10(%rbp), %rdi
movq 0x23730(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x8483f
jmp 0x84841
movl -0x88(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x88(%rbp)
jmp 0x84369
leaq -0x78(%rbp), %rdi
callq 0x2e4a0
leaq -0x48(%rbp), %rdi
callq 0x352a0
addq $0x180, %rsp            # imm = 0x180
popq %rbp
retq
leaq -0x48(%rbp), %rdi
callq 0x352a0
movq -0x80(%rbp), %rdi
callq 0xab60
nopw %cs:(%rax,%rax)