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

	if (parsed_FORMAT_binary == false)
		parse_FORMAT();

	vector<char> out_vector, tmp_vector;
	out_vector.resize(8*sizeof(int32_t));
	int vector_pos = 2*sizeof(uint32_t);
	string tmp_string;
	int index;
	vector<string> filter_vector;
	vector<pair< string, string > > tmp_info;

	tmp_string = get_CHROM();
	if (tmp_string == "." or tmp_string == " " or tmp_string == "")
		LOG.error("CHROM value must be defined for all entries.",0);

	if (entry_header.CONTIG_reverse_map.find(tmp_string) == entry_header.CONTIG_reverse_map.end() )
		LOG.error("CHROM value " + tmp_string + " is not defined on contig dictionary.",0);

	int32_t chrom = (int32_t)entry_header.CONTIG_reverse_map[tmp_string];
	memcpy(&out_vector[vector_pos], &chrom, sizeof(chrom));
	vector_pos += sizeof(chrom);

	get_POS_binary(tmp_vector);
	memcpy(&out_vector[vector_pos], &tmp_vector[0], tmp_vector.size());
	vector_pos += tmp_vector.size();
	tmp_vector.resize(0);

	get_rlen(tmp_vector);
	memcpy(&out_vector[vector_pos], &tmp_vector[0], tmp_vector.size());
	vector_pos += tmp_vector.size();
	tmp_vector.resize(0);

	get_QUAL_binary(tmp_vector);
	memcpy(&out_vector[vector_pos], &tmp_vector[0], tmp_vector.size());
	vector_pos += tmp_vector.size();
	tmp_vector.resize(0);

	get_ID_binary(tmp_vector);
	out_vector.insert(out_vector.end(), tmp_vector.begin(), tmp_vector.end());
	tmp_vector.resize(0);

	get_ALLELES_binary(tmp_vector);
	out_vector.insert(out_vector.end(), tmp_vector.begin(), tmp_vector.end());
	tmp_vector.resize(0);

	get_FILTER_vector(filter_vector);
	if (filter_vector.empty())
		make_typed_int_vector(tmp_vector, filter_vector);
	else
	{
		vector<int> index_vector;
		for(unsigned int ui=0; ui<filter_vector.size(); ui++)
		{
			if ( entry_header.FILTER_reverse_map.find( filter_vector[ui] ) == entry_header.FILTER_reverse_map.end() )
				LOG.one_off_warning("FILTER value " + filter_vector[ui] + " is not defined in the header and will not be encoded.");
			else
				index_vector.push_back( entry_header.FILTER_reverse_map[ filter_vector[ui] ] );
		}
		make_typed_int_vector(tmp_vector, index_vector );
	}

	if (tmp_vector.empty())
		make_typed_int(tmp_vector, 0, true);

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

	int map_type, number;
	tmp_info = get_INFO_vector(INFO_to_keep, keep_all_INFO);

	for(unsigned int ui=0; ui<tmp_info.size(); ui++)
	{
		if (entry_header.INFO_reverse_map.find(tmp_info[ui].first) == entry_header.INFO_reverse_map.end())
		{
			LOG.one_off_warning("INFO value " + tmp_info[ui].first + " is not defined in the header and will not be encoded.");
			N_INFO_removed++;
			continue;
		}

		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());
	}
	tmp_vector.resize(0);
	uint32_t l_shared = (uint32_t)out_vector.size() - (uint32_t)(2*sizeof(uint32_t));
	memcpy(&out_vector[0], &l_shared, sizeof(l_shared));

	tmp_vector.resize(0);
	get_n_allele_info(tmp_vector);
	memcpy(&out_vector[vector_pos], &tmp_vector[0], tmp_vector.size());
	vector_pos += tmp_vector.size();

	tmp_vector.resize(0);
	get_FORMAT_binary(tmp_vector);
	unsigned int key_size, size, type, old_pos, out_size, format_pos = 0;
	unsigned int skip_size = 0;
	for (unsigned int ui=0; ui<(FORMAT.size()-N_FORMAT_removed); ui++)
	{
		format_pos = FORMAT_positions[ui];
		old_pos = format_pos;

		get_typed_int(&format_pos, tmp_vector, type, size);
		get_type(&format_pos, tmp_vector, type, size);
		key_size = format_pos - old_pos;
		out_size = out_vector.size();
		out_vector.resize( out_size + key_size );
		memcpy(&out_vector[out_size], &tmp_vector[old_pos], key_size );

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

			format_pos = FORMAT_positions[ui]+key_size+skip_size*uj;
			out_size = out_vector.size();
			out_vector.resize( out_size + skip_size );
			if ( ((int)ui == GT_idx) and (include_genotype[ui] == false) )
			{
				for (int p = 0; p < (int)skip_size; p++)
				{
					if (p < ploidy[uj])
						out_vector[out_size] = (int8_t)0x80;
					else
						out_vector[out_size] = (int8_t)0x81;
					out_size++;
				}
			}
			else
			{
				memcpy(&out_vector[out_size], &tmp_vector[format_pos], skip_size);
				out_size += skip_size;
			}
		}
	}
	tmp_vector.resize(0);
	get_n_fmt_sample(tmp_vector);
	memcpy(&out_vector[vector_pos], &tmp_vector[0], tmp_vector.size());

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

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1a8, %rsp            # imm = 0x1A8
movl %ecx, %ebp
movq %rdx, %r13
movq %rsi, %rbx
movq %rdi, %r14
cmpb $0x0, 0x3d9(%rdi)
jne 0x1dd4b
movq (%r14), %rax
movq %r14, %rdi
movl $0x1, %esi
callq *0x18(%rax)
cmpb $0x0, 0x3de(%r14)
jne 0x1dd5d
movq %r14, %rdi
callq 0x1ce66
xorps %xmm0, %xmm0
leaq 0x20(%rsp), %rdi
movaps %xmm0, (%rdi)
xorl %eax, %eax
movq %rax, 0x10(%rdi)
movq %rax, 0x10(%rsp)
movaps %xmm0, (%rsp)
movl $0x20, %esi
callq 0xf332
movq %rbx, 0xf8(%rsp)
leaq 0xe8(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb $0x0, (%rcx)
movq %rax, 0xc0(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0xb0(%rsp)
movq %rax, 0x80(%rsp)
movaps %xmm0, 0x70(%rsp)
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x21ac0
leaq 0xd8(%rsp), %rdi
leaq 0x50(%rsp), %rbx
movq %rbx, %rsi
callq 0x5550
movq (%rbx), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x1ddf2
callq 0x5410
leaq 0x1b3f4(%rip), %rsi     # 0x391ed
leaq 0xd8(%rsp), %rdi
callq 0x50e0
testl %eax, %eax
je 0x1de3a
leaq 0x1a2fe(%rip), %rsi     # 0x3810f
leaq 0xd8(%rsp), %rdi
callq 0x50e0
testl %eax, %eax
je 0x1de3a
leaq 0x1c0ae(%rip), %rsi     # 0x39ed7
leaq 0xd8(%rsp), %rdi
callq 0x50e0
testl %eax, %eax
jne 0x1de89
leaq 0x198(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x1b3a2(%rip), %rsi     # 0x391ef
leaq 0x1b3c7(%rip), %rdx     # 0x3921b
leaq 0x188(%rsp), %rdi
callq 0xc85e
leaq 0x2b640(%rip), %rdi     # 0x494a8
leaq 0x188(%rsp), %rsi
xorl %edx, %edx
callq 0x36ec8
movq 0x188(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1de89
callq 0x5410
leaq 0x130(%r14), %rbx
leaq 0xd8(%rsp), %rsi
movq %rbx, %rdi
callq 0x18140
leaq 0x138(%r14), %rcx
cmpq %rcx, %rax
jne 0x1df64
leaq 0x1b365(%rip), %rsi     # 0x3921c
leaq 0x50(%rsp), %rdi
leaq 0xd8(%rsp), %rdx
callq 0xb777
leaq 0x1b359(%rip), %rsi     # 0x39229
leaq 0x50(%rsp), %rdi
callq 0x5870
leaq 0x178(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1df0a
movq %rdx, 0x168(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x178(%rsp)
jmp 0x1df11
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
leaq 0x168(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x2b571(%rip), %rdi     # 0x494a8
xorl %edx, %edx
callq 0x36ec8
movq 0x168(%rsp), %rdi
cmpq %r15, %rdi
je 0x1df50
callq 0x5410
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x1df64
callq 0x5410
leaq 0xd8(%rsp), %rsi
movq %rbx, %rdi
callq 0x177e8
movl (%rax), %eax
movq 0x20(%rsp), %rcx
movl %eax, 0x8(%rcx)
movq %rsp, %rsi
movq %r14, %rdi
callq 0x2344e
movq 0x20(%rsp), %rdi
addq $0xc, %rdi
movq %rsp, %r15
movq (%r15), %rbx
movq 0x8(%r15), %rdx
subq %rbx, %rdx
movq %rbx, %rsi
callq 0x5380
movq 0x8(%r15), %r12
movq %r15, %rdi
xorl %esi, %esi
callq 0xf332
movq %rsp, %rsi
movq %r14, %rdi
callq 0x2347c
subq %rbx, %r12
addl $0xc, %r12d
movslq %r12d, %r15
movq 0x20(%rsp), %rdi
addq %r15, %rdi
movq %rsp, %rbx
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
subq %rsi, %rdx
callq 0x5380
movq 0x8(%rbx), %r12
subq (%rbx), %r12
movq %rbx, %rdi
xorl %esi, %esi
callq 0xf332
movq %rsp, %rsi
movq %r14, %rdi
callq 0x234f0
addq %r15, %r12
movslq %r12d, %rdi
addq 0x20(%rsp), %rdi
movq %rsp, %rbx
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
subq %rsi, %rdx
callq 0x5380
movq 0x8(%rbx), %rax
subq (%rbx), %rax
movq %rax, 0xc8(%rsp)
movq %rbx, %rdi
xorl %esi, %esi
callq 0xf332
movq %rsp, %rsi
movq %r14, %rdi
callq 0x235bc
leaq 0x20(%rsp), %rdi
movq 0x8(%rdi), %rsi
movq (%rsp), %rdx
movq 0x8(%rsp), %rcx
callq 0x1bd8c
movq %rsp, %rdi
xorl %esi, %esi
callq 0xf332
movq %rsp, %rsi
movq %r14, %rdi
callq 0x235ce
leaq 0x20(%rsp), %rdi
movq 0x8(%rdi), %rsi
movq (%rsp), %rdx
movq 0x8(%rsp), %rcx
callq 0x1bd8c
movq %rsp, %rdi
xorl %esi, %esi
callq 0xf332
leaq 0xb0(%rsp), %rsi
movq %r14, %rdi
callq 0x222d2
movq 0xb0(%rsp), %rsi
cmpq 0xb8(%rsp), %rsi
movq %r12, 0x100(%rsp)
je 0x1e264
movl %ebp, 0x40(%rsp)
movq %r13, 0x48(%rsp)
xorps %xmm0, %xmm0
leaq 0x90(%rsp), %rax
movaps %xmm0, (%rax)
movq $0x0, 0x10(%rax)
leaq 0x160(%r14), %r12
leaq 0x168(%r14), %r13
movl $0x1, %r15d
xorl %ebp, %ebp
shlq $0x5, %rbp
addq %rbp, %rsi
movq %r12, %rdi
callq 0x18140
cmpq %r13, %rax
je 0x1e13f
addq 0xb0(%rsp), %rbp
movq %r12, %rdi
movq %rbp, %rsi
callq 0x177e8
movq 0x98(%rsp), %rsi
cmpq 0xa0(%rsp), %rsi
je 0x1e1a1
movl (%rax), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x98(%rsp)
jmp 0x1e20e
addq 0xb0(%rsp), %rbp
leaq 0x50(%rsp), %rbx
movq %rbx, %rdi
leaq 0x1b0f9(%rip), %rsi     # 0x3924f
movq %rbp, %rdx
callq 0xb777
movq %rbx, %rdi
leaq 0x1b02a(%rip), %rsi     # 0x39192
callq 0x5870
leaq 0x138(%rsp), %rbx
movq %rbx, 0x128(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1e1b3
movq %rdx, 0x128(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x138(%rsp)
jmp 0x1e1b9
leaq 0x90(%rsp), %rdi
movq %rax, %rdx
callq 0xca58
jmp 0x1e20e
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x130(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x2b2cd(%rip), %rdi     # 0x494a8
leaq 0x128(%rsp), %rsi
callq 0x371c0
movq 0x128(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1e1fa
callq 0x5410
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x1e20e
callq 0x5410
movl %r15d, %ebp
movq 0xb0(%rsp), %rsi
movq 0xb8(%rsp), %rax
subq %rsi, %rax
sarq $0x5, %rax
incl %r15d
cmpq %rbp, %rax
ja 0x1e0f1
movq %rsp, %rsi
leaq 0x90(%rsp), %rdx
movq %r14, %rdi
callq 0x20958
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
movq 0x48(%rsp), %r13
movl 0x40(%rsp), %ebp
je 0x1e27c
callq 0x5410
jmp 0x1e27c
movq %rsp, %rsi
leaq 0xb0(%rsp), %rdx
movq %r14, %rdi
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x20624
movq (%rsp), %rdx
movq 0x8(%rsp), %rcx
cmpq %rcx, %rdx
jne 0x1e2ae
leaq 0x50(%rsp), %rdx
movl $0x0, (%rdx)
movq %rsp, %rsi
movq %r14, %rdi
movl $0x1, %ecx
callq 0x1fbd8
movq (%rsp), %rdx
movq 0x8(%rsp), %rcx
leaq 0x20(%rsp), %rdi
movq 0x8(%rdi), %rsi
callq 0x1bd8c
movzbl %bpl, %ecx
leaq 0x90(%rsp), %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x225e4
movq 0x80(%rsp), %rax
leaq 0x90(%rsp), %rbx
movaps (%rbx), %xmm0
movq 0x10(%rbx), %rcx
movq %rcx, 0x80(%rsp)
movaps 0x70(%rsp), %xmm1
movaps %xmm0, 0x70(%rsp)
leaq 0x50(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%rbx)
movq $0x0, 0x10(%rbx)
callq 0x1b3a8
movq %rbx, %rdi
callq 0x1b3a8
movq 0x70(%rsp), %rsi
cmpq %rsi, 0x78(%rsp)
je 0x1e5f0
leaq 0x190(%r14), %rax
movq %rax, 0x48(%rsp)
leaq 0x198(%r14), %rax
movq %rax, 0xd0(%rsp)
leaq 0x70(%r14), %rax
movq %rax, 0x40(%rsp)
leaq 0x118(%rsp), %r12
movl $0x1, %r13d
xorl %ebp, %ebp
leaq 0x50(%rsp), %r15
shlq $0x6, %rbp
addq %rbp, %rsi
movq 0x48(%rsp), %rdi
callq 0x18140
cmpq 0xd0(%rsp), %rax
je 0x1e435
movq %rsp, %rdi
xorl %esi, %esi
callq 0xf332
movq 0x70(%rsp), %rsi
addq %rbp, %rsi
movq 0x48(%rsp), %rdi
callq 0x177e8
movl (%rax), %eax
movl %eax, 0x3c(%rsp)
movq %r14, %rdi
movq %rsp, %rsi
leaq 0x3c(%rsp), %rdx
movl $0x1, %ecx
callq 0x1fbd8
movq 0x28(%rsp), %rsi
movq (%rsp), %rdx
movq 0x8(%rsp), %rcx
leaq 0x20(%rsp), %rdi
callq 0x1bd8c
movq %rsp, %rdi
xorl %esi, %esi
callq 0xf332
movq 0x40(%rsp), %rdi
leaq 0x3c(%rsp), %rsi
callq 0x17782
movl 0x88(%rax), %ebx
movq 0x40(%rsp), %rdi
leaq 0x3c(%rsp), %rsi
callq 0x17782
movl 0x44(%rax), %ecx
cmpl $0x1, %ebx
je 0x1e487
testl %ebx, %ebx
jne 0x1e4a4
movq 0x70(%rsp), %rax
leaq (%rax,%rbp), %rdx
addq $0x20, %rdx
movq %r14, %rdi
movq %rsp, %rsi
callq 0x2030a
jmp 0x1e5b8
addq 0x70(%rsp), %rbp
movq %r15, %rdi
leaq 0x1ae19(%rip), %rsi     # 0x3925d
movq %rbp, %rdx
callq 0xb777
movq %r15, %rdi
leaq 0x1ad3c(%rip), %rsi     # 0x39192
callq 0x5870
movq %r12, 0x108(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1e4d4
movq %rdx, 0x108(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x118(%rsp)
jmp 0x1e4dc
movq 0x70(%rsp), %rax
leaq (%rax,%rbp), %rdx
addq $0x20, %rdx
movq %r14, %rdi
movq %rsp, %rsi
callq 0x20b04
jmp 0x1e5b8
movl %ebx, %eax
andl $-0x2, %eax
cmpl $0x2, %eax
jne 0x1e53d
movq 0x70(%rsp), %rax
leaq (%rax,%rbp), %rdx
addq $0x20, %rdx
movq %r14, %rdi
movq %rsp, %rsi
movl $0x1, %ecx
callq 0x1fa40
jmp 0x1e5b8
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x110(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x2afaa(%rip), %rdi     # 0x494a8
leaq 0x108(%rsp), %rsi
callq 0x371c0
movq 0x108(%rsp), %rdi
cmpq %r12, %rdi
je 0x1e51d
callq 0x5410
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x1e531
callq 0x5410
incl 0x4c8(%r14)
jmp 0x1e5d0
cmpl $0x4, %ebx
jne 0x1e55f
movl $0x1, 0x50(%rsp)
movq %r14, %rdi
movq %rsp, %rsi
movq %r15, %rdx
movl $0x1, %ecx
callq 0x1fbd8
jmp 0x1e5b8
leaq 0x158(%rsp), %rax
movq %rax, 0x148(%rsp)
leaq 0x148(%rsp), %rbx
movq %rbx, %rdi
leaq 0x1ab99(%rip), %rsi     # 0x3911a
leaq 0x1abb1(%rip), %rdx     # 0x39139
callq 0xc85e
leaq 0x2af14(%rip), %rdi     # 0x494a8
movq %rbx, %rsi
xorl %edx, %edx
callq 0x36ec8
movq 0x148(%rsp), %rdi
leaq 0x158(%rsp), %rax
cmpq %rax, %rdi
je 0x1e5b8
callq 0x5410
movq 0x28(%rsp), %rsi
movq (%rsp), %rdx
movq 0x8(%rsp), %rcx
leaq 0x20(%rsp), %rdi
callq 0x1bd8c
movl %r13d, %ebp
movq 0x70(%rsp), %rsi
movq 0x78(%rsp), %rax
subq %rsi, %rax
sarq $0x6, %rax
incl %r13d
cmpq %rbp, %rax
ja 0x1e36c
movq %rsp, %rdi
xorl %esi, %esi
callq 0xf332
movl 0x28(%rsp), %ecx
movq 0x20(%rsp), %rax
subl %eax, %ecx
movq %rcx, 0xd0(%rsp)
addl $-0x8, %ecx
movl %ecx, (%rax)
movq %rsp, %rdi
xorl %esi, %esi
callq 0xf332
movq 0x100(%rsp), %rbx
movq %rsp, %rsi
movq %r14, %rdi
callq 0x23520
movq 0xc8(%rsp), %r15
addq %rbx, %r15
movslq %r15d, %rdi
addq 0x20(%rsp), %rdi
movq %rsp, %rbx
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
subq %rsi, %rdx
callq 0x5380
addq 0x8(%rbx), %r15
subq (%rbx), %r15
movq %r15, 0xc8(%rsp)
movq %rbx, %rdi
xorl %esi, %esi
callq 0xf332
movq %rsp, %rsi
movq %r14, %rdi
callq 0x229f6
movl $0x0, 0x1c(%rsp)
movq 0x4a0(%r14), %rax
subq 0x498(%r14), %rax
sarq $0x5, %rax
movslq 0x4cc(%r14), %rcx
cmpq %rcx, %rax
je 0x1e84e
xorl %ebx, %ebx
leaq 0x1c(%rsp), %r15
movq %rsp, %r13
leaq 0x90(%rsp), %rbp
movq 0x640(%r14), %rax
movl (%rax,%rbx,4), %r12d
movl %r12d, 0x1c(%rsp)
movq %r14, %rdi
movq %r15, %rsi
movq %r13, %rdx
movq %rbp, %rcx
leaq 0x50(%rsp), %r8
callq 0x21464
movq %r14, %rdi
movq %r15, %rsi
movq %r13, %rdx
movq %rbp, %rcx
leaq 0x50(%rsp), %r8
callq 0x21396
movl 0x1c(%rsp), %r13d
subl %r12d, %r13d
movq 0x28(%rsp), %r15
subq 0x20(%rsp), %r15
leal (%r15,%r13), %esi
leaq 0x20(%rsp), %rdi
callq 0xf332
movl %r15d, %edi
addq 0x20(%rsp), %rdi
addq (%rsp), %r12
movl %r13d, %edx
movq %r12, %rsi
callq 0x5380
cmpl $0x0, 0x8(%r14)
je 0x1e817
movq 0x688(%r14), %rax
movl (%rax,%rbx,4), %r12d
movq %rbx, %rax
shrq $0x6, %rax
movq %rax, 0x48(%rsp)
movl $0x1, %eax
movl %ebx, %ecx
shlq %cl, %rax
movq %rax, 0x40(%rsp)
xorl %ebp, %ebp
movq 0x1f0(%r14), %rax
movq %rbp, %rcx
shrq $0x6, %rcx
movq (%rax,%rcx,8), %rax
btq %rbp, %rax
jae 0x1e7d9
movq 0x640(%r14), %rax
movl %ebp, %ecx
imull %r12d, %ecx
addl %r13d, %ecx
addl (%rax,%rbx,4), %ecx
movl %ecx, 0x1c(%rsp)
movq 0x28(%rsp), %r15
subq 0x20(%rsp), %r15
leal (%r12,%r15), %esi
leaq 0x20(%rsp), %rdi
callq 0xf332
cmpl 0x630(%r14), %ebx
jne 0x1e7c1
movq 0x218(%r14), %rax
movq 0x48(%rsp), %rcx
movq 0x40(%rsp), %rdx
testq %rdx, (%rax,%rcx,8)
je 0x1e7eb
movl %r15d, %edi
addq 0x20(%rsp), %rdi
movl 0x1c(%rsp), %esi
addq (%rsp), %rsi
movq %r12, %rdx
callq 0x5380
incq %rbp
movl 0x8(%r14), %eax
cmpq %rax, %rbp
jb 0x1e75a
jmp 0x1e817
testl %r12d, %r12d
jle 0x1e7d9
xorl %eax, %eax
leal (%r15,%rax), %ecx
movq 0x4e8(%r14), %rdx
cmpl (%rdx,%rbp,4), %eax
setl %dl
movq 0x20(%rsp), %rsi
xorb $-0x7f, %dl
movb %dl, (%rsi,%rcx)
incl %eax
cmpl %eax, %r12d
jne 0x1e7f2
jmp 0x1e7d9
incl %ebx
movq 0x4a0(%r14), %rax
subq 0x498(%r14), %rax
sarq $0x5, %rax
movslq 0x4cc(%r14), %rcx
subq %rcx, %rax
cmpq %rbx, %rax
leaq 0x1c(%rsp), %r15
movq %rsp, %r13
leaq 0x90(%rsp), %rbp
ja 0x1e6b4
movq %rsp, %rdi
xorl %esi, %esi
callq 0xf332
movq %rsp, %rsi
movq %r14, %rdi
callq 0x23578
movslq 0xc8(%rsp), %rdi
addq 0x20(%rsp), %rdi
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
subq %rsi, %rdx
callq 0x5380
movl 0x28(%rsp), %eax
movq 0x20(%rsp), %rcx
subl %ecx, %eax
subl 0xd0(%rsp), %eax
movl %eax, 0x4(%rcx)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
subq %rsi, %rdx
movq 0xf8(%rsp), %rdi
callq 0x37b02
leaq 0x70(%rsp), %rdi
callq 0x1b3a8
leaq 0xb0(%rsp), %rdi
callq 0xc4da
movq 0xd8(%rsp), %rdi
leaq 0xe8(%rsp), %rax
cmpq %rax, %rdi
je 0x1e8e1
callq 0x5410
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x1e8ef
callq 0x5410
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x1e8fe
callq 0x5410
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x1ea3b
movq %rax, %r14
movq 0x168(%rsp), %rdi
cmpq %r15, %rdi
jne 0x1e9c9
jmp 0x1e9d3
jmp 0x1e9d0
jmp 0x1ea3b
jmp 0x1ea20
movq %rax, %r14
movq 0x188(%rsp), %rdi
cmpq %rbx, %rdi
jne 0x1ea30
jmp 0x1ea3e
jmp 0x1ea3b
jmp 0x1ea3b
jmp 0x1ea3b
jmp 0x1ea3b
jmp 0x1ea3b
jmp 0x1ea3b
jmp 0x1ea3b
jmp 0x1ea3b
jmp 0x1ea3b
movq %rax, %r14
jmp 0x1ea6f
jmp 0x1ea3b
movq %rax, %r14
movq 0x148(%rsp), %rdi
leaq 0x158(%rsp), %rax
jmp 0x1e9dd
jmp 0x1ea3b
jmp 0x1ea3b
jmp 0x1ea3b
jmp 0x1ea3b
movq %rax, %r14
movq 0x108(%rsp), %rdi
cmpq %r12, %rdi
je 0x1e9d3
callq 0x5410
jmp 0x1e9d3
movq %rax, %r14
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
jne 0x1ea30
jmp 0x1ea3e
jmp 0x1ea20
movq %rax, %r14
movq 0x128(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1ea00
callq 0x5410
jmp 0x1ea00
movq %rax, %r14
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x1ea23
callq 0x5410
jmp 0x1ea23
jmp 0x1ea3b
jmp 0x1ea3b
jmp 0x1ea3b
jmp 0x1ea20
jmp 0x1ea3b
movq %rax, %r14
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x1ea3e
callq 0x5410
jmp 0x1ea3e
jmp 0x1ea3b
jmp 0x1ea3b
movq %rax, %r14
leaq 0x70(%rsp), %rdi
callq 0x1b3a8
leaq 0xb0(%rsp), %rdi
callq 0xc4da
movq 0xd8(%rsp), %rdi
leaq 0xe8(%rsp), %rax
cmpq %rax, %rdi
je 0x1ea6f
callq 0x5410
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x1ea7d
callq 0x5410
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x1ea8c
callq 0x5410
movq %r14, %rdi
callq 0x57d0