// File: /workspace/github_cpp_makefile_star2_O2/ncbi[P]amr/seq.cpp
// Function: Seq_sp::Mutation::qc() const
void Mutation::qc () const
{
  if (! qc_on)
    return;
    
  QC_IMPLY (! geneName. empty (), isIdentifier (geneName, false));
  QC_ASSERT (pos != no_index);
  
  if (prot)
  {
    for (const char c : ref)
      if (c != *terminator && ! strchr (peptideAlphabet, c))
        throw runtime_error ("Protein mutation cannot have ambiguities in the reference sequence");
    for (const char c : allele)
      QC_ASSERT (strchr (extTermPeptideAlphabet, c));
  }
  else
  {
    for (const char c : ref)
      if (! strchr (dnaAlphabet, c))
        throw runtime_error ("DNA mutation cannot have ambiguities in the reference sequence");
    for (const char c : allele)
      QC_ASSERT (strchr (extDnaAlphabet, c));
  }

  QC_IMPLY (! frameshift, ref != allele);
  QC_IMPLY (frameshift, prot && allele. empty ());
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
leaq 0x33a8c(%rip), %rax     # 0x89ac8
cmpb $0x1, (%rax)
jne 0x56449
movq %rdi, %rbp
cmpq $0x0, 0x18(%rdi)
je 0x56148
leaq 0x10(%rbp), %r15
callq 0xc070
movq %rax, %r14
andl $0x0, (%rax)
movq %r15, %rdi
xorl %esi, %esi
callq 0x118db
testb %al, %al
jne 0x56150
callq 0xc6d0
testl %eax, %eax
jne 0x56707
leaq 0xcf8a(%rip), %rsi      # 0x63012
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xdbbe
leaq 0x50(%rsp), %rdi
movl $0x1207, %esi           # imm = 0x1207
callq 0xe2d5
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0xe26e
leaq 0x810d(%rip), %rdx      # 0x5e1d1
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xe24f
leaq 0xe2d8(%rip), %rsi      # 0x643b8
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xdbbe
leaq 0x87d6(%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 0xe2bc(%rip), %rdx      # 0x643e2
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0xe24f
leaq 0xf0(%rsp), %rdi
callq 0x101d0
callq 0xc070
movq %rax, %r14
andl $0x0, (%r14)
cmpq $-0x1, 0x30(%rbp)
je 0x5648b
movq 0x38(%rbp), %r12
movq 0x40(%rbp), %r13
cmpb $0x1, 0x8(%rbp)
jne 0x561ab
movq %rbp, 0x110(%rsp)
movq 0x33a94(%rip), %rbp     # 0x89c10
movq 0x338dd(%rip), %r15     # 0x89a60
xorl %ebx, %ebx
cmpq %rbx, %r13
je 0x561f1
movsbl (%r12,%rbx), %esi
cmpb (%rbp), %sil
je 0x561a6
movq %r15, %rdi
callq 0xc250
testq %rax, %rax
je 0x5645b
incq %rbx
jmp 0x56185
movq 0x3389e(%rip), %r15     # 0x89a50
xorl %ebx, %ebx
cmpq %rbx, %r13
je 0x56301
movsbl (%r12,%rbx), %esi
movq %r15, %rdi
callq 0xc250
incq %rbx
testq %rax, %rax
jne 0x561b4
pushq $0x10
popq %rdi
callq 0xc310
movq %rax, %r14
leaq 0xe293(%rip), %rsi      # 0x64477
movq %rax, %rdi
callq 0xc280
jmp 0x56475
movq 0x110(%rsp), %rbp
movq 0x58(%rbp), %rbx
movq 0x60(%rbp), %r12
movq 0x33a10(%rip), %r15     # 0x89c18
xorl %r13d, %r13d
cmpq %r13, %r12
je 0x56409
movsbl (%rbx,%r13), %esi
andl $0x0, (%r14)
movq %r15, %rdi
callq 0xc250
incq %r13
testq %rax, %rax
jne 0x5620b
callq 0xc6d0
testl %eax, %eax
jne 0x56707
leaq 0xcdd1(%rip), %rsi      # 0x63012
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xdbbe
leaq 0x50(%rsp), %rdi
movl $0x1210, %esi           # imm = 0x1210
callq 0xe2d5
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0xe26e
leaq 0x7f54(%rip), %rdx      # 0x5e1d1
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xe24f
leaq 0xe11f(%rip), %rsi      # 0x643b8
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xdbbe
leaq 0x861d(%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 0xe175(%rip), %rdx      # 0x64454
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0xe24f
leaq 0xf0(%rsp), %rdi
callq 0x101d0
movq 0x58(%rbp), %rbx
movq 0x60(%rbp), %r12
movq 0x338f0(%rip), %r15     # 0x89c00
xorl %r13d, %r13d
cmpq %r13, %r12
je 0x56409
movsbl (%rbx,%r13), %esi
andl $0x0, (%r14)
movq %r15, %rdi
callq 0xc250
incq %r13
testq %rax, %rax
jne 0x56313
callq 0xc6d0
testl %eax, %eax
jne 0x56707
leaq 0xccc9(%rip), %rsi      # 0x63012
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xdbbe
leaq 0x50(%rsp), %rdi
movl $0x1218, %esi           # imm = 0x1218
callq 0xe2d5
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0xe26e
leaq 0x7e4c(%rip), %rdx      # 0x5e1d1
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xe24f
leaq 0xe017(%rip), %rsi      # 0x643b8
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xdbbe
leaq 0x8515(%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 0xe0cf(%rip), %rdx      # 0x644b6
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0xe24f
leaq 0xf0(%rsp), %rdi
callq 0x101d0
movb 0x78(%rbp), %al
testb %al, %al
jne 0x5642c
andl $0x0, (%r14)
leaq 0x38(%rbp), %rdi
leaq 0x58(%rbp), %rsi
callq 0x2a3f3
testb %al, %al
je 0x5655f
movb 0x78(%rbp), %al
testb $0x1, %al
je 0x56449
andl $0x0, (%r14)
cmpb $0x1, 0x8(%rbp)
jne 0x56633
cmpq $0x0, 0x60(%rbp)
jne 0x56633
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x10
popq %rdi
callq 0xc310
movq %rax, %r14
leaq 0xdfa4(%rip), %rsi      # 0x64411
movq %rax, %rdi
callq 0xc280
movq 0x32b74(%rip), %rsi     # 0x88ff0
movq 0x32ae5(%rip), %rdx     # 0x88f68
movq %r14, %rdi
callq 0xca40
callq 0xc6d0
testl %eax, %eax
jne 0x56707
leaq 0xcb73(%rip), %rsi      # 0x63012
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xdbbe
leaq 0x50(%rsp), %rdi
movl $0x1208, %esi           # imm = 0x1208
callq 0xe2d5
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0xe26e
leaq 0x7cf6(%rip), %rdx      # 0x5e1d1
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xe24f
leaq 0xdec1(%rip), %rsi      # 0x643b8
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xdbbe
leaq 0x83bf(%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 0xdec4(%rip), %rdx      # 0x64401
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0xe24f
leaq 0xf0(%rsp), %rdi
callq 0x101d0
callq 0xc6d0
testl %eax, %eax
jne 0x56707
leaq 0xca9f(%rip), %rsi      # 0x63012
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xdbbe
leaq 0x50(%rsp), %rdi
movl $0x121b, %esi           # imm = 0x121B
callq 0xe2d5
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0xe26e
leaq 0x7c22(%rip), %rdx      # 0x5e1d1
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xe24f
leaq 0xdded(%rip), %rsi      # 0x643b8
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xdbbe
leaq 0x82eb(%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 0xdec0(%rip), %rdx      # 0x644d1
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0xe24f
leaq 0xf0(%rsp), %rdi
callq 0x101d0
callq 0xc6d0
testl %eax, %eax
jne 0x56707
leaq 0xc9cb(%rip), %rsi      # 0x63012
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xdbbe
leaq 0x50(%rsp), %rdi
movl $0x121c, %esi           # imm = 0x121C
callq 0xe2d5
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0xe26e
leaq 0x7b4e(%rip), %rdx      # 0x5e1d1
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xe24f
leaq 0xdd19(%rip), %rsi      # 0x643b8
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xdbbe
leaq 0x8217(%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 0xddfa(%rip), %rdx      # 0x644df
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0xe24f
leaq 0xf0(%rsp), %rdi
callq 0x101d0
pushq $0x1
popq %rdi
callq 0xc6f0
jmp 0x56744
jmp 0x56756
jmp 0x56744
jmp 0x56756
jmp 0x56744
jmp 0x56756
jmp 0x56772
jmp 0x56772
jmp 0x56744
jmp 0x56756
jmp 0x56772
jmp 0x5678b
jmp 0x5678b
jmp 0x56772
jmp 0x5678b
jmp 0x567a4
jmp 0x567a4
jmp 0x5678b
jmp 0x567a4
jmp 0x567ba
jmp 0x567ba
jmp 0x567a4
jmp 0x567ba
jmp 0x56744
jmp 0x56756
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0xcbe8
jmp 0x56759
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0xcbe8
jmp 0x56775
jmp 0x567ce
jmp 0x567ce
jmp 0x567ba
jmp 0x567ce
jmp 0x56772
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xcbe8
jmp 0x5678e
jmp 0x567df
jmp 0x567df
jmp 0x567ce
jmp 0x567df
jmp 0x5678b
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xcbe8
jmp 0x567a7
jmp 0x567f0
jmp 0x567f0
jmp 0x567df
jmp 0x567f0
jmp 0x567a4
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0xcbe8
jmp 0x567bd
jmp 0x567f0
jmp 0x567ba
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0xcbe8
jmp 0x567d1
jmp 0x567ce
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xcbe8
jmp 0x567e2
jmp 0x567df
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xcbe8
jmp 0x56802
jmp 0x567f0
movq %rax, %rbx
jmp 0x56802
jmp 0x567f7
movq %rax, %rbx
movq %r14, %rdi
callq 0xc470
movq %rbx, %rdi
callq 0xcaa0