// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/tyr-occratio.c
// Function: computeoccurrenceratio
static int computeoccurrenceratio(Sequentialsuffixarrayreader *ssar,
                                  GtUword minmersize,
                                  GtUword maxmersize,
                                  GtArrayuint64_t *uniquedistribution,
                                  GtArrayuint64_t *nonuniquedistribution,
                                  GtArrayuint64_t *nonuniquemultidistribution,
                                  GtLogger *logger,
                                  GtError *err)
{
  OccDfsstate *state;
  bool haserr = false;

  gt_error_check(err);
  state = gt_malloc(sizeof (*state));
  state->encseq = gt_encseqSequentialsuffixarrayreader(ssar);
  state->readmode = gt_readmodeSequentialsuffixarrayreader(ssar);
  state->totallength = gt_encseq_total_length(state->encseq);
  state->minmersize = minmersize;
  state->maxmersize = maxmersize;
  state->uniquedistribution = uniquedistribution;
  state->nonuniquedistribution = nonuniquedistribution;
  state->nonuniquemultidistribution = nonuniquemultidistribution;
  if (gt_depthfirstesa(ssar,
                    occ_allocateDfsinfo,
                    occ_freeDfsinfo,
                    occ_processleafedge,
                    NULL,
                    occ_processcompletenode,
                    occ_assignleftmostleaf,
                    occ_assignrightmostleaf,
                    (Dfsstate*) state,
                    logger,
                    err) != 0)
  {
    haserr = true;
  }
  gt_free(state);
  return haserr ? -1 : 0;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x68, %rsp
movq 0x88(%rsp), %rax
movq 0x80(%rsp), %rax
movq %rdi, 0x60(%rsp)
movq %rsi, 0x58(%rsp)
movq %rdx, 0x50(%rsp)
movq %rcx, 0x48(%rsp)
movq %r8, 0x40(%rsp)
movq %r9, 0x38(%rsp)
movb $0x0, 0x2f(%rsp)
cmpq $0x0, 0x88(%rsp)
je 0x2f6e90
movq 0x88(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x2f6e58
jmp 0x2f6e90
movq 0x345141(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x21f1aa(%rip), %rsi    # 0x516013
leaq 0x21f34f(%rip), %rdx    # 0x5161bf
leaq 0x298fc9(%rip), %rcx    # 0x58fe40
leaq 0x298fa9(%rip), %r8     # 0x58fe27
movl $0xd1, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2f6e92
movl $0x40, %edi
leaq 0x298f89(%rip), %rsi    # 0x58fe27
movl $0xd2, %edx
callq 0xe80f0
movq %rax, 0x30(%rsp)
movq 0x60(%rsp), %rdi
callq 0x23bd50
movq %rax, %rcx
movq 0x30(%rsp), %rax
movq %rcx, (%rax)
movq 0x60(%rsp), %rdi
callq 0x23bda0
movl %eax, %ecx
movq 0x30(%rsp), %rax
movl %ecx, 0x8(%rax)
movq 0x30(%rsp), %rax
movq (%rax), %rdi
callq 0xa9d00
movq %rax, %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x58(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x50(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x48(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x28(%rax)
movq 0x40(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x38(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x38(%rax)
movq 0x60(%rsp), %rdi
movq 0x30(%rsp), %r11
movq 0x80(%rsp), %r10
movq 0x88(%rsp), %rax
leaq 0x8a(%rip), %rsi        # 0x2f6fe0
leaq 0xb3(%rip), %rdx        # 0x2f7010
leaq 0xec(%rip), %rcx        # 0x2f7050
xorl %r8d, %r8d
leaq 0x172(%rip), %r9        # 0x2f70e0
leaq 0x29b(%rip), %r14       # 0x2f7210
leaq 0x2c4(%rip), %rbx       # 0x2f7240
movq %r14, (%rsp)
movq %rbx, 0x8(%rsp)
movq %r11, 0x10(%rsp)
movq %r10, 0x18(%rsp)
movq %rax, 0x20(%rsp)
callq 0x4b5200
cmpl $0x0, %eax
je 0x2f6fa3
movb $0x1, 0x2f(%rsp)
movq 0x30(%rsp), %rdi
leaq 0x298e78(%rip), %rsi    # 0x58fe27
movl $0xe9, %edx
callq 0xe88c0
movb 0x2f(%rsp), %dl
xorl %eax, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
testb $0x1, %dl
cmovnel %ecx, %eax
addq $0x68, %rsp
popq %rbx
popq %r14
retq
nopw %cs:(%rax,%rax)