// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::parse_const_string()
inline expression_node_ptr parse_const_string()
      {
         const std::string   const_str = current_token().value;
         expression_node_ptr result    = expression_generator_(const_str);

         if (peek_token_is(token_t::e_lsqrbracket))
         {
            next_token();

            if (peek_token_is(token_t::e_rsqrbracket))
            {
               next_token();
               next_token();

               free_node(node_allocator_, result);

               return expression_generator_(T(const_str.size()));
            }

            range_t rp;

            if (!parse_range(rp))
            {
               free_node(node_allocator_, result);
               rp.free();

               return error_node();
            }

            free_node(node_allocator_, result);

            if (rp.n1_c.first && (rp.n1_c.second == std::numeric_limits<std::size_t>::max()))
            {
               rp.n1_c.second  = const_str.size() - 1;
               rp.cache.second = rp.n1_c.second;
            }

            if (
                 (rp.n0_c.first && (rp.n0_c.second >= const_str.size())) ||
                 (rp.n1_c.first && (rp.n1_c.second >= const_str.size()))
               )
            {
               set_error(make_error(
                  parser_error::e_syntax,
                  current_token(),
                  "ERR122 - Overflow in range for string: '" + const_str + "'[" +
                  (rp.n0_c.first ? details::to_str(static_cast<int>(rp.n0_c.second)) : "?") + ":" +
                  (rp.n1_c.first ? details::to_str(static_cast<int>(rp.n1_c.second)) : "?") + "]",
                  exprtk_error_location));

               rp.free();

               return error_node();
            }

            result = expression_generator_(const_str,rp);

            if (result)
               rp.clear();
         }
         else
            next_token();

         return result;
      }

