// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/sfx-diffcov.c
// Function: dc_fill_samplelcpvalues
static void dc_fill_samplelcpvalues(bool cmpcharbychar,GtDifferencecover *dcov)
{

  GtUword suffix, kvalue, lcpinherit, start0, start1, currentlcpvalue;
  GtDifferencecover_Inversesuftabtype *inversesuftabptr = dcov->inversesuftab;
  unsigned int svalue;
  GT_UNUSED int retval;
  GtCommonunits commonunits;
  GtUchar cc1, cc2;
  GtEncseqReader *esr1, *esr2;

  esr1 = gt_encseq_create_reader_with_readmode(dcov->encseq,dcov->readmode,0);
  esr2 = gt_encseq_create_reader_with_readmode(dcov->encseq,dcov->readmode,0);
  for (svalue = 0; svalue < dcov->size; svalue++)
  {
    lcpinherit = 0;
    for (kvalue = (GtUword) svalue; kvalue < dcov->samplesize;
         kvalue += dcov->size)
    {
      do
      {
        if (inversesuftabptr >= dcov->inversesuftab +
                                dcov->samplesize_upperbound)
        {
          suffix = (GtUword) GT_DIFFERENCECOVER_INVERSESUFTAB_UNDEF;
          break;
        }
        suffix = (GtUword) *inversesuftabptr;
        inversesuftabptr++;
      } while (suffix == (GtUword)GT_DIFFERENCECOVER_INVERSESUFTAB_UNDEF);
      if (suffix > 0 && suffix < dcov->effectivesamplesize)
      {
        currentlcpvalue = gt_lcptab_getvalue(dcov->samplelcpvalues,0,suffix);
        if (currentlcpvalue < (GtUword) dcov->vparam)
        {
          lcpinherit = 0;
        } else
        {
          if (lcpinherit < currentlcpvalue)
          {
            lcpinherit = currentlcpvalue;
          }
          start0 = gt_suffixsortspace_get(dcov->sortedsample,0,suffix-1);
          start1 = gt_suffixsortspace_get(dcov->sortedsample,0,suffix);
          if (cmpcharbychar)
          {
            while (start0 + lcpinherit < dcov->totallength &&
                   start1 + lcpinherit < dcov->totallength)
            {
              cc1 = gt_encseq_get_encoded_char(dcov->encseq,start0+lcpinherit,
                                               dcov->readmode);
              cc2 = gt_encseq_get_encoded_char(dcov->encseq,start1+lcpinherit,
                                               dcov->readmode);
              if (GT_ISSPECIAL(cc1) || GT_ISSPECIAL(cc2) || cc1 != cc2)
              {
                break;
              }
              lcpinherit++;
            }
          } else
          {
            retval = gt_encseq_compare_viatwobitencoding(&commonunits,
                                                         dcov->encseq,
                                                         dcov->encseq,
                                                         dcov->readmode,
                                                         esr1,
                                                         esr2,
                                                         start0,
                                                         start1,
                                                         lcpinherit,
                                                         0);
            gt_assert(retval <= 0);
            lcpinherit = commonunits.finaldepth;
          }
          gt_lcptab_update(dcov->samplelcpvalues,0,suffix,lcpinherit);
          lcpinherit = lcpinherit > (GtUword) dcov->vparam
                         ? (lcpinherit - (GtUword) dcov->vparam)
                         : 0;
        }
      }
    }
  }
  gt_encseq_reader_delete(esr1);
  gt_encseq_reader_delete(esr2);
}

