// File: /workspace/github_cpp_makefile_star2_O3/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::expression_generator<double>::synthesize_bov_expression::process(exprtk::parser<double>::expression_generator<double>&, exprtk::details::operator_type const&, exprtk::details::expression_node<double>* (&) [2])
static inline expression_node_ptr process(expression_generator<Type>& expr_gen,
                                                      const details::operator_type& operation,
                                                      expression_node_ptr (&branch)[2])
            {
               const Type& v = static_cast<details::variable_node<Type>*>(branch[1])->ref();

               #ifndef exprtk_disable_enhanced_features
               if (details::is_sf3ext_node(branch[0]))
               {
                  expression_node_ptr result = error_node();

                  const bool synthesis_result =
                     synthesize_sf4ext_expression::template compile_left<vtype>
                        (expr_gen, v, operation, branch[0], result);

                  if (synthesis_result)
                  {
                     details::free_node(*expr_gen.node_allocator_, branch[0]);

                     return result;
                  }
               }
               #endif

               if (
                    (details::e_add == operation) ||
                    (details::e_sub == operation) ||
                    (details::e_mul == operation) ||
                    (details::e_div == operation)
                  )
               {
                  if (details::is_uv_node(branch[0]))
                  {
                     typedef details::uv_base_node<Type>* uvbn_ptr_t;

                     details::operator_type o = static_cast<uvbn_ptr_t>(branch[0])->operation();

                     if (details::e_neg == o)
                     {
                        const Type& v0 = static_cast<uvbn_ptr_t>(branch[0])->v();

                        details::free_node(*expr_gen.node_allocator_,branch[0]);

                        switch (operation)
                        {
                           case details::e_add : return expr_gen.node_allocator_->
                                                    template allocate_rr<typename details::
                                                       vov_node<Type,details::sub_op<Type> > >(v,v0);

                           case details::e_sub : return expr_gen(details::e_neg,
                                                    expr_gen.node_allocator_->
                                                       template allocate_rr<typename details::
                                                          vov_node<Type,details::add_op<Type> > >(v0,v));

                           case details::e_mul : return expr_gen(details::e_neg,
                                                    expr_gen.node_allocator_->
                                                       template allocate_rr<typename details::
                                                          vov_node<Type,details::mul_op<Type> > >(v0,v));

                           case details::e_div : return expr_gen(details::e_neg,
                                                    expr_gen.node_allocator_->
                                                       template allocate_rr<typename details::
                                                          vov_node<Type,details::div_op<Type> > >(v0,v));
                           default : break;
                        }
                     }
                  }
               }

               switch (operation)
               {
                  #define case_stmt(op0, op1)                                                      \
                  case op0 : return expr_gen.node_allocator_->                                     \
                                template allocate_cr<typename details::bov_node<Type,op1<Type> > > \
                                   (branch[0], v);                                                 \

                  basic_opr_switch_statements
                  extended_opr_switch_statements
                  #undef case_stmt
                  default : return error_node();
               }
            }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, %r15
