// File: bcthomas[P]shrinksam/src/sam.h
// Function: Shrinksam::operator<<(std::ostream&, Shrinksam::Sam const&)
std::ostream& operator<< (std::ostream &o, const Sam &i) {
				o << i.qname   << "\t"
				  << i.flag    << "\t"
				  << i.rname   << "\t"
				  << i.pos     << "\t"
				  << i.mapq    << "\t"
				  << i.cigar   << "\t"
				  << i.rnext   << "\t"
				  << i.pnext   << "\t"
				  << i.tlen    << "\t"
				  << i.seq     << "\t"
				  << i.qual    << "\t";
				for( auto it = i.other.begin(); it != i.other.end(); ++it) {
					if (++it != i.other.end()) { // incr to see what next element is
						--it;                    // next element is not end(), so decr
						o << *it << "\t";
					} else {
						--it;                    // decr to go back to right pos
						o << *it;
					}
				}
				return o;
			}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0x3250
movq %rax, %rdi
leaq 0x3fd1(%rip), %rsi      # 0x9578
callq 0x3260
movq %rax, %rdi
movq 0x38(%rsp), %rax
movl 0x20(%rax), %esi
callq 0x3460
movq %rax, %rdi
leaq 0x3fb2(%rip), %rsi      # 0x9578
callq 0x3260
movq %rax, %rdi
movq 0x38(%rsp), %rsi
addq $0x28, %rsi
callq 0x3250
movq %rax, %rdi
leaq 0x3f92(%rip), %rsi      # 0x9578
callq 0x3260
movq %rax, %rdi
movq 0x38(%rsp), %rax
movl 0x48(%rax), %esi
callq 0x3460
movq %rax, %rdi
leaq 0x3f73(%rip), %rsi      # 0x9578
callq 0x3260
movq %rax, %rdi
movq 0x38(%rsp), %rax
movl 0x4c(%rax), %esi
callq 0x3460
movq %rax, %rdi
leaq 0x3f54(%rip), %rsi      # 0x9578
callq 0x3260
movq %rax, %rdi
movq 0x38(%rsp), %rsi
addq $0x50, %rsi
callq 0x3250
movq %rax, %rdi
leaq 0x3f34(%rip), %rsi      # 0x9578
callq 0x3260
movq %rax, %rdi
movq 0x38(%rsp), %rsi
addq $0x70, %rsi
callq 0x3250
movq %rax, %rdi
leaq 0x3f14(%rip), %rsi      # 0x9578
callq 0x3260
movq %rax, %rdi
movq 0x38(%rsp), %rax
movl 0x90(%rax), %esi
callq 0x3460
movq %rax, %rdi
leaq 0x3ef2(%rip), %rsi      # 0x9578
callq 0x3260
movq %rax, %rdi
movq 0x38(%rsp), %rax
movl 0x94(%rax), %esi
callq 0x3460
movq %rax, %rdi
leaq 0x3ed0(%rip), %rsi      # 0x9578
callq 0x3260
movq %rax, %rdi
movq 0x38(%rsp), %rsi
addq $0x98, %rsi
callq 0x3250
movq %rax, %rdi
leaq 0x3ead(%rip), %rsi      # 0x9578
callq 0x3260
movq %rax, %rdi
movq 0x38(%rsp), %rsi
addq $0xb8, %rsi
callq 0x3250
movq %rax, %rdi
leaq 0x3e8a(%rip), %rsi      # 0x9578
callq 0x3260
movq 0x38(%rsp), %rdi
addq $0xd8, %rdi
callq 0x69a0
movq %rax, 0x30(%rsp)
movq 0x38(%rsp), %rdi
addq $0xd8, %rdi
callq 0x6a10
movq %rax, 0x28(%rsp)
leaq 0x30(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x69d0
testb $0x1, %al
jne 0x5737
jmp 0x57e9
leaq 0x30(%rsp), %rdi
callq 0x6a40
movq %rax, 0x18(%rsp)
movq 0x38(%rsp), %rdi
addq $0xd8, %rdi
callq 0x6a10
movq 0x18(%rsp), %rdi
movq %rax, 0x20(%rsp)
leaq 0x20(%rsp), %rsi
callq 0x69d0
testb $0x1, %al
jne 0x5771
jmp 0x57ad
leaq 0x30(%rsp), %rdi
callq 0x6a60
movq 0x40(%rsp), %rax
movq %rax, 0x10(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x6a80
movq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x3250
movq %rax, %rdi
leaq 0x3dd2(%rip), %rsi      # 0x9578
callq 0x3260
jmp 0x57d8
leaq 0x30(%rsp), %rdi
callq 0x6a60
movq 0x40(%rsp), %rax
movq %rax, 0x8(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x6a80
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0x3250
jmp 0x57da
leaq 0x30(%rsp), %rdi
callq 0x6a40
jmp 0x5709
movq 0x40(%rsp), %rax
addq $0x48, %rsp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)