// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/match/ft-trimstat.c
// Function: gt_ft_trimstat_out
void gt_ft_trimstat_out(const GtFtTrimstat *trimstat,bool verbose)
{
  if (trimstat != NULL)
  {
    printf("died_out=" GT_WU "\t",trimstat->diedout);
    if (trimstat->distance_dist.nextfreeGtUword > 0)
    {
      printf("mean_valid=%.2f\t",
             trimstat->sum_meanvalid/trimstat->distance_dist.nextfreeGtUword);
      printf("frontspace=%.2f\n",
             MEGABYTES((double) trimstat->spaceforfront_total/
                       trimstat->distance_dist.nextfreeGtUword));
    } else
    {
      printf("mean_valid=undef\t");
      printf("frontspace=undef\n");
    }
    if (verbose)
    {
      GtUword idx, count = 1UL, matchlength_sum = 0, matchlength_cum = 0;

      for (idx = 0; idx <= 100UL; idx++)
      {
        matchlength_sum += trimstat->matchlength_dist[idx];
      }
      for (idx = 0; idx <= 100UL; idx++)
      {
        if (trimstat->matchlength_dist[idx] > 0)
        {
          matchlength_cum += trimstat->matchlength_dist[idx];
          printf("# matchlength%s" GT_WU ": " GT_WU " times, "
                 "total=" GT_WU " (%.2f), "
                 "cum=%.2f%%\n",
                 idx < 100UL ? "=" : ">=",
                 idx,trimstat->matchlength_dist[idx],
                 idx * trimstat->matchlength_dist[idx],
                 (double) trimstat->matchlength_dist[idx]/matchlength_sum,
                 100.0 * (double) matchlength_cum/matchlength_sum);
        }
      }
      for (idx = 0; idx <= 100UL; idx++)
      {
        if (trimstat->trim_dist[idx] > 0)
        {
          printf("# trim by " GT_WU "%%: " GT_WU " times\n",
                 idx,trimstat->trim_dist[idx]);
        }
      }
      qsort(trimstat->distance_dist.spaceGtUword,
            trimstat->distance_dist.nextfreeGtUword,
            sizeof *trimstat->distance_dist.spaceGtUword,
            gt_ft_trimstat_compare_GtUword);
      if (trimstat->distance_dist.nextfreeGtUword > 0)
      {
        GtUword previous = trimstat->distance_dist.spaceGtUword[0];
        for (idx = 1UL; idx < trimstat->distance_dist.nextfreeGtUword; idx++)
        {
          if (previous == trimstat->distance_dist.spaceGtUword[idx])
          {
            count++;
          } else
          {
            printf("distance " GT_WU ": " GT_WU " times\n",previous,count);
            count = 1UL;
            previous = trimstat->distance_dist.spaceGtUword[idx];
          }
        }
        printf("distance " GT_WU ": " GT_WU " times\n",previous,count);
      }
      for (idx = 0; idx < trimstat->maxvalid_dist.allocatedGtUword; idx++)
      {
        if (trimstat->maxvalid_dist.spaceGtUword[idx] > 0)
        {
          printf("maxvalid=" GT_WU ": " GT_WU " times\n",idx,
                 trimstat->maxvalid_dist.spaceGtUword[idx]);
        }
      }
    }
  }
}

