// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/encseq.c
// Function: gt_encseq_description
const char* gt_encseq_description(const GtEncseq *encseq,
                                  GtUword *desclen,
                                  GtUword seqnum)
{
  GtUword destablen;

  gt_assert(encseq != NULL && encseq->destab != NULL);
  if (encseq->destab[encseq->destablength - 1] == '\n') {
    destablen = encseq->destablength;
  } else {
    /* XXX: hard-coded! final two ulongs are max desc length and
       terminator constant */
    destablen = encseq->destablength - (2 * sizeof (GtUword));
  }
  if (seqnum >= encseq->numofdbsequences) {
      seqnum = encseq->logicalnumofdbsequences - 1 - seqnum;
  }
  if (seqnum > 0) {
    GtUword nextend;
    gt_assert(seqnum < encseq->numofdbsequences);
    if (seqnum < encseq->numofdbsequences - 1)
      nextend = encseq->sdstab[seqnum];
    else
      nextend = destablen - 1;
    gt_assert(encseq->sdstab[seqnum-1] < nextend);
    *desclen = nextend - encseq->sdstab[seqnum-1] - 1;
    return encseq->destab + encseq->sdstab[seqnum-1] + 1;
  }
  gt_assert(seqnum == 0);
  if (encseq->numofdbsequences > 1UL) {
    gt_assert(encseq->sdstab != NULL);
    *desclen = encseq->sdstab[0];
  }
  else {
    *desclen = destablen - 1;
  }
  return encseq->destab;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x28(%rsp)
movq %rsi, 0x20(%rsp)
movq %rdx, 0x18(%rsp)
cmpq $0x0, 0x28(%rsp)
je 0x11bd4a
movq 0x28(%rsp), %rax
cmpq $0x0, 0x200(%rax)
jne 0x11bd82
movq 0x98287(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x4230b(%rip), %rsi     # 0x15e066
leaq 0x6a4bf(%rip), %rdx     # 0x186221
leaq 0x6a4e1(%rip), %rcx     # 0x18624a
leaq 0x698ee(%rip), %r8      # 0x18565e
movl $0x12df, %r9d           # imm = 0x12DF
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x11bd84
movq 0x28(%rsp), %rax
movq 0x200(%rax), %rax
movq 0x28(%rsp), %rcx
movq 0x210(%rcx), %rcx
subq $0x1, %rcx
movsbl (%rax,%rcx), %eax
cmpl $0xa, %eax
jne 0x11bdbc
movq 0x28(%rsp), %rax
movq 0x210(%rax), %rax
movq %rax, 0x10(%rsp)
jmp 0x11bdd1
movq 0x28(%rsp), %rax
movq 0x210(%rax), %rax
subq $0x10, %rax
movq %rax, 0x10(%rsp)
movq 0x18(%rsp), %rax
movq 0x28(%rsp), %rcx
cmpq 0x40(%rcx), %rax
jb 0x11bdf8
movq 0x28(%rsp), %rax
movq 0x48(%rax), %rax
subq $0x1, %rax
subq 0x18(%rsp), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, 0x18(%rsp)
jbe 0x11bf4a
jmp 0x11be06
movq 0x18(%rsp), %rax
movq 0x28(%rsp), %rcx
cmpq 0x40(%rcx), %rax
jb 0x11be4e
movq 0x981bb(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x4223f(%rip), %rsi     # 0x15e066
leaq 0x6a269(%rip), %rdx     # 0x186097
leaq 0x6a415(%rip), %rcx     # 0x18624a
leaq 0x69822(%rip), %r8      # 0x18565e
movl $0x12ec, %r9d           # imm = 0x12EC
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x11be50
movq 0x18(%rsp), %rax
movq 0x28(%rsp), %rcx
movq 0x40(%rcx), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x11be83
movq 0x28(%rsp), %rax
movq 0x218(%rax), %rax
movq 0x18(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x8(%rsp)
jmp 0x11be91
movq 0x10(%rsp), %rax
subq $0x1, %rax
movq %rax, 0x8(%rsp)
jmp 0x11be93
movq 0x28(%rsp), %rax
movq 0x218(%rax), %rax
movq 0x18(%rsp), %rcx
subq $0x1, %rcx
movq (%rax,%rcx,8), %rax
cmpq 0x8(%rsp), %rax
jb 0x11beeb
movq 0x9811e(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x421a2(%rip), %rsi     # 0x15e066
leaq 0x6a395(%rip), %rdx     # 0x186260
leaq 0x6a378(%rip), %rcx     # 0x18624a
leaq 0x69785(%rip), %r8      # 0x18565e
movl $0x12f1, %r9d           # imm = 0x12F1
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x11beed
movq 0x8(%rsp), %rcx
movq 0x28(%rsp), %rax
movq 0x218(%rax), %rax
movq 0x18(%rsp), %rdx
subq $0x1, %rdx
subq (%rax,%rdx,8), %rcx
subq $0x1, %rcx
movq 0x20(%rsp), %rax
movq %rcx, (%rax)
movq 0x28(%rsp), %rax
movq 0x200(%rax), %rax
movq 0x28(%rsp), %rcx
movq 0x218(%rcx), %rcx
movq 0x18(%rsp), %rdx
subq $0x1, %rdx
addq (%rcx,%rdx,8), %rax
addq $0x1, %rax
movq %rax, 0x30(%rsp)
jmp 0x11c020
jmp 0x11bf4c
cmpq $0x0, 0x18(%rsp)
je 0x11bf8c
movq 0x9807d(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x42101(%rip), %rsi     # 0x15e066
leaq 0x6a14d(%rip), %rdx     # 0x1860b9
leaq 0x6a2d7(%rip), %rcx     # 0x18624a
leaq 0x696e4(%rip), %r8      # 0x18565e
movl $0x12f5, %r9d           # imm = 0x12F5
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x11bf8e
movq 0x28(%rsp), %rax
cmpq $0x1, 0x40(%rax)
jbe 0x11bffe
jmp 0x11bf9c
movq 0x28(%rsp), %rax
cmpq $0x0, 0x218(%rax)
jne 0x11bfe3
movq 0x98026(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x420aa(%rip), %rsi     # 0x15e066
leaq 0x6a2c0(%rip), %rdx     # 0x186283
leaq 0x6a280(%rip), %rcx     # 0x18624a
leaq 0x6968d(%rip), %r8      # 0x18565e
movl $0x12f7, %r9d           # imm = 0x12F7
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x11bfe5
movq 0x28(%rsp), %rax
movq 0x218(%rax), %rax
movq (%rax), %rcx
movq 0x20(%rsp), %rax
movq %rcx, (%rax)
jmp 0x11c00f
movq 0x10(%rsp), %rcx
subq $0x1, %rcx
movq 0x20(%rsp), %rax
movq %rcx, (%rax)
movq 0x28(%rsp), %rax
movq 0x200(%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
addq $0x38, %rsp
retq
nopw (%rax,%rax)