// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/match/tyr-mersplit.c
// Function: gt_tyrbckinfo_new
Tyrbckinfo *gt_tyrbckinfo_new(const char *tyrindexname,unsigned int alphasize,
                              GtError *err)
{
  size_t numofbytes;
  Tyrbckinfo *tyrbckinfo;
  bool haserr = false;

  tyrbckinfo = gt_malloc(sizeof *tyrbckinfo);
  tyrbckinfo->mappedmbdfileptr = gt_fa_mmap_read_with_suffix(tyrindexname,
                                                          BUCKETSUFFIX,
                                                          &numofbytes,err);
  if (tyrbckinfo->mappedmbdfileptr == NULL)
  {
    haserr = true;
  }
  if (!haserr)
  {
    GtUword pl_long;

    gt_assert(tyrbckinfo->mappedmbdfileptr != NULL);
    pl_long = *((GtUword *) tyrbckinfo->mappedmbdfileptr);
    tyrbckinfo->prefixlength = (unsigned int) pl_long;
    tyrbckinfo->numofcodes
      = gt_power_for_small_exponents(alphasize,tyrbckinfo->prefixlength);
    /*check if numofbytes == expected size*/
    gt_assert(numofbytes == sizeof (GtUword) *
                            (1UL +
                             (tyrbckinfo->numofcodes+1) +
                             GT_NUMOFINTSFORBITS(tyrbckinfo->numofcodes + 1)));
    tyrbckinfo->bounds = ((GtUword *) tyrbckinfo->mappedmbdfileptr) + 1;
    tyrbckinfo->boundisdefined
      = tyrbckinfo->bounds + tyrbckinfo->numofcodes + 1;
    if (tyrbckinfo->prefixlength > 0 && GT_MOD4(tyrbckinfo->prefixlength) > 0)
    {
      tyrbckinfo->remainmask
        = (GtUchar) MAXUCHARVALUEWITHBITS(GT_MULT2(
                                       4U - GT_MOD4(tyrbckinfo->prefixlength)));
    }
  }
  if (haserr)
  {
    gt_free(tyrbckinfo);
    return NULL;
  }
  return tyrbckinfo;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdx, %r14
movl %esi, %ebp
movq %rdi, %r15
leaq 0x1a70c7(%rip), %r12    # 0x35ccd8
pushq $0x30
popq %rdi
movq %r12, %rsi
movl $0x197, %edx            # imm = 0x197
callq 0x93160
movq %rax, %rbx
leaq 0x1a713a(%rip), %rsi    # 0x35cd65
leaq 0x8(%rsp), %rdx
movq %r15, %rdi
movq %r12, %rcx
movl $0x19a, %r8d            # imm = 0x19A
movq %r14, %r9
callq 0x8bb39
movq %rax, (%rbx)
testq %rax, %rax
je 0x1b5cbc
movl (%rax), %esi
movl %esi, 0x8(%rbx)
movl %ebp, %edi
callq 0x95871
movq %rax, 0x10(%rbx)
leaq 0x1(%rax), %rcx
movq %rax, %rdx
shrq $0x6, %rdx
incq %rdx
cmpq $0x40, %rcx
pushq $0x1
popq %rcx
cmovaeq %rdx, %rcx
addq %rax, %rcx
leaq 0x10(,%rcx,8), %rcx
cmpq %rcx, 0x8(%rsp)
jne 0x1b5ce2
movq (%rbx), %rcx
leaq 0x8(%rcx), %rdx
movq %rdx, 0x20(%rbx)
leaq (%rcx,%rax,8), %rax
addq $0x10, %rax
movq %rax, 0x18(%rbx)
movl 0x8(%rbx), %eax
testl %eax, %eax
je 0x1b5cd2
andl $0x3, %eax
je 0x1b5cd2
addl %eax, %eax
movb $0x8, %cl
subb %al, %cl
pushq $-0x1
popq %rax
shll %cl, %eax
notb %al
movb %al, 0x28(%rbx)
jmp 0x1b5cd2
leaq 0x1a7015(%rip), %rsi    # 0x35ccd8
movq %rbx, %rdi
movl $0x1b9, %edx            # imm = 0x1B9
callq 0x936f9
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0x28227f(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x12f320(%rip), %rsi    # 0x2e5013
leaq 0x1a7093(%rip), %rdx    # 0x35cd8d
leaq 0x1a707a(%rip), %rcx    # 0x35cd7b
leaq 0x1a6fd0(%rip), %r8     # 0x35ccd8
movl $0x1ac, %r9d            # imm = 0x1AC
xorl %eax, %eax
callq 0x17a50
callq 0x17390