// File: /workspace/github_cpp_makefile_star2_O3/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 0x2c052
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
cmpq $0x0, 0x28(%rsi)
jne 0x2beec
leaq 0xdffb(%rip), %rsi      # 0x39ed7
movq %r15, %rdi
callq 0x50e0
testl %eax, %eax
je 0x2c052
leaq 0xdfe4(%rip), %rsi      # 0x39ed7
movq %r15, %rdi
callq 0x50e0
testl %eax, %eax
je 0x2c009
cmpq $0x0, 0x1e3e5(%rip)     # 0x4a2f0
jne 0x2c009
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 0x1e38a(%rip), %rdi     # 0x4a2c8
movq %r14, %rsi
callq 0x2c3f2
leaq 0xb8(%rsp), %rdi
callq 0x50b0
testb %al, %al
jne 0x2bf91
leaq 0xde7d(%rip), %rsi      # 0x39ddb
leaq 0x20(%rsp), %rdi
movq %r15, %rdx
callq 0xb777
leaq 0x1d536(%rip), %rdi     # 0x494a8
leaq 0x20(%rsp), %rsi
xorl %edx, %edx
callq 0x36ec8
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2bf91
callq 0x5410
leaq 0x40(%rsp), %r15
movq %rsp, %r12
leaq 0x1e328(%rip), %r13     # 0x4a2c8
movabsq $0x7fffffffffffffff, %rbp # imm = 0x7FFFFFFFFFFFFFFF
movq 0x40(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x60(%rsp,%rax)
jne 0x2bfe2
movq %r15, %rdi
movq %r12, %rsi
callq 0x5590
movq %r13, %rdi
movq %r12, %rsi
callq 0x2c796
movq %r15, %rdi
movq %rbp, %rsi
movl $0xa, %edx
callq 0x5260
jmp 0x2bfaa
leaq 0x40(%rsp), %rdi
callq 0x50a0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x2bfff
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 0x1e2a2(%rip), %rdi     # 0x4a2c8
movq %r15, %rsi
callq 0xe5ba
leaq 0x1e29b(%rip), %rcx     # 0x4a2d0
cmpq %rcx, %rax
jne 0x2c052
movq %r14, %rdi
movq %r15, %rsi
callq 0x1b8cc
addq $0x8, %r14
cmpq %r14, %rax
jne 0x2c052
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 0x2c081
callq 0x5410
jmp 0x2c081
jmp 0x2c07e
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x2c094
callq 0x5410
leaq 0x40(%rsp), %rdi
callq 0x58a0
movq %rbx, %rdi
callq 0x57d0