// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/randomcodes.c
// Function: gt_randomcodes_accumulatecounts_run
static void gt_randomcodes_accumulatecounts_run(GtRandomcodesinfo *fci,
                                               const GtEncseq *encseq,
                                               unsigned int bucketkeysize,
                                               unsigned int skipshorter,
                                               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_randomcodes_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, bucketkeysize, skipshorter,
      &fci->buf);
  gt_randomcodes_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));
  gt_assert(fci->total_count == fci->codebuffer_total);
  if (fci->total_count > 0)
  {
    gt_assert(fci->flushcount > 0);
    gt_logger_log(logger, "total count=" GT_WU " (%.3f%% of all suffixes), "
                         "%u rounds (avg length " GT_WU ")",
                         fci->total_count,
                         100.0 * (double) fci->total_count/
                                          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");
  if (timer != NULL)
  {
    gt_timer_show_progress(timer, "to compute partial sums", stdout);
  }
}

// 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 0x26ecee
movq 0xa0(%rsp), %rdi
movq 0x3cd259(%rip), %rax    # 0x63bf38
movq (%rax), %rdx
leaq 0x30992c(%rip), %rsi    # 0x578615
callq 0x121930
jmp 0x26ecf0
movq 0xc0(%rsp), %rax
cmpq $0x0, 0xc8(%rax)
ja 0x26ed3a
movq 0x3cd297(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2a7300(%rip), %rsi    # 0x516013
leaq 0x309910(%rip), %rdx    # 0x57862a
leaq 0x3102db(%rip), %rcx    # 0x57effc
leaq 0x30fdad(%rip), %r8     # 0x57ead5
movl $0x496, %r9d            # imm = 0x496
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x26ed3c
movq 0xc0(%rsp), %rax
movq 0xc8(%rax), %rdi
callq 0x1001b0
movq %rax, %rcx
movq 0xc0(%rsp), %rax
movq %rcx, 0x78(%rax)
movq 0xc0(%rsp), %rax
movq 0x78(%rax), %rdi
callq 0x1018a0
movq %rax, %rcx
movq 0xc0(%rsp), %rax
movq %rcx, 0xf0(%rax)
movq 0xc0(%rsp), %rax
movq 0x78(%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 0x30fd21(%rip), %rdx    # 0x57ead5
leaq 0x3098a9(%rip), %r8     # 0x578664
movl $0x49a, %esi            # imm = 0x49A
movl $0x1, %r9d
movl %r9d, %ecx
callq 0x4bea60
movq 0xc0(%rsp), %rax
movq %rax, 0x100(%rax)
movq 0xc0(%rsp), %rax
leaq 0x4144(%rip), %rcx      # 0x272f30
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 0x2a9b0b(%rip), %xmm1   # 0x518930
movaps %xmm1, 0x60(%rsp)
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x2a9b0a(%rip), %xmm1   # 0x518940
movaps %xmm1, 0x70(%rsp)
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x2a9ad6(%rip), %xmm1   # 0x518928
mulsd %xmm1, %xmm0
leaq 0x309816(%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 0x272f30
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 0x2ab94f(%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 0x309758(%rip), %rsi    # 0x5786a1
movb $0x1, %al
callq 0xe7cd0
movq 0xc0(%rsp), %rax
movq (%rax), %rax
movq 0xc0(%rsp), %rcx
cmpq 0x20(%rcx), %rax
je 0x26efa1
movq 0x3cd030(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2a7099(%rip), %rsi    # 0x516013
leaq 0x31009f(%rip), %rdx    # 0x57f020
leaq 0x310074(%rip), %rcx    # 0x57effc
leaq 0x30fb46(%rip), %r8     # 0x57ead5
movl $0x4a6, %r9d            # imm = 0x4A6
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x26efa3
movq 0xc0(%rsp), %rax
cmpq $0x0, (%rax)
jbe 0x26f0dc
jmp 0x26efb7
movq 0xc0(%rsp), %rax
cmpl $0x0, 0x70(%rax)
ja 0x26effd
movq 0x3ccfd4(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2a703d(%rip), %rsi    # 0x516013
leaq 0x3096f2(%rip), %rdx    # 0x5786cf
leaq 0x310018(%rip), %rcx    # 0x57effc
leaq 0x30faea(%rip), %r8     # 0x57ead5
movl $0x4a9, %r9d            # imm = 0x4A9
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x26efff
movq 0xa8(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0xc0(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x48(%rsp)
movq %rax, %xmm0
movaps 0x2a9908(%rip), %xmm1   # 0x518930
movaps %xmm1, 0x10(%rsp)
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x2a9907(%rip), %xmm1   # 0x518940
movaps %xmm1, 0x20(%rsp)
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x2ab7e3(%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 0x70(%rax), %ecx
movq 0xc0(%rsp), %rax
movq 0x20(%rax), %rax
movq 0xc0(%rsp), %rdx
movl 0x70(%rdx), %edx
movl %edx, %esi
xorl %edx, %edx
divq %rsi
movq 0x48(%rsp), %rdx
movq %rax, %r8
leaq 0x30ff75(%rip), %rsi    # 0x57f04a
movb $0x1, %al
callq 0xe7cd0
movq 0xc0(%rsp), %rax
movq 0x78(%rax), %rdi
callq 0x1008f0
movq 0xc0(%rsp), %rax
movq $0x0, 0x78(%rax)
movq 0xc0(%rsp), %rax
movq 0xa8(%rax), %rdi
movl $0x4b4, %esi            # imm = 0x4B4
leaq 0x30f9bd(%rip), %rdx    # 0x57ead5
xorl %ecx, %ecx
leaq 0x309543(%rip), %r8     # 0x578664
movl $0x1, %r9d
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x4bea60
cmpq $0x0, 0xa0(%rsp)
je 0x26f15f
movq 0xa0(%rsp), %rdi
movq 0x3ccde8(%rip), %rax    # 0x63bf38
movq (%rax), %rdx
leaq 0x3090b9(%rip), %rsi    # 0x578213
callq 0x121930
addq $0xc8, %rsp
retq
nopw (%rax,%rax)