// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/diagonalbandalign_affinegapcost.c
// Function: evaluateallaffineDBcolumns
static GtAffineAlignRnode evaluateallaffineDBcolumns(
                                            GtLinspaceManagement *spacemanager,
                                            GtAffineDiagAlignentry *Diagcolumn,
                                            const GtScoreHandler *scorehandler,
                                            GtAffineAlignEdge edge,
                                            GtAffineAlignEdge from_edge,
                                            GtAffineAlignEdge to_edge,
                                            GtUword offset,
                                            const GtUchar *useq,
                                            GtUword ustart, GtUword ulen,
                                            const GtUchar *vseq,
                                            GtUword vstart, GtUword vlen,
                                            GtWord left_dist, GtWord right_dist)
{
  GtUword gap_extension, gap_opening, colindex, rowindex, low_row, high_row;
  /*lowest and highest row between a diagonal band*/
  GtWord diag, r_dist, d_dist, i_dist, minvalue, rcost;

  bool last_row = false;
  GtAffinealignDPentry *Atabcolumn, northwestAffinealignDPentry,
  westAffinealignDPentry = (GtAffinealignDPentry)
                           {GT_WORD_MAX, GT_WORD_MAX, GT_WORD_MAX};;
  GtAffineAlignRtabentry *Rtabcolumn, northwestRtabentry, westRtabentry = {{0}};
  GtAffineAlignRnode lastcpoint = {GT_UWORD_MAX, Affine_X};

  if ((left_dist > GT_MIN(0, (GtWord)vlen-(GtWord)ulen))||
      (right_dist < GT_MAX(0, (GtWord)vlen-(GtWord)ulen)))
  {
    gt_assert(false);
  }

  Atabcolumn = gt_linspace_management_get_valueTabspace(spacemanager);
  Rtabcolumn = gt_linspace_management_get_rTabspace(spacemanager);

  diag = GT_DIV2(left_dist + right_dist);
  low_row = 0;
  high_row = -left_dist;
  if (high_row == ulen)
    last_row = true;

  gap_opening = gt_scorehandler_get_gap_opening(scorehandler);
  gap_extension = gt_scorehandler_get_gapscore(scorehandler);

 /* first column */
  firstaffineDBtabcolumn(Atabcolumn, Rtabcolumn, Diagcolumn, edge, from_edge,
                   offset, left_dist, right_dist, gap_opening, gap_extension);
  /* next columns */
  for (colindex = 1; colindex <= vlen; colindex++)
  {
    northwestAffinealignDPentry = Atabcolumn[0];
    northwestRtabentry = Rtabcolumn[0];

    if (colindex > right_dist)
    {
      if (low_row != high_row) {
        westAffinealignDPentry = Atabcolumn[1];
        westRtabentry = Rtabcolumn[1];
      }
      low_row++;
    }
    else
    {
      westAffinealignDPentry = Atabcolumn[0];
      westRtabentry = Rtabcolumn[0];
    }
    if (high_row < ulen)
      high_row ++;
    if (!last_row && low_row == high_row)
    {/* prev is outside of diagonalband*/
      westAffinealignDPentry = (GtAffinealignDPentry)
                               {GT_WORD_MAX, GT_WORD_MAX, GT_WORD_MAX};
      westRtabentry.val_R = (GtAffineAlignRnode) {GT_UWORD_MAX, Affine_X};
      westRtabentry.val_D = (GtAffineAlignRnode) {GT_UWORD_MAX, Affine_X};
      westRtabentry.val_I = (GtAffineAlignRnode) {GT_UWORD_MAX, Affine_X};
    }

    /* insertion */
    r_dist = add_safe_max(westAffinealignDPentry.Rvalue,
                          gap_extension + gap_opening);
    d_dist = add_safe_max(westAffinealignDPentry.Dvalue,
                          gap_extension + gap_opening);
    i_dist = add_safe_max(westAffinealignDPentry.Ivalue, gap_extension);

    minvalue = GT_MIN3(r_dist, d_dist, i_dist);
    Atabcolumn[0].Ivalue = minvalue;
    Atabcolumn[0].Rvalue = GT_WORD_MAX;
    Atabcolumn[0].Dvalue = GT_WORD_MAX;

    if (diag == (GtWord)colindex - (GtWord)low_row)
    {
      set_invalid_Diagentry(&Diagcolumn[colindex].val_R);
      set_invalid_Diagentry(&Diagcolumn[colindex].val_D);
      set_valid_Diagentry(&Diagcolumn[colindex].val_I, &westRtabentry, minvalue,
                          r_dist, i_dist, d_dist);
      Diagcolumn[colindex].val_I.currentrowindex = low_row + offset;
      set_invalid_Rnode(&Rtabcolumn[0].val_R);
      set_invalid_Rnode(&Rtabcolumn[0].val_D);
      Rtabcolumn[0].val_I.idx = colindex;
      Rtabcolumn[0].val_I.edge = Affine_I;
    }
    else
    {
      set_valid_Rnode(&Rtabcolumn[0].val_I, &westRtabentry, minvalue,
                       r_dist, i_dist, d_dist);
      Rtabcolumn[0].val_D = (GtAffineAlignRnode) {GT_UWORD_MAX, Affine_X};
      Rtabcolumn[0].val_R = (GtAffineAlignRnode) {GT_UWORD_MAX, Affine_X};
    }

    /* replacement possible for 0-entry */
    if (low_row > 0 )
    {
      rcost = gt_scorehandler_get_replacement(scorehandler,
                               useq[ustart+low_row-1], vseq[vstart+colindex-1]);

      r_dist = add_safe_max(northwestAffinealignDPentry.Rvalue, rcost);
      d_dist = add_safe_max(northwestAffinealignDPentry.Dvalue, rcost);
      i_dist = add_safe_max(northwestAffinealignDPentry.Ivalue, rcost);

      minvalue = GT_MIN3(r_dist, d_dist, i_dist);
      Atabcolumn[0].Rvalue = minvalue;

      if (diag == (GtWord)colindex - (GtWord)low_row)
      {
        set_valid_Diagentry(&Diagcolumn[colindex].val_R, &northwestRtabentry,
                            minvalue, r_dist, i_dist, d_dist);
        Diagcolumn[colindex].val_R.currentrowindex = low_row + offset;
        Rtabcolumn[0].val_R.idx = colindex;
        Rtabcolumn[0].val_R.edge = Affine_R;
      }
      else
      {
        set_valid_Rnode(&Rtabcolumn[0].val_R, &northwestRtabentry,
                         minvalue, r_dist, i_dist, d_dist);
      }
    }
    for (rowindex = low_row + 1; rowindex <= high_row; rowindex++)
    {
      northwestAffinealignDPentry = westAffinealignDPentry;
      northwestRtabentry = westRtabentry;

      if (!last_row && rowindex == high_row)
      {/* prev is outside of diagonalband*/
        westAffinealignDPentry = (GtAffinealignDPentry)
                                 {GT_WORD_MAX, GT_WORD_MAX, GT_WORD_MAX};
        westRtabentry.val_R = (GtAffineAlignRnode) {GT_UWORD_MAX, Affine_X};
        westRtabentry.val_D = (GtAffineAlignRnode) {GT_UWORD_MAX, Affine_X};
        westRtabentry.val_I = (GtAffineAlignRnode) {GT_UWORD_MAX, Affine_X};
      }
      else if (low_row > 0)
      {/* shifted diagonalband*/
        westAffinealignDPentry = Atabcolumn[rowindex-low_row+1];
        westRtabentry = Rtabcolumn[rowindex-low_row+1];
      }
      else
      {/* normaly prev*/
        westAffinealignDPentry = Atabcolumn[rowindex-low_row];
        westRtabentry = Rtabcolumn[rowindex-low_row];
      }
      if (rowindex == ulen)
        last_row = true;

      /* insertion */
      r_dist = add_safe_max(westAffinealignDPentry.Rvalue,
                            gap_extension+gap_opening);
      d_dist = add_safe_max(westAffinealignDPentry.Dvalue,
                            gap_extension+gap_opening);
      i_dist = add_safe_max(westAffinealignDPentry.Ivalue,gap_extension);

      minvalue = GT_MIN3(r_dist, d_dist, i_dist);
      Atabcolumn[rowindex-low_row].Ivalue = minvalue;
      if (diag == (GtWord)colindex - (GtWord)rowindex)
      {
        set_valid_Diagentry(&Diagcolumn[colindex].val_I, &westRtabentry,
                             minvalue, r_dist, i_dist, d_dist);
        Diagcolumn[colindex].val_I.currentrowindex = rowindex+offset;

        Rtabcolumn[rowindex-low_row].val_I.idx = colindex;
        Rtabcolumn[rowindex-low_row].val_I.edge = Affine_I;
      }
      else
      {
        set_valid_Rnode(&Rtabcolumn[rowindex-low_row].val_I, &westRtabentry,
                         minvalue,r_dist,i_dist,d_dist);
      }
      /* replacement */
      rcost = gt_scorehandler_get_replacement(scorehandler,
                             useq[ustart+rowindex-1], vseq[vstart+colindex-1]);

      r_dist = add_safe_max(northwestAffinealignDPentry.Rvalue, rcost);
      d_dist = add_safe_max(northwestAffinealignDPentry.Dvalue, rcost);
      i_dist = add_safe_max(northwestAffinealignDPentry.Ivalue, rcost);
      minvalue = GT_MIN3(r_dist, d_dist, i_dist);

      Atabcolumn[rowindex-low_row].Rvalue = minvalue;
      if (diag == (GtWord)colindex - (GtWord)rowindex)
      {
        set_valid_Diagentry(&Diagcolumn[colindex].val_R, &northwestRtabentry,
                            minvalue, r_dist, i_dist, d_dist);
        Diagcolumn[colindex].val_R.currentrowindex = rowindex+offset;
        Rtabcolumn[rowindex-low_row].val_R.idx = colindex;
        Rtabcolumn[rowindex-low_row].val_R.edge = Affine_R;
      }
      else
      {
        set_valid_Rnode(&Rtabcolumn[rowindex-low_row].val_R,&northwestRtabentry,
                         minvalue,r_dist,i_dist,d_dist);
      }

      /* deletion */
      r_dist = add_safe_max(Atabcolumn[rowindex-low_row-1].Rvalue,
                           gap_extension+gap_opening);
      d_dist = add_safe_max(Atabcolumn[rowindex-low_row-1].Dvalue,
                           gap_extension);
      i_dist = add_safe_max(Atabcolumn[rowindex-low_row-1].Ivalue,
                           gap_extension+gap_opening);

      minvalue = GT_MIN3(r_dist, d_dist, i_dist);
      Atabcolumn[rowindex-low_row].Dvalue = minvalue;

      if (diag == (GtWord)colindex - (GtWord)rowindex)
      {
        set_valid_Diagentry(&Diagcolumn[colindex].val_D,
                           &Rtabcolumn[rowindex-low_row-1], minvalue,
                            r_dist,i_dist, d_dist);
        Diagcolumn[colindex].val_D.currentrowindex = rowindex+offset;
        Rtabcolumn[rowindex-low_row].val_D.idx = colindex;
        Rtabcolumn[rowindex-low_row].val_D.edge = Affine_D;
      }
      else
      {
        set_valid_Rnode(&Rtabcolumn[rowindex-low_row].val_D,
                        &Rtabcolumn[rowindex-low_row-1], minvalue,
                         r_dist,i_dist,d_dist);
      }
    }

  }
  /* last crosspoint of optimal path */
  r_dist = Atabcolumn[high_row-low_row].Rvalue;
  d_dist = Atabcolumn[high_row-low_row].Dvalue;
  i_dist = Atabcolumn[high_row-low_row].Ivalue;

  switch (to_edge)
  {
    case Affine_I:
      r_dist = add_safe_max (r_dist, gap_opening);
      d_dist = add_safe_max (d_dist, gap_opening);
      break;
    case Affine_D:
      r_dist = add_safe_max (r_dist, gap_opening);
      i_dist = add_safe_max (i_dist, gap_opening);
      break;
    default:
      break;
  }

  minvalue = GT_MIN3(r_dist, d_dist, i_dist);
  if (minvalue == r_dist)
    lastcpoint = Rtabcolumn[high_row-low_row].val_R;
  else if (minvalue == i_dist)
    lastcpoint = Rtabcolumn[high_row-low_row].val_I;
  else if (minvalue == d_dist)
    lastcpoint = Rtabcolumn[high_row-low_row].val_D;

  return lastcpoint;
}

