// File: bcthomas[P]shrinksam/src/sam.h
// Function: Shrinksam::Sam::Sam(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
inline Sam::Sam(const std::string &line) {
		std::vector<std::string> temp = split(line, '\t'); // from split.h
		qname = temp[0];
		flag = std::stoi(temp[1]);
		rname = temp[2];
		pos = std::stoi(temp[3]);
		mapq = std::stoi(temp[4]);
		cigar = temp[5];
		rnext = temp[6];
		pnext = std::stoi(temp[7]);
		tlen = std::stoi(temp[8]);
		seq = temp[9];
		qual = temp[10];
		// all the rest in the vector
		for(auto it = temp.begin() + 11; it < temp.end(); ++it)
			other.push_back(*it); 
	}

// Assembly:
subq $0xb8, %rsp
movq %rdi, 0xb0(%rsp)
movq %rsi, 0xa8(%rsp)
movq 0xb0(%rsp), %rdi
movq %rdi, 0x58(%rsp)
movq %rdi, %rax
movq %rax, 0x28(%rsp)
callq 0x3370
movq 0x58(%rsp), %rdi
movl $0xffffffff, 0x20(%rdi) # imm = 0xFFFFFFFF
addq $0x28, %rdi
movq %rdi, 0x30(%rsp)
callq 0x3370
movq 0x58(%rsp), %rdi
movl $0xffffffff, 0x48(%rdi) # imm = 0xFFFFFFFF
movl $0xffffffff, 0x4c(%rdi) # imm = 0xFFFFFFFF
addq $0x50, %rdi
movq %rdi, 0x38(%rsp)
callq 0x3370
movq 0x58(%rsp), %rdi
addq $0x70, %rdi
movq %rdi, 0x40(%rsp)
callq 0x3370
movq 0x58(%rsp), %rdi
movl $0xffffffff, 0x90(%rdi) # imm = 0xFFFFFFFF
movl $0xffffffff, 0x94(%rdi) # imm = 0xFFFFFFFF
addq $0x98, %rdi
movq %rdi, 0x48(%rsp)
callq 0x3370
movq 0x58(%rsp), %rdi
addq $0xb8, %rdi
movq %rdi, 0x50(%rsp)
callq 0x3370
movq 0x58(%rsp), %rdi
addq $0xd8, %rdi
movq %rdi, 0x60(%rsp)
callq 0x5a90
movq 0xa8(%rsp), %rsi
leaq 0x90(%rsp), %rdi
movl $0x9, %edx
callq 0x8af0
jmp 0x5251
xorl %eax, %eax
movl %eax, %esi
leaq 0x90(%rsp), %rdi
callq 0x5aa0
movq 0x28(%rsp), %rdi
movq %rax, %rsi
callq 0x3030
jmp 0x5271
leaq 0x90(%rsp), %rdi
movl $0x1, %esi
callq 0x5aa0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x5ac0
movl %eax, 0x24(%rsp)
jmp 0x529a
movq 0x28(%rsp), %rax
movl 0x24(%rsp), %ecx
movl %ecx, 0x20(%rax)
leaq 0x90(%rsp), %rdi
movl $0x2, %esi
callq 0x5aa0
movq 0x28(%rsp), %rdi
movq %rax, %rsi
addq $0x28, %rdi
callq 0x3030
jmp 0x52cb
leaq 0x90(%rsp), %rdi
movl $0x3, %esi
callq 0x5aa0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x5ac0
movl %eax, 0x20(%rsp)
jmp 0x52f4
movq 0x28(%rsp), %rax
movl 0x20(%rsp), %ecx
movl %ecx, 0x48(%rax)
leaq 0x90(%rsp), %rdi
movl $0x4, %esi
callq 0x5aa0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x5ac0
movl %eax, 0x1c(%rsp)
jmp 0x5329
movq 0x28(%rsp), %rax
movl 0x1c(%rsp), %ecx
movl %ecx, 0x4c(%rax)
leaq 0x90(%rsp), %rdi
movl $0x5, %esi
callq 0x5aa0
movq 0x28(%rsp), %rdi
movq %rax, %rsi
addq $0x50, %rdi
callq 0x3030
jmp 0x535a
leaq 0x90(%rsp), %rdi
movl $0x6, %esi
callq 0x5aa0
movq 0x28(%rsp), %rdi
movq %rax, %rsi
addq $0x70, %rdi
callq 0x3030
jmp 0x537f
leaq 0x90(%rsp), %rdi
movl $0x7, %esi
callq 0x5aa0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x5ac0
movl %eax, 0x18(%rsp)
jmp 0x53a8
movq 0x28(%rsp), %rax
movl 0x18(%rsp), %ecx
movl %ecx, 0x90(%rax)
leaq 0x90(%rsp), %rdi
movl $0x8, %esi
callq 0x5aa0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x5ac0
movl %eax, 0x14(%rsp)
jmp 0x53e0
movq 0x28(%rsp), %rax
movl 0x14(%rsp), %ecx
movl %ecx, 0x94(%rax)
leaq 0x90(%rsp), %rdi
movl $0x9, %esi
callq 0x5aa0
movq 0x28(%rsp), %rdi
movq %rax, %rsi
addq $0x98, %rdi
callq 0x3030
jmp 0x5417
leaq 0x90(%rsp), %rdi
movl $0xa, %esi
callq 0x5aa0
movq 0x28(%rsp), %rdi
movq %rax, %rsi
addq $0xb8, %rdi
callq 0x3030
jmp 0x543f
leaq 0x90(%rsp), %rdi
callq 0x4fd0
movq %rax, 0x70(%rsp)
leaq 0x70(%rsp), %rdi
movl $0xb, %esi
callq 0x5b10
movq %rax, 0x78(%rsp)
leaq 0x90(%rsp), %rdi
callq 0x5040
movq %rax, 0x68(%rsp)
leaq 0x78(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x5b50
testb $0x1, %al
jne 0x548c
jmp 0x54fc
movq 0x28(%rsp), %rax
addq $0xd8, %rax
movq %rax, 0x8(%rsp)
leaq 0x78(%rsp), %rdi
callq 0x5070
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0x5b90
jmp 0x54b5
jmp 0x54b7
leaq 0x78(%rsp), %rdi
callq 0x5080
jmp 0x5465
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0x5511
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
leaq 0x90(%rsp), %rdi
callq 0x5c00
jmp 0x5511
leaq 0x90(%rsp), %rdi
callq 0x5c00
addq $0xb8, %rsp
retq
movq 0x60(%rsp), %rdi
callq 0x5c00
movq 0x50(%rsp), %rdi
callq 0x3180
movq 0x48(%rsp), %rdi
callq 0x3180
movq 0x40(%rsp), %rdi
callq 0x3180
movq 0x38(%rsp), %rdi
callq 0x3180
movq 0x30(%rsp), %rdi
callq 0x3180
movq 0x58(%rsp), %rdi
callq 0x3180
movq 0x88(%rsp), %rdi
callq 0x3470
nopw %cs:(%rax,%rax)
nop