// File: /workspace/github_cpp_makefile_star2_O1/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 0x1deb1
movq (%r14), %rax
movq %r14, %rdi
movl $0x1, %esi
callq *0x18(%rax)
cmpb $0x0, 0x3de(%r14)
jne 0x1dec3
movq %r14, %rdi
callq 0x1cfdc
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 0xf31a
movq %rbx, 0xf8(%rsp)
leaq 0xe8(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb $0x0, (%rcx)
movq %rax, 0xa0(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x90(%rsp)
movq %rax, 0x80(%rsp)
movaps %xmm0, 0x70(%rsp)
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x21cbc
leaq 0xd8(%rsp), %rdi
leaq 0x50(%rsp), %rbx
movq %rbx, %rsi
callq 0x5550
movq (%rbx), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x1df58
callq 0x5410
leaq 0x1c2ae(%rip), %rsi     # 0x3a20d
leaq 0xd8(%rsp), %rdi
callq 0x50e0
testl %eax, %eax
je 0x1dfa0
leaq 0x1b198(%rip), %rsi     # 0x3910f
leaq 0xd8(%rsp), %rdi
callq 0x50e0
testl %eax, %eax
je 0x1dfa0
leaq 0x1cf70(%rip), %rsi     # 0x3aeff
leaq 0xd8(%rsp), %rdi
callq 0x50e0
testl %eax, %eax
jne 0x1dfef
leaq 0x198(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x1c25c(%rip), %rsi     # 0x3a20f
leaq 0x1c281(%rip), %rdx     # 0x3a23b
leaq 0x188(%rsp), %rdi
callq 0xc868
leaq 0x2c4da(%rip), %rdi     # 0x4a4a8
leaq 0x188(%rsp), %rsi
xorl %edx, %edx
callq 0x3721e
movq 0x188(%rsp), %rdi
cmpq %r15, %rdi
je 0x1dfef
callq 0x5410
leaq 0x130(%r14), %rbx
leaq 0xd8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1818e
leaq 0x138(%r14), %rcx
cmpq %rcx, %rax
jne 0x1e0ca
leaq 0x1c21f(%rip), %rsi     # 0x3a23c
leaq 0x50(%rsp), %rdi
leaq 0xd8(%rsp), %rdx
callq 0xb7dd
leaq 0x1c213(%rip), %rsi     # 0x3a249
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 0x1e070
movq %rdx, 0x168(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x178(%rsp)
jmp 0x1e077
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 0x2c40b(%rip), %rdi     # 0x4a4a8
xorl %edx, %edx
callq 0x3721e
movq 0x168(%rsp), %rdi
cmpq %r15, %rdi
je 0x1e0b6
callq 0x5410
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x1e0ca
callq 0x5410
leaq 0xd8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1785c
movl (%rax), %eax
movq 0x20(%rsp), %rcx
movl %eax, 0x8(%rcx)
movq %rsp, %rsi
movq %r14, %rdi
callq 0x236a2
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 0xf31a
movq %rsp, %rsi
movq %r14, %rdi
callq 0x236d0
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 0xf31a
movq %rsp, %rsi
movq %r14, %rdi
callq 0x23744
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 0xf31a
movq %rsp, %rsi
movq %r14, %rdi
callq 0x23810
leaq 0x20(%rsp), %rdi
movq 0x8(%rdi), %rsi
movq (%rsp), %rdx
movq 0x8(%rsp), %rcx
callq 0x1be7e
movq %rsp, %rdi
xorl %esi, %esi
callq 0xf31a
movq %rsp, %rsi
movq %r14, %rdi
callq 0x23822
leaq 0x20(%rsp), %rdi
movq 0x8(%rdi), %rsi
movq (%rsp), %rdx
movq 0x8(%rsp), %rcx
callq 0x1be7e
movq %rsp, %rdi
xorl %esi, %esi
callq 0xf31a
leaq 0x90(%rsp), %rsi
movq %r14, %rdi
callq 0x224d0
movq 0x90(%rsp), %rax
cmpq 0x98(%rsp), %rax
movq %r12, 0x100(%rsp)
je 0x1e3e3
movl %ebp, 0x40(%rsp)
movq %r13, 0x48(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0xb0(%rsp)
movq $0x0, 0xc0(%rsp)
movq 0x90(%rsp), %rsi
cmpq %rsi, 0x98(%rsp)
je 0x1e3b3
leaq 0x160(%r14), %rbx
leaq 0x168(%r14), %r12
movl $0x1, %r13d
xorl %r15d, %r15d
shlq $0x5, %r15
addq %r15, %rsi
movq %rbx, %rdi
callq 0x1818e
cmpq %r12, %rax
je 0x1e2bd
addq 0x90(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x1785c
movq 0xb8(%rsp), %rsi
cmpq 0xc0(%rsp), %rsi
je 0x1e31f
movl (%rax), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0xb8(%rsp)
jmp 0x1e38d
addq 0x90(%rsp), %r15
leaq 0x50(%rsp), %rbp
movq %rbp, %rdi
leaq 0x1bf9b(%rip), %rsi     # 0x3a26f
movq %r15, %rdx
callq 0xb7dd
movq %rbp, %rdi
leaq 0x1becc(%rip), %rsi     # 0x3a1b2
callq 0x5870
leaq 0x138(%rsp), %r15
movq %r15, 0x128(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1e331
movq %rdx, 0x128(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x138(%rsp)
jmp 0x1e338
leaq 0xb0(%rsp), %rdi
movq %rax, %rdx
callq 0xca5a
jmp 0x1e38d
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x130(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x2c14e(%rip), %rdi     # 0x4a4a8
leaq 0x128(%rsp), %rsi
callq 0x37516
movq 0x128(%rsp), %rdi
cmpq %r15, %rdi
je 0x1e379
callq 0x5410
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x1e38d
callq 0x5410
movl %r13d, %r15d
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rax
subq %rsi, %rax
sarq $0x5, %rax
incl %r13d
cmpq %r15, %rax
ja 0x1e26f
movq %rsp, %rsi
leaq 0xb0(%rsp), %rdx
movq %r14, %rdi
callq 0x20ae6
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
movq 0x48(%rsp), %r13
movl 0x40(%rsp), %ebp
je 0x1e3fb
callq 0x5410
jmp 0x1e3fb
movq %rsp, %rsi
leaq 0x90(%rsp), %rdx
movq %r14, %rdi
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x207aa
movq (%rsp), %rax
cmpq 0x8(%rsp), %rax
jne 0x1e421
leaq 0x50(%rsp), %rdx
movl $0x0, (%rdx)
movq %rsp, %rsi
movq %r14, %rdi
movl $0x1, %ecx
callq 0x1fd74
leaq 0x20(%rsp), %rdi
movq 0x8(%rdi), %rsi
movq (%rsp), %rdx
movq 0x8(%rsp), %rcx
callq 0x1be7e
movzbl %bpl, %ecx
leaq 0xb0(%rsp), %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x227fe
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %rdi
movaps %xmm0, (%rdi)
movaps 0x70(%rsp), %xmm0
movq 0x80(%rsp), %rax
leaq 0xb0(%rsp), %rbx
movaps (%rbx), %xmm1
movaps %xmm1, 0x70(%rsp)
movq 0x10(%rbx), %rcx
movq %rcx, 0x80(%rsp)
movq %rax, 0x10(%rdi)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movaps %xmm1, (%rbx)
movq $0x0, 0x10(%rbx)
callq 0x1b4a6
movq %rbx, %rdi
callq 0x1b4a6
movq 0x70(%rsp), %rsi
cmpq %rsi, 0x78(%rsp)
je 0x1e772
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 0x1818e
cmpq 0xd0(%rsp), %rax
je 0x1e5b7
movq %rsp, %rdi
xorl %esi, %esi
callq 0xf31a
movq 0x70(%rsp), %rsi
addq %rbp, %rsi
movq 0x48(%rsp), %rdi
callq 0x1785c
movl (%rax), %eax
movl %eax, 0x3c(%rsp)
movq %r14, %rdi
movq %rsp, %rsi
leaq 0x3c(%rsp), %rdx
movl $0x1, %ecx
callq 0x1fd74
movq 0x28(%rsp), %rsi
movq (%rsp), %rdx
movq 0x8(%rsp), %rcx
leaq 0x20(%rsp), %rdi
callq 0x1be7e
movq %rsp, %rdi
xorl %esi, %esi
callq 0xf31a
movq 0x40(%rsp), %rdi
leaq 0x3c(%rsp), %rsi
callq 0x177f8
movl 0x88(%rax), %ebx
movq 0x40(%rsp), %rdi
leaq 0x3c(%rsp), %rsi
callq 0x177f8
movl 0x44(%rax), %ecx
cmpl $0x1, %ebx
je 0x1e609
testl %ebx, %ebx
jne 0x1e626
movq 0x70(%rsp), %rax
leaq (%rax,%rbp), %rdx
addq $0x20, %rdx
movq %r14, %rdi
movq %rsp, %rsi
callq 0x204a8
jmp 0x1e73a
addq 0x70(%rsp), %rbp
movq %r15, %rdi
leaq 0x1bcb7(%rip), %rsi     # 0x3a27d
movq %rbp, %rdx
callq 0xb7dd
movq %r15, %rdi
leaq 0x1bbda(%rip), %rsi     # 0x3a1b2
callq 0x5870
movq %r12, 0x108(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1e656
movq %rdx, 0x108(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x118(%rsp)
jmp 0x1e65e
movq 0x70(%rsp), %rax
leaq (%rax,%rbp), %rdx
addq $0x20, %rdx
movq %r14, %rdi
movq %rsp, %rsi
callq 0x20c9a
jmp 0x1e73a
movl %ebx, %eax
andl $-0x2, %eax
cmpl $0x2, %eax
jne 0x1e6bf
movq 0x70(%rsp), %rax
leaq (%rax,%rbp), %rdx
addq $0x20, %rdx
movq %r14, %rdi
movq %rsp, %rsi
movl $0x1, %ecx
callq 0x1fbdc
jmp 0x1e73a
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 0x2be28(%rip), %rdi     # 0x4a4a8
leaq 0x108(%rsp), %rsi
callq 0x37516
movq 0x108(%rsp), %rdi
cmpq %r12, %rdi
je 0x1e69f
callq 0x5410
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x1e6b3
callq 0x5410
incl 0x4c8(%r14)
jmp 0x1e752
cmpl $0x4, %ebx
jne 0x1e6e1
movl $0x1, 0x50(%rsp)
movq %r14, %rdi
movq %rsp, %rsi
movq %r15, %rdx
movl $0x1, %ecx
callq 0x1fd74
jmp 0x1e73a
leaq 0x158(%rsp), %rax
movq %rax, 0x148(%rsp)
leaq 0x148(%rsp), %rbx
movq %rbx, %rdi
leaq 0x1ba37(%rip), %rsi     # 0x3a13a
leaq 0x1ba4f(%rip), %rdx     # 0x3a159
callq 0xc868
leaq 0x2bd92(%rip), %rdi     # 0x4a4a8
movq %rbx, %rsi
xorl %edx, %edx
callq 0x3721e
movq 0x148(%rsp), %rdi
leaq 0x158(%rsp), %rax
cmpq %rax, %rdi
je 0x1e73a
callq 0x5410
movq 0x28(%rsp), %rsi
movq (%rsp), %rdx
movq 0x8(%rsp), %rcx
leaq 0x20(%rsp), %rdi
callq 0x1be7e
movl %r13d, %ebp
movq 0x70(%rsp), %rsi
movq 0x78(%rsp), %rax
subq %rsi, %rax
sarq $0x6, %rax
incl %r13d
cmpq %rbp, %rax
ja 0x1e4ee
movq %rsp, %rdi
xorl %esi, %esi
callq 0xf31a
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 0xf31a
movq 0x100(%rsp), %rbx
movq %rsp, %rsi
movq %r14, %rdi
callq 0x23774
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 0xf31a
movq %rsp, %rsi
movq %r14, %rdi
callq 0x22c3a
movl $0x0, 0x1c(%rsp)
movq 0x4a0(%r14), %rax
subq 0x498(%r14), %rax
sarq $0x5, %rax
movslq 0x4cc(%r14), %rcx
cmpq %rcx, %rax
je 0x1e9d0
xorl %ebx, %ebx
leaq 0x1c(%rsp), %r15
movq %rsp, %r13
leaq 0xb0(%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 0x21600
movq %r14, %rdi
movq %r15, %rsi
movq %r13, %rdx
movq %rbp, %rcx
leaq 0x50(%rsp), %r8
callq 0x21532
movl 0x1c(%rsp), %r13d
subl %r12d, %r13d
movq 0x28(%rsp), %r15
subq 0x20(%rsp), %r15
leal (%r15,%r13), %esi
leaq 0x20(%rsp), %rdi
callq 0xf31a
movl %r15d, %edi
addq 0x20(%rsp), %rdi
addq (%rsp), %r12
movl %r13d, %edx
movq %r12, %rsi
callq 0x5380
cmpl $0x0, 0x8(%r14)
je 0x1e999
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 0x1e95b
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 0xf31a
cmpl 0x630(%r14), %ebx
jne 0x1e943
movq 0x218(%r14), %rax
movq 0x48(%rsp), %rcx
movq 0x40(%rsp), %rdx
testq %rdx, (%rax,%rcx,8)
je 0x1e96d
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 0x1e8dc
jmp 0x1e999
testl %r12d, %r12d
jle 0x1e95b
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 0x1e974
jmp 0x1e95b
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 0xb0(%rsp), %rbp
ja 0x1e836
movq %rsp, %rdi
xorl %esi, %esi
callq 0xf31a
movq %rsp, %rsi
movq %r14, %rdi
callq 0x237cc
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 0x37eb4
leaq 0x70(%rsp), %rdi
callq 0x1b4a6
leaq 0x90(%rsp), %rdi
callq 0xc4f0
movq 0xd8(%rsp), %rdi
leaq 0xe8(%rsp), %rax
cmpq %rax, %rdi
je 0x1ea63
callq 0x5410
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x1ea71
callq 0x5410
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x1ea80
callq 0x5410
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x1ebba
movq %rax, %rbx
movq 0x168(%rsp), %rdi
cmpq %r15, %rdi
jne 0x1eb7a
jmp 0x1eb84
jmp 0x1eb81
jmp 0x1ebba
jmp 0x1eb9d
movq %rax, %rbx
movq 0x188(%rsp), %rdi
cmpq %r15, %rdi
jne 0x1ebad
jmp 0x1ebbd
jmp 0x1ebba
jmp 0x1ebba
jmp 0x1ebba
jmp 0x1ebba
jmp 0x1ebba
jmp 0x1ebba
jmp 0x1ebba
jmp 0x1ebba
jmp 0x1ebba
movq %rax, %rbx
jmp 0x1ebee
jmp 0x1ebba
movq %rax, %rbx
movq 0x148(%rsp), %rdi
leaq 0x158(%rsp), %rax
jmp 0x1eb8e
jmp 0x1ebba
jmp 0x1ebba
jmp 0x1ebba
jmp 0x1eb9d
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %r15, %rdi
je 0x1eb52
callq 0x5410
jmp 0x1eb52
movq %rax, %rbx
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x1eba0
callq 0x5410
jmp 0x1eba0
jmp 0x1ebba
movq %rax, %rbx
movq 0x108(%rsp), %rdi
cmpq %r12, %rdi
je 0x1eb84
callq 0x5410
jmp 0x1eb84
movq %rax, %rbx
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
jne 0x1ebad
jmp 0x1ebbd
jmp 0x1eb9d
jmp 0x1ebba
jmp 0x1ebba
jmp 0x1ebba
movq %rax, %rbx
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x1ebbd
callq 0x5410
jmp 0x1ebbd
jmp 0x1ebba
jmp 0x1ebba
jmp 0x1ebba
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x1b4a6
leaq 0x90(%rsp), %rdi
callq 0xc4f0
movq 0xd8(%rsp), %rdi
leaq 0xe8(%rsp), %rax
cmpq %rax, %rdi
je 0x1ebee
callq 0x5410
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x1ebfc
callq 0x5410
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x1ec0b
callq 0x5410
movq %rbx, %rdi
callq 0x57d0
nop