// Assembly:
pushq %rbx
subq $0xb0, %rsp
movb %dil, %al
andb $0x1, %al
movb %al, 0xaf(%rsp)
movq %rsi, 0xa0(%rsp)
movq 0xa0(%rsp), %rax
movq 0x98(%rax), %rax
movq %rax, 0x68(%rsp)
movq 0xa0(%rsp), %rax
movq 0x60(%rax), %rdi
movq 0xa0(%rsp), %rax
movl 0x68(%rax), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0xac380
movq %rax, 0x40(%rsp)
movq 0xa0(%rsp), %rax
movq 0x60(%rax), %rdi
movq 0xa0(%rsp), %rax
movl 0x68(%rax), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0xac380
movq %rax, 0x38(%rsp)
movl $0x0, 0x64(%rsp)
movl 0x64(%rsp), %eax
movq 0xa0(%rsp), %rcx
cmpl 0x8(%rcx), %eax
jae 0x2c3bd7
movq $0x0, 0x88(%rsp)
movl 0x64(%rsp), %eax
movq %rax, 0x90(%rsp)
movq 0x90(%rsp), %rax
movq 0xa0(%rsp), %rcx
cmpq 0x70(%rcx), %rax
jae 0x2c3bc5
jmp 0x2c382b
movq 0x68(%rsp), %rax
movq 0xa0(%rsp), %rcx
movq 0x98(%rcx), %rcx
movq 0xa0(%rsp), %rdx
movq 0x80(%rdx), %rdx
shlq $0x2, %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jb 0x2c3869
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movq %rax, 0x98(%rsp)
jmp 0x2c3895
movq 0x68(%rsp), %rax
movl (%rax), %eax
movq %rax, 0x98(%rsp)
movq 0x68(%rsp), %rax
addq $0x4, %rax
movq %rax, 0x68(%rsp)
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
cmpq %rax, 0x98(%rsp)
je 0x2c382b
cmpq $0x0, 0x98(%rsp)
jbe 0x2c3ba3
movq 0x98(%rsp), %rax
movq 0xa0(%rsp), %rcx
cmpq 0x78(%rcx), %rax
jae 0x2c3ba3
movq 0xa0(%rsp), %rax
movq 0x128(%rax), %rdi
movq 0x98(%rsp), %rdx
xorl %eax, %eax
movl %eax, %esi
callq 0x2bff60
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rax
movq 0xa0(%rsp), %rcx
movl (%rcx), %ecx
cmpq %rcx, %rax
jae 0x2c3908
movq $0x0, 0x88(%rsp)
jmp 0x2c3ba1
movq 0x88(%rsp), %rax
cmpq 0x70(%rsp), %rax
jae 0x2c3924
movq 0x70(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0xa0(%rsp), %rax
movq 0x148(%rax), %rdi
movq 0x98(%rsp), %rdx
subq $0x1, %rdx
xorl %eax, %eax
movl %eax, %esi
callq 0x2e9ec0
movq %rax, 0x80(%rsp)
movq 0xa0(%rsp), %rax
movq 0x148(%rax), %rdi
movq 0x98(%rsp), %rdx
xorl %eax, %eax
movl %eax, %esi
callq 0x2e9ec0
movq %rax, 0x78(%rsp)
testb $0x1, 0xaf(%rsp)
je 0x2c3a79
jmp 0x2c3985
movq 0x80(%rsp), %rcx
addq 0x88(%rsp), %rcx
movq 0xa0(%rsp), %rdx
xorl %eax, %eax
cmpq 0x48(%rdx), %rcx
movb %al, 0x37(%rsp)
jae 0x2c39c9
movq 0x78(%rsp), %rax
addq 0x88(%rsp), %rax
movq 0xa0(%rsp), %rcx
cmpq 0x48(%rcx), %rax
setb %al
movb %al, 0x37(%rsp)
movb 0x37(%rsp), %al
testb $0x1, %al
jne 0x2c39d6
jmp 0x2c3a74
movq 0xa0(%rsp), %rax
movq 0x60(%rax), %rdi
movq 0x80(%rsp), %rsi
addq 0x88(%rsp), %rsi
movq 0xa0(%rsp), %rax
movl 0x68(%rax), %edx
callq 0xa9da0
movb %al, 0x4f(%rsp)
movq 0xa0(%rsp), %rax
movq 0x60(%rax), %rdi
movq 0x78(%rsp), %rsi
addq 0x88(%rsp), %rsi
movq 0xa0(%rsp), %rax
movl 0x68(%rax), %edx
callq 0xa9da0
movb %al, 0x4e(%rsp)
movzbl 0x4f(%rsp), %eax
cmpl $0xfe, %eax
jge 0x2c3a59
movzbl 0x4e(%rsp), %eax
cmpl $0xfe, %eax
jge 0x2c3a59
movzbl 0x4f(%rsp), %eax
movzbl 0x4e(%rsp), %ecx
cmpl %ecx, %eax
je 0x2c3a5b
jmp 0x2c3a74
movq 0x88(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x88(%rsp)
jmp 0x2c3985
jmp 0x2c3b30
movq 0xa0(%rsp), %rax
movq 0x60(%rax), %rsi
movq 0xa0(%rsp), %rax
movq 0x60(%rax), %rdx
movq 0xa0(%rsp), %rax
movl 0x68(%rax), %ecx
movq 0x40(%rsp), %r8
movq 0x38(%rsp), %r9
movq 0x80(%rsp), %r11
movq 0x78(%rsp), %r10
movq 0x88(%rsp), %rax
leaq 0x50(%rsp), %rdi
xorl %ebx, %ebx
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movq %rax, 0x10(%rsp)
movq $0x0, 0x18(%rsp)
callq 0xb53f0
movl %eax, 0x60(%rsp)
cmpl $0x0, 0x60(%rsp)
jle 0x2c3b21
movq 0x3784b0(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x252519(%rip), %rsi    # 0x516013
leaq 0x2c6991(%rip), %rdx    # 0x58a492
leaq 0x2c6996(%rip), %rcx    # 0x58a49e
leaq 0x2c5cac(%rip), %r8     # 0x5897bb
movl $0x4fe, %r9d            # imm = 0x4FE
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2c3b23
movq 0x58(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0xa0(%rsp), %rax
movq 0x128(%rax), %rdi
movq 0x98(%rsp), %rdx
movq 0x88(%rsp), %rcx
xorl %eax, %eax
movl %eax, %esi
callq 0x2c01b0
movq 0x88(%rsp), %rax
movq 0xa0(%rsp), %rcx
movl (%rcx), %ecx
cmpq %rcx, %rax
jbe 0x2c3b8b
movq 0x88(%rsp), %rax
movq 0xa0(%rsp), %rcx
movl (%rcx), %ecx
subq %rcx, %rax
movq %rax, 0x28(%rsp)
jmp 0x2c3b94
xorl %eax, %eax
movq %rax, 0x28(%rsp)
jmp 0x2c3b94
movq 0x28(%rsp), %rax
movq %rax, 0x88(%rsp)
jmp 0x2c3ba3
jmp 0x2c3ba5
movq 0xa0(%rsp), %rax
movl 0x8(%rax), %eax
addq 0x90(%rsp), %rax
movq %rax, 0x90(%rsp)
jmp 0x2c380f
jmp 0x2c3bc7
movl 0x64(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x64(%rsp)
jmp 0x2c37e2
movq 0x40(%rsp), %rdi
callq 0xac3f0
movq 0x38(%rsp), %rdi
callq 0xac3f0
addq $0xb0, %rsp
popq %rbx
retq
nopw %cs:(%rax,%rax)