// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/match/sfx-diffcov.c
// Function: gt_differencecover_completelargelcpvalues
void gt_differencecover_completelargelcpvalues(const GtDifferencecover *dcov,
                                               const GtSuffixsortspace *sssp,
                                               GtLcpvalues *tableoflcpvalues,
                                               GtUword width,
                                               GtUword posoffset)
{
  GtUword idx, lcpvalue, s0, s1, r0, r1;

  gt_assert(width > 0 && sssp != NULL && tableoflcpvalues != NULL &&
            dcov->rmq != NULL);
  for (idx = 1UL; idx < width; idx++)
  {
    lcpvalue = gt_lcptab_getvalue(tableoflcpvalues,0,idx);
    if (lcpvalue >= (GtUword) dcov->vparam)
    {
      s0 = gt_suffixsortspace_get(sssp, posoffset, idx-1);
      s1 = gt_suffixsortspace_get(sssp, posoffset, idx);
      lcpvalue = (GtUword) dc_differencecover_delta(dcov,s0,s1);
      r0 = dc_inversesuftab_get(dcov,s0 + lcpvalue);
      r1 = dc_inversesuftab_get(dcov,s1 + lcpvalue);
      if (r0 < dcov->effectivesamplesize && r1 < dcov->effectivesamplesize)
      {
        gt_assert(r0 < r1);
        lcpvalue += gt_rmq_find_min_value(dcov->rmq, r0+1, r1);
      }
      gt_lcptab_update(tableoflcpvalues,0,idx,lcpvalue);
    }
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %r8, 0x20(%rsp)
movq %rsi, 0x10(%rsp)
testq %rdx, %rdx
je 0x1ea089
cmpq $0x0, 0x10(%rsp)
je 0x1ea089
movq %rcx, %r8
testq %rcx, %rcx
je 0x1ea089
movq %rdi, %r13
cmpq $0x0, 0x150(%rdi)
je 0x1ea089
cmpq $0x2, %r8
jb 0x1ea061
movq 0x8(%rdx), %rax
movl $0x1, %ebp
movq %r8, 0x8(%rsp)
movq %rdx, 0x18(%rsp)
testq %rax, %rax
je 0x1ea070
movq 0x20(%rdx), %r9
leaq (%r9,%rbp), %rcx
cmpq 0x10(%rdx), %rcx
jae 0x1ea070
movq (%rdx), %rsi
testq %rsi, %rsi
je 0x1e9f33
movabsq $-0x8000000000000000, %rdi # imm = 0x8000000000000000
shrq %cl, %rdi
shrq $0x6, %rcx
testq %rdi, (%rsi,%rcx,8)
je 0x1ea07a
leaq (%rax,%r9,4), %rcx
movl (%rcx,%rbp,4), %ecx
cmpl (%r13), %ecx
jb 0x1ea055
leaq -0x1(%rbp), %rdx
movq 0x10(%rsp), %r14
movq %r14, %rdi
movq 0x20(%rsp), %rbx
movq %rbx, %rsi
callq 0x1fc965
movq %rax, %r12
movq %r14, %rdi
movq %rbx, %rsi
movq %rbp, %rdx
callq 0x1fc965
movq %rax, %rbx
movq 0x38(%r13), %rax
movl %ebx, %ecx
subl %r12d, %ecx
movl 0xc(%r13), %edx
andl %edx, %ecx
movzwl (%rax,%rcx,2), %r14d
subl %r12d, %r14d
andl %edx, %r14d
addq %r14, %r12
movq 0x98(%r13), %r15
movq %r13, %rdi
movq %r12, %rsi
callq 0x1eb7b2
movl (%r15,%rax,4), %r12d
addq %r14, %rbx
movq 0x98(%r13), %r15
movq %r13, %rdi
movq %rbx, %rsi
callq 0x1eb7b2
movq %r13, %rsi
movq 0x78(%r13), %rcx
cmpq %r12, %rcx
jbe 0x1e9ff3
movl (%r15,%rax,4), %edx
cmpq %rdx, %rcx
jbe 0x1e9ff3
cmpl %edx, %r12d
jae 0x1ea084
movq %rsi, %r13
movq 0x150(%rsi), %rdi
incq %r12
movq %r12, %rsi
callq 0x16f440
movl %eax, %eax
addq %rax, %r14
jmp 0x1e9ff6
movq %rsi, %r13
movq 0x18(%rsp), %rdx
movq 0x8(%rdx), %rax
testq %rax, %rax
je 0x1ea075
movq 0x20(%rdx), %rcx
addq %rbp, %rcx
cmpq 0x10(%rdx), %rcx
jae 0x1ea075
movq (%rdx), %rdi
testq %rdi, %rdi
je 0x1ea02e
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
shrq %cl, %rsi
shrq $0x6, %rcx
orq %rsi, (%rdi,%rcx,8)
movq %r14, %rcx
shrq $0x20, %rcx
jne 0x1ea07f
movq 0x20(%rdx), %rcx
leaq (%rax,%rcx,4), %rcx
movl %r14d, (%rcx,%rbp,4)
cmpq $0xff, %r14
jb 0x1ea050
incq 0x18(%rdx)
movq 0x8(%rsp), %r8
incq %rbp
cmpq %rbp, %r8
jne 0x1e9ef5
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x77b4d
callq 0x77b16
callq 0x77a6f
callq 0x77adf
callq 0x77aa6
callq 0x77b84