// File: /workspace/github_cpp_makefile_star2_O3/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::details::vector_initialisation_node<double>::vector_initialisation_node(double*, unsigned long const&, std::vector<exprtk::details::expression_node<double>*, std::allocator<exprtk::details::expression_node<double>*>> const&, bool)
vector_initialisation_node(T* vector_base,
                                    const std::size_t& size,
                                    const std::vector<expression_ptr>& initialiser_list,
                                    const bool single_value_initialse)
         : vector_base_(vector_base)
         , initialiser_list_(initialiser_list)
         , size_(size)
         , single_value_initialse_(single_value_initialse)
         , zero_value_initialse_(false)
         , const_nonzero_literal_value_initialse_(false)
         , single_initialiser_value_(T(0))
         {
            if (single_value_initialse_)
            {
               if (initialiser_list_.empty())
                  zero_value_initialse_ = true;
               else if (
                         (initialiser_list_.size() == 1) &&
                         details::is_constant_node(initialiser_list_[0]) &&
                         (T(0) == initialiser_list_[0]->value())
                       )
               {
                  zero_value_initialse_ = true;
               }
               else
               {
                  assert(initialiser_list_.size() == 1);

                  if (details::is_constant_node(initialiser_list_[0]))
                  {
                     const_nonzero_literal_value_initialse_ = true;
                     single_initialiser_value_ = initialiser_list_[0]->value();
                     assert(T(0) != single_initialiser_value_);
                  }
               }
            }
         }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movl %r8d, %ebp
movq %rdx, %r15
movq %rdi, %rbx
movb $0x0, 0x10(%rdi)
xorl %r12d, %r12d
movq %r12, 0x18(%rdi)
leaq 0x204ff9(%rip), %rax    # 0x539108
movq %rax, (%rdi)
leaq 0x20503f(%rip), %rax    # 0x539158
movq %rax, 0x8(%rdi)
movq %rsi, 0x20(%rdi)
leaq 0x28(%rdi), %r14
movq %r14, %rdi
movq %rcx, %rsi
callq 0x333224
movq (%r15), %rax
movq %rax, 0x40(%rbx)
movb %bpl, 0x48(%rbx)
movw $0x0, 0x49(%rbx)
movq %r12, 0x50(%rbx)
testl %ebp, %ebp
je 0x3341e2
movq 0x28(%rbx), %rax
movq 0x30(%rbx), %rcx
cmpq %rcx, %rax
je 0x33419f
subq %rax, %rcx
cmpq $0x8, %rcx
jne 0x3341a5
movq (%rax), %r15
testq %r15, %r15
je 0x3341a5
movq (%r15), %rax
movq %r15, %rdi
callq *0x28(%rax)
cmpl $0x2, %eax
je 0x334187
movq (%r15), %rax
movq %r15, %rdi
callq *0x28(%rax)
cmpl $0x13, %eax
jne 0x3341a5
movq (%r14), %rax
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x3341a5
jp 0x3341a5
movb $0x1, 0x49(%rbx)
jmp 0x3341e2
movq (%r14), %rax
movq (%rax), %r15
testq %r15, %r15
je 0x3341e2
movq (%r15), %rax
movq %r15, %rdi
callq *0x28(%rax)
cmpl $0x2, %eax
je 0x3341cc
movq (%r15), %rax
movq %r15, %rdi
callq *0x28(%rax)
cmpl $0x13, %eax
jne 0x3341e2
movb $0x1, 0x4a(%rbx)
movq 0x28(%rbx), %rax
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movsd %xmm0, 0x50(%rbx)
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r15
movq (%r14), %rdi
testq %rdi, %rdi
je 0x334202
movq 0x38(%rbx), %rsi
subq %rdi, %rsi
callq 0x11e0c0
movq %r15, %rdi
callq 0x11e330