user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<coolHeatMapAt>:
  endbr64
  mov    %edx,%r8d
  movswq %si,%rdx
  push   %r15
  mov    %rcx,%r9
  imul   $0x3a,%rdx,%rax
  movswq %r8w,%r10
  push   %r14
  mov    %rdi,%r11
  push   %r13
  movswl %si,%esi
  push   %r12
  add    %rdi,%rax
  push   %rbp
  movswl %r8w,%edi
  xor    %r8d,%r8d
  push   %rbx
  movzwl (%rax,%r10,2),%ebx
  lea    -0x5(%rdi),%r12d
  lea    -0x4(%rdi),%ebp
  sub    %rbx,(%r9)
  mov    %rbx,%rcx
  lea    0x0(,%rdx,8),%rbx
  mov    %r8w,(%rax,%r10,2)
  lea    -0x5(%rsi),%eax
  sub    %rdx,%rbx
  movzwl %cx,%r15d
  add    $0x6,%esi
  mov    %edi,%r8d
  lea    (%rdx,%rbx,4),%rdx
  mov    %r15d,-0x14(%rsp)
  lea    -0x3(%rdi),%ebx
  add    %r10,%rdx
  lea    (%r11,%rdx,2),%rdx
  lea    -0x2(%rdi),%r11d
  mov    %r11d,-0x2c(%rsp)
  lea    -0x1(%rdi),%r11d
  mov    %r11d,-0x28(%rsp)
  lea    0x1(%rdi),%r11d
  mov    %r11d,-0x24(%rsp)
  lea    0x2(%rdi),%r11d
  mov    %r11d,-0x20(%rsp)
  lea    0x3(%rdi),%r11d
  mov    %r11d,-0x1c(%rsp)
  lea    0x4(%rdi),%r11d
  mov    %r11d,-0x18(%rsp)
  lea    0x5(%rdi),%r11d
  movslq %r11d,%r13
  sub    %r10,%r13
  mov    %r13,-0x8(%rsp)
  imul   $0xcccd,%r15d,%r13d
  shr    $0x13,%r13d
  movzwl %r13w,%r15d
  mov    %r13w,-0xe(%rsp)
  mov    %r15d,-0xc(%rsp)
  jmp    L283
  nopl   0x0(%rax,%rax,1)
L250:
  cmp    $0x1c,%ebp
  jbe    L129
L49:
  cmp    $0x1c,%ebx
  jbe    L276
L212:
  cmpl   $0x1c,-0x2c(%rsp)
  jbe    L115
L261:
  cmpl   $0x1c,-0x28(%rsp)
  jbe    L255
L236:
  cmp    $0x1c,%edi
  jbe    L107
L201:
  cmpl   $0x1c,-0x24(%rsp)
  jbe    L266
L240:
  cmpl   $0x1c,-0x20(%rsp)
  jbe    L166
L318:
  cmpl   $0x1c,-0x1c(%rsp)
  jbe    L152
L269:
  cmpl   $0x1c,-0x18(%rsp)
  jbe    L50
L331:
  cmp    $0x1c,%r11d
  jbe    L265
L319:
  add    $0x1,%eax
  add    $0x3a,%rdx
  cmp    %eax,%esi
  je     L130
L283:
  cmp    $0x4e,%eax
  ja     L319
  cmp    $0x1c,%r12d
  ja     L250
  lea    -0x5(%r8),%r13d
  movslq %r13d,%r13
  sub    %r10,%r13
  cmp    -0x122(%rdx,%r13,2),%cx
  jne    L250
  cmp    $0x9,%cx
  mov    $0x1,%r15d
  mov    $0x1,%r14d
  cmova  -0xe(%rsp),%r15w
  cmova  -0xc(%rsp),%r14d
  mov    %r15w,-0x122(%rdx,%r13,2)
  mov    -0x14(%rsp),%r13d
  sub    %r14d,%r13d
  movslq %r13d,%r13
  sub    %r13,(%r9)
  cmp    $0x1c,%ebp
  ja     L49
  nopl   0x0(%rax,%rax,1)
