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

```asm
<test>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %edi,%ebx
  sub    $0x28,%rsp
  test   %esi,%esi
  setg   %al
  test   %edi,%edi
  mov    %esi,0xc(%rsp)
  setg   %bpl
  cmp    $0x1,%esi
  setg   0x1f(%rsp)
  test   %edi,%edi
  jns    L170
  test   %al,%al
  jne    L312
  test   %edi,%edi
  jns    L170
L407:
  test   %bpl,%bpl
  je     L388
  cmpb   $0x0,0x1f(%rsp)
  je     L388
  xor    %ebp,%ebp
L553:
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %edi,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  add    $0x1,%ebp
  call   <hash@plt>
  cmp    %ebp,%ebx
  jg     L553
  mov    $0x3,%edi
  xor    %eax,%eax
  xor    %ebp,%ebp
  call   <hash@plt>
  xor    %edi,%edi
  xor    %eax,%eax
  call   <hash@plt>
L597:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %edi,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  add    $0x1,%ebp
  call   <hash@plt>
  cmp    %ebp,%ebx
  jg     L597
  jmp    L395
L312:
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %edi,%edi
  xor    %eax,%eax
  call   <hash@plt>
L388:
  test   %ebx,%ebx
  setle  %dl
  jg     L159
  cmpb   $0x0,0x1f(%rsp)
  je     L159
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %edi,%edi
  xor    %eax,%eax
  call   <hash@plt>
L395:
  mov    $0xa,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %edi,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
L305:
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %edi,%edi
  xor    %eax,%eax
  call   <hash@plt>
L197:
  mov    0xc(%rsp),%esi
  mov    $0x1,%r14d
  lea    -0x1(%rsi),%eax
  cmp    %esi,%ebx
  mov    %eax,0x10(%rsp)
  cmovl  %ebx,%eax
  xor    %ebp,%ebp
  mov    %eax,0x18(%rsp)
  lea    0x2(%rbp),%eax
  mov    %eax,0x14(%rsp)
  cmp    %eax,0x18(%rsp)
  jl     L315
  nopl   0x0(%rax,%rax,1)
L405:
  mov    %r14d,%r13d
  cmp    %r14d,0xc(%rsp)
  jle    L70
  cs nopw 0x0(%rax,%rax,1)
L292:
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %eax,%eax
  mov    %r13d,%edi
  call   <hash@plt>
  cmp    %ebx,%ebp
  jge    L95
  mov    %ebp,%r15d
  nopw   0x0(%rax,%rax,1)
L460:
  mov    $0x7,%edi
  xor    %eax,%eax
  mov    %r15d,%r12d
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  xor    %eax,%eax
  lea    0x1(%r15),%r15d
  call   <hash@plt>
  cmp    %r15d,%ebx
  jne    L460
  mov    $0x8,%edi
  xor    %eax,%eax
  mov    %ebp,%r15d
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  nopw   0x0(%rax,%rax,1)
L286:
  mov    $0x9,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r15d,%eax
  add    $0x1,%r15d
  cmp    %r12d,%eax
  jne    L286
  add    $0x1,%r13d
  cmp    %r13d,0xc(%rsp)
  jne    L292
L70:
  mov    %r14d,%r13d
  cmp    %r14d,%ebx
  jle    L578
L79:
  mov    $0x2,%edi
  xor    %eax,%eax
  mov    %r13d,%r15d
  call   <hash@plt>
  mov    %r14d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  lea    0x1(%r13),%r13d
  call   <hash@plt>
  cmp    %r13d,%ebx
  jne    L79
  mov    $0x3,%edi
  xor    %eax,%eax
  mov    %r14d,%r13d
  call   <hash@plt>
  mov    %r14d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  nopl   (%rax)
L599:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%eax
  add    $0x1,%r13d
  cmp    %eax,%r15d
  jne    L599
L22:
  mov    $0xa,%edi
  xor    %eax,%eax
  add    $0x1,%ebp
  call   <hash@plt>
  mov    %r14d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x14(%rsp),%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  xor    %eax,%eax
  add    $0x1,%r14d
  call   <hash@plt>
  lea    0x2(%rbp),%eax
  mov    %eax,0x14(%rsp)
  cmp    %eax,0x18(%rsp)
  jge    L405
L315:
  test   %ebx,%ebx
  jle    L163
  cmp    0x10(%rsp),%ebx
  jge    L163
  lea    0x1(%rbx),%r14d
  lea    -0x1(%rbx),%r13d
  mov    %ebx,%ebp
  cmp    0xc(%rsp),%ebx
  jge    L345
L172:
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x7,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x8,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x9,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  add    $0x1,%ebp
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  cmp    %ebp,0xc(%rsp)
  jne    L172
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0xa,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L580
L170:
  test   %al,%al
  je     L407
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %edi,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L407
  xchg   %ax,%ax
L95:
  mov    $0x8,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  add    $0x1,%r13d
  call   <hash@plt>
  cmp    %r13d,0xc(%rsp)
  jne    L292
  jmp    L70
L578:
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L22
L163:
  cmp    0xc(%rsp),%ebx
  jl     L255
  cmpb   $0x0,0x1f(%rsp)
  je     L255
L450:
  mov    0xc(%rsp),%eax
  mov    $0x6,%edi
  lea    -0x2(%rax),%r13d
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  mov    %r13d,%ebp
  call   <hash@plt>
  mov    0x10(%rsp),%edi
  xor    %eax,%eax
  call   <hash@plt>
  cmp    %r13d,%ebx
  jle    L120
L77:
  mov    $0x7,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x10(%rsp),%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  add    $0x1,%ebp
  call   <hash@plt>
  cmp    %ebp,%ebx
  jg     L77
  mov    $0x8,%edi
  xor    %eax,%eax
  mov    %r13d,%ebp
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x10(%rsp),%edi
  xor    %eax,%eax
  call   <hash@plt>
L245:
  mov    $0x9,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x10(%rsp),%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  add    $0x1,%ebp
  call   <hash@plt>
  cmp    %ebp,%ebx
  jg     L245
L389:
  mov    0x10(%rsp),%eax
  cmp    %eax,%ebx
  jle    L215
  mov    %eax,%ebp
L30:
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x10(%rsp),%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  add    $0x1,%ebp
  call   <hash@plt>
  cmp    %ebp,%ebx
  jg     L30
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x10(%rsp),%ebp
  xor    %eax,%eax
  mov    %ebp,%edi
  call   <hash@plt>
L566:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x10(%rsp),%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  add    $0x1,%ebp
  call   <hash@plt>
  cmp    %ebp,%ebx
  jg     L566
L593:
  mov    $0xa,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x10(%rsp),%r14d
  xor    %eax,%eax
  mov    %r14d,%edi
  call   <hash@plt>
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  xor    %eax,%eax
  call   <hash@plt>
L255:
  cmp    0x10(%rsp),%ebx
  jne    L580
  cmpb   $0x0,0x1f(%rsp)
  jne    L361
L580:
  xor    %r14d,%r14d
  test   %ebx,%ebx
  cmovns %ebx,%r14d
  add    $0x2,%r14d
  cmp    %r14d,0xc(%rsp)
  jle    L61
  nopl   (%rax)
L191:
  lea    -0x1(%r14),%r15d
  lea    -0x2(%r14),%r13d
  mov    %r15d,%ebp
  cmp    0xc(%rsp),%r15d
  jge    L595
  nopw   0x0(%rax,%rax,1)
L369:
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x8,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  add    $0x1,%ebp
  call   <hash@plt>
  cmp    %ebp,0xc(%rsp)
  jg     L369
L595:
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0xa,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  xor    %eax,%eax
  add    $0x1,%r14d
  call   <hash@plt>
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  cmp    %r14d,0xc(%rsp)
  jg     L191
L61:
  cmp    0x10(%rsp),%ebx
  jge    L233
  cmpb   $0x0,0x1f(%rsp)
  jne    L88
L233:
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L159:
  cmpl   $0x1,0xc(%rsp)
  sete   %al
  jne    L484
  test   %bpl,%bpl
  je     L484
  xor    %ebp,%ebp
L300:
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %edi,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  add    $0x1,%ebp
  call   <hash@plt>
  cmp    %ebp,%ebx
  jg     L300
  mov    $0x3,%edi
  xor    %eax,%eax
  xor    %ebp,%ebp
  call   <hash@plt>
  xor    %edi,%edi
  xor    %eax,%eax
  call   <hash@plt>
L6:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %edi,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  add    $0x1,%ebp
  call   <hash@plt>
  cmp    %ebp,%ebx
  jg     L6
  mov    $0xa,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %edi,%edi
  jmp    L305
L88:
  mov    0xc(%rsp),%r12d
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %eax,%eax
  sub    $0x2,%r12d
  mov    %r12d,%edi
  call   <hash@plt>
  mov    0x10(%rsp),%ebx
  xor    %eax,%eax
  mov    %ebx,%edi
  call   <hash@plt>
  mov    $0x8,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0xa,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  add    $0x28,%rsp
  mov    %ebx,%edi
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1050 <hash@plt>
L345:
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0xa,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %eax,%eax
  mov    %ebx,%edi
  call   <hash@plt>
  cmpl   $0x1,0xc(%rsp)
  jg     L450
  jmp    L580
L361:
  mov    0xc(%rsp),%r12d
  xor    %r14d,%r14d
  test   %ebx,%ebx
  mov    $0x6,%edi
  cmovns %ebx,%r14d
  xor    %eax,%eax
  call   <hash@plt>
  lea    -0x2(%r12),%ebp
  xor    %eax,%eax
  mov    %ebp,%edi
  add    $0x2,%r14d
  call   <hash@plt>
  mov    0x10(%rsp),%r15d
  xor    %eax,%eax
  mov    %r15d,%edi
  call   <hash@plt>
  mov    $0x7,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x8,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x9,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0xa,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %eax,%eax
  mov    %r15d,%edi
  call   <hash@plt>
  cmp    %r12d,%r14d
  jl     L191
  jmp    L233
L215:
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x10(%rsp),%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L593
L120:
  mov    $0x8,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x10(%rsp),%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L389
L484:
  test   %dl,%dl
  je     L197
  test   %al,%al
  je     L197
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %edi,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0xa,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %edi,%edi
  jmp    L305
```

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);
    };
  }
}
```