// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/rdj-contfind-bottomup.c
// Function: gt_contfind_bottomup
GtUword gt_contfind_bottomup(Sequentialsuffixarrayreader *ssar,
                     bool show_progressbar, GtBitsequence *contained,
                     GtUword firstrevcompl,
                     GtUword read_length /* 0 = variable */)
{
  ContfindBUstate state;
  GtUword totallength;
  GT_UNUSED int retval;

  gt_assert(ssar != NULL);
  gt_assert(contained != NULL);

  state.contained = contained;
  state.encseq = gt_encseqSequentialsuffixarrayreader(ssar);
  totallength = gt_encseq_total_length(state.encseq);
  state.nofsequences = gt_encseq_num_of_sequences(state.encseq);

  if (read_length == 0)
  {
    prepare_sspbittab_and_shortest(totallength, &state);
  }
  else
  {
    state.shortest = read_length;
    state.spacing = read_length + 1;
  }

  state.show_progressbar = show_progressbar;
  state.csize            = 0;
  state.cmin             = 0;
  state.firstrevcompl    = firstrevcompl;
  state.counter          = 0;

  if (show_progressbar)
  {
    state.progress = 0;
    gt_progressbar_start(&(state.progress),
        (GtUint64)totallength);
  }

  retval = (read_length == 0)
      ? gt_esa_bottomup_rdjcv(ssar, &state, NULL)
      : gt_esa_bottomup_rdjce(ssar, &state, NULL);
  gt_assert(retval == 0);

  if (show_progressbar)
    gt_progressbar_stop();
  if (read_length == 0)
    gt_free(state.sspbittab);
  return state.counter;
}

// Assembly:
subq $0x98, %rsp
movb %sil, %al
movq %rdi, 0x90(%rsp)
andb $0x1, %al
movb %al, 0x8f(%rsp)
movq %rdx, 0x80(%rsp)
movq %rcx, 0x78(%rsp)
movq %r8, 0x70(%rsp)
cmpq $0x0, 0x90(%rsp)
jne 0x276590
movq 0x3c5a41(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x29faaa(%rip), %rsi    # 0x516013
leaq 0x2b46eb(%rip), %rdx    # 0x52ac5b
leaq 0x3093fe(%rip), %rcx    # 0x57f975
leaq 0x30940c(%rip), %r8     # 0x57f98a
movl $0xd2, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x276592
jmp 0x276594
cmpq $0x0, 0x80(%rsp)
jne 0x2765d7
movq 0x3c59fa(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x29fa63(%rip), %rsi    # 0x516013
leaq 0x3093f5(%rip), %rdx    # 0x57f9ac
leaq 0x3093b7(%rip), %rcx    # 0x57f975
leaq 0x3093c5(%rip), %r8     # 0x57f98a
movl $0xd3, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2765d9
movq 0x80(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x90(%rsp), %rdi
callq 0x23bd50
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rdi
callq 0xa9d00
movq %rax, 0x8(%rsp)
movq 0x20(%rsp), %rdi
callq 0xa9d50
movq %rax, 0x60(%rsp)
cmpq $0x0, 0x70(%rsp)
jne 0x27662f
movq 0x8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x276760
jmp 0x276647
movq 0x70(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x70(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
movb 0x8f(%rsp), %al
andb $0x1, %al
movb %al, 0x48(%rsp)
movq $0x0, 0x40(%rsp)
movq $0x0, 0x38(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x58(%rsp)
movq $0x0, 0x68(%rsp)
testb $0x1, 0x8f(%rsp)
je 0x27669f
movq $0x0, 0x50(%rsp)
leaq 0x10(%rsp), %rdi
addq $0x40, %rdi
movq 0x8(%rsp), %rsi
callq 0xf9830
cmpq $0x0, 0x70(%rsp)
jne 0x2766c2
movq 0x90(%rsp), %rdi
leaq 0x10(%rsp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x276930
movl %eax, (%rsp)
jmp 0x2766db
movq 0x90(%rsp), %rdi
leaq 0x10(%rsp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x277a00
movl %eax, (%rsp)
movl (%rsp), %eax
movl %eax, 0x4(%rsp)
cmpl $0x0, 0x4(%rsp)
je 0x276721
movq 0x3c58b0(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x29f919(%rip), %rsi    # 0x516013
leaq 0x2c3624(%rip), %rdx    # 0x539d25
leaq 0x30926d(%rip), %rcx    # 0x57f975
leaq 0x30927b(%rip), %r8     # 0x57f98a
movl $0xf4, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x276723
testb $0x1, 0x8f(%rsp)
je 0x276732
callq 0xfa220
cmpq $0x0, 0x70(%rsp)
jne 0x276750
movq 0x28(%rsp), %rdi
leaq 0x309244(%rip), %rsi    # 0x57f98a
movl $0xf9, %edx
callq 0xe88c0
movq 0x68(%rsp), %rax
addq $0x98, %rsp
retq
nopl (%rax)