// File: /workspace/github_cpp_makefile_star2_O3/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:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb48, %rsp            # imm = 0xB48
movb 0x3c06ae(%rip), %al     # 0x56dcb0
testb %al, %al
je 0x1ae369
movabsq $0x403e000000000000, %rax # imm = 0x403E000000000000
movq %rax, 0x70(%rsp)
movabsq $0x404e000000000000, %rax # imm = 0x404E000000000000
movq %rax, 0x18(%rsp)
movw $0x100, %ax             # imm = 0x100
movw %ax, 0xb0(%rsp)
xorl %ecx, %ecx
movq %rcx, 0xb8(%rsp)
movq $-0x1, %rdx
movq %rdx, 0xc0(%rsp)
movl $0x1, %esi
movq %rsi, 0xc8(%rsp)
leaq 0x38e35f(%rip), %rdi    # 0x53b9c0
movq %rdi, 0xa8(%rsp)
movw %ax, 0x88(%rsp)
movq %rcx, 0x90(%rsp)
movq %rdx, 0x98(%rsp)
movq %rsi, 0xa0(%rsp)
leaq 0x38e410(%rip), %rax    # 0x53baa0
movq %rax, 0x80(%rsp)
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
callq 0x1e5424
leaq 0x20(%rsp), %rdi
movl $0x1, %esi
callq 0x1e5424
leaq 0x230(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x200961(%rip), %rsi    # 0x3ae02a
leaq 0x20095f(%rip), %rdx    # 0x3ae02f
leaq 0x220(%rsp), %rdi
callq 0x1e4740
leaq 0x10(%rsp), %rdi
leaq 0x220(%rsp), %rsi
leaq 0x70(%rsp), %rdx
xorl %ecx, %ecx
callq 0x1e7f1a
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0x1ad71b
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
movq %rax, (%rdi)
leaq 0x2008fb(%rip), %rsi    # 0x3ae030
leaq 0x2008f9(%rip), %rdx    # 0x3ae035
callq 0x1e4740
leaq 0x20(%rsp), %rdi
leaq 0x220(%rsp), %rsi
leaq 0x18(%rsp), %rdx
xorl %ecx, %ecx
callq 0x1e7f1a
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0x1ad77f
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
movq %rax, (%rdi)
leaq 0x20089f(%rip), %rsi    # 0x3ae038
leaq 0x2008a0(%rip), %rdx    # 0x3ae040
callq 0x1e4740
leaq 0x10(%rsp), %r14
leaq 0x220(%rsp), %rsi
leaq 0xa8(%rsp), %rdx
movq %r14, %rdi
callq 0x1e55b2
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0x1ad7e7
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
movq %rax, (%rdi)
leaq 0x200835(%rip), %rsi    # 0x3ae036
leaq 0x200838(%rip), %rdx    # 0x3ae040
callq 0x1e4740
leaq 0x20(%rsp), %rbx
leaq 0x220(%rsp), %rsi
leaq 0x80(%rsp), %rdx
movq %rbx, %rdi
callq 0x1e55b2
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0x1ad84f
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x50(%rsp), %rdi
callq 0x1e56bc
leaq 0x58(%rsp), %r15
movq (%r15), %rax
movq 0x8(%r15), %rcx
movq %rcx, %rdx
subq %rax, %rdx
je 0x1ad894
sarq $0x3, %rdx
movq 0x10(%rsp), %rsi
cmpq $0x1, %rdx
adcq $0x0, %rdx
movq %rax, %rdi
cmpq %r14, %rdi
je 0x1ad8ab
cmpq (%rdi), %rsi
je 0x1ad8ab
addq $0x8, %rdi
decq %rdx
jne 0x1ad881
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x1eb0e8
movq 0x58(%rsp), %rax
movq 0x60(%rsp), %rcx
subq %rax, %rcx
je 0x1ad8d4
sarq $0x3, %rcx
movq 0x20(%rsp), %rdx
cmpq $0x1, %rcx
adcq $0x0, %rcx
cmpq %rbx, %rax
je 0x1ad8e1
cmpq (%rax), %rdx
je 0x1ad8e1
addq $0x8, %rax
decq %rcx
jne 0x1ad8c1
leaq 0x20(%rsp), %rsi
movq %r15, %rdi
callq 0x1eb0e8
leaq 0xe0(%rsp), %rbx
leaq 0x40(%rsp), %r14
movq $0x0, 0x78(%rsp)
leaq 0xd0(%rsp), %r15
leaq 0x220(%rsp), %r13
leaq 0x30(%rsp), %rbp
movq $0x0, 0x28(%rsp)
movl $0x7f, %esi
movq %r15, %rdi
callq 0x1e57c8
movq %r13, %rdi
movq %r15, %rsi
callq 0x1e58c8
leaq 0x1d0(%rsp), %rdi
callq 0x1eb2ea
leaq 0x1a0(%rsp), %rdi
callq 0x1eb2ea
leaq 0x170(%rsp), %rdi
callq 0x1eb2ea
leaq 0x140(%rsp), %rdi
callq 0x1eb2ea
leaq 0x110(%rsp), %rdi
callq 0x1eb2ea
movq %rbx, %rdi
callq 0x1eb2ea
movq %rbx, 0xd0(%rsp)
movq %r15, %rdi
leaq 0x1e0247(%rip), %rsi    # 0x38dbcf
leaq 0x1e0243(%rip), %rdx    # 0x38dbd2
callq 0x1e4740
movq %r14, 0x30(%rsp)
movq %rbp, %rdi
leaq 0x200695(%rip), %rsi    # 0x3ae038
leaq 0x200696(%rip), %rdx    # 0x3ae040
callq 0x1e4740
cmpb $0x1, 0x2f0(%rsp)
jne 0x1ada80
movq 0xd0(%rsp), %rbp
movq 0xd8(%rsp), %rbx
movb $0x1, %cl
xorl %r13d, %r13d
movb %cl, 0xf(%rsp)
movq %r13, %rax
shlq $0x5, %rax
leaq 0x39297c(%rip), %rcx    # 0x540360
cmpq 0x8(%rax,%rcx), %rbx
jne 0x1ada27
testq %rbx, %rbx
je 0x1ada3d
leaq 0x392969(%rip), %rcx    # 0x540360
addq %rcx, %rax
movq (%rax), %r15
xorl %r14d, %r14d
movsbl (%rbp,%r14), %edi
callq 0x11e450
movl %eax, %r12d
movsbl (%r15,%r14), %edi
callq 0x11e450
cmpl %eax, %r12d
jne 0x1ada27
incq %r14
cmpq %r14, %rbx
jne 0x1ada00
jmp 0x1ada3d
cmpq $0x20, %r13
leaq 0x1(%r13), %rax
setb %cl
movq %rax, %r13
cmpq $0x21, %rax
jne 0x1ad9d2
jmp 0x1ada41
movb 0xf(%rsp), %cl
testb $0x1, %cl
leaq 0xe0(%rsp), %rbx
leaq 0x40(%rsp), %r14
leaq 0xd0(%rsp), %r15
leaq 0x220(%rsp), %r13
leaq 0x30(%rsp), %rbp
jne 0x1ada80
leaq 0x948(%rsp), %rdi
movq %r15, %rsi
movq %rbp, %rdx
movl $0x8, %ecx
callq 0x1f6322
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x1ada97
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq 0xd0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1adab4
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq %rbx, 0xd0(%rsp)
movq %r15, %rdi
leaq 0x1e00fe(%rip), %rsi    # 0x38dbc4
leaq 0x1e00fa(%rip), %rdx    # 0x38dbc7
callq 0x1e4740
movq %r14, 0x30(%rsp)
movq %rbp, %rdi
leaq 0x200555(%rip), %rsi    # 0x3ae036
leaq 0x200558(%rip), %rdx    # 0x3ae040
callq 0x1e4740
cmpb $0x1, 0x2f0(%rsp)
jne 0x1adbbe
movq 0xd0(%rsp), %rbp
movq 0xd8(%rsp), %rbx
movb $0x1, %cl
xorl %r13d, %r13d
movb %cl, 0xf(%rsp)
movq %r13, %rax
shlq $0x5, %rax
leaq 0x39283e(%rip), %rcx    # 0x540360
cmpq 0x8(%rax,%rcx), %rbx
jne 0x1adb65
testq %rbx, %rbx
je 0x1adb7b
leaq 0x39282b(%rip), %rcx    # 0x540360
addq %rcx, %rax
movq (%rax), %r15
xorl %r14d, %r14d
movsbl (%rbp,%r14), %edi
callq 0x11e450
movl %eax, %r12d
movsbl (%r15,%r14), %edi
callq 0x11e450
cmpl %eax, %r12d
jne 0x1adb65
incq %r14
cmpq %r14, %rbx
jne 0x1adb3e
jmp 0x1adb7b
cmpq $0x20, %r13
leaq 0x1(%r13), %rax
setb %cl
movq %rax, %r13
cmpq $0x21, %rax
jne 0x1adb10
jmp 0x1adb7f
movb 0xf(%rsp), %cl
testb $0x1, %cl
leaq 0xe0(%rsp), %rbx
leaq 0x40(%rsp), %r14
leaq 0xd0(%rsp), %r15
leaq 0x220(%rsp), %r13
leaq 0x30(%rsp), %rbp
jne 0x1adbbe
leaq 0x948(%rsp), %rdi
movq %r15, %rsi
movq %rbp, %rdx
movl $0x8, %ecx
callq 0x1f6322
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x1adbd5
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq 0xd0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1adbf2
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq 0x28(%rsp), %r12
shlq $0x5, %r12
leaq 0x3bfeae(%rip), %rax    # 0x56dab0
addq %rax, %r12
movq %r13, %rdi
movq %r12, %rsi
leaq 0x50(%rsp), %rdx
callq 0x1e60ec
testb %al, %al
je 0x1ae099
movq %r13, %rdi
callq 0x1e6d46
movq 0x50(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
ucomisd 0x1db3e4(%rip), %xmm0   # 0x389020
jne 0x1ae0f8
jp 0x1ae0f8
movq 0x28(%rsp), %rcx
incq %rcx
movq %rcx, 0x28(%rsp)
cmpq $0x10, %rcx
jne 0x1ad915
movq 0x78(%rsp), %rcx
incq %rcx
movq %rcx, 0x78(%rsp)
cmpq $0x64, %rcx
jne 0x1ad90c
leaq 0x50(%rsp), %rdi
callq 0x1e7008
leaq 0x20(%rsp), %rdi
callq 0x1e7056
leaq 0x10(%rsp), %rdi
callq 0x1e7056
movabsq $0x403e000000000000, %rax # imm = 0x403E000000000000
movq %rax, 0x30(%rsp)
movabsq $0x404e000000000000, %rax # imm = 0x404E000000000000
movq %rax, 0x70(%rsp)
movw $0x100, %ax             # imm = 0x100
movw %ax, 0xb0(%rsp)
xorl %ecx, %ecx
movq %rcx, 0xb8(%rsp)
movq $-0x1, %rdx
movq %rdx, 0xc0(%rsp)
movl $0x1, %esi
movq %rsi, 0xc8(%rsp)
leaq 0x38dcd5(%rip), %rdi    # 0x53b9c0
movq %rdi, 0xa8(%rsp)
movw %ax, 0x88(%rsp)
movq %rcx, 0x90(%rsp)
movq %rdx, 0x98(%rsp)
movq %rsi, 0xa0(%rsp)
leaq 0x38dd86(%rip), %rax    # 0x53baa0
movq %rax, 0x80(%rsp)
leaq 0x18(%rsp), %rdi
movl $0x1, %esi
callq 0x1e5424
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
callq 0x1e5424
leaq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
movq %rax, (%rdi)
leaq 0x2002d0(%rip), %rsi    # 0x3ae02a
leaq 0x2002ce(%rip), %rdx    # 0x3ae02f
callq 0x1e4740
leaq 0x18(%rsp), %rdi
leaq 0x220(%rsp), %rsi
leaq 0x30(%rsp), %rdx
xorl %ecx, %ecx
callq 0x1e7f1a
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0x1adda4
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
movq %rax, (%rdi)
leaq 0x200272(%rip), %rsi    # 0x3ae030
leaq 0x200270(%rip), %rdx    # 0x3ae035
callq 0x1e4740
leaq 0x10(%rsp), %rdi
leaq 0x220(%rsp), %rsi
leaq 0x70(%rsp), %rdx
xorl %ecx, %ecx
callq 0x1e7f1a
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0x1ade08
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1dfdad(%rip), %rsi    # 0x38dbcf
leaq 0x1dfda9(%rip), %rdx    # 0x38dbd2
callq 0x1e4740
leaq 0x18(%rsp), %r14
leaq 0x220(%rsp), %rsi
leaq 0xa8(%rsp), %rdx
movq %r14, %rdi
callq 0x376b56
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0x1ade70
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1dfd3a(%rip), %rsi    # 0x38dbc4
leaq 0x1dfd36(%rip), %rdx    # 0x38dbc7
callq 0x1e4740
leaq 0x10(%rsp), %rbx
leaq 0x220(%rsp), %rsi
leaq 0x80(%rsp), %rdx
movq %rbx, %rdi
callq 0x376b56
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0x1aded8
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x50(%rsp), %rdi
callq 0x1e56bc
leaq 0x58(%rsp), %r15
movq (%r15), %rax
movq 0x8(%r15), %rcx
movq %rcx, %rdx
subq %rax, %rdx
je 0x1adf1d
sarq $0x3, %rdx
movq 0x18(%rsp), %rsi
cmpq $0x1, %rdx
adcq $0x0, %rdx
movq %rax, %rdi
cmpq %r14, %rdi
je 0x1adf34
cmpq (%rdi), %rsi
je 0x1adf34
addq $0x8, %rdi
decq %rdx
jne 0x1adf0a
leaq 0x18(%rsp), %rsi
movq %r15, %rdi
callq 0x1eb0e8
movq 0x58(%rsp), %rax
movq 0x60(%rsp), %rcx
subq %rax, %rcx
je 0x1adf5d
sarq $0x3, %rcx
movq 0x10(%rsp), %rdx
cmpq $0x1, %rcx
adcq $0x0, %rcx
cmpq %rbx, %rax
je 0x1adf6a
cmpq (%rax), %rdx
je 0x1adf6a
addq $0x8, %rax
decq %rcx
jne 0x1adf4a
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x1eb0e8
leaq 0x300(%rsp), %r15
xorl %ebx, %ebx
leaq 0xd0(%rsp), %r12
leaq 0x220(%rsp), %r13
leaq 0x50(%rsp), %rbp
movq $0x0, 0x28(%rsp)
xorl %r14d, %r14d
movl $0x7f, %esi
movq %r12, %rdi
callq 0x1e57c8
movq %r13, %rdi
movq %r12, %rsi
callq 0x1e58c8
leaq 0x1d0(%rsp), %rdi
callq 0x1eb2ea
leaq 0x1a0(%rsp), %rdi
callq 0x1eb2ea
leaq 0x170(%rsp), %rdi
callq 0x1eb2ea
leaq 0x140(%rsp), %rdi
callq 0x1eb2ea
leaq 0x110(%rsp), %rdi
callq 0x1eb2ea
leaq 0xe0(%rsp), %rdi
callq 0x1eb2ea
movq %r15, %rdi
leaq 0x3937fb(%rip), %rsi    # 0x541800
callq 0x1f6df0
movq %r15, %rdi
leaq 0x3933ec(%rip), %rsi    # 0x541400
callq 0x1f6df0
leaq 0x3bfa90(%rip), %rax    # 0x56dab0
leaq (%rax,%r14), %rsi
movq %r13, %rdi
movq %rbp, %rdx
callq 0x1e60ec
testb %al, %al
je 0x1ae1fc
movq %r13, %rdi
callq 0x1e6d46
movq 0x50(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
ucomisd 0x1dafca(%rip), %xmm0   # 0x389020
jne 0x1ae263
jp 0x1ae263
addq $0x20, %r14
cmpq $0x200, %r14            # imm = 0x200
jne 0x1adf95
movq 0x28(%rsp), %rax
cmpq $0x63, %rax
leaq 0x1(%rax), %rax
setae %bl
movq %rax, 0x28(%rsp)
cmpq $0x64, %rax
jne 0x1adf92
movb $0x1, %bl
jmp 0x1ae346
movq 0x538(%rsp), %r8
cmpq %r8, 0x558(%rsp)
je 0x1ae10f
movq 0x550(%rsp), %rsi
movq %r8, %rcx
subq 0x540(%rsp), %rcx
movq %rcx, %rdx
sarq $0x3, %rdx
movabsq $-0x30c30c30c30c30c3, %rax # imm = 0xCF3CF3CF3CF3CF3D
imulq %rdx, %rax
cmpq $-0xa7, %rcx
jl 0x1ae142
cmpq $0x3, %rax
jb 0x1ae166
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rdx
shrq %rdx
jmp 0x1ae158
movq (%r12), %rsi
leaq 0x1fff6e(%rip), %rdi    # 0x3ae071
xorl %eax, %eax
callq 0x11e080
jmp 0x1ae1c5
movq %rbx, 0xd0(%rsp)
movabsq $0x726f727245206f4e, %rax # imm = 0x726F727245206F4E
movq %rax, 0xe0(%rsp)
movq $0x8, 0xd8(%rsp)
movb $0x0, 0xe8(%rsp)
movq %rbx, %rsi
jmp 0x1ae189
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 0xd0(%rsp), %rdi
movq %rbx, (%rdi)
movq 0x38(%r8), %rsi
movq 0x40(%r8), %rdx
addq %rsi, %rdx
callq 0x1e7738
movq 0xd0(%rsp), %rsi
movq (%r12), %rdx
leaq 0x1ffead(%rip), %rdi    # 0x3ae041
xorl %eax, %eax
callq 0x11e080
movq 0xd0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1ae1b8
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x220(%rsp), %rdi
callq 0x1e6d46
leaq 0x50(%rsp), %rdi
callq 0x1e7008
leaq 0x20(%rsp), %rdi
callq 0x1e7056
leaq 0x10(%rsp), %rdi
callq 0x1e7056
xorl %ebx, %ebx
andb $0x1, %bl
movl %ebx, %eax
addq $0xb48, %rsp            # imm = 0xB48
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x538(%rsp), %r8
cmpq %r8, 0x558(%rsp)
je 0x1ae281
movq 0x550(%rsp), %rsi
movq %r8, %rcx
subq 0x540(%rsp), %rcx
movq %rcx, %rdx
sarq $0x3, %rdx
movabsq $-0x30c30c30c30c30c3, %rax # imm = 0xCF3CF3CF3CF3CF3D
imulq %rdx, %rax
cmpq $-0xa7, %rcx
leaq 0xe0(%rsp), %r15
jl 0x1ae2bc
cmpq $0x3, %rax
jb 0x1ae2e0
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rdx
shrq %rdx
jmp 0x1ae2d2
leaq 0x3bf846(%rip), %rax    # 0x56dab0
movq (%r14,%rax), %rsi
leaq 0x1ffe65(%rip), %rdi    # 0x3ae0da
xorl %eax, %eax
callq 0x11e080
jmp 0x1ae346
leaq 0xe0(%rsp), %r15
movq %r15, 0xd0(%rsp)
movabsq $0x726f727245206f4e, %rax # imm = 0x726F727245206F4E
movq %rax, 0xe0(%rsp)
movq $0x8, 0xd8(%rsp)
movb $0x0, 0xe8(%rsp)
movq %r15, %rsi
jmp 0x1ae303
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 0xd0(%rsp), %rdi
movq %r15, (%rdi)
movq 0x38(%r8), %rsi
movq 0x40(%r8), %rdx
addq %rsi, %rdx
callq 0x1e7738
movq 0xd0(%rsp), %rsi
leaq 0x3bf7a6(%rip), %rax    # 0x56dab0
movq (%r14,%rax), %rdx
leaq 0x1ffd95(%rip), %rdi    # 0x3ae0aa
xorl %eax, %eax
callq 0x11e080
movq 0xd0(%rsp), %rdi
cmpq %r15, %rdi
je 0x1ae339
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x220(%rsp), %rdi
callq 0x1e6d46
leaq 0x50(%rsp), %rdi
callq 0x1e7008
leaq 0x10(%rsp), %rdi
callq 0x1e7056
leaq 0x18(%rsp), %rdi
callq 0x1e7056
jmp 0x1ae1e5
leaq 0x3bf940(%rip), %rdi    # 0x56dcb0
callq 0x11e1a0
testl %eax, %eax
je 0x1ad60a
leaq 0x3bf73c(%rip), %rax    # 0x56dac0
movq %rax, 0x3bf725(%rip)    # 0x56dab0
leaq 0x3bf71e(%rip), %r14    # 0x56dab0
leaq 0x1ffa21(%rip), %rsi    # 0x3addba
leaq 0x1ffa40(%rip), %rdx    # 0x3adde0
movq %r14, %rdi
callq 0x1e4740
leaq 0x3bf731(%rip), %rax    # 0x56dae0
movq %rax, 0x3bf71a(%rip)    # 0x56dad0
leaq 0x3bf713(%rip), %r15    # 0x56dad0
leaq 0x1ffa1d(%rip), %rsi    # 0x3adde1
leaq 0x1ffa3c(%rip), %rdx    # 0x3ade07
movq %r15, %rdi
callq 0x1e4740
leaq 0x3bf726(%rip), %rax    # 0x56db00
movq %rax, 0x3bf70f(%rip)    # 0x56daf0
leaq 0x3bf708(%rip), %r15    # 0x56daf0
leaq 0x1ffa19(%rip), %rsi    # 0x3ade08
leaq 0x1ffa38(%rip), %rdx    # 0x3ade2e
movq %r15, %rdi
callq 0x1e4740
leaq 0x3bf71b(%rip), %rax    # 0x56db20
movq %rax, 0x3bf704(%rip)    # 0x56db10
leaq 0x3bf6fd(%rip), %r15    # 0x56db10
leaq 0x1ffa15(%rip), %rsi    # 0x3ade2f
leaq 0x1ffa34(%rip), %rdx    # 0x3ade55
movq %r15, %rdi
callq 0x1e4740
leaq 0x3bf710(%rip), %rax    # 0x56db40
movq %rax, 0x3bf6f9(%rip)    # 0x56db30
leaq 0x3bf6f2(%rip), %r15    # 0x56db30
leaq 0x1ffa11(%rip), %rsi    # 0x3ade56
leaq 0x1ffa30(%rip), %rdx    # 0x3ade7c
movq %r15, %rdi
callq 0x1e4740
leaq 0x3bf705(%rip), %rax    # 0x56db60
movq %rax, 0x3bf6ee(%rip)    # 0x56db50
leaq 0x3bf6e7(%rip), %r15    # 0x56db50
leaq 0x1ffa0d(%rip), %rsi    # 0x3ade7d
leaq 0x1ffa2c(%rip), %rdx    # 0x3adea3
movq %r15, %rdi
callq 0x1e4740
leaq 0x3bf6fa(%rip), %rax    # 0x56db80
movq %rax, 0x3bf6e3(%rip)    # 0x56db70
leaq 0x3bf6dc(%rip), %r15    # 0x56db70
leaq 0x1ffa09(%rip), %rsi    # 0x3adea4
leaq 0x1ffa28(%rip), %rdx    # 0x3adeca
movq %r15, %rdi
callq 0x1e4740
leaq 0x3bf6ef(%rip), %rax    # 0x56dba0
movq %rax, 0x3bf6d8(%rip)    # 0x56db90
leaq 0x3bf6d1(%rip), %r15    # 0x56db90
leaq 0x1ffa05(%rip), %rsi    # 0x3adecb
leaq 0x1ffa24(%rip), %rdx    # 0x3adef1
movq %r15, %rdi
callq 0x1e4740
leaq 0x3bf6e4(%rip), %rax    # 0x56dbc0
movq %rax, 0x3bf6cd(%rip)    # 0x56dbb0
leaq 0x3bf6c6(%rip), %r15    # 0x56dbb0
leaq 0x1ffa01(%rip), %rsi    # 0x3adef2
leaq 0x1ffa20(%rip), %rdx    # 0x3adf18
movq %r15, %rdi
callq 0x1e4740
leaq 0x3bf6d9(%rip), %rax    # 0x56dbe0
movq %rax, 0x3bf6c2(%rip)    # 0x56dbd0
leaq 0x3bf6bb(%rip), %r15    # 0x56dbd0
leaq 0x1ff9fd(%rip), %rsi    # 0x3adf19
leaq 0x1ffa1c(%rip), %rdx    # 0x3adf3f
movq %r15, %rdi
callq 0x1e4740
leaq 0x3bf6ce(%rip), %rax    # 0x56dc00
movq %rax, 0x3bf6b7(%rip)    # 0x56dbf0
leaq 0x3bf6b0(%rip), %r15    # 0x56dbf0
leaq 0x1ff9f9(%rip), %rsi    # 0x3adf40
leaq 0x1ffa18(%rip), %rdx    # 0x3adf66
movq %r15, %rdi
callq 0x1e4740
leaq 0x3bf6c3(%rip), %rax    # 0x56dc20
movq %rax, 0x3bf6ac(%rip)    # 0x56dc10
leaq 0x3bf6a5(%rip), %r15    # 0x56dc10
leaq 0x1ff9f5(%rip), %rsi    # 0x3adf67
leaq 0x1ffa14(%rip), %rdx    # 0x3adf8d
movq %r15, %rdi
callq 0x1e4740
leaq 0x3bf6b8(%rip), %rax    # 0x56dc40
movq %rax, 0x3bf6a1(%rip)    # 0x56dc30
leaq 0x3bf69a(%rip), %r15    # 0x56dc30
leaq 0x1ff9f1(%rip), %rsi    # 0x3adf8e
leaq 0x1ffa10(%rip), %rdx    # 0x3adfb4
movq %r15, %rdi
callq 0x1e4740
leaq 0x3bf6ad(%rip), %rax    # 0x56dc60
movq %rax, 0x3bf696(%rip)    # 0x56dc50
leaq 0x3bf68f(%rip), %r15    # 0x56dc50
leaq 0x1ff9ed(%rip), %rsi    # 0x3adfb5
leaq 0x1ffa0c(%rip), %rdx    # 0x3adfdb
movq %r15, %rdi
callq 0x1e4740
leaq 0x3bf6a2(%rip), %rax    # 0x56dc80
movq %rax, 0x3bf68b(%rip)    # 0x56dc70
leaq 0x3bf684(%rip), %r15    # 0x56dc70
leaq 0x1ff9e9(%rip), %rsi    # 0x3adfdc
leaq 0x1ffa08(%rip), %rdx    # 0x3ae002
movq %r15, %rdi
callq 0x1e4740
leaq 0x3bf697(%rip), %rax    # 0x56dca0
movq %rax, 0x3bf680(%rip)    # 0x56dc90
leaq 0x3bf679(%rip), %r15    # 0x56dc90
leaq 0x1ff9e5(%rip), %rsi    # 0x3ae003
leaq 0x1ffa04(%rip), %rdx    # 0x3ae029
movq %r15, %rdi
callq 0x1e4740
leaq -0x7f5b9(%rip), %rdi    # 0x12f07b
leaq 0x391cd5(%rip), %rdx    # 0x540310
xorl %esi, %esi
callq 0x11e480
leaq 0x3bf667(%rip), %rdi    # 0x56dcb0
callq 0x11e2e0
jmp 0x1ad60a
jmp 0x1ae66f
jmp 0x1ae66f
jmp 0x1ae66f
jmp 0x1ae66f
jmp 0x1ae66f
jmp 0x1ae66f
jmp 0x1ae66f
jmp 0x1ae66f
jmp 0x1ae66f
jmp 0x1ae66f
jmp 0x1ae66f
jmp 0x1ae66f
jmp 0x1ae66f
jmp 0x1ae66f
movq %rax, %rbx
addq $-0x10, %r15
movq -0x10(%r15), %rdi
cmpq %rdi, %r15
je 0x1ae68a
movq (%r15), %rsi
incq %rsi
callq 0x11e0c0
leaq -0x20(%r15), %rax
addq $-0x10, %r15
cmpq %r14, %r15
movq %rax, %r15
jne 0x1ae676
leaq 0x3bf60f(%rip), %rdi    # 0x56dcb0
callq 0x11e220
jmp 0x1ae823
movq %rax, %rbx
jmp 0x1ae69a
jmp 0x1ae719
jmp 0x1ae6ea
jmp 0x1ae6c0
jmp 0x1ae6ea
jmp 0x1ae6c0
jmp 0x1ae6ea
jmp 0x1ae6c0
jmp 0x1ae6ea
movq %rax, %rbx
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0x1ae733
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x11e0c0
jmp 0x1ae733
movq %rax, %rbx
jmp 0x1ae733
movq %rax, %rbx
jmp 0x1ae73d
jmp 0x1ae796
jmp 0x1ae6fd
jmp 0x1ae6fd
movq %rax, %rbx
jmp 0x1ae729
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0x1e60a4
jmp 0x1ae729
jmp 0x1ae7c6
movq %rax, %rbx
leaq 0x220(%rsp), %rdi
callq 0x1e6d46
leaq 0x50(%rsp), %rdi
callq 0x1e7008
leaq 0x10(%rsp), %rdi
callq 0x1e7056
leaq 0x18(%rsp), %rdi
jmp 0x1ae81e
jmp 0x1ae786
jmp 0x1ae755
jmp 0x1ae786
jmp 0x1ae755
jmp 0x1ae786
jmp 0x1ae755
jmp 0x1ae786
movq %rax, %rbx
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0x1ae80f
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x11e0c0
jmp 0x1ae80f
movq %rax, %rbx
jmp 0x1ae80f
movq %rax, %rbx
jmp 0x1ae819
movq %rax, %rbx
jmp 0x1ae823
jmp 0x1ae7cb
jmp 0x1ae7a2
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x1ae7d3
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x11e0c0
jmp 0x1ae7d3
jmp 0x1ae7cb
jmp 0x1ae7d0
jmp 0x1ae7c6
jmp 0x1ae7c6
movq %rax, %rbx
jmp 0x1ae7f8
movq %rax, %rbx
jmp 0x1ae805
movq %rax, %rbx
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x1ae7f8
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x11e0c0
leaq 0x220(%rsp), %rdi
callq 0x1e6d46
leaq 0x50(%rsp), %rdi
callq 0x1e7008
leaq 0x20(%rsp), %rdi
callq 0x1e7056
leaq 0x10(%rsp), %rdi
callq 0x1e7056
movq %rbx, %rdi
callq 0x11e330
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0x1e60a4
jmp 0x1ae805