// File: /workspace/github_cpp_makefile_star2_O2/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::expression_generator<double>::synthesize_csocs_expression(exprtk::details::operator_type const&, exprtk::details::expression_node<double>* (&) [2])
inline expression_node_ptr synthesize_csocs_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2])
         {
            const std::string s0 = static_cast<details::string_literal_node<Type>*>(branch[0])->str();
            const std::string s1 = static_cast<details::string_literal_node<Type>*>(branch[1])->str();

            expression_node_ptr result = error_node();

            if (details::e_add == opr)
               result = node_allocator_->allocate_c<details::string_literal_node<Type> >(s0 + s1);
            else if (details::e_in == opr)
               result = node_allocator_->allocate_c<details::literal_node<Type> >(details::in_op   <Type>::process(s0,s1));
            else if (details::e_like == opr)
               result = node_allocator_->allocate_c<details::literal_node<Type> >(details::like_op <Type>::process(s0,s1));
            else if (details::e_ilike == opr)
               result = node_allocator_->allocate_c<details::literal_node<Type> >(details::ilike_op<Type>::process(s0,s1));
            else
            {
               expression_node_ptr temp = synthesize_sos_expression_impl<const std::string, const std::string>(opr, s0, s1);

               const Type v = temp->value();

               details::free_node(*node_allocator_,temp);

               result = node_allocator_->allocate<literal_node_t>(v);
            }

            details::free_all_nodes(*node_allocator_,branch);

            return result;
         }

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0xb0, %rsp
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r14
movq (%rdx), %rsi
addq $0x30, %rsi
leaq 0x50(%rsp), %rdi
callq 0x1182f0
movq 0x8(%rbx), %rsi
addq $0x30, %rsi
leaq 0x30(%rsp), %rdi
callq 0x1182f0
movl (%r15), %eax
cmpl $0x59, %eax
je 0x251c24
cmpl $0x57, %eax
je 0x251bd2
cmpl $0x58, %eax
je 0x251bfb
cmpl $0x2, %eax
jne 0x251c4d
movq 0x8(%r14), %r15
leaq 0x8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x258426
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
callq 0x2583d6
movq %rax, %r15
leaq 0x8(%rsp), %rdi
callq 0x118648
jmp 0x251cd3
movq 0x8(%r14), %r15
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x254606
leaq 0x8(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %r15, %rdi
callq 0x1ae9f6
jmp 0x251cd0
movq 0x8(%r14), %r15
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x254936
leaq 0x8(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %r15, %rdi
callq 0x1ae9f6
jmp 0x251cd0
movq 0x8(%r14), %r15
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x254d18
leaq 0x8(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %r15, %rdi
callq 0x1ae9f6
jmp 0x251cd0
leaq 0x90(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x1182f0
leaq 0x70(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x1182f0
leaq 0x90(%rsp), %rdx
leaq 0x70(%rsp), %rcx
movq %r14, %rdi
movq %r15, %rsi
callq 0x25845e
movq %rax, %r15
leaq 0x70(%rsp), %rdi
callq 0x118648
leaq 0x90(%rsp), %rdi
callq 0x118648
movq %r15, 0x8(%rsp)
movq (%r15), %rax
movq %r15, %rdi
callq *0x18(%rax)
movsd %xmm0, 0x28(%rsp)
movq 0x8(%r14), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1ad9c8
movq 0x8(%r14), %rdi
leaq 0x28(%rsp), %rsi
callq 0x1adef4
movq %rax, %r15
movq 0x8(%r14), %rdi
movq %rbx, %rsi
callq 0x22bbb4
leaq 0x30(%rsp), %rdi
callq 0x118648
leaq 0x50(%rsp), %rdi
callq 0x118648
movq %r15, %rax
addq $0xb0, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x118648
jmp 0x251d15
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
jmp 0x251d27
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x118648
jmp 0x251d3d
jmp 0x251d3a
jmp 0x251d3a
jmp 0x251d3a
jmp 0x251d3a
jmp 0x251d3a
jmp 0x251d3a
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x118648
jmp 0x251d4c
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x118648
movq %rbx, %rdi
callq 0x118360