// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/match/ft-front-prune.c
// Function: ft_sequenceobject_get_char
static GtUchar ft_sequenceobject_get_char(GtFtSequenceObject *seq,GtUword idx)
{
  GtUchar cc;
  GtUword accesspos;

  if (seq->twobitencoding != NULL)
  {
    gt_assert (seq->read_seq_left2right || seq->offset >= idx);
    accesspos = seq->read_seq_left2right ? seq->offset + idx
                                         : seq->offset - idx;
    gt_assert(accesspos < seq->seqstartpos + seq->totallength);
    cc = gt_twobitencoding_char_at_pos(seq->twobitencoding, accesspos);
    return seq->dir_is_complement ? GT_COMPLEMENTBASE(cc) : cc;
  }
  if (seq->encseqreader != NULL)
  {
    cc = gt_sequenceobject_esr_get(seq,idx);
  } else
  {
    gt_assert (seq->read_seq_left2right || seq->offset >= idx);
    accesspos = seq->read_seq_left2right ? seq->offset + idx
                                         : seq->offset - idx;
    if (seq->encseq != NULL)
    {
      cc = gt_encseq_get_encoded_char(seq->encseq,accesspos,
                                      GT_READMODE_FORWARD);
    } else
    {
      gt_assert(seq->bytesequenceptr != NULL);
      cc = seq->bytesequenceptr[accesspos];
    }
  }
  if (seq->dir_is_complement && cc != GT_WILDCARD)
  {
    return GT_COMPLEMENTBASE(cc);
  }
  return cc;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq (%rdi), %rax
testq %rax, %rax
je 0x2bfcad
movq 0x48(%rbx), %rcx
cmpb $0x0, 0x58(%rbx)
je 0x2bfcbe
addq %rsi, %rcx
jmp 0x2bfcc7
cmpq $0x0, 0x18(%rbx)
je 0x2bfcf2
movq %rbx, %rdi
callq 0x2bfb83
jmp 0x2bfd1d
subq %rsi, %rcx
jb 0x2bfd78
movq 0x38(%rbx), %rdx
addq 0x50(%rbx), %rdx
cmpq %rdx, %rcx
jae 0x2bfd4a
movq %rcx, %rdx
shrq $0x5, %rdx
movq (%rax,%rdx,8), %rax
notl %ecx
addl %ecx, %ecx
shrq %cl, %rax
andb $0x3, %al
movzbl %al, %ecx
xorb $0x3, %al
movzbl %al, %eax
jmp 0x2bfd2f
movq 0x48(%rbx), %rax
cmpb $0x0, 0x58(%rbx)
je 0x2bfd01
addq %rsi, %rax
jmp 0x2bfd0a
subq %rsi, %rax
jb 0x2bfdb0
movq 0x8(%rbx), %rdi
testq %rdi, %rdi
je 0x2bfd38
movq %rax, %rsi
xorl %edx, %edx
callq 0x705e4
movl %eax, %ecx
movb $0x3, %al
subb %cl, %al
cmpb $-0x2, %cl
movzbl %al, %eax
movzbl %cl, %ecx
cmovel %ecx, %eax
cmpb $0x0, 0x59(%rbx)
cmovel %ecx, %eax
popq %rbx
retq
movq 0x10(%rbx), %rcx
testq %rcx, %rcx
je 0x2bfdde
movb (%rcx,%rax), %cl
jmp 0x2bfd1f
movq 0x178217(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x252b8(%rip), %rsi     # 0x2e5013
leaq 0xc4477(%rip), %rdx     # 0x3841d9
leaq 0xc4455(%rip), %rcx     # 0x3841be
leaq 0xc41a2(%rip), %r8      # 0x383f12
movl $0xb7, %r9d
jmp 0x2bfda4
movq 0x1781e9(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x2528a(%rip), %rsi     # 0x2e5013
leaq 0xc43ff(%rip), %rdx     # 0x38418f
leaq 0xc4427(%rip), %rcx     # 0x3841be
leaq 0xc4174(%rip), %r8      # 0x383f12
movl $0xb4, %r9d
xorl %eax, %eax
callq 0x17a50
callq 0x17390
movq 0x1781b1(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x25252(%rip), %rsi     # 0x2e5013
leaq 0xc43c7(%rip), %rdx     # 0x38418f
leaq 0xc43ef(%rip), %rcx     # 0x3841be
leaq 0xc413c(%rip), %r8      # 0x383f12
movl $0xc0, %r9d
jmp 0x2bfda4
movq 0x178183(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x25224(%rip), %rsi     # 0x2e5013
leaq 0xc437c(%rip), %rdx     # 0x384172
leaq 0xc43c1(%rip), %rcx     # 0x3841be
leaq 0xc410e(%rip), %r8      # 0x383f12
movl $0xc9, %r9d
jmp 0x2bfda4