// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/encseq.c
// Function: gt_encseq_builder_add_cstr
void gt_encseq_builder_add_cstr(GtEncseqBuilder *eb, const char *str,
                                GtUword strlen, const char *desc)
{
  GtUword i, offset;
  gt_assert(eb && str);
  if (eb->plainseq && !eb->own) {
    GtUchar *theirseq = eb->plainseq;
    eb->plainseq = gt_malloc((size_t) eb->seqlen * sizeof (GtUchar));
    eb->allocated = (size_t) (eb->seqlen * sizeof (GtUchar));
    memcpy(eb->plainseq, theirseq, (size_t) eb->seqlen);
  }
  /* store separator position if needed */
  if (eb->wssptab && !eb->firstseq) {
    GT_STOREINARRAY(&eb->ssptab, GtUword, 128, eb->seqlen);
  }
  /* from the second sequence on, add a separator before adding symbols */
  if (!eb->firstseq) {
    eb->plainseq = gt_dynalloc(eb->plainseq, &eb->allocated,
                               (eb->seqlen + strlen+1) * sizeof (GtUchar));
    eb->plainseq[eb->seqlen] = (GtUchar) GT_SEPARATOR;
    offset = eb->seqlen+1;
    eb->seqlen += strlen+1;
  } else {
    eb->plainseq = gt_dynalloc(eb->plainseq, &eb->allocated,
                               strlen * sizeof (GtUchar));
    offset = 0;
    eb->seqlen = strlen;
    eb->firstseq = false;
  }
  /* append description to in-memory description table */
  if (eb->wdestab) {
    gt_assert(desc);
    gt_str_append_cstr(eb->destab, desc);
    gt_str_append_char(eb->destab, '\n');
    /* store description separator position */
    if (eb->wsdstab) {
      GT_STOREINARRAY(&eb->sdstab, GtUword, 128,
                      gt_str_length(eb->destab)-1);
    }
    eb->firstdesc = false;
  }
  /* copy sequence, encode on the fly */
  for (i=0;i < strlen; i++) {
    gt_assert(gt_alphabet_valid_input(eb->alpha, str[i]));
    eb->plainseq[offset+i] = gt_alphabet_encode(eb->alpha, str[i]);
  }
  eb->nof_seqs++;
  if (eb->minseqlen == GT_UNDEF_UWORD || strlen < eb->minseqlen)
    eb->minseqlen = strlen;
  if (eb->maxseqlen == GT_UNDEF_UWORD || strlen > eb->maxseqlen)
    eb->maxseqlen = strlen;
  eb->own = true;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
movq %rcx, 0x28(%rsp)
cmpq $0x0, 0x40(%rsp)
je 0x126558
cmpq $0x0, 0x38(%rsp)
jne 0x126590
movq 0x8da79(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x37afd(%rip), %rsi     # 0x15e066
leaq 0x6138b(%rip), %rdx     # 0x1878fb
leaq 0x6138e(%rip), %rcx     # 0x187905
leaq 0x5f0e0(%rip), %r8      # 0x18565e
movl $0x22e3, %r9d           # imm = 0x22E3
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x126592
movq 0x40(%rsp), %rax
cmpq $0x0, (%rax)
je 0x12660f
movq 0x40(%rsp), %rax
testb $0x1, 0x68(%rax)
jne 0x12660f
movq 0x40(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rdi
shlq $0x0, %rdi
leaq 0x5f095(%rip), %rsi     # 0x18565e
movl $0x22e6, %edx           # imm = 0x22E6
callq 0xd2e0
movq %rax, %rcx
movq 0x40(%rsp), %rax
movq %rcx, (%rax)
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rcx
shlq $0x0, %rcx
movq 0x40(%rsp), %rax
movq %rcx, 0x60(%rax)
movq 0x40(%rsp), %rax
movq (%rax), %rdi
movq 0x10(%rsp), %rsi
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rdx
callq 0xb500
movq 0x40(%rsp), %rax
testb $0x1, 0x6b(%rax)
je 0x126754
movq 0x40(%rsp), %rax
testb $0x1, 0x6e(%rax)
jne 0x126754
jmp 0x12662f
jmp 0x126631
movq 0x40(%rsp), %rax
movq 0x50(%rax), %rax
addq $0x0, %rax
movq 0x40(%rsp), %rcx
cmpq 0x48(%rcx), %rax
jb 0x1266de
movq $0x80, 0x8(%rsp)
xorl %eax, %eax
cmpq 0x8(%rsp), %rax
jbe 0x126697
movq 0x8d972(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x379f6(%rip), %rsi     # 0x15e066
leaq 0x4ac25(%rip), %rdx     # 0x17129c
leaq 0x61287(%rip), %rcx     # 0x187905
leaq 0x5efd9(%rip), %r8      # 0x18565e
movl $0x22ec, %r9d           # imm = 0x22EC
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x126699
movq 0x8(%rsp), %rcx
movq 0x40(%rsp), %rax
addq 0x48(%rax), %rcx
movq %rcx, 0x48(%rax)
movq 0x40(%rsp), %rax
movq 0x40(%rax), %rdi
movq 0x40(%rsp), %rax
movq 0x48(%rax), %rsi
shlq $0x3, %rsi
leaq 0x5ef96(%rip), %rdx     # 0x18565e
movl $0x22ec, %ecx           # imm = 0x22EC
callq 0xd730
movq %rax, %rcx
movq 0x40(%rsp), %rax
movq %rcx, 0x40(%rax)
jmp 0x1266e0
movq 0x40(%rsp), %rax
cmpq $0x0, 0x40(%rax)
jne 0x126724
movq 0x8d8e5(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x37969(%rip), %rsi     # 0x15e066
leaq 0x6121c(%rip), %rdx     # 0x187920
leaq 0x611fa(%rip), %rcx     # 0x187905
leaq 0x5ef4c(%rip), %r8      # 0x18565e
movl $0x22ec, %r9d           # imm = 0x22EC
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x126726
jmp 0x126728
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rdx
movq 0x40(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x40(%rsp), %rsi
movq 0x50(%rsi), %rcx
movq %rcx, %rdi
addq $0x1, %rdi
movq %rdi, 0x50(%rsi)
movq %rdx, (%rax,%rcx,8)
jmp 0x126754
movq 0x40(%rsp), %rax
testb $0x1, 0x6e(%rax)
jne 0x1267d5
movq 0x40(%rsp), %rax
movq (%rax), %rdi
movq 0x40(%rsp), %rsi
addq $0x60, %rsi
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rdx
addq 0x30(%rsp), %rdx
addq $0x1, %rdx
shlq $0x0, %rdx
callq 0x7f2b0
movq %rax, %rcx
movq 0x40(%rsp), %rax
movq %rcx, (%rax)
movq 0x40(%rsp), %rax
movq (%rax), %rax
movq 0x40(%rsp), %rcx
movq 0x8(%rcx), %rcx
movb $-0x1, (%rax,%rcx)
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
movq 0x30(%rsp), %rcx
addq $0x1, %rcx
movq 0x40(%rsp), %rax
addq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
jmp 0x12681f
movq 0x40(%rsp), %rax
movq (%rax), %rdi
movq 0x40(%rsp), %rsi
addq $0x60, %rsi
movq 0x30(%rsp), %rdx
shlq $0x0, %rdx
callq 0x7f2b0
movq %rax, %rcx
movq 0x40(%rsp), %rax
movq %rcx, (%rax)
movq $0x0, 0x18(%rsp)
movq 0x30(%rsp), %rcx
movq 0x40(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x40(%rsp), %rax
movb $0x0, 0x6e(%rax)
movq 0x40(%rsp), %rax
testb $0x1, 0x6a(%rax)
je 0x1269e0
jmp 0x126830
cmpq $0x0, 0x28(%rsp)
jne 0x126870
movq 0x8d799(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x3781d(%rip), %rsi     # 0x15e066
leaq 0x52726(%rip), %rdx     # 0x178f76
leaq 0x610ae(%rip), %rcx     # 0x187905
leaq 0x5ee00(%rip), %r8      # 0x18565e
movl $0x22fe, %r9d           # imm = 0x22FE
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x126872
movq 0x40(%rsp), %rax
movq 0x58(%rax), %rdi
movq 0x28(%rsp), %rsi
callq 0x18fb0
movq 0x40(%rsp), %rax
movq 0x58(%rax), %rdi
movl $0xa, %esi
callq 0x194d0
movq 0x40(%rsp), %rax
testb $0x1, 0x6c(%rax)
je 0x1269d7
jmp 0x1268a9
jmp 0x1268ab
movq 0x40(%rsp), %rax
movq 0x38(%rax), %rax
addq $0x0, %rax
movq 0x40(%rsp), %rcx
cmpq 0x30(%rcx), %rax
jb 0x126955
movq $0x80, (%rsp)
xorl %eax, %eax
cmpq (%rsp), %rax
jbe 0x12690f
movq 0x8d6fa(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x3777e(%rip), %rsi     # 0x15e066
leaq 0x4a9ad(%rip), %rdx     # 0x17129c
leaq 0x6100f(%rip), %rcx     # 0x187905
leaq 0x5ed61(%rip), %r8      # 0x18565e
movl $0x2304, %r9d           # imm = 0x2304
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x126911
movq (%rsp), %rcx
movq 0x40(%rsp), %rax
addq 0x30(%rax), %rcx
movq %rcx, 0x30(%rax)
movq 0x40(%rsp), %rax
movq 0x28(%rax), %rdi
movq 0x40(%rsp), %rax
movq 0x30(%rax), %rsi
shlq $0x3, %rsi
leaq 0x5ed1f(%rip), %rdx     # 0x18565e
movl $0x2304, %ecx           # imm = 0x2304
callq 0xd730
movq %rax, %rcx
movq 0x40(%rsp), %rax
movq %rcx, 0x28(%rax)
jmp 0x126957
movq 0x40(%rsp), %rax
cmpq $0x0, 0x28(%rax)
jne 0x12699b
movq 0x8d66e(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x376f2(%rip), %rsi     # 0x15e066
leaq 0x60fc9(%rip), %rdx     # 0x187944
leaq 0x60f83(%rip), %rcx     # 0x187905
leaq 0x5ecd5(%rip), %r8      # 0x18565e
movl $0x2304, %r9d           # imm = 0x2304
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x12699d
jmp 0x12699f
movq 0x40(%rsp), %rax
movq 0x58(%rax), %rdi
callq 0x19a00
movq %rax, %rdx
subq $0x1, %rdx
movq 0x40(%rsp), %rax
movq 0x28(%rax), %rax
movq 0x40(%rsp), %rsi
movq 0x38(%rsi), %rcx
movq %rcx, %rdi
addq $0x1, %rdi
movq %rdi, 0x38(%rsi)
movq %rdx, (%rax,%rcx,8)
jmp 0x1269d7
movq 0x40(%rsp), %rax
movb $0x0, 0x6d(%rax)
movq $0x0, 0x20(%rsp)
movq 0x20(%rsp), %rax
cmpq 0x30(%rsp), %rax
jae 0x126a9b
jmp 0x1269fb
movq 0x40(%rsp), %rax
movq 0x70(%rax), %rdi
movq 0x38(%rsp), %rax
movq 0x20(%rsp), %rcx
movsbl (%rax,%rcx), %esi
callq 0x10ab90
testb $0x1, %al
jne 0x126a53
movq 0x8d5b6(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x3763a(%rip), %rsi     # 0x15e066
leaq 0x60f35(%rip), %rdx     # 0x187968
leaq 0x60ecb(%rip), %rcx     # 0x187905
leaq 0x5ec1d(%rip), %r8      # 0x18565e
movl $0x230a, %r9d           # imm = 0x230A
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x126a55
movq 0x40(%rsp), %rax
movq 0x70(%rax), %rdi
movq 0x38(%rsp), %rax
movq 0x20(%rsp), %rcx
movsbl (%rax,%rcx), %esi
callq 0x10abd0
movb %al, %dl
movq 0x40(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rsp), %rcx
addq 0x20(%rsp), %rcx
movb %dl, (%rax,%rcx)
movq 0x20(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x20(%rsp)
jmp 0x1269e9
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x10(%rax)
movq 0x40(%rsp), %rax
cmpq $-0x1, 0x18(%rax)
je 0x126ac8
movq 0x30(%rsp), %rax
movq 0x40(%rsp), %rcx
cmpq 0x18(%rcx), %rax
jae 0x126ad6
movq 0x30(%rsp), %rcx
movq 0x40(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x40(%rsp), %rax
cmpq $-0x1, 0x20(%rax)
je 0x126af2
movq 0x30(%rsp), %rax
movq 0x40(%rsp), %rcx
cmpq 0x20(%rcx), %rax
jbe 0x126b00
movq 0x30(%rsp), %rcx
movq 0x40(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x40(%rsp), %rax
movb $0x1, 0x68(%rax)
addq $0x48, %rsp
retq
nop