// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::details::collector_helper<double>::collection_pass(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, 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>>>>&, bool, bool, bool, exprtk::symbol_table<double>&)
static inline bool collection_pass(const std::string& expression_string,
                                            std::set<std::string>& symbol_set,
                                            const bool collect_variables,
                                            const bool collect_functions,
                                            const bool vector_pass,
                                            symbol_table_t& ext_symbol_table)
         {
            symbol_table_t symbol_table;
            expression_t   expression;
            parser_t       parser;

            resolve_as_vector vect_resolver;

            expression.register_symbol_table(symbol_table    );
            expression.register_symbol_table(ext_symbol_table);

            if (vector_pass)
               parser.enable_unknown_symbol_resolver(&vect_resolver);
            else
               parser.enable_unknown_symbol_resolver();

            if (collect_variables)
               parser.dec().collect_variables() = true;

            if (collect_functions)
               parser.dec().collect_functions() = true;

            bool pass_result = false;

            details::disable_type_checking(parser);

            if (parser.compile(expression_string, expression))
            {
               pass_result = true;

               std::deque<symbol_t> symb_list;
               parser.dec().symbols(symb_list);

               for (std::size_t i = 0; i < symb_list.size(); ++i)
               {
                  symbol_set.insert(symb_list[i].first);
               }
            }

            return pass_result;
         }

// Assembly:
subq $0xb88, %rsp            # imm = 0xB88
movb %r8b, %al
movq %rdi, 0xb80(%rsp)
movq %rsi, 0xb78(%rsp)
andb $0x1, %dl
movb %dl, 0xb77(%rsp)
andb $0x1, %cl
movb %cl, 0xb76(%rsp)
andb $0x1, %al
movb %al, 0xb75(%rsp)
movq %r9, 0xb68(%rsp)
leaq 0xb60(%rsp), %rdi
movl $0x1, %esi
callq 0x22de90
leaq 0xb40(%rsp), %rdi
callq 0x22e450
jmp 0x56e550
leaq 0xb8(%rsp), %rdi
movl $0x7f, %esi
callq 0x22e5b0
jmp 0x56e564
leaq 0x208(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x22e6e0
jmp 0x56e57b
leaq 0xb8(%rsp), %rdi
callq 0x22ef10
leaq 0xa8(%rsp), %rdi
callq 0x56e910
jmp 0x56e597
leaq 0xb40(%rsp), %rdi
leaq 0xb60(%rsp), %rsi
callq 0x22e500
jmp 0x56e5ae
movq 0xb68(%rsp), %rsi
leaq 0xb40(%rsp), %rdi
callq 0x22e500
jmp 0x56e5c5
testb $0x1, 0xb75(%rsp)
je 0x56e679
leaq 0x208(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x56e950
jmp 0x56e5ea
jmp 0x56e68e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb38(%rsp)
movl %eax, 0xb34(%rsp)
jmp 0x56e867
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb38(%rsp)
movl %eax, 0xb34(%rsp)
jmp 0x56e85a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb38(%rsp)
movl %eax, 0xb34(%rsp)
leaq 0xb8(%rsp), %rdi
callq 0x22ef10
jmp 0x56e85a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb38(%rsp)
movl %eax, 0xb34(%rsp)
jmp 0x56e84d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb38(%rsp)
movl %eax, 0xb34(%rsp)
jmp 0x56e840
xorl %eax, %eax
movl %eax, %esi
leaq 0x208(%rsp), %rdi
callq 0x56e950
jmp 0x56e68c
jmp 0x56e68e
testb $0x1, 0xb77(%rsp)
je 0x56e6b0
leaq 0x208(%rsp), %rdi
callq 0x5657b0
movq %rax, %rdi
callq 0x25ec00
movb $0x1, (%rax)
testb $0x1, 0xb76(%rsp)
je 0x56e6d2
leaq 0x208(%rsp), %rdi
callq 0x5657b0
movq %rax, %rdi
callq 0x25ec20
movb $0x1, (%rax)
movb $0x0, 0xa7(%rsp)
leaq 0x208(%rsp), %rdi
callq 0x56e9a0
jmp 0x56e6e9
movq 0xb80(%rsp), %rsi
leaq 0x208(%rsp), %rdi
leaq 0xb40(%rsp), %rdx
callq 0x22ef80
movb %al, 0x37(%rsp)
jmp 0x56e70c
movb 0x37(%rsp), %al
testb $0x1, %al
jne 0x56e719
jmp 0x56e7f3
movb $0x1, 0xa7(%rsp)
leaq 0x50(%rsp), %rdi
callq 0x5657a0
jmp 0x56e72d
leaq 0x208(%rsp), %rdi
callq 0x5657b0
movq %rax, %rdi
leaq 0x50(%rsp), %rsi
callq 0x5657d0
jmp 0x56e749
movq $0x0, 0x48(%rsp)
movq 0x48(%rsp), %rax
movq %rax, 0x28(%rsp)
leaq 0x50(%rsp), %rdi
callq 0x565a70
movq %rax, %rcx
movq 0x28(%rsp), %rax
cmpq %rcx, %rax
jae 0x56e7e9
movq 0xb78(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x48(%rsp), %rsi
leaq 0x50(%rsp), %rdi
callq 0x56e9c0
movq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x230320
movb %dl, 0x1f(%rsp)
movq %rax, 0x20(%rsp)
jmp 0x56e7a7
movb 0x1f(%rsp), %al
movq 0x20(%rsp), %rcx
movq %rcx, 0x38(%rsp)
movb %al, 0x40(%rsp)
movq 0x48(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x48(%rsp)
jmp 0x56e752
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb38(%rsp)
movl %eax, 0xb34(%rsp)
leaq 0x50(%rsp), %rdi
callq 0x565b60
jmp 0x56e840
leaq 0x50(%rsp), %rdi
callq 0x565b60
movb 0xa7(%rsp), %al
movb %al, 0xf(%rsp)
leaq 0xa8(%rsp), %rdi
callq 0x56e9f0
leaq 0x208(%rsp), %rdi
callq 0x22f8d0
leaq 0xb40(%rsp), %rdi
callq 0x22fb60
leaq 0xb60(%rsp), %rdi
callq 0x22fc60
movb 0xf(%rsp), %al
andb $0x1, %al
addq $0xb88, %rsp            # imm = 0xB88
retq
leaq 0xa8(%rsp), %rdi
callq 0x56e9f0
leaq 0x208(%rsp), %rdi
callq 0x22f8d0
leaq 0xb40(%rsp), %rdi
callq 0x22fb60
leaq 0xb60(%rsp), %rdi
callq 0x22fc60
movq 0xb38(%rsp), %rdi
callq 0x11b4e0
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)