// File: /workspace/github_c_makefile_star2_O3/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
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
movq 0x68(%rdi), %rax
movq (%rax), %rdi
movl (%rdi), %eax
cmpq $0x3, %rax
ja 0xc3615
leaq 0x3f2df(%rip), %rcx     # 0x10277c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x1, %edi
jmp 0xc35fc
cmpb $0x0, 0x61(%rbx)
jne 0xc3772
movq 0x78(%rbx), %rsi
callq 0xc0168
testb %al, %al
jne 0xc380e
movq 0x78(%rbx), %rax
movq 0x68(%rbx), %rcx
movq (%rcx), %rdx
movq 0x1f0(%rdx), %rcx
cmpb $0x1, 0x60(%rbx)
jne 0xc3769
addq %rax, %rcx
cmpq 0x30(%rdx), %rcx
jae 0xc376e
leaq 0x1(%rcx), %rax
movq %rax, 0x78(%rbx)
movq %rcx, (%r14)
jmp 0xc37a1
cmpb $0x0, 0x61(%rbx)
jne 0xc3772
movq 0x2b0(%rdi), %rsi
movb 0x60(%rbx), %r8b
movq 0x78(%rbx), %rcx
movq 0x70(%rbx), %rdx
xorl %eax, %eax
movq %rcx, %r9
shrq $0x6, %r9
movq (%rsi,%r9,8), %r9
movq %r9, %r10
shlq %cl, %r10
testq %r10, %r10
js 0xc3542
testq %rdx, %rdx
jne 0xc3547
xorl %edx, %edx
jmp 0xc3571
incq %rdx
jmp 0xc356d
movq %rcx, %rax
subq %rdx, %rax
leaq 0x1(%rcx), %r10
addq %rcx, %rdx
incq %rdx
testb %r8b, %r8b
cmovneq %rax, %r10
cmovneq %rcx, %rdx
movq %r10, (%r14)
movq %rdx, 0x8(%r14)
movb $0x1, %al
xorl %edx, %edx
movq %rdx, 0x70(%rbx)
testb %r8b, %r8b
je 0xc35ad
movq 0x30(%rdi), %r10
leaq -0x1(%r10), %r11
cmpq %r11, %rcx
je 0xc37a7
movl $0x1, %r11d
testq %r9, %r9
jne 0xc35e3
testb $0x3f, %cl
jne 0xc3809
addq $0x40, %rcx
movq %rcx, 0x78(%rbx)
cmpq %r10, %rcx
jb 0xc35ed
jmp 0xc37c7
testq %rcx, %rcx
je 0xc37b4
movq $-0x1, %r11
testq %r9, %r9
jne 0xc35e3
movl %ecx, %r9d
notl %r9d
testb $0x3f, %r9b
jne 0xc3804
movq $-0x40, %r11
cmpq $0x40, %rcx
jb 0xc37c7
addq %rcx, %r11
movq %r11, 0x78(%rbx)
movq %r11, %rcx
testb $0x1, %al
je 0xc3523
jmp 0xc37e2
xorl %edi, %edi
movq %r14, %rsi
movq %rbx, %rdx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xcf1de
cmpb $0x1, 0x28(%rdi)
jne 0xc3772
cmpb $0x0, 0x61(%rbx)
jne 0xc3772
leaq 0x30(%rbx), %r15
leaq 0x40(%rbx), %r13
leaq 0x18(%rbx), %r12
leaq 0x28(%rbx), %rbp
movb (%r13), %al
testb $0x1, %al
jne 0xc3665
movq 0x68(%rbx), %rsi
movq (%rsi), %rax
cmpq $0x2, 0x40(%rax)
jb 0xc3665
movq %r15, %rdi
movl $0x1, %edx
callq 0xcf2e9
testb %al, %al
je 0xc3665
movb $0x1, (%r13)
movb (%rbp), %cl
testb %cl, %cl
jne 0xc3694
movq 0x68(%rbx), %rsi
movq (%rsi), %rax
cmpb $0x1, 0x29(%rax)
jne 0xc3694
movq %r12, %rdi
xorl %edx, %edx
callq 0xcf2e9
testb %al, %al
je 0xc3691
movb $0x1, (%rbp)
movb (%r13), %al
jmp 0xc369d
movb (%rbp), %cl
movb (%r13), %al
testb $0x1, %cl
je 0xc370d
testb $0x1, %al
je 0xc36fd
movq 0x18(%rbx), %rdx
movq 0x38(%rbx), %rcx
cmpb $0x1, 0x60(%rbx)
jne 0xc36c3
cmpq %rdx, %rcx
jb 0xc3705
movq 0x20(%rbx), %rsi
movq 0x30(%rbx), %rdi
cmpq %rdi, %rsi
jae 0xc36d5
jmp 0xc36fd
cmpq %rdx, %rcx
jb 0xc36fd
movq 0x20(%rbx), %rsi
movq 0x30(%rbx), %rdi
cmpq %rdi, %rsi
jb 0xc3705
cmpq %rdx, %rcx
jne 0xc36e3
movq %rsi, 0x38(%rbx)
movq %rbp, %rcx
jmp 0xc36f5
cmpq %rdi, %rsi
jne 0xc37f5
movq %rcx, 0x20(%rbx)
xorl %eax, %eax
movq %r13, %rcx
movb $0x0, (%rcx)
jmp 0xc363d
movq %r12, %rdx
movq %rbp, %rsi
jmp 0xc371b
movq %r15, %rdx
movq %r13, %rsi
jmp 0xc371b
movq %r15, %rdx
movq %r13, %rsi
testb $0x1, %al
je 0xc37cd
movq (%rdx), %rcx
movq 0x8(%rdx), %rax
movb $0x0, (%rsi)
cmpb $0x1, 0x10(%rbx)
jne 0xc3746
cmpb $0x1, 0x60(%rbx)
jne 0xc3756
cmpq %rcx, 0x8(%rbx)
jb 0xc3776
jne 0xc37ff
movq %rax, 0x8(%rbx)
jmp 0xc3639
movq %rcx, (%rbx)
movq %rax, 0x8(%rbx)
movb $0x1, 0x10(%rbx)
jmp 0xc3639
cmpq (%rbx), %rax
jb 0xc3776
jne 0xc37fa
movq %rcx, (%rbx)
jmp 0xc3639
cmpq %rcx, %rax
jae 0xc3786
movb $0x1, 0x61(%rbx)
xorl %eax, %eax
jmp 0xc37e4
movups (%rbx), %xmm0
movups %xmm0, (%r14)
movq %rcx, (%rbx)
movq %rax, 0x8(%rbx)
jmp 0xc37e2
incq %rcx
subq %rcx, %rax
jb 0xc3813
movq %rax, 0x78(%rbx)
leaq 0x1(%rax), %rcx
movq %rcx, (%r14)
addq $0x2, %rax
movq %rax, 0x8(%r14)
jmp 0xc37e2
testq %rdx, %rdx
je 0xc37c7
movq %r10, %rax
subq %rdx, %rax
jmp 0xc37be
testq %rdx, %rdx
je 0xc37c7
xorl %eax, %eax
movq %rdx, %r10
movq %rax, (%r14)
movq %r10, 0x8(%r14)
movb $0x1, %al
movb $0x1, 0x61(%rbx)
jmp 0xc37e4
cmpb $0x0, 0x10(%rbx)
je 0xc3818
movups (%rbx), %xmm0
movups %xmm0, (%r14)
movb $0x0, 0x10(%rbx)
movb $0x1, 0x61(%rbx)
movb $0x1, %al
andb $0x1, %al
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x2b0eb
callq 0x2b124
callq 0x2b15d
callq 0x2afce
callq 0x2b007
callq 0x2b079
callq 0x2b040
callq 0x2b0b2