// File: /workspace/github_cpp_makefile_star2_O2/BenLangmead[P]bowtie/./range_source.h
// Function: Branch::print(SDnaStringExpandable<25, 2> const&, SStringExpandable<char, 25, 2, 0> const&, unsigned short, std::ostream&, bool, bool, bool, bool)
void print(const BTDnaString& qry,
	           const BTString& quals,
	           uint16_t minCost,
	           std::ostream& out,
	           bool halfAndHalf,
	           bool seeded,
	           bool fw,
	           bool ebwtFw)
	{
		size_t editidx = 0;
		size_t printed = 0;
		const size_t qlen = qry.length();
		if(exhausted_)      out << "E ";
		else if(curtailed_) out << "C ";
		else                out << "  ";
		if(ebwtFw) out << "<";
		else       out << ">";
		if(fw)     out << "F ";
		else       out << "R ";
		std::stringstream ss;
		ss << cost_;
		string s = ss.str();
		if(s.length() < 6) {
			for(size_t i = 0; i < 6 - s.length(); i++) {
				out << "0";
			}
		}
		out << s << " ";
		std::stringstream ss2;
		ss2 << minCost;
		s = ss2.str();
		if(s.length() < 6) {
			for(size_t i = 0; i < 6 - s.length(); i++) {
				out << "0";
			}
		}
		out << s;
		if(halfAndHalf) out << " h ";
		else if(seeded) out << " s ";
		else            out << "   ";
		std::stringstream ss3;
		const size_t numEdits = edits_.size();
		if(rdepth_ > 0) {
			for(size_t i = 0; i < rdepth_; i++) {
				if(editidx < numEdits && edits_.get(editidx).pos == i) {
					ss3 << " " << (char)tolower(edits_.get(editidx).chr);
					editidx++;
				} else {
					ss3 << " " << (char)qry.toChar(qlen - i - 1);
				}
				printed++;
			}
			ss3 << "|";
		} else {
			ss3 << " ";
		}
		for(size_t i = 0; i < len_; i++) {
			if(editidx < numEdits && edits_.get(editidx).pos == printed) {
				ss3 << (char)tolower(edits_.get(editidx).chr) << " ";
				editidx++;
			} else {
				ss3 << (char)qry.toChar(qlen - printed - 1) << " ";
			}
			printed++;
		}
		assert_eq(editidx, edits_.size());
		for(size_t i = printed; i < qlen; i++) {
			ss3 << "= ";
		}
		s = ss3.str();
		if(ebwtFw) {
			std::reverse(s.begin(), s.end());
		}
		out << s << endl;
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x508, %rsp            # imm = 0x508
movl %r9d, %ebp
movq %r8, %r14
movl %ecx, %r12d
movq %rdi, %r13
movb 0x548(%rsp), %bl
movq %rsi, 0x40(%rsp)
movq 0x20(%rsi), %r15
leaq 0x263a5(%rip), %rax     # 0x4a9ff
testb $0x1, 0x82(%rdi)
leaq 0x2679f(%rip), %rcx     # 0x4ae07
cmovneq %rax, %rcx
leaq 0x26389(%rip), %rsi     # 0x4a9fc
cmpb $0x0, 0x83(%rdi)
cmoveq %rcx, %rsi
movq %r8, %rdi
callq 0x94e0
leaq 0x26375(%rip), %rax     # 0x4aa02
leaq 0x26313(%rip), %rsi     # 0x4a9a7
cmpb $0x0, 0x550(%rsp)
cmovneq %rax, %rsi
movq %r14, %rdi
callq 0x94e0
leaq 0x26355(%rip), %rax     # 0x4aa04
leaq 0x26351(%rip), %rsi     # 0x4aa07
testb %bl, %bl
cmovneq %rax, %rsi
movq %r14, 0x8(%rsp)
movq %r14, %rdi
callq 0x94e0
leaq 0x380(%rsp), %rdi
callq 0x9340
leaq 0x390(%rsp), %rdi
movq %r13, (%rsp)
movzwl 0x10(%r13), %esi
callq 0x98b0
leaq 0x398(%rsp), %rsi
leaq 0x18(%rsp), %rdi
callq 0x97f0
movq 0x20(%rsp), %rax
pushq $0x6
popq %rbx
cmpq $0x5, %rax
ja 0x24738
xorl %r14d, %r14d
leaq 0x27e46(%rip), %r13     # 0x4c55c
movq %rbx, %rcx
subq %rax, %rcx
cmpq %rcx, %r14
jae 0x24738
movq 0x8(%rsp), %rdi
movq %r13, %rsi
callq 0x94e0
incq %r14
movq 0x20(%rsp), %rax
jmp 0x24716
leaq 0x18(%rsp), %rsi
movq 0x8(%rsp), %rdi
callq 0x9460
leaq 0x266ba(%rip), %rsi     # 0x4ae08
movq %rax, %rdi
callq 0x94e0
leaq 0x1f8(%rsp), %rdi
callq 0x9340
leaq 0x208(%rsp), %rdi
movzwl %r12w, %esi
callq 0x98b0
leaq 0x210(%rsp), %rsi
leaq 0x70(%rsp), %rdi
callq 0x97f0
leaq 0x18(%rsp), %r12
leaq 0x70(%rsp), %r13
movq %r12, %rdi
movq %r13, %rsi
callq 0x95e0
movq %r13, %rdi
callq 0x9a68
movq 0x8(%r12), %rax
cmpq $0x5, %rax
ja 0x247da
xorl %r14d, %r14d
leaq 0x27da4(%rip), %r12     # 0x4c55c
movq %rbx, %rcx
subq %rax, %rcx
cmpq %rcx, %r14
jae 0x247da
movq 0x8(%rsp), %rdi
movq %r12, %rsi
callq 0x94e0
incq %r14
movq 0x20(%rsp), %rax
jmp 0x247b8
leaq 0x18(%rsp), %rsi
movq 0x8(%rsp), %rdi
callq 0x9460
leaq 0x2621e(%rip), %rax     # 0x4aa0e
leaq 0x2660f(%rip), %rcx     # 0x4ae06
cmpb $0x0, 0x540(%rsp)
cmovneq %rax, %rcx
leaq 0x26200(%rip), %rsi     # 0x4aa0a
testb %bpl, %bpl
cmoveq %rcx, %rsi
movq 0x8(%rsp), %rdi
callq 0x94e0
leaq 0x70(%rsp), %rdi
callq 0x9340
movq (%rsp), %rcx
movq 0x50(%rcx), %rax
movq %rax, 0x48(%rsp)
movzwl 0xc(%rcx), %eax
testw %ax, %ax
movq %r15, 0x38(%rsp)
je 0x24972
addq $0x58, %rcx
movq %rcx, 0x10(%rsp)
leaq 0x80(%rsp), %rbx
leaq -0x1(%r15), %r12
xorl %r15d, %r15d
leaq 0x25f3f(%rip), %r14     # 0x4a7a2
xorl %r13d, %r13d
movzwl %ax, %eax
cmpq %rax, %r15
jae 0x24961
cmpq 0x48(%rsp), %r13
jae 0x248e4
cmpq $0x5, %r13
ja 0x2488a
movq 0x10(%rsp), %rax
leaq (%rax,%r13,4), %rax
jmp 0x248b2
cmpq $0x15, %r13
ja 0x248a2
movq (%rsp), %rax
movq 0x70(%rax), %rax
leaq (%rax,%r13,4), %rax
addq $-0x18, %rax
jmp 0x248b2
movq (%rsp), %rax
movq 0x78(%rax), %rax
leaq (%rax,%r13,4), %rax
addq $-0x58, %rax
movl (%rax), %eax
shrl $0x14, %eax
andl $0x3ff, %eax            # imm = 0x3FF
cmpq %rax, %r15
jne 0x248e4
movq %rbx, %rdi
leaq 0x2653d(%rip), %rsi     # 0x4ae08
callq 0x94e0
movq %rax, %rbp
cmpq $0x5, %r13
ja 0x24910
movq 0x10(%rsp), %rax
leaq (%rax,%r13,4), %rax
jmp 0x24938
movq %rbx, %rdi
leaq 0x2651a(%rip), %rsi     # 0x4ae08
callq 0x94e0
movq 0x40(%rsp), %rcx
movq 0x8(%rcx), %rcx
movsbq (%rcx,%r12), %rcx
movsbl (%rcx,%r14), %esi
movq %rax, %rdi
callq 0x95a0
jmp 0x2494e
cmpq $0x15, %r13
ja 0x24928
movq (%rsp), %rax
movq 0x70(%rax), %rax
leaq (%rax,%r13,4), %rax
addq $-0x18, %rax
jmp 0x24938
movq (%rsp), %rax
movq 0x78(%rax), %rax
leaq (%rax,%r13,4), %rax
addq $-0x58, %rax
movzbl (%rax), %edi
callq 0x9700
movsbl %al, %esi
movq %rbp, %rdi
callq 0x95a0
incq %r13
incq %r15
movq (%rsp), %rax
movzwl 0xc(%rax), %eax
decq %r12
jmp 0x24866
leaq 0x260aa(%rip), %rsi     # 0x4aa12
movq %rbx, %rdi
callq 0x94e0
jmp 0x2498c
leaq 0x80(%rsp), %rdi
leaq 0x26487(%rip), %rsi     # 0x4ae08
callq 0x94e0
xorl %r15d, %r15d
xorl %r13d, %r13d
movq (%rsp), %rax
addq $0x58, %rax
movq %rax, 0x10(%rsp)
leaq 0x80(%rsp), %r12
movq %r15, %r14
notq %r14
addq 0x38(%rsp), %r14
xorl %ebp, %ebp
leaq (%r15,%rbp), %rbx
movq (%rsp), %rax
movzwl 0xe(%rax), %eax
cmpq %rax, %rbp
jae 0x24aad
cmpq 0x48(%rsp), %r13
jae 0x24a23
cmpq $0x5, %r13
ja 0x249db
movq 0x10(%rsp), %rax
leaq (%rax,%r13,4), %rax
jmp 0x24a03
cmpq $0x15, %r13
ja 0x249f3
movq (%rsp), %rax
movq 0x70(%rax), %rax
leaq (%rax,%r13,4), %rax
addq $-0x18, %rax
jmp 0x24a03
movq (%rsp), %rax
movq 0x78(%rax), %rax
leaq (%rax,%r13,4), %rax
addq $-0x58, %rax
movl (%rax), %eax
shrl $0x14, %eax
andl $0x3ff, %eax            # imm = 0x3FF
cmpq %rax, %rbx
jne 0x24a23
cmpq $0x5, %r13
ja 0x24a55
movq 0x10(%rsp), %rax
leaq (%rax,%r13,4), %rax
jmp 0x24a7d
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rax
movsbq (%rax,%r14), %rax
leaq 0x25d6a(%rip), %rcx     # 0x4a7a2
movsbl (%rax,%rcx), %esi
movq %r12, %rdi
callq 0x95a0
movq %rax, %rdi
leaq 0x263ba(%rip), %rsi     # 0x4ae08
callq 0x94e0
jmp 0x24aa2
cmpq $0x15, %r13
ja 0x24a6d
movq (%rsp), %rax
movq 0x70(%rax), %rax
leaq (%rax,%r13,4), %rax
addq $-0x18, %rax
jmp 0x24a7d
movq (%rsp), %rax
movq 0x78(%rax), %rax
leaq (%rax,%r13,4), %rax
addq $-0x58, %rax
movzbl (%rax), %edi
callq 0x9700
movsbl %al, %esi
movq %r12, %rdi
callq 0x95a0
movq %rax, %rdi
leaq 0x2636e(%rip), %rsi     # 0x4ae08
callq 0x94e0
incq %r13
incq %rbp
decq %r14
jmp 0x249ae
leaq 0x23757(%rip), %r14     # 0x4820b
movq 0x38(%rsp), %r15
cmpq %r15, %rbx
jae 0x24ace
movq %r12, %rdi
movq %r14, %rsi
callq 0x94e0
incq %rbx
jmp 0x24ab9
leaq 0x88(%rsp), %rsi
leaq 0x50(%rsp), %rdi
callq 0x97f0
leaq 0x18(%rsp), %rdi
leaq 0x50(%rsp), %r14
movq %r14, %rsi
callq 0x95e0
movq %r14, %rdi
callq 0x9a68
cmpb $0x0, 0x550(%rsp)
je 0x24b16
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rsi
addq %rdi, %rsi
callq 0x2514f
leaq 0x18(%rsp), %rsi
movq 0x8(%rsp), %rdi
callq 0x9460
movq %rax, %rdi
callq 0x9210
leaq 0x70(%rsp), %rdi
callq 0x9390
leaq 0x1f8(%rsp), %rdi
callq 0x9390
leaq 0x18(%rsp), %rdi
callq 0x9a68
leaq 0x380(%rsp), %rdi
callq 0x9390
addq $0x508, %rsp            # imm = 0x508
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x24b90
jmp 0x24b82
jmp 0x24b82
jmp 0x24b87
jmp 0x24b77
movq %rax, %rbx
jmp 0x24bb4
jmp 0x24b87
jmp 0x24b82
jmp 0x24b90
movq %rax, %rbx
jmp 0x24b9d
movq %rax, %rbx
jmp 0x24baa
jmp 0x24b90
jmp 0x24b90
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x9390
leaq 0x1f8(%rsp), %rdi
callq 0x9390
leaq 0x18(%rsp), %rdi
callq 0x9a68
leaq 0x380(%rsp), %rdi
callq 0x9390
movq %rbx, %rdi
callq 0x9950
nop