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

```asm
<test>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %edi,%r12d
  mov    %esi,%r15d
  test   %esi,%esi
  setg   %al
  mov    %edi,%edx
  shr    $0x1f,%edx
  mov    %edx,%r13d
  and    %al,%r13b
  jne    L292
  test   %edi,%edi
  js     L579
  test   %al,%al
  je     L579
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L579:
  test   %r12d,%r12d
  setg   0x1f(%rsp)
  movzbl 0x1f(%rsp),%eax
  cmp    $0x1,%r15d
  setg   0x1e(%rsp)
  movzbl 0x1e(%rsp),%esi
  test   %al,%al
  je     L441
  test   %sil,%sil
  je     L441
  mov    $0x0,%ebx
L113:
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  add    $0x1,%ebx
  cmp    %ebx,%r12d
  jg     L113
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%ebx
L181:
  mov    $0x4,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  add    $0x1,%ebx
  cmp    %ebx,%r12d
  jg     L181
  mov    $0xa,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%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    $0x5,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  cmp    $0x1,%r15d
  sete   %bpl
L324:
  test   %r13b,%r13b
  je     L370
  test   %bpl,%bpl
  je     L370
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0xa,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  jmp    L370
L292:
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  test   %r12d,%r12d
  setg   0x1f(%rsp)
  cmp    $0x1,%r15d
  setg   0x1e(%rsp)
L441:
  test   %r12d,%r12d
  setle  %r13b
  jg     L590
  cmpb   $0x0,0x1e(%rsp)
  je     L590
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0xa,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%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    $0x5,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L370:
  lea    -0x1(%r15),%eax
  cmp    %r15d,%r12d
  cmovl  %r12d,%eax
  mov    %eax,0x18(%rsp)
  movl   $0x1,0x14(%rsp)
  movl   $0x0,0xc(%rsp)
  jmp    L460
L590:
  cmp    $0x1,%r15d
  sete   %al
  movzbl 0x1f(%rsp),%ebp
  and    %al,%bpl
  je     L594
  mov    $0x0,%ebx
L123:
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  add    $0x1,%ebx
  cmp    %ebx,%r12d
  jg     L123
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%ebx
L250:
  mov    $0x4,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  add    $0x1,%ebx
  cmp    %ebx,%r12d
  jg     L250
  mov    $0xa,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  jmp    L324
L594:
  mov    %eax,%ebp
  jmp    L324
L537:
  mov    $0x9,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  add    $0x1,%ebx
  cmp    %ebx,%r12d
  jg     L537
L430:
  add    $0x1,%ebp
  cmp    %ebp,%r15d
  jle    L249
L593:
  mov    $0x6,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    0xc(%rsp),%eax
  cmp    %eax,%r12d
  jle    L17
  mov    %eax,%ebx
L156:
  mov    $0x7,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  add    $0x1,%ebx
  cmp    %ebx,%r12d
  jg     L156
  mov    $0x8,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r13d,%ebx
  jmp    L537
L249:
  cmp    %r14d,%r12d
  jle    L359
  mov    %r14d,%ebx
L224:
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  add    $0x1,%ebx
  cmp    %ebx,%r12d
  jg     L224
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r14d,%ebx
L316:
  mov    $0x4,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  add    $0x1,%ebx
  cmp    %ebx,%r12d
  jg     L316
L238:
  mov    $0xa,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    0x10(%rsp),%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  addl   $0x1,0xc(%rsp)
  addl   $0x1,0x14(%rsp)
L460:
  mov    0xc(%rsp),%eax
  add    $0x2,%eax
  mov    %eax,0x10(%rsp)
  cmp    %eax,0x18(%rsp)
  jl     L39
  mov    0x14(%rsp),%eax
  mov    %eax,%r14d
  cmp    %eax,%r15d
  jle    L249
  mov    %eax,%ebp
  mov    0xc(%rsp),%r13d
  jmp    L593
L39:
  cmpb   $0x0,0x1f(%rsp)
  je     L457
  lea    -0x1(%r15),%eax
  mov    %eax,0x10(%rsp)
  cmp    %r12d,%eax
  jle    L457
  lea    0x1(%r12),%r13d
  cmp    %r15d,%r12d
  jge    L559
  mov    %r12d,%ebx
  lea    -0x1(%r12),%ebp
L581:
  mov    $0x6,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x7,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x8,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x9,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  add    $0x1,%ebx
  cmp    %ebx,%r15d
  jne    L581
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0xa,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  jmp    L234
L559:
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0xa,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  cmp    %r15d,%r12d
  jl     L234
  cmpb   $0x0,0x1e(%rsp)
  jne    L480
  jmp    L234
L457:
  cmp    %r15d,%r12d
  jl     L486
  cmpb   $0x0,0x1e(%rsp)
  je     L486
L480:
  lea    -0x1(%r15),%ebx
  lea    -0x2(%r15),%r13d
  mov    $0x6,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  cmp    %r13d,%r12d
  jle    L107
  mov    %r13d,%ebp
L482:
  mov    $0x7,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  add    $0x1,%ebp
  cmp    %ebp,%r12d
  jg     L482
  mov    $0x8,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r13d,%ebp
L599:
  mov    $0x9,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  add    $0x1,%ebp
  cmp    %ebp,%r12d
  jg     L599
L10:
  cmp    %ebx,%r12d
  jle    L283
  mov    %ebx,%ebp
L488:
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  add    $0x1,%ebp
  cmp    %ebp,%r12d
  jg     L488
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%ebp
L93:
  mov    $0x4,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  add    $0x1,%ebp
  cmp    %ebp,%r12d
  jg     L93
L362:
  mov    $0xa,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
L486:
  lea    -0x1(%r15),%eax
  mov    %eax,0x10(%rsp)
  cmp    %r12d,%eax
  jne    L234
  cmpb   $0x0,0x1e(%rsp)
  jne    L458
L234:
  test   %r12d,%r12d
  mov    $0x0,%r13d
  cmovns %r12d,%r13d
  add    $0x2,%r13d
  cmp    %r13d,%r15d
  jle    L591
L271:
  sub    $0x2,%r13d
L212:
  lea    0x2(%r13),%eax
  mov    %eax,0xc(%rsp)
  mov    %r13d,%ebp
  add    $0x1,%r13d
  mov    %r13d,%r14d
  cmp    %r13d,%r15d
  jle    L270
  mov    %r13d,%ebx
L504:
  mov    $0x6,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x8,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  add    $0x1,%ebx
  cmp    %ebx,%r15d
  jg     L504
L270:
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0xa,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    0xc(%rsp),%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  add    $0x3,%ebp
  cmp    %r15d,%ebp
  jl     L212
L591:
  cmp    0x10(%rsp),%r12d
  jge    L62
  cmpb   $0x0,0x1e(%rsp)
  jne    L3
L62:
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L458:
  lea    -0x2(%r15),%ebx
  mov    $0x6,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    0x10(%rsp),%r14d
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x7,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x8,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x9,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0xa,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  test   %r12d,%r12d
  mov    $0x0,%r13d
  cmovns %r12d,%r13d
  add    $0x2,%r13d
  cmp    %r13d,%r15d
  jg     L271
  jmp    L62
L3:
  sub    $0x2,%r15d
  mov    $0x6,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    0x10(%rsp),%ebx
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x8,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0xa,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  jmp    L62
L359:
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  jmp    L238
L17:
  mov    $0x8,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  jmp    L430
L283:
  mov    $0x3,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  jmp    L362
L107:
  mov    $0x8,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <hash@plt>
  jmp    L10
```

