// 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>* (&) [3])
inline expression_node_ptr operator() (const details::operator_type& operation, expression_node_ptr (&branch)[3])
         {
            if (
                 (0 == branch[0]) ||
                 (0 == branch[1]) ||
                 (0 == branch[2])
               )
            {
               details::free_all_nodes(*node_allocator_,branch);

               parser_->set_error(parser_error::make_error(
                  parser_error::e_syntax,
                  parser_->current_state().token,
                  "ERR253 - Invalid branches 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,
                  "ERR254 - Invalid branches for string operator '" + details::to_str(operation) + "'",
                  exprtk_error_location));

               return error_node();
            }
            else if (is_string_operation(operation, branch))
            {
               return synthesize_string_expression(operation, branch);
            }
            else
               return synthesize_expression<trinary_node_t,3>(operation, branch);
         }

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x190, %rsp            # imm = 0x190
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
cmpq $0x0, (%rdx)
je 0x20e58d
cmpq $0x0, 0x8(%rbx)
je 0x20e58d
cmpq $0x0, 0x10(%rbx)
je 0x20e58d
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x2873ca
testb %al, %al
je 0x20e6a8
movq 0x68(%r15), %rbx
leaq 0xa8(%rsp), %rdi
movq %rbx, %rsi
callq 0x2248d4
movl (%r14), %esi
leaq 0x48(%rsp), %rdi
callq 0x1fbdbb
leaq 0xcc7b8(%rip), %rsi     # 0x2dacb7
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x1b4349
leaq 0xce25d(%rip), %rdx     # 0x2dc772
leaq 0x88(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x1b42c3
leaq 0x8(%rsp), %rdi
movl $0x7ef8, %esi           # imm = 0x7EF8
callq 0x1f7a3c
leaq 0xcb6be(%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, %rbx            # imm = 0x308
leaq 0xe8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
jmp 0x20e64a
movq 0x8(%r15), %rdi
movq %rbx, %rsi
callq 0x28739d
movq 0x68(%r15), %rbx
leaq 0xa8(%rsp), %rdi
movq %rbx, %rsi
callq 0x2248d4
movl (%r14), %esi
leaq 0x48(%rsp), %rdi
callq 0x1fbdbb
leaq 0xcc6d1(%rip), %rsi     # 0x2dac92
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x1b4349
leaq 0xce19b(%rip), %rdx     # 0x2dc772
leaq 0x88(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x1b42c3
leaq 0x8(%rsp), %rdi
movl $0x7eee, %esi           # imm = 0x7EEE
callq 0x1f7a3c
leaq 0xcb5fc(%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, %rbx            # imm = 0x308
leaq 0xe8(%rsp), %rsi
movq %rbx, %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 %r14, %rsi
movq %rbx, %rdx
callq 0x28747c
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
addq $0x190, %rsp            # imm = 0x190
testb %al, %al
je 0x20e6d4
popq %rbx
popq %r14
popq %r15
jmp 0x2874cc
popq %rbx
popq %r14
popq %r15
jmp 0x287a20
jmp 0x20e6ec
jmp 0x20e6fe
jmp 0x20e70d
jmp 0x20e71c
jmp 0x20e72e
jmp 0x20e75a
jmp 0x20e75f
movq %rax, %rbx
leaq 0xe8(%rsp), %rdi
callq 0x1f5c4c
jmp 0x20e701
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x118648
jmp 0x20e710
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x118648
jmp 0x20e71f
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x118648
jmp 0x20e731
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 0x20e73b
movq %rax, %rbx
jmp 0x20e745