// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::expression_generator<double>::vector_element(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, exprtk::details::vector_holder<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
inline expression_node_ptr vector_element(const std::string&  symbol,
                                                   vector_holder_ptr   vector_base,
                                                   expression_node_ptr vec_node,
                                                   expression_node_ptr index)
         {
            expression_node_ptr result = error_node();
            std::string node_name = "Unknown";

            if (details::is_constant_node(index))
            {
               const std::size_t vec_index = static_cast<std::size_t>(details::numeric::to_int64(index->value()));

               details::free_node(*node_allocator_,index);

               if (vec_index >= vector_base->size())
               {
                  parser_->set_error(parser_error::make_error(
                     parser_error::e_parser,
                     token_t(),
                     "ERR269 - Index of " + details::to_str(vec_index) + " out of range for "
                     "vector '" + symbol + "' of size " + details::to_str(vector_base->size()),
                     exprtk_error_location));

                  details::free_node(*node_allocator_,vec_node);

                  return error_node();
               }

               if (vector_base->rebaseable())
               {
                  vector_access_runtime_check_ptr rtc = get_vector_access_runtime_check();

                  result = (rtc) ?
                     node_allocator_->allocate<rebasevector_celem_rtc_node_t>(vec_node, vec_index, vector_base, rtc) :
                     node_allocator_->allocate<rebasevector_celem_node_t    >(vec_node, vec_index, vector_base     ) ;

                  node_name = (rtc) ?
                     "rebasevector_elem_rtc_node_t" :
                     "rebasevector_elem_node_t"     ;

                  if (result && result->valid())
                  {
                     return result;
                  }

                  parser_->set_error(parser_error::make_error(
                     parser_error::e_synthesis,
                     token_t(),
                     "ERR270 - Failed to synthesize node: " + node_name + " for vector: " + symbol,
                     exprtk_error_location));

                  details::free_node(*node_allocator_, result);
                  return error_node();
               }
               else if (details::is_ivector_node(vec_node) && !details::is_vector_node(vec_node))
               {
                  vector_access_runtime_check_ptr rtc = get_vector_access_runtime_check();

                  result = (rtc) ?
                     node_allocator_->allocate<vector_celem_rtc_node_t>(vec_node, vec_index, vector_base, rtc) :
                     node_allocator_->allocate<vector_celem_node_t    >(vec_node, vec_index, vector_base     ) ;

                  node_name = (rtc) ?
                     "vector_elem_rtc_node_t" :
                     "vector_elem_node_t"     ;

                  if (result && result->valid())
                  {
                     return result;
                  }

                  parser_->set_error(parser_error::make_error(
                     parser_error::e_synthesis,
                     token_t(),
                     "ERR271 - Failed to synthesize node: " + node_name + " for vector: " + symbol,
                     exprtk_error_location));

                  details::free_node(*node_allocator_, result);
                  return error_node();
               }

               const scope_element& se = parser_->sem_.get_element(symbol,vec_index);

               if (se.index == vec_index)
               {
                  result = se.var_node;
                  details::free_node(*node_allocator_,vec_node);
               }
               else
               {
                  scope_element nse;
                  nse.name      = symbol;
                  nse.active    = true;
                  nse.ref_count = 1;
                  nse.type      = scope_element::e_vecelem;
                  nse.index     = vec_index;
                  nse.depth     = parser_->state_.scope_depth;
                  nse.data      = 0;
                  nse.var_node  = node_allocator_->allocate<variable_node_t>((*(*vector_base)[vec_index]));

                  if (!parser_->sem_.add_element(nse))
                  {
                     parser_->set_synthesis_error("Failed to add new local vector element to SEM [1]");

                     parser_->sem_.free_element(nse);

                     result = error_node();
                  }

                  assert(parser_->sem_.total_local_symb_size_bytes() <= parser_->settings().max_total_local_symbol_size_bytes());

                  details::free_node(*node_allocator_,vec_node);

                  exprtk_debug(("vector_element() - INFO - Added new local vector element: %s\n", nse.name.c_str()));

                  parser_->state_.activate_side_effect("vector_element()");

                  result = nse.var_node;
                  node_name = "variable_node_t";
               }
            }
            else
            {
               vector_access_runtime_check_ptr rtc = get_vector_access_runtime_check();

               if (vector_base->rebaseable())
               {
                  result = (rtc) ?
                     node_allocator_->allocate<rebasevector_elem_rtc_node_t>(vec_node, index, vector_base, rtc) :
                     node_allocator_->allocate<rebasevector_elem_node_t    >(vec_node, index, vector_base     ) ;

                  node_name = (rtc) ?
                     "rebasevector_elem_rtc_node_t" :
                     "rebasevector_elem_node_t"     ;
               }
               else
               {
                  result = rtc ?
                     node_allocator_->allocate<vector_elem_rtc_node_t>(vec_node, index, vector_base, rtc) :
                     node_allocator_->allocate<vector_elem_node_t    >(vec_node, index, vector_base     ) ;

                  node_name = (rtc) ?
                     "vector_elem_rtc_node_t" :
                     "vector_elem_node_t"     ;
               }
            }

            if (result && result->valid())
            {
               return result;
            }

            parser_->set_error(parser_error::make_error(
               parser_error::e_synthesis,
               token_t(),
               "ERR272 - Failed to synthesize node: " + node_name,
               exprtk_error_location));

            details::free_node(*node_allocator_, result);
            return error_node();
         }

