// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/core/encseq.c
// Function: fwdgetnexttwobitencodingstopposSW
static GtUword fwdgetnexttwobitencodingstopposSW(GtEncseqReader *esr,
                                      KindofSWtable kindsw)
{
  if (gt_encseq_has_specialranges(esr->encseq)) {
    GtEncseqAccessType sat = (kindsw == SWtable_ssptab)
                                ? esr->encseq->satsep
                                : esr->encseq->sat;
    switch (sat) {
      case GT_ACCESS_TYPE_UCHARTABLES:
        return fwdgetnexttwobitencodingstopposSW_uchar(esr, kindsw);
      case GT_ACCESS_TYPE_USHORTTABLES:
        return fwdgetnexttwobitencodingstopposSW_uint16(esr, kindsw);
      case GT_ACCESS_TYPE_UINT32TABLES:
        return fwdgetnexttwobitencodingstopposSW_uint32(esr, kindsw);
      default:
       fprintf(stderr, "%s(%d) undefined\n", __func__, (int) sat);
       exit(GT_EXIT_PROGRAMMING_ERROR);
    }
  }
  else
   return esr->encseq->totallength;
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movl %esi, %ebp
movq %rdi, %rbx
movq (%rdi), %rax
cmpb $0x0, 0x3a8(%rax)
jne 0xb4721
testb $0x1, 0x28(%rax)
je 0xb4837
xorl %ecx, %ecx
cmpl $0x1, %ebp
sete %cl
movl (%rax,%rcx,4), %ecx
cmpl $0x6, %ecx
je 0xb47e9
cmpl $0x5, %ecx
je 0xb479e
cmpl $0x4, %ecx
jne 0xb48ba
movl 0x8(%rbx), %eax
orl $0x2, %eax
cmpl $0x3, %eax
je 0xb4861
xorl %eax, %eax
testl %ebp, %ebp
setne %al
movq 0x28(%rbx,%rax,8), %r14
cmpb $0x1, 0x3a(%r14)
jne 0xb4834
movq 0x10(%rbx), %rcx
movq 0x18(%r14), %rax
cmpq %rax, %rcx
jb 0xb483b
movq %rcx, %rax
cmpq 0x20(%r14), %rcx
jb 0xb483b
cmpb $0x1, 0x39(%r14)
jne 0xb4834
movq %rbx, %rdi
movl %ebp, %esi
callq 0xb3bb8
jmp 0xb475e
movl 0x8(%rbx), %eax
orl $0x2, %eax
cmpl $0x3, %eax
je 0xb4840
xorl %eax, %eax
testl %ebp, %ebp
setne %al
movq 0x28(%rbx,%rax,8), %r14
cmpb $0x1, 0x3a(%r14)
jne 0xb4834
movq 0x10(%rbx), %rcx
movq 0x18(%r14), %rax
cmpq %rax, %rcx
jb 0xb483b
movq %rcx, %rax
cmpq 0x20(%r14), %rcx
jb 0xb483b
cmpb $0x1, 0x39(%r14)
jne 0xb4834
movq %rbx, %rdi
movl %ebp, %esi
callq 0xb3da7
jmp 0xb47b9
movl 0x8(%rbx), %eax
orl $0x2, %eax
cmpl $0x3, %eax
je 0xb4882
xorl %eax, %eax
testl %ebp, %ebp
setne %al
movq 0x28(%rbx,%rax,8), %r14
cmpb $0x1, 0x3a(%r14)
jne 0xb4834
movq 0x10(%rbx), %rcx
movq 0x18(%r14), %rax
cmpq %rax, %rcx
jb 0xb483b
movq %rcx, %rax
cmpq 0x20(%r14), %rcx
jb 0xb483b
cmpb $0x1, 0x39(%r14)
jne 0xb4834
movq %rbx, %rdi
movl %ebp, %esi
callq 0xb3f96
jmp 0xb4804
movq (%rbx), %rax
movq 0x30(%rax), %rax
popq %rbx
popq %r14
popq %rbp
retq
movq 0x79771(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x15815(%rip), %rsi     # 0xca066
leaq 0x3b1c1(%rip), %rdx     # 0xefa19
leaq 0x3b1da(%rip), %rcx     # 0xefa39
jmp 0xb48a1
movq 0x79750(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x157f4(%rip), %rsi     # 0xca066
leaq 0x3b1a0(%rip), %rdx     # 0xefa19
leaq 0x3b171(%rip), %rcx     # 0xef9f1
jmp 0xb48a1
movq 0x7972f(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x157d3(%rip), %rsi     # 0xca066
leaq 0x3b17f(%rip), %rdx     # 0xefa19
leaq 0x3b1c1(%rip), %rcx     # 0xefa62
leaq 0x3a94b(%rip), %r8      # 0xef1f3
movl $0x3be, %r9d            # imm = 0x3BE
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
movq 0x796f7(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x37c7c(%rip), %rsi     # 0xec547
leaq 0x3b0fd(%rip), %rdx     # 0xef9cf
xorl %eax, %eax
callq 0xb8c0
pushq $0x2
popq %rdi
callq 0xb7b0