// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/core/encseq.c
// Function: gt_encseq_loader_load
GtEncseq* gt_encseq_loader_load(GtEncseqLoader *el, const char *indexname,
                                GtError *err)
{
  GtEncseq *encseq = NULL;
  gt_assert(el && indexname);

  if (el->autodiscover) {
    char buf[BUFSIZ];
    (void) snprintf(buf, BUFSIZ, "%s%s", indexname, GT_DESTABFILESUFFIX);
    if (gt_file_exists(buf))
      el->destab = true;
    (void) snprintf(buf, BUFSIZ, "%s%s", indexname, GT_SDSTABFILESUFFIX);
    if (gt_file_exists(buf))
      el->sdstab = true;
    (void) snprintf(buf, BUFSIZ, "%s%s", indexname, GT_SSPTABFILESUFFIX);
    if (gt_file_exists(buf))
      el->ssptab = true;
    (void) snprintf(buf, BUFSIZ, "%s%s", indexname, GT_OISTABFILESUFFIX);
    if (gt_file_exists(buf))
      el->oistab = true;
    (void) snprintf(buf, BUFSIZ, "%s%s", indexname, GT_MD5TABFILESUFFIX);
    if (gt_file_exists(buf))
      el->md5tab = true;
  }
  gt_log_log("loading encseq %s with des: %d, sds: %d, ssp: %d, ois: %d, "
             "md5: %d, mirr: %d",
             indexname, el->destab, el->sdstab, el->ssptab, el->oistab,
             el->md5tab, el->mirrored);

  encseq = gt_encseq_new_from_index(indexname,
                                    el->destab,
                                    el->sdstab,
                                    el->ssptab,
                                    el->oistab,
                                    el->md5tab,
                                    el->logger,
                                    err);
  if (encseq && el->mirrored) {
    if (gt_encseq_mirror(encseq, err) != 0) {
      gt_encseq_delete(encseq);
      encseq = NULL;
    }
  }
  return encseq;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2068, %rsp           # imm = 0x2068
testq %rdi, %rdi
je 0xc6f67
movq %rsi, %rbp
testq %rsi, %rsi
je 0xc6f67
movq %rdx, %r14
movq %rdi, %r15
cmpb $0x1, 0x6(%rdi)
jne 0xc6612
leaq 0x31902(%rip), %rdx     # 0xf7e0e
leaq 0x3b595(%rip), %r8      # 0x101aa8
leaq 0x60(%rsp), %rbx
movl $0x2000, %esi           # imm = 0x2000
movq %rbx, %rdi
movq %rbp, %rcx
xorl %eax, %eax
callq 0xba10
movq %rbx, %rdi
callq 0x75bdc
testb %al, %al
je 0xc653a
movb $0x1, (%r15)
leaq 0x318cd(%rip), %rdx     # 0xf7e0e
leaq 0x3b556(%rip), %r8      # 0x101a9e
leaq 0x60(%rsp), %rbx
movl $0x2000, %esi           # imm = 0x2000
movq %rbx, %rdi
movq %rbp, %rcx
xorl %eax, %eax
callq 0xba10
movq %rbx, %rdi
callq 0x75bdc
testb %al, %al
je 0xc6570
movb $0x1, 0x3(%r15)
leaq 0x31897(%rip), %rdx     # 0xf7e0e
leaq 0x3b56b(%rip), %r8      # 0x101ae9
leaq 0x60(%rsp), %rbx
movl $0x2000, %esi           # imm = 0x2000
movq %rbx, %rdi
movq %rbp, %rcx
xorl %eax, %eax
callq 0xba10
movq %rbx, %rdi
callq 0x75bdc
testb %al, %al
je 0xc65a6
movb $0x1, 0x1(%r15)
leaq 0x31861(%rip), %rdx     # 0xf7e0e
leaq 0x3b4e5(%rip), %r8      # 0x101a99
leaq 0x60(%rsp), %rbx
movl $0x2000, %esi           # imm = 0x2000
movq %rbx, %rdi
movq %rbp, %rcx
xorl %eax, %eax
callq 0xba10
movq %rbx, %rdi
callq 0x75bdc
testb %al, %al
je 0xc65dc
movb $0x1, 0x2(%r15)
leaq 0x3182b(%rip), %rdx     # 0xf7e0e
leaq 0x3b4b9(%rip), %r8      # 0x101aa3
leaq 0x60(%rsp), %rbx
movl $0x2000, %esi           # imm = 0x2000
movq %rbx, %rdi
movq %rbp, %rcx
xorl %eax, %eax
callq 0xba10
movq %rbx, %rdi
callq 0x75bdc
testb %al, %al
je 0xc6612
movb $0x1, 0x4(%r15)
movzbl (%r15), %edx
movzbl 0x3(%r15), %ecx
movzbl 0x1(%r15), %r8d
movzbl 0x2(%r15), %r9d
movzbl 0x4(%r15), %r10d
movzbl 0x5(%r15), %r11d
leaq 0x3e4b7(%rip), %rdi     # 0x104aed
movq %rbp, %rsi
xorl %eax, %eax
pushq %r11
pushq %r10
callq 0x35a32
addq $0x10, %rsp
movb (%r15), %al
movb %al, 0xc(%rsp)
movb 0x1(%r15), %al
movb %al, 0xd(%rsp)
movb 0x3(%r15), %al
movb %al, 0xf(%rsp)
movb 0x2(%r15), %al
movb %al, 0xb(%rsp)
movb 0x4(%r15), %bl
movq 0x8(%r15), %rax
movq %rax, 0x38(%rsp)
testq %r14, %r14
je 0xc6689
movq %r14, %rdi
callq 0x3566a
testb %al, %al
jne 0xc6f6c
movb %bl, 0xe(%rsp)
movq %rbp, %rdi
movq %r14, %rsi
callq 0xd3f64
xorl %r13d, %r13d
testq %rax, %rax
sete %bl
movq %rax, 0x10(%rsp)
je 0xc66ce
movq %rax, %rdi
callq 0xd4bac
movq %rax, %rdi
callq 0xb8fab
movq %rax, 0x20(%rsp)
testq %rax, %rax
movb %bl, %r13b
movl $0x1, %ebx
cmovnel %r13d, %ebx
jmp 0xc66d7
movq $0x0, 0x20(%rsp)
movl %ebx, 0x1c(%rsp)
testb %bl, %bl
movq %rbp, 0x28(%rsp)
movq %r15, 0x58(%rsp)
je 0xc66f9
xorl %r13d, %r13d
movq %r14, %r12
movl 0x1c(%rsp), %r14d
jmp 0xc6b51
leaq 0x60(%rsp), %rbx
movq %rbx, %rdi
movq 0x10(%rsp), %rbp
movq %rbp, %rsi
callq 0xd4c6c
movq 0x30(%rbx), %rax
movq %rax, 0x48(%rsp)
movq 0x68(%rbx), %r13
movq %rbp, %rdi
callq 0xd4c5e
movl %eax, %r12d
movq %rbp, %rdi
callq 0xd4bbc
movq %rax, 0x30(%rsp)
movq %rbp, %rdi
callq 0xd4c0f
movq %rax, %rbx
movl %r12d, 0x18(%rsp)
cmpl $0x2, %r12d
movq %r14, 0x40(%rsp)
movq %r13, 0x50(%rsp)
jne 0xc6784
movb $0x1, 0x60(%rsp)
testq %rbx, %rbx
je 0xc6f99
movq %rbx, %rcx
decq %rcx
movq 0x30(%rsp), %rax
subq %rcx, %rax
jb 0xc6f9e
xorl %edx, %edx
divq %rbx
testq %rdx, %rdx
je 0xc678b
callq 0x2c95d
movb $0x0, 0x60(%rsp)
xorl %eax, %eax
movq %rax, 0x68(%rsp)
movq %rbp, %rdi
callq 0xd4c1f
movq %rax, %r13
movq %rbp, %rdi
callq 0xd4c2f
movq %rax, %rbp
movq 0x10(%rsp), %rdi
callq 0xd4bff
movq %rax, %r15
movq 0x10(%rsp), %rdi
callq 0xd4bef
movq %rax, %r12
movq 0x10(%rsp), %rdi
callq 0xd4c4f
subq $0x8, %rsp
movzbl %al, %eax
movzbl 0x13(%rsp), %r10d
movl 0x20(%rsp), %edi
movq 0x38(%rsp), %rsi
movq %rbx, %rdx
movq %r13, %rcx
movq %rbp, %r8
movq 0x18(%rsp), %rbp
movq 0x50(%rsp), %r9
pushq 0x40(%rsp)
pushq %rax
pushq 0x38(%rsp)
leaq 0x80(%rsp), %rax
pushq %rax
pushq $0x0
pushq %r10
pushq %r12
pushq %r15
pushq 0x98(%rsp)
callq 0xc0a73
addq $0x50, %rsp
movq %rax, %r13
movq %rbp, %rdi
callq 0xd4c5e
cmpl $0x7, %eax
movl 0x1c(%rsp), %r14d
jae 0xc6f71
movb 0x28(%r13), %bl
movq %rbp, %rdi
callq 0xd4c5e
cltq
cmpb $0x1, %bl
movq 0x40(%rsp), %r12
movq 0x28(%rsp), %r15
jne 0xc6881
imulq $0x70, %rax, %rax
leaq 0x8a0c2(%rip), %rbx     # 0x150920
movq 0x28(%rax,%rbx), %rax
movq %rax, 0x110(%r13)
movq %rbp, %rdi
callq 0xd4c5e
cltq
imulq $0x70, %rax, %rax
addq %rbx, %rax
addq $0x20, %rax
jmp 0xc68ad
imulq $0x70, %rax, %rax
leaq 0x8a094(%rip), %rbx     # 0x150920
movq 0x18(%rax,%rbx), %rax
movq %rax, 0x110(%r13)
movq %rbp, %rdi
callq 0xd4c5e
cltq
imulq $0x70, %rax, %rax
addq %rbx, %rax
addq $0x10, %rax
movq (%rax), %rax
movq %rax, 0x118(%r13)
movq %rbp, %rdi
callq 0xd4c5e
cltq
imulq $0x70, %rax, %rax
leaq 0x8a054(%rip), %rbx     # 0x150920
movq 0x38(%rax,%rbx), %rax
movq %rax, 0x120(%r13)
movq %rbp, %rdi
callq 0xd4c5e
cltq
imulq $0x70, %rax, %rax
movq 0x30(%rax,%rbx), %rax
movq %rax, 0x128(%r13)
movq %rbp, %rdi
callq 0xd4c5e
cltq
imulq $0x70, %rax, %rax
movq 0x48(%rax,%rbx), %rax
movq %rax, 0x140(%r13)
movq %rbp, %rdi
callq 0xd4c5e
cltq
imulq $0x70, %rax, %rax
movq 0x40(%rax,%rbx), %rax
movq %rax, 0x148(%r13)
movq %rbp, %rdi
callq 0xd4c5e
movl %eax, %edi
callq 0xd2b4d
testb %al, %al
je 0xc6950
movl 0x4(%r13), %eax
cmpq $0x6, %rax
ja 0xc6986
imulq $0x70, %rax, %rax
pshufd $0x4e, 0x50(%rax,%rbx), %xmm0 # xmm0 = mem[2,3,0,1]
jmp 0xc698a
movq %rbp, %rdi
callq 0xd4c5e
cltq
imulq $0x70, %rax, %rax
movq 0x58(%rax,%rbx), %rax
movq %rax, 0x160(%r13)
movq %rbp, %rdi
callq 0xd4c5e
cltq
imulq $0x70, %rax, %rax
movq 0x50(%rax,%rbx), %rax
movq %rax, 0x168(%r13)
jmp 0xc6993
pxor %xmm0, %xmm0
movdqu %xmm0, 0x160(%r13)
movslq 0x18(%rsp), %rax
imulq $0x70, %rax, %rax
movq 0x68(%rax,%rbx), %rax
movq %rax, 0x150(%r13)
testq %r12, %r12
je 0xc69bd
movq %r12, %rdi
callq 0x3566a
testb %al, %al
jne 0xc6f8f
movq %r15, %rdi
callq 0x3c03d
movq %rax, %rbp
leaq 0x3b0c5(%rip), %rsi     # 0x101a94
movq %rax, %rdi
callq 0x3c067
movq %rbp, %rdi
callq 0x3c40b
movq 0x60(%r13), %rcx
leaq 0x10(%r13), %r8
leaq -0x5985(%rip), %rdi     # 0xc1069
movq %r13, %rsi
movq %rax, %rdx
movq %r12, %r9
callq 0xd5e3f
movb $0x1, %bl
testl %eax, %eax
jne 0xc6b38
movq 0x88(%r13), %rax
movq 0x90(%r13), %rcx
movq (%rax), %rax
movq %rax, 0x30(%r13)
movq %rax, 0x38(%r13)
movq (%rcx), %rax
movq %rax, 0x40(%r13)
movq %rax, 0x48(%r13)
movq 0x98(%r13), %rax
movq (%rax), %rax
movq %rax, 0x50(%r13)
movq 0xa0(%r13), %rax
movq (%rax), %rax
movq %rax, 0x58(%r13)
movq %r13, %rdi
addq $0x178, %rdi            # imm = 0x178
movq 0xd8(%r13), %rsi
movl $0xe, %ecx
rep  movsq (%rsi), %es:(%rdi)
movq 0xa8(%r13), %rax
movq (%rax), %rax
movq %rax, 0x3b0(%r13)
movq 0xb0(%r13), %rax
movq (%rax), %rax
movq %rax, 0x3b8(%r13)
movq 0xd0(%r13), %rax
movb (%rax), %al
movb %al, 0x360(%r13)
movq 0xc8(%r13), %rax
movq (%rax), %rax
movq %rax, 0x340(%r13)
movq 0x70(%r13), %rax
movq 0x78(%r13), %rcx
movq (%rcx), %rcx
movq %rcx, 0x100(%r13)
movb (%rax), %al
movb %al, 0x108(%r13)
callq 0x3d23c
movq %rax, 0x1f8(%r13)
cmpq $0x0, 0x50(%r13)
je 0xc6b09
movq 0xe0(%r13), %rbx
xorl %r15d, %r15d
movq 0x1f8(%r13), %rdi
movq %rbx, %rsi
callq 0x3d318
testq %rbx, %rbx
je 0xc6f62
movq %rbx, %rdi
callq 0xb260
addq %rax, %rbx
incq %rbx
incq %r15
cmpq 0x50(%r13), %r15
jb 0xc6ada
cmpq $0x0, 0xf8(%r13)
je 0xc6fad
movq %r13, %rdi
callq 0xc068c
leaq 0x409e4(%rip), %rsi     # 0x10750a
movq 0x38(%rsp), %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x35c9e
movl %r14d, %ebx
movq %rbp, %rdi
callq 0x3d1eb
movq $0x0, 0x20(%rsp)
movl %ebx, %r14d
movq 0x28(%rsp), %rbp
testb %r14b, %r14b
jne 0xc6bd5
testq %r13, %r13
je 0xc6f76
movq %rbp, %rdi
callq 0x722dc
movq %rax, 0x68(%r13)
movq 0xf8(%r13), %rsi
movq 0x220(%r13), %rdi
callq 0xcf1ee
movl %eax, 0x170(%r13)
cmpb $0x0, 0xc(%rsp)
je 0xc6bd5
leaq 0x3af15(%rip), %rsi     # 0x101aa8
leaq 0x3be90(%rip), %rcx     # 0x102a2a
leaq 0x60(%rsp), %rbx
movq %rbp, %rdi
movq %rbx, %rdx
movl $0x128b, %r8d           # imm = 0x128B
movq %r12, %r9
callq 0x74c5c
movq %rax, 0x200(%r13)
movq (%rbx), %rcx
movq %rcx, 0x210(%r13)
testq %rax, %rax
movzbl %r14b, %eax
movl $0x1, %r14d
cmovnel %eax, %r14d
cmpb $0x0, 0xf(%rsp)
je 0xc6c33
testb %r14b, %r14b
jne 0xc6c33
testq %r13, %r13
je 0xc6f7b
movq 0x40(%r13), %rdx
cmpq $0x2, %rdx
jb 0xc6c28
decq %rdx
leaq 0x3aea0(%rip), %rsi     # 0x101a9e
movl $0x8, %ecx
movq %rbp, %rdi
movq %r12, %r8
callq 0x74cdd
movq %rax, 0x218(%r13)
testq %rax, %rax
movzbl %r14b, %eax
movl $0x1, %r14d
cmovnel %eax, %r14d
jmp 0xc6c33
movq $0x0, 0x218(%r13)
testq %r13, %r13
je 0xc6d2e
testb %r14b, %r14b
jne 0xc6d2e
cmpb $0x0, 0xd(%rsp)
jne 0xc6c5a
cmpb $0x1, 0x3a9(%r13)
jne 0xc6d2e
cmpl $0x2, (%r13)
je 0xc6d2e
cmpq $0x2, 0x40(%r13)
jb 0xc6d2e
testq %r12, %r12
je 0xc6c85
movq %r12, %rdi
callq 0x3566a
testb %al, %al
jne 0xc6fb2
movq %rbp, %rdi
callq 0x3c03d
movq %rax, %rbx
leaq 0x3ae52(%rip), %rsi     # 0x101ae9
movq %rax, %rdi
callq 0x3c067
movl 0x4(%r13), %edi
movq 0x30(%r13), %rcx
movq 0x40(%r13), %r8
decq %r8
xorl %esi, %esi
xorl %edx, %edx
callq 0xc3b39
movq %rax, %r15
movq 0x30(%r13), %rax
movq %r12, %rbp
leaq 0x60(%rsp), %r12
movq %rax, (%r12)
movq 0x40(%r13), %rax
movq %rax, 0x8(%r12)
movl 0x4(%r13), %eax
movl %eax, 0x10(%r12)
leaq 0x240(%r13), %rax
movq %rax, 0x18(%r12)
movq %rbx, %rdi
callq 0x3c40b
leaq 0x18(%r13), %r8
leaq 0x78d8(%rip), %rdi      # 0xce5d3
movq %r12, %rsi
movq %rbp, %r12
movq %rax, %rdx
movq %r15, %rcx
movq %rbp, %r9
callq 0xd5e3f
movb $0x1, %bpl
testl %eax, %eax
jne 0xc6d1e
movb $0x1, 0x2a(%r13)
movl %r14d, %ebp
movq %rbx, %rdi
callq 0x3d1eb
movl %ebp, %r14d
movq 0x28(%rsp), %rbp
cmpb $0x0, 0xb(%rsp)
je 0xc6dfe
testb %r14b, %r14b
jne 0xc6dfe
testq %r13, %r13
je 0xc6f80
movb $0x1, 0x2f0(%r13)
testq %r12, %r12
je 0xc6d68
movq %r12, %rdi
callq 0x3566a
testb %al, %al
jne 0xc6f94
movq %rbp, %rdi
callq 0x3c03d
movq %rax, %rbx
leaq 0x3ad1f(%rip), %rsi     # 0x101a99
movq %rax, %rdi
callq 0x3c067
movq %r13, %rdi
callq 0xcf250
movq %rax, %r15
movq %rbx, %rdi
callq 0x3c40b
leaq 0x20(%r13), %r8
leaq 0x851d(%rip), %rdi      # 0xcf2bd
movq %r13, %rsi
movq %rax, %rdx
movq %r15, %rcx
movq %r12, %r9
callq 0xd5e3f
movb $0x1, %bpl
testl %eax, %eax
jne 0xc6dee
movb $0x1, 0x2a(%r13)
movq 0x368(%r13), %rax
movq %rax, 0x338(%r13)
movdqu 0x370(%r13), %xmm0
movdqu %xmm0, 0x348(%r13)
movq 0x380(%r13), %rax
movq %rax, 0x358(%r13)
movl %r14d, %ebp
movq %rbx, %rdi
callq 0x3d1eb
movl %ebp, %r14d
movq 0x28(%rsp), %rbp
cmpb $0x0, 0xe(%rsp)
je 0xc6e68
testb %r14b, %r14b
jne 0xc6e68
testq %r13, %r13
je 0xc6f85
movq %rbp, %rdi
callq 0x3c03d
movq %rax, %rbx
leaq 0x3ac7e(%rip), %rsi     # 0x101aa3
movq %rax, %rdi
callq 0x3c067
movq %rbx, %rdi
callq 0x3c40b
movq 0x40(%r13), %rsi
movl $0x1, %ebp
movq %rax, %rdi
movl $0x1, %edx
movq %r12, %rcx
callq 0xd74b1
movq %rax, 0x3a0(%r13)
testq %rax, %rax
movzbl %r14b, %r14d
cmovel %ebp, %r14d
movq %rbx, %rdi
callq 0x3d1eb
testb %r14b, %r14b
movq 0x10(%rsp), %rbx
je 0xc6e99
movq %rbx, %rdi
callq 0xd4c87
movq 0x20(%rsp), %rdi
callq 0xb9301
testq %r13, %r13
je 0xc6e91
movq %r13, %rdi
callq 0xc1690
xorl %r13d, %r13d
jmp 0xc6f23
testq %r13, %r13
je 0xc6f8a
movq 0x50(%r13), %rdi
cmpq $0x2, %rdi
jb 0xc6f1b
cmpq $0x0, 0x278(%r13)
jne 0xc6fa3
decq %rdi
leaq 0x3bb66(%rip), %rdx     # 0x102a2a
movl $0x8, %esi
movl $0x12c3, %ecx           # imm = 0x12C3
callq 0x3601f
movq %rax, 0x278(%r13)
movq 0xf0(%r13), %rcx
testq %rcx, %rcx
je 0xc6fa8
cmpq $0x1, 0x50(%r13)
je 0xc6f1b
addq $0x8, %rcx
xorl %edx, %edx
xorl %esi, %esi
addq (%rcx), %rdx
cmpq $0x1, %rsi
sbbq $-0x1, %rdx
movq %rdx, (%rax,%rsi,8)
incq %rsi
movq 0x50(%r13), %rdi
decq %rdi
addq $0x10, %rcx
cmpq %rdi, %rsi
jb 0xc6ef9
movq %rbx, %rdi
callq 0xd4c87
testq %r13, %r13
je 0xc6f4a
movq 0x58(%rsp), %rax
cmpb $0x1, 0x5(%rax)
jne 0xc6f4d
movq %r13, %rdi
movq %r12, %rsi
callq 0xc9871
testl %eax, %eax
je 0xc6f4d
movq %r13, %rdi
callq 0xc1690
xorl %r13d, %r13d
movq %r13, %rax
addq $0x2068, %rsp           # imm = 0x2068
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x2ca08
callq 0x2c8eb
callq 0x2c924
callq 0x2c996
callq 0x2caec
callq 0x2cb25
callq 0x2cbd0
callq 0x2cc09
callq 0x2ccb4
callq 0x2c9cf
callq 0x2cb97
callq 0x2cab3
callq 0x2ca7a
callq 0x2cc42
callq 0x2cc7b
callq 0x2ca41
callq 0x2cb5e