// File: 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:
subq $0x238, %rsp            # imm = 0x238
movq %rdi, 0x228(%rsp)
movq %rsi, 0x220(%rsp)
movq %rdx, 0x218(%rsp)
movq %rcx, 0x210(%rsp)
movq %r8, 0x208(%rsp)
movq 0x228(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x208(%rsp), %rdi
callq 0x39cbf0
testb $0x1, %al
jne 0x517812
jmp 0x517bb2
movq 0x208(%rsp), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
callq 0x287b30
cltq
movq %rax, 0x200(%rsp)
movq 0x218(%rsp), %rdi
callq 0x3a19c0
movq %rax, 0x1f8(%rsp)
movq 0x200(%rsp), %rax
cmpq 0x1f8(%rsp), %rax
jb 0x517bb0
movq 0x18(%rsp), %rdi
callq 0x373e90
movq %rax, 0x8(%rsp)
movq 0x200(%rsp), %rsi
leaq 0x90(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x374900
movq 0x10(%rsp), %rdx
leaq 0x926a8(%rip), %rsi     # 0x5a9f37
leaq 0xb0(%rsp), %rdi
callq 0x29dd70
jmp 0x51789e
leaq 0x926a5(%rip), %rdx     # 0x5a9f4a
leaq 0xd0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x29dc30
jmp 0x5178bc
movq 0x220(%rsp), %rdx
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x378400
jmp 0x5178db
leaq 0x91bbf(%rip), %rdx     # 0x5a94a1
leaq 0x110(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x29dc30
jmp 0x5178f9
movq 0x1f8(%rsp), %rsi
leaq 0x60(%rsp), %rdi
callq 0x374900
jmp 0x51790d
leaq 0x130(%rsp), %rdi
leaq 0x110(%rsp), %rsi
leaq 0x60(%rsp), %rdx
callq 0x29dc80
jmp 0x517929
leaq 0x20(%rsp), %rdi
movl $0x6ea6, %esi           # imm = 0x6EA6
callq 0x371f20
jmp 0x51793a
leaq 0x8f5d2(%rip), %rsi     # 0x5a6f13
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rdx
callq 0x29dd70
jmp 0x517952
movq 0x8(%rsp), %rdx
leaq 0x150(%rsp), %rdi
movl $0x1, %esi
leaq 0x130(%rsp), %rcx
leaq 0x40(%rsp), %r8
callq 0x3741e0
jmp 0x517978
movq 0x18(%rsp), %rdi
leaq 0x150(%rsp), %rsi
callq 0x371e40
jmp 0x51798c
leaq 0x150(%rsp), %rdi
callq 0x371330
leaq 0x40(%rsp), %rdi
callq 0x11b838
leaq 0x20(%rsp), %rdi
callq 0x11b838
leaq 0x130(%rsp), %rdi
callq 0x11b838
leaq 0x60(%rsp), %rdi
callq 0x11b838
leaq 0x110(%rsp), %rdi
callq 0x11b838
leaq 0xf0(%rsp), %rdi
callq 0x11b838
leaq 0xd0(%rsp), %rdi
callq 0x11b838
leaq 0xb0(%rsp), %rdi
callq 0x11b838
leaq 0x90(%rsp), %rdi
callq 0x11b838
movq 0x18(%rsp), %rdi
addq $0x290, %rdi            # imm = 0x290
leaq 0x210(%rsp), %rsi
callq 0x284bd0
movq 0x18(%rsp), %rdi
addq $0x290, %rdi            # imm = 0x290
leaq 0x208(%rsp), %rsi
callq 0x284bd0
callq 0x2821f0
movq %rax, 0x230(%rsp)
jmp 0x517beb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0x517ba1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0x517b94
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0x517b87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0x517b7a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0x517b6d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0x517b63
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0x517b56
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0x517b4c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0x517b42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
leaq 0x150(%rsp), %rdi
callq 0x371330
leaq 0x40(%rsp), %rdi
callq 0x11b838
leaq 0x20(%rsp), %rdi
callq 0x11b838
leaq 0x130(%rsp), %rdi
callq 0x11b838
leaq 0x60(%rsp), %rdi
callq 0x11b838
leaq 0x110(%rsp), %rdi
callq 0x11b838
leaq 0xf0(%rsp), %rdi
callq 0x11b838
leaq 0xd0(%rsp), %rdi
callq 0x11b838
leaq 0xb0(%rsp), %rdi
callq 0x11b838
leaq 0x90(%rsp), %rdi
callq 0x11b838
jmp 0x517bfb
jmp 0x517bb2
movq 0x18(%rsp), %rdi
addq $0x220, %rdi            # imm = 0x220
movq 0x220(%rsp), %rsi
movq 0x218(%rsp), %rdx
movq 0x210(%rsp), %rcx
movq 0x208(%rsp), %r8
callq 0x519ec0
movq %rax, 0x230(%rsp)
movq 0x230(%rsp), %rax
addq $0x238, %rsp            # imm = 0x238
retq
movq 0x88(%rsp), %rdi
callq 0x11b4e0
nopl (%rax,%rax)