// File: ncbi[P]amr/seq.cpp
// Function: Seq_sp::moreGeneralAminoacid(char, char)
bool moreGeneralAminoacid (char wildAminoacid1,
                           char wildAminoacid2)
{
  if (wildAminoacid1 == wildAminoacid2)
    return true;


  switch (wildAminoacid1)
  {
    case 'x': return true;
    case 'b': return charInSet (wildAminoacid2, "dn");
    case 'z': return charInSet (wildAminoacid2, "eq");
    case 'j': return charInSet (wildAminoacid2, "il");
    case 'u': return wildAminoacid2 == '*'; 
    case 'o': return wildAminoacid2 == '*'; 
    case '*': return charInSet (wildAminoacid2, "uo");
  }

  return false;
}

// Assembly:
subq $0xf8, %rsp
movb %sil, %al
movb %dil, %cl
movb %cl, 0xf6(%rsp)
movb %al, 0xf5(%rsp)
movsbl 0xf6(%rsp), %eax
movsbl 0xf5(%rsp), %ecx
cmpl %ecx, %eax
jne 0xbb68c
movb $0x1, 0xf7(%rsp)
jmp 0xbba31
movsbl 0xf6(%rsp), %eax
movl %eax, 0x40(%rsp)
subl $0x2a, %eax
je 0xbb97d
jmp 0xbb6a3
movl 0x40(%rsp), %eax
subl $0x62, %eax
je 0xbb705
jmp 0xbb6ae
movl 0x40(%rsp), %eax
subl $0x6a, %eax
je 0xbb893
jmp 0xbb6bd
movl 0x40(%rsp), %eax
subl $0x6f, %eax
je 0xbb961
jmp 0xbb6cc
movl 0x40(%rsp), %eax
subl $0x75, %eax
je 0xbb945
jmp 0xbb6db
movl 0x40(%rsp), %eax
subl $0x78, %eax
je 0xbb6f8
jmp 0xbb6e6
movl 0x40(%rsp), %eax
subl $0x7a, %eax
je 0xbb7cc
jmp 0xbba29
movb $0x1, 0xf7(%rsp)
jmp 0xbba31
movb 0xf5(%rsp), %al
movb %al, 0x37(%rsp)
leaq 0xcf(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0xdd50
movq 0x38(%rsp), %rdx
leaq 0x2d869(%rip), %rsi     # 0xe8f97
leaq 0xd0(%rsp), %rdi
callq 0xfae0
jmp 0xbb73d
movb 0x37(%rsp), %al
movsbl %al, %edi
leaq 0xd0(%rsp), %rsi
callq 0x4cba0
movb %al, 0x36(%rsp)
jmp 0xbb757
movb 0x36(%rsp), %al
andb $0x1, %al
movb %al, 0xf7(%rsp)
leaq 0xd0(%rsp), %rdi
callq 0xdf08
leaq 0xcf(%rsp), %rdi
callq 0xd7a0
jmp 0xbba31
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
jmp 0xbb7ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
leaq 0xd0(%rsp), %rdi
callq 0xdf08
leaq 0xcf(%rsp), %rdi
callq 0xd7a0
jmp 0xbba42
movb 0xf5(%rsp), %al
movb %al, 0x27(%rsp)
leaq 0x97(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0xdd50
movq 0x28(%rsp), %rdx
leaq 0x2d7a5(%rip), %rsi     # 0xe8f9a
leaq 0x98(%rsp), %rdi
callq 0xfae0
jmp 0xbb804
movb 0x27(%rsp), %al
movsbl %al, %edi
leaq 0x98(%rsp), %rsi
callq 0x4cba0
movb %al, 0x26(%rsp)
jmp 0xbb81e
movb 0x26(%rsp), %al
andb $0x1, %al
movb %al, 0xf7(%rsp)
leaq 0x98(%rsp), %rdi
callq 0xdf08
leaq 0x97(%rsp), %rdi
callq 0xd7a0
jmp 0xbba31
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
jmp 0xbb881
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
leaq 0x98(%rsp), %rdi
callq 0xdf08
leaq 0x97(%rsp), %rdi
callq 0xd7a0
jmp 0xbba42
movb 0xf5(%rsp), %al
movb %al, 0x17(%rsp)
leaq 0x6f(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0xdd50
movq 0x18(%rsp), %rdx
leaq 0x2e3b4(%rip), %rsi     # 0xe9c6d
leaq 0x70(%rsp), %rdi
callq 0xfae0
jmp 0xbb8c5
movb 0x17(%rsp), %al
movsbl %al, %edi
leaq 0x70(%rsp), %rsi
callq 0x4cba0
movb %al, 0x16(%rsp)
jmp 0xbb8dc
movb 0x16(%rsp), %al
andb $0x1, %al
movb %al, 0xf7(%rsp)
leaq 0x70(%rsp), %rdi
callq 0xdf08
leaq 0x6f(%rsp), %rdi
callq 0xd7a0
jmp 0xbba31
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
jmp 0xbb936
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
leaq 0x70(%rsp), %rdi
callq 0xdf08
leaq 0x6f(%rsp), %rdi
callq 0xd7a0
jmp 0xbba42
movsbl 0xf5(%rsp), %eax
cmpl $0x2a, %eax
sete %al
andb $0x1, %al
movb %al, 0xf7(%rsp)
jmp 0xbba31
movsbl 0xf5(%rsp), %eax
cmpl $0x2a, %eax
sete %al
andb $0x1, %al
movb %al, 0xf7(%rsp)
jmp 0xbba31
movb 0xf5(%rsp), %al
movb %al, 0x7(%rsp)
leaq 0x47(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0xdd50
movq 0x8(%rsp), %rdx
leaq 0x2d5fa(%rip), %rsi     # 0xe8f9d
leaq 0x48(%rsp), %rdi
callq 0xfae0
jmp 0xbb9af
movb 0x7(%rsp), %al
movsbl %al, %edi
leaq 0x48(%rsp), %rsi
callq 0x4cba0
movb %al, 0x6(%rsp)
jmp 0xbb9c6
movb 0x6(%rsp), %al
andb $0x1, %al
movb %al, 0xf7(%rsp)
leaq 0x48(%rsp), %rdi
callq 0xdf08
leaq 0x47(%rsp), %rdi
callq 0xd7a0
jmp 0xbba31
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
jmp 0xbba1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
leaq 0x48(%rsp), %rdi
callq 0xdf08
leaq 0x47(%rsp), %rdi
callq 0xd7a0
jmp 0xbba42
movb $0x0, 0xf7(%rsp)
movb 0xf7(%rsp), %al
andb $0x1, %al
addq $0xf8, %rsp
retq
movq 0xc0(%rsp), %rdi
callq 0xdd40
nop