// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::expression_generator<double>::return_call(std::vector<exprtk::details::expression_node<double>*, std::allocator<exprtk::details::expression_node<double>*>>&)
inline expression_node_ptr return_call(std::vector<expression_node_ptr>& arg_list)
         {
            if (!all_nodes_valid(arg_list))
            {
               details::free_all_nodes(*node_allocator_,arg_list);
               return error_node();
            }

            typedef details::return_node<Type> alloc_type;

            expression_node_ptr result = node_allocator_->
                                            allocate_rr<alloc_type>(arg_list,parser_->results_ctx());

            alloc_type* return_node_ptr = static_cast<alloc_type*>(result);

            assert(return_node_ptr);

            if (return_node_ptr->init_branches())
            {
               if (result && result->valid())
               {
                  parser_->state_.activate_side_effect("return_call()");
                  return result;
               }

               parser_->set_error(parser_error::make_error(
                  parser_error::e_synthesis,
                  token_t(),
                  "ERR268 - Failed to synthesize node: return_node",
                  exprtk_error_location));

               details::free_node(*node_allocator_, result);
               return error_node();
            }
            else
            {
               details::free_node     (*node_allocator_, result  );
               details::free_all_nodes(*node_allocator_, arg_list);

               return error_node();
            }
         }

// Assembly:
subq $0x1d8, %rsp            # imm = 0x1D8
movq %rdi, 0x1c8(%rsp)
movq %rsi, 0x1c0(%rsp)
movq 0x1c8(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x1c0(%rsp), %rdi
callq 0x39cd40
testb $0x1, %al
jne 0x51d4ed
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x1c0(%rsp), %rsi
callq 0x39cdc0
callq 0x2821f0
movq %rax, 0x1d0(%rsp)
jmp 0x51d824
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq 0x1c0(%rsp), %rcx
movq %rcx, 0x28(%rsp)
movq 0x68(%rax), %rdi
callq 0x51e1a0
movq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq %rax, %rdx
callq 0x51e110
movq %rax, 0x1b8(%rsp)
movq 0x1b8(%rsp), %rax
movq %rax, 0x1b0(%rsp)
movq 0x1b0(%rsp), %rdi
callq 0x51e230
testb $0x1, %al
jne 0x51d551
jmp 0x51d7eb
cmpq $0x0, 0x1b8(%rsp)
je 0x51d61f
movq 0x1b8(%rsp), %rdi
movq (%rdi), %rax
callq *0x30(%rax)
testb $0x1, %al
jne 0x51d577
jmp 0x51d61f
movq 0x30(%rsp), %rax
movq 0x68(%rax), %rax
addq $0x3a8, %rax            # imm = 0x3A8
movq %rax, 0x10(%rsp)
leaq 0x18f(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x11b6f0
movq 0x18(%rsp), %rdx
leaq 0x8cbea(%rip), %rsi     # 0x5aa193
leaq 0x190(%rsp), %rdi
callq 0x134520
jmp 0x51d5b8
movq 0x10(%rsp), %rdi
leaq 0x190(%rsp), %rsi
callq 0x3eb500
leaq 0x190(%rsp), %rdi
callq 0x11b838
leaq 0x18f(%rsp), %rdi
callq 0x11b820
movq 0x1b8(%rsp), %rax
movq %rax, 0x1d0(%rsp)
jmp 0x51d824
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
leaq 0x18f(%rsp), %rdi
callq 0x11b820
jmp 0x51d834
movq 0x30(%rsp), %rax
movq 0x68(%rax), %rax
movq %rax, (%rsp)
leaq 0xa0(%rsp), %rdi
callq 0x251250
leaq 0x7f(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x11b6f0
movq 0x8(%rsp), %rdx
leaq 0x8cb4d(%rip), %rsi     # 0x5aa1a1
leaq 0x80(%rsp), %rdi
callq 0x134520
jmp 0x51d663
leaq 0x38(%rsp), %rdi
movl $0x84c0, %esi           # imm = 0x84C0
callq 0x371f20
jmp 0x51d674
leaq 0x89898(%rip), %rsi     # 0x5a6f13
leaq 0x58(%rsp), %rdi
leaq 0x38(%rsp), %rdx
callq 0x29dd70
jmp 0x51d68c
leaq 0xd0(%rsp), %rdi
movl $0x7, %esi
leaq 0xa0(%rsp), %rdx
leaq 0x80(%rsp), %rcx
leaq 0x58(%rsp), %r8
callq 0x3741e0
jmp 0x51d6b5
movq (%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x371e40
jmp 0x51d6c8
leaq 0xd0(%rsp), %rdi
callq 0x371330
leaq 0x58(%rsp), %rdi
callq 0x11b838
leaq 0x38(%rsp), %rdi
callq 0x11b838
leaq 0x80(%rsp), %rdi
callq 0x11b838
leaq 0x7f(%rsp), %rdi
callq 0x11b820
leaq 0xa0(%rsp), %rdi
callq 0x2512e0
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x284bd0
callq 0x2821f0
movq %rax, 0x1d0(%rsp)
jmp 0x51d824
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
jmp 0x51d7d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
jmp 0x51d7c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
jmp 0x51d7bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
jmp 0x51d7b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
leaq 0xd0(%rsp), %rdi
callq 0x371330
leaq 0x58(%rsp), %rdi
callq 0x11b838
leaq 0x38(%rsp), %rdi
callq 0x11b838
leaq 0x80(%rsp), %rdi
callq 0x11b838
leaq 0x7f(%rsp), %rdi
callq 0x11b820
leaq 0xa0(%rsp), %rdi
callq 0x2512e0
jmp 0x51d834
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x284bd0
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x1c0(%rsp), %rsi
callq 0x39cdc0
callq 0x2821f0
movq %rax, 0x1d0(%rsp)
movq 0x1d0(%rsp), %rax
addq $0x1d8, %rsp            # imm = 0x1D8
retq
movq 0x180(%rsp), %rdi
callq 0x11b4e0
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)