// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/bare-encseq.c
// Function: gt_bare_encseq_new
GtBareEncseq *gt_bare_encseq_new(GtUchar *sequence,GtUword len,
                                 GtUword numofchars)
{
  GtBareEncseq *bare_encseq = gt_malloc(sizeof *bare_encseq);
  const GtUchar *readptr;
  GtBareSpecialrange *srptr = NULL;
  GtUword lastspecialrange_length = 0;

  bare_encseq->specialcharacters = 0;
  bare_encseq->numofchars = numofchars;
  bare_encseq->charcount = gt_calloc((size_t) bare_encseq->numofchars,
                                     sizeof *bare_encseq->charcount);
  GT_INITARRAY(&bare_encseq->specialranges,GtBareSpecialrange);
  for (readptr = sequence; readptr < sequence + len; readptr++)
  {
    GtUchar cc = *readptr;
    if (GT_ISSPECIAL(cc))
    {
      if (lastspecialrange_length == 0)
      {
        GT_GETNEXTFREEINARRAY(srptr,&bare_encseq->specialranges,
                              GtBareSpecialrange,128UL);
        srptr->start = (GtUword) (readptr - sequence);
      }
      lastspecialrange_length++;
      bare_encseq->specialcharacters++;
    } else
    {
      gt_assert((GtUword) cc < bare_encseq->numofchars);
      bare_encseq->charcount[(int) cc]++;
      if (lastspecialrange_length > 0)
      {
        gt_assert(srptr != NULL);
        srptr->length = lastspecialrange_length;
      }
      lastspecialrange_length = 0;
    }
  }
  if (lastspecialrange_length > 0)
  {
    gt_assert(srptr != NULL);
    srptr->length = lastspecialrange_length;
  }
  bare_encseq->sequence = sequence;
  bare_encseq->totallength = len;
  return bare_encseq;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
movl $0x40, %edi
leaq 0x36e61c(%rip), %rsi    # 0x570c0b
movl $0x39, %edx
callq 0xe80f0
movq %rax, 0x28(%rsp)
movq $0x0, 0x18(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x28(%rsp), %rax
movq $0x0, 0x10(%rax)
movq 0x30(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x28(%rsp), %rax
movq 0x18(%rax), %rdi
movl $0x8, %esi
leaq 0x36e5cb(%rip), %rdx    # 0x570c0b
movl $0x41, %ecx
callq 0xe83c0
movq %rax, %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x28(%rsp), %rax
movq $0x0, 0x28(%rax)
movq 0x28(%rsp), %rax
movq $0x0, 0x38(%rax)
movq 0x28(%rsp), %rax
movq $0x0, 0x30(%rax)
movq 0x40(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq 0x40(%rsp), %rcx
addq 0x38(%rsp), %rcx
cmpq %rcx, %rax
jae 0x202901
movq 0x20(%rsp), %rax
movb (%rax), %al
movb %al, 0xf(%rsp)
movzbl 0xf(%rsp), %eax
cmpl $0xfe, %eax
jl 0x202820
cmpq $0x0, 0x10(%rsp)
jne 0x2027fc
jmp 0x2026c8
jmp 0x2026ca
movq 0x28(%rsp), %rax
movq 0x38(%rax), %rax
addq $0x0, %rax
movq 0x28(%rsp), %rcx
cmpq 0x30(%rcx), %rax
jb 0x202774
movq $0x80, (%rsp)
xorl %eax, %eax
cmpq (%rsp), %rax
jbe 0x20272e
movq 0x4398a3(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x31390c(%rip), %rsi    # 0x516013
leaq 0x316a99(%rip), %rdx    # 0x5191a7
leaq 0x36e50e(%rip), %rcx    # 0x570c23
leaq 0x36e4ef(%rip), %r8     # 0x570c0b
movl $0x4b, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x202730
movq (%rsp), %rcx
movq 0x28(%rsp), %rax
addq 0x30(%rax), %rcx
movq %rcx, 0x30(%rax)
movq 0x28(%rsp), %rax
movq 0x28(%rax), %rdi
movq 0x28(%rsp), %rax
movq 0x30(%rax), %rsi
shlq $0x4, %rsi
leaq 0x36e4ad(%rip), %rdx    # 0x570c0b
movl $0x4b, %ecx
callq 0xe8540
movq %rax, %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x28(%rax)
jmp 0x202776
movq 0x28(%rsp), %rax
cmpq $0x0, 0x28(%rax)
jne 0x2027ba
movq 0x439817(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x313880(%rip), %rsi    # 0x516013
leaq 0x36e49c(%rip), %rdx    # 0x570c36
leaq 0x36e482(%rip), %rcx    # 0x570c23
leaq 0x36e463(%rip), %r8     # 0x570c0b
movl $0x4b, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2027bc
jmp 0x2027be
movq 0x28(%rsp), %rax
movq 0x28(%rax), %rax
movq 0x28(%rsp), %rdx
movq 0x38(%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, 0x38(%rdx)
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rcx
movq 0x40(%rsp), %rax
subq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, (%rax)
movq 0x10(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x10(%rsp)
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x10(%rax)
jmp 0x2028ec
jmp 0x202822
movzbl 0xf(%rsp), %eax
movq 0x28(%rsp), %rcx
cmpq 0x18(%rcx), %rax
jb 0x20286a
movq 0x439767(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3137d0(%rip), %rsi    # 0x516013
leaq 0x36e42b(%rip), %rdx    # 0x570c75
leaq 0x36e3d2(%rip), %rcx    # 0x570c23
leaq 0x36e3b3(%rip), %r8     # 0x570c0b
movl $0x52, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x20286c
movq 0x28(%rsp), %rax
movq 0x20(%rax), %rax
movzbl 0xf(%rsp), %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdx
addq $0x1, %rdx
movq %rdx, (%rax,%rcx,8)
cmpq $0x0, 0x10(%rsp)
jbe 0x2028e3
jmp 0x202893
cmpq $0x0, 0x18(%rsp)
jne 0x2028d3
movq 0x4396fe(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x313767(%rip), %rsi    # 0x516013
leaq 0x36e3e9(%rip), %rdx    # 0x570c9c
leaq 0x36e369(%rip), %rcx    # 0x570c23
leaq 0x36e34a(%rip), %r8     # 0x570c0b
movl $0x56, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2028d5
movq 0x10(%rsp), %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x8(%rax)
movq $0x0, 0x10(%rsp)
jmp 0x2028ee
movq 0x20(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x20(%rsp)
jmp 0x202687
cmpq $0x0, 0x10(%rsp)
jbe 0x20295b
jmp 0x20290b
cmpq $0x0, 0x18(%rsp)
jne 0x20294b
movq 0x439686(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3136ef(%rip), %rsi    # 0x516013
leaq 0x36e371(%rip), %rdx    # 0x570c9c
leaq 0x36e2f1(%rip), %rcx    # 0x570c23
leaq 0x36e2d2(%rip), %r8     # 0x570c0b
movl $0x5e, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x20294d
movq 0x10(%rsp), %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x40(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, (%rax)
movq 0x38(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x28(%rsp), %rax
addq $0x48, %rsp
retq