L129:
  lea    -0x4(%r8),%r13d
  movslq %r13d,%r13
  sub    %r10,%r13
  cmp    -0x122(%rdx,%r13,2),%cx
  jne    L49
  cmp    $0x9,%cx
  mov    $0x1,%r15d
  mov    $0x1,%r14d
  cmova  -0xe(%rsp),%r15w
  cmova  -0xc(%rsp),%r14d
  mov    %r15w,-0x122(%rdx,%r13,2)
  mov    -0x14(%rsp),%r13d
  sub    %r14d,%r13d
  movslq %r13d,%r13
  sub    %r13,(%r9)
  cmp    $0x1c,%ebx
  ja     L212
  xchg   %ax,%ax
L276:
  lea    -0x3(%r8),%r13d
  movslq %r13d,%r13
  sub    %r10,%r13
  cmp    -0x122(%rdx,%r13,2),%cx
  jne    L212
  cmp    $0x9,%cx
  mov    $0x1,%r15d
  mov    $0x1,%r14d
  cmova  -0xe(%rsp),%r15w
  cmova  -0xc(%rsp),%r14d
  mov    %r15w,-0x122(%rdx,%r13,2)
  mov    -0x14(%rsp),%r13d
  sub    %r14d,%r13d
  movslq %r13d,%r13
  sub    %r13,(%r9)
  cmpl   $0x1c,-0x2c(%rsp)
  ja     L261
  nopl   0x0(%rax,%rax,1)
L115:
  lea    -0x2(%r8),%r13d
  movslq %r13d,%r13
  sub    %r10,%r13
  cmp    -0x122(%rdx,%r13,2),%cx
  jne    L261
  cmp    $0x9,%cx
  mov    $0x1,%r15d
  mov    $0x1,%r14d
  cmova  -0xe(%rsp),%r15w
  cmova  -0xc(%rsp),%r14d
  mov    %r15w,-0x122(%rdx,%r13,2)
  mov    -0x14(%rsp),%r13d
  sub    %r14d,%r13d
  movslq %r13d,%r13
  sub    %r13,(%r9)
  cmpl   $0x1c,-0x28(%rsp)
  ja     L236
  nopl   0x0(%rax,%rax,1)
L255:
  lea    -0x1(%r8),%r13d
  movslq %r13d,%r13
  sub    %r10,%r13
  cmp    -0x122(%rdx,%r13,2),%cx
  jne    L236
  cmp    $0x9,%cx
  mov    $0x1,%r15d
  mov    $0x1,%r14d
  cmova  -0xe(%rsp),%r15w
  cmova  -0xc(%rsp),%r14d
  mov    %r15w,-0x122(%rdx,%r13,2)
  mov    -0x14(%rsp),%r13d
  sub    %r14d,%r13d
  movslq %r13d,%r13
  sub    %r13,(%r9)
  cmp    $0x1c,%edi
  ja     L201
  cs nopw 0x0(%rax,%rax,1)
L107:
  cmp    -0x122(%rdx),%cx
  jne    L201
  cmp    $0x9,%cx
  mov    $0x1,%r13d
  mov    $0x1,%r14d
  cmova  -0xe(%rsp),%r13w
  cmova  -0xc(%rsp),%r14d
  mov    %r13w,-0x122(%rdx)
  mov    -0x14(%rsp),%r13d
  sub    %r14d,%r13d
  movslq %r13d,%r13
  sub    %r13,(%r9)
  cmpl   $0x1c,-0x24(%rsp)
  ja     L240
  nopl   0x0(%rax,%rax,1)
L266:
  lea    0x1(%r8),%r13d
  movslq %r13d,%r13
  sub    %r10,%r13
  cmp    -0x122(%rdx,%r13,2),%cx
  jne    L240
  cmp    $0x9,%cx
  mov    $0x1,%r15d
  mov    $0x1,%r14d
  cmova  -0xe(%rsp),%r15w
  cmova  -0xc(%rsp),%r14d
  mov    %r15w,-0x122(%rdx,%r13,2)
  mov    -0x14(%rsp),%r13d
  sub    %r14d,%r13d
  movslq %r13d,%r13
  sub    %r13,(%r9)
  cmpl   $0x1c,-0x20(%rsp)
  ja     L318
  nopl   0x0(%rax,%rax,1)
