// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/core/complement.c
// Function: gt_complement
int gt_complement(char *reverse_char, char dna_char, GtError *err)
{
  gt_error_check(err);
  switch (dna_char) {
    case 'A': *reverse_char = 'T'; return 0; /* adenine */
    case 'T': *reverse_char = 'A'; return 0; /* thymine */
    case 'U': *reverse_char = 'A'; return 0; /* uracil */
    case 'G': *reverse_char = 'C'; return 0; /* guanine */
    case 'C': *reverse_char = 'G'; return 0; /* cytosine */
    case 'Y': *reverse_char = 'R'; return 0; /* pyrimidine */
    case 'R': *reverse_char = 'Y'; return 0; /* purine */
    case 'S': *reverse_char = 'S'; return 0; /* strong (3 hbonds) */
    case 'W': *reverse_char = 'W'; return 0; /* weak (2 hbonds)  */
    case 'K': *reverse_char = 'M'; return 0; /* keto */
    case 'M': *reverse_char = 'K'; return 0; /* amino */
    case 'B': *reverse_char = 'V'; return 0; /* not A */
    case 'D': *reverse_char = 'H'; return 0; /* not C */
    case 'H': *reverse_char = 'D'; return 0; /* not G */
    case 'V': *reverse_char = 'B'; return 0; /* not T/U */
    case 'N': *reverse_char = 'N'; return 0; /* any */
    case 'a': *reverse_char = 't'; return 0; /* adenine */
    case 't': *reverse_char = 'a'; return 0; /* thymine */
    case 'u': *reverse_char = 'a'; return 0; /* uracil */
    case 'g': *reverse_char = 'c'; return 0; /* guanine */
    case 'c': *reverse_char = 'g'; return 0; /* cytosine */
    case 'y': *reverse_char = 'r'; return 0; /* pyrimidine */
    case 'r': *reverse_char = 'y'; return 0; /* purine */
    case 's': *reverse_char = 's'; return 0; /* strong (3 hbonds) */
    case 'w': *reverse_char = 'w'; return 0; /* weak (2 hbonds)  */
    case 'k': *reverse_char = 'm'; return 0; /* keto */
    case 'm': *reverse_char = 'k'; return 0; /* amino */
    case 'b': *reverse_char = 'v'; return 0; /* not A */
    case 'd': *reverse_char = 'h'; return 0; /* not C */
    case 'h': *reverse_char = 'd'; return 0; /* not G */
    case 'v': *reverse_char = 'b'; return 0; /* not T/U */
    case 'n': *reverse_char = 'n'; return 0; /* any */
    default:
      if (isspace(dna_char)) {
        gt_error_set(err, "complement of whitespace character not defined");
      } else {
        gt_error_set(err, "complement of DNA character '%c' not defined",
                     dna_char);
      }
      return -1;
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdx, %r14
movl %esi, %ebp
movq %rdi, %rbx
testq %rdx, %rdx
je 0xbe178
movq %r14, %rdi
callq 0x3566a
testb %al, %al
jne 0xbe29b
movsbl %bpl, %r15d
leal -0x41(%r15), %eax
cmpl $0x38, %eax
ja 0xbe204
leaq 0x44254(%rip), %rcx     # 0x1023e0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movb $0x41, (%rbx)
jmp 0xbe276
movb $0x61, (%rbx)
jmp 0xbe276
movb $0x67, (%rbx)
jmp 0xbe276
movb $0x64, (%rbx)
jmp 0xbe276
movb $0x42, (%rbx)
jmp 0xbe276
movb $0x79, (%rbx)
jmp 0xbe276
movb $0x6b, (%rbx)
jmp 0xbe276
movb $0x53, (%rbx)
jmp 0xbe276
movb $0x6d, (%rbx)
jmp 0xbe276
movb $0x62, (%rbx)
jmp 0xbe276
movb $0x72, (%rbx)
jmp 0xbe276
movb $0x68, (%rbx)
jmp 0xbe276
movb $0x47, (%rbx)
jmp 0xbe276
movb $0x44, (%rbx)
jmp 0xbe276
movb $0x6e, (%rbx)
jmp 0xbe276
callq 0xb6e0
movq (%rax), %rax
movsbq %bpl, %rcx
testb $0x20, 0x1(%rax,%rcx,2)
jne 0xbe283
leaq 0x442f9(%rip), %rsi     # 0x102517
movq %r14, %rdi
movl %r15d, %edx
xorl %eax, %eax
callq 0x3559f
jmp 0xbe294
movb $0x54, (%rbx)
jmp 0xbe276
movb $0x56, (%rbx)
jmp 0xbe276
movb $0x4d, (%rbx)
jmp 0xbe276
movb $0x4b, (%rbx)
jmp 0xbe276
movb $0x77, (%rbx)
jmp 0xbe276
movb $0x57, (%rbx)
jmp 0xbe276
movb $0x52, (%rbx)
jmp 0xbe276
movb $0x48, (%rbx)
jmp 0xbe276
movb $0x43, (%rbx)
jmp 0xbe276
movb $0x59, (%rbx)
jmp 0xbe276
movb $0x4e, (%rbx)
jmp 0xbe276
movb $0x76, (%rbx)
jmp 0xbe276
movb $0x74, (%rbx)
jmp 0xbe276
movb $0x63, (%rbx)
jmp 0xbe276
movb $0x73, (%rbx)
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x4425e(%rip), %rsi     # 0x1024e8
movq %r14, %rdi
xorl %eax, %eax
callq 0x3559f
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
jmp 0xbe278
callq 0x29b22