// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/sfx-lcpvalues.c
// Function: gt_Outlcpinfo_postbucket
void gt_Outlcpinfo_postbucket(GtOutlcpinfo *outlcpinfo,
                              unsigned int prefixlength,
                              const GtSuffixsortspace *sssp,
                              const GtBcktab *bcktab,
                              const GtBucketspecification *bucketspec,
                              GtCodetype code)
{
  if (outlcpinfo != NULL)
  {
    if (bucketspec->specialsinbucket > 0)
    {
      unsigned int minprefixindex;
      GtUword suffixvalue
        = gt_suffixsortspace_get(sssp,
                                 0,
                                 bucketspec->left
                                   + bucketspec->nonspecialsinbucket);
      minprefixindex = lcp_bucketends(&outlcpinfo->lcpsubtab,
                                      &outlcpinfo->previoussuffix,
                                      /* first special element in bucket */
                                      suffixvalue,
                                      outlcpinfo->minchanged,
                                      bucketspec->nonspecialsinbucket,
                                      bucketspec->specialsinbucket,
                                      code,
                                      bcktab);
      if (outlcpinfo->lcpsubtab.lcp2file != NULL)
      {
        outsmalllcpvalues(outlcpinfo->lcpsubtab.lcp2file,
                          bucketspec->specialsinbucket);
      } else
      {
        if (outlcpinfo->lcpsubtab.lcpprocess != NULL)
        {
          outlcpinfo->lcpsubtab.lcpprocess->final_process_bucket(
              outlcpinfo->lcpsubtab.lcpprocess->final_process_bucket_info,
              sssp,
              &outlcpinfo->lcpsubtab.tableoflcpvalues,
              bucketspec->nonspecialsinbucket,
              bucketspec->specialsinbucket,
              bucketspec->left);
        }
      }
      /* there is at least one special element: this is the last element
         in the bucket, and thus the previoussuffix for the next round */
      outlcpinfo->previoussuffix.defined = true;
      outlcpinfo->previoussuffix.code = code;
      outlcpinfo->previoussuffix.prefixindex = minprefixindex;
#ifdef SKDEBUG
      outlcpinfo->previoussuffix.startpos
        = gt_suffixsortspace_get(sssp,
                                 0,
                                 bucketspec->left
                                   + bucketspec->nonspecialsinbucket +
                                     bucketspec->specialsinbucket - 1);
      /*
        gt_bcktab_consistencyofsuffix(__LINE__,
                                      encseq,readmode,bcktab,numofchars,
                                      &outlcpinfo->previoussuffix);
      */
#endif
    } else
    {
      if (bucketspec->nonspecialsinbucket > 0)
      {
        /* if there is at least one element in the bucket, then the last
           one becomes the next previous suffix */
        outlcpinfo->previoussuffix.defined = true;
        outlcpinfo->previoussuffix.code = code;
        outlcpinfo->previoussuffix.prefixindex = prefixlength;
#ifdef SKDEBUG
        outlcpinfo->previoussuffix.startpos
          = gt_suffixsortspace_get(sssp,
                                   0,
                                   bucketspec.left
                                     + bucketspec.nonspecialsinbucket-1);
        /*
        gt_bcktab_consistencyofsuffix(__LINE__,
                                      encseq,readmode,bcktab,numofchars,
                                      &outlcpinfo->previoussuffix);
        */
#endif
      }
    }
    if (bucketspec->nonspecialsinbucket + bucketspec->specialsinbucket == 0)
    {
      outlcpinfo->previousbucketwasempty = true;
    } else
    {
      outlcpinfo->previousbucketwasempty = false;
    }
    if (outlcpinfo->lcpsubtab.lcp2file != NULL ||
        outlcpinfo->lcpsubtab.lcpprocess != NULL)
    {
      gt_assert(outlcpinfo->lcpsubtab.tableoflcpvalues.lcptaboffset == 0);
    } else
    {
      outlcpinfo->lcpsubtab.tableoflcpvalues.lcptaboffset = 0;
    }
  }
}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movl %esi, 0x4c(%rsp)
movq %rdx, 0x40(%rsp)
movq %rcx, 0x38(%rsp)
movq %r8, 0x30(%rsp)
movq %r9, 0x28(%rsp)
cmpq $0x0, 0x50(%rsp)
je 0x2c75e7
movq 0x30(%rsp), %rax
cmpq $0x0, 0x10(%rax)
jbe 0x2c7519
movq 0x40(%rsp), %rdi
movq 0x30(%rsp), %rax
movq (%rax), %rdx
movq 0x30(%rsp), %rax
addq 0x8(%rax), %rdx
xorl %eax, %eax
movl %eax, %esi
callq 0x2e9ec0
movq %rax, 0x18(%rsp)
movq 0x50(%rsp), %rdi
addq $0x40, %rdi
movq 0x50(%rsp), %rsi
addq $0x20, %rsi
movq 0x18(%rsp), %rdx
movq 0x50(%rsp), %rax
movl 0x10(%rax), %ecx
movq 0x30(%rsp), %rax
movq 0x8(%rax), %r8
movq 0x30(%rsp), %rax
movq 0x10(%rax), %r9
movq 0x28(%rsp), %r10
movq 0x38(%rsp), %rax
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x2c75f0
movl %eax, 0x24(%rsp)
movq 0x50(%rsp), %rax
cmpq $0x0, 0x68(%rax)
je 0x2c74a3
movq 0x50(%rsp), %rax
movq 0x68(%rax), %rdi
movq 0x30(%rsp), %rax
movq 0x10(%rax), %rsi
callq 0x2c7870
jmp 0x2c74f4
movq 0x50(%rsp), %rax
cmpq $0x0, 0x70(%rax)
je 0x2c74f2
movq 0x50(%rsp), %rax
movq 0x70(%rax), %rax
movq (%rax), %rax
movq 0x50(%rsp), %rcx
movq 0x70(%rcx), %rcx
movq 0x8(%rcx), %rdi
movq 0x40(%rsp), %rsi
movq 0x50(%rsp), %rdx
addq $0x40, %rdx
movq 0x30(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq 0x30(%rsp), %r8
movq 0x10(%r8), %r8
movq 0x30(%rsp), %r9
movq (%r9), %r9
callq *%rax
jmp 0x2c74f4
movq 0x50(%rsp), %rax
movb $0x1, 0x20(%rax)
movq 0x28(%rsp), %rcx
movq 0x50(%rsp), %rax
movq %rcx, 0x28(%rax)
movl 0x24(%rsp), %ecx
movq 0x50(%rsp), %rax
movl %ecx, 0x30(%rax)
jmp 0x2c754a
movq 0x30(%rsp), %rax
cmpq $0x0, 0x8(%rax)
jbe 0x2c7548
movq 0x50(%rsp), %rax
movb $0x1, 0x20(%rax)
movq 0x28(%rsp), %rcx
movq 0x50(%rsp), %rax
movq %rcx, 0x28(%rax)
movl 0x4c(%rsp), %ecx
movq 0x50(%rsp), %rax
movl %ecx, 0x30(%rax)
jmp 0x2c754a
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x30(%rsp), %rcx
addq 0x10(%rcx), %rax
cmpq $0x0, %rax
jne 0x2c756d
movq 0x50(%rsp), %rax
movb $0x1, 0x38(%rax)
jmp 0x2c7576
movq 0x50(%rsp), %rax
movb $0x0, 0x38(%rax)
movq 0x50(%rsp), %rax
cmpq $0x0, 0x68(%rax)
jne 0x2c758e
movq 0x50(%rsp), %rax
cmpq $0x0, 0x70(%rax)
je 0x2c75d8
jmp 0x2c7590
movq 0x50(%rsp), %rax
cmpq $0x0, 0x60(%rax)
je 0x2c75d4
movq 0x3749fd(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x24ea66(%rip), %rsi    # 0x516013
leaq 0x2c33e4(%rip), %rdx    # 0x58a998
leaq 0x2c3416(%rip), %rcx    # 0x58a9d1
leaq 0x2c3246(%rip), %r8     # 0x58a808
movl $0x315, %r9d            # imm = 0x315
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2c75d6
jmp 0x2c75e5
movq 0x50(%rsp), %rax
movq $0x0, 0x60(%rax)
jmp 0x2c75e7
addq $0x58, %rsp
retq
nopl (%rax)