// File: auton1[P]viterbi/bcf_entry.cpp
// Function: bcf_entry::read_indv_generic_entry(unsigned int, int const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
void bcf_entry::read_indv_generic_entry(unsigned int indv, const int &idx, string &out)
{
	if (fully_parsed == false)
		parse_full_entry(true);

	if (parsed_FORMAT == false)
		set_FORMAT();

	if(idx == GT_idx)
		parse_genotype_entry(indv, true);

	out = ".";
	ostringstream outstream;
	outstream.str("");

	string tmpstr;
	unsigned int l_pos, type, size;
	bool miss, format_miss;

	l_pos = FORMAT_positions[idx] + FORMAT_skip[idx]*indv;
	type = FORMAT_types[idx];
	size = FORMAT_sizes[idx];

	format_miss = true;
	if(type == 1)
	{
		int8_t tmp;
		if (idx == GT_idx)
		{
			pair<int, int> genotype;
			char phase;

			get_indv_GENOTYPE_ids(indv, genotype);
			phase = get_indv_PHASE(indv);
			if ((genotype.first == -2) && (genotype.second == -2))
				outstream << ".";
			else if ((genotype.first == -1) && (genotype.second == -2))
				outstream << ".";
			else if ((genotype.first > -1) && (genotype.second == -2))
				outstream << header::int2str(genotype.first);
			else if ((genotype.first > -1) && (genotype.second > -1))
				outstream << header::int2str(genotype.first) << phase << header::int2str(genotype.second);
			else
				outstream << header::int2str(genotype.first) << phase << header::int2str(genotype.second);

			tmpstr = outstream.str();
			out = tmpstr;
		}
		else
		{
			format_miss = true;
			for (unsigned int uj=0; uj<size; uj++)
			{
				if (check_end(l_pos, type, line))
					break;

				miss = check_missing(l_pos, type, line);
				if (uj != 0)
					outstream << ",";

				if (miss)
					outstream << ".";
				else
				{
					tmp = *reinterpret_cast<const int8_t*>(&line[l_pos]);
					outstream << int(tmp);
				}
				l_pos += sizeof(int8_t);
				format_miss = format_miss && miss;
			}

			tmpstr = outstream.str();
			if ( (tmpstr.length() > 0) and !format_miss)
				out = tmpstr;
		}
	}
	else if (type == 2)
	{
		int16_t tmp;
		format_miss = true;

		for (unsigned int uj=0; uj<size; uj++)
		{
			if (check_end(l_pos, type, line))
				break;

			miss = check_missing(l_pos, type, line);
			if (uj != 0)
				outstream << ",";

			if (miss)
				outstream << ".";
			else
			{
				tmp = *reinterpret_cast<const int16_t*>(&line[l_pos]);
				outstream << int(tmp);
			}
			l_pos += sizeof(int16_t);
			format_miss = format_miss && miss;
		}

		tmpstr = outstream.str();
		if ( (tmpstr.length() > 0) and !format_miss )
			out = tmpstr;
	}
	else if (type == 3)
	{
		int32_t tmp;
		format_miss = true;

		for (unsigned int uj=0; uj<size; uj++)
		{
			if (check_end(l_pos, type, line))
				break;

			miss = check_missing(l_pos, type, line);
			if (uj != 0)
				outstream << ",";

			if (miss)
				outstream << ".";
			else
			{
				tmp = *reinterpret_cast<const int32_t*>(&line[l_pos]);
				outstream << int(tmp);
			}
			l_pos += sizeof(int32_t);
			format_miss = format_miss && miss;
		}

		tmpstr = outstream.str();
		if ( (tmpstr.length() > 0) and !format_miss )
			out = tmpstr;
	}
	else if (type == 5)
	{
		float tmp;
		format_miss = true;

		for (unsigned int uj=0; uj<size; uj++)
		{
			if (check_end(l_pos, type, line))
				break;

			miss = check_missing(l_pos, type, line);
			if (uj != 0)
				outstream << ",";

			if (miss)
				outstream << ".";
			else
			{
				tmp = *reinterpret_cast<const float*>(&line[l_pos]);
				outstream << float(tmp);
			}
			l_pos += sizeof(float);
			format_miss = format_miss && miss;
		}

		tmpstr = outstream.str();
		if ( (tmpstr.length() > 0) and !format_miss )
			out = tmpstr;
	}
	else if (type == 7)
	{
		stringstream str_stream;
		string tmp_string;
		char tmp = '.';

		for (unsigned int uj=0; uj<size; uj++)
		{
			tmp = *reinterpret_cast<const char*>(&line[l_pos]);
			l_pos += sizeof(char);
			str_stream << tmp;
		}
		tmp_string = str_stream.str();
		tmp_string.erase( remove( tmp_string.begin(), tmp_string.end(), ' ' ), tmp_string.end() );

		if (tmp_string != "")
			out = tmp;
		else
			out = ".";
	}
}

