// File: ncbi[P]amr/tsv.cpp
// Function: Common_sp::TextTable::filterColumns(Common_sp::StringVector const&)
void TextTable::filterColumns (const StringVector &newColumnNames)
{
  const Vector<ColNum> colNums (columns2nums (newColumnNames));

  {  
    Vector<Header> newHeader;  newHeader. reserve (colNums. size ());
    for (const ColNum i : colNums)
      newHeader << header [i];
    header = std::move (newHeader);
  }

  for (StringVector& row : rows)
  {
    StringVector newRow;  newRow. reserve (colNums. size ());
    for (const ColNum i : colNums)
      newRow << row [i];
    row = std::move (newRow);
  }
}

// Assembly:
subq $0x118, %rsp            # imm = 0x118
movq %rdi, 0x110(%rsp)
movq %rsi, 0x108(%rsp)
movq 0x110(%rsp), %rsi
movq %rsi, 0x20(%rsp)
movq 0x108(%rsp), %rdx
leaq 0xe8(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0xc0760
leaq 0xc8(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0xbfd10
movq 0x28(%rsp), %rdi
callq 0x82260
movq 0x30(%rsp), %rdi
movq %rax, %rsi
callq 0xc0880
jmp 0xba5b9
leaq 0xe8(%rsp), %rax
movq %rax, 0xb0(%rsp)
movq 0xb0(%rsp), %rdi
callq 0x746c0
movq %rax, 0xa8(%rsp)
movq 0xb0(%rsp), %rdi
callq 0x746f0
movq %rax, 0xa0(%rsp)
leaq 0xa8(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0x74720
testb $0x1, %al
jne 0xba611
jmp 0xba691
leaq 0xa8(%rsp), %rdi
callq 0x74760
movq 0x20(%rsp), %rdi
movq (%rax), %rax
movq %rax, 0x98(%rsp)
addq $0x30, %rdi
movq 0x98(%rsp), %rsi
callq 0xbfee0
movq %rax, 0x18(%rsp)
jmp 0xba646
movq 0x18(%rsp), %rsi
leaq 0xc8(%rsp), %rdi
callq 0xc05b0
jmp 0xba65a
jmp 0xba65c
leaq 0xa8(%rsp), %rdi
callq 0x74770
jmp 0xba5f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
leaq 0xc8(%rsp), %rdi
callq 0x3a380
jmp 0xba831
movq 0x20(%rsp), %rdi
addq $0x30, %rdi
leaq 0xc8(%rsp), %rsi
callq 0xc0990
leaq 0xc8(%rsp), %rdi
callq 0x3a380
movq 0x20(%rsp), %rax
addq $0x50, %rax
movq %rax, 0x90(%rsp)
movq 0x90(%rsp), %rdi
callq 0x304e0
movq %rax, 0x88(%rsp)
movq 0x90(%rsp), %rdi
callq 0x30510
movq %rax, 0x80(%rsp)
leaq 0x88(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x30540
testb $0x1, %al
jne 0xba70d
jmp 0xba81c
leaq 0x88(%rsp), %rdi
callq 0x30580
movq %rax, 0x78(%rsp)
leaq 0x58(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x2ef00
leaq 0xe8(%rsp), %rdi
callq 0x82260
movq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x32840
jmp 0xba74a
leaq 0xe8(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rdi
callq 0x746c0
movq %rax, 0x48(%rsp)
movq 0x50(%rsp), %rdi
callq 0x746f0
movq %rax, 0x40(%rsp)
leaq 0x48(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x74720
testb $0x1, %al
jne 0xba78a
jmp 0xba7f1
leaq 0x48(%rsp), %rdi
callq 0x74760
movq (%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x78(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0x2f970
movq %rax, 0x8(%rsp)
jmp 0xba7b2
movq 0x8(%rsp), %rsi
leaq 0x58(%rsp), %rdi
callq 0x2f170
jmp 0xba7c3
jmp 0xba7c5
leaq 0x48(%rsp), %rdi
callq 0x74770
jmp 0xba775
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
leaq 0x58(%rsp), %rdi
callq 0x2eef0
jmp 0xba831
movq 0x78(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x3a810
leaq 0x58(%rsp), %rdi
callq 0x2eef0
leaq 0x88(%rsp), %rdi
callq 0x30590
jmp 0xba6ef
leaq 0xe8(%rsp), %rdi
callq 0xc09d0
addq $0x118, %rsp            # imm = 0x118
retq
leaq 0xe8(%rsp), %rdi
callq 0xc09d0
movq 0xc0(%rsp), %rdi
callq 0xccf0
nopl (%rax,%rax)