// File: auton1[P]viterbi/header.cpp
// Function: header::parse_meta(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, unsigned int&)
void header::parse_meta(const string &line, unsigned int &line_index)
{
	lines.push_back(line);
	if (line.find("##fileformat=")!=string::npos)
	{
		has_file_format = true;
		size_t found = line.find_first_of("=");
		string version = line.substr(found+1);
		if ((version != "VCFv4.0") && (version != "VCFv4.1") && (version != "VCFv4.2"))
			LOG.error("VCF version must be v4.0, v4.1 or v4.2:\nYou are using version " + version);
	}
	else if (line.find("##INFO=")!=string::npos)
	{	// Found an INFO descriptor
		line_index += add_INFO_descriptor(line.substr(8, line.size()-8), line_index);
	}
	else if (line.find("##FILTER=")!=string::npos)
	{	// Found a FILTER descriptor
		line_index += add_FILTER_descriptor(line.substr(10, line.size()-8), line_index);
	}
	else if (line.find("##FORMAT=")!=string::npos)
	{	// Found a genotype filter descriptor
		line_index += add_FORMAT_descriptor(line.substr(10, line.size()-8), line_index);
	}
	else if (line.find("##contig=")!=string::npos)
	{	// Found a contig descriptor
		add_CONTIG_descriptor(line.substr(10, line.size()-8), contig_index);
		contig_index++;
		has_contigs = true;
	}
	else
	{
		Field_description I;
		size_t found = line.find_first_of("=");
		I.Field = line.substr(0,found);
		I.Other = line.substr(found+1);
		parsed_lines.push_back(I);
	}
}

