// File: /workspace/github_c_makefile_star2_O3/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:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, 0x8(%rsp)
testq %rdi, %rdi
je 0xd6170
movq %rdx, %r15
testq %rdx, %rdx
je 0xd6170
movq %rcx, %r14
movq %rdi, %r12
movq %r15, %rdi
callq 0xbad2d
testb %al, %al
je 0xd6175
movq %r15, %rdi
movl $0x41, %esi
callq 0xbae41
movb %al, 0x7(%rsp)
movq %r15, %rdi
movl $0x43, %esi
callq 0xbae41
movl %eax, %r13d
movq %r15, %rdi
movl $0x47, %esi
callq 0xbae41
movl %eax, %ebx
movq %r15, %rdi
movl $0x54, %esi
callq 0xbae41
movb %al, 0x6(%rsp)
movq %r15, %rdi
movl $0x4e, %esi
callq 0xbae41
movb %al, 0x5(%rsp)
cmpq $0x0, 0x8(%rsp)
je 0xd60ff
movq %r14, 0x20(%rsp)
xorl %ebp, %ebp
xorl %r14d, %r14d
movq $0x0, 0x18(%rsp)
movq $0x0, 0x10(%rsp)
movsbl (%r12,%rbp), %esi
movq %r15, %rdi
callq 0xbae41
cmpb %bl, %al
je 0xd6087
cmpb %r13b, %al
je 0xd6087
cmpb 0x7(%rsp), %al
je 0xd608c
cmpb 0x6(%rsp), %al
je 0xd608c
cmpb 0x5(%rsp), %al
jne 0xd616b
incq 0x10(%rsp)
jmp 0xd6091
incq %r14
jmp 0xd6091
incq 0x18(%rsp)
incq %rbp
cmpq %rbp, 0x8(%rsp)
jne 0xd6054
movq %r14, %xmm1
movq 0xb3d8(%rip), %xmm2     # 0xe1480
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0xb3dc(%rip), %xmm3     # 0xe1490
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movq 0x18(%rsp), %xmm4
punpckldq %xmm2, %xmm4    # xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]
subpd %xmm3, %xmm4
movapd %xmm4, %xmm1
unpckhpd %xmm4, %xmm1            # xmm1 = xmm1[1],xmm4[1]
addsd %xmm4, %xmm1
movq 0x10(%rsp), %xmm4
punpckldq %xmm2, %xmm4    # xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]
subpd %xmm3, %xmm4
movapd %xmm4, %xmm2
unpckhpd %xmm4, %xmm2            # xmm2 = xmm2[1],xmm4[1]
addsd %xmm4, %xmm2
movq 0x20(%rsp), %r14
jmp 0xd610b
xorpd %xmm2, %xmm2
xorpd %xmm1, %xmm1
xorpd %xmm0, %xmm0
movsd 0x8(%rsp), %xmm3
unpcklps 0xb368(%rip), %xmm3     # xmm3 = xmm3[0],mem[0],xmm3[1],mem[1]
subpd 0xb370(%rip), %xmm3     # 0xe1490
movapd %xmm3, %xmm4
unpckhpd %xmm3, %xmm4            # xmm4 = xmm4[1],xmm3[1]
addsd %xmm3, %xmm4
divsd %xmm4, %xmm0
movsd 0x15638(%rip), %xmm3    # 0xeb770
mulsd %xmm3, %xmm0
divsd %xmm4, %xmm1
mulsd %xmm3, %xmm1
divsd %xmm4, %xmm2
mulsd %xmm3, %xmm2
leaq 0x330dd(%rip), %rsi     # 0x109230
movq %r14, %rdi
movb $0x3, %al
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x75ce5
callq 0x315f6
callq 0x31588
callq 0x315bf
nop