assistant: ```c
void test(int M, int N) {
  int c2, c4, c6;
  int i, j, k;
  if ((M <= -1) && (N >= 1)) {
    {
      hash(1);
      hash(0);
    };
  }
  if ((M >= 0) && (N >= 1)) {
    {
      hash(1);
      hash(0);
    };
  }
  if ((M >= 1) && (N >= 2)) {
    for (c4 = 0; c4 <= M - 1; c4++) {
      {
        hash(2);
        hash(0);
        hash(c4);
      };
    }
    {
      hash(3);
      hash(0);
    };
    for (c4 = 0; c4 <= M - 1; c4++) {
      {
        hash(4);
        hash(0);
        hash(c4);
      };
    }
    {
      hash(10);
      hash(0);
    };
    {
      hash(1);
      hash(1);
    };
    {
      hash(5);
      hash(0);
    };
  }
  if ((M <= 0) && (N >= 2)) {
    {
      hash(3);
      hash(0);
    };
    {
      hash(10);
      hash(0);
    };
    {
      hash(1);
      hash(1);
    };
    {
      hash(5);
      hash(0);
    };
  }
  if ((M >= 1) && (N == 1)) {
    for (c4 = 0; c4 <= M - 1; c4++) {
      {
        hash(2);
        hash(0);
        hash(c4);
      };
    }
    {
      hash(3);
      hash(0);
    };
    for (c4 = 0; c4 <= M - 1; c4++) {
      {
        hash(4);
        hash(0);
        hash(c4);
      };
    }
    {
      hash(10);
      hash(0);
    };
    {
      hash(5);
      hash(0);
    };
  }
  if ((M <= 0) && (N == 1)) {
    {
      hash(3);
      hash(0);
    };
    {
      hash(10);
      hash(0);
    };
    {
      hash(5);
      hash(0);
    };
  }
  for (c2 = 2; c2 <= ((N - 1) < (M) ? (N - 1) : (M)); c2++) {
    for (c4 = c2 - 1; c4 <= N - 1; c4++) {
      i = c2 - 2;
      {
        hash(6);
        hash(c2 - 2);
        hash(c4);
      };
      for (c6 = c2 - 2; c6 <= M - 1; c6++) {
        i = c2 - 2;
        {
          hash(7);
          hash(c2 - 2);
          hash(c4);
          hash(c6);
        };
      }
      i = c2 - 2;
      {
        hash(8);
        hash(c2 - 2);
        hash(c4);
      };
      for (c6 = c2 - 2; c6 <= M - 1; c6++) {
        i = c2 - 2;
        {
          hash(9);
          hash(c2 - 2);
          hash(c4);
          hash(c6);
        };
      }
    }
    for (c4 = c2 - 1; c4 <= M - 1; c4++) {
      i = c2 - 1;
      {
        hash(2);
        hash(c2 - 1);
        hash(c4);
      };
    }
    i = c2 - 1;
    {
      hash(3);
      hash(c2 - 1);
    };
    for (c4 = c2 - 1; c4 <= M - 1; c4++) {
      i = c2 - 1;
      {
        hash(4);
        hash(c2 - 1);
        hash(c4);
      };
    }
    i = c2 - 1;
    {
      hash(10);
      hash(c2 - 1);
    };
    {
      hash(1);
      hash(c2);
    };
    i = c2 - 1;
    {
      hash(5);
      hash(c2 - 1);
    };
  }
  if ((M >= 1) && (M <= N - 2)) {
    c2 = M + 1;
    for (c4 = M; c4 <= N - 1; c4++) {
      i = M - 1;
      {
        hash(6);
        hash(M - 1);
        hash(c4);
      };
      c6 = M - 1;
      i = M - 1;
      k = M - 1;
      {
        hash(7);
        hash(M - 1);
        hash(c4);
        hash(M - 1);
      };
      i = M - 1;
      {
        hash(8);
        hash(M - 1);
        hash(c4);
      };
      c6 = M - 1;
      i = M - 1;
      k = M - 1;
      {
        hash(9);
        hash(M - 1);
        hash(c4);
        hash(M - 1);
      };
    }
    {
      hash(3);
      hash(M);
    };
    {
      hash(10);
      hash(M);
    };
    i = M + 1;
    {
      hash(1);
      hash(M + 1);
    };
    {
      hash(5);
      hash(M);
    };
  }
  if ((M >= N) && (N >= 2)) {
    c4 = N - 1;
    i = N - 2;
    j = N - 1;
    {
      hash(6);
      hash(N - 2);
      hash(N - 1);
    };
    for (c6 = N - 2; c6 <= M - 1; c6++) {
      i = N - 2;
      j = N - 1;
      {
        hash(7);
        hash(N - 2);
        hash(N - 1);
        hash(c6);
      };
    }
    i = N - 2;
    j = N - 1;
    {
      hash(8);
      hash(N - 2);
      hash(N - 1);
    };
    for (c6 = N - 2; c6 <= M - 1; c6++) {
      i = N - 2;
      j = N - 1;
      {
        hash(9);
        hash(N - 2);
        hash(N - 1);
        hash(c6);
      };
    }
    for (c4 = N - 1; c4 <= M - 1; c4++) {
      i = N - 1;
      {
        hash(2);
        hash(N - 1);
        hash(c4);
      };
    }
    i = N - 1;
    {
      hash(3);
      hash(N - 1);
    };
    for (c4 = N - 1; c4 <= M - 1; c4++) {
      i = N - 1;
      {
        hash(4);
        hash(N - 1);
        hash(c4);
      };
    }
    i = N - 1;
    {
      hash(10);
      hash(N - 1);
    };
    i = N - 1;
    {
      hash(5);
      hash(N - 1);
    };
  }
  if ((M == N - 1) && (N >= 2)) {
    c4 = N - 1;
    i = N - 2;
    j = N - 1;
    {
      hash(6);
      hash(N - 2);
      hash(N - 1);
    };
    c6 = N - 2;
    i = N - 2;
    j = N - 1;
    k = N - 2;
    {
      hash(7);
      hash(N - 2);
      hash(N - 1);
      hash(N - 2);
    };
    i = N - 2;
    j = N - 1;
    {
      hash(8);
      hash(N - 2);
      hash(N - 1);
    };
    c6 = N - 2;
    i = N - 2;
    j = N - 1;
    k = N - 2;
    {
      hash(9);
      hash(N - 2);
      hash(N - 1);
      hash(N - 2);
    };
    i = N - 1;
    {
      hash(3);
      hash(N - 1);
    };
    i = N - 1;
    {
      hash(10);
      hash(N - 1);
    };
    i = N - 1;
    {
      hash(5);
      hash(N - 1);
    };
  }
  for (c2 = ((M + 2) > (2) ? (M + 2) : (2)); c2 <= N - 1; c2++) {
    for (c4 = c2 - 1; c4 <= N - 1; c4++) {
      i = c2 - 2;
      {
        hash(6);
        hash(c2 - 2);
        hash(c4);
      };
      i = c2 - 2;
      {
        hash(8);
        hash(c2 - 2);
        hash(c4);
      };
    }
    i = c2 - 1;
    {
      hash(3);
      hash(c2 - 1);
    };
    i = c2 - 1;
    {
      hash(10);
      hash(c2 - 1);
    };
    {
      hash(1);
      hash(c2);
    };
    i = c2 - 1;
    {
      hash(5);
      hash(c2 - 1);
    };
  }
  if ((M <= N - 2) && (N >= 2)) {
    c4 = N - 1;
    i = N - 2;
    j = N - 1;
    {
      hash(6);
      hash(N - 2);
      hash(N - 1);
    };
    i = N - 2;
    j = N - 1;
    {
      hash(8);
      hash(N - 2);
      hash(N - 1);
    };
    i = N - 1;
    {
      hash(3);
      hash(N - 1);
    };
    i = N - 1;
    {
      hash(10);
      hash(N - 1);
    };
    i = N - 1;
    {
      hash(5);
      hash(N - 1);
    };
  }
}
```