// File: /workspace/github_cpp_makefile_star2_O1/ArashPartow[P]exprtk/./exprtk.hpp
// Function: bool exprtk::function_compositor<double>::compile_expression<std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::deque>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::deque<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, bool)
bool compile_expression(const std::string& name,
                              const std::string& expression,
                              const Sequence<std::string,Allocator>& input_var_list,
                              bool  return_present = false)
      {
         expression_t compiled_expression;
         symbol_table_t local_symbol_table;

         local_symbol_table.load_from(symbol_table_);
         local_symbol_table.add_constants();

         if (load_variables_)
         {
            local_symbol_table.load_variables_from(symbol_table_);
         }

         if (load_vectors_)
         {
            local_symbol_table.load_vectors_from(symbol_table_);
         }

         error_list_.clear();

         if (!valid(name,input_var_list.size()))
         {
            parser_error::type error =
               parser_error::make_error(
                  parser_error::e_parser,
                  lexer::token(),
                  "ERR283 - Function '" + name + "' is an invalid overload",
                  exprtk_error_location);

            error_list_.push_back(error);
            return false;
         }

         if (!forward(name,
                      input_var_list.size(),
                      local_symbol_table,
                      return_present))
            return false;

         compiled_expression.register_symbol_table(local_symbol_table);

         for (std::size_t i = 0; i < auxiliary_symtab_list_.size(); ++i)
         {
            compiled_expression.register_symbol_table((*auxiliary_symtab_list_[i]));
         }

         std::string mod_expression;

         for (std::size_t i = 0; i < input_var_list.size(); ++i)
         {
            mod_expression += " var " + input_var_list[i] + "{};\n";
         }

         if (
              ('{' == details::front(expression)) &&
              ('}' == details::back (expression))
            )
            mod_expression += "~" + expression + ";";
         else
            mod_expression += "~{" + expression + "};";

         if (!parser_.compile(mod_expression,compiled_expression))
         {
            exprtk_debug(("Compositor Error: %s\n", parser_.error().c_str()));
            exprtk_debug(("Compositor modified expression: \n%s\n", mod_expression.c_str()));

            remove(name,input_var_list.size());

            for (std::size_t err_index = 0; err_index < parser_.error_count(); ++err_index)
            {
               error_list_.push_back(parser_.get_error(err_index));
            }

            return false;
         }

         if (!return_present && parser_.dec().return_present())
         {
            remove(name,input_var_list.size());
            return compile_expression(name, expression, input_var_list, true);
         }

         // Make sure every return point has a scalar as its first parameter
         if (parser_.dec().return_present())
         {
            typedef std::vector<std::string> str_list_t;

            str_list_t ret_param_list = parser_.dec().return_param_type_list();

            for (std::size_t i = 0; i < ret_param_list.size(); ++i)
            {
               const std::string& params = ret_param_list[i];

               if (params.empty() || ('T' != params[0]))
               {
                  exprtk_debug(("Compositor Error: Return statement in function '%s' is invalid\n",
                                name.c_str()));

                  remove(name,input_var_list.size());

                  return false;
               }
            }
         }

         expr_map_[name] = compiled_expression;

         exprtk::ifunction<T>& ifunc = (*(fp_map_[input_var_list.size()])[name]);

         if (symbol_table_.add_function(name,ifunc))
            return true;
         else
         {
            exprtk_debug(("Compositor Error: Failed to add function '%s' to symbol table\n",
                          name.c_str()));
            return false;
         }
      }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1a8, %rsp            # imm = 0x1A8
