// File: 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
movq %rsp, %rbp
subq $0x600, %rsp            # imm = 0x600
movl %r9d, %eax
movq %rdx, %r9
movq %rsi, %r10
movq %rdi, %r11
movb %al, %sil
movw %cx, %di
movb 0x20(%rbp), %al
movb 0x18(%rbp), %cl
movb 0x10(%rbp), %dl
movq %r11, -0x8(%rbp)
movq %r10, -0x10(%rbp)
movq %r9, -0x18(%rbp)
movw %di, -0x1a(%rbp)
movq %r8, -0x28(%rbp)
andb $0x1, %sil
movb %sil, -0x29(%rbp)
andb $0x1, %dl
movb %dl, -0x2a(%rbp)
andb $0x1, %cl
movb %cl, -0x2b(%rbp)
andb $0x1, %al
movb %al, -0x2c(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x598(%rbp)
movq $0x0, -0x38(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x10(%rbp), %rdi
callq 0x2ef90
movq %rax, %rcx
movq -0x598(%rbp), %rax
movq %rcx, -0x48(%rbp)
testb $0x1, 0x83(%rax)
je 0x43d60
movq -0x28(%rbp), %rdi
leaq 0x48f9f(%rip), %rsi     # 0x8ccf8
callq 0xa5d0
jmp 0x43d94
movq -0x598(%rbp), %rax
testb $0x1, 0x82(%rax)
je 0x43d82
movq -0x28(%rbp), %rdi
leaq 0x48f80(%rip), %rsi     # 0x8ccfb
callq 0xa5d0
jmp 0x43d92
movq -0x28(%rbp), %rdi
leaq 0x49376(%rip), %rsi     # 0x8d103
callq 0xa5d0
jmp 0x43d94
testb $0x1, -0x2c(%rbp)
je 0x43dac
movq -0x28(%rbp), %rdi
leaq 0x48f59(%rip), %rsi     # 0x8ccfe
callq 0xa5d0
jmp 0x43dbc
movq -0x28(%rbp), %rdi
leaq 0x48eec(%rip), %rsi     # 0x8cca3
callq 0xa5d0
testb $0x1, -0x2b(%rbp)
je 0x43dd4
movq -0x28(%rbp), %rdi
leaq 0x48f33(%rip), %rsi     # 0x8cd00
callq 0xa5d0
jmp 0x43de4
movq -0x28(%rbp), %rdi
leaq 0x48f24(%rip), %rsi     # 0x8cd03
callq 0xa5d0
leaq -0x1d0(%rbp), %rdi
callq 0xa3f0
movq -0x598(%rbp), %rax
leaq -0x1c0(%rbp), %rdi
movzwl 0x10(%rax), %esi
callq 0xaab0
jmp 0x43e09
leaq -0x200(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0xa5c0
jmp 0x43e1e
leaq -0x200(%rbp), %rdi
callq 0xa950
cmpq $0x6, %rax
jae 0x43ec8
movq $0x0, -0x208(%rbp)
movq -0x208(%rbp), %rax
movq %rax, -0x5a0(%rbp)
leaq -0x200(%rbp), %rdi
callq 0xa950
movq %rax, %rdx
movq -0x5a0(%rbp), %rax
movl $0x6, %ecx
subq %rdx, %rcx
cmpq %rcx, %rax
jae 0x43ec6
movq -0x28(%rbp), %rdi
leaq 0x4aa07(%rip), %rsi     # 0x8e882
callq 0xa5d0
jmp 0x43e82
jmp 0x43e84
movq -0x208(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x208(%rbp)
jmp 0x43e3f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d8(%rbp)
movl %eax, -0x1dc(%rbp)
jmp 0x4447a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d8(%rbp)
movl %eax, -0x1dc(%rbp)
jmp 0x4446e
jmp 0x43ec8
movq -0x28(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0xa540
movq %rax, -0x5a8(%rbp)
jmp 0x43ee1
movq -0x5a8(%rbp), %rdi
leaq 0x49215(%rip), %rsi     # 0x8d104
callq 0xa5d0
jmp 0x43ef6
leaq -0x390(%rbp), %rdi
callq 0xa3f0
jmp 0x43f04
leaq -0x380(%rbp), %rdi
movzwl -0x1a(%rbp), %esi
callq 0xaab0
jmp 0x43f16
leaq -0x3b0(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0xa5c0
jmp 0x43f2b
leaq -0x200(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0xa760
leaq -0x3b0(%rbp), %rdi
callq 0xacd8
leaq -0x200(%rbp), %rdi
callq 0xa950
cmpq $0x6, %rax
jae 0x43fd9
movq $0x0, -0x3b8(%rbp)
movq -0x3b8(%rbp), %rax
movq %rax, -0x5b0(%rbp)
leaq -0x200(%rbp), %rdi
callq 0xa950
movq %rax, %rdx
movq -0x5b0(%rbp), %rax
movl $0x6, %ecx
subq %rdx, %rcx
cmpq %rcx, %rax
jae 0x43fd7
movq -0x28(%rbp), %rdi
leaq 0x4a8df(%rip), %rsi     # 0x8e882
callq 0xa5d0
jmp 0x43faa
jmp 0x43fac
movq -0x3b8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x3b8(%rbp)
jmp 0x43f67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d8(%rbp)
movl %eax, -0x1dc(%rbp)
jmp 0x44462
jmp 0x43fd9
movq -0x28(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0xa540
jmp 0x43feb
testb $0x1, -0x29(%rbp)
je 0x44005
movq -0x28(%rbp), %rdi
leaq 0x48d0a(%rip), %rsi     # 0x8cd06
callq 0xa5d0
jmp 0x44003
jmp 0x44035
testb $0x1, -0x2a(%rbp)
je 0x4401f
movq -0x28(%rbp), %rdi
leaq 0x48cf4(%rip), %rsi     # 0x8cd0a
callq 0xa5d0
jmp 0x4401d
jmp 0x44033
movq -0x28(%rbp), %rdi
leaq 0x490d8(%rip), %rsi     # 0x8d102
callq 0xa5d0
jmp 0x44031
jmp 0x44033
jmp 0x44035
leaq -0x540(%rbp), %rdi
callq 0xa3f0
jmp 0x44043
movq -0x598(%rbp), %rdi
addq $0x50, %rdi
callq 0x41bd0
movq %rax, %rcx
movq -0x598(%rbp), %rax
movq %rcx, -0x548(%rbp)
movzwl 0xc(%rax), %eax
cmpl $0x0, %eax
jle 0x441dc
movq $0x0, -0x550(%rbp)
movq -0x598(%rbp), %rcx
movq -0x550(%rbp), %rax
movzwl 0xc(%rcx), %ecx
cmpq %rcx, %rax
jae 0x441c5
movq -0x38(%rbp), %rax
cmpq -0x548(%rbp), %rax
jae 0x4414b
movq -0x598(%rbp), %rdi
addq $0x50, %rdi
movq -0x38(%rbp), %rsi
callq 0x41d50
movl (%rax), %eax
shrl $0x14, %eax
andl $0x3ff, %eax            # imm = 0x3FF
movl %eax, %eax
cmpq -0x550(%rbp), %rax
jne 0x4414b
leaq -0x530(%rbp), %rdi
leaq 0x49025(%rip), %rsi     # 0x8d104
callq 0xa5d0
movq %rax, -0x5b8(%rbp)
jmp 0x440ed
movq -0x598(%rbp), %rdi
addq $0x50, %rdi
movq -0x38(%rbp), %rsi
callq 0x41d50
movzbl (%rax), %edi
callq 0xa8e0
movq -0x5b8(%rbp), %rdi
movsbl %al, %esi
callq 0xa720
jmp 0x4411a
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0x441a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d8(%rbp)
movl %eax, -0x1dc(%rbp)
leaq -0x540(%rbp), %rdi
callq 0xa440
jmp 0x44462
leaq -0x530(%rbp), %rdi
leaq 0x48fab(%rip), %rsi     # 0x8d104
callq 0xa5d0
movq %rax, -0x5c0(%rbp)
jmp 0x44167
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rax
movq -0x550(%rbp), %rsi
notq %rsi
addq %rax, %rsi
callq 0x45080
movb %al, -0x5c1(%rbp)
jmp 0x44189
movq -0x5c0(%rbp), %rdi
movb -0x5c1(%rbp), %al
movsbl %al, %esi
callq 0xa720
jmp 0x441a0
jmp 0x441a2
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
movq -0x550(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x550(%rbp)
jmp 0x4407c
leaq -0x530(%rbp), %rdi
leaq 0x48b3b(%rip), %rsi     # 0x8cd0e
callq 0xa5d0
jmp 0x441da
jmp 0x441f3
leaq -0x530(%rbp), %rdi
leaq 0x48f1a(%rip), %rsi     # 0x8d104
callq 0xa5d0
jmp 0x441f1
jmp 0x441f3
movq $0x0, -0x558(%rbp)
movq -0x598(%rbp), %rcx
movq -0x558(%rbp), %rax
movzwl 0xe(%rcx), %ecx
cmpq %rcx, %rax
jae 0x4433a
movq -0x38(%rbp), %rax
cmpq -0x548(%rbp), %rax
jae 0x442b5
movq -0x598(%rbp), %rdi
addq $0x50, %rdi
movq -0x38(%rbp), %rsi
callq 0x41d50
movl (%rax), %eax
shrl $0x14, %eax
andl $0x3ff, %eax            # imm = 0x3FF
movl %eax, %eax
cmpq -0x40(%rbp), %rax
jne 0x442b5
movq -0x598(%rbp), %rdi
leaq -0x530(%rbp), %rax
movq %rax, -0x5d8(%rbp)
addq $0x50, %rdi
movq -0x38(%rbp), %rsi
callq 0x41d50
movzbl (%rax), %edi
callq 0xa8e0
movq -0x5d8(%rbp), %rdi
movsbl %al, %esi
callq 0xa720
movq %rax, -0x5d0(%rbp)
jmp 0x44292
movq -0x5d0(%rbp), %rdi
leaq 0x48e64(%rip), %rsi     # 0x8d104
callq 0xa5d0
jmp 0x442a7
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0x44317
leaq -0x530(%rbp), %rax
movq %rax, -0x5e8(%rbp)
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rax
movq -0x40(%rbp), %rsi
notq %rsi
addq %rax, %rsi
callq 0x45080
movb %al, -0x5d9(%rbp)
jmp 0x442e2
movq -0x5e8(%rbp), %rdi
movb -0x5d9(%rbp), %al
movsbl %al, %esi
callq 0xa720
movq %rax, -0x5f0(%rbp)
jmp 0x44300
movq -0x5f0(%rbp), %rdi
leaq 0x48df6(%rip), %rsi     # 0x8d104
callq 0xa5d0
jmp 0x44315
jmp 0x44317
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
movq -0x558(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x558(%rbp)
jmp 0x441fe
movq -0x40(%rbp), %rax
movq %rax, -0x560(%rbp)
movq -0x560(%rbp), %rax
cmpq -0x48(%rbp), %rax
jae 0x4437d
leaq -0x530(%rbp), %rdi
leaq 0x461b3(%rip), %rsi     # 0x8a513
callq 0xa5d0
jmp 0x44367
jmp 0x44369
movq -0x560(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x560(%rbp)
jmp 0x44345
leaq -0x580(%rbp), %rdi
leaq -0x540(%rbp), %rsi
callq 0xa5c0
jmp 0x44392
leaq -0x200(%rbp), %rdi
leaq -0x580(%rbp), %rsi
callq 0xa760
leaq -0x580(%rbp), %rdi
callq 0xacd8
testb $0x1, -0x2c(%rbp)
je 0x443fb
leaq -0x200(%rbp), %rdi
movq %rdi, -0x5f8(%rbp)
callq 0xa520
movq -0x5f8(%rbp), %rdi
movq %rax, -0x588(%rbp)
callq 0xa300
movq %rax, -0x590(%rbp)
movq -0x588(%rbp), %rdi
movq -0x590(%rbp), %rsi
callq 0x450b0
jmp 0x443f9
jmp 0x443fb
movq -0x28(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0xa540
movq %rax, -0x600(%rbp)
jmp 0x44414
movq -0x600(%rbp), %rdi
movq 0x63b46(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x44429
leaq -0x540(%rbp), %rdi
callq 0xa440
leaq -0x390(%rbp), %rdi
callq 0xa440
leaq -0x200(%rbp), %rdi
callq 0xacd8
leaq -0x1d0(%rbp), %rdi
callq 0xa440
addq $0x600, %rsp            # imm = 0x600
popq %rbp
retq
leaq -0x390(%rbp), %rdi
callq 0xa440
leaq -0x200(%rbp), %rdi
callq 0xacd8
leaq -0x1d0(%rbp), %rdi
callq 0xa440
movq -0x1d8(%rbp), %rdi
callq 0xab60
nopw %cs:(%rax,%rax)
nopl (%rax)