// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x28, %rsp
movb %sil, %al
movq %rdi, 0x18(%rsp)
movb %al, 0x17(%rsp)
movq %rdx, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
je 0x1124e5
movq 0x8(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x1124ad
jmp 0x1124e5
movq 0xa1b24(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x4bba8(%rip), %rsi     # 0x15e066
leaq 0x4c183(%rip), %rdx     # 0x15e648
leaq 0x72cbc(%rip), %rcx     # 0x185188
leaq 0x72cc3(%rip), %r8      # 0x185196
movl $0x17, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1124e7
movsbl 0x17(%rsp), %eax
addl $-0x41, %eax
movl %eax, %ecx
movq %rcx, (%rsp)
subl $0x38, %eax
ja 0x1127a9
movq (%rsp), %rax
leaq 0x72b9b(%rip), %rcx     # 0x1850a4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x18(%rsp), %rax
movb $0x54, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x41, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x41, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x43, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x47, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x52, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x59, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x53, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x57, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x4d, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x4b, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x56, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x48, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x44, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x42, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x4e, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x74, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x61, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x61, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x63, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x67, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x72, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x79, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x73, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x77, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x6d, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x6b, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x76, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x68, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x64, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x62, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
movq 0x18(%rsp), %rax
movb $0x6e, (%rax)
movl $0x0, 0x24(%rsp)
jmp 0x1127fc
callq 0xb6b0
movq (%rax), %rax
movsbl 0x17(%rsp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
je 0x1127dc
movq 0x8(%rsp), %rdi
leaq 0x729d9(%rip), %rsi     # 0x1851ac
movb $0x0, %al
callq 0xc0d0
jmp 0x1127f4
movq 0x8(%rsp), %rdi
movsbl 0x17(%rsp), %edx
leaq 0x729ee(%rip), %rsi     # 0x1851db
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x24(%rsp) # imm = 0xFFFFFFFF
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
nop