// File: 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:
subq $0x3f8, %rsp            # imm = 0x3F8
movq %rdi, 0x3e8(%rsp)
movq %rsi, 0x3e0(%rsp)
movq 0x3e8(%rsp), %rdi
movq %rdi, 0x30(%rsp)
movl $0x5b, 0x3dc(%rsp)
leaq 0x3dc(%rsp), %rsi
movl $0x1, %edx
callq 0x37d640
xorb $-0x1, %al
testb $0x1, %al
jne 0x556d8c
jmp 0x556f58
movq 0x30(%rsp), %rdi
callq 0x373e90
movq %rax, 0x20(%rsp)
leaq 0x30f(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x11b6f0
movq 0x28(%rsp), %rdx
leaq 0x5430e(%rip), %rsi     # 0x5ab0c7
leaq 0x310(%rsp), %rdi
callq 0x134520
jmp 0x556dc8
leaq 0x2b8(%rsp), %rdi
movl $0x6b91, %esi           # imm = 0x6B91
callq 0x371f20
jmp 0x556ddc
leaq 0x50130(%rip), %rsi     # 0x5a6f13
leaq 0x2d8(%rsp), %rdi
leaq 0x2b8(%rsp), %rdx
callq 0x29dd70
jmp 0x556dfa
movq 0x20(%rsp), %rdx
leaq 0x330(%rsp), %rdi
movl $0x1, %esi
leaq 0x310(%rsp), %rcx
leaq 0x2d8(%rsp), %r8
callq 0x3741e0
jmp 0x556e23
movq 0x30(%rsp), %rdi
leaq 0x330(%rsp), %rsi
callq 0x371e40
jmp 0x556e37
leaq 0x330(%rsp), %rdi
callq 0x371330
leaq 0x2d8(%rsp), %rdi
callq 0x11b838
leaq 0x2b8(%rsp), %rdi
callq 0x11b838
leaq 0x310(%rsp), %rdi
callq 0x11b838
leaq 0x30f(%rsp), %rdi
callq 0x11b820
movq 0x30(%rsp), %rdi
addq $0x290, %rdi            # imm = 0x290
movq 0x3e0(%rsp), %rsi
callq 0x284bd0
callq 0x2821f0
movq %rax, 0x3f0(%rsp)
jmp 0x5573f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x300(%rsp)
movl %eax, 0x2fc(%rsp)
jmp 0x556f46
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x300(%rsp)
movl %eax, 0x2fc(%rsp)
jmp 0x556f39
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x300(%rsp)
movl %eax, 0x2fc(%rsp)
jmp 0x556f2c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x300(%rsp)
movl %eax, 0x2fc(%rsp)
jmp 0x556f1f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x300(%rsp)
movl %eax, 0x2fc(%rsp)
leaq 0x330(%rsp), %rdi
callq 0x371330
leaq 0x2d8(%rsp), %rdi
callq 0x11b838
leaq 0x2b8(%rsp), %rdi
callq 0x11b838
leaq 0x310(%rsp), %rdi
callq 0x11b838
leaq 0x30f(%rsp), %rdi
callq 0x11b820
jmp 0x557407
movq 0x30(%rsp), %rdi
movl $0x5d, 0x2b4(%rsp)
leaq 0x2b4(%rsp), %rsi
movl $0x1, %edx
callq 0x37d640
testb $0x1, %al
jne 0x556f80
jmp 0x556fa6
movq 0x30(%rsp), %rdi
addq $0x290, %rdi            # imm = 0x290
movq 0x3e0(%rsp), %rsi
callq 0x557420
movq %rax, 0x3f0(%rsp)
jmp 0x5573f7
jmp 0x556fa8
leaq 0x260(%rsp), %rdi
callq 0x43b670
movq 0x30(%rsp), %rdi
leaq 0x260(%rsp), %rsi
movl $0x1, %edx
callq 0x52dea0
testb $0x1, %al
jne 0x556ffb
movq 0x30(%rsp), %rdi
addq $0x290, %rdi            # imm = 0x290
movq 0x3e0(%rsp), %rsi
callq 0x284bd0
callq 0x2821f0
movq %rax, 0x3f0(%rsp)
jmp 0x5573f7
movq 0x30(%rsp), %rdi
addq $0x220, %rdi            # imm = 0x220
movq 0x3e0(%rsp), %rax
movq (%rax), %rsi
leaq 0x260(%rsp), %rdx
callq 0x5574a0
movq %rax, 0x258(%rsp)
xorl %eax, %eax
cmpq 0x258(%rsp), %rax
jne 0x557203
movq 0x30(%rsp), %rdi
callq 0x373e90
movq %rax, 0x10(%rsp)
leaq 0x18f(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x11b6f0
movq 0x18(%rsp), %rdx
leaq 0x5409d(%rip), %rsi     # 0x5ab101
leaq 0x190(%rsp), %rdi
callq 0x134520
jmp 0x557073
leaq 0x148(%rsp), %rdi
movl $0x6bad, %esi           # imm = 0x6BAD
callq 0x371f20
jmp 0x557087
leaq 0x4fe85(%rip), %rsi     # 0x5a6f13
leaq 0x168(%rsp), %rdi
leaq 0x148(%rsp), %rdx
callq 0x29dd70
jmp 0x5570a5
movq 0x10(%rsp), %rdx
leaq 0x1b0(%rsp), %rdi
movl $0x1, %esi
leaq 0x190(%rsp), %rcx
leaq 0x168(%rsp), %r8
callq 0x3741e0
jmp 0x5570ce
movq 0x30(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
callq 0x371e40
jmp 0x5570e2
leaq 0x1b0(%rsp), %rdi
callq 0x371330
leaq 0x168(%rsp), %rdi
callq 0x11b838
leaq 0x148(%rsp), %rdi
callq 0x11b838
leaq 0x190(%rsp), %rdi
callq 0x11b838
leaq 0x18f(%rsp), %rdi
callq 0x11b820
movq 0x30(%rsp), %rdi
addq $0x290, %rdi            # imm = 0x290
movq 0x3e0(%rsp), %rsi
callq 0x284bd0
leaq 0x260(%rsp), %rdi
callq 0x445180
jmp 0x557203
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x300(%rsp)
movl %eax, 0x2fc(%rsp)
jmp 0x5571f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x300(%rsp)
movl %eax, 0x2fc(%rsp)
jmp 0x5571e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x300(%rsp)
movl %eax, 0x2fc(%rsp)
jmp 0x5571d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x300(%rsp)
movl %eax, 0x2fc(%rsp)
jmp 0x5571ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x300(%rsp)
movl %eax, 0x2fc(%rsp)
leaq 0x1b0(%rsp), %rdi
callq 0x371330
leaq 0x168(%rsp), %rdi
callq 0x11b838
leaq 0x148(%rsp), %rdi
callq 0x11b838
leaq 0x190(%rsp), %rdi
callq 0x11b838
leaq 0x18f(%rsp), %rdi
callq 0x11b820
jmp 0x557407
leaq 0x260(%rsp), %rdi
callq 0x443c00
cmpq $0x0, 0x258(%rsp)
je 0x557244
movq 0x258(%rsp), %rdi
movq (%rdi), %rax
callq *0x30(%rax)
testb $0x1, %al
jne 0x55722f
jmp 0x557244
movq 0x258(%rsp), %rax
movq %rax, 0x3f0(%rsp)
jmp 0x5573f7
movq 0x30(%rsp), %rdi
callq 0x373e90
movq %rax, (%rsp)
leaq 0x7f(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x11b6f0
movq 0x8(%rsp), %rdx
leaq 0x53ec2(%rip), %rsi     # 0x5ab12f
leaq 0x80(%rsp), %rdi
callq 0x134520
jmp 0x55727c
leaq 0x38(%rsp), %rdi
movl $0x6bbe, %esi           # imm = 0x6BBE
callq 0x371f20
jmp 0x55728d
leaq 0x4fc7f(%rip), %rsi     # 0x5a6f13
leaq 0x58(%rsp), %rdi
leaq 0x38(%rsp), %rdx
callq 0x29dd70
jmp 0x5572a5
movq (%rsp), %rdx
leaq 0xa0(%rsp), %rdi
movl $0x7, %esi
leaq 0x80(%rsp), %rcx
leaq 0x58(%rsp), %r8
callq 0x3741e0
jmp 0x5572ca
movq 0x30(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0x371e40
jmp 0x5572de
leaq 0xa0(%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
movq 0x30(%rsp), %rdi
addq $0x290, %rdi            # imm = 0x290
leaq 0x258(%rsp), %rsi
callq 0x284bd0
leaq 0x260(%rsp), %rdi
callq 0x445180
callq 0x2821f0
movq %rax, 0x3f0(%rsp)
jmp 0x5573f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x300(%rsp)
movl %eax, 0x2fc(%rsp)
jmp 0x5573eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x300(%rsp)
movl %eax, 0x2fc(%rsp)
jmp 0x5573de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x300(%rsp)
movl %eax, 0x2fc(%rsp)
jmp 0x5573d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x300(%rsp)
movl %eax, 0x2fc(%rsp)
jmp 0x5573ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x300(%rsp)
movl %eax, 0x2fc(%rsp)
leaq 0xa0(%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
jmp 0x557407
movq 0x3f0(%rsp), %rax
addq $0x3f8, %rsp            # imm = 0x3F8
retq
movq 0x300(%rsp), %rdi
callq 0x11b4e0
nopw %cs:(%rax,%rax)
nop