// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x58, %rsp
movq %rdi, 0x48(%rsp)
movl %esi, 0x44(%rsp)
movq %rdx, 0x38(%rsp)
movb $0x0, 0x27(%rsp)
movl $0x30, %edi
leaq 0x29aa51(%rip), %rsi    # 0x58f9a4
movl $0x197, %edx            # imm = 0x197
callq 0xe80f0
movq %rax, 0x28(%rsp)
movq 0x48(%rsp), %rdi
movq 0x38(%rsp), %r9
leaq 0x29aabe(%rip), %rsi    # 0x58fa31
leaq 0x30(%rsp), %rdx
leaq 0x29aa25(%rip), %rcx    # 0x58f9a4
movl $0x19a, %r8d            # imm = 0x19A
callq 0xdb430
movq %rax, %rcx
movq 0x28(%rsp), %rax
movq %rcx, (%rax)
movq 0x28(%rsp), %rax
cmpq $0x0, (%rax)
jne 0x2f4fa5
movb $0x1, 0x27(%rsp)
testb $0x1, 0x27(%rsp)
jne 0x2f5166
jmp 0x2f4fb2
movq 0x28(%rsp), %rax
cmpq $0x0, (%rax)
jne 0x2f4ff5
movq 0x346fdc(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x221045(%rip), %rsi    # 0x516013
leaq 0x29aa72(%rip), %rdx    # 0x58fa47
leaq 0x29aa90(%rip), %rcx    # 0x58fa6c
leaq 0x29a9c1(%rip), %r8     # 0x58f9a4
movl $0x1a3, %r9d            # imm = 0x1A3
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2f4ff7
movq 0x28(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movl %eax, %ecx
movq 0x28(%rsp), %rax
movl %ecx, 0x8(%rax)
movl 0x44(%rsp), %edi
movq 0x28(%rsp), %rax
movl 0x8(%rax), %esi
callq 0xec720
movq %rax, %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x30(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rax
addq $0x1, %rax
addq $0x1, %rax
movq %rax, 0x10(%rsp)
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rax
addq $0x1, %rax
shrq $0x6, %rax
cmpq $0x0, %rax
jne 0x2f5075
movl $0x1, %eax
movq %rax, (%rsp)
jmp 0x2f5092
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rax
addq $0x1, %rax
subq $0x1, %rax
shrq $0x6, %rax
addq $0x1, %rax
movq %rax, (%rsp)
movq 0x8(%rsp), %rax
movq 0x10(%rsp), %rcx
movq (%rsp), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
cmpq %rcx, %rax
je 0x2f50e4
movq 0x346eed(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x220f56(%rip), %rsi    # 0x516013
leaq 0x29a9ba(%rip), %rdx    # 0x58fa7e
leaq 0x29a9a1(%rip), %rcx    # 0x58fa6c
leaq 0x29a8d2(%rip), %r8     # 0x58f9a4
movl $0x1ac, %r9d            # imm = 0x1AC
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2f50e6
movq 0x28(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x28(%rsp), %rax
movq 0x20(%rax), %rcx
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x28(%rsp), %rax
cmpl $0x0, 0x8(%rax)
jbe 0x2f5164
movq 0x28(%rsp), %rax
movl 0x8(%rax), %eax
andl $0x3, %eax
cmpl $0x0, %eax
jbe 0x2f5164
movq 0x28(%rsp), %rax
movl 0x8(%rax), %eax
andl $0x3, %eax
movl $0x4, %ecx
subl %eax, %ecx
shll %ecx
movl $0x1, %eax
shll %cl, %eax
subl $0x1, %eax
movb %al, %cl
movq 0x28(%rsp), %rax
movb %cl, 0x28(%rax)
jmp 0x2f5166
testb $0x1, 0x27(%rsp)
je 0x2f518e
movq 0x28(%rsp), %rdi
leaq 0x29a82b(%rip), %rsi    # 0x58f9a4
movl $0x1b9, %edx            # imm = 0x1B9
callq 0xe88c0
movq $0x0, 0x50(%rsp)
jmp 0x2f5198
movq 0x28(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rax
addq $0x58, %rsp
retq
nopw %cs:(%rax,%rax)