movl %r8d, %ebp
movq %rcx, %r12
movq %rdx, %r13
movq %rsi, %r15
movq %rdi, %r14
leaq 0x120(%rsp), %rdi
callq 0x1ebb7a
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
callq 0x1eb8c4
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x3aca80
leaq 0x8(%rsp), %rdi
callq 0x1eb90c
cmpb $0x1, 0x9e0(%r14)
jne 0x3ab6bc
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x3ad0fc
cmpb $0x1, 0x9e1(%r14)
jne 0x3ab6d3
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x3ad268
leaq 0x990(%r14), %rdi
movq %rdi, 0x118(%rsp)
callq 0x266d46
movq 0x48(%r12), %rax
movq %rax, %rcx
subq 0x28(%r12), %rcx
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
shlq $0x4, %rcx
movq 0x30(%r12), %rax
subq 0x38(%r12), %rax
movq 0x20(%r12), %rbx
sarq $0x5, %rax
subq 0x10(%r12), %rbx
sarq $0x5, %rbx
addq %rax, %rbx
addq %rcx, %rbx
cmpq $0x6, %rbx
ja 0x3ab762
movq %r14, %rdi
movq %r15, %rsi
callq 0x3ad816
testb %al, %al
jne 0x3ab762
leaq (%rbx,%rbx,2), %rbx
shlq $0x4, %rbx
addq 0x960(%r14), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x3ad934
addq $0x8, %rbx
cmpq %rax, %rbx
je 0x3abafd
leaq 0x50(%rsp), %rax
movl $0x0, -0x18(%rax)
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq $-0x1, 0x10(%rax)
leaq 0x38b7a(%rip), %rsi     # 0x3e4306
leaq 0x188(%rsp), %rdi
movq %r15, %rdx
callq 0x26c8c1
leaq 0x38b77(%rip), %rsi     # 0x3e431a
leaq 0x188(%rsp), %rdi
callq 0x120340
leaq 0x20(%rsp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3ab7d7
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x3ab7dd
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
leaq 0x40(%rsp), %r13
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
xorl %ecx, %ecx
movq %rcx, 0x8(%rax)
movb %cl, 0x10(%rax)
leaq 0x150(%rsp), %r12
movq %r12, -0x10(%r12)
movq %rcx, -0x8(%r12)
movb %cl, (%r12)
movl $0xaa3b, %ebp           # imm = 0xAA3B
leaq 0x140(%rsp), %rbx
movslq %ebp, %rax
imulq $0x66666667, %rax, %r14 # imm = 0x66666667
movq %r14, %rcx
shrq $0x3f, %rcx
sarq $0x22, %r14
addl %ecx, %r14d
leal (%r14,%r14), %ecx
leal (%rcx,%rcx,4), %ecx
subl %ecx, %eax
addb $0x30, %al
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1205d0
addl $0x9, %ebp
cmpl $0x13, %ebp
movl %r14d, %ebp
jae 0x3ab81a
movq 0x140(%rsp), %rax
movq 0x148(%rsp), %rcx
testq %rcx, %rcx
setne %dl
addq %rax, %rcx
decq %rcx
cmpq %rax, %rcx
seta %sil
andb %dl, %sil
cmpb $0x1, %sil
jne 0x3ab89d
incq %rax
movb -0x1(%rax), %dl
movb (%rcx), %sil
movb %sil, -0x1(%rax)
movb %dl, (%rcx)
decq %rcx
leaq 0x1(%rax), %rdx
cmpq %rcx, %rax
movq %rdx, %rax
jb 0x3ab882
leaq 0x11c4f(%rip), %rcx     # 0x3bd4f3
leaq 0x140(%rsp), %rdi
movl $0xb, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x120110
leaq 0x170(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
movq %r13, %rsi
movq %r12, %rbp
cmpq %rcx, %rdx
je 0x3ab8f1
movq %rdx, 0x160(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x170(%rsp)
jmp 0x3ab8f8
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x168(%rsp)
movq %rcx, (%rax)
xorl %ecx, %ecx
movq %rcx, 0x8(%rax)
movb %cl, 0x10(%rax)
leaq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq %rcx, -0x8(%rbx)
movb %cl, (%rbx)
movq $-0x1, 0x10(%rbx)
leaq 0xb0(%rsp), %r13
movq %r13, -0x10(%r13)
movq %rcx, -0x8(%r13)
movb %cl, (%r13)
leaq 0xd0(%rsp), %r12
movq %r12, -0x10(%r12)
movq %rcx, -0x8(%r12)
movb %cl, (%r12)
leaq 0xf0(%rsp), %r14
movq %r14, -0x10(%r14)
movq %rcx, -0x8(%r14)
movb %cl, (%r14)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%r14)
movl $0x9, -0x58(%r14)
movl 0x38(%rsp), %eax
movl %eax, -0x68(%r12)
callq 0x1205a0
leaq 0xa0(%rsp), %rdi
movq 0x60(%rsp), %rax
movq %rax, -0x10(%rdi)
leaq 0x10(%rsp), %rsi
callq 0x1205a0
leaq 0xc0(%rsp), %rdi
leaq 0x160(%rsp), %rsi
callq 0x1205a0
movq 0x160(%rsp), %rdi
cmpq %r15, %rdi
je 0x3ab9d7
movq 0x170(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x140(%rsp), %rdi
cmpq %rbp, %rdi
je 0x3ab9f4
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3aba10
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x198(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3aba31
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x3aba4d
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x68(%rsp), %rsi
movq 0x118(%rsp), %rdi
callq 0x26b154
movq 0xe0(%rsp), %rdi
cmpq %r14, %rdi
je 0x3aba7c
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0xc0(%rsp), %rdi
cmpq %r12, %rdi
je 0x3aba99
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0xa0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3abab6
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x70(%rsp), %rdi
cmpq %rbx, %rdi
je 0x3abad0
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x1200c0
xorl %ebx, %ebx
leaq 0x8(%rsp), %rdi
callq 0x1ed354
leaq 0x120(%rsp), %rdi
callq 0x1ed306
movl %ebx, %eax
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x48(%r12), %rax
movq %rax, %rcx
subq 0x28(%r12), %rcx
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
shlq $0x4, %rcx
movq 0x20(%r12), %rax
movq 0x30(%r12), %rdx
subq 0x38(%r12), %rdx
sarq $0x5, %rdx
subq 0x10(%r12), %rax
sarq $0x5, %rax
addq %rdx, %rax
addq %rcx, %rax
leaq 0x68(%rsp), %rdx
movq %rax, (%rdx)
movzbl %bpl, %r8d
leaq 0x8(%rsp), %rbx
movq %r14, %rdi
movq %r15, %rsi
movq %rbx, %rcx
callq 0x3ad53c
testb %al, %al
je 0x3abad0
leaq 0x128(%rsp), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rax
subq %rcx, %rax
je 0x3abbc4
sarq $0x3, %rax
cmpq $0x1, %rax
movq %rax, %rsi
adcq $0x0, %rsi
cmpq %rbx, %rcx
je 0x3abbd6
movq 0x8(%rsp), %rdx
cmpq (%rcx), %rdx
je 0x3abbd6
addq $0x8, %rcx
movl $0x1, %edi
subq %rsi, %rdi
xorl %esi, %esi
cmpq %rsi, %rdi
je 0x3abbc4
decq %rsi
cmpq %rbx, %rcx
je 0x3abbbc
leaq 0x8(%rcx), %r8
cmpq (%rcx), %rdx
movq %r8, %rcx
jne 0x3abba3
negq %rsi
cmpq %rax, %rsi
jb 0x3abbd6
leaq 0x8(%rsp), %rsi
leaq 0x128(%rsp), %rdi
callq 0x1f216a
movq 0x978(%r14), %rdx
cmpq %rdx, 0x980(%r14)
je 0x3abc7f
xorl %ebx, %ebx
movq 0x128(%rsp), %rcx
movq 0x130(%rsp), %rax
movq (%rdx,%rbx,8), %rsi
subq %rcx, %rax
je 0x3abc51
sarq $0x3, %rax
cmpq $0x1, %rax
movq %rax, %r8
adcq $0x0, %r8
cmpq %rsi, %rcx
je 0x3abc5e
movq (%rsi), %rdx
cmpq (%rcx), %rdx
je 0x3abc5e
addq $0x8, %rcx
movl $0x1, %edi
subq %r8, %rdi
xorl %r8d, %r8d
cmpq %r8, %rdi
je 0x3abc51
decq %r8
cmpq %rsi, %rcx
je 0x3abc49
leaq 0x8(%rcx), %r9
cmpq (%rcx), %rdx
movq %r9, %rcx
jne 0x3abc30
negq %r8
cmpq %rax, %r8
jb 0x3abc5e
leaq 0x128(%rsp), %rdi
callq 0x1f216a
incq %rbx
movq 0x978(%r14), %rdx
movq 0x980(%r14), %rax
subq %rdx, %rax
sarq $0x3, %rax
cmpq %rax, %rbx
jb 0x3abbec
movl %ebp, 0x34(%rsp)
movq %r13, 0x180(%rsp)
movq %r15, 0x110(%rsp)
leaq 0x48(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x78(%rsp), %r13
xorl %r15d, %r15d
leaq 0x10(%rsp), %rbp
xorl %ebx, %ebx
movq 0x48(%r12), %rcx
movq 0x28(%r12), %rax
movq %rcx, %rsi
subq %rax, %rsi
shrq $0x3, %rsi
cmpq $0x1, %rcx
adcq $-0x1, %rsi
shlq $0x4, %rsi
movq 0x30(%r12), %rcx
subq 0x38(%r12), %rcx
sarq $0x5, %rcx
movq 0x10(%r12), %rdx
movq 0x20(%r12), %rdi
subq %rdx, %rdi
sarq $0x5, %rdi
addq %rcx, %rdi
addq %rsi, %rdi
cmpq %rdi, %rbx
jae 0x3abe06
movq %rdx, %rcx
subq 0x18(%r12), %rcx
sarq $0x5, %rcx
leaq (%rbx,%rcx), %rsi
cmpq $0xf, %rsi
ja 0x3abd1f
addq %r15, %rdx
jmp 0x3abd52
movq %rsi, %rdx
shrq $0x4, %rdx
movabsq $-0x1000000000000000, %rdi # imm = 0xF000000000000000
addq %rdx, %rdi
testq %rsi, %rsi
cmovgq %rdx, %rdi
movq %rdi, %rdx
shlq $0x4, %rdx
subq %rdx, %rcx
addq %rbx, %rcx
shlq $0x5, %rcx
addq (%rax,%rdi,8), %rcx
movq %rcx, %rdx
movq %rbp, %rdi
leaq 0x385d7(%rip), %rsi     # 0x3e4333
callq 0x26c8c1
movq %rbp, %rdi
leaq 0x385ce(%rip), %rsi     # 0x3e4339
callq 0x120340
movq %r13, 0x68(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3abd93
movq %rdx, 0x68(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x78(%rsp)
jmp 0x3abd9b
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x70(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
leaq 0x38(%rsp), %rdi
callq 0x1203b0
movq 0x68(%rsp), %rdi
cmpq %r13, %rdi
je 0x3abdde
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3abdfa
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x1200c0
incq %rbx
addq $0x20, %r15
jmp 0x3abcb6
movq 0x180(%rsp), %r15
movq (%r15), %rax
cmpb $0x7b, (%rax)
jne 0x3abe74
movq 0x8(%r15), %rcx
cmpb $0x7d, -0x1(%rax,%rcx)
jne 0x3abe74
leaq 0x11c64(%rip), %rsi     # 0x3bda8c
leaq 0x10(%rsp), %rdi
movq %r15, %rdx
callq 0x26c8c1
movl 0x34(%rsp), %ebp
leaq 0x2d96b(%rip), %rsi     # 0x3d97ab
leaq 0x10(%rsp), %rdi
callq 0x120340
movq %r13, 0x68(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3abef6
movq %rdx, 0x68(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x78(%rsp)
jmp 0x3abefe
leaq 0x384c3(%rip), %rsi     # 0x3e433e
leaq 0x10(%rsp), %rdi
movq %r15, %rdx
callq 0x26c8c1
movl 0x34(%rsp), %ebp
leaq 0x42503(%rip), %rsi     # 0x3ee396
leaq 0x10(%rsp), %rdi
callq 0x120340
movq %r13, 0x68(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3abec0
movq %rdx, 0x68(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x78(%rsp)
jmp 0x3abec8
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x70(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
leaq 0x38(%rsp), %rdi
callq 0x1203b0
jmp 0x3abf2a
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x70(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
leaq 0x38(%rsp), %rdi
callq 0x1203b0
movq 0x68(%rsp), %rdi
cmpq %r13, %rdi
je 0x3abf41
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
movq 0x110(%rsp), %r13
je 0x3abf65
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x8(%r14), %rdi
leaq 0x38(%rsp), %rsi
leaq 0x120(%rsp), %rbx
movq %rbx, %rdx
callq 0x1ec5b8
testb %al, %al
je 0x3ac00b
testb %bpl, %bpl
jne 0x3ac191
cmpb $0x1, 0x2c3(%r14)
jne 0x3ac191
movq 0x48(%r12), %rax
movq %rax, %rcx
subq 0x28(%r12), %rcx
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
shlq $0x4, %rcx
movq 0x20(%r12), %rax
movq 0x30(%r12), %rdx
subq 0x38(%r12), %rdx
sarq $0x5, %rdx
subq 0x10(%r12), %rax
sarq $0x5, %rax
addq %rdx, %rax
addq %rcx, %rax
leaq 0x68(%rsp), %rdx
movq %rax, (%rdx)
movq %r14, %rdi
movq %r13, %rsi
callq 0x3ab568
movq %r14, %rdi
movq %r13, %rsi
movq %r15, %rdx
movq %r12, %rcx
movl $0x1, %r8d
callq 0x3ab652
jmp 0x3ac2d2
movq 0x48(%r12), %rax
movq %rax, %rcx
subq 0x28(%r12), %rcx
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
shlq $0x4, %rcx
movq 0x20(%r12), %rax
movq 0x30(%r12), %rdx
subq 0x38(%r12), %rdx
sarq $0x5, %rdx
subq 0x10(%r12), %rax
sarq $0x5, %rax
addq %rdx, %rax
addq %rcx, %rax
leaq 0x68(%rsp), %rdx
movq %rax, (%rdx)
movq %r14, %rdi
movq %r13, %rsi
callq 0x3ab568
leaq 0x320(%r14), %rbx
leaq 0x80(%rsp), %rbp
xorl %r15d, %r15d
movabsq $-0x30c30c30c30c30c3, %r13 # imm = 0xCF3CF3CF3CF3CF3D
leaq 0x68(%rsp), %r12
movq 0x358(%r14), %rax
movq %rax, %rcx
subq 0x338(%r14), %rcx
sarq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
leaq (%rcx,%rcx,2), %rax
movq 0x330(%r14), %rcx
movq 0x340(%r14), %rdx
subq 0x348(%r14), %rdx
sarq $0x3, %rdx
imulq %r13, %rdx
addq %rax, %rdx
subq 0x320(%r14), %rcx
sarq $0x3, %rcx
imulq %r13, %rcx
addq %rdx, %rcx
cmpq %rcx, %r15
jae 0x3ac332
movq %rbx, %rdi
movq %r15, %rsi
callq 0x396d0e
movq %r12, %rdi
movq %rax, %rsi
callq 0x26b298
movq 0x118(%rsp), %rdi
movq %r12, %rsi
callq 0x3af5e8
movq 0xe0(%rsp), %rdi
leaq 0xf0(%rsp), %rax
cmpq %rax, %rdi
je 0x3ac125
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x3ac14a
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x3ac16f
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x70(%rsp), %rdi
cmpq %rbp, %rdi
je 0x3ac189
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x1200c0
incq %r15
jmp 0x3ac07e
cmpb $0x1, 0x2c3(%r14)
jne 0x3ac1f5
leaq 0x2f8(%r14), %rsi
leaq 0x68(%rsp), %rdi
callq 0x3aeac2
movq 0x68(%rsp), %rax
movq 0x70(%rsp), %rcx
subq %rax, %rcx
je 0x3ac1eb
sarq $0x5, %rcx
cmpq $0x1, %rcx
adcq $0x0, %rcx
addq $0x8, %rax
cmpq $0x0, (%rax)
je 0x3ac2d6
movq -0x8(%rax), %rdx
cmpb $0x54, (%rdx)
jne 0x3ac2d6
addq $0x20, %rax
decq %rcx
jne 0x3ac1cb
leaq 0x68(%rsp), %rdi
callq 0x266c02
leaq 0x930(%r14), %rdi
movq %r13, %rsi
callq 0x3ac878
movq %rax, %r15
cmpq %rbx, %rax
je 0x3ac262
movq (%r15), %rbx
testq %rbx, %rbx
je 0x3ac240
movq (%rbx), %rax
testq %rax, %rax
je 0x3ac239
decq %rax
movq %rax, (%rbx)
jne 0x3ac239
movq %rbx, %rdi
callq 0x1f14de
movl $0x40, %esi
movq %rbx, %rdi
callq 0x1200c0
movq $0x0, (%r15)
movq 0x120(%rsp), %rax
movq %rax, (%r15)
incq (%rax)
addq $0x8, %r15
movq %r15, %rdi
leaq 0x128(%rsp), %rsi
callq 0x3af84e
movq 0x48(%r12), %rax
movq %rax, %rcx
subq 0x28(%r12), %rcx
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
movq 0x20(%r12), %rax
movq 0x30(%r12), %rdx
subq 0x38(%r12), %rdx
subq 0x10(%r12), %rax
sarq $0x5, %rdx
sarq $0x5, %rax
leaq (%rcx,%rcx,2), %rcx
shlq $0x8, %rcx
addq 0x960(%r14), %rcx
leaq (%rdx,%rdx,2), %rdx
shlq $0x4, %rdx
leaq (%rax,%rax,2), %rdi
shlq $0x4, %rdi
addq %rdx, %rdi
addq %rcx, %rdi
movq %r13, %rsi
callq 0x3ac524
movq (%rax), %rdx
movq %r14, %rdi
movq %r13, %rsi
callq 0x1eba52
movl %eax, %ebx
jmp 0x3ac334
movq 0x48(%r12), %rax
movq %rax, %rcx
subq 0x28(%r12), %rcx
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
shlq $0x4, %rcx
movq 0x20(%r12), %rax
movq 0x30(%r12), %rdx
subq 0x38(%r12), %rdx
sarq $0x5, %rdx
subq 0x10(%r12), %rax
sarq $0x5, %rax
addq %rdx, %rax
addq %rcx, %rax
leaq 0x10(%rsp), %rdx
movq %rax, (%rdx)
movq %r14, %rdi
movq %r13, %rsi
callq 0x3ab568
leaq 0x68(%rsp), %rdi
callq 0x266c02
xorl %ebx, %ebx
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x3abad2
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x1200c0
jmp 0x3abad2
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x266c02
jmp 0x3ac431
jmp 0x3ac42e
jmp 0x3ac42e
jmp 0x3ac3f1
jmp 0x3ac40d
jmp 0x3ac42e
jmp 0x3ac42e
jmp 0x3ac42e
jmp 0x3ac3f1
jmp 0x3ac40d
jmp 0x3ac42e
jmp 0x3ac42e
jmp 0x3ac487
jmp 0x3ac487
jmp 0x3ac42e
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x266b98
jmp 0x3ac431
jmp 0x3ac487
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x266b98
jmp 0x3ac505
movq %r12, %rbp
movq %rax, %rbx
jmp 0x3ac478
movq %rax, %rbx
jmp 0x3ac4c8
movq %rax, %rbx
jmp 0x3ac4e9
movq %rax, %rbx
jmp 0x3ac50f
movq %rax, %rbx
movq 0x68(%rsp), %rdi
cmpq %r13, %rdi
je 0x3ac410
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x1200c0
jmp 0x3ac410
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3ac431
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x1200c0
jmp 0x3ac431
movq %rax, %rbx
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x3ac505
movq 0x48(%rsp), %rsi
jmp 0x3ac4fd
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x266b98
movq 0x160(%rsp), %rdi
cmpq %r15, %rdi
je 0x3ac478
movq 0x170(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x140(%rsp), %rdi
cmpq %rbp, %rdi
jne 0x3ac49c
jmp 0x3ac4ac
movq %rax, %rbx
jmp 0x3ac505
movq %rax, %rbx
movq 0x140(%rsp), %rdi
cmpq %r12, %rdi
je 0x3ac4ac
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3ac4c8
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x198(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3ac4e9
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x1200c0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x3ac505
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x1200c0
leaq 0x8(%rsp), %rdi
callq 0x1ed354
leaq 0x120(%rsp), %rdi
callq 0x1ed306
movq %rbx, %rdi
callq 0x120330