L166:
  lea    0x2(%r8),%r13d
  movslq %r13d,%r13
  sub    %r10,%r13
  cmp    -0x122(%rdx,%r13,2),%cx
  jne    L318
  cmp    $0x9,%cx
  mov    $0x1,%r15d
  mov    $0x1,%r14d
  cmova  -0xe(%rsp),%r15w
  cmova  -0xc(%rsp),%r14d
  mov    %r15w,-0x122(%rdx,%r13,2)
  mov    -0x14(%rsp),%r13d
  sub    %r14d,%r13d
  movslq %r13d,%r13
  sub    %r13,(%r9)
  cmpl   $0x1c,-0x1c(%rsp)
  ja     L269
  nopl   0x0(%rax,%rax,1)
L152:
  lea    0x3(%r8),%r13d
  movslq %r13d,%r13
  sub    %r10,%r13
  cmp    -0x122(%rdx,%r13,2),%cx
  jne    L269
  cmp    $0x9,%cx
  mov    $0x1,%r15d
  mov    $0x1,%r14d
  cmova  -0xe(%rsp),%r15w
  cmova  -0xc(%rsp),%r14d
  mov    %r15w,-0x122(%rdx,%r13,2)
  mov    -0x14(%rsp),%r13d
  sub    %r14d,%r13d
  movslq %r13d,%r13
  sub    %r13,(%r9)
  cmpl   $0x1c,-0x18(%rsp)
  ja     L331
  nopl   0x0(%rax,%rax,1)
L50:
  lea    0x4(%r8),%r13d
  movslq %r13d,%r13
  sub    %r10,%r13
  cmp    -0x122(%rdx,%r13,2),%cx
  jne    L331
  cmp    $0x9,%cx
  mov    $0x1,%r15d
  mov    $0x1,%r14d
  cmova  -0xe(%rsp),%r15w
  cmova  -0xc(%rsp),%r14d
  mov    %r15w,-0x122(%rdx,%r13,2)
  mov    -0x14(%rsp),%r13d
  sub    %r14d,%r13d
  movslq %r13d,%r13
  sub    %r13,(%r9)
  cmp    $0x1c,%r11d
  ja     L319
  nopw   0x0(%rax,%rax,1)
L265:
  mov    -0x8(%rsp),%r14
  cmp    %cx,-0x122(%rdx,%r14,2)
  jne    L319
  cmp    $0xa,%cx
  mov    $0x1,%r13d
  mov    %r14,%r15
  cmovae -0xe(%rsp),%r13w
  mov    $0x1,%r14d
  cmovae -0xc(%rsp),%r14d
  add    $0x1,%eax
  mov    %r13w,-0x122(%rdx,%r15,2)
  mov    -0x14(%rsp),%r13d
  add    $0x3a,%rdx
  sub    %r14d,%r13d
  movslq %r13d,%r13
  sub    %r13,(%r9)
  cmp    %eax,%esi
  jne    L283
L130:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
void coolHeatMapAt(unsigned short heatMap[(100 - 20 - 1)][((31 + 3) - 3 - 2)], short x, short y, unsigned long *totalHeat) {
  short k, l;
  unsigned short currentHeat;
  currentHeat = heatMap[x][y];
  *totalHeat -= heatMap[x][y];
  heatMap[x][y] = 0;
  for (k = -5; k <= 5; k++) {
    for (l = -5; l <= 5; l++) {
      if (((x + k) >= 0 && (x + k) < (100 - 20 - 1) && (y + l) >= 0 && (y + l) < ((31 + 3) - 3 - 2)) && heatMap[x + k][y + l] == currentHeat) {
        heatMap[x + k][y + l] = (((1) > (heatMap[x + k][y + l] / 10)) ? (1) : (heatMap[x + k][y + l] / 10));
        *totalHeat -= (currentHeat - heatMap[x + k][y + l]);
      }
    }
  }
}
```