// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/seed-extend.c
// Function: gt_extend_sesp
static bool gt_extend_sesp(bool forxdrop,
                           void *info,
                           const GtSeqorEncseq *dbes,
                           const GtSeqorEncseq *queryes,
                           const GtSeedextendSeqpair *sesp)
{
  GtProcessinfo_and_querymatchspaceptr *info_querymatch
    = (GtProcessinfo_and_querymatchspaceptr *) info;
  GtGreedyextendmatchinfo *greedyextendmatchinfo = NULL;
  GtXdropmatchinfo *xdropmatchinfo = NULL;
  GtUword u_left_ext, v_left_ext, u_right_ext, v_right_ext, r_urightbound;
  GtXdropscore total_score = 0;
  GtFTsequenceResources ufsr, vfsr;
  GtFtPolished_point left_best_polished_point = {0,0,0,0,0},
                     right_best_polished_point = {0,0,0,0,0};
  const bool rightextension = true;
  const GtUword vseqstartpos = queryes->encseq != NULL
                                  ? sesp->query_seqstart : 0;

  if (sesp->same_encseq && sesp->dbseqnum == sesp->queryseqnum &&
      sesp->dbstart_relative + sesp->seedlength - 1 >=
      sesp->querystart_relative)
  {
    return NULL;
  }
  if (forxdrop)
  {
    xdropmatchinfo = info_querymatch->processinfo;
    xdropmatchinfo->best_left.ivalue = 0;
    xdropmatchinfo->best_left.jvalue = 0;
    xdropmatchinfo->best_left.score = 0;
    xdropmatchinfo->best_right.ivalue = 0;
    xdropmatchinfo->best_right.jvalue = 0;
    xdropmatchinfo->best_right.score = 0;
  } else
  {
    greedyextendmatchinfo = info_querymatch->processinfo;
    gt_greedy_extend_init(&ufsr,
                          &vfsr,
                          dbes,
                          queryes,
                          sesp->query_readmode,
                          sesp->query_seqlen,
                          greedyextendmatchinfo);
  }
  if (sesp->dbstart_relative > 0 && sesp->querystart_relative > 0)
  { /* there is something to align on the left of the seed */
    const GtUword uoffset = sesp->db_seqstart,
                  ulen = sesp->dbstart_relative,
      /* stop extension at left instance of seed or querystart,
         whichever is larger */
      r_voffset = (sesp->same_encseq &&
                   sesp->dbseqnum == sesp->queryseqnum)
                     ? sesp->dbstart_relative + sesp->seedlength : 0;
    GtUword vlen;

    gt_assert(r_voffset <= sesp->querystart_relative);
    vlen = sesp->querystart_relative - r_voffset;
    if (ulen > 0 && vlen > 0)
    {
      if (forxdrop)
      {
        gt_seqabstract_reinit_generic(!rightextension,
                                      GT_READMODE_FORWARD,
                                      xdropmatchinfo->useq,
                                      dbes,
                                      ulen,
                                      uoffset,
                                      sesp->db_seqstart,
                                      sesp->dbseqlength);
        gt_seqabstract_reinit_generic(!rightextension,
                                      sesp->query_readmode,
                                      xdropmatchinfo->vseq,
                                      queryes,
                                      vlen,
                                      sesp->query_seqstart + r_voffset,
                                      sesp->query_seqstart,
                                      sesp->query_seqlen);
  #ifdef SKDEBUG
        gt_xdrop_show_context(!rightextension,xdropmatchinfo);
  #endif
        gt_evalxdroparbitscoresextend(!rightextension,
                                      &xdropmatchinfo->best_left,
                                      xdropmatchinfo->res,
                                      xdropmatchinfo->useq,
                                      xdropmatchinfo->vseq,
                                      xdropmatchinfo->belowscore);
      } else
      {
        (void) front_prune_edist_inplace(!rightextension,
                                         &greedyextendmatchinfo->
                                            frontspace_reservoir,
                                         &left_best_polished_point,
                                         greedyextendmatchinfo->
                                             left_front_trace,
                                         greedyextendmatchinfo->pol_info,
                                         greedyextendmatchinfo->trimstrategy,
                                         greedyextendmatchinfo->history,
                                         greedyextendmatchinfo->
                                             perc_mat_history,
                                         greedyextendmatchinfo->
                                            maxalignedlendifference,
                                         greedyextendmatchinfo->showfrontinfo,
                                         sesp->seedlength,
                                         &ufsr,
                                         uoffset,
                                         ulen,
                                         /* as the readmode for the
                                            sequence u is always forward,
                                            we do not need the start position
                                            of the sequence for u. As the
                                            readmode for v can be reversed,
                                            we need the start of the sequence
                                            to correctly obtain the offset
                                            when using the reverse mode */
                                         vseqstartpos,
                                         &vfsr,
                                         sesp->query_seqstart + r_voffset,
                                         vlen,
                                         greedyextendmatchinfo->cam_generic,
                                         greedyextendmatchinfo->trimstat);
      }
    }
  }
  if (forxdrop)
  {
    u_left_ext = xdropmatchinfo->best_left.ivalue;
    v_left_ext = xdropmatchinfo->best_left.jvalue;
#ifdef SKDEBUG
    extensioncoords_show(true,!rightextension,u_left_ext,v_left_ext,
                         xdropmatchinfo->best_left.score);
#endif
  } else
  {
    u_left_ext = left_best_polished_point.row;
    gt_assert(left_best_polished_point.alignedlen >= u_left_ext);
    v_left_ext = left_best_polished_point.alignedlen - u_left_ext;
#ifdef SKDEBUG
    extensioncoords_show(false,!rightextension,u_left_ext,v_left_ext,
                         (GtWord) left_best_polished_point.distance);
#endif
  }
  if (sesp->same_encseq && sesp->dbseqnum == sesp->queryseqnum)
  {
    gt_assert(sesp->querystart_relative >= v_left_ext);
    r_urightbound = GT_MIN(sesp->dbseqlength,
                         sesp->querystart_relative - v_left_ext);
  } else
  {
    r_urightbound = sesp->dbseqlength;
  }
  if (sesp->dbstart_relative + sesp->seedlength < r_urightbound &&
      sesp->querystart_relative + sesp->seedlength < sesp->query_seqlen)
  { /* there is something to align on the right of the seed */
    /* stop extension at right instance of extended seed */
    const GtUword ulen = r_urightbound -
                         (sesp->dbstart_relative + sesp->seedlength);
    const GtUword vlen = sesp->query_seqlen -
                         (sesp->querystart_relative + sesp->seedlength);
    if (forxdrop)
    {
      gt_seqabstract_reinit_generic(rightextension,
                                    GT_READMODE_FORWARD,
                                    xdropmatchinfo->useq,
                                    dbes,
                                    ulen,
                                    sesp->db_seqstart +
                                         gt_sesp_db_seedpos(sesp) +
                                         sesp->seedlength,
                                    sesp->db_seqstart,
                                    sesp->dbseqlength);
      gt_seqabstract_reinit_generic(rightextension,
                                    sesp->query_readmode,
                                    xdropmatchinfo->vseq,
                                    queryes,
                                    vlen,
                                    sesp->query_seqstart +
                                      gt_sesp_query_seedpos(sesp) +
                                      sesp->seedlength,
                                    sesp->query_seqstart,
                                    sesp->query_seqlen);
#ifdef SKDEBUG
      gt_xdrop_show_context(rightextension,xdropmatchinfo);
#endif
      gt_evalxdroparbitscoresextend(rightextension,
                                    &xdropmatchinfo->best_right,
                                    xdropmatchinfo->res,
                                    xdropmatchinfo->useq,
                                    xdropmatchinfo->vseq,
                                    xdropmatchinfo->belowscore);
    } else
    {
      (void) front_prune_edist_inplace(rightextension,
                                       &greedyextendmatchinfo->
                                          frontspace_reservoir,
                                       &right_best_polished_point,
                                       greedyextendmatchinfo->right_front_trace,
                                       greedyextendmatchinfo->pol_info,
                                       greedyextendmatchinfo->trimstrategy,
                                       greedyextendmatchinfo->history,
                                       greedyextendmatchinfo->perc_mat_history,
                                       greedyextendmatchinfo->
                                          maxalignedlendifference,
                                       greedyextendmatchinfo->showfrontinfo,
                                       sesp->seedlength,
                                       &ufsr,
                                       sesp->db_seqstart +
                                         gt_sesp_db_seedpos(sesp) +
                                         sesp->seedlength,
                                       ulen,
                                       vseqstartpos,
                                       &vfsr,
                                       sesp->query_seqstart +
                                         gt_sesp_query_seedpos(sesp) +
                                         sesp->seedlength,
                                       vlen,
                                       greedyextendmatchinfo->cam_generic,
                                       greedyextendmatchinfo->trimstat);
    }
  }
  if (forxdrop)
  {
    u_right_ext = xdropmatchinfo->best_right.ivalue;
    v_right_ext = xdropmatchinfo->best_right.jvalue;
#ifdef SKDEBUG
    extensioncoords_show(true,rightextension,u_right_ext,v_right_ext,
                         xdropmatchinfo->best_right.score);
#endif
    total_score
      = (GtXdropscore) sesp->seedlength * xdropmatchinfo->arbitscores.mat +
        xdropmatchinfo->best_left.score +
        xdropmatchinfo->best_right.score;
  } else
  {
    u_right_ext = right_best_polished_point.row;
    gt_assert(right_best_polished_point.alignedlen >= u_right_ext);
    v_right_ext = right_best_polished_point.alignedlen - u_right_ext;
#ifdef SKDEBUG
    extensioncoords_show(false,rightextension,u_right_ext,v_right_ext,
                         (GtWord) right_best_polished_point.distance);
#endif
    if (greedyextendmatchinfo->check_extend_symmetry)
    {
      gt_assert(right_best_polished_point.alignedlen ==
                left_best_polished_point.alignedlen);
      gt_assert(u_right_ext == u_left_ext);
      gt_assert(right_best_polished_point.distance ==
                left_best_polished_point.distance);
    }
  }
  return gt_combine_extensions(
                 forxdrop,
                 info_querymatch,
                 dbes,
                 queryes,
                 sesp,
                 u_left_ext,
                 v_left_ext,
                 u_right_ext,
                 v_right_ext,
                 forxdrop ? total_score : 0,
                 forxdrop ? 0 : (left_best_polished_point.distance +
                                 right_best_polished_point.distance),
                 forxdrop ? 0 : (left_best_polished_point.max_mismatches +
                                 right_best_polished_point.max_mismatches));
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x348, %rsp            # imm = 0x348
movb %dil, %al
andb $0x1, %al
movb %al, 0x346(%rsp)
movq %rsi, 0x338(%rsp)
movq %rdx, 0x330(%rsp)
movq %rcx, 0x328(%rsp)
movq %r8, 0x320(%rsp)
movq 0x338(%rsp), %rax
movq %rax, 0x318(%rsp)
movq $0x0, 0x310(%rsp)
movq $0x0, 0x308(%rsp)
movq $0x0, 0x2d8(%rsp)
leaq 0x230(%rsp), %rdi
xorl %esi, %esi
movl $0x28, %edx
callq 0x19360
leaq 0x208(%rsp), %rdi
xorl %esi, %esi
movl $0x28, %edx
callq 0x19360
movb $0x1, 0x207(%rsp)
movq 0x328(%rsp), %rax
cmpq $0x0, 0x8(%rax)
je 0x2ada46
movq 0x320(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, 0x1c0(%rsp)
jmp 0x2ada52
xorl %eax, %eax
movq %rax, 0x1c0(%rsp)
jmp 0x2ada52
movq 0x1c0(%rsp), %rax
movq %rax, 0x1f8(%rsp)
movq 0x320(%rsp), %rax
testb $0x1, 0x4c(%rax)
je 0x2adac0
movq 0x320(%rsp), %rax
movq (%rax), %rax
movq 0x320(%rsp), %rcx
cmpq 0x20(%rcx), %rax
jne 0x2adac0
movq 0x320(%rsp), %rax
movq 0x18(%rax), %rax
movq 0x320(%rsp), %rcx
addq 0x40(%rcx), %rax
subq $0x1, %rax
movq 0x320(%rsp), %rcx
cmpq 0x38(%rcx), %rax
jb 0x2adac0
movb $0x0, 0x347(%rsp)
jmp 0x2ae94c
testb $0x1, 0x346(%rsp)
je 0x2adb3f
movq 0x318(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x308(%rsp)
movq 0x308(%rsp), %rax
movq $0x0, 0x18(%rax)
movq 0x308(%rsp), %rax
movq $0x0, 0x20(%rax)
movq 0x308(%rsp), %rax
movq $0x0, 0x28(%rax)
movq 0x308(%rsp), %rax
movq $0x0, 0x40(%rax)
movq 0x308(%rsp), %rax
movq $0x0, 0x48(%rax)
movq 0x308(%rsp), %rax
movq $0x0, 0x50(%rax)
jmp 0x2adb9b
movq 0x318(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x310(%rsp)
movq 0x330(%rsp), %rdx
movq 0x328(%rsp), %rcx
movq 0x320(%rsp), %rax
movl 0x48(%rax), %r8d
movq 0x320(%rsp), %rax
movq 0x28(%rax), %r9
movq 0x310(%rsp), %rax
leaq 0x298(%rsp), %rdi
leaq 0x258(%rsp), %rsi
movq %rax, (%rsp)
callq 0x2ac710
movq 0x320(%rsp), %rax
cmpq $0x0, 0x18(%rax)
jbe 0x2adf73
movq 0x320(%rsp), %rax
cmpq $0x0, 0x38(%rax)
jbe 0x2adf73
movq 0x320(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x1f0(%rsp)
movq 0x320(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x1e8(%rsp)
movq 0x320(%rsp), %rax
testb $0x1, 0x4c(%rax)
je 0x2adc32
movq 0x320(%rsp), %rax
movq (%rax), %rax
movq 0x320(%rsp), %rcx
cmpq 0x20(%rcx), %rax
jne 0x2adc32
movq 0x320(%rsp), %rax
movq 0x18(%rax), %rax
movq 0x320(%rsp), %rcx
addq 0x40(%rcx), %rax
movq %rax, 0x1b8(%rsp)
jmp 0x2adc3e
xorl %eax, %eax
movq %rax, 0x1b8(%rsp)
jmp 0x2adc3e
movq 0x1b8(%rsp), %rax
movq %rax, 0x1e0(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x320(%rsp), %rcx
cmpq 0x38(%rcx), %rax
jbe 0x2adc9c
movq 0x38e335(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x26839e(%rip), %rsi    # 0x516013
leaq 0x2d9f5e(%rip), %rdx    # 0x587bda
leaq 0x2d9f7e(%rip), %rcx    # 0x587c01
leaq 0x2d9a4a(%rip), %r8     # 0x5876d4
movl $0x3f9, %r9d            # imm = 0x3F9
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2adc9e
movq 0x320(%rsp), %rax
movq 0x38(%rax), %rax
subq 0x1e0(%rsp), %rax
movq %rax, 0x1d8(%rsp)
cmpq $0x0, 0x1e8(%rsp)
jbe 0x2adf71
cmpq $0x0, 0x1d8(%rsp)
jbe 0x2adf71
testb $0x1, 0x346(%rsp)
je 0x2adddf
movq 0x308(%rsp), %rax
movq 0x70(%rax), %rdx
movq 0x330(%rsp), %rcx
movq 0x1e8(%rsp), %r8
movq 0x1f0(%rsp), %r9
movq 0x320(%rsp), %rax
movq 0x10(%rax), %r10
movq 0x320(%rsp), %rax
movq 0x8(%rax), %rax
xorl %esi, %esi
movl %esi, %edi
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x2ae970
movq 0x320(%rsp), %rax
movl 0x48(%rax), %esi
movq 0x308(%rsp), %rax
movq 0x78(%rax), %rdx
movq 0x328(%rsp), %rcx
movq 0x1d8(%rsp), %r8
movq 0x320(%rsp), %rax
movq 0x30(%rax), %r9
addq 0x1e0(%rsp), %r9
movq 0x320(%rsp), %rax
movq 0x30(%rax), %r10
movq 0x320(%rsp), %rax
movq 0x28(%rax), %rax
xorl %edi, %edi
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x2ae970
movq 0x308(%rsp), %rsi
addq $0x18, %rsi
movq 0x308(%rsp), %rax
movq 0x10(%rax), %rdx
movq 0x308(%rsp), %rax
movq 0x70(%rax), %rcx
movq 0x308(%rsp), %rax
movq 0x78(%rax), %r8
movq 0x308(%rsp), %rax
movq 0x68(%rax), %r9
xorl %edi, %edi
callq 0x2f8690
jmp 0x2adf6f
movq 0x310(%rsp), %rsi
addq $0x98, %rsi
movq 0x310(%rsp), %rax
movq (%rax), %rcx
movq 0x310(%rsp), %rax
movq 0x10(%rax), %r8
movq 0x310(%rsp), %rax
movl 0xb0(%rax), %r9d
movq 0x310(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x188(%rsp)
movq 0x310(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x190(%rsp)
movq 0x310(%rsp), %rax
movq 0x20(%rax), %rax
movq %rax, 0x198(%rsp)
movq 0x310(%rsp), %rax
movb 0xbd(%rax), %al
movq 0x320(%rsp), %rdx
movq 0x40(%rdx), %rdx
movq %rdx, 0x1a8(%rsp)
movq 0x1f0(%rsp), %r13
movq 0x1e8(%rsp), %r12
movq 0x1f8(%rsp), %r15
movq 0x320(%rsp), %rdx
movq 0x30(%rdx), %rbx
addq 0x1e0(%rsp), %rbx
movq 0x1d8(%rsp), %r11
movq 0x310(%rsp), %rdx
movb 0xc2(%rdx), %r10b
movq 0x310(%rsp), %rdx
movq 0x50(%rdx), %rdx
movq %rdx, 0x1b0(%rsp)
xorl %edi, %edi
leaq 0x230(%rsp), %rdx
leaq 0x298(%rsp), %rbp
leaq 0x258(%rsp), %r14
andb $0x1, %al
movb %al, 0x1a7(%rsp)
movq 0x188(%rsp), %rax
andb $0x1, %r10b
movq %rax, (%rsp)
movq 0x190(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x198(%rsp), %rax
movq %rax, 0x10(%rsp)
movb 0x1a7(%rsp), %al
movzbl %al, %eax
movl %eax, 0x18(%rsp)
movq 0x1a8(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x1b0(%rsp), %rax
movq %rbp, 0x28(%rsp)
movq %r13, 0x30(%rsp)
movq %r12, 0x38(%rsp)
movq %r15, 0x40(%rsp)
movq %r14, 0x48(%rsp)
movq %rbx, 0x50(%rsp)
movq %r11, 0x58(%rsp)
movzbl %r10b, %r10d
movl %r10d, 0x60(%rsp)
movq %rax, 0x68(%rsp)
callq 0x4cd310
jmp 0x2adf71
jmp 0x2adf73
testb $0x1, 0x346(%rsp)
je 0x2adfa7
movq 0x308(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x300(%rsp)
movq 0x308(%rsp), %rax
movq 0x20(%rax), %rax
movq %rax, 0x2f8(%rsp)
jmp 0x2ae01b
movq 0x238(%rsp), %rax
movq %rax, 0x300(%rsp)
movq 0x230(%rsp), %rax
cmpq 0x300(%rsp), %rax
jae 0x2ae001
movq 0x38dfd0(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x268039(%rip), %rsi    # 0x516013
leaq 0x2d9c2f(%rip), %rdx    # 0x587c10
leaq 0x2d9c19(%rip), %rcx    # 0x587c01
leaq 0x2d96e5(%rip), %r8     # 0x5876d4
movl $0x448, %r9d            # imm = 0x448
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2ae003
movq 0x230(%rsp), %rax
subq 0x300(%rsp), %rax
movq %rax, 0x2f8(%rsp)
movq 0x320(%rsp), %rax
testb $0x1, 0x4c(%rax)
je 0x2ae105
movq 0x320(%rsp), %rax
movq (%rax), %rax
movq 0x320(%rsp), %rcx
cmpq 0x20(%rcx), %rax
jne 0x2ae105
jmp 0x2ae04c
movq 0x320(%rsp), %rax
movq 0x38(%rax), %rax
cmpq 0x2f8(%rsp), %rax
jae 0x2ae09a
movq 0x38df37(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x267fa0(%rip), %rsi    # 0x516013
leaq 0x2d9cd2(%rip), %rdx    # 0x587d4c
leaq 0x2d9b80(%rip), %rcx    # 0x587c01
leaq 0x2d964c(%rip), %r8     # 0x5876d4
movl $0x451, %r9d            # imm = 0x451
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2ae09c
movq 0x320(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x320(%rsp), %rcx
movq 0x38(%rcx), %rcx
subq 0x2f8(%rsp), %rcx
cmpq %rcx, %rax
jae 0x2ae0d7
movq 0x320(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x180(%rsp)
jmp 0x2ae0f3
movq 0x320(%rsp), %rax
movq 0x38(%rax), %rax
subq 0x2f8(%rsp), %rax
movq %rax, 0x180(%rsp)
movq 0x180(%rsp), %rax
movq %rax, 0x2e0(%rsp)
jmp 0x2ae119
movq 0x320(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x2e0(%rsp)
movq 0x320(%rsp), %rax
movq 0x18(%rax), %rax
movq 0x320(%rsp), %rcx
addq 0x40(%rcx), %rax
cmpq 0x2e0(%rsp), %rax
jae 0x2ae5ad
movq 0x320(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x320(%rsp), %rcx
addq 0x40(%rcx), %rax
movq 0x320(%rsp), %rcx
cmpq 0x28(%rcx), %rax
jae 0x2ae5ad
movq 0x2e0(%rsp), %rax
movq 0x320(%rsp), %rcx
movq 0x18(%rcx), %rcx
movq 0x320(%rsp), %rdx
addq 0x40(%rdx), %rcx
subq %rcx, %rax
movq %rax, 0x1d0(%rsp)
movq 0x320(%rsp), %rax
movq 0x28(%rax), %rax
movq 0x320(%rsp), %rcx
movq 0x38(%rcx), %rcx
movq 0x320(%rsp), %rdx
addq 0x40(%rdx), %rcx
subq %rcx, %rax
movq %rax, 0x1c8(%rsp)
testb $0x1, 0x346(%rsp)
je 0x2ae395
movq 0x308(%rsp), %rax
movq 0x70(%rax), %rax
movq %rax, 0x140(%rsp)
movq 0x330(%rsp), %rax
movq %rax, 0x148(%rsp)
movq 0x1d0(%rsp), %rax
movq %rax, 0x150(%rsp)
movq 0x320(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x138(%rsp)
movq 0x320(%rsp), %rdi
callq 0x2ab430
movq 0x138(%rsp), %r9
movq 0x140(%rsp), %rdx
movq 0x148(%rsp), %rcx
movq 0x150(%rsp), %r8
addq %rax, %r9
movq 0x320(%rsp), %rax
addq 0x40(%rax), %r9
movq 0x320(%rsp), %rax
movq 0x10(%rax), %r10
movq 0x320(%rsp), %rax
movq 0x8(%rax), %rax
movl $0x1, %edi
xorl %esi, %esi
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x2ae970
movq 0x320(%rsp), %rax
movl 0x48(%rax), %eax
movl %eax, 0x164(%rsp)
movq 0x308(%rsp), %rax
movq 0x78(%rax), %rax
movq %rax, 0x168(%rsp)
movq 0x328(%rsp), %rax
movq %rax, 0x170(%rsp)
movq 0x1c8(%rsp), %rax
movq %rax, 0x178(%rsp)
movq 0x320(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, 0x158(%rsp)
movq 0x320(%rsp), %rdi
callq 0x2ab480
movq 0x158(%rsp), %r9
movl 0x164(%rsp), %esi
movq 0x168(%rsp), %rdx
movq 0x170(%rsp), %rcx
movq 0x178(%rsp), %r8
addq %rax, %r9
movq 0x320(%rsp), %rax
addq 0x40(%rax), %r9
movq 0x320(%rsp), %rax
movq 0x30(%rax), %r10
movq 0x320(%rsp), %rax
movq 0x28(%rax), %rax
movl $0x1, %edi
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x2ae970
movq 0x308(%rsp), %rsi
addq $0x40, %rsi
movq 0x308(%rsp), %rax
movq 0x10(%rax), %rdx
movq 0x308(%rsp), %rax
movq 0x70(%rax), %rcx
movq 0x308(%rsp), %rax
movq 0x78(%rax), %r8
movq 0x308(%rsp), %rax
movq 0x68(%rax), %r9
movl $0x1, %edi
callq 0x2f8690
jmp 0x2ae5ab
movq 0x310(%rsp), %rax
addq $0x98, %rax
movq %rax, 0xe8(%rsp)
movq 0x310(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0xf0(%rsp)
movq 0x310(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0xf8(%rsp)
movq 0x310(%rsp), %rax
movl 0xb0(%rax), %eax
movl %eax, 0x100(%rsp)
movq 0x310(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x108(%rsp)
movq 0x310(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x110(%rsp)
movq 0x310(%rsp), %rax
movq 0x20(%rax), %rax
movq %rax, 0x118(%rsp)
movq 0x310(%rsp), %rax
movb 0xbd(%rax), %al
movb %al, 0x107(%rsp)
movq 0x320(%rsp), %rax
movq 0x40(%rax), %rax
movq %rax, 0x128(%rsp)
movq 0x320(%rsp), %rax
movq 0x10(%rax), %r13
movq 0x320(%rsp), %rdi
callq 0x2ab430
addq %rax, %r13
movq 0x320(%rsp), %rax
addq 0x40(%rax), %r13
movq 0x1d0(%rsp), %r12
movq 0x1f8(%rsp), %r15
movq 0x320(%rsp), %rax
movq 0x30(%rax), %rbx
movq 0x320(%rsp), %rdi
callq 0x2ab480
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %r8
movl 0x100(%rsp), %r9d
movq %rax, %rdx
movb 0x107(%rsp), %al
addq %rdx, %rbx
movq 0x320(%rsp), %rdx
addq 0x40(%rdx), %rbx
movq 0x1c8(%rsp), %r11
movq 0x310(%rsp), %rdx
movb 0xc2(%rdx), %r10b
movq 0x310(%rsp), %rdx
movq 0x50(%rdx), %rdx
movq %rdx, 0x130(%rsp)
movl $0x1, %edi
leaq 0x208(%rsp), %rdx
leaq 0x298(%rsp), %rbp
leaq 0x258(%rsp), %r14
andb $0x1, %al
movb %al, 0x127(%rsp)
movq 0x108(%rsp), %rax
andb $0x1, %r10b
movq %rax, (%rsp)
movq 0x110(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x118(%rsp), %rax
movq %rax, 0x10(%rsp)
movb 0x127(%rsp), %al
movzbl %al, %eax
movl %eax, 0x18(%rsp)
movq 0x128(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x130(%rsp), %rax
movq %rbp, 0x28(%rsp)
movq %r13, 0x30(%rsp)
movq %r12, 0x38(%rsp)
movq %r15, 0x40(%rsp)
movq %r14, 0x48(%rsp)
movq %rbx, 0x50(%rsp)
movq %r11, 0x58(%rsp)
movzbl %r10b, %r10d
movl %r10d, 0x60(%rsp)
movq %rax, 0x68(%rsp)
callq 0x4cd310
jmp 0x2ae5ad
testb $0x1, 0x346(%rsp)
je 0x2ae61f
movq 0x308(%rsp), %rax
movq 0x40(%rax), %rax
movq %rax, 0x2f0(%rsp)
movq 0x308(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, 0x2e8(%rsp)
movq 0x320(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x308(%rsp), %rcx
movslq (%rcx), %rcx
imulq %rcx, %rax
movq 0x308(%rsp), %rcx
addq 0x28(%rcx), %rax
movq 0x308(%rsp), %rcx
addq 0x50(%rcx), %rax
movq %rax, 0x2d8(%rsp)
jmp 0x2ae796
movq 0x210(%rsp), %rax
movq %rax, 0x2f0(%rsp)
movq 0x208(%rsp), %rax
cmpq 0x2f0(%rsp), %rax
jae 0x2ae679
movq 0x38d958(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2679c1(%rip), %rsi    # 0x516013
leaq 0x2d95e9(%rip), %rdx    # 0x587c42
leaq 0x2d95a1(%rip), %rcx    # 0x587c01
leaq 0x2d906d(%rip), %r8     # 0x5876d4
movl $0x4ac, %r9d            # imm = 0x4AC
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2ae67b
movq 0x208(%rsp), %rax
subq 0x2f0(%rsp), %rax
movq %rax, 0x2e8(%rsp)
movq 0x310(%rsp), %rax
testb $0x1, 0xbc(%rax)
je 0x2ae794
jmp 0x2ae6aa
movq 0x208(%rsp), %rax
cmpq 0x230(%rsp), %rax
je 0x2ae6f4
movq 0x38d8dd(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x267946(%rip), %rsi    # 0x516013
leaq 0x2d95a2(%rip), %rdx    # 0x587c76
leaq 0x2d9526(%rip), %rcx    # 0x587c01
leaq 0x2d8ff2(%rip), %r8     # 0x5876d4
movl $0x4b5, %r9d            # imm = 0x4B5
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2ae6f6
jmp 0x2ae6f8
movq 0x2f0(%rsp), %rax
cmpq 0x300(%rsp), %rax
je 0x2ae742
movq 0x38d88f(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2678f8(%rip), %rsi    # 0x516013
leaq 0x2d95a0(%rip), %rdx    # 0x587cc2
leaq 0x2d94d8(%rip), %rcx    # 0x587c01
leaq 0x2d8fa4(%rip), %r8     # 0x5876d4
movl $0x4b6, %r9d            # imm = 0x4B6
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2ae744
jmp 0x2ae746
movq 0x218(%rsp), %rax
cmpq 0x240(%rsp), %rax
je 0x2ae790
movq 0x38d841(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2678aa(%rip), %rsi    # 0x516013
leaq 0x2d956c(%rip), %rdx    # 0x587cdc
leaq 0x2d948a(%rip), %rcx    # 0x587c01
leaq 0x2d8f56(%rip), %r8     # 0x5876d4
movl $0x4b8, %r9d            # imm = 0x4B8
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2ae792
jmp 0x2ae794
jmp 0x2ae796
movb 0x346(%rsp), %al
movb %al, 0xa7(%rsp)
movq 0x318(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq 0x330(%rsp), %rax
movq %rax, 0xb0(%rsp)
movq 0x328(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq 0x320(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq 0x300(%rsp), %rax
movq %rax, 0xc8(%rsp)
movq 0x2f8(%rsp), %rax
movq %rax, 0xd0(%rsp)
movq 0x2f0(%rsp), %rax
movq %rax, 0xd8(%rsp)
movq 0x2e8(%rsp), %rax
movq %rax, 0xe0(%rsp)
testb $0x1, 0x346(%rsp)
je 0x2ae840
movq 0x2d8(%rsp), %rax
movq %rax, 0x98(%rsp)
jmp 0x2ae84c
xorl %eax, %eax
movq %rax, 0x98(%rsp)
jmp 0x2ae84c
movq 0x98(%rsp), %rax
movq %rax, 0x90(%rsp)
testb $0x1, 0x346(%rsp)
je 0x2ae872
xorl %eax, %eax
movq %rax, 0x88(%rsp)
jmp 0x2ae88a
movq 0x240(%rsp), %rax
addq 0x218(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0x88(%rsp), %rax
movq %rax, 0x80(%rsp)
testb $0x1, 0x346(%rsp)
je 0x2ae8ad
xorl %eax, %eax
movq %rax, 0x78(%rsp)
jmp 0x2ae8c2
movq 0x250(%rsp), %rax
addq 0x228(%rsp), %rax
movq %rax, 0x78(%rsp)
movq 0xc8(%rsp), %r9
movq 0xc0(%rsp), %r8
movq 0xb8(%rsp), %rcx
movq 0xb0(%rsp), %rdx
movq 0xa8(%rsp), %rsi
movb 0xa7(%rsp), %al
movq 0xd0(%rsp), %r10
movq 0xd8(%rsp), %r11
movq 0xe0(%rsp), %rbx
movq 0x90(%rsp), %r14
movq 0x80(%rsp), %r15
movq 0x78(%rsp), %r12
movq %rsp, %rdi
movq %r12, 0x28(%rdi)
movq %r15, 0x20(%rdi)
movq %r14, 0x18(%rdi)
movq %rbx, 0x10(%rdi)
movq %r11, 0x8(%rdi)
movq %r10, (%rdi)
movzbl %al, %edi
andl $0x1, %edi
callq 0x2aea40
andb $0x1, %al
movb %al, 0x347(%rsp)
movb 0x347(%rsp), %al
andb $0x1, %al
addq $0x348, %rsp            # imm = 0x348
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopw (%rax,%rax)