// File: ArashPartow[P]exprtk/exprtk_test.cpp
// Function: bool run_test13<double>()
bool run_test13()
{
   typedef exprtk::symbol_table<T> symbol_table_t;
   typedef exprtk::expression<T>   expression_t;
   typedef exprtk::parser<T>       parser_t;

   static const std::string expression_string[] =
   {
      "equal(sin(30),0.5)                    ",
      "equal(cos(60),0.5)                    ",
      "equal(sin(60),sqrt(3)/2)              ",
      "equal(cos(30),sqrt(3)/2)              ",
      "equal(sin(x_deg),0.5)                 ",
      "equal(cos(y_deg),0.5)                 ",
      "equal(sin(y_deg),sqrt(3)/2)           ",
      "equal(cos(x_deg),sqrt(3)/2)           ",
      "equal(sin(30) + sin(30),1.0)          ",
      "equal(cos(60) + cos(60),1.0)          ",
      "equal(sin(60) + sin(60),sqrt(3))      ",
      "equal(cos(30) + cos(30),sqrt(3))      ",
      "equal(sin(x_deg) + sin(x_deg),1.0)    ",
      "equal(cos(y_deg) + cos(y_deg),1.0)    ",
      "equal(sin(y_deg) + sin(y_deg),sqrt(3))",
      "equal(cos(x_deg) + cos(x_deg),sqrt(3))"
   };

   static const std::size_t expression_string_size = sizeof(expression_string) / sizeof(std::string);

   {
      T x_deg = T(30);
      T y_deg = T(60);

      sine_deg  <T>   sine;
      cosine_deg<T> cosine;

      symbol_table_t symbol_table_0;
      symbol_table_t symbol_table_1;

      symbol_table_0.add_variable("x_deg",x_deg);
      symbol_table_1.add_variable("y_deg",y_deg);

      symbol_table_0.add_function(  "sine_deg",   sine);
      symbol_table_1.add_function("cosine_deg", cosine);

      expression_t expression;

      expression.register_symbol_table(symbol_table_0);
      expression.register_symbol_table(symbol_table_1);

      static const std::size_t rounds = 100;

      for (std::size_t i = 0; i < rounds; ++i)
      {
         for (std::size_t j = 0; j < expression_string_size; ++j)
         {
            const std::string& expr_str = expression_string[j];

            {
               parser_t parser;

               parser.replace_symbol("sin",   "sine_deg");
               parser.replace_symbol("cos", "cosine_deg");

               if (!parser.compile(expr_str,expression))
               {
                  printf("run_test13() - Error: %s   Expression: %s  [1]\n",
                         parser.error().c_str(),
                         expr_str.c_str());

                  return false;
               }
            }

            if (T(1) != expression.value())
            {
               printf("run_test13() - Error in evaluation! Expression: %s  [1]\n",expr_str.c_str());
               return false;
            }
         }
      }
   }

   {
      T x_deg = T(30);
      T y_deg = T(60);

      sine_deg  <T>   sine;
      cosine_deg<T> cosine;

      symbol_table_t symbol_table_0;
      symbol_table_t symbol_table_1;

      symbol_table_0.add_variable("x_deg",x_deg);
      symbol_table_1.add_variable("y_deg",y_deg);

      symbol_table_0.add_reserved_function("sin",  sine);
      symbol_table_1.add_reserved_function("cos",cosine);

      expression_t expression;

      expression.register_symbol_table(symbol_table_0);
      expression.register_symbol_table(symbol_table_1);

      static const std::size_t rounds = 100;

      for (std::size_t i = 0; i < rounds; ++i)
      {
         for (std::size_t j = 0; j < expression_string_size; ++j)
         {
            const std::string& expr_str = expression_string[j];

            {
               typedef typename parser_t::settings_store settings_t;

               parser_t parser;

               parser.settings()
                  .disable_base_function(settings_t::e_bf_sin)
                  .disable_base_function(settings_t::e_bf_cos);

               if (!parser.compile(expr_str,expression))
               {
                  printf("run_test13() - Error: %s   Expression: %s  [2]\n",
                         parser.error().c_str(),
                         expr_str.c_str());

                  return false;
               }
            }

            if (T(1) != expression.value())
            {
               printf("run_test13() - Error in evaluation! Expression: %s  [2]\n",expr_str.c_str());
               return false;
            }
         }
      }
   }

   return true;
}

