// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/encseq.c
// Function: files2encodedsequence
static GtEncseq *files2encodedsequence(const GtStrArray *filenametab,
                                       const GtFilelengthvalues *filelengthtab,
                                       bool plainformat,
                                       GtUword totallength,
                                       bool outssptab,
                                       bool no_esq_header,
                                       GtUword numofsequences,
                                       const Definedunsignedlong *equallength,
                                       GtAlphabet *alphabet,
                                       bool customalphabet,
                                       GtEncseqAccessType sat,
                                       GtUword *characterdistribution,
                                       GtUword *classstartpositions,
                                       char *maxchars,
                                       char *allchars,
                                       GtUword numofallchars,
                                       unsigned char *subsymbolmap,
                                       unsigned char maxsubalphasize,
                                       bool outoistab,
                                       const GtSpecialcharinfo *specialcharinfo,
                                       GtUword wildcardranges,
                                       GtUword minseqlength,
                                       GtUword maxseqlength,
                                       GtDustMasker *dust_masker,
                                       GtLogger *logger,
                                       GtError *err)
{
  GtEncseq *encseq = NULL;
  bool haserr = false;
  GtSequenceBuffer *fb = NULL;
  Gtssptaboutinfo *ssptaboutinfo = NULL;

  gt_error_check(err);
  if (!haserr) {
    GtUword lengthofdbfilenames
      = determinelengthofdbfilenames(filenametab);

    encseq = determineencseqkeyvalues(sat,
                                      totallength,
                                      numofsequences,
                                      gt_str_array_size(filenametab),
                                      lengthofdbfilenames,
                                      wildcardranges,
                                      specialcharinfo->realexceptionranges,
                                      minseqlength,
                                      maxseqlength,
                                      outoistab,
                                      no_esq_header,
                                      equallength,
                                      alphabet,
                                      customalphabet,
                                      logger);
    ALLASSIGNAPPENDFUNC(sat, encseq->satsep);
    encseq->getexceptionmapping =
      encodedseqfunctab[(int) sat].getexceptionmapping.function;
    encseq->mappedptr = NULL;
    encseq->ssptabmappedptr = NULL;
    encseq->headerptr.characterdistribution = characterdistribution;
    encseq->leastprobablecharacter =
      determineleastprobablecharacter(alphabet, characterdistribution);
    encseq->filenametab = (GtStrArray *) filenametab;
    encseq->headerptr.filelengthtab = (GtFilelengthvalues *) filelengthtab;
    encseq->specialcharinfo = *specialcharinfo;
    encseq->classstartpositions = classstartpositions;
    encseq->maxchars = maxchars;
    encseq->allchars = allchars;
    encseq->numofallchars = numofallchars;
    encseq->subsymbolmap = subsymbolmap;
    encseq->maxsubalphasize = maxsubalphasize;
    gt_assert(filenametab != NULL);
    if (plainformat) {
      fb = gt_sequence_buffer_plain_new(filenametab);
    }
    else {
      fb = gt_sequence_buffer_new_guess_type(filenametab, err);
    }
    if (!fb)
      haserr = true;
  }
  if (!haserr) {
    gt_assert(encseq != NULL);
    if (numofsequences > 1UL &&
        sat != GT_ACCESS_TYPE_EQUALLENGTH &&
        (outssptab || encseq->accesstype_via_utables)) {
      ssptaboutinfo = ssptaboutinfo_new(totallength,numofsequences,
                                        &encseq->ssptab);
      gt_assert (ssptaboutinfo != NULL);
      encseq->has_ssptab = true;
    }
    else {
      encseq->satsep = GT_ACCESS_TYPE_UNDEFINED;
    }
    if (encseq->has_exceptiontable) {
      unsigned int bitsforsubalpha
        = gt_determinebitspervalue((GtUword) encseq->maxsubalphasize-1);

      encseq->exceptions
        = bitpackarray_new(bitsforsubalpha,
                           (BitOffset) encseq->
                                       specialcharinfo.exceptioncharacters,
                           true);
    }
    gt_sequence_buffer_set_symbolmap(fb, gt_alphabet_symbolmap(alphabet));
    if (encodedseqfunctab[(int) sat].fillposition.function(encseq, dust_masker,
                                                           ssptaboutinfo,
                                                           fb, err) != 0)
      haserr = true;
    ssptaboutinfo_delete(ssptaboutinfo);
  }
#ifdef GT_RANGEDEBUG
  if (!haserr)
    showallSWtables(encseq);
#endif
  if (haserr && encseq != NULL) {
    gt_encseq_delete(encseq);
    encseq = NULL;
  }
  gt_sequence_buffer_delete(fb);
  return haserr ? NULL : encseq;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd8, %rsp
movl %r9d, 0x74(%rsp)
movq %rcx, %rax
movl 0x74(%rsp), %ecx
movq %rax, 0x78(%rsp)
movl %edx, %eax
movq %rsi, %r9
movq %rdi, %r10
movq 0x78(%rsp), %rdi
movb %cl, %dl
movb %r8b, %sil
movb %al, %r8b
movq 0x1a8(%rsp), %rax
movq 0x1a0(%rsp), %rax
movq 0x198(%rsp), %rax
movq 0x190(%rsp), %rax
movq 0x188(%rsp), %rax
movq 0x180(%rsp), %rax
movq 0x178(%rsp), %rax
movb 0x170(%rsp), %al
movb 0x168(%rsp), %cl
movq 0x160(%rsp), %rcx
movq 0x158(%rsp), %rcx
movq 0x150(%rsp), %rcx
movq 0x148(%rsp), %rcx
movq 0x140(%rsp), %rcx
movq 0x138(%rsp), %rcx
movl 0x130(%rsp), %ecx
movb 0x128(%rsp), %cl
movq 0x120(%rsp), %r11
movq 0x118(%rsp), %r11
movq 0x110(%rsp), %r11
movq %r10, 0xd0(%rsp)
movq %r9, 0xc8(%rsp)
andb $0x1, %r8b
movb %r8b, 0xc7(%rsp)
movq %rdi, 0xb8(%rsp)
andb $0x1, %sil
movb %sil, 0xb7(%rsp)
andb $0x1, %dl
movb %dl, 0xb6(%rsp)
andb $0x1, %cl
movb %cl, 0xb5(%rsp)
andb $0x1, %al
movb %al, 0xb4(%rsp)
movq $0x0, 0xa8(%rsp)
movb $0x0, 0xa7(%rsp)
movq $0x0, 0x98(%rsp)
movq $0x0, 0x90(%rsp)
cmpq $0x0, 0x1a8(%rsp)
je 0x135802
movq 0x1a8(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x1357ca
jmp 0x135802
movq 0x7e807(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x2888b(%rip), %rsi     # 0x15e066
leaq 0x28e66(%rip), %rdx     # 0x15e648
leaq 0x5490b(%rip), %rcx     # 0x18a0f4
leaq 0x4fe6e(%rip), %r8      # 0x18565e
movl $0x11d9, %r9d           # imm = 0x11D9
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x135804
testb $0x1, 0xa7(%rsp)
jne 0x135da5
movq 0xd0(%rsp), %rdi
callq 0x117b60
movq %rax, 0x88(%rsp)
movl 0x130(%rsp), %eax
movl %eax, 0x5c(%rsp)
movq 0xb8(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x110(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0xd0(%rsp), %rdi
callq 0x1b720
movl 0x5c(%rsp), %edi
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
movq %rax, %rcx
movq 0x88(%rsp), %r8
movq 0x180(%rsp), %r9
movq 0x178(%rsp), %rax
movq 0x68(%rax), %r13
movq 0x188(%rsp), %r12
movq 0x190(%rsp), %r15
movb 0xb4(%rsp), %r14b
movb 0xb6(%rsp), %bpl
movq 0x118(%rsp), %rbx
movq 0x120(%rsp), %r11
movb 0xb5(%rsp), %r10b
movq 0x1a0(%rsp), %rax
andb $0x1, %r14b
andb $0x1, %bpl
andb $0x1, %r10b
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movzbl %r14b, %r14d
movl %r14d, 0x18(%rsp)
movzbl %bpl, %ebp
movl %ebp, 0x20(%rsp)
movq %rbx, 0x28(%rsp)
movq %r11, 0x30(%rsp)
movzbl %r10b, %r10d
movl %r10d, 0x38(%rsp)
movq %rax, 0x40(%rsp)
callq 0x117270
movq %rax, 0xa8(%rsp)
movl 0x130(%rsp), %eax
cmpq $0x7, %rax
jb 0x13595b
movq 0x7e6ae(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x28732(%rip), %rsi     # 0x15e066
leaq 0x547cf(%rip), %rdx     # 0x18a10a
leaq 0x547b2(%rip), %rcx     # 0x18a0f4
leaq 0x4fd15(%rip), %r8      # 0x18565e
movl $0x11ed, %r9d           # imm = 0x11ED
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x13595d
movq 0xa8(%rsp), %rax
testb $0x1, 0x28(%rax)
je 0x1359bf
movslq 0x130(%rsp), %rcx
leaq 0x80156(%rip), %rax     # 0x1b5ad0
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq 0x28(%rax), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x110(%rax)
movslq 0x130(%rsp), %rcx
leaq 0x8012d(%rip), %rax     # 0x1b5ad0
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq 0x20(%rax), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x118(%rax)
jmp 0x135a11
movslq 0x130(%rsp), %rcx
leaq 0x80102(%rip), %rax     # 0x1b5ad0
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x110(%rax)
movslq 0x130(%rsp), %rcx
leaq 0x800d9(%rip), %rax     # 0x1b5ad0
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x118(%rax)
movslq 0x130(%rsp), %rcx
leaq 0x800b0(%rip), %rax     # 0x1b5ad0
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq 0x38(%rax), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x120(%rax)
movslq 0x130(%rsp), %rcx
leaq 0x80087(%rip), %rax     # 0x1b5ad0
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq 0x30(%rax), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x128(%rax)
movslq 0x130(%rsp), %rcx
leaq 0x8005e(%rip), %rax     # 0x1b5ad0
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq 0x48(%rax), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x140(%rax)
movslq 0x130(%rsp), %rcx
leaq 0x80035(%rip), %rax     # 0x1b5ad0
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x148(%rax)
movl 0x130(%rsp), %edi
callq 0x13e930
testb $0x1, %al
jne 0x135aca
jmp 0x135b5f
movq 0xa8(%rsp), %rax
movl 0x4(%rax), %eax
cmpq $0x7, %rax
jae 0x135b37
movq 0xa8(%rsp), %rax
movslq 0x4(%rax), %rcx
leaq 0x7ffe2(%rip), %rax     # 0x1b5ad0
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq 0x58(%rax), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x160(%rax)
movq 0xa8(%rsp), %rax
movslq 0x4(%rax), %rcx
leaq 0x7ffb5(%rip), %rax     # 0x1b5ad0
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq 0x50(%rax), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x168(%rax)
jmp 0x135b5d
movq 0xa8(%rsp), %rax
movq $0x0, 0x160(%rax)
movq 0xa8(%rsp), %rax
movq $0x0, 0x168(%rax)
jmp 0x135bb1
movslq 0x130(%rsp), %rcx
leaq 0x7ff62(%rip), %rax     # 0x1b5ad0
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq 0x58(%rax), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x160(%rax)
movslq 0x130(%rsp), %rcx
leaq 0x7ff39(%rip), %rax     # 0x1b5ad0
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq 0x50(%rax), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x168(%rax)
movslq 0x130(%rsp), %rcx
leaq 0x7ff10(%rip), %rax     # 0x1b5ad0
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq 0x68(%rax), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x150(%rax)
movq 0xa8(%rsp), %rax
movq $0x0, 0x10(%rax)
movq 0xa8(%rsp), %rax
movq $0x0, 0x18(%rax)
movq 0x138(%rsp), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0xf8(%rax)
movq 0x120(%rsp), %rdi
movq 0x138(%rsp), %rsi
callq 0x1372a0
movl %eax, %ecx
movq 0xa8(%rsp), %rax
movl %ecx, 0x170(%rax)
movq 0xd0(%rsp), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x1f8(%rax)
movq 0xc8(%rsp), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0xf0(%rax)
movq 0xa8(%rsp), %rdi
addq $0x178, %rdi            # imm = 0x178
movq 0x178(%rsp), %rsi
movl $0x70, %edx
callq 0xb500
movq 0x140(%rsp), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x338(%rax)
movq 0x148(%rsp), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x348(%rax)
movq 0x150(%rsp), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x350(%rax)
movq 0x158(%rsp), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x340(%rax)
movq 0x160(%rsp), %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x358(%rax)
movb 0x168(%rsp), %cl
movq 0xa8(%rsp), %rax
movb %cl, 0x360(%rax)
cmpq $0x0, 0xd0(%rsp)
jne 0x135d50
movq 0x7e2b9(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x2833d(%rip), %rsi     # 0x15e066
leaq 0x50d54(%rip), %rdx     # 0x186a84
leaq 0x543bd(%rip), %rcx     # 0x18a0f4
leaq 0x4f920(%rip), %r8      # 0x18565e
movl $0x11fe, %r9d           # imm = 0x11FE
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x135d52
testb $0x1, 0xc7(%rsp)
je 0x135d73
movq 0xd0(%rsp), %rdi
callq 0x14b300
movq %rax, 0x98(%rsp)
jmp 0x135d90
movq 0xd0(%rsp), %rdi
movq 0x1a8(%rsp), %rsi
callq 0x9b6a0
movq %rax, 0x98(%rsp)
cmpq $0x0, 0x98(%rsp)
jne 0x135da3
movb $0x1, 0xa7(%rsp)
jmp 0x135da5
testb $0x1, 0xa7(%rsp)
jne 0x135fa9
jmp 0x135db5
cmpq $0x0, 0xa8(%rsp)
jne 0x135df8
movq 0x7e211(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x28295(%rip), %rsi     # 0x15e066
leaq 0x4ffbc(%rip), %rdx     # 0x185d94
leaq 0x54315(%rip), %rcx     # 0x18a0f4
leaq 0x4f878(%rip), %r8      # 0x18565e
movl $0x1209, %r9d           # imm = 0x1209
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x135dfa
cmpq $0x1, 0x110(%rsp)
jbe 0x135eb1
cmpl $0x2, 0x130(%rsp)
je 0x135eb1
testb $0x1, 0xb7(%rsp)
jne 0x135e32
movq 0xa8(%rsp), %rax
testb $0x1, 0x3a9(%rax)
je 0x135eb1
movq 0xb8(%rsp), %rdi
movq 0x110(%rsp), %rsi
movq 0xa8(%rsp), %rdx
addq $0x240, %rdx            # imm = 0x240
callq 0x11b750
movq %rax, 0x90(%rsp)
cmpq $0x0, 0x90(%rsp)
jne 0x135ea1
movq 0x7e168(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x281ec(%rip), %rsi     # 0x15e066
leaq 0x51c34(%rip), %rdx     # 0x187ab5
leaq 0x5426c(%rip), %rcx     # 0x18a0f4
leaq 0x4f7cf(%rip), %r8      # 0x18565e
movl $0x120f, %r9d           # imm = 0x120F
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x135ea3
movq 0xa8(%rsp), %rax
movb $0x1, 0x2a(%rax)
jmp 0x135ec0
movq 0xa8(%rsp), %rax
movl $0x7, 0x4(%rax)
movq 0xa8(%rsp), %rax
testb $0x1, 0x2f0(%rax)
je 0x135f24
movq 0xa8(%rsp), %rax
movzbl 0x360(%rax), %eax
movl %eax, %edi
subq $0x1, %rdi
callq 0x8c6d0
movl %eax, 0x84(%rsp)
movl 0x84(%rsp), %edi
movq 0xa8(%rsp), %rax
movq 0x1d0(%rax), %rsi
movl $0x1, %edx
callq 0x12da90
movq %rax, %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x330(%rax)
movq 0x98(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x120(%rsp), %rdi
callq 0x109d50
movq 0x50(%rsp), %rdi
movq %rax, %rsi
callq 0x9ba60
movslq 0x130(%rsp), %rcx
leaq 0x7fb76(%rip), %rax     # 0x1b5ad0
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq 0xa8(%rsp), %rdi
movq 0x198(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq 0x98(%rsp), %rcx
movq 0x1a8(%rsp), %r8
callq *%rax
cmpl $0x0, %eax
je 0x135f9c
movb $0x1, 0xa7(%rsp)
movq 0x90(%rsp), %rdi
callq 0x11bbb0
testb $0x1, 0xa7(%rsp)
je 0x135fd7
cmpq $0x0, 0xa8(%rsp)
je 0x135fd7
movq 0xa8(%rsp), %rdi
callq 0x118250
movq $0x0, 0xa8(%rsp)
movq 0x98(%rsp), %rdi
callq 0x9b570
testb $0x1, 0xa7(%rsp)
je 0x135ff7
xorl %eax, %eax
movq %rax, 0x48(%rsp)
jmp 0x136004
movq 0xa8(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rax
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax,%rax)