// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/gc_content.c
// Function: gt_gc_content_show
void gt_gc_content_show(const char *seq, GtUword len,
                        GtAlphabet *alphabet, GtFile *outfp)
{
  GtUword i,
                gc = 0, /* number of G/C bases */
                at = 0, /* number of A/T bases */
                n  = 0; /* number of N   bases */
  unsigned int a_code, c_code, g_code, t_code, n_code, cc;
  gt_assert(seq && alphabet);
  gt_assert(gt_alphabet_is_dna(alphabet));
  a_code = gt_alphabet_encode(alphabet, 'A');
  c_code = gt_alphabet_encode(alphabet, 'C');
  g_code = gt_alphabet_encode(alphabet, 'G');
  t_code = gt_alphabet_encode(alphabet, 'T');
  n_code = gt_alphabet_encode(alphabet, 'N');
  for (i = 0; i < len; i++) {
    cc = gt_alphabet_encode(alphabet, seq[i]);
    if (cc == g_code || cc == c_code)
      gc++;
    else if (cc == a_code || cc == t_code)
      at++;
    else if (cc == n_code)
      n++;
    else {
      gt_assert(0);
    }
  }
  gt_file_xprintf(outfp, "GC-content: %.2f%% (AT-content: %.2f%%, "
                         "N-content: %.2f%%)\n",
                  ((double) gc / len) * 100.0, ((double) at / len) * 100.0,
                  ((double) n  / len) * 100.0);
}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movq %rsi, 0x48(%rsp)
movq %rdx, 0x40(%rsp)
movq %rcx, 0x38(%rsp)
movq $0x0, 0x28(%rsp)
movq $0x0, 0x20(%rsp)
movq $0x0, 0x18(%rsp)
cmpq $0x0, 0x50(%rsp)
je 0x144b83
cmpq $0x0, 0x40(%rsp)
jne 0x144bbb
movq 0x6f44e(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x194d2(%rip), %rsi     # 0x15e066
leaq 0x4763d(%rip), %rdx     # 0x18c1d8
leaq 0x47646(%rip), %rcx     # 0x18c1e8
leaq 0x47652(%rip), %r8      # 0x18c1fb
movl $0x1d, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x144bbd
jmp 0x144bbf
movq 0x40(%rsp), %rdi
callq 0x10a8e0
testb $0x1, %al
jne 0x144c05
movq 0x6f404(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x19488(%rip), %rsi     # 0x15e066
leaq 0x4762c(%rip), %rdx     # 0x18c211
leaq 0x475fc(%rip), %rcx     # 0x18c1e8
leaq 0x47608(%rip), %r8      # 0x18c1fb
movl $0x1e, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x144c07
movq 0x40(%rsp), %rdi
movl $0x41, %esi
callq 0x10abd0
movzbl %al, %eax
movl %eax, 0x14(%rsp)
movq 0x40(%rsp), %rdi
movl $0x43, %esi
callq 0x10abd0
movzbl %al, %eax
movl %eax, 0x10(%rsp)
movq 0x40(%rsp), %rdi
movl $0x47, %esi
callq 0x10abd0
movzbl %al, %eax
movl %eax, 0xc(%rsp)
movq 0x40(%rsp), %rdi
movl $0x54, %esi
callq 0x10abd0
movzbl %al, %eax
movl %eax, 0x8(%rsp)
movq 0x40(%rsp), %rdi
movl $0x4e, %esi
callq 0x10abd0
movzbl %al, %eax
movl %eax, 0x4(%rsp)
movq $0x0, 0x30(%rsp)
movq 0x30(%rsp), %rax
cmpq 0x48(%rsp), %rax
jae 0x144d5c
movq 0x40(%rsp), %rdi
movq 0x50(%rsp), %rax
movq 0x30(%rsp), %rcx
movsbl (%rax,%rcx), %esi
callq 0x10abd0
movzbl %al, %eax
movl %eax, (%rsp)
movl (%rsp), %eax
cmpl 0xc(%rsp), %eax
je 0x144cbe
movl (%rsp), %eax
cmpl 0x10(%rsp), %eax
jne 0x144cce
movq 0x28(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x28(%rsp)
jmp 0x144d47
movl (%rsp), %eax
cmpl 0x14(%rsp), %eax
je 0x144ce0
movl (%rsp), %eax
cmpl 0x8(%rsp), %eax
jne 0x144cf0
movq 0x20(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x20(%rsp)
jmp 0x144d45
movl (%rsp), %eax
cmpl 0x4(%rsp), %eax
jne 0x144d09
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0x144d43
jmp 0x144d0b
movq 0x6f2c6(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1934a(%rip), %rsi     # 0x15e066
leaq 0x2b198(%rip), %rdx     # 0x16febb
leaq 0x474be(%rip), %rcx     # 0x18c1e8
leaq 0x474ca(%rip), %r8      # 0x18c1fb
movl $0x2d, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x144d45
jmp 0x144d47
jmp 0x144d49
movq 0x30(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x30(%rsp)
jmp 0x144c7e
movq 0x38(%rsp), %rdi
movq 0x28(%rsp), %xmm0
movaps 0x19712(%rip), %xmm5    # 0x15e480
punpckldq %xmm5, %xmm0    # xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1]
movapd 0x19716(%rip), %xmm4    # 0x15e490
subpd %xmm4, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq 0x48(%rsp), %xmm3
punpckldq %xmm5, %xmm3    # xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1]
subpd %xmm4, %xmm3
movaps %xmm3, %xmm1
unpckhpd %xmm3, %xmm3            # xmm3 = xmm3[1,1]
addsd %xmm1, %xmm3
divsd %xmm3, %xmm0
movsd 0x23bf2(%rip), %xmm2    # 0x1689a0
mulsd %xmm2, %xmm0
movq 0x20(%rsp), %xmm1
punpckldq %xmm5, %xmm1    # xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1]
subpd %xmm4, %xmm1
movaps %xmm1, %xmm6
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm6, %xmm1
divsd %xmm3, %xmm1
mulsd %xmm2, %xmm1
movq 0x18(%rsp), %xmm2
punpckldq %xmm5, %xmm2    # xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]
subpd %xmm4, %xmm2
movaps %xmm2, %xmm4
unpckhpd %xmm2, %xmm2            # xmm2 = xmm2[1,1]
addsd %xmm4, %xmm2
divsd %xmm3, %xmm2
movsd 0x23ba8(%rip), %xmm3    # 0x1689a0
mulsd %xmm3, %xmm2
leaq 0x4742b(%rip), %rsi     # 0x18c22e
movb $0x3, %al
callq 0x837b0
addq $0x58, %rsp
retq
nop