// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/ft-front-prune.c
// Function: front_prune_edist_inplace
GtUword front_prune_edist_inplace(
                         bool rightextension,
                         GtAllocatedMemory *frontspace,
                         GtFtPolished_point *best_polished_point,
                         GtFrontTrace *front_trace,
                         const GtFtPolishing_info *pol_info,
                         GtTrimmingStrategy trimstrategy,
                         GtUword max_history,
                         GtUword minmatchpercentage,
                         GtUword maxalignedlendifference,
                         bool showfrontinfo,
                         GtUword seedlength,
                         GtFTsequenceResources *ufsr,
                         GtUword ustart,
                         GtUword ulen,
                         GtUword vseqstartpos,
                         GtFTsequenceResources *vfsr,
                         GtUword vstart,
                         GtUword vlen,
                         bool cam_generic,
                         GtFtTrimstat *trimstat)
{
  const GtUword sumseqlength = ulen + vlen,
                minsizeforshift = sumseqlength/1000;
  /* so the space for allocating the fronts is
     sizeof (GtFtFrontvalue) * ((m+n)/1000 + maxvalid), where maxvalid is a
     small constant. */
  GtUword distance, trimleft = 0, valid = 1UL, maxvalid = 0, sumvalid = 0;
  GtFtFrontvalue *validbasefront;
  bool diedout = false;
  GtFtSequenceObject useq, vseq;
  /* This transformation allows to compute the /100  by >> 7 */
  const GtUword minmatchpercentage128
    = (minmatchpercentage * 128)/100 +
      (((minmatchpercentage * 128) % 100 == 0) ? 0 : 1);
  const uint64_t max_history_mask
    = max_history == 64 ? (~((uint64_t) 0))
                        : ((((uint64_t) 1) << max_history) - 1);
  GtLongestCommonFunc ft_longest_common;

  ft_sequenceobject_init(&useq,
                         ufsr->extend_char_access,
                         ufsr->twobit_possible,
                         ufsr->encseq,
                         rightextension,
                         ufsr->readmode,
                         0,
                         ustart,
                         ulen,
                         ufsr->encseq_r,
                         ufsr->sequence_cache,
                         ufsr->bytesequence,
                         ufsr->totallength,
                         ufsr->full_totallength);
  ft_sequenceobject_init(&vseq,
                         vfsr->extend_char_access,
                         vfsr->twobit_possible,
                         vfsr->encseq,
                         rightextension,
                         vfsr->readmode,
                         vseqstartpos,
                         vstart,
                         vlen,
                         vfsr->encseq_r,
                         vfsr->sequence_cache,
                         vfsr->bytesequence,
                         vfsr->totallength,
                         vfsr->full_totallength);
  if (cam_generic)
  {
    ft_longest_common = ft_longest_common_all;
  } else
  {
    const bool haswildcards
      = (ufsr->haswildcards && vfsr->haswildcards) ? true : false;
    const int func_index
      = gt_sequenceobject_longest_func_index(&useq,&vseq,haswildcards);
    ft_longest_common = ft_longest_common_func_tab[func_index];
  }
  frontspace->offset = 0;
  for (distance = 0, valid = 1UL; /* Nothing */; distance++, valid += 2)
  {
    GtUword trim, maxalignedlen, minlenfrommaxdiff;

    gt_assert(valid <= GT_MULT2(distance) + 1);
    sumvalid += valid;
    if (maxvalid < valid)
    {
      maxvalid = valid;
    }
    validbasefront = frontspace_allocate(minsizeforshift,trimleft,valid,
                                         frontspace);
    if (distance == 0)
    {
      validbasefront->row = 0;
      if (seedlength >= sizeof (validbasefront->matchhistory_bits) * CHAR_BIT)
      {
        validbasefront->matchhistory_bits = ~((uint64_t) 0);
      } else
      {
        validbasefront->matchhistory_bits = (((uint64_t) 1) << seedlength) - 1;
      }
      validbasefront->matchhistory_size = GT_MIN(max_history,seedlength);
      validbasefront->backreference = 0; /* No back reference */
      validbasefront->max_mismatches = 0;
      front_prune_add_matches(ft_longest_common,validbasefront + distance,
                              validbasefront,max_history,&useq,&vseq,trimstat);
      maxalignedlen = GT_MULT2(validbasefront->row);
    } else
    {
      gt_assert(valid >= 3UL);
      frontspace_check((const GtFtFrontvalue *) frontspace->space,
                       ((const GtFtFrontvalue *) frontspace->space)
                        + frontspace->allocated - 1,
                       validbasefront + trimleft);
      frontspace_check((const GtFtFrontvalue *) frontspace->space,
                       ((const GtFtFrontvalue *) frontspace->space)
                         + frontspace->allocated - 1,
                       validbasefront + trimleft + valid - 1);
      if (valid == 3UL)
      {
        maxalignedlen = front_second_inplace(ft_longest_common,
                                             validbasefront + distance,
                                             validbasefront + trimleft,
                                             max_history,
                                             &useq,
                                             &vseq,
                                             trimstat);
      } else
      {
        maxalignedlen
          = front_next_inplace(ft_longest_common,
                               validbasefront + distance,
                               validbasefront + trimleft,
                               validbasefront + trimleft + valid - 1,
                               max_history,
                               &useq,
                               &vseq,
                               trimstat);
      }
    }
    gt_assert(valid > 0);
    minlenfrommaxdiff = maxalignedlen >= maxalignedlendifference
                          ? maxalignedlen - maxalignedlendifference
                          : 0;
    trim = trim_front(true,
                      distance,
                      ulen,
                      vlen,
                      minmatchpercentage128,
                      minlenfrommaxdiff,
                      trimstrategy,
                      best_polished_point,
                      validbasefront + distance,
                      validbasefront + trimleft,
                      validbasefront + trimleft + valid,
                      max_history_mask,
                      showfrontinfo);
    if (trim > 0)
    {
      trimleft += trim;
      gt_assert(valid >= trim);
      valid -= trim;
    }
    if (valid > 0)
    {
      trim = trim_front(false,
                        distance,
                        ulen,
                        vlen,
                        minmatchpercentage128,
                        minlenfrommaxdiff,
                        trimstrategy,
                        best_polished_point,
                        validbasefront + distance,
                        validbasefront + trimleft + valid - 1,
                        validbasefront + trimleft - 1,
                        max_history_mask,
                        showfrontinfo);
      gt_assert(trim < valid);
      if (trim > 0)
      {
        gt_assert(valid >= trim);
        valid -= trim;
      }
    }
    if (valid == 0)
    {
      diedout = true;
      break;
    }
    if (front_trace != NULL)
    {
      front_trace_add_gen(front_trace,trimleft,valid);
    }
    ft_update_trace_and_polished(best_polished_point,
                                 front_trace,
                                 pol_info,
                                 distance,
                                 trimleft,
                                 validbasefront + distance,
                                 validbasefront + trimleft,
                                 validbasefront + trimleft + valid - 1,
                                 showfrontinfo);
    if ((vlen > ulen && vlen - ulen <= distance) ||
        (vlen <= ulen && ulen - vlen <= distance))
    {
      if (distance + vlen - ulen >= trimleft &&
          distance + vlen - ulen <= trimleft + valid - 1 &&
          validbasefront[distance + vlen - ulen].row == ulen)
      {
        break;
      }
    }
    if (distance >= sumseqlength)
    {
      break;
    }
  }
  if (trimstat != NULL)
  {
    gt_ft_trimstat_add(trimstat,diedout,sumvalid,maxvalid,distance,
                       sizeof (GtFtFrontvalue) * frontspace->allocated);
  }
  return diedout ? sumseqlength + 1 : distance;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1f8, %rsp            # imm = 0x1F8
movq %rcx, 0x68(%rsp)
movq %rdx, %rax
movq 0x68(%rsp), %rdx
movq %rax, 0x70(%rsp)
movq %rsi, %rax
movq 0x70(%rsp), %rsi
movq %rax, 0x78(%rsp)
movl %edi, %eax
movq 0x78(%rsp), %rdi
movb %al, %r10b
movq 0x298(%rsp), %rax
movb 0x290(%rsp), %al
movq 0x288(%rsp), %rcx
movq 0x280(%rsp), %rcx
movq 0x278(%rsp), %rcx
movq 0x270(%rsp), %rcx
movq 0x268(%rsp), %rcx
movq 0x260(%rsp), %rcx
movq 0x258(%rsp), %rcx
movq 0x250(%rsp), %rcx
movb 0x248(%rsp), %cl
movq 0x240(%rsp), %r11
movq 0x238(%rsp), %r11
movq 0x230(%rsp), %r11
andb $0x1, %r10b
movb %r10b, 0x1f7(%rsp)
movq %rdi, 0x1e8(%rsp)
movq %rsi, 0x1e0(%rsp)
movq %rdx, 0x1d8(%rsp)
movq %r8, 0x1d0(%rsp)
movl %r9d, 0x1cc(%rsp)
andb $0x1, %cl
movb %cl, 0x1cb(%rsp)
andb $0x1, %al
movb %al, 0x1ca(%rsp)
movq 0x268(%rsp), %rax
addq 0x288(%rsp), %rax
movq %rax, 0x1c0(%rsp)
movq 0x1c0(%rsp), %rax
movl $0x3e8, %ecx            # imm = 0x3E8
xorl %edx, %edx
divq %rcx
movq %rax, 0x1b8(%rsp)
movq $0x0, 0x1a8(%rsp)
movq $0x1, 0x1a0(%rsp)
movq $0x0, 0x198(%rsp)
movq $0x0, 0x190(%rsp)
movb $0x0, 0x187(%rsp)
movq 0x238(%rsp), %rax
shlq $0x7, %rax
movl $0x64, %ecx
xorl %edx, %edx
divq %rcx
movq %rax, 0x80(%rsp)
movq 0x238(%rsp), %rax
shlq $0x7, %rax
movl $0x64, %ecx
xorl %edx, %edx
divq %rcx
movq 0x80(%rsp), %rax
movq %rdx, %rsi
movl $0x1, %ecx
xorl %edx, %edx
cmpq $0x0, %rsi
cmovel %edx, %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, 0xb8(%rsp)
cmpq $0x40, 0x230(%rsp)
jne 0x4cd4dd
movq $-0x1, %rax
movq %rax, 0x60(%rsp)
jmp 0x4cd4f6
movq 0x230(%rsp), %rcx
movl $0x1, %eax
shlq %cl, %rax
subq $0x1, %rax
movq %rax, 0x60(%rsp)
movq 0x60(%rsp), %rax
movq %rax, 0xb0(%rsp)
movq 0x258(%rsp), %rax
movl 0x34(%rax), %esi
movq 0x258(%rsp), %rax
movb 0x38(%rax), %dl
movq 0x258(%rsp), %rax
movq (%rax), %rcx
movb 0x1f7(%rsp), %r8b
movq 0x258(%rsp), %rax
movl 0x30(%rax), %r9d
movq 0x260(%rsp), %r12
movq 0x268(%rsp), %r15
movq 0x258(%rsp), %rax
movq 0x10(%rax), %r14
movq 0x258(%rsp), %rax
movq 0x8(%rax), %rbx
movq 0x258(%rsp), %rax
movq 0x18(%rax), %r11
movq 0x258(%rsp), %rax
movq 0x20(%rax), %r10
movq 0x258(%rsp), %rax
movq 0x28(%rax), %rax
leaq 0x120(%rsp), %rdi
xorl %ebp, %ebp
andb $0x1, %dl
andb $0x1, %r8b
movzbl %dl, %edx
movzbl %r8b, %r8d
movq $0x0, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq %rbx, 0x20(%rsp)
movq %r11, 0x28(%rsp)
movq %r10, 0x30(%rsp)
movq %rax, 0x38(%rsp)
callq 0x4ce120
movq 0x278(%rsp), %rax
movl 0x34(%rax), %esi
movq 0x278(%rsp), %rax
movb 0x38(%rax), %dl
movq 0x278(%rsp), %rax
movq (%rax), %rcx
movb 0x1f7(%rsp), %r8b
movq 0x278(%rsp), %rax
movl 0x30(%rax), %r9d
movq 0x270(%rsp), %r13
movq 0x280(%rsp), %r12
movq 0x288(%rsp), %r15
movq 0x278(%rsp), %rax
movq 0x10(%rax), %r14
movq 0x278(%rsp), %rax
movq 0x8(%rax), %rbx
movq 0x278(%rsp), %rax
movq 0x18(%rax), %r11
movq 0x278(%rsp), %rax
movq 0x20(%rax), %r10
movq 0x278(%rsp), %rax
movq 0x28(%rax), %rax
leaq 0xc0(%rsp), %rdi
andb $0x1, %dl
andb $0x1, %r8b
movzbl %dl, %edx
movzbl %r8b, %r8d
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq %rbx, 0x20(%rsp)
movq %r11, 0x28(%rsp)
movq %r10, 0x30(%rsp)
movq %rax, 0x38(%rsp)
callq 0x4ce120
testb $0x1, 0x1ca(%rsp)
je 0x4cd6b5
leaq 0xfc8(%rip), %rax       # 0x4ce670
movq %rax, 0xa8(%rsp)
jmp 0x4cd73b
movq 0x258(%rsp), %rcx
xorl %eax, %eax
testb $0x1, 0x39(%rcx)
movb %al, 0x5f(%rsp)
je 0x4cd6d8
movq 0x278(%rsp), %rax
movb 0x39(%rax), %al
movb %al, 0x5f(%rsp)
movb 0x5f(%rsp), %dl
xorl %eax, %eax
movl $0x1, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, 0xa7(%rsp)
movb 0xa7(%rsp), %al
leaq 0x120(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
andb $0x1, %al
movzbl %al, %edx
callq 0x4ce6f0
movl %eax, 0xa0(%rsp)
movslq 0xa0(%rsp), %rcx
leaq 0x174311(%rip), %rax    # 0x641a40
movq (%rax,%rcx,8), %rax
movq %rax, 0xa8(%rsp)
movq 0x1e8(%rsp), %rax
movq $0x0, 0x8(%rax)
movq $0x0, 0x1b0(%rsp)
movq $0x1, 0x1a0(%rsp)
jmp 0x4cd765
movq 0x1a0(%rsp), %rax
movq 0x1b0(%rsp), %rcx
shlq %rcx
addq $0x1, %rcx
cmpq %rcx, %rax
jbe 0x4cd7b9
movq 0x16e818(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x48881(%rip), %rsi     # 0x516013
leaq 0xebb7f(%rip), %rdx     # 0x5b9318
leaq 0xebb98(%rip), %rcx     # 0x5b9338
leaq 0xebbab(%rip), %r8      # 0x5b9352
movl $0x2c7, %r9d            # imm = 0x2C7
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4cd7bb
movq 0x1a0(%rsp), %rax
addq 0x190(%rsp), %rax
movq %rax, 0x190(%rsp)
movq 0x198(%rsp), %rax
cmpq 0x1a0(%rsp), %rax
jae 0x4cd7f5
movq 0x1a0(%rsp), %rax
movq %rax, 0x198(%rsp)
movq 0x1b8(%rsp), %rdi
movq 0x1a8(%rsp), %rsi
movq 0x1a0(%rsp), %rdx
movq 0x1e8(%rsp), %rcx
callq 0x4ce750
movq %rax, 0x188(%rsp)
cmpq $0x0, 0x1b0(%rsp)
jne 0x4cd942
movq 0x188(%rsp), %rax
movl $0x0, 0x8(%rax)
cmpq $0x40, 0x250(%rsp)
jb 0x4cd85c
movq 0x188(%rsp), %rax
movq $-0x1, (%rax)
jmp 0x4cd87e
movq 0x250(%rsp), %rcx
movl $0x1, %eax
shlq %cl, %rax
movq %rax, %rcx
subq $0x1, %rcx
movq 0x188(%rsp), %rax
movq %rcx, (%rax)
movq 0x230(%rsp), %rax
cmpq 0x250(%rsp), %rax
jae 0x4cd89f
movq 0x230(%rsp), %rax
movq %rax, 0x50(%rsp)
jmp 0x4cd8ac
movq 0x250(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rax
movb %al, %cl
movq 0x188(%rsp), %rax
movb %cl, 0x10(%rax)
movq 0x188(%rsp), %rax
movb $0x0, 0x11(%rax)
movq 0x188(%rsp), %rax
movl $0x0, 0x14(%rax)
movq 0xa8(%rsp), %rdi
movq 0x188(%rsp), %rsi
imulq $0x18, 0x1b0(%rsp), %rax
addq %rax, %rsi
movq 0x188(%rsp), %rdx
movq 0x230(%rsp), %rcx
movq 0x298(%rsp), %rax
leaq 0x120(%rsp), %r8
leaq 0xc0(%rsp), %r9
movq %rax, (%rsp)
callq 0x4cea80
movq 0x188(%rsp), %rax
movl 0x8(%rax), %eax
shll %eax
movl %eax, %eax
movq %rax, 0x90(%rsp)
jmp 0x4cdb1c
jmp 0x4cd944
cmpq $0x3, 0x1a0(%rsp)
jae 0x4cd987
movq 0x16e64a(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x486b3(%rip), %rsi     # 0x516013
leaq 0xeba06(%rip), %rdx     # 0x5b936d
leaq 0xeb9ca(%rip), %rcx     # 0x5b9338
leaq 0xeb9dd(%rip), %r8      # 0x5b9352
movl $0x2e1, %r9d            # imm = 0x2E1
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4cd989
movq 0x1e8(%rsp), %rax
movq (%rax), %rdi
movq 0x1e8(%rsp), %rax
movq (%rax), %rsi
movq 0x1e8(%rsp), %rax
imulq $0x18, 0x10(%rax), %rax
addq %rax, %rsi
addq $-0x18, %rsi
movq 0x188(%rsp), %rdx
imulq $0x18, 0x1a8(%rsp), %rax
addq %rax, %rdx
callq 0x4cec10
movq 0x1e8(%rsp), %rax
movq (%rax), %rdi
movq 0x1e8(%rsp), %rax
movq (%rax), %rsi
movq 0x1e8(%rsp), %rax
imulq $0x18, 0x10(%rax), %rax
addq %rax, %rsi
addq $-0x18, %rsi
movq 0x188(%rsp), %rdx
imulq $0x18, 0x1a8(%rsp), %rax
addq %rax, %rdx
imulq $0x18, 0x1a0(%rsp), %rax
addq %rax, %rdx
addq $-0x18, %rdx
callq 0x4cec10
cmpq $0x3, 0x1a0(%rsp)
jne 0x4cda90
movq 0xa8(%rsp), %rdi
movq 0x188(%rsp), %rsi
imulq $0x18, 0x1b0(%rsp), %rax
addq %rax, %rsi
movq 0x188(%rsp), %rdx
imulq $0x18, 0x1a8(%rsp), %rax
addq %rax, %rdx
movq 0x230(%rsp), %rcx
movq 0x298(%rsp), %rax
leaq 0x120(%rsp), %r8
leaq 0xc0(%rsp), %r9
movq %rax, (%rsp)
callq 0x4cec80
movq %rax, 0x90(%rsp)
jmp 0x4cdb1a
movq 0xa8(%rsp), %rdi
movq 0x188(%rsp), %rsi
imulq $0x18, 0x1b0(%rsp), %rax
addq %rax, %rsi
movq 0x188(%rsp), %rdx
imulq $0x18, 0x1a8(%rsp), %rax
addq %rax, %rdx
movq 0x188(%rsp), %rcx
imulq $0x18, 0x1a8(%rsp), %rax
addq %rax, %rcx
imulq $0x18, 0x1a0(%rsp), %rax
addq %rax, %rcx
addq $-0x18, %rcx
movq 0x230(%rsp), %r8
movq 0x298(%rsp), %rax
leaq 0x120(%rsp), %r9
leaq 0xc0(%rsp), %r10
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x4cf010
movq %rax, 0x90(%rsp)
jmp 0x4cdb1c
jmp 0x4cdb1e
cmpq $0x0, 0x1a0(%rsp)
ja 0x4cdb61
movq 0x16e470(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x484d9(%rip), %rsi     # 0x516013
leaq 0xeb839(%rip), %rdx     # 0x5b937a
leaq 0xeb7f0(%rip), %rcx     # 0x5b9338
leaq 0xeb803(%rip), %r8      # 0x5b9352
movl $0x300, %r9d            # imm = 0x300
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4cdb63
movq 0x90(%rsp), %rax
cmpq 0x240(%rsp), %rax
jb 0x4cdb8c
movq 0x90(%rsp), %rax
subq 0x240(%rsp), %rax
movq %rax, 0x48(%rsp)
jmp 0x4cdb95
xorl %eax, %eax
movq %rax, 0x48(%rsp)
jmp 0x4cdb95
movq 0x48(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0x1b0(%rsp), %rsi
movq 0x268(%rsp), %rdx
movq 0x288(%rsp), %rcx
movq 0xb8(%rsp), %r8
movq 0x88(%rsp), %r9
movl 0x1cc(%rsp), %ebp
movq 0x1e0(%rsp), %r15
movq 0x188(%rsp), %r14
imulq $0x18, 0x1b0(%rsp), %rax
addq %rax, %r14
movq 0x188(%rsp), %rbx
imulq $0x18, 0x1a8(%rsp), %rax
addq %rax, %rbx
movq 0x188(%rsp), %r11
imulq $0x18, 0x1a8(%rsp), %rax
addq %rax, %r11
imulq $0x18, 0x1a0(%rsp), %rax
addq %rax, %r11
movq 0xb0(%rsp), %r10
movb 0x1cb(%rsp), %al
movl $0x1, %edi
andb $0x1, %al
movl %ebp, (%rsp)
movq %r15, 0x8(%rsp)
movq %r14, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq %r11, 0x20(%rsp)
movq %r10, 0x28(%rsp)
movzbl %al, %eax
movl %eax, 0x30(%rsp)
callq 0x4cf6a0
movq %rax, 0x98(%rsp)
cmpq $0x0, 0x98(%rsp)
jbe 0x4cdcf1
movq 0x98(%rsp), %rax
addq 0x1a8(%rsp), %rax
movq %rax, 0x1a8(%rsp)
movq 0x1a0(%rsp), %rax
cmpq 0x98(%rsp), %rax
jae 0x4cdcd4
movq 0x16e2fd(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x48366(%rip), %rsi     # 0x516013
leaq 0xeb6d0(%rip), %rdx     # 0x5b9384
leaq 0xeb67d(%rip), %rcx     # 0x5b9338
leaq 0xeb690(%rip), %r8      # 0x5b9352
movl $0x314, %r9d            # imm = 0x314
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4cdcd6
movq 0x98(%rsp), %rcx
movq 0x1a0(%rsp), %rax
subq %rcx, %rax
movq %rax, 0x1a0(%rsp)
cmpq $0x0, 0x1a0(%rsp)
jbe 0x4cde8c
movq 0x1b0(%rsp), %rsi
movq 0x268(%rsp), %rdx
movq 0x288(%rsp), %rcx
movq 0xb8(%rsp), %r8
movq 0x88(%rsp), %r9
movl 0x1cc(%rsp), %ebp
movq 0x1e0(%rsp), %r15
movq 0x188(%rsp), %r14
imulq $0x18, 0x1b0(%rsp), %rax
addq %rax, %r14
movq 0x188(%rsp), %rbx
imulq $0x18, 0x1a8(%rsp), %rax
addq %rax, %rbx
imulq $0x18, 0x1a0(%rsp), %rax
addq %rax, %rbx
addq $-0x18, %rbx
movq 0x188(%rsp), %r11
imulq $0x18, 0x1a8(%rsp), %rax
addq %rax, %r11
addq $-0x18, %r11
movq 0xb0(%rsp), %r10
movb 0x1cb(%rsp), %al
xorl %edi, %edi
andb $0x1, %al
movl %ebp, (%rsp)
movq %r15, 0x8(%rsp)
movq %r14, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq %r11, 0x20(%rsp)
movq %r10, 0x28(%rsp)
movzbl %al, %eax
movl %eax, 0x30(%rsp)
callq 0x4cf6a0
movq %rax, 0x98(%rsp)
movq 0x98(%rsp), %rax
cmpq 0x1a0(%rsp), %rax
jb 0x4cde14
movq 0x16e1bd(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x48226(%rip), %rsi     # 0x516013
leaq 0xeb59e(%rip), %rdx     # 0x5b9392
leaq 0xeb53d(%rip), %rcx     # 0x5b9338
leaq 0xeb550(%rip), %r8      # 0x5b9352
movl $0x326, %r9d            # imm = 0x326
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4cde16
cmpq $0x0, 0x98(%rsp)
jbe 0x4cde8a
jmp 0x4cde23
movq 0x1a0(%rsp), %rax
cmpq 0x98(%rsp), %rax
jae 0x4cde6d
movq 0x16e164(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x481cd(%rip), %rsi     # 0x516013
leaq 0xeb537(%rip), %rdx     # 0x5b9384
leaq 0xeb4e4(%rip), %rcx     # 0x5b9338
leaq 0xeb4f7(%rip), %r8      # 0x5b9352
movl $0x329, %r9d            # imm = 0x329
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4cde6f
movq 0x98(%rsp), %rcx
movq 0x1a0(%rsp), %rax
subq %rcx, %rax
movq %rax, 0x1a0(%rsp)
jmp 0x4cde8c
cmpq $0x0, 0x1a0(%rsp)
jne 0x4cdea4
movb $0x1, 0x187(%rsp)
jmp 0x4ce08c
cmpq $0x0, 0x1d8(%rsp)
je 0x4cdecc
movq 0x1d8(%rsp), %rdi
movq 0x1a8(%rsp), %rsi
movq 0x1a0(%rsp), %rdx
callq 0x4c69d0
movq 0x1e0(%rsp), %rdi
movq 0x1d8(%rsp), %rsi
movq 0x1d0(%rsp), %rdx
movq 0x1b0(%rsp), %rcx
movq 0x1a8(%rsp), %r8
movq 0x188(%rsp), %r9
imulq $0x18, 0x1b0(%rsp), %rax
addq %rax, %r9
movq 0x188(%rsp), %r11
imulq $0x18, 0x1a8(%rsp), %rax
addq %rax, %r11
movq 0x188(%rsp), %r10
imulq $0x18, 0x1a8(%rsp), %rax
addq %rax, %r10
imulq $0x18, 0x1a0(%rsp), %rax
addq %rax, %r10
addq $-0x18, %r10
movb 0x1cb(%rsp), %al
andb $0x1, %al
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movzbl %al, %eax
movl %eax, 0x10(%rsp)
callq 0x4cf910
movq 0x288(%rsp), %rax
cmpq 0x268(%rsp), %rax
jbe 0x4cdf8a
movq 0x288(%rsp), %rax
subq 0x268(%rsp), %rax
cmpq 0x1b0(%rsp), %rax
jbe 0x4cdfbe
movq 0x288(%rsp), %rax
cmpq 0x268(%rsp), %rax
ja 0x4ce049
movq 0x268(%rsp), %rax
subq 0x288(%rsp), %rax
cmpq 0x1b0(%rsp), %rax
ja 0x4ce049
movq 0x1b0(%rsp), %rax
addq 0x288(%rsp), %rax
subq 0x268(%rsp), %rax
cmpq 0x1a8(%rsp), %rax
jb 0x4ce047
movq 0x1b0(%rsp), %rax
addq 0x288(%rsp), %rax
subq 0x268(%rsp), %rax
movq 0x1a8(%rsp), %rcx
addq 0x1a0(%rsp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
ja 0x4ce047
movq 0x188(%rsp), %rax
movq 0x1b0(%rsp), %rcx
addq 0x288(%rsp), %rcx
subq 0x268(%rsp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
cmpq 0x268(%rsp), %rax
jne 0x4ce047
jmp 0x4ce08c
jmp 0x4ce049
movq 0x1b0(%rsp), %rax
cmpq 0x1c0(%rsp), %rax
jb 0x4ce05d
jmp 0x4ce08c
jmp 0x4ce05f
movq 0x1b0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x1b0(%rsp)
movq 0x1a0(%rsp), %rax
addq $0x2, %rax
movq %rax, 0x1a0(%rsp)
jmp 0x4cd763
cmpq $0x0, 0x298(%rsp)
je 0x4ce0d5
movq 0x298(%rsp), %rdi
movb 0x187(%rsp), %al
movq 0x190(%rsp), %rdx
movq 0x198(%rsp), %rcx
movq 0x1b0(%rsp), %r8
movq 0x1e8(%rsp), %rsi
imulq $0x18, 0x10(%rsi), %r9
andb $0x1, %al
movzbl %al, %esi
callq 0x24fcb0
testb $0x1, 0x187(%rsp)
je 0x4ce0f2
movq 0x1c0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x40(%rsp)
jmp 0x4ce0ff
movq 0x1b0(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
addq $0x1f8, %rsp            # imm = 0x1F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopw %cs:(%rax,%rax)