// File: /workspace/github_cpp_makefile_star2_O2/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::parse_string_range_statement(exprtk::details::expression_node<double>*&)
inline expression_node_ptr parse_string_range_statement(expression_node_ptr& expression)
      {
         if (!token_is(token_t::e_lsqrbracket))
         {
            set_error(make_error(
               parser_error::e_syntax,
               current_token(),
               "ERR108 - Expected '[' as start of string range definition",
               exprtk_error_location));

            free_node(node_allocator_, expression);

            return error_node();
         }
         else if (token_is(token_t::e_rsqrbracket))
         {
            return node_allocator_.allocate<details::string_size_node<T> >(expression);
         }

         range_t rp;

         if (!parse_range(rp,true))
         {
            free_node(node_allocator_, expression);

            return error_node();
         }

         expression_node_ptr result = expression_generator_(expression,rp);

         if (0 == result)
         {
            set_error(make_error(
               parser_error::e_syntax,
               current_token(),
               "ERR109 - Failed to generate string range node",
               exprtk_error_location));

            free_node(node_allocator_, expression);
            rp.free();
         }

         rp.clear();

         if (result && result->valid())
         {
            return result;
         }

         set_error(make_error(
            parser_error::e_synthesis,
            current_token(),
            "ERR110 - Failed to synthesize node: string_range_node",
            exprtk_error_location));

         free_node(node_allocator_, result);
         rp.free();
         return error_node();
      }

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x168, %rsp            # imm = 0x168
movq %rsi, %r14
movq %rdi, %rbx
leaq 0xc0(%rsp), %rsi
movl $0x5b, (%rsi)
pushq $0x1
popq %rdx
callq 0x1fae6e
testb %al, %al
je 0x2b87fb
leaq 0xc0(%rsp), %rsi
movl $0x5d, (%rsi)
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0x1fae6e
testb %al, %al
je 0x2b8898
addq $0x290, %rbx            # imm = 0x290
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2b8bae
movq %rax, %r15
jmp 0x2b8958
leaq 0x25586(%rip), %rsi     # 0x2ddd88
leaq 0x70(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x127016
leaq 0x8(%rsp), %rdi
movl $0x6b91, %esi           # imm = 0x6B91
callq 0x1f7a3c
leaq 0x213d4(%rip), %rsi     # 0x2d9bfb
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0xc0(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x70(%rsp), %rcx
leaq 0x28(%rsp), %r8
callq 0x1f7341
leaq 0x308(%rbx), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1f76ce
leaq 0xc0(%rsp), %rdi
callq 0x1f5c4c
leaq 0x28(%rsp), %rdi
callq 0x118648
leaq 0x8(%rsp), %rdi
callq 0x118648
leaq 0x70(%rsp), %rdi
callq 0x118648
jmp 0x2b8943
xorl %eax, %eax
leaq 0x70(%rsp), %rsi
movb %al, (%rsi)
andq $0x0, 0x8(%rsi)
movb %al, 0x10(%rsi)
andq $0x0, 0x18(%rsi)
movb %al, 0x20(%rsi)
andq $0x0, 0x28(%rsi)
movb %al, 0x30(%rsi)
xorps %xmm0, %xmm0
movups %xmm0, 0x38(%rsi)
andq $0x0, 0x48(%rsi)
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0x2a60f4
testb %al, %al
je 0x2b8943
leaq 0xa8(%rsp), %r12
leaq 0x220(%rbx), %rdi
movq (%r14), %rsi
leaq 0x70(%rsp), %rdx
callq 0x2b8bfa
movq %rax, %r15
movq %rax, 0x68(%rsp)
testq %rax, %rax
je 0x2b896a
xorl %eax, %eax
movb %al, 0x70(%rsp)
andq $0x0, 0x78(%rsp)
movb %al, 0x80(%rsp)
andq $0x0, 0x88(%rsp)
movb %al, 0x90(%rsp)
andq $0x0, 0x98(%rsp)
movb %al, 0xa0(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, (%r12)
andq $0x0, 0x10(%r12)
jmp 0x2b8a51
addq $0x290, %rbx            # imm = 0x290
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1ad9c8
xorl %r15d, %r15d
movq %r15, %rax
addq $0x168, %rsp            # imm = 0x168
popq %rbx
popq %r12
popq %r14
popq %r15
retq
leaq 0x25451(%rip), %rsi     # 0x2dddc2
leaq 0x28(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x127016
leaq 0x48(%rsp), %rdi
movl $0x6bad, %esi           # imm = 0x6BAD
callq 0x1f7a3c
leaq 0x21265(%rip), %rsi     # 0x2d9bfb
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0xc0(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x28(%rsp), %rcx
leaq 0x8(%rsp), %r8
callq 0x1f7341
leaq 0x308(%rbx), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1f76ce
leaq 0xc0(%rsp), %rdi
callq 0x1f5c4c
leaq 0x8(%rsp), %rdi
callq 0x118648
leaq 0x48(%rsp), %rdi
callq 0x118648
leaq 0x28(%rsp), %rdi
callq 0x118648
leaq 0x290(%rbx), %rdi
movq %r14, %rsi
callq 0x1ad9c8
leaq 0x70(%rsp), %r14
movq %r14, %rdi
callq 0x256004
xorl %eax, %eax
movb %al, (%r14)
andq $0x0, 0x8(%r14)
movb %al, 0x10(%r14)
andq $0x0, 0x18(%r14)
movb %al, 0x20(%r14)
andq $0x0, 0x28(%r14)
movb %al, 0x30(%r14)
andq $0x0, 0x10(%r12)
xorps %xmm0, %xmm0
movups %xmm0, (%r12)
testq %r15, %r15
je 0x2b8a62
movq (%r15), %rax
movq %r15, %rdi
callq *0x30(%rax)
testb %al, %al
jne 0x2b8958
leaq 0x25387(%rip), %rsi     # 0x2dddf0
leaq 0x28(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x127016
leaq 0x48(%rsp), %rdi
movl $0x6bbe, %esi           # imm = 0x6BBE
callq 0x1f7a3c
leaq 0x2116d(%rip), %rsi     # 0x2d9bfb
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0xc0(%rsp), %rdi
pushq $0x7
popq %rsi
leaq 0x28(%rsp), %rcx
leaq 0x8(%rsp), %r8
callq 0x1f7341
leaq 0x308(%rbx), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1f76ce
leaq 0xc0(%rsp), %rdi
callq 0x1f5c4c
leaq 0x8(%rsp), %rdi
callq 0x118648
leaq 0x48(%rsp), %rdi
callq 0x118648
leaq 0x28(%rsp), %rdi
callq 0x118648
addq $0x290, %rbx            # imm = 0x290
leaq 0x68(%rsp), %rsi
movq %rbx, %rdi
callq 0x1ad9c8
leaq 0x70(%rsp), %rdi
callq 0x256004
jmp 0x2b8955
jmp 0x2b8b27
jmp 0x2b8b39
jmp 0x2b8b48
jmp 0x2b8b57
jmp 0x2b8ba2
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x1f5c4c
jmp 0x2b8b3c
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x118648
jmp 0x2b8b4b
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x118648
jmp 0x2b8b5a
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
jmp 0x2b8b9b
jmp 0x2b8ba2
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x1f5c4c
jmp 0x2b8b78
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x118648
jmp 0x2b8b87
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x118648
jmp 0x2b8b96
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x118648
jmp 0x2b8ba5
movq %rax, %rbx
movq %rbx, %rdi
callq 0x118360
nop