// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/bcktab.c
// Function: gt_bcktab_new_withinit
static GtBcktab *gt_bcktab_new_withinit(unsigned int numofchars,
                                        unsigned int prefixlength,
                                        GtUword maxvalue,
                                        bool withspecialsuffixes)
{
  GtBcktab *bcktab;
  uint64_t sizeofrep_uint64_t;

  bcktab = gt_malloc(sizeof *bcktab);
  bcktab->mappedptr = NULL;
  bcktab->mappedleftborder = NULL;
  bcktab->leftborder.ulongbounds = NULL;
  bcktab->leftborder.uintbounds = NULL;
  bcktab->mappedcountspecialcodes = NULL;
  bcktab->ulongcountspecialcodes = NULL;
  bcktab->uintcountspecialcodes = NULL;
  bcktab->ulongdistpfxidx = NULL;
  bcktab->uintdistpfxidx = NULL;
  bcktab->prefixlength = prefixlength;
  bcktab->withspecialsuffixes = withspecialsuffixes;
  bcktab->basepower = gt_initbasepower(numofchars,prefixlength);
  bcktab->numofchars = numofchars;
  bcktab->numofdistpfxidxcounters
    = gt_bcktab_numofdistpfxidxcounters(bcktab->basepower,prefixlength);
  bcktab->filltable = gt_initfilltable(numofchars,prefixlength);
  bcktab->numofallcodes = bcktab->basepower[prefixlength];
  bcktab->numofspecialcodes = bcktab->basepower[prefixlength-1];
  bcktab->multimappower = gt_initmultimappower(numofchars,prefixlength);
  bcktab->pagesize = gt_pagesize();
  bcktab->useulong = gt_bcktab_useulong(maxvalue);
  gt_assert(bcktab->pagesize % sizeof (GtUword) == 0);
  bcktab->allocated = false;
  bcktab->qgrambuffer = gt_malloc(sizeof (*bcktab->qgrambuffer) * prefixlength);
  sizeofrep_uint64_t = gt_bcktab_sizeoftable_generic(
                                          prefixlength,
                                          bcktab->numofallcodes,
                                          bcktab->numofspecialcodes,
                                          bcktab->useulong,
                                          bcktab->basepower,
                                          true,
                                          withspecialsuffixes);
  bcktab->sizeofrep = CALLCASTFUNC(uint64_t,unsigned_long,sizeofrep_uint64_t);
  return bcktab;
}

// Assembly:
subq $0x38, %rsp
movb %cl, %al
movl %edi, 0x34(%rsp)
movl %esi, 0x30(%rsp)
movq %rdx, 0x28(%rsp)
andb $0x1, %al
movb %al, 0x27(%rsp)
movl $0xc0, %edi
leaq 0x36cd1d(%rip), %rsi    # 0x570e12
movl $0x196, %edx            # imm = 0x196
callq 0xe80f0
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq $0x0, 0xa8(%rax)
movq 0x18(%rsp), %rax
movq $0x0, 0xb0(%rax)
movq 0x18(%rsp), %rax
movq $0x0, 0x8(%rax)
movq 0x18(%rsp), %rax
movq $0x0, (%rax)
movq 0x18(%rsp), %rax
movq $0x0, 0xb8(%rax)
movq 0x18(%rsp), %rax
movq $0x0, 0x20(%rax)
movq 0x18(%rsp), %rax
movq $0x0, 0x10(%rax)
movq 0x18(%rsp), %rax
movq $0x0, 0x28(%rax)
movq 0x18(%rsp), %rax
movq $0x0, 0x18(%rax)
movl 0x30(%rsp), %ecx
movq 0x18(%rsp), %rax
movl %ecx, 0x48(%rax)
movb 0x27(%rsp), %cl
movq 0x18(%rsp), %rax
andb $0x1, %cl
movb %cl, 0xa1(%rax)
movl 0x34(%rsp), %edi
movl 0x30(%rsp), %esi
callq 0x25d6c0
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x70(%rax)
movl 0x34(%rsp), %ecx
movq 0x18(%rsp), %rax
movl %ecx, 0x4c(%rax)
movq 0x18(%rsp), %rax
movq 0x70(%rax), %rdi
movl 0x30(%rsp), %esi
callq 0x206aa0
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x40(%rax)
movl 0x34(%rsp), %edi
movl 0x30(%rsp), %esi
callq 0x25d8b0
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x78(%rax)
movq 0x18(%rsp), %rax
movq 0x70(%rax), %rax
movl 0x30(%rsp), %ecx
movq (%rax,%rcx,8), %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x58(%rax)
movq 0x18(%rsp), %rax
movq 0x70(%rax), %rax
movl 0x30(%rsp), %ecx
subl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x60(%rax)
movl 0x34(%rsp), %edi
movl 0x30(%rsp), %esi
callq 0x25d960
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x68(%rax)
callq 0xa2640
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x38(%rax)
movq 0x28(%rsp), %rdi
callq 0x203d80
movb %al, %cl
movq 0x18(%rsp), %rax
andb $0x1, %cl
movb %cl, 0xa2(%rax)
movq 0x18(%rsp), %rax
movq 0x38(%rax), %rax
andq $0x7, %rax
cmpq $0x0, %rax
je 0x2042c3
movq 0x437d0e(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x311d77(%rip), %rsi    # 0x516013
leaq 0x36cfdd(%rip), %rdx    # 0x571280
leaq 0x36cfff(%rip), %rcx    # 0x5712a9
leaq 0x36cb61(%rip), %r8     # 0x570e12
movl $0x1ac, %r9d            # imm = 0x1AC
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2042c5
movq 0x18(%rsp), %rax
movb $0x0, 0xa0(%rax)
movl 0x30(%rsp), %eax
movl %eax, %edi
shlq $0x0, %rdi
leaq 0x36cb30(%rip), %rsi    # 0x570e12
movl $0x1ae, %edx            # imm = 0x1AE
callq 0xe80f0
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x80(%rax)
movl 0x30(%rsp), %edi
movq 0x18(%rsp), %rax
movq 0x58(%rax), %rsi
movq 0x18(%rsp), %rax
movq 0x60(%rax), %rdx
movq 0x18(%rsp), %rax
movb 0xa2(%rax), %cl
movq 0x18(%rsp), %rax
movq 0x70(%rax), %r8
movb 0x27(%rsp), %al
movl $0x1, %r9d
andb $0x1, %cl
andb $0x1, %al
movzbl %cl, %ecx
movzbl %al, %eax
movl %eax, (%rsp)
callq 0x203c90
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdx
leaq 0x36cabf(%rip), %rdi    # 0x570e12
movl $0x1b7, %esi            # imm = 0x1B7
callq 0x206b10
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x18(%rsp), %rax
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)