// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/extended/diagonalbandalign_affinegapcost.c
// Function: evaluateaffineDBcrosspoints
static GtAffineAlignRnode evaluateaffineDBcrosspoints(
                                             GtLinspaceManagement *spacemanager,
                                             GtAffineDiagAlignentry *Diagcolumn,
                                             const GtScoreHandler *scorehandler,
                                             GtAffineAlignEdge edge,
                                             GtAffineAlignEdge from_edge,
                                             GtAffineAlignEdge to_edge,
                                             GtUword rowoffset,
                                             GtUword coloffset,
                                             const GtUchar *useq,
                                             GtUword ustart,
                                             GtUword ulen,
                                             const GtUchar *vseq,
                                             GtUword vstart,
                                             GtUword vlen,
                                             GtWord left_dist,
                                             GtWord right_dist)
{
  GtUword i,new_ulen, new_vlen, col_start, col_end,
          row_start = 0, row_end;
  GtWord new_left, new_right, diag;
  GtDiagAlignentry cpoint = {0,0,0}, prevcpoint;
  GtAffineDiagAlignentry temp_entry;
  GtAffineAlignRnode rpoint, temprpoint, lastrpoint;
  GtAffineAlignEdge prevcp_type,cp_type;

  diag = GT_DIV2(left_dist+right_dist);
  gt_assert(vstart == coloffset);

  if (ulen == 0)
  {
    switch (edge) {
      case(Affine_R):
      {
        Diagcolumn[0].val_R.currentrowindex = rowoffset;
        Diagcolumn[0].val_R.last_type = from_edge;
        prevcp_type = Affine_R;
        break;
      }
      case(Affine_I):
      {
        Diagcolumn[0].val_I.currentrowindex = rowoffset;
        Diagcolumn[0].val_I.last_type = from_edge;
        prevcp_type = Affine_I;
        break;
      }
      case(Affine_D):
      {
        Diagcolumn[0].val_D.currentrowindex = rowoffset;
        Diagcolumn[0].val_D.last_type = from_edge;
        prevcp_type = Affine_D;
        break;
      }
      default:
      {
        Diagcolumn[0].val_I.currentrowindex = rowoffset;
        Diagcolumn[0].val_I.last_type = from_edge;
        prevcp_type = Affine_I;
      }
    }

    for (i = 1; i <=vlen; i++)
    {
      Diagcolumn[i].val_I.currentrowindex = rowoffset;
      Diagcolumn[i].val_I.last_type = prevcp_type;
      prevcp_type = Affine_I;
    }
    return (GtAffineAlignRnode) {vlen, prevcp_type};

  }

  if (vlen == 0)
  {
    switch (edge) {
      case(Affine_R):
      {
        Diagcolumn[0].val_R.currentrowindex = rowoffset;
        Diagcolumn[0].val_R.last_type = from_edge;
        break;
      }
      case(Affine_I):
      {
        Diagcolumn[0].val_I.currentrowindex = rowoffset;
        Diagcolumn[0].val_I.last_type = from_edge;
        break;
      }
      case(Affine_D):
      {
        Diagcolumn[0].val_D.currentrowindex = rowoffset;
        Diagcolumn[0].val_D.last_type = from_edge;
        break;
      }
      default:
      {
        Diagcolumn[0].val_D.currentrowindex = rowoffset;
        Diagcolumn[0].val_D.last_type = from_edge;
      }
    }
    return (GtAffineAlignRnode) {0, edge};
  }

  if (gt_linspace_management_checksquare(spacemanager, ulen, vlen,
                                         sizeof (GtAffinealignDPentry),
                                         sizeof (GtAffineAlignRtabentry)))
  { /* call square function */
    return affineDtab_in_square_space(spacemanager, Diagcolumn,
                                      useq, ustart, ulen, vseq, vstart, vlen,
                                      left_dist, right_dist, rowoffset,
                                      from_edge, edge, to_edge,scorehandler);
  }

  rpoint = evaluateallaffineDBcolumns(spacemanager, Diagcolumn, scorehandler,
                                      edge, from_edge, to_edge, rowoffset,
                                      useq, ustart, ulen,  vseq, vstart, vlen,
                                      left_dist, right_dist);

  lastrpoint = rpoint;
  col_start = rpoint.idx;
  cp_type = rpoint.edge;

  /* if no crosspoint is found */
  if (col_start == GT_UWORD_MAX)
  {
    gt_assert(diag != 0);
    if (diag < 0)
    {
      return evaluateaffineDBcrosspoints(spacemanager, Diagcolumn, scorehandler,
                                         edge, from_edge, to_edge, rowoffset,
                                         coloffset, useq, ustart, ulen, vseq,
                                         vstart, vlen, diag+1, right_dist);
    } else
    {
      if (diag > 0)
      {
        return evaluateaffineDBcrosspoints(spacemanager, Diagcolumn,
                                           scorehandler,
                                           edge, from_edge, to_edge, rowoffset,
                                           coloffset, useq, ustart, ulen, vseq,
                                           vstart, vlen, left_dist, diag-1);
      }
    }
  }
  else
  {
    switch (cp_type) {
    case Affine_R:
      cpoint = Diagcolumn[col_start].val_R;
      cp_type = Affine_R;
      row_start = Diagcolumn[col_start].val_R.currentrowindex;
      break;
    case Affine_D:
      cpoint = Diagcolumn[col_start].val_D;
      cp_type = Affine_D;
      row_start = Diagcolumn[col_start].val_D.currentrowindex;
      break;
    default:
      gt_assert(cp_type == Affine_I);
      cpoint = Diagcolumn[col_start].val_I;
      cp_type = Affine_I;
      row_start = Diagcolumn[col_start].val_I.currentrowindex;
      break;
    }
  }

  /* exception, if last cpoint != (m+1)entry */
  if (col_start != vlen)
  {
    if (diag + ((GtWord)ulen-(GtWord)vlen) > 0)
    {
      new_ulen = ulen - (row_start+1-rowoffset);
      new_vlen = vlen-col_start;
      new_left = GT_MAX((GtWord)left_dist-diag+1,
                    -(GtWord)new_ulen);
      new_right = 0;
      temp_entry = Diagcolumn[col_start];
      lastrpoint = evaluateaffineDBcrosspoints(spacemanager,
                      Diagcolumn+col_start, scorehandler, Affine_D,
                      cpoint.last_type, to_edge,
                      row_start+1, coloffset+col_start, useq,
                      row_start+1, new_ulen, vseq,
                      vstart+col_start, new_vlen, new_left, new_right);
      Diagcolumn[col_start] = temp_entry;
      Diagcolumn[col_start+1].val_R.last_type = cp_type;
      Diagcolumn[col_start+1].val_D.last_type = cp_type;
      Diagcolumn[col_start+1].val_I.last_type = cp_type;

      lastrpoint.idx += col_start;
    }
    else
    {
      new_ulen = ulen - (row_start - rowoffset);
      new_vlen = vlen-col_start-1;
      new_left = -1;
      new_right = GT_MIN((GtWord)right_dist-((GtWord)diag)-1,new_vlen);

      lastrpoint = evaluateaffineDBcrosspoints(spacemanager,
                            Diagcolumn+col_start+1,scorehandler, Affine_I,
                            cp_type, to_edge, row_start, coloffset+col_start+1,
                            useq, row_start, new_ulen, vseq, vstart+col_start+1,
                            new_vlen, new_left, new_right);
      lastrpoint.idx += (col_start+1);
    }
  }
  /* look at all 'normally' crosspoints */
  while (cpoint.lastcpoint != GT_UWORD_MAX)
  {
    prevcpoint = cpoint;
    prevcp_type = cp_type;
    col_end = col_start;
    row_end = row_start;
    col_start = prevcpoint.lastcpoint;
    switch (prevcpoint.last_type) {
    case Affine_R:
      cpoint = Diagcolumn[col_start].val_R;
      cp_type = Affine_R;
      row_start = Diagcolumn[col_start].val_R.currentrowindex;
      break;
    case Affine_D:
      cpoint = Diagcolumn[col_start].val_D;
      cp_type = Affine_D;
      row_start = Diagcolumn[col_start].val_D.currentrowindex;
      break;
    default:
      gt_assert(prevcpoint.last_type == Affine_I);
      cpoint = Diagcolumn[col_start].val_I;
      cp_type = Affine_I;
      row_start = Diagcolumn[col_start].val_I.currentrowindex;
      break;
    }

    if (prevcp_type == Affine_R ||
       ((prevcp_type == Affine_I) && (col_end-col_start == 1)))
    {
      continue;/* next crosspoint is also on the diagonal*/
    }
    else if (prevcp_type == Affine_D)
    {
      new_ulen = row_end - row_start - 1;
      new_vlen = col_end-col_start-1;
      new_left = -1;
      new_right = GT_MIN(right_dist-diag-1,new_vlen);

      temprpoint = evaluateaffineDBcrosspoints(spacemanager,
                           Diagcolumn+col_start+1, scorehandler,
                           Affine_I, cp_type, Affine_D, row_start,
                           coloffset + col_start + 1, useq, row_start,
                           new_ulen, vseq, vstart + col_start + 1,
                           new_vlen, new_left, new_right);
      if (temprpoint.idx + col_start + 1 < vlen)
      {
        GtUword update_idx = temprpoint.idx+1+col_start+1;
        Diagcolumn[update_idx].val_R.last_type = temprpoint.edge;
        Diagcolumn[update_idx].val_D.last_type = temprpoint.edge;
        Diagcolumn[update_idx].val_I.last_type = temprpoint.edge;
      }
      if (temprpoint.idx + col_start + 1 == lastrpoint.idx)
      {
        lastrpoint = temprpoint;
        lastrpoint.idx += col_start + 1;
      }
    }
    else if (prevcp_type == Affine_I)
    {
      new_ulen = row_end - row_start-1;
      new_left = GT_MAX(left_dist-diag+1,
                        -(GtWord)new_ulen);
      new_right = 0;
      temp_entry = Diagcolumn[col_start];
      temprpoint = evaluateaffineDBcrosspoints(spacemanager,
                            Diagcolumn + col_start, scorehandler,
                            Affine_D, cpoint.last_type, Affine_I, row_start + 1,
                            coloffset + col_start,
                            useq, row_start+1, new_ulen,
                            vseq, vstart+col_start, col_end-col_start-1,
                            new_left, new_right);
      Diagcolumn[col_start] = temp_entry;
      Diagcolumn[col_start+1].val_R.last_type = cp_type;
      Diagcolumn[col_start+1].val_D.last_type = cp_type;
      Diagcolumn[col_start+1].val_I.last_type = cp_type;
      Diagcolumn[col_end].val_I.last_type = temprpoint.edge;
    }
    else
    {
      /* if (Diagcolumn[cpoint].last_type == Linear_X), never reach this line */
      gt_assert(false);
    }
  }
  col_end = col_start;
  row_end = row_start;
  /* exception, if first crosspoint != 0-entry */
   if (vstart-coloffset != col_end)
   {
     switch (cp_type) {
     case Affine_D:
      if (row_end == ustart-1)
         gt_assert(false);
       new_ulen = row_end-ustart-1;
       new_left =  GT_MAX(-new_ulen, diag);
       new_right = GT_MIN(right_dist, (GtWord)col_end);

       rpoint = evaluateaffineDBcrosspoints(spacemanager, Diagcolumn,
                                        scorehandler, edge, from_edge,Affine_D,
                                        rowoffset,coloffset, useq, ustart,
                                        new_ulen, vseq, vstart, col_end,
                                        new_left, new_right);
       if (col_start + 1 <= vlen)
       {
         Diagcolumn[col_start+1].val_R.last_type = rpoint.edge;
         Diagcolumn[col_start+1].val_D.last_type = rpoint.edge;
         Diagcolumn[col_start+1].val_I.last_type = rpoint.edge;
       }
       if (rpoint.idx == lastrpoint.idx)
         lastrpoint = rpoint;
       break;
     case Affine_I:
       new_ulen = row_end-ustart;
       new_vlen = col_end-1;
       new_left = GT_MAX(left_dist,
                 -(GtWord)new_ulen);

       new_right = GT_MIN(diag,new_vlen);
       rpoint = evaluateaffineDBcrosspoints(spacemanager, Diagcolumn,
                               scorehandler,edge, from_edge, Affine_I,rowoffset,
                               coloffset, useq, ustart, new_ulen, vseq, vstart,
                               new_vlen, new_left, new_right);

       Diagcolumn[col_start].val_I.last_type = rpoint.edge;
       break;
     default:
       gt_assert(false);
     }
   }
   else if (cp_type == Affine_D)
   {
     Diagcolumn[1].val_I.last_type = Affine_R;
     Diagcolumn[1].val_D.last_type = Affine_R;
     Diagcolumn[1].val_R.last_type = Affine_R;
     Diagcolumn[0].val_R.currentrowindex = rowoffset;
     Diagcolumn[0].val_R.last_type = from_edge;
   }
  return lastrpoint;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1f8, %rsp            # imm = 0x1F8
movq %rdx, 0x50(%rsp)
movq 0x260(%rsp), %rax
subq 0x238(%rsp), %rax
jne 0x13d7f9
movl %r8d, %r15d
movl %ecx, %ebx
movq %rsi, %r13
movq 0x268(%rsp), %r14
movq 0x250(%rsp), %rcx
movq 0x230(%rsp), %rdx
movq %rcx, 0xd0(%rsp)
testq %rcx, %rcx
je 0x13bc7e
testq %r14, %r14
je 0x13bca9
movl %r9d, 0x44(%rsp)
movq %rax, 0x160(%rsp)
movl $0x30, %ecx
movl $0x30, %r8d
movq 0x250(%rsp), %r12
movq %r12, %rsi
movq %r14, %rdx
movq %rdi, %rbp
callq 0x163af9
testb %al, %al
movq %rbx, 0x108(%rsp)
movq %r15, 0xa8(%rsp)
je 0x13bcc8
testq %rbp, %rbp
je 0x13d803
testq %r13, %r13
je 0x13d803
movq 0x250(%rsp), %rax
leaq 0x1(%rax), %rbx
leaq 0x1(%r14), %rax
imulq %rbx, %rax
shlq $0x4, %rax
movq %r14, %r15
leaq (%rax,%rax,2), %r14
movq %rbp, %rdi
callq 0x163bba
cmpq %rax, %r14
ja 0x13d80d
movq %rbp, %rdi
callq 0x163ba0
movq %rax, %r14
movq %rbp, %rdi
callq 0x163b94
movq %rax, (%r14)
leaq (%r15,%r15,2), %r15
cmpq $0x2, %rbx
movq 0x250(%rsp), %rbp
jb 0x13bbcc
movq %r15, %rax
shlq $0x4, %rax
addq $0x30, %rax
movq (%r14), %rcx
addq %rax, %rcx
xorl %edx, %edx
movq %rcx, 0x8(%r14,%rdx,8)
addq %rax, %rcx
incq %rdx
cmpq %rdx, %rbp
jne 0x13bbbc
movq %r14, %rdi
movq 0x240(%rsp), %rsi
movq 0x248(%rsp), %rdx
movq %rbp, %rcx
movq 0x258(%rsp), %r8
movq 0x260(%rsp), %r9
movq 0x50(%rsp), %rbx
pushq %rbx
pushq 0x110(%rsp)
pushq 0xb8(%rsp)
pushq 0x290(%rsp)
pushq 0x290(%rsp)
pushq 0x290(%rsp)
callq 0x13ab0a
addq $0x30, %rsp
movq %rbx, %rdi
callq 0x1797eb
shlq $0x4, %r15
addq (%r14,%rbp,8), %r15
movq %r15, %rdi
movl 0x44(%rsp), %esi
movq %rax, %rdx
callq 0x161ab9
cmpl $0x1, %eax
je 0x13beb1
cmpl $0x2, %eax
movq 0x230(%rsp), %rbp
movq 0x268(%rsp), %rsi
leaq (%rsi,%rsi,8), %rcx
jne 0x13bedf
leaq 0x30(,%rcx,8), %rcx
addq %r13, %rcx
movl $0x2, %ebx
jmp 0x13beec
movl $0x40, %eax
movl $0x38, %ecx
cmpl $0x2, %ebx
je 0x13be69
cmpl $0x1, %ebx
jne 0x13be64
movl $0x28, %eax
movl $0x20, %ecx
jmp 0x13be69
cmpl $0x1, %ebx
je 0x13be54
cmpl $0x2, %ebx
jne 0x13be54
movq %rdx, 0x38(%r13)
movl %r15d, 0x40(%r13)
jmp 0x13be5c
movq %rbp, 0x90(%rsp)
subq %r12, %r14
movq %r14, %rdx
sarq $0x3f, %rdx
andq %r14, %rdx
xorl %eax, %eax
testq %r14, %r14
cmovgq %r14, %rax
movq 0x270(%rsp), %rcx
cmpq %rcx, %rdx
jl 0x13d808
cmpq 0x278(%rsp), %rax
jg 0x13d808
movq 0x90(%rsp), %r14
movq %r14, %rdi
callq 0x163b94
movq %rax, %rbp
movq %r14, %rdi
callq 0x163ba0
movq %rax, %r12
movq 0x270(%rsp), %rax
negq %rax
movq %rax, 0xa0(%rsp)
cmpq 0x250(%rsp), %rax
sete %al
movl %eax, (%rsp)
movq 0x50(%rsp), %r14
movq %r14, %rdi
callq 0x1797eb
movq %rax, 0x100(%rsp)
movq %r14, %rdi
callq 0x1797fb
movq %rax, 0xf0(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, (%rbp)
movq %rax, 0x8(%rbp)
movq %rbp, 0x58(%rsp)
movq %rax, 0x10(%rbp)
testq %r13, %r13
movq 0x248(%rsp), %r10
je 0x13d812
movq $-0x1, %rax
movq %rax, 0x8(%r13)
movl $0x3, %ecx
movl %ecx, 0x10(%r13)
movq %rax, (%r13)
movq %rax, 0x20(%r13)
movl %ecx, 0x28(%r13)
movq %rax, 0x18(%r13)
movq %rax, 0x38(%r13)
movl %ecx, 0x40(%r13)
movq %rax, 0x30(%r13)
testq %r12, %r12
movq 0x230(%rsp), %rdi
je 0x13d817
movq 0x278(%rsp), %rdx
movq 0x270(%rsp), %rsi
leaq (%rdx,%rsi), %r14
movq %rax, (%r12)
movl %ecx, 0x8(%r12)
movq %rax, 0x10(%r12)
movl %ecx, 0x18(%r12)
movq %rax, 0x20(%r12)
movl %ecx, 0x28(%r12)
cmpl $0x2, %ebx
je 0x13c04b
cmpl $0x1, %ebx
jne 0x13c076
movq 0x58(%rsp), %rax
movq $0x0, 0x8(%rax)
movl %r15d, 0x18(%r12)
cmpq $0x1, %r14
ja 0x13c0de
movq %rdi, 0x20(%r13)
movl %r15d, 0x28(%r13)
movq $0x0, 0x10(%r12)
movl $0x1, 0x18(%r12)
jmp 0x13c0de
movq %rdx, 0x20(%r13)
movl %r15d, 0x28(%r13)
xorl %r8d, %r8d
jmp 0x13d7c9
movl $0x2, %ebx
movq %rdx, (%r13,%rcx)
movl %r15d, (%r13,%rax)
testq %r14, %r14
je 0x13bea9
leaq 0x1(%r14), %rcx
cmpq $0x3, %rcx
movl $0x2, %eax
cmovaeq %rcx, %rax
decq %rax
addq $0x88, %r13
movq %rdx, -0x8(%r13)
movl %ebx, (%r13)
addq $0x48, %r13
movl $0x2, %ebx
decq %rax
jne 0x13be93
movq %r14, %r8
jmp 0x13d7c9
movq 0x268(%rsp), %rsi
leaq (%rsi,%rsi,8), %rcx
leaq 0x18(,%rcx,8), %rcx
addq %r13, %rcx
movl $0x1, %ebx
movq 0xa8(%rsp), %r15
movq 0x230(%rsp), %rbp
jmp 0x13bef4
leaq (,%rcx,8), %rcx
addq %r13, %rcx
xorl %ebx, %ebx
movq 0xa8(%rsp), %r15
movb $0x1, %dil
movabsq $0x7fffffffffffffff, %rdx # imm = 0x7FFFFFFFFFFFFFFF
movb $0x1, %r8b
cmpq 0x268(%rsp), %rsi
cmovel %eax, %ebx
cmpl $0x2, %eax
je 0x13bfa2
cmpl $0x1, %eax
je 0x13bf7c
testl %eax, %eax
jne 0x13d7e0
movq 0xd0(%rsp), %r12
movq (%r14,%r12,8), %rax
leaq (%rsi,%rsi,2), %r9
shlq $0x4, %r9
cmpq %rdx, (%rax,%r9)
je 0x13d7f4
leaq (%r12,%rbp), %r11
leaq (%rsi,%rsi,8), %r10
movq %r11, 0x8(%r13,%r10,8)
movl 0x20(%rax,%r9), %eax
movl $0x0, 0x10(%rcx)
andb %dil, %r8b
testb $0x1, %r8b
je 0x13d7ef
leaq (,%r10,8), %rcx
addq %r13, %rcx
decq %r12
decq %rsi
jmp 0x13bfee
movq 0xd0(%rsp), %r12
testq %r12, %r12
je 0x13d7e5
movq (%r14,%r12,8), %rax
leaq (%rsi,%rsi,2), %rdi
shlq $0x4, %rdi
movl 0x24(%rax,%rdi), %eax
decq %r12
jmp 0x13bfee
movq 0xd0(%rsp), %r8
leaq (%r8,%rbp), %rax
leaq (%rsi,%rsi,8), %rdi
movq %rax, 0x38(%r13,%rdi,8)
movq (%r14,%r8,8), %rax
leaq (%rsi,%rsi,2), %r8
shlq $0x4, %r8
movl 0x28(%rax,%r8), %eax
movl $0x2, 0x10(%rcx)
testq %rsi, %rsi
je 0x13d7ea
leaq 0x30(,%rdi,8), %rcx
addq %r13, %rcx
decq %rsi
movq 0xd0(%rsp), %r12
testq %r12, %r12
setne %r8b
testq %rsi, %rsi
setne %dil
movq %r12, 0xd0(%rsp)
movq %r12, %r9
orq %rsi, %r9
jne 0x13bf04
movl %eax, 0x10(%rcx)
movq $-0x1, %rax
movq %rax, (%r13)
movq %rbp, 0x8(%r13)
movl %r15d, 0x10(%r13)
movq %rax, 0x18(%r13)
movq %rbp, 0x20(%r13)
movl %r15d, 0x28(%r13)
movq %rax, 0x30(%r13)
movq %rbp, 0x38(%r13)
movl %r15d, 0x40(%r13)
movq 0x268(%rsp), %r8
jmp 0x13d7c9
movq 0x58(%rsp), %rax
movq $0x0, 0x10(%rax)
movl %r15d, 0x28(%r12)
cmpq $0x1, %r14
ja 0x13c0de
movq %rdi, 0x38(%r13)
movl %r15d, 0x40(%r13)
movq $0x0, 0x20(%r12)
jmp 0x13c0d5
movq 0x58(%rsp), %rcx
movq $0x0, (%rcx)
movq 0x100(%rsp), %rax
movq %rax, 0x8(%rcx)
movq %rax, 0x10(%rcx)
movl %r15d, 0x28(%r12)
movl %r15d, 0x8(%r12)
movl %r15d, 0x18(%r12)
cmpq $0x1, %r14
ja 0x13c0de
movq %rdi, 0x8(%r13)
movq %rdi, 0x20(%r13)
movq %rdi, 0x38(%r13)
xorl %eax, %eax
movq %rax, (%r12)
movl $0x0, 0x8(%r12)
movq %rax, 0x10(%r12)
movl $0x1, 0x18(%r12)
movq %rax, 0x20(%r12)
movl $0x2, 0x28(%r12)
movq %r14, 0x158(%rsp)
sarq %r14
testq %rsi, %rsi
je 0x13c1c1
movq %r14, %rax
negq %rax
movl $0x1, %ecx
movl $0x40, %edx
movq $-0x1, %rsi
movl $0x3, %edi
movabsq $0x7fffffffffffffff, %rbp # imm = 0x7FFFFFFFFFFFFFFF
movq 0x58(%rsp), %r11
movq %rbp, -0x10(%r11,%rdx)
movq -0x38(%r11,%rdx), %r8
movq 0xf0(%rsp), %r9
addq %r8, %r9
cmpq %rbp, %r8
cmoveq %rbp, %r9
movq %r9, -0x8(%r11,%rdx)
movq %rbp, (%r11,%rdx)
cmpq %rcx, %rax
jne 0x13c189
movl %r15d, 0x28(%r13)
movq %rsi, 0x18(%r13)
movq 0x230(%rsp), %r8
addq %rcx, %r8
movq %r8, 0x20(%r13)
movq $0x0, (%r12,%rdx)
movl $0x1, 0x8(%r12,%rdx)
movq %rsi, 0x8(%r13)
movl %edi, 0x10(%r13)
movq %rsi, (%r13)
movq %rsi, 0x38(%r13)
movl %edi, 0x40(%r13)
movq %rsi, 0x30(%r13)
jmp 0x13c1ac
movups -0x40(%r12,%rdx), %xmm0
movups -0x30(%r12,%rdx), %xmm1
movups -0x20(%r12,%rdx), %xmm2
movups %xmm2, 0x10(%r12,%rdx)
movups %xmm1, (%r12,%rdx)
movups %xmm0, -0x10(%r12,%rdx)
incq %rcx
addq $0x30, %rdx
cmpq 0xa0(%rsp), %rcx
jbe 0x13c11d
movq %r13, 0x18(%rsp)
movq 0x240(%rsp), %rax
leaq (%rax,%r10), %rcx
movq %rcx, 0x178(%rsp)
addq %r10, %rax
decq %rax
movq %rax, 0x180(%rsp)
movq 0x260(%rsp), %rax
movq 0x258(%rsp), %rcx
leaq -0x1(%rcx,%rax), %rax
movq %rax, 0x150(%rsp)
movq 0x100(%rsp), %rax
movq 0xf0(%rsp), %rcx
addq %rcx, %rax
movq %rax, 0x138(%rsp)
movq 0x58(%rsp), %rax
addq $0x40, %rax
movq %rax, 0x170(%rsp)
movl $0x1, %r9d
movl $0x1, %eax
subq 0x250(%rsp), %rax
movq %rax, 0x168(%rsp)
xorl %r8d, %r8d
movq %r14, 0xb0(%rsp)
movq %r14, 0x148(%rsp)
movabsq $0x7fffffffffffffff, %r11 # imm = 0x7FFFFFFFFFFFFFFF
movq %r11, %r15
movq %r11, %rbp
movq %r11, 0x78(%rsp)
movl $0x0, 0x80(%rsp)
movl $0x0, 0x20(%rsp)
movq $0x0, 0x28(%rsp)
movl $0x0, 0x14(%rsp)
movl $0x0, 0x30(%rsp)
movq $0x0, 0x38(%rsp)
movl $0x0, 0x88(%rsp)
movl $0x0, 0x60(%rsp)
xorl %ebx, %ebx
movq %r12, 0x48(%rsp)
movl (%rsp), %esi
movq 0xa0(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq %rbx, 0x8(%rsp)
movq 0x58(%rsp), %rax
movq (%rax), %rcx
movq %rcx, 0xe8(%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x68(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x70(%rsp)
movq %r12, %r10
movq (%r12), %r12
movl 0x8(%r10), %ecx
movl 0xc(%r10), %edx
movq 0x10(%r10), %rax
movl 0x18(%r10), %r14d
movl 0x1c(%r10), %ebx
movq 0x20(%r10), %rdi
movl 0x28(%r10), %r13d
movl 0x2c(%r10), %r10d
cmpq 0x278(%rsp), %r9
movq %rax, 0xe0(%rsp)
movl %r14d, 0xd8(%rsp)
movl %ecx, 0x120(%rsp)
movq %r12, 0xb8(%rsp)
movq %rdi, 0xc8(%rsp)
movl %r13d, 0x128(%rsp)
movl %ebx, 0xc4(%rsp)
movl %edx, 0x118(%rsp)
movl %r10d, 0x110(%rsp)
jbe 0x13c3fc
movq 0x68(%rsp), %r14
movq 0xa0(%rsp), %rdx
cmpq %rdx, %r8
je 0x13c3ef
movq 0x58(%rsp), %rax
movq 0x30(%rax), %r15
movq 0x38(%rax), %rbp
movq 0x40(%rax), %rax
movq %rax, 0x78(%rsp)
movq 0x48(%rsp), %rcx
movq 0x30(%rcx), %rax
movq %rax, 0x8(%rsp)
movl 0x38(%rcx), %eax
movl %eax, 0x60(%rsp)
movl 0x3c(%rcx), %eax
movl %eax, 0x88(%rsp)
movq 0x40(%rcx), %rax
movq %rax, 0x38(%rsp)
movl 0x48(%rcx), %eax
movl %eax, 0x30(%rsp)
movl 0x4c(%rcx), %eax
movl %eax, 0x14(%rsp)
movq 0x50(%rcx), %rax
movq %rax, 0x28(%rsp)
movl 0x58(%rcx), %eax
movl %eax, 0x20(%rsp)
movl 0x5c(%rcx), %eax
movl %eax, 0x80(%rsp)
incq %r8
movq 0x70(%rsp), %rbx
movq %r14, %r13
jmp 0x13c44e
movq %r12, 0x8(%rsp)
movl %ecx, 0x60(%rsp)
movl %edx, 0x88(%rsp)
movq %rax, 0x38(%rsp)
movl %r14d, 0x30(%rsp)
movl %ebx, 0x14(%rsp)
movq %rdi, 0x28(%rsp)
movl %r13d, 0x20(%rsp)
movl %r10d, 0x80(%rsp)
movq 0x70(%rsp), %rbx
movq %rbx, 0x78(%rsp)
movq 0x68(%rsp), %r13
movq %r13, %rbp
movq 0xe8(%rsp), %r15
movq 0xa0(%rsp), %rdx
xorl %r12d, %r12d
cmpq 0x250(%rsp), %rdx
setb %r12b
leaq (%rdx,%r12), %rax
movq %rax, 0x130(%rsp)
movq %r8, 0x98(%rsp)
subq %r8, %rax
movq %rax, 0x188(%rsp)
setne %al
movl %esi, %r14d
orb %sil, %al
testb $0x1, %al
movq 0x78(%rsp), %rsi
jne 0x13c4ca
movl $0x3, 0x60(%rsp)
movq $-0x1, 0x8(%rsp)
movq $-0x1, 0x38(%rsp)
movl $0x3, 0x30(%rsp)
movq $-0x1, 0x28(%rsp)
movl $0x3, 0x20(%rsp)
movq %r11, %rsi
movq %r11, %rbp
movq %r11, %r15
movq 0x138(%rsp), %rax
leaq (%r15,%rax), %rdi
movq %r15, 0x70(%rsp)
cmpq %r11, %r15
cmoveq %r11, %rdi
addq %rbp, %rax
movq %rbp, 0x68(%rsp)
cmpq %r11, %rbp
cmoveq %r11, %rax
movq 0xf0(%rsp), %rcx
leaq (%rsi,%rcx), %rdx
movq %rsi, 0x78(%rsp)
cmpq %r11, %rsi
cmoveq %r11, %rdx
cmpq %rax, %rdi
movq %rax, %rsi
cmovlq %rdi, %rsi
cmpq %rdx, %rsi
movq %rdx, %rcx
cmovlq %rsi, %rcx
movq 0x58(%rsp), %r8
movq %rcx, 0x10(%r8)
movq %r11, (%r8)
movq %r11, 0x8(%r8)
movq %r9, %rbp
subq 0x98(%rsp), %rbp
cmpq %rbp, 0xb0(%rsp)
movq %r9, (%rsp)
jne 0x13c5f6
leaq (%r9,%r9,8), %r8
movq 0x18(%rsp), %r9
leaq (%r9,%r8,8), %r8
movq $-0x1, %r9
movq %r9, 0x8(%r8)
movl $0x3, %r10d
movl %r10d, 0x10(%r8)
movq %r9, (%r8)
movq %r9, 0x20(%r8)
movl %r10d, 0x28(%r8)
movq %r9, 0x18(%r8)
movl 0x60(%rsp), %r9d
movq 0x8(%rsp), %r10
cmpq %rdi, %rcx
je 0x13c5a8
movl 0x20(%rsp), %r9d
movq 0x28(%rsp), %r10
cmpq %rsi, %rdx
jle 0x13c5a8
movl 0x30(%rsp), %r9d
movq 0x38(%rsp), %r10
cmpq %rax, %rcx
jne 0x13c5b0
movl %r9d, 0x40(%r8)
movq %r10, 0x30(%r8)
movq 0x230(%rsp), %rax
movq 0x98(%rsp), %rcx
addq %rcx, %rax
movq %rax, 0x38(%r8)
movq 0x48(%rsp), %rax
movq $-0x1, %rdx
movq %rdx, (%rax)
movl $0x3, %esi
movl %esi, 0x8(%rax)
movq %rdx, 0x10(%rax)
movl %esi, 0x18(%rax)
movq (%rsp), %r9
movq %r9, 0x20(%rax)
movl $0x2, 0x28(%rax)
jmp 0x13c673
movq 0x8(%rsp), %r8
movl 0x60(%rsp), %r9d
movl 0x88(%rsp), %r10d
cmpq %rdi, %rcx
je 0x13c638
movq 0x28(%rsp), %r8
movl 0x20(%rsp), %r9d
movl 0x80(%rsp), %r10d
cmpq %rsi, %rdx
jle 0x13c638
movq 0x38(%rsp), %r8
movl 0x30(%rsp), %r9d
movl 0x14(%rsp), %r10d
cmpq %rax, %rcx
jne 0x13c649
movq 0x48(%rsp), %rax
movq %r8, 0x20(%rax)
movl %r9d, 0x28(%rax)
movl %r10d, 0x2c(%rax)
movq 0x48(%rsp), %rax
movq $-0x1, %rcx
movq %rcx, 0x10(%rax)
movl $0x3, %edx
movl %edx, 0x18(%rax)
movq %rcx, (%rax)
movl %edx, 0x8(%rax)
movq (%rsp), %r9
movq 0x98(%rsp), %rcx
testq %rcx, %rcx
movq %rcx, %r8
movl %r14d, %esi
je 0x13c82b
movl %esi, %r15d
movq 0x180(%rsp), %rax
movzbl (%rax,%r8), %esi
movq 0x150(%rsp), %rax
movzbl (%rax,%r9), %edx
movq 0x50(%rsp), %rdi
movq %r9, %r14
callq 0x17982a
movq 0xe8(%rsp), %rdi
leaq (%rax,%rdi), %rsi
movabsq $0x7fffffffffffffff, %rdx # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rdx, %rdi
cmoveq %rdx, %rsi
leaq (%rax,%r13), %rcx
cmpq %rdx, %r13
cmoveq %rdx, %rcx
addq %rbx, %rax
cmpq %rdx, %rbx
cmoveq %rdx, %rax
cmpq %rcx, %rsi
movq %rcx, %rdi
cmovlq %rsi, %rdi
cmpq %rax, %rdi
movq %rax, %rdx
cmovlq %rdi, %rdx
movq 0x58(%rsp), %r8
movq %rdx, (%r8)
cmpq %rbp, 0xb0(%rsp)
jne 0x13c791
leaq (%r14,%r14,8), %r8
movq 0x18(%rsp), %r9
leaq (%r9,%r8,8), %r8
cmpq %rsi, %rdx
movl 0x120(%rsp), %esi
movq 0xb8(%rsp), %r9
movl 0x128(%rsp), %r10d
je 0x13c755
movl %r10d, %esi
movq 0xc8(%rsp), %r9
cmpq %rdi, %rax
jle 0x13c755
movl 0xd8(%rsp), %esi
movq 0xe0(%rsp), %r9
cmpq %rcx, %rdx
jne 0x13c75c
movl %esi, 0x10(%r8)
movq %r9, (%r8)
movq 0x230(%rsp), %rax
movq 0x98(%rsp), %rcx
addq %rcx, %rax
movq %rax, 0x8(%r8)
movq %rcx, %r8
movq 0x48(%rsp), %rax
movq (%rsp), %r9
movq %r9, (%rax)
movl $0x0, 0x8(%rax)
movl %r15d, %esi
jmp 0x13c82b
cmpq %rsi, %rdx
movq %r14, %r9
movl 0x128(%rsp), %r10d
jne 0x13c7d2
movq 0x48(%rsp), %rax
movq 0xb8(%rsp), %rcx
movq %rcx, (%rax)
movl 0x120(%rsp), %ecx
movl %ecx, 0x8(%rax)
movl 0x118(%rsp), %ecx
movl %ecx, 0xc(%rax)
movl %r15d, %esi
movq 0x98(%rsp), %r8
jmp 0x13c82b
cmpq %rdi, %rax
movl %r15d, %esi
movq 0x98(%rsp), %r8
jle 0x13c80d
cmpq %rcx, %rdx
movl 0xc4(%rsp), %edx
jne 0x13c82b
movq 0x48(%rsp), %rax
movq 0xe0(%rsp), %rcx
movq %rcx, (%rax)
movl 0xd8(%rsp), %ecx
movl %ecx, 0x8(%rax)
movl %edx, 0xc(%rax)
jmp 0x13c82b
movq 0x48(%rsp), %rax
movq 0xc8(%rsp), %rcx
movq %rcx, (%rax)
movl %r10d, 0x8(%rax)
movl 0x110(%rsp), %ecx
movl %ecx, 0xc(%rax)
leaq 0x1(%r8), %rax
movq %rax, 0xd8(%rsp)
cmpq 0x130(%rsp), %rax
jbe 0x13c888
movabsq $0x7fffffffffffffff, %r11 # imm = 0x7FFFFFFFFFFFFFFF
movq 0x8(%rsp), %rbx
movq 0x70(%rsp), %r15
movq 0x68(%rsp), %rbp
incq %r9
decq 0x148(%rsp)
movq 0x130(%rsp), %rax
movq 0x268(%rsp), %r14
cmpq %r14, %r9
movq 0x48(%rsp), %r12
jbe 0x13c2ce
jmp 0x13cef1
leaq (%r9,%r9,8), %rax
movq 0x18(%rsp), %rcx
leaq (%rcx,%rax,8), %rax
addq $0x30, %rax
movq %rax, 0xb8(%rsp)
movq 0x178(%rsp), %rax
leaq (%rax,%r8), %rax
movq %rax, 0x1a8(%rsp)
movq 0x230(%rsp), %rax
addq %r8, %rax
movq %rax, 0xc8(%rsp)
movq 0x148(%rsp), %rax
addq %r8, %rax
movq %rax, 0x1a0(%rsp)
movq 0x168(%rsp), %rax
addq %r8, %rax
movq %rax, 0x198(%rsp)
movq %r8, %rax
subq 0xa0(%rsp), %rax
subq %r12, %rax
incq %rax
movq %rax, 0x190(%rsp)
movl $0x2, %r14d
movq 0x170(%rsp), %r13
movq 0x48(%rsp), %r12
movabsq $0x7fffffffffffffff, %r11 # imm = 0x7FFFFFFFFFFFFFFF
movq 0x8(%rsp), %rbx
movq 0x70(%rsp), %r15
movq 0x68(%rsp), %rbp
movq %rbx, 0xe8(%rsp)
movl 0x60(%rsp), %eax
movl %eax, 0xa0(%rsp)
movl 0x88(%rsp), %edx
movq 0x38(%rsp), %rax
movq %rax, 0x110(%rsp)
movl 0x30(%rsp), %eax
movl %eax, 0xfc(%rsp)
movl 0x14(%rsp), %ecx
movq 0x28(%rsp), %rax
movq %rax, 0x118(%rsp)
movl 0x20(%rsp), %eax
movl %eax, 0xe0(%rsp)
movl 0x80(%rsp), %edi
movq 0x78(%rsp), %rax
movq %rax, 0x128(%rsp)
movq %rbp, 0x120(%rsp)
testb $0x1, %sil
movl %ecx, 0x140(%rsp)
movl %edx, 0xc4(%rsp)
movl %edi, 0x144(%rsp)
jne 0x13ca15
movq 0x190(%rsp), %rax
addq %r14, %rax
cmpq $0x2, %rax
jne 0x13ca15
movl $0x3, %r8d
movq $-0x1, %r9
movl %edx, 0x88(%rsp)
movq $-0x1, 0x38(%rsp)
movl $0x3, 0x30(%rsp)
movl %ecx, 0x14(%rsp)
movq $-0x1, 0x28(%rsp)
movl $0x3, 0x20(%rsp)
movl %edi, 0x80(%rsp)
movq %r11, %r10
movq %r11, %rbp
movq %r11, %rdi
jmp 0x13ca8e
leaq (%r8,%r14), %rax
decq %rax
testq %r8, %r8
cmovneq %r14, %rax
shlq $0x4, %rax
leaq (%rax,%rax,2), %rax
movq 0x58(%rsp), %rcx
movq (%rcx,%rax), %rdi
movq 0x8(%rcx,%rax), %rbp
movq 0x10(%rcx,%rax), %r10
movq 0x48(%rsp), %rcx
movq (%rcx,%rax), %r9
movl 0x8(%rcx,%rax), %r8d
movl 0xc(%rcx,%rax), %edx
movl %edx, 0x88(%rsp)
movq 0x10(%rcx,%rax), %rdx
movq %rdx, 0x38(%rsp)
movl 0x18(%rcx,%rax), %edx
movl %edx, 0x30(%rsp)
movl 0x1c(%rcx,%rax), %edx
movl %edx, 0x14(%rsp)
movq 0x20(%rcx,%rax), %rdx
movq %rdx, 0x28(%rsp)
movl 0x28(%rcx,%rax), %edx
movl %edx, 0x20(%rsp)
movl 0x2c(%rcx,%rax), %eax
movl %eax, 0x80(%rsp)
movq 0x198(%rsp), %rax
addq %r14, %rax
cmpq $0x2, %rax
movzbl %sil, %esi
movl $0x1, %eax
cmovel %eax, %esi
movl %esi, %ebx
movq 0x138(%rsp), %rax
leaq (%rdi,%rax), %rsi
movq %rdi, 0x70(%rsp)
cmpq %r11, %rdi
cmoveq %r11, %rsi
addq %rbp, %rax
movq %rbp, 0x68(%rsp)
cmpq %r11, %rbp
cmoveq %r11, %rax
movq 0xf0(%rsp), %rcx
leaq (%r10,%rcx), %rdx
movq %r10, 0x78(%rsp)
cmpq %r11, %r10
cmoveq %r11, %rdx
cmpq %rax, %rsi
movq %rax, %rdi
cmovlq %rsi, %rdi
cmpq %rdx, %rdi
movq %rdx, %rcx
cmovlq %rdi, %rcx
movq %rcx, (%r13)
movq 0x1a0(%rsp), %r10
leaq (%r10,%r14), %rbp
cmpq $0x2, %rbp
movl %r8d, 0x60(%rsp)
movq %r9, 0x8(%rsp)
jne 0x13cb76
cmpq %rsi, %rcx
movq 0xb8(%rsp), %rsi
je 0x13cb49
movl 0x20(%rsp), %r8d
movq 0x28(%rsp), %r9
cmpq %rdi, %rdx
jle 0x13cb49
movl 0x30(%rsp), %r8d
movq 0x38(%rsp), %r9
cmpq %rax, %rcx
jne 0x13cb50
movl %r8d, 0x10(%rsi)
movq %r9, (%rsi)
movq 0xc8(%rsp), %rax
addq %r14, %rax
decq %rax
movq %rax, 0x8(%rsi)
movq (%rsp), %rcx
movq %rcx, 0x50(%r12)
movl $0x2, 0x58(%r12)
jmp 0x13cbdd
cmpq %rsi, %rcx
jne 0x13cb8e
movq %r9, 0x50(%r12)
movl %r8d, 0x58(%r12)
movl 0x88(%rsp), %eax
jmp 0x13cbd4
cmpq %rdi, %rdx
jle 0x13cbba
cmpq %rax, %rcx
movq (%rsp), %rcx
jne 0x13cbdd
movq 0x38(%rsp), %rax
movq %rax, 0x50(%r12)
movl 0x30(%rsp), %eax
movl %eax, 0x58(%r12)
movl 0x14(%rsp), %eax
movl %eax, 0x5c(%r12)
jmp 0x13cbdd
movq 0x28(%rsp), %rax
movq %rax, 0x50(%r12)
movl 0x20(%rsp), %eax
movl %eax, 0x58(%r12)
movl 0x80(%rsp), %eax
movl %eax, 0x5c(%r12)
movq (%rsp), %rcx
movq 0x1a8(%rsp), %rax
movzbl -0x2(%rax,%r14), %esi
movq 0x150(%rsp), %rax
movzbl (%rax,%rcx), %edx
movq 0x50(%rsp), %rdi
callq 0x17982a
leaq (%rax,%r15), %rsi
movabsq $0x7fffffffffffffff, %r11 # imm = 0x7FFFFFFFFFFFFFFF
cmpq %r11, %r15
cmoveq %r11, %rsi
movq 0x120(%rsp), %rdx
leaq (%rax,%rdx), %rcx
cmpq %r11, %rdx
cmoveq %r11, %rcx
movq 0x128(%rsp), %rdx
addq %rdx, %rax
cmpq %r11, %rdx
cmoveq %r11, %rax
cmpq %rcx, %rsi
movq %rcx, %rdi
cmovlq %rsi, %rdi
cmpq %rax, %rdi
movq %rax, %rdx
cmovlq %rdi, %rdx
movq %rdx, -0x10(%r13)
cmpq $0x2, %rbp
jne 0x13ccd4
cmpq %rsi, %rdx
movq 0xb8(%rsp), %rsi
movl 0xa0(%rsp), %r8d
movq 0xe8(%rsp), %r9
je 0x13cca0
movl 0xe0(%rsp), %r8d
movq 0x118(%rsp), %r9
cmpq %rdi, %rax
jle 0x13cca0
movl 0xfc(%rsp), %r8d
movq 0x110(%rsp), %r9
cmpq %rcx, %rdx
jne 0x13cca8
movl %r8d, -0x20(%rsi)
movq %r9, -0x30(%rsi)
movq 0xc8(%rsp), %rax
addq %r14, %rax
decq %rax
movq %rax, -0x28(%rsi)
movq (%rsp), %r9
movq %r9, 0x30(%r12)
movl $0x0, 0x38(%r12)
movl %ebx, %r10d
jmp 0x13cd69
cmpq %rsi, %rdx
movl 0xa0(%rsp), %esi
movq 0xe8(%rsp), %r8
jne 0x13cd07
movq %r8, 0x30(%r12)
movl %esi, 0x38(%r12)
movl 0xc4(%rsp), %eax
movl %eax, 0x3c(%r12)
movl %ebx, %r10d
movq (%rsp), %r9
jmp 0x13cd69
cmpq %rdi, %rax
movq (%rsp), %r9
movl %ebx, %r10d
jle 0x13cd44
cmpq %rcx, %rdx
movq 0x8(%rsp), %rbx
jne 0x13cd6e
movq 0x110(%rsp), %rax
movq %rax, 0x30(%r12)
movl 0xfc(%rsp), %eax
movl %eax, 0x38(%r12)
movl 0x140(%rsp), %eax
movl %eax, 0x3c(%r12)
jmp 0x13cd6e
movq 0x118(%rsp), %rax
movq %rax, 0x30(%r12)
movl 0xe0(%rsp), %eax
movl %eax, 0x38(%r12)
movl 0x144(%rsp), %eax
movl %eax, 0x3c(%r12)
movq 0x8(%rsp), %rbx
movq -0x40(%r13), %rax
movq -0x38(%r13), %rcx
movq 0x138(%rsp), %rsi
leaq (%rax,%rsi), %r8
cmpq %r11, %rax
cmoveq %r11, %r8
movq 0xf0(%rsp), %rax
addq %rcx, %rax
cmpq %r11, %rcx
cmoveq %r11, %rax
movq -0x30(%r13), %rdx
leaq (%rdx,%rsi), %rcx
cmpq %r11, %rdx
cmoveq %r11, %rcx
cmpq %rax, %r8
movq %rax, %rsi
cmovlq %r8, %rsi
cmpq %rcx, %rsi
movq %rcx, %rdx
cmovlq %rsi, %rdx
movq %rdx, -0x8(%r13)
cmpq $0x2, %rbp
jne 0x13ce25
movl $0x8, %r9d
movq %r12, %rdi
cmpq %r8, %rdx
movq 0x98(%rsp), %r8
movq 0x70(%rsp), %r15
movq 0x68(%rsp), %rbp
je 0x13ce79
movq 0xd8(%rsp), %rdi
subq %r8, %rdi
decq %rdi
leaq (%rdi,%rdi,2), %rdi
shlq $0x4, %rdi
addq 0x48(%rsp), %rdi
cmpq %rsi, %rcx
jle 0x13ce6f
cmpq %rax, %rdx
movq 0xb8(%rsp), %rcx
jne 0x13ce8f
addq $0x10, %rdi
movl $0x18, %r9d
jmp 0x13ce79
leaq 0x40(%r12), %rdi
cmpq %r8, %rdx
movq 0x70(%rsp), %r15
movq 0x68(%rsp), %rbp
jne 0x13ce4b
movups (%r12), %xmm0
movups %xmm0, (%rdi)
movq 0x98(%rsp), %r8
jmp 0x13ceb3
cmpq %rsi, %rcx
movq 0x98(%rsp), %r8
jle 0x13cee6
cmpq %rax, %rdx
movl %r10d, %esi
jne 0x13ceb6
movups 0x10(%r12), %xmm0
movups %xmm0, (%rdi)
jmp 0x13ceb6
addq $0x20, %rdi
movl $0x28, %r9d
movl (%r12,%r9), %eax
movq 0xb8(%rsp), %rcx
movl %eax, -0x8(%rcx)
movq (%rdi), %rax
movq %rax, -0x18(%rcx)
movq 0xc8(%rsp), %rax
addq %r14, %rax
decq %rax
movq %rax, -0x10(%rcx)
movq (%rsp), %r9
movq %r9, 0x40(%r12)
movl $0x1, 0x48(%r12)
movl %r10d, %esi
incq 0xd8(%rsp)
leaq (%r8,%r14), %rax
incq %rax
incq %r14
decq %rax
addq $0x30, %r12
addq $0x30, %r13
cmpq 0x130(%rsp), %rax
jbe 0x13c933
jmp 0x13c85a
movups 0x20(%r12), %xmm0
movups %xmm0, (%rdi)
jmp 0x13ceb3
movq 0x188(%rsp), %rax
leaq (%rax,%rax,2), %rax
shlq $0x4, %rax
movq 0x58(%rsp), %rcx
movq (%rcx,%rax), %rsi
movq 0x8(%rcx,%rax), %r9
movq 0x10(%rcx,%rax), %rdx
movl 0x44(%rsp), %ecx
cmpl $0x1, %ecx
je 0x13cf44
cmpl $0x2, %ecx
jne 0x13cf64
cmpq %r11, %rsi
movq 0x100(%rsp), %rcx
leaq (%rsi,%rcx), %rsi
cmoveq %r11, %rsi
addq %r9, %rcx
cmpq %r11, %r9
cmoveq %r11, %rcx
movq %rcx, %r9
jmp 0x13cf64
cmpq %r11, %rsi
movq 0x100(%rsp), %rcx
leaq (%rsi,%rcx), %rsi
cmoveq %r11, %rsi
addq %rdx, %rcx
cmpq %r11, %rdx
cmoveq %r11, %rcx
movq %rcx, %rdx
cmpq %r9, %rsi
movq %r9, %r8
cmovlq %rsi, %r8
cmpq %rdx, %r8
movq %rdx, %rdi
cmovlq %r8, %rdi
cmpq %rsi, %rdi
movq 0x230(%rsp), %r10
movq 0x18(%rsp), %rsi
movq 0x108(%rsp), %rcx
jne 0x13cf97
addq %rax, %r12
jmp 0x13cfb5
cmpq %r8, %rdx
jle 0x13cfae
cmpq %r9, %rdi
jne 0x13d1e6
addq %rax, %r12
addq $0x10, %r12
jmp 0x13cfb5
addq %rax, %r12
addq $0x20, %r12
movl 0x44(%rsp), %r9d
movq (%r12), %rbp
movl 0x8(%r12), %r15d
cmpq $-0x1, %rbp
je 0x13cfef
cmpl $0x2, %r15d
je 0x13d049
cmpl $0x1, %r15d
je 0x13d034
testl %r15d, %r15d
jne 0x13d821
leaq (,%rbp,8), %rax
addq %rbp, %rax
leaq (%rsi,%rax,8), %rax
jmp 0x13d05c
cmpq $0x1, 0x158(%rsp)
jbe 0x13d81c
movq 0xb0(%rsp), %rax
testq %rax, %rax
movq 0xa8(%rsp), %r8
js 0x13d18d
decq %rax
movq 0x90(%rsp), %rdi
movq 0x50(%rsp), %rdx
pushq %rax
pushq 0x278(%rsp)
jmp 0x13d1a5
leaq (,%rbp,8), %rax
addq %rbp, %rax
leaq (%rsi,%rax,8), %rax
addq $0x18, %rax
jmp 0x13d05c
leaq (,%rbp,8), %rax
addq %rbp, %rax
leaq (%rsi,%rax,8), %rax
addq $0x30, %rax
movq (%rax), %rbx
movq 0x8(%rax), %r13
movl 0x10(%rax), %r12d
movq %r14, %rax
movl %r15d, %r10d
movq %rbp, %r8
subq %rbp, %rax
je 0x13d2a5
movq 0x250(%rsp), %rsi
movq %rsi, %rcx
subq %r14, %rcx
movq 0xb0(%rsp), %rdx
addq %rdx, %rcx
jle 0x13d1fd
leaq 0x1(%r13), %r10
movq 0x230(%rsp), %r11
subq %r10, %r11
addq %rsi, %r11
movq 0x270(%rsp), %rcx
subq %rdx, %rcx
movq %r11, %rdx
negq %rdx
leaq 0x1(%rcx), %r14
cmpq %rdx, %rcx
cmovlq %rdx, %r14
leaq (%rbp,%rbp,8), %rcx
movq 0x18(%rsp), %rdx
leaq (%rdx,%rcx,8), %rdx
movq %rdx, (%rsp)
leaq 0x1b0(%rsp), %rdi
movl $0x9, %ecx
movq %rdx, %rsi
rep  movsq (%rsi), %es:(%rdi)
movq 0x238(%rsp), %rcx
leaq (%rbp,%rcx), %rcx
movq %rcx, 0x28(%rsp)
movq 0x260(%rsp), %rcx
leaq (%rbp,%rcx), %rcx
movq %rcx, 0x20(%rsp)
movq 0x90(%rsp), %rdi
movq %rdx, %rsi
movq 0x50(%rsp), %rdx
movl $0x1, %ecx
movl %r12d, %r8d
pushq $0x0
pushq %r14
movq 0x278(%rsp), %r14
pushq %rax
pushq 0x38(%rsp)
pushq 0x278(%rsp)
pushq %r11
pushq %r10
pushq 0x278(%rsp)
pushq 0x68(%rsp)
pushq %r10
callq 0x13ba93
addq $0x50, %rsp
movq %rax, %r8
movl %edx, %r10d
movl $0x9, %ecx
movq (%rsp), %rax
movq %rax, %rdi
leaq 0x1b0(%rsp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movl %r15d, 0x58(%rax)
movl %r15d, 0x70(%rax)
movl %r15d, 0x88(%rax)
addq %rbp, %r8
jmp 0x13d2a5
incq %rax
movq 0x90(%rsp), %rdi
movq 0x50(%rsp), %rdx
pushq 0x278(%rsp)
pushq %rax
pushq %r14
pushq 0x278(%rsp)
pushq 0x278(%rsp)
pushq 0x278(%rsp)
pushq 0x278(%rsp)
pushq 0x278(%rsp)
pushq 0x278(%rsp)
pushq %r10
callq 0x13ba93
addq $0x50, %rsp
movq %rax, %r8
movl %edx, %ebx
jmp 0x13d7c9
movl $0x3, %r15d
movq $-0x1, %rbp
movl 0x44(%rsp), %r9d
jmp 0x13cfc3
addq 0x230(%rsp), %rsi
subq %r13, %rsi
movq %rbp, %rax
notq %rax
addq %r14, %rax
movq %rdx, %r10
notq %r10
addq 0x278(%rsp), %r10
cmpq %rax, %r10
cmovaeq %rax, %r10
leaq (%rbp,%rbp,8), %rcx
movq 0x18(%rsp), %rdx
movq %rsi, %r11
leaq 0x48(%rdx,%rcx,8), %rsi
movq 0x238(%rsp), %rcx
leaq 0x1(%rcx,%rbp), %rcx
movq %rcx, (%rsp)
movq 0x260(%rsp), %rcx
leaq 0x1(%rcx,%rbp), %r14
movq 0x90(%rsp), %rdi
movq 0x50(%rsp), %rdx
movl $0x2, %ecx
movl %r15d, %r8d
pushq %r10
pushq $-0x1
pushq %rax
pushq %r14
movq 0x288(%rsp), %r14
pushq 0x278(%rsp)
pushq %r11
pushq %r13
pushq 0x278(%rsp)
pushq 0x40(%rsp)
pushq %r13
callq 0x13ba93
addq $0x50, %rsp
movl %edx, %r10d
leaq (%rax,%rbp), %r8
incq %r8
cmpq $-0x1, %rbx
je 0x13d5f0
movq 0x18(%rsp), %rax
leaq 0x48(%rax), %rdi
movq 0x270(%rsp), %r9
movq 0xb0(%rsp), %rax
subq %rax, %r9
leaq 0x1(%r9), %rcx
movq %rcx, 0x20(%rsp)
movq %rax, %r11
notq %r11
addq 0x278(%rsp), %r11
movq 0x238(%rsp), %rax
incq %rax
movq %rax, (%rsp)
movq 0x260(%rsp), %rax
incq %rax
movq %rax, 0x28(%rsp)
movq %rbp, %r14
movq %r13, %rax
movl %r15d, %ecx
movl %r12d, %r15d
movq %rbx, %rbp
cmpl $0x2, %r12d
je 0x13d350
cmpl $0x1, %r15d
movq 0x18(%rsp), %rsi
je 0x13d33b
testl %r15d, %r15d
jne 0x13d7fe
leaq (,%rbp,8), %rdx
addq %rbp, %rdx
leaq (%rsi,%rdx,8), %rdx
jmp 0x13d368
leaq (,%rbp,8), %rdx
addq %rbp, %rdx
leaq (%rsi,%rdx,8), %rdx
addq $0x18, %rdx
jmp 0x13d368
leaq (,%rbp,8), %rdx
addq %rbp, %rdx
movq 0x18(%rsp), %rsi
leaq (%rsi,%rdx,8), %rdx
addq $0x30, %rdx
movq (%rdx), %rbx
movq 0x8(%rdx), %r13
movl 0x10(%rdx), %r12d
testl %ecx, %ecx
je 0x13d388
cmpl $0x2, %ecx
jne 0x13d3a0
movq %r14, %rdx
subq %rbp, %rdx
cmpq $0x1, %rdx
jne 0x13d3a0
movq %rbp, %r14
movq %r13, %rax
movl %r15d, %ecx
cmpq $-0x1, %rbx
jne 0x13d30a
jmp 0x13d5e8
cmpl $0x1, %ecx
movq %r8, 0x88(%rsp)
movl %r10d, 0x38(%rsp)
movq %rdi, 0x30(%rsp)
movq %r9, 0x8(%rsp)
movq %r11, 0x80(%rsp)
jne 0x13d4b4
movq %r13, %rcx
notq %rcx
addq %rcx, %rax
movq %rbp, %rcx
notq %rcx
addq %rcx, %r14
cmpq %r14, %r11
movq %r14, %r10
cmovbq %r11, %r10
leaq (%rbp,%rbp,8), %rcx
movq %rcx, 0x60(%rsp)
leaq (%rdi,%rcx,8), %rsi
movq (%rsp), %rcx
leaq (%rcx,%rbp), %rcx
movq %rcx, 0x78(%rsp)
movq 0x28(%rsp), %rcx
leaq (%rcx,%rbp), %r11
movq 0x90(%rsp), %rdi
movq 0x50(%rsp), %rdx
movl $0x2, %ecx
movl %r15d, %r8d
movl $0x1, %r9d
pushq %r10
pushq $-0x1
pushq %r14
pushq %r11
pushq 0x278(%rsp)
pushq %rax
pushq %r13
pushq 0x278(%rsp)
pushq 0xb8(%rsp)
pushq %r13
callq 0x13ba93
movq 0x80(%rsp), %rdi
addq $0x50, %rsp
leaq (%rax,%rbp), %rcx
incq %rcx
movq 0x268(%rsp), %r14
cmpq %r14, %rcx
jae 0x13d486
leaq (%rax,%rax,8), %rax
leaq (%rdi,%rax,8), %rax
movq 0x60(%rsp), %rsi
movl %edx, 0x58(%rax,%rsi,8)
movl %edx, 0x70(%rax,%rsi,8)
movl %edx, 0x88(%rax,%rsi,8)
movq 0x88(%rsp), %r8
cmpq %r8, %rcx
movl 0x38(%rsp), %r10d
movq 0x8(%rsp), %r9
movq 0x80(%rsp), %r11
jne 0x13d5dc
movl %edx, %r10d
movq %rcx, %r8
jmp 0x13d5dc
cmpl $0x2, %ecx
jne 0x13d830
movq %r13, %rcx
notq %rcx
addq %rcx, %rax
movq %rax, %r11
negq %r11
cmpq %r11, %r9
cmovgeq 0x20(%rsp), %r11
leaq (%rbp,%rbp,8), %rcx
movq 0x18(%rsp), %rdx
leaq (%rdx,%rcx,8), %rsi
movl $0x9, %ecx
leaq 0x1b0(%rsp), %rdi
movq %rsi, %rdx
movq %rsi, 0x60(%rsp)
rep  movsq (%rsi), %es:(%rdi)
leaq 0x1(%r13), %rcx
movq %rcx, 0x70(%rsp)
movq 0x238(%rsp), %rcx
addq %rbp, %rcx
movq %rcx, 0x78(%rsp)
movq 0x260(%rsp), %rcx
addq %rbp, %rcx
movq %rcx, 0x68(%rsp)
movq %rbp, %r10
notq %r10
addq %r14, %r10
movq 0x90(%rsp), %rdi
movq %rdx, %rsi
movq 0x50(%rsp), %rdx
movl $0x1, %ecx
movl %r12d, %r8d
movl $0x2, %r9d
pushq $0x0
pushq %r11
pushq %r10
pushq 0x80(%rsp)
pushq 0x278(%rsp)
pushq %rax
movq 0xa0(%rsp), %rax
pushq %rax
pushq 0x278(%rsp)
pushq 0xb8(%rsp)
pushq %rax
callq 0x13ba93
movq 0x58(%rsp), %r9
addq $0x50, %rsp
movl $0x9, %ecx
movq 0x60(%rsp), %rax
movq %rax, %rdi
leaq 0x1b0(%rsp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movl %r15d, 0x58(%rax)
movl %r15d, 0x70(%rax)
movl %r15d, 0x88(%rax)
leaq (%r14,%r14,8), %rax
movq 0x18(%rsp), %rcx
movl %edx, 0x40(%rcx,%rax,8)
movq 0x268(%rsp), %r14
movq 0x88(%rsp), %r8
movl 0x38(%rsp), %r10d
movq 0x30(%rsp), %rdi
movq 0x80(%rsp), %r11
cmpq $-0x1, %rbx
jne 0x13d301
jmp 0x13d5f0
movq 0x268(%rsp), %r14
cmpq %rbp, 0x160(%rsp)
jne 0x13d632
cmpl $0x1, %r15d
jne 0x13d62a
xorl %eax, %eax
movq 0x18(%rsp), %rcx
movl %eax, 0x88(%rcx)
movl %eax, 0x70(%rcx)
movl %eax, 0x58(%rcx)
movq 0x230(%rsp), %rax
movq %rax, 0x8(%rcx)
movq 0xa8(%rsp), %rax
movl %eax, 0x10(%rcx)
movl %r10d, %ebx
jmp 0x13d7c9
cmpl $0x2, %r15d
je 0x13d71b
cmpl $0x1, %r15d
jne 0x13d826
movl %r10d, %r12d
movq %r8, %r15
movq 0x248(%rsp), %r10
leaq -0x1(%r10), %rax
cmpq %rax, %r13
movq 0xa8(%rsp), %r8
je 0x13d82b
movq %r10, %rax
notq %rax
addq %rax, %r13
movq %r13, %rax
negq %rax
movq 0xb0(%rsp), %rcx
cmpq %rax, %rcx
cmovaq %rcx, %rax
movq 0x278(%rsp), %r11
cmpq %r11, %rbp
cmovlq %rbp, %r11
movq 0x90(%rsp), %rdi
movq 0x18(%rsp), %rbx
movq %rbx, %rsi
movq 0x50(%rsp), %rdx
movq 0x108(%rsp), %rcx
movl $0x1, %r9d
pushq %r11
pushq %rax
pushq %rbp
pushq 0x278(%rsp)
pushq 0x278(%rsp)
pushq %r13
pushq %r10
pushq 0x278(%rsp)
pushq 0x278(%rsp)
pushq 0x278(%rsp)
callq 0x13ba93
addq $0x50, %rsp
incq %rbp
cmpq %r14, %rbp
ja 0x13d70c
leaq (,%rbp,8), %rcx
addq %rbp, %rcx
movl %edx, 0x10(%rbx,%rcx,8)
movl %edx, 0x28(%rbx,%rcx,8)
movl %edx, 0x40(%rbx,%rcx,8)
movq %r15, %r8
cmpq %r15, %rax
cmovel %edx, %r12d
jmp 0x13d7c6
movq 0x248(%rsp), %r11
movq %r8, %r15
movl %r10d, %r12d
subq %r11, %r13
movq %r13, %rax
negq %rax
movq 0x270(%rsp), %rcx
cmpq %rcx, %rax
cmovleq %rcx, %rax
leaq -0x1(%rbp), %r10
movq 0xb0(%rsp), %r14
cmpq %r10, %r14
cmovaeq %r10, %r14
movq 0x90(%rsp), %rdi
movq 0x18(%rsp), %rbx
movq %rbx, %rsi
movq 0x50(%rsp), %rdx
movq 0x108(%rsp), %rcx
movq 0xa8(%rsp), %r8
movl $0x2, %r9d
pushq %r14
pushq %rax
pushq %r10
pushq 0x278(%rsp)
pushq 0x278(%rsp)
pushq %r13
pushq %r11
pushq 0x278(%rsp)
pushq 0x278(%rsp)
pushq 0x278(%rsp)
callq 0x13ba93
movq %r15, %r8
addq $0x50, %rsp
leaq (,%rbp,8), %rax
addq %rbp, %rax
movl %edx, 0x40(%rbx,%rax,8)
movl %r12d, %ebx
movq %r8, %rax
movl %ebx, %edx
addq $0x1f8, %rsp            # imm = 0x1F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x40456
callq 0x403ab
callq 0x40372
callq 0x403e4
callq 0x4041d
callq 0x400ff
callq 0x40171
callq 0x40339
callq 0x40300
callq 0x4048f
callq 0x402c7
callq 0x4028e
callq 0x40255
callq 0x4021c
callq 0x401e3
callq 0x401aa
callq 0x40138
nopl (%rax)