// File: /workspace/github_cpp_makefile_star2_O2/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::parse_return_statement()
inline expression_node_ptr parse_return_statement()
      {
         if (state_.parsing_return_stmt)
         {
            set_error(make_error(
               parser_error::e_syntax,
               current_token(),
               "ERR214 - Return call within a return call is not allowed",
               exprtk_error_location));

            return error_node();
         }

         scoped_bool_negator sbn(state_.parsing_return_stmt);

         std::vector<expression_node_ptr> arg_list;

         scoped_vec_delete<expression_node_t> svd((*this), arg_list);

         if (!details::imatch(current_token().value,"return"))
         {
            return error_node();
         }
         else
            next_token();

         if (!token_is(token_t::e_lsqrbracket))
         {
            set_error(make_error(
               parser_error::e_syntax,
               current_token(),
               "ERR215 - Expected '[' at start of return statement",
               exprtk_error_location));

            return error_node();
         }
         else if (!token_is(token_t::e_rsqrbracket))
         {
            for ( ; ; )
            {
               expression_node_ptr arg = parse_expression();

               if (0 == arg)
                  return error_node();

               arg_list.push_back(arg);

               if (token_is(token_t::e_rsqrbracket))
                  break;
               else if (!token_is(token_t::e_comma))
               {
                  set_error(make_error(
                     parser_error::e_syntax,
                     current_token(),
                     "ERR216 - Expected ',' between values during call to return",
                     exprtk_error_location));

                  return error_node();
               }
            }
         }
         else if (settings_.zero_return_disabled())
         {
            set_error(make_error(
               parser_error::e_syntax,
               current_token(),
               "ERR217 - Zero parameter return statement not allowed",
               exprtk_error_location));

            return error_node();
         }

         const lexer::token prev_token = current_token();

         if (token_is(token_t::e_rsqrbracket))
         {
            if (!arg_list.empty())
            {
               set_error(make_error(
                  parser_error::e_syntax,
                  prev_token,
                  "ERR218 - Invalid ']' found during return call",
                  exprtk_error_location));

               return error_node();
            }
         }

         std::string ret_param_type_list;

         for (std::size_t i = 0; i < arg_list.size(); ++i)
         {
            if (0 == arg_list[i])
               return error_node();
            else if (is_ivector_node(arg_list[i]))
               ret_param_type_list += 'V';
            else if (is_generally_string_node(arg_list[i]))
               ret_param_type_list += 'S';
            else
               ret_param_type_list += 'T';
         }

         dec_.retparam_list_.push_back(ret_param_type_list);

         expression_node_ptr result = expression_generator_.return_call(arg_list);

         svd.delete_ptr = (0 == result);

         state_.return_stmt_present = true;

         state_.activate_side_effect("parse_return_statement()");

         return result;
      }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x178, %rsp            # imm = 0x178
