user: Please show me the C implementation that matches the assembly code listed below:

```asm
<reducerankLB>:
  endbr64
  push   %r15
  mov    %rdi,%rcx
  mov    $0xffffffffffffffff,%r8
  push   %r14
  push   %r13
  mov    %rdx,%r13
  mov    %rdi,%rdx
  push   %r12
  push   %rbp
  mov    %rsi,%rbp
  xor    %esi,%esi
  push   %rbx
  sub    $0x138,%rsp
  mov    %rdi,0x70(%rsp)
  mov    $0xffffffff,%edi
  mov    %fs:0x28,%rax
  mov    %rax,0x128(%rsp)
  xor    %eax,%eax
  mov    $0x3b9aca00,%eax
  nopl   0x0(%rax)
L1542:
  mov    (%rdx),%r9d
  cmp    %r9d,%eax
  jle    L1811
  mov    %r9d,%eax
  mov    %esi,%edi
  xor    %r8d,%r8d
L1811:
  mov    0x4(%rdx),%r9d
  cmp    %eax,%r9d
  jge    L17
  mov    %r9d,%eax
  mov    %esi,%edi
  mov    $0x1,%r8d
L17:
  mov    0x8(%rdx),%r9d
  cmp    %eax,%r9d
  jge    L1412
  mov    %r9d,%eax
  mov    %esi,%edi
  mov    $0x2,%r8d
L1412:
  mov    0xc(%rdx),%r9d
  cmp    %eax,%r9d
  jge    L1949
  mov    %r9d,%eax
  mov    %esi,%edi
  mov    $0x3,%r8d
L1949:
  mov    0x10(%rdx),%r9d
  cmp    %eax,%r9d
  jge    L1975
  mov    %r9d,%eax
  mov    %esi,%edi
  mov    $0x4,%r8d
L1975:
  mov    0x14(%rdx),%r9d
  cmp    %eax,%r9d
  jge    L440
  mov    %r9d,%eax
  mov    %esi,%edi
  mov    $0x5,%r8d
L440:
  mov    0x18(%rdx),%r9d
  cmp    %eax,%r9d
  jge    L1470
  mov    %r9d,%eax
  mov    %esi,%edi
  mov    $0x6,%r8d
L1470:
  mov    0x1c(%rdx),%r9d
  cmp    %eax,%r9d
  jge    L1375
  mov    %r9d,%eax
  mov    %esi,%edi
  mov    $0x7,%r8d
L1375:
  mov    0x20(%rdx),%r9d
  cmp    %eax,%r9d
  jge    L1014
  mov    %r9d,%eax
  mov    %esi,%edi
  mov    $0x8,%r8d
L1014:
  mov    0x24(%rdx),%r9d
  cmp    %eax,%r9d
  jge    L1988
  mov    %r9d,%eax
  mov    %esi,%edi
  mov    $0x9,%r8d
L1988:
  mov    0x28(%rdx),%r9d
  cmp    %eax,%r9d
  jge    L561
  mov    %r9d,%eax
  mov    %esi,%edi
  mov    $0xa,%r8d
L561:
  mov    0x2c(%rdx),%r9d
  cmp    %eax,%r9d
  jge    L153
  mov    %r9d,%eax
  mov    %esi,%edi
  mov    $0xb,%r8d
L153:
  mov    0x30(%rdx),%r9d
  cmp    %eax,%r9d
  jge    L1352
  mov    %r9d,%eax
  mov    %esi,%edi
  mov    $0xc,%r8d
L1352:
  mov    0x34(%rdx),%r9d
  cmp    %eax,%r9d
  jge    L1006
  mov    %r9d,%eax
  mov    %esi,%edi
  mov    $0xd,%r8d
L1006:
  mov    0x38(%rdx),%r9d
  cmp    %eax,%r9d
  jge    L1373
  mov    %r9d,%eax
  mov    %esi,%edi
  mov    $0xe,%r8d
L1373:
  mov    0x3c(%rdx),%r9d
  cmp    %eax,%r9d
  jge    L604
  mov    %r9d,%eax
  mov    %esi,%edi
  mov    $0xf,%r8d
L604:
  add    $0x1,%esi
  add    $0x40,%rdx
  cmp    $0x10,%esi
  jne    L1542
  mov    0x70(%rsp),%rbx
  movslq %edi,%rdx
  pxor   %xmm0,%xmm0
  xor    %r10d,%r10d
  shl    $0x6,%rdx
  xor    %r11d,%r11d
  xor    %r9d,%r9d
  xor    %r12d,%r12d
  mov    (%rbx,%r8,4),%edi
  add    %rbx,%rdx
  lea    0x0(,%r8,4),%rsi
  lea    0xe0(%rsp),%r14
  xor    %r8d,%r8d
  mov    %edi,0x0(%rbp)
  mov    (%rdx),%edi
  sub    %eax,%edi
  mov    %edi,0x0(%r13)
  mov    0x40(%rbx,%rsi,1),%edi
  mov    %edi,0x4(%rbp)
  mov    0x4(%rdx),%edi
  sub    %eax,%edi
  mov    %edi,0x4(%r13)
  mov    0x80(%rbx,%rsi,1),%edi
  mov    %edi,0x8(%rbp)
  mov    0x8(%rdx),%edi
  sub    %eax,%edi
  mov    %edi,0x8(%r13)
  mov    0xc0(%rbx,%rsi,1),%edi
  mov    %edi,0xc(%rbp)
  mov    0xc(%rdx),%edi
  sub    %eax,%edi
  mov    %edi,0xc(%r13)
  mov    0x100(%rbx,%rsi,1),%edi
  mov    %edi,0x10(%rbp)
  mov    0x10(%rdx),%edi
  sub    %eax,%edi
  mov    %edi,0x10(%r13)
  mov    0x140(%rbx,%rsi,1),%edi
  mov    %edi,0x14(%rbp)
  mov    0x14(%rdx),%edi
  sub    %eax,%edi
  mov    %edi,0x14(%r13)
  mov    0x180(%rbx,%rsi,1),%edi
  mov    %edi,0x18(%rbp)
  mov    0x18(%rdx),%edi
  sub    %eax,%edi
  mov    %edi,0x18(%r13)
  mov    0x1c0(%rbx,%rsi,1),%edi
  mov    %edi,0x1c(%rbp)
  mov    0x1c(%rdx),%edi
  sub    %eax,%edi
  mov    %edi,0x1c(%r13)
  mov    0x200(%rbx,%rsi,1),%edi
  mov    %edi,0x20(%rbp)
  mov    0x20(%rdx),%edi
  sub    %eax,%edi
  mov    %edi,0x20(%r13)
  mov    0x240(%rbx,%rsi,1),%edi
  mov    %edi,0x24(%rbp)
  mov    0x24(%rdx),%edi
  sub    %eax,%edi
  mov    %edi,0x24(%r13)
  mov    0x280(%rbx,%rsi,1),%edi
  mov    %edi,0x28(%rbp)
  mov    0x28(%rdx),%edi
  sub    %eax,%edi
  mov    %edi,0x28(%r13)
  mov    0x2c0(%rbx,%rsi,1),%edi
  mov    %edi,0x2c(%rbp)
  mov    0x2c(%rdx),%edi
  sub    %eax,%edi
  mov    %edi,0x2c(%r13)
  mov    0x300(%rbx,%rsi,1),%edi
  mov    %edi,0x30(%rbp)
  mov    0x30(%rdx),%edi
  sub    %eax,%edi
  mov    %edi,0x30(%r13)
  mov    0x340(%rbx,%rsi,1),%edi
  mov    %edi,0x34(%rbp)
  mov    0x34(%rdx),%edi
  sub    %eax,%edi
  mov    %edi,0x34(%r13)
  mov    0x380(%rbx,%rsi,1),%edi
  mov    %edi,0x38(%rbp)
  mov    0x38(%rdx),%edi
  sub    %eax,%edi
  mov    %edi,0x38(%r13)
  mov    0x3c0(%rbx,%rsi,1),%esi
  xor    %edi,%edi
  mov    %esi,0x3c(%rbp)
  mov    0x3c(%rdx),%edx
  mov    %rbp,%rsi
  sub    %eax,%edx
  lea    0xa0(%rsp),%rax
  mov    %edx,0x2c(%rsp)
  mov    %edx,0x3c(%r13)
  mov    0x0(%r13),%ebx
  mov    %rax,0x88(%rsp)
  mov    %ebx,0x30(%rsp)
  mov    0x4(%r13),%ebx
  movaps %xmm0,0xe0(%rsp)
  mov    %ebx,0x34(%rsp)
  mov    0x8(%r13),%ebx
  movaps %xmm0,0xf0(%rsp)
  mov    %ebx,0x38(%rsp)
  mov    0xc(%r13),%ebx
  movaps %xmm0,0x100(%rsp)
  mov    %ebx,0x3c(%rsp)
  mov    0x10(%r13),%ebx
  movaps %xmm0,0x110(%rsp)
  mov    %ebx,0x40(%rsp)
  mov    0x14(%r13),%ebx
  movaps %xmm0,0xa0(%rsp)
  mov    %ebx,0x44(%rsp)
  mov    0x18(%r13),%ebx
  movaps %xmm0,0xb0(%rsp)
  mov    %ebx,0x48(%rsp)
  mov    0x1c(%r13),%ebx
  movaps %xmm0,0xc0(%rsp)
  mov    %ebx,0x4c(%rsp)
  mov    0x20(%r13),%ebx
  movaps %xmm0,0xd0(%rsp)
  mov    %ebx,0x50(%rsp)
  mov    0x24(%r13),%ebx
  mov    %ebx,0x54(%rsp)
  mov    0x28(%r13),%ebx
  mov    %ebx,0x58(%rsp)
  mov    0x2c(%r13),%ebx
  mov    %ebx,0x5c(%rsp)
  mov    0x30(%r13),%ebx
  mov    0x34(%r13),%edx
  movb   $0x0,0x78(%rsp)
  movl   $0x0,(%rsp)
  mov    0x38(%r13),%r15d
  movb   $0x0,0x79(%rsp)
  movb   $0x0,0x80(%rsp)
  movl   $0x0,0x8(%rsp)
  movb   $0x0,0x81(%rsp)
  movl   $0x0,0x10(%rsp)
  movb   $0x0,0x82(%rsp)
  movl   $0x0,0x18(%rsp)
  movb   $0x0,0x83(%rsp)
  movl   $0x0,0x20(%rsp)
  movb   $0x0,0x84(%rsp)
  movl   $0x0,0x24(%rsp)
  movb   $0x0,0x85(%rsp)
  movl   $0x0,0x28(%rsp)
  movb   $0x0,0x86(%rsp)
  movl   $0x0,0x6c(%rsp)
  movb   $0x0,0x87(%rsp)
  movb   $0x0,0x7d(%rsp)
  movb   $0x0,0x7e(%rsp)
  movb   $0x0,0x7f(%rsp)
  movl   $0x0,0x68(%rsp)
  movb   $0x0,0x7b(%rsp)
  movl   $0x0,0x64(%rsp)
  movb   $0x0,0x7c(%rsp)
  movb   $0x0,0x7a(%rsp)
  mov    %rbp,0x90(%rsp)
  mov    %ebx,0x60(%rsp)
  xor    %ebx,%ebx
  mov    %r13,0x98(%rsp)
  mov    %edx,%r13d
  nopl   0x0(%rax)
L1545:
  mov    (%rsi),%edx
  mov    0x30(%rsp),%ebp
  add    %edx,%ebp
  cmp    (%rcx),%ebp
  jle    L131
  addl   $0x1,(%rax)
  add    $0x1,%r12d
  add    $0x1,%ebx
  movb   $0x1,0x7a(%rsp)
L131:
  mov    0x34(%rsp),%ebp
  add    %edx,%ebp
  cmp    0x4(%rcx),%ebp
  jle    L1068
  addl   $0x1,(%rax)
  add    $0x1,%r8d
  add    $0x1,%ebx
  movb   $0x1,0x7c(%rsp)
L1068:
  mov    0x38(%rsp),%ebp
  add    %edx,%ebp
  cmp    0x8(%rcx),%ebp
  jle    L1738
  addl   $0x1,(%rax)
  add    $0x1,%ebx
  addl   $0x1,0x64(%rsp)
  movb   $0x1,0x7b(%rsp)
L1738:
  mov    0x3c(%rsp),%ebp
  add    %edx,%ebp
  cmp    0xc(%rcx),%ebp
  jle    L775
  addl   $0x1,(%rax)
  add    $0x1,%ebx
  addl   $0x1,0x68(%rsp)
  movb   $0x1,0x7f(%rsp)
L775:
  mov    0x40(%rsp),%ebp
  add    %edx,%ebp
  cmp    0x10(%rcx),%ebp
  jle    L39
  addl   $0x1,(%rax)
  add    $0x1,%r9d
  add    $0x1,%ebx
  movb   $0x1,0x7e(%rsp)
L39:
  mov    0x44(%rsp),%ebp
  add    %edx,%ebp
  cmp    0x14(%rcx),%ebp
  jle    L1279
  addl   $0x1,(%rax)
  add    $0x1,%r11d
  add    $0x1,%ebx
  movb   $0x1,0x7d(%rsp)
L1279:
  mov    0x48(%rsp),%ebp
  add    %edx,%ebp
  cmp    0x18(%rcx),%ebp
  jle    L59
  addl   $0x1,(%rax)
  add    $0x1,%r10d
  add    $0x1,%ebx
  movb   $0x1,0x87(%rsp)
L59:
  mov    0x4c(%rsp),%ebp
  add    %edx,%ebp
  cmp    0x1c(%rcx),%ebp
  jle    L1973
  addl   $0x1,(%rax)
  add    $0x1,%ebx
  addl   $0x1,0x6c(%rsp)
  movb   $0x1,0x86(%rsp)
L1973:
  mov    0x50(%rsp),%ebp
  add    %edx,%ebp
  cmp    0x20(%rcx),%ebp
  jle    L1251
  addl   $0x1,(%rax)
  add    $0x1,%ebx
  addl   $0x1,0x28(%rsp)
  movb   $0x1,0x85(%rsp)
L1251:
  mov    0x54(%rsp),%ebp
  add    %edx,%ebp
  cmp    0x24(%rcx),%ebp
  jle    L246
  addl   $0x1,(%rax)
  add    $0x1,%ebx
  addl   $0x1,0x24(%rsp)
  movb   $0x1,0x84(%rsp)
L246:
  mov    0x58(%rsp),%ebp
  add    %edx,%ebp
  cmp    0x28(%rcx),%ebp
  jle    L1038
  addl   $0x1,(%rax)
  add    $0x1,%ebx
  addl   $0x1,0x20(%rsp)
  movb   $0x1,0x83(%rsp)
L1038:
  mov    0x5c(%rsp),%ebp
  add    %edx,%ebp
  cmp    0x2c(%rcx),%ebp
  jle    L219
  addl   $0x1,(%rax)
  add    $0x1,%ebx
  addl   $0x1,0x18(%rsp)
  movb   $0x1,0x82(%rsp)
L219:
  mov    0x60(%rsp),%ebp
  add    %edx,%ebp
  cmp    0x30(%rcx),%ebp
  jle    L1150
  addl   $0x1,(%rax)
  add    $0x1,%ebx
  addl   $0x1,0x10(%rsp)
  movb   $0x1,0x81(%rsp)
L1150:
  lea    (%rdx,%r13,1),%ebp
  cmp    0x34(%rcx),%ebp
  jle    L1167
  addl   $0x1,(%rax)
  add    $0x1,%ebx
  addl   $0x1,0x8(%rsp)
  movb   $0x1,0x80(%rsp)
L1167:
  lea    (%rdx,%r15,1),%ebp
  cmp    0x38(%rcx),%ebp
  jle    L1692
  addl   $0x1,(%rax)
  add    $0x1,%edi
  add    $0x1,%ebx
  movb   $0x1,0x79(%rsp)
L1692:
  add    0x2c(%rsp),%edx
  cmp    0x3c(%rcx),%edx
  jle    L473
  addl   $0x1,(%rax)
  add    $0x1,%ebx
  addl   $0x1,(%rsp)
  movb   $0x1,0x78(%rsp)
L473:
  add    $0x4,%rax
  add    $0x4,%rsi
  add    $0x40,%rcx
  cmp    %rax,%r14
  jne    L1545
  cmpb   $0x0,0x78(%rsp)
  mov    0x90(%rsp),%rbp
  mov    0x98(%rsp),%r13
  je     L642
  mov    (%rsp),%eax
  mov    %eax,0x11c(%rsp)
L1417:
  cmpb   $0x0,0x79(%rsp)
  je     L491
  cmpb   $0x0,0x80(%rsp)
  mov    %edi,0x118(%rsp)
  je     L639
L1040:
  mov    0x8(%rsp),%eax
  mov    %eax,0x114(%rsp)
L545:
  cmpb   $0x0,0x81(%rsp)
  je     L1593
  mov    0x10(%rsp),%eax
  mov    %eax,0x110(%rsp)
L986:
  cmpb   $0x0,0x82(%rsp)
  je     L282
  mov    0x18(%rsp),%eax
  mov    %eax,0x10c(%rsp)
L550:
  cmpb   $0x0,0x83(%rsp)
  je     L1938
  mov    0x20(%rsp),%eax
  mov    %eax,0x108(%rsp)
L1185:
  cmpb   $0x0,0x84(%rsp)
  je     L310
  mov    0x24(%rsp),%eax
  mov    %eax,0x104(%rsp)
L117:
  cmpb   $0x0,0x85(%rsp)
  je     L466
  mov    0x28(%rsp),%eax
  mov    %eax,0x100(%rsp)
L1379:
  cmpb   $0x0,0x86(%rsp)
  je     L621
  mov    0x6c(%rsp),%eax
  mov    %eax,0xfc(%rsp)
L1214:
  cmpb   $0x0,0x87(%rsp)
  je     L146
  mov    %r10d,0xf8(%rsp)
L1641:
  cmpb   $0x0,0x7d(%rsp)
  je     L923
  mov    %r11d,0xf4(%rsp)
L1277:
  cmpb   $0x0,0x7e(%rsp)
  je     L821
  mov    %r9d,0xf0(%rsp)
L548:
  cmpb   $0x0,0x7f(%rsp)
  je     L338
  mov    0x68(%rsp),%eax
  mov    %eax,0xec(%rsp)
L996:
  cmpb   $0x0,0x7b(%rsp)
  je     L1944
  mov    0x64(%rsp),%eax
  mov    %eax,0xe8(%rsp)
L1602:
  cmpb   $0x0,0x7c(%rsp)
  je     L1293
  mov    %r8d,0xe4(%rsp)
L1960:
  cmpb   $0x0,0x7a(%rsp)
  je     L730
  mov    %r12d,0xe0(%rsp)
L1193:
  test   %ebx,%ebx
  je     L2019
  mov    %r12d,%edx
  mov    0x64(%rsp),%ecx
  mov    %r11d,%r12d
  mov    0x68(%rsp),%esi
  mov    %r10d,%r11d
  mov    0x6c(%rsp),%r10d
  nopw   0x0(%rax,%rax,1)
L1036:
  mov    0xa0(%rsp),%eax
  xor    %r15d,%r15d
  test   %eax,%eax
  jg     L303
  xor    %eax,%eax
  mov    $0xffffffffffffffff,%r15
L303:
  cmp    %edx,%eax
  jge    L878
  mov    %edx,%eax
  mov    $0x10,%r15d
L878:
  mov    0xa4(%rsp),%edx
  cmp    %edx,%eax
  jge    L979
  mov    %edx,%eax
  mov    $0x1,%r15d
L979:
  cmp    %r8d,%eax
  jge    L1699
  mov    %r8d,%eax
  mov    $0x11,%r15d
L1699:
  mov    0xa8(%rsp),%edx
  cmp    %edx,%eax
  jge    L1391
  mov    %edx,%eax
  mov    $0x2,%r15d
L1391:
  cmp    %ecx,%eax
  jge    L1019
  mov    %ecx,%eax
  mov    $0x12,%r15d
L1019:
  mov    0xac(%rsp),%edx
  cmp    %edx,%eax
  jge    L1335
  mov    %edx,%eax
  mov    $0x3,%r15d
L1335:
  cmp    %esi,%eax
  jge    L12
  mov    %esi,%eax
  mov    $0x13,%r15d
L12:
  mov    0xb0(%rsp),%edx
  cmp    %edx,%eax
  jge    L1148
  mov    %edx,%eax
  mov    $0x4,%r15d
L1148:
  cmp    %r9d,%eax
  jge    L818
  mov    %r9d,%eax
  mov    $0x14,%r15d
L818:
  mov    0xb4(%rsp),%edx
  cmp    %edx,%eax
  jge    L258
  mov    %edx,%eax
  mov    $0x5,%r15d
L258:
  cmp    %r12d,%eax
  jge    L1310
  mov    %r12d,%eax
  mov    $0x15,%r15d
L1310:
  mov    0xb8(%rsp),%edx
  cmp    %edx,%eax
  jge    L1969
  mov    %edx,%eax
  mov    $0x6,%r15d
L1969:
  cmp    %r11d,%eax
  jge    L1363
  mov    %r11d,%eax
  mov    $0x16,%r15d
L1363:
  mov    0xbc(%rsp),%edx
  cmp    %edx,%eax
  jge    L134
  mov    %edx,%eax
  mov    $0x7,%r15d
L134:
  cmp    %r10d,%eax
  jge    L1085
  mov    %r10d,%eax
  mov    $0x17,%r15d
L1085:
  mov    0xc0(%rsp),%edx
  cmp    %edx,%eax
  jge    L93
  mov    %edx,%eax
  mov    $0x8,%r15d
L93:
  mov    0x28(%rsp),%ecx
  cmp    %ecx,%eax
  jge    L749
  mov    %ecx,%eax
  mov    $0x18,%r15d
L749:
  mov    0xc4(%rsp),%edx
  cmp    %edx,%eax
  jge    L269
  mov    %edx,%eax
  mov    $0x9,%r15d
L269:
  mov    0x24(%rsp),%ecx
  cmp    %ecx,%eax
  jge    L712
  mov    %ecx,%eax
  mov    $0x19,%r15d
L712:
  mov    0xc8(%rsp),%edx
  cmp    %edx,%eax
  jge    L847
  mov    %edx,%eax
  mov    $0xa,%r15d
L847:
  mov    0x20(%rsp),%ecx
  cmp    %ecx,%eax
  jge    L1159
  mov    %ecx,%eax
  mov    $0x1a,%r15d
L1159:
  mov    0xcc(%rsp),%edx
  cmp    %edx,%eax
  jge    L328
  mov    %edx,%eax
  mov    $0xb,%r15d
L328:
  mov    0x18(%rsp),%ecx
  cmp    %ecx,%eax
  jge    L525
  mov    %ecx,%eax
  mov    $0x1b,%r15d
L525:
  mov    0xd0(%rsp),%edx
  cmp    %edx,%eax
  jge    L1624
  mov    %edx,%eax
  mov    $0xc,%r15d
L1624:
  mov    0x10(%rsp),%ecx
  cmp    %ecx,%eax
  jge    L155
  mov    %ecx,%eax
  mov    $0x1c,%r15d
L155:
  mov    0xd4(%rsp),%edx
  cmp    %edx,%eax
  jge    L1163
  mov    %edx,%eax
  mov    $0xd,%r15d
L1163:
  mov    0x8(%rsp),%ecx
  cmp    %ecx,%eax
  jge    L235
  mov    %ecx,%eax
  mov    $0x1d,%r15d
L235:
  mov    0xd8(%rsp),%edx
  cmp    %edx,%eax
  jge    L1297
  mov    %edx,%eax
  mov    $0xe,%r15d
L1297:
  mov    0xdc(%rsp),%edx
  cmp    %edi,%eax
  jge    L157
  cmp    %edx,%edi
  jl     L176
  xor    %ecx,%ecx
  cmp    (%rsp),%edi
  setl   %sil
  setl   %cl
  movzbl %sil,%esi
  lea    0x38(,%rcx,4),%rcx
  add    $0xe,%rsi
L1192:
  mov    0x70(%rsp),%rdi
  add    %r13,%rcx
  mov    0x0(%rbp),%edx
  mov    (%rcx),%eax
  lea    (%rdi,%rsi,4),%r12
  xor    %edi,%edi
  add    %eax,%edx
  sub    (%r12),%edx
  lea    -0x1(%rdx),%r8d
  cmp    $0x3b9ac9ff,%r8d
  mov    $0x3b9aca00,%r8d
  cmovae %r8d,%edx
  mov    0x4(%rbp),%r8d
  setb   %dil
  add    %eax,%r8d
  sub    0x40(%r12),%r8d
  test   %r8d,%r8d
  jle    L1963
  cmp    %r8d,%edx
  jle    L1963
  mov    $0x1,%edi
L916:
  mov    0x8(%rbp),%edx
  add    %eax,%edx
  sub    0x80(%r12),%edx
  test   %edx,%edx
  jle    L1120
  cmp    %edx,%r8d
  jle    L1120
  mov    $0x1,%edi
L138:
  mov    0xc(%rbp),%r8d
  add    %eax,%r8d
  sub    0xc0(%r12),%r8d
  test   %r8d,%r8d
  jle    L1110
  cmp    %r8d,%edx
  jle    L1110
  mov    $0x1,%edi
L1479:
  mov    0x10(%rbp),%edx
  add    %eax,%edx
  sub    0x100(%r12),%edx
  test   %edx,%edx
  jle    L107
  cmp    %edx,%r8d
  jle    L107
  mov    $0x1,%edi
L558:
  mov    0x14(%rbp),%r8d
  add    %eax,%r8d
  sub    0x140(%r12),%r8d
  test   %r8d,%r8d
  jle    L1572
  cmp    %r8d,%edx
  jle    L1572
  mov    $0x1,%edi
L1025:
  mov    0x18(%rbp),%edx
  add    %eax,%edx
  sub    0x180(%r12),%edx
  test   %edx,%edx
  jle    L366
  cmp    %edx,%r8d
  jle    L366
  mov    $0x1,%edi
L816:
  mov    0x1c(%rbp),%r8d
  add    %eax,%r8d
  sub    0x1c0(%r12),%r8d
  test   %r8d,%r8d
  jle    L981
  cmp    %r8d,%edx
  jle    L981
  mov    $0x1,%edi
L976:
  mov    0x20(%rbp),%edx
  add    %eax,%edx
  sub    0x200(%r12),%edx
  test   %edx,%edx
  jle    L296
  cmp    %edx,%r8d
  jle    L296
  mov    $0x1,%edi
L363:
  mov    0x24(%rbp),%r8d
  add    %eax,%r8d
  sub    0x240(%r12),%r8d
  test   %r8d,%r8d
  jle    L941
  cmp    %r8d,%edx
  jle    L941
  mov    $0x1,%edi
L1695:
  mov    0x28(%rbp),%edx
  add    %eax,%edx
  sub    0x280(%r12),%edx
  test   %edx,%edx
  jle    L347
  cmp    %edx,%r8d
  jle    L347
  mov    $0x1,%edi
L760:
  mov    0x2c(%rbp),%r8d
  add    %eax,%r8d
  sub    0x2c0(%r12),%r8d
  test   %r8d,%r8d
  jle    L99
  cmp    %r8d,%edx
  jle    L99
  mov    $0x1,%edi
L1521:
  mov    0x30(%rbp),%edx
  add    %eax,%edx
  sub    0x300(%r12),%edx
  test   %edx,%edx
  jle    L1369
  cmp    %edx,%r8d
  jle    L1369
  mov    $0x1,%edi
L966:
  mov    0x34(%rbp),%r8d
  add    %eax,%r8d
  sub    0x340(%r12),%r8d
  test   %r8d,%r8d
  jle    L1405
  cmp    %r8d,%edx
  jle    L1405
  mov    $0x1,%edi
L350:
  mov    0x38(%rbp),%edx
  add    %eax,%edx
  sub    0x380(%r12),%edx
  test   %edx,%edx
  jle    L1055
  cmp    %edx,%r8d
  jle    L1055
  mov    $0x1,%edi
L1217:
  add    0x3c(%rbp),%eax
  sub    0x3c0(%r12),%eax
  mov    %eax,%r15d
  test   %eax,%eax
  jle    L1114
  cmp    %eax,%edx
  jle    L1114
  mov    $0x1,%edi
L1962:
  mov    %rsi,0x18(%rsp)
  mov    %rcx,(%rsp)
  call   <assert@plt>
  mov    (%rsp),%rcx
  mov    %rbp,%rdx
  mov    %rbp,0x8(%rsp)
  mov    %r13,0x10(%rsp)
  mov    0x18(%rsp),%rsi
  mov    %r14,%r13
  mov    %ebx,%r14d
  mov    (%rcx),%eax
  mov    %rcx,%rbp
  mov    %rdx,%rbx
  sub    %r15d,%eax
  mov    0x88(%rsp),%r15
  mov    %eax,(%rcx)
  jmp    L1020
  nopl   0x0(%rax,%rax,1)
L317:
  mov    0x0(%rbp),%eax
L1020:
  add    (%rbx),%eax
  cmp    (%r12),%eax
  jne    L1618
  mov    (%r15),%eax
  sub    $0x1,%r14d
  mov    %rsi,(%rsp)
  mov    %r14d,%r8d
  lea    -0x1(%rax),%edi
  mov    0xe0(%rsp,%rsi,4),%eax
  not    %r8d
  mov    %edi,(%r15)
  shr    $0x1f,%r8d
  not    %edi
  sub    $0x1,%eax
  shr    $0x1f,%edi
  mov    %eax,0xe0(%rsp,%rsi,4)
  not    %eax
  shr    $0x1f,%eax
  and    %r8d,%eax
  and    %eax,%edi
  call   <assert@plt>
  mov    (%rsp),%rsi
L1618:
  add    $0x4,%r15
  add    $0x4,%rbx
  add    $0x40,%r12
  cmp    %r15,%r13
  jne    L317
  mov    %r14d,%ebx
  mov    0x8(%rsp),%rbp
  mov    %r13,%r14
  mov    0x10(%rsp),%r13
  test   %ebx,%ebx
  jle    L2019
L1178:
  mov    0x100(%rsp),%eax
  mov    0xe0(%rsp),%edx
  mov    0xe4(%rsp),%r8d
  mov    0xe8(%rsp),%ecx
  mov    %eax,0x28(%rsp)
  mov    0x104(%rsp),%eax
  mov    0xec(%rsp),%esi
  mov    0xf0(%rsp),%r9d
  mov    %eax,0x24(%rsp)
  mov    0x108(%rsp),%eax
  mov    0xf4(%rsp),%r12d
  mov    0xf8(%rsp),%r11d
  mov    %eax,0x20(%rsp)
  mov    0x10c(%rsp),%eax
  mov    0xfc(%rsp),%r10d
  mov    0x118(%rsp),%edi
  mov    %eax,0x18(%rsp)
  mov    0x110(%rsp),%eax
  mov    %eax,0x10(%rsp)
  mov    0x114(%rsp),%eax
  mov    %eax,0x8(%rsp)
  mov    0x11c(%rsp),%eax
  mov    %eax,(%rsp)
  jmp    L1036
L491:
  xor    %edi,%edi
  cmpb   $0x0,0x80(%rsp)
  jne    L1040
L639:
  movl   $0x0,0x8(%rsp)
  jmp    L545
L642:
  movl   $0x0,(%rsp)
  jmp    L1417
L1593:
  movl   $0x0,0x10(%rsp)
  jmp    L986
L282:
  movl   $0x0,0x18(%rsp)
  jmp    L550
L466:
  movl   $0x0,0x28(%rsp)
  jmp    L1379
  nopl   (%rax)
L176:
  cmp    %edx,(%rsp)
  jg     L1736
  mov    $0x3c0,%edx
  mov    $0x3c,%ecx
  mov    $0xf,%r15d
L762:
  add    %rbp,%rcx
  mov    0x0(%r13),%esi
  add    0x70(%rsp),%rdx
  xor    %edi,%edi
  mov    (%rcx),%eax
  add    %eax,%esi
  sub    (%rdx),%esi
  lea    -0x1(%rsi),%r8d
  cmp    $0x3b9ac9ff,%r8d
  mov    $0x3b9aca00,%r8d
  cmovae %r8d,%esi
  mov    0x4(%r13),%r8d
  setb   %dil
  add    %eax,%r8d
  sub    0x4(%rdx),%r8d
  test   %r8d,%r8d
  jle    L1143
  cmp    %r8d,%esi
  jle    L1143
  mov    $0x1,%edi
L911:
  mov    0x8(%r13),%esi
  add    %eax,%esi
  sub    0x8(%rdx),%esi
  test   %esi,%esi
  jle    L1129
  cmp    %esi,%r8d
  jle    L1129
  mov    $0x1,%edi
L1981:
  mov    0xc(%r13),%r8d
  add    %eax,%r8d
  sub    0xc(%rdx),%r8d
  test   %r8d,%r8d
  jle    L1461
  cmp    %r8d,%esi
  jle    L1461
  mov    $0x1,%edi
L47:
  mov    0x10(%r13),%esi
  add    %eax,%esi
  sub    0x10(%rdx),%esi
  test   %esi,%esi
  jle    L460
  cmp    %esi,%r8d
  jle    L460
  mov    $0x1,%edi
L1638:
  mov    0x14(%r13),%r8d
  add    %eax,%r8d
  sub    0x14(%rdx),%r8d
  test   %r8d,%r8d
  jle    L853
  cmp    %r8d,%esi
  jle    L853
  mov    $0x1,%edi
L1567:
  mov    0x18(%r13),%esi
  add    %eax,%esi
  sub    0x18(%rdx),%esi
  test   %esi,%esi
  jle    L326
  cmp    %esi,%r8d
  jle    L326
  mov    $0x1,%edi
L455:
  mov    0x1c(%r13),%r8d
  add    %eax,%r8d
  sub    0x1c(%rdx),%r8d
  test   %r8d,%r8d
  jle    L1655
  cmp    %r8d,%esi
  jle    L1655
  mov    $0x1,%edi
L1961:
  mov    0x20(%r13),%esi
  add    %eax,%esi
  sub    0x20(%rdx),%esi
  test   %esi,%esi
  jle    L1448
  cmp    %esi,%r8d
  jle    L1448
  mov    $0x1,%edi
L611:
  mov    0x24(%r13),%r8d
  add    %eax,%r8d
  sub    0x24(%rdx),%r8d
  test   %r8d,%r8d
  jle    L1891
  cmp    %r8d,%esi
  jle    L1891
  mov    $0x1,%edi
L72:
  mov    0x28(%r13),%esi
  add    %eax,%esi
  sub    0x28(%rdx),%esi
  test   %esi,%esi
  jle    L848
  cmp    %esi,%r8d
  jle    L848
  mov    $0x1,%edi
L187:
  mov    0x2c(%r13),%r8d
  add    %eax,%r8d
  sub    0x2c(%rdx),%r8d
  test   %r8d,%r8d
  jle    L1439
  cmp    %r8d,%esi
  jle    L1439
  mov    $0x1,%edi
L1824:
  mov    0x30(%r13),%esi
  add    %eax,%esi
  sub    0x30(%rdx),%esi
  test   %esi,%esi
  jle    L236
  cmp    %esi,%r8d
  jle    L236
  mov    $0x1,%edi
L896:
  mov    0x34(%r13),%r8d
  add    %eax,%r8d
  sub    0x34(%rdx),%r8d
  test   %r8d,%r8d
  jle    L395
  cmp    %r8d,%esi
  jle    L395
  mov    $0x1,%edi
L1935:
  mov    0x38(%r13),%esi
  add    %eax,%esi
  sub    0x38(%rdx),%esi
  test   %esi,%esi
  jle    L731
  cmp    %esi,%r8d
  jle    L731
  add    0x3c(%r13),%eax
  sub    0x3c(%rdx),%eax
  mov    $0x1,%edi
  mov    %eax,%r12d
  test   %eax,%eax
  jle    L586
L1832:
  cmp    %eax,%esi
  jle    L586
  mov    $0x1,%edi
L286:
  mov    %rcx,(%rsp)
  mov    %rdx,0x10(%rsp)
  call   <assert@plt>
  mov    (%rsp),%rcx
  mov    %rbp,0x8(%rsp)
  mov    %r14,%rbp
  mov    (%rcx),%eax
  mov    %rcx,%r14
  sub    %r12d,%eax
  xor    %r12d,%r12d
  mov    %eax,(%rcx)
  mov    %r15,%rcx
  mov    0x10(%rsp),%r15
  jmp    L539
  nopl   (%rax)
L860:
  mov    (%r14),%eax
L539:
  add    0x0(%r13,%r12,1),%eax
  cmp    (%r15,%r12,1),%eax
  jne    L1558
  mov    0xa0(%rsp,%rcx,4),%eax
  mov    %rcx,(%rsp)
  sub    $0x1,%ebx
  mov    %ebx,%esi
  sub    $0x1,%eax
  not    %esi
  mov    %eax,0xa0(%rsp,%rcx,4)
  mov    0x0(%rbp,%r12,1),%ecx
  not    %eax
  shr    $0x1f,%esi
  shr    $0x1f,%eax
  lea    -0x1(%rcx),%edi
  and    %esi,%eax
  mov    %edi,0x0(%rbp,%r12,1)
  not    %edi
  shr    $0x1f,%edi
  and    %eax,%edi
  call   <assert@plt>
  mov    (%rsp),%rcx
L1558:
  add    $0x4,%r12
  cmp    $0x40,%r12
  jne    L860
  mov    %rbp,%r14
  mov    0x8(%rsp),%rbp
  test   %ebx,%ebx
  jg     L1178
L2019:
  mov    0x128(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L529
  add    $0x138,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L157:
  cmp    %edx,%eax
  jl     L176
  cmp    (%rsp),%eax
  jl     L1736
  cmp    $0xf,%r15d
  jg     L273
  movslq %r15d,%rdx
  lea    0x0(,%rdx,4),%rcx
  shl    $0x6,%rdx
  jmp    L762
  nopl   0x0(%rax,%rax,1)
L1736:
  mov    $0x3c,%ecx
  mov    $0xf,%esi
  jmp    L1192
L731:
  add    0x3c(%r13),%eax
  sub    0x3c(%rdx),%eax
  mov    %r8d,%esi
  mov    %eax,%r12d
  test   %eax,%eax
  jg     L1832
L586:
  mov    %esi,%r12d
  jmp    L286
L395:
  mov    %esi,%r8d
  jmp    L1935
L236:
  mov    %r8d,%esi
  jmp    L896
L1439:
  mov    %esi,%r8d
  jmp    L1824
L848:
  mov    %r8d,%esi
  jmp    L187
L1891:
  mov    %esi,%r8d
  jmp    L72
L1448:
  mov    %r8d,%esi
  jmp    L611
L1655:
  mov    %esi,%r8d
  jmp    L1961
L326:
  mov    %r8d,%esi
  jmp    L455
L853:
  mov    %esi,%r8d
  jmp    L1567
L1055:
  mov    %r8d,%edx
  jmp    L1217
L1405:
  mov    %edx,%r8d
  jmp    L350
L1369:
  mov    %r8d,%edx
  jmp    L966
L99:
  mov    %edx,%r8d
  jmp    L1521
L1114:
  mov    %edx,%r15d
  jmp    L1962
L347:
  mov    %r8d,%edx
  jmp    L760
L941:
  mov    %edx,%r8d
  jmp    L1695
L296:
  mov    %r8d,%edx
  jmp    L363
L981:
  mov    %edx,%r8d
  jmp    L976
L366:
  mov    %r8d,%edx
  jmp    L816
L1572:
  mov    %edx,%r8d
  jmp    L1025
L107:
  mov    %r8d,%edx
  jmp    L558
L1110:
  mov    %edx,%r8d
  jmp    L1479
L460:
  mov    %r8d,%esi
  jmp    L1638
L1461:
  mov    %esi,%r8d
  jmp    L47
L1129:
  mov    %r8d,%esi
  jmp    L1981
L1143:
  mov    %esi,%r8d
  jmp    L911
L1120:
  mov    %r8d,%edx
  jmp    L138
L1963:
  mov    %edx,%r8d
  jmp    L916
L273:
  lea    -0x10(%r15),%esi
  movslq %esi,%rsi
  lea    0x0(,%rsi,4),%rcx
  jmp    L1192
L1938:
  movl   $0x0,0x20(%rsp)
  jmp    L1185
L310:
  movl   $0x0,0x24(%rsp)
  jmp    L117
L730:
  xor    %r12d,%r12d
  jmp    L1193
L1293:
  xor    %r8d,%r8d
  jmp    L1960
L1944:
  movl   $0x0,0x64(%rsp)
  jmp    L1602
L621:
  movl   $0x0,0x6c(%rsp)
  jmp    L1214
L529:
  call   <__stack_chk_fail@plt>
L338:
  movl   $0x0,0x68(%rsp)
  jmp    L996
L821:
  xor    %r9d,%r9d
  jmp    L548
L923:
  xor    %r11d,%r11d
  jmp    L1277
L146:
  xor    %r10d,%r10d
  jmp    L1641
```

