user: 提供的汇编代码用C语言表示会是什么样子：

```asm
<test>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  mov    %esi,-0x18(%rbp)
  cmpl   $0x0,-0x14(%rbp)
  js     L192
  cmpl   $0x0,-0x18(%rbp)
  js     L192
  movl   $0xfffffffc,-0xc(%rbp)
  jmp    L163
L339:
  mov    -0x14(%rbp),%eax
  mov    %eax,%edx
  shl    $0x2,%eax
  sub    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    $0xfffffffc,%edx
  cmp    %edx,%eax
  cmovl  %edx,%eax
  add    $0x4,%eax
  mov    %eax,-0x8(%rbp)
  jmp    L643
L116:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  lea    0x1(%rax),%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L380
  mov    -0xc(%rbp),%eax
  sub    -0x8(%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
  mov    %eax,-0x4(%rbp)
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%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
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L380:
  addl   $0x1,-0x8(%rbp)
L643:
  mov    -0xc(%rbp),%eax
  lea    0x4(%rax),%edx
  mov    -0x18(%rbp),%eax
  cmp    %eax,%edx
  cmovle %edx,%eax
  cmp    %eax,-0x8(%rbp)
  jle    L116
  addl   $0x1,-0xc(%rbp)
L163:
  mov    -0x14(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %eax,%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  mov    $0x3,%edx
  cmp    %edx,%eax
  cmovg  %edx,%eax
  sub    $0x3,%eax
  cmp    %eax,-0xc(%rbp)
  jl     L339
L192:
  cmpl   $0x1,-0x14(%rbp)
  jg     L166
  cmpl   $0x0,-0x14(%rbp)
  js     L166
  movl   $0x0,-0xc(%rbp)
  jmp    L495
L510:
  mov    -0x14(%rbp),%eax
  mov    %eax,%edx
  shl    $0x2,%eax
  sub    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    $0x0,%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  mov    %eax,-0x8(%rbp)
  jmp    L293
L57:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %eax,%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L64
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L64:
  addl   $0x1,-0x8(%rbp)
L293:
  mov    -0x8(%rbp),%eax
  cmp    -0xc(%rbp),%eax
  jle    L57
  mov    -0x14(%rbp),%eax
  mov    %eax,%edx
  shl    $0x2,%eax
  sub    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  add    $0x4,%eax
  mov    %eax,-0x8(%rbp)
  jmp    L91
L512:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  lea    0x1(%rax),%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L392
  mov    -0xc(%rbp),%eax
  sub    -0x8(%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
  mov    %eax,-0x4(%rbp)
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%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
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L392:
  addl   $0x1,-0x8(%rbp)
L91:
  mov    -0xc(%rbp),%eax
  lea    0x4(%rax),%edx
  mov    -0x18(%rbp),%eax
  cmp    %eax,%edx
  cmovle %edx,%eax
  cmp    %eax,-0x8(%rbp)
  jle    L512
  mov    -0x14(%rbp),%eax
  mov    %eax,%edx
  shl    $0x2,%eax
  sub    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    $0x0,%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  mov    %eax,-0x8(%rbp)
  jmp    L67
L221:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %eax,%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L581
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L581:
  addl   $0x1,-0x8(%rbp)
L67:
  mov    -0x8(%rbp),%eax
  cmp    -0xc(%rbp),%eax
  jle    L221
  addl   $0x1,-0xc(%rbp)
L495:
  mov    -0x14(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %eax,%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  sub    $0x3,%eax
  cmp    %eax,-0xc(%rbp)
  jl     L510
L166:
  movl   $0x0,-0xc(%rbp)
  jmp    L283
L636:
  movl   $0x0,-0x8(%rbp)
  jmp    L436
L273:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %eax,%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L648
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L648:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  lea    0x1(%rax),%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L266
  mov    -0xc(%rbp),%eax
  sub    -0x8(%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
  mov    %eax,-0x4(%rbp)
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%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
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L266:
  addl   $0x1,-0x8(%rbp)
L436:
  mov    -0x8(%rbp),%eax
  cmp    -0xc(%rbp),%eax
  jle    L273
  mov    -0xc(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x8(%rbp)
  jmp    L434
L589:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  lea    0x1(%rax),%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L730
  mov    -0xc(%rbp),%eax
  sub    -0x8(%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
  mov    %eax,-0x4(%rbp)
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%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
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L730:
  addl   $0x1,-0x8(%rbp)
L434:
  mov    -0xc(%rbp),%eax
  lea    0x4(%rax),%edx
  mov    -0x18(%rbp),%eax
  cmp    %eax,%edx
  cmovle %edx,%eax
  cmp    %eax,-0x8(%rbp)
  jle    L589
  movl   $0x0,-0x8(%rbp)
  jmp    L294
L784:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %eax,%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L667
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L667:
  addl   $0x1,-0x8(%rbp)
L294:
  mov    -0x8(%rbp),%eax
  cmp    -0xc(%rbp),%eax
  jle    L784
  addl   $0x1,-0xc(%rbp)
L283:
  mov    -0x14(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  cmp    %eax,-0x18(%rbp)
  jle    L728
  mov    -0x14(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  sub    $0x4,%eax
  jmp    L761
L728:
  mov    -0x18(%rbp),%eax
  sub    $0x1,%eax
L761:
  cmp    -0xc(%rbp),%eax
  jge    L636
  cmpl   $0x1,-0x14(%rbp)
  jle    L252
  mov    -0x14(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  jmp    L164
L120:
  mov    -0x14(%rbp),%eax
  mov    %eax,%edx
  shl    $0x2,%eax
  sub    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    $0x0,%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  mov    %eax,-0x8(%rbp)
  jmp    L484
L50:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %eax,%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L447
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L447:
  addl   $0x1,-0x8(%rbp)
L484:
  mov    -0x14(%rbp),%eax
  mov    %eax,%edx
  shl    $0x2,%eax
  sub    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  add    $0x3,%eax
  cmp    %eax,-0x8(%rbp)
  jle    L50
  mov    -0x14(%rbp),%eax
  mov    %eax,%edx
  shl    $0x2,%eax
  sub    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  add    $0x4,%eax
  mov    %eax,-0x8(%rbp)
  jmp    L580
L655:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %eax,%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L799
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L799:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  lea    0x1(%rax),%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L539
  mov    -0xc(%rbp),%eax
  sub    -0x8(%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
  mov    %eax,-0x4(%rbp)
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%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
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L539:
  addl   $0x1,-0x8(%rbp)
L580:
  mov    -0x8(%rbp),%eax
  cmp    -0xc(%rbp),%eax
  jle    L655
  mov    -0xc(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x8(%rbp)
  jmp    L389
L393:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  lea    0x1(%rax),%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L499
  mov    -0xc(%rbp),%eax
  sub    -0x8(%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
  mov    %eax,-0x4(%rbp)
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%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
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L499:
  addl   $0x1,-0x8(%rbp)
L389:
  mov    -0xc(%rbp),%eax
  lea    0x4(%rax),%edx
  mov    -0x18(%rbp),%eax
  cmp    %eax,%edx
  cmovle %edx,%eax
  cmp    %eax,-0x8(%rbp)
  jle    L393
  mov    -0x14(%rbp),%eax
  mov    %eax,%edx
  shl    $0x2,%eax
  sub    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    $0x0,%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  mov    %eax,-0x8(%rbp)
  jmp    L467
L342:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %eax,%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L702
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L702:
  addl   $0x1,-0x8(%rbp)
L467:
  mov    -0x8(%rbp),%eax
  cmp    -0xc(%rbp),%eax
  jle    L342
  addl   $0x1,-0xc(%rbp)
L164:
  mov    -0x18(%rbp),%eax
  cmp    -0xc(%rbp),%eax
  jg     L120
L252:
  cmpl   $0x0,-0x18(%rbp)
  js     L201
  mov    -0x18(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  jmp    L787
L738:
  movl   $0x0,-0x8(%rbp)
  jmp    L423
L630:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %eax,%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L148
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L148:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  lea    0x1(%rax),%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L202
  mov    -0xc(%rbp),%eax
  sub    -0x8(%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
  mov    %eax,-0x4(%rbp)
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%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
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L202:
  addl   $0x1,-0x8(%rbp)
L423:
  mov    -0x8(%rbp),%eax
  cmp    -0x18(%rbp),%eax
  jle    L630
  movl   $0x0,-0x8(%rbp)
  jmp    L452
L162:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %eax,%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L218
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L218:
  addl   $0x1,-0x8(%rbp)
L452:
  mov    -0x8(%rbp),%eax
  cmp    -0x18(%rbp),%eax
  jle    L162
  addl   $0x1,-0xc(%rbp)
L787:
  mov    -0x14(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  cmp    %eax,-0xc(%rbp)
  jl     L738
L201:
  mov    -0x14(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %eax,%edx
  mov    -0x18(%rbp),%eax
  cmp    %edx,%eax
  cmovl  %edx,%eax
  mov    %eax,-0xc(%rbp)
  jmp    L403
L129:
  mov    -0x14(%rbp),%eax
  mov    %eax,%edx
  shl    $0x2,%eax
  sub    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    $0x0,%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  mov    %eax,-0x8(%rbp)
  jmp    L309
L86:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %eax,%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L262
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L262:
  addl   $0x1,-0x8(%rbp)
L309:
  mov    -0x14(%rbp),%eax
  mov    %eax,%edx
  shl    $0x2,%eax
  sub    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  add    $0x3,%eax
  cmp    %eax,-0x8(%rbp)
  jle    L86
  mov    -0x14(%rbp),%eax
  mov    %eax,%edx
  shl    $0x2,%eax
  sub    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  add    $0x4,%eax
  mov    %eax,-0x8(%rbp)
  jmp    L686
L78:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %eax,%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L66
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L66:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  lea    0x1(%rax),%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L401
  mov    -0xc(%rbp),%eax
  sub    -0x8(%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
  mov    %eax,-0x4(%rbp)
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%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
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L401:
  addl   $0x1,-0x8(%rbp)
L686:
  mov    -0x8(%rbp),%eax
  cmp    -0x18(%rbp),%eax
  jle    L78
  mov    -0x14(%rbp),%eax
  mov    %eax,%edx
  shl    $0x2,%eax
  sub    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    $0x0,%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  mov    %eax,-0x8(%rbp)
  jmp    L269
L254:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %eax,%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L557
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L557:
  addl   $0x1,-0x8(%rbp)
L269:
  mov    -0x8(%rbp),%eax
  cmp    -0x18(%rbp),%eax
  jle    L254
  addl   $0x1,-0xc(%rbp)
L403:
  mov    -0x14(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %eax,%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  sub    $0x3,%eax
  cmp    %eax,-0xc(%rbp)
  jl     L129
  cmpl   $0x0,-0x14(%rbp)
  js     L649
  cmpl   $0x0,-0x18(%rbp)
  js     L649
  mov    -0x14(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %eax,%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  mov    $0x3,%edx
  cmp    %edx,%eax
  cmovl  %edx,%eax
  sub    $0x3,%eax
  mov    %eax,-0xc(%rbp)
  jmp    L591
L388:
  mov    -0x14(%rbp),%eax
  mov    %eax,%edx
  shl    $0x2,%eax
  sub    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    $0x0,%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  mov    %eax,-0x8(%rbp)
  jmp    L480
L257:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %eax,%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L578
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L578:
  addl   $0x1,-0x8(%rbp)
L480:
  mov    -0x18(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  cmovle %edx,%eax
  cmp    %eax,-0x8(%rbp)
  jle    L257
  mov    -0x14(%rbp),%eax
  mov    %eax,%edx
  shl    $0x2,%eax
  sub    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    $0x0,%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  mov    %eax,-0x8(%rbp)
  jmp    L44
L550:
  mov    -0x8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xc(%rbp),%eax
  add    %eax,%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L720
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L720:
  addl   $0x1,-0x8(%rbp)
L44:
  mov    -0x18(%rbp),%edx
  mov    -0xc(%rbp),%eax
  cmp    %eax,%edx
  cmovle %edx,%eax
  cmp    %eax,-0x8(%rbp)
  jle    L550
  addl   $0x1,-0xc(%rbp)
L591:
  mov    -0x14(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %eax,%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  cmp    %eax,-0xc(%rbp)
  jle    L388
L649:
  nop
  leave
  ret
```

