// File: /workspace/github_c_makefile_star2_O2/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, %r15
movq %rdi, %rbx
movq 0x68(%rdi), %rax
movq (%rax), %rdi
movl (%rdi), %eax
cmpq $0x3, %rax
ja 0xa607e
leaq 0x45afb(%rip), %rcx     # 0xeb9fc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
pushq $0x1
popq %rdi
jmp 0xa6065
cmpb $0x0, 0x61(%rbx)
jne 0xa61df
movq 0x78(%rbx), %rsi
callq 0xa228c
testb %al, %al
jne 0xa6362
movq 0x78(%rbx), %rax
movq 0x68(%rbx), %rcx
movq (%rcx), %rdx
movq 0x1f0(%rdx), %rcx
cmpb $0x1, 0x60(%rbx)
jne 0xa61d6
addq %rax, %rcx
cmpq 0x30(%rdx), %rcx
jae 0xa61db
leaq 0x1(%rcx), %rax
movq %rax, 0x78(%rbx)
movq %rcx, (%r15)
jmp 0xa6211
cmpb $0x0, 0x61(%rbx)
jne 0xa61df
xorl %eax, %eax
pushq $0x1
popq %rdx
pushq $-0x1
popq %rsi
pushq $-0x40
popq %r8
testb $0x1, %al
jne 0xa6259
movq 0x2b0(%rdi), %r10
movq 0x70(%rbx), %r9
movq 0x78(%rbx), %rcx
movq %rcx, %r11
shrq $0x6, %r11
movq (%r10,%r11,8), %r10
movq %r10, %r11
shlq %cl, %r11
testq %r11, %r11
js 0xa5fe0
movb 0x60(%rbx), %r11b
testq %r9, %r9
je 0xa5fdb
movq %rcx, %rax
subq %r9, %rax
leaq 0x1(%rcx), %r14
testb $0x1, %r11b
cmovneq %rax, %r14
leaq 0x1(%r9,%rcx), %rax
cmovneq %rcx, %rax
movq %r14, (%r15)
movq %rax, 0x8(%r15)
andq $0x0, 0x70(%rbx)
movb $0x1, %al
xorl %r9d, %r9d
jmp 0xa5feb
incq %r9
movq %r9, 0x70(%rbx)
movb 0x60(%rbx), %r11b
testb $0x1, %r11b
je 0xa6029
movq 0x30(%rdi), %r11
leaq -0x1(%r11), %r14
cmpq %r14, %rcx
je 0xa6223
movq %rdx, %r9
testq %r10, %r10
jne 0xa6057
testb $0x3f, %cl
jne 0xa6300
addq $0x40, %rcx
movq %rcx, 0x78(%rbx)
cmpq %r11, %rcx
jb 0xa5f7c
jmp 0xa6237
testq %rcx, %rcx
je 0xa6217
movq %rsi, %r9
testq %r10, %r10
jne 0xa6057
movl %ecx, %r9d
notl %r9d
testb $0x3f, %r9b
jne 0xa6331
movq %r8, %r9
cmpq $0x40, %rcx
jb 0xa6237
addq %rcx, %r9
movq %r9, 0x78(%rbx)
jmp 0xa5f7c
xorl %edi, %edi
movq %r15, %rsi
movq %rbx, %rdx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xb42ca
cmpb $0x1, 0x28(%rdi)
jne 0xa61df
cmpb $0x0, 0x61(%rbx)
jne 0xa61df
movq %r15, (%rsp)
leaq 0x30(%rbx), %r15
leaq 0x40(%rbx), %r13
leaq 0x18(%rbx), %r12
leaq 0x28(%rbx), %r14
pushq $0x1
popq %rbp
movb (%r13), %al
testb $0x1, %al
jne 0xa60d2
movq 0x68(%rbx), %rsi
movq (%rsi), %rax
cmpq $0x2, 0x40(%rax)
jb 0xa60d2
movq %r15, %rdi
movl %ebp, %edx
callq 0xb43df
testb %al, %al
je 0xa60d2
movb $0x1, (%r13)
movb (%r14), %cl
testb %cl, %cl
jne 0xa6101
movq 0x68(%rbx), %rsi
movq (%rsi), %rax
cmpb $0x1, 0x29(%rax)
jne 0xa6101
movq %r12, %rdi
xorl %edx, %edx
callq 0xb43df
testb %al, %al
je 0xa60fe
movb $0x1, (%r14)
movb (%r13), %al
jmp 0xa610a
movb (%r14), %cl
movb (%r13), %al
testb $0x1, %cl
je 0xa617a
testb $0x1, %al
je 0xa616a
movq 0x18(%rbx), %rdx
movq 0x38(%rbx), %rcx
cmpb $0x1, 0x60(%rbx)
jne 0xa6130
cmpq %rdx, %rcx
jb 0xa6172
movq 0x20(%rbx), %rsi
movq 0x30(%rbx), %rdi
cmpq %rdi, %rsi
jae 0xa6142
jmp 0xa616a
cmpq %rdx, %rcx
jb 0xa616a
movq 0x20(%rbx), %rsi
movq 0x30(%rbx), %rdi
cmpq %rdi, %rsi
jb 0xa6172
cmpq %rdx, %rcx
jne 0xa6150
movq %rsi, 0x38(%rbx)
movq %r14, %rcx
jmp 0xa6162
cmpq %rdi, %rsi
jne 0xa626c
movq %rcx, 0x20(%rbx)
xorl %eax, %eax
movq %r13, %rcx
movb $0x0, (%rcx)
jmp 0xa60ad
movq %r12, %rdx
movq %r14, %rsi
jmp 0xa6188
movq %r15, %rdx
movq %r13, %rsi
jmp 0xa6188
movq %r15, %rdx
movq %r13, %rsi
testb $0x1, %al
je 0xa623d
movq (%rdx), %rcx
movq 0x8(%rdx), %rax
movb $0x0, (%rsi)
cmpb $0x1, 0x10(%rbx)
jne 0xa61b3
cmpb $0x1, 0x60(%rbx)
jne 0xa61c3
cmpq %rcx, 0x8(%rbx)
jb 0xa61e3
jne 0xa62d2
movq %rax, 0x8(%rbx)
jmp 0xa60a9
movq %rcx, (%rbx)
movq %rax, 0x8(%rbx)
movb $0x1, 0x10(%rbx)
jmp 0xa60a9
cmpq (%rbx), %rax
jb 0xa61e3
jne 0xa62a4
movq %rcx, (%rbx)
jmp 0xa60a9
cmpq %rcx, %rax
jae 0xa61f6
movb $0x1, 0x61(%rbx)
xorl %eax, %eax
jmp 0xa625b
movups (%rbx), %xmm0
movq (%rsp), %rdx
movups %xmm0, (%rdx)
movq %rcx, (%rbx)
movq %rax, 0x8(%rbx)
jmp 0xa6259
incq %rcx
subq %rcx, %rax
jb 0xa6393
movq %rax, 0x78(%rbx)
leaq 0x1(%rax), %rcx
movq %rcx, (%r15)
addq $0x2, %rax
movq %rax, 0x8(%r15)
jmp 0xa6259
testq %r9, %r9
je 0xa6237
xorl %eax, %eax
movq %r9, %r11
jmp 0xa622e
testq %r9, %r9
je 0xa6237
movq %r11, %rax
subq %r9, %rax
movq %rax, (%r15)
movq %r11, 0x8(%r15)
movb $0x1, %al
movb $0x1, 0x61(%rbx)
jmp 0xa625b
cmpb $0x0, 0x10(%rbx)
je 0xa63c4
movups (%rbx), %xmm0
movq (%rsp), %rax
movups %xmm0, (%rax)
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
movq 0x87d45(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x23de9(%rip), %rsi     # 0xca066
leaq 0x37c8b(%rip), %rdx     # 0xddf0f
leaq 0x49374(%rip), %rcx     # 0xef5ff
leaq 0x45908(%rip), %r8      # 0xebb9a
movl $0xe3e, %r9d            # imm = 0xE3E
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
movq 0x87d0d(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x23db1(%rip), %rsi     # 0xca066
leaq 0x49306(%rip), %rdx     # 0xef5c2
leaq 0x492d7(%rip), %rcx     # 0xef59a
leaq 0x458d0(%rip), %r8      # 0xebb9a
movl $0xe6c, %r9d            # imm = 0xE6C
jmp 0xa6298
movq 0x87cdf(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x23d83(%rip), %rsi     # 0xca066
leaq 0x49289(%rip), %rdx     # 0xef573
leaq 0x492a9(%rip), %rcx     # 0xef59a
leaq 0x458a2(%rip), %r8      # 0xebb9a
movl $0xe63, %r9d            # imm = 0xE63
jmp 0xa6298
movq 0x87cb1(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x23d55(%rip), %rsi     # 0xca066
leaq 0x491d5(%rip), %rdx     # 0xef4ed
leaq 0x491f0(%rip), %rcx     # 0xef50f
leaq 0x45874(%rip), %r8      # 0xebb9a
movl $0xdcb, %r9d            # imm = 0xDCB
jmp 0xa6298
movq 0x87c80(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x23d24(%rip), %rsi     # 0xca066
leaq 0x491ed(%rip), %rdx     # 0xef536
leaq 0x491bf(%rip), %rcx     # 0xef50f
leaq 0x45843(%rip), %r8      # 0xebb9a
movl $0xde2, %r9d            # imm = 0xDE2
jmp 0xa6298
movq 0x87c4f(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x23cf3(%rip), %rsi     # 0xca066
leaq 0x490b8(%rip), %rdx     # 0xef432
leaq 0x490ff(%rip), %rcx     # 0xef480
leaq 0x45812(%rip), %r8      # 0xebb9a
movl $0xd8c, %r9d            # imm = 0xD8C
jmp 0xa6298
movq 0x87c1e(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x23cc2(%rip), %rsi     # 0xca066
leaq 0x490fe(%rip), %rdx     # 0xef4a9
leaq 0x490ce(%rip), %rcx     # 0xef480
leaq 0x457e1(%rip), %r8      # 0xebb9a
movl $0xd9d, %r9d            # imm = 0xD9D
jmp 0xa6298
movq 0x87bed(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x23c91(%rip), %rsi     # 0xca066
leaq 0x4920d(%rip), %rdx     # 0xef5e9
leaq 0x491b7(%rip), %rcx     # 0xef59a
leaq 0x457b0(%rip), %r8      # 0xebb9a
movl $0xe76, %r9d            # imm = 0xE76
jmp 0xa6298