// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/core/encseq.c
// Function: gt_specialrangeiterator_deliver_range
static inline bool gt_specialrangeiterator_deliver_range(
                                                    GtSpecialrangeiterator *sri,
                                                    GtRange *range)
{
  switch (sri->esr->encseq->sat) {
    case  GT_ACCESS_TYPE_DIRECTACCESS:
      return gt_dabc_specialrangeiterator_next(true, range, sri);
    case GT_ACCESS_TYPE_BYTECOMPRESS:
      return gt_dabc_specialrangeiterator_next(false, range, sri);
    case GT_ACCESS_TYPE_EQUALLENGTH:
      return gt_equallength_specialrangeiterator_next(range, sri);
    case GT_ACCESS_TYPE_BITACCESS:
      return gt_bitaccess_specialrangeiterator_next(range, sri);
    default:
      return gt_viautables_specialrangeiterator_next(range, sri);
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movq 0x68(%rdi), %rax
movq (%rax), %rdi
movl (%rdi), %eax
cmpq $0x3, %rax
ja 0xc2594
leaq 0x403ed(%rip), %rcx     # 0x10280c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x1, %edi
jmp 0xc257b
cmpb $0x0, 0x61(%rbx)
jne 0xc2713
movq 0x78(%rbx), %rsi
callq 0xbf160
testb %al, %al
jne 0xc27bd
movq 0x78(%rbx), %rax
movq 0x68(%rbx), %rcx
movq (%rcx), %rdx
movq 0x1f0(%rdx), %rcx
cmpb $0x1, 0x60(%rbx)
jne 0xc270a
addq %rax, %rcx
cmpq 0x30(%rdx), %rcx
jae 0xc270f
leaq 0x1(%rcx), %rax
movq %rax, 0x78(%rbx)
movq %rcx, (%r14)
jmp 0xc275a
cmpb $0x0, 0x61(%rbx)
jne 0xc2713
movq 0x2b0(%rdi), %rdx
movb 0x60(%rbx), %sil
movq 0x78(%rbx), %rcx
movq 0x70(%rbx), %r8
xorl %eax, %eax
movq %rcx, %r9
shrq $0x6, %r9
movq (%rdx,%r9,8), %r9
movq %r9, %r10
shlq %cl, %r10
testq %r10, %r10
js 0xc24d3
testq %r8, %r8
je 0xc24f3
testb %sil, %sil
je 0xc24d8
movq %rcx, %rax
subq %r8, %rax
movq %rax, (%r14)
movq %rcx, %rax
jmp 0xc24e6
incq %r8
jmp 0xc24ef
leaq 0x1(%rcx), %rax
movq %rax, (%r14)
leaq (%r8,%rcx), %rax
incq %rax
movq %rax, 0x8(%r14)
movb $0x1, %al
xorl %r8d, %r8d
movq %r8, 0x70(%rbx)
testb %sil, %sil
je 0xc252f
movq 0x30(%rdi), %r10
leaq -0x1(%r10), %r11
cmpq %r11, %rcx
je 0xc2760
movl $0x1, %r11d
testq %r9, %r9
jne 0xc2565
testb $0x3f, %cl
jne 0xc27b8
addq $0x40, %rcx
movq %rcx, 0x78(%rbx)
cmpq %r10, %rcx
jb 0xc256c
jmp 0xc2785
testq %rcx, %rcx
je 0xc2771
movq $-0x1, %r11
testq %r9, %r9
jne 0xc2565
movl %ecx, %r9d
notl %r9d
testb $0x3f, %r9b
jne 0xc27b3
movq $-0x40, %r11
cmpq $0x40, %rcx
jb 0xc2785
addq %r11, %rcx
movq %rcx, 0x78(%rbx)
testb $0x1, %al
je 0xc24a5
jmp 0xc2715
xorl %edi, %edi
movq %r14, %rsi
movq %rbx, %rdx
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xce2fd
cmpb $0x1, 0x28(%rdi)
jne 0xc2713
cmpb $0x0, 0x61(%rbx)
jne 0xc2713
movq %r14, 0x8(%rsp)
leaq 0x30(%rbx), %r15
leaq 0x40(%rbx), %r13
leaq 0x18(%rbx), %rax
movq %rax, 0x10(%rsp)
leaq 0x28(%rbx), %rbp
cmpb $0x0, (%r13)
jne 0xc25ed
movq 0x68(%rbx), %rsi
movq (%rsi), %rax
cmpq $0x2, 0x40(%rax)
jb 0xc25ed
movq %r15, %rdi
movl $0x1, %edx
callq 0xce412
testb %al, %al
je 0xc25ed
movb $0x1, (%r13)
cmpb $0x0, (%rbp)
jne 0xc2614
movq 0x68(%rbx), %rsi
movq (%rsi), %rax
cmpb $0x1, 0x29(%rax)
jne 0xc2614
movq 0x10(%rsp), %rdi
xorl %edx, %edx
callq 0xce412
testb %al, %al
je 0xc2614
movb $0x1, (%rbp)
movb (%r13), %al
cmpb $0x1, (%rbp)
jne 0xc2681
testb %al, %al
je 0xc268f
movq 0x18(%rbx), %rax
movq 0x38(%rbx), %rcx
cmpb $0x1, 0x60(%rbx)
jne 0xc2641
cmpq %rax, %rcx
jb 0xc26a0
movq 0x20(%rbx), %rcx
cmpq 0x30(%rbx), %rcx
jae 0xc2652
jmp 0xc2697
movq 0x20(%rbx), %rsi
cmpq %rax, %rcx
jb 0xc26a8
movq (%r15), %rax
cmpq %rax, %rsi
jb 0xc26a3
movq 0x20(%rbx), %rcx
movq 0x38(%rbx), %rax
cmpq 0x18(%rbx), %rax
jne 0xc2669
movq %rcx, 0x38(%rbx)
movq %rbp, %rax
jmp 0xc2679
cmpq (%r15), %rcx
jne 0xc27a4
movq %rax, 0x20(%rbx)
movq %r13, %rax
movb $0x0, (%rax)
jmp 0xc25c2
testb %al, %al
je 0xc269c
movq 0x30(%rbx), %rax
movq 0x38(%rbx), %rcx
jmp 0xc26a3
movq 0x18(%rbx), %rax
movq 0x20(%rbx), %rcx
movq %rbp, %rdx
jmp 0xc26ae
xorl %edx, %edx
jmp 0xc26b9
movq (%r15), %rax
movq %r13, %rdx
jmp 0xc26ae
movq %rbp, %rdx
movq %rsi, %rcx
movb $0x0, (%rdx)
movb $0x1, %dl
movq %rcx, %r14
movq %rax, %r12
movb 0x10(%rbx), %al
testb %dl, %dl
je 0xc2726
testb %al, %al
je 0xc26e3
cmpb $0x1, 0x60(%rbx)
jne 0xc26f3
cmpq %r12, 0x8(%rbx)
jb 0xc278b
jne 0xc27ae
movq %r14, 0x8(%rbx)
jmp 0xc25c2
movq %r12, (%rbx)
movq %r14, 0x8(%rbx)
movb $0x1, 0x10(%rbx)
jmp 0xc25c2
cmpq (%rbx), %r14
jb 0xc278b
jne 0xc27a9
movq %r12, (%rbx)
jmp 0xc25c2
cmpq %rcx, %rax
jae 0xc2743
movb $0x1, 0x61(%rbx)
xorl %eax, %eax
andb $0x1, %al
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
testb %al, %al
je 0xc27c2
movups (%rbx), %xmm0
movq 0x8(%rsp), %rax
movups %xmm0, (%rax)
movb $0x0, 0x10(%rbx)
movb $0x1, 0x61(%rbx)
jmp 0xc279d
incq %rcx
subq %rcx, %rax
jb 0xc27c7
movq %rax, 0x78(%rbx)
leaq 0x1(%rax), %rcx
movq %rcx, (%r14)
addq $0x2, %rax
movq %rax, 0x8(%r14)
jmp 0xc279d
movq 0x70(%rbx), %rcx
testq %rcx, %rcx
je 0xc2785
movq %r10, %rax
subq %rcx, %rax
jmp 0xc277c
movq 0x70(%rbx), %r10
testq %r10, %r10
je 0xc2785
xorl %eax, %eax
movq %rax, (%r14)
movq %r10, 0x8(%r14)
movb $0x1, %al
movb $0x1, 0x61(%rbx)
jmp 0xc2715
movups (%rbx), %xmm0
movq 0x8(%rsp), %rax
movups %xmm0, (%rax)
movq %r12, (%rbx)
movq %r14, 0x8(%rbx)
movb $0x1, %al
jmp 0xc2715
callq 0x2b31f
callq 0x2b391
callq 0x2b3ca
callq 0x2b23b
callq 0x2b274
callq 0x2b2e6
callq 0x2b358
callq 0x2b2ad