// File: /workspace/github_cpp_makefile_star2_O2/ncbi[P]amr/tsv.cpp
// Function: Common_sp::TextTable::qc() const
void TextTable::qc () const
{
  if (! qc_on)
    return;
  if (! name. empty ())
    Named::qc (); 

  {    
    StringVector v;  v. reserve (header. size ());
    FFOR (size_t, i, header. size ())
    {
      const Header& h = header [i];
      try { h. qc (); }
        catch (const exception &e)
        {
          throw runtime_error ("Header column #" + to_string (i + 1) + ": " + e. what ());
        }
      v << h. name;
    }
    v. sort ();
    const size_t i = v. findDuplicate ();
    if (i != no_index)
      throw Error (*this, "Duplicate column name: " + strQuote (v [i]));
  }
  
  FFOR (RowNum, i, rows. size ())
  {
    if (rows [i]. size () != header. size ())
      throw Error (*this, "Row " + to_string (i + 1) + " contains " + to_string (rows [i]. size ()) + " columns whereas table has " + to_string (header. size ()) + " columns");
    for (const string& field : rows [i])
    {
      if (contains (field, '\t'))
        throw Error (*this, "Field " + strQuote (header [i]. name) + " of row " + to_string (i + 1) + " contains a tab character");
      if (contains (field, '\n'))
        throw Error (*this, "Field " + strQuote (header [i]. name) + " of row " + to_string (i + 1) + " contains an EOL character");
    }
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x148, %rsp            # imm = 0x148
movq %rdi, 0x8(%rsp)
leaq 0x32d81(%rip), %rax     # 0x84ae0
cmpb $0x1, (%rax)
jne 0x51eb3
movq 0x8(%rsp), %rbp
cmpq $0x0, 0x10(%rbp)
je 0x51d7c
movq %rbp, %rdi
callq 0x29978
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movups %xmm0, 0x9(%rdi)
movaps %xmm0, (%rdi)
movq 0x38(%rbp), %rsi
subq 0x30(%rbp), %rsi
sarq $0x7, %rsi
callq 0x1e7ce
movq 0x38(%rbp), %r12
subq 0x30(%rbp), %r12
leaq 0x30(%rbp), %r13
sarq $0x7, %r12
xorl %r15d, %r15d
leaq 0x10(%rsp), %rbx
cmpq %r15, %r12
je 0x51de4
movq %r13, %rdi
movq %r15, %rsi
callq 0x55468
movq %rax, %r14
movq (%rax), %rax
movq %r14, %rdi
callq *0x18(%rax)
addq $0x8, %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1d1d0
incq %r15
jmp 0x51db4
leaq 0x10(%rsp), %rdi
callq 0x1e78e
leaq 0x10(%rsp), %rdi
pushq $0x1
popq %rsi
callq 0x4a8f8
movq %rax, %r14
movq %r13, 0x78(%rsp)
cmpq $-0x1, %rax
jne 0x5219b
leaq 0x10(%rsp), %rdi
callq 0x20bee
leaq 0x50(%rbp), %r13
movq 0x58(%rbp), %rax
subq 0x50(%rbp), %rax
sarq $0x5, %rax
movq %rax, 0xe0(%rsp)
xorl %r15d, %r15d
pushq $0x9
popq %rbx
pushq $0xa
popq %rbp
cmpq 0xe0(%rsp), %r15
je 0x51eb3
movq %r13, %rdi
movq %r15, %rsi
callq 0x554d2
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x5, %rcx
movq 0x8(%rsp), %rdx
movq 0x38(%rdx), %rax
subq 0x30(%rdx), %rax
sarq $0x7, %rax
cmpq %rax, %rcx
jne 0x52071
movq %r13, %rdi
movq %r15, %rsi
callq 0x554d2
movq (%rax), %r14
movq 0x8(%rax), %r12
cmpq %r12, %r14
je 0x51eae
movq %r14, %rdi
movl %ebx, %esi
callq 0x1c948
testb %al, %al
jne 0x51ec5
movq %r14, %rdi
movl %ebp, %esi
callq 0x1c948
addq $0x20, %r14
testb %al, %al
je 0x51e84
jmp 0x51f9b
incq %r15
jmp 0x51e38
addq $0x148, %rsp            # imm = 0x148
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x10
popq %rdi
callq 0xb300
movq %rax, %rbx
movq 0x78(%rsp), %rdi
movq %r15, %rsi
callq 0x55468
addq $0x8, %rax
leaq 0x80(%rsp), %rdi
pushq $0x22
popq %rdx
movq %rax, %rsi
callq 0x243b1
leaq 0xd80f(%rip), %rsi      # 0x5f70a
leaq 0xa0(%rsp), %rdi
leaq 0x80(%rsp), %rdx
callq 0x1b94c
leaq 0xd7fa(%rip), %rdx      # 0x5f711
leaq 0x38(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0x1b92d
incq %r15
leaq 0xc0(%rsp), %rdi
movq %r15, %rsi
callq 0x1c047
leaq 0x58(%rsp), %rdi
leaq 0x38(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
callq 0x1ca3c
leaq 0xd7c0(%rip), %rdx      # 0x5f71a
leaq 0x10(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x1b92d
movb $0x1, %bpl
leaq 0x10(%rsp), %rdx
movq %rbx, %rdi
movq 0x8(%rsp), %rsi
callq 0x20ac0
xorl %ebp, %ebp
leaq 0x30a11(%rip), %rsi     # 0x82998
movq 0x31fe2(%rip), %rdx     # 0x83f70
movq %rbx, %rdi
callq 0xb9d0
jmp 0x52402
pushq $0x10
popq %rdi
callq 0xb300
movq %rax, %rbx
movq 0x78(%rsp), %rdi
movq %r15, %rsi
callq 0x55468
addq $0x8, %rax
leaq 0x80(%rsp), %rdi
pushq $0x22
popq %rdx
movq %rax, %rsi
callq 0x243b1
leaq 0xd739(%rip), %rsi      # 0x5f70a
leaq 0xa0(%rsp), %rdi
leaq 0x80(%rsp), %rdx
callq 0x1b94c
leaq 0xd724(%rip), %rdx      # 0x5f711
leaq 0x38(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0x1b92d
incq %r15
leaq 0xc0(%rsp), %rdi
movq %r15, %rsi
callq 0x1c047
leaq 0x58(%rsp), %rdi
leaq 0x38(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
callq 0x1ca3c
leaq 0xd704(%rip), %rdx      # 0x5f734
leaq 0x10(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x1b92d
movb $0x1, %bpl
leaq 0x10(%rsp), %rdx
movq %rbx, %rdi
movq 0x8(%rsp), %rsi
callq 0x20ac0
xorl %ebp, %ebp
leaq 0x3093b(%rip), %rsi     # 0x82998
movq 0x31f0c(%rip), %rdx     # 0x83f70
movq %rbx, %rdi
callq 0xb9d0
jmp 0x52402
pushq $0x10
popq %rdi
callq 0xb300
movq %rax, %rbx
leaq 0x1(%r15), %rsi
leaq 0x128(%rsp), %rdi
callq 0x1c047
leaq 0xd607(%rip), %rsi      # 0x5f69b
leaq 0xc0(%rsp), %rdi
leaq 0x128(%rsp), %rdx
callq 0x1b94c
leaq 0xd942(%rip), %rdx      # 0x5f9f2
leaq 0x80(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1b92d
movq %r13, %rdi
movq %r15, %rsi
callq 0x554d2
movq 0x8(%rax), %rsi
subq (%rax), %rsi
sarq $0x5, %rsi
leaq 0x108(%rsp), %rdi
callq 0x1c047
leaq 0xa0(%rsp), %rdi
leaq 0x80(%rsp), %rsi
leaq 0x108(%rsp), %rdx
callq 0x1ca3c
leaq 0xd5e2(%rip), %rdx      # 0x5f6ee
leaq 0x38(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0x1b92d
movq 0x8(%rsp), %rax
movq 0x38(%rax), %rsi
subq 0x30(%rax), %rsi
sarq $0x7, %rsi
leaq 0xe8(%rsp), %rdi
callq 0x1c047
leaq 0x58(%rsp), %rdi
leaq 0x38(%rsp), %rsi
leaq 0xe8(%rsp), %rdx
callq 0x1ca3c
leaq 0xd563(%rip), %rdx      # 0x5f6bd
leaq 0x10(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x1b92d
movb $0x1, %bpl
leaq 0x10(%rsp), %rdx
movq %rbx, %rdi
movq 0x8(%rsp), %rsi
callq 0x20ac0
xorl %ebp, %ebp
leaq 0x30811(%rip), %rsi     # 0x82998
movq 0x31de2(%rip), %rdx     # 0x83f70
movq %rbx, %rdi
callq 0xb9d0
jmp 0x52402
pushq $0x10
popq %rdi
callq 0xb300
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
movq %r14, %rsi
callq 0x1d5ec
leaq 0x38(%rsp), %rdi
pushq $0x22
popq %rdx
movq %rax, %rsi
callq 0x243b1
leaq 0xd50c(%rip), %rsi      # 0x5f6d6
leaq 0x58(%rsp), %rdi
leaq 0x38(%rsp), %rdx
callq 0x1b94c
movb $0x1, %bpl
leaq 0x58(%rsp), %rdx
movq %rbx, %rdi
movq 0x8(%rsp), %rsi
callq 0x20ac0
xorl %ebp, %ebp
leaq 0x307a1(%rip), %rsi     # 0x82998
movq 0x31d72(%rip), %rdx     # 0x83f70
movq %rbx, %rdi
callq 0xb9d0
jmp 0x52402
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0xbb68
jmp 0x52220
movq %rax, %r14
movb $0x1, %bpl
leaq 0x58(%rsp), %rdi
callq 0xbb68
jmp 0x52232
movq %rax, %r14
movb $0x1, %bpl
leaq 0xe8(%rsp), %rdi
callq 0xbb68
jmp 0x52247
movq %rax, %r14
movb $0x1, %bpl
leaq 0x38(%rsp), %rdi
callq 0xbb68
jmp 0x52282
movq %rax, %r14
leaq 0x58(%rsp), %rdi
callq 0xbb68
jmp 0x52268
movq %rax, %r14
movb $0x1, %bpl
leaq 0x38(%rsp), %rdi
callq 0xbb68
testb %bpl, %bpl
jne 0x522a9
jmp 0x52486
movq %rax, %r14
movb $0x1, %bpl
leaq 0xa0(%rsp), %rdi
callq 0xbb68
jmp 0x52297
movq %rax, %r14
movb $0x1, %bpl
leaq 0x108(%rsp), %rdi
callq 0xbb68
jmp 0x522c6
movq %rax, %r14
movq %rbx, %rdi
callq 0xb470
jmp 0x52486
jmp 0x52483
jmp 0x52483
movq %rax, %r14
movb $0x1, %bpl
leaq 0x80(%rsp), %rdi
callq 0xbb68
jmp 0x522db
movq %rax, %r14
movb $0x1, %bpl
leaq 0xc0(%rsp), %rdi
callq 0xbb68
jmp 0x52315
jmp 0x522ee
jmp 0x522fd
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0xbb68
jmp 0x52303
movq %rax, %r14
movb $0x1, %bpl
leaq 0x58(%rsp), %rdi
callq 0xbb68
jmp 0x5232a
movq %rax, %r14
movb $0x1, %bpl
leaq 0x128(%rsp), %rdi
jmp 0x524a2
jmp 0x52324
movq %rax, %r14
movb $0x1, %bpl
leaq 0xc0(%rsp), %rdi
callq 0xbb68
jmp 0x52346
jmp 0x524b0
jmp 0x52340
movq %rax, %r14
movb $0x1, %bpl
leaq 0x38(%rsp), %rdi
callq 0xbb68
jmp 0x52474
movq %rax, %r14
cmpl $0x1, %edx
jne 0x52486
movq %r14, %rdi
callq 0xb270
movq %rax, %r14
pushq $0x10
popq %rdi
callq 0xb300
movq %rax, %rbx
incq %r15
leaq 0x80(%rsp), %rdi
movq %r15, %rsi
callq 0x1c047
leaq 0xd335(%rip), %rsi      # 0x5f6c6
leaq 0xa0(%rsp), %rdi
leaq 0x80(%rsp), %rdx
callq 0x1b94c
leaq 0x9563(%rip), %rdx      # 0x5b910
leaq 0x38(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0x1b92d
movq (%r14), %rax
movq %r14, %rdi
callq *0x10(%rax)
leaq 0x58(%rsp), %rdi
leaq 0x38(%rsp), %rsi
movq %rax, %rdx
callq 0x1b92d
movb $0x1, %bpl
leaq 0x58(%rsp), %rsi
movq %rbx, %rdi
callq 0xb940
xorl %ebp, %ebp
movq 0x31bf5(%rip), %rsi     # 0x83fe8
movq 0x31b66(%rip), %rdx     # 0x83f60
movq %rbx, %rdi
callq 0xb9d0
movq %rax, %r14
leaq 0x58(%rsp), %rdi
callq 0xbb68
jmp 0x52417
movq %rax, %r14
movb $0x1, %bpl
leaq 0x38(%rsp), %rdi
callq 0xbb68
jmp 0x52429
movq %rax, %r14
movb $0x1, %bpl
leaq 0xa0(%rsp), %rdi
callq 0xbb68
jmp 0x5243e
movq %rax, %r14
movb $0x1, %bpl
leaq 0x80(%rsp), %rdi
callq 0xbb68
testb %bpl, %bpl
jne 0x52455
jmp 0x5245d
movq %rax, %r14
movq %rbx, %rdi
callq 0xb470
callq 0xb970
jmp 0x52486
movq %rax, %rdi
callq 0x1bdcd
jmp 0x5246e
movq %rax, %r14
movb $0x1, %bpl
leaq 0xa0(%rsp), %rdi
callq 0xbb68
jmp 0x5249a
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x20bee
jmp 0x524bb
jmp 0x52494
movq %rax, %r14
movb $0x1, %bpl
leaq 0x80(%rsp), %rdi
callq 0xbb68
testb %bpl, %bpl
jne 0x524b3
jmp 0x524bb
jmp 0x524b0
movq %rax, %r14
movq %rbx, %rdi
callq 0xb470
movq %r14, %rdi
callq 0xba30
nop