// File: /workspace/github_cpp_makefile_star2_O3/ArashPartow[P]exprtk/exprtk_test.cpp
// Function: bool run_test09<double>()
bool run_test09()
{
   {
      static const std::size_t rounds = 1000;

      for (std::size_t i = 0; i < rounds; ++i)
      {
         typedef exprtk::expression<T> expression_t;
         const std::string expression_string =
            "myfunc0(sin(x * pi),y / 2) + myfunc1(sin(x * pi),y / 2)+"
            "myfunc2(sin(x * pi),y / 2) + myfunc3(sin(x * pi),y / 2)+"
            "myfunc4(sin(x * pi),y / 2) + myfunc5(sin(x * pi),y / 2)+"
            "myfunc6(sin(x * pi),y / 2) + myfunc7(sin(x * pi),y / 2)+"
            "myfunc8(sin(x * pi),y / 2) + myfunc9(sin(x * pi),y / 2)+"
            "myfunc0(sin(x * pi),y / 2) + myfunc1(sin(x * pi),y / 2)+"
            "myfunc2(sin(x * pi),y / 2) + myfunc3(sin(x * pi),y / 2)+"
            "myfunc4(sin(x * pi),y / 2) + myfunc5(sin(x * pi),y / 2)+"
            "myfunc6(sin(x * pi),y / 2) + myfunc7(sin(x * pi),y / 2)+"
            "myfunc8(sin(x * pi),y / 2) + myfunc9(sin(x * pi),y / 2)+"
            "myfunc0(sin(x * pi),y / 2) + myfunc1(sin(x * pi),y / 2)+"
            "myfunc2(sin(x * pi),y / 2) + myfunc3(sin(x * pi),y / 2)+"
            "myfunc4(sin(x * pi),y / 2) + myfunc5(sin(x * pi),y / 2)+"
            "myfunc6(sin(x * pi),y / 2) + myfunc7(sin(x * pi),y / 2)+"
            "myfunc8(sin(x * pi),y / 2) + myfunc9(sin(x * pi),y / 2)+"
            "myfunc0(sin(x * pi),y / 2) + myfunc1(sin(x * pi),y / 2)+"
            "myfunc2(sin(x * pi),y / 2) + myfunc3(sin(x * pi),y / 2)+"
            "myfunc4(sin(x * pi),y / 2) + myfunc5(sin(x * pi),y / 2)+"
            "myfunc6(sin(x * pi),y / 2) + myfunc7(sin(x * pi),y / 2)+"
            "myfunc8(sin(x * pi),y / 2) + myfunc9(sin(x * pi),y / 2)";

         T x = T(1) + (i / T(10000));
         T y = T(2) + (i / T(10000));
         myfunc<T> mf;

         exprtk::symbol_table<T> symbol_table;
         symbol_table.add_variable("x",x);
         symbol_table.add_variable("y",y);
         symbol_table.add_function("myfunc0",mf);
         symbol_table.add_function("myfunc1",mf);
         symbol_table.add_function("myfunc2",mf);
         symbol_table.add_function("myfunc3",mf);
         symbol_table.add_function("myfunc4",mf);
         symbol_table.add_function("myfunc5",mf);
         symbol_table.add_function("myfunc6",mf);
         symbol_table.add_function("myfunc7",mf);
         symbol_table.add_function("myfunc8",mf);
         symbol_table.add_function("myfunc9",mf);
         symbol_table.add_constants();

         expression_t expression;
         expression.register_symbol_table(symbol_table);

         {
            exprtk::parser<T> parser;

            if (!parser.compile(expression_string,expression))
            {
               printf("run_test09() - Error: %s   Expression: %s\n",
                      parser.error().c_str(),
                      expression_string.c_str());

               return false;
            }
         }

         const T pi = T(3.141592653589793238462643383279502);

         const T result = expression.value();

         const T expected =
            T(4) *
            (
               mf(sin(x * pi), y / T(2)) +
               mf(sin(x * pi), y / T(2)) +
               mf(sin(x * pi), y / T(2)) +
               mf(sin(x * pi), y / T(2)) +
               mf(sin(x * pi), y / T(2)) +
               mf(sin(x * pi), y / T(2)) +
               mf(sin(x * pi), y / T(2)) +
               mf(sin(x * pi), y / T(2)) +
               mf(sin(x * pi), y / T(2)) +
               mf(sin(x * pi), y / T(2))
            );

         if (not_equal(result,expected,T(0.0000001)))
         {
            printf("run_test09() - Error Expected: %19.15f\tResult: %19.15f\n",
                   static_cast<double>(expected),
                   static_cast<double>(result));

            return false;
         }
      }
   }

   {
      typedef exprtk::expression<T>   expression_t;
      typedef exprtk::symbol_table<T> symbol_table_t;

      bool result = true;

      const std::string expression_list[] =
      {
         "foo1(1)           == 1",
         "foo2(1,2)         == (1 + 2)",
         "foo3(1,2,3)       == (1 + 2 + 3)",
         "foo4(1,2,3,4)     == (1 + 2 + 3 + 4)",
         "foo5(1,2,3,4,5)   == (1 + 2 + 3 + 4 + 5)",
         "foo6(1,2,3,4,5,6) == (1 + 2 + 3 + 4 + 5 + 6)"
      };

      const std::size_t expression_list_size = sizeof(expression_list) / sizeof(std::string);

      symbol_table_t symbol_table;

      symbol_table.add_function("foo1",foo1);
      symbol_table.add_function("foo2",foo2);
      symbol_table.add_function("foo3",foo3);
      symbol_table.add_function("foo4",foo4);
      symbol_table.add_function("foo5",foo5);
      symbol_table.add_function("foo6",foo6);

      for (std::size_t i = 0; i < expression_list_size; ++i)
      {
         expression_t expression;
         expression.register_symbol_table(symbol_table);

         exprtk::parser<T> parser;

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

            result = false;
         }
      }

      if (!result)
         return false;
   }

   return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc08, %rsp            # imm = 0xC08
