// File: auton1[P]viterbi/bcf_entry.cpp
// Function: bcf_entry::print_bcf(BGZF*, 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 bcf_entry::print_bcf(BGZF* out, const set<string> &INFO_to_keep, bool keep_all_INFO)
{
	if (fully_parsed == false)
		parse_full_entry(true);

	vector<char> out_vector, tmp_vector;
	vector<pair< string, string > > tmp_info;
	int index;

	out_vector.resize(INFO_pos);
	memcpy(&out_vector[0], &line[0], INFO_pos);

	if (keep_all_INFO)
	{
		unsigned int curr_size = out_vector.size();
		out_vector.resize(curr_size + (FORMAT_pos - INFO_pos) );
		memcpy(&out_vector[curr_size], &line[INFO_pos], (FORMAT_pos - INFO_pos));
	}
	else
	{
		int map_type, number;

		get_n_allele_info(tmp_vector);
		memcpy(&out_vector[6*sizeof(int32_t)], &tmp_vector[0], sizeof(char));

		tmp_info = get_INFO_vector(INFO_to_keep, keep_all_INFO);
		for(unsigned int ui=0; ui<tmp_info.size(); ui++)
		{
			tmp_vector.resize(0);
			index = entry_header.INFO_reverse_map[ tmp_info[ui].first ];
			make_typed_int(tmp_vector, index, true);
			out_vector.insert(out_vector.end(), tmp_vector.begin(), tmp_vector.end());

			tmp_vector.resize(0);
			map_type = entry_header.INFO_map[ index ].Type;
			number = entry_header.INFO_map[ index ].N_entries;

			if (map_type == Integer)
				make_typed_int_vector(tmp_vector, tmp_info[ui].second, number );
			else if (map_type == Float)
				make_typed_float_vector(tmp_vector, tmp_info[ui].second, number );
			else if ( (map_type == Character) or (map_type == String) )
				make_typed_string(tmp_vector, tmp_info[ui].second, true );
			else if (map_type == Flag)
				make_typed_int(tmp_vector, 1, true );
			else
				LOG.error("Invalid type in INFO definition", 0);

			out_vector.insert(out_vector.end(), tmp_vector.begin(), tmp_vector.end());
		}
	}

	uint32_t l_shared = (uint32_t)out_vector.size() - (uint32_t)(2*sizeof(uint32_t));
	memcpy(&out_vector[0], &l_shared, sizeof(uint32_t));

	unsigned int size, l_pos, type;
	for (unsigned int ui=0; ui<N_format; ui++)
	{
		type = FORMAT_types[ui];
		size = FORMAT_sizes[ui];

		tmp_vector.resize(0);
		make_typed_int(tmp_vector, FORMAT_keys[ui], true);
		out_vector.insert(out_vector.end(), tmp_vector.begin(), tmp_vector.end() );

		tmp_vector.resize(0);
		make_type_size(tmp_vector, type, size);
		out_vector.insert(out_vector.end(), tmp_vector.begin(), tmp_vector.end() );

		for (unsigned int uj=0; uj<N_indv; uj++)
		{
			if (include_indv[uj] == false)
				continue;

			tmp_vector.resize(FORMAT_skip[ui]);
			l_pos = FORMAT_positions[ui] + FORMAT_skip[ui]*uj;

			if ( ((int)uj == GT_idx) and (include_genotype[uj] == false) )
				for (unsigned int ploidy = 0; ploidy < FORMAT_skip[ui]; ploidy++)
					tmp_vector[ploidy] = (int8_t)0x81;
			else
				memcpy(&tmp_vector[0], &line[l_pos], FORMAT_skip[ui]);

			out_vector.insert(out_vector.end(), tmp_vector.begin(), tmp_vector.end() );
		}
	}
	uint32_t l_indv = (uint32_t)out_vector.size() - l_shared - (uint32_t)(2*sizeof(uint32_t));
	memcpy(&out_vector[sizeof(uint32_t)], &l_indv, sizeof(uint32_t));

	bgzf_write(out, &out_vector[0], out_vector.size());
}