// Assembly:
subq $0x8d8, %rsp            # imm = 0x8D8
movq %rdi, 0x8c8(%rsp)
movq %rsi, 0x8c0(%rsp)
movq %rdx, 0x8b8(%rsp)
movq %rcx, 0x8b0(%rsp)
movq %r8, 0x8a8(%rsp)
movq 0x8c8(%rsp), %rax
movq %rax, 0x148(%rsp)
callq 0x2821f0
movq %rax, 0x8a0(%rsp)
leaq 0x87f(%rsp), %rdi
movq %rdi, 0x150(%rsp)
callq 0x11b6f0
movq 0x150(%rsp), %rdx
leaq 0x8dcea(%rip), %rsi     # 0x5a7c1a
leaq 0x880(%rsp), %rdi
callq 0x134520
jmp 0x519f3f
leaq 0x87f(%rsp), %rdi
callq 0x11b820
movq 0x8a8(%rsp), %rdi
callq 0x39cbf0
movb %al, 0x147(%rsp)
jmp 0x519f62
movb 0x147(%rsp), %al
testb $0x1, %al
jne 0x519f72
jmp 0x51afdb
movq 0x8a8(%rsp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movsd %xmm0, 0x138(%rsp)
jmp 0x519f8e
movsd 0x138(%rsp), %xmm0
callq 0x3eed30
movq %rax, 0x130(%rsp)
jmp 0x519fa6
movq 0x148(%rsp), %rax
movq 0x130(%rsp), %rcx
movq %rcx, 0x860(%rsp)
movq 0x8(%rax), %rdi
leaq 0x8a8(%rsp), %rsi
callq 0x284bd0
jmp 0x519fd1
movq 0x860(%rsp), %rax
movq %rax, 0x120(%rsp)
movq 0x8b8(%rsp), %rdi
callq 0x3a19c0
movq %rax, 0x128(%rsp)
jmp 0x519ff8
movq 0x120(%rsp), %rax
movq 0x128(%rsp), %rcx
cmpq %rcx, %rax
jb 0x51a425
movq 0x148(%rsp), %rax
movq 0x68(%rax), %rax
movq %rax, 0x118(%rsp)
leaq 0x788(%rsp), %rdi
callq 0x251250
jmp 0x51a034
movq 0x860(%rsp), %rsi
leaq 0x6c8(%rsp), %rdi
callq 0x374900
jmp 0x51a04b
leaq 0x8ff13(%rip), %rsi     # 0x5a9f65
leaq 0x6e8(%rsp), %rdi
leaq 0x6c8(%rsp), %rdx
callq 0x29dd70
jmp 0x51a069
leaq 0x8feda(%rip), %rdx     # 0x5a9f4a
leaq 0x708(%rsp), %rdi
leaq 0x6e8(%rsp), %rsi
callq 0x29dc30
jmp 0x51a087
movq 0x8c0(%rsp), %rdx
leaq 0x728(%rsp), %rdi
leaq 0x708(%rsp), %rsi
callq 0x378400
jmp 0x51a0a6
leaq 0x8f3f4(%rip), %rdx     # 0x5a94a1
leaq 0x748(%rsp), %rdi
leaq 0x728(%rsp), %rsi
callq 0x29dc30
jmp 0x51a0c4
movq 0x8b8(%rsp), %rdi
callq 0x3a19c0
movq %rax, 0x110(%rsp)
jmp 0x51a0db
movq 0x110(%rsp), %rsi
leaq 0x6a8(%rsp), %rdi
callq 0x374900
jmp 0x51a0f2
leaq 0x768(%rsp), %rdi
leaq 0x748(%rsp), %rsi
leaq 0x6a8(%rsp), %rdx
callq 0x29dc80
jmp 0x51a111
leaq 0x668(%rsp), %rdi
movl $0x84fe, %esi           # imm = 0x84FE
callq 0x371f20
jmp 0x51a125
leaq 0x8cde7(%rip), %rsi     # 0x5a6f13
leaq 0x688(%rsp), %rdi
leaq 0x668(%rsp), %rdx
callq 0x29dd70
jmp 0x51a143
leaq 0x7b8(%rsp), %rdi
movl $0x9, %esi
leaq 0x788(%rsp), %rdx
leaq 0x768(%rsp), %rcx
leaq 0x688(%rsp), %r8
callq 0x3741e0
jmp 0x51a16f
movq 0x118(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
callq 0x371e40
jmp 0x51a186
leaq 0x7b8(%rsp), %rdi
callq 0x371330
leaq 0x688(%rsp), %rdi
callq 0x11b838
leaq 0x668(%rsp), %rdi
callq 0x11b838
leaq 0x768(%rsp), %rdi
callq 0x11b838
leaq 0x6a8(%rsp), %rdi
callq 0x11b838
leaq 0x748(%rsp), %rdi
callq 0x11b838
leaq 0x728(%rsp), %rdi
callq 0x11b838
leaq 0x708(%rsp), %rdi
callq 0x11b838
leaq 0x6e8(%rsp), %rdi
callq 0x11b838
leaq 0x6c8(%rsp), %rdi
callq 0x11b838
leaq 0x788(%rsp), %rdi
callq 0x2512e0
movq 0x148(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0x284bd0
jmp 0x51a230
callq 0x2821f0
movq %rax, 0x8d0(%rsp)
movl $0x1, 0x664(%rsp)
jmp 0x51b3d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
leaq 0x87f(%rsp), %rdi
callq 0x11b820
jmp 0x51b3fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51b3ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51a413
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51a406
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51a3f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51a3ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51a3df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51a3d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51a3c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51a3b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51a3ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51a39e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
leaq 0x7b8(%rsp), %rdi
callq 0x371330
leaq 0x688(%rsp), %rdi
callq 0x11b838
leaq 0x668(%rsp), %rdi
callq 0x11b838
leaq 0x768(%rsp), %rdi
callq 0x11b838
leaq 0x6a8(%rsp), %rdi
callq 0x11b838
leaq 0x748(%rsp), %rdi
callq 0x11b838
leaq 0x728(%rsp), %rdi
callq 0x11b838
leaq 0x708(%rsp), %rdi
callq 0x11b838
leaq 0x6e8(%rsp), %rdi
callq 0x11b838
leaq 0x6c8(%rsp), %rdi
callq 0x11b838
leaq 0x788(%rsp), %rdi
callq 0x2512e0
jmp 0x51b3ef
movq 0x8b8(%rsp), %rdi
callq 0x3b8910
movb %al, 0x10f(%rsp)
jmp 0x51a43b
movb 0x10f(%rsp), %al
testb $0x1, %al
jne 0x51a44b
jmp 0x51a824
movq 0x148(%rsp), %rdi
callq 0x51b410
movq %rax, 0x100(%rsp)
jmp 0x51a462
movq 0x100(%rsp), %rax
movq %rax, 0x658(%rsp)
cmpq $0x0, 0x658(%rsp)
je 0x51a4ca
movq 0x148(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x8b0(%rsp), %rsi
leaq 0x860(%rsp), %rdx
leaq 0x8b8(%rsp), %rcx
leaq 0x658(%rsp), %r8
callq 0x51b430
movq %rax, 0xf8(%rsp)
jmp 0x51a4b8
movq 0xf8(%rsp), %rax
movq %rax, 0xf0(%rsp)
jmp 0x51a50f
movq 0x148(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x8b0(%rsp), %rsi
leaq 0x860(%rsp), %rdx
leaq 0x8b8(%rsp), %rcx
callq 0x51b4e0
movq %rax, 0xe8(%rsp)
jmp 0x51a4fd
movq 0xe8(%rsp), %rax
movq %rax, 0xf0(%rsp)
jmp 0x51a50f
movq 0xf0(%rsp), %rax
movq %rax, 0x8a0(%rsp)
movq 0x658(%rsp), %rax
testq %rax, %rax
leaq 0x8fa47(%rip), %rax     # 0x5a9f78
leaq 0x8fa5d(%rip), %rsi     # 0x5a9f95
cmovneq %rax, %rsi
leaq 0x880(%rsp), %rdi
callq 0x11b340
jmp 0x51a54b
cmpq $0x0, 0x8a0(%rsp)
je 0x51a59d
movq 0x8a0(%rsp), %rdi
movq (%rdi), %rax
movq 0x30(%rax), %rax
callq *%rax
movb %al, 0xe7(%rsp)
jmp 0x51a570
movb 0xe7(%rsp), %al
testb $0x1, %al
jne 0x51a57d
jmp 0x51a59d
movq 0x8a0(%rsp), %rax
movq %rax, 0x8d0(%rsp)
movl $0x1, 0x664(%rsp)
jmp 0x51b3d2
movq 0x148(%rsp), %rax
movq 0x68(%rax), %rax
movq %rax, 0xd8(%rsp)
leaq 0x580(%rsp), %rdi
callq 0x251250
jmp 0x51a5c0
leaq 0x8f9e7(%rip), %rsi     # 0x5a9fae
leaq 0x520(%rsp), %rdi
leaq 0x880(%rsp), %rdx
callq 0x3784f0
jmp 0x51a5de
leaq 0x8f20d(%rip), %rdx     # 0x5a97f2
leaq 0x540(%rsp), %rdi
leaq 0x520(%rsp), %rsi
callq 0x29dc30
jmp 0x51a5fc
movq 0x8c0(%rsp), %rdx
leaq 0x560(%rsp), %rdi
leaq 0x540(%rsp), %rsi
callq 0x378400
jmp 0x51a61b
leaq 0x4e0(%rsp), %rdi
movl $0x851a, %esi           # imm = 0x851A
callq 0x371f20
jmp 0x51a62f
leaq 0x8c8dd(%rip), %rsi     # 0x5a6f13
leaq 0x500(%rsp), %rdi
leaq 0x4e0(%rsp), %rdx
callq 0x29dd70
jmp 0x51a64d
leaq 0x5b0(%rsp), %rdi
movl $0x7, %esi
leaq 0x580(%rsp), %rdx
leaq 0x560(%rsp), %rcx
leaq 0x500(%rsp), %r8
callq 0x3741e0
jmp 0x51a679
movq 0xd8(%rsp), %rdi
leaq 0x5b0(%rsp), %rsi
callq 0x371e40
jmp 0x51a690
leaq 0x5b0(%rsp), %rdi
callq 0x371330
leaq 0x500(%rsp), %rdi
callq 0x11b838
leaq 0x4e0(%rsp), %rdi
callq 0x11b838
leaq 0x560(%rsp), %rdi
callq 0x11b838
leaq 0x540(%rsp), %rdi
callq 0x11b838
leaq 0x520(%rsp), %rdi
callq 0x11b838
leaq 0x580(%rsp), %rdi
callq 0x2512e0
movq 0x148(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x8a0(%rsp), %rsi
callq 0x284bd0
jmp 0x51a706
callq 0x2821f0
movq %rax, 0x8d0(%rsp)
movl $0x1, 0x664(%rsp)
jmp 0x51b3d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51a812
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51a805
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51a7f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51a7eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51a7de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51a7d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
leaq 0x5b0(%rsp), %rdi
callq 0x371330
leaq 0x500(%rsp), %rdi
callq 0x11b838
leaq 0x4e0(%rsp), %rdi
callq 0x11b838
leaq 0x560(%rsp), %rdi
callq 0x11b838
leaq 0x540(%rsp), %rdi
callq 0x11b838
leaq 0x520(%rsp), %rdi
callq 0x11b838
leaq 0x580(%rsp), %rdi
callq 0x2512e0
jmp 0x51b3ef
movq 0x8b0(%rsp), %rdi
callq 0x39f460
movb %al, 0xd7(%rsp)
jmp 0x51a83a
movb 0xd7(%rsp), %al
testb $0x1, %al
jne 0x51a84a
jmp 0x51ac4a
movq 0x8b0(%rsp), %rdi
callq 0x3b7740
movb %al, 0xd6(%rsp)
jmp 0x51a860
movb 0xd6(%rsp), %al
testb $0x1, %al
jne 0x51ac4a
jmp 0x51a871
movq 0x148(%rsp), %rdi
callq 0x51b410
movq %rax, 0xc8(%rsp)
jmp 0x51a888
movq 0xc8(%rsp), %rax
movq %rax, 0x4d8(%rsp)
cmpq $0x0, 0x4d8(%rsp)
je 0x51a8f0
movq 0x148(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x8b0(%rsp), %rsi
leaq 0x860(%rsp), %rdx
leaq 0x8b8(%rsp), %rcx
leaq 0x4d8(%rsp), %r8
callq 0x51b580
movq %rax, 0xc0(%rsp)
jmp 0x51a8de
movq 0xc0(%rsp), %rax
movq %rax, 0xb8(%rsp)
jmp 0x51a935
movq 0x148(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x8b0(%rsp), %rsi
leaq 0x860(%rsp), %rdx
leaq 0x8b8(%rsp), %rcx
callq 0x51b630
movq %rax, 0xb0(%rsp)
jmp 0x51a923
movq 0xb0(%rsp), %rax
movq %rax, 0xb8(%rsp)
jmp 0x51a935
movq 0xb8(%rsp), %rax
movq %rax, 0x8a0(%rsp)
movq 0x4d8(%rsp), %rax
testq %rax, %rax
leaq 0x8f627(%rip), %rax     # 0x5a9f7e
leaq 0x8f63d(%rip), %rsi     # 0x5a9f9b
cmovneq %rax, %rsi
leaq 0x880(%rsp), %rdi
callq 0x11b340
jmp 0x51a971
cmpq $0x0, 0x8a0(%rsp)
je 0x51a9c3
movq 0x8a0(%rsp), %rdi
movq (%rdi), %rax
movq 0x30(%rax), %rax
callq *%rax
movb %al, 0xaf(%rsp)
jmp 0x51a996
movb 0xaf(%rsp), %al
testb $0x1, %al
jne 0x51a9a3
jmp 0x51a9c3
movq 0x8a0(%rsp), %rax
movq %rax, 0x8d0(%rsp)
movl $0x1, 0x664(%rsp)
jmp 0x51b3d2
movq 0x148(%rsp), %rax
movq 0x68(%rax), %rax
movq %rax, 0xa0(%rsp)
leaq 0x400(%rsp), %rdi
callq 0x251250
jmp 0x51a9e6
leaq 0x8f5e6(%rip), %rsi     # 0x5a9fd3
leaq 0x3a0(%rsp), %rdi
leaq 0x880(%rsp), %rdx
callq 0x3784f0
jmp 0x51aa04
leaq 0x8ede7(%rip), %rdx     # 0x5a97f2
leaq 0x3c0(%rsp), %rdi
leaq 0x3a0(%rsp), %rsi
callq 0x29dc30
jmp 0x51aa22
movq 0x8c0(%rsp), %rdx
leaq 0x3e0(%rsp), %rdi
leaq 0x3c0(%rsp), %rsi
callq 0x378400
jmp 0x51aa41
leaq 0x360(%rsp), %rdi
movl $0x8534, %esi           # imm = 0x8534
callq 0x371f20
jmp 0x51aa55
leaq 0x8c4b7(%rip), %rsi     # 0x5a6f13
leaq 0x380(%rsp), %rdi
leaq 0x360(%rsp), %rdx
callq 0x29dd70
jmp 0x51aa73
leaq 0x430(%rsp), %rdi
movl $0x7, %esi
leaq 0x400(%rsp), %rdx
leaq 0x3e0(%rsp), %rcx
leaq 0x380(%rsp), %r8
callq 0x3741e0
jmp 0x51aa9f
movq 0xa0(%rsp), %rdi
leaq 0x430(%rsp), %rsi
callq 0x371e40
jmp 0x51aab6
leaq 0x430(%rsp), %rdi
callq 0x371330
leaq 0x380(%rsp), %rdi
callq 0x11b838
leaq 0x360(%rsp), %rdi
callq 0x11b838
leaq 0x3e0(%rsp), %rdi
callq 0x11b838
leaq 0x3c0(%rsp), %rdi
callq 0x11b838
leaq 0x3a0(%rsp), %rdi
callq 0x11b838
leaq 0x400(%rsp), %rdi
callq 0x2512e0
movq 0x148(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x8a0(%rsp), %rsi
callq 0x284bd0
jmp 0x51ab2c
callq 0x2821f0
movq %rax, 0x8d0(%rsp)
movl $0x1, 0x664(%rsp)
jmp 0x51b3d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51ac38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51ac2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51ac1e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51ac11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51ac04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51abf7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
leaq 0x430(%rsp), %rdi
callq 0x371330
leaq 0x380(%rsp), %rdi
callq 0x11b838
leaq 0x360(%rsp), %rdi
callq 0x11b838
leaq 0x3e0(%rsp), %rdi
callq 0x11b838
leaq 0x3c0(%rsp), %rdi
callq 0x11b838
leaq 0x3a0(%rsp), %rdi
callq 0x11b838
leaq 0x400(%rsp), %rdi
callq 0x2512e0
jmp 0x51b3ef
jmp 0x51ac4c
movq 0x148(%rsp), %rax
movq 0x68(%rax), %rdi
addq $0x530, %rdi            # imm = 0x530
movq 0x8c0(%rsp), %rsi
movq 0x860(%rsp), %rdx
callq 0x4e82a0
movq %rax, 0x98(%rsp)
jmp 0x51ac7e
movq 0x98(%rsp), %rax
movq %rax, 0x358(%rsp)
movq 0x358(%rsp), %rax
movq 0x28(%rax), %rax
cmpq 0x860(%rsp), %rax
jne 0x51acd8
movq 0x148(%rsp), %rax
movq 0x358(%rsp), %rcx
movq 0x58(%rcx), %rcx
movq %rcx, 0x8a0(%rsp)
movq 0x8(%rax), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0x284bd0
jmp 0x51acd3
jmp 0x51afd6
leaq 0x2e8(%rsp), %rdi
callq 0x2535d0
jmp 0x51ace7
movq 0x8c0(%rsp), %rsi
leaq 0x2e8(%rsp), %rdi
callq 0x11b7c0
jmp 0x51acfe
movq 0x148(%rsp), %rax
movb $0x1, 0x334(%rsp)
movq $0x1, 0x320(%rsp)
movl $0x4, 0x330(%rsp)
movq 0x860(%rsp), %rcx
movq %rcx, 0x310(%rsp)
movq 0x68(%rax), %rcx
movq 0x3b0(%rcx), %rcx
movq %rcx, 0x318(%rsp)
movq $0x0, 0x338(%rsp)
movq 0x8(%rax), %rax
movq %rax, 0x88(%rsp)
movq 0x8b8(%rsp), %rdi
leaq 0x860(%rsp), %rsi
callq 0x513f40
movq %rax, 0x90(%rsp)
jmp 0x51ad7f
movq 0x90(%rsp), %rsi
movq 0x88(%rsp), %rdi
callq 0x4e8450
movq %rax, 0x80(%rsp)
jmp 0x51ad9e
movq 0x148(%rsp), %rax
movq 0x80(%rsp), %rcx
movq %rcx, 0x340(%rsp)
movq 0x68(%rax), %rdi
addq $0x530, %rdi            # imm = 0x530
leaq 0x2e8(%rsp), %rsi
callq 0x4e84d0
movb %al, 0x7f(%rsp)
jmp 0x51add4
movb 0x7f(%rsp), %al
testb $0x1, %al
jne 0x51aee1
jmp 0x51ade2
movq 0x148(%rsp), %rax
movq 0x68(%rax), %rax
movq %rax, 0x68(%rsp)
leaq 0x2c7(%rsp), %rdi
movq %rdi, 0x70(%rsp)
callq 0x11b6f0
movq 0x70(%rsp), %rdx
leaq 0x8f1e7(%rip), %rsi     # 0x5a9ff8
leaq 0x2c8(%rsp), %rdi
callq 0x134520
jmp 0x51ae20
movq 0x68(%rsp), %rdi
leaq 0x2c8(%rsp), %rsi
callq 0x3e7640
jmp 0x51ae34
leaq 0x2c8(%rsp), %rdi
callq 0x11b838
leaq 0x2c7(%rsp), %rdi
callq 0x11b820
movq 0x148(%rsp), %rax
movq 0x68(%rax), %rdi
addq $0x530, %rdi            # imm = 0x530
leaq 0x2e8(%rsp), %rsi
callq 0x3745b0
jmp 0x51ae70
callq 0x2821f0
movq %rax, 0x8a0(%rsp)
jmp 0x51aee1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51afc4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51aecf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
leaq 0x2c8(%rsp), %rdi
callq 0x11b838
leaq 0x2c7(%rsp), %rdi
callq 0x11b820
jmp 0x51afc4
movq 0x148(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0x284bd0
jmp 0x51aefc
movq 0x148(%rsp), %rax
movq 0x68(%rax), %rax
addq $0x3a8, %rax            # imm = 0x3A8
movq %rax, 0x58(%rsp)
leaq 0x29f(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x11b6f0
movq 0x60(%rsp), %rdx
leaq 0x8f0f9(%rip), %rsi     # 0x5aa02a
leaq 0x2a0(%rsp), %rdi
callq 0x134520
jmp 0x51af40
movq 0x58(%rsp), %rdi
leaq 0x2a0(%rsp), %rsi
movq %rsi, 0x50(%rsp)
callq 0x3eb500
movq 0x50(%rsp), %rdi
callq 0x11b838
leaq 0x29f(%rsp), %rdi
callq 0x11b820
movq 0x340(%rsp), %rax
movq %rax, 0x8a0(%rsp)
leaq 0x8f0b6(%rip), %rsi     # 0x5aa03b
leaq 0x880(%rsp), %rdi
callq 0x11b340
jmp 0x51af94
leaq 0x2e8(%rsp), %rdi
callq 0x2538b0
jmp 0x51afd6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
leaq 0x29f(%rsp), %rdi
callq 0x11b820
leaq 0x2e8(%rsp), %rdi
callq 0x2538b0
jmp 0x51b3ef
jmp 0x51b1ad
movq 0x148(%rsp), %rdi
callq 0x51b410
movq %rax, 0x48(%rsp)
jmp 0x51afef
movq 0x48(%rsp), %rax
movq %rax, 0x290(%rsp)
movq 0x8b8(%rsp), %rdi
callq 0x3b8910
movb %al, 0x47(%rsp)
jmp 0x51b00f
movb 0x47(%rsp), %al
testb $0x1, %al
jne 0x51b01c
jmp 0x51b0e5
cmpq $0x0, 0x290(%rsp)
je 0x51b06b
movq 0x148(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x8b0(%rsp), %rsi
leaq 0x8a8(%rsp), %rdx
leaq 0x8b8(%rsp), %rcx
leaq 0x290(%rsp), %r8
callq 0x51b6d0
movq %rax, 0x38(%rsp)
jmp 0x51b05f
movq 0x38(%rsp), %rax
movq %rax, 0x30(%rsp)
jmp 0x51b0a7
movq 0x148(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x8b0(%rsp), %rsi
leaq 0x8a8(%rsp), %rdx
leaq 0x8b8(%rsp), %rcx
callq 0x51b780
movq %rax, 0x28(%rsp)
jmp 0x51b09b
movq 0x28(%rsp), %rax
movq %rax, 0x30(%rsp)
jmp 0x51b0a7
movq 0x30(%rsp), %rax
movq %rax, 0x8a0(%rsp)
movq 0x290(%rsp), %rax
testq %rax, %rax
leaq 0x8eeb2(%rip), %rax     # 0x5a9f78
leaq 0x8eec8(%rip), %rsi     # 0x5a9f95
cmovneq %rax, %rsi
leaq 0x880(%rsp), %rdi
callq 0x11b340
jmp 0x51b0e0
jmp 0x51b1ab
cmpq $0x0, 0x290(%rsp)
je 0x51b134
movq 0x148(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x8b0(%rsp), %rsi
leaq 0x8a8(%rsp), %rdx
leaq 0x8b8(%rsp), %rcx
leaq 0x290(%rsp), %r8
callq 0x51b820
movq %rax, 0x20(%rsp)
jmp 0x51b128
movq 0x20(%rsp), %rax
movq %rax, 0x18(%rsp)
jmp 0x51b170
movq 0x148(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x8b0(%rsp), %rsi
leaq 0x8a8(%rsp), %rdx
leaq 0x8b8(%rsp), %rcx
callq 0x51b8d0
movq %rax, 0x10(%rsp)
jmp 0x51b164
movq 0x10(%rsp), %rax
movq %rax, 0x18(%rsp)
jmp 0x51b170
movq 0x18(%rsp), %rax
movq %rax, 0x8a0(%rsp)
movq 0x290(%rsp), %rax
testq %rax, %rax
leaq 0x8edef(%rip), %rax     # 0x5a9f7e
leaq 0x8ee05(%rip), %rsi     # 0x5a9f9b
cmovneq %rax, %rsi
leaq 0x880(%rsp), %rdi
callq 0x11b340
jmp 0x51b1a9
jmp 0x51b1ab
jmp 0x51b1ad
cmpq $0x0, 0x8a0(%rsp)
je 0x51b1f9
movq 0x8a0(%rsp), %rdi
movq (%rdi), %rax
movq 0x30(%rax), %rax
callq *%rax
movb %al, 0xf(%rsp)
jmp 0x51b1cf
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0x51b1d9
jmp 0x51b1f9
movq 0x8a0(%rsp), %rax
movq %rax, 0x8d0(%rsp)
movl $0x1, 0x664(%rsp)
jmp 0x51b3d2
movq 0x148(%rsp), %rax
movq 0x68(%rax), %rax
movq %rax, (%rsp)
leaq 0x1b8(%rsp), %rdi
callq 0x251250
jmp 0x51b218
leaq 0x8ee2c(%rip), %rsi     # 0x5aa04b
leaq 0x198(%rsp), %rdi
leaq 0x880(%rsp), %rdx
callq 0x3784f0
jmp 0x51b236
leaq 0x158(%rsp), %rdi
movl $0x8585, %esi           # imm = 0x8585
callq 0x371f20
jmp 0x51b24a
leaq 0x8bcc2(%rip), %rsi     # 0x5a6f13
leaq 0x178(%rsp), %rdi
leaq 0x158(%rsp), %rdx
callq 0x29dd70
jmp 0x51b268
leaq 0x1e8(%rsp), %rdi
movl $0x7, %esi
leaq 0x1b8(%rsp), %rdx
leaq 0x198(%rsp), %rcx
leaq 0x178(%rsp), %r8
callq 0x3741e0
jmp 0x51b294
movq (%rsp), %rdi
leaq 0x1e8(%rsp), %rsi
callq 0x371e40
jmp 0x51b2a7
leaq 0x1e8(%rsp), %rdi
callq 0x371330
leaq 0x178(%rsp), %rdi
callq 0x11b838
leaq 0x158(%rsp), %rdi
callq 0x11b838
leaq 0x198(%rsp), %rdi
callq 0x11b838
leaq 0x1b8(%rsp), %rdi
callq 0x2512e0
movq 0x148(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x8a0(%rsp), %rsi
callq 0x284bd0
jmp 0x51b303
callq 0x2821f0
movq %rax, 0x8d0(%rsp)
movl $0x1, 0x664(%rsp)
jmp 0x51b3d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51b3c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51b3b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51b3a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
jmp 0x51b39c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x870(%rsp)
movl %eax, 0x86c(%rsp)
leaq 0x1e8(%rsp), %rdi
callq 0x371330
leaq 0x178(%rsp), %rdi
callq 0x11b838
leaq 0x158(%rsp), %rdi
callq 0x11b838
leaq 0x198(%rsp), %rdi
callq 0x11b838
leaq 0x1b8(%rsp), %rdi
callq 0x2512e0
jmp 0x51b3ef
leaq 0x880(%rsp), %rdi
callq 0x11b838
movq 0x8d0(%rsp), %rax
addq $0x8d8, %rsp            # imm = 0x8D8
retq
leaq 0x880(%rsp), %rdi
callq 0x11b838
movq 0x870(%rsp), %rdi
callq 0x11b4e0
nopl (%rax)