// File: /workspace/github_cpp_makefile_star2_O2/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:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x110, %rsp            # imm = 0x110
movq %rsi, %rbx
andl $0x0, (%rsi)
cmpl $0x20, %edi
je 0x48c06
movl %edi, %ebp
cmpl $0x2d, %edi
jne 0x48c12
movb $0x1, %r14b
jmp 0x48c09
xorl %r14d, %r14d
movb %r14b, 0x4(%rbx)
jmp 0x48ccb
movsbl %bpl, %r14d
movl %r14d, %edi
callq 0x2a33e
movb %al, 0x4(%rbx)
movl %r14d, %edi
callq 0x2a336
movzbl %al, %eax
addl $-0x61, %eax
cmpl $0x18, %eax
ja 0x48dae
leaq 0x1a1c9(%rip), %rcx     # 0x62e08
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movb $0x1, (%rbx)
jmp 0x48caa
movw $0x101, 0x1(%rbx)       # imm = 0x101
jmp 0x48caa
movl $0x1010101, (%rbx)      # imm = 0x1010101
jmp 0x48caa
movw $0x101, (%rbx)          # imm = 0x101
movb $0x1, 0x2(%rbx)
jmp 0x48caa
movb $0x1, %al
movb %al, (%rbx)
movb %al, 0x2(%rbx)
jmp 0x48caa
movw $0x101, (%rbx)          # imm = 0x101
jmp 0x48caa
movb $0x1, %al
movb %al, (%rbx)
jmp 0x48c83
movb $0x1, %al
movb %al, 0x1(%rbx)
movb %al, 0x3(%rbx)
jmp 0x48caa
movb $0x1, (%rbx)
movw $0x101, 0x2(%rbx)       # imm = 0x101
jmp 0x48caa
movw $0x101, 0x1(%rbx)       # imm = 0x101
jmp 0x48ca0
movw $0x101, (%rbx)          # imm = 0x101
movb $0x1, 0x3(%rbx)
jmp 0x48caa
movb $0x1, 0x1(%rbx)
xorl %eax, %eax
xorl %r14d, %r14d
cmpq $0x5, %rax
je 0x48cbe
addb (%rbx,%rax), %r14b
incq %rax
jmp 0x48caf
callq 0xc070
andl $0x0, (%rax)
testb %r14b, %r14b
je 0x48cda
movl %r14d, %eax
addq $0x110, %rsp            # imm = 0x110
popq %rbx
popq %r14
popq %rbp
retq
callq 0xc6d0
testl %eax, %eax
jne 0x48e94
leaq 0x1a324(%rip), %rsi     # 0x63012
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xdbbe
leaq 0x50(%rsp), %rdi
movl $0x3a7, %esi            # imm = 0x3A7
callq 0xe2d5
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0xe26e
leaq 0x154a7(%rip), %rdx     # 0x5e1d1
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xe24f
leaq 0x1a514(%rip), %rsi     # 0x6325a
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xdbbe
leaq 0x15b70(%rip), %rdx     # 0x5e8cc
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xe24f
leaq 0xd0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0xe26e
leaq 0x1b258(%rip), %rdx     # 0x63fe4
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0xe24f
leaq 0xf0(%rsp), %rdi
callq 0x101d0
leaq 0x1a49c(%rip), %rdi     # 0x63251
movl %ebp, %esi
movl %ebp, %edx
xorl %eax, %eax
callq 0xc080
callq 0xc6d0
testl %eax, %eax
jne 0x48e94
leaq 0x1a23e(%rip), %rsi     # 0x63012
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xdbbe
leaq 0x50(%rsp), %rdi
movl $0x39f, %esi            # imm = 0x39F
callq 0xe2d5
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0xe26e
leaq 0x153c1(%rip), %rdx     # 0x5e1d1
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xe24f
leaq 0x1a42e(%rip), %rsi     # 0x6325a
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xdbbe
leaq 0x15a8a(%rip), %rdx     # 0x5e8cc
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xe24f
leaq 0xd0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0xe26e
leaq 0x16184(%rip), %rdx     # 0x5eff6
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0xe24f
leaq 0xf0(%rsp), %rdi
callq 0x101d0
pushq $0x1
popq %rdi
callq 0xc6f0
jmp 0x48ea6
jmp 0x48eb8
jmp 0x48ecc
jmp 0x48edd
jmp 0x48eee
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0xcbe8
jmp 0x48ebb
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0xcbe8
jmp 0x48ecf
jmp 0x48f02
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xcbe8
jmp 0x48ee0
jmp 0x48f14
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xcbe8
jmp 0x48ef1
jmp 0x48f23
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0xcbe8
jmp 0x48f05
jmp 0x48f32
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0xcbe8
jmp 0x48f17
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xcbe8
jmp 0x48f26
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xcbe8
jmp 0x48f35
movq %rax, %rbx
movq %rbx, %rdi
callq 0xcaa0