movq %rsi, %r12
movq %rdi, %rbx
movq (%rdx), %rdi
movq 0x8(%rdx), %rax
movq 0x28(%rax), %r14
movq (%rdi), %rax
callq *0x28(%rax)
addl $-0x6a, %eax
cmpl $0x4, %eax
ja 0x29d305
leaq 0x10(%rsp), %r8
movq $0x0, (%r8)
movq %rbx, %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r15, %rcx
callq 0x2ff114
testb %al, %al
je 0x29d305
movq (%r15), %rdi
testq %rdi, %rdi
je 0x29d2fb
movq (%rdi), %rax
callq *0x28(%rax)
cmpl $0x11, %eax
je 0x29d2fb
movq (%r15), %rdi
testq %rdi, %rdi
je 0x29d2f3
movq (%rdi), %rax
callq *0x28(%rax)
cmpl $0x12, %eax
je 0x29d2fb
movq %r15, %rdi
callq 0x1ea63e
movq 0x10(%rsp), %rbx
jmp 0x29d645
movl (%r12), %ebp
leal -0x2(%rbp), %eax
cmpl $0x3, %eax
ja 0x29d3ea
movq (%r15), %r13
testq %r13, %r13
je 0x29d3ea
leaq 0x238dc8(%rip), %rsi    # 0x4d60f0
leaq 0x26ad71(%rip), %rdx    # 0x5080a0
movq %r13, %rdi
xorl %ecx, %ecx
callq 0x11e4f0
testq %rax, %rax
je 0x29d3ea
movq (%r13), %rax
movq %r13, %rdi
callq *0x38(%rax)
cmpl $0x34, %eax
jne 0x29d3e6
movq (%r15), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movq %rax, %r13
movq (%r15), %rdi
testq %rdi, %rdi
je 0x29d38f
movq (%rdi), %rax
callq *0x28(%rax)
cmpl $0x11, %eax
je 0x29d38f
movq (%r15), %rdi
testq %rdi, %rdi
je 0x29d387
movq (%rdi), %rax
callq *0x28(%rax)
cmpl $0x12, %eax
je 0x29d38f
movq %r15, %rdi
callq 0x1ea63e
movl (%r12), %ebp
leal -0x2(%rbp), %eax
cmpl $0x3, %eax
ja 0x29d3ea
leaq 0xee4b2(%rip), %rcx     # 0x38b854
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x30, %edi
callq 0x11e0f0
movq %rax, %rbx
movb $0x0, 0x10(%rax)
movq $0x0, 0x18(%rax)
leaq 0x239e4d(%rip), %rax    # 0x4d7218
movq %rax, (%rbx)
leaq 0x239ea3(%rip), %rax    # 0x4d7278
movq %rax, 0x8(%rbx)
movq %r14, 0x20(%rbx)
movq %r13, 0x28(%rbx)
jmp 0x29d645
movl (%r12), %ebp
xorl %ebx, %ebx
addl $-0x2, %ebp
cmpl $0x19, %ebp
ja 0x29d645
leaq 0xee465(%rip), %rax     # 0x38b864
movslq (%rax,%rbp,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movl $0x38, %edi
callq 0x11e0f0
movq %rax, %rbx
movq (%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x2ff83e
jmp 0x29d637
movl $0x38, %edi
callq 0x11e0f0
movq %rax, %rbx
movq (%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x3009d4
jmp 0x29d637
movl $0x38, %edi
callq 0x11e0f0
movq %rax, %rbx
movq (%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x300444
jmp 0x29d637
movl $0x38, %edi
callq 0x11e0f0
movq %rax, %rbx
movq (%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x2ffd7e
jmp 0x29d637
movl $0x38, %edi
callq 0x11e0f0
movq %rax, %rbx
movq (%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x300862
jmp 0x29d637
movl $0x38, %edi
callq 0x11e0f0
movq %rax, %rbx
movq (%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x2ff98e
jmp 0x29d637
movl $0x38, %edi
callq 0x11e0f0
movq %rax, %rbx
movq (%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x2ffed2
jmp 0x29d637
movl $0x38, %edi
callq 0x11e0f0
movq %rax, %rbx
movq (%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x3002e2
jmp 0x29d637
movl $0x38, %edi
callq 0x11e0f0
movq %rax, %rbx
movq (%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x2ffc2e
jmp 0x29d637
movl $0x38, %edi
callq 0x11e0f0
movq %rax, %rbx
movq (%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x2ffade
jmp 0x29d637
movl $0x38, %edi
callq 0x11e0f0
movq %rax, %rbx
movq (%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x300026
jmp 0x29d637
movl $0x38, %edi
callq 0x11e0f0
movq %rax, %rbx
movq (%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x300184
jmp 0x29d637
movl $0x38, %edi
callq 0x11e0f0
movq %rax, %rbx
movq (%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x300b4c
jmp 0x29d637
movl $0x38, %edi
callq 0x11e0f0
movq %rax, %rbx
movq (%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x300cc0
jmp 0x29d637
movl $0x38, %edi
callq 0x11e0f0
movq %rax, %rbx
movq (%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x300704
jmp 0x29d637
movl $0x38, %edi
callq 0x11e0f0
movq %rax, %rbx
movq (%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x3005a6
jmp 0x29d637
movl $0x38, %edi
callq 0x11e0f0
movq %rax, %rbx
movq (%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x300fa4
jmp 0x29d637
movl $0x38, %edi
callq 0x11e0f0
movq %rax, %rbx
movq (%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x300e2e
movq %rbx, %rdi
addq $0x8, %rdi
movq 0x8(%rbx), %rax
callq *0x10(%rax)
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xc(%rsp), %r15
movl $0x34, (%r15)
movl $0x30, %edi
callq 0x11e0f0
movb $0x0, 0x10(%rax)
movq $0x0, 0x18(%rax)
leaq 0x239c38(%rip), %rcx    # 0x4d72b8
movq %rcx, (%rax)
leaq 0x239c8e(%rip), %rcx    # 0x4d7318
jmp 0x29d6f4
leaq 0xc(%rsp), %r15
movl $0x34, (%r15)
movl $0x30, %edi
callq 0x11e0f0
movb $0x0, 0x10(%rax)
movq $0x0, 0x18(%rax)
leaq 0x239ca3(%rip), %rcx    # 0x4d7358
movq %rcx, (%rax)
leaq 0x239cf9(%rip), %rcx    # 0x4d73b8
jmp 0x29d6f4
leaq 0xc(%rsp), %r15
movl $0x34, (%r15)
movl $0x30, %edi
callq 0x11e0f0
movb $0x0, 0x10(%rax)
movq $0x0, 0x18(%rax)
leaq 0x239a76(%rip), %rcx    # 0x4d7160
movq %rcx, (%rax)
leaq 0x239acc(%rip), %rcx    # 0x4d71c0
movq %rcx, 0x8(%rax)
movq %r13, 0x20(%rax)
movq %r14, 0x28(%rax)
leaq 0x10(%rsp), %rdx
movq %rax, (%rdx)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x27b7ae
movq %rax, %rbx
jmp 0x29d645
jmp 0x29d73d
jmp 0x29d73d
jmp 0x29d73d
jmp 0x29d73d
jmp 0x29d73d
jmp 0x29d73d
jmp 0x29d73d
jmp 0x29d73d
jmp 0x29d73d
jmp 0x29d73d
jmp 0x29d73d
jmp 0x29d73d
jmp 0x29d73d
jmp 0x29d73d
jmp 0x29d73d
jmp 0x29d73d
jmp 0x29d73d
movq %rax, %r14
movl $0x38, %esi
movq %rbx, %rdi
callq 0x11e0c0
movq %r14, %rdi
callq 0x11e330
nop