// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/encseq.c
// Function: gt_encseq_check_consistency
int gt_encseq_check_consistency(const GtEncseq *encseq,
                                const GtStrArray *filenametab,
                                GtReadmode readmode,
                                GtUword scantrials,
                                GtUword multicharcmptrials,
                                bool withseqnumcheck,
                                bool withcheckunit,
                                GtLogger *logger,
                                GtError *err)
{
  bool fwd = GT_ISDIRREVERSE(readmode) ? false : true,
       complement = GT_ISDIRCOMPLEMENT(readmode) ? true : false;

  if (encseq->sat != GT_ACCESS_TYPE_DIRECTACCESS &&
      encseq->sat != GT_ACCESS_TYPE_BYTECOMPRESS &&
      !encseq->hasmirror) {
    if (withcheckunit) {
      gt_logger_log(logger, "run checkextractunitatpos");
      checkextractunitatpos(encseq, readmode);
    }
    if (multicharcmptrials > 0) {
      gt_logger_log(logger, "run testmulticharactercompare");
      testmulticharactercompare(encseq, readmode, multicharcmptrials);
    }
  }
  if (!complement) {
    gt_logger_log(logger, "run checkextractspecialbits");
    checkextractspecialbits(encseq, fwd);
  }
  if (scantrials > 0) {
    gt_logger_log(logger, "run testscanatpos for "GT_WU" trials", scantrials);
    testscanatpos(encseq, readmode, scantrials);
  }
  if (withseqnumcheck && readmode == GT_READMODE_FORWARD) {
    gt_logger_log(logger, "run testseqnumextraction");
    testseqnumextraction(encseq);
  }
  gt_logger_log(logger, "run testfullscan");
  return testfullscan(filenametab, encseq, readmode, err);
}

// Assembly:
subq $0x58, %rsp
movl %r9d, %eax
movq %rcx, 0x10(%rsp)
movl %edx, %ecx
movq 0x10(%rsp), %rdx
movl %ecx, 0x1c(%rsp)
movq %rsi, %rcx
movl 0x1c(%rsp), %esi
movq %rcx, 0x20(%rsp)
movq %rdi, %r9
movq 0x20(%rsp), %rdi
movb %al, %cl
movq 0x70(%rsp), %rax
movq 0x68(%rsp), %rax
movb 0x60(%rsp), %al
movq %r9, 0x50(%rsp)
movq %rdi, 0x48(%rsp)
movl %esi, 0x44(%rsp)
movq %rdx, 0x38(%rsp)
movq %r8, 0x30(%rsp)
andb $0x1, %cl
movb %cl, 0x2f(%rsp)
andb $0x1, %al
movb %al, 0x2e(%rsp)
movb $0x1, %al
cmpl $0x1, 0x44(%rsp)
movb %al, 0x2b(%rsp)
je 0x120919
cmpl $0x3, 0x44(%rsp)
sete %al
movb %al, 0x2b(%rsp)
movb 0x2b(%rsp), %dl
movl $0x1, %eax
xorl %ecx, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, 0x2d(%rsp)
movb $0x1, %al
cmpl $0x2, 0x44(%rsp)
movb %al, 0xf(%rsp)
je 0x12094f
cmpl $0x3, 0x44(%rsp)
sete %al
movb %al, 0xf(%rsp)
movb 0xf(%rsp), %dl
xorl %eax, %eax
movl $0x1, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, 0x2c(%rsp)
movq 0x50(%rsp), %rax
cmpl $0x0, (%rax)
je 0x1209e6
movq 0x50(%rsp), %rax
cmpl $0x1, (%rax)
je 0x1209e6
movq 0x50(%rsp), %rax
testb $0x1, 0x3a8(%rax)
jne 0x1209e6
testb $0x1, 0x2e(%rsp)
je 0x1209b6
movq 0x68(%rsp), %rdi
leaq 0x66350(%rip), %rsi     # 0x186cf1
movb $0x0, %al
callq 0xcec0
movq 0x50(%rsp), %rdi
movl 0x44(%rsp), %esi
callq 0x120ab0
cmpq $0x0, 0x30(%rsp)
jbe 0x1209e4
movq 0x68(%rsp), %rdi
leaq 0x66341(%rip), %rsi     # 0x186d0b
movb $0x0, %al
callq 0xcec0
movq 0x50(%rsp), %rdi
movl 0x44(%rsp), %esi
movq 0x30(%rsp), %rdx
callq 0x120dc0
jmp 0x1209e6
testb $0x1, 0x2c(%rsp)
jne 0x120a13
movq 0x68(%rsp), %rdi
leaq 0x66330(%rip), %rsi     # 0x186d29
movb $0x0, %al
callq 0xcec0
movq 0x50(%rsp), %rdi
movb 0x2d(%rsp), %al
andb $0x1, %al
movzbl %al, %esi
callq 0x120ec0
cmpq $0x0, 0x38(%rsp)
jbe 0x120a46
movq 0x68(%rsp), %rdi
movq 0x38(%rsp), %rdx
leaq 0x66319(%rip), %rsi     # 0x186d45
movb $0x0, %al
callq 0xcec0
movq 0x50(%rsp), %rdi
movl 0x44(%rsp), %esi
movq 0x38(%rsp), %rdx
callq 0x121120
testb $0x1, 0x2f(%rsp)
je 0x120a71
cmpl $0x0, 0x44(%rsp)
jne 0x120a71
movq 0x68(%rsp), %rdi
leaq 0x66306(%rip), %rsi     # 0x186d66
movb $0x0, %al
callq 0xcec0
movq 0x50(%rsp), %rdi
callq 0x121210
movq 0x68(%rsp), %rdi
leaq 0x66302(%rip), %rsi     # 0x186d7f
movb $0x0, %al
callq 0xcec0
movq 0x48(%rsp), %rdi
movq 0x50(%rsp), %rsi
movl 0x44(%rsp), %edx
movq 0x70(%rsp), %rcx
callq 0x121360
addq $0x58, %rsp
retq
nopw %cs:(%rax,%rax)