// File: /workspace/github_cpp_makefile_star2_O2/auton1[P]viterbi/vcf_entry.cpp
// Function: vcf_entry::print(std::ostream&, std::set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, bool)
void vcf_entry::print(ostream &out, const set<string> &INFO_to_keep, bool keep_all_INFO)
{
	if (fully_parsed == false)
		parse_full_entry();

	out << get_CHROM() << '\t' << POS << '\t' << get_ID() << '\t' << REF << '\t' << get_ALT();

	out << '\t' << header::double2str(QUAL);
	out << '\t' << get_FILTER();

	if (keep_all_INFO == false)
		out << '\t' << get_INFO(INFO_to_keep);
	else
		out << '\t' << INFO_str;

	pair<int, int> genotype;
	string GFILTER_tmp;
	if (FORMAT.size() > 0)
	{
		char PHASE;
		out << '\t' << get_FORMAT();

		for (unsigned int ui=0; ui<N_indv; ui++)
		{
			if (include_indv[ui] == false)
				continue;
			out << '\t';
			for (int count=0; count<(int)FORMAT.size(); count++)
			{
				if (count == GT_idx) // (FORMAT[count] == "GT")
				{
					if (count != 0)	out << ':';
					if (include_genotype[ui] == true)
					{
						get_indv_GENOTYPE_ids(ui, genotype);
						PHASE = get_indv_PHASE(ui);
						if ((genotype.first != -1) && (genotype.second != -1))
							out << header::int2str(genotype.first) << PHASE << header::int2str(genotype.second);
						else if ((PHASE == '|') && (genotype.second == -1))
							out << header::int2str(genotype.first);	// Handle haploid case
						else
							out << header::int2str(genotype.first) << PHASE << header::int2str(genotype.second);
					}
					else
						out << "./.";
				}
				else if (count == GQ_idx) //(FORMAT[count] == "GQ")
				{
					if (count != 0)	out << ':';
					out << header::double2str(get_indv_GQUALITY(ui));
				}
				else if (count == DP_idx) // (FORMAT[count] == "DP")
				{
					if (count != 0)	out << ':';
					out << header::int2str(get_indv_DEPTH(ui));
				}
				else if (count == FT_idx) // (FORMAT[count] == "FT")
				{
					if (count != 0)	out << ':';
					get_indv_GFILTER(ui, GFILTER_tmp);
					out << GFILTER_tmp;
				}
				else
				{	// Unknown FORMAT so just replicate original output
					if (count != 0)	out << ':';
					read_indv_generic_entry(ui, FORMAT[count], GFILTER_tmp);
					out << GFILTER_tmp;
				}
			}
		}
	}
	out << '\n';
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movl %ecx, %ebp
movq %rdx, %r15
movq %rsi, %rbx
movq %rdi, %r14
cmpb $0x0, 0x3d9(%rdi)
jne 0x18259
movq (%r14), %rax
pushq $0x1
popq %rsi
movq %r14, %rdi
callq *0x18(%rax)
leaq 0x38(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0x1bc58
movq %rbx, %rdi
movq %r12, %rsi
callq 0x5400
pushq $0x9
popq %rsi
movq %rax, %rdi
callq 0x5530
movl 0x400(%r14), %esi
movq %rax, %rdi
callq 0x57e0
pushq $0x9
popq %rsi
movq %rax, %rdi
callq 0x5530
movq %rax, %r12
leaq 0x18(%rsp), %rdi
movq %r14, %rsi
callq 0x1bc88
leaq 0x18(%rsp), %rsi
movq %r12, %rdi
callq 0x5400
pushq $0x9
popq %rsi
movq %rax, %rdi
callq 0x5530
leaq 0x428(%r14), %rsi
movq %rax, %rdi
callq 0x5400
pushq $0x9
popq %rsi
movq %rax, %rdi
callq 0x5530
movq %rax, %r12
leaq 0x68(%rsp), %rdi
movq %r14, %rsi
callq 0x1bd18
leaq 0x68(%rsp), %rsi
movq %r12, %rdi
callq 0x5400
leaq 0x68(%rsp), %rdi
callq 0x5908
leaq 0x18(%rsp), %rdi
callq 0x5908
leaq 0x38(%rsp), %rdi
callq 0x5908
pushq $0x9
popq %rsi
movq %rbx, %rdi
callq 0x5530
movq %rax, %r12
movsd 0x460(%r14), %xmm0
leaq 0x38(%rsp), %r13
movsd 0x15c46(%rip), %xmm1    # 0x2df80
movq %r13, %rdi
callq 0x12df4
movq %r12, %rdi
movq %r13, %rsi
callq 0x5400
leaq 0x38(%rsp), %rdi
callq 0x5908
pushq $0x9
popq %rsi
movq %rbx, %rdi
callq 0x5530
movq %rax, %r12
leaq 0x38(%rsp), %r13
movq %r13, %rdi
movq %r14, %rsi
callq 0x1c1f8
movq %r12, %rdi
movq %r13, %rsi
callq 0x5400
leaq 0x38(%rsp), %rdi
callq 0x5908
pushq $0x9
popq %rsi
movq %rbx, %rdi
callq 0x5530
movq %rax, %r12
testb %bpl, %bpl
movq %rbx, 0x8(%rsp)
je 0x183b3
leaq 0x6f8(%r14), %rsi
movq %r12, %rdi
callq 0x5400
jmp 0x183e2
leaq 0x38(%rsp), %r13
movq %r13, %rdi
movq %r14, %rsi
movq %r15, %rdx
xorl %ecx, %ecx
callq 0x1c340
movq %r12, %rdi
movq %r13, %rsi
callq 0x5400
leaq 0x38(%rsp), %rdi
callq 0x5908
movq 0x8(%rsp), %rbx
andq $0x0, 0x10(%rsp)
leaq 0x48(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0x4a0(%r14), %rax
cmpq 0x498(%r14), %rax
je 0x18744
pushq $0x9
popq %rsi
movq %rbx, %rdi
callq 0x5530
movq %rax, %r15
leaq 0x18(%rsp), %rdi
movq %r14, %rsi
callq 0x1c876
leaq 0x18(%rsp), %rsi
movq %r15, %rdi
callq 0x5400
leaq 0x18(%rsp), %rdi
callq 0x5908
leaq 0x1f0(%r14), %rax
movq %rax, 0x58(%rsp)
leaq 0x218(%r14), %rax
movq %rax, 0x60(%rsp)
xorl %ebp, %ebp
movl 0x8(%r14), %eax
cmpq %rax, %rbp
jae 0x18744
movq 0x58(%rsp), %rdi
movq %rbp, %rsi
callq 0x9cc0
testq %rdx, (%rax)
je 0x18737
movq 0x8(%rsp), %rdi
pushq $0x9
popq %rsi
callq 0x5530
xorl %r13d, %r13d
xorl %r15d, %r15d
movq 0x498(%r14), %rdx
movq 0x4a0(%r14), %rax
subq %rdx, %rax
shrq $0x5, %rax
cltq
cmpq %rax, %r15
jge 0x18737
movl 0x630(%r14), %eax
cmpq %rax, %r15
jne 0x18575
testq %r13, %r13
je 0x184d1
movq 0x8(%rsp), %rdi
pushq $0x3a
popq %rsi
callq 0x5530
movq 0x60(%rsp), %rdi
movq %rbp, %rsi
callq 0x9cc0
testq %rdx, (%rax)
je 0x18614
movq %r14, %rdi
movl %ebp, %esi
leaq 0x10(%rsp), %rdx
callq 0x1cb02
movq %r14, %rdi
movl %ebp, %esi
callq 0x1cb56
movl 0x10(%rsp), %esi
movl 0x14(%rsp), %ecx
cmpl $-0x1, %esi
setne %dl
cmpl $-0x1, %ecx
setne %dil
andb %dl, %dil
movsbl %al, %r12d
cmpb $0x1, %dil
jne 0x1862a
leaq 0x18(%rsp), %rbx
movq %rbx, %rdi
pushq $-0x1
popq %rdx
callq 0x12c9c
movq 0x8(%rsp), %rdi
movq %rbx, %rsi
callq 0x5400
movq %rax, %rdi
movl %r12d, %esi
callq 0x5530
movq %rax, %r12
movl 0x14(%rsp), %esi
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
pushq $-0x1
popq %rdx
callq 0x12c9c
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5400
jmp 0x186dc
movl 0x634(%r14), %eax
cmpq %rax, %r15
jne 0x185c1
testq %r13, %r13
je 0x18593
movq 0x8(%rsp), %rdi
pushq $0x3a
popq %rsi
callq 0x5530
movq %r14, %rdi
movl %ebp, %esi
callq 0x1cc02
leaq 0x18(%rsp), %r12
movq %r12, %rdi
movsd 0x159d3(%rip), %xmm1    # 0x2df80
callq 0x12df4
movq 0x8(%rsp), %rdi
movq %r12, %rsi
callq 0x5400
jmp 0x1860c
movl 0x638(%r14), %eax
cmpq %rax, %r15
jne 0x18661
testq %r13, %r13
je 0x185e3
movq 0x8(%rsp), %rdi
pushq $0x3a
popq %rsi
callq 0x5530
movq %r14, %rdi
movl %ebp, %esi
callq 0x1cba6
leaq 0x18(%rsp), %r12
movq %r12, %rdi
movl %eax, %esi
pushq $-0x1
popq %rdx
callq 0x12c9c
movq 0x8(%rsp), %rdi
movq %r12, %rsi
callq 0x5400
movq %r12, %rdi
jmp 0x186e9
movq 0x8(%rsp), %rdi
leaq 0x15b0b(%rip), %rsi     # 0x2e12b
callq 0x5480
jmp 0x186ee
cmpb $0x7c, %al
sete %al
cmpl $-0x1, %ecx
sete %cl
andb %al, %cl
cmpb $0x1, %cl
leaq 0x18(%rsp), %rbx
jne 0x18697
movq %rbx, %rdi
pushq $-0x1
popq %rdx
callq 0x12c9c
movq 0x8(%rsp), %rdi
movq %rbx, %rsi
callq 0x5400
movq %rbx, %rdi
jmp 0x186e9
movl 0x63c(%r14), %eax
cmpq %rax, %r15
jne 0x186fa
testq %r13, %r13
je 0x18683
movq 0x8(%rsp), %rdi
pushq $0x3a
popq %rsi
callq 0x5530
movq %r14, %rdi
movl %ebp, %esi
leaq 0x38(%rsp), %rdx
callq 0x1ccd8
jmp 0x18726
movq %rbx, %rdi
pushq $-0x1
popq %rdx
callq 0x12c9c
movq 0x8(%rsp), %rdi
movq %rbx, %rsi
callq 0x5400
movq %rax, %rdi
movl %r12d, %esi
callq 0x5530
movq %rax, %r12
movl 0x14(%rsp), %esi
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
pushq $-0x1
popq %rdx
callq 0x12c9c
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5400
movq %rbx, %rdi
callq 0x5908
leaq 0x18(%rsp), %rdi
callq 0x5908
incq %r15
addq $0x20, %r13
jmp 0x1848f
testq %r13, %r13
je 0x18713
movq 0x8(%rsp), %rdi
pushq $0x3a
popq %rsi
callq 0x5530
movq 0x498(%r14), %rdx
addq %r13, %rdx
movq (%r14), %rax
movq %r14, %rdi
movl %ebp, %esi
leaq 0x38(%rsp), %rcx
callq *0x38(%rax)
movq 0x8(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x5400
jmp 0x186ee
incq %rbp
movq 0x8(%rsp), %rbx
jmp 0x18459
pushq $0xa
popq %rsi
movq %rbx, %rdi
callq 0x5530
leaq 0x38(%rsp), %rdi
callq 0x5908
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x187bf
jmp 0x187ac
jmp 0x187bf
jmp 0x187bf
jmp 0x187bf
jmp 0x187bf
jmp 0x187bf
jmp 0x18793
jmp 0x187ac
jmp 0x187bf
jmp 0x187ac
jmp 0x187bf
jmp 0x187bf
jmp 0x187bf
jmp 0x18793
jmp 0x187ac
jmp 0x187ac
jmp 0x187bf
jmp 0x187bf
jmp 0x187ac
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x5908
jmp 0x187af
jmp 0x187ac
jmp 0x187bf
jmp 0x187ac
jmp 0x187ac
jmp 0x187bf
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x5908
jmp 0x187c2
jmp 0x187bf
jmp 0x187bf
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x5908
movq %rbx, %rdi
callq 0x5800