// File: /workspace/github_cpp_makefile_star2_O2/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::expression_generator<double>::operator()(exprtk::details::operator_type const&, exprtk::details::expression_node<double>* (&) [2])
inline expression_node_ptr operator() (const details::operator_type& operation, expression_node_ptr (&branch)[2])
         {
            if ((0 == branch[0]) || (0 == branch[1]))
            {
               parser_->set_error(parser_error::make_error(
                  parser_error::e_syntax,
                  parser_->current_state().token,
                  "ERR249 - Invalid branches received for operator '" + details::to_str(operation) + "'",
                  exprtk_error_location));

               return error_node();
            }
            else if (is_invalid_string_op(operation,branch))
            {
               parser_->set_error(parser_error::make_error(
                  parser_error::e_syntax,
                  parser_->current_state().token,
                  "ERR250 - Invalid branch pair for string operator '" + details::to_str(operation) + "'",
                  exprtk_error_location));

               return error_node();
            }
            else if (is_invalid_assignment_op(operation,branch))
            {
               parser_->set_error(parser_error::make_error(
                  parser_error::e_syntax,
                  parser_->current_state().token,
                  "ERR251 - Invalid branch pair for assignment operator '" + details::to_str(operation) + "'",
                  exprtk_error_location));

               return error_node();
            }
            else if (is_invalid_break_continue_op(branch))
            {
               parser_->set_error(parser_error::make_error(
                  parser_error::e_syntax,
                  parser_->current_state().token,
                  "ERR252 - Invalid branch pair for break/continue operator '" + details::to_str(operation) + "'",
                  exprtk_error_location));

               return error_node();
            }
            else if (details::e_assign == operation)
            {
               return synthesize_assignment_expression(operation, branch);
            }
            else if (details::e_swap == operation)
            {
               return synthesize_swap_expression(branch);
            }
            else if (is_assignment_operation(operation))
            {
               return synthesize_assignment_operation_expression(operation, branch);
            }
            else if (is_vector_eqineq_logic_operation(operation, branch))
            {
               return synthesize_veceqineqlogic_operation_expression(operation, branch);
            }
            else if (is_vector_arithmetic_operation(operation, branch))
            {
               return synthesize_vecarithmetic_operation_expression(operation, branch);
            }
            else if (is_shortcircuit_expression(operation))
            {
               return synthesize_shortcircuit_expression(operation, branch);
            }
            else if (is_string_operation(operation, branch))
            {
               return synthesize_string_expression(operation, branch);
            }
            else if (is_null_present(branch))
            {
               return synthesize_null_expression(operation, branch);
            }
            #ifndef exprtk_disable_cardinal_pow_optimisation
            else if (is_constpow_operation(operation, branch))
            {
               return cardinal_pow_optimisation(branch);
            }
            #endif

            expression_node_ptr result = error_node();

            #ifndef exprtk_disable_enhanced_features
            if (synthesize_expression(operation, branch, result))
            {
               return result;
            }
            else
            #endif

            {
               /*
                  Possible reductions:
                  1. c o cob -> cob
                  2. cob o c -> cob
                  3. c o boc -> boc
                  4. boc o c -> boc
               */
               result = error_node();

               if (cocob_optimisable(operation, branch))
               {
                  result = synthesize_cocob_expression::process((*this), operation, branch);
               }
               else if (coboc_optimisable(operation, branch) && (0 == result))
               {
                  result = synthesize_coboc_expression::process((*this), operation, branch);
               }

               if (result)
                  return result;
            }

            if (uvouv_optimisable(operation, branch))
            {
               return synthesize_uvouv_expression(operation, branch);
            }
            else if (vob_optimisable(operation, branch))
            {
               return synthesize_vob_expression::process((*this), operation, branch);
            }
            else if (bov_optimisable(operation, branch))
            {
               return synthesize_bov_expression::process((*this), operation, branch);
            }
            else if (cob_optimisable(operation, branch))
            {
               return synthesize_cob_expression::process((*this), operation, branch);
            }
            else if (boc_optimisable(operation, branch))
            {
               return synthesize_boc_expression::process((*this), operation, branch);
            }
            #ifndef exprtk_disable_enhanced_features
            else if (cov_optimisable(operation, branch))
            {
               return synthesize_cov_expression::process((*this), operation, branch);
            }
            #endif
            else if (binext_optimisable(operation, branch))
            {
               return synthesize_binary_ext_expression::process((*this), operation, branch);
            }
            else
               return synthesize_expression<binary_node_t,2>(operation, branch);
         }

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x190, %rsp            # imm = 0x190
movq %rsi, %rbx
movq %rdi, %r15
cmpq $0x0, (%rdx)
je 0x20de3f
movq %rdx, %r14
cmpq $0x0, 0x8(%rdx)
je 0x20de3f
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x22491c
testb %al, %al
je 0x20df4d
movq 0x68(%r15), %r14
leaq 0xa8(%rsp), %rdi
movq %r14, %rsi
callq 0x2248d4
movl (%rbx), %esi
leaq 0x48(%rsp), %rdi
callq 0x1fbdbb
leaq 0xcc9b9(%rip), %rsi     # 0x2da76a
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x1b4349
leaq 0xce9ab(%rip), %rdx     # 0x2dc772
leaq 0x88(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x1b42c3
leaq 0x8(%rsp), %rdi
movl $0x7e5e, %esi           # imm = 0x7E5E
callq 0x1f7a3c
leaq 0xcbe0c(%rip), %rsi     # 0x2d9bfb
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x1b4349
leaq 0xb8(%rsp), %rdx
leaq 0xe8(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x88(%rsp), %rcx
leaq 0x28(%rsp), %r8
callq 0x1f7341
addq $0x308, %r14            # imm = 0x308
leaq 0xe8(%rsp), %rsi
movq %r14, %rdi
callq 0x1f76ce
jmp 0x20deef
movq 0x68(%r15), %r14
leaq 0xa8(%rsp), %rdi
movq %r14, %rsi
callq 0x2248d4
movl (%rbx), %esi
leaq 0x48(%rsp), %rdi
callq 0x1fbdbb
leaq 0xcc8d2(%rip), %rsi     # 0x2da738
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x1b4349
leaq 0xce8f6(%rip), %rdx     # 0x2dc772
leaq 0x88(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x1b42c3
leaq 0x8(%rsp), %rdi
movl $0x7e54, %esi           # imm = 0x7E54
callq 0x1f7a3c
leaq 0xcbd57(%rip), %rsi     # 0x2d9bfb
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x1b4349
leaq 0xb8(%rsp), %rdx
leaq 0xe8(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x88(%rsp), %rcx
leaq 0x28(%rsp), %r8
callq 0x1f7341
addq $0x308, %r14            # imm = 0x308
leaq 0xe8(%rsp), %rsi
movq %r14, %rdi
callq 0x1f76ce
leaq 0xe8(%rsp), %rdi
callq 0x1f5c4c
leaq 0x28(%rsp), %rdi
callq 0x118648
leaq 0x8(%rsp), %rdi
callq 0x118648
leaq 0x88(%rsp), %rdi
callq 0x118648
leaq 0x68(%rsp), %rdi
callq 0x118648
leaq 0x48(%rsp), %rdi
callq 0x118648
leaq 0xc0(%rsp), %rdi
callq 0x118648
xorl %eax, %eax
addq $0x190, %rsp            # imm = 0x190
popq %rbx
popq %r14
popq %r15
retq
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x2249bc
testb %al, %al
je 0x20e018
movq 0x68(%r15), %r14
leaq 0xa8(%rsp), %rdi
movq %r14, %rsi
callq 0x2248d4
movl (%rbx), %esi
leaq 0x48(%rsp), %rdi
callq 0x1fbdbb
leaq 0xcc813(%rip), %rsi     # 0x2da79d
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x1b4349
leaq 0xce7d2(%rip), %rdx     # 0x2dc772
leaq 0x88(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x1b42c3
leaq 0x8(%rsp), %rdi
movl $0x7e68, %esi           # imm = 0x7E68
callq 0x1f7a3c
leaq 0xcbc33(%rip), %rsi     # 0x2d9bfb
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x1b4349
leaq 0xb8(%rsp), %rdx
leaq 0xe8(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x88(%rsp), %rcx
leaq 0x28(%rsp), %r8
callq 0x1f7341
addq $0x308, %r14            # imm = 0x308
leaq 0xe8(%rsp), %rsi
movq %r14, %rdi
callq 0x1f76ce
jmp 0x20deef
movq %r15, %rdi
movq %r14, %rsi
callq 0x224b0c
testb %al, %al
je 0x20e0e0
movq 0x68(%r15), %r14
leaq 0xa8(%rsp), %rdi
movq %r14, %rsi
callq 0x2248d4
movl (%rbx), %esi
leaq 0x48(%rsp), %rdi
callq 0x1fbdbb
leaq 0xcc782(%rip), %rsi     # 0x2da7d4
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x1b4349
leaq 0xce70a(%rip), %rdx     # 0x2dc772
leaq 0x88(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x1b42c3
leaq 0x8(%rsp), %rdi
movl $0x7e72, %esi           # imm = 0x7E72
callq 0x1f7a3c
leaq 0xcbb6b(%rip), %rsi     # 0x2d9bfb
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x1b4349
leaq 0xb8(%rsp), %rdx
leaq 0xe8(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x88(%rsp), %rcx
leaq 0x28(%rsp), %r8
callq 0x1f7341
addq $0x308, %r14            # imm = 0x308
leaq 0xe8(%rsp), %rsi
movq %r14, %rdi
callq 0x1f76ce
jmp 0x20deef
movl (%rbx), %eax
cmpl $0x5c, %eax
je 0x20e106
cmpl $0x51, %eax
jne 0x20e11d
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
addq $0x190, %rsp            # imm = 0x190
popq %rbx
popq %r14
popq %r15
jmp 0x224b7c
movq %r15, %rdi
movq %r14, %rsi
addq $0x190, %rsp            # imm = 0x190
popq %rbx
popq %r14
popq %r15
jmp 0x2250bc
movq %r15, %rdi
movq %rbx, %rsi
callq 0x2254ea
testb %al, %al
je 0x20e146
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
addq $0x190, %rsp            # imm = 0x190
popq %rbx
popq %r14
popq %r15
jmp 0x225508
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x226474
testb %al, %al
je 0x20e172
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
addq $0x190, %rsp            # imm = 0x190
popq %rbx
popq %r14
popq %r15
jmp 0x2264b4
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x226e44
testb %al, %al
je 0x20e19e
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
addq $0x190, %rsp            # imm = 0x190
popq %rbx
popq %r14
popq %r15
jmp 0x226e80
movl (%rbx), %eax
andl $-0x2, %eax
cmpl $0x1e, %eax
jne 0x20e1c2
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
addq $0x190, %rsp            # imm = 0x190
popq %rbx
popq %r14
popq %r15
jmp 0x2273e6
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x227544
testb %al, %al
je 0x20e1ee
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
addq $0x190, %rsp            # imm = 0x190
popq %rbx
popq %r14
popq %r15
jmp 0x227592
movq %r15, %rdi
movq %r14, %rsi
callq 0x227ace
testb %al, %al
je 0x20e217
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
addq $0x190, %rsp            # imm = 0x190
popq %rbx
popq %r14
popq %r15
jmp 0x227b04
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x227cbc
testb %al, %al
je 0x20e240
movq %r15, %rdi
movq %r14, %rsi
addq $0x190, %rsp            # imm = 0x190
popq %rbx
popq %r14
popq %r15
jmp 0x227d48
leaq 0xe8(%rsp), %rcx
andq $0x0, (%rcx)
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x227de6
testb %al, %al
je 0x20e26b
movq 0xe8(%rsp), %rax
jmp 0x20df40
andq $0x0, 0xe8(%rsp)
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x227e82
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
testb %al, %al
je 0x20e296
callq 0x227ec8
jmp 0x20e2c0
callq 0x2283ac
movl %eax, %ecx
movq 0xe8(%rsp), %rax
testq %rax, %rax
sete %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x20e2c8
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x2283f2
movq %rax, 0xe8(%rsp)
testq %rax, %rax
jne 0x20df40
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x2287d8
testb %al, %al
je 0x20e2f6
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x228808
jmp 0x20df40
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x228984
testb %al, %al
je 0x20e31b
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x2289ce
jmp 0x20df40
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x228c66
testb %al, %al
je 0x20e340
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x228cac
jmp 0x20df40
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x228f76
testb %al, %al
je 0x20e365
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x228faa
jmp 0x20df40
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x229372
testb %al, %al
je 0x20e38a
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x2293a2
jmp 0x20df40
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x229740
testb %al, %al
je 0x20e3af
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1a5a88
jmp 0x20df40
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x22977e
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
testb %al, %al
je 0x20e3d4
callq 0x2297b2
jmp 0x20df40
callq 0x229b7c
jmp 0x20df40
jmp 0x20e414
jmp 0x20e426
jmp 0x20e435
jmp 0x20e444
jmp 0x20e456
jmp 0x20e482
jmp 0x20e487
jmp 0x20e414
jmp 0x20e426
jmp 0x20e435
jmp 0x20e444
jmp 0x20e456
jmp 0x20e482
jmp 0x20e487
jmp 0x20e414
jmp 0x20e426
jmp 0x20e435
jmp 0x20e444
jmp 0x20e456
jmp 0x20e482
jmp 0x20e487
movq %rax, %rbx
leaq 0xe8(%rsp), %rdi
callq 0x1f5c4c
jmp 0x20e429
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x118648
jmp 0x20e438
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x118648
jmp 0x20e447
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x118648
jmp 0x20e459
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x118648
leaq 0x48(%rsp), %rdi
callq 0x118648
leaq 0xc0(%rsp), %rdi
callq 0x118648
movq %rbx, %rdi
callq 0x118360
movq %rax, %rbx
jmp 0x20e463
movq %rax, %rbx
jmp 0x20e46d