// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/firstcodes.c
// Function: gt_firstcodes_accumulatecounts_run
static void gt_firstcodes_accumulatecounts_run(GtFirstcodesinfo *fci,
                                               const GtEncseq *encseq,
                                               unsigned int kmersize,
                                               unsigned int minmatchlength,
                                               GtLogger *logger,
                                               GtTimer *timer)
{
  if (timer != NULL)
  {
    gt_timer_show_progress(timer, "to accumulate counts",stdout);
  }
  gt_assert(fci->buf.allocated > 0);
  fci->radixsort_code = gt_radixsort_new_ulong(fci->buf.allocated);
  fci->buf.spaceGtUword = gt_radixsort_space_ulong(fci->radixsort_code);
  GT_FCI_ADDWORKSPACE(fci->fcsl,"radixsort_code",
                      gt_radixsort_size(fci->radixsort_code));
  fci->buf.fciptr = fci; /* as we need to give fci to the flush function */
  fci->buf.flush_function = gt_firstcodes_accumulatecounts_flush;
  gt_logger_log(logger,"maximum space for accumulating counts %.2f MB",
                GT_MEGABYTES(gt_firstcodes_spacelog_total(fci->fcsl)));
  gt_firstcodes_accum_runkmerscan(encseq, kmersize, minmatchlength,&fci->buf);
  gt_firstcodes_accumulatecounts_flush(fci);
  gt_logger_log(logger,"codebuffer_total="GT_WU" (%.3f%% of all suffixes)",
                fci->codebuffer_total,
                100.0 * (double) fci->codebuffer_total/
                                 gt_encseq_total_length(encseq));
  if (fci->firstcodehits > 0)
  {
    gt_assert(fci->flushcount > 0);
    gt_logger_log(logger,"firstcodehits="GT_WU" (%.3f%% of all suffixes), "
                         "%u rounds (avg length "GT_WU")",
                         fci->firstcodehits,
                         100.0 * (double) fci->firstcodehits/
                                          gt_encseq_total_length(encseq),
                         fci->flushcount,
                         fci->codebuffer_total/fci->flushcount);
  }
  gt_radixsort_delete(fci->radixsort_code);
  fci->radixsort_code = NULL;
  GT_FCI_SUBTRACTWORKSPACE(fci->fcsl,"radixsort_code");
}

