// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::expression_generator<double>::synthesize_vob_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[0])->ref();

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

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

                  if (synthesis_result)
                  {
                     details::free_node(*expr_gen.node_allocator_,branch[1]);
                     return result;
                  }
               }
               #endif

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

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

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

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

                        switch (operation)
                        {
                           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> > >(v,v1));

                           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> > >(v,v1));

                           default             : break;
                        }
                     }
                  }
               }

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

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

// Assembly:
subq $0x68, %rsp
movq %rdi, 0x58(%rsp)
movq %rsi, 0x50(%rsp)
movq %rdx, 0x48(%rsp)
movq 0x48(%rsp), %rax
movq (%rax), %rdi
callq 0x235f80
movq %rax, 0x40(%rsp)
movq 0x48(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x4858f0
testb $0x1, %al
jne 0x3e46b9
jmp 0x3e471a
callq 0x2821f0
movq %rax, 0x38(%rsp)
movq 0x58(%rsp), %rdi
movq 0x40(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq 0x48(%rsp), %rcx
addq $0x8, %rcx
leaq 0x38(%rsp), %r8
callq 0x485960
andb $0x1, %al
movb %al, 0x37(%rsp)
testb $0x1, 0x37(%rsp)
je 0x3e4718
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x48(%rsp), %rsi
addq $0x8, %rsi
callq 0x284bd0
movq 0x38(%rsp), %rax
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
jmp 0x3e471a
movq 0x50(%rsp), %rcx
movl $0x4, %eax
cmpl (%rcx), %eax
je 0x3e473a
movq 0x50(%rsp), %rcx
movl $0x5, %eax
cmpl (%rcx), %eax
jne 0x3e4855
movq 0x48(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x4853d0
testb $0x1, %al
jne 0x3e4751
jmp 0x3e4853
movq 0x48(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movl %eax, 0x30(%rsp)
movl $0x34, %eax
cmpl 0x30(%rsp), %eax
jne 0x3e4851
movq 0x48(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
movq 0x40(%rax), %rax
callq *%rax
movq %rax, 0x28(%rsp)
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x48(%rsp), %rsi
addq $0x8, %rsi
callq 0x284bd0
movq 0x50(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x1c(%rsp)
subl $0x4, %eax
je 0x3e47c1
jmp 0x3e47b3
movl 0x1c(%rsp), %eax
subl $0x5, %eax
je 0x3e4807
jmp 0x3e484d
movq 0x58(%rsp), %rax
movq %rax, 0x10(%rsp)
movl $0x34, 0x24(%rsp)
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x2818f0
movq 0x10(%rsp), %rdi
movq %rax, %rdx
leaq 0x24(%rsp), %rsi
callq 0x3842f0
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
movq 0x58(%rsp), %rax
movq %rax, 0x8(%rsp)
movl $0x34, 0x20(%rsp)
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x281980
movq 0x8(%rsp), %rdi
movq %rax, %rdx
leaq 0x20(%rsp), %rsi
callq 0x3842f0
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
jmp 0x3e484f
jmp 0x3e4851
jmp 0x3e4853
jmp 0x3e4855
movq 0x50(%rsp), %rax
movl (%rax), %eax
addl $-0x2, %eax
movl %eax, %ecx
movq %rcx, (%rsp)
subl $0x19, %eax
ja 0x3e4b22
movq (%rsp), %rax
leaq 0x1b89c7(%rip), %rcx    # 0x59d240
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq $0x8, %rdx
callq 0x485d50
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq $0x8, %rdx
callq 0x485de0
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq $0x8, %rdx
callq 0x485e70
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq $0x8, %rdx
callq 0x485f00
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq $0x8, %rdx
callq 0x485f90
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq $0x8, %rdx
callq 0x486020
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq $0x8, %rdx
callq 0x4860b0
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq $0x8, %rdx
callq 0x486140
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq $0x8, %rdx
callq 0x4861d0
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq $0x8, %rdx
callq 0x486260
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq $0x8, %rdx
callq 0x4862f0
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq $0x8, %rdx
callq 0x486380
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq $0x8, %rdx
callq 0x486410
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq $0x8, %rdx
callq 0x4864a0
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq $0x8, %rdx
callq 0x486530
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq $0x8, %rdx
callq 0x4865c0
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq $0x8, %rdx
callq 0x486650
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq $0x8, %rdx
callq 0x4866e0
movq %rax, 0x60(%rsp)
jmp 0x3e4b2c
callq 0x2821f0
movq %rax, 0x60(%rsp)
movq 0x60(%rsp), %rax
addq $0x68, %rsp
retq
nopw %cs:(%rax,%rax)