assistant: ```c
void reducerankLB(int t[16][16], int t0[16], int t1[16]) {
  int d, i, j, dd, nd, i1, j1, nmax, dmin, imin, jmin, vmin, n0[16], n1[16];
  vmin = 1000000000;
  imin = jmin = -1;
  for (i = 0; i < 16; i++)
    for (j = 0; j < 16; j++)
      if (t[i][j] < vmin) {
        vmin = t[i][j];
        imin = i;
        jmin = j;
      }
  for (i = 0; i < 16; i++) {
    t0[i] = t[i][jmin];
    t1[i] = t[imin][i] - vmin;
  }
  nd = 0;
  for (i = 0; i < 16; i++)
    n0[i] = n1[i] = 0;
  for (i = 0; i < 16; i++)
    for (j = 0; j < 16; j++)
      if (t0[i] + t1[j] > t[i][j]) {
        n0[i]++;
        n1[j]++;
        nd++;
      }
  while (nd > 0) {
    if (0) {
      printf("             ");
      for (j = 0; j < 16; j++)
        printf(" %4d", n1[j]);
      printf("\n");
      printf("             ");
      for (j = 0; j < 16; j++)
        printf(" %4d", t1[j]);
      printf("\n");
      for (i = 0; i < 16; i++) {
        printf("%4d %4d : ", n0[i], t0[i]);
        for (j = 0; j < 16; j++)
          printf(" %4d", t0[i] + t1[j] - t[i][j]);
        printf("\n");
      }
      printf("\n");
    }
    nmax = 0;
    dd = -1;
    for (i = 0; i < 16; i++) {
      if (n0[i] > nmax) {
        nmax = n0[i];
        dd = i;
      }
      if (n1[i] > nmax) {
        nmax = n1[i];
        dd = 16 + i;
      }
    }
    if (dd < 16) {
      dmin = 1000000000;
      j1 = -1;
      for (j = 0; j < 16; j++) {
        d = (t0[dd] + t1[j]) - t[dd][j];
        if (d > 0 && d < dmin) {
          dmin = d;
          j1 = j;
        }
      }
      assert(j1 >= 0);
      t0[dd] -= dmin;
      for (j = 0; j < 16; j++)
        if (t0[dd] + t1[j] == t[dd][j]) {
          n0[dd]--;
          n1[j]--;
          nd--;
          assert(n0[dd] >= 0 && n1[j] >= 0 && nd >= 0);
        }
    } else {
      dd -= 16;
      dmin = 1000000000;
      i1 = -1;
      for (i = 0; i < 16; i++) {
        d = (t0[i] + t1[dd]) - t[i][dd];
        if (d > 0 && d < dmin) {
          dmin = d;
          i1 = i;
        }
      }
      assert(i1 >= 0);
      t1[dd] -= dmin;
      for (i = 0; i < 16; i++)
        if (t0[i] + t1[dd] == t[i][dd]) {
          n0[i]--;
          n1[dd]--;
          nd--;
          assert(n0[i] >= 0 && n1[dd] >= 0 && nd >= 0);
        }
    }
  }
}
```