// File: /workspace/github_cpp_makefile_star2_O3/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:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xac8, %rsp            # imm = 0xAC8
movq %r9, %r13
movl %r8d, %r12d
movl %ecx, 0x1c(%rsp)
movl %edx, %r15d
movq %rsi, %rbx
movq %rdi, 0x10(%rsp)
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movl $0x1, %esi
callq 0x1e5424
leaq 0x20(%rsp), %rdi
callq 0x1e56bc
leaq 0x50(%rsp), %rdi
movl $0x7f, %esi
callq 0x1e57c8
leaq 0x1a0(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x1e58c8
leaq 0x150(%rsp), %rdi
callq 0x1eb2ea
leaq 0x120(%rsp), %rdi
callq 0x1eb2ea
leaq 0xf0(%rsp), %rdi
callq 0x1eb2ea
leaq 0xc0(%rsp), %rdi
callq 0x1eb2ea
leaq 0x90(%rsp), %rdi
callq 0x1eb2ea
leaq 0x60(%rsp), %rdi
callq 0x1eb2ea
movl $0x1, 0x48(%rsp)
leaq 0x1c5b5f(%rip), %rax    # 0x53b978
movq %rax, 0x40(%rsp)
leaq 0x28(%rsp), %rbp
movq (%rbp), %rax
movq 0x8(%rbp), %rcx
movq %rcx, %rdx
subq %rax, %rdx
je 0x375e5a
sarq $0x3, %rdx
movq 0x8(%rsp), %rsi
cmpq $0x1, %rdx
adcq $0x0, %rdx
movq %rax, %rdi
cmpq %r14, %rdi
je 0x375e71
cmpq (%rdi), %rsi
je 0x375e71
addq $0x8, %rdi
decq %rdx
jne 0x375e47
leaq 0x8(%rsp), %rsi
movq %rbp, %rdi
callq 0x1eb0e8
movq 0x28(%rsp), %rax
movq 0x30(%rsp), %rcx
subq %rax, %rcx
je 0x375e99
sarq $0x3, %rcx
movq (%r13), %rdx
cmpq $0x1, %rcx
adcq $0x0, %rcx
cmpq %r13, %rax
je 0x375ea4
cmpq (%rax), %rdx
je 0x375ea4
addq $0x8, %rax
decq %rcx
jne 0x375e86
movq %rbp, %rdi
movq %r13, %rsi
callq 0x1eb0e8
leaq 0x580(%rsp), %rax
testb %r12b, %r12b
leaq 0x40(%rsp), %rcx
cmoveq %rax, %rcx
movb $0x1, -0x18(%rax)
movq %rcx, -0x8(%rax)
testb %r15b, %r15b
je 0x375ecd
movb $0x1, 0x458(%rsp)
cmpb $0x0, 0x1c(%rsp)
je 0x375edc
movb $0x1, 0x459(%rsp)
leaq 0x1a0(%rsp), %rdi
movb $0x0, 0x3ad(%rdi)
leaq 0x20(%rsp), %rdx
movq 0x10(%rsp), %rsi
callq 0x1e60ec
movl %eax, %ebp
testb %al, %al
je 0x376031
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %rdi
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
xorl %esi, %esi
callq 0x374878
movb %bpl, 0x10(%rsp)
leaq 0x450(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x372fea
movq $-0x1, %r14
xorl %r15d, %r15d
movabsq $-0x3333333333333333, %r12 # imm = 0xCCCCCCCCCCCCCCCD
movabsq $-0x5555555555555555, %r13 # imm = 0xAAAAAAAAAAAAAAAB
xorl %ebp, %ebp
movq 0x98(%rsp), %rax
movq 0x78(%rsp), %rdi
movq %rax, %rcx
subq %rdi, %rcx
sarq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
leaq (%rcx,%rcx,2), %rax
movq 0x80(%rsp), %rcx
subq 0x88(%rsp), %rcx
sarq $0x3, %rcx
imulq %r12, %rcx
leaq (%rcx,%rax,4), %rax
movq 0x60(%rsp), %rsi
movq 0x70(%rsp), %rcx
subq %rsi, %rcx
sarq $0x3, %rcx
imulq %r12, %rcx
addq %rax, %rcx
cmpq %rcx, %rbp
jae 0x376022
movq %rsi, %rdx
subq 0x68(%rsp), %rdx
sarq $0x3, %rdx
imulq %r12, %rdx
movq %rbp, %rcx
addq %rdx, %rcx
js 0x375fdc
cmpq $0xb, %rcx
ja 0x375fee
addq %r15, %rsi
jmp 0x37600b
movq %r14, %rax
subq %rdx, %rax
mulq %r13
shrq $0x3, %rdx
notq %rdx
jmp 0x375ff8
movq %rcx, %rax
mulq %r13
shrq $0x3, %rdx
imulq $-0x1e0, %rdx, %rax     # imm = 0xFE20
addq (%rdi,%rdx,8), %rax
leaq (%rcx,%rcx,4), %rcx
leaq (%rax,%rcx,8), %rsi
movq %rbx, %rdi
callq 0x1e757c
incq %rbp
addq $0x28, %r15
decq %r14
jmp 0x375f5d
leaq 0x50(%rsp), %rdi
callq 0x3731d8
movb 0x10(%rsp), %bpl
leaq 0x1a0(%rsp), %rdi
callq 0x1e6d46
leaq 0x20(%rsp), %rdi
callq 0x1e7008
leaq 0x8(%rsp), %rdi
callq 0x1e7056
movl %ebp, %eax
addq $0xac8, %rsp            # imm = 0xAC8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x37608a
jmp 0x376085
jmp 0x376085
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x1e60a4
jmp 0x3760a4
movq %rax, %rbx
jmp 0x3760a4
movq %rax, %rbx
jmp 0x3760ae
movq %rax, %rbx
jmp 0x376097
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x3731d8
leaq 0x1a0(%rsp), %rdi
callq 0x1e6d46
leaq 0x20(%rsp), %rdi
callq 0x1e7008
leaq 0x8(%rsp), %rdi
callq 0x1e7056
movq %rbx, %rdi
callq 0x11e330