// File: ncbi[P]amr/seq.cpp
// Function: Seq_sp::wild2nucleotides(char, bool*)
uchar wild2nucleotides (char wildNucleotide,
              		      bool acgtb [5])
{
  bool& a = acgtb [0];
  bool& c = acgtb [1];
  bool& g = acgtb [2];
  bool& t = acgtb [3];
  a = false;
  c = false;
  g = false;
  t = false;

  // acgtb[4]
  if (wildNucleotide == ' ')
  {
    acgtb [4] = false;
    return 0;
  }
  if (wildNucleotide == '-')
  {
    acgtb [4] = true;
    return 1;
  }
  acgtb [4] = isUpper (wildNucleotide);
  
  switch (toLower (wildNucleotide))
    {
      case 'a': a = true;
      Case 'c':           c = true;
      Case 'g':                     g = true;
      Case 't':                               t = true;
      Case 'm': a = true; c = true;
      Case 'r': a = true;           g = true;
      Case 'w': a = true;                     t = true;
      Case 's':           c = true; g = true;
      Case 'y':           c = true;           t = true;
      Case 'k':                     g = true; t = true;
      Case 'v': a = true; c = true; g = true;
      Case 'h': a = true; c = true;           t = true;
      Case 'd': a = true;           g = true; t = true;
      Case 'b':           c = true; g = true; t = true;
      Case 'n': a = true; c = true; g = true; t = true;
      Default: printf ("!%c! %d\n", wildNucleotide, wildNucleotide);
               ERROR;
    }


  uchar n = 0;
  FOR (uchar, i, 5)
    if (acgtb [i])
      n++;
  ASSERT (n > 0);


  return n;
}

