// File: ArashPartow[P]exprtk-extras/exprtk_repl.cpp
// Function: expression_processor<double>::process_directive(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void process_directive(std::string expression)
   {
      expression = trim_whitespace(expression);

      if ('$' != expression[0])
         return;
      else if ("$enable_cache" == expression)
         persist_symbol_table() = true;
      else if ("$disable_cache" == expression)
         persist_symbol_table() = false;
      else if ("$enable_symbol_dump" == expression)
         symbol_dump() = true;
      else if ("$disable_symbol_dump" == expression)
         symbol_dump() = false;
      else if ("$enable_assignment_dump" == expression)
         assignment_dump() = true;
      else if ("$disable_assignment_dump" == expression)
         assignment_dump() = false;
      else if ("$enable_timer" == expression)
         display_total_time() = true;
      else if ("$enable_compile_timer" == expression)
         display_total_compile_time() = true;
      else if ("$disable_timer" == expression)
         display_total_time() = false;
      else if ("$disable_compile_timer" == expression)
         display_total_compile_time() = false;
      else if ("$enable_usr" == expression)
         enable_usr() = true;
      else if ("$disable_usr" == expression)
         enable_usr() = false;
      else if ("$enable_local_vardef" == expression)
         disable_local_vardef() = false;
      else if ("$disable_local_vardef" == expression)
         disable_local_vardef() = true;
      else if ("$list_vars" == expression)
         list_symbols();
      else if ("$clear_functions" == expression)
         clear_functions();
      else if ((0 == expression.find("$batch_run ")) && (expression.size() >= 12))
         process_batch_run(expression.substr(11,expression.size() - 11));
      else if ((0 == expression.find("$load ")) && (expression.size() > 7))
         process_from_file(expression.substr(6,expression.size() - 6));
      else if ((0 == expression.find("$disable arithmetic ")) && (expression.size() >= 21))
         process_disable_arithmetic(expression.substr(20,expression.size() - 20));
      else if ((0 == expression.find("$disable assignment ")) && (expression.size() >= 21))
         process_disable_assignment(expression.substr(20,expression.size() - 20));
      else if ((0 == expression.find("$disable inequality ")) && (expression.size() >= 21))
         process_disable_inequality(expression.substr(20,expression.size() - 20));
      else if ((0 == expression.find("$enable arithmetic ")) && (expression.size() >= 20))
         process_enable_arithmetic(expression.substr(19,expression.size() - 19));
      else if ((0 == expression.find("$enable assignment ")) && (expression.size() >= 20))
         process_enable_assignment(expression.substr(19,expression.size() - 19));
      else if ((0 == expression.find("$enable inequality ")) && (expression.size() >= 20))
         process_enable_inequality(expression.substr(19,expression.size() - 19));
      else if ("$begin" == expression)
         process_multiline();
      else if (0 == expression.find("$function"))
         process_function_definition(expression);
      else
         printf("\nERROR - Invalid directive: %s\n",expression.c_str());
   }

