// File: /workspace/github_cpp_makefile_star2_O2/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::synthesize_vector_element(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, exprtk::details::vector_holder<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
inline expression_node_ptr synthesize_vector_element(const std::string& vector_name,
                                                           vector_holder_ptr vec,
                                                           expression_node_ptr vec_node,
                                                           expression_node_ptr index_expr)
      {
         // Perform compile-time range check
         if (details::is_constant_node(index_expr))
         {
            const std::size_t index    = static_cast<std::size_t>(details::numeric::to_int32(index_expr->value()));
            const std::size_t vec_size = vec->size();

            if (index >= vec_size)
            {
               set_error(make_error(
                  parser_error::e_syntax,
                  current_token(),
                  "ERR126 - Index of " + details::to_str(index) + " out of range for "
                  "vector '" + vector_name + "' of size " + details::to_str(vec_size),
                  exprtk_error_location));

               free_node(node_allocator_, vec_node  );
               free_node(node_allocator_, index_expr);

               return error_node();
            }
         }

         return expression_generator_.vector_element(vector_name, vec, vec_node, index_expr);
      }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1d8, %rsp            # imm = 0x1D8
movq %r8, %r12
movq %rcx, %r13
movq %rdx, %rbp
movq %rsi, %r14
movq %rdi, %rbx
movq %rcx, 0x8(%rsp)
movq %r8, (%rsp)
movq %r8, %rdi
callq 0x208267
testb %al, %al
je 0x29f5f7
movq (%r12), %rax
movq %r12, %rdi
callq *0x18(%rax)
cvttsd2si %xmm0, %eax
movslq %eax, %r15
movq (%rbp), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
cmpq %r15, %rax
jbe 0x29f623
addq $0x220, %rbx            # imm = 0x220
movq %rbx, %rdi
movq %r14, %rsi
movq %rbp, %rdx
movq %r13, %rcx
movq %r12, %r8
addq $0x1d8, %rsp            # imm = 0x1D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2a0002
movq %rax, %r13
leaq 0x110(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x1f7603
leaq 0x3d5b8(%rip), %rsi     # 0x2dcbf8
leaq 0x70(%rsp), %rdi
movq %r12, %rdx
callq 0x1b4349
leaq 0x3d5b7(%rip), %rdx     # 0x2dcc0b
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x1b42c3
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
movq %r14, %rdx
callq 0x1f8a54
leaq 0x3cadd(%rip), %rdx     # 0x2dc162
leaq 0xd0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x1b42c3
leaq 0x50(%rsp), %rdi
movq %r13, %rsi
callq 0x1f7603
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0x1b42e2
leaq 0x10(%rsp), %rdi
movl $0x6ea6, %esi           # imm = 0x6EA6
callq 0x1f7a3c
leaq 0x3a524(%rip), %rsi     # 0x2d9bfb
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%rbx), %rdx
leaq 0x130(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0xf0(%rsp), %rcx
leaq 0x30(%rsp), %r8
callq 0x1f7341
leaq 0x308(%rbx), %rdi
leaq 0x130(%rsp), %rsi
callq 0x1f76ce
leaq 0x130(%rsp), %rdi
callq 0x1f5c4c
leaq 0x30(%rsp), %rdi
callq 0x118648
leaq 0x10(%rsp), %rdi
callq 0x118648
leaq 0xf0(%rsp), %rdi
callq 0x118648
leaq 0x50(%rsp), %rdi
callq 0x118648
leaq 0xd0(%rsp), %rdi
callq 0x118648
leaq 0xb0(%rsp), %rdi
callq 0x118648
leaq 0x90(%rsp), %rdi
callq 0x118648
leaq 0x70(%rsp), %rdi
callq 0x118648
leaq 0x110(%rsp), %rdi
callq 0x118648
addq $0x290, %rbx            # imm = 0x290
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1ad9c8
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x1ad9c8
xorl %eax, %eax
addq $0x1d8, %rsp            # imm = 0x1D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x130(%rsp), %rdi
callq 0x1f5c4c
jmp 0x29f7d9
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x118648
jmp 0x29f7e8
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x118648
jmp 0x29f7f7
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0x118648
jmp 0x29f809
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x118648
leaq 0xd0(%rsp), %rdi
callq 0x118648
leaq 0xb0(%rsp), %rdi
callq 0x118648
leaq 0x90(%rsp), %rdi
callq 0x118648
leaq 0x70(%rsp), %rdi
callq 0x118648
leaq 0x110(%rsp), %rdi
callq 0x118648
movq %rbx, %rdi
callq 0x118360
movq %rax, %rbx
jmp 0x29f813
movq %rax, %rbx
jmp 0x29f820
movq %rax, %rbx
jmp 0x29f82d
movq %rax, %rbx
jmp 0x29f83a
movq %rax, %rbx
jmp 0x29f844