user: What would the C source look like for the assembly code provided here?

```asm
<wigNaiveAnalysis_symX>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x70,%rsp
  mov    %edi,-0x44(%rbp)
  mov    %esi,-0x48(%rbp)
  mov    %edx,-0x4c(%rbp)
  mov    %rcx,-0x58(%rbp)
  mov    %r8,-0x60(%rbp)
  mov    %r9,-0x68(%rbp)
  mov    -0x48(%rbp),%eax
  mov    %eax,%edx
  neg    %edx
  cmovs  %eax,%edx
  mov    -0x44(%rbp),%eax
  mov    %eax,%ecx
  neg    %ecx
  cmovns %ecx,%eax
  cmp    %eax,%edx
  cmovge %edx,%eax
  mov    %eax,-0x28(%rbp)
  mov    -0x4c(%rbp),%eax
  add    %eax,%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x44(%rbp),%eax
  sub    -0x48(%rbp),%eax
  test   %eax,%eax
  jle    L7
  mov    -0x44(%rbp),%eax
  sub    -0x48(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  setne  %al
  jmp    L74
L7:
  mov    -0x44(%rbp),%eax
  neg    %eax
  sub    -0x48(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  setne  %al
L74:
  test   %al,%al
  je     L36
  movl   $0xffffffff,-0x2c(%rbp)
  jmp    L34
L36:
  movl   $0x1,-0x2c(%rbp)
L34:
  mov    -0x24(%rbp),%ecx
  mov    0x18(%rbp),%rdx
  mov    -0x58(%rbp),%rsi
  mov    -0x68(%rbp),%rax
  mov    %rax,%rdi
  call   <vec_pt_mul_so3@plt>
  movl   $0x0,-0x34(%rbp)
  jmp    L37
L58:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movl   $0x0,-0x30(%rbp)
  jmp    L27
L86:
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x20(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  addl   $0x1,-0x30(%rbp)
L27:
  mov    -0x24(%rbp),%eax
  cltd
  shr    $0x1e,%edx
  add    %edx,%eax
  and    $0x3,%eax
  sub    %edx,%eax
  cmp    %eax,-0x30(%rbp)
  jl     L86
  jmp    L5
L78:
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x20(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  mov    -0x30(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x30(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x18(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  mov    -0x30(%rbp),%eax
  cltq
  add    $0x2,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x30(%rbp),%eax
  cltq
  add    $0x2,%rax
  lea    0x0(,%rax,8),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x10(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  mov    -0x30(%rbp),%eax
  cltq
  add    $0x3,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x30(%rbp),%eax
  cltq
  add    $0x3,%rax
  lea    0x0(,%rax,8),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  addl   $0x4,-0x30(%rbp)
L5:
  mov    -0x30(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L78
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x2c(%rbp),%xmm1
  movsd  -0x20(%rbp),%xmm0
  addsd  -0x18(%rbp),%xmm0
  addsd  -0x10(%rbp),%xmm0
  addsd  -0x8(%rbp),%xmm0
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x60(%rbp)
  addl   $0x1,-0x34(%rbp)
L37:
  mov    -0x4c(%rbp),%eax
  sub    -0x28(%rbp),%eax
  cmp    %eax,-0x34(%rbp)
  jl     L58
  nop
  nop
  leave
  ret
```

assistant: ```c
void wigNaiveAnalysis_symX(int m1, int m2, int bw, double *signal, double *wigners, double *weights, double *coeffs, double *workspace) {
  int i, j, m, n;
  int fudge;
  double tmp0, tmp1, tmp2, tmp3;
  m = ((((m1) > 0 ? (m1) : (-m1))) > (((m2) > 0 ? (m2) : (-m2))) ? (((m1) > 0 ? (m1) : (-m1))) : (((m2) > 0 ? (m2) : (-m2))));
  n = 2 * bw;
  if (((m1 - m2) > 0 ? (m1 - m2) : (-m1 - m2)) % 2)
    fudge = -1;
  else
    fudge = 1;
  vec_pt_mul_so3(weights, signal, workspace, n);
  for (i = 0; i < bw - m; i++) {
    tmp0 = 0.;
    tmp1 = 0.;
    tmp2 = 0.;
    tmp3 = 0.;
    for (j = 0; j < n % 4; ++j)
      tmp0 += wigners[j] * workspace[j];
    for (; j < n; j += 4) {
      tmp0 += wigners[j] * workspace[j];
      tmp1 += wigners[j + 1] * workspace[j + 1];
      tmp2 += wigners[j + 2] * workspace[j + 2];
      tmp3 += wigners[j + 3] * workspace[j + 3];
    }
    coeffs[i] = fudge * (tmp0 + tmp1 + tmp2 + tmp3);
    wigners += n;
  }
}
```