// Assembly:
subq $0x608, %rsp            # imm = 0x608
movq %rdi, 0x600(%rsp)
movl %esi, 0x5fc(%rsp)
movq %rdx, 0x5f0(%rsp)
movq %rcx, 0x5e8(%rsp)
movq 0x600(%rsp), %rax
movq %rax, 0x80(%rsp)
movb 0x3d9(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x366f9
movq 0x80(%rsp), %rdi
movq (%rdi), %rax
movl $0x1, %esi
callq *0x18(%rax)
movq 0x80(%rsp), %rax
movb 0x3dd(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3671e
movq 0x80(%rsp), %rdi
callq 0x56ee0
movq 0x80(%rsp), %rcx
movq 0x5f0(%rsp), %rax
movl (%rax), %eax
cmpl 0x630(%rcx), %eax
jne 0x3675b
movq 0x80(%rsp), %rdi
movl 0x5fc(%rsp), %esi
movq (%rdi), %rax
movl $0x1, %edx
xorl %r9d, %r9d
movl %r9d, %ecx
movl %r9d, %r8d
callq *0x20(%rax)
movq 0x5e8(%rsp), %rdi
leaq 0x3e974(%rip), %rsi     # 0x750de
callq 0x67b0
leaq 0x470(%rsp), %rdi
callq 0x67a0
leaq 0x44f(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0x69f0
movq 0x78(%rsp), %rdx
leaq 0x3f58f(%rip), %rsi     # 0x75d29
leaq 0x450(%rsp), %rdi
callq 0x67c0
jmp 0x367a9
leaq 0x470(%rsp), %rdi
leaq 0x450(%rsp), %rsi
callq 0x61f0
jmp 0x367c0
leaq 0x450(%rsp), %rdi
callq 0x6b50
leaq 0x44f(%rsp), %rdi
callq 0x65f0
leaq 0x418(%rsp), %rdi
callq 0x67e0
movq 0x80(%rsp), %rdi
addq $0x640, %rdi            # imm = 0x640
movq 0x5f0(%rsp), %rax
movslq (%rax), %rsi
callq 0xe8b0
movq 0x80(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x74(%rsp)
addq $0x688, %rdi            # imm = 0x688
movq 0x5f0(%rsp), %rax
movslq (%rax), %rsi
callq 0xe8b0
movq 0x80(%rsp), %rdi
movq %rax, %rcx
movl 0x74(%rsp), %eax
movl (%rcx), %ecx
imull 0x5fc(%rsp), %ecx
addl %ecx, %eax
movl %eax, 0x414(%rsp)
addq $0x658, %rdi            # imm = 0x658
movq 0x5f0(%rsp), %rax
movslq (%rax), %rsi
callq 0xe8b0
movq 0x80(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x410(%rsp)
addq $0x670, %rdi            # imm = 0x670
movq 0x5f0(%rsp), %rax
movslq (%rax), %rsi
callq 0xe8b0
movl (%rax), %eax
movl %eax, 0x40c(%rsp)
movb $0x1, 0x40a(%rsp)
cmpl $0x1, 0x410(%rsp)
jne 0x36e85
movq 0x80(%rsp), %rcx
movq 0x5f0(%rsp), %rax
movl (%rax), %eax
cmpl 0x630(%rcx), %eax
jne 0x36ca3
leaq 0x400(%rsp), %rdi
callq 0x2a380
jmp 0x368d8
movq 0x80(%rsp), %rdi
movl 0x5fc(%rsp), %esi
leaq 0x400(%rsp), %rdx
callq 0x4bd10
jmp 0x368f6
movq 0x80(%rsp), %rdi
movl 0x5fc(%rsp), %esi
callq 0x4bda0
movb %al, 0x73(%rsp)
jmp 0x36910
movb 0x73(%rsp), %al
movb %al, 0x3ff(%rsp)
cmpl $-0x2, 0x400(%rsp)
jne 0x369b0
cmpl $-0x2, 0x404(%rsp)
jne 0x369b0
leaq 0x3e7a4(%rip), %rsi     # 0x750de
leaq 0x470(%rsp), %rdi
callq 0x6540
jmp 0x36949
jmp 0x36c4a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x440(%rsp)
movl %eax, 0x43c(%rsp)
jmp 0x36985
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x440(%rsp)
movl %eax, 0x43c(%rsp)
leaq 0x450(%rsp), %rdi
callq 0x6b50
leaq 0x44f(%rsp), %rdi
callq 0x65f0
jmp 0x376f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x440(%rsp)
movl %eax, 0x43c(%rsp)
jmp 0x376e3
cmpl $-0x1, 0x400(%rsp)
jne 0x369df
cmpl $-0x2, 0x404(%rsp)
jne 0x369df
leaq 0x3e713(%rip), %rsi     # 0x750de
leaq 0x470(%rsp), %rdi
callq 0x6540
jmp 0x369da
jmp 0x36c48
cmpl $-0x1, 0x400(%rsp)
jle 0x36a5d
cmpl $-0x2, 0x404(%rsp)
jne 0x36a5d
movl 0x400(%rsp), %esi
leaq 0x3d8(%rsp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x30500
jmp 0x36a0e
leaq 0x470(%rsp), %rdi
leaq 0x3d8(%rsp), %rsi
callq 0x64a0
jmp 0x36a25
leaq 0x3d8(%rsp), %rdi
callq 0x6b50
jmp 0x36c46
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x440(%rsp)
movl %eax, 0x43c(%rsp)
leaq 0x3d8(%rsp), %rdi
callq 0x6b50
jmp 0x376e3
cmpl $-0x1, 0x400(%rsp)
jle 0x36b60
cmpl $-0x1, 0x404(%rsp)
jle 0x36b60
movl 0x400(%rsp), %esi
leaq 0x3b8(%rsp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x30500
jmp 0x36a94
leaq 0x470(%rsp), %rdi
leaq 0x3b8(%rsp), %rsi
callq 0x64a0
movq %rax, 0x68(%rsp)
jmp 0x36ab0
movq 0x68(%rsp), %rdi
movsbl 0x3ff(%rsp), %esi
callq 0x6670
movq %rax, 0x60(%rsp)
jmp 0x36ac9
movl 0x404(%rsp), %esi
leaq 0x398(%rsp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x30500
jmp 0x36ae4
movq 0x60(%rsp), %rdi
leaq 0x398(%rsp), %rsi
callq 0x64a0
jmp 0x36af8
leaq 0x398(%rsp), %rdi
callq 0x6b50
leaq 0x3b8(%rsp), %rdi
callq 0x6b50
jmp 0x36c44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x440(%rsp)
movl %eax, 0x43c(%rsp)
jmp 0x36b4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x440(%rsp)
movl %eax, 0x43c(%rsp)
leaq 0x398(%rsp), %rdi
callq 0x6b50
leaq 0x3b8(%rsp), %rdi
callq 0x6b50
jmp 0x376e3
movl 0x400(%rsp), %esi
leaq 0x378(%rsp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x30500
jmp 0x36b7b
leaq 0x470(%rsp), %rdi
leaq 0x378(%rsp), %rsi
callq 0x64a0
movq %rax, 0x58(%rsp)
jmp 0x36b97
movq 0x58(%rsp), %rdi
movsbl 0x3ff(%rsp), %esi
callq 0x6670
movq %rax, 0x50(%rsp)
jmp 0x36bb0
movl 0x404(%rsp), %esi
leaq 0x358(%rsp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x30500
jmp 0x36bcb
movq 0x50(%rsp), %rdi
leaq 0x358(%rsp), %rsi
callq 0x64a0
jmp 0x36bdf
leaq 0x358(%rsp), %rdi
callq 0x6b50
leaq 0x378(%rsp), %rdi
callq 0x6b50
jmp 0x36c44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x440(%rsp)
movl %eax, 0x43c(%rsp)
jmp 0x36c32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x440(%rsp)
movl %eax, 0x43c(%rsp)
leaq 0x358(%rsp), %rdi
callq 0x6b50
leaq 0x378(%rsp), %rdi
callq 0x6b50
jmp 0x376e3
jmp 0x36c46
jmp 0x36c48
jmp 0x36c4a
leaq 0x338(%rsp), %rdi
leaq 0x470(%rsp), %rsi
callq 0x6570
jmp 0x36c61
leaq 0x418(%rsp), %rdi
movq %rdi, 0x48(%rsp)
leaq 0x338(%rsp), %rsi
movq %rsi, 0x40(%rsp)
callq 0x66c0
movq 0x40(%rsp), %rdi
callq 0x6b50
movq 0x48(%rsp), %rsi
movq 0x5e8(%rsp), %rdi
callq 0x6060
jmp 0x36c9e
jmp 0x36e80
movb $0x1, 0x40a(%rsp)
movl $0x0, 0x334(%rsp)
movl 0x334(%rsp), %eax
cmpl 0x40c(%rsp), %eax
jae 0x36e0f
movq 0x80(%rsp), %rdi
movl 0x414(%rsp), %esi
movl 0x410(%rsp), %edx
movq %rdi, %rcx
addq $0x3c0, %rcx            # imm = 0x3C0
callq 0x49400
movb %al, 0x3f(%rsp)
jmp 0x36cf5
movb 0x3f(%rsp), %al
testb $0x1, %al
jne 0x36cff
jmp 0x36d04
jmp 0x36e0f
movq 0x80(%rsp), %rdi
movl 0x414(%rsp), %esi
movl 0x410(%rsp), %edx
movq %rdi, %rcx
addq $0x3c0, %rcx            # imm = 0x3C0
callq 0x49240
movb %al, 0x3e(%rsp)
jmp 0x36d2f
movb 0x3e(%rsp), %al
andb $0x1, %al
movb %al, 0x40b(%rsp)
cmpl $0x0, 0x334(%rsp)
je 0x36d5e
leaq 0x3de8d(%rip), %rsi     # 0x74bda
leaq 0x470(%rsp), %rdi
callq 0x6540
jmp 0x36d5c
jmp 0x36d5e
testb $0x1, 0x40b(%rsp)
je 0x36d80
leaq 0x3e36f(%rip), %rsi     # 0x750de
leaq 0x470(%rsp), %rdi
callq 0x6540
jmp 0x36d7e
jmp 0x36dbf
movq 0x80(%rsp), %rdi
addq $0x3c0, %rdi            # imm = 0x3C0
movl 0x414(%rsp), %eax
movl %eax, %esi
callq 0x209b0
movb (%rax), %al
movb %al, 0x409(%rsp)
movsbl 0x409(%rsp), %esi
leaq 0x470(%rsp), %rdi
callq 0x69c0
jmp 0x36dbd
jmp 0x36dbf
movl 0x414(%rsp), %eax
addq $0x1, %rax
movl %eax, 0x414(%rsp)
xorl %eax, %eax
testb $0x1, 0x40a(%rsp)
movb %al, 0x3d(%rsp)
je 0x36dec
movb 0x40b(%rsp), %al
movb %al, 0x3d(%rsp)
movb 0x3d(%rsp), %al
andb $0x1, %al
movb %al, 0x40a(%rsp)
movl 0x334(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x334(%rsp)
jmp 0x36cb6
leaq 0x310(%rsp), %rdi
leaq 0x470(%rsp), %rsi
callq 0x6570
jmp 0x36e26
leaq 0x418(%rsp), %rdi
leaq 0x310(%rsp), %rsi
callq 0x66c0
leaq 0x310(%rsp), %rdi
callq 0x6b50
leaq 0x418(%rsp), %rdi
callq 0x6850
cmpq $0x0, %rax
jbe 0x36e7e
testb $0x1, 0x40a(%rsp)
jne 0x36e7e
movq 0x5e8(%rsp), %rdi
leaq 0x418(%rsp), %rsi
callq 0x6060
jmp 0x36e7c
jmp 0x36e7e
jmp 0x36e80
jmp 0x376c1
cmpl $0x2, 0x410(%rsp)
jne 0x37075
movb $0x1, 0x40a(%rsp)
movl $0x0, 0x308(%rsp)
movl 0x308(%rsp), %eax
cmpl 0x40c(%rsp), %eax
jae 0x37001
movq 0x80(%rsp), %rdi
movl 0x414(%rsp), %esi
movl 0x410(%rsp), %edx
movq %rdi, %rcx
addq $0x3c0, %rcx            # imm = 0x3C0
callq 0x49400
movb %al, 0x3c(%rsp)
jmp 0x36ee5
movb 0x3c(%rsp), %al
testb $0x1, %al
jne 0x36eef
jmp 0x36ef4
jmp 0x37001
movq 0x80(%rsp), %rdi
movl 0x414(%rsp), %esi
movl 0x410(%rsp), %edx
movq %rdi, %rcx
addq $0x3c0, %rcx            # imm = 0x3C0
callq 0x49240
movb %al, 0x3b(%rsp)
jmp 0x36f1f
movb 0x3b(%rsp), %al
andb $0x1, %al
movb %al, 0x40b(%rsp)
cmpl $0x0, 0x308(%rsp)
je 0x36f4e
leaq 0x3dc9d(%rip), %rsi     # 0x74bda
leaq 0x470(%rsp), %rdi
callq 0x6540
jmp 0x36f4c
jmp 0x36f4e
testb $0x1, 0x40b(%rsp)
je 0x36f70
leaq 0x3e17f(%rip), %rsi     # 0x750de
leaq 0x470(%rsp), %rdi
callq 0x6540
jmp 0x36f6e
jmp 0x36fb1
movq 0x80(%rsp), %rdi
addq $0x3c0, %rdi            # imm = 0x3C0
movl 0x414(%rsp), %eax
movl %eax, %esi
callq 0x209b0
movw (%rax), %ax
movw %ax, 0x30e(%rsp)
movswl 0x30e(%rsp), %esi
leaq 0x470(%rsp), %rdi
callq 0x69c0
jmp 0x36faf
jmp 0x36fb1
movl 0x414(%rsp), %eax
addq $0x2, %rax
movl %eax, 0x414(%rsp)
xorl %eax, %eax
testb $0x1, 0x40a(%rsp)
movb %al, 0x3a(%rsp)
je 0x36fde
movb 0x40b(%rsp), %al
movb %al, 0x3a(%rsp)
movb 0x3a(%rsp), %al
andb $0x1, %al
movb %al, 0x40a(%rsp)
movl 0x308(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x308(%rsp)
jmp 0x36ea6
leaq 0x2e8(%rsp), %rdi
leaq 0x470(%rsp), %rsi
callq 0x6570
jmp 0x37018
leaq 0x418(%rsp), %rdi
leaq 0x2e8(%rsp), %rsi
callq 0x66c0
leaq 0x2e8(%rsp), %rdi
callq 0x6b50
leaq 0x418(%rsp), %rdi
callq 0x6850
cmpq $0x0, %rax
jbe 0x37070
testb $0x1, 0x40a(%rsp)
jne 0x37070
movq 0x5e8(%rsp), %rdi
leaq 0x418(%rsp), %rsi
callq 0x6060
jmp 0x3706e
jmp 0x37070
jmp 0x376bf
cmpl $0x3, 0x410(%rsp)
jne 0x37262
movb $0x1, 0x40a(%rsp)
movl $0x0, 0x2e0(%rsp)
movl 0x2e0(%rsp), %eax
cmpl 0x40c(%rsp), %eax
jae 0x371ee
movq 0x80(%rsp), %rdi
movl 0x414(%rsp), %esi
movl 0x410(%rsp), %edx
movq %rdi, %rcx
addq $0x3c0, %rcx            # imm = 0x3C0
callq 0x49400
movb %al, 0x39(%rsp)
jmp 0x370d5
movb 0x39(%rsp), %al
testb $0x1, %al
jne 0x370df
jmp 0x370e4
jmp 0x371ee
movq 0x80(%rsp), %rdi
movl 0x414(%rsp), %esi
movl 0x410(%rsp), %edx
movq %rdi, %rcx
addq $0x3c0, %rcx            # imm = 0x3C0
callq 0x49240
movb %al, 0x38(%rsp)
jmp 0x3710f
movb 0x38(%rsp), %al
andb $0x1, %al
movb %al, 0x40b(%rsp)
cmpl $0x0, 0x2e0(%rsp)
je 0x3713e
leaq 0x3daad(%rip), %rsi     # 0x74bda
leaq 0x470(%rsp), %rdi
callq 0x6540
jmp 0x3713c
jmp 0x3713e
testb $0x1, 0x40b(%rsp)
je 0x37160
leaq 0x3df8f(%rip), %rsi     # 0x750de
leaq 0x470(%rsp), %rdi
callq 0x6540
jmp 0x3715e
jmp 0x3719e
movq 0x80(%rsp), %rdi
addq $0x3c0, %rdi            # imm = 0x3C0
movl 0x414(%rsp), %eax
movl %eax, %esi
callq 0x209b0
movl (%rax), %eax
movl %eax, 0x2e4(%rsp)
movl 0x2e4(%rsp), %esi
leaq 0x470(%rsp), %rdi
callq 0x69c0
jmp 0x3719c
jmp 0x3719e
movl 0x414(%rsp), %eax
addq $0x4, %rax
movl %eax, 0x414(%rsp)
xorl %eax, %eax
testb $0x1, 0x40a(%rsp)
movb %al, 0x37(%rsp)
je 0x371cb
movb 0x40b(%rsp), %al
movb %al, 0x37(%rsp)
movb 0x37(%rsp), %al
andb $0x1, %al
movb %al, 0x40a(%rsp)
movl 0x2e0(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2e0(%rsp)
jmp 0x37096
leaq 0x2c0(%rsp), %rdi
leaq 0x470(%rsp), %rsi
callq 0x6570
jmp 0x37205
leaq 0x418(%rsp), %rdi
leaq 0x2c0(%rsp), %rsi
callq 0x66c0
leaq 0x2c0(%rsp), %rdi
callq 0x6b50
leaq 0x418(%rsp), %rdi
callq 0x6850
cmpq $0x0, %rax
jbe 0x3725d
testb $0x1, 0x40a(%rsp)
jne 0x3725d
movq 0x5e8(%rsp), %rdi
leaq 0x418(%rsp), %rsi
callq 0x6060
jmp 0x3725b
jmp 0x3725d
jmp 0x376bd
cmpl $0x5, 0x410(%rsp)
jne 0x37455
movb $0x1, 0x40a(%rsp)
movl $0x0, 0x2b8(%rsp)
movl 0x2b8(%rsp), %eax
cmpl 0x40c(%rsp), %eax
jae 0x373e1
movq 0x80(%rsp), %rdi
movl 0x414(%rsp), %esi
movl 0x410(%rsp), %edx
movq %rdi, %rcx
addq $0x3c0, %rcx            # imm = 0x3C0
callq 0x49400
movb %al, 0x36(%rsp)
jmp 0x372c2
movb 0x36(%rsp), %al
testb $0x1, %al
jne 0x372cc
jmp 0x372d1
jmp 0x373e1
movq 0x80(%rsp), %rdi
movl 0x414(%rsp), %esi
movl 0x410(%rsp), %edx
movq %rdi, %rcx
addq $0x3c0, %rcx            # imm = 0x3C0
callq 0x49240
movb %al, 0x35(%rsp)
jmp 0x372fc
movb 0x35(%rsp), %al
andb $0x1, %al
movb %al, 0x40b(%rsp)
cmpl $0x0, 0x2b8(%rsp)
je 0x3732b
leaq 0x3d8c0(%rip), %rsi     # 0x74bda
leaq 0x470(%rsp), %rdi
callq 0x6540
jmp 0x37329
jmp 0x3732b
testb $0x1, 0x40b(%rsp)
je 0x3734d
leaq 0x3dda2(%rip), %rsi     # 0x750de
leaq 0x470(%rsp), %rdi
callq 0x6540
jmp 0x3734b
jmp 0x37391
movq 0x80(%rsp), %rdi
addq $0x3c0, %rdi            # imm = 0x3C0
movl 0x414(%rsp), %eax
movl %eax, %esi
callq 0x209b0
movss (%rax), %xmm0
movss %xmm0, 0x2bc(%rsp)
movss 0x2bc(%rsp), %xmm0
leaq 0x470(%rsp), %rdi
callq 0x63b0
jmp 0x3738f
jmp 0x37391
movl 0x414(%rsp), %eax
addq $0x4, %rax
movl %eax, 0x414(%rsp)
xorl %eax, %eax
testb $0x1, 0x40a(%rsp)
movb %al, 0x34(%rsp)
je 0x373be
movb 0x40b(%rsp), %al
movb %al, 0x34(%rsp)
movb 0x34(%rsp), %al
andb $0x1, %al
movb %al, 0x40a(%rsp)
movl 0x2b8(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2b8(%rsp)
jmp 0x37283
leaq 0x298(%rsp), %rdi
leaq 0x470(%rsp), %rsi
callq 0x6570
jmp 0x373f8
leaq 0x418(%rsp), %rdi
leaq 0x298(%rsp), %rsi
callq 0x66c0
leaq 0x298(%rsp), %rdi
callq 0x6b50
leaq 0x418(%rsp), %rdi
callq 0x6850
cmpq $0x0, %rax
jbe 0x37450
testb $0x1, 0x40a(%rsp)
jne 0x37450
movq 0x5e8(%rsp), %rdi
leaq 0x418(%rsp), %rsi
callq 0x6060
jmp 0x3744e
jmp 0x37450
jmp 0x376bb
cmpl $0x7, 0x410(%rsp)
jne 0x376b9
leaq 0x110(%rsp), %rdi
callq 0x6360
jmp 0x37472
leaq 0xf0(%rsp), %rdi
callq 0x67e0
movb $0x2e, 0xef(%rsp)
movl $0x0, 0xe8(%rsp)
movl 0xe8(%rsp), %eax
cmpl 0x40c(%rsp), %eax
jae 0x3753b
movq 0x80(%rsp), %rdi
addq $0x3c0, %rdi            # imm = 0x3C0
movl 0x414(%rsp), %eax
movl %eax, %esi
callq 0x209b0
movb (%rax), %al
movb %al, 0xef(%rsp)
movl 0x414(%rsp), %eax
incl %eax
movl %eax, 0x414(%rsp)
leaq 0x120(%rsp), %rdi
movsbl 0xef(%rsp), %esi
callq 0x6670
jmp 0x374f3
jmp 0x374f5
movl 0xe8(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xe8(%rsp)
jmp 0x37492
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x440(%rsp)
movl %eax, 0x43c(%rsp)
leaq 0xf0(%rsp), %rdi
callq 0x6b50
leaq 0x110(%rsp), %rdi
callq 0x63c0
jmp 0x376e3
leaq 0xc8(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x6530
jmp 0x37552
leaq 0xf0(%rsp), %rdi
movq %rdi, 0x20(%rsp)
leaq 0xc8(%rsp), %rsi
movq %rsi, 0x18(%rsp)
callq 0x66c0
movq 0x18(%rsp), %rdi
callq 0x6b50
movq 0x20(%rsp), %rdi
callq 0x6470
movq 0x20(%rsp), %rdi
movq %rax, 0xb0(%rsp)
callq 0x6270
movq %rax, 0xa8(%rsp)
movb $0x20, 0xa7(%rsp)
movq 0xb0(%rsp), %rdi
movq 0xa8(%rsp), %rsi
leaq 0xa7(%rsp), %rdx
callq 0x398d0
movq %rax, 0x28(%rsp)
jmp 0x375cb
movq 0x28(%rsp), %rax
movq %rax, 0xb8(%rsp)
leaq 0xc0(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x39930
leaq 0xf0(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x6270
movq %rax, 0x90(%rsp)
leaq 0x98(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x39930
movq 0x8(%rsp), %rdi
movq 0xc0(%rsp), %rsi
movq 0x98(%rsp), %rdx
callq 0x60e0
movq %rax, 0x10(%rsp)
jmp 0x3763d
movq 0x10(%rsp), %rax
movq %rax, 0x88(%rsp)
leaq 0x3e6d8(%rip), %rsi     # 0x75d29
leaq 0xf0(%rsp), %rdi
callq 0x30930
movb %al, 0x7(%rsp)
jmp 0x37664
movb 0x7(%rsp), %al
testb $0x1, %al
jne 0x3766e
jmp 0x37687
movsbl 0xef(%rsp), %esi
movq 0x5e8(%rsp), %rdi
callq 0x6920
jmp 0x37685
jmp 0x3769f
movq 0x5e8(%rsp), %rdi
leaq 0x3da48(%rip), %rsi     # 0x750de
callq 0x67b0
jmp 0x3769d
jmp 0x3769f
leaq 0xf0(%rsp), %rdi
callq 0x6b50
leaq 0x110(%rsp), %rdi
callq 0x63c0
jmp 0x376bb
jmp 0x376bd
jmp 0x376bf
jmp 0x376c1
leaq 0x418(%rsp), %rdi
callq 0x6b50
leaq 0x470(%rsp), %rdi
callq 0x6b30
addq $0x608, %rsp            # imm = 0x608
retq
leaq 0x418(%rsp), %rdi
callq 0x6b50
leaq 0x470(%rsp), %rdi
callq 0x6b30
movq 0x440(%rsp), %rdi
callq 0x69e0
nopw (%rax,%rax)