// File: /workspace/github_cpp_makefile_star2_O3/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::details::generic_string_range_node<double>::generic_string_range_node(exprtk::details::expression_node<double>*, exprtk::details::range_pack<double> const&)
generic_string_range_node(expression_ptr str_branch, const range_t& brange)
         : initialised_(false)
         , str_base_ptr_ (0)
         , str_range_ptr_(0)
         , base_range_(brange)
         {
            range_.n0_c = std::make_pair<bool,std::size_t>(true,0);
            range_.n1_c = std::make_pair<bool,std::size_t>(true,0);
            range_.cache.first  = range_.n0_c.second;
            range_.cache.second = range_.n1_c.second;

            construct_branch_pair(branch_, str_branch);

            if (is_generally_string_node(branch_.first))
            {
               str_base_ptr_ = dynamic_cast<str_base_ptr>(branch_.first);

               if (0 == str_base_ptr_)
                  return;

               str_range_ptr_ = dynamic_cast<irange_ptr>(branch_.first);

               if (0 == str_range_ptr_)
                  return;
            }

            initialised_ = (str_base_ptr_ && str_range_ptr_);
            assert(valid());
         }

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
xorl %r8d, %r8d
movb %r8b, 0x10(%rdi)
movq %r8, 0x18(%rdi)
leaq 0x1cd1ff(%rip), %rax    # 0x53b098
movq %rax, (%rdi)
leaq 0x1cd26d(%rip), %rax    # 0x53b110
movq %rax, 0x8(%rdi)
leaq 0x1cd28a(%rip), %rax    # 0x53b138
movq %rax, 0x20(%rdi)
leaq 0x1cd2b7(%rip), %rax    # 0x53b170
movq %rax, 0x28(%rdi)
movb %r8b, 0x30(%rdi)
movq %r8, 0x38(%rdi)
movb %r8b, 0x40(%rdi)
leaq 0x58(%rdi), %rdi
xorps %xmm0, %xmm0
movups %xmm0, 0x48(%rbx)
movl $0xa, %ecx
movq %rdx, %rsi
rep  movsq (%rsi), %es:(%rdi)
movb %r8b, 0xa8(%rbx)
movq %r8, 0xb0(%rbx)
movb %r8b, 0xb8(%rbx)
movq %r8, 0xc0(%rbx)
leaq 0x108(%rbx), %r15
movq %r15, 0xf8(%rbx)
movq %r8, 0x100(%rbx)
movb %r8b, 0x108(%rbx)
movb $0x1, %al
movb %al, 0xc8(%rbx)
movq %r8, 0xd0(%rbx)
movb %al, 0xd8(%rbx)
movups %xmm0, 0xe0(%rbx)
movq %r8, 0xf0(%rbx)
testq %r14, %r14
je 0x36e00a
movq (%r14), %rax
movq %r14, %rdi
callq *0x28(%rax)
cmpl $0x11, %eax
jne 0x36df55
xorl %eax, %eax
jmp 0x36df64
movq (%r14), %rax
movq %r14, %rdi
callq *0x28(%rax)
cmpl $0x12, %eax
setne %al
movq %r14, 0x38(%rbx)
movb %al, 0x40(%rbx)
movq (%r14), %rax
movq %r14, %rdi
callq *0x28(%rax)
cmpl $0x21, %eax
ja 0x36dff1
movl %eax, %ecx
movabsq $0x388fc0000, %rdx      # imm = 0x388FC0000
btq %rcx, %rdx
jae 0x36dff1
leaq 0x48(%rbx), %r15
movq 0x38(%rbx), %r14
testq %r14, %r14
je 0x36dfe8
leaq 0x168151(%rip), %rsi    # 0x4d60f0
leaq 0x199b02(%rip), %rdx    # 0x507aa8
movq %r14, %rdi
movq $-0x2, %rcx
callq 0x11e4f0
movq %rax, (%r15)
testq %rax, %rax
je 0x36e00e
leaq 0x16812c(%rip), %rsi    # 0x4d60f0
leaq 0x199aed(%rip), %rdx    # 0x507ab8
movq %r14, %rdi
movq $-0x2, %rcx
callq 0x11e4f0
movq %rax, 0x50(%rbx)
movb $0x1, %r8b
testq %rax, %rax
jne 0x36e00a
jmp 0x36e00e
movq $0x0, (%r15)
jmp 0x36e00e
cmpl $0x7b, %eax
je 0x36df8b
cmpq $0x0, 0x48(%rbx)
setne %al
cmpq $0x0, 0x50(%rbx)
setne %r8b
andb %al, %r8b
movb %r8b, 0x30(%rbx)
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %r14
movq 0xf8(%rbx), %rdi
cmpq %r15, %rdi
je 0x36e02e
movq (%r15), %rsi
incq %rsi
callq 0x11e0c0
movq %r14, %rdi
callq 0x11e330