// Assembly:
subq $0x318, %rsp            # imm = 0x318
movq %rdi, 0x310(%rsp)
movq %rsi, 0x308(%rsp)
movq %rdx, 0x300(%rsp)
movq 0x310(%rsp), %rdi
movq %rdi, 0x88(%rsp)
addq $0x28, %rdi
movq 0x308(%rsp), %rsi
callq 0x2a190
movq 0x308(%rsp), %rdi
leaq 0x48d2e(%rip), %rsi     # 0x748bd
xorl %eax, %eax
movl %eax, %edx
callq 0x6b10
cmpq $-0x1, %rax
je 0x2bd17
movq 0x88(%rsp), %rax
movb $0x1, 0x7(%rax)
movq 0x308(%rsp), %rdi
leaq 0x4ae98(%rip), %rsi     # 0x76a55
xorl %eax, %eax
movl %eax, %edx
callq 0x6230
movq %rax, 0x2f8(%rsp)
movq 0x308(%rsp), %rsi
movq 0x2f8(%rsp), %rdx
incq %rdx
leaq 0x2d8(%rsp), %rdi
movq %rdi, 0x78(%rsp)
movq $-0x1, %rcx
callq 0x6580
movq 0x78(%rsp), %rdi
leaq 0x48cc5(%rip), %rsi     # 0x748cb
callq 0x30930
movb %al, 0x87(%rsp)
jmp 0x2bc14
movb 0x87(%rsp), %al
testb $0x1, %al
jne 0x2bc24
jmp 0x2bcf3
leaq 0x48ca8(%rip), %rsi     # 0x748d3
leaq 0x2d8(%rsp), %rdi
callq 0x30930
movb %al, 0x77(%rsp)
jmp 0x2bc3e
movb 0x77(%rsp), %al
testb $0x1, %al
jne 0x2bc4b
jmp 0x2bcf3
leaq 0x48c89(%rip), %rsi     # 0x748db
leaq 0x2d8(%rsp), %rdi
callq 0x30930
movb %al, 0x76(%rsp)
jmp 0x2bc65
movb 0x76(%rsp), %al
testb $0x1, %al
jne 0x2bc72
jmp 0x2bcf3
leaq 0x48c6a(%rip), %rsi     # 0x748e3
leaq 0x2a8(%rsp), %rdi
leaq 0x2d8(%rsp), %rdx
callq 0xe8d0
jmp 0x2bc90
leaq 0x67969(%rip), %rdi     # 0x93600
leaq 0x2a8(%rsp), %rsi
movl $0x1, %edx
callq 0x712f0
jmp 0x2bcab
leaq 0x2a8(%rsp), %rdi
callq 0x6b50
jmp 0x2bcf3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d0(%rsp)
movl %eax, 0x2cc(%rsp)
jmp 0x2bd05
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d0(%rsp)
movl %eax, 0x2cc(%rsp)
leaq 0x2a8(%rsp), %rdi
callq 0x6b50
jmp 0x2bd05
leaq 0x2d8(%rsp), %rdi
callq 0x6b50
jmp 0x2c12e
leaq 0x2d8(%rsp), %rdi
callq 0x6b50
jmp 0x2c136
movq 0x308(%rsp), %rdi
leaq 0x48bfc(%rip), %rsi     # 0x74922
xorl %eax, %eax
movl %eax, %edx
callq 0x6b10
cmpq $-0x1, %rax
je 0x2bdd8
movq 0x308(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x6350
movq 0x60(%rsp), %rsi
movq %rax, %rcx
addq $-0x8, %rcx
leaq 0x288(%rsp), %rdi
movq %rdi, 0x68(%rsp)
movl $0x8, %edx
callq 0x6580
movq 0x88(%rsp), %rdi
movq 0x68(%rsp), %rsi
movq 0x300(%rsp), %rax
movl (%rax), %edx
callq 0x2c150
movl %eax, 0x70(%rsp)
jmp 0x2bd90
movl 0x70(%rsp), %ecx
movq 0x300(%rsp), %rax
addl (%rax), %ecx
movl %ecx, (%rax)
leaq 0x288(%rsp), %rdi
callq 0x6b50
jmp 0x2c12c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d0(%rsp)
movl %eax, 0x2cc(%rsp)
leaq 0x288(%rsp), %rdi
callq 0x6b50
jmp 0x2c136
movq 0x308(%rsp), %rdi
leaq 0x48b43(%rip), %rsi     # 0x7492a
xorl %eax, %eax
movl %eax, %edx
callq 0x6b10
cmpq $-0x1, %rax
je 0x2be99
movq 0x308(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0x6350
movq 0x48(%rsp), %rsi
movq %rax, %rcx
addq $-0x8, %rcx
leaq 0x268(%rsp), %rdi
movq %rdi, 0x50(%rsp)
movl $0xa, %edx
callq 0x6580
movq 0x88(%rsp), %rdi
movq 0x50(%rsp), %rsi
movq 0x300(%rsp), %rax
movl (%rax), %edx
callq 0x2d200
movl %eax, 0x5c(%rsp)
jmp 0x2be51
movl 0x5c(%rsp), %ecx
movq 0x300(%rsp), %rax
addl (%rax), %ecx
movl %ecx, (%rax)
leaq 0x268(%rsp), %rdi
callq 0x6b50
jmp 0x2c12a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d0(%rsp)
movl %eax, 0x2cc(%rsp)
leaq 0x268(%rsp), %rdi
callq 0x6b50
jmp 0x2c136
movq 0x308(%rsp), %rdi
leaq 0x48a8c(%rip), %rsi     # 0x74934
xorl %eax, %eax
movl %eax, %edx
callq 0x6b10
cmpq $-0x1, %rax
je 0x2bf5a
movq 0x308(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x6350
movq 0x30(%rsp), %rsi
movq %rax, %rcx
addq $-0x8, %rcx
leaq 0x248(%rsp), %rdi
movq %rdi, 0x38(%rsp)
movl $0xa, %edx
callq 0x6580
movq 0x88(%rsp), %rdi
movq 0x38(%rsp), %rsi
movq 0x300(%rsp), %rax
movl (%rax), %edx
callq 0x2dce0
movl %eax, 0x44(%rsp)
jmp 0x2bf12
movl 0x44(%rsp), %ecx
movq 0x300(%rsp), %rax
addl (%rax), %ecx
movl %ecx, (%rax)
leaq 0x248(%rsp), %rdi
callq 0x6b50
jmp 0x2c128
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d0(%rsp)
movl %eax, 0x2cc(%rsp)
leaq 0x248(%rsp), %rdi
callq 0x6b50
jmp 0x2c136
movq 0x308(%rsp), %rdi
leaq 0x487c8(%rip), %rsi     # 0x74731
xorl %eax, %eax
movl %eax, %edx
callq 0x6b10
cmpq $-0x1, %rax
je 0x2c012
movq 0x308(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x6350
movq 0x20(%rsp), %rsi
movq %rax, %rcx
addq $-0x8, %rcx
leaq 0x228(%rsp), %rdi
movq %rdi, 0x28(%rsp)
movl $0xa, %edx
callq 0x6580
movq 0x88(%rsp), %rdi
movq 0x28(%rsp), %rsi
movl (%rdi), %edx
callq 0x2ecd0
jmp 0x2bfc7
leaq 0x228(%rsp), %rdi
callq 0x6b50
movq 0x88(%rsp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
movb $0x1, 0x4(%rax)
jmp 0x2c126
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d0(%rsp)
movl %eax, 0x2cc(%rsp)
leaq 0x228(%rsp), %rdi
callq 0x6b50
jmp 0x2c136
leaq 0xd8(%rsp), %rdi
callq 0x30960
movq 0x308(%rsp), %rdi
leaq 0x4aa27(%rip), %rsi     # 0x76a55
xorl %eax, %eax
movl %eax, %edx
movq %rdx, 0x18(%rsp)
callq 0x6230
movq 0x18(%rsp), %rdx
movq %rax, 0xd0(%rsp)
movq 0x308(%rsp), %rsi
movq 0xd0(%rsp), %rcx
leaq 0xb0(%rsp), %rdi
callq 0x6580
jmp 0x2c068
leaq 0xd8(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
movq %rsi, 0x10(%rsp)
callq 0x66c0
movq 0x10(%rsp), %rdi
callq 0x6b50
movq 0x308(%rsp), %rsi
movq 0xd0(%rsp), %rdx
incq %rdx
leaq 0x90(%rsp), %rdi
movq $-0x1, %rcx
callq 0x6580
jmp 0x2c0b5
leaq 0x208(%rsp), %rdi
leaq 0x90(%rsp), %rsi
movq %rsi, 0x8(%rsp)
callq 0x66c0
movq 0x8(%rsp), %rdi
callq 0x6b50
movq 0x88(%rsp), %rdi
addq $0x40, %rdi
leaq 0xd8(%rsp), %rsi
callq 0x30e70
jmp 0x2c0f4
leaq 0xd8(%rsp), %rdi
callq 0x22620
jmp 0x2c126
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d0(%rsp)
movl %eax, 0x2cc(%rsp)
leaq 0xd8(%rsp), %rdi
callq 0x22620
jmp 0x2c136
jmp 0x2c128
jmp 0x2c12a
jmp 0x2c12c
jmp 0x2c12e
addq $0x318, %rsp            # imm = 0x318
retq
movq 0x2d0(%rsp), %rdi
callq 0x69e0
nopw %cs:(%rax,%rax)