// File: /workspace/github_cpp_makefile_star2_O3/ncbi[P]amr/tsv.cpp
// Function: Common_sp::TextTable::group(Common_sp::StringVector const&, Common_sp::StringVector const&, Common_sp::StringVector const&, Common_sp::StringVector const&, Common_sp::StringVector const&)
void TextTable::group (const StringVector &by,
                       const StringVector &sum,
                       const StringVector &minV,
                       const StringVector &maxV,
                       const StringVector &aggr)
{
  const Vector<ColNum> byIndex   (columns2nums (by));
  const Vector<ColNum> sumIndex  (columns2nums (sum));
  const Vector<ColNum> minIndex  (columns2nums (minV));
  const Vector<ColNum> maxIndex  (columns2nums (maxV));
  const Vector<ColNum> aggrIndex (columns2nums (aggr));
  
  // QC
  {
    ColumnPartitionQC cp;
    cp. add (by, "group by");
    cp. add (sum, "sum");
    cp. add (minV, "min");
    cp. add (maxV, "max");
    cp. add (aggr, "aggregation");
  }
  for (const string& s : sum)
    if (! header [col2num (s)]. numeric)
      throw runtime_error ("Summation column " + strQuote (s) + " is not numeric");

  sort (by);
  
  RowNum i = 0;  
  FFOR_START (RowNum, j, 1, rows. size ())
  {
    ASSERT (i < j);
    if (rows [i]. same (rows [j], byIndex))
      merge (i, j, sumIndex, minIndex, maxIndex, aggrIndex);
    else
    {
      i++;
      if (i < j)
        rows [i] = std::move (rows [j]);
    }
  }
  if (! rows. empty ())
    i++;

  ASSERT (rows. size () >= i);
  FFOR (RowNum, k, rows. size () - i)
    rows. pop_back ();
    
  StringVector newColumns;
  newColumns << by << sum << minV << maxV << aggr;
  filterColumns (newColumns);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1f8, %rsp            # imm = 0x1F8
movq %r9, %rbp
movq %r8, %rbx
movq %rcx, %r14
movq %rdx, %r15
movq %rsi, %rdx
movq %rdi, %r13
leaq 0x1d8(%rsp), %rdi
movq %r13, %rsi
movq %rdx, 0x80(%rsp)
callq 0x864f4
leaq 0x1b8(%rsp), %rdi
movq %r13, %rsi
movq %r15, 0x88(%rsp)
movq %r15, %rdx
callq 0x864f4
leaq 0x198(%rsp), %rdi
movq %r13, %rsi
movq %r14, 0x98(%rsp)
movq %r14, %rdx
callq 0x864f4
leaq 0x178(%rsp), %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x864f4
leaq 0x158(%rsp), %rdi
movq %r13, %rsi
movq %rbp, %rdx
callq 0x864f4
leaq 0x38(%rsp), %rax
movl $0x0, (%rax)
xorl %ecx, %ecx
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
leaq 0x20(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0xe19a(%rip), %rsi      # 0x9087f
leaq 0xe19b(%rip), %rdx      # 0x90887
leaq 0x10(%rsp), %rdi
callq 0x2fa1a
movq 0x80(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rcx
callq 0x8328a
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x8272b
movq 0x20(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0x10(%rsp), %rdi
movq %r12, (%rdi)
leaq 0xe14e(%rip), %rsi      # 0x90888
leaq 0xe14a(%rip), %rdx      # 0x9088b
callq 0x2fa1a
movq 0x88(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rcx
callq 0x8328a
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x8277b
movq 0x20(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0x10(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x7bfe(%rip), %rsi      # 0x8a388
leaq 0x7bfa(%rip), %rdx      # 0x8a38b
callq 0x2fa1a
movq 0x98(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rcx
callq 0x8328a
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x827cb
movq 0x20(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0x10(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x9983(%rip), %rsi      # 0x8c15d
leaq 0x997f(%rip), %rdx      # 0x8c160
callq 0x2fa1a
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rcx
callq 0x8328a
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x82813
movq 0x20(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0x10(%rsp), %rdi
movq %r12, (%rdi)
leaq 0xe06a(%rip), %rsi      # 0x9088c
leaq 0xe06e(%rip), %rdx      # 0x90897
callq 0x2fa1a
movq (%rbp), %rsi
movq 0x8(%rbp), %rdx
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rcx
callq 0x8328a
movq %rbx, 0x110(%rsp)
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x82864
movq 0x20(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0x30(%rsp), %rdi
callq 0x2c320
movq 0x88(%rsp), %rax
movq (%rax), %r15
movq 0x8(%rax), %rbx
cmpq %rbx, %r15
je 0x828af
leaq 0x30(%r13), %r14
movq %r13, %rdi
movq %r15, %rsi
callq 0x2e9da
movq %r14, %rdi
movq %rax, %rsi
callq 0x861ea
cmpb $0x0, 0x30(%rax)
je 0x82b69
addq $0x20, %r15
cmpq %rbx, %r15
jne 0x82886
movq %r13, %rdi
movq 0x80(%rsp), %rsi
callq 0x82524
movq %rbp, 0x108(%rsp)
leaq 0x50(%r13), %r15
movq 0x50(%r13), %rbx
movq %r13, 0x90(%rsp)
movq 0x58(%r13), %r14
movq %r14, %r12
subq %rbx, %r12
sarq $0x5, %r12
callq 0xa070
movq %rax, 0xa0(%rsp)
cmpq $0x2, %r12
jb 0x82a12
movl $0x1, %r14d
xorl %ebp, %ebp
movq 0xa0(%rsp), %rax
movl $0x0, (%rax)
cmpq %r14, %rbp
jae 0x82bd7
movq %r15, %rdi
movq %rbp, %rsi
callq 0x31c7e
movq %rax, %rbx
movq %r15, %rdi
movq %r14, %rsi
callq 0x31c7e
movq %rbx, %rdi
movq %rax, %rsi
leaq 0x1d8(%rsp), %rdx
callq 0x42d02
testb %al, %al
je 0x82984
leaq 0x158(%rsp), %rax
movq %rax, (%rsp)
movq 0x90(%rsp), %rdi
movq %rbp, %rsi
movq %r14, %rdx
leaq 0x1b8(%rsp), %rcx
leaq 0x198(%rsp), %r8
leaq 0x178(%rsp), %r9
callq 0x835c0
jmp 0x829ea
incq %rbp
cmpq %r14, %rbp
jae 0x829ea
movq %r15, %rdi
movq %r14, %rsi
callq 0x31c7e
movq %rax, %r13
movq %r15, %rdi
movq %rbp, %rsi
callq 0x31c7e
movq %rax, %rbx
movq 0x10(%rax), %rax
movups (%r13), %xmm0
movups (%rbx), %xmm1
movups %xmm0, (%rbx)
movq 0x10(%r13), %rcx
movq %rcx, 0x10(%rbx)
movaps %xmm1, 0x30(%rsp)
movq %rax, 0x40(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, (%r13)
movq $0x0, 0x10(%r13)
leaq 0x30(%rsp), %rdi
callq 0x327d2
movb 0x18(%r13), %al
movb %al, 0x18(%rbx)
incq %r14
cmpq %r14, %r12
jne 0x82904
movq 0x90(%rsp), %rax
movq 0x50(%rax), %rbx
movq 0x58(%rax), %r14
movq %r14, %r12
subq %rbx, %r12
sarq $0x5, %r12
jmp 0x82a14
xorl %ebp, %ebp
xorl %eax, %eax
cmpq %r14, %rbx
setne %al
addq %rbp, %rax
movq 0xa0(%rsp), %rcx
movl $0x0, (%rcx)
subq %rax, %r12
jb 0x82cc2
movq 0x90(%rsp), %rbx
movq 0x108(%rsp), %r14
movq 0x98(%rsp), %r13
je 0x82a5d
movq %r15, %rdi
callq 0x8667a
decq %r12
jne 0x82a50
xorps %xmm0, %xmm0
leaq 0x30(%rsp), %rdi
movups %xmm0, 0x9(%rdi)
movaps %xmm0, (%rdi)
movq 0x80(%rsp), %rsi
callq 0x866e4
movq %rax, %rdi
movq 0x88(%rsp), %rsi
callq 0x866e4
movq %rax, %rdi
movq %r13, %rsi
callq 0x866e4
movq %rax, %rdi
movq 0x110(%rsp), %rsi
callq 0x866e4
movq %rax, %rdi
movq %r14, %rsi
callq 0x866e4
leaq 0x30(%rsp), %rsi
movq %rbx, %rdi
callq 0x822f4
leaq 0x30(%rsp), %rdi
callq 0x327d2
movq 0x158(%rsp), %rdi
testq %rdi, %rdi
je 0x82ae3
movq 0x168(%rsp), %rsi
subq %rdi, %rsi
callq 0xa5a0
movq 0x178(%rsp), %rdi
testq %rdi, %rdi
je 0x82b00
movq 0x188(%rsp), %rsi
subq %rdi, %rsi
callq 0xa5a0
movq 0x198(%rsp), %rdi
testq %rdi, %rdi
je 0x82b1d
movq 0x1a8(%rsp), %rsi
subq %rdi, %rsi
callq 0xa5a0
movq 0x1b8(%rsp), %rdi
testq %rdi, %rdi
je 0x82b3a
movq 0x1c8(%rsp), %rsi
subq %rdi, %rsi
callq 0xa5a0
movq 0x1d8(%rsp), %rdi
testq %rdi, %rdi
je 0x82b57
movq 0x1e8(%rsp), %rsi
subq %rdi, %rsi
callq 0xa5a0
addq $0x1f8, %rsp            # imm = 0x1F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x10, %edi
callq 0xa2c0
movq %rax, %r14
leaq 0x60(%rsp), %rdi
movq %r15, %rsi
movl $0x22, %edx
callq 0x38a3a
leaq 0xdd09(%rip), %rsi      # 0x90898
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x2bbf7
leaq 0xdd05(%rip), %rsi      # 0x908aa
leaq 0x10(%rsp), %rdi
callq 0xaac0
leaq 0x40(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x82c76
movups (%rcx), %xmm0
movups %xmm0, (%r15)
jmp 0x82c83
callq 0xa6b0
testl %eax, %eax
jne 0x82d61
leaq 0xf8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xda02(%rip), %rsi      # 0x905f9
leaq 0xda0b(%rip), %rdx      # 0x90609
leaq 0xe8(%rsp), %rdi
callq 0x2fa1a
leaq 0x118(%rsp), %rdi
movl $0x24d, %esi            # imm = 0x24D
callq 0x2d1fa
leaq 0x138(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
leaq 0x118(%rsp), %rdx
callq 0x2d152
leaq 0x7fa4(%rip), %rsi      # 0x8abe5
leaq 0x138(%rsp), %rdi
callq 0xaac0
leaq 0x70(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x82d6b
movups (%rcx), %xmm0
movups %xmm0, (%r15)
jmp 0x82d78
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
movq 0x8(%rax), %rdx
leaq 0x30(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movb $0x1, %bpl
movq %r14, %rdi
callq 0xa930
xorl %ebp, %ebp
movq 0x2d335(%rip), %rsi     # 0xaffe8
movq 0x2d2a6(%rip), %rdx     # 0xaff60
movq %r14, %rdi
callq 0xa9b0
callq 0xa6b0
testl %eax, %eax
jne 0x82d61
leaq 0xf8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xd917(%rip), %rsi      # 0x905f9
leaq 0xd920(%rip), %rdx      # 0x90609
leaq 0xe8(%rsp), %rdi
callq 0x2fa1a
leaq 0x118(%rsp), %rdi
movl $0x25a, %esi            # imm = 0x25A
callq 0x2d1fa
leaq 0x138(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
leaq 0x118(%rsp), %rdx
callq 0x2d152
leaq 0x7eb9(%rip), %rsi      # 0x8abe5
leaq 0x138(%rsp), %rdi
callq 0xaac0
leaq 0x70(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x82e6b
movups (%rcx), %xmm0
movups %xmm0, (%r15)
jmp 0x82e78
movl $0x1, %edi
callq 0xa6c0
movq %rdx, 0x60(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x70(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x68(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xd8(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0xdb16(%rip), %rsi      # 0x908ba
leaq 0xdb9d(%rip), %rdx      # 0x90948
leaq 0xc8(%rsp), %rdi
callq 0x2fa1a
leaq 0x9b74(%rip), %rsi      # 0x8c933
leaq 0xc8(%rsp), %rdi
callq 0xaac0
leaq 0xb8(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x82df1
movups (%rcx), %xmm0
movups %xmm0, (%r13)
jmp 0x82e04
movq %rdx, 0xa8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xb8(%rsp)
movq 0x8(%rax), %rsi
leaq 0xa8(%rsp), %rdx
movq %rsi, 0x8(%rdx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x2d152
leaq 0xdb10(%rip), %rsi      # 0x90949
leaq 0x10(%rsp), %rdi
callq 0xaac0
leaq 0x40(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x82ef1
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
jmp 0x82efe
movq %rdx, 0x60(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x70(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x68(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xd8(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0xda16(%rip), %rsi      # 0x908ba
leaq 0xda9d(%rip), %rdx      # 0x90948
leaq 0xc8(%rsp), %rdi
callq 0x2fa1a
leaq 0x9a74(%rip), %rsi      # 0x8c933
leaq 0xc8(%rsp), %rdi
callq 0xaac0
leaq 0xb8(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x82f1f
movups (%rcx), %xmm0
movups %xmm0, (%r13)
jmp 0x82f32
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
movq 0x8(%rax), %rdx
leaq 0x30(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
callq 0x34fa2
movq %rdx, 0xa8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xb8(%rsp)
movq 0x8(%rax), %rsi
leaq 0xa8(%rsp), %rdx
movq %rsi, 0x8(%rdx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x2d152
leaq 0xd9e8(%rip), %rsi      # 0x9094f
leaq 0x10(%rsp), %rdi
callq 0xaac0
leaq 0x40(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x82f92
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
jmp 0x82f9f
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
movq 0x8(%rax), %rdx
leaq 0x30(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
callq 0x34fa2
jmp 0x82fcd
jmp 0x82fe9
jmp 0x8300c
jmp 0x83030
jmp 0x83057
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %rbp, %rdi
je 0x82fec
movq 0x40(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x82fec
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x8300f
movq 0x20(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x8300f
jmp 0x83078
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
cmpq %r13, %rdi
je 0x83033
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x83033
jmp 0x8309e
movq %rax, %rbx
movq 0xc8(%rsp), %rdi
cmpq %r12, %rdi
je 0x8305a
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x8305a
jmp 0x83127
movq %rax, %rbx
movq 0x60(%rsp), %rdi
cmpq %r15, %rdi
je 0x8307b
movq 0x70(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x8307b
jmp 0x831ed
movq %rax, %rbx
leaq 0x148(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x830a1
movq 0x148(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x830a1
movq %rax, %rbx
leaq 0x128(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8312a
movq 0x128(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x8312a
jmp 0x831ed
jmp 0x830d9
jmp 0x830f5
jmp 0x830d9
jmp 0x830f5
jmp 0x830d9
jmp 0x830f5
jmp 0x830d9
jmp 0x830f5
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x830f8
movq 0x20(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x830f8
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2c320
jmp 0x831f0
movq %rax, %rbx
jmp 0x8320d
movq %rax, %rbx
jmp 0x8322a
movq %rax, %rbx
jmp 0x83247
movq %rax, %rbx
jmp 0x83264
movq %rax, %rbx
movq 0xe8(%rsp), %rdi
cmpq %r14, %rdi
je 0x831f0
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x831f0
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x83172
movq 0x40(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x83172
movq %rax, %rbx
movb $0x1, %bpl
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x83189
movq 0x20(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x831a4
movq 0x70(%rsp), %rsi
incq %rsi
callq 0xa5a0
testb %bpl, %bpl
jne 0x831df
jmp 0x831f0
jmp 0x831ed
movq %rax, %rbx
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x831df
movq 0x70(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x831df
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x327d2
jmp 0x831f0
movq %rax, %rbx
movq %r14, %rdi
callq 0xa440
jmp 0x831f0
jmp 0x831ed
jmp 0x831ed
movq %rax, %rbx
movq 0x158(%rsp), %rdi
testq %rdi, %rdi
je 0x8320d
movq 0x168(%rsp), %rsi
subq %rdi, %rsi
callq 0xa5a0
movq 0x178(%rsp), %rdi
testq %rdi, %rdi
je 0x8322a
movq 0x188(%rsp), %rsi
subq %rdi, %rsi
callq 0xa5a0
movq 0x198(%rsp), %rdi
testq %rdi, %rdi
je 0x83247
movq 0x1a8(%rsp), %rsi
subq %rdi, %rsi
callq 0xa5a0
movq 0x1b8(%rsp), %rdi
testq %rdi, %rdi
je 0x83264
movq 0x1c8(%rsp), %rsi
subq %rdi, %rsi
callq 0xa5a0
movq 0x1d8(%rsp), %rdi
testq %rdi, %rdi
je 0x83281
movq 0x1e8(%rsp), %rsi
subq %rdi, %rsi
callq 0xa5a0
movq %rbx, %rdi
callq 0xaa10
nop