// File: /workspace/github_cpp_makefile_star2_O2/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::parse_range(exprtk::details::range_pack<double>&, bool)
inline bool parse_range(range_t& rp, const bool skip_lsqr = false)
      {
         // Examples of valid ranges:
         // 1. [1:5]     -> [1,5)
         // 2. [ :5]     -> [0,5)
         // 3. [1: ]     -> [1,end)
         // 4. [x:y]     -> [x,y) where x <= y
         // 5. [x+1:y/2] -> [x+1,y/2) where x+1 <= y/2
         // 6. [ :y]     -> [0,y) where 0 <= y
         // 7. [x: ]     -> [x,end) where x <= end

         rp.clear();

         if (!skip_lsqr && !token_is(token_t::e_lsqrbracket))
         {
            set_error(make_error(
               parser_error::e_syntax,
               current_token(),
               "ERR113 - Expected '[' for start of range",
               exprtk_error_location));

            return false;
         }

         if (token_is(token_t::e_colon))
         {
            rp.n0_c.first  = true;
            rp.n0_c.second = 0;
            rp.cache.first = 0;
         }
         else
         {
            expression_node_ptr r0 = parse_expression();

            if (0 == r0)
            {
               set_error(make_error(
                  parser_error::e_syntax,
                  current_token(),
                  "ERR114 - Failed parse begin section of range",
                  exprtk_error_location));

               return false;
            }
            else if (is_constant_node(r0))
            {
               const T r0_value = r0->value();

               if (r0_value >= T(0))
               {
                  rp.n0_c.first  = true;
                  rp.n0_c.second = static_cast<std::size_t>(details::numeric::to_int64(r0_value));
                  rp.cache.first = rp.n0_c.second;
               }

               free_node(node_allocator_, r0);

               if (r0_value < T(0))
               {
                  set_error(make_error(
                     parser_error::e_syntax,
                     current_token(),
                     "ERR115 - Range lower bound less than zero! Constraint: r0 >= 0",
                     exprtk_error_location));

                  return false;
               }
            }
            else
            {
               rp.n0_e.first  = true;
               rp.n0_e.second = r0;
            }

            if (!token_is(token_t::e_colon))
            {
               set_error(make_error(
                  parser_error::e_syntax,
                  current_token(),
                  "ERR116 - Expected ':' for break  in range",
                  exprtk_error_location));

               rp.free();

               return false;
            }
         }

         if (token_is(token_t::e_rsqrbracket))
         {
            rp.n1_c.first  = true;
            rp.n1_c.second = std::numeric_limits<std::size_t>::max();
         }
         else
         {
            expression_node_ptr r1 = parse_expression();

            if (0 == r1)
            {
               set_error(make_error(
                  parser_error::e_syntax,
                  current_token(),
                  "ERR117 - Failed parse end section of range",
                  exprtk_error_location));

               rp.free();

               return false;
            }
            else if (is_constant_node(r1))
            {
               const T r1_value = r1->value();

               if (r1_value >= T(0))
               {
                  rp.n1_c.first   = true;
                  rp.n1_c.second  = static_cast<std::size_t>(details::numeric::to_int64(r1_value));
                  rp.cache.second = rp.n1_c.second;
               }

               free_node(node_allocator_, r1);

               if (r1_value < T(0))
               {
                  set_error(make_error(
                     parser_error::e_syntax,
                     current_token(),
                     "ERR118 - Range upper bound less than zero! Constraint: r1 >= 0",
                     exprtk_error_location));

                  rp.free();

                  return false;
               }
            }
            else
            {
               rp.n1_e.first  = true;
               rp.n1_e.second = r1;
            }

            if (!token_is(token_t::e_rsqrbracket))
            {
               set_error(make_error(
                  parser_error::e_syntax,
                  current_token(),
                  "ERR119 - Expected ']' for start of range",
                  exprtk_error_location));

               rp.free();

               return false;
            }
         }

         if (rp.const_range())
         {
            std::size_t r0 = 0;
            std::size_t r1 = 0;

            bool rp_result = false;

            try
            {
               rp_result = rp(r0, r1);
            }
            catch (std::runtime_error&)
            {}

            if (!rp_result || (r0 > r1))
            {
               set_error(make_error(
                  parser_error::e_syntax,
                  current_token(),
                  "ERR120 - Invalid range, Constraint: r0 <= r1",
                  exprtk_error_location));

               return false;
            }
         }

         return true;
      }

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x130, %rsp            # imm = 0x130
movl %edx, %ebp
movq %rsi, %r14
movq %rdi, %rbx
movq %rsi, %rdi
callq 0x255dfe
testl %ebp, %ebp
jne 0x2a6134
leaq 0x88(%rsp), %rsi
movl $0x5b, (%rsi)
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0x1fae6e
testb %al, %al
je 0x2a6342
leaq 0x88(%rsp), %rsi
movl $0x3a, (%rsi)
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0x1fae6e
testb %al, %al
je 0x2a6251
movb $0x1, 0x20(%r14)
andq $0x0, 0x28(%r14)
andq $0x0, 0x40(%r14)
leaq 0x88(%rsp), %rsi
movl $0x5d, (%rsi)
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0x1fae6e
testb %al, %al
je 0x2a63b7
movb $0x1, 0x30(%r14)
orq $-0x1, 0x38(%r14)
movq %r14, %rdi
callq 0x2a29cc
movb $0x1, %bpl
testb %al, %al
je 0x2a6734
leaq 0x8(%rsp), %rsi
andq $0x0, (%rsi)
leaq 0x10(%rsp), %rdx
andq $0x0, (%rdx)
leaq 0x88(%rsp), %rcx
orq $-0x1, (%rcx)
movq %r14, %rdi
callq 0x22cc40
testb %al, %al
je 0x2a61dc
movq 0x8(%rsp), %rax
cmpq 0x10(%rsp), %rax
jbe 0x2a6734
leaq 0x372b2(%rip), %rsi     # 0x2dd495
leaq 0x58(%rsp), %rdi
leaq 0x7f(%rsp), %rdx
callq 0x127016
leaq 0x18(%rsp), %rdi
movl $0x6d6c, %esi           # imm = 0x6D6C
callq 0x1f7a3c
leaq 0x339f3(%rip), %rsi     # 0x2d9bfb
leaq 0x38(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0x88(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x58(%rsp), %rcx
leaq 0x38(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0x88(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
jmp 0x2a6518
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1f9016
movq %rax, 0x8(%rsp)
testq %rax, %rax
je 0x2a64a8
movq %rax, %rdi
callq 0x208267
testb %al, %al
je 0x2a6548
movq 0x8(%rsp), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x2a62a0
movb $0x1, 0x20(%r14)
cvttsd2si %xmm0, %rax
movq %rax, 0x28(%r14)
movq %rax, 0x40(%r14)
leaq 0x290(%rbx), %rdi
leaq 0x8(%rsp), %rsi
movsd %xmm0, 0x80(%rsp)
callq 0x1ad9c8
xorpd %xmm0, %xmm0
ucomisd 0x80(%rsp), %xmm0
jbe 0x2a6555
leaq 0x370c5(%rip), %rsi     # 0x2dd399
leaq 0x58(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x127016
leaq 0x18(%rsp), %rdi
movl $0x6cfc, %esi           # imm = 0x6CFC
callq 0x1f7a3c
leaq 0x33902(%rip), %rsi     # 0x2d9bfb
leaq 0x38(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0x88(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x58(%rsp), %rcx
leaq 0x38(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0x88(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
jmp 0x2a6518
leaq 0x36ffa(%rip), %rsi     # 0x2dd343
leaq 0x58(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x127016
leaq 0x18(%rsp), %rdi
movl $0x6cd0, %esi           # imm = 0x6CD0
callq 0x1f7a3c
leaq 0x3388d(%rip), %rsi     # 0x2d9bfb
leaq 0x38(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0x88(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x58(%rsp), %rcx
leaq 0x38(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0x88(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
jmp 0x2a6518
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1f9016
movq %rax, 0x8(%rsp)
testq %rax, %rax
je 0x2a65eb
movq %rax, %rdi
callq 0x208267
testb %al, %al
je 0x2a6660
movq 0x8(%rsp), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x2a6406
movb $0x1, 0x30(%r14)
cvttsd2si %xmm0, %rax
movq %rax, 0x38(%r14)
movq %rax, 0x48(%r14)
leaq 0x290(%rbx), %rdi
leaq 0x8(%rsp), %rsi
movsd %xmm0, 0x80(%rsp)
callq 0x1ad9c8
xorpd %xmm0, %xmm0
ucomisd 0x80(%rsp), %xmm0
jbe 0x2a666e
leaq 0x36ff3(%rip), %rsi     # 0x2dd42d
leaq 0x58(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x127016
leaq 0x18(%rsp), %rdi
movl $0x6d3d, %esi           # imm = 0x6D3D
callq 0x1f7a3c
leaq 0x3379c(%rip), %rsi     # 0x2d9bfb
leaq 0x38(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0x88(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x58(%rsp), %rcx
leaq 0x38(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0x88(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
jmp 0x2a66ff
leaq 0x36ebd(%rip), %rsi     # 0x2dd36c
leaq 0x58(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x127016
leaq 0x18(%rsp), %rdi
movl $0x6ce5, %esi           # imm = 0x6CE5
callq 0x1f7a3c
leaq 0x33727(%rip), %rsi     # 0x2d9bfb
leaq 0x38(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0x88(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x58(%rsp), %rcx
leaq 0x38(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0x88(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
leaq 0x88(%rsp), %rdi
callq 0x1f5c4c
leaq 0x38(%rsp), %rdi
callq 0x118648
leaq 0x18(%rsp), %rdi
callq 0x118648
leaq 0x58(%rsp), %rdi
callq 0x118648
jmp 0x2a6732
movb $0x1, (%r14)
movq 0x8(%rsp), %rax
movq %rax, 0x8(%r14)
leaq 0x88(%rsp), %rsi
movl $0x3a, (%rsi)
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0x1fae6e
testb %al, %al
jne 0x2a6164
leaq 0x36e5b(%rip), %rsi     # 0x2dd3d8
leaq 0x58(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x127016
leaq 0x18(%rsp), %rdi
movl $0x6d0d, %esi           # imm = 0x6D0D
callq 0x1f7a3c
leaq 0x33659(%rip), %rsi     # 0x2d9bfb
leaq 0x38(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0x88(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x58(%rsp), %rcx
leaq 0x38(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0x88(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
jmp 0x2a66ff
leaq 0x36e10(%rip), %rsi     # 0x2dd402
leaq 0x58(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x127016
leaq 0x18(%rsp), %rdi
movl $0x6d24, %esi           # imm = 0x6D24
callq 0x1f7a3c
leaq 0x335e4(%rip), %rsi     # 0x2d9bfb
leaq 0x38(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0x88(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x58(%rsp), %rcx
leaq 0x38(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0x88(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
jmp 0x2a66ff
movb $0x1, 0x10(%r14)
movq 0x8(%rsp), %rax
movq %rax, 0x18(%r14)
leaq 0x88(%rsp), %rsi
movl $0x5d, (%rsi)
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0x1fae6e
testb %al, %al
jne 0x2a618f
leaq 0x36dd6(%rip), %rsi     # 0x2dd46c
leaq 0x58(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x127016
leaq 0x18(%rsp), %rdi
movl $0x6d50, %esi           # imm = 0x6D50
callq 0x1f7a3c
leaq 0x33540(%rip), %rsi     # 0x2d9bfb
leaq 0x38(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0x88(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x58(%rsp), %rcx
leaq 0x38(%rsp), %r8
callq 0x1f7341
addq $0x308, %rbx            # imm = 0x308
leaq 0x88(%rsp), %rsi
movq %rbx, %rdi
callq 0x1f76ce
leaq 0x88(%rsp), %rdi
callq 0x1f5c4c
leaq 0x38(%rsp), %rdi
callq 0x118648
leaq 0x18(%rsp), %rdi
callq 0x118648
leaq 0x58(%rsp), %rdi
callq 0x118648
movq %r14, %rdi
callq 0x256004
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x130, %rsp            # imm = 0x130
popq %rbx
popq %r14
popq %rbp
retq
jmp 0x2a67b7
jmp 0x2a67c9
jmp 0x2a67d8
jmp 0x2a67e7
jmp 0x2a67f6
jmp 0x2a67b7
jmp 0x2a67c9
jmp 0x2a67d8
jmp 0x2a67e7
jmp 0x2a67f6
jmp 0x2a67b7
jmp 0x2a67c9
jmp 0x2a67d8
jmp 0x2a67e7
jmp 0x2a67f6
jmp 0x2a67b7
jmp 0x2a67c9
jmp 0x2a67d8
jmp 0x2a67e7
jmp 0x2a67f6
jmp 0x2a67b7
jmp 0x2a67c9
jmp 0x2a67d8
jmp 0x2a67e7
jmp 0x2a67f6
jmp 0x2a67b7
jmp 0x2a67c9
jmp 0x2a67d8
jmp 0x2a67e7
jmp 0x2a67f6
jmp 0x2a67b7
jmp 0x2a67c9
jmp 0x2a67d8
jmp 0x2a67e7
jmp 0x2a67f6
movq %rax, %r14
cmpl $0x1, %edx
jne 0x2a67f9
movq %r14, %rdi
callq 0x118070
callq 0x1183d0
jmp 0x2a61dc
movq %rax, %r14
leaq 0x88(%rsp), %rdi
callq 0x1f5c4c
jmp 0x2a67cc
movq %rax, %r14
leaq 0x38(%rsp), %rdi
callq 0x118648
jmp 0x2a67db
movq %rax, %r14
leaq 0x18(%rsp), %rdi
callq 0x118648
jmp 0x2a67ea
movq %rax, %r14
leaq 0x58(%rsp), %rdi
callq 0x118648
jmp 0x2a67f9
movq %rax, %r14
movq %r14, %rdi
callq 0x118360
nop