// File: /workspace/github_cpp_makefile_star2_O2/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:
pushq %r15
pushq %r14
pushq %rbx
subq $0x150, %rsp            # imm = 0x150
movq %rsi, %r14
movq %rdi, %rbx
movq %rsi, %rdi
callq 0x2082f4
testb %al, %al
je 0x2a198b
movq 0x8(%rbx), %r15
movq 0x68(%rbx), %rdi
callq 0x2a1cf4
movq %r15, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x2a1c9e
movq %rax, %r15
movq %rax, 0x10(%rsp)
movq %rax, %rdi
callq 0x2a1d26
testb %al, %al
je 0x2a197d
movq (%r15), %rax
movq %r15, %rdi
callq *0x30(%rax)
movq 0x68(%rbx), %r14
testb %al, %al
je 0x2a19a6
leaq 0x3b50f(%rip), %rsi     # 0x2dce54
leaq 0xa8(%rsp), %rdi
leaq 0x78(%rsp), %rdx
callq 0x127016
cmpb $0x0, 0x3ac(%r14)
jne 0x2a1969
movb $0x1, 0x3ac(%r14)
leaq 0xa8(%rsp), %rdi
callq 0x118648
movq 0x10(%rsp), %rax
jmp 0x2a1999
movq 0x8(%rbx), %rdi
leaq 0x10(%rsp), %rsi
callq 0x1ad9c8
movq 0x8(%rbx), %rdi
movq %r14, %rsi
callq 0x20831e
xorl %eax, %eax
addq $0x150, %rsp            # imm = 0x150
popq %rbx
popq %r14
popq %r15
retq
leaq 0x78(%rsp), %rdi
callq 0x19e4ae
leaq 0x3b4ab(%rip), %rsi     # 0x2dce62
leaq 0x58(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x127016
leaq 0x18(%rsp), %rdi
movl $0x84c0, %esi           # imm = 0x84C0
callq 0x1f7a3c
leaq 0x3821f(%rip), %rsi     # 0x2d9bfb
leaq 0x38(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x1b4349
leaq 0xa8(%rsp), %rdi
pushq $0x7
popq %rsi
leaq 0x78(%rsp), %rdx
leaq 0x58(%rsp), %rcx
leaq 0x38(%rsp), %r8
callq 0x1f7341
addq $0x308, %r14            # imm = 0x308
leaq 0xa8(%rsp), %rsi
movq %r14, %rdi
callq 0x1f76ce
leaq 0xa8(%rsp), %rdi
callq 0x1f5c4c
leaq 0x38(%rsp), %rdi
callq 0x118648
leaq 0x18(%rsp), %rdi
callq 0x118648
leaq 0x58(%rsp), %rdi
callq 0x118648
leaq 0x80(%rsp), %rdi
callq 0x118648
movq 0x8(%rbx), %rdi
leaq 0x10(%rsp), %rsi
callq 0x1ad9c8
jmp 0x2a1997
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x1f5c4c
jmp 0x2a1a81
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x118648
jmp 0x2a1a90
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x118648
jmp 0x2a1a9f
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0x118648
jmp 0x2a1aae
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x118648
movq %rbx, %rdi
callq 0x118360
nop