// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/match/sfx-sain.c
// Function: gt_sain_induceStypes2fromspecialranges
static void gt_sain_induceStypes2fromspecialranges(const GtSainseq *sainseq,
                                                   GtSsainindextype *suftab,
                                                   GtUword nonspecialentries)
{
  if (sainseq->seqtype == GT_SAIN_ENCSEQ)
  {
    if (gt_encseq_has_specialranges(sainseq->seq.encseq))
    {
      GtSpecialrangeiterator *sri;
      GtRange range;
      sri = gt_specialrangeiterator_new(sainseq->seq.encseq,
                                        GT_ISDIRREVERSE(sainseq->readmode)
                                          ? true : false);
      while (gt_specialrangeiterator_next(sri,&range))
      {
        if (GT_ISDIRREVERSE(sainseq->readmode))
        {
          gt_range_reverse(sainseq->totallength,&range);
        }
        if (range.start > 0)
        {
          gt_sain_special_singleSinduction2(sainseq,
                                            suftab,
                                            (GtSsainindextype) range.start,
                                            nonspecialentries);
        }
      }
      gt_specialrangeiterator_delete(sri);
    }
  } else
  {
    gt_assert(sainseq->seqtype == GT_SAIN_BARE_ENCSEQ &&
              sainseq->bare_encseq != NULL);
    if (gt_bare_encseq_specialcharacters(sainseq->bare_encseq) > 0)
    {
      GtRange range;
      GtBareSpecialrangeiterator *sri
        = gt_bare_encseq_specialrangeiterator_new(sainseq->bare_encseq,
                                        GT_ISDIRREVERSE(sainseq->readmode)
                                          ? true : false);

      gt_assert(sri != NULL);
      while (gt_bare_encseq_specialrangeiterator_next(sri,&range))
      {
        if (GT_ISDIRREVERSE(sainseq->readmode))
        {
          gt_range_reverse(sainseq->totallength,&range);
        }
        if (range.start > 0)
        {
          gt_sain_special_singleSinduction2(sainseq,
                                            suftab,
                                            (GtSsainindextype) range.start,
                                            nonspecialentries);
        }
      }
      gt_bare_encseq_specialrangeiterator_delete(sri);
    }
  }
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
movl 0x50(%rdi), %eax
cmpl $0x3, %eax
je 0x1a7681
cmpl $0x2, %eax
jne 0x1a771f
movq 0x38(%r15), %rdi
callq 0x740a6
testb %al, %al
je 0x1a7711
movq 0x38(%r15), %rdi
movl 0x40(%r15), %eax
andl $-0x3, %eax
xorl %esi, %esi
cmpl $0x1, %eax
sete %sil
callq 0x741f0
movq %rax, %r12
movq %rsp, %r13
movq %r12, %rdi
movq %r13, %rsi
callq 0x7428b
testb %al, %al
je 0x1a7709
movl 0x40(%r15), %eax
orl $0x2, %eax
cmpl $0x3, %eax
jne 0x1a7668
movq (%r15), %rdi
movq %r13, %rsi
callq 0x81e2f
movq (%rsp), %rdx
testq %rdx, %rdx
je 0x1a763e
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rcx
callq 0x1a7538
jmp 0x1a763e
movq 0x48(%r15), %rdi
testq %rdi, %rdi
je 0x1a771f
callq 0x133e7b
testq %rax, %rax
je 0x1a7711
movq 0x48(%r15), %rdi
movl 0x40(%r15), %eax
andl $-0x3, %eax
xorl %esi, %esi
cmpl $0x1, %eax
sete %sil
callq 0x133ebe
testq %rax, %rax
je 0x1a774d
movq %rax, %r12
movq %rsp, %r13
movq %r12, %rdi
movq %r13, %rsi
callq 0x133f6d
testb %al, %al
je 0x1a76ff
movl 0x40(%r15), %eax
orl $0x2, %eax
cmpl $0x3, %eax
jne 0x1a76e6
movq (%r15), %rdi
movq %r13, %rsi
callq 0x81e2f
movq (%rsp), %rdx
testq %rdx, %rdx
je 0x1a76c0
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rcx
callq 0x1a7538
jmp 0x1a76c0
movq %r12, %rdi
callq 0x133f56
jmp 0x1a7711
movq %r12, %rdi
callq 0x74a09
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq 0x290842(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x13d8e3(%rip), %rsi    # 0x2e5013
leaq 0x1b248e(%rip), %rdx    # 0x359bc5
leaq 0x1b2bd2(%rip), %rcx    # 0x35a310
leaq 0x1b1db3(%rip), %r8     # 0x3594f8
movl $0x27e, %r9d            # imm = 0x27E
jmp 0x1a7779
movq 0x290814(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x13d8b5(%rip), %rsi    # 0x2e5013
leaq 0x1b24cf(%rip), %rdx    # 0x359c34
leaq 0x1b2ba4(%rip), %rcx    # 0x35a310
leaq 0x1b1d85(%rip), %r8     # 0x3594f8
movl $0x287, %r9d            # imm = 0x287
xorl %eax, %eax
callq 0x17a50
callq 0x17390
nopl (%rax)