// File: /workspace/github_cpp_makefile_star2_O2/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 $0x258, %rsp            # imm = 0x258
movq %rsi, 0x8(%rsp)
cmpb $0x0, 0xc(%rdi)
je 0x241bd
movq %rdx, %r15
movq %rdi, %rbx
movq 0x8(%rsp), %rax
cmpq $0x0, 0x28(%rax)
jne 0x24063
leaq 0xade4(%rip), %rsi      # 0x2ee37
movq %r15, %rdi
callq 0x96f3
testb %al, %al
jne 0x241bd
leaq 0xadcd(%rip), %rsi      # 0x2ee37
movq %r15, %rdi
callq 0x12f17
testb %al, %al
je 0x2416f
cmpq $0x0, 0x1e296(%rip)     # 0x42318
jne 0x2416f
movq (%r15), %rsi
leaq 0x50(%rsp), %rdi
pushq $0x8
popq %rdx
callq 0x5860
leaq 0x40(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x1e240(%rip), %rdi     # 0x422f0
movq 0x8(%rsp), %rsi
callq 0x244ac
leaq 0xc8(%rsp), %rdi
callq 0x50d0
testb %al, %al
jne 0x240fc
leaq 0xac69(%rip), %rsi      # 0x2ed3b
leaq 0x10(%rsp), %rdi
movq %r15, %rdx
callq 0x967d
leaq 0x1d3ea(%rip), %rdi     # 0x414d0
leaq 0x10(%rsp), %rsi
xorl %edx, %edx
callq 0x2bf18
leaq 0x10(%rsp), %rdi
callq 0x5908
leaq 0x50(%rsp), %r15
leaq 0x30(%rsp), %r12
leaq 0x1e1e3(%rip), %r13     # 0x422f0
movabsq $0x7fffffffffffffff, %rbp # imm = 0x7FFFFFFFFFFFFFFF
pushq $0xa
popq %r14
movq 0x50(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x70(%rsp,%rax)
jne 0x24151
movq %r15, %rdi
movq %r12, %rsi
callq 0x55c0
movq %r13, %rdi
movq %r12, %rsi
callq 0x248d6
movq %r15, %rdi
movq %rbp, %rsi
movl %r14d, %edx
callq 0x5280
jmp 0x2411b
leaq 0x50(%rsp), %rdi
callq 0x50a0
leaq 0x30(%rsp), %rdi
callq 0x5908
leaq 0x50(%rsp), %rdi
callq 0x58f8
movq (%rbx), %rax
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
xorl %ecx, %ecx
callq *0x10(%rax)
leaq 0x408(%rbx), %r14
leaq 0x1e164(%rip), %rdi     # 0x422f0
movq %r14, %rsi
callq 0xc0d2
leaq 0x1e15d(%rip), %rcx     # 0x422f8
cmpq %rcx, %rax
jne 0x241bd
movq 0x8(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
callq 0x16988
addq $0x8, %r15
cmpq %r15, %rax
jne 0x241bd
movb $0x0, 0xc(%rbx)
addq $0x258, %rsp            # imm = 0x258
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x5908
jmp 0x241e3
jmp 0x241e0
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x5908
leaq 0x50(%rsp), %rdi
callq 0x58f8
movq %rbx, %rdi
callq 0x5800
nop