// Assembly:
subq $0x288, %rsp            # imm = 0x288
movb %dil, %al
movb %al, 0x286(%rsp)
movq %rsi, 0x278(%rsp)
movq 0x278(%rsp), %rax
movq %rax, 0x270(%rsp)
movq 0x278(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x268(%rsp)
movq 0x278(%rsp), %rax
addq $0x2, %rax
movq %rax, 0x260(%rsp)
movq 0x278(%rsp), %rax
addq $0x3, %rax
movq %rax, 0x258(%rsp)
movq 0x270(%rsp), %rax
movb $0x0, (%rax)
movq 0x268(%rsp), %rax
movb $0x0, (%rax)
movq 0x260(%rsp), %rax
movb $0x0, (%rax)
movq 0x258(%rsp), %rax
movb $0x0, (%rax)
movsbl 0x286(%rsp), %eax
cmpl $0x20, %eax
jne 0xabb27
movq 0x278(%rsp), %rax
movb $0x0, 0x4(%rax)
movb $0x0, 0x287(%rsp)
jmp 0xac2d1
movsbl 0x286(%rsp), %eax
cmpl $0x2d, %eax
jne 0xabb4d
movq 0x278(%rsp), %rax
movb $0x1, 0x4(%rax)
movb $0x1, 0x287(%rsp)
jmp 0xac2d1
movsbl 0x286(%rsp), %edi
callq 0x4cb40
movb %al, %cl
movq 0x278(%rsp), %rax
movb %cl, 0x4(%rax)
movsbl 0x286(%rsp), %edi
callq 0x4cb20
movsbl %al, %eax
addl $-0x61, %eax
movl %eax, %ecx
movq %rcx, 0x20(%rsp)
subl $0x18, %eax
ja 0xabd4a
movq 0x20(%rsp), %rax
leaq 0x3c3da(%rip), %rcx     # 0xe7f70
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x270(%rsp), %rax
movb $0x1, (%rax)
jmp 0xabfef
movq 0x268(%rsp), %rax
movb $0x1, (%rax)
jmp 0xabfef
movq 0x260(%rsp), %rax
movb $0x1, (%rax)
jmp 0xabfef
movq 0x258(%rsp), %rax
movb $0x1, (%rax)
jmp 0xabfef
movq 0x270(%rsp), %rax
movb $0x1, (%rax)
movq 0x268(%rsp), %rax
movb $0x1, (%rax)
jmp 0xabfef
movq 0x270(%rsp), %rax
movb $0x1, (%rax)
movq 0x260(%rsp), %rax
movb $0x1, (%rax)
jmp 0xabfef
movq 0x270(%rsp), %rax
movb $0x1, (%rax)
movq 0x258(%rsp), %rax
movb $0x1, (%rax)
jmp 0xabfef
movq 0x268(%rsp), %rax
movb $0x1, (%rax)
movq 0x260(%rsp), %rax
movb $0x1, (%rax)
jmp 0xabfef
movq 0x268(%rsp), %rax
movb $0x1, (%rax)
movq 0x258(%rsp), %rax
movb $0x1, (%rax)
jmp 0xabfef
movq 0x260(%rsp), %rax
movb $0x1, (%rax)
movq 0x258(%rsp), %rax
movb $0x1, (%rax)
jmp 0xabfef
movq 0x270(%rsp), %rax
movb $0x1, (%rax)
movq 0x268(%rsp), %rax
movb $0x1, (%rax)
movq 0x260(%rsp), %rax
movb $0x1, (%rax)
jmp 0xabfef
movq 0x270(%rsp), %rax
movb $0x1, (%rax)
movq 0x268(%rsp), %rax
movb $0x1, (%rax)
movq 0x258(%rsp), %rax
movb $0x1, (%rax)
jmp 0xabfef
movq 0x270(%rsp), %rax
movb $0x1, (%rax)
movq 0x260(%rsp), %rax
movb $0x1, (%rax)
movq 0x258(%rsp), %rax
movb $0x1, (%rax)
jmp 0xabfef
movq 0x268(%rsp), %rax
movb $0x1, (%rax)
movq 0x260(%rsp), %rax
movb $0x1, (%rax)
movq 0x258(%rsp), %rax
movb $0x1, (%rax)
jmp 0xabfef
movq 0x270(%rsp), %rax
movb $0x1, (%rax)
movq 0x268(%rsp), %rax
movb $0x1, (%rax)
movq 0x260(%rsp), %rax
movb $0x1, (%rax)
movq 0x258(%rsp), %rax
movb $0x1, (%rax)
jmp 0xabfef
movsbl 0x286(%rsp), %esi
movsbl 0x286(%rsp), %edx
leaq 0x3c924(%rip), %rdi     # 0xe8685
movb $0x0, %al
callq 0xd0b0
callq 0xd8c0
cmpl $0x0, %eax
jne 0xabfe5
leaq 0x1b7(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0xdd50
movq 0x18(%rsp), %rdx
leaq 0x3c6b2(%rip), %rsi     # 0xe8446
leaq 0x1b8(%rsp), %rdi
callq 0xfae0
jmp 0xabda3
leaq 0x180(%rsp), %rdi
movl $0x39f, %esi            # imm = 0x39F
callq 0x11600
jmp 0xabdb7
leaq 0x1d8(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
leaq 0x180(%rsp), %rdx
callq 0x11510
jmp 0xabdd6
leaq 0x373f4(%rip), %rdx     # 0xe31d1
leaq 0x1f8(%rsp), %rdi
leaq 0x1d8(%rsp), %rsi
callq 0x114c0
jmp 0xabdf4
leaq 0x13f(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0xdd50
movq 0x10(%rsp), %rdx
leaq 0x3c87c(%rip), %rsi     # 0xe868e
leaq 0x140(%rsp), %rdi
callq 0xfae0
jmp 0xabe21
leaq 0x37b7c(%rip), %rdx     # 0xe39a4
leaq 0x160(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x114c0
jmp 0xabe3f
leaq 0x218(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
leaq 0x160(%rsp), %rdx
callq 0x11510
jmp 0xabe5e
leaq 0x382b4(%rip), %rdx     # 0xe4119
leaq 0x238(%rsp), %rdi
leaq 0x218(%rsp), %rsi
callq 0x114c0
jmp 0xabe7c
leaq 0x238(%rsp), %rdi
callq 0x173d0
jmp 0xabe8b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xabfd3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xabfc6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xabfb9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xabfac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xabf92
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xabf85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xabf78
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xabf6b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
leaq 0x238(%rsp), %rdi
callq 0xdf08
leaq 0x218(%rsp), %rdi
callq 0xdf08
leaq 0x160(%rsp), %rdi
callq 0xdf08
leaq 0x140(%rsp), %rdi
callq 0xdf08
leaq 0x13f(%rsp), %rdi
callq 0xd7a0
leaq 0x1f8(%rsp), %rdi
callq 0xdf08
leaq 0x1d8(%rsp), %rdi
callq 0xdf08
leaq 0x180(%rsp), %rdi
callq 0xdf08
leaq 0x1b8(%rsp), %rdi
callq 0xdf08
leaq 0x1b7(%rsp), %rdi
callq 0xd7a0
jmp 0xac2e0
movl $0x1, %edi
callq 0xd8e0
movb $0x0, 0x13e(%rsp)
movb $0x0, 0x13d(%rsp)
movzbl 0x13d(%rsp), %eax
cmpl $0x5, %eax
jge 0xac046
movq 0x278(%rsp), %rax
movzbl 0x13d(%rsp), %ecx
testb $0x1, (%rax,%rcx)
je 0xac032
movb 0x13e(%rsp), %al
addb $0x1, %al
movb %al, 0x13e(%rsp)
jmp 0xac034
movb 0x13d(%rsp), %al
addb $0x1, %al
movb %al, 0x13d(%rsp)
jmp 0xabfff
callq 0xd0a0
movl $0x0, (%rax)
movzbl 0x13e(%rsp), %eax
cmpl $0x0, %eax
jg 0xac2c3
callq 0xd8c0
cmpl $0x0, %eax
jne 0xac2b9
leaq 0x97(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0xdd50
movq 0x8(%rsp), %rdx
leaq 0x3c3b8(%rip), %rsi     # 0xe8446
leaq 0x98(%rsp), %rdi
callq 0xfae0
jmp 0xac09d
leaq 0x70(%rsp), %rdi
movl $0x3a7, %esi            # imm = 0x3A7
callq 0x11600
jmp 0xac0ae
leaq 0xb8(%rsp), %rdi
leaq 0x98(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x11510
jmp 0xac0ca
leaq 0x37100(%rip), %rdx     # 0xe31d1
leaq 0xd8(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x114c0
jmp 0xac0e8
leaq 0x2f(%rsp), %rdi
movq %rdi, (%rsp)
callq 0xdd50
movq (%rsp), %rdx
leaq 0x3c58d(%rip), %rsi     # 0xe868e
leaq 0x30(%rsp), %rdi
callq 0xfae0
jmp 0xac10d
leaq 0x37890(%rip), %rdx     # 0xe39a4
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x114c0
jmp 0xac125
leaq 0xf8(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0x11510
jmp 0xac141
leaq 0x3d2ff(%rip), %rdx     # 0xe9447
leaq 0x118(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0x114c0
jmp 0xac15f
leaq 0x118(%rsp), %rdi
callq 0x173d0
jmp 0xac16e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xac2aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xac29d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xac293
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xac286
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xac26f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xac265
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xac25b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
jmp 0xac24e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a8(%rsp)
movl %eax, 0x1a4(%rsp)
leaq 0x118(%rsp), %rdi
callq 0xdf08
leaq 0xf8(%rsp), %rdi
callq 0xdf08
leaq 0x50(%rsp), %rdi
callq 0xdf08
leaq 0x30(%rsp), %rdi
callq 0xdf08
leaq 0x2f(%rsp), %rdi
callq 0xd7a0
leaq 0xd8(%rsp), %rdi
callq 0xdf08
leaq 0xb8(%rsp), %rdi
callq 0xdf08
leaq 0x70(%rsp), %rdi
callq 0xdf08
leaq 0x98(%rsp), %rdi
callq 0xdf08
leaq 0x97(%rsp), %rdi
callq 0xd7a0
jmp 0xac2e0
movl $0x1, %edi
callq 0xd8e0
movb 0x13e(%rsp), %al
movb %al, 0x287(%rsp)
movb 0x287(%rsp), %al
addq $0x288, %rsp            # imm = 0x288
retq
movq 0x1a8(%rsp), %rdi
callq 0xdd40
nopl (%rax)