// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x48, %rsp
movq %rdi, 0x38(%rsp)
movq %rsi, 0x30(%rsp)
movq 0x38(%rsp), %rax
cmpq $0x0, (%rax)
je 0x4d0a60
jmp 0x4d092f
movq 0x38(%rsp), %rax
testb $0x1, 0x58(%rax)
jne 0x4d0982
movq 0x38(%rsp), %rax
movq 0x48(%rax), %rax
cmpq 0x30(%rsp), %rax
jae 0x4d0982
movq 0x16b64f(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x456b8(%rip), %rsi     # 0x516013
leaq 0xe8c6d(%rip), %rdx     # 0x5b95cf
leaq 0xe8c95(%rip), %rcx     # 0x5b95fe
leaq 0xe89e2(%rip), %r8      # 0x5b9352
movl $0xb4, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4d0984
movq 0x38(%rsp), %rax
testb $0x1, 0x58(%rax)
je 0x4d09a4
movq 0x38(%rsp), %rax
movq 0x48(%rax), %rax
addq 0x30(%rsp), %rax
movq %rax, 0x18(%rsp)
jmp 0x4d09b7
movq 0x38(%rsp), %rax
movq 0x48(%rax), %rax
subq 0x30(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq 0x38(%rsp), %rcx
movq 0x50(%rcx), %rcx
movq 0x38(%rsp), %rdx
addq 0x38(%rdx), %rcx
cmpq %rcx, %rax
jb 0x4d0a15
movq 0x16b5bc(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x45625(%rip), %rsi     # 0x516013
leaq 0xe8c24(%rip), %rdx     # 0x5b9619
leaq 0xe8c02(%rip), %rcx     # 0x5b95fe
leaq 0xe894f(%rip), %r8      # 0x5b9352
movl $0xb7, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4d0a17
movq 0x38(%rsp), %rax
movq (%rax), %rdi
movq 0x20(%rsp), %rsi
callq 0x4d0610
movb %al, 0x2f(%rsp)
movq 0x38(%rsp), %rax
testb $0x1, 0x59(%rax)
je 0x4d0a4a
movzbl 0x2f(%rsp), %ecx
movl $0x3, %eax
subl %ecx, %eax
movl %eax, 0x14(%rsp)
jmp 0x4d0a53
movzbl 0x2f(%rsp), %eax
movl %eax, 0x14(%rsp)
movl 0x14(%rsp), %eax
movb %al, 0x47(%rsp)
jmp 0x4d0bcf
movq 0x38(%rsp), %rax
cmpq $0x0, 0x18(%rax)
je 0x4d0a84
movq 0x38(%rsp), %rdi
movq 0x30(%rsp), %rsi
callq 0x4d0650
movb %al, 0x2f(%rsp)
jmp 0x4d0b9e
jmp 0x4d0a86
movq 0x38(%rsp), %rax
testb $0x1, 0x58(%rax)
jne 0x4d0ad9
movq 0x38(%rsp), %rax
movq 0x48(%rax), %rax
cmpq 0x30(%rsp), %rax
jae 0x4d0ad9
movq 0x16b4f8(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x45561(%rip), %rsi     # 0x516013
leaq 0xe8b16(%rip), %rdx     # 0x5b95cf
leaq 0xe8b3e(%rip), %rcx     # 0x5b95fe
leaq 0xe888b(%rip), %r8      # 0x5b9352
movl $0xc0, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4d0adb
movq 0x38(%rsp), %rax
testb $0x1, 0x58(%rax)
je 0x4d0afb
movq 0x38(%rsp), %rax
movq 0x48(%rax), %rax
addq 0x30(%rsp), %rax
movq %rax, 0x8(%rsp)
jmp 0x4d0b0e
movq 0x38(%rsp), %rax
movq 0x48(%rax), %rax
subq 0x30(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x38(%rsp), %rax
cmpq $0x0, 0x8(%rax)
je 0x4d0b3f
movq 0x38(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
xorl %edx, %edx
callq 0xa9da0
movb %al, 0x2f(%rsp)
jmp 0x4d0b9c
jmp 0x4d0b41
movq 0x38(%rsp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x4d0b85
movq 0x16b44c(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x454b5(%rip), %rsi     # 0x516013
leaq 0xe8a4d(%rip), %rdx     # 0x5b95b2
leaq 0xe8a92(%rip), %rcx     # 0x5b95fe
leaq 0xe87df(%rip), %r8      # 0x5b9352
movl $0xc9, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4d0b87
movq 0x38(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x20(%rsp), %rcx
movb (%rax,%rcx), %al
movb %al, 0x2f(%rsp)
jmp 0x4d0b9e
movq 0x38(%rsp), %rax
testb $0x1, 0x59(%rax)
je 0x4d0bc7
movzbl 0x2f(%rsp), %eax
cmpl $0xfe, %eax
je 0x4d0bc7
movzbl 0x2f(%rsp), %ecx
movl $0x3, %eax
subl %ecx, %eax
movb %al, 0x47(%rsp)
jmp 0x4d0bcf
movb 0x2f(%rsp), %al
movb %al, 0x47(%rsp)
movb 0x47(%rsp), %al
addq $0x48, %rsp
retq
nopl (%rax,%rax)