leaq 0x2f0(%rsp), %r12
leaq 0x1a0(%rsp), %rbp
movq $0x0, 0x50(%rsp)
leaq 0x30(%rsp), %r15
leaq 0x58(%rsp), %r13
leaq 0x2e0(%rsp), %rbx
leaq 0xd0(%rsp), %r14
leaq 0x40(%rsp), %rax
movq %rax, 0x30(%rsp)
movq %r15, %rdi
leaq 0x205509(%rip), %rsi    # 0x3a458b
leaq 0x205961(%rip), %rdx    # 0x3a49ea
callq 0x1e4740
xorps %xmm0, %xmm0
cvtsi2sdq 0x50(%rsp), %xmm0
divsd 0x1ea0e0(%rip), %xmm0   # 0x389180
movapd %xmm0, %xmm1
addsd 0x1e9f74(%rip), %xmm1   # 0x389020
movsd %xmm1, 0x8(%rsp)
addsd 0x1e9f8e(%rip), %xmm0   # 0x389048
movsd %xmm0, (%rsp)
movw $0x100, 0xd8(%rsp)      # imm = 0x100
movq $0x0, 0xe0(%rsp)
movq $-0x1, 0xe8(%rsp)
movq $0x2, 0xf0(%rsp)
leaq 0x39c264(%rip), %rax    # 0x53b358
movq %rax, 0xd0(%rsp)
movq %r13, %rdi
movl $0x1, %esi
callq 0x1e5424
movq %r12, 0x2e0(%rsp)
movq %rbx, %rdi
leaq 0x21da4c(%rip), %rsi    # 0x3bcb67
leaq 0x21da46(%rip), %rdx    # 0x3bcb68
callq 0x1e4740
movq %r13, %rdi
movq %rbx, %rsi
leaq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x1e7f1a
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x19f156
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq %r12, 0x2e0(%rsp)
movq %rbx, %rdi
leaq 0x2096d3(%rip), %rsi    # 0x3a883b
leaq 0x2096cd(%rip), %rdx    # 0x3a883c
callq 0x1e4740
movq %r13, %rdi
movq %rbx, %rsi
movq %rsp, %rdx
xorl %ecx, %ecx
callq 0x1e7f1a
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x19f1a1
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq %r12, 0x2e0(%rsp)
movq %rbx, %rdi
leaq 0x205838(%rip), %rsi    # 0x3a49eb
leaq 0x205838(%rip), %rdx    # 0x3a49f2
callq 0x1e4740
movq %r13, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1e55b2
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x19f1ea
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq %r12, 0x2e0(%rsp)
movq %rbx, %rdi
leaq 0x2057f7(%rip), %rsi    # 0x3a49f3
leaq 0x2057f7(%rip), %rdx    # 0x3a49fa
callq 0x1e4740
movq %r13, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1e55b2
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x19f233
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq %r12, 0x2e0(%rsp)
movq %rbx, %rdi
leaq 0x2057b6(%rip), %rsi    # 0x3a49fb
leaq 0x2057b6(%rip), %rdx    # 0x3a4a02
callq 0x1e4740
movq %r13, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1e55b2
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x19f27c
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq %r12, 0x2e0(%rsp)
movq %rbx, %rdi
leaq 0x205775(%rip), %rsi    # 0x3a4a03
leaq 0x205775(%rip), %rdx    # 0x3a4a0a
callq 0x1e4740
movq %r13, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1e55b2
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x19f2c5
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq %r12, 0x2e0(%rsp)
movq %rbx, %rdi
leaq 0x205734(%rip), %rsi    # 0x3a4a0b
leaq 0x205734(%rip), %rdx    # 0x3a4a12
callq 0x1e4740
movq %r13, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1e55b2
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x19f30e
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq %r12, 0x2e0(%rsp)
movq %rbx, %rdi
leaq 0x2056f3(%rip), %rsi    # 0x3a4a13
leaq 0x2056f3(%rip), %rdx    # 0x3a4a1a
callq 0x1e4740
movq %r13, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1e55b2
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x19f357
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq %r12, 0x2e0(%rsp)
movq %rbx, %rdi
leaq 0x2056b2(%rip), %rsi    # 0x3a4a1b
leaq 0x2056b2(%rip), %rdx    # 0x3a4a22
callq 0x1e4740
movq %r13, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1e55b2
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x19f3a0
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq %r12, 0x2e0(%rsp)
movq %rbx, %rdi
leaq 0x205671(%rip), %rsi    # 0x3a4a23
leaq 0x205671(%rip), %rdx    # 0x3a4a2a
callq 0x1e4740
movq %r13, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1e55b2
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x19f3e9
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq %r12, 0x2e0(%rsp)
movq %rbx, %rdi
leaq 0x205630(%rip), %rsi    # 0x3a4a2b
leaq 0x205630(%rip), %rdx    # 0x3a4a32
callq 0x1e4740
movq %r13, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1e55b2
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x19f432
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq %r12, 0x2e0(%rsp)
movq %rbx, %rdi
leaq 0x2055ef(%rip), %rsi    # 0x3a4a33
leaq 0x2055ef(%rip), %rdx    # 0x3a4a3a
callq 0x1e4740
movq %r13, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1e55b2
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x19f47b
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq %r13, %rdi
callq 0x1e546c
leaq 0x190(%rsp), %r12
leaq 0x10(%rsp), %rdi
callq 0x1e56bc
movq 0x18(%rsp), %rax
movq 0x20(%rsp), %rcx
subq %rax, %rcx
je 0x19f4c8
sarq $0x3, %rcx
movq 0x58(%rsp), %rdx
cmpq $0x1, %rcx
adcq $0x0, %rcx
cmpq %r13, %rax
je 0x19f4d5
cmpq (%rax), %rdx
je 0x19f4d5
addq $0x8, %rax
decq %rcx
jne 0x19f4b5
leaq 0x18(%rsp), %rdi
movq %r13, %rsi
callq 0x1eb0e8
movl $0x7f, %esi
movq %r12, %rdi
callq 0x1e57c8
movq %rbx, %rdi
movq %r12, %rsi
callq 0x1e58c8
leaq 0x290(%rsp), %rdi
callq 0x1eb2ea
leaq 0x260(%rsp), %rdi
callq 0x1eb2ea
leaq 0x230(%rsp), %rdi
callq 0x1eb2ea
leaq 0x200(%rsp), %rdi
callq 0x1eb2ea
leaq 0x1d0(%rsp), %rdi
callq 0x1eb2ea
movq %rbp, %rdi
callq 0x1eb2ea
movq %rbx, %rdi
movq %r15, %rsi
leaq 0x10(%rsp), %rdx
callq 0x1e60ec
testb %al, %al
je 0x19fe9b
movq %r14, %r12
movq %r15, %r14
movq %rbp, %r15
movq %rbx, %rdi
callq 0x1e6d46
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movapd %xmm0, 0xc0(%rsp)
movsd 0x8(%rsp), %xmm0
movsd 0x1e9b0b(%rip), %xmm1   # 0x389090
mulsd %xmm1, %xmm0
callq 0x11e1d0
movapd %xmm0, 0x60(%rsp)
movsd 0x8(%rsp), %xmm0
mulsd 0x1e9aee(%rip), %xmm0   # 0x389090
movsd (%rsp), %xmm1
movaps %xmm1, 0x90(%rsp)
callq 0x11e1d0
movapd 0x90(%rsp), %xmm2
movhpd (%rsp), %xmm2           # xmm2 = xmm2[0],mem[0]
movapd 0x1e9e06(%rip), %xmm1   # 0x3893d0
mulpd %xmm1, %xmm2
movapd 0x60(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
mulpd %xmm2, %xmm1
movapd 0x1e9dfc(%rip), %xmm0   # 0x3893e0
divpd %xmm0, %xmm1
movapd 0x1e9d30(%rip), %xmm0   # 0x389320
addpd %xmm0, %xmm1
movapd %xmm1, 0x60(%rsp)
movsd 0x8(%rsp), %xmm0
mulsd 0x1e9a88(%rip), %xmm0   # 0x389090
callq 0x11e1d0
movapd %xmm0, 0x90(%rsp)
movsd 0x8(%rsp), %xmm0
mulsd 0x1e9a6c(%rip), %xmm0   # 0x389090
movsd (%rsp), %xmm1
movaps %xmm1, 0x80(%rsp)
callq 0x11e1d0
movapd 0x80(%rsp), %xmm1
movhpd (%rsp), %xmm1           # xmm1 = xmm1[0],mem[0]
mulpd 0x1e9d84(%rip), %xmm1   # 0x3893d0
movapd %xmm1, %xmm2
movapd 0x90(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
mulpd %xmm2, %xmm1
divpd 0x1e9d77(%rip), %xmm1   # 0x3893e0
addpd 0x1e9caf(%rip), %xmm1   # 0x389320
movapd %xmm1, 0x90(%rsp)
movsd 0x8(%rsp), %xmm0
mulsd 0x1e9a08(%rip), %xmm0   # 0x389090
callq 0x11e1d0
movapd %xmm0, 0x80(%rsp)
movsd 0x8(%rsp), %xmm0
mulsd 0x1e99ec(%rip), %xmm0   # 0x389090
movsd (%rsp), %xmm1
movaps %xmm1, 0x70(%rsp)
callq 0x11e1d0
movapd 0x70(%rsp), %xmm1
movhpd (%rsp), %xmm1           # xmm1 = xmm1[0],mem[0]
mulpd 0x1e9d0a(%rip), %xmm1   # 0x3893d0
movapd %xmm1, %xmm2
movapd 0x80(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
mulpd %xmm2, %xmm1
divpd 0x1e9cfd(%rip), %xmm1   # 0x3893e0
addpd 0x1e9c35(%rip), %xmm1   # 0x389320
movapd %xmm1, 0x80(%rsp)
movsd 0x8(%rsp), %xmm0
mulsd 0x1e998e(%rip), %xmm0   # 0x389090
callq 0x11e1d0
movapd %xmm0, 0x70(%rsp)
movsd 0x8(%rsp), %xmm0
mulsd 0x1e9975(%rip), %xmm0   # 0x389090
movsd (%rsp), %xmm1
movaps %xmm1, 0xa0(%rsp)
callq 0x11e1d0
movapd 0xa0(%rsp), %xmm1
movhpd (%rsp), %xmm1           # xmm1 = xmm1[0],mem[0]
mulpd 0x1e9c8d(%rip), %xmm1   # 0x3893d0
movapd %xmm1, %xmm2
movapd 0x70(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
mulpd %xmm2, %xmm1
divpd 0x1e9c83(%rip), %xmm1   # 0x3893e0
addpd 0x1e9bbb(%rip), %xmm1   # 0x389320
movapd %xmm1, 0x70(%rsp)
movsd 0x8(%rsp), %xmm0
mulsd 0x1e9917(%rip), %xmm0   # 0x389090
callq 0x11e1d0
movapd %xmm0, 0xa0(%rsp)
movsd 0x8(%rsp), %xmm0
mulsd 0x1e98fb(%rip), %xmm0   # 0x389090
movsd (%rsp), %xmm1
movaps %xmm1, 0xb0(%rsp)
callq 0x11e1d0
movapd 0xa0(%rsp), %xmm5
movapd 0xb0(%rsp), %xmm1
movhpd (%rsp), %xmm1           # xmm1 = xmm1[0],mem[0]
mulpd 0x1e9c0a(%rip), %xmm1   # 0x3893d0
unpcklpd %xmm0, %xmm5            # xmm5 = xmm5[0],xmm0[0]
mulpd %xmm1, %xmm5
divpd 0x1e9c0a(%rip), %xmm5   # 0x3893e0
addpd 0x1e9b42(%rip), %xmm5   # 0x389320
movapd 0x60(%rsp), %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movapd 0x90(%rsp), %xmm1
addsd %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
movapd 0x80(%rsp), %xmm0
addsd %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movapd 0x70(%rsp), %xmm1
addsd %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
addsd %xmm5, %xmm1
unpckhpd %xmm5, %xmm5            # xmm5 = xmm5[1,1]
addsd %xmm1, %xmm5
mulsd 0x1e9868(%rip), %xmm5   # 0x3890a8
movapd 0xc0(%rsp), %xmm4
ucomisd %xmm4, %xmm4
jp 0x19f896
ucomisd %xmm5, %xmm5
jp 0x19f896
movapd %xmm4, %xmm0
subsd %xmm5, %xmm0
movapd 0x1e9afb(%rip), %xmm3   # 0x389360
andpd %xmm3, %xmm0
movapd %xmm4, %xmm1
andpd %xmm3, %xmm1
movapd %xmm5, %xmm2
andpd %xmm3, %xmm2
maxsd %xmm1, %xmm2
maxsd 0x1e979b(%rip), %xmm2   # 0x389020
mulsd 0x1e98b3(%rip), %xmm2   # 0x389140
movb $0x1, %bpl
ucomisd %xmm2, %xmm0
jbe 0x19f8ae
leaq 0x2051c9(%rip), %rdi    # 0x3a4a66
movapd %xmm5, %xmm0
movapd %xmm4, %xmm1
movb $0x2, %al
callq 0x11e080
xorl %ebp, %ebp
leaq 0x10(%rsp), %rdi
callq 0x1e7008
movq %r13, %rdi
callq 0x1e7056
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x19f8dc
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x11e0c0
testb %bpl, %bpl
je 0x19ffdd
movq 0x50(%rsp), %rcx
incq %rcx
movq %rcx, 0x50(%rsp)
cmpq $0x3e8, %rcx            # imm = 0x3E8
movq %r15, %rbp
movq %r14, %r15
movq %r12, %r14
leaq 0x2f0(%rsp), %r12
jne 0x19f06e
leaq 0xe0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x20517b(%rip), %rsi    # 0x3a4a9e
leaq 0x20518a(%rip), %rdx    # 0x3a4ab4
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
callq 0x1e4740
leaq 0xf0(%rsp), %r15
leaq 0x100(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x205160(%rip), %rsi    # 0x3a4ab5
leaq 0x205175(%rip), %rdx    # 0x3a4ad1
movq %r15, %rdi
callq 0x1e4740
leaq 0x110(%rsp), %r15
leaq 0x120(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x205153(%rip), %rsi    # 0x3a4ad2
leaq 0x20516c(%rip), %rdx    # 0x3a4af2
movq %r15, %rdi
callq 0x1e4740
leaq 0x130(%rsp), %r15
leaq 0x140(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x20514a(%rip), %rsi    # 0x3a4af3
leaq 0x205167(%rip), %rdx    # 0x3a4b17
movq %r15, %rdi
callq 0x1e4740
leaq 0x150(%rsp), %r15
leaq 0x160(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x205145(%rip), %rsi    # 0x3a4b18
leaq 0x205166(%rip), %rdx    # 0x3a4b40
movq %r15, %rdi
callq 0x1e4740
leaq 0x170(%rsp), %r15
leaq 0x180(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x205144(%rip), %rsi    # 0x3a4b41
leaq 0x205169(%rip), %rdx    # 0x3a4b6d
movq %r15, %rdi
callq 0x1e4740
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
callq 0x1e5424
leaq 0x2e0(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x205141(%rip), %rsi    # 0x3a4b6e
leaq 0x20513e(%rip), %rdx    # 0x3a4b72
callq 0x1e4740
leaq 0x1d27e1(%rip), %rdx    # 0x372221
leaq 0x10(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
callq 0x3720cc
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x19fa6f
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x2e0(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2050f2(%rip), %rsi    # 0x3a4b73
leaq 0x2050ef(%rip), %rdx    # 0x3a4b77
callq 0x1e4740
leaq 0x1d28e3(%rip), %rdx    # 0x372377
leaq 0x10(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
callq 0x372222
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x19fac3
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x2e0(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2050a3(%rip), %rsi    # 0x3a4b78
leaq 0x2050a0(%rip), %rdx    # 0x3a4b7c
callq 0x1e4740
leaq 0x1d29e9(%rip), %rdx    # 0x3724d1
leaq 0x10(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
callq 0x37237c
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x19fb17
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x2e0(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x205054(%rip), %rsi    # 0x3a4b7d
leaq 0x205051(%rip), %rdx    # 0x3a4b81
callq 0x1e4740
leaq 0x1d2af3(%rip), %rdx    # 0x37262f
leaq 0x10(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
callq 0x3724da
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x19fb6b
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x2e0(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x205005(%rip), %rsi    # 0x3a4b82
leaq 0x205002(%rip), %rdx    # 0x3a4b86
callq 0x1e4740
leaq 0x1d2c01(%rip), %rdx    # 0x372791
leaq 0x10(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
callq 0x37263c
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x19fbbf
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x2e0(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x204fb6(%rip), %rsi    # 0x3a4b87
leaq 0x204fb3(%rip), %rdx    # 0x3a4b8b
callq 0x1e4740
leaq 0x1d2d13(%rip), %rdx    # 0x3728f7
leaq 0x10(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
callq 0x3727a2
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x19fc13
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x1a0(%rsp), %r14
movb $0x1, %al
movl %eax, 0x60(%rsp)
leaq 0x30(%rsp), %r12
leaq 0x190(%rsp), %rbp
xorl %r15d, %r15d
movq %r12, %rdi
callq 0x1e56bc
movq 0x38(%rsp), %rax
movq 0x40(%rsp), %rcx
subq %rax, %rcx
leaq 0x2e0(%rsp), %r13
je 0x19fc79
sarq $0x3, %rcx
movq 0x10(%rsp), %rdx
cmpq $0x1, %rcx
adcq $0x0, %rcx
leaq 0x10(%rsp), %rsi
cmpq %rsi, %rax
je 0x19fc88
cmpq (%rax), %rdx
je 0x19fc88
addq $0x8, %rax
decq %rcx
jne 0x19fc61
leaq 0x38(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x1eb0e8
movl $0x7f, %esi
movq %rbp, %rdi
callq 0x1e57c8
movq %r13, %rdi
movq %rbp, %rbx
movq %rbp, %rsi
callq 0x1e58c8
leaq 0x290(%rsp), %rdi
callq 0x1eb2ea
leaq 0x260(%rsp), %rdi
callq 0x1eb2ea
leaq 0x230(%rsp), %rdi
callq 0x1eb2ea
leaq 0x200(%rsp), %rdi
callq 0x1eb2ea
leaq 0x1d0(%rsp), %rdi
callq 0x1eb2ea
movq %r14, %rbp
movq %r14, %rdi
callq 0x1eb2ea
movq %r15, %rax
shlq $0x5, %rax
leaq (%rsp,%rax), %r14
addq $0xd0, %r14
movq %r13, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x1e60ec
testb %al, %al
jne 0x19fe2d
movq 0x5f8(%rsp), %rdi
cmpq %rdi, 0x618(%rsp)
je 0x19fd72
movq 0x610(%rsp), %rsi
movq %rdi, %rcx
subq 0x600(%rsp), %rcx
movq %rcx, %rax
sarq $0x3, %rax
movabsq $-0x30c30c30c30c30c3, %rdx # imm = 0xCF3CF3CF3CF3CF3D
imulq %rdx, %rax
cmpq $-0xa7, %rcx
jl 0x19fda8
cmpq $0x3, %rax
jb 0x19fdcc
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rdx
shrq %rdx
jmp 0x19fdbe
movq %rbp, %r12
movq %rbp, 0x190(%rsp)
movabsq $0x726f727245206f4e, %rax # imm = 0x726F727245206F4E
movq %rax, 0x1a0(%rsp)
movq $0x8, 0x198(%rsp)
movb $0x0, 0x1a8(%rsp)
movq %rbp, %rsi
jmp 0x19fdf2
notq %rax
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rdx
shrq %rdx
notq %rdx
imulq $-0x1f8, %rdx, %rdi     # imm = 0xFE08
addq (%rsi,%rdx,8), %rdi
addq %rcx, %rdi
movq %rbp, 0x190(%rsp)
movq 0x38(%rdi), %rsi
movq 0x40(%rdi), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x1e7738
movq 0x190(%rsp), %rsi
movq %rbp, %r12
movq (%r14), %rdx
leaq 0x204c3f(%rip), %rdi    # 0x3a4a3b
xorl %eax, %eax
callq 0x11e080
movq 0x190(%rsp), %rdi
cmpq %r12, %rdi
je 0x19fe20
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movl $0x0, 0x60(%rsp)
leaq 0x30(%rsp), %r12
leaq 0x2e0(%rsp), %rdi
callq 0x1e6d46
movq %r12, %rdi
callq 0x1e7008
incq %r15
cmpq $0x6, %r15
movq %rbp, %r14
movq %rbx, %rbp
jne 0x19fc31
leaq 0x10(%rsp), %rdi
callq 0x1e7056
movq $-0xc0, %rbx
leaq 0x180(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rdi, %rax
je 0x19fe88
movq (%rax), %rsi
incq %rsi
movq %rax, %r14
callq 0x11e0c0
movq %r14, %rax
addq $-0x20, %rax
addq $0x20, %rbx
jne 0x19fe6e
movl 0x60(%rsp), %eax
jmp 0x19ffdf
movq 0x5f8(%rsp), %r8
cmpq %r8, 0x618(%rsp)
je 0x19fef6
movq 0x610(%rsp), %rsi
movq %r8, %rcx
subq 0x600(%rsp), %rcx
movq %rcx, %rdx
sarq $0x3, %rdx
movabsq $-0x30c30c30c30c30c3, %rax # imm = 0xCF3CF3CF3CF3CF3D
imulq %rdx, %rax
cmpq $-0xa7, %rcx
jl 0x19ff29
cmpq $0x3, %rax
jb 0x19ff4d
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rdx
shrq %rdx
jmp 0x19ff3f
movq %rbp, 0x190(%rsp)
movabsq $0x726f727245206f4e, %rax # imm = 0x726F727245206F4E
movq %rax, 0x1a0(%rsp)
movq $0x8, 0x198(%rsp)
movb $0x0, 0x1a8(%rsp)
movq %rbp, %rsi
jmp 0x19ff70
notq %rax
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rdx
shrq %rdx
notq %rdx
imulq $-0x1f8, %rdx, %r8      # imm = 0xFE08
addq (%rsi,%rdx,8), %r8
addq %rcx, %r8
leaq 0x190(%rsp), %rdi
movq %rbp, (%rdi)
movq 0x38(%r8), %rsi
movq 0x40(%r8), %rdx
addq %rsi, %rdx
callq 0x1e7738
movq 0x190(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0x204abf(%rip), %rdi    # 0x3a4a3b
xorl %eax, %eax
callq 0x11e080
movq 0x190(%rsp), %rdi
cmpq %rbp, %rdi
je 0x19ffa0
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x2e0(%rsp), %rdi
callq 0x1e6d46
leaq 0x10(%rsp), %rdi
callq 0x1e7008
leaq 0x58(%rsp), %rdi
callq 0x1e7056
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x19ffdd
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x11e0c0
xorl %eax, %eax
andb $0x1, %al
addq $0xc08, %rsp            # imm = 0xC08
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x1a015a
jmp 0x1a0015
jmp 0x1a008e
jmp 0x1a0015
jmp 0x1a008e
jmp 0x1a0015
jmp 0x1a008e
jmp 0x1a0015
jmp 0x1a008e
jmp 0x1a0015
jmp 0x1a008e
movq %rax, %rbx
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x1a00c4
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
jmp 0x1a00c4
jmp 0x1a008e
movq %rax, %rbx
jmp 0x1a00ce
jmp 0x1a0050
jmp 0x1a0050
jmp 0x1a0050
jmp 0x1a0050
movq %rax, %rbx
addq $-0x10, %r15
movq -0x10(%r15), %rdi
cmpq %rdi, %r15
je 0x1a006b
movq (%r15), %rsi
incq %rsi
callq 0x11e0c0
leaq -0x20(%r15), %rax
addq $-0x10, %r15
cmpq %r14, %r15
movq %rax, %r15
jne 0x1a0057
jmp 0x1a01cc
jmp 0x1a0127
jmp 0x1a00aa
jmp 0x1a0093
jmp 0x1a0139
movq %rax, %rbx
jmp 0x1a00c4
movq %rax, %rbx
jmp 0x1a00ba
movq %rax, %rbx
leaq 0x190(%rsp), %rdi
callq 0x1e60a4
jmp 0x1a00ba
movq %rax, %rbx
leaq 0x2e0(%rsp), %rdi
callq 0x1e6d46
leaq 0x30(%rsp), %rdi
callq 0x1e7008
leaq 0x10(%rsp), %rdi
callq 0x1e7056
xorl %r14d, %r14d
leaq 0x180(%rsp), %rcx
movq 0x170(%rsp,%r14), %rdi
leaq (%rcx,%r14), %rax
cmpq %rdi, %rax
je 0x1a00fd
movq (%rax), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x180(%rsp), %rcx
addq $-0x20, %r14
cmpq $-0xc0, %r14
jne 0x1a00d9
jmp 0x1a01cc
jmp 0x1a0139
jmp 0x1a0186
movq %rax, %rbx
leaq 0x190(%rsp), %rdi
callq 0x1e60a4
jmp 0x1a016a
jmp 0x1a0186
movq %rax, %rbx
jmp 0x1a01cc
jmp 0x1a0186
jmp 0x1a0181
jmp 0x1a0186
jmp 0x1a0181
jmp 0x1a0181
movq %rax, %rbx
jmp 0x1a016a
jmp 0x1a0181
jmp 0x1a0181
jmp 0x1a0186
jmp 0x1a0181
jmp 0x1a0186
jmp 0x1a0186
jmp 0x1a0186
jmp 0x1a0186
jmp 0x1a0181
jmp 0x1a0186
jmp 0x1a0181
jmp 0x1a0181
jmp 0x1a0181
jmp 0x1a0181
movq %rax, %rbx
leaq 0x2e0(%rsp), %rdi
callq 0x1e6d46
leaq 0x10(%rsp), %rdi
callq 0x1e7008
jmp 0x1a01a6
jmp 0x1a0181
movq %rax, %rbx
jmp 0x1a01b0
jmp 0x1a0181
jmp 0x1a0186
movq %rax, %rbx
jmp 0x1a01a6
movq %rax, %rbx
movq 0x2e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x1a01a6
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x58(%rsp), %rdi
callq 0x1e7056
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x1a01cc
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq %rbx, %rdi
callq 0x11e330