// File: /workspace/github_cpp_makefile_star2_O1/ChnMasterOG[P]KmerGO2/kmergo/kmer_filtering.cpp
// Function: continuous_feature_filtering(unsigned short, std::vector<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>>>>, KmerGO_parameters)
void continuous_feature_filtering(uint16_t Nprocess, std::vector<std::string> files_vec, KmerGO_parameters p)
{
	std::string line, kmer;
	std::string input_file_name = files_vec[Nprocess];
	std::string onput_file_name_l = joinPath(p.features_path, "continuous_l_" + std::to_string(Nprocess) + ".txt");
	std::string onput_file_name_n = joinPath(p.features_path, "continuous_n_" + std::to_string(Nprocess) + ".txt");
	std::ifstream input_file(input_file_name);
	std::ofstream output_file_l(onput_file_name_l);
	std::ofstream output_file_n(onput_file_name_n);
	std::vector<std::string> head_value;
	std::vector<bool> sample_valid;
	std::string::size_type position;

	/* read head text and set labels */
	std::getline(input_file, line);
	mtx.lock();
	progress += line.size() + 1;	// update progress
	mtx.unlock();
	output_file_l << line << "\tP\n";	// write logical file head text
	output_file_n << line << "\tP\tCorr\n";	// write numerical file head text
	position = line.find("\t");
	line = line.substr(position + 1);	// remove string "k-mer"
	position = line.find("\t");
	while (position != line.npos)
	{
		std::string sample_name = line.substr(0, position);
		head_value.push_back(sample_name);
		if (p.trait_information_map.find(sample_name) != p.trait_information_map.end()) sample_valid.push_back(true);
		else sample_valid.push_back(false);
		line = line.substr(position + 1);
		position = line.find("\t");
	}
	head_value.push_back(line);
	if (p.trait_information_map.find(line) != p.trait_information_map.end()) sample_valid.push_back(true);
	else sample_valid.push_back(false);

	/* filtering */
	while (std::getline(input_file, line))
	{
		std::string src_line(line);
		position = line.find("\t");
		line = line.substr(position + 1);	// remove first k-mer
		position = line.find("\t");
		std::vector<float> group1, group2, kmer_fre;
		int cnt = 0;
		while (position != line.npos)
		{
			std::string value_str = line.substr(0, position);
			float value_float = std::stof(value_str);
			/* logical filtering */
			if (sample_valid[cnt] == true)		// existence
			{
				kmer_fre.push_back(value_float);
				if (value_float == 0) group1.push_back(std::stof(p.trait_information_map[head_value[cnt]]));
				else group2.push_back(std::stof(p.trait_information_map[head_value[cnt]]));
			}
			line = line.substr(position + 1);
			position = line.find("\t");
			++cnt;
		}
		/* calculation */
		float pValue = ranksums(group1, group2);
		if (pValue < p.p_value)
		{
			output_file_l << src_line << '\t' << std::to_string(pValue) << '\n';
		}
		else
		{
			std::vector<float> group;
			group.insert(group.end(), group1.begin(), group1.end());
			group.insert(group.end(), group2.begin(), group2.end());
			float corr = spearman_correlation_coefficient(kmer_fre, group);	// calculate spearman correlation
			if (corr >= p.corr_vaule)
			{
				output_file_n << src_line << '\t' << std::to_string(pValue) << '\t' << std::to_string(corr) << '\n';
			}
		}
		mtx.lock();
		progress += src_line.size() + 1;	// update progress
		mtx.unlock();
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x8a8, %rsp            # imm = 0x8A8
movq %rdx, %r14
movl %edi, %ebx
leaq 0x70(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x1a0(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movq (%rsi), %rax
movl %edi, %ecx
shll $0x5, %ecx
leaq 0x158(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
leaq 0x148(%rsp), %rdi
callq 0x40805e
leaq 0x238(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0x80(%r14), %rsi
movq %r14, 0x80(%rsp)
movq 0x88(%r14), %rdx
addq %rsi, %rdx
leaq 0x228(%rsp), %rdi
callq 0x40805e
movzwl %bx, %ebp
movl $0x1, %r14d
cmpw $0xa, %bp
jb 0x40e8ab
movl $0x2, %r14d
cmpw $0x64, %bx
jb 0x40e8ab
movl $0x3, %r14d
cmpl $0x3e8, %ebp            # imm = 0x3E8
jb 0x40e8ab
cmpl $0x2710, %ebp           # imm = 0x2710
movl $0x5, %r14d
sbbl $0x0, %r14d
movl %r14d, %esi
leaq 0x4b8(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x4a8(%rsp), %rdi
movl $0x2d, %edx
callq 0x48b9e0
leaq 0x4a8(%rsp), %r15
movq (%r15), %rdi
movl %r14d, %esi
movl %ebp, %edx
callq 0x407ff1
leaq 0x194c35(%rip), %rcx    # 0x5a351e
movl $0xd, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x48d070
leaq 0x2b0(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x40e92b
movq %rdx, 0x2a0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x2b0(%rsp)
jmp 0x40e932
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
leaq 0x2a0(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x194964(%rip), %rsi    # 0x5a32bc
callq 0x48d830
leaq 0x1f8(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x40e98d
movq %rdx, 0x1e8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1f8(%rsp)
jmp 0x40e994
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rsi
leaq 0x1e8(%rsp), %rdx
movq %rsi, 0x8(%rdx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x280(%rsp), %rdi
leaq 0x228(%rsp), %rsi
callq 0x407b32
movq 0x1e8(%rsp), %rdi
cmpq %r14, %rdi
je 0x40e9e5
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movq 0x2a0(%rsp), %rdi
cmpq %r15, %rdi
je 0x40ea02
movq 0x2b0(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movq 0x4a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x40ea1f
movq 0x4b8(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movq 0x228(%rsp), %rdi
cmpq %r13, %rdi
je 0x40ea3c
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x41b3a0
leaq 0x218(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0x80(%rsp), %rax
movq 0x80(%rax), %rsi
movq 0x88(%rax), %rdx
addq %rsi, %rdx
leaq 0x208(%rsp), %rdi
callq 0x40805e
movl $0x1, %r14d
cmpw $0xa, %bx
jb 0x40eaa4
movl $0x2, %r14d
cmpw $0x64, %bx
jb 0x40eaa4
movl $0x3, %r14d
cmpl $0x3e8, %ebp            # imm = 0x3E8
jb 0x40eaa4
cmpl $0x2710, %ebp           # imm = 0x2710
movl $0x5, %r14d
sbbl $0x0, %r14d
movl %r14d, %esi
leaq 0x4a8(%rsp), %rdi
movq %r12, (%rdi)
movl $0x2d, %edx
callq 0x48b9e0
leaq 0x4a8(%rsp), %rbx
movq (%rbx), %rdi
movl %r14d, %esi
movl %ebp, %edx
callq 0x407ff1
leaq 0x194a54(%rip), %rcx    # 0x5a352c
movl $0xd, %r8d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x48d070
movq %r15, 0x2a0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x40eb16
movq %rdx, 0x2a0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x2b0(%rsp)
jmp 0x40eb1d
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
leaq 0x2a0(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x194779(%rip), %rsi    # 0x5a32bc
callq 0x48d830
leaq 0x1d8(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x40eb78
movq %rdx, 0x1c8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1d8(%rsp)
jmp 0x40eb7f
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rsi
leaq 0x1c8(%rsp), %rdx
movq %rsi, 0x8(%rdx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x260(%rsp), %rdi
leaq 0x208(%rsp), %rsi
callq 0x407b32
movq 0x1c8(%rsp), %rdi
cmpq %r14, %rdi
je 0x40ebd0
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movq 0x2a0(%rsp), %rdi
cmpq %r15, %rdi
je 0x40ebed
movq 0x2b0(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movq 0x4a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x40ec0a
movq 0x4b8(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movq 0x208(%rsp), %rdi
cmpq %r13, %rdi
je 0x40ec27
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x41b3a0
leaq 0x2a0(%rsp), %rbx
leaq 0x148(%rsp), %rsi
movq %rbx, %rdi
movl $0x8, %edx
callq 0x462170
leaq 0x4a8(%rsp), %rdi
leaq 0x280(%rsp), %rsi
movl $0x10, %edx
callq 0x4622e0
leaq 0x6a8(%rsp), %rdi
leaq 0x260(%rsp), %rsi
movl $0x10, %edx
callq 0x4622e0
xorps %xmm0, %xmm0
movaps %xmm0, 0x170(%rsp)
xorl %eax, %eax
movq %rax, 0x180(%rsp)
movq %rax, 0x88(%rsp)
movl %eax, 0x90(%rsp)
movq %rax, 0x98(%rsp)
movl %eax, 0xa0(%rsp)
movq %rax, 0xa8(%rsp)
movq 0x2a0(%rsp), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x4668d0
movsbl %al, %edx
leaq 0x2a0(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x41d5a0
leaq 0x20da40(%rip), %rdi    # 0x61c728
callq 0x4fbcf0
testl %eax, %eax
jne 0x40f884
movq 0x68(%rsp), %rax
movq 0x20da17(%rip), %rcx    # 0x61c718
addq %rcx, %rax
incq %rax
movq %rax, 0x20da0a(%rip)    # 0x61c718
leaq 0x20da13(%rip), %rdi    # 0x61c728
callq 0x4fcbd0
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
leaq 0x4a8(%rsp), %rdi
callq 0x485780
leaq 0x194802(%rip), %rsi    # 0x5a353a
movl $0x3, %edx
movq %rax, %rdi
callq 0x485780
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
leaq 0x6a8(%rsp), %rdi
callq 0x485780
leaq 0x1947db(%rip), %rsi    # 0x5a353e
movl $0x8, %edx
movq %rax, %rdi
callq 0x485780
leaq 0x1947a5(%rip), %rsi    # 0x5a351c
leaq 0x60(%rsp), %rbx
movl $0x1, %ecx
movq %rbx, %rdi
xorl %edx, %edx
callq 0x48daf0
leaq 0x1(%rax), %rdx
leaq 0x38(%rsp), %rdi
movq %rbx, %rsi
movq $-0x1, %rcx
callq 0x48e8b0
leaq 0x60(%rsp), %rdi
leaq 0x38(%rsp), %rbx
movq %rbx, %rsi
callq 0x48c0d0
movq (%rbx), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x40edcf
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x41b3a0
leaq 0x194746(%rip), %rsi    # 0x5a351c
leaq 0x60(%rsp), %rdi
movl $0x1, %ecx
xorl %edx, %edx
callq 0x48daf0
cmpq $-0x1, %rax
je 0x40eed8
movq %rax, %r13
movq 0x80(%rsp), %rax
leaq 0x158(%rax), %rbx
leaq 0x160(%rax), %r12
leaq 0x38(%rsp), %r14
leaq 0x60(%rsp), %r15
leaq 0x10(%rsp), %rbp
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
movq %r13, %rcx
callq 0x48e8b0
leaq 0x170(%rsp), %rdi
movq %r14, %rsi
callq 0x40b16e
movq %rbx, %rdi
movq %r14, %rsi
callq 0x410394
xorl %esi, %esi
cmpq %r12, %rax
setne %sil
leaq 0x88(%rsp), %rdi
callq 0x4101e8
incq %r13
movq %rbp, %rdi
movq %r15, %rsi
movq %r13, %rdx
movq $-0x1, %rcx
callq 0x48e8b0
movq %r15, %rdi
movq %rbp, %rsi
callq 0x48c0d0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x40ee99
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movl $0x1, %ecx
movq %r15, %rdi
leaq 0x194674(%rip), %rsi    # 0x5a351c
xorl %edx, %edx
callq 0x48daf0
movq %rax, %r13
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x40eece
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x41b3a0
cmpq $-0x1, %r13
jne 0x40ee19
leaq 0x170(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x40b16e
movq 0x80(%rsp), %r15
leaq 0x158(%r15), %rdi
leaq 0x60(%rsp), %rsi
movq %rdi, 0x168(%rsp)
callq 0x410394
leaq 0x160(%r15), %rcx
xorl %esi, %esi
cmpq %rcx, %rax
setne %sil
leaq 0x88(%rsp), %rdi
callq 0x4101e8
leaq 0x60(%rsp), %r13
leaq 0x10(%rsp), %r12
leaq 0x110(%rsp), %rbp
leaq 0x2a0(%rsp), %rbx
movq 0x2a0(%rsp), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4668d0
movsbl %al, %edx
movq %rbx, %rdi
movq %r13, %rsi
callq 0x41d5a0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x40f6ae
leaq 0x48(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
leaq 0x38(%rsp), %rdi
callq 0x40805e
movl $0x1, %ecx
movq %r13, %rdi
leaq 0x194571(%rip), %rsi    # 0x5a351c
xorl %edx, %edx
callq 0x48daf0
leaq 0x1(%rax), %rdx
movq %r12, %rdi
movq %r13, %rsi
movq $-0x1, %rcx
callq 0x48e8b0
movq %r13, %rdi
movq %r12, %rsi
callq 0x48c0d0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x40efef
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movl $0x1, %ecx
movq %r13, %rdi
leaq 0x19451e(%rip), %rsi    # 0x5a351c
xorl %edx, %edx
callq 0x48daf0
movq %rax, %r14
xorl %eax, %eax
movq %rax, 0x100(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0xf0(%rsp)
movq %rax, 0xe0(%rsp)
movaps %xmm0, 0xd0(%rsp)
movq %rax, 0x140(%rsp)
movaps %xmm0, 0x130(%rsp)
cmpq $-0x1, %r14
je 0x40f2fa
movq $0x0, 0x30(%rsp)
xorl %ebx, %ebx
leaq 0x10(%rsp), %rdi
movq %r13, %rsi
xorl %edx, %edx
movq %r14, %rcx
callq 0x48e8b0
movq 0x10(%rsp), %r15
callq 0x4c5370
movq %rax, %r13
movq %rbp, %rsi
movl (%rax), %ebp
movl $0x0, (%rax)
movq %r15, %rdi
movq %rsi, %r12
callq 0x4dc8a0
cmpq %r15, 0x110(%rsp)
je 0x40f835
movl (%r13), %eax
testl %eax, %eax
je 0x40f0a7
cmpl $0x22, %eax
jne 0x40f0ab
jmp 0x40f841
movl %ebp, (%r13)
movss %xmm0, 0xb0(%rsp)
movq 0x88(%rsp), %rax
movq %rbx, %rcx
shrq $0x6, %rcx
movq (%rax,%rcx,8), %rax
btq %rbx, %rax
movq %r12, %rbp
jae 0x40f241
movq 0x138(%rsp), %rsi
cmpq 0x140(%rsp), %rsi
je 0x40f0f8
movss %xmm0, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x138(%rsp)
jmp 0x40f10d
leaq 0x130(%rsp), %rdi
leaq 0xb0(%rsp), %rdx
callq 0x410512
movss 0xb0(%rsp), %xmm0
ucomiss 0x1943bb(%rip), %xmm0   # 0x5a34d8
jne 0x40f175
jp 0x40f175
movq 0x170(%rsp), %rsi
addq 0x30(%rsp), %rsi
movq 0x168(%rsp), %rdi
callq 0x40b06a
movq (%rax), %r15
movq %rbp, %rsi
movl (%r13), %ebp
movl $0x0, (%r13)
movq %r15, %rdi
callq 0x4dc8a0
cmpq %r15, 0x110(%rsp)
je 0x40f84d
movl (%r13), %eax
testl %eax, %eax
je 0x40f1c9
cmpl $0x22, %eax
jne 0x40f1cd
jmp 0x40f865
movq 0x170(%rsp), %rsi
addq 0x30(%rsp), %rsi
movq 0x168(%rsp), %rdi
callq 0x40b06a
movq (%rax), %r15
movq %rbp, %rsi
movl (%r13), %ebp
movl $0x0, (%r13)
movq %r15, %rdi
callq 0x4dc8a0
cmpq %r15, 0x110(%rsp)
je 0x40f859
movl (%r13), %eax
testl %eax, %eax
je 0x40f20e
cmpl $0x22, %eax
jne 0x40f212
jmp 0x40f871
movl %ebp, (%r13)
movss %xmm0, 0xc(%rsp)
movq 0xf8(%rsp), %rsi
cmpq 0x100(%rsp), %rsi
je 0x40f1f7
movss %xmm0, (%rsi)
addq $0x4, %rsi
movq %rsi, 0xf8(%rsp)
jmp 0x40f23e
leaq 0xf0(%rsp), %rdi
leaq 0xc(%rsp), %rdx
callq 0x40bd30
movq %r12, %rbp
jmp 0x40f241
movl %ebp, (%r13)
movss %xmm0, 0xc(%rsp)
movq 0xd8(%rsp), %rsi
cmpq 0xe0(%rsp), %rsi
je 0x40f2e0
movss %xmm0, (%rsi)
addq $0x4, %rsi
movq %rsi, 0xd8(%rsp)
movq %r12, %rbp
incq %r14
movq %rbp, %rdi
leaq 0x60(%rsp), %r13
movq %r13, %rsi
movq %r14, %rdx
movq $-0x1, %rcx
callq 0x48e8b0
movq %r13, %rdi
movq %rbp, %rsi
callq 0x48c0d0
movq 0x110(%rsp), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0x40f28e
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movl $0x1, %ecx
movq %r13, %rdi
leaq 0x19427f(%rip), %rsi    # 0x5a351c
xorl %edx, %edx
callq 0x48daf0
movq %rax, %r14
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
movq 0x80(%rsp), %r15
je 0x40f2cb
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x41b3a0
addq $0x20, 0x30(%rsp)
incq %rbx
cmpq $-0x1, %r14
jne 0x40f052
jmp 0x40f2fa
leaq 0xd0(%rsp), %rdi
leaq 0xc(%rsp), %rdx
callq 0x40bd30
movq %r12, %rbp
jmp 0x40f241
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x41a233
movss %xmm0, 0x30(%rsp)
leaq 0x10(%rsp), %r12
movss 0x14(%r15), %xmm0
ucomiss 0x30(%rsp), %xmm0
jbe 0x40f3d1
movq 0x38(%rsp), %rsi
movq 0x40(%rsp), %rdx
leaq 0x4a8(%rsp), %rdi
callq 0x485780
movb $0x9, 0x10(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x485780
movq %rax, %r14
xorps %xmm0, %xmm0
cvtss2sd 0x30(%rsp), %xmm0
movl $0x3a, %edx
movq %r12, %rdi
movq $0x4f3270, %rsi         # imm = 0x4F3270
leaq 0x1b8c13(%rip), %rcx    # 0x5c7f8c
movb $0x1, %al
callq 0x4102e2
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %r14, %rdi
callq 0x485780
movb $0xa, 0x110(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x485780
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
leaq 0x20d36a(%rip), %rbx    # 0x61c728
je 0x40f601
movq 0x20(%rsp), %rsi
incq %rsi
jmp 0x40f5fc
xorps %xmm0, %xmm0
movaps %xmm0, 0xb0(%rsp)
movq $0x0, 0xc0(%rsp)
movq 0xb8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
movq 0xf8(%rsp), %rcx
leaq 0xb0(%rsp), %rbx
movq %rbx, %rdi
callq 0x410cee
movq 0xb8(%rsp), %rsi
movq 0xd0(%rsp), %rdx
movq 0xd8(%rsp), %rcx
movq %rbx, %rdi
callq 0x410cee
leaq 0x1b0(%rsp), %rdi
leaq 0x130(%rsp), %rsi
callq 0x40c0a2
leaq 0x248(%rsp), %rbx
movq %rbx, %rdi
leaq 0xb0(%rsp), %rsi
callq 0x40c0a2
leaq 0x1b0(%rsp), %rdi
movq %rbx, %rsi
callq 0x41a475
movss %xmm0, 0x5c(%rsp)
movq 0x248(%rsp), %rdi
testq %rdi, %rdi
leaq 0x20d2a3(%rip), %rbx    # 0x61c728
je 0x40f497
movq 0x258(%rsp), %rsi
subq %rdi, %rsi
callq 0x41b3a0
movq 0x1b0(%rsp), %rdi
testq %rdi, %rdi
je 0x40f4b4
movq 0x1c0(%rsp), %rsi
subq %rdi, %rsi
callq 0x41b3a0
movss 0x5c(%rsp), %xmm0
ucomiss 0x1c(%r15), %xmm0
jb 0x40f5e4
movq 0x38(%rsp), %rsi
movq 0x40(%rsp), %rdx
leaq 0x6a8(%rsp), %rdi
callq 0x485780
movb $0x9, 0x10(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x485780
movq %rax, %r14
xorps %xmm0, %xmm0
cvtss2sd 0x30(%rsp), %xmm0
movl $0x3a, %edx
movq %r12, %rdi
movq $0x4f3270, %rsi         # imm = 0x4F3270
leaq 0x1b8a79(%rip), %rcx    # 0x5c7f8c
movb $0x1, %al
callq 0x4102e2
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %r14, %rdi
callq 0x485780
movb $0x9, 0x110(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x485780
movq %rax, %r14
xorps %xmm0, %xmm0
cvtss2sd 0x5c(%rsp), %xmm0
movl $0x3a, %edx
movq %rbp, %rdi
movq $0x4f3270, %rsi         # imm = 0x4F3270
leaq 0x1b8a26(%rip), %rcx    # 0x5c7f8c
movb $0x1, %al
callq 0x4102e2
movq 0x110(%rsp), %rsi
movq 0x118(%rsp), %rdx
movq %r14, %rdi
callq 0x485780
movb $0xa, 0xc(%rsp)
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc(%rsp), %rsi
callq 0x485780
movq 0x110(%rsp), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
leaq 0x20d172(%rip), %rbx    # 0x61c728
je 0x40f5c8
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x40f5e4
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x40f601
movq 0xc0(%rsp), %rsi
subq %rdi, %rsi
callq 0x41b3a0
movq %rbx, %rdi
callq 0x4fbcf0
testl %eax, %eax
jne 0x40f87d
movq 0x40(%rsp), %rax
movq 0x20d0fb(%rip), %rcx    # 0x61c718
addq %rcx, %rax
incq %rax
movq %rax, 0x20d0ee(%rip)    # 0x61c718
movq %rbx, %rdi
callq 0x4fcbd0
movq 0x130(%rsp), %rdi
testq %rdi, %rdi
je 0x40f64f
movq 0x140(%rsp), %rsi
subq %rdi, %rsi
callq 0x41b3a0
movq 0xd0(%rsp), %rdi
testq %rdi, %rdi
je 0x40f66c
movq 0xe0(%rsp), %rsi
subq %rdi, %rsi
callq 0x41b3a0
movq 0xf0(%rsp), %rdi
testq %rdi, %rdi
je 0x40f689
movq 0x100(%rsp), %rsi
subq %rdi, %rsi
callq 0x41b3a0
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x40ef3a
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x41b3a0
jmp 0x40ef3a
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0x40f6f3
movq 0xa8(%rsp), %rsi
subq %rdi, %rsi
callq 0x41b3a0
xorl %eax, %eax
movq %rax, 0x88(%rsp)
movl %eax, 0x90(%rsp)
movq %rax, 0x98(%rsp)
movl %eax, 0xa0(%rsp)
movq %rax, 0xa8(%rsp)
leaq 0x170(%rsp), %rdi
callq 0x407c92
movq $0x615fe8, %rax         # imm = 0x615FE8
movq (%rax), %rbx
movq 0x18(%rax), %r14
leaq 0x6b0(%rsp), %rdi
movq %rbx, -0x8(%rdi)
movq -0x18(%rbx), %rax
movq %r14, 0x6a8(%rsp,%rax)
callq 0x460dc0
movl $0xf8, %r15d
leaq 0x6a8(%rsp), %rdi
addq %r15, %rdi
callq 0x467cf0
leaq 0x4b0(%rsp), %rdi
movq %rbx, -0x8(%rdi)
movq -0x18(%rbx), %rax
movq %r14, 0x4a8(%rsp,%rax)
callq 0x460dc0
leaq 0x4a8(%rsp), %rdi
addq %r15, %rdi
callq 0x467cf0
leaq 0x2a0(%rsp), %rdi
callq 0x462ea0
leaq 0x270(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x40f79c
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x41b3a0
leaq 0x290(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x40f7bd
movq 0x290(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movq 0x148(%rsp), %rdi
leaq 0x158(%rsp), %rax
cmpq %rax, %rdi
je 0x40f7e2
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movq 0x190(%rsp), %rdi
leaq 0x1a0(%rsp), %rax
cmpq %rax, %rdi
je 0x40f807
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x40f823
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x41b3a0
addq $0x8a8, %rsp            # imm = 0x8A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x193d0b(%rip), %rdi    # 0x5a3547
callq 0x402ab8
leaq 0x193cff(%rip), %rdi    # 0x5a3547
callq 0x402b68
leaq 0x193cf3(%rip), %rdi    # 0x5a3547
callq 0x402ab8
leaq 0x193ce7(%rip), %rdi    # 0x5a3547
callq 0x402ab8
leaq 0x193cdb(%rip), %rdi    # 0x5a3547
callq 0x402b68
leaq 0x193ccf(%rip), %rdi    # 0x5a3547
callq 0x402b68
movl %eax, %edi
callq 0x402db7
movl %eax, %edi
callq 0x402db7
jmp 0x40faaa
jmp 0x40faaa
movq %rax, %rbx
jmp 0x40fbc2
movq %rax, %rbx
jmp 0x40fbcf
movq %rax, %rbx
jmp 0x40fbdc
movq %rax, %rbx
movq 0x1c8(%rsp), %rdi
cmpq %r14, %rdi
je 0x40f8d2
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x41b3a0
jmp 0x40f8d2
movq %rax, %rbx
movq 0x2a0(%rsp), %rdi
cmpq %r15, %rdi
je 0x40f8f4
movq 0x2b0(%rsp), %rsi
incq %rsi
callq 0x41b3a0
jmp 0x40f8f4
movq %rax, %rbx
movq 0x4a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x40f916
movq 0x4b8(%rsp), %rsi
incq %rsi
callq 0x41b3a0
jmp 0x40f916
movq %rax, %rbx
movq 0x208(%rsp), %rdi
cmpq %r13, %rdi
je 0x40fbfd
movq 0x218(%rsp), %rsi
jmp 0x40fbf5
movq %rax, %rbx
jmp 0x40fbfd
movq %rax, %rbx
movq 0x1e8(%rsp), %rdi
cmpq %r14, %rdi
je 0x40f961
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x41b3a0
jmp 0x40f961
movq %rax, %rbx
movq 0x2a0(%rsp), %rdi
cmpq %r15, %rdi
je 0x40f983
movq 0x2b0(%rsp), %rsi
incq %rsi
callq 0x41b3a0
jmp 0x40f983
movq %rax, %rbx
movq 0x4a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x40f9a5
movq 0x4b8(%rsp), %rsi
incq %rsi
callq 0x41b3a0
jmp 0x40f9a5
movq %rax, %rbx
movq 0x228(%rsp), %rdi
cmpq %r13, %rdi
je 0x40fc1e
movq 0x238(%rsp), %rsi
jmp 0x40fc16
movq %rax, %rbx
jmp 0x40fc1e
movq %rax, %rbx
jmp 0x40fc43
jmp 0x40f9e4
jmp 0x40fa7f
jmp 0x40faaa
jmp 0x40fa7f
movq %rax, %rbx
jmp 0x40fa55
movq %rax, %rbx
jmp 0x40fa13
jmp 0x40fa7f
movq %rax, %rbx
movq 0x248(%rsp), %rdi
testq %rdi, %rdi
je 0x40fa13
movq 0x258(%rsp), %rsi
subq %rdi, %rsi
callq 0x41b3a0
movq 0x1b0(%rsp), %rdi
testq %rdi, %rdi
je 0x40fa82
movq 0x1c0(%rsp), %rsi
subq %rdi, %rsi
jmp 0x40fa6c
movq %rax, %rbx
movq 0x110(%rsp), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0x40fa55
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x40fa82
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x41b3a0
jmp 0x40fa82
jmp 0x40fac1
jmp 0x40faaa
jmp 0x40faa0
jmp 0x40faa0
jmp 0x40fac1
jmp 0x40fabc
movq %rax, %rbx
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x40faf0
movq 0xc0(%rsp), %rsi
subq %rdi, %rsi
jmp 0x40faeb
jmp 0x40faaa
jmp 0x40faa0
movq %rax, %rbx
jmp 0x40fb47
jmp 0x40fac1
movq %rax, %rbx
jmp 0x40fb63
jmp 0x40fabc
jmp 0x40fabc
jmp 0x40fac6
jmp 0x40fabc
jmp 0x40fac6
movq %rax, %rbx
jmp 0x40fad4
movq %rax, %rbx
jmp 0x40faf0
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0x40fad4
movl %ebp, (%r13)
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x40faf0
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movq 0x130(%rsp), %rdi
testq %rdi, %rdi
je 0x40fb0d
movq 0x140(%rsp), %rsi
subq %rdi, %rsi
callq 0x41b3a0
movq 0xd0(%rsp), %rdi
testq %rdi, %rdi
je 0x40fb2a
movq 0xe0(%rsp), %rsi
subq %rdi, %rsi
callq 0x41b3a0
movq 0xf0(%rsp), %rdi
testq %rdi, %rdi
je 0x40fb47
movq 0x100(%rsp), %rsi
subq %rdi, %rsi
callq 0x41b3a0
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x40fb63
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0x40fba8
movq 0xa8(%rsp), %rsi
subq %rdi, %rsi
callq 0x41b3a0
xorl %eax, %eax
movq %rax, 0x88(%rsp)
movl %eax, 0x90(%rsp)
movq %rax, 0x98(%rsp)
movl %eax, 0xa0(%rsp)
movq %rax, 0xa8(%rsp)
leaq 0x170(%rsp), %rdi
callq 0x407c92
leaq 0x6a8(%rsp), %rdi
callq 0x462d60
leaq 0x4a8(%rsp), %rdi
callq 0x462d60
leaq 0x2a0(%rsp), %rdi
callq 0x462ea0
leaq 0x270(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x40fbfd
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x41b3a0
leaq 0x290(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x40fc1e
movq 0x290(%rsp), %rsi
incq %rsi
callq 0x41b3a0
leaq 0x158(%rsp), %rax
movq 0x148(%rsp), %rdi
cmpq %rax, %rdi
je 0x40fc43
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x41b3a0
leaq 0x1a0(%rsp), %rax
movq 0x190(%rsp), %rdi
cmpq %rax, %rdi
je 0x40fc68
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x40fc84
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x41b3a0
movq %rbx, %rdi
callq 0x4c0230