// File: 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:
subq $0x488, %rsp            # imm = 0x488
movq %rdi, 0x480(%rsp)
movq 0x480(%rsp), %rax
movq %rax, 0x68(%rsp)
leaq 0x4e66d(%rip), %rax     # 0x106c80
testb $0x1, (%rax)
jne 0xb861d
jmp 0xb9317
movq 0x68(%rsp), %rdi
addq $0x8, %rdi
callq 0xcc10
testb $0x1, %al
jne 0xb8639
movq 0x68(%rsp), %rdi
callq 0x4d780
leaq 0x460(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x2ef00
movq 0x68(%rsp), %rdi
addq $0x30, %rdi
callq 0xbfec0
movq 0x60(%rsp), %rdi
movq %rax, %rsi
callq 0x32840
jmp 0xb8668
movq 0x68(%rsp), %rdi
movq $0x0, 0x448(%rsp)
addq $0x30, %rdi
callq 0xbfec0
movq %rax, 0x440(%rsp)
movq 0x448(%rsp), %rax
cmpq 0x440(%rsp), %rax
jae 0xb8904
movq 0x68(%rsp), %rdi
addq $0x30, %rdi
movq 0x448(%rsp), %rsi
callq 0xc01f0
movq %rax, 0x58(%rsp)
jmp 0xb86bd
movq 0x58(%rsp), %rax
movq %rax, 0x438(%rsp)
movq 0x438(%rsp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
jmp 0xb86dd
jmp 0xb88ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb8c6a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
movl 0x454(%rsp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0xb8c6a
movq 0x458(%rsp), %rdi
callq 0xc2f0
movq %rax, 0x430(%rsp)
movb $0x1, 0x3af(%rsp)
movl $0x10, %edi
callq 0xc3b0
movq %rax, 0x50(%rsp)
movq 0x448(%rsp), %rsi
incq %rsi
leaq 0x3b0(%rsp), %rdi
callq 0x2bf10
jmp 0xb8769
leaq 0x19076(%rip), %rsi     # 0xd17e6
leaq 0x3d0(%rsp), %rdi
leaq 0x3b0(%rsp), %rdx
callq 0x2a340
jmp 0xb8787
leaq 0x1525a(%rip), %rdx     # 0xcd9e8
leaq 0x3f0(%rsp), %rdi
leaq 0x3d0(%rsp), %rsi
callq 0x2a2f0
jmp 0xb87a5
movq 0x430(%rsp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, %rdx
leaq 0x410(%rsp), %rdi
leaq 0x3f0(%rsp), %rsi
callq 0x2a2f0
jmp 0xb87d0
movq 0x50(%rsp), %rdi
leaq 0x410(%rsp), %rsi
callq 0xcbb0
jmp 0xb87e4
movq 0x50(%rsp), %rdi
movb $0x0, 0x3af(%rsp)
movq 0x4d7f8(%rip), %rsi     # 0x105ff0
movq 0x4d771(%rip), %rdx     # 0x105f70
callq 0xcc80
jmp 0xb9334
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb88ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb889f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb8892
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb8885
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
leaq 0x410(%rsp), %rdi
callq 0xce98
leaq 0x3f0(%rsp), %rdi
callq 0xce98
leaq 0x3d0(%rsp), %rdi
callq 0xce98
leaq 0x3b0(%rsp), %rdi
callq 0xce98
testb $0x1, 0x3af(%rsp)
jne 0xb88b8
jmp 0xb88c2
movq 0x50(%rsp), %rdi
callq 0xc580
callq 0xcbe0
jmp 0xb88c9
jmp 0xb8c6a
movq 0x438(%rsp), %rsi
addq $0x8, %rsi
leaq 0x460(%rsp), %rdi
callq 0x2f170
jmp 0xb88e9
jmp 0xb88eb
movq 0x448(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x448(%rsp)
jmp 0xb868a
leaq 0x460(%rsp), %rdi
callq 0x32720
jmp 0xb8913
leaq 0x460(%rsp), %rdi
movl $0x1, %esi
callq 0xa6950
movq %rax, 0x48(%rsp)
jmp 0xb892c
movq 0x48(%rsp), %rax
movq %rax, 0x3a0(%rsp)
cmpq $-0x1, 0x3a0(%rsp)
je 0xb8a65
movb $0x1, 0x35f(%rsp)
movl $0x10, %edi
callq 0xc3b0
movq %rax, 0x38(%rsp)
movq 0x3a0(%rsp), %rsi
leaq 0x460(%rsp), %rdi
callq 0x2f970
movq %rax, 0x40(%rsp)
jmp 0xb897b
movq 0x40(%rsp), %rsi
leaq 0x360(%rsp), %rdi
movl $0x22, %edx
callq 0x424f0
jmp 0xb8994
leaq 0x18e5b(%rip), %rsi     # 0xd17f6
leaq 0x380(%rsp), %rdi
leaq 0x360(%rsp), %rdx
callq 0x2a340
jmp 0xb89b2
movq 0x68(%rsp), %rsi
movq 0x38(%rsp), %rdi
leaq 0x380(%rsp), %rdx
callq 0x3a690
jmp 0xb89cb
movq 0x38(%rsp), %rdi
movb $0x0, 0x35f(%rsp)
leaq 0x4bf21(%rip), %rsi     # 0x104900
leaq -0x7e286(%rip), %rdx    # 0x3a760
callq 0xcc80
jmp 0xb9334
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb8a4a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb8a3d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
leaq 0x380(%rsp), %rdi
callq 0xce98
leaq 0x360(%rsp), %rdi
callq 0xce98
testb $0x1, 0x35f(%rsp)
jne 0xb8a56
jmp 0xb8a60
movq 0x38(%rsp), %rdi
callq 0xc580
jmp 0xb8c6a
leaq 0x460(%rsp), %rdi
callq 0x2eef0
movq 0x68(%rsp), %rdi
movq $0x0, 0x350(%rsp)
addq $0x50, %rdi
callq 0x380d0
movq %rax, 0x348(%rsp)
movq 0x350(%rsp), %rax
cmpq 0x348(%rsp), %rax
jae 0xb9317
movq 0x68(%rsp), %rdi
addq $0x50, %rdi
movq 0x350(%rsp), %rsi
callq 0xc02b0
movq %rax, %rdi
callq 0x2f390
movq 0x68(%rsp), %rdi
movq %rax, 0x30(%rsp)
addq $0x30, %rdi
callq 0xbfec0
movq %rax, %rcx
movq 0x30(%rsp), %rax
cmpq %rcx, %rax
je 0xb8df8
movb $0x1, 0x227(%rsp)
movl $0x10, %edi
callq 0xc3b0
movq %rax, 0x28(%rsp)
movq 0x350(%rsp), %rsi
incq %rsi
leaq 0x268(%rsp), %rdi
callq 0x2bf10
jmp 0xb8b1d
leaq 0x18c97(%rip), %rsi     # 0xd17bb
leaq 0x288(%rsp), %rdi
leaq 0x268(%rsp), %rdx
callq 0x2a340
jmp 0xb8b3b
leaq 0x18fd0(%rip), %rdx     # 0xd1b12
leaq 0x2a8(%rsp), %rdi
leaq 0x288(%rsp), %rsi
callq 0x2a2f0
jmp 0xb8b59
movq 0x68(%rsp), %rdi
addq $0x50, %rdi
movq 0x350(%rsp), %rsi
callq 0xc02b0
movq %rax, 0x20(%rsp)
jmp 0xb8b76
movq 0x20(%rsp), %rdi
callq 0x2f390
movq %rax, %rsi
leaq 0x248(%rsp), %rdi
callq 0x2bf10
jmp 0xb8b92
leaq 0x2c8(%rsp), %rdi
leaq 0x2a8(%rsp), %rsi
leaq 0x248(%rsp), %rdx
callq 0x2dde0
jmp 0xb8bb1
leaq 0x18c56(%rip), %rdx     # 0xd180e
leaq 0x2e8(%rsp), %rdi
leaq 0x2c8(%rsp), %rsi
callq 0x2a2f0
jmp 0xb8bcf
movq 0x68(%rsp), %rdi
addq $0x30, %rdi
callq 0xbfec0
movq %rax, %rsi
leaq 0x228(%rsp), %rdi
callq 0x2bf10
jmp 0xb8bef
leaq 0x308(%rsp), %rdi
leaq 0x2e8(%rsp), %rsi
leaq 0x228(%rsp), %rdx
callq 0x2dde0
jmp 0xb8c0e
leaq 0x18bc8(%rip), %rdx     # 0xd17dd
leaq 0x328(%rsp), %rdi
leaq 0x308(%rsp), %rsi
callq 0x2a2f0
jmp 0xb8c2c
movq 0x68(%rsp), %rsi
movq 0x28(%rsp), %rdi
leaq 0x328(%rsp), %rdx
callq 0x3a690
jmp 0xb8c45
movq 0x28(%rsp), %rdi
movb $0x0, 0x227(%rsp)
leaq 0x4bca7(%rip), %rsi     # 0x104900
leaq -0x7e500(%rip), %rdx    # 0x3a760
callq 0xcc80
jmp 0xb9334
leaq 0x460(%rsp), %rdi
callq 0x2eef0
jmp 0xb931f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb8ddd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb8dd0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb8dc3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb8db6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb8da9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb8d9c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb8d8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb8d82
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb8d75
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
leaq 0x328(%rsp), %rdi
callq 0xce98
leaq 0x308(%rsp), %rdi
callq 0xce98
leaq 0x228(%rsp), %rdi
callq 0xce98
leaq 0x2e8(%rsp), %rdi
callq 0xce98
leaq 0x2c8(%rsp), %rdi
callq 0xce98
leaq 0x248(%rsp), %rdi
callq 0xce98
leaq 0x2a8(%rsp), %rdi
callq 0xce98
leaq 0x288(%rsp), %rdi
callq 0xce98
leaq 0x268(%rsp), %rdi
callq 0xce98
testb $0x1, 0x227(%rsp)
jne 0xb8de9
jmp 0xb8df3
movq 0x28(%rsp), %rdi
callq 0xc580
jmp 0xb931f
movq 0x68(%rsp), %rdi
addq $0x50, %rdi
movq 0x350(%rsp), %rsi
callq 0xc02b0
movq %rax, 0x218(%rsp)
movq 0x218(%rsp), %rdi
callq 0x35930
movq %rax, 0x210(%rsp)
movq 0x218(%rsp), %rdi
callq 0x358f0
movq %rax, 0x208(%rsp)
leaq 0x210(%rsp), %rdi
leaq 0x208(%rsp), %rsi
callq 0x35820
testb $0x1, %al
jne 0xb8e5e
jmp 0xb92fc
leaq 0x210(%rsp), %rdi
callq 0x35960
movq %rax, 0x200(%rsp)
movq 0x200(%rsp), %rdi
movl $0x9, %esi
callq 0x2dbd0
testb $0x1, %al
jne 0xb8e8e
jmp 0xb90ba
movb $0x1, 0x13f(%rsp)
movl $0x10, %edi
callq 0xc3b0
movq 0x68(%rsp), %rdi
movq %rax, 0x10(%rsp)
addq $0x30, %rdi
movq 0x350(%rsp), %rsi
callq 0xc01f0
movq %rax, 0x18(%rsp)
jmp 0xb8ec2
movq 0x18(%rsp), %rsi
addq $0x8, %rsi
leaq 0x160(%rsp), %rdi
movl $0x22, %edx
callq 0x424f0
jmp 0xb8edf
leaq 0x18944(%rip), %rsi     # 0xd182a
leaq 0x180(%rsp), %rdi
leaq 0x160(%rsp), %rdx
callq 0x2a340
jmp 0xb8efd
leaq 0x1892d(%rip), %rdx     # 0xd1831
leaq 0x1a0(%rsp), %rdi
leaq 0x180(%rsp), %rsi
callq 0x2a2f0
jmp 0xb8f1b
movq 0x350(%rsp), %rsi
incq %rsi
leaq 0x140(%rsp), %rdi
callq 0x2bf10
jmp 0xb8f35
leaq 0x1c0(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
leaq 0x140(%rsp), %rdx
callq 0x2dde0
jmp 0xb8f54
leaq 0x188df(%rip), %rdx     # 0xd183a
leaq 0x1e0(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
callq 0x2a2f0
jmp 0xb8f72
movq 0x68(%rsp), %rsi
movq 0x10(%rsp), %rdi
leaq 0x1e0(%rsp), %rdx
callq 0x3a690
jmp 0xb8f8b
movq 0x10(%rsp), %rdi
movb $0x0, 0x13f(%rsp)
leaq 0x4b961(%rip), %rsi     # 0x104900
leaq -0x7e846(%rip), %rdx    # 0x3a760
callq 0xcc80
jmp 0xb9334
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb909f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb9092
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb9085
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb9078
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb906b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb905e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
leaq 0x1e0(%rsp), %rdi
callq 0xce98
leaq 0x1c0(%rsp), %rdi
callq 0xce98
leaq 0x140(%rsp), %rdi
callq 0xce98
leaq 0x1a0(%rsp), %rdi
callq 0xce98
leaq 0x180(%rsp), %rdi
callq 0xce98
leaq 0x160(%rsp), %rdi
callq 0xce98
testb $0x1, 0x13f(%rsp)
jne 0xb90ab
jmp 0xb90b5
movq 0x10(%rsp), %rdi
callq 0xc580
jmp 0xb931f
movq 0x200(%rsp), %rdi
movl $0xa, %esi
callq 0x2dbd0
testb $0x1, %al
jne 0xb90d5
jmp 0xb92e8
movb $0x1, 0x77(%rsp)
movl $0x10, %edi
callq 0xc3b0
movq 0x68(%rsp), %rdi
movq %rax, (%rsp)
addq $0x30, %rdi
movq 0x350(%rsp), %rsi
callq 0xc01f0
movq %rax, 0x8(%rsp)
jmp 0xb9105
movq 0x8(%rsp), %rsi
addq $0x8, %rsi
leaq 0x98(%rsp), %rdi
movl $0x22, %edx
callq 0x424f0
jmp 0xb9122
leaq 0x18701(%rip), %rsi     # 0xd182a
leaq 0xb8(%rsp), %rdi
leaq 0x98(%rsp), %rdx
callq 0x2a340
jmp 0xb9140
leaq 0x186ea(%rip), %rdx     # 0xd1831
leaq 0xd8(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x2a2f0
jmp 0xb915e
movq 0x350(%rsp), %rsi
incq %rsi
leaq 0x78(%rsp), %rdi
callq 0x2bf10
jmp 0xb9175
leaq 0xf8(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x2dde0
jmp 0xb9191
leaq 0x186bc(%rip), %rdx     # 0xd1854
leaq 0x118(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0x2a2f0
jmp 0xb91af
movq 0x68(%rsp), %rsi
movq (%rsp), %rdi
leaq 0x118(%rsp), %rdx
callq 0x3a690
jmp 0xb91c7
movq (%rsp), %rdi
movb $0x0, 0x77(%rsp)
leaq 0x4b729(%rip), %rsi     # 0x104900
leaq -0x7ea7e(%rip), %rdx    # 0x3a760
callq 0xcc80
jmp 0xb9334
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb92d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb92ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb92ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb92a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
jmp 0xb9296
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x458(%rsp)
movl %eax, 0x454(%rsp)
leaq 0x118(%rsp), %rdi
callq 0xce98
leaq 0xf8(%rsp), %rdi
callq 0xce98
leaq 0x78(%rsp), %rdi
callq 0xce98
leaq 0xd8(%rsp), %rdi
callq 0xce98
leaq 0xb8(%rsp), %rdi
callq 0xce98
leaq 0x98(%rsp), %rdi
callq 0xce98
testb $0x1, 0x77(%rsp)
jne 0xb92dd
jmp 0xb92e6
movq (%rsp), %rdi
callq 0xc580
jmp 0xb931f
jmp 0xb92ea
leaq 0x210(%rsp), %rdi
callq 0x38e20
jmp 0xb8e40
jmp 0xb92fe
movq 0x350(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x350(%rsp)
jmp 0xb8a94
addq $0x488, %rsp            # imm = 0x488
retq
movq 0x458(%rsp), %rdi
callq 0xccf0
movq %rax, %rdi
callq 0x2ad70
nopw %cs:(%rax,%rax)