// Assembly:
subq $0xc8, %rsp
movq %rdi, 0xc0(%rsp)
movq %rsi, 0xb8(%rsp)
movl %edx, 0xb4(%rsp)
movl %ecx, 0xb0(%rsp)
movq %r8, 0xa8(%rsp)
movq %r9, 0xa0(%rsp)
cmpq $0x0, 0xa0(%rsp)
je 0x247c1e
movq 0xa0(%rsp), %rdi
movq 0x3f4329(%rip), %rax    # 0x63bf38
movq (%rax), %rdx
leaq 0x3309fc(%rip), %rsi    # 0x578615
callq 0x121930
jmp 0x247c20
movq 0xc0(%rsp), %rax
cmpq $0x0, 0xc8(%rax)
ja 0x247c6a
movq 0x3f4367(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2ce3d0(%rip), %rsi    # 0x516013
leaq 0x3309e0(%rip), %rdx    # 0x57862a
leaq 0x3309f0(%rip), %rcx    # 0x578641
leaq 0x3305a4(%rip), %r8     # 0x5781fc
movl $0x37b, %r9d            # imm = 0x37B
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x247c6c
movq 0xc0(%rsp), %rax
movq 0xc8(%rax), %rdi
callq 0x1001b0
movq %rax, %rcx
movq 0xc0(%rsp), %rax
movq %rcx, 0x68(%rax)
movq 0xc0(%rsp), %rax
movq 0x68(%rax), %rdi
callq 0x1018a0
movq %rax, %rcx
movq 0xc0(%rsp), %rax
movq %rcx, 0xf0(%rax)
movq 0xc0(%rsp), %rax
movq 0x68(%rax), %rdi
movq 0xa8(%rax), %rax
movq %rax, 0x50(%rsp)
callq 0x1008d0
movq 0x50(%rsp), %rdi
movq %rax, %rcx
movq %rsp, %rax
movq %rcx, (%rax)
leaq 0x330518(%rip), %rdx    # 0x5781fc
leaq 0x330979(%rip), %r8     # 0x578664
movl $0x37f, %esi            # imm = 0x37F
movl $0x1, %r9d
movl %r9d, %ecx
callq 0x4bea60
movq 0xc0(%rsp), %rax
movq %rax, 0x100(%rax)
movq 0xc0(%rsp), %rax
leaq 0x1bf4(%rip), %rcx      # 0x249910
movq %rcx, 0xe0(%rax)
movq 0xa8(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0xc0(%rsp), %rax
movq 0xa8(%rax), %rdi
callq 0x4be8b0
movq 0x58(%rsp), %rdi
movq %rax, %xmm0
movaps 0x2d0bdb(%rip), %xmm1   # 0x518930
movaps %xmm1, 0x60(%rsp)
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x2d0bda(%rip), %xmm1   # 0x518940
movaps %xmm1, 0x70(%rsp)
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x2d0ba6(%rip), %xmm1   # 0x518928
mulsd %xmm1, %xmm0
leaq 0x3308e6(%rip), %rsi    # 0x578673
movb $0x1, %al
callq 0xe7cd0
movq 0xb8(%rsp), %rdi
movl 0xb4(%rsp), %esi
movl 0xb0(%rsp), %edx
movq 0xc0(%rsp), %rcx
addq $0xb0, %rcx
callq 0x4b7180
movq 0xc0(%rsp), %rdi
callq 0x249910
movaps 0x60(%rsp), %xmm2
movaps 0x70(%rsp), %xmm1
movq 0xa8(%rsp), %rax
movq %rax, 0x90(%rsp)
movq 0xc0(%rsp), %rax
movq 0x20(%rax), %rax
movq %rax, 0x98(%rsp)
movq %rax, %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x2d2a1f(%rip), %xmm1   # 0x51a838
mulsd %xmm1, %xmm0
movsd %xmm0, 0x88(%rsp)
movq 0xb8(%rsp), %rdi
callq 0xa9d00
movaps 0x60(%rsp), %xmm3
movaps 0x70(%rsp), %xmm2
movsd 0x88(%rsp), %xmm0
movq 0x90(%rsp), %rdi
movq 0x98(%rsp), %rdx
movq %rax, %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
leaq 0x330828(%rip), %rsi    # 0x5786a1
movb $0x1, %al
callq 0xe7cd0
movq 0xc0(%rsp), %rax
cmpq $0x0, (%rax)
jbe 0x247fb9
jmp 0x247e94
movq 0xc0(%rsp), %rax
cmpl $0x0, 0x50(%rax)
ja 0x247eda
movq 0x3f40f7(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2ce160(%rip), %rsi    # 0x516013
leaq 0x330815(%rip), %rdx    # 0x5786cf
leaq 0x330780(%rip), %rcx    # 0x578641
leaq 0x330334(%rip), %r8     # 0x5781fc
movl $0x38c, %r9d            # imm = 0x38C
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x247edc
movq 0xa8(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0xc0(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x48(%rsp)
movq %rax, %xmm0
movaps 0x2d0a2b(%rip), %xmm1   # 0x518930
movaps %xmm1, 0x10(%rsp)
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x2d0a2a(%rip), %xmm1   # 0x518940
movaps %xmm1, 0x20(%rsp)
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x2d2906(%rip), %xmm1   # 0x51a838
mulsd %xmm1, %xmm0
movsd %xmm0, 0x38(%rsp)
movq 0xb8(%rsp), %rdi
callq 0xa9d00
movaps 0x10(%rsp), %xmm3
movaps 0x20(%rsp), %xmm2
movsd 0x38(%rsp), %xmm0
movq 0x40(%rsp), %rdi
movq %rax, %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movq 0xc0(%rsp), %rax
movl 0x50(%rax), %ecx
movq 0xc0(%rsp), %rax
movq 0x20(%rax), %rax
movq 0xc0(%rsp), %rdx
movl 0x50(%rdx), %edx
movl %edx, %esi
xorl %edx, %edx
divq %rsi
movq 0x48(%rsp), %rdx
movq %rax, %r8
leaq 0x330731(%rip), %rsi    # 0x5786e3
movb $0x1, %al
callq 0xe7cd0
movq 0xc0(%rsp), %rax
movq 0x68(%rax), %rdi
callq 0x1008f0
movq 0xc0(%rsp), %rax
movq $0x0, 0x68(%rax)
movq 0xc0(%rsp), %rax
movq 0xa8(%rax), %rdi
movl $0x397, %esi            # imm = 0x397
leaq 0x330207(%rip), %rdx    # 0x5781fc
xorl %ecx, %ecx
leaq 0x330666(%rip), %r8     # 0x578664
movl $0x1, %r9d
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x4bea60
addq $0xc8, %rsp
retq
nopl (%rax,%rax)