// File: /workspace/github_cpp_makefile_star2_O1/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 0x11c712
leaq 0xaa8(%rsp), %rdi
movq %rbx, %rsi
callq 0x11c75a
leaq 0x190(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1ba509(%rip), %rsi    # 0x2d6926
leaq 0x1ba508(%rip), %rdx    # 0x2d692c
leaq 0x180(%rsp), %rdi
callq 0x11c682
leaq 0x8(%rsp), %rbx
leaq 0x180(%rsp), %rsi
leaq 0xaa8(%rsp), %rdx
movq %rbx, %rdi
callq 0x11c91c
movq 0x180(%rsp), %rdi
cmpq %r14, %rdi
je 0x11c46b
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x1190b0
leaq 0x10(%rsp), %rdi
callq 0x11caa6
movq 0x18(%rsp), %rcx
movq 0x20(%rsp), %rax
subq %rcx, %rax
je 0x11c4d1
sarq $0x3, %rax
cmpq $0x1, %rax
movq %rax, %rsi
adcq $0x0, %rsi
cmpq %rbx, %rcx
je 0x11c4e0
movq 0x8(%rsp), %rdx
cmpq (%rcx), %rdx
je 0x11c4e0
addq $0x8, %rcx
movl $0x1, %edi
subq %rsi, %rdi
xorl %esi, %esi
cmpq %rsi, %rdi
je 0x11c4d1
decq %rsi
cmpq %rbx, %rcx
je 0x11c4c9
leaq 0x8(%rcx), %r8
cmpq (%rcx), %rdx
movq %r8, %rcx
jne 0x11c4b0
negq %rsi
cmpq %rax, %rsi
jb 0x11c4e0
leaq 0x18(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x12b616
leaq 0x30(%rsp), %rdi
movl $0x7f, %esi
callq 0x11cb40
leaq 0x180(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x11cc40
leaq 0x130(%rsp), %rdi
callq 0x12b818
leaq 0x100(%rsp), %rdi
callq 0x12b818
leaq 0xd0(%rsp), %rdi
callq 0x12b818
leaq 0xa0(%rsp), %rdi
callq 0x12b818
leaq 0x70(%rsp), %rdi
callq 0x12b818
leaq 0x40(%rsp), %r14
movq %r14, %rdi
callq 0x12b818
movq %r14, -0x10(%r14)
leaq 0x1ba3d6(%rip), %rsi    # 0x2d692d
leaq 0x1ba543(%rip), %rdx    # 0x2d6aa1
leaq 0x30(%rsp), %rdi
callq 0x11c682
leaq 0x180(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x10(%rsp), %rdx
callq 0x11d464
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x11c5a5
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x1190b0
leaq 0x180(%rsp), %rdi
callq 0x11de36
leaq 0x10(%rsp), %rdi
callq 0x11e0f8
leaq 0xaa8(%rsp), %rdi
callq 0x11e146
leaq 0x8(%rsp), %rdi
callq 0x11e2b8
addq $0x1548, %rsp           # imm = 0x1548
popq %rbx
popq %r14
retq
jmp 0x11c5f4
movq %rax, %rbx
jmp 0x11c641
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x11d41c
jmp 0x11c64e
movq %rax, %rbx
jmp 0x11c64e
jmp 0x11c61d
movq %rax, %rbx
movq 0x180(%rsp), %rdi
cmpq %r14, %rdi
je 0x11c658
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x1190b0
jmp 0x11c658
movq %rax, %rbx
jmp 0x11c658
movq %rax, %rbx
jmp 0x11c665
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x11c641
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x1190b0
leaq 0x180(%rsp), %rdi
callq 0x11de36
leaq 0x10(%rsp), %rdi
callq 0x11e0f8
leaq 0xaa8(%rsp), %rdi
callq 0x11e146
leaq 0x8(%rsp), %rdi
callq 0x11e2b8
movq %rbx, %rdi
callq 0x119360