// File: 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:
subq $0x368, %rsp            # imm = 0x368
movq %rdi, 0x358(%rsp)
movq %rsi, 0x350(%rsp)
movq %rdx, 0x348(%rsp)
movq 0x358(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x348(%rsp), %rcx
xorl %eax, %eax
cmpq (%rcx), %rax
je 0x3ae9bf
movq 0x348(%rsp), %rcx
xorl %eax, %eax
cmpq 0x8(%rcx), %rax
je 0x3ae9bf
movq 0x348(%rsp), %rcx
xorl %eax, %eax
cmpq 0x10(%rcx), %rax
jne 0x3aec2f
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x348(%rsp), %rsi
callq 0x4db8d0
movq 0x20(%rsp), %rax
movq 0x68(%rax), %rsi
movq %rsi, 0x10(%rsp)
leaq 0x260(%rsp), %rdi
callq 0x3dc450
leaq 0x270(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x350(%rsp), %rax
movl (%rax), %esi
leaq 0x200(%rsp), %rdi
callq 0x37fd10
jmp 0x3aea16
leaq 0x1f958d(%rip), %rsi    # 0x5a7faa
leaq 0x220(%rsp), %rdi
leaq 0x200(%rsp), %rdx
callq 0x29dd70
jmp 0x3aea34
leaq 0x1fb076(%rip), %rdx    # 0x5a9ab1
leaq 0x240(%rsp), %rdi
leaq 0x220(%rsp), %rsi
callq 0x29dc30
jmp 0x3aea52
leaq 0x1b0(%rsp), %rdi
movl $0x7eee, %esi           # imm = 0x7EEE
callq 0x371f20
jmp 0x3aea66
leaq 0x1f84a6(%rip), %rsi    # 0x5a6f13
leaq 0x1d0(%rsp), %rdi
leaq 0x1b0(%rsp), %rdx
callq 0x29dd70
jmp 0x3aea84
movq 0x18(%rsp), %rdx
leaq 0x2a0(%rsp), %rdi
movl $0x1, %esi
leaq 0x240(%rsp), %rcx
leaq 0x1d0(%rsp), %r8
callq 0x3741e0
jmp 0x3aeaad
movq 0x10(%rsp), %rdi
leaq 0x2a0(%rsp), %rsi
callq 0x371e40
jmp 0x3aeac1
leaq 0x2a0(%rsp), %rdi
callq 0x371330
leaq 0x1d0(%rsp), %rdi
callq 0x11b838
leaq 0x1b0(%rsp), %rdi
callq 0x11b838
leaq 0x240(%rsp), %rdi
callq 0x11b838
leaq 0x220(%rsp), %rdi
callq 0x11b838
leaq 0x200(%rsp), %rdi
callq 0x11b838
leaq 0x260(%rsp), %rdi
callq 0x3706b0
callq 0x2821f0
movq %rax, 0x360(%rsp)
jmp 0x3aeee9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x3aec1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x3aec10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x3aec03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x3aebf6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x3aebe9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x3aebdc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
leaq 0x2a0(%rsp), %rdi
callq 0x371330
leaq 0x1d0(%rsp), %rdi
callq 0x11b838
leaq 0x1b0(%rsp), %rdi
callq 0x11b838
leaq 0x240(%rsp), %rdi
callq 0x11b838
leaq 0x220(%rsp), %rdi
callq 0x11b838
leaq 0x200(%rsp), %rdi
callq 0x11b838
leaq 0x260(%rsp), %rdi
callq 0x3706b0
jmp 0x3aeef9
movq 0x20(%rsp), %rdi
movq 0x350(%rsp), %rsi
movq 0x348(%rsp), %rdx
callq 0x4db920
testb $0x1, %al
jne 0x3aec52
jmp 0x3aee83
movq 0x20(%rsp), %rax
movq 0x68(%rax), %rsi
movq %rsi, (%rsp)
leaq 0xc8(%rsp), %rdi
callq 0x3dc450
leaq 0xd8(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x350(%rsp), %rax
movl (%rax), %esi
leaq 0x68(%rsp), %rdi
callq 0x37fd10
jmp 0x3aec8f
leaq 0x1f9339(%rip), %rsi    # 0x5a7fcf
leaq 0x88(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0x29dd70
jmp 0x3aecaa
leaq 0x1fae00(%rip), %rdx    # 0x5a9ab1
leaq 0xa8(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0x29dc30
jmp 0x3aecc8
leaq 0x28(%rsp), %rdi
movl $0x7ef8, %esi           # imm = 0x7EF8
callq 0x371f20
jmp 0x3aecd9
leaq 0x1f8233(%rip), %rsi    # 0x5a6f13
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x29dd70
jmp 0x3aecf1
movq 0x8(%rsp), %rdx
leaq 0x108(%rsp), %rdi
movl $0x1, %esi
leaq 0xa8(%rsp), %rcx
leaq 0x48(%rsp), %r8
callq 0x3741e0
jmp 0x3aed17
movq (%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x371e40
jmp 0x3aed2a
leaq 0x108(%rsp), %rdi
callq 0x371330
leaq 0x48(%rsp), %rdi
callq 0x11b838
leaq 0x28(%rsp), %rdi
callq 0x11b838
leaq 0xa8(%rsp), %rdi
callq 0x11b838
leaq 0x88(%rsp), %rdi
callq 0x11b838
leaq 0x68(%rsp), %rdi
callq 0x11b838
leaq 0xc8(%rsp), %rdi
callq 0x3706b0
callq 0x2821f0
movq %rax, 0x360(%rsp)
jmp 0x3aeee9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x3aee74
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x3aee6a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x3aee5d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x3aee50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x3aee46
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x3aee3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
leaq 0x108(%rsp), %rdi
callq 0x371330
leaq 0x48(%rsp), %rdi
callq 0x11b838
leaq 0x28(%rsp), %rdi
callq 0x11b838
leaq 0xa8(%rsp), %rdi
callq 0x11b838
leaq 0x88(%rsp), %rdi
callq 0x11b838
leaq 0x68(%rsp), %rdi
callq 0x11b838
leaq 0xc8(%rsp), %rdi
callq 0x3706b0
jmp 0x3aeef9
movq 0x20(%rsp), %rdi
movq 0x350(%rsp), %rsi
movq 0x348(%rsp), %rdx
callq 0x4dba90
testb $0x1, %al
jne 0x3aeea3
jmp 0x3aeec7
movq 0x20(%rsp), %rdi
movq 0x350(%rsp), %rsi
movq 0x348(%rsp), %rdx
callq 0x4dbb30
movq %rax, 0x360(%rsp)
jmp 0x3aeee9
movq 0x20(%rsp), %rdi
movq 0x350(%rsp), %rsi
movq 0x348(%rsp), %rdx
callq 0x4dc580
movq %rax, 0x360(%rsp)
movq 0x360(%rsp), %rax
addq $0x368, %rsp            # imm = 0x368
retq
movq 0x1f8(%rsp), %rdi
callq 0x11b4e0
nopw %cs:(%rax,%rax)