// Assembly:
subq $0x318, %rsp            # imm = 0x318
movq %rdi, 0x308(%rsp)
movq 0x308(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0x373e90
movq %rax, %rsi
addq $0x8, %rsi
leaq 0x2e8(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x11b140
movq 0x58(%rsp), %rdi
movq 0x60(%rsp), %rsi
addq $0x220, %rdi            # imm = 0x220
callq 0x52dda0
movq %rax, 0x68(%rsp)
jmp 0x382e67
movq 0x58(%rsp), %rdi
movq 0x68(%rsp), %rax
movq %rax, 0x2e0(%rsp)
movl $0x5b, 0x2d0(%rsp)
leaq 0x2d0(%rsp), %rsi
callq 0x39c870
movb %al, 0x57(%rsp)
jmp 0x382e97
movb 0x57(%rsp), %al
testb $0x1, %al
jne 0x382ea4
jmp 0x38362d
movq 0x58(%rsp), %rdi
callq 0x373690
jmp 0x382eb0
movq 0x58(%rsp), %rdi
movl $0x5d, 0x2cc(%rsp)
leaq 0x2cc(%rsp), %rsi
callq 0x39c870
movb %al, 0x56(%rsp)
jmp 0x382ed3
movb 0x56(%rsp), %al
testb $0x1, %al
jne 0x382ee0
jmp 0x382faf
movq 0x58(%rsp), %rdi
callq 0x373690
jmp 0x382eec
movq 0x58(%rsp), %rdi
callq 0x373690
jmp 0x382ef8
movq 0x58(%rsp), %rdi
addq $0x290, %rdi            # imm = 0x290
leaq 0x2e0(%rsp), %rsi
callq 0x284bd0
jmp 0x382f13
movq 0x58(%rsp), %rax
addq $0x220, %rax            # imm = 0x220
movq %rax, 0x40(%rsp)
leaq 0x2e8(%rsp), %rdi
callq 0x11b270
movq 0x40(%rsp), %rdi
movq %rax, %xmm0
movaps 0x21825f(%rip), %xmm1   # 0x59b1a0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x218263(%rip), %xmm1   # 0x59b1b0
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd %xmm0, 0x2c0(%rsp)
leaq 0x2c0(%rsp), %rsi
callq 0x284c20
movq %rax, 0x48(%rsp)
jmp 0x382f79
movq 0x48(%rsp), %rax
movq %rax, 0x310(%rsp)
movl $0x1, 0x2bc(%rsp)
jmp 0x383656
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
jmp 0x383673
leaq 0x268(%rsp), %rdi
callq 0x43b670
jmp 0x382fbe
movq 0x58(%rsp), %rdi
leaq 0x268(%rsp), %rsi
xorl %edx, %edx
callq 0x52dea0
movb %al, 0x3f(%rsp)
jmp 0x382fd8
movb 0x3f(%rsp), %al
testb $0x1, %al
jne 0x383029
jmp 0x382fe2
movq 0x58(%rsp), %rdi
addq $0x290, %rdi            # imm = 0x290
leaq 0x2e0(%rsp), %rsi
callq 0x284bd0
jmp 0x382ffd
leaq 0x268(%rsp), %rdi
callq 0x445180
jmp 0x38300c
callq 0x2821f0
movq %rax, 0x310(%rsp)
movl $0x1, 0x2bc(%rsp)
jmp 0x383656
movq 0x58(%rsp), %rdi
addq $0x290, %rdi            # imm = 0x290
leaq 0x2e0(%rsp), %rsi
callq 0x284bd0
jmp 0x383044
testb $0x1, 0x298(%rsp)
je 0x383096
movq 0x2a0(%rsp), %rax
movq %rax, 0x30(%rsp)
callq 0x237af0
movq %rax, %rcx
movq 0x30(%rsp), %rax
cmpq %rcx, %rax
jne 0x383096
leaq 0x2e8(%rsp), %rdi
callq 0x11b270
subq $0x1, %rax
movq %rax, 0x2a0(%rsp)
movq 0x2a0(%rsp), %rax
movq %rax, 0x2b0(%rsp)
testb $0x1, 0x288(%rsp)
je 0x3830c7
movq 0x290(%rsp), %rax
movq %rax, 0x28(%rsp)
leaq 0x2e8(%rsp), %rdi
callq 0x11b270
movq %rax, %rcx
movq 0x28(%rsp), %rax
cmpq %rcx, %rax
jae 0x383100
testb $0x1, 0x298(%rsp)
je 0x3835dc
movq 0x2a0(%rsp), %rax
movq %rax, 0x20(%rsp)
leaq 0x2e8(%rsp), %rdi
callq 0x11b270
movq %rax, %rcx
movq 0x20(%rsp), %rax
cmpq %rcx, %rax
jb 0x3835dc
movq 0x58(%rsp), %rdi
callq 0x373e90
movq %rax, 0x18(%rsp)
jmp 0x383111
leaq 0x227f1c(%rip), %rsi    # 0x5ab034
leaq 0x100(%rsp), %rdi
leaq 0x2e8(%rsp), %rdx
callq 0x3784f0
jmp 0x38312f
leaq 0x227f27(%rip), %rdx    # 0x5ab05d
leaq 0x120(%rsp), %rdi
leaq 0x100(%rsp), %rsi
callq 0x29dc30
jmp 0x38314d
movb 0x288(%rsp), %al
movb $0x0, 0xde(%rsp)
testb $0x1, %al
je 0x383178
movl 0x290(%rsp), %esi
leaq 0xe0(%rsp), %rdi
callq 0x371f20
jmp 0x383176
jmp 0x3831af
leaq 0xdf(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x11b6f0
movq 0x10(%rsp), %rdx
movb $0x1, 0xde(%rsp)
leaq 0x231b97(%rip), %rsi    # 0x5b4d35
leaq 0xe0(%rsp), %rdi
callq 0x134520
jmp 0x3831ad
jmp 0x3831af
leaq 0x140(%rsp), %rdi
leaq 0x120(%rsp), %rsi
leaq 0xe0(%rsp), %rdx
callq 0x29dc80
jmp 0x3831ce
leaq 0x223d48(%rip), %rdx    # 0x5a6f1d
leaq 0x160(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x29dc30
jmp 0x3831ec
movb 0x298(%rsp), %al
movb $0x0, 0xb6(%rsp)
testb $0x1, %al
je 0x383217
movl 0x2a0(%rsp), %esi
leaq 0xb8(%rsp), %rdi
callq 0x371f20
jmp 0x383215
jmp 0x38324e
leaq 0xb7(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x11b6f0
movq 0x8(%rsp), %rdx
movb $0x1, 0xb6(%rsp)
leaq 0x231af8(%rip), %rsi    # 0x5b4d35
leaq 0xb8(%rsp), %rdi
callq 0x134520
jmp 0x38324c
jmp 0x38324e
leaq 0x180(%rsp), %rdi
leaq 0x160(%rsp), %rsi
leaq 0xb8(%rsp), %rdx
callq 0x29dc80
jmp 0x38326d
leaq 0x22dcac(%rip), %rdx    # 0x5b0f20
leaq 0x1a0(%rsp), %rdi
leaq 0x180(%rsp), %rsi
callq 0x29dc30
jmp 0x38328b
leaq 0x70(%rsp), %rdi
movl $0x6e16, %esi           # imm = 0x6E16
callq 0x371f20
jmp 0x38329c
leaq 0x223c70(%rip), %rsi    # 0x5a6f13
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rdx
callq 0x29dd70
jmp 0x3832b7
movq 0x18(%rsp), %rdx
leaq 0x1c0(%rsp), %rdi
movl $0x1, %esi
leaq 0x1a0(%rsp), %rcx
leaq 0x90(%rsp), %r8
callq 0x3741e0
jmp 0x3832e0
movq 0x58(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
callq 0x371e40
jmp 0x3832f4
leaq 0x1c0(%rsp), %rdi
callq 0x371330
leaq 0x90(%rsp), %rdi
callq 0x11b838
leaq 0x70(%rsp), %rdi
callq 0x11b838
leaq 0x1a0(%rsp), %rdi
callq 0x11b838
leaq 0x180(%rsp), %rdi
callq 0x11b838
leaq 0xb8(%rsp), %rdi
callq 0x11b838
testb $0x1, 0xb6(%rsp)
jne 0x38334b
jmp 0x383358
leaq 0xb7(%rsp), %rdi
callq 0x11b820
leaq 0x160(%rsp), %rdi
callq 0x11b838
leaq 0x140(%rsp), %rdi
callq 0x11b838
leaq 0xe0(%rsp), %rdi
callq 0x11b838
testb $0x1, 0xde(%rsp)
jne 0x38338b
jmp 0x383398
leaq 0xdf(%rsp), %rdi
callq 0x11b820
leaq 0x120(%rsp), %rdi
callq 0x11b838
leaq 0x100(%rsp), %rdi
callq 0x11b838
leaq 0x268(%rsp), %rdi
callq 0x445180
jmp 0x3833c1
callq 0x2821f0
movq %rax, 0x310(%rsp)
movl $0x1, 0x2bc(%rsp)
jmp 0x383656
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
jmp 0x3835ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
jmp 0x3835bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
jmp 0x3835a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
jmp 0x383595
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
jmp 0x383588
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
jmp 0x38357b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
jmp 0x383560
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
jmp 0x383553
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
jmp 0x383546
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
jmp 0x383539
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
jmp 0x38352f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
jmp 0x383522
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
leaq 0x1c0(%rsp), %rdi
callq 0x371330
leaq 0x90(%rsp), %rdi
callq 0x11b838
leaq 0x70(%rsp), %rdi
callq 0x11b838
leaq 0x1a0(%rsp), %rdi
callq 0x11b838
leaq 0x180(%rsp), %rdi
callq 0x11b838
leaq 0xb8(%rsp), %rdi
callq 0x11b838
testb $0x1, 0xb6(%rsp)
jne 0x38356c
jmp 0x383579
leaq 0xb7(%rsp), %rdi
callq 0x11b820
jmp 0x38357b
leaq 0x160(%rsp), %rdi
callq 0x11b838
leaq 0x140(%rsp), %rdi
callq 0x11b838
leaq 0xe0(%rsp), %rdi
callq 0x11b838
testb $0x1, 0xde(%rsp)
jne 0x3835ae
jmp 0x3835bb
leaq 0xdf(%rsp), %rdi
callq 0x11b820
jmp 0x3835bd
leaq 0x120(%rsp), %rdi
callq 0x11b838
leaq 0x100(%rsp), %rdi
callq 0x11b838
jmp 0x383673
movq 0x58(%rsp), %rdi
addq $0x220, %rdi            # imm = 0x220
leaq 0x2e8(%rsp), %rsi
leaq 0x268(%rsp), %rdx
callq 0x5564d0
movq %rax, (%rsp)
jmp 0x383603
movq (%rsp), %rax
movq %rax, 0x2e0(%rsp)
cmpq $0x0, 0x2e0(%rsp)
je 0x38362b
leaq 0x268(%rsp), %rdi
callq 0x443c00
jmp 0x383629
jmp 0x38362b
jmp 0x38363b
movq 0x58(%rsp), %rdi
callq 0x373690
jmp 0x383639
jmp 0x38363b
movq 0x2e0(%rsp), %rax
movq %rax, 0x310(%rsp)
movl $0x1, 0x2bc(%rsp)
leaq 0x2e8(%rsp), %rdi
callq 0x11b838
movq 0x310(%rsp), %rax
addq $0x318, %rsp            # imm = 0x318
retq
leaq 0x2e8(%rsp), %rdi
callq 0x11b838
movq 0x2d8(%rsp), %rdi
callq 0x11b4e0
nopl (%rax)