// Assembly:
subq $0x1a48, %rsp           # imm = 0x1A48
cmpb $0x0, 0x6299b2(%rip)    # 0x800dc0
jne 0x1d79cc
leaq 0x6299a5(%rip), %rdi    # 0x800dc0
callq 0x11b2c0
cmpl $0x0, %eax
je 0x1d79cc
movb $0x1, 0x1a14(%rsp)
leaq 0x629788(%rip), %rax    # 0x800bc0
movq %rax, 0x198(%rsp)
movq %rax, 0x1a38(%rsp)
leaq 0x1a37(%rsp), %rdi
movq %rdi, 0x1a0(%rsp)
callq 0x11b6f0
movq 0x198(%rsp), %rdi
movq 0x1a0(%rsp), %rdx
leaq 0x3e9d78(%rip), %rsi    # 0x5c11ec
callq 0x134520
jmp 0x1d747b
leaq 0x62975e(%rip), %rax    # 0x800be0
movq %rax, 0x188(%rsp)
movq %rax, 0x1a38(%rsp)
leaq 0x1a23(%rsp), %rdi
movq %rdi, 0x190(%rsp)
callq 0x11b6f0
movq 0x188(%rsp), %rdi
movq 0x190(%rsp), %rdx
leaq 0x3e9d55(%rip), %rsi    # 0x5c1213
callq 0x134520
jmp 0x1d74c5
leaq 0x629734(%rip), %rax    # 0x800c00
movq %rax, 0x178(%rsp)
movq %rax, 0x1a38(%rsp)
leaq 0x1a22(%rsp), %rdi
movq %rdi, 0x180(%rsp)
callq 0x11b6f0
movq 0x178(%rsp), %rdi
movq 0x180(%rsp), %rdx
leaq 0x3e9d32(%rip), %rsi    # 0x5c123a
callq 0x134520
jmp 0x1d750f
leaq 0x62970a(%rip), %rax    # 0x800c20
movq %rax, 0x168(%rsp)
movq %rax, 0x1a38(%rsp)
leaq 0x1a21(%rsp), %rdi
movq %rdi, 0x170(%rsp)
callq 0x11b6f0
movq 0x168(%rsp), %rdi
movq 0x170(%rsp), %rdx
leaq 0x3e9d0f(%rip), %rsi    # 0x5c1261
callq 0x134520
jmp 0x1d7559
leaq 0x6296e0(%rip), %rax    # 0x800c40
movq %rax, 0x158(%rsp)
movq %rax, 0x1a38(%rsp)
leaq 0x1a20(%rsp), %rdi
movq %rdi, 0x160(%rsp)
callq 0x11b6f0
movq 0x158(%rsp), %rdi
movq 0x160(%rsp), %rdx
leaq 0x3e9cec(%rip), %rsi    # 0x5c1288
callq 0x134520
jmp 0x1d75a3
leaq 0x6296b6(%rip), %rax    # 0x800c60
movq %rax, 0x148(%rsp)
movq %rax, 0x1a38(%rsp)
leaq 0x1a1f(%rsp), %rdi
movq %rdi, 0x150(%rsp)
callq 0x11b6f0
movq 0x148(%rsp), %rdi
movq 0x150(%rsp), %rdx
leaq 0x3e9cc9(%rip), %rsi    # 0x5c12af
callq 0x134520
jmp 0x1d75ed
leaq 0x62968c(%rip), %rax    # 0x800c80
movq %rax, 0x138(%rsp)
movq %rax, 0x1a38(%rsp)
leaq 0x1a1e(%rsp), %rdi
movq %rdi, 0x140(%rsp)
callq 0x11b6f0
movq 0x138(%rsp), %rdi
movq 0x140(%rsp), %rdx
leaq 0x3e9ca6(%rip), %rsi    # 0x5c12d6
callq 0x134520
jmp 0x1d7637
leaq 0x629662(%rip), %rax    # 0x800ca0
movq %rax, 0x128(%rsp)
movq %rax, 0x1a38(%rsp)
leaq 0x1a1d(%rsp), %rdi
movq %rdi, 0x130(%rsp)
callq 0x11b6f0
movq 0x128(%rsp), %rdi
movq 0x130(%rsp), %rdx
leaq 0x3e9c83(%rip), %rsi    # 0x5c12fd
callq 0x134520
jmp 0x1d7681
leaq 0x629638(%rip), %rax    # 0x800cc0
movq %rax, 0x118(%rsp)
movq %rax, 0x1a38(%rsp)
leaq 0x1a1c(%rsp), %rdi
movq %rdi, 0x120(%rsp)
callq 0x11b6f0
movq 0x118(%rsp), %rdi
movq 0x120(%rsp), %rdx
leaq 0x3e9c60(%rip), %rsi    # 0x5c1324
callq 0x134520
jmp 0x1d76cb
leaq 0x62960e(%rip), %rax    # 0x800ce0
movq %rax, 0x108(%rsp)
movq %rax, 0x1a38(%rsp)
leaq 0x1a1b(%rsp), %rdi
movq %rdi, 0x110(%rsp)
callq 0x11b6f0
movq 0x108(%rsp), %rdi
movq 0x110(%rsp), %rdx
leaq 0x3e9c3d(%rip), %rsi    # 0x5c134b
callq 0x134520
jmp 0x1d7715
leaq 0x6295e4(%rip), %rax    # 0x800d00
movq %rax, 0xf8(%rsp)
movq %rax, 0x1a38(%rsp)
leaq 0x1a1a(%rsp), %rdi
movq %rdi, 0x100(%rsp)
callq 0x11b6f0
movq 0xf8(%rsp), %rdi
movq 0x100(%rsp), %rdx
leaq 0x3e9c1a(%rip), %rsi    # 0x5c1372
callq 0x134520
jmp 0x1d775f
leaq 0x6295ba(%rip), %rax    # 0x800d20
movq %rax, 0xe8(%rsp)
movq %rax, 0x1a38(%rsp)
leaq 0x1a19(%rsp), %rdi
movq %rdi, 0xf0(%rsp)
callq 0x11b6f0
movq 0xe8(%rsp), %rdi
movq 0xf0(%rsp), %rdx
leaq 0x3e9bf7(%rip), %rsi    # 0x5c1399
callq 0x134520
jmp 0x1d77a9
leaq 0x629590(%rip), %rax    # 0x800d40
movq %rax, 0xd8(%rsp)
movq %rax, 0x1a38(%rsp)
leaq 0x1a18(%rsp), %rdi
movq %rdi, 0xe0(%rsp)
callq 0x11b6f0
movq 0xd8(%rsp), %rdi
movq 0xe0(%rsp), %rdx
leaq 0x3e9bd4(%rip), %rsi    # 0x5c13c0
callq 0x134520
jmp 0x1d77f3
leaq 0x629566(%rip), %rax    # 0x800d60
movq %rax, 0xc8(%rsp)
movq %rax, 0x1a38(%rsp)
leaq 0x1a17(%rsp), %rdi
movq %rdi, 0xd0(%rsp)
callq 0x11b6f0
movq 0xc8(%rsp), %rdi
movq 0xd0(%rsp), %rdx
leaq 0x3e9bb1(%rip), %rsi    # 0x5c13e7
callq 0x134520
jmp 0x1d783d
leaq 0x62953c(%rip), %rax    # 0x800d80
movq %rax, 0xb8(%rsp)
movq %rax, 0x1a38(%rsp)
leaq 0x1a16(%rsp), %rdi
movq %rdi, 0xc0(%rsp)
callq 0x11b6f0
movq 0xb8(%rsp), %rdi
movq 0xc0(%rsp), %rdx
leaq 0x3e9b8e(%rip), %rsi    # 0x5c140e
callq 0x134520
jmp 0x1d7887
leaq 0x629512(%rip), %rax    # 0x800da0
movq %rax, 0xa8(%rsp)
movq %rax, 0x1a38(%rsp)
leaq 0x1a15(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0x11b6f0
movq 0xa8(%rsp), %rdi
movq 0xb0(%rsp), %rdx
leaq 0x3e9b6b(%rip), %rsi    # 0x5c1435
callq 0x134520
jmp 0x1d78d1
movb $0x0, 0x1a14(%rsp)
leaq 0x1a15(%rsp), %rdi
callq 0x11b820
leaq 0x1a16(%rsp), %rdi
callq 0x11b820
leaq 0x1a17(%rsp), %rdi
callq 0x11b820
leaq 0x1a18(%rsp), %rdi
callq 0x11b820
leaq 0x1a19(%rsp), %rdi
callq 0x11b820
leaq 0x1a1a(%rsp), %rdi
callq 0x11b820
leaq 0x1a1b(%rsp), %rdi
callq 0x11b820
leaq 0x1a1c(%rsp), %rdi
callq 0x11b820
leaq 0x1a1d(%rsp), %rdi
callq 0x11b820
leaq 0x1a1e(%rsp), %rdi
callq 0x11b820
leaq 0x1a1f(%rsp), %rdi
callq 0x11b820
leaq 0x1a20(%rsp), %rdi
callq 0x11b820
leaq 0x1a21(%rsp), %rdi
callq 0x11b820
leaq 0x1a22(%rsp), %rdi
callq 0x11b820
leaq 0x1a23(%rsp), %rdi
callq 0x11b820
leaq 0x1a37(%rsp), %rdi
callq 0x11b820
leaq -0xa6e50(%rip), %rdi    # 0x130b60
xorl %eax, %eax
movl %eax, %esi
leaq 0x5fba65(%rip), %rdx    # 0x7d3420
callq 0x11b630
leaq 0x6293f9(%rip), %rdi    # 0x800dc0
callq 0x11b470
movabsq $0x403e000000000000, %rax # imm = 0x403E000000000000
movq %rax, 0x1a08(%rsp)
movabsq $0x404e000000000000, %rax # imm = 0x404E000000000000
movq %rax, 0x1a00(%rsp)
leaq 0x19d8(%rsp), %rdi
callq 0x5704b0
leaq 0x19b0(%rsp), %rdi
callq 0x5704f0
jmp 0x1d7a0c
leaq 0x19a8(%rsp), %rdi
movl $0x1, %esi
callq 0x22de90
jmp 0x1d7a20
leaq 0x19a0(%rsp), %rdi
movl $0x1, %esi
callq 0x22de90
jmp 0x1d7a34
leaq 0x197f(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0x11b6f0
movq 0xa0(%rsp), %rdx
leaq 0x3e9a04(%rip), %rsi    # 0x5c145c
leaq 0x1980(%rsp), %rdi
callq 0x134520
jmp 0x1d7a67
leaq 0x19a8(%rsp), %rdi
leaq 0x1980(%rsp), %rsi
leaq 0x1a08(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2341e0
jmp 0x1d7a88
leaq 0x1980(%rsp), %rdi
callq 0x11b838
leaq 0x197f(%rsp), %rdi
callq 0x11b820
leaq 0x1957(%rsp), %rdi
movq %rdi, 0x98(%rsp)
callq 0x11b6f0
movq 0x98(%rsp), %rdx
leaq 0x3e999c(%rip), %rsi    # 0x5c1462
leaq 0x1958(%rsp), %rdi
callq 0x134520
jmp 0x1d7ad5
leaq 0x19a0(%rsp), %rdi
leaq 0x1958(%rsp), %rsi
leaq 0x1a00(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2341e0
jmp 0x1d7af6
leaq 0x1958(%rsp), %rdi
callq 0x11b838
leaq 0x1957(%rsp), %rdi
callq 0x11b820
leaq 0x192f(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0x11b6f0
movq 0x90(%rsp), %rdx
leaq 0x3e9936(%rip), %rsi    # 0x5c146a
leaq 0x1930(%rsp), %rdi
callq 0x134520
jmp 0x1d7b43
leaq 0x19a8(%rsp), %rdi
leaq 0x1930(%rsp), %rsi
leaq 0x19d8(%rsp), %rdx
callq 0x22e3b0
jmp 0x1d7b62
leaq 0x1930(%rsp), %rdi
callq 0x11b838
leaq 0x192f(%rsp), %rdi
callq 0x11b820
leaq 0x1907(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0x11b6f0
movq 0x88(%rsp), %rdx
leaq 0x3e98c8(%rip), %rsi    # 0x5c1468
leaq 0x1908(%rsp), %rdi
callq 0x134520
jmp 0x1d7baf
leaq 0x19a0(%rsp), %rdi
leaq 0x1908(%rsp), %rsi
leaq 0x19b0(%rsp), %rdx
callq 0x22e3b0
jmp 0x1d7bce
leaq 0x1908(%rsp), %rdi
callq 0x11b838
leaq 0x1907(%rsp), %rdi
callq 0x11b820
leaq 0x18e0(%rsp), %rdi
callq 0x22e450
jmp 0x1d7bf7
leaq 0x18e0(%rsp), %rdi
leaq 0x19a8(%rsp), %rsi
callq 0x22e500
jmp 0x1d7c0e
leaq 0x18e0(%rsp), %rdi
leaq 0x19a0(%rsp), %rsi
callq 0x22e500
jmp 0x1d7c25
movq $0x0, 0x18d8(%rsp)
cmpq $0x64, 0x18d8(%rsp)
jae 0x1d8533
movq $0x0, 0x18d0(%rsp)
cmpq $0x10, 0x18d0(%rsp)
jae 0x1d8518
movq 0x18d0(%rsp), %rcx
shlq $0x5, %rcx
leaq 0x628f52(%rip), %rax    # 0x800bc0
addq %rcx, %rax
movq %rax, 0x18c8(%rsp)
leaq 0xe50(%rsp), %rdi
movl $0x7f, %esi
callq 0x22e5b0
jmp 0x1d7c8d
leaq 0xfa0(%rsp), %rdi
leaq 0xe50(%rsp), %rsi
callq 0x22e6e0
jmp 0x1d7ca4
leaq 0xe50(%rsp), %rdi
callq 0x22ef10
leaq 0xe2f(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0x11b6f0
movq 0x80(%rsp), %rdx
leaq 0x3c88be(%rip), %rsi    # 0x5a0593
leaq 0xe30(%rsp), %rdi
callq 0x134520
jmp 0x1d7ce4
leaq 0xe07(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0x11b6f0
movq 0x78(%rsp), %rdx
leaq 0x3e9768(%rip), %rsi    # 0x5c146a
leaq 0xe08(%rsp), %rdi
callq 0x134520
jmp 0x1d7d11
leaq 0xfa0(%rsp), %rdi
leaq 0xe30(%rsp), %rsi
leaq 0xe08(%rsp), %rdx
callq 0x570530
jmp 0x1d7d30
leaq 0xe08(%rsp), %rdi
callq 0x11b838
leaq 0xe07(%rsp), %rdi
callq 0x11b820
leaq 0xe30(%rsp), %rdi
callq 0x11b838
leaq 0xe2f(%rsp), %rdi
callq 0x11b820
leaq 0xddf(%rsp), %rdi
movq %rdi, 0x70(%rsp)
callq 0x11b6f0
movq 0x70(%rsp), %rdx
leaq 0x3c8806(%rip), %rsi    # 0x5a0588
leaq 0xde0(%rsp), %rdi
callq 0x134520
jmp 0x1d7d91
leaq 0xdb7(%rsp), %rdi
movq %rdi, 0x68(%rsp)
callq 0x11b6f0
movq 0x68(%rsp), %rdx
leaq 0x3e96b9(%rip), %rsi    # 0x5c1468
leaq 0xdb8(%rsp), %rdi
callq 0x134520
jmp 0x1d7dbe
leaq 0xfa0(%rsp), %rdi
leaq 0xde0(%rsp), %rsi
leaq 0xdb8(%rsp), %rdx
callq 0x570530
jmp 0x1d7ddd
leaq 0xdb8(%rsp), %rdi
callq 0x11b838
leaq 0xdb7(%rsp), %rdi
callq 0x11b820
leaq 0xde0(%rsp), %rdi
callq 0x11b838
leaq 0xddf(%rsp), %rdi
callq 0x11b820
movq 0x18c8(%rsp), %rsi
leaq 0xfa0(%rsp), %rdi
leaq 0x18e0(%rsp), %rdx
callq 0x22ef80
movb %al, 0x67(%rsp)
jmp 0x1d7e34
movb 0x67(%rsp), %al
testb $0x1, %al
jne 0x1d8460
jmp 0x1d7e42
leaq 0xd90(%rsp), %rdi
leaq 0xfa0(%rsp), %rsi
callq 0x22f810
jmp 0x1d7e59
leaq 0xd90(%rsp), %rdi
callq 0x11b120
movq %rax, 0x58(%rsp)
movq 0x18c8(%rsp), %rdi
callq 0x11b120
movq 0x58(%rsp), %rsi
movq %rax, %rdx
leaq 0x3e95ec(%rip), %rdi    # 0x5c1473
xorl %eax, %eax
callq 0x11b0b0
jmp 0x1d7e90
leaq 0xd90(%rsp), %rdi
callq 0x11b838
movb $0x0, 0x1a47(%rsp)
movl $0x1, 0xd8c(%rsp)
jmp 0x1d846b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d80fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d80ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d80e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d80d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d80c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d80b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d80ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d809f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8092
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8085
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8078
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d806b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d805e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8051
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
leaq 0x1a15(%rsp), %rdi
callq 0x11b820
leaq 0x1a16(%rsp), %rdi
callq 0x11b820
leaq 0x1a17(%rsp), %rdi
callq 0x11b820
leaq 0x1a18(%rsp), %rdi
callq 0x11b820
leaq 0x1a19(%rsp), %rdi
callq 0x11b820
leaq 0x1a1a(%rsp), %rdi
callq 0x11b820
leaq 0x1a1b(%rsp), %rdi
callq 0x11b820
leaq 0x1a1c(%rsp), %rdi
callq 0x11b820
leaq 0x1a1d(%rsp), %rdi
callq 0x11b820
leaq 0x1a1e(%rsp), %rdi
callq 0x11b820
leaq 0x1a1f(%rsp), %rdi
callq 0x11b820
leaq 0x1a20(%rsp), %rdi
callq 0x11b820
leaq 0x1a21(%rsp), %rdi
callq 0x11b820
leaq 0x1a22(%rsp), %rdi
callq 0x11b820
leaq 0x1a23(%rsp), %rdi
callq 0x11b820
leaq 0x1a37(%rsp), %rdi
callq 0x11b820
testb $0x1, 0x1a14(%rsp)
jne 0x1d8113
jmp 0x1d8157
movq 0x1a38(%rsp), %rax
leaq 0x628a9e(%rip), %rcx    # 0x800bc0
cmpq %rax, %rcx
movq %rax, 0x50(%rsp)
je 0x1d8155
movq 0x50(%rsp), %rdi
addq $-0x20, %rdi
movq %rdi, 0x48(%rsp)
callq 0x11b838
movq 0x48(%rsp), %rax
leaq 0x628a75(%rip), %rcx    # 0x800bc0
cmpq %rcx, %rax
movq %rax, 0x50(%rsp)
jne 0x1d812c
jmp 0x1d8157
leaq 0x628c62(%rip), %rdi    # 0x800dc0
callq 0x11b360
jmp 0x1d8d0a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8968
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d895b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d894e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d81ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
leaq 0x1980(%rsp), %rdi
callq 0x11b838
leaq 0x197f(%rsp), %rdi
callq 0x11b820
jmp 0x1d8941
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8233
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
leaq 0x1958(%rsp), %rdi
callq 0x11b838
leaq 0x1957(%rsp), %rdi
callq 0x11b820
jmp 0x1d8941
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d827c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
leaq 0x1930(%rsp), %rdi
callq 0x11b838
leaq 0x192f(%rsp), %rdi
callq 0x11b820
jmp 0x1d8941
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d82c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
leaq 0x1908(%rsp), %rdi
callq 0x11b838
leaq 0x1907(%rsp), %rdi
callq 0x11b820
jmp 0x1d8941
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8941
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8934
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
leaq 0xe50(%rsp), %rdi
callq 0x22ef10
jmp 0x1d8934
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8396
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d837c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
leaq 0xe08(%rsp), %rdi
callq 0x11b838
leaq 0xe07(%rsp), %rdi
callq 0x11b820
leaq 0xe30(%rsp), %rdi
callq 0x11b838
leaq 0xe2f(%rsp), %rdi
callq 0x11b820
jmp 0x1d84eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d840f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d83f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
leaq 0xdb8(%rsp), %rdi
callq 0x11b838
leaq 0xdb7(%rsp), %rdi
callq 0x11b820
leaq 0xde0(%rsp), %rdi
callq 0x11b838
leaq 0xddf(%rsp), %rdi
callq 0x11b820
jmp 0x1d84eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d84eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
leaq 0xd90(%rsp), %rdi
callq 0x11b838
jmp 0x1d84eb
movl $0x0, 0xd8c(%rsp)
leaq 0xfa0(%rsp), %rdi
callq 0x22f8d0
movl 0xd8c(%rsp), %eax
testl %eax, %eax
jne 0x1d853e
jmp 0x1d8489
leaq 0x18e0(%rsp), %rdi
callq 0x22fb10
movsd %xmm0, 0x40(%rsp)
jmp 0x1d849e
movsd 0x40(%rsp), %xmm1
movsd 0x3c2b94(%rip), %xmm0   # 0x59b040
ucomisd %xmm1, %xmm0
jne 0x1d84b6
jp 0x1d84b6
jmp 0x1d84fd
movq 0x18c8(%rsp), %rdi
callq 0x11b120
movq %rax, %rsi
leaq 0x3e8fd6(%rip), %rdi    # 0x5c14a3
xorl %eax, %eax
callq 0x11b0b0
jmp 0x1d84d6
movb $0x0, 0x1a47(%rsp)
movl $0x1, 0xd8c(%rsp)
jmp 0x1d853e
leaq 0xfa0(%rsp), %rdi
callq 0x22f8d0
jmp 0x1d8934
jmp 0x1d84ff
movq 0x18d0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18d0(%rsp)
jmp 0x1d7c4c
jmp 0x1d851a
movq 0x18d8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18d8(%rsp)
jmp 0x1d7c31
movl $0x0, 0xd8c(%rsp)
leaq 0x18e0(%rsp), %rdi
callq 0x22fb60
leaq 0x19a0(%rsp), %rdi
callq 0x22fc60
leaq 0x19a8(%rsp), %rdi
callq 0x22fc60
leaq 0x19b0(%rsp), %rdi
callq 0x5705b0
leaq 0x19d8(%rsp), %rdi
callq 0x5705c0
movl 0xd8c(%rsp), %eax
testl %eax, %eax
je 0x1d8591
jmp 0x1d858c
jmp 0x1d8cf9
movabsq $0x403e000000000000, %rax # imm = 0x403E000000000000
movq %rax, 0xd80(%rsp)
movabsq $0x404e000000000000, %rax # imm = 0x404E000000000000
movq %rax, 0xd78(%rsp)
leaq 0xd50(%rsp), %rdi
callq 0x5704b0
leaq 0xd28(%rsp), %rdi
callq 0x5704f0
jmp 0x1d85d1
leaq 0xd20(%rsp), %rdi
movl $0x1, %esi
callq 0x22de90
jmp 0x1d85e5
leaq 0xd18(%rsp), %rdi
movl $0x1, %esi
callq 0x22de90
jmp 0x1d85f9
leaq 0xcf7(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0x11b6f0
movq 0x38(%rsp), %rdx
leaq 0x3e8e45(%rip), %rsi    # 0x5c145c
leaq 0xcf8(%rsp), %rdi
callq 0x134520
jmp 0x1d8626
leaq 0xd20(%rsp), %rdi
leaq 0xcf8(%rsp), %rsi
leaq 0xd80(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2341e0
jmp 0x1d8647
leaq 0xcf8(%rsp), %rdi
callq 0x11b838
leaq 0xcf7(%rsp), %rdi
callq 0x11b820
leaq 0xccf(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x11b6f0
movq 0x30(%rsp), %rdx
leaq 0x3e8de3(%rip), %rsi    # 0x5c1462
leaq 0xcd0(%rsp), %rdi
callq 0x134520
jmp 0x1d868e
leaq 0xd18(%rsp), %rdi
leaq 0xcd0(%rsp), %rsi
leaq 0xd78(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2341e0
jmp 0x1d86af
leaq 0xcd0(%rsp), %rdi
callq 0x11b838
leaq 0xccf(%rsp), %rdi
callq 0x11b820
leaq 0xca7(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x11b6f0
movq 0x28(%rsp), %rdx
leaq 0x3c7eac(%rip), %rsi    # 0x5a0593
leaq 0xca8(%rsp), %rdi
callq 0x134520
jmp 0x1d86f6
leaq 0xd20(%rsp), %rdi
leaq 0xca8(%rsp), %rsi
leaq 0xd50(%rsp), %rdx
callq 0x5705d0
jmp 0x1d8715
leaq 0xca8(%rsp), %rdi
callq 0x11b838
leaq 0xca7(%rsp), %rdi
callq 0x11b820
leaq 0xc7f(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x11b6f0
movq 0x20(%rsp), %rdx
leaq 0x3c7e3b(%rip), %rsi    # 0x5a0588
leaq 0xc80(%rsp), %rdi
callq 0x134520
jmp 0x1d875c
leaq 0xd18(%rsp), %rdi
leaq 0xc80(%rsp), %rsi
leaq 0xd28(%rsp), %rdx
callq 0x5705d0
jmp 0x1d877b
leaq 0xc80(%rsp), %rdi
callq 0x11b838
leaq 0xc7f(%rsp), %rdi
callq 0x11b820
leaq 0xc58(%rsp), %rdi
callq 0x22e450
jmp 0x1d87a4
leaq 0xc58(%rsp), %rdi
leaq 0xd20(%rsp), %rsi
callq 0x22e500
jmp 0x1d87bb
leaq 0xc58(%rsp), %rdi
leaq 0xd18(%rsp), %rsi
callq 0x22e500
jmp 0x1d87d2
movq $0x0, 0xc50(%rsp)
cmpq $0x64, 0xc50(%rsp)
jae 0x1d8c51
movq $0x0, 0xc48(%rsp)
cmpq $0x10, 0xc48(%rsp)
jae 0x1d8c36
movq 0xc48(%rsp), %rcx
shlq $0x5, %rcx
leaq 0x6283a5(%rip), %rax    # 0x800bc0
addq %rcx, %rax
movq %rax, 0xc40(%rsp)
leaq 0x1c8(%rsp), %rdi
movl $0x7f, %esi
callq 0x22e5b0
jmp 0x1d883a
leaq 0x318(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
callq 0x22e6e0
jmp 0x1d8851
leaq 0x1c8(%rsp), %rdi
callq 0x22ef10
leaq 0x318(%rsp), %rdi
callq 0x513bc0
movq %rax, %rdi
movl $0x2c, %esi
callq 0x570670
movq %rax, 0x18(%rsp)
jmp 0x1d887f
movq 0x18(%rsp), %rdi
movl $0xc, %esi
callq 0x570670
jmp 0x1d8890
movq 0xc40(%rsp), %rsi
leaq 0x318(%rsp), %rdi
leaq 0xc58(%rsp), %rdx
callq 0x22ef80
movb %al, 0x17(%rsp)
jmp 0x1d88b3
movb 0x17(%rsp), %al
testb $0x1, %al
jne 0x1d8b80
jmp 0x1d88c1
leaq 0x1a8(%rsp), %rdi
leaq 0x318(%rsp), %rsi
callq 0x22f810
jmp 0x1d88d8
leaq 0x1a8(%rsp), %rdi
callq 0x11b120
movq %rax, 0x8(%rsp)
movq 0xc40(%rsp), %rdi
callq 0x11b120
movq 0x8(%rsp), %rsi
movq %rax, %rdx
leaq 0x3e8bd6(%rip), %rdi    # 0x5c14dc
xorl %eax, %eax
callq 0x11b0b0
jmp 0x1d890f
leaq 0x1a8(%rsp), %rdi
callq 0x11b838
movb $0x0, 0x1a47(%rsp)
movl $0x1, 0xd8c(%rsp)
jmp 0x1d8b8b
leaq 0x18e0(%rsp), %rdi
callq 0x22fb60
leaq 0x19a0(%rsp), %rdi
callq 0x22fc60
leaq 0x19a8(%rsp), %rdi
callq 0x22fc60
leaq 0x19b0(%rsp), %rdi
callq 0x5705b0
leaq 0x19d8(%rsp), %rdi
callq 0x5705c0
jmp 0x1d8d0a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8cea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8cdd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8cd0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d89fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
leaq 0xcf8(%rsp), %rdi
callq 0x11b838
leaq 0xcf7(%rsp), %rdi
callq 0x11b820
jmp 0x1d8cc3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8a45
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
leaq 0xcd0(%rsp), %rdi
callq 0x11b838
leaq 0xccf(%rsp), %rdi
callq 0x11b820
jmp 0x1d8cc3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8a8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
leaq 0xca8(%rsp), %rdi
callq 0x11b838
leaq 0xca7(%rsp), %rdi
callq 0x11b820
jmp 0x1d8cc3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8ad7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
leaq 0xc80(%rsp), %rdi
callq 0x11b838
leaq 0xc7f(%rsp), %rdi
callq 0x11b820
jmp 0x1d8cc3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8cc3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8cb6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
leaq 0x1c8(%rsp), %rdi
callq 0x22ef10
jmp 0x1d8cb6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
jmp 0x1d8c09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a28(%rsp)
movl %eax, 0x1a24(%rsp)
leaq 0x1a8(%rsp), %rdi
callq 0x11b838
jmp 0x1d8c09
movl $0x0, 0xd8c(%rsp)
leaq 0x318(%rsp), %rdi
callq 0x22f8d0
movl 0xd8c(%rsp), %eax
testl %eax, %eax
jne 0x1d8c5c
jmp 0x1d8ba9
leaq 0xc58(%rsp), %rdi
callq 0x22fb10
movsd %xmm0, (%rsp)
jmp 0x1d8bbd
movsd (%rsp), %xmm1
movsd 0x3c2476(%rip), %xmm0   # 0x59b040
ucomisd %xmm1, %xmm0
jne 0x1d8bd4
jp 0x1d8bd4
jmp 0x1d8c1b
movq 0xc40(%rsp), %rdi
callq 0x11b120
movq %rax, %rsi
leaq 0x3e8921(%rip), %rdi    # 0x5c150c
xorl %eax, %eax
callq 0x11b0b0
jmp 0x1d8bf4
movb $0x0, 0x1a47(%rsp)
movl $0x1, 0xd8c(%rsp)
jmp 0x1d8c5c
leaq 0x318(%rsp), %rdi
callq 0x22f8d0
jmp 0x1d8cb6
jmp 0x1d8c1d
movq 0xc48(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xc48(%rsp)
jmp 0x1d87f9
jmp 0x1d8c38
movq 0xc50(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xc50(%rsp)
jmp 0x1d87de
movl $0x0, 0xd8c(%rsp)
leaq 0xc58(%rsp), %rdi
callq 0x22fb60
leaq 0xd18(%rsp), %rdi
callq 0x22fc60
leaq 0xd20(%rsp), %rdi
callq 0x22fc60
leaq 0xd28(%rsp), %rdi
callq 0x5705b0
leaq 0xd50(%rsp), %rdi
callq 0x5705c0
movl 0xd8c(%rsp), %eax
testl %eax, %eax
je 0x1d8cac
jmp 0x1d8caa
jmp 0x1d8cf9
movb $0x1, 0x1a47(%rsp)
jmp 0x1d8cf9
leaq 0xc58(%rsp), %rdi
callq 0x22fb60
leaq 0xd18(%rsp), %rdi
callq 0x22fc60
leaq 0xd20(%rsp), %rdi
callq 0x22fc60
leaq 0xd28(%rsp), %rdi
callq 0x5705b0
leaq 0xd50(%rsp), %rdi
callq 0x5705c0
jmp 0x1d8d0a
movb 0x1a47(%rsp), %al
andb $0x1, %al
addq $0x1a48, %rsp           # imm = 0x1A48
retq
movq 0x1a28(%rsp), %rdi
callq 0x11b4e0
nopw (%rax,%rax)