// Assembly:
subq $0x328, %rsp            # imm = 0x328
movb %cl, %al
movq %rdi, 0x320(%rsp)
movq %rsi, 0x318(%rsp)
movq %rdx, 0x310(%rsp)
andb $0x1, %al
movb %al, 0x30f(%rsp)
movq 0x320(%rsp), %rax
movq %rax, 0x130(%rsp)
movb 0x3d9(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3847d
movq 0x130(%rsp), %rdi
movq (%rdi), %rax
movl $0x1, %esi
callq *0x18(%rax)
leaq 0x2f0(%rsp), %rdi
movq %rdi, 0x128(%rsp)
callq 0x2a300
leaq 0x2d8(%rsp), %rdi
callq 0x2a300
leaq 0x2c0(%rsp), %rdi
callq 0x39970
movq 0x130(%rsp), %rax
movq 0x128(%rsp), %rdi
movl 0x6e8(%rax), %eax
movl %eax, %esi
callq 0x20910
jmp 0x384cb
leaq 0x2f0(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x209b0
movq 0x130(%rsp), %rdi
movq %rax, 0x120(%rsp)
addq $0x3c0, %rdi            # imm = 0x3C0
xorl %eax, %eax
movl %eax, %esi
callq 0x209b0
movq 0x120(%rsp), %rdi
movq %rax, %rsi
movq 0x130(%rsp), %rax
movl 0x6e8(%rax), %eax
movl %eax, %edx
callq 0x6430
testb $0x1, 0x30f(%rsp)
je 0x385fc
leaq 0x2f0(%rsp), %rdi
movq %rdi, 0x118(%rsp)
callq 0x249e0
movq 0x130(%rsp), %rcx
movq 0x118(%rsp), %rdi
movl %eax, 0x2a8(%rsp)
movl 0x2a8(%rsp), %eax
movl 0x6e8(%rcx), %edx
movl 0x6f4(%rcx), %ecx
subl %edx, %ecx
addl %ecx, %eax
movl %eax, %esi
callq 0x20910
jmp 0x38576
movl 0x2a8(%rsp), %eax
movl %eax, %esi
leaq 0x2f0(%rsp), %rdi
callq 0x209b0
movq %rax, %rcx
movq 0x130(%rsp), %rax
movq %rcx, 0x110(%rsp)
movq %rax, %rdi
addq $0x3c0, %rdi            # imm = 0x3C0
movl 0x6e8(%rax), %eax
movl %eax, %esi
callq 0x209b0
movq 0x130(%rsp), %rcx
movq 0x110(%rsp), %rdi
movq %rax, %rsi
movl 0x6f4(%rcx), %eax
subl 0x6e8(%rcx), %eax
movl %eax, %eax
movl %eax, %edx
callq 0x6430
jmp 0x38b1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b0(%rsp)
movl %eax, 0x2ac(%rsp)
jmp 0x39163
movq 0x130(%rsp), %rdi
leaq 0x2d8(%rsp), %rsi
callq 0x4cd20
jmp 0x38613
leaq 0x2f0(%rsp), %rdi
movl $0x18, %esi
callq 0x209b0
movq %rax, 0x108(%rsp)
xorl %eax, %eax
movl %eax, %esi
leaq 0x2d8(%rsp), %rdi
callq 0x209b0
movq 0x130(%rsp), %rsi
movq %rax, %rcx
movq 0x108(%rsp), %rax
movb (%rcx), %cl
movb %cl, (%rax)
movq 0x310(%rsp), %rdx
movzbl 0x30f(%rsp), %ecx
andl $0x1, %ecx
leaq 0x288(%rsp), %rdi
callq 0x4b4f0
jmp 0x38677
leaq 0x2c0(%rsp), %rdi
leaq 0x288(%rsp), %rsi
callq 0x39980
leaq 0x288(%rsp), %rdi
callq 0x399c0
movl $0x0, 0x284(%rsp)
movl 0x284(%rsp), %eax
movq %rax, 0x100(%rsp)
leaq 0x2c0(%rsp), %rdi
callq 0x39a20
movq %rax, %rcx
movq 0x100(%rsp), %rax
cmpq %rcx, %rax
jae 0x38b18
xorl %eax, %eax
movl %eax, %esi
leaq 0x2d8(%rsp), %rdi
callq 0x20910
jmp 0x386e7
movq 0x130(%rsp), %rax
addq $0x190, %rax            # imm = 0x190
movq %rax, 0xf0(%rsp)
movl 0x284(%rsp), %eax
movl %eax, %esi
leaq 0x2c0(%rsp), %rdi
callq 0x39a40
movq 0xf0(%rsp), %rdi
movq %rax, %rsi
callq 0x30fe0
movq %rax, 0xf8(%rsp)
jmp 0x3872d
movq 0x130(%rsp), %rdi
movq 0xf8(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x2bc(%rsp)
leaq 0x2d8(%rsp), %rsi
leaq 0x2bc(%rsp), %rdx
movl $0x1, %ecx
callq 0x45d20
jmp 0x38762
leaq 0x2f0(%rsp), %rdi
movq %rdi, 0xe0(%rsp)
callq 0x27020
movq %rax, 0x270(%rsp)
leaq 0x278(%rsp), %rdi
leaq 0x270(%rsp), %rsi
callq 0x39b20
leaq 0x2d8(%rsp), %rdi
movq %rdi, 0xd8(%rsp)
callq 0x26ff0
movq 0xd8(%rsp), %rdi
movq %rax, 0x268(%rsp)
callq 0x27020
movq 0xe0(%rsp), %rdi
movq %rax, 0x260(%rsp)
movq 0x278(%rsp), %rsi
movq 0x268(%rsp), %rdx
movq 0x260(%rsp), %rcx
callq 0x39a60
movq %rax, 0xe8(%rsp)
jmp 0x387f5
movq 0xe8(%rsp), %rax
movq %rax, 0x258(%rsp)
xorl %eax, %eax
movl %eax, %esi
leaq 0x2d8(%rsp), %rdi
callq 0x20910
jmp 0x38818
movq 0x130(%rsp), %rdi
addq $0x70, %rdi
leaq 0x2bc(%rsp), %rsi
callq 0x30ef0
movq %rax, 0xd0(%rsp)
jmp 0x3883b
movq 0x130(%rsp), %rdi
movq 0xd0(%rsp), %rax
movl 0x88(%rax), %eax
movl %eax, 0x2a4(%rsp)
addq $0x70, %rdi
leaq 0x2bc(%rsp), %rsi
callq 0x30ef0
movq %rax, 0xc8(%rsp)
jmp 0x38873
movq 0xc8(%rsp), %rax
movl 0x44(%rax), %eax
movl %eax, 0x2a0(%rsp)
cmpl $0x0, 0x2a4(%rsp)
jne 0x388cf
movl 0x284(%rsp), %eax
movl %eax, %esi
leaq 0x2c0(%rsp), %rdi
callq 0x39a40
movq 0x130(%rsp), %rdi
movq %rax, %rdx
addq $0x20, %rdx
movl 0x2a0(%rsp), %ecx
leaq 0x2d8(%rsp), %rsi
callq 0x46a60
jmp 0x388ca
jmp 0x38a5f
cmpl $0x1, 0x2a4(%rsp)
jne 0x38919
movl 0x284(%rsp), %eax
movl %eax, %esi
leaq 0x2c0(%rsp), %rdi
callq 0x39a40
movq 0x130(%rsp), %rdi
movq %rax, %rdx
addq $0x20, %rdx
movl 0x2a0(%rsp), %ecx
leaq 0x2d8(%rsp), %rsi
callq 0x47ad0
jmp 0x38914
jmp 0x38a5d
cmpl $0x2, 0x2a4(%rsp)
je 0x3892d
cmpl $0x3, 0x2a4(%rsp)
jne 0x3896b
movl 0x284(%rsp), %eax
movl %eax, %esi
leaq 0x2c0(%rsp), %rdi
callq 0x39a40
movq 0x130(%rsp), %rdi
movq %rax, %rdx
addq $0x20, %rdx
leaq 0x2d8(%rsp), %rsi
movl $0x1, %ecx
callq 0x45960
jmp 0x38966
jmp 0x38a5b
cmpl $0x4, 0x2a4(%rsp)
jne 0x389a9
movq 0x130(%rsp), %rdi
movl $0x1, 0x254(%rsp)
leaq 0x2d8(%rsp), %rsi
leaq 0x254(%rsp), %rdx
movl $0x1, %ecx
callq 0x45d20
jmp 0x389a4
jmp 0x38a59
leaq 0x22f(%rsp), %rdi
movq %rdi, 0xc0(%rsp)
callq 0x69f0
movq 0xc0(%rsp), %rdx
leaq 0x3c65d(%rip), %rsi     # 0x7502a
leaq 0x230(%rsp), %rdi
callq 0x67c0
jmp 0x389dc
leaq 0x5ac1d(%rip), %rdi     # 0x93600
leaq 0x230(%rsp), %rsi
xorl %edx, %edx
callq 0x712f0
jmp 0x389f4
leaq 0x230(%rsp), %rdi
callq 0x6b50
leaq 0x22f(%rsp), %rdi
callq 0x65f0
jmp 0x38a59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b0(%rsp)
movl %eax, 0x2ac(%rsp)
jmp 0x38a47
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b0(%rsp)
movl %eax, 0x2ac(%rsp)
leaq 0x230(%rsp), %rdi
callq 0x6b50
leaq 0x22f(%rsp), %rdi
callq 0x65f0
jmp 0x39163
jmp 0x38a5b
jmp 0x38a5d
jmp 0x38a5f
leaq 0x2f0(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0x27020
movq %rax, 0x218(%rsp)
leaq 0x220(%rsp), %rdi
leaq 0x218(%rsp), %rsi
callq 0x39b20
leaq 0x2d8(%rsp), %rdi
movq %rdi, 0xa8(%rsp)
callq 0x26ff0
movq 0xa8(%rsp), %rdi
movq %rax, 0x210(%rsp)
callq 0x27020
movq 0xb0(%rsp), %rdi
movq %rax, 0x208(%rsp)
movq 0x220(%rsp), %rsi
movq 0x210(%rsp), %rdx
movq 0x208(%rsp), %rcx
callq 0x39a60
movq %rax, 0xb8(%rsp)
jmp 0x38af2
movq 0xb8(%rsp), %rax
movq %rax, 0x200(%rsp)
movl 0x284(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x284(%rsp)
jmp 0x386a4
jmp 0x38b1a
leaq 0x2f0(%rsp), %rdi
callq 0x249e0
subl $0x8, %eax
movl %eax, 0x1fc(%rsp)
leaq 0x2f0(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x209b0
movl 0x1fc(%rsp), %ecx
movl %ecx, (%rax)
movl $0x0, 0x1ec(%rsp)
movq 0x130(%rsp), %rcx
movl 0x1ec(%rsp), %eax
cmpl 0x6bc(%rcx), %eax
jae 0x390b9
movq 0x130(%rsp), %rdi
addq $0x658, %rdi            # imm = 0x658
movl 0x1ec(%rsp), %eax
movl %eax, %esi
callq 0xe8b0
movq 0x130(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x1f0(%rsp)
addq $0x670, %rdi            # imm = 0x670
movl 0x1ec(%rsp), %eax
movl %eax, %esi
callq 0xe8b0
movl (%rax), %eax
movl %eax, 0x1f8(%rsp)
xorl %eax, %eax
movl %eax, %esi
leaq 0x2d8(%rsp), %rdi
callq 0x20910
jmp 0x38bd0
movq 0x130(%rsp), %rdi
addq $0x6a0, %rdi            # imm = 0x6A0
movl 0x1ec(%rsp), %eax
movl %eax, %esi
callq 0xe8b0
movq 0x130(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x1e8(%rsp)
leaq 0x2d8(%rsp), %rsi
leaq 0x1e8(%rsp), %rdx
movl $0x1, %ecx
callq 0x45d20
jmp 0x38c1a
leaq 0x2f0(%rsp), %rdi
movq %rdi, 0x98(%rsp)
callq 0x27020
movq %rax, 0x1d8(%rsp)
leaq 0x1e0(%rsp), %rdi
leaq 0x1d8(%rsp), %rsi
callq 0x39b20
leaq 0x2d8(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0x26ff0
movq 0x90(%rsp), %rdi
movq %rax, 0x1d0(%rsp)
callq 0x27020
movq 0x98(%rsp), %rdi
movq %rax, 0x1c8(%rsp)
movq 0x1e0(%rsp), %rsi
movq 0x1d0(%rsp), %rdx
movq 0x1c8(%rsp), %rcx
callq 0x39a60
movq %rax, 0xa0(%rsp)
jmp 0x38cad
movq 0xa0(%rsp), %rax
movq %rax, 0x1c0(%rsp)
xorl %eax, %eax
movl %eax, %esi
leaq 0x2d8(%rsp), %rdi
callq 0x20910
jmp 0x38cd0
movq 0x130(%rsp), %rdi
leaq 0x2d8(%rsp), %rsi
leaq 0x1f0(%rsp), %rdx
leaq 0x1f8(%rsp), %rcx
callq 0x48500
jmp 0x38cf7
leaq 0x2f0(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0x27020
movq %rax, 0x1b0(%rsp)
leaq 0x1b8(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
callq 0x39b20
leaq 0x2d8(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0x26ff0
movq 0x78(%rsp), %rdi
movq %rax, 0x1a8(%rsp)
callq 0x27020
movq 0x80(%rsp), %rdi
movq %rax, 0x1a0(%rsp)
movq 0x1b8(%rsp), %rsi
movq 0x1a8(%rsp), %rdx
movq 0x1a0(%rsp), %rcx
callq 0x39a60
movq %rax, 0x88(%rsp)
jmp 0x38d84
movq 0x88(%rsp), %rax
movq %rax, 0x198(%rsp)
movl $0x0, 0x194(%rsp)
movq 0x130(%rsp), %rcx
movl 0x194(%rsp), %eax
cmpl 0x8(%rcx), %eax
jae 0x390a1
movq 0x130(%rsp), %rdi
addq $0x1f0, %rdi            # imm = 0x1F0
movl 0x194(%rsp), %eax
movl %eax, %esi
callq 0x102b0
movq %rdx, 0x68(%rsp)
movq %rax, 0x70(%rsp)
jmp 0x38de0
movq 0x68(%rsp), %rax
movq 0x70(%rsp), %rcx
movq %rcx, 0x180(%rsp)
movq %rax, 0x188(%rsp)
leaq 0x180(%rsp), %rdi
callq 0x10310
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x38e16
jmp 0x3908b
movq 0x130(%rsp), %rdi
addq $0x688, %rdi            # imm = 0x688
movl 0x1ec(%rsp), %eax
movl %eax, %esi
callq 0xe8b0
movl (%rax), %eax
movl %eax, %esi
leaq 0x2d8(%rsp), %rdi
callq 0x20910
jmp 0x38e46
movq 0x130(%rsp), %rdi
addq $0x640, %rdi            # imm = 0x640
movl 0x1ec(%rsp), %eax
movl %eax, %esi
callq 0xe8b0
movq 0x130(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x60(%rsp)
addq $0x688, %rdi            # imm = 0x688
movl 0x1ec(%rsp), %eax
movl %eax, %esi
callq 0xe8b0
movq 0x130(%rsp), %rdx
movq %rax, %rcx
movl 0x60(%rsp), %eax
movl (%rcx), %ecx
imull 0x194(%rsp), %ecx
addl %ecx, %eax
movl %eax, 0x1f4(%rsp)
movl 0x194(%rsp), %ecx
xorl %eax, %eax
cmpl 0x630(%rdx), %ecx
movb %al, 0x67(%rsp)
jne 0x38f1c
movq 0x130(%rsp), %rdi
addq $0x218, %rdi            # imm = 0x218
movl 0x194(%rsp), %eax
movl %eax, %esi
callq 0x102b0
movq %rdx, 0x50(%rsp)
movq %rax, 0x58(%rsp)
jmp 0x38ee6
movq 0x50(%rsp), %rax
movq 0x58(%rsp), %rcx
movq %rcx, 0x170(%rsp)
movq %rax, 0x178(%rsp)
leaq 0x170(%rsp), %rdi
callq 0x10310
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
sete %al
movb %al, 0x67(%rsp)
movb 0x67(%rsp), %al
testb $0x1, %al
jne 0x38f26
jmp 0x38f92
movl $0x0, 0x16c(%rsp)
movq 0x130(%rsp), %rdi
movl 0x16c(%rsp), %eax
movl %eax, 0x4c(%rsp)
addq $0x688, %rdi            # imm = 0x688
movl 0x1ec(%rsp), %eax
movl %eax, %esi
callq 0xe8b0
movq %rax, %rcx
movl 0x4c(%rsp), %eax
cmpl (%rcx), %eax
jae 0x38f90
movl 0x16c(%rsp), %eax
movl %eax, %esi
leaq 0x2d8(%rsp), %rdi
callq 0x209b0
movb $-0x7f, (%rax)
movl 0x16c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x16c(%rsp)
jmp 0x38f31
jmp 0x38ffa
leaq 0x2d8(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x209b0
movq 0x130(%rsp), %rdi
movq %rax, 0x38(%rsp)
addq $0x3c0, %rdi            # imm = 0x3C0
movl 0x1f4(%rsp), %eax
movl %eax, %esi
callq 0x209b0
movq 0x130(%rsp), %rdi
movq %rax, 0x40(%rsp)
addq $0x688, %rdi            # imm = 0x688
movl 0x1ec(%rsp), %eax
movl %eax, %esi
callq 0xe8b0
movq 0x38(%rsp), %rdi
movq 0x40(%rsp), %rsi
movl (%rax), %eax
movl %eax, %edx
callq 0x6430
leaq 0x2f0(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x27020
movq %rax, 0x158(%rsp)
leaq 0x160(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x39b20
leaq 0x2d8(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x26ff0
movq 0x20(%rsp), %rdi
movq %rax, 0x150(%rsp)
callq 0x27020
movq 0x28(%rsp), %rdi
movq %rax, 0x148(%rsp)
movq 0x160(%rsp), %rsi
movq 0x150(%rsp), %rdx
movq 0x148(%rsp), %rcx
callq 0x39a60
movq %rax, 0x30(%rsp)
jmp 0x3907e
movq 0x30(%rsp), %rax
movq %rax, 0x140(%rsp)
movl 0x194(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x194(%rsp)
jmp 0x38d9f
jmp 0x390a3
movl 0x1ec(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x1ec(%rsp)
jmp 0x38b56
leaq 0x2f0(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x249e0
movq 0x8(%rsp), %rdi
movl 0x1fc(%rsp), %ecx
subl %ecx, %eax
addl $-0x8, %eax
movl %eax, 0x13c(%rsp)
movl $0x4, %esi
callq 0x209b0
movq 0x8(%rsp), %rdi
movl 0x13c(%rsp), %ecx
movl %ecx, (%rax)
movq 0x318(%rsp), %rax
movq %rax, 0x10(%rsp)
xorl %eax, %eax
movl %eax, %esi
callq 0x209b0
movq 0x8(%rsp), %rdi
movq %rax, 0x18(%rsp)
callq 0x249e0
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rsi
movq %rax, %rdx
callq 0x725f0
jmp 0x39134
leaq 0x2c0(%rsp), %rdi
callq 0x399c0
leaq 0x2d8(%rsp), %rdi
callq 0x267c0
leaq 0x2f0(%rsp), %rdi
callq 0x267c0
addq $0x328, %rsp            # imm = 0x328
retq
leaq 0x2c0(%rsp), %rdi
callq 0x399c0
leaq 0x2d8(%rsp), %rdi
callq 0x267c0
leaq 0x2f0(%rsp), %rdi
callq 0x267c0
movq 0x2b0(%rsp), %rdi
callq 0x69e0
nopw (%rax,%rax)