// File: /workspace/github_cpp_makefile_star2_O3/ArashPartow[P]exprtk-extras/exprtk_import_packages.cpp
// Function: void import_package_example<double>()
void import_package_example()
{
   typedef exprtk::symbol_table<T> symbol_table_t;
   typedef exprtk::expression<T>   expression_t;
   typedef exprtk::parser<T>       parser_t;

   symbol_table_t symbol_table;

   import_packages<T> import_package(symbol_table);

   symbol_table.add_function("import",import_package);

   expression_t expression;
   expression.register_symbol_table(symbol_table);

   parser_t parser;

   const std::string import_packages_program =
      " import('exprtk.rtl.io'     ); "
      " import('exprtk.rtl.io.file'); "
      " import('exprtk.rtl.vecops' ); "
      "                               "
      " var v[7] := [1:1];            "
      "                               "
      " println('v: ', v);            "
      "                               "
      " reverse(v);                   "
      "                               "
      " println('reversed v: ', v);   "
      "                               ";

   parser.compile(import_packages_program, expression);

   expression.value();
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x1548, %rsp           # imm = 0x1548
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl $0x1, %esi
callq 0x11a696
leaq 0xaa8(%rsp), %rdi
movq %rbx, %rsi
callq 0x11a6de
leaq 0x190(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1985ca(%rip), %rsi    # 0x2b298e
leaq 0x1985c9(%rip), %rdx    # 0x2b2994
leaq 0x180(%rsp), %rdi
callq 0x11a600
leaq 0x8(%rsp), %rbx
leaq 0x180(%rsp), %rsi
leaq 0xaa8(%rsp), %rdx
movq %rbx, %rdi
callq 0x11a8a0
movq 0x180(%rsp), %rdi
cmpq %r14, %rdi
je 0x11a412
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x1170b0
leaq 0x10(%rsp), %rdi
callq 0x11aa0a
movq 0x18(%rsp), %rax
movq 0x20(%rsp), %rcx
subq %rax, %rcx
je 0x11a44f
sarq $0x3, %rcx
movq 0x8(%rsp), %rdx
cmpq $0x1, %rcx
adcq $0x0, %rcx
cmpq %rbx, %rax
je 0x11a45e
cmpq (%rax), %rdx
je 0x11a45e
addq $0x8, %rax
decq %rcx
jne 0x11a43c
leaq 0x18(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x12885e
leaq 0x30(%rsp), %rdi
movl $0x7f, %esi
callq 0x11aa96
leaq 0x180(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x11ab96
leaq 0x130(%rsp), %rdi
callq 0x128a60
leaq 0x100(%rsp), %rdi
callq 0x128a60
leaq 0xd0(%rsp), %rdi
callq 0x128a60
leaq 0xa0(%rsp), %rdi
callq 0x128a60
leaq 0x70(%rsp), %rdi
callq 0x128a60
leaq 0x40(%rsp), %r14
movq %r14, %rdi
callq 0x128a60
movq %r14, -0x10(%r14)
leaq 0x1984c0(%rip), %rsi    # 0x2b2995
leaq 0x19862d(%rip), %rdx    # 0x2b2b09
leaq 0x30(%rsp), %rdi
callq 0x11a600
leaq 0x180(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x10(%rsp), %rdx
callq 0x11b3ba
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x11a523
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x1170b0
leaq 0x180(%rsp), %rdi
callq 0x11bf56
leaq 0x10(%rsp), %rdi
callq 0x11c218
leaq 0xaa8(%rsp), %rdi
callq 0x11c266
leaq 0x8(%rsp), %rdi
callq 0x11c3d8
addq $0x1548, %rsp           # imm = 0x1548
popq %rbx
popq %r14
retq
jmp 0x11a572
movq %rax, %rbx
jmp 0x11a5bf
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x11b372
jmp 0x11a5cc
movq %rax, %rbx
jmp 0x11a5cc
jmp 0x11a59b
movq %rax, %rbx
movq 0x180(%rsp), %rdi
cmpq %r14, %rdi
je 0x11a5d6
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x1170b0
jmp 0x11a5d6
movq %rax, %rbx
jmp 0x11a5d6
movq %rax, %rbx
jmp 0x11a5e3
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x11a5bf
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x1170b0
leaq 0x180(%rsp), %rdi
callq 0x11bf56
leaq 0x10(%rsp), %rdi
callq 0x11c218
leaq 0xaa8(%rsp), %rdi
callq 0x11c266
leaq 0x8(%rsp), %rdi
callq 0x11c3d8
movq %rbx, %rdi
callq 0x117360