// Assembly:
pushq %rbx
subq $0x3c0, %rsp            # imm = 0x3C0
movq 0x410(%rsp), %rax
movq 0x408(%rsp), %rax
movq 0x400(%rsp), %rax
movq 0x3f8(%rsp), %rax
movq 0x3f0(%rsp), %rax
movq 0x3e8(%rsp), %rax
movq 0x3e0(%rsp), %rax
movq 0x3d8(%rsp), %rax
movq 0x3d0(%rsp), %rax
movq %rdi, 0x3a8(%rsp)
movq %rsi, 0x3a0(%rsp)
movq %rdx, 0x398(%rsp)
movl %ecx, 0x394(%rsp)
movl %r8d, 0x390(%rsp)
movl %r9d, 0x38c(%rsp)
movb $0x0, 0x327(%rsp)
leaq 0x2b8(%rsp), %rdi
xorl %esi, %esi
movl $0x30, %edx
callq 0x19360
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x2b8(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x2c0(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x2c8(%rsp)
leaq 0x250(%rsp), %rdi
xorl %esi, %esi
movl $0x30, %edx
callq 0x19360
movq 0x3f68dc(%rip), %rax    # 0x54d7b8
movq %rax, 0x3b0(%rsp)
movq 0x3f68d5(%rip), %rax    # 0x54d7c0
movq %rax, 0x3b8(%rsp)
movq 0x408(%rsp), %rax
movq %rax, 0x168(%rsp)
movq 0x400(%rsp), %rcx
subq 0x3e8(%rsp), %rcx
xorl %eax, %eax
cmpq %rcx, %rax
jge 0x156f26
xorl %eax, %eax
movq %rax, 0x160(%rsp)
jmp 0x156f3e
movq 0x400(%rsp), %rax
subq 0x3e8(%rsp), %rax
movq %rax, 0x160(%rsp)
movq 0x168(%rsp), %rax
movq 0x160(%rsp), %rcx
cmpq %rcx, %rax
jg 0x156fb3
movq 0x410(%rsp), %rax
movq %rax, 0x158(%rsp)
movq 0x400(%rsp), %rcx
subq 0x3e8(%rsp), %rcx
xorl %eax, %eax
cmpq %rcx, %rax
jle 0x156f86
xorl %eax, %eax
movq %rax, 0x150(%rsp)
jmp 0x156f9e
movq 0x400(%rsp), %rax
subq 0x3e8(%rsp), %rax
movq %rax, 0x150(%rsp)
movq 0x158(%rsp), %rax
movq 0x150(%rsp), %rcx
cmpq %rcx, %rax
jge 0x156fed
jmp 0x156fb5
movq 0x4e4fe4(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3bf04d(%rip), %rsi    # 0x516013
leaq 0x401d96(%rip), %rdx    # 0x558d63
leaq 0x3f6737(%rip), %rcx    # 0x54d70b
leaq 0x3f63c1(%rip), %r8     # 0x54d39c
movl $0x30e, %r9d            # imm = 0x30E
movb $0x0, %al
callq 0x199f0
callq 0x19370
movq 0x3a8(%rsp), %rdi
callq 0x1a3720
movq %rax, 0x318(%rsp)
movq 0x3a8(%rsp), %rdi
callq 0x1a3750
movq %rax, 0x2b0(%rsp)
movq 0x408(%rsp), %rax
addq 0x410(%rsp), %rax
sarq %rax
movq %rax, 0x350(%rsp)
movq $0x0, 0x360(%rsp)
xorl %eax, %eax
subq 0x408(%rsp), %rax
movq %rax, 0x358(%rsp)
movq 0x358(%rsp), %rax
cmpq 0x3e8(%rsp), %rax
jne 0x15706a
movb $0x1, 0x327(%rsp)
movq 0x398(%rsp), %rdi
callq 0x1d1180
movq %rax, 0x378(%rsp)
movq 0x398(%rsp), %rdi
callq 0x1d11d0
movq %rax, 0x380(%rsp)
movq 0x318(%rsp), %rdi
movq 0x2b0(%rsp), %rsi
movq 0x3a0(%rsp), %rdx
movl 0x394(%rsp), %ecx
movl 0x390(%rsp), %r8d
movq 0x3d0(%rsp), %r9
movq 0x408(%rsp), %rbx
movq 0x410(%rsp), %r11
movq 0x378(%rsp), %r10
movq 0x380(%rsp), %rax
movq %rbx, (%rsp)
movq %r11, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movq %rax, 0x18(%rsp)
callq 0x159100
movq $0x1, 0x370(%rsp)
movq 0x370(%rsp), %rax
cmpq 0x400(%rsp), %rax
ja 0x15871f
movq 0x318(%rsp), %rsi
leaq 0x2e8(%rsp), %rdi
movl $0x30, %edx
callq 0x19610
movq 0x2b0(%rsp), %rsi
leaq 0x280(%rsp), %rdi
movl $0x30, %edx
callq 0x19610
movq 0x370(%rsp), %rax
cmpq 0x410(%rsp), %rax
jbe 0x1571c7
movq 0x360(%rsp), %rax
cmpq 0x358(%rsp), %rax
je 0x1571b1
movq 0x318(%rsp), %rsi
addq $0x30, %rsi
leaq 0x2b8(%rsp), %rdi
movl $0x30, %edx
callq 0x19610
movq 0x2b0(%rsp), %rsi
addq $0x30, %rsi
leaq 0x250(%rsp), %rdi
movl $0x30, %edx
callq 0x19610
movq 0x360(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x360(%rsp)
jmp 0x1571fb
movq 0x318(%rsp), %rsi
leaq 0x2b8(%rsp), %rdi
movl $0x30, %edx
callq 0x19610
movq 0x2b0(%rsp), %rsi
leaq 0x250(%rsp), %rdi
movl $0x30, %edx
callq 0x19610
movq 0x358(%rsp), %rax
cmpq 0x3e8(%rsp), %rax
jae 0x157221
movq 0x358(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x358(%rsp)
testb $0x1, 0x327(%rsp)
jne 0x157367
movq 0x360(%rsp), %rax
cmpq 0x358(%rsp), %rax
jne 0x157367
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x220(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x228(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x230(%rsp)
movq $0x0, 0x238(%rsp)
movl $0x0, 0x240(%rsp)
movl $0x0, 0x244(%rsp)
movl $0x0, 0x248(%rsp)
leaq 0x2b8(%rsp), %rdi
leaq 0x220(%rsp), %rsi
movl $0x30, %edx
callq 0x19610
movq $-0x1, 0x210(%rsp)
movl $0x3, 0x218(%rsp)
movq 0x210(%rsp), %rax
movq %rax, 0x250(%rsp)
movq 0x218(%rsp), %rax
movq %rax, 0x258(%rsp)
movq $-0x1, 0x200(%rsp)
movl $0x3, 0x208(%rsp)
movq 0x200(%rsp), %rax
movq %rax, 0x260(%rsp)
movq 0x208(%rsp), %rax
movq %rax, 0x268(%rsp)
movq $-0x1, 0x1f0(%rsp)
movl $0x3, 0x1f8(%rsp)
movq 0x1f0(%rsp), %rax
movq %rax, 0x270(%rsp)
movq 0x1f8(%rsp), %rax
movq %rax, 0x278(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, 0x2b8(%rsp)
je 0x1573a0
movq 0x2b8(%rsp), %rax
movq 0x380(%rsp), %rcx
addq 0x378(%rsp), %rcx
addq %rcx, %rax
movq %rax, 0x148(%rsp)
jmp 0x1573b4
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x148(%rsp)
jmp 0x1573b4
movq 0x148(%rsp), %rax
movq %rax, 0x348(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, 0x2c0(%rsp)
je 0x1573fd
movq 0x2c0(%rsp), %rax
movq 0x380(%rsp), %rcx
addq 0x378(%rsp), %rcx
addq %rcx, %rax
movq %rax, 0x140(%rsp)
jmp 0x157411
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x140(%rsp)
jmp 0x157411
movq 0x140(%rsp), %rax
movq %rax, 0x340(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, 0x2c8(%rsp)
je 0x15744f
movq 0x2c8(%rsp), %rax
addq 0x380(%rsp), %rax
movq %rax, 0x138(%rsp)
jmp 0x157463
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x138(%rsp)
jmp 0x157463
movq 0x138(%rsp), %rax
movq %rax, 0x338(%rsp)
movq 0x348(%rsp), %rax
cmpq 0x340(%rsp), %rax
jge 0x1574cb
movq 0x348(%rsp), %rax
cmpq 0x338(%rsp), %rax
jge 0x1574a9
movq 0x348(%rsp), %rax
movq %rax, 0x130(%rsp)
jmp 0x1574b9
movq 0x338(%rsp), %rax
movq %rax, 0x130(%rsp)
movq 0x130(%rsp), %rax
movq %rax, 0x128(%rsp)
jmp 0x15750f
movq 0x340(%rsp), %rax
cmpq 0x338(%rsp), %rax
jge 0x1574ef
movq 0x340(%rsp), %rax
movq %rax, 0x120(%rsp)
jmp 0x1574ff
movq 0x338(%rsp), %rax
movq %rax, 0x120(%rsp)
movq 0x120(%rsp), %rax
movq %rax, 0x128(%rsp)
movq 0x128(%rsp), %rax
movq %rax, 0x330(%rsp)
movq 0x330(%rsp), %rcx
movq 0x318(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x318(%rsp), %rax
movabsq $0x7fffffffffffffff, %rcx # imm = 0x7FFFFFFFFFFFFFFF
movq %rcx, (%rax)
movq 0x318(%rsp), %rax
movabsq $0x7fffffffffffffff, %rcx # imm = 0x7FFFFFFFFFFFFFFF
movq %rcx, 0x8(%rax)
movq 0x350(%rsp), %rax
movq 0x370(%rsp), %rcx
subq 0x360(%rsp), %rcx
cmpq %rcx, %rax
jne 0x157668
movq 0x3a0(%rsp), %rdi
imulq $0x48, 0x370(%rsp), %rax
addq %rax, %rdi
callq 0x159620
movq 0x3a0(%rsp), %rdi
imulq $0x48, 0x370(%rsp), %rax
addq %rax, %rdi
addq $0x18, %rdi
callq 0x159620
movq 0x3a0(%rsp), %rdi
imulq $0x48, 0x370(%rsp), %rax
addq %rax, %rdi
addq $0x30, %rdi
movq 0x330(%rsp), %rdx
movq 0x348(%rsp), %rcx
movq 0x338(%rsp), %r8
movq 0x340(%rsp), %r9
leaq 0x250(%rsp), %rsi
callq 0x159690
movq 0x360(%rsp), %rcx
addq 0x3d0(%rsp), %rcx
movq 0x3a0(%rsp), %rax
imulq $0x48, 0x370(%rsp), %rdx
addq %rdx, %rax
movq %rcx, 0x38(%rax)
movq 0x2b0(%rsp), %rdi
callq 0x159790
movq 0x2b0(%rsp), %rdi
addq $0x10, %rdi
callq 0x159790
movq 0x370(%rsp), %rcx
movq 0x2b0(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x2b0(%rsp), %rax
movl $0x2, 0x28(%rax)
jmp 0x15770e
movq 0x2b0(%rsp), %rdi
addq $0x20, %rdi
movq 0x330(%rsp), %rdx
movq 0x348(%rsp), %rcx
movq 0x338(%rsp), %r8
movq 0x340(%rsp), %r9
leaq 0x250(%rsp), %rsi
callq 0x1597f0
movq 0x2b0(%rsp), %rax
movq $-0x1, 0x1e0(%rsp)
movl $0x3, 0x1e8(%rsp)
movq 0x1e0(%rsp), %rcx
movq %rcx, 0x10(%rax)
movq 0x1e8(%rsp), %rcx
movq %rcx, 0x18(%rax)
movq 0x2b0(%rsp), %rax
movq $-0x1, 0x1d0(%rsp)
movl $0x3, 0x1d8(%rsp)
movq 0x1d0(%rsp), %rcx
movq %rcx, (%rax)
movq 0x1d8(%rsp), %rcx
movq %rcx, 0x8(%rax)
cmpq $0x0, 0x360(%rsp)
jbe 0x157a0e
movq 0x398(%rsp), %rdi
movq 0x3d8(%rsp), %rax
movq 0x3e0(%rsp), %rcx
addq 0x360(%rsp), %rcx
subq $0x1, %rcx
movb (%rax,%rcx), %dl
movq 0x3f0(%rsp), %rax
movq 0x3f8(%rsp), %rcx
addq 0x370(%rsp), %rcx
subq $0x1, %rcx
movzbl %dl, %esi
movzbl (%rax,%rcx), %edx
callq 0x1d12c0
movq %rax, 0x328(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, 0x2e8(%rsp)
je 0x1577a2
movq 0x2e8(%rsp), %rax
addq 0x328(%rsp), %rax
movq %rax, 0x118(%rsp)
jmp 0x1577b6
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x118(%rsp)
jmp 0x1577b6
movq 0x118(%rsp), %rax
movq %rax, 0x348(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, 0x2f0(%rsp)
je 0x1577f4
movq 0x2f0(%rsp), %rax
addq 0x328(%rsp), %rax
movq %rax, 0x110(%rsp)
jmp 0x157808
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x110(%rsp)
jmp 0x157808
movq 0x110(%rsp), %rax
movq %rax, 0x340(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, 0x2f8(%rsp)
je 0x157846
movq 0x2f8(%rsp), %rax
addq 0x328(%rsp), %rax
movq %rax, 0x108(%rsp)
jmp 0x15785a
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x108(%rsp)
jmp 0x15785a
movq 0x108(%rsp), %rax
movq %rax, 0x338(%rsp)
movq 0x348(%rsp), %rax
cmpq 0x340(%rsp), %rax
jge 0x1578c2
movq 0x348(%rsp), %rax
cmpq 0x338(%rsp), %rax
jge 0x1578a0
movq 0x348(%rsp), %rax
movq %rax, 0x100(%rsp)
jmp 0x1578b0
movq 0x338(%rsp), %rax
movq %rax, 0x100(%rsp)
movq 0x100(%rsp), %rax
movq %rax, 0xf8(%rsp)
jmp 0x157906
movq 0x340(%rsp), %rax
cmpq 0x338(%rsp), %rax
jge 0x1578e6
movq 0x340(%rsp), %rax
movq %rax, 0xf0(%rsp)
jmp 0x1578f6
movq 0x338(%rsp), %rax
movq %rax, 0xf0(%rsp)
movq 0xf0(%rsp), %rax
movq %rax, 0xf8(%rsp)
movq 0xf8(%rsp), %rax
movq %rax, 0x330(%rsp)
movq 0x330(%rsp), %rcx
movq 0x318(%rsp), %rax
movq %rcx, (%rax)
movq 0x350(%rsp), %rax
movq 0x370(%rsp), %rcx
subq 0x360(%rsp), %rcx
cmpq %rcx, %rax
jne 0x1579d7
movq 0x3a0(%rsp), %rdi
imulq $0x48, 0x370(%rsp), %rax
addq %rax, %rdi
movq 0x330(%rsp), %rdx
movq 0x348(%rsp), %rcx
movq 0x338(%rsp), %r8
movq 0x340(%rsp), %r9
leaq 0x280(%rsp), %rsi
callq 0x159690
movq 0x360(%rsp), %rcx
addq 0x3d0(%rsp), %rcx
movq 0x3a0(%rsp), %rax
imulq $0x48, 0x370(%rsp), %rdx
addq %rdx, %rax
movq %rcx, 0x8(%rax)
movq 0x370(%rsp), %rcx
movq 0x2b0(%rsp), %rax
movq %rcx, (%rax)
movq 0x2b0(%rsp), %rax
movl $0x0, 0x8(%rax)
jmp 0x157a0c
movq 0x2b0(%rsp), %rdi
movq 0x330(%rsp), %rdx
movq 0x348(%rsp), %rcx
movq 0x338(%rsp), %r8
movq 0x340(%rsp), %r9
leaq 0x280(%rsp), %rsi
callq 0x1597f0
jmp 0x157a0e
movq 0x360(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x368(%rsp)
movq 0x368(%rsp), %rax
cmpq 0x358(%rsp), %rax
ja 0x158704
leaq 0x2e8(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
movl $0x30, %edx
callq 0x19610
leaq 0x280(%rsp), %rdi
leaq 0x250(%rsp), %rsi
movl $0x30, %edx
callq 0x19610
testb $0x1, 0x327(%rsp)
jne 0x157bb7
movq 0x368(%rsp), %rax
cmpq 0x358(%rsp), %rax
jne 0x157bb7
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x1a0(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x1a8(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x1b0(%rsp)
movq $0x0, 0x1b8(%rsp)
movl $0x0, 0x1c0(%rsp)
movl $0x0, 0x1c4(%rsp)
movl $0x0, 0x1c8(%rsp)
leaq 0x2b8(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
movl $0x30, %edx
callq 0x19610
movq $-0x1, 0x190(%rsp)
movl $0x3, 0x198(%rsp)
movq 0x190(%rsp), %rax
movq %rax, 0x250(%rsp)
movq 0x198(%rsp), %rax
movq %rax, 0x258(%rsp)
movq $-0x1, 0x180(%rsp)
movl $0x3, 0x188(%rsp)
movq 0x180(%rsp), %rax
movq %rax, 0x260(%rsp)
movq 0x188(%rsp), %rax
movq %rax, 0x268(%rsp)
movq $-0x1, 0x170(%rsp)
movl $0x3, 0x178(%rsp)
movq 0x170(%rsp), %rax
movq %rax, 0x270(%rsp)
movq 0x178(%rsp), %rax
movq %rax, 0x278(%rsp)
jmp 0x157c92
cmpq $0x0, 0x360(%rsp)
jbe 0x157c2e
movq 0x318(%rsp), %rsi
movq 0x368(%rsp), %rax
subq 0x360(%rsp), %rax
addq $0x1, %rax
imulq $0x30, %rax, %rax
addq %rax, %rsi
leaq 0x2b8(%rsp), %rdi
movl $0x30, %edx
callq 0x19610
movq 0x2b0(%rsp), %rsi
movq 0x368(%rsp), %rax
subq 0x360(%rsp), %rax
addq $0x1, %rax
imulq $0x30, %rax, %rax
addq %rax, %rsi
leaq 0x250(%rsp), %rdi
movl $0x30, %edx
callq 0x19610
jmp 0x157c90
movq 0x318(%rsp), %rsi
movq 0x368(%rsp), %rax
subq 0x360(%rsp), %rax
imulq $0x30, %rax, %rax
addq %rax, %rsi
leaq 0x2b8(%rsp), %rdi
movl $0x30, %edx
callq 0x19610
movq 0x2b0(%rsp), %rsi
movq 0x368(%rsp), %rax
subq 0x360(%rsp), %rax
imulq $0x30, %rax, %rax
addq %rax, %rsi
leaq 0x250(%rsp), %rdi
movl $0x30, %edx
callq 0x19610
jmp 0x157c92
movq 0x368(%rsp), %rax
cmpq 0x3e8(%rsp), %rax
jne 0x157cac
movb $0x1, 0x327(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, 0x2b8(%rsp)
je 0x157ce5
movq 0x2b8(%rsp), %rax
movq 0x380(%rsp), %rcx
addq 0x378(%rsp), %rcx
addq %rcx, %rax
movq %rax, 0xe8(%rsp)
jmp 0x157cf9
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0xe8(%rsp)
jmp 0x157cf9
movq 0xe8(%rsp), %rax
movq %rax, 0x348(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, 0x2c0(%rsp)
je 0x157d42
movq 0x2c0(%rsp), %rax
movq 0x380(%rsp), %rcx
addq 0x378(%rsp), %rcx
addq %rcx, %rax
movq %rax, 0xe0(%rsp)
jmp 0x157d56
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0xe0(%rsp)
jmp 0x157d56
movq 0xe0(%rsp), %rax
movq %rax, 0x340(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, 0x2c8(%rsp)
je 0x157d94
movq 0x2c8(%rsp), %rax
addq 0x380(%rsp), %rax
movq %rax, 0xd8(%rsp)
jmp 0x157da8
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0xd8(%rsp)
jmp 0x157da8
movq 0xd8(%rsp), %rax
movq %rax, 0x338(%rsp)
movq 0x348(%rsp), %rax
cmpq 0x340(%rsp), %rax
jge 0x157e10
movq 0x348(%rsp), %rax
cmpq 0x338(%rsp), %rax
jge 0x157dee
movq 0x348(%rsp), %rax
movq %rax, 0xd0(%rsp)
jmp 0x157dfe
movq 0x338(%rsp), %rax
movq %rax, 0xd0(%rsp)
movq 0xd0(%rsp), %rax
movq %rax, 0xc8(%rsp)
jmp 0x157e54
movq 0x340(%rsp), %rax
cmpq 0x338(%rsp), %rax
jge 0x157e34
movq 0x340(%rsp), %rax
movq %rax, 0xc0(%rsp)
jmp 0x157e44
movq 0x338(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq 0xc0(%rsp), %rax
movq %rax, 0xc8(%rsp)
movq 0xc8(%rsp), %rax
movq %rax, 0x330(%rsp)
movq 0x330(%rsp), %rcx
movq 0x318(%rsp), %rax
movq 0x368(%rsp), %rdx
subq 0x360(%rsp), %rdx
imulq $0x30, %rdx, %rdx
addq %rdx, %rax
movq %rcx, 0x10(%rax)
movq 0x350(%rsp), %rax
movq 0x370(%rsp), %rcx
subq 0x368(%rsp), %rcx
cmpq %rcx, %rax
jne 0x157f70
movq 0x3a0(%rsp), %rdi
imulq $0x48, 0x370(%rsp), %rax
addq %rax, %rdi
addq $0x30, %rdi
movq 0x330(%rsp), %rdx
movq 0x348(%rsp), %rcx
movq 0x338(%rsp), %r8
movq 0x340(%rsp), %r9
leaq 0x250(%rsp), %rsi
callq 0x159690
movq 0x368(%rsp), %rcx
addq 0x3d0(%rsp), %rcx
movq 0x3a0(%rsp), %rax
imulq $0x48, 0x370(%rsp), %rdx
addq %rdx, %rax
movq %rcx, 0x38(%rax)
movq 0x370(%rsp), %rcx
movq 0x2b0(%rsp), %rax
movq 0x368(%rsp), %rdx
subq 0x360(%rsp), %rdx
imulq $0x30, %rdx, %rdx
addq %rdx, %rax
movq %rcx, 0x20(%rax)
movq 0x2b0(%rsp), %rax
movq 0x368(%rsp), %rcx
subq 0x360(%rsp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movl $0x2, 0x28(%rax)
jmp 0x157fc0
movq 0x2b0(%rsp), %rdi
movq 0x368(%rsp), %rax
subq 0x360(%rsp), %rax
imulq $0x30, %rax, %rax
addq %rax, %rdi
addq $0x20, %rdi
movq 0x330(%rsp), %rdx
movq 0x348(%rsp), %rcx
movq 0x338(%rsp), %r8
movq 0x340(%rsp), %r9
leaq 0x250(%rsp), %rsi
callq 0x1597f0
movq 0x398(%rsp), %rdi
movq 0x3d8(%rsp), %rax
movq 0x3e0(%rsp), %rcx
addq 0x368(%rsp), %rcx
subq $0x1, %rcx
movb (%rax,%rcx), %dl
movq 0x3f0(%rsp), %rax
movq 0x3f8(%rsp), %rcx
addq 0x370(%rsp), %rcx
subq $0x1, %rcx
movzbl %dl, %esi
movzbl (%rax,%rcx), %edx
callq 0x1d12c0
movq %rax, 0x328(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, 0x2e8(%rsp)
je 0x158045
movq 0x2e8(%rsp), %rax
addq 0x328(%rsp), %rax
movq %rax, 0xb8(%rsp)
jmp 0x158059
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0xb8(%rsp)
jmp 0x158059
movq 0xb8(%rsp), %rax
movq %rax, 0x348(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, 0x2f0(%rsp)
je 0x158097
movq 0x2f0(%rsp), %rax
addq 0x328(%rsp), %rax
movq %rax, 0xb0(%rsp)
jmp 0x1580ab
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0xb0(%rsp)
jmp 0x1580ab
movq 0xb0(%rsp), %rax
movq %rax, 0x340(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, 0x2f8(%rsp)
je 0x1580e9
movq 0x2f8(%rsp), %rax
addq 0x328(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x1580fd
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0xa8(%rsp)
jmp 0x1580fd
movq 0xa8(%rsp), %rax
movq %rax, 0x338(%rsp)
movq 0x348(%rsp), %rax
cmpq 0x340(%rsp), %rax
jge 0x158165
movq 0x348(%rsp), %rax
cmpq 0x338(%rsp), %rax
jge 0x158143
movq 0x348(%rsp), %rax
movq %rax, 0xa0(%rsp)
jmp 0x158153
movq 0x338(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0xa0(%rsp), %rax
movq %rax, 0x98(%rsp)
jmp 0x1581a9
movq 0x340(%rsp), %rax
cmpq 0x338(%rsp), %rax
jge 0x158189
movq 0x340(%rsp), %rax
movq %rax, 0x90(%rsp)
jmp 0x158199
movq 0x338(%rsp), %rax
movq %rax, 0x90(%rsp)
movq 0x90(%rsp), %rax
movq %rax, 0x98(%rsp)
movq 0x98(%rsp), %rax
movq %rax, 0x330(%rsp)
movq 0x330(%rsp), %rcx
movq 0x318(%rsp), %rax
movq 0x368(%rsp), %rdx
subq 0x360(%rsp), %rdx
imulq $0x30, %rdx, %rdx
addq %rdx, %rax
movq %rcx, (%rax)
movq 0x350(%rsp), %rax
movq 0x370(%rsp), %rcx
subq 0x368(%rsp), %rcx
cmpq %rcx, %rax
jne 0x1582bf
movq 0x3a0(%rsp), %rdi
imulq $0x48, 0x370(%rsp), %rax
addq %rax, %rdi
movq 0x330(%rsp), %rdx
movq 0x348(%rsp), %rcx
movq 0x338(%rsp), %r8
movq 0x340(%rsp), %r9
leaq 0x280(%rsp), %rsi
callq 0x159690
movq 0x368(%rsp), %rcx
addq 0x3d0(%rsp), %rcx
movq 0x3a0(%rsp), %rax
imulq $0x48, 0x370(%rsp), %rdx
addq %rdx, %rax
movq %rcx, 0x8(%rax)
movq 0x370(%rsp), %rcx
movq 0x2b0(%rsp), %rax
movq 0x368(%rsp), %rdx
subq 0x360(%rsp), %rdx
imulq $0x30, %rdx, %rdx
addq %rdx, %rax
movq %rcx, (%rax)
movq 0x2b0(%rsp), %rax
movq 0x368(%rsp), %rcx
subq 0x360(%rsp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movl $0x0, 0x8(%rax)
jmp 0x15830b
movq 0x2b0(%rsp), %rdi
movq 0x368(%rsp), %rax
subq 0x360(%rsp), %rax
imulq $0x30, %rax, %rax
addq %rax, %rdi
movq 0x330(%rsp), %rdx
movq 0x348(%rsp), %rcx
movq 0x338(%rsp), %r8
movq 0x340(%rsp), %r9
leaq 0x280(%rsp), %rsi
callq 0x1597f0
movq 0x318(%rsp), %rax
movq 0x368(%rsp), %rcx
subq 0x360(%rsp), %rcx
subq $0x1, %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movabsq $0x7fffffffffffffff, %rcx # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rcx, (%rax)
je 0x158380
movq 0x318(%rsp), %rax
movq 0x368(%rsp), %rcx
subq 0x360(%rsp), %rcx
subq $0x1, %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq 0x380(%rsp), %rcx
addq 0x378(%rsp), %rcx
addq %rcx, %rax
movq %rax, 0x88(%rsp)
jmp 0x158394
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x88(%rsp)
jmp 0x158394
movq 0x88(%rsp), %rax
movq %rax, 0x348(%rsp)
movq 0x318(%rsp), %rax
movq 0x368(%rsp), %rcx
subq 0x360(%rsp), %rcx
subq $0x1, %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movabsq $0x7fffffffffffffff, %rcx # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rcx, 0x8(%rax)
je 0x158410
movq 0x318(%rsp), %rax
movq 0x368(%rsp), %rcx
subq 0x360(%rsp), %rcx
subq $0x1, %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
addq 0x380(%rsp), %rax
movq %rax, 0x80(%rsp)
jmp 0x158424
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x80(%rsp)
jmp 0x158424
movq 0x80(%rsp), %rax
movq %rax, 0x340(%rsp)
movq 0x318(%rsp), %rax
movq 0x368(%rsp), %rcx
subq 0x360(%rsp), %rcx
subq $0x1, %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movabsq $0x7fffffffffffffff, %rcx # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rcx, 0x10(%rax)
je 0x1584a8
movq 0x318(%rsp), %rax
movq 0x368(%rsp), %rcx
subq 0x360(%rsp), %rcx
subq $0x1, %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq 0x380(%rsp), %rcx
addq 0x378(%rsp), %rcx
addq %rcx, %rax
movq %rax, 0x78(%rsp)
jmp 0x1584b9
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x78(%rsp)
jmp 0x1584b9
movq 0x78(%rsp), %rax
movq %rax, 0x338(%rsp)
movq 0x348(%rsp), %rax
cmpq 0x340(%rsp), %rax
jge 0x158512
movq 0x348(%rsp), %rax
cmpq 0x338(%rsp), %rax
jge 0x1584f9
movq 0x348(%rsp), %rax
movq %rax, 0x70(%rsp)
jmp 0x158506
movq 0x338(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0x68(%rsp)
jmp 0x15854a
movq 0x340(%rsp), %rax
cmpq 0x338(%rsp), %rax
jge 0x158533
movq 0x340(%rsp), %rax
movq %rax, 0x60(%rsp)
jmp 0x158540
movq 0x338(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x60(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x330(%rsp)
movq 0x330(%rsp), %rcx
movq 0x318(%rsp), %rax
movq 0x368(%rsp), %rdx
subq 0x360(%rsp), %rdx
imulq $0x30, %rdx, %rdx
addq %rdx, %rax
movq %rcx, 0x8(%rax)
movq 0x350(%rsp), %rax
movq 0x370(%rsp), %rcx
subq 0x368(%rsp), %rcx
cmpq %rcx, %rax
jne 0x15867e
movq 0x3a0(%rsp), %rdi
imulq $0x48, 0x370(%rsp), %rax
addq %rax, %rdi
addq $0x18, %rdi
movq 0x2b0(%rsp), %rsi
movq 0x368(%rsp), %rax
subq 0x360(%rsp), %rax
subq $0x1, %rax
imulq $0x30, %rax, %rax
addq %rax, %rsi
movq 0x330(%rsp), %rdx
movq 0x348(%rsp), %rcx
movq 0x338(%rsp), %r8
movq 0x340(%rsp), %r9
callq 0x159690
movq 0x368(%rsp), %rcx
addq 0x3d0(%rsp), %rcx
movq 0x3a0(%rsp), %rax
imulq $0x48, 0x370(%rsp), %rdx
addq %rdx, %rax
movq %rcx, 0x20(%rax)
movq 0x370(%rsp), %rcx
movq 0x2b0(%rsp), %rax
movq 0x368(%rsp), %rdx
subq 0x360(%rsp), %rdx
imulq $0x30, %rdx, %rdx
addq %rdx, %rax
movq %rcx, 0x10(%rax)
movq 0x2b0(%rsp), %rax
movq 0x368(%rsp), %rcx
subq 0x360(%rsp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movl $0x1, 0x18(%rax)
jmp 0x1586e9
movq 0x2b0(%rsp), %rdi
movq 0x368(%rsp), %rax
subq 0x360(%rsp), %rax
imulq $0x30, %rax, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq 0x2b0(%rsp), %rsi
movq 0x368(%rsp), %rax
subq 0x360(%rsp), %rax
subq $0x1, %rax
imulq $0x30, %rax, %rax
addq %rax, %rsi
movq 0x330(%rsp), %rdx
movq 0x348(%rsp), %rcx
movq 0x338(%rsp), %r8
movq 0x340(%rsp), %r9
callq 0x1597f0
jmp 0x1586eb
movq 0x368(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x368(%rsp)
jmp 0x157a22
jmp 0x158706
movq 0x370(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x370(%rsp)
jmp 0x157107
movq 0x318(%rsp), %rax
movq 0x358(%rsp), %rcx
movq 0x360(%rsp), %rdx
subq %rdx, %rcx
leaq (%rcx,%rcx,2), %rcx
shlq $0x4, %rcx
movq (%rax,%rcx), %rax
movq %rax, 0x348(%rsp)
movq 0x318(%rsp), %rax
movq 0x358(%rsp), %rcx
movq 0x360(%rsp), %rdx
subq %rdx, %rcx
leaq (%rcx,%rcx,2), %rcx
shlq $0x4, %rcx
movq 0x8(%rax,%rcx), %rax
movq %rax, 0x340(%rsp)
movq 0x318(%rsp), %rax
movq 0x358(%rsp), %rcx
movq 0x360(%rsp), %rdx
subq %rdx, %rcx
leaq (%rcx,%rcx,2), %rcx
shlq $0x4, %rcx
movq 0x10(%rax,%rcx), %rax
movq %rax, 0x338(%rsp)
movl 0x38c(%rsp), %eax
movl %eax, 0x5c(%rsp)
subl $0x1, %eax
je 0x15886a
jmp 0x1587c4
movl 0x5c(%rsp), %eax
subl $0x2, %eax
jne 0x1588fe
jmp 0x1587d3
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, 0x348(%rsp)
je 0x1587fe
movq 0x348(%rsp), %rax
addq 0x378(%rsp), %rax
movq %rax, 0x50(%rsp)
jmp 0x15880f
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x50(%rsp)
jmp 0x15880f
movq 0x50(%rsp), %rax
movq %rax, 0x348(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, 0x340(%rsp)
je 0x158847
movq 0x340(%rsp), %rax
addq 0x378(%rsp), %rax
movq %rax, 0x48(%rsp)
jmp 0x158858
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x48(%rsp)
jmp 0x158858
movq 0x48(%rsp), %rax
movq %rax, 0x340(%rsp)
jmp 0x158900
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, 0x348(%rsp)
je 0x158895
movq 0x348(%rsp), %rax
addq 0x378(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x1588a6
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x40(%rsp)
jmp 0x1588a6
movq 0x40(%rsp), %rax
movq %rax, 0x348(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, 0x338(%rsp)
je 0x1588de
movq 0x338(%rsp), %rax
addq 0x378(%rsp), %rax
movq %rax, 0x38(%rsp)
jmp 0x1588ef
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, 0x38(%rsp)
jmp 0x1588ef
movq 0x38(%rsp), %rax
movq %rax, 0x338(%rsp)
jmp 0x158900
jmp 0x158900
movq 0x348(%rsp), %rax
cmpq 0x340(%rsp), %rax
jge 0x15894c
movq 0x348(%rsp), %rax
cmpq 0x338(%rsp), %rax
jge 0x158933
movq 0x348(%rsp), %rax
movq %rax, 0x30(%rsp)
jmp 0x158940
movq 0x338(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x28(%rsp)
jmp 0x158984
movq 0x340(%rsp), %rax
cmpq 0x338(%rsp), %rax
jge 0x15896d
movq 0x340(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0x15897a
movq 0x338(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x330(%rsp)
movq 0x330(%rsp), %rax
cmpq 0x348(%rsp), %rax
jne 0x1589de
movq 0x2b0(%rsp), %rax
movq 0x358(%rsp), %rcx
subq 0x360(%rsp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, 0x3b0(%rsp)
movq 0x8(%rax), %rax
movq %rax, 0x3b8(%rsp)
jmp 0x158a76
movq 0x330(%rsp), %rax
cmpq 0x338(%rsp), %rax
jne 0x158a29
movq 0x2b0(%rsp), %rax
movq 0x358(%rsp), %rcx
subq 0x360(%rsp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq 0x20(%rax), %rcx
movq %rcx, 0x3b0(%rsp)
movq 0x28(%rax), %rax
movq %rax, 0x3b8(%rsp)
jmp 0x158a74
movq 0x330(%rsp), %rax
cmpq 0x340(%rsp), %rax
jne 0x158a72
movq 0x2b0(%rsp), %rax
movq 0x358(%rsp), %rcx
subq 0x360(%rsp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rcx
movq %rcx, 0x3b0(%rsp)
movq 0x18(%rax), %rax
movq %rax, 0x3b8(%rsp)
jmp 0x158a74
jmp 0x158a76
movq 0x3b0(%rsp), %rax
movl 0x3b8(%rsp), %edx
addq $0x3c0, %rsp            # imm = 0x3C0
popq %rbx
retq
nop