// File: ncbi[P]amr/seq.cpp
// Function: Seq_sp::complementaryNucleotide(char)
char complementaryNucleotide (char wildNucleotide)
{
  char r = ' ';
  switch (toLower (wildNucleotide))
  {
    case 'a': r = 't'; break;
    case 'c': r = 'g'; break;
    case 'g': r = 'c'; break;
    case 't': r = 'a'; break;
    case 'm': r = 'k'; break;
    case 'r': r = 'y'; break;
    case 'w': r = 'w'; break;
    case 's': r = 's'; break;
    case 'y': r = 'r'; break;
    case 'k': r = 'm'; break;
    case 'v': r = 'b'; break;
    case 'h': r = 'd'; break;
    case 'd': r = 'h'; break;
    case 'b': r = 'v'; break;
    case 'n': r = 'n'; break;
    default: 
    	throw runtime_error ("Bad wild nucleotide " + to_string (wildNucleotide));
  }
  if (isupper (wildNucleotide))
    r = toUpper (r);
  ASSERT (charInSet (r, extDnaAlphabet));

  return r;
}

// Assembly:
subq $0x1c8, %rsp            # imm = 0x1C8
movb %dil, %al
movb %al, 0x1c7(%rsp)
movb $0x20, 0x1c6(%rsp)
movsbl 0x1c7(%rsp), %edi
callq 0x4cb20
movsbl %al, %eax
addl $-0x61, %eax
movl %eax, %ecx
movq %rcx, 0x30(%rsp)
subl $0x18, %eax
ja 0xac5a4
movq 0x30(%rsp), %rax
leaq 0x3bafc(%rip), %rcx     # 0xe7fd4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movb $0x74, 0x1c6(%rsp)
jmp 0xac69e
movb $0x67, 0x1c6(%rsp)
jmp 0xac69e
movb $0x63, 0x1c6(%rsp)
jmp 0xac69e
movb $0x61, 0x1c6(%rsp)
jmp 0xac69e
movb $0x6b, 0x1c6(%rsp)
jmp 0xac69e
movb $0x79, 0x1c6(%rsp)
jmp 0xac69e
movb $0x77, 0x1c6(%rsp)
jmp 0xac69e
movb $0x73, 0x1c6(%rsp)
jmp 0xac69e
movb $0x72, 0x1c6(%rsp)
jmp 0xac69e
movb $0x6d, 0x1c6(%rsp)
jmp 0xac69e
movb $0x62, 0x1c6(%rsp)
jmp 0xac69e
movb $0x64, 0x1c6(%rsp)
jmp 0xac69e
movb $0x68, 0x1c6(%rsp)
jmp 0xac69e
movb $0x76, 0x1c6(%rsp)
jmp 0xac69e
movb $0x6e, 0x1c6(%rsp)
jmp 0xac69e
movb $0x1, 0x173(%rsp)
movl $0x10, %edi
callq 0xd3b0
movq %rax, 0x28(%rsp)
movsbl 0x1c7(%rsp), %esi
leaq 0x180(%rsp), %rdi
callq 0x11600
jmp 0xac5d2
leaq 0x3b905(%rip), %rsi     # 0xe7ede
leaq 0x1a0(%rsp), %rdi
leaq 0x180(%rsp), %rdx
callq 0x12260
jmp 0xac5f0
movq 0x28(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
callq 0xdbf0
jmp 0xac604
movq 0x28(%rsp), %rdi
movb $0x0, 0x173(%rsp)
movq 0x739d8(%rip), %rsi     # 0x11fff0
movq 0x73951(%rip), %rdx     # 0x11ff70
callq 0xdcd0
jmp 0xaca2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x178(%rsp)
movl %eax, 0x174(%rsp)
jmp 0xac683
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x178(%rsp)
movl %eax, 0x174(%rsp)
jmp 0xac676
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x178(%rsp)
movl %eax, 0x174(%rsp)
leaq 0x1a0(%rsp), %rdi
callq 0xdf08
leaq 0x180(%rsp), %rdi
callq 0xdf08
testb $0x1, 0x173(%rsp)
jne 0xac68f
jmp 0xac699
movq 0x28(%rsp), %rdi
callq 0xd570
jmp 0xaca1e
movsbl 0x1c7(%rsp), %edi
callq 0xd590
cmpl $0x0, %eax
je 0xac6c4
movsbl 0x1c6(%rsp), %edi
callq 0x4cae0
movb %al, 0x1c6(%rsp)
callq 0xd0a0
movl $0x0, (%rax)
movb 0x1c6(%rsp), %al
movb %al, 0x17(%rsp)
movq 0x746af(%rip), %rax     # 0x120d90
movq %rax, 0x18(%rsp)
leaq 0x14f(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0xdd50
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rdx
leaq 0x150(%rsp), %rdi
callq 0xfae0
jmp 0xac711
movb 0x17(%rsp), %al
movsbl %al, %edi
leaq 0x150(%rsp), %rsi
callq 0x4cba0
movb %al, 0x16(%rsp)
jmp 0xac72b
movb 0x16(%rsp), %al
xorb $-0x1, %al
movb %al, 0x15(%rsp)
leaq 0x150(%rsp), %rdi
callq 0xdf08
leaq 0x14f(%rsp), %rdi
callq 0xd7a0
movb 0x15(%rsp), %al
testb $0x1, %al
jne 0xac75c
jmp 0xaca0f
callq 0xd8c0
cmpl $0x0, %eax
jne 0xaca05
leaq 0xa7(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0xdd50
movq 0x8(%rsp), %rdx
leaq 0x3bcbe(%rip), %rsi     # 0xe8446
leaq 0xa8(%rsp), %rdi
callq 0xfae0
jmp 0xac797
leaq 0x80(%rsp), %rdi
movl $0x41a, %esi            # imm = 0x41A
callq 0x11600
jmp 0xac7ab
leaq 0xc8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
leaq 0x80(%rsp), %rdx
callq 0x11510
jmp 0xac7ca
leaq 0x36a00(%rip), %rdx     # 0xe31d1
leaq 0xe8(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x114c0
jmp 0xac7e8
leaq 0x3f(%rsp), %rdi
movq %rdi, (%rsp)
callq 0xdd50
movq (%rsp), %rdx
leaq 0x3beba(%rip), %rsi     # 0xe86bb
leaq 0x40(%rsp), %rdi
callq 0xfae0
jmp 0xac80d
leaq 0x37190(%rip), %rdx     # 0xe39a4
leaq 0x60(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x114c0
jmp 0xac825
leaq 0x108(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
leaq 0x60(%rsp), %rdx
callq 0x11510
jmp 0xac841
leaq 0x3be9e(%rip), %rdx     # 0xe86e6
leaq 0x128(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x114c0
jmp 0xac85f
leaq 0x128(%rsp), %rdi
callq 0x173d0
jmp 0xac86e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x178(%rsp)
movl %eax, 0x174(%rsp)
jmp 0xac8a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x178(%rsp)
movl %eax, 0x174(%rsp)
leaq 0x150(%rsp), %rdi
callq 0xdf08
leaq 0x14f(%rsp), %rdi
callq 0xd7a0
jmp 0xaca1e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x178(%rsp)
movl %eax, 0x174(%rsp)
jmp 0xac9f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x178(%rsp)
movl %eax, 0x174(%rsp)
jmp 0xac9e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x178(%rsp)
movl %eax, 0x174(%rsp)
jmp 0xac9dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x178(%rsp)
movl %eax, 0x174(%rsp)
jmp 0xac9cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x178(%rsp)
movl %eax, 0x174(%rsp)
jmp 0xac9b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x178(%rsp)
movl %eax, 0x174(%rsp)
jmp 0xac9ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x178(%rsp)
movl %eax, 0x174(%rsp)
jmp 0xac9a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x178(%rsp)
movl %eax, 0x174(%rsp)
jmp 0xac997
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x178(%rsp)
movl %eax, 0x174(%rsp)
leaq 0x128(%rsp), %rdi
callq 0xdf08
leaq 0x108(%rsp), %rdi
callq 0xdf08
leaq 0x60(%rsp), %rdi
callq 0xdf08
leaq 0x40(%rsp), %rdi
callq 0xdf08
leaq 0x3f(%rsp), %rdi
callq 0xd7a0
leaq 0xe8(%rsp), %rdi
callq 0xdf08
leaq 0xc8(%rsp), %rdi
callq 0xdf08
leaq 0x80(%rsp), %rdi
callq 0xdf08
leaq 0xa8(%rsp), %rdi
callq 0xdf08
leaq 0xa7(%rsp), %rdi
callq 0xd7a0
jmp 0xaca1e
movl $0x1, %edi
callq 0xd8e0
movb 0x1c6(%rsp), %al
addq $0x1c8, %rsp            # imm = 0x1C8
retq
movq 0x178(%rsp), %rdi
callq 0xdd40
nopl (%rax,%rax)