// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/sfx-bltrie.c
// Function: blindtrie_twobitencoding_getlcp
static GtUword blindtrie_twobitencoding_getlcp(
                                 GtBlindtriesymbol *mm_oldsuffix,
                                 bool *mm_oldsuffixisseparator,
                                 GtBlindtriesymbol *mm_newsuffix,
                                 const GtBlindtrie *blindtrie,
                                 GtUword leafpos,
                                 GtUword leaftwobitencodingstoppos,
                                 GtUword currentstartpos,
                                 GtUword currenttwobitencodingstoppos)
{
  GtCommonunits commonunits;
  const GtUword depth = 0;

  gt_assert(leafpos != currentstartpos);
  gt_Viatwobitkeyvalues_reinit(blindtrie->vtk1,
                               blindtrie->encseq,
                               blindtrie->readmode,
                               NULL, /* esr */
                               leafpos,
                               depth,
                               blindtrie->sortmaxdepthminusoffset,
                               leaftwobitencodingstoppos);
  gt_Viatwobitkeyvalues_reinit(blindtrie->vtk2,
                               blindtrie->encseq,
                               blindtrie->readmode,
                               NULL, /* esr */
                               currentstartpos,
                               depth,
                               blindtrie->sortmaxdepthminusoffset,
                               currenttwobitencodingstoppos);
  (void) gt_encseq_twobitencoding_strcmp(&commonunits,
                                         blindtrie->encseq,
                                         blindtrie->encseq,
                                         blindtrie->readmode,
                                         depth,
                                         blindtrie->sortmaxdepthminusoffset,
                                         blindtrie->vtk1,
                                         blindtrie->vtk2);
  if (blindtrie_isleftofboundary(blindtrie,leafpos,commonunits.finaldepth) &&
      !commonunits.leftspecial)
  {
    *mm_oldsuffix = (GtBlindtriesymbol)
                    gt_encseq_get_encoded_char_nospecial(blindtrie->encseq,
                                                         leafpos +
                                                         commonunits.finaldepth,
                                                         blindtrie->readmode);
  } else
  {
    if (mm_oldsuffixisseparator != NULL)
    {
      if (blindtrie_isleftofboundary(blindtrie,leafpos,commonunits.finaldepth))
      {
        *mm_oldsuffixisseparator = true;
      } else
      {
        gt_assert(commonunits.leftspecial);
        /* be careful: if wildcards occur in the sequence,
           the following statement may be wrong. Please contact stefan
           if program is applied for such sequences. */
        *mm_oldsuffixisseparator = true;
      }
    }
    *mm_oldsuffix = GT_UNIQUEINT(leafpos + commonunits.finaldepth);
  }
  if (blindtrie_isleftofboundary(blindtrie,currentstartpos,
                                 commonunits.finaldepth) &&
      !commonunits.rightspecial)
  {
    *mm_newsuffix = (GtBlindtriesymbol)
                    gt_encseq_get_encoded_char_nospecial(blindtrie->encseq,
                                                         currentstartpos +
                                                         commonunits.finaldepth,
                                                         blindtrie->readmode);
  } else
  {
    *mm_newsuffix = GT_UNIQUEINT(currentstartpos + commonunits.finaldepth);
  }
  return commonunits.finaldepth;
}

// Assembly:
subq $0x58, %rsp
movq 0x68(%rsp), %rax
movq 0x60(%rsp), %rax
movq %rdi, 0x50(%rsp)
movq %rsi, 0x48(%rsp)
movq %rdx, 0x40(%rsp)
movq %rcx, 0x38(%rsp)
movq %r8, 0x30(%rsp)
movq %r9, 0x28(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x30(%rsp), %rax
cmpq 0x60(%rsp), %rax
jne 0x2baf69
movq 0x381068(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x25b0d1(%rip), %rsi    # 0x516013
leaq 0x2ce231(%rip), %rdx    # 0x58917a
leaq 0x2ce245(%rip), %rcx    # 0x589195
leaq 0x2cdc1c(%rip), %r8     # 0x588b73
movl $0x29b, %r9d            # imm = 0x29B
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2baf6b
movq 0x38(%rsp), %rax
movq 0x80(%rax), %rdi
movq 0x38(%rsp), %rax
movq 0x40(%rax), %rsi
movq 0x38(%rsp), %rax
movl 0x58(%rax), %edx
movq 0x30(%rsp), %r8
movq 0x38(%rsp), %rax
movq 0x70(%rax), %r10
movq 0x28(%rsp), %rax
xorl %ecx, %ecx
movl %ecx, %r9d
movq %r9, %rcx
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0xb4b20
movq 0x38(%rsp), %rax
movq 0x88(%rax), %rdi
movq 0x38(%rsp), %rax
movq 0x40(%rax), %rsi
movq 0x38(%rsp), %rax
movl 0x58(%rax), %edx
movq 0x60(%rsp), %r8
movq 0x38(%rsp), %rax
movq 0x70(%rax), %r10
movq 0x68(%rsp), %rax
xorl %ecx, %ecx
movl %ecx, %r9d
movq %r9, %rcx
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0xb4b20
movq 0x38(%rsp), %rax
movq 0x40(%rax), %rsi
movq 0x38(%rsp), %rax
movq 0x40(%rax), %rdx
movq 0x38(%rsp), %rax
movl 0x58(%rax), %ecx
movq 0x38(%rsp), %rax
movq 0x70(%rax), %r9
movq 0x38(%rsp), %rax
movq 0x80(%rax), %r10
movq 0x38(%rsp), %rax
movq 0x88(%rax), %rax
leaq 0x18(%rsp), %rdi
xorl %r8d, %r8d
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0xb4dd0
movq 0x38(%rsp), %rdi
movq 0x30(%rsp), %rsi
movq 0x20(%rsp), %rdx
callq 0x2b96c0
testb $0x1, %al
jne 0x2bb062
jmp 0x2bb09b
testb $0x1, 0x1c(%rsp)
jne 0x2bb09b
movq 0x38(%rsp), %rax
movq 0x40(%rax), %rdi
movq 0x30(%rsp), %rsi
addq 0x20(%rsp), %rsi
movq 0x38(%rsp), %rax
movl 0x58(%rax), %edx
callq 0xaa7f0
movzbl %al, %eax
movl %eax, %ecx
movq 0x50(%rsp), %rax
movq %rcx, (%rax)
jmp 0x2bb12d
cmpq $0x0, 0x48(%rsp)
je 0x2bb114
movq 0x38(%rsp), %rdi
movq 0x30(%rsp), %rsi
movq 0x20(%rsp), %rdx
callq 0x2b96c0
testb $0x1, %al
jne 0x2bb0bd
jmp 0x2bb0c7
movq 0x48(%rsp), %rax
movb $0x1, (%rax)
jmp 0x2bb112
jmp 0x2bb0c9
testb $0x1, 0x1c(%rsp)
jne 0x2bb108
movq 0x380ec9(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x25af32(%rip), %rsi    # 0x516013
leaq 0x2ce0cd(%rip), %rdx    # 0x5891b5
leaq 0x2ce0a6(%rip), %rcx    # 0x589195
leaq 0x2cda7d(%rip), %r8     # 0x588b73
movl $0x2c5, %r9d            # imm = 0x2C5
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2bb10a
movq 0x48(%rsp), %rax
movb $0x1, (%rax)
jmp 0x2bb114
movq 0x30(%rsp), %rcx
addq 0x20(%rsp), %rcx
addq $0x100, %rcx            # imm = 0x100
movq 0x50(%rsp), %rax
movq %rcx, (%rax)
movq 0x38(%rsp), %rdi
movq 0x60(%rsp), %rsi
movq 0x20(%rsp), %rdx
callq 0x2b96c0
testb $0x1, %al
jne 0x2bb147
jmp 0x2bb17d
testb $0x1, 0x1d(%rsp)
jne 0x2bb17d
movq 0x38(%rsp), %rax
movq 0x40(%rax), %rdi
movq 0x60(%rsp), %rsi
addq 0x20(%rsp), %rsi
movq 0x38(%rsp), %rax
movl 0x58(%rax), %edx
callq 0xaa7f0
movzbl %al, %eax
movl %eax, %ecx
movq 0x40(%rsp), %rax
movq %rcx, (%rax)
jmp 0x2bb196
movq 0x60(%rsp), %rcx
addq 0x20(%rsp), %rcx
addq $0x100, %rcx            # imm = 0x100
movq 0x40(%rsp), %rax
movq %rcx, (%rax)
movq 0x20(%rsp), %rax
addq $0x58, %rsp
retq