// File: /workspace/github_cpp_makefile_star2_O1/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double>>::str_vararg_node<std::allocator<exprtk::details::expression_node<double>*>, std::vector>(std::vector<exprtk::details::expression_node<double>*, std::allocator<exprtk::details::expression_node<double>*>> const&)
explicit str_vararg_node(const Sequence<expression_ptr,Allocator>& arg_list)
         : initialised_(false)
         , str_base_ptr_ (0)
         , str_range_ptr_(0)
         {
            construct_branch_pair(final_node_, const_cast<expression_ptr>(arg_list.back()));

            if (0 == final_node_.first)
               return;
            else if (!is_generally_string_node(final_node_.first))
               return;

            str_base_ptr_ = dynamic_cast<str_base_ptr>(final_node_.first);

            if (0 == str_base_ptr_)
               return;

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

            if (0 == str_range_ptr_)
               return;

            if (arg_list.size() > 1)
            {
               const std::size_t arg_list_size = arg_list.size() - 1;

               arg_list_.resize(arg_list_size);

               for (std::size_t i = 0; i < arg_list_size; ++i)
               {
                  if (arg_list[i] && arg_list[i]->valid())
                  {
                     construct_branch_pair(arg_list_[i], arg_list[i]);
                  }
                  else
                  {
                     arg_list_.clear();
                     return;
                  }
               }

               initialised_ = true;
            }

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

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r15
movq %rdi, %rbx
xorl %eax, %eax
movb %al, 0x10(%rdi)
movq %rax, 0x18(%rdi)
leaq 0x2a9a0e(%rip), %rcx    # 0x541570
movq %rcx, (%rdi)
leaq 0x2a9a7c(%rip), %rcx    # 0x5415e8
movq %rcx, 0x8(%rdi)
leaq 0x2a9a99(%rip), %rcx    # 0x541610
movq %rcx, 0x20(%rdi)
leaq 0x2a9ac6(%rip), %rcx    # 0x541648
movq %rcx, 0x28(%rdi)
movb %al, 0x30(%rdi)
movq %rax, 0x38(%rdi)
movb %al, 0x40(%rdi)
leaq 0x58(%rdi), %rbp
xorps %xmm0, %xmm0
movups %xmm0, 0x48(%rdi)
movups %xmm0, 0x58(%rdi)
movq %rax, 0x68(%rdi)
movq 0x8(%rsi), %rax
movq -0x8(%rax), %r12
testq %r12, %r12
je 0x297bda
movq (%r12), %rax
movq %r12, %rdi
callq *0x28(%rax)
cmpl $0x11, %eax
jne 0x297bc3
xorl %eax, %eax
jmp 0x297bd3
movq (%r12), %rax
movq %r12, %rdi
callq *0x28(%rax)
cmpl $0x12, %eax
setne %al
movq %r12, 0x38(%rbx)
movb %al, 0x40(%rbx)
movq 0x38(%rbx), %rdi
testq %rdi, %rdi
je 0x297d8c
movq (%rdi), %rax
callq *0x28(%rax)
cmpl $0x21, %eax
ja 0x297d5b
movl %eax, %ecx
movabsq $0x388fc0000, %rdx      # imm = 0x388FC0000
btq %rcx, %rdx
jae 0x297d5b
leaq 0x48(%rbx), %r14
movq 0x38(%rbx), %r12
testq %r12, %r12
je 0x297c38
leaq 0x277810(%rip), %rsi    # 0x50f430
leaq 0x2a9a41(%rip), %rdx    # 0x541668
movq %r12, %rdi
movq $-0x2, %rcx
callq 0x1204f0
jmp 0x297c3a
xorl %eax, %eax
movq %rax, (%r14)
testq %rax, %rax
je 0x297d8c
testq %r12, %r12
je 0x297c6a
leaq 0x2777de(%rip), %rsi    # 0x50f430
leaq 0x2a9a1f(%rip), %rdx    # 0x541678
movq %r12, %rdi
movq $-0x2, %rcx
callq 0x1204f0
jmp 0x297c6c
xorl %eax, %eax
movq %rax, 0x50(%rbx)
testq %rax, %rax
je 0x297d8c
movq 0x8(%r15), %r14
subq (%r15), %r14
sarq $0x3, %r14
cmpq $0x2, %r14
jb 0x297d70
leaq -0x1(%r14), %r12
movq %rbp, %rdi
movq %r12, %rsi
callq 0x294708
testq %r12, %r12
setne %r13b
je 0x297d66
movq (%r15), %rax
movq (%rax), %rdi
testq %rdi, %rdi
je 0x297d4b
movq %r12, 0x10(%rsp)
movq %rbp, (%rsp)
movl $0x2, %eax
subq %r14, %rax
movq %rax, 0x8(%rsp)
movl $0x1, %r14d
xorl %ebp, %ebp
movq (%rdi), %rax
callq *0x30(%rax)
testb %al, %al
je 0x297d4b
movq (%r15), %rax
movq (%rax,%rbp), %r13
testq %r13, %r13
je 0x297d20
movq (%rsp), %rax
movq (%rax), %r12
movq (%r13), %rax
movq %r13, %rdi
callq *0x28(%rax)
cmpl $0x11, %eax
jne 0x297d07
xorl %eax, %eax
jmp 0x297d17
movq (%r13), %rax
movq %r13, %rdi
callq *0x28(%rax)
cmpl $0x12, %eax
setne %al
movq %r13, (%r12,%rbp,2)
movb %al, 0x8(%r12,%rbp,2)
movq 0x8(%rsp), %rax
addq %r14, %rax
cmpq 0x10(%rsp), %r14
setb %r13b
cmpq $0x1, %rax
je 0x297d66
movq (%r15), %rax
movq 0x8(%rax,%rbp), %rdi
addq $0x8, %rbp
incq %r14
testq %rdi, %rdi
jne 0x297cd7
movq 0x58(%rbx), %rax
cmpq %rax, 0x60(%rbx)
je 0x297d6a
movq %rax, 0x60(%rbx)
jmp 0x297d6a
cmpl $0x7b, %eax
je 0x297c0c
jmp 0x297d8c
movb $0x1, 0x30(%rbx)
testb $0x1, %r13b
jne 0x297d8c
xorl %eax, %eax
cmpq $0x0, 0x50(%rbx)
movl $0x0, %ecx
je 0x297d81
movl 0x30(%rbx), %ecx
cmpq $0x0, 0x48(%rbx)
cmovnel %ecx, %eax
movb %al, 0x30(%rbx)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x297d9f
jmp 0x297da3
movq %rbp, (%rsp)
movq %rax, %r15
movq (%rsp), %rax
movq (%rax), %rdi
testq %rdi, %rdi
je 0x297dbe
movq 0x68(%rbx), %rsi
subq %rdi, %rsi
callq 0x1200c0
movq %r15, %rdi
callq 0x120330