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

```asm
<logarithmic_gradient>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x30,%rsp
  mov    %rdi,%rbx
  mov    %rdx,%r12
  mov    0x28(%rdi),%rbp
  movsd  (%rsi),%xmm2
  movsd  0x8(%rsi),%xmm0
  movsd  0x10(%rsi),%xmm1
  movapd %xmm0,%xmm3
  mulsd  0x30(%rdi),%xmm3
  movq   %rbp,%xmm4
  mulsd  %xmm2,%xmm4
  addsd  %xmm4,%xmm3
  movapd %xmm1,%xmm4
  mulsd  0x38(%rdi),%xmm4
  movapd %xmm3,%xmm6
  addsd  %xmm4,%xmm6
  movsd  %xmm6,0x18(%rsp)
  mov    0x40(%rdi),%r14
  movapd %xmm0,%xmm3
  mulsd  0x48(%rdi),%xmm3
  movq   %r14,%xmm4
  mulsd  %xmm2,%xmm4
  addsd  %xmm4,%xmm3
  movapd %xmm1,%xmm4
  mulsd  0x50(%rdi),%xmm4
  movapd %xmm3,%xmm5
  addsd  %xmm4,%xmm5
  movsd  %xmm5,0x20(%rsp)
  mov    0x58(%rdi),%r13
  mulsd  0x60(%rdi),%xmm0
  movq   %r13,%xmm7
  mulsd  %xmm7,%xmm2
  addsd  %xmm2,%xmm0
  mulsd  0x68(%rdi),%xmm1
  movapd %xmm0,%xmm4
  addsd  %xmm1,%xmm4
  movsd  %xmm4,0x28(%rsp)
  movapd %xmm6,%xmm7
  mulsd  %xmm6,%xmm7
  movapd %xmm7,%xmm6
  movsd  %xmm7,(%rsp)
  movapd %xmm5,%xmm7
  mulsd  %xmm5,%xmm7
  movapd %xmm7,%xmm5
  movsd  %xmm7,0x8(%rsp)
  movapd %xmm4,%xmm7
  mulsd  %xmm4,%xmm7
  movsd  %xmm7,0x10(%rsp)
  addsd  %xmm5,%xmm6
  movapd %xmm6,%xmm0
  addsd  %xmm7,%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm0,%xmm1
  ja     L13
L11:
  movsd  (%rbx),%xmm1
  movsd  0x8(%rbx),%xmm0
  movsd  0x10(%rbx),%xmm2
  mulsd  %xmm2,%xmm2
  movsd  0x18(%rbx),%xmm5
  mulsd  %xmm5,%xmm5
  movsd  0x20(%rbx),%xmm3
  mulsd  %xmm3,%xmm3
  mulsd  %xmm1,%xmm1
  mulsd  %xmm0,%xmm0
  movsd  (%rsp),%xmm4
  divsd  %xmm2,%xmm4
  addsd  %xmm4,%xmm0
  movsd  0x8(%rsp),%xmm4
  divsd  %xmm5,%xmm4
  addsd  %xmm4,%xmm0
  movsd  0x10(%rsp),%xmm4
  divsd  %xmm3,%xmm4
  addsd  %xmm4,%xmm0
  divsd  %xmm0,%xmm1
  movsd  0x18(%rsp),%xmm0
  mulsd  %xmm1,%xmm0
  divsd  %xmm2,%xmm0
  movsd  0x20(%rsp),%xmm4
  mulsd  %xmm1,%xmm4
  divsd  %xmm5,%xmm4
  mulsd  0x28(%rsp),%xmm1
  divsd  %xmm3,%xmm1
  movq   %rbp,%xmm2
  mulsd  %xmm0,%xmm2
  movq   %r14,%xmm3
  mulsd  %xmm4,%xmm3
  addsd  %xmm3,%xmm2
  movq   %r13,%xmm3
  mulsd  %xmm1,%xmm3
  addsd  %xmm3,%xmm2
  movsd  %xmm2,(%r12)
  movapd %xmm0,%xmm3
  mulsd  0x30(%rbx),%xmm3
  movapd %xmm4,%xmm2
  mulsd  0x48(%rbx),%xmm2
  addsd  %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mulsd  0x60(%rbx),%xmm2
  addsd  %xmm2,%xmm3
  movsd  %xmm3,0x8(%r12)
  mulsd  0x38(%rbx),%xmm0
  movapd %xmm4,%xmm2
  mulsd  0x50(%rbx),%xmm2
  addsd  %xmm2,%xmm0
  mulsd  0x68(%rbx),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,0x10(%r12)
  add    $0x30,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
L13:
  call   <sqrt@plt>
  jmp    L11
```

assistant: ```c
void logarithmic_gradient(double *pars, double *r, double *grad) {
  double x, y, z, _r, _r2, ax, ay, az, fac;
  x = pars[5] * r[0] + pars[6] * r[1] + pars[7] * r[2];
  y = pars[8] * r[0] + pars[9] * r[1] + pars[10] * r[2];
  z = pars[11] * r[0] + pars[12] * r[1] + pars[13] * r[2];
  _r2 = x * x + y * y + z * z;
  _r = sqrt(_r2);
  fac = pars[0] * pars[0] / (pars[1] * pars[1] + x * x / (pars[2] * pars[2]) + y * y / (pars[3] * pars[3]) + z * z / (pars[4] * pars[4]));
  ax = fac * x / (pars[2] * pars[2]);
  ay = fac * y / (pars[3] * pars[3]);
  az = fac * z / (pars[4] * pars[4]);
  grad[0] = pars[5] * ax + pars[8] * ay + pars[11] * az;
  grad[1] = pars[6] * ax + pars[9] * ay + pars[12] * az;
  grad[2] = pars[7] * ax + pars[10] * ay + pars[13] * az;
}
```