// Assembly:
testq %rdi, %rdi
je 0x15d925
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %esi, %ebp
movq %rdi, %rbx
movq (%rdi), %rsi
leaq 0x1e9c30(%rip), %rdi    # 0x3472bb
xorl %eax, %eax
callq 0x17070
movq 0x28(%rbx), %rax
testq %rax, %rax
je 0x15d733
movsd 0x50(%rbx), %xmm0
movq %rax, %xmm1
punpckldq 0x18a22f(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x18a237(%rip), %xmm1   # 0x2e78f0
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
leaq 0x1e9bf9(%rip), %rdi    # 0x3472c9
movb $0x1, %al
callq 0x17070
movsd 0x48(%rbx), %xmm1
movsd 0x18a1fc(%rip), %xmm2   # 0x2e78e0
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x18a201(%rip), %xmm3   # 0x2e78f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x28(%rbx), %xmm1
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
subpd %xmm3, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
mulsd 0x18a1dd(%rip), %xmm0   # 0x2e7900
leaq 0x1e9bb0(%rip), %rdi    # 0x3472da
movb $0x1, %al
callq 0x17070
jmp 0x15d74d
leaq 0x1e9bb1(%rip), %rdi    # 0x3472eb
xorl %eax, %eax
callq 0x17070
leaq 0x1e9c43(%rip), %rdi    # 0x34738b
callq 0x17b60
testb %bpl, %bpl
je 0x15d917
movq 0x10(%rbx), %rax
xorl %ecx, %ecx
xorl %edx, %edx
cmpq $0x65, %rcx
je 0x15d76d
addq (%rax,%rcx,8), %rdx
incq %rcx
jmp 0x15d75e
movq %rdx, %xmm0
punpckldq 0x18a166(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x18a16e(%rip), %xmm0   # 0x2e78f0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movapd %xmm1, (%rsp)
xorl %r14d, %r14d
leaq 0x1e9b9d(%rip), %r12    # 0x34733a
leaq 0x1edcef(%rip), %r13    # 0x34b493
leaq 0x1e9b52(%rip), %r15    # 0x3472fd
xorl %ebp, %ebp
cmpq $0x65, %r14
je 0x15d845
movq 0x10(%rbx), %rax
movq (%rax,%r14,8), %rcx
testq %rcx, %rcx
je 0x15d83d
addq %rcx, %rbp
cmpq $0x64, %r14
movq %r13, %rsi
cmoveq %r12, %rsi
movq %rcx, %r8
imulq %r14, %r8
movq %rcx, %xmm1
movq 0x18a0fa(%rip), %xmm4   # 0x2e78e0
punpckldq %xmm4, %xmm1    # xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]
movapd 0x18a0fe(%rip), %xmm5   # 0x2e78f0
subpd %xmm5, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movapd (%rsp), %xmm3
divsd %xmm3, %xmm0
movq %rbp, %xmm2
punpckldq %xmm4, %xmm2    # xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1]
subpd %xmm5, %xmm2
movapd %xmm2, %xmm1
unpckhpd %xmm2, %xmm1            # xmm1 = xmm1[1],xmm2[1]
addsd %xmm2, %xmm1
mulsd 0x18bfb4(%rip), %xmm1   # 0x2e97e0
divsd %xmm3, %xmm1
movq %r15, %rdi
movq %r14, %rdx
movb $0x2, %al
callq 0x17070
incq %r14
jmp 0x15d7ad
leaq 0x1e9af1(%rip), %r14    # 0x34733d
xorl %r15d, %r15d
cmpq $0x65, %r15
je 0x15d874
movq 0x8(%rbx), %rax
movq (%rax,%r15,8), %rdx
testq %rdx, %rdx
je 0x15d86f
movq %r14, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x17070
incq %r15
jmp 0x15d84f
movq 0x18(%rbx), %rdi
movq 0x28(%rbx), %rsi
leaq 0xa3(%rip), %rcx        # 0x15d926
pushq $0x8
popq %rdx
callq 0x17ed0
movq 0x28(%rbx), %rax
testq %rax, %rax
je 0x15d8e8
movq 0x18(%rbx), %rcx
movq (%rcx), %rsi
pushq $0x1
popq %r15
leaq 0x1e9ab3(%rip), %r14    # 0x347359
movq %r15, %r12
movq %r15, %rdx
cmpq %rax, %r12
jae 0x15d8da
cmpq (%rcx,%r12,8), %rsi
jne 0x15d8bc
incq %rdx
jmp 0x15d8d5
movq %r14, %rdi
xorl %eax, %eax
callq 0x17070
movq 0x18(%rbx), %rcx
movq 0x28(%rbx), %rax
movq (%rcx,%r12,8), %rsi
movq %r15, %rdx
incq %r12
jmp 0x15d8ac
leaq 0x1e9a78(%rip), %rdi    # 0x347359
xorl %eax, %eax
callq 0x17070
leaq 0x1e9a83(%rip), %r14    # 0x347372
xorl %r15d, %r15d
cmpq 0x38(%rbx), %r15
jae 0x15d917
movq 0x30(%rbx), %rax
movq (%rax,%r15,8), %rdx
testq %rdx, %rdx
je 0x15d912
movq %r14, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x17070
incq %r15
jmp 0x15d8f2
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq