// File: 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:
subq $0x178, %rsp            # imm = 0x178
movq %rdi, 0x170(%rsp)
movq %rsi, 0x168(%rsp)
movq %rdx, 0x160(%rsp)
movq 0x170(%rsp), %rax
movq %rax, 0x78(%rsp)
movq 0x160(%rsp), %rax
movq (%rax), %rsi
leaq 0x140(%rsp), %rdi
callq 0x4420a0
movq 0x160(%rsp), %rax
movq 0x8(%rax), %rsi
leaq 0x120(%rsp), %rdi
callq 0x4420a0
jmp 0x43946f
callq 0x2821f0
movq %rax, 0x108(%rsp)
movq 0x168(%rsp), %rcx
movl $0x2, %eax
cmpl (%rcx), %eax
jne 0x43954e
movq 0x78(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x70(%rsp)
leaq 0xe8(%rsp), %rdi
leaq 0x140(%rsp), %rsi
leaq 0x120(%rsp), %rdx
callq 0x44af70
jmp 0x4394be
movq 0x70(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0x44aef0
movq %rax, 0x68(%rsp)
jmp 0x4394d7
movq 0x68(%rsp), %rax
movq %rax, 0x108(%rsp)
leaq 0xe8(%rsp), %rdi
callq 0x11b838
jmp 0x4397e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x118(%rsp)
movl %eax, 0x114(%rsp)
jmp 0x439839
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x118(%rsp)
movl %eax, 0x114(%rsp)
jmp 0x43982c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x118(%rsp)
movl %eax, 0x114(%rsp)
leaq 0xe8(%rsp), %rdi
callq 0x11b838
jmp 0x43982c
movq 0x168(%rsp), %rcx
movl $0x57, %eax
cmpl (%rcx), %eax
jne 0x4395b6
movq 0x78(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x58(%rsp)
leaq 0x140(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x43f990
movq 0x58(%rsp), %rdi
movsd %xmm0, 0xe0(%rsp)
leaq 0xe0(%rsp), %rsi
callq 0x287b60
movq %rax, 0x60(%rsp)
jmp 0x4395a4
movq 0x60(%rsp), %rax
movq %rax, 0x108(%rsp)
jmp 0x4397e0
movq 0x168(%rsp), %rcx
movl $0x58, %eax
cmpl (%rcx), %eax
jne 0x43962c
movq 0x78(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x48(%rsp)
leaq 0x140(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x440120
movsd %xmm0, 0x50(%rsp)
jmp 0x4395f2
movq 0x48(%rsp), %rdi
movsd 0x50(%rsp), %xmm0
movsd %xmm0, 0xd8(%rsp)
leaq 0xd8(%rsp), %rsi
callq 0x287b60
movq %rax, 0x40(%rsp)
jmp 0x43961a
movq 0x40(%rsp), %rax
movq %rax, 0x108(%rsp)
jmp 0x4397de
movq 0x168(%rsp), %rcx
movl $0x59, %eax
cmpl (%rcx), %eax
jne 0x4396a2
movq 0x78(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x30(%rsp)
leaq 0x140(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x440b80
movsd %xmm0, 0x38(%rsp)
jmp 0x439668
movq 0x30(%rsp), %rdi
movsd 0x38(%rsp), %xmm0
movsd %xmm0, 0xd0(%rsp)
leaq 0xd0(%rsp), %rsi
callq 0x287b60
movq %rax, 0x28(%rsp)
jmp 0x439690
movq 0x28(%rsp), %rax
movq %rax, 0x108(%rsp)
jmp 0x4397dc
movq 0x168(%rsp), %rax
movq %rax, 0x20(%rsp)
leaq 0xa8(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x11b140
jmp 0x4396c6
leaq 0x88(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x11b140
jmp 0x4396dd
movq 0x20(%rsp), %rsi
movq 0x78(%rsp), %rdi
leaq 0xa8(%rsp), %rdx
leaq 0x88(%rsp), %rcx
callq 0x44b000
movq %rax, 0x18(%rsp)
jmp 0x439703
leaq 0x88(%rsp), %rdi
callq 0x11b838
leaq 0xa8(%rsp), %rdi
callq 0x11b838
movq 0x18(%rsp), %rax
movq %rax, 0xc8(%rsp)
movq 0xc8(%rsp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movsd %xmm0, 0x10(%rsp)
jmp 0x439743
movq 0x78(%rsp), %rax
movsd 0x10(%rsp), %xmm0
movsd %xmm0, 0x80(%rsp)
movq 0x8(%rax), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x284bd0
jmp 0x43976a
movq 0x78(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x80(%rsp), %rsi
callq 0x285670
movq %rax, 0x8(%rsp)
jmp 0x439787
movq 0x8(%rsp), %rax
movq %rax, 0x108(%rsp)
jmp 0x4397dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x118(%rsp)
movl %eax, 0x114(%rsp)
jmp 0x4397cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x118(%rsp)
movl %eax, 0x114(%rsp)
leaq 0x88(%rsp), %rdi
callq 0x11b838
leaq 0xa8(%rsp), %rdi
callq 0x11b838
jmp 0x43982c
jmp 0x4397de
jmp 0x4397e0
jmp 0x4397e2
movq 0x78(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x160(%rsp), %rsi
callq 0x3ebbf0
jmp 0x4397fa
movq 0x108(%rsp), %rax
movq %rax, (%rsp)
leaq 0x120(%rsp), %rdi
callq 0x11b838
leaq 0x140(%rsp), %rdi
callq 0x11b838
movq (%rsp), %rax
addq $0x178, %rsp            # imm = 0x178
retq
leaq 0x120(%rsp), %rdi
callq 0x11b838
leaq 0x140(%rsp), %rdi
callq 0x11b838
movq 0x118(%rsp), %rdi
callq 0x11b4e0
nopw %cs:(%rax,%rax)
nopl (%rax)