// Assembly:
subq $0x1b8, %rsp            # imm = 0x1B8
movq %rsi, 0x40(%rsp)
movq %rdi, 0x1b0(%rsp)
movq %rsi, 0x1a8(%rsp)
movq 0x1b0(%rsp), %rax
movq %rax, 0x48(%rsp)
leaq 0x168(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x119150
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
leaq 0x188(%rsp), %rdi
callq 0x47ebe0
jmp 0x1236b4
movq 0x40(%rsp), %rdi
leaq 0x188(%rsp), %rsi
callq 0x119490
leaq 0x188(%rsp), %rdi
callq 0x119968
leaq 0x168(%rsp), %rdi
callq 0x119968
movq 0x40(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1198a0
movsbl (%rax), %ecx
movl $0x24, %eax
cmpl %ecx, %eax
je 0x123725
jmp 0x123f82
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x160(%rsp)
movl %eax, 0x15c(%rsp)
leaq 0x168(%rsp), %rdi
callq 0x119968
jmp 0x123f8a
movq 0x40(%rsp), %rsi
leaq 0x36ddab(%rip), %rdi    # 0x4914dc
callq 0x123630
testb $0x1, %al
jne 0x12373c
jmp 0x12374e
movq 0x48(%rsp), %rdi
callq 0x47ed60
movb $0x1, (%rax)
jmp 0x123f80
movq 0x40(%rsp), %rsi
leaq 0x36dd90(%rip), %rdi    # 0x4914ea
callq 0x123630
testb $0x1, %al
jne 0x123765
jmp 0x123777
movq 0x48(%rsp), %rdi
callq 0x47ed60
movb $0x0, (%rax)
jmp 0x123f7e
movq 0x40(%rsp), %rsi
leaq 0x36dd76(%rip), %rdi    # 0x4914f9
callq 0x123630
testb $0x1, %al
jne 0x12378e
jmp 0x1237a0
movq 0x48(%rsp), %rdi
callq 0x47ed70
movb $0x1, (%rax)
jmp 0x123f7c
movq 0x40(%rsp), %rsi
leaq 0x36dd61(%rip), %rdi    # 0x49150d
callq 0x123630
testb $0x1, %al
jne 0x1237b7
jmp 0x1237c9
movq 0x48(%rsp), %rdi
callq 0x47ed70
movb $0x0, (%rax)
jmp 0x123f7a
movq 0x40(%rsp), %rsi
leaq 0x36dd4d(%rip), %rdi    # 0x491522
callq 0x123630
testb $0x1, %al
jne 0x1237e0
jmp 0x1237f2
movq 0x48(%rsp), %rdi
callq 0x47ed80
movb $0x1, (%rax)
jmp 0x123f78
movq 0x40(%rsp), %rsi
leaq 0x36dd3c(%rip), %rdi    # 0x49153a
callq 0x123630
testb $0x1, %al
jne 0x123809
jmp 0x12381b
movq 0x48(%rsp), %rdi
callq 0x47ed80
movb $0x0, (%rax)
jmp 0x123f76
movq 0x40(%rsp), %rsi
leaq 0x36dd2c(%rip), %rdi    # 0x491553
callq 0x123630
testb $0x1, %al
jne 0x123832
jmp 0x123844
movq 0x48(%rsp), %rdi
callq 0x47ed90
movb $0x1, (%rax)
jmp 0x123f74
movq 0x40(%rsp), %rsi
leaq 0x36dd11(%rip), %rdi    # 0x491561
callq 0x123630
testb $0x1, %al
jne 0x12385b
jmp 0x12386d
movq 0x48(%rsp), %rdi
callq 0x47eda0
movb $0x1, (%rax)
jmp 0x123f72
movq 0x40(%rsp), %rsi
leaq 0x36dcfe(%rip), %rdi    # 0x491577
callq 0x123630
testb $0x1, %al
jne 0x123884
jmp 0x123896
movq 0x48(%rsp), %rdi
callq 0x47ed90
movb $0x0, (%rax)
jmp 0x123f70
movq 0x40(%rsp), %rsi
leaq 0x36dce4(%rip), %rdi    # 0x491586
callq 0x123630
testb $0x1, %al
jne 0x1238ad
jmp 0x1238bf
movq 0x48(%rsp), %rdi
callq 0x47eda0
movb $0x0, (%rax)
jmp 0x123f6e
movq 0x40(%rsp), %rsi
leaq 0x36dcd2(%rip), %rdi    # 0x49159d
callq 0x123630
testb $0x1, %al
jne 0x1238d6
jmp 0x1238e8
movq 0x48(%rsp), %rdi
callq 0x47edb0
movb $0x1, (%rax)
jmp 0x123f6c
movq 0x40(%rsp), %rsi
leaq 0x36dcb5(%rip), %rdi    # 0x4915a9
callq 0x123630
testb $0x1, %al
jne 0x1238ff
jmp 0x123911
movq 0x48(%rsp), %rdi
callq 0x47edb0
movb $0x0, (%rax)
jmp 0x123f6a
movq 0x40(%rsp), %rsi
leaq 0x36dc99(%rip), %rdi    # 0x4915b6
callq 0x123630
testb $0x1, %al
jne 0x123928
jmp 0x12393a
movq 0x48(%rsp), %rdi
callq 0x47edc0
movb $0x0, (%rax)
jmp 0x123f68
movq 0x40(%rsp), %rsi
leaq 0x36dc85(%rip), %rdi    # 0x4915cb
callq 0x123630
testb $0x1, %al
jne 0x123951
jmp 0x123963
movq 0x48(%rsp), %rdi
callq 0x47edc0
movb $0x1, (%rax)
jmp 0x123f66
movq 0x40(%rsp), %rsi
leaq 0x36dc72(%rip), %rdi    # 0x4915e1
callq 0x123630
testb $0x1, %al
jne 0x12397a
jmp 0x123989
movq 0x48(%rsp), %rdi
callq 0x47edd0
jmp 0x123f64
movq 0x40(%rsp), %rsi
leaq 0x36dc57(%rip), %rdi    # 0x4915ec
callq 0x123630
testb $0x1, %al
jne 0x1239a0
jmp 0x1239af
movq 0x48(%rsp), %rdi
callq 0x126e50
jmp 0x123f62
movq 0x40(%rsp), %rdi
leaq 0x36dc42(%rip), %rsi    # 0x4915fd
xorl %eax, %eax
movl %eax, %edx
callq 0x119030
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
jne 0x123a58
movq 0x40(%rsp), %rdi
callq 0x1192a0
cmpq $0xc, %rax
jb 0x123a58
movq 0x40(%rsp), %rdi
callq 0x1192a0
movq 0x40(%rsp), %rsi
movq %rax, %rcx
addq $-0xb, %rcx
leaq 0x138(%rsp), %rdi
movq %rdi, 0x38(%rsp)
movl $0xb, %edx
callq 0x119800
movq 0x48(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0x47f0e0
jmp 0x123a20
leaq 0x138(%rsp), %rdi
callq 0x119968
jmp 0x123f60
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x160(%rsp)
movl %eax, 0x15c(%rsp)
leaq 0x138(%rsp), %rdi
callq 0x119968
jmp 0x123f8a
movq 0x40(%rsp), %rdi
leaq 0x36dba5(%rip), %rsi    # 0x491609
xorl %eax, %eax
movl %eax, %edx
callq 0x119030
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
jne 0x123b01
movq 0x40(%rsp), %rdi
callq 0x1192a0
cmpq $0x7, %rax
jbe 0x123b01
movq 0x40(%rsp), %rdi
callq 0x1192a0
movq 0x40(%rsp), %rsi
movq %rax, %rcx
addq $-0x6, %rcx
leaq 0x118(%rsp), %rdi
movq %rdi, 0x30(%rsp)
movl $0x6, %edx
callq 0x119800
movq 0x48(%rsp), %rdi
movq 0x30(%rsp), %rsi
callq 0x1234a0
jmp 0x123ac9
leaq 0x118(%rsp), %rdi
callq 0x119968
jmp 0x123f5e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x160(%rsp)
movl %eax, 0x15c(%rsp)
leaq 0x118(%rsp), %rdi
callq 0x119968
jmp 0x123f8a
movq 0x40(%rsp), %rdi
leaq 0x36db03(%rip), %rsi    # 0x491610
xorl %eax, %eax
movl %eax, %edx
callq 0x119030
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
jne 0x123baa
movq 0x40(%rsp), %rdi
callq 0x1192a0
cmpq $0x15, %rax
jb 0x123baa
movq 0x40(%rsp), %rdi
callq 0x1192a0
movq 0x40(%rsp), %rsi
movq %rax, %rcx
addq $-0x14, %rcx
leaq 0xf8(%rsp), %rdi
movq %rdi, 0x28(%rsp)
movl $0x14, %edx
callq 0x119800
movq 0x48(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0x47f120
jmp 0x123b72
leaq 0xf8(%rsp), %rdi
callq 0x119968
jmp 0x123f5c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x160(%rsp)
movl %eax, 0x15c(%rsp)
leaq 0xf8(%rsp), %rdi
callq 0x119968
jmp 0x123f8a
movq 0x40(%rsp), %rdi
leaq 0x36da6f(%rip), %rsi    # 0x491625
xorl %eax, %eax
movl %eax, %edx
callq 0x119030
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
jne 0x123c53
movq 0x40(%rsp), %rdi
callq 0x1192a0
cmpq $0x15, %rax
jb 0x123c53
movq 0x40(%rsp), %rdi
callq 0x1192a0
movq 0x40(%rsp), %rsi
movq %rax, %rcx
addq $-0x14, %rcx
leaq 0xd8(%rsp), %rdi
movq %rdi, 0x20(%rsp)
movl $0x14, %edx
callq 0x119800
movq 0x48(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x47f1c0
jmp 0x123c1b
leaq 0xd8(%rsp), %rdi
callq 0x119968
jmp 0x123f5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x160(%rsp)
movl %eax, 0x15c(%rsp)
leaq 0xd8(%rsp), %rdi
callq 0x119968
jmp 0x123f8a
movq 0x40(%rsp), %rdi
leaq 0x36d9db(%rip), %rsi    # 0x49163a
xorl %eax, %eax
movl %eax, %edx
callq 0x119030
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
jne 0x123cfc
movq 0x40(%rsp), %rdi
callq 0x1192a0
cmpq $0x15, %rax
jb 0x123cfc
movq 0x40(%rsp), %rdi
callq 0x1192a0
movq 0x40(%rsp), %rsi
movq %rax, %rcx
addq $-0x14, %rcx
leaq 0xb8(%rsp), %rdi
movq %rdi, 0x18(%rsp)
movl $0x14, %edx
callq 0x119800
movq 0x48(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x47f260
jmp 0x123cc4
leaq 0xb8(%rsp), %rdi
callq 0x119968
jmp 0x123f58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x160(%rsp)
movl %eax, 0x15c(%rsp)
leaq 0xb8(%rsp), %rdi
callq 0x119968
jmp 0x123f8a
movq 0x40(%rsp), %rdi
leaq 0x36d947(%rip), %rsi    # 0x49164f
xorl %eax, %eax
movl %eax, %edx
callq 0x119030
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
jne 0x123da5
movq 0x40(%rsp), %rdi
callq 0x1192a0
cmpq $0x14, %rax
jb 0x123da5
movq 0x40(%rsp), %rdi
callq 0x1192a0
movq 0x40(%rsp), %rsi
movq %rax, %rcx
addq $-0x13, %rcx
leaq 0x98(%rsp), %rdi
movq %rdi, 0x10(%rsp)
movl $0x13, %edx
callq 0x119800
movq 0x48(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x47f300
jmp 0x123d6d
leaq 0x98(%rsp), %rdi
callq 0x119968
jmp 0x123f56
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x160(%rsp)
movl %eax, 0x15c(%rsp)
leaq 0x98(%rsp), %rdi
callq 0x119968
jmp 0x123f8a
movq 0x40(%rsp), %rdi
leaq 0x36d8b2(%rip), %rsi    # 0x491663
xorl %eax, %eax
movl %eax, %edx
callq 0x119030
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
jne 0x123e41
movq 0x40(%rsp), %rdi
callq 0x1192a0
cmpq $0x14, %rax
jb 0x123e41
movq 0x40(%rsp), %rdi
callq 0x1192a0
movq 0x40(%rsp), %rsi
movq %rax, %rcx
addq $-0x13, %rcx
leaq 0x78(%rsp), %rdi
movq %rdi, 0x8(%rsp)
movl $0x13, %edx
callq 0x119800
movq 0x48(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x47f3a0
jmp 0x123e0f
leaq 0x78(%rsp), %rdi
callq 0x119968
jmp 0x123f54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x160(%rsp)
movl %eax, 0x15c(%rsp)
leaq 0x78(%rsp), %rdi
callq 0x119968
jmp 0x123f8a
movq 0x40(%rsp), %rdi
leaq 0x36d82a(%rip), %rsi    # 0x491677
xorl %eax, %eax
movl %eax, %edx
callq 0x119030
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
jne 0x123edb
movq 0x40(%rsp), %rdi
callq 0x1192a0
cmpq $0x14, %rax
jb 0x123edb
movq 0x40(%rsp), %rdi
callq 0x1192a0
movq 0x40(%rsp), %rsi
movq %rax, %rcx
addq $-0x13, %rcx
leaq 0x58(%rsp), %rdi
movq %rdi, (%rsp)
movl $0x13, %edx
callq 0x119800
movq 0x48(%rsp), %rdi
movq (%rsp), %rsi
callq 0x47f440
jmp 0x123ea9
leaq 0x58(%rsp), %rdi
callq 0x119968
jmp 0x123f52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x160(%rsp)
movl %eax, 0x15c(%rsp)
leaq 0x58(%rsp), %rdi
callq 0x119968
jmp 0x123f8a
movq 0x40(%rsp), %rsi
leaq 0x36d7a4(%rip), %rdi    # 0x49168b
callq 0x123630
testb $0x1, %al
jne 0x123ef2
jmp 0x123efe
movq 0x48(%rsp), %rdi
callq 0x47f4e0
jmp 0x123f50
movq 0x40(%rsp), %rdi
leaq 0x36d788(%rip), %rsi    # 0x491692
xorl %eax, %eax
movl %eax, %edx
callq 0x119030
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
jne 0x123f33
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdi
movl $0x1, %edx
callq 0x27d040
jmp 0x123f4e
movq 0x40(%rsp), %rdi
callq 0x119120
movq %rax, %rsi
leaq 0x36d755(%rip), %rdi    # 0x49169c
movb $0x0, %al
callq 0x1190b0
jmp 0x123f50
jmp 0x123f52
jmp 0x123f54
jmp 0x123f56
jmp 0x123f58
jmp 0x123f5a
jmp 0x123f5c
jmp 0x123f5e
jmp 0x123f60
jmp 0x123f62
jmp 0x123f64
jmp 0x123f66
jmp 0x123f68
jmp 0x123f6a
jmp 0x123f6c
jmp 0x123f6e
jmp 0x123f70
jmp 0x123f72
jmp 0x123f74
jmp 0x123f76
jmp 0x123f78
jmp 0x123f7a
jmp 0x123f7c
jmp 0x123f7e
jmp 0x123f80
jmp 0x123f82
addq $0x1b8, %rsp            # imm = 0x1B8
retq
movq 0x160(%rsp), %rdi
callq 0x119570
nopw (%rax,%rax)