movq %rdi, %rbx
movb 0x3a8(%rdi), %al
cmpb $0x1, %al
jne 0x204d96
leaq 0xd803a(%rip), %rsi     # 0x2dcd31
leaq 0x50(%rsp), %rdi
leaq 0x98(%rsp), %rdx
callq 0x127016
leaq 0x30(%rsp), %rdi
movl $0x7742, %esi           # imm = 0x7742
callq 0x1f7a3c
leaq 0xd4edc(%rip), %rsi     # 0x2d9bfb
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0xd0(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x50(%rsp), %rcx
leaq 0x10(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0xd0(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
leaq 0xd0(%rsp), %rdi
callq 0x1f5c4c
leaq 0x10(%rsp), %rdi
callq 0x118648
leaq 0x30(%rsp), %rdi
callq 0x118648
leaq 0x50(%rsp), %rdi
callq 0x118648
xorl %r14d, %r14d
jmp 0x204f93
xorb $0x1, %al
movb %al, 0x3a8(%rbx)
xorps %xmm0, %xmm0
leaq 0x80(%rsp), %rax
andq $0x0, 0x10(%rax)
movaps %xmm0, (%rax)
movb $0x1, 0xb8(%rsp)
movq %rbx, 0xc0(%rsp)
movq %rax, 0xc8(%rsp)
leaq 0xd8001(%rip), %rsi     # 0x2dcdd1
leaq 0xd0(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x127016
leaq 0x78(%rbx), %rdi
leaq 0xd0(%rsp), %r14
movq %r14, %rsi
callq 0x1fbcc5
movl %eax, %ebp
movq %r14, %rdi
callq 0x118648
testb %bpl, %bpl
je 0x204f6f
movq %rbx, %rdi
callq 0x1f6d68
leaq 0xd0(%rsp), %rsi
movl $0x5b, (%rsi)
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0x1fae6e
leaq 0x70(%rbx), %r14
testb %al, %al
je 0x204ed5
leaq 0xd0(%rsp), %rsi
movl $0x5d, (%rsi)
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0x1fae6e
testb %al, %al
je 0x204fa8
cmpb $0x1, 0xdc(%rbx)
jne 0x205092
leaq 0xd7f6d(%rip), %rsi     # 0x2dcdd8
leaq 0x50(%rsp), %rdi
leaq 0x98(%rsp), %rdx
callq 0x127016
leaq 0x30(%rsp), %rdi
movl $0x777d, %esi           # imm = 0x777D
callq 0x1f7a3c
leaq 0xd4d68(%rip), %rsi     # 0x2d9bfb
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x1b4349
leaq 0xd0(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x50(%rsp), %rcx
leaq 0x10(%rsp), %r8
movq %r14, %rdx
callq 0x1f7341
leaq 0x308(%rbx), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x1f76ce
jmp 0x204f44
leaq 0xd7e8e(%rip), %rsi     # 0x2dcd6a
leaq 0x50(%rsp), %rdi
leaq 0x98(%rsp), %rdx
callq 0x127016
leaq 0x30(%rsp), %rdi
movl $0x775a, %esi           # imm = 0x775A
callq 0x1f7a3c
leaq 0xd4cf7(%rip), %rsi     # 0x2d9bfb
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x1b4349
leaq 0xd0(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x50(%rsp), %rcx
leaq 0x10(%rsp), %r8
movq %r14, %rdx
callq 0x1f7341
leaq 0x308(%rbx), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x1f76ce
leaq 0xd0(%rsp), %rdi
callq 0x1f5c4c
leaq 0x10(%rsp), %rdi
callq 0x118648
leaq 0x30(%rsp), %rdi
callq 0x118648
leaq 0x50(%rsp), %rdi
callq 0x118648
xorl %r14d, %r14d
leaq 0xb8(%rsp), %rdi
callq 0x1fb1b8
leaq 0x80(%rsp), %rdi
callq 0x29e264
xorb $0x1, 0x3a8(%rbx)
movq %r14, %rax
addq $0x178, %rsp            # imm = 0x178
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x80(%rsp), %r15
leaq 0x98(%rsp), %r12
leaq 0xd0(%rsp), %r13
pushq $0x1
popq %rbp
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1f9016
movq %rax, 0x98(%rsp)
testq %rax, %rax
je 0x204f6f
movq %r15, %rdi
movq %r12, %rsi
callq 0x1fadc0
movl $0x5d, 0xd0(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movl %ebp, %edx
callq 0x1fae6e
testb %al, %al
jne 0x205092
movl $0x2c, 0xd0(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movl %ebp, %edx
callq 0x1fae6e
testb %al, %al
jne 0x204fc3
leaq 0xd7d75(%rip), %rsi     # 0x2dcd9d
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x127016
leaq 0x30(%rsp), %rdi
movl $0x7771, %esi           # imm = 0x7771
callq 0x1f7a3c
leaq 0xd4bae(%rip), %rsi     # 0x2d9bfb
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x1b4349
leaq 0xd0(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x50(%rsp), %rcx
leaq 0x10(%rsp), %r8
movq %r14, %rdx
callq 0x1f7341
leaq 0x308(%rbx), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x1f76ce
jmp 0x204f44
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x19f4e6
leaq 0xd0(%rsp), %rsi
movl $0x5d, (%rsi)
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0x1fae6e
testb %al, %al
je 0x205180
movq 0x80(%rsp), %rax
cmpq 0x88(%rsp), %rax
je 0x205180
leaq 0xd7d30(%rip), %rsi     # 0x2dce0d
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x127016
leaq 0x98(%rsp), %rdi
movl $0x778c, %esi           # imm = 0x778C
callq 0x1f7a3c
leaq 0xd4af6(%rip), %rsi     # 0x2d9bfb
leaq 0x30(%rsp), %rdi
leaq 0x98(%rsp), %rdx
callq 0x1b4349
leaq 0xd0(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x50(%rsp), %rdx
leaq 0x10(%rsp), %rcx
leaq 0x30(%rsp), %r8
callq 0x1f7341
leaq 0x308(%rbx), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x1f76ce
leaq 0xd0(%rsp), %rdi
callq 0x1f5c4c
leaq 0x30(%rsp), %rdi
callq 0x118648
leaq 0x98(%rsp), %rdi
callq 0x118648
leaq 0x10(%rsp), %rdi
callq 0x118648
xorl %r14d, %r14d
jmp 0x205275
leaq 0xe0(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
xorl %r14d, %r14d
leaq 0xd0(%rsp), %r15
xorl %r12d, %r12d
movq 0x80(%rsp), %rax
movq 0x88(%rsp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %rcx, %r12
jae 0x2051fb
movq (%rax,%r12,8), %rdi
testq %rdi, %rdi
je 0x205268
callq 0x208d51
movb $0x56, %cl
testb %al, %al
jne 0x2051eb
movq 0x80(%rsp), %rax
movq (%rax,%r12,8), %rdi
callq 0x20b691
movb $0x54, %cl
subb %al, %cl
movzbl %cl, %esi
movq %r15, %rdi
callq 0x1185f0
incq %r12
jmp 0x2051a2
leaq 0x2f0(%rbx), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x2a18b0
leaq 0x220(%rbx), %rdi
leaq 0x80(%rsp), %rsi
callq 0x2a18dc
movq %rax, %r14
testq %rax, %rax
sete 0xb8(%rsp)
movb $0x1, 0x3ab(%rbx)
leaq 0xd7bfc(%rip), %rsi     # 0x2dce3b
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x127016
cmpb $0x0, 0x3ac(%rbx)
jne 0x20525e
movb $0x1, 0x3ac(%rbx)
leaq 0x10(%rsp), %rdi
callq 0x118648
leaq 0xd0(%rsp), %rdi
callq 0x118648
leaq 0x58(%rsp), %rdi
callq 0x118648
jmp 0x204f72
movq %rax, %r14
leaq 0xd0(%rsp), %rdi
callq 0x1f5c4c
jmp 0x205299
movq %rax, %r14
leaq 0x30(%rsp), %rdi
callq 0x118648
jmp 0x2052a8
movq %rax, %r14
leaq 0x98(%rsp), %rdi
callq 0x118648
jmp 0x2052ba
movq %rax, %r14
leaq 0x10(%rsp), %rdi
jmp 0x205398
jmp 0x2052ef
jmp 0x20538d
jmp 0x20538d
jmp 0x20538d
jmp 0x2052fc
jmp 0x20530e
jmp 0x20531d
jmp 0x20532c
jmp 0x205388
jmp 0x2052fc
jmp 0x20530e
jmp 0x20531d
jmp 0x20532c
jmp 0x205388
movq %rax, %r14
jmp 0x20539d
jmp 0x205388
movq %rax, %r14
leaq 0xd0(%rsp), %rdi
callq 0x1f5c4c
jmp 0x205311
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x118648
jmp 0x205320
movq %rax, %r14
leaq 0x30(%rsp), %rdi
callq 0x118648
jmp 0x20532f
movq %rax, %r14
leaq 0x50(%rsp), %rdi
jmp 0x2053a2
jmp 0x205388
jmp 0x205388
jmp 0x205388
jmp 0x205388
movq %rax, %r14
leaq 0xd0(%rsp), %rdi
callq 0x1f5c4c
jmp 0x205353
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x118648
jmp 0x205362
movq %rax, %r14
leaq 0x30(%rsp), %rdi
callq 0x118648
jmp 0x205371
movq %rax, %r14
leaq 0x50(%rsp), %rdi
callq 0x118648
jmp 0x2053c8
jmp 0x205388
movq %rax, %r14
jmp 0x2053c8
jmp 0x205388
jmp 0x205388
movq %rax, %r14
jmp 0x2053a7
movq %rax, %r14
leaq 0xd0(%rsp), %rdi
callq 0x118648
leaq 0x58(%rsp), %rdi
callq 0x118648
leaq 0xb8(%rsp), %rdi
callq 0x1fb1b8
leaq 0x80(%rsp), %rdi
callq 0x29e264
xorb $0x1, 0x3a8(%rbx)
movq %r14, %rdi
callq 0x118360