// File: /workspace/github_c_makefile_star2_O1/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 0x1b8d0b
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 0x1f7a70(%rip), %rdi    # 0x3b04db
xorl %eax, %eax
callq 0x17070
movq 0x28(%rbx), %rax
testq %rax, %rax
je 0x1b8b13
movsd 0x50(%rbx), %xmm0
movq %rax, %xmm1
punpckldq 0x197e4f(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x197e57(%rip), %xmm1   # 0x3508f0
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
leaq 0x1f7a39(%rip), %rdi    # 0x3b04e9
movb $0x1, %al
callq 0x17070
movsd 0x48(%rbx), %xmm1
movsd 0x197e1c(%rip), %xmm2   # 0x3508e0
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x197e21(%rip), %xmm3   # 0x3508f0
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 0x197dfd(%rip), %xmm0   # 0x350900
leaq 0x1f79f0(%rip), %rdi    # 0x3b04fa
movb $0x1, %al
callq 0x17070
jmp 0x1b8b2d
leaq 0x1f79f1(%rip), %rdi    # 0x3b050b
xorl %eax, %eax
callq 0x17070
leaq 0x1f7a83(%rip), %rdi    # 0x3b05ab
callq 0x17bd0
testb %bpl, %bpl
je 0x1b8cfd
movq 0x10(%rbx), %rcx
xorl %eax, %eax
xorl %edx, %edx
addq (%rcx,%rdx,8), %rax
incq %rdx
cmpq $0x65, %rdx
jne 0x1b8b3e
movq %rax, %xmm0
punpckldq 0x197d88(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x197d90(%rip), %xmm0   # 0x3508f0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movapd %xmm1, (%rsp)
xorl %r12d, %r12d
leaq 0x1f79df(%rip), %r13    # 0x3b055a
leaq 0x1fbbbc(%rip), %rbp    # 0x3b473e
leaq 0x1f7994(%rip), %r14    # 0x3b051d
xorl %r15d, %r15d
movq 0x10(%rbx), %rax
movq (%rax,%r15,8), %rcx
testq %rcx, %rcx
je 0x1b8c12
addq %rcx, %r12
cmpq $0x64, %r15
movq %rbp, %rsi
cmoveq %r13, %rsi
movq %rcx, %r8
imulq %r15, %r8
movq %rcx, %xmm1
movq 0x197d25(%rip), %xmm4   # 0x3508e0
punpckldq %xmm4, %xmm1    # xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]
movapd 0x197d29(%rip), %xmm5   # 0x3508f0
subpd %xmm5, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movapd (%rsp), %xmm3
divsd %xmm3, %xmm0
movq %r12, %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 0x199bef(%rip), %xmm1   # 0x3527f0
divsd %xmm3, %xmm1
movq %r14, %rdi
movq %r15, %rdx
movb $0x2, %al
callq 0x17070
incq %r15
cmpq $0x65, %r15
jne 0x1b8b8c
leaq 0x1f7937(%rip), %r14    # 0x3b055d
xorl %r15d, %r15d
movq 0x8(%rbx), %rax
movq (%rax,%r15,8), %rdx
testq %rdx, %rdx
je 0x1b8c43
movq %r14, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x17070
incq %r15
cmpq $0x65, %r15
jne 0x1b8c29
movq 0x18(%rbx), %rdi
movq 0x28(%rbx), %rsi
leaq 0xb1(%rip), %rcx        # 0x1b8d0c
movl $0x8, %edx
callq 0x17f60
cmpq $0x0, 0x28(%rbx)
je 0x1b8cc9
movq 0x18(%rbx), %rax
movq (%rax), %rsi
movl $0x1, %edx
cmpq $0x2, 0x28(%rbx)
jb 0x1b8cbb
leaq 0x1f78f3(%rip), %r14    # 0x3b0579
movl $0x1, %r15d
movq 0x18(%rbx), %rax
cmpq (%rax,%r15,8), %rsi
jne 0x1b8c9b
incq %rdx
jmp 0x1b8cb2
movq %r14, %rdi
xorl %eax, %eax
callq 0x17070
movq 0x18(%rbx), %rax
movq (%rax,%r15,8), %rsi
movl $0x1, %edx
incq %r15
cmpq 0x28(%rbx), %r15
jb 0x1b8c8c
leaq 0x1f78b7(%rip), %rdi    # 0x3b0579
xorl %eax, %eax
callq 0x17070
cmpq $0x0, 0x38(%rbx)
je 0x1b8cfd
leaq 0x1f78bb(%rip), %r14    # 0x3b0592
xorl %r15d, %r15d
movq 0x30(%rbx), %rax
movq (%rax,%r15,8), %rdx
testq %rdx, %rdx
je 0x1b8cf4
movq %r14, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x17070
incq %r15
cmpq 0x38(%rbx), %r15
jb 0x1b8cda
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq