user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<updateMatrix>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xc0,%rsp
  mov    %rdi,-0x98(%rbp)
  mov    %rsi,-0xa0(%rbp)
  mov    %edx,-0xa4(%rbp)
  mov    %ecx,-0xa8(%rbp)
  mov    %r8d,-0xac(%rbp)
  movsd  %xmm0,-0xb8(%rbp)
  movsd  %xmm1,-0xc0(%rbp)
  movsd  D65(%rip),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  D175(%rip),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  -0xb8(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movl   $0x1,-0x90(%rbp)
  jmp    L177
L97:
  mov    -0x90(%rbp),%eax
  cmp    -0xa4(%rbp),%eax
  je     L17
  mov    -0x90(%rbp),%eax
  add    $0x1,%eax
  jmp    L78
L17:
  mov    -0xa4(%rbp),%eax
L78:
  mov    %eax,-0x88(%rbp)
  cmpl   $0x1,-0x90(%rbp)
  je     L24
  mov    -0x90(%rbp),%eax
  sub    $0x1,%eax
  jmp    L33
L24:
  mov    $0x1,%eax
L33:
  mov    %eax,-0x84(%rbp)
  movl   $0x1,-0x8c(%rbp)
  jmp    L121
L206:
  mov    -0x8c(%rbp),%eax
  cmp    -0xa8(%rbp),%eax
  je     L32
  mov    -0x8c(%rbp),%eax
  add    $0x1,%eax
  jmp    L217
L32:
  mov    -0xa8(%rbp),%eax
L217:
  mov    %eax,-0x80(%rbp)
  cmpl   $0x1,-0x8c(%rbp)
  je     L194
  mov    -0x8c(%rbp),%eax
  sub    $0x1,%eax
  jmp    L0
L194:
  mov    $0x1,%eax
L0:
  mov    %eax,-0x7c(%rbp)
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8c(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x90(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8c(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  subss  %xmm1,%xmm0
  cvtss2sd %xmm0,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x88(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8c(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x90(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8c(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  subss  %xmm1,%xmm0
  cvtss2sd %xmm0,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  mov    -0x90(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x80(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x90(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8c(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  subss  %xmm1,%xmm0
  cvtss2sd %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  mov    -0x90(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x7c(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x90(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8c(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  subss  %xmm1,%xmm0
  cvtss2sd %xmm0,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  cmpl   $0x1,-0xac(%rbp)
  jne    L96
  movsd  -0x38(%rbp),%xmm0
  movq   D54(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mulsd  -0x38(%rbp),%xmm0
  divsd  -0x48(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x78(%rbp)
  movsd  -0x28(%rbp),%xmm0
  movq   D54(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mulsd  -0x28(%rbp),%xmm0
  divsd  -0x48(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x70(%rbp)
  movsd  -0x18(%rbp),%xmm0
  movq   D54(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mulsd  -0x18(%rbp),%xmm0
  divsd  -0x48(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x68(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movq   D54(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  divsd  -0x48(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x60(%rbp)
  jmp    L60
L96:
  cmpl   $0x2,-0xac(%rbp)
  jne    L196
  movsd  -0x38(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movapd %xmm0,%xmm1
  divsd  -0x48(%rbp),%xmm1
  movsd  D153(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D153(%rip),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movsd  -0x28(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movapd %xmm0,%xmm1
  divsd  -0x48(%rbp),%xmm1
  movsd  D153(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D153(%rip),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movapd %xmm0,%xmm1
  divsd  -0x48(%rbp),%xmm1
  movsd  D153(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D153(%rip),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  -0x8(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movapd %xmm0,%xmm1
  divsd  -0x48(%rbp),%xmm1
  movsd  D153(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D153(%rip),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  jmp    L60
L196:
  movsd  -0x40(%rbp),%xmm0
  movq   D182(%rip),%xmm1
  andpd  %xmm1,%xmm0
  comisd -0xb8(%rbp),%xmm0
  jbe    L214
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x78(%rbp)
  jmp    L92
L214:
  movsd  -0x38(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movapd %xmm0,%xmm2
  divsd  -0x48(%rbp),%xmm2
  movsd  D153(%rip),%xmm0
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  D65(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x38(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movapd %xmm0,%xmm2
  divsd  -0x48(%rbp),%xmm2
  movsd  D153(%rip),%xmm0
  subsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x78(%rbp)
L92:
  movsd  -0x30(%rbp),%xmm0
  movq   D182(%rip),%xmm1
  andpd  %xmm1,%xmm0
  comisd -0xb8(%rbp),%xmm0
  jbe    L54
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x70(%rbp)
  jmp    L71
L54:
  movsd  -0x28(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movapd %xmm0,%xmm2
  divsd  -0x48(%rbp),%xmm2
  movsd  D153(%rip),%xmm0
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  D65(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x28(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movapd %xmm0,%xmm2
  divsd  -0x48(%rbp),%xmm2
  movsd  D153(%rip),%xmm0
  subsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x70(%rbp)
L71:
  movsd  -0x20(%rbp),%xmm0
  movq   D182(%rip),%xmm1
  andpd  %xmm1,%xmm0
  comisd -0xb8(%rbp),%xmm0
  jbe    L153
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  jmp    L166
L153:
  movsd  -0x18(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movapd %xmm0,%xmm2
  divsd  -0x48(%rbp),%xmm2
  movsd  D153(%rip),%xmm0
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  D65(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x18(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movapd %xmm0,%xmm2
  divsd  -0x48(%rbp),%xmm2
  movsd  D153(%rip),%xmm0
  subsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x68(%rbp)
L166:
  movsd  -0x10(%rbp),%xmm0
  movq   D182(%rip),%xmm1
  andpd  %xmm1,%xmm0
  comisd -0xb8(%rbp),%xmm0
  jbe    L238
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  jmp    L60
L238:
  movsd  -0x8(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movapd %xmm0,%xmm2
  divsd  -0x48(%rbp),%xmm2
  movsd  D153(%rip),%xmm0
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  D65(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movapd %xmm0,%xmm2
  divsd  -0x48(%rbp),%xmm2
  movsd  D153(%rip),%xmm0
  subsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
L60:
  mov    -0x90(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8c(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  -0x78(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x40(%rbp),%xmm2
  movsd  -0x70(%rbp),%xmm0
  mulsd  -0x30(%rbp),%xmm0
  addsd  %xmm0,%xmm2
  movsd  -0x68(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  addsd  %xmm0,%xmm2
  movsd  -0x60(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  addsd  %xmm2,%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x90(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8c(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x8c(%rbp)
L121:
  mov    -0xa8(%rbp),%eax
  cmp    -0x8c(%rbp),%eax
  jge    L206
  addl   $0x1,-0x90(%rbp)
L177:
  mov    -0xa4(%rbp),%eax
  cmp    -0x90(%rbp),%eax
  jge    L97
  nop
  nop
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D65
type: f64
name: extract_symbolic_data
arguments: label: D175
type: f64
name: extract_symbolic_data
arguments: label: D54
type: byte[8]
name: extract_symbolic_data
arguments: label: D153
type: byte[8]
name: extract_symbolic_data
arguments: label: D182
type: qword

tool: D65: 0.5

tool: D175: 0.25

tool: {"D54": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80]}

tool: {"D153": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: D182: 9223372036854775807

assistant: ```c
void updateMatrix(float **image, float **imageOld, int m, int n, int CC, double k, double lambda) {
  double diffN;
  double diffS;
  double diffE;
  double diffW;
  double cN;
  double cS;
  double cE;
  double cW;
  double gradN, gradS, gradE, gradW;
  double wCen = 0.5;
  double wSide = 0.25;
  double ksq = k * k;
  int i, j, ip1, im1, jp1, jm1;
  for (i = 1; i < m + 1; i++) {
    ip1 = i == m ? m : i + 1;
    im1 = i == 1 ? 1 : i - 1;
    for (j = 1; j < n + 1; j++) {
      jp1 = j == n ? n : j + 1;
      jm1 = j == 1 ? 1 : j - 1;
      gradN = diffN = imageOld[im1][j] - imageOld[i][j];
      gradS = diffS = imageOld[ip1][j] - imageOld[i][j];
      gradE = diffE = imageOld[i][jp1] - imageOld[i][j];
      gradW = diffW = imageOld[i][jm1] - imageOld[i][j];
      if (CC == 1) {
        cN = exp(-gradN * gradN / ksq);
        cS = exp(-gradS * gradS / ksq);
        cE = exp(-gradE * gradE / ksq);
        cW = exp(-gradW * gradW / ksq);
      } else if (CC == 2) {
        cN = 1 / (1 + gradN * gradN / ksq);
        cS = 1 / (1 + gradS * gradS / ksq);
        cE = 1 / (1 + gradE * gradE / ksq);
        cW = 1 / (1 + gradW * gradW / ksq);
      } else {
        if (fabs(diffN) > k)
          cN = 0;
        else
          cN = 0.5 * (1 - gradN * gradN / ksq) * (1 - gradN * gradN / ksq);
        if (fabs(diffS) > k)
          cS = 0;
        else
          cS = 0.5 * (1 - gradS * gradS / ksq) * (1 - gradS * gradS / ksq);
        if (fabs(diffE) > k)
          cE = 0;
        else
          cE = 0.5 * (1 - gradE * gradE / ksq) * (1 - gradE * gradE / ksq);
        if (fabs(diffW) > k)
          cW = 0;
        else
          cW = 0.5 * (1 - gradW * gradW / ksq) * (1 - gradW * gradW / ksq);
      }
      image[i][j] = imageOld[i][j] + lambda * (cN * diffN + cS * diffS + cE * diffE + cW * diffW);
    }
  }
}
```