// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/encseq.c
// Function: checkextractspecialbits
static void checkextractspecialbits(const GtEncseq *encseq, bool fwd)
{
  if (encseq->sat == GT_ACCESS_TYPE_BITACCESS  &&
      gt_encseq_has_specialranges(encseq)) {
    GtUword startpos;
    GtBitsequence spbits1, spbits2;
    unsigned int unitsnotspecial_bruteforce, unitsnotspecial;

    startpos = fwd ? 0 : (encseq->totallength-1);
    while (true) {
      if (fwd) {
        spbits1 = fwdextractspecialbits(encseq->specialbits, startpos);
        unitsnotspecial = fwdbitaccessunitsnotspecial(spbits1, encseq,
                                                      startpos);
        spbits2 = fwdextractspecialbits_bruteforce
                  (&unitsnotspecial_bruteforce, encseq->specialbits, startpos);
      }
      else {
        spbits1 = revextractspecialbits(encseq->specialbits, startpos);
        unitsnotspecial = revbitaccessunitsnotspecial(spbits1, startpos);
        spbits2 = revextractspecialbits_bruteforce
                  (&unitsnotspecial_bruteforce, encseq->specialbits, startpos);
      }
      gt_assert(unitsnotspecial_bruteforce == unitsnotspecial);
      if (spbits1 != spbits2) {
        char buffer[GT_INTWORDSIZE+1];

        gt_bitsequence_tostring(buffer, spbits2);
        fprintf(stderr, "%sextractspecialbits at startpos " GT_WU
                       " (unitsnotspecial=%u)\n correct=%s!=\n",
                       fwd ? "fwd" : "rev",
                       startpos, unitsnotspecial, buffer);
        gt_bitsequence_tostring(buffer, spbits1);
        fprintf(stderr, "     %s=fast\n", buffer);
        exit(GT_EXIT_PROGRAMMING_ERROR);
      }
      if (fwd) {
        if (startpos == encseq->totallength - 1)
          break;
        startpos++;
      }
      else {
        if (startpos == 0)
          break;
        startpos--;
      }
    }
  }
}

// Assembly:
subq $0x88, %rsp
movb %sil, %al
movq %rdi, 0x80(%rsp)
andb $0x1, %al
movb %al, 0x7f(%rsp)
movq 0x80(%rsp), %rax
cmpl $0x3, (%rax)
jne 0x121114
movq 0x80(%rsp), %rdi
callq 0x119540
testb $0x1, %al
jne 0x120eff
jmp 0x121114
testb $0x1, 0x7f(%rsp)
je 0x120f0f
xorl %eax, %eax
movq %rax, 0x8(%rsp)
jmp 0x120f24
movq 0x80(%rsp), %rax
movq 0x30(%rax), %rax
subq $0x1, %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq %rax, 0x70(%rsp)
testb $0x1, 0x7f(%rsp)
je 0x120f93
movq 0x80(%rsp), %rax
movq 0x2b0(%rax), %rdi
movq 0x70(%rsp), %rsi
callq 0x132a50
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rdi
movq 0x80(%rsp), %rsi
movq 0x70(%rsp), %rdx
callq 0x132b00
movl %eax, 0x58(%rsp)
movq 0x80(%rsp), %rax
movq 0x2b0(%rax), %rsi
movq 0x70(%rsp), %rdx
leaq 0x5c(%rsp), %rdi
callq 0x133ef0
movq %rax, 0x60(%rsp)
jmp 0x120fe7
movq 0x80(%rsp), %rax
movq 0x2b0(%rax), %rdi
movq 0x70(%rsp), %rsi
callq 0x132c90
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rdi
movq 0x70(%rsp), %rsi
callq 0x132d70
movl %eax, 0x58(%rsp)
movq 0x80(%rsp), %rax
movq 0x2b0(%rax), %rsi
movq 0x70(%rsp), %rdx
leaq 0x5c(%rsp), %rdi
callq 0x133fd0
movq %rax, 0x60(%rsp)
jmp 0x120fe9
movl 0x5c(%rsp), %eax
cmpl 0x58(%rsp), %eax
je 0x12102b
movq 0x92fde(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x3d062(%rip), %rsi     # 0x15e066
leaq 0x68b3b(%rip), %rdx     # 0x189b46
leaq 0x65d1b(%rip), %rcx     # 0x186d2d
leaq 0x64645(%rip), %r8      # 0x18565e
movl $0x1c23, %r9d           # imm = 0x1C23
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x12102d
movq 0x68(%rsp), %rax
cmpq 0x60(%rsp), %rax
je 0x1210c2
leaq 0x10(%rsp), %rdi
movq 0x60(%rsp), %rsi
callq 0x133490
movq 0x92f85(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
movb 0x7f(%rsp), %cl
leaq 0x54595(%rip), %rdx     # 0x1755f6
leaq 0x689b0(%rip), %rax     # 0x189a18
testb $0x1, %cl
cmovneq %rax, %rdx
movq 0x70(%rsp), %rcx
movl 0x58(%rsp), %r8d
leaq 0x10(%rsp), %r9
leaq 0x68aef(%rip), %rsi     # 0x189b74
movb $0x0, %al
callq 0xb890
leaq 0x10(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0x133490
movq 0x92f36(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x10(%rsp), %rdx
leaq 0x68b0c(%rip), %rsi     # 0x189bbd
movb $0x0, %al
callq 0xb890
movl $0x2, %edi
callq 0xb780
testb $0x1, 0x7f(%rsp)
je 0x1210f5
movq 0x70(%rsp), %rax
movq 0x80(%rsp), %rcx
movq 0x30(%rcx), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jne 0x1210e5
jmp 0x121112
movq 0x70(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x70(%rsp)
jmp 0x12110d
cmpq $0x0, 0x70(%rsp)
jne 0x1210ff
jmp 0x121112
movq 0x70(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x70(%rsp)
jmp 0x120f2e
jmp 0x121114
addq $0x88, %rsp
retq
nopl (%rax)