// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/encseq.c
// Function: mergeWildcardssptab
static bool mergeWildcardssptab(GtSpecialrangeiterator *sri, GtRange *range)
{
  while (true) {
    if (!sri->ssptab.defined) {
      if (sri->esr->encseq->numofdbsequences > 1UL &&
          gt_viautables_specialrangeiterator_next_withkind(&sri->ssptab.rng,
                                                           sri->esr,
                                                           SWtable_ssptab)) {
        sri->ssptab.defined = true;
      }
    }
    if (!sri->wildcard.defined) {
      if (sri->esr->encseq->has_wildcardranges &&
          gt_viautables_specialrangeiterator_next_withkind(
                                                  &sri->wildcard.rng,
                                                  sri->esr,
                                                  SWtable_wildcardrange)) {
        sri->wildcard.defined = true;
      }
    }
    if (sri->wildcard.defined && sri->ssptab.defined) {
      if (sri->moveforward) {
        if (sri->ssptab.rng.end < sri->wildcard.rng.start) {
          *range = sri->ssptab.rng;
          sri->ssptab.defined = false;
          return true;
        }
        if (sri->wildcard.rng.end < sri->ssptab.rng.start) {
          *range = sri->wildcard.rng;
          sri->wildcard.defined = false;
          return true;
        }
      }
      else {
        if (sri->ssptab.rng.end < sri->wildcard.rng.start) {
          *range = sri->wildcard.rng;
          sri->wildcard.defined = false;
          return true;
        }
        if (sri->wildcard.rng.end < sri->ssptab.rng.start) {
          *range = sri->ssptab.rng;
          sri->ssptab.defined = false;
          return true;
        }
      }
      if (sri->ssptab.rng.end == sri->wildcard.rng.start) {
        sri->ssptab.rng.end = sri->wildcard.rng.end;
        sri->wildcard.defined = false;
      }
      else {
        if (sri->wildcard.rng.end == sri->ssptab.rng.start) {
          sri->wildcard.rng.end = sri->ssptab.rng.end;
          sri->ssptab.defined = false;
        }
        else {
          gt_assert(false);
        }
      }
    }
    else {
      if (sri->wildcard.defined) {
        gt_assert(!sri->ssptab.defined);
        *range = sri->wildcard.rng;
        sri->wildcard.defined = false;
        return true;
      }
      if (sri->ssptab.defined) {
        gt_assert(!sri->wildcard.defined);
        *range = sri->ssptab.rng;
        sri->ssptab.defined = false;
        return true;
      }
      return false;
    }
  }
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
movq %rsi, (%rsp)
movq 0x8(%rsp), %rax
testb $0x1, 0x40(%rax)
jne 0x130a28
movq 0x8(%rsp), %rax
movq 0x68(%rax), %rax
movq (%rax), %rax
cmpq $0x1, 0x40(%rax)
jbe 0x130a26
movq 0x8(%rsp), %rdi
addq $0x30, %rdi
movq 0x8(%rsp), %rax
movq 0x68(%rax), %rsi
movl $0x1, %edx
callq 0x130d50
testb $0x1, %al
jne 0x130a1d
jmp 0x130a26
movq 0x8(%rsp), %rax
movb $0x1, 0x40(%rax)
jmp 0x130a28
movq 0x8(%rsp), %rax
testb $0x1, 0x28(%rax)
jne 0x130a6f
movq 0x8(%rsp), %rax
movq 0x68(%rax), %rax
movq (%rax), %rax
testb $0x1, 0x29(%rax)
je 0x130a6d
movq 0x8(%rsp), %rdi
addq $0x18, %rdi
movq 0x8(%rsp), %rax
movq 0x68(%rax), %rsi
xorl %edx, %edx
callq 0x130d50
testb $0x1, %al
jne 0x130a64
jmp 0x130a6d
movq 0x8(%rsp), %rax
movb $0x1, 0x28(%rax)
jmp 0x130a6f
movq 0x8(%rsp), %rax
testb $0x1, 0x28(%rax)
je 0x130c42
movq 0x8(%rsp), %rax
testb $0x1, 0x40(%rax)
je 0x130c42
movq 0x8(%rsp), %rax
testb $0x1, 0x60(%rax)
je 0x130b1f
movq 0x8(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rsp), %rcx
cmpq 0x18(%rcx), %rax
jae 0x130adb
movq (%rsp), %rax
movq 0x8(%rsp), %rcx
movq 0x30(%rcx), %rdx
movq %rdx, (%rax)
movq 0x38(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rax
movb $0x0, 0x40(%rax)
movb $0x1, 0x17(%rsp)
jmp 0x130d45
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x8(%rsp), %rcx
cmpq 0x30(%rcx), %rax
jae 0x130b1a
movq (%rsp), %rax
movq 0x8(%rsp), %rcx
movq 0x18(%rcx), %rdx
movq %rdx, (%rax)
movq 0x20(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rax
movb $0x0, 0x28(%rax)
movb $0x1, 0x17(%rsp)
jmp 0x130d45
jmp 0x130b9f
movq 0x8(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rsp), %rcx
cmpq 0x18(%rcx), %rax
jae 0x130b5e
movq (%rsp), %rax
movq 0x8(%rsp), %rcx
movq 0x18(%rcx), %rdx
movq %rdx, (%rax)
movq 0x20(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rax
movb $0x0, 0x28(%rax)
movb $0x1, 0x17(%rsp)
jmp 0x130d45
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x8(%rsp), %rcx
cmpq 0x30(%rcx), %rax
jae 0x130b9d
movq (%rsp), %rax
movq 0x8(%rsp), %rcx
movq 0x30(%rcx), %rdx
movq %rdx, (%rax)
movq 0x38(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rax
movb $0x0, 0x40(%rax)
movb $0x1, 0x17(%rsp)
jmp 0x130d45
jmp 0x130b9f
movq 0x8(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rsp), %rcx
cmpq 0x18(%rcx), %rax
jne 0x130bd0
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x38(%rax)
movq 0x8(%rsp), %rax
movb $0x0, 0x28(%rax)
jmp 0x130c3d
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x8(%rsp), %rcx
cmpq 0x30(%rcx), %rax
jne 0x130c01
movq 0x8(%rsp), %rax
movq 0x38(%rax), %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x8(%rsp), %rax
movb $0x0, 0x40(%rax)
jmp 0x130c3b
jmp 0x130c03
movq 0x833ce(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x2d452(%rip), %rsi     # 0x15e066
leaq 0x4214b(%rip), %rdx     # 0x172d66
leaq 0x58532(%rip), %rcx     # 0x189154
leaq 0x54a35(%rip), %r8      # 0x18565e
movl $0xe3e, %r9d            # imm = 0xE3E
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x130c3d
jmp 0x130d40
movq 0x8(%rsp), %rax
testb $0x1, 0x28(%rax)
je 0x130cbf
jmp 0x130c4f
movq 0x8(%rsp), %rax
testb $0x1, 0x40(%rax)
je 0x130c92
movq 0x83377(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x2d3fb(%rip), %rsi     # 0x15e066
leaq 0x584f6(%rip), %rdx     # 0x189168
leaq 0x584db(%rip), %rcx     # 0x189154
leaq 0x549de(%rip), %r8      # 0x18565e
movl $0xe44, %r9d            # imm = 0xE44
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x130c94
movq (%rsp), %rax
movq 0x8(%rsp), %rcx
movq 0x18(%rcx), %rdx
movq %rdx, (%rax)
movq 0x20(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rax
movb $0x0, 0x28(%rax)
movb $0x1, 0x17(%rsp)
jmp 0x130d45
movq 0x8(%rsp), %rax
testb $0x1, 0x40(%rax)
je 0x130d39
jmp 0x130ccc
movq 0x8(%rsp), %rax
testb $0x1, 0x28(%rax)
je 0x130d0f
movq 0x832fa(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x2d37e(%rip), %rsi     # 0x15e066
leaq 0x5848e(%rip), %rdx     # 0x18917d
leaq 0x5845e(%rip), %rcx     # 0x189154
leaq 0x54961(%rip), %r8      # 0x18565e
movl $0xe4a, %r9d            # imm = 0xE4A
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x130d11
movq (%rsp), %rax
movq 0x8(%rsp), %rcx
movq 0x30(%rcx), %rdx
movq %rdx, (%rax)
movq 0x38(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rax
movb $0x0, 0x40(%rax)
movb $0x1, 0x17(%rsp)
jmp 0x130d45
movb $0x0, 0x17(%rsp)
jmp 0x130d45
jmp 0x1309dd
movb 0x17(%rsp), %al
andb $0x1, %al
addq $0x18, %rsp
retq