// File: /workspace/github_c_makefile_star2_O3/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 0x1b01d7
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 0x1f7009(%rip), %rdi    # 0x3a6f3b
xorl %eax, %eax
callq 0x17070
movq 0x28(%rbx), %rax
testq %rax, %rax
je 0x1affda
movsd 0x50(%rbx), %xmm0
movq %rax, %xmm1
punpckldq 0x197988(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x197990(%rip), %xmm1   # 0x3478f0
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
leaq 0x1f6fd2(%rip), %rdi    # 0x3a6f49
movb $0x1, %al
callq 0x17070
movsd 0x48(%rbx), %xmm1
movsd 0x197955(%rip), %xmm2   # 0x3478e0
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x19795a(%rip), %xmm3   # 0x3478f0
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 0x197936(%rip), %xmm0   # 0x347900
leaq 0x1f6f89(%rip), %rdi    # 0x3a6f5a
movb $0x1, %al
callq 0x17070
jmp 0x1afff4
leaq 0x1f6f8a(%rip), %rdi    # 0x3a6f6b
xorl %eax, %eax
callq 0x17070
leaq 0x1f701c(%rip), %rdi    # 0x3a700b
callq 0x17bd0
testb %bpl, %bpl
je 0x1b01c9
movq 0x10(%rbx), %rcx
xorl %eax, %eax
xorl %edx, %edx
addq (%rcx,%rdx,8), %rax
incq %rdx
cmpq $0x65, %rdx
jne 0x1b0005
movq %rax, %xmm0
punpckldq 0x1978c1(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x1978c9(%rip), %xmm0   # 0x3478f0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movapd %xmm1, (%rsp)
xorl %r12d, %r12d
leaq 0x1f6f78(%rip), %r13    # 0x3a6fba
leaq 0x1fb0e5(%rip), %rbp    # 0x3ab12e
leaq 0x1f6f2d(%rip), %r14    # 0x3a6f7d
xorl %r15d, %r15d
movq 0x10(%rbx), %rax
movq (%rax,%r15,8), %rcx
testq %rcx, %rcx
je 0x1b00d9
addq %rcx, %r12
cmpq $0x64, %r15
movq %rbp, %rsi
cmoveq %r13, %rsi
movq %rcx, %r8
imulq %r15, %r8
movq %rcx, %xmm1
movq 0x19785e(%rip), %xmm4   # 0x3478e0
punpckldq %xmm4, %xmm1    # xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]
movapd 0x197862(%rip), %xmm5   # 0x3478f0
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 0x199718(%rip), %xmm1   # 0x3497e0
divsd %xmm3, %xmm1
movq %r14, %rdi
movq %r15, %rdx
movb $0x2, %al
callq 0x17070
incq %r15
cmpq $0x65, %r15
jne 0x1b0053
leaq 0x1f6ed0(%rip), %r14    # 0x3a6fbd
xorl %r15d, %r15d
movq 0x8(%rbx), %rax
movq (%rax,%r15,8), %rdx
testq %rdx, %rdx
je 0x1b010a
movq %r14, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x17070
incq %r15
cmpq $0x65, %r15
jne 0x1b00f0
movq 0x18(%rbx), %rdi
movq 0x28(%rbx), %rsi
leaq 0xb6(%rip), %rcx        # 0x1b01d8
movl $0x8, %edx
callq 0x17f60
movq 0x28(%rbx), %rax
testq %rax, %rax
je 0x1b0190
movq 0x18(%rbx), %rcx
movq (%rcx), %rsi
movl $0x1, %edx
cmpq $0x1, %rax
je 0x1b0182
leaq 0x1f6e8b(%rip), %r14    # 0x3a6fd9
movl $0x1, %r15d
cmpq (%rcx,%r15,8), %rsi
jne 0x1b015f
incq %rdx
jmp 0x1b017a
movq %r14, %rdi
xorl %eax, %eax
callq 0x17070
movq 0x18(%rbx), %rcx
movq 0x28(%rbx), %rax
movq (%rcx,%r15,8), %rsi
movl $0x1, %edx
incq %r15
cmpq %rax, %r15
jb 0x1b0154
leaq 0x1f6e50(%rip), %rdi    # 0x3a6fd9
xorl %eax, %eax
callq 0x17070
movq 0x38(%rbx), %rax
testq %rax, %rax
je 0x1b01c9
leaq 0x1f6e52(%rip), %r14    # 0x3a6ff2
xorl %r15d, %r15d
movq 0x30(%rbx), %rcx
movq (%rcx,%r15,8), %rdx
testq %rdx, %rdx
je 0x1b01c1
movq %r14, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x17070
movq 0x38(%rbx), %rax
incq %r15
cmpq %rax, %r15
jb 0x1b01a3
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq