// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/eis-bwtseq-siop.h
// Function: BWTSeqLFMap
static inline GtUword
BWTSeqLFMap(const BWTSeq *bwtSeq, GtUword LPos,
            struct extBitsRetrieval *extBits)
{
  Symbol tSym = EISGetTransformedSym(bwtSeq->seqIdx, LPos, bwtSeq->hint);
  GtUword FPos;
  const MRAEnc *alphabet = BWTSeqGetAlphabet(bwtSeq);
  if (LPos != BWTSeqTerminatorPos(bwtSeq))
  {
    AlphabetRangeID range = MRAEncGetRangeOfSymbol(alphabet, tSym);
    switch (bwtSeq->rangeSort[range])
    {
    case SORTMODE_VALUE:
      FPos = bwtSeq->count[tSym] + BWTSeqTransformedOcc(bwtSeq, tSym, LPos);
      break;
    case SORTMODE_RANK:
      FPos = bwtSeq->count[MRAEncGetRangeBase(alphabet, range)]
        + gt_BWTSeqGetRankSort(bwtSeq, LPos, range, extBits);
      break;
    case SORTMODE_UNDEFINED:
    default:
#ifndef _NDEBUG
      fputs("Requesting LF-map for symbol from range of undefined sorting.\n",
            stderr);
      abort();
#endif
      FPos = (GtUword)-1;
      break;
    }
  }
  else
  {
    gt_assert(tSym == bwtSeq->bwtTerminatorFallback);
    FPos = bwtSeq->count[bwtSeq->alphabetSize - 1];
  }
  return FPos;
}

// Assembly:
subq $0x68, %rsp
movq %rdi, 0x60(%rsp)
movq %rsi, 0x58(%rsp)
movq %rdx, 0x50(%rsp)
movq 0x60(%rsp), %rax
movq (%rax), %rdi
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rax
movq 0x18(%rax), %rdx
callq 0x220dd0
movb %al, 0x4f(%rsp)
movq 0x60(%rsp), %rdi
callq 0x220e50
movq %rax, 0x38(%rsp)
movq 0x58(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x60(%rsp), %rdi
callq 0x220dc0
movq %rax, %rcx
movq 0x28(%rsp), %rax
cmpq %rcx, %rax
je 0x220a77
movq 0x38(%rsp), %rdi
movzbl 0x4f(%rsp), %esi
callq 0x220e60
movl %eax, 0x34(%rsp)
movq 0x60(%rsp), %rax
movq 0x48(%rax), %rax
movl 0x34(%rsp), %ecx
movl (%rax,%rcx,4), %eax
movl %eax, 0x24(%rsp)
testl %eax, %eax
je 0x2209c0
jmp 0x2209a3
movl 0x24(%rsp), %eax
subl $0x1, %eax
je 0x220a58
jmp 0x2209b2
movl 0x24(%rsp), %eax
subl $0x2, %eax
je 0x2209ff
jmp 0x220a5a
movq 0x60(%rsp), %rax
movq 0x38(%rax), %rax
movzbl 0x4f(%rsp), %ecx
movq (%rax,%rcx,8), %rax
movq %rax, 0x18(%rsp)
movq 0x60(%rsp), %rdi
movb 0x4f(%rsp), %al
movq 0x58(%rsp), %rdx
movzbl %al, %esi
callq 0x220f10
movq %rax, %rcx
movq 0x18(%rsp), %rax
addq %rcx, %rax
movq %rax, 0x40(%rsp)
jmp 0x220a75
movq 0x60(%rsp), %rax
movq 0x38(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x38(%rsp), %rdi
movl 0x34(%rsp), %esi
callq 0x221100
movb %al, %cl
movq 0x8(%rsp), %rax
movzbl %cl, %ecx
movq (%rax,%rcx,8), %rax
movq %rax, 0x10(%rsp)
movq 0x60(%rsp), %rdi
movq 0x58(%rsp), %rsi
movl 0x34(%rsp), %edx
movq 0x50(%rsp), %rcx
callq 0x223980
movq %rax, %rcx
movq 0x10(%rsp), %rax
addq %rcx, %rax
movq %rax, 0x40(%rsp)
jmp 0x220a75
jmp 0x220a5a
movq 0x41b53f(%rip), %rax    # 0x63bfa0
movq (%rax), %rsi
leaq 0x353e8b(%rip), %rdi    # 0x5748f6
callq 0x19810
callq 0x19370
jmp 0x220ae4
jmp 0x220a79
movzbl 0x4f(%rsp), %eax
movq 0x60(%rsp), %rcx
movzbl 0x24(%rcx), %ecx
cmpl %ecx, %eax
je 0x220ac3
movq 0x41b50e(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2f5577(%rip), %rsi    # 0x516013
leaq 0x353e92(%rip), %rdx    # 0x574935
leaq 0x353eb1(%rip), %rcx    # 0x57495b
leaq 0x353eb6(%rip), %r8     # 0x574967
movl $0xd4, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x220ac5
movq 0x60(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x60(%rsp), %rcx
movq 0x10(%rcx), %rcx
subq $0x1, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
addq $0x68, %rsp
retq
nop