// File: /workspace/github_cpp_makefile_star2_O1/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 %eax, %eax
movb %al, 0x10(%rdi)
movq %rax, 0x18(%rdi)
leaq 0x1df6b7(%rip), %rcx    # 0x575098
movq %rcx, (%rdi)
leaq 0x1df725(%rip), %rcx    # 0x575110
movq %rcx, 0x8(%rdi)
leaq 0x1df742(%rip), %rcx    # 0x575138
movq %rcx, 0x20(%rdi)
leaq 0x1df76f(%rip), %rcx    # 0x575170
movq %rcx, 0x28(%rdi)
movb %al, 0x30(%rdi)
movq %rax, 0x38(%rdi)
movb %al, 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 %al, 0xa8(%rbx)
movq %rax, 0xb0(%rbx)
movb %al, 0xb8(%rbx)
movq %rax, 0xc0(%rbx)
movq %rax, 0xd0(%rbx)
movups %xmm0, 0xe0(%rbx)
movq %rax, 0xf0(%rbx)
leaq 0x108(%rbx), %r15
movq %r15, 0xf8(%rbx)
movq %rax, 0x100(%rbx)
movb %al, 0x108(%rbx)
movb $0x1, %al
movb %al, 0xc8(%rbx)
movb %al, 0xd8(%rbx)
testq %r14, %r14
je 0x395aaa
movq (%r14), %rax
movq %r14, %rdi
callq *0x28(%rax)
cmpl $0x11, %eax
jne 0x395a94
xorl %eax, %eax
jmp 0x395aa3
movq (%r14), %rax
movq %r14, %rdi
callq *0x28(%rax)
cmpl $0x12, %eax
setne %al
movq %r14, 0x38(%rbx)
movb %al, 0x40(%rbx)
movq 0x38(%rbx), %rdi
testq %rdi, %rdi
je 0x395b41
movq (%rdi), %rax
callq *0x28(%rax)
cmpl $0x21, %eax
ja 0x395b5c
movl %eax, %ecx
movabsq $0x388fc0000, %rdx      # imm = 0x388FC0000
btq %rcx, %rdx
jae 0x395b5c
leaq 0x48(%rbx), %r15
movq 0x38(%rbx), %r14
testq %r14, %r14
je 0x395b08
leaq 0x179940(%rip), %rsi    # 0x50f430
leaq 0x1abb71(%rip), %rdx    # 0x541668
movq %r14, %rdi
movq $-0x2, %rcx
callq 0x1204f0
jmp 0x395b0a
xorl %eax, %eax
movq %rax, (%r15)
testq %rax, %rax
je 0x395b56
testq %r14, %r14
je 0x395b36
leaq 0x179912(%rip), %rsi    # 0x50f430
leaq 0x1abb53(%rip), %rdx    # 0x541678
movq %r14, %rdi
movq $-0x2, %rcx
callq 0x1204f0
jmp 0x395b38
xorl %eax, %eax
movq %rax, 0x50(%rbx)
testq %rax, %rax
je 0x395b56
cmpq $0x0, 0x48(%rbx)
setne %al
cmpq $0x0, 0x50(%rbx)
setne %cl
andb %al, %cl
movb %cl, 0x30(%rbx)
popq %rbx
popq %r14
popq %r15
retq
cmpl $0x7b, %eax
je 0x395adc
jmp 0x395b41
movq %rax, %r14
movq 0xf8(%rbx), %rdi
cmpq %r15, %rdi
je 0x395b81
movq (%r15), %rsi
incq %rsi
callq 0x1200c0
movq %r14, %rdi
callq 0x120330
nop