assistant: ```c
void test(int M, int N) {
  int c2, c4;
  int i, j;
  if ((M >= 0) && (N >= 0)) {
    for (c2 = -4; c2 <= ((-1) < (3 * M + N - 4) ? (-1) : (3 * M + N - 4)); c2++) {
      for (c4 = ((0) > (c2 - 3 * M + 4) ? (0) : (c2 - 3 * M + 4)); c4 <= ((c2 + 4) < (N) ? (c2 + 4) : (N)); c4++) {
        if ((c2 + 2 * c4 + 1) % 3 == 0) {
          i = (c2 - c4 + 4) / 3;
          {
            hash(1);
            hash((c2 - c4 + 4) / 3);
            hash(c4);
          };
        }
      }
    }
  }
  if ((M <= 1) && (M >= 0)) {
    for (c2 = 0; c2 <= 3 * M + N - 4; c2++) {
      for (c4 = ((c2 - 3 * M) > (0) ? (c2 - 3 * M) : (0)); c4 <= c2; c4++) {
        if ((c2 + 2 * c4) % 3 == 0) {
          i = (c2 - c4) / 3;
          {
            hash(2);
            hash((c2 - c4) / 3);
            hash(c4);
          };
        }
      }
      for (c4 = c2 - 3 * M + 4; c4 <= ((c2 + 4) < (N) ? (c2 + 4) : (N)); c4++) {
        if ((c2 + 2 * c4 + 1) % 3 == 0) {
          i = (c2 - c4 + 4) / 3;
          {
            hash(1);
            hash((c2 - c4 + 4) / 3);
            hash(c4);
          };
        }
      }
      for (c4 = ((0) > (c2 - 3 * M) ? (0) : (c2 - 3 * M)); c4 <= c2; c4++) {
        if ((c2 + 2 * c4) % 3 == 0) {
          i = (c2 - c4) / 3;
          {
            hash(3);
            hash((c2 - c4) / 3);
            hash(c4);
          };
        }
      }
    }
  }
  for (c2 = 0; c2 <= ((3 * M - 4) < (N - 1) ? (3 * M - 4) : (N - 1)); c2++) {
    for (c4 = 0; c4 <= c2; c4++) {
      if ((c2 + 2 * c4) % 3 == 0) {
        i = (c2 - c4) / 3;
        {
          hash(2);
          hash((c2 - c4) / 3);
          hash(c4);
        };
      }
      if ((c2 + 2 * c4 + 1) % 3 == 0) {
        i = (c2 - c4 + 4) / 3;
        {
          hash(1);
          hash((c2 - c4 + 4) / 3);
          hash(c4);
        };
      }
    }
    for (c4 = c2 + 1; c4 <= ((c2 + 4) < (N) ? (c2 + 4) : (N)); c4++) {
      if ((c2 + 2 * c4 + 1) % 3 == 0) {
        i = (c2 - c4 + 4) / 3;
        {
          hash(1);
          hash((c2 - c4 + 4) / 3);
          hash(c4);
        };
      }
    }
    for (c4 = 0; c4 <= c2; c4++) {
      if ((c2 + 2 * c4) % 3 == 0) {
        i = (c2 - c4) / 3;
        {
          hash(3);
          hash((c2 - c4) / 3);
          hash(c4);
        };
      }
    }
  }
  if (M >= 2) {
    for (c2 = 3 * M - 3; c2 <= N - 1; c2++) {
      for (c4 = ((c2 - 3 * M) > (0) ? (c2 - 3 * M) : (0)); c4 <= c2 - 3 * M + 3; c4++) {
        if ((c2 + 2 * c4) % 3 == 0) {
          i = (c2 - c4) / 3;
          {
            hash(2);
            hash((c2 - c4) / 3);
            hash(c4);
          };
        }
      }
      for (c4 = c2 - 3 * M + 4; c4 <= c2; c4++) {
        if ((c2 + 2 * c4) % 3 == 0) {
          i = (c2 - c4) / 3;
          {
            hash(2);
            hash((c2 - c4) / 3);
            hash(c4);
          };
        }
        if ((c2 + 2 * c4 + 1) % 3 == 0) {
          i = (c2 - c4 + 4) / 3;
          {
            hash(1);
            hash((c2 - c4 + 4) / 3);
            hash(c4);
          };
        }
      }
      for (c4 = c2 + 1; c4 <= ((c2 + 4) < (N) ? (c2 + 4) : (N)); c4++) {
        if ((c2 + 2 * c4 + 1) % 3 == 0) {
          i = (c2 - c4 + 4) / 3;
          {
            hash(1);
            hash((c2 - c4 + 4) / 3);
            hash(c4);
          };
        }
      }
      for (c4 = ((0) > (c2 - 3 * M) ? (0) : (c2 - 3 * M)); c4 <= c2; c4++) {
        if ((c2 + 2 * c4) % 3 == 0) {
          i = (c2 - c4) / 3;
          {
            hash(3);
            hash((c2 - c4) / 3);
            hash(c4);
          };
        }
      }
    }
  }
  if (N >= 0) {
    for (c2 = N; c2 <= 3 * M - 4; c2++) {
      for (c4 = 0; c4 <= N; c4++) {
        if ((c2 + 2 * c4) % 3 == 0) {
          i = (c2 - c4) / 3;
          {
            hash(2);
            hash((c2 - c4) / 3);
            hash(c4);
          };
        }
        if ((c2 + 2 * c4 + 1) % 3 == 0) {
          i = (c2 - c4 + 4) / 3;
          {
            hash(1);
            hash((c2 - c4 + 4) / 3);
            hash(c4);
          };
        }
      }
      for (c4 = 0; c4 <= N; c4++) {
        if ((c2 + 2 * c4) % 3 == 0) {
          i = (c2 - c4) / 3;
          {
            hash(3);
            hash((c2 - c4) / 3);
            hash(c4);
          };
        }
      }
    }
  }
  for (c2 = ((3 * M - 3) > (N) ? (3 * M - 3) : (N)); c2 <= 3 * M + N - 4; c2++) {
    for (c4 = ((c2 - 3 * M) > (0) ? (c2 - 3 * M) : (0)); c4 <= c2 - 3 * M + 3; c4++) {
      if ((c2 + 2 * c4) % 3 == 0) {
        i = (c2 - c4) / 3;
        {
          hash(2);
          hash((c2 - c4) / 3);
          hash(c4);
        };
      }
    }
    for (c4 = c2 - 3 * M + 4; c4 <= N; c4++) {
      if ((c2 + 2 * c4) % 3 == 0) {
        i = (c2 - c4) / 3;
        {
          hash(2);
          hash((c2 - c4) / 3);
          hash(c4);
        };
      }
      if ((c2 + 2 * c4 + 1) % 3 == 0) {
        i = (c2 - c4 + 4) / 3;
        {
          hash(1);
          hash((c2 - c4 + 4) / 3);
          hash(c4);
        };
      }
    }
    for (c4 = ((0) > (c2 - 3 * M) ? (0) : (c2 - 3 * M)); c4 <= N; c4++) {
      if ((c2 + 2 * c4) % 3 == 0) {
        i = (c2 - c4) / 3;
        {
          hash(3);
          hash((c2 - c4) / 3);
          hash(c4);
        };
      }
    }
  }
  if ((M >= 0) && (N >= 0)) {
    for (c2 = ((3 * M + N - 3) > (0) ? (3 * M + N - 3) : (0)); c2 <= 3 * M + N; c2++) {
      for (c4 = ((0) > (c2 - 3 * M) ? (0) : (c2 - 3 * M)); c4 <= ((c2) < (N) ? (c2) : (N)); c4++) {
        if ((c2 + 2 * c4) % 3 == 0) {
          i = (c2 - c4) / 3;
          {
            hash(2);
            hash((c2 - c4) / 3);
            hash(c4);
          };
        }
      }
      for (c4 = ((0) > (c2 - 3 * M) ? (0) : (c2 - 3 * M)); c4 <= ((c2) < (N) ? (c2) : (N)); c4++) {
        if ((c2 + 2 * c4) % 3 == 0) {
          i = (c2 - c4) / 3;
          {
            hash(3);
            hash((c2 - c4) / 3);
            hash(c4);
          };
        }
      }
    }
  }
}
```