// File: /workspace/github_c_makefile_star2_O3/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 $0x2088, %rsp           # imm = 0x2088
testq %rdi, %rdi
je 0xc7f5a
movq %rsi, %r15
testq %rsi, %rsi
je 0xc7f5a
movq %rdx, %r12
movq %rdi, %r14
cmpb $0x1, 0x6(%rdi)
jne 0xc7643
leaq 0x30848(%rip), %rdx     # 0xf7d76
leaq 0x3a4e7(%rip), %r8      # 0x101a1c
leaq 0x80(%rsp), %rbx
movl $0x2000, %esi           # imm = 0x2000
movq %rbx, %rdi
movq %r15, %rcx
xorl %eax, %eax
callq 0xba10
movq %rbx, %rdi
callq 0x76120
testb %al, %al
je 0xc755f
movb $0x1, (%r14)
leaq 0x30810(%rip), %rdx     # 0xf7d76
leaq 0x3a4a5(%rip), %r8      # 0x101a12
leaq 0x80(%rsp), %rbx
movl $0x2000, %esi           # imm = 0x2000
movq %rbx, %rdi
movq %r15, %rcx
xorl %eax, %eax
callq 0xba10
movq %rbx, %rdi
callq 0x76120
testb %al, %al
je 0xc7598
movb $0x1, 0x3(%r14)
leaq 0x307d7(%rip), %rdx     # 0xf7d76
leaq 0x3a4b7(%rip), %r8      # 0x101a5d
leaq 0x80(%rsp), %rbx
movl $0x2000, %esi           # imm = 0x2000
movq %rbx, %rdi
movq %r15, %rcx
xorl %eax, %eax
callq 0xba10
movq %rbx, %rdi
callq 0x76120
testb %al, %al
je 0xc75d1
movb $0x1, 0x1(%r14)
leaq 0x3079e(%rip), %rdx     # 0xf7d76
leaq 0x3a42e(%rip), %r8      # 0x101a0d
leaq 0x80(%rsp), %rbx
movl $0x2000, %esi           # imm = 0x2000
movq %rbx, %rdi
movq %r15, %rcx
xorl %eax, %eax
callq 0xba10
movq %rbx, %rdi
callq 0x76120
testb %al, %al
je 0xc760a
movb $0x1, 0x2(%r14)
leaq 0x30765(%rip), %rdx     # 0xf7d76
leaq 0x3a3ff(%rip), %r8      # 0x101a17
leaq 0x80(%rsp), %rbx
movl $0x2000, %esi           # imm = 0x2000
movq %rbx, %rdi
movq %r15, %rcx
xorl %eax, %eax
callq 0xba10
movq %rbx, %rdi
callq 0x76120
testb %al, %al
je 0xc7643
movb $0x1, 0x4(%r14)
movzbl (%r14), %edx
movzbl 0x3(%r14), %ecx
movzbl 0x1(%r14), %r8d
movzbl 0x2(%r14), %r9d
movzbl 0x4(%r14), %r10d
movzbl 0x5(%r14), %r11d
leaq 0x3d321(%rip), %rdi     # 0x104988
movq %r15, %rsi
xorl %eax, %eax
pushq %r11
pushq %r10
callq 0x353ae
addq $0x10, %rsp
movb (%r14), %al
movb %al, 0x13(%rsp)
movb 0x1(%r14), %al
movb %al, 0x12(%rsp)
movb 0x3(%r14), %al
movb %al, 0x10(%rsp)
movb 0x2(%r14), %al
movb %al, 0x11(%rsp)
movb 0x4(%r14), %bl
movq 0x8(%r14), %rax
movq %rax, 0x38(%rsp)
testq %r12, %r12
je 0xc76ba
movq %r12, %rdi
callq 0x34fea
testb %al, %al
jne 0xc7f5f
movq %r15, %rdi
movq %r12, %rsi
callq 0xd4d0c
movb $0x1, %bpl
testq %rax, %rax
movq %rax, 0x40(%rsp)
je 0xc7792
movq %rax, %r13
movq %rax, %rdi
callq 0xd5314
movq %rax, %rdi
callq 0xba023
testq %rax, %rax
sete %cl
je 0xc7792
movq %rax, 0x60(%rsp)
movb %bl, 0xf(%rsp)
movl %ecx, 0x14(%rsp)
movq %r15, 0x20(%rsp)
leaq 0x80(%rsp), %rbx
movq %rbx, %rdi
movq %r13, %rsi
callq 0xd53d4
movq 0x30(%rbx), %r15
movq 0x68(%rbx), %rbx
movq %r13, %rdi
callq 0xd53c6
movl %eax, %ebp
movq %r13, %rdi
callq 0xd5324
movq %rax, 0x30(%rsp)
movq %r13, %rdi
callq 0xd5377
movl %ebp, 0x2c(%rsp)
cmpl $0x2, %ebp
movq %r12, 0x18(%rsp)
movq %rbx, 0x68(%rsp)
movq %r15, 0x58(%rsp)
movq %rax, 0x50(%rsp)
jne 0xc779a
movq %rax, %rsi
movb $0x1, 0x70(%rsp)
testq %rax, %rax
je 0xc7f6e
movq %rsi, %rcx
decq %rcx
movq 0x30(%rsp), %rax
subq %rcx, %rax
jb 0xc7f73
xorl %edx, %edx
divq %rsi
testq %rdx, %rdx
je 0xc77a1
callq 0x2c645
xorl %r13d, %r13d
jmp 0xc7a12
movb $0x0, 0x70(%rsp)
xorl %eax, %eax
leaq 0x70(%rsp), %r15
movq %rax, 0x8(%r15)
movq %r13, %rdi
callq 0xd5387
movq %rax, %rbx
movq %r13, %rdi
callq 0xd5397
movq %rax, %rbp
movq %r13, %rdi
callq 0xd5367
movq %rax, 0x48(%rsp)
movq %r13, %rdi
callq 0xd5357
movq %r13, %r12
movq %rax, %r13
movq %r12, %rdi
callq 0xd53b7
subq $0x8, %rsp
movzbl %al, %eax
movzbl 0x19(%rsp), %r10d
movl 0x34(%rsp), %edi
movq 0x38(%rsp), %rsi
movq 0x58(%rsp), %rdx
movq %rbx, %rcx
movq %rbp, %r8
movq 0x60(%rsp), %r9
pushq 0x40(%rsp)
pushq %rax
pushq 0x78(%rsp)
pushq %r15
pushq $0x0
pushq %r10
pushq %r13
pushq 0x88(%rsp)
pushq 0xb0(%rsp)
callq 0xc1b1a
addq $0x50, %rsp
movq %rax, %r13
movq %r12, %rdi
callq 0xd53c6
cmpl $0x7, %eax
jae 0xc7f64
movb 0x28(%r13), %bl
movq %r12, %rdi
callq 0xd53c6
cltq
cmpb $0x1, %bl
movq 0x20(%rsp), %r15
jne 0xc788b
imulq $0x70, %rax, %rax
leaq 0x890b8(%rip), %rbx     # 0x150920
movq 0x28(%rax,%rbx), %rax
movq %rax, 0x110(%r13)
movq %r12, %rdi
callq 0xd53c6
cltq
imulq $0x70, %rax, %rax
addq %rbx, %rax
addq $0x20, %rax
jmp 0xc78b7
imulq $0x70, %rax, %rax
leaq 0x8908a(%rip), %rbx     # 0x150920
movq 0x18(%rax,%rbx), %rax
movq %rax, 0x110(%r13)
movq %r12, %rdi
callq 0xd53c6
cltq
imulq $0x70, %rax, %rax
addq %rbx, %rax
addq $0x10, %rax
movq (%rax), %rax
movq %rax, 0x118(%r13)
movq %r12, %rdi
callq 0xd53c6
cltq
imulq $0x70, %rax, %rax
leaq 0x8904a(%rip), %rbx     # 0x150920
movq 0x38(%rax,%rbx), %rax
movq %rax, 0x120(%r13)
movq %r12, %rdi
callq 0xd53c6
cltq
imulq $0x70, %rax, %rax
movq 0x30(%rax,%rbx), %rax
movq %rax, 0x128(%r13)
movq %r12, %rdi
callq 0xd53c6
cltq
imulq $0x70, %rax, %rax
movq 0x48(%rax,%rbx), %rax
movq %rax, 0x140(%r13)
movq %r12, %rdi
callq 0xd53c6
cltq
imulq $0x70, %rax, %rax
movq 0x40(%rax,%rbx), %rax
movq %rax, 0x148(%r13)
movq %r12, %rdi
callq 0xd53c6
movl %eax, %edi
callq 0xd3975
testb %al, %al
je 0xc795a
movl 0x4(%r13), %eax
cmpq $0x6, %rax
ja 0xc7990
imulq $0x70, %rax, %rax
pshufd $0x4e, 0x50(%rax,%rbx), %xmm0 # xmm0 = mem[2,3,0,1]
jmp 0xc7994
movq %r12, %rdi
callq 0xd53c6
cltq
imulq $0x70, %rax, %rax
movq 0x58(%rax,%rbx), %rax
movq %rax, 0x160(%r13)
movq %r12, %rdi
callq 0xd53c6
cltq
imulq $0x70, %rax, %rax
movq 0x50(%rax,%rbx), %rax
movq %rax, 0x168(%r13)
jmp 0xc799d
pxor %xmm0, %xmm0
movdqu %xmm0, 0x160(%r13)
movq 0x18(%rsp), %r12
leaq 0x8ddc(%rip), %rax      # 0xd0785
movq %rax, 0x150(%r13)
testq %r12, %r12
je 0xc79c5
movq %r12, %rdi
callq 0x34fea
testb %al, %al
jne 0xc7f69
movq %r15, %rdi
callq 0x3b785
movq %rax, %rbp
leaq 0x3a031(%rip), %rsi     # 0x101a08
movq %rax, %rdi
callq 0x3b7af
movq %rbp, %rdi
callq 0x3bb5d
movq 0x60(%r13), %rcx
leaq 0x10(%r13), %r8
leaq -0x58e0(%rip), %rdi     # 0xc2116
movq %r13, %rsi
movq %rax, %rdx
movq %r12, %r9
callq 0xd6568
testl %eax, %eax
je 0xc7a49
movq %rbp, %rdi
callq 0x3c87b
xorl %ebp, %ebp
movq 0x40(%rsp), %rdi
callq 0xd53ef
xorl %ebx, %ebx
xorl %edi, %edi
callq 0xba400
testb %bpl, %bpl
jne 0xc7a34
movq %r13, %rdi
callq 0xc273d
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x2088, %rsp           # imm = 0x2088
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
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)
leaq 0x178(%r13), %rdi
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 0x3c8cc
movq %rax, 0x1f8(%r13)
cmpq $0x0, 0x50(%r13)
je 0xc7b49
movq 0xe0(%r13), %rbx
xorl %r15d, %r15d
movq 0x1f8(%r13), %rdi
movq %rbx, %rsi
callq 0x3c9a5
testq %rbx, %rbx
je 0xc7f55
movq %rbx, %rdi
callq 0xb260
addq %rax, %rbx
incq %rbx
incq %r15
cmpq 0x50(%r13), %r15
jb 0xc7b1a
cmpq $0x0, 0xf8(%r13)
je 0xc7f78
movl (%r13), %edi
callq 0xd3904
leaq 0x3f7c9(%rip), %rsi     # 0x107330
movq 0x38(%rsp), %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x3561d
movq %rbp, %rdi
callq 0x3c87b
movq 0x20(%rsp), %r15
movq %r15, %rdi
callq 0x728c0
movq %rax, 0x68(%r13)
movq 0xf8(%r13), %rsi
movq 0x220(%r13), %rdi
callq 0xd0059
movl %eax, 0x170(%r13)
cmpb $0x0, 0x13(%rsp)
je 0xc7c03
leaq 0x39e65(%rip), %rsi     # 0x101a1c
leaq 0x3ad5c(%rip), %rcx     # 0x10291a
leaq 0x80(%rsp), %rbx
movq %r15, %rdi
movq %rbx, %rdx
movl $0x128b, %r8d           # imm = 0x128B
movq %r12, %r9
callq 0x7519a
movq %rax, 0x200(%r13)
movq (%rbx), %rcx
movq %rcx, 0x210(%r13)
testq %rax, %rax
movl 0x14(%rsp), %eax
movl $0x0, %ecx
movb %al, %cl
movl $0x1, %ebx
cmovnel %ecx, %ebx
jmp 0xc7c07
movl 0x14(%rsp), %ebx
movb 0x10(%rsp), %al
testb %al, %al
je 0xc7c59
testb %bl, %bl
jne 0xc7c59
movq 0x40(%r13), %rdx
cmpq $0x2, %rdx
jb 0xc7c4e
decq %rdx
leaq 0x39deb(%rip), %rsi     # 0x101a12
movl $0x8, %ecx
movq %r15, %rdi
movq %r12, %r8
callq 0x7521b
movq %rax, 0x218(%r13)
testq %rax, %rax
movzbl %bl, %eax
movl $0x1, %ebx
cmovnel %eax, %ebx
jmp 0xc7c59
movq $0x0, 0x218(%r13)
testb %bl, %bl
jne 0xc7d50
cmpb $0x0, 0x12(%rsp)
jne 0xc7c76
cmpb $0x1, 0x3a9(%r13)
jne 0xc7d50
cmpl $0x2, (%r13)
je 0xc7d50
cmpq $0x2, 0x40(%r13)
jb 0xc7d50
movl %ebx, 0x14(%rsp)
testq %r12, %r12
je 0xc7ca5
movq %r12, %rdi
callq 0x34fea
testb %al, %al
jne 0xc7f8c
movq %r15, %rdi
callq 0x3b785
movq %rax, %rbx
leaq 0x39da6(%rip), %rsi     # 0x101a5d
movq %rax, %rdi
callq 0x3b7af
movl 0x4(%r13), %edi
movq 0x30(%r13), %rcx
movq 0x40(%r13), %r8
decq %r8
xorl %esi, %esi
xorl %edx, %edx
callq 0xc4b81
movq %rax, %r15
movq 0x30(%r13), %rax
movq %r12, %rbp
leaq 0x80(%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 0x3bb5d
leaq 0x18(%r13), %r8
leaq 0x778c(%rip), %rdi      # 0xcf4aa
movq %r12, %rsi
movq %rax, %rdx
movq %r15, %rcx
movq %rbp, %r9
callq 0xd6568
movb $0x1, %bpl
testl %eax, %eax
jne 0xc7d41
movb $0x1, 0x2a(%r13)
movl 0x14(%rsp), %eax
movl %eax, %ebp
movq %rbx, %rdi
callq 0x3c87b
movl %ebp, %ebx
movq 0x20(%rsp), %r15
cmpb $0x0, 0x11(%rsp)
je 0xc7de4
testb %bl, %bl
jne 0xc7de4
movl %ebx, 0x14(%rsp)
movb $0x1, 0x2f0(%r13)
movq 0x18(%rsp), %r12
testq %r12, %r12
je 0xc7d89
movq %r12, %rdi
callq 0x34fea
testb %al, %al
jne 0xc7f7d
movq %r15, %rdi
callq 0x3b785
movq %rax, %rbx
leaq 0x39c72(%rip), %rsi     # 0x101a0d
movq %rax, %rdi
callq 0x3b7af
movq %r13, %rdi
callq 0xd00bb
movq %r15, %rbp
movq %rax, %r15
movq %rbx, %rdi
callq 0x3bb5d
movq %r13, %r8
addq $0x20, %r8
leaq 0x8361(%rip), %rdi      # 0xd0128
movq %r13, %rsi
movq %rax, %rdx
movq %r15, %rcx
movq %r12, %r9
callq 0xd6568
testl %eax, %eax
je 0xc7dfd
movq %rbx, %rdi
jmp 0xc7a0b
cmpb $0x0, 0xf(%rsp)
je 0xc7ea3
testb %bl, %bl
movq 0x18(%rsp), %r12
je 0xc7e46
jmp 0xc7ea8
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)
movq %rbx, %rdi
callq 0x3c87b
cmpb $0x0, 0xf(%rsp)
movq %rbp, %r15
movl 0x14(%rsp), %ebx
je 0xc7ea8
movq %r15, %rdi
callq 0x3b785
movl %ebx, %r15d
movq %rax, %rbx
leaq 0x39bbc(%rip), %rsi     # 0x101a17
movq %rax, %rdi
callq 0x3b7af
movq %rbx, %rdi
callq 0x3bb5d
movq 0x40(%r13), %rsi
movl $0x1, %ebp
movq %rax, %rdi
movl $0x1, %edx
movq %r12, %rcx
callq 0xd7bb1
movq %rax, 0x3a0(%r13)
testq %rax, %rax
movzbl %r15b, %r15d
cmovel %ebp, %r15d
movq %rbx, %rdi
movl %r15d, %ebx
callq 0x3c87b
jmp 0xc7ea8
movq 0x18(%rsp), %r12
testb %bl, %bl
jne 0xc7a10
movq 0x50(%r13), %rdi
cmpq $0x2, %rdi
jb 0xc7f29
cmpq $0x0, 0x278(%r13)
jne 0xc7f82
decq %rdi
leaq 0x3aa48(%rip), %rdx     # 0x10291a
movl $0x8, %esi
movl $0x12c3, %ecx           # imm = 0x12C3
callq 0x359a6
movq %rax, 0x278(%r13)
movq 0xf0(%r13), %rcx
testq %rcx, %rcx
je 0xc7f87
cmpq $0x1, 0x50(%r13)
je 0xc7f29
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 0xc7f07
movq 0x40(%rsp), %rdi
callq 0xd53ef
cmpb $0x1, 0x5(%r14)
jne 0xc7f4d
movq %r13, %rdi
movq %r12, %rsi
callq 0xca874
testl %eax, %eax
jne 0xc7a2a
movq %r13, %rbx
jmp 0xc7a34
callq 0x2c6f0
callq 0x2c5d3
callq 0x2c60c
callq 0x2c67e
callq 0x2c6b7
callq 0x2c87f
callq 0x2c846
callq 0x2c80d
callq 0x2c762
callq 0x2c79b
callq 0x2c7d4
callq 0x2c729