// File: /workspace/github_cpp_makefile_star2_O1/auton1[P]viterbi/entry_filters.cpp
// Function: entry::filter_sites_to_keep(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&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void entry::filter_sites_to_keep(const set<string> &snps_to_keep, const string &snps_to_keep_file)
{
	// Filter sites by user provided list
	if(passed_filters == false)
		return;

	if ((snps_to_keep.empty()) && (snps_to_keep_file == ""))
		return;

	if (snps_to_keep_file != "" && local_snps_to_keep.empty())
	{
		ifstream in(snps_to_keep_file.c_str());
		string tmp;
		local_snps_to_keep = snps_to_keep;

		if (!in.is_open())
		{
			LOG.error("Could not open SNPs to Keep file" + snps_to_keep_file, 0);
		}
		while (!in.eof())
		{
			in >> tmp;
			local_snps_to_keep.insert(tmp);
			in.ignore(numeric_limits<streamsize>::max(), '\n');
		}

		in.close();
	}
	parse_basic_entry();

	if ( (local_snps_to_keep.find(ID) == local_snps_to_keep.end()) && (snps_to_keep.find(ID) == snps_to_keep.end()) )
		passed_filters = false;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x248, %rsp            # imm = 0x248
cmpb $0x0, 0xc(%rdi)
je 0x2c2d4
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
cmpq $0x0, 0x28(%rsi)
jne 0x2c16e
leaq 0xeda1(%rip), %rsi      # 0x3aeff
movq %r15, %rdi
callq 0x50e0
testl %eax, %eax
je 0x2c2d4
leaq 0xed8a(%rip), %rsi      # 0x3aeff
movq %r15, %rdi
callq 0x50e0
testl %eax, %eax
je 0x2c28b
cmpq $0x0, 0x1f163(%rip)     # 0x4b2f0
jne 0x2c28b
movq (%r15), %rsi
leaq 0x40(%rsp), %rdi
movl $0x8, %edx
callq 0x5820
leaq 0x10(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x1f108(%rip), %rdi     # 0x4b2c8
movq %r14, %rsi
callq 0x2c668
leaq 0xb8(%rsp), %rdi
callq 0x50b0
testb %al, %al
jne 0x2c213
leaq 0xec23(%rip), %rsi      # 0x3ae03
leaq 0x20(%rsp), %rdi
movq %r15, %rdx
callq 0xb7dd
leaq 0x1e2b4(%rip), %rdi     # 0x4a4a8
leaq 0x20(%rsp), %rsi
xorl %edx, %edx
callq 0x3721e
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2c213
callq 0x5410
leaq 0x40(%rsp), %r15
movq %rsp, %r12
leaq 0x1f0a6(%rip), %r13     # 0x4b2c8
movabsq $0x7fffffffffffffff, %rbp # imm = 0x7FFFFFFFFFFFFFFF
movq 0x40(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x60(%rsp,%rax)
jne 0x2c264
movq %r15, %rdi
movq %r12, %rsi
callq 0x5590
movq %r13, %rdi
movq %r12, %rsi
callq 0x2ca08
movq %r15, %rdi
movq %rbp, %rsi
movl $0xa, %edx
callq 0x5260
jmp 0x2c22c
leaq 0x40(%rsp), %rdi
callq 0x50a0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x2c281
callq 0x5410
leaq 0x40(%rsp), %rdi
callq 0x58a0
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
xorl %ecx, %ecx
callq *0x10(%rax)
leaq 0x408(%rbx), %r15
leaq 0x1f020(%rip), %rdi     # 0x4b2c8
movq %r15, %rsi
callq 0xe596
leaq 0x1f019(%rip), %rcx     # 0x4b2d0
cmpq %rcx, %rax
jne 0x2c2d4
movq %r14, %rdi
movq %r15, %rsi
callq 0x1b9c2
addq $0x8, %r14
cmpq %r14, %rax
jne 0x2c2d4
movb $0x0, 0xc(%rbx)
addq $0x248, %rsp            # imm = 0x248
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2c303
callq 0x5410
jmp 0x2c303
jmp 0x2c300
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x2c316
callq 0x5410
leaq 0x40(%rsp), %rdi
callq 0x58a0
movq %rbx, %rdi
callq 0x57d0