user: 这段汇编代码用C语言表示是什么样的？

```asm
<test>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %edi,-0x24(%rbp)
  movl   $0x0,-0x1c(%rbp)
  jmp    L666
L571:
  cmpl   $0x0,-0x1c(%rbp)
  jle    L256
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x1,%eax
  jmp    L1056
L256:
  mov    $0x1,%eax
L1056:
  mov    %eax,-0x14(%rbp)
  jmp    L566
L749:
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x14(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x1c(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  addl   $0x1,-0x14(%rbp)
L566:
  mov    -0x1c(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  cmp    %eax,-0x14(%rbp)
  jle    L749
  addl   $0x1,-0x1c(%rbp)
L666:
  cmpl   $0x4,-0x24(%rbp)
  jg     L538
  mov    $0x7,%eax
  sub    -0x24(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %edx,%eax
  jmp    L53
L538:
  mov    -0x24(%rbp),%eax
  sub    $0x5,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L53:
  cmp    -0x1c(%rbp),%eax
  jge    L571
  cmpl   $0x1,-0x24(%rbp)
  jne    L1422
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  movl   $0x0,-0xc(%rbp)
  jmp    L602
L366:
  cmpl   $0x0,-0xc(%rbp)
  js     L490
  mov    -0xc(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  cmp    $0x1,%eax
  setg   %al
  jmp    L1457
L490:
  mov    -0xc(%rbp),%eax
  mov    %eax,%ecx
  lea    0x0(,%rax,4),%edx
  mov    %ecx,%eax
  sub    %edx,%eax
  cmp    $0xfffffffd,%eax
  setl   %al
L1457:
  test   %al,%al
  je     L1079
  mov    $0x0,%eax
  jmp    L868
L1079:
  cmpl   $0x0,-0xc(%rbp)
  js     L509
  mov    -0xc(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x1,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %edx,%eax
  jmp    L868
L509:
  mov    -0xc(%rbp),%eax
  mov    %eax,%ecx
  lea    0x0(,%rax,4),%edx
  mov    %ecx,%eax
  sub    %edx,%eax
  add    $0x1,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L868:
  mov    %eax,-0x8(%rbp)
  jmp    L550
L386:
  mov    -0xc(%rbp),%eax
  neg    %eax
  sub    -0x8(%rbp),%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  neg    %eax
  sub    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  addl   $0x1,-0x8(%rbp)
L550:
  mov    -0xc(%rbp),%eax
  mov    %eax,%ecx
  lea    0x0(,%rax,4),%edx
  mov    %ecx,%eax
  sub    %edx,%eax
  cmp    $0xffffffff,%eax
  jge    L1537
  mov    -0xc(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  cmp    $0x1,%eax
  setg   %al
  jmp    L762
L1537:
  mov    -0xc(%rbp),%eax
  mov    %eax,%ecx
  lea    0x0(,%rax,4),%edx
  mov    %ecx,%eax
  sub    %edx,%eax
  cmp    $0xfffffffd,%eax
  setl   %al
L762:
  test   %al,%al
  je     L102
  mov    -0xc(%rbp),%eax
  mov    %eax,%ecx
  lea    0x0(,%rax,4),%edx
  mov    %ecx,%eax
  sub    %edx,%eax
  cmp    $0xffffffff,%eax
  jge    L1106
  mov    -0xc(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x1,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %edx,%eax
  jmp    L285
L1106:
  mov    -0xc(%rbp),%eax
  mov    %eax,%ecx
  lea    0x0(,%rax,4),%edx
  mov    %ecx,%eax
  sub    %edx,%eax
  add    $0x1,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  jmp    L285
L102:
  mov    $0x0,%eax
L285:
  cmp    -0x8(%rbp),%eax
  jge    L386
  addl   $0x1,-0xc(%rbp)
L602:
  cmpl   $0x0,-0xc(%rbp)
  jle    L366
L1422:
  cmpl   $0x1,-0x24(%rbp)
  jle    L818
  cmpl   $0x3,-0x24(%rbp)
  jg     L931
  mov    $0x4,%eax
  sub    -0x24(%rbp),%eax
  cmp    $0x2,%eax
  setg   %al
  jmp    L161
L931:
  mov    -0x24(%rbp),%eax
  shr    $0x1f,%eax
L161:
  test   %al,%al
  je     L443
  mov    $0x0,%eax
  jmp    L641
L443:
  cmpl   $0x3,-0x24(%rbp)
  jg     L1521
  mov    $0x4,%eax
  sub    -0x24(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %edx,%eax
  jmp    L641
L1521:
  mov    -0x24(%rbp),%eax
  sub    $0x2,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L641:
  mov    %eax,-0x1c(%rbp)
  jmp    L425
L1350:
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x1c(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  movl   $0x1,-0x10(%rbp)
  jmp    L381
L1281:
  movl   $0x0,-0xc(%rbp)
  jmp    L1337
L477:
  cmpl   $0x1,-0x24(%rbp)
  jg     L1424
  mov    $0x2,%eax
  sub    -0x24(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %edx,%eax
  jmp    L136
L1424:
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L136:
  mov    %eax,-0x8(%rbp)
  jmp    L702
L453:
  mov    -0x1c(%rbp),%eax
  sub    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x10(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x1c(%rbp),%eax
  sub    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  addl   $0x1,-0x8(%rbp)
L702:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    0x0(,%rax,4),%ecx
  mov    %esi,%eax
  sub    %ecx,%eax
  add    %edx,%eax
  cmp    $0xfffffffe,%eax
  jge    L837
  mov    -0xc(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  lea    (%rax,%rdx,1),%ecx
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    %ecx,%eax
  sub    %edx,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %edx,%eax
  jmp    L1112
L837:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    0x0(,%rax,4),%ecx
  mov    %esi,%eax
  sub    %ecx,%eax
  add    %edx,%eax
  add    $0x2,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L1112:
  cmp    -0x8(%rbp),%eax
  jge    L453
  addl   $0x1,-0xc(%rbp)
L1337:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  cmp    $0xfffffffc,%eax
  jge    L574
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  not    %eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %eax,%edx
  mov    -0x24(%rbp),%eax
  add    %edx,%eax
  sub    $0x1,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %edx,%eax
  jmp    L987
L574:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  add    $0x4,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L987:
  cmp    -0xc(%rbp),%eax
  jge    L477
  addl   $0x1,-0x10(%rbp)
L381:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x24(%rbp),%eax
  add    $0x4,%eax
  cmp    %eax,-0x24(%rbp)
  jle    L1451
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x24(%rbp),%eax
  add    $0x5,%eax
  jmp    L281
L1451:
  mov    -0x24(%rbp),%eax
L281:
  cmp    -0x10(%rbp),%eax
  jge    L1281
  movl   $0x2,-0x14(%rbp)
  jmp    L897
L845:
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x14(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x1c(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  addl   $0x1,-0x14(%rbp)
L897:
  mov    -0x1c(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %eax,%edx
  mov    -0x24(%rbp),%eax
  cmp    %eax,%edx
  cmovle %edx,%eax
  cmp    %eax,-0x14(%rbp)
  jle    L845
  movl   $0x1,-0x18(%rbp)
  jmp    L966
L1380:
  mov    -0x18(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x14(%rbp)
  movl   $0x1,-0x10(%rbp)
  jmp    L504
L1044:
  movl   $0x0,-0xc(%rbp)
  jmp    L385
L1048:
  cmpl   $0x1,-0x24(%rbp)
  jg     L440
  mov    $0x2,%eax
  sub    -0x24(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %edx,%eax
  jmp    L466
L440:
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L466:
  mov    %eax,-0x8(%rbp)
  jmp    L1340
L339:
  mov    -0x1c(%rbp),%eax
  sub    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x18(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x10(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x1c(%rbp),%eax
  sub    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  addl   $0x1,-0x8(%rbp)
L1340:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    0x0(,%rax,4),%ecx
  mov    %esi,%eax
  sub    %ecx,%eax
  add    %edx,%eax
  cmp    $0xfffffffe,%eax
  jge    L1133
  mov    -0xc(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  lea    (%rax,%rdx,1),%ecx
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    %ecx,%eax
  sub    %edx,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %edx,%eax
  jmp    L1330
L1133:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    0x0(,%rax,4),%ecx
  mov    %esi,%eax
  sub    %ecx,%eax
  add    %edx,%eax
  add    $0x2,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L1330:
  cmp    -0x8(%rbp),%eax
  jge    L339
  addl   $0x1,-0xc(%rbp)
L385:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  cmp    $0xfffffffc,%eax
  jge    L131
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  not    %eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %eax,%edx
  mov    -0x24(%rbp),%eax
  add    %edx,%eax
  sub    $0x1,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %edx,%eax
  jmp    L1006
L131:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  add    $0x4,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L1006:
  cmp    -0xc(%rbp),%eax
  jge    L1048
  addl   $0x1,-0x10(%rbp)
L504:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x24(%rbp),%eax
  lea    0x5(%rax),%edx
  mov    -0x24(%rbp),%eax
  cmp    %eax,%edx
  cmovle %edx,%eax
  cmp    %eax,-0x10(%rbp)
  jle    L1044
  addl   $0x1,-0x18(%rbp)
L966:
  mov    -0x24(%rbp),%eax
  cmp    -0x18(%rbp),%eax
  jg     L1380
  addl   $0x1,-0x1c(%rbp)
L425:
  cmpl   $0x0,-0x1c(%rbp)
  jle    L1350
L818:
  cmpl   $0x3,-0x24(%rbp)
  jg     L476
  mov    $0x4,%eax
  sub    -0x24(%rbp),%eax
  cmp    $0xfffffffe,%eax
  setge  %al
  jmp    L499
L476:
  cmpl   $0x4,-0x24(%rbp)
  setle  %al
L499:
  test   %al,%al
  je     L1485
  mov    $0x1,%eax
  jmp    L828
L1485:
  cmpl   $0x3,-0x24(%rbp)
  jg     L1489
  mov    $0x4,%eax
  sub    -0x24(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %edx,%eax
  jmp    L828
L1489:
  mov    -0x24(%rbp),%eax
  sub    $0x2,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L828:
  mov    %eax,-0x1c(%rbp)
  jmp    L444
L507:
  movl   $0x1,-0x10(%rbp)
  jmp    L687
L780:
  movl   $0x0,-0xc(%rbp)
  jmp    L42
L1203:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    0x0(,%rax,4),%ecx
  mov    %esi,%eax
  sub    %ecx,%eax
  add    %edx,%eax
  test   %eax,%eax
  jns    L9
  mov    -0xc(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  lea    (%rax,%rdx,1),%ecx
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    %ecx,%eax
  sub    %edx,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  mov    %rdx,%rcx
  shr    $0x20,%rcx
  sar    $0x1f,%eax
  sub    %ecx,%eax
  mov    %eax,%edx
  jmp    L624
L9:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    0x0(,%rax,4),%ecx
  mov    %esi,%eax
  sub    %ecx,%eax
  add    %edx,%eax
  add    $0x2,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %eax,%edx
L624:
  cmpl   $0x1,-0x24(%rbp)
  jg     L1034
  mov    $0x2,%eax
  sub    -0x24(%rbp),%eax
  movslq %eax,%rcx
  imul   $0x55555556,%rcx,%rcx
  shr    $0x20,%rcx
  sar    $0x1f,%eax
  sub    %ecx,%eax
  jmp    L276
L1034:
  mov    -0x24(%rbp),%eax
  movslq %eax,%rcx
  imul   $0x55555556,%rcx,%rcx
  shr    $0x20,%rcx
  sar    $0x1f,%eax
  mov    %eax,%esi
  mov    %ecx,%eax
  sub    %esi,%eax
L276:
  cmp    %eax,%edx
  cmovge %edx,%eax
  mov    %eax,-0x8(%rbp)
  jmp    L1110
L377:
  mov    -0x1c(%rbp),%eax
  sub    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x10(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x1c(%rbp),%eax
  sub    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  addl   $0x1,-0x8(%rbp)
L1110:
  cmpl   $0x0,-0x24(%rbp)
  jns    L119
  mov    $0x2,%eax
  sub    -0x24(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  mov    %rdx,%rcx
  shr    $0x20,%rcx
  sar    $0x1f,%eax
  sub    %ecx,%eax
  mov    %eax,%edx
  jmp    L1001
L119:
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %eax,%edx
L1001:
  mov    -0x1c(%rbp),%ecx
  mov    %ecx,%eax
  add    %eax,%eax
  add    %ecx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%ecx
  mov    -0xc(%rbp),%eax
  mov    %eax,%edi
  lea    0x0(,%rax,4),%esi
  mov    %edi,%eax
  sub    %esi,%eax
  add    %ecx,%eax
  cmp    $0xfffffffe,%eax
  jge    L97
  mov    -0xc(%rbp),%ecx
  mov    %ecx,%eax
  add    %eax,%eax
  lea    (%rax,%rcx,1),%esi
  mov    -0x1c(%rbp),%ecx
  mov    %ecx,%eax
  add    %eax,%eax
  add    %ecx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%ecx
  mov    %esi,%eax
  sub    %ecx,%eax
  movslq %eax,%rcx
  imul   $0x55555556,%rcx,%rcx
  shr    $0x20,%rcx
  sar    $0x1f,%eax
  sub    %ecx,%eax
  jmp    L1199
L97:
  mov    -0x1c(%rbp),%ecx
  mov    %ecx,%eax
  add    %eax,%eax
  add    %ecx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%ecx
  mov    -0xc(%rbp),%eax
  mov    %eax,%edi
  lea    0x0(,%rax,4),%esi
  mov    %edi,%eax
  sub    %esi,%eax
  add    %ecx,%eax
  add    $0x2,%eax
  movslq %eax,%rcx
  imul   $0x55555556,%rcx,%rcx
  shr    $0x20,%rcx
  sar    $0x1f,%eax
  mov    %eax,%esi
  mov    %ecx,%eax
  sub    %esi,%eax
L1199:
  cmp    %eax,%edx
  cmovle %edx,%eax
  cmp    %eax,-0x8(%rbp)
  jle    L377
  addl   $0x1,-0xc(%rbp)
L42:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  cmp    $0xfffffffc,%eax
  jge    L1420
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  not    %eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %eax,%edx
  mov    -0x24(%rbp),%eax
  add    %edx,%eax
  cmp    $0x3,%eax
  setg   %al
  jmp    L1536
L1420:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  cmp    $0xfffffffa,%eax
  setl   %al
L1536:
  test   %al,%al
  je     L838
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  cmp    $0xfffffffc,%eax
  jge    L480
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  not    %eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %eax,%edx
  mov    -0x24(%rbp),%eax
  add    %edx,%eax
  sub    $0x1,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %edx,%eax
  jmp    L126
L480:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  add    $0x4,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  jmp    L126
L838:
  mov    $0x0,%eax
L126:
  cmp    -0xc(%rbp),%eax
  jge    L1203
  addl   $0x1,-0x10(%rbp)
L687:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x24(%rbp),%eax
  add    $0x5,%eax
  cmp    %eax,-0x10(%rbp)
  jle    L780
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x1,%eax
  mov    %eax,-0x14(%rbp)
  jmp    L123
L894:
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x14(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x1c(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  addl   $0x1,-0x14(%rbp)
L123:
  mov    -0x1c(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %eax,%edx
  mov    -0x24(%rbp),%eax
  cmp    %eax,%edx
  cmovle %edx,%eax
  cmp    %eax,-0x14(%rbp)
  jle    L894
  movl   $0x1,-0x18(%rbp)
  jmp    L45
L1389:
  mov    -0x18(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x14(%rbp)
  movl   $0x1,-0x10(%rbp)
  jmp    L1311
L1050:
  movl   $0x0,-0xc(%rbp)
  jmp    L1280
L382:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    0x0(,%rax,4),%ecx
  mov    %esi,%eax
  sub    %ecx,%eax
  add    %edx,%eax
  test   %eax,%eax
  jns    L1075
  mov    -0xc(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  lea    (%rax,%rdx,1),%ecx
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    %ecx,%eax
  sub    %edx,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  mov    %rdx,%rcx
  shr    $0x20,%rcx
  sar    $0x1f,%eax
  sub    %ecx,%eax
  mov    %eax,%edx
  jmp    L1430
L1075:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    0x0(,%rax,4),%ecx
  mov    %esi,%eax
  sub    %ecx,%eax
  add    %edx,%eax
  add    $0x2,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %eax,%edx
L1430:
  cmpl   $0x1,-0x24(%rbp)
  jg     L891
  mov    $0x2,%eax
  sub    -0x24(%rbp),%eax
  movslq %eax,%rcx
  imul   $0x55555556,%rcx,%rcx
  shr    $0x20,%rcx
  sar    $0x1f,%eax
  sub    %ecx,%eax
  jmp    L1319
L891:
  mov    -0x24(%rbp),%eax
  movslq %eax,%rcx
  imul   $0x55555556,%rcx,%rcx
  shr    $0x20,%rcx
  sar    $0x1f,%eax
  mov    %eax,%esi
  mov    %ecx,%eax
  sub    %esi,%eax
L1319:
  cmp    %eax,%edx
  cmovge %edx,%eax
  mov    %eax,-0x8(%rbp)
  jmp    L521
L1041:
  mov    -0x1c(%rbp),%eax
  sub    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x18(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x10(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x1c(%rbp),%eax
  sub    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  addl   $0x1,-0x8(%rbp)
L521:
  cmpl   $0x0,-0x24(%rbp)
  jns    L1306
  mov    $0x2,%eax
  sub    -0x24(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  mov    %rdx,%rcx
  shr    $0x20,%rcx
  sar    $0x1f,%eax
  sub    %ecx,%eax
  mov    %eax,%edx
  jmp    L116
L1306:
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %eax,%edx
L116:
  mov    -0x1c(%rbp),%ecx
  mov    %ecx,%eax
  add    %eax,%eax
  add    %ecx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%ecx
  mov    -0xc(%rbp),%eax
  mov    %eax,%edi
  lea    0x0(,%rax,4),%esi
  mov    %edi,%eax
  sub    %esi,%eax
  add    %ecx,%eax
  cmp    $0xfffffffe,%eax
  jge    L1213
  mov    -0xc(%rbp),%ecx
  mov    %ecx,%eax
  add    %eax,%eax
  lea    (%rax,%rcx,1),%esi
  mov    -0x1c(%rbp),%ecx
  mov    %ecx,%eax
  add    %eax,%eax
  add    %ecx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%ecx
  mov    %esi,%eax
  sub    %ecx,%eax
  movslq %eax,%rcx
  imul   $0x55555556,%rcx,%rcx
  shr    $0x20,%rcx
  sar    $0x1f,%eax
  sub    %ecx,%eax
  jmp    L1363
L1213:
  mov    -0x1c(%rbp),%ecx
  mov    %ecx,%eax
  add    %eax,%eax
  add    %ecx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%ecx
  mov    -0xc(%rbp),%eax
  mov    %eax,%edi
  lea    0x0(,%rax,4),%esi
  mov    %edi,%eax
  sub    %esi,%eax
  add    %ecx,%eax
  add    $0x2,%eax
  movslq %eax,%rcx
  imul   $0x55555556,%rcx,%rcx
  shr    $0x20,%rcx
  sar    $0x1f,%eax
  mov    %eax,%esi
  mov    %ecx,%eax
  sub    %esi,%eax
L1363:
  cmp    %eax,%edx
  cmovle %edx,%eax
  cmp    %eax,-0x8(%rbp)
  jle    L1041
  addl   $0x1,-0xc(%rbp)
L1280:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  cmp    $0xfffffffc,%eax
  jge    L359
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  not    %eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %eax,%edx
  mov    -0x24(%rbp),%eax
  add    %edx,%eax
  cmp    $0x3,%eax
  setg   %al
  jmp    L1119
L359:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  cmp    $0xfffffffa,%eax
  setl   %al
L1119:
  test   %al,%al
  je     L1348
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  cmp    $0xfffffffc,%eax
  jge    L1512
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  not    %eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %eax,%edx
  mov    -0x24(%rbp),%eax
  add    %edx,%eax
  sub    $0x1,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %edx,%eax
  jmp    L298
L1512:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  add    $0x4,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  jmp    L298
L1348:
  mov    $0x0,%eax
L298:
  cmp    -0xc(%rbp),%eax
  jge    L382
  addl   $0x1,-0x10(%rbp)
L1311:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x24(%rbp),%eax
  add    $0x5,%eax
  cmp    %eax,-0x10(%rbp)
  jle    L1050
  addl   $0x1,-0x18(%rbp)
L45:
  mov    -0x24(%rbp),%eax
  cmp    -0x18(%rbp),%eax
  jg     L1389
  addl   $0x1,-0x1c(%rbp)
L444:
  cmpl   $0x0,-0x24(%rbp)
  jg     L1086
  mov    $0x3,%eax
  sub    -0x24(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %edx,%eax
  jmp    L1069
L1086:
  mov    -0x24(%rbp),%eax
  sub    $0x1,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L1069:
  cmp    -0x1c(%rbp),%eax
  jge    L507
  cmpl   $0x0,-0x24(%rbp)
  jle    L235
  cmpl   $0x0,-0x24(%rbp)
  jns    L1262
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  jmp    L1478
L1262:
  mov    -0x24(%rbp),%eax
  add    $0x2,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L1478:
  mov    %eax,-0x1c(%rbp)
  jmp    L779
L1032:
  movl   $0x0,-0x18(%rbp)
  jmp    L772
L1043:
  mov    -0x18(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x24(%rbp),%eax
  mov    $0x2,%edx
  cmp    %edx,%eax
  cmovl  %edx,%eax
  sub    $0x1,%eax
  mov    %eax,-0x10(%rbp)
  jmp    L981
L1237:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  test   %eax,%eax
  jns    L103
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x24(%rbp),%eax
  sub    %edx,%eax
  cmp    $0xfffffffe,%eax
  setl   %al
  jmp    L221
L103:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  test   %eax,%eax
  setg   %al
L221:
  test   %al,%al
  je     L725
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  test   %eax,%eax
  jns    L1184
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x24(%rbp),%eax
  sub    %edx,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %edx,%eax
  jmp    L1297
L1184:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  add    $0x2,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  jmp    L1297
L725:
  mov    $0x0,%eax
L1297:
  mov    %eax,-0xc(%rbp)
  jmp    L753
L732:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    0x0(,%rax,4),%ecx
  mov    %esi,%eax
  sub    %ecx,%eax
  add    %edx,%eax
  test   %eax,%eax
  jns    L1513
  mov    -0xc(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  lea    (%rax,%rdx,1),%ecx
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    %ecx,%eax
  sub    %edx,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  mov    %rdx,%rcx
  shr    $0x20,%rcx
  sar    $0x1f,%eax
  sub    %ecx,%eax
  mov    %eax,%edx
  jmp    L1105
L1513:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    0x0(,%rax,4),%ecx
  mov    %esi,%eax
  sub    %ecx,%eax
  add    %edx,%eax
  add    $0x2,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %eax,%edx
L1105:
  cmpl   $0x1,-0x24(%rbp)
  jg     L581
  mov    $0x2,%eax
  sub    -0x24(%rbp),%eax
  movslq %eax,%rcx
  imul   $0x55555556,%rcx,%rcx
  shr    $0x20,%rcx
  sar    $0x1f,%eax
  sub    %ecx,%eax
  jmp    L958
L581:
  mov    -0x24(%rbp),%eax
  movslq %eax,%rcx
  imul   $0x55555556,%rcx,%rcx
  shr    $0x20,%rcx
  sar    $0x1f,%eax
  mov    %eax,%esi
  mov    %ecx,%eax
  sub    %esi,%eax
L958:
  cmp    %eax,%edx
  cmovge %edx,%eax
  mov    %eax,-0x8(%rbp)
  jmp    L941
L974:
  mov    -0x1c(%rbp),%eax
  sub    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x18(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x10(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x1c(%rbp),%eax
  sub    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  addl   $0x1,-0x8(%rbp)
L941:
  cmpl   $0x0,-0x24(%rbp)
  jns    L750
  mov    $0x2,%eax
  sub    -0x24(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  mov    %rdx,%rcx
  shr    $0x20,%rcx
  sar    $0x1f,%eax
  sub    %ecx,%eax
  mov    %eax,%edx
  jmp    L1151
L750:
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %eax,%edx
L1151:
  mov    -0x1c(%rbp),%ecx
  mov    %ecx,%eax
  add    %eax,%eax
  add    %ecx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%ecx
  mov    -0xc(%rbp),%eax
  mov    %eax,%edi
  lea    0x0(,%rax,4),%esi
  mov    %edi,%eax
  sub    %esi,%eax
  add    %ecx,%eax
  cmp    $0xfffffffe,%eax
  jge    L878
  mov    -0xc(%rbp),%ecx
  mov    %ecx,%eax
  add    %eax,%eax
  lea    (%rax,%rcx,1),%esi
  mov    -0x1c(%rbp),%ecx
  mov    %ecx,%eax
  add    %eax,%eax
  add    %ecx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%ecx
  mov    %esi,%eax
  sub    %ecx,%eax
  movslq %eax,%rcx
  imul   $0x55555556,%rcx,%rcx
  shr    $0x20,%rcx
  sar    $0x1f,%eax
  sub    %ecx,%eax
  jmp    L992
L878:
  mov    -0x1c(%rbp),%ecx
  mov    %ecx,%eax
  add    %eax,%eax
  add    %ecx,%eax
  sub    -0x10(%rbp),%eax
  mov    %eax,%ecx
  mov    -0xc(%rbp),%eax
  mov    %eax,%edi
  lea    0x0(,%rax,4),%esi
  mov    %edi,%eax
  sub    %esi,%eax
  add    %ecx,%eax
  add    $0x2,%eax
  movslq %eax,%rcx
  imul   $0x55555556,%rcx,%rcx
  shr    $0x20,%rcx
  sar    $0x1f,%eax
  mov    %eax,%esi
  mov    %ecx,%eax
  sub    %esi,%eax
L992:
  cmp    %eax,%edx
  cmovle %edx,%eax
  cmp    %eax,-0x8(%rbp)
  jle    L974
  addl   $0x1,-0xc(%rbp)
L753:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  cmp    $0xfffffffc,%eax
  jge    L1288
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  not    %eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %eax,%edx
  mov    -0x24(%rbp),%eax
  add    %edx,%eax
  cmp    $0x3,%eax
  setg   %al
  jmp    L872
L1288:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  cmp    $0xfffffffa,%eax
  setl   %al
L872:
  test   %al,%al
  je     L220
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  cmp    $0xfffffffc,%eax
  jge    L1378
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  not    %eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %eax,%edx
  mov    -0x24(%rbp),%eax
  add    %edx,%eax
  sub    $0x1,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %edx,%eax
  jmp    L389
L1378:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x10(%rbp),%eax
  sub    -0x24(%rbp),%eax
  add    $0x4,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  jmp    L389
L220:
  mov    $0x0,%eax
L389:
  cmp    -0xc(%rbp),%eax
  jge    L732
  addl   $0x1,-0x10(%rbp)
L981:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x24(%rbp),%eax
  add    $0x4,%eax
  cmp    %eax,-0x24(%rbp)
  jle    L1045
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    -0x24(%rbp),%eax
  add    $0x5,%eax
  jmp    L965
L1045:
  mov    -0x24(%rbp),%eax
L965:
  cmp    -0x10(%rbp),%eax
  jge    L1237
  addl   $0x1,-0x18(%rbp)
L772:
  mov    -0x24(%rbp),%eax
  cmp    -0x18(%rbp),%eax
  jg     L1043
  addl   $0x1,-0x1c(%rbp)
L779:
  mov    -0x24(%rbp),%eax
  add    %eax,%eax
  cmp    $0xffffffff,%eax
  jge    L662
  mov    $0x1,%eax
  sub    -0x24(%rbp),%eax
  add    %eax,%eax
  sub    $0x1,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  sub    %edx,%eax
  jmp    L627
L662:
  mov    -0x24(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L627:
  cmp    -0x1c(%rbp),%eax
  jge    L1032
L235:
  nop
  leave
  ret
```

assistant: ```c
void test(int n) {
  int c1, c2;
  int i, j, k, p, q;
  for (c1 = 0; c1 <= (((n - 5) < 0) ? -((-(n - 5) + (3) - 1) / (3)) : (n - 5) / (3)); c1++) {
    for (i = ((3 * c1 + 1) > (1) ? (3 * c1 + 1) : (1)); i <= 3 * c1 + 3; i++) {
      {
        hash(1);
        hash(i);
        hash(c1);
      };
    }
  }
  if (n == 1) {
    {
      hash(1);
      hash(1);
      hash(0);
    };
    for (k = 0; k <= ((0) < (0) ? (0) : (0)); k++) {
      for (p = ((0) > ((((-3 * k - 1) < 0) ? -((-(-3 * k - 1)) / (3)) : ((-3 * k - 1) + (3) - 1) / (3))) ? (0) : ((((-3 * k - 1) < 0) ? -((-(-3 * k - 1)) / (3)) : ((-3 * k - 1) + (3) - 1) / (3)))); p <= (((((-3 * k + 1) < 0) ? -((-(-3 * k + 1) + (3) - 1) / (3)) : (-3 * k + 1) / (3))) < (0) ? ((((-3 * k + 1) < 0) ? -((-(-3 * k + 1) + (3) - 1) / (3)) : (-3 * k + 1) / (3))) : (0)); p++) {
        q = -k - p;
        {
          hash(2);
          hash(1);
          hash(1);
          hash(k);
          hash(p);
          hash(-k - p);
        };
      }
    }
  }
  if (n >= 2) {
    for (c1 = ((0) > ((((n - 4) < 0) ? -((-(n - 4)) / (3)) : ((n - 4) + (3) - 1) / (3))) ? (0) : ((((n - 4) < 0) ? -((-(n - 4)) / (3)) : ((n - 4) + (3) - 1) / (3)))); c1 <= 0; c1++) {
      {
        hash(1);
        hash(1);
        hash(c1);
      };
      for (j = 1; j <= ((n) < (3 * c1 - n + 5) ? (n) : (3 * c1 - n + 5)); j++) {
        for (k = 0; k <= (((3 * c1 - j - n + 4) < 0) ? -((-(3 * c1 - j - n + 4) + (3) - 1) / (3)) : (3 * c1 - j - n + 4) / (3)); k++) {
          for (p = (((n - 2) < 0) ? -((-(n - 2)) / (3)) : ((n - 2) + (3) - 1) / (3)); p <= (((3 * c1 - j - 3 * k + 2) < 0) ? -((-(3 * c1 - j - 3 * k + 2) + (3) - 1) / (3)) : (3 * c1 - j - 3 * k + 2) / (3)); p++) {
            q = c1 - k - p;
            {
              hash(2);
              hash(1);
              hash(j);
              hash(k);
              hash(p);
              hash(c1 - k - p);
            };
          }
        }
      }
      for (i = 2; i <= ((n) < (3 * c1 + 3) ? (n) : (3 * c1 + 3)); i++) {
        {
          hash(1);
          hash(i);
          hash(c1);
        };
      }
      for (c2 = 1; c2 <= n - 1; c2++) {
        i = c2 + 1;
        for (j = 1; j <= ((3 * c1 - n + 5) < (n) ? (3 * c1 - n + 5) : (n)); j++) {
          for (k = 0; k <= (((3 * c1 - j - n + 4) < 0) ? -((-(3 * c1 - j - n + 4) + (3) - 1) / (3)) : (3 * c1 - j - n + 4) / (3)); k++) {
            for (p = (((n - 2) < 0) ? -((-(n - 2)) / (3)) : ((n - 2) + (3) - 1) / (3)); p <= (((3 * c1 - j - 3 * k + 2) < 0) ? -((-(3 * c1 - j - 3 * k + 2) + (3) - 1) / (3)) : (3 * c1 - j - 3 * k + 2) / (3)); p++) {
              q = c1 - k - p;
              {
                hash(2);
                hash(c2 + 1);
                hash(j);
                hash(k);
                hash(p);
                hash(c1 - k - p);
              };
            }
          }
        }
      }
    }
  }
  for (c1 = ((1) > ((((n - 4) < 0) ? -((-(n - 4)) / (3)) : ((n - 4) + (3) - 1) / (3))) ? (1) : ((((n - 4) < 0) ? -((-(n - 4)) / (3)) : ((n - 4) + (3) - 1) / (3)))); c1 <= (((n - 1) < 0) ? -((-(n - 1) + (3) - 1) / (3)) : (n - 1) / (3)); c1++) {
    for (j = 1; j <= 3 * c1 - n + 5; j++) {
      for (k = 0; k <= (((((3 * c1 - j - n + 4) < 0) ? -((-(3 * c1 - j - n + 4) + (3) - 1) / (3)) : (3 * c1 - j - n + 4) / (3))) < (0) ? ((((3 * c1 - j - n + 4) < 0) ? -((-(3 * c1 - j - n + 4) + (3) - 1) / (3)) : (3 * c1 - j - n + 4) / (3))) : (0)); k++) {
        for (p = (((((n - 2) < 0) ? -((-(n - 2)) / (3)) : ((n - 2) + (3) - 1) / (3))) > ((((3 * c1 - j - 3 * k) < 0) ? -((-(3 * c1 - j - 3 * k)) / (3)) : ((3 * c1 - j - 3 * k) + (3) - 1) / (3))) ? ((((n - 2) < 0) ? -((-(n - 2)) / (3)) : ((n - 2) + (3) - 1) / (3))) : ((((3 * c1 - j - 3 * k) < 0) ? -((-(3 * c1 - j - 3 * k)) / (3)) : ((3 * c1 - j - 3 * k) + (3) - 1) / (3)))); p <= (((((3 * c1 - j - 3 * k + 2) < 0) ? -((-(3 * c1 - j - 3 * k + 2) + (3) - 1) / (3)) : (3 * c1 - j - 3 * k + 2) / (3))) < ((((n) < 0) ? -((-(n) + (3) - 1) / (3)) : (n) / (3))) ? ((((3 * c1 - j - 3 * k + 2) < 0) ? -((-(3 * c1 - j - 3 * k + 2) + (3) - 1) / (3)) : (3 * c1 - j - 3 * k + 2) / (3))) : ((((n) < 0) ? -((-(n) + (3) - 1) / (3)) : (n) / (3)))); p++) {
          q = c1 - k - p;
          {
            hash(2);
            hash(1);
            hash(j);
            hash(k);
            hash(p);
            hash(c1 - k - p);
          };
        }
      }
    }
    for (i = 3 * c1 + 1; i <= ((n) < (3 * c1 + 3) ? (n) : (3 * c1 + 3)); i++) {
      {
        hash(1);
        hash(i);
        hash(c1);
      };
    }
    for (c2 = 1; c2 <= n - 1; c2++) {
      i = c2 + 1;
      for (j = 1; j <= 3 * c1 - n + 5; j++) {
        for (k = 0; k <= (((((3 * c1 - j - n + 4) < 0) ? -((-(3 * c1 - j - n + 4) + (3) - 1) / (3)) : (3 * c1 - j - n + 4) / (3))) < (0) ? ((((3 * c1 - j - n + 4) < 0) ? -((-(3 * c1 - j - n + 4) + (3) - 1) / (3)) : (3 * c1 - j - n + 4) / (3))) : (0)); k++) {
          for (p = (((((n - 2) < 0) ? -((-(n - 2)) / (3)) : ((n - 2) + (3) - 1) / (3))) > ((((3 * c1 - j - 3 * k) < 0) ? -((-(3 * c1 - j - 3 * k)) / (3)) : ((3 * c1 - j - 3 * k) + (3) - 1) / (3))) ? ((((n - 2) < 0) ? -((-(n - 2)) / (3)) : ((n - 2) + (3) - 1) / (3))) : ((((3 * c1 - j - 3 * k) < 0) ? -((-(3 * c1 - j - 3 * k)) / (3)) : ((3 * c1 - j - 3 * k) + (3) - 1) / (3)))); p <= (((((3 * c1 - j - 3 * k + 2) < 0) ? -((-(3 * c1 - j - 3 * k + 2) + (3) - 1) / (3)) : (3 * c1 - j - 3 * k + 2) / (3))) < ((((n) < 0) ? -((-(n) + (3) - 1) / (3)) : (n) / (3))) ? ((((3 * c1 - j - 3 * k + 2) < 0) ? -((-(3 * c1 - j - 3 * k + 2) + (3) - 1) / (3)) : (3 * c1 - j - 3 * k + 2) / (3))) : ((((n) < 0) ? -((-(n) + (3) - 1) / (3)) : (n) / (3)))); p++) {
            q = c1 - k - p;
            {
              hash(2);
              hash(c2 + 1);
              hash(j);
              hash(k);
              hash(p);
              hash(c1 - k - p);
            };
          }
        }
      }
    }
  }
  if (n >= 1) {
    for (c1 = (((n) < 0) ? -((-(n)) / (3)) : ((n) + (3) - 1) / (3)); c1 <= (((2 * n + 1) < 0) ? -((-(2 * n + 1) + (3) - 1) / (3)) : (2 * n + 1) / (3)); c1++) {
      for (c2 = 0; c2 <= n - 1; c2++) {
        i = c2 + 1;
        for (j = ((1) > (3 * c1 - n - 1) ? (1) : (3 * c1 - n - 1)); j <= ((n) < (3 * c1 - n + 5) ? (n) : (3 * c1 - n + 5)); j++) {
          for (k = (((((3 * c1 - j - n) < 0) ? -((-(3 * c1 - j - n)) / (3)) : ((3 * c1 - j - n) + (3) - 1) / (3))) > (0) ? ((((3 * c1 - j - n) < 0) ? -((-(3 * c1 - j - n)) / (3)) : ((3 * c1 - j - n) + (3) - 1) / (3))) : (0)); k <= (((((3 * c1 - j - n + 4) < 0) ? -((-(3 * c1 - j - n + 4) + (3) - 1) / (3)) : (3 * c1 - j - n + 4) / (3))) < (0) ? ((((3 * c1 - j - n + 4) < 0) ? -((-(3 * c1 - j - n + 4) + (3) - 1) / (3)) : (3 * c1 - j - n + 4) / (3))) : (0)); k++) {
            for (p = (((((n - 2) < 0) ? -((-(n - 2)) / (3)) : ((n - 2) + (3) - 1) / (3))) > ((((3 * c1 - j - 3 * k) < 0) ? -((-(3 * c1 - j - 3 * k)) / (3)) : ((3 * c1 - j - 3 * k) + (3) - 1) / (3))) ? ((((n - 2) < 0) ? -((-(n - 2)) / (3)) : ((n - 2) + (3) - 1) / (3))) : ((((3 * c1 - j - 3 * k) < 0) ? -((-(3 * c1 - j - 3 * k)) / (3)) : ((3 * c1 - j - 3 * k) + (3) - 1) / (3)))); p <= (((((3 * c1 - j - 3 * k + 2) < 0) ? -((-(3 * c1 - j - 3 * k + 2) + (3) - 1) / (3)) : (3 * c1 - j - 3 * k + 2) / (3))) < ((((n) < 0) ? -((-(n) + (3) - 1) / (3)) : (n) / (3))) ? ((((3 * c1 - j - 3 * k + 2) < 0) ? -((-(3 * c1 - j - 3 * k + 2) + (3) - 1) / (3)) : (3 * c1 - j - 3 * k + 2) / (3))) : ((((n) < 0) ? -((-(n) + (3) - 1) / (3)) : (n) / (3)))); p++) {
              q = c1 - k - p;
              {
                hash(2);
                hash(c2 + 1);
                hash(j);
                hash(k);
                hash(p);
                hash(c1 - k - p);
              };
            }
          }
        }
      }
    }
  }
}
```