// File: 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:
subq $0x78, %rsp
movq %rdi, 0x68(%rsp)
movq %rsi, 0x60(%rsp)
movq %rdx, 0x58(%rsp)
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x235f80
movq %rax, 0x50(%rsp)
movq 0x58(%rsp), %rax
movq (%rax), %rdi
callq 0x4858f0
testb $0x1, %al
jne 0x3e4be9
jmp 0x3e4c42
callq 0x2821f0
movq %rax, 0x48(%rsp)
movq 0x68(%rsp), %rdi
movq 0x50(%rsp), %rsi
movq 0x60(%rsp), %rdx
movq 0x58(%rsp), %rcx
leaq 0x48(%rsp), %r8
callq 0x4893f0
andb $0x1, %al
movb %al, 0x47(%rsp)
testb $0x1, 0x47(%rsp)
je 0x3e4c40
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
callq 0x284bd0
movq 0x48(%rsp), %rax
movq %rax, 0x70(%rsp)
jmp 0x3e5098
jmp 0x3e4c42
movq 0x60(%rsp), %rcx
movl $0x2, %eax
cmpl (%rcx), %eax
je 0x3e4c7e
movq 0x60(%rsp), %rcx
movl $0x3, %eax
cmpl (%rcx), %eax
je 0x3e4c7e
movq 0x60(%rsp), %rcx
movl $0x4, %eax
cmpl (%rcx), %eax
je 0x3e4c7e
movq 0x60(%rsp), %rcx
movl $0x5, %eax
cmpl (%rcx), %eax
jne 0x3e4e09
movq 0x58(%rsp), %rax
movq (%rax), %rdi
callq 0x4853d0
testb $0x1, %al
jne 0x3e4c94
jmp 0x3e4e07
movq 0x58(%rsp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movl %eax, 0x40(%rsp)
movl $0x34, %eax
cmpl 0x40(%rsp), %eax
jne 0x3e4e05
movq 0x58(%rsp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x40(%rax), %rax
callq *%rax
movq %rax, 0x38(%rsp)
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
callq 0x284bd0
movq 0x60(%rsp), %rax
movl (%rax), %eax
addl $-0x2, %eax
movl %eax, %ecx
movq %rcx, 0x20(%rsp)
subl $0x3, %eax
ja 0x3e4e01
movq 0x20(%rsp), %rax
leaq 0x1b85a4(%rip), %rcx    # 0x59d2a8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x50(%rsp), %rsi
movq 0x38(%rsp), %rdx
callq 0x281860
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq %rax, 0x18(%rsp)
movl $0x34, 0x34(%rsp)
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x38(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x2817d0
movq 0x18(%rsp), %rdi
movq %rax, %rdx
leaq 0x34(%rsp), %rsi
callq 0x3842f0
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq %rax, 0x10(%rsp)
movl $0x34, 0x30(%rsp)
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x38(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x2818f0
movq 0x10(%rsp), %rdi
movq %rax, %rdx
leaq 0x30(%rsp), %rsi
callq 0x3842f0
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq %rax, 0x8(%rsp)
movl $0x34, 0x2c(%rsp)
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x38(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x281980
movq 0x8(%rsp), %rdi
movq %rax, %rdx
leaq 0x2c(%rsp), %rsi
callq 0x3842f0
movq %rax, 0x70(%rsp)
jmp 0x3e5098
jmp 0x3e4e03
jmp 0x3e4e05
jmp 0x3e4e07
jmp 0x3e4e09
movq 0x60(%rsp), %rax
movl (%rax), %eax
addl $-0x2, %eax
movl %eax, %ecx
movq %rcx, (%rsp)
subl $0x19, %eax
ja 0x3e508e
movq (%rsp), %rax
leaq 0x1b848b(%rip), %rcx    # 0x59d2b8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x4897e0
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x489870
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x489900
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x489990
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x489a20
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x489ab0
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x489b40
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x489bd0
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x489c60
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x489cf0
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x489d80
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x489e10
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x489ea0
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x489f30
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x489fc0
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x48a050
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x48a0e0
movq %rax, 0x70(%rsp)
jmp 0x3e5098
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x48a170
movq %rax, 0x70(%rsp)
jmp 0x3e5098
callq 0x2821f0
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rax
addq $0x78, %rsp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)