// File: /workspace/github_cpp_makefile_star2_O1/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 $0xc18, %rsp            # imm = 0xC18
leaq 0x1b0(%rsp), %r12
leaq 0x22c457(%rip), %rbx    # 0x3cd561
leaq 0x58(%rsp), %r13
leaq 0x2f0(%rsp), %r15
leaq 0xc0(%rsp), %r14
leaq 0x1a0(%rsp), %rbp
xorl %ecx, %ecx
movq $0x0, 0x50(%rsp)
movq %rcx, 0xb8(%rsp)
leaq 0x40(%rsp), %rax
movq %rax, 0x30(%rsp)
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
leaq 0x22c86d(%rip), %rdx    # 0x3cd9c0
callq 0x1eabb8
xorps %xmm0, %xmm0
cvtsi2sdq 0x50(%rsp), %xmm0
divsd 0x211016(%rip), %xmm0   # 0x3b2180
movapd %xmm0, %xmm1
addsd 0x210eaa(%rip), %xmm1   # 0x3b2020
movsd %xmm1, 0x8(%rsp)
addsd 0x210ec4(%rip), %xmm0   # 0x3b2048
movsd %xmm0, (%rsp)
movw $0x100, 0xc8(%rsp)      # imm = 0x100
movq $0x0, 0xd0(%rsp)
movq $-0x1, 0xd8(%rsp)
movq $0x2, 0xe0(%rsp)
leaq 0x3d419a(%rip), %rax    # 0x575358
movq %rax, 0xc0(%rsp)
movq %r13, %rdi
movl $0x1, %esi
callq 0x1eb8c4
leaq 0x300(%rsp), %rax
movq %rax, 0x2f0(%rsp)
movq %r15, %rdi
leaq 0x244950(%rip), %rsi    # 0x3e5b3d
leaq 0x24494a(%rip), %rdx    # 0x3e5b3e
callq 0x1eabb8
movq %r13, %rdi
movq %r15, %rsi
leaq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x1ee244
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a1230
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x300(%rsp), %rax
movq %rax, 0x2f0(%rsp)
movq %r15, %rdi
leaq 0x2305c7(%rip), %rsi    # 0x3d1811
leaq 0x2305c1(%rip), %rdx    # 0x3d1812
callq 0x1eabb8
movq %r13, %rdi
movq %r15, %rsi
movq %rsp, %rdx
xorl %ecx, %ecx
callq 0x1ee244
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a128b
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x300(%rsp), %rax
movq %rax, 0x2f0(%rsp)
movq %r15, %rdi
leaq 0x22c71c(%rip), %rsi    # 0x3cd9c1
leaq 0x22c71c(%rip), %rdx    # 0x3cd9c8
callq 0x1eabb8
movq %r13, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x1eba52
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a12e4
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x300(%rsp), %rax
movq %rax, 0x2f0(%rsp)
movq %r15, %rdi
leaq 0x22c6cb(%rip), %rsi    # 0x3cd9c9
leaq 0x22c6cb(%rip), %rdx    # 0x3cd9d0
callq 0x1eabb8
movq %r13, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x1eba52
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a133d
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x300(%rsp), %rax
movq %rax, 0x2f0(%rsp)
movq %r15, %rdi
leaq 0x22c67a(%rip), %rsi    # 0x3cd9d1
leaq 0x22c67a(%rip), %rdx    # 0x3cd9d8
callq 0x1eabb8
movq %r13, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x1eba52
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a1396
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x300(%rsp), %rax
movq %rax, 0x2f0(%rsp)
movq %r15, %rdi
leaq 0x22c629(%rip), %rsi    # 0x3cd9d9
leaq 0x22c629(%rip), %rdx    # 0x3cd9e0
callq 0x1eabb8
movq %r13, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x1eba52
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a13ef
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x300(%rsp), %rax
movq %rax, 0x2f0(%rsp)
movq %r15, %rdi
leaq 0x22c5d8(%rip), %rsi    # 0x3cd9e1
leaq 0x22c5d8(%rip), %rdx    # 0x3cd9e8
callq 0x1eabb8
movq %r13, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x1eba52
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a1448
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x300(%rsp), %rax
movq %rax, 0x2f0(%rsp)
movq %r15, %rdi
leaq 0x22c587(%rip), %rsi    # 0x3cd9e9
leaq 0x22c587(%rip), %rdx    # 0x3cd9f0
callq 0x1eabb8
movq %r13, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x1eba52
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a14a1
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x300(%rsp), %rax
movq %rax, 0x2f0(%rsp)
movq %r15, %rdi
leaq 0x22c536(%rip), %rsi    # 0x3cd9f1
leaq 0x22c536(%rip), %rdx    # 0x3cd9f8
callq 0x1eabb8
movq %r13, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x1eba52
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a14fa
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x300(%rsp), %rax
movq %rax, 0x2f0(%rsp)
movq %r15, %rdi
leaq 0x22c4e5(%rip), %rsi    # 0x3cd9f9
leaq 0x22c4e5(%rip), %rdx    # 0x3cda00
callq 0x1eabb8
movq %r13, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x1eba52
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a1553
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x300(%rsp), %rax
movq %rax, 0x2f0(%rsp)
movq %r15, %rdi
leaq 0x22c494(%rip), %rsi    # 0x3cda01
leaq 0x22c494(%rip), %rdx    # 0x3cda08
callq 0x1eabb8
movq %r13, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x1eba52
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a15ac
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x300(%rsp), %rax
movq %rax, 0x2f0(%rsp)
movq %r15, %rdi
leaq 0x22c443(%rip), %rsi    # 0x3cda09
leaq 0x22c443(%rip), %rdx    # 0x3cda10
callq 0x1eabb8
movq %r13, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x1eba52
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a1605
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq %r13, %rdi
callq 0x1eb90c
leaq 0x10(%rsp), %rdi
callq 0x1ebb7a
movq 0x18(%rsp), %rcx
movq 0x20(%rsp), %rax
subq %rcx, %rax
je 0x1a1673
sarq $0x3, %rax
cmpq $0x1, %rax
movq %rax, %rdi
adcq $0x0, %rdi
cmpq %r13, %rcx
je 0x1a1680
movq 0x58(%rsp), %rdx
cmpq (%rcx), %rdx
je 0x1a1680
addq $0x8, %rcx
movl $0x1, %esi
subq %rdi, %rsi
xorl %edi, %edi
cmpq %rdi, %rsi
je 0x1a1673
decq %rdi
cmpq %r13, %rcx
je 0x1a166b
leaq 0x8(%rcx), %r8
cmpq (%rcx), %rdx
movq %r8, %rcx
jne 0x1a1652
negq %rdi
cmpq %rax, %rdi
jb 0x1a1680
leaq 0x18(%rsp), %rdi
movq %r13, %rsi
callq 0x1f216a
movl $0x7f, %esi
movq %rbp, %rdi
callq 0x1ebc94
movq %rbp, %rsi
movq %r15, %rdi
callq 0x1ebd94
leaq 0x2a0(%rsp), %rdi
callq 0x1f236c
leaq 0x270(%rsp), %rdi
callq 0x1f236c
leaq 0x240(%rsp), %rdi
callq 0x1f236c
leaq 0x210(%rsp), %rdi
callq 0x1f236c
leaq 0x1e0(%rsp), %rdi
callq 0x1f236c
movq %r12, %r14
movq %r12, %rdi
callq 0x1f236c
movq %r15, %rdi
leaq 0x30(%rsp), %rsi
leaq 0x10(%rsp), %rdx
callq 0x1ec5b8
movl %eax, %r12d
testb %al, %al
je 0x1a170a
movq %r15, %rdi
callq 0x1ed044
jmp 0x1a1826
movq 0x608(%rsp), %rdi
cmpq %rdi, 0x628(%rsp)
je 0x1a1759
movq %rdi, %rcx
subq 0x610(%rsp), %rcx
movq %rcx, %rax
sarq $0x3, %rax
movabsq $-0x30c30c30c30c30c3, %rdx # imm = 0xCF3CF3CF3CF3CF3D
imulq %rdx, %rax
cmpq $0x3, %rax
jb 0x1a17b8
testq %rcx, %rcx
jle 0x1a178c
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rdx
shrq %rdx
jmp 0x1a17a2
movq %r14, %rbx
movq %r14, 0x1a0(%rsp)
movabsq $0x726f727245206f4e, %rax # imm = 0x726F727245206F4E
movq %rax, 0x1b0(%rsp)
movq $0x8, 0x1a8(%rsp)
movb $0x0, 0x1b8(%rsp)
jmp 0x1a17d6
notq %rax
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rdx
shrq %rdx
notq %rdx
movq 0x620(%rsp), %rax
imulq $-0x1f8, %rdx, %rdi     # imm = 0xFE08
addq (%rax,%rdx,8), %rdi
addq %rcx, %rdi
movq %r14, %rbx
movq %r14, 0x1a0(%rsp)
movq 0x38(%rdi), %rsi
movq 0x40(%rdi), %rdx
addq %rsi, %rdx
movq %rbp, %rdi
callq 0x1eda34
movq 0x1a0(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0x22c227(%rip), %rdi    # 0x3cda11
xorl %eax, %eax
callq 0x120080
movq 0x1a0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1a180e
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq %r15, %rdi
callq 0x1ed044
testb %r12b, %r12b
leaq 0x22bd41(%rip), %rbx    # 0x3cd561
je 0x1a1bdd
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movapd %xmm0, 0x190(%rsp)
movsd 0x8(%rsp), %xmm0
movsd 0x210844(%rip), %xmm1   # 0x3b2090
mulsd %xmm1, %xmm0
callq 0x1201d0
movapd %xmm0, 0x60(%rsp)
movsd 0x8(%rsp), %xmm0
mulsd 0x210827(%rip), %xmm0   # 0x3b2090
movsd (%rsp), %xmm1
movaps %xmm1, 0x90(%rsp)
callq 0x1201d0
movapd 0x90(%rsp), %xmm2
movhpd (%rsp), %xmm2           # xmm2 = xmm2[0],mem[0]
movapd 0x210b4f(%rip), %xmm1   # 0x3b23e0
mulpd %xmm1, %xmm2
movapd 0x60(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
mulpd %xmm2, %xmm1
movapd 0x210b45(%rip), %xmm0   # 0x3b23f0
divpd %xmm0, %xmm1
movapd 0x210a79(%rip), %xmm0   # 0x3b2330
addpd %xmm0, %xmm1
movapd %xmm1, 0x60(%rsp)
movsd 0x8(%rsp), %xmm0
mulsd 0x2107c1(%rip), %xmm0   # 0x3b2090
callq 0x1201d0
movapd %xmm0, 0x90(%rsp)
movsd 0x8(%rsp), %xmm0
mulsd 0x2107a5(%rip), %xmm0   # 0x3b2090
movsd (%rsp), %xmm1
movaps %xmm1, 0x80(%rsp)
callq 0x1201d0
movapd 0x80(%rsp), %xmm1
movhpd (%rsp), %xmm1           # xmm1 = xmm1[0],mem[0]
mulpd 0x210acd(%rip), %xmm1   # 0x3b23e0
movapd %xmm1, %xmm2
movapd 0x90(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
mulpd %xmm2, %xmm1
divpd 0x210ac0(%rip), %xmm1   # 0x3b23f0
addpd 0x2109f8(%rip), %xmm1   # 0x3b2330
movapd %xmm1, 0x90(%rsp)
movsd 0x8(%rsp), %xmm0
mulsd 0x210741(%rip), %xmm0   # 0x3b2090
callq 0x1201d0
movapd %xmm0, 0x80(%rsp)
movsd 0x8(%rsp), %xmm0
mulsd 0x210725(%rip), %xmm0   # 0x3b2090
movsd (%rsp), %xmm1
movaps %xmm1, 0x70(%rsp)
callq 0x1201d0
movapd 0x70(%rsp), %xmm1
movhpd (%rsp), %xmm1           # xmm1 = xmm1[0],mem[0]
mulpd 0x210a53(%rip), %xmm1   # 0x3b23e0
movapd %xmm1, %xmm2
movapd 0x80(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
mulpd %xmm2, %xmm1
divpd 0x210a46(%rip), %xmm1   # 0x3b23f0
addpd 0x21097e(%rip), %xmm1   # 0x3b2330
movapd %xmm1, 0x80(%rsp)
movsd 0x8(%rsp), %xmm0
mulsd 0x2106c7(%rip), %xmm0   # 0x3b2090
callq 0x1201d0
movapd %xmm0, 0x70(%rsp)
movsd 0x8(%rsp), %xmm0
mulsd 0x2106ae(%rip), %xmm0   # 0x3b2090
movsd (%rsp), %xmm1
movaps %xmm1, 0xa0(%rsp)
callq 0x1201d0
movapd 0xa0(%rsp), %xmm1
movhpd (%rsp), %xmm1           # xmm1 = xmm1[0],mem[0]
mulpd 0x2109d6(%rip), %xmm1   # 0x3b23e0
movapd %xmm1, %xmm2
movapd 0x70(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
mulpd %xmm2, %xmm1
divpd 0x2109cc(%rip), %xmm1   # 0x3b23f0
addpd 0x210904(%rip), %xmm1   # 0x3b2330
movapd %xmm1, 0x70(%rsp)
movsd 0x8(%rsp), %xmm0
mulsd 0x210650(%rip), %xmm0   # 0x3b2090
callq 0x1201d0
movapd %xmm0, 0xa0(%rsp)
movsd 0x8(%rsp), %xmm0
mulsd 0x210634(%rip), %xmm0   # 0x3b2090
movsd (%rsp), %xmm1
movaps %xmm1, 0x180(%rsp)
callq 0x1201d0
movapd 0xa0(%rsp), %xmm5
movapd 0x180(%rsp), %xmm1
movhpd (%rsp), %xmm1           # xmm1 = xmm1[0],mem[0]
mulpd 0x210953(%rip), %xmm1   # 0x3b23e0
unpcklpd %xmm0, %xmm5            # xmm5 = xmm5[0],xmm0[0]
mulpd %xmm1, %xmm5
divpd 0x210953(%rip), %xmm5   # 0x3b23f0
addpd 0x21088b(%rip), %xmm5   # 0x3b2330
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 0x2105a1(%rip), %xmm5   # 0x3b20a8
movapd 0x190(%rsp), %xmm4
ucomisd %xmm4, %xmm4
movb $0x1, %r12b
jp 0x1a1b5f
ucomisd %xmm5, %xmm5
jp 0x1a1b5f
movapd %xmm4, %xmm0
subsd %xmm5, %xmm0
movapd 0x210841(%rip), %xmm3   # 0x3b2370
andpd %xmm3, %xmm0
movapd %xmm4, %xmm1
andpd %xmm3, %xmm1
movapd %xmm5, %xmm2
andpd %xmm3, %xmm2
maxsd %xmm1, %xmm2
maxsd 0x2104d1(%rip), %xmm2   # 0x3b2020
mulsd 0x2105e9(%rip), %xmm2   # 0x3b2140
ucomisd %xmm2, %xmm0
seta %r12b
testb %r12b, %r12b
je 0x1a1b7a
leaq 0x22bed1(%rip), %rdi    # 0x3cda3c
movapd %xmm5, %xmm0
movapd %xmm4, %xmm1
movb $0x2, %al
callq 0x120080
leaq 0x10(%rsp), %rdi
callq 0x1ed306
movq %r13, %rdi
callq 0x1ed354
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x1a1ba8
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x1200c0
testb %r12b, %r12b
jne 0x1a1c0d
movq 0x50(%rsp), %rax
cmpq $0x3e7, %rax            # imm = 0x3E7
leaq 0x1(%rax), %rax
setae %cl
movq %rax, 0x50(%rsp)
cmpq $0x3e8, %rax            # imm = 0x3E8
movq %r14, %r12
leaq 0xc0(%rsp), %r14
jne 0x1a1132
jmp 0x1a1c1b
leaq 0x10(%rsp), %rdi
callq 0x1ed306
leaq 0x58(%rsp), %rdi
callq 0x1ed354
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x1a1c0d
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x1200c0
testb $0x1, 0xb8(%rsp)
je 0x1a222a
leaq 0xd0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x22be46(%rip), %rsi    # 0x3cda74
leaq 0x22be55(%rip), %rdx    # 0x3cda8a
leaq 0xc0(%rsp), %r12
movq %r12, %rdi
callq 0x1eabb8
leaq 0xe0(%rsp), %r14
leaq 0xf0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x22be2b(%rip), %rsi    # 0x3cda8b
leaq 0x22be40(%rip), %rdx    # 0x3cdaa7
movq %r14, %rdi
callq 0x1eabb8
leaq 0x100(%rsp), %r14
leaq 0x110(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x22be1e(%rip), %rsi    # 0x3cdaa8
leaq 0x22be37(%rip), %rdx    # 0x3cdac8
movq %r14, %rdi
callq 0x1eabb8
leaq 0x120(%rsp), %r14
leaq 0x130(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x22be15(%rip), %rsi    # 0x3cdac9
leaq 0x22be32(%rip), %rdx    # 0x3cdaed
movq %r14, %rdi
callq 0x1eabb8
leaq 0x140(%rsp), %r14
leaq 0x150(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x22be10(%rip), %rsi    # 0x3cdaee
leaq 0x22be31(%rip), %rdx    # 0x3cdb16
movq %r14, %rdi
callq 0x1eabb8
leaq 0x160(%rsp), %r14
leaq 0x170(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x22be0f(%rip), %rsi    # 0x3cdb17
leaq 0x22be34(%rip), %rdx    # 0x3cdb43
movq %r14, %rdi
callq 0x1eabb8
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
callq 0x1eb8c4
leaq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
movq %rax, (%rdi)
leaq 0x22be04(%rip), %rsi    # 0x3cdb44
leaq 0x22be01(%rip), %rdx    # 0x3cdb48
callq 0x1eabb8
leaq 0x1f8b10(%rip), %rdx    # 0x39a863
leaq 0x10(%rsp), %rdi
leaq 0x2f0(%rsp), %rsi
callq 0x39a6e6
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a1d8a
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
movq %rax, (%rdi)
leaq 0x22bda5(%rip), %rsi    # 0x3cdb49
leaq 0x22bda2(%rip), %rdx    # 0x3cdb4d
callq 0x1eabb8
leaq 0x1f8c2a(%rip), %rdx    # 0x39a9e1
leaq 0x10(%rsp), %rdi
leaq 0x2f0(%rsp), %rsi
callq 0x39a864
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a1dee
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
movq %rax, (%rdi)
leaq 0x22bd46(%rip), %rsi    # 0x3cdb4e
leaq 0x22bd43(%rip), %rdx    # 0x3cdb52
callq 0x1eabb8
leaq 0x1f8d48(%rip), %rdx    # 0x39ab63
leaq 0x10(%rsp), %rdi
leaq 0x2f0(%rsp), %rsi
callq 0x39a9e6
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a1e52
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
movq %rax, (%rdi)
leaq 0x22bce7(%rip), %rsi    # 0x3cdb53
leaq 0x22bce4(%rip), %rdx    # 0x3cdb57
callq 0x1eabb8
leaq 0x1f8e6a(%rip), %rdx    # 0x39ace9
leaq 0x10(%rsp), %rdi
leaq 0x2f0(%rsp), %rsi
callq 0x39ab6c
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a1eb6
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
movq %rax, (%rdi)
leaq 0x22bc88(%rip), %rsi    # 0x3cdb58
leaq 0x22bc85(%rip), %rdx    # 0x3cdb5c
callq 0x1eabb8
leaq 0x1f8f90(%rip), %rdx    # 0x39ae73
leaq 0x10(%rsp), %rdi
leaq 0x2f0(%rsp), %rsi
callq 0x39acf6
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a1f1a
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
movq %rax, (%rdi)
leaq 0x22bc29(%rip), %rsi    # 0x3cdb5d
leaq 0x22bc26(%rip), %rdx    # 0x3cdb61
callq 0x1eabb8
leaq 0x1f90ba(%rip), %rdx    # 0x39b001
leaq 0x10(%rsp), %rdi
leaq 0x2f0(%rsp), %rsi
callq 0x39ae84
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a1f7e
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x1b0(%rsp), %r14
movb $0x1, %al
movl %eax, 0x60(%rsp)
leaq 0x30(%rsp), %r12
leaq 0x1a0(%rsp), %rbp
xorl %r13d, %r13d
movq %r12, %rdi
callq 0x1ebb7a
movq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rax
subq %rcx, %rax
leaq 0x2f0(%rsp), %rbx
je 0x1a2012
sarq $0x3, %rax
cmpq $0x1, %rax
movq %rax, %rdi
adcq $0x0, %rdi
leaq 0x10(%rsp), %rdx
cmpq %rdx, %rcx
je 0x1a2021
movq 0x10(%rsp), %rdx
cmpq (%rcx), %rdx
je 0x1a2021
addq $0x8, %rcx
movl $0x1, %esi
subq %rdi, %rsi
xorl %edi, %edi
cmpq %rdi, %rsi
je 0x1a2012
decq %rdi
leaq 0x10(%rsp), %r8
cmpq %r8, %rcx
je 0x1a200a
leaq 0x8(%rcx), %r8
cmpq (%rcx), %rdx
movq %r8, %rcx
jne 0x1a1fec
negq %rdi
cmpq %rax, %rdi
jb 0x1a2021
leaq 0x38(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x1f216a
movl $0x7f, %esi
movq %rbp, %rdi
callq 0x1ebc94
movq %rbx, %rdi
movq %rbp, %r15
movq %rbp, %rsi
callq 0x1ebd94
leaq 0x2a0(%rsp), %rdi
callq 0x1f236c
leaq 0x270(%rsp), %rdi
callq 0x1f236c
leaq 0x240(%rsp), %rdi
callq 0x1f236c
leaq 0x210(%rsp), %rdi
callq 0x1f236c
leaq 0x1e0(%rsp), %rdi
callq 0x1f236c
movq %r14, %rbp
movq %r14, %rdi
callq 0x1f236c
movq %r13, %rax
shlq $0x5, %rax
leaq (%rsp,%rax), %r14
addq $0xc0, %r14
movq %rbx, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x1ec5b8
testb %al, %al
jne 0x1a21bf
movq 0x608(%rsp), %rdi
cmpq %rdi, 0x628(%rsp)
je 0x1a20ff
movq %rdi, %rcx
subq 0x610(%rsp), %rcx
movq %rcx, %rax
sarq $0x3, %rax
movabsq $-0x30c30c30c30c30c3, %rdx # imm = 0xCF3CF3CF3CF3CF3D
imulq %rdx, %rax
cmpq $0x3, %rax
jb 0x1a215e
testq %rcx, %rcx
jle 0x1a2132
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rdx
shrq %rdx
jmp 0x1a2148
movq %rbp, %r12
movq %rbp, 0x1a0(%rsp)
movabsq $0x726f727245206f4e, %rax # imm = 0x726F727245206F4E
movq %rax, 0x1b0(%rsp)
movq $0x8, 0x1a8(%rsp)
movb $0x0, 0x1b8(%rsp)
jmp 0x1a217c
notq %rax
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rdx
shrq %rdx
notq %rdx
movq 0x620(%rsp), %rax
imulq $-0x1f8, %rdx, %rdi     # imm = 0xFE08
addq (%rax,%rdx,8), %rdi
addq %rcx, %rdi
movq %rbp, %r12
movq %rbp, 0x1a0(%rsp)
movq 0x38(%rdi), %rsi
movq 0x40(%rdi), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x1eda34
movq 0x1a0(%rsp), %rsi
movq (%r14), %rdx
leaq 0x22b883(%rip), %rdi    # 0x3cda11
xorl %eax, %eax
callq 0x120080
movq 0x1a0(%rsp), %rdi
cmpq %r12, %rdi
je 0x1a21b2
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x1200c0
movl $0x0, 0x60(%rsp)
leaq 0x30(%rsp), %r12
leaq 0x2f0(%rsp), %rdi
callq 0x1ed044
movq %r12, %rdi
callq 0x1ed306
incq %r13
cmpq $0x6, %r13
movq %rbp, %r14
movq %r15, %rbp
jne 0x1a1f9c
leaq 0x10(%rsp), %rdi
callq 0x1ed354
movq $-0xc0, %rbx
leaq 0x170(%rsp), %rax
movl 0x60(%rsp), %ebp
movq -0x10(%rax), %rdi
cmpq %rdi, %rax
je 0x1a221e
movq (%rax), %rsi
incq %rsi
movq %rax, %r14
callq 0x1200c0
movq %r14, %rax
addq $-0x20, %rax
addq $0x20, %rbx
jne 0x1a2204
jmp 0x1a222c
xorl %ebp, %ebp
andb $0x1, %bpl
movl %ebp, %eax
addq $0xc18, %rsp            # imm = 0xC18
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x1a2267
jmp 0x1a23de
jmp 0x1a2267
jmp 0x1a23de
jmp 0x1a2267
jmp 0x1a23de
jmp 0x1a2267
jmp 0x1a23de
jmp 0x1a2267
jmp 0x1a23de
movq %rax, %rbx
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a2414
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
jmp 0x1a2414
jmp 0x1a23de
movq %rax, %rbx
jmp 0x1a241e
jmp 0x1a22ad
jmp 0x1a22ad
jmp 0x1a22ad
jmp 0x1a22ad
movq %rax, %rbx
cmpq %r14, %r12
je 0x1a245a
addq $-0x10, %r14
leaq 0xc0(%rsp), %r15
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x1a22d9
movq (%r14), %rsi
incq %rsi
callq 0x1200c0
leaq -0x20(%r14), %rax
addq $-0x10, %r14
cmpq %r15, %r14
movq %rax, %r14
jne 0x1a22c5
jmp 0x1a245a
movq %rax, %rbx
movq %r12, %r14
jmp 0x1a22b0
jmp 0x1a2328
jmp 0x1a23fa
jmp 0x1a23a3
jmp 0x1a23a3
jmp 0x1a2374
jmp 0x1a239e
jmp 0x1a2374
jmp 0x1a239e
jmp 0x1a2374
jmp 0x1a239e
jmp 0x1a2374
jmp 0x1a239e
movq %rax, %rbx
jmp 0x1a23ba
movq %rax, %rbx
leaq 0x2f0(%rsp), %rdi
callq 0x1ed044
jmp 0x1a23a6
jmp 0x1a239e
jmp 0x1a239e
jmp 0x1a2374
jmp 0x1a239e
jmp 0x1a2374
jmp 0x1a239e
jmp 0x1a2374
jmp 0x1a239e
jmp 0x1a2374
movq %rax, %rbx
jmp 0x1a245a
movq %rax, %rbx
leaq 0x1a0(%rsp), %rdi
callq 0x1ec570
jmp 0x1a23a6
jmp 0x1a239e
jmp 0x1a2374
jmp 0x1a239e
jmp 0x1a2374
jmp 0x1a239e
jmp 0x1a2374
jmp 0x1a239e
movq %rax, %rbx
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1a23b0
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x1200c0
jmp 0x1a23b0
movq %rax, %rbx
jmp 0x1a23b0
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x1ed306
leaq 0x58(%rsp), %rdi
callq 0x1ed354
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x1a245a
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x1200c0
jmp 0x1a245a
jmp 0x1a23e3
movq %rax, %rbx
jmp 0x1a2414
movq %rax, %rbx
jmp 0x1a240a
movq %rax, %rbx
leaq 0x1a0(%rsp), %rdi
callq 0x1ec570
jmp 0x1a240a
movq %rax, %rbx
leaq 0x2f0(%rsp), %rdi
callq 0x1ed044
leaq 0x30(%rsp), %rdi
callq 0x1ed306
leaq 0x10(%rsp), %rdi
callq 0x1ed354
xorl %r14d, %r14d
leaq 0x170(%rsp), %rcx
movq 0x160(%rsp,%r14), %rdi
leaq (%rcx,%r14), %rax
cmpq %rdi, %rax
je 0x1a244d
movq (%rax), %rsi
incq %rsi
callq 0x1200c0
leaq 0x170(%rsp), %rcx
addq $-0x20, %r14
cmpq $-0xc0, %r14
jne 0x1a2429
movq %rbx, %rdi
callq 0x120330