// File: ncbi[P]amr/tsv.cpp
// Function: Common_sp::TextTable::isKey(unsigned long) const
bool TextTable::isKey (ColNum colNum) const
{
  ASSERT (colNum < header. size ());

  const Header& h = header [colNum];
  if (h. null)
    return false;
  if (h. numeric)
    if (   h. scientific
        || h. decimals > 0
       )
      return false;
    
  unordered_set<string> values;  values. rehash (rows. size ());
  for (const StringVector& row : rows)
  {
    ASSERT (! row [colNum]. empty ());
    if (! values. insert (row [colNum]). second)
      return false;
  }
      
  return true;
}

// Assembly:
subq $0x328, %rsp            # imm = 0x328
movq %rdi, 0x318(%rsp)
movq %rsi, 0x310(%rsp)
movq 0x318(%rsp), %rax
movq %rax, 0x48(%rsp)
callq 0xc090
movq 0x48(%rsp), %rdi
movl $0x0, (%rax)
movq 0x310(%rsp), %rax
movq %rax, 0x50(%rsp)
addq $0x30, %rdi
callq 0xbfec0
movq %rax, %rcx
movq 0x50(%rsp), %rax
cmpq %rcx, %rax
jb 0xb9f12
callq 0xc8c0
cmpl $0x0, %eax
jne 0xb9f08
leaq 0x26f(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0xcd00
movq 0x40(%rsp), %rdx
leaq 0x17a12(%rip), %rsi     # 0xd16c9
leaq 0x270(%rsp), %rdi
callq 0x29fd0
jmp 0xb9cc6
leaq 0x238(%rsp), %rdi
movl $0x1ba, %esi            # imm = 0x1BA
callq 0x2ded0
jmp 0xb9cda
leaq 0x290(%rsp), %rdi
leaq 0x270(%rsp), %rsi
leaq 0x238(%rsp), %rdx
callq 0x2dde0
jmp 0xb9cf9
leaq 0x11ea1(%rip), %rdx     # 0xcbba1
leaq 0x2b0(%rsp), %rdi
leaq 0x290(%rsp), %rsi
callq 0x2a2f0
jmp 0xb9d17
leaq 0x1f7(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0xcd00
movq 0x38(%rsp), %rdx
leaq 0x17bb9(%rip), %rsi     # 0xd18ee
leaq 0x1f8(%rsp), %rdi
callq 0x29fd0
jmp 0xb9d44
leaq 0x13ccb(%rip), %rdx     # 0xcda16
leaq 0x218(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
callq 0x2a2f0
jmp 0xb9d62
leaq 0x2d0(%rsp), %rdi
leaq 0x2b0(%rsp), %rsi
leaq 0x218(%rsp), %rdx
callq 0x2dde0
jmp 0xb9d81
leaq 0x17b95(%rip), %rdx     # 0xd191d
leaq 0x2f0(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
callq 0x2a2f0
jmp 0xb9d9f
leaq 0x2f0(%rsp), %rdi
callq 0x3e9b0
jmp 0xb9dae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
jmp 0xb9ef6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
jmp 0xb9ee9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
jmp 0xb9edc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
jmp 0xb9ecf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
jmp 0xb9eb5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
jmp 0xb9ea8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
jmp 0xb9e9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
jmp 0xb9e8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
leaq 0x2f0(%rsp), %rdi
callq 0xce98
leaq 0x2d0(%rsp), %rdi
callq 0xce98
leaq 0x218(%rsp), %rdi
callq 0xce98
leaq 0x1f8(%rsp), %rdi
callq 0xce98
leaq 0x1f7(%rsp), %rdi
callq 0xc7a0
leaq 0x2b0(%rsp), %rdi
callq 0xce98
leaq 0x290(%rsp), %rdi
callq 0xce98
leaq 0x238(%rsp), %rdi
callq 0xce98
leaq 0x270(%rsp), %rdi
callq 0xce98
leaq 0x26f(%rsp), %rdi
callq 0xc7a0
jmp 0xba3ca
movl $0x1, %edi
callq 0xc8d0
movq 0x48(%rsp), %rdi
addq $0x30, %rdi
movq 0x310(%rsp), %rsi
callq 0xc01f0
movq %rax, 0x1e8(%rsp)
movq 0x1e8(%rsp), %rax
testb $0x1, 0x40(%rax)
je 0xb9f4b
movb $0x0, 0x327(%rsp)
jmp 0xba3b9
movq 0x1e8(%rsp), %rax
testb $0x1, 0x30(%rax)
je 0xb9f85
movq 0x1e8(%rsp), %rax
testb $0x1, 0x31(%rax)
jne 0xb9f76
movq 0x1e8(%rsp), %rax
cmpq $0x0, 0x38(%rax)
jle 0xb9f83
movb $0x0, 0x327(%rsp)
jmp 0xba3b9
jmp 0xb9f85
leaq 0x1b0(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0xc0680
movq 0x48(%rsp), %rdi
addq $0x50, %rdi
callq 0x380d0
movq 0x30(%rsp), %rdi
movq %rax, %rsi
callq 0xc0690
jmp 0xb9fb4
movq 0x48(%rsp), %rax
addq $0x50, %rax
movq %rax, 0x1a8(%rsp)
movq 0x1a8(%rsp), %rdi
callq 0xc0440
movq %rax, 0x1a0(%rsp)
movq 0x1a8(%rsp), %rdi
callq 0xc0470
movq %rax, 0x198(%rsp)
leaq 0x1a0(%rsp), %rdi
leaq 0x198(%rsp), %rsi
callq 0xc04a0
testb $0x1, %al
jne 0xba00d
jmp 0xba38b
leaq 0x1a0(%rsp), %rdi
callq 0xc04e0
movq %rax, 0x190(%rsp)
callq 0xc090
movl $0x0, (%rax)
movq 0x190(%rsp), %rdi
movq 0x310(%rsp), %rsi
callq 0x2f4e0
movq %rax, 0x28(%rsp)
jmp 0xba049
movq 0x28(%rsp), %rdi
callq 0xcc10
testb $0x1, %al
jne 0xba05c
jmp 0xba2fc
callq 0xc8c0
cmpl $0x0, %eax
jne 0xba2f2
leaq 0xef(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0xcd00
movq 0x20(%rsp), %rdx
leaq 0x17641(%rip), %rsi     # 0xd16c9
leaq 0xf0(%rsp), %rdi
callq 0x29fd0
jmp 0xba097
leaq 0xc8(%rsp), %rdi
movl $0x1c8, %esi            # imm = 0x1C8
callq 0x2ded0
jmp 0xba0ab
leaq 0x110(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
leaq 0xc8(%rsp), %rdx
callq 0x2dde0
jmp 0xba0ca
leaq 0x11ad0(%rip), %rdx     # 0xcbba1
leaq 0x130(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x2a2f0
jmp 0xba0e8
leaq 0x87(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0xcd00
movq 0x18(%rsp), %rdx
leaq 0x177e8(%rip), %rsi     # 0xd18ee
leaq 0x88(%rsp), %rdi
callq 0x29fd0
jmp 0xba115
leaq 0x138fa(%rip), %rdx     # 0xcda16
leaq 0xa8(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0x2a2f0
jmp 0xba133
leaq 0x150(%rsp), %rdi
leaq 0x130(%rsp), %rsi
leaq 0xa8(%rsp), %rdx
callq 0x2dde0
jmp 0xba152
leaq 0x177dd(%rip), %rdx     # 0xd1936
leaq 0x170(%rsp), %rdi
leaq 0x150(%rsp), %rsi
callq 0x2a2f0
jmp 0xba170
leaq 0x170(%rsp), %rdi
callq 0x3e9b0
jmp 0xba17f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
jmp 0xba3aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
jmp 0xba2e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
jmp 0xba2d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
jmp 0xba2c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
jmp 0xba2b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
jmp 0xba29f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
jmp 0xba292
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
jmp 0xba285
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
jmp 0xba278
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x260(%rsp)
movl %eax, 0x25c(%rsp)
leaq 0x170(%rsp), %rdi
callq 0xce98
leaq 0x150(%rsp), %rdi
callq 0xce98
leaq 0xa8(%rsp), %rdi
callq 0xce98
leaq 0x88(%rsp), %rdi
callq 0xce98
leaq 0x87(%rsp), %rdi
callq 0xc7a0
leaq 0x130(%rsp), %rdi
callq 0xce98
leaq 0x110(%rsp), %rdi
callq 0xce98
leaq 0xc8(%rsp), %rdi
callq 0xce98
leaq 0xf0(%rsp), %rdi
callq 0xce98
leaq 0xef(%rsp), %rdi
callq 0xc7a0
jmp 0xba3aa
movl $0x1, %edi
callq 0xc8d0
movq 0x190(%rsp), %rdi
movq 0x310(%rsp), %rsi
callq 0x2f4e0
movq %rax, 0x10(%rsp)
jmp 0xba318
movq 0x10(%rsp), %rsi
leaq 0x1b0(%rsp), %rdi
callq 0xc06c0
movb %dl, 0x7(%rsp)
movq %rax, 0x8(%rsp)
jmp 0xba335
movb 0x7(%rsp), %al
movq 0x8(%rsp), %rcx
movq %rcx, 0x60(%rsp)
movb %al, 0x68(%rsp)
movq 0x60(%rsp), %rax
movq %rax, 0x70(%rsp)
movb 0x68(%rsp), %al
movb %al, 0x78(%rsp)
movb 0x78(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0xba365
jmp 0xba377
movb $0x0, 0x327(%rsp)
movl $0x1, 0x5c(%rsp)
jmp 0xba39b
jmp 0xba379
leaq 0x1a0(%rsp), %rdi
callq 0xc0590
jmp 0xb9fef
movb $0x1, 0x327(%rsp)
movl $0x1, 0x5c(%rsp)
leaq 0x1b0(%rsp), %rdi
callq 0xc0710
jmp 0xba3b9
leaq 0x1b0(%rsp), %rdi
callq 0xc0710
jmp 0xba3ca
movb 0x327(%rsp), %al
andb $0x1, %al
addq $0x328, %rsp            # imm = 0x328
retq
movq 0x260(%rsp), %rdi
callq 0xccf0
nopw (%rax,%rax)