user: 请从给定的汇编指令推导出C源代码:

```asm
<ERI_RCSH_Coeff>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x14(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %rdx,-0x28(%rbp)
  movsd  D2(%rip),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  cmpl   $0x0,-0x14(%rbp)
  jle    L22
  mov    -0x14(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  jne    L8
  mov    -0x20(%rbp),%rax
  movsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x8,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x28(%rbp),%rax
  movsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L32
L8:
  movsd  -0x8(%rbp),%xmm0
  movq   D16(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x8,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x28(%rbp),%rax
  movsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L32
L22:
  cmpl   $0x0,-0x14(%rbp)
  jns    L75
  mov    -0x14(%rbp),%eax
  mov    %eax,%edx
  neg    %edx
  cmovns %edx,%eax
  and    $0x1,%eax
  test   %eax,%eax
  jne    L70
  mov    -0x20(%rbp),%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x8,%rax
  movsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x28(%rbp),%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  movsd  -0x8(%rbp),%xmm0
  movq   D16(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L32
L70:
  mov    -0x20(%rbp),%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x8,%rax
  movsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x28(%rbp),%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  movsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  jmp    L32
L75:
  mov    -0x20(%rbp),%rax
  movsd  D33(%rip),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x8,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x28(%rbp),%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
L32:
  nop
  pop    %rbp
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D2
type_guessed: byte[8]
name: extract_symbolic_data
arguments: tag: D16
type_guessed: f32[2]
name: extract_symbolic_data
arguments: tag: D33
type_guessed: f64

tool: {"D2": [0xcc,0x3b,0x7f,0x66,0x9e,0xa0,0xe6,0x3f]}

tool: {"D16": [0.0,-0.0]}

tool: D33: 1

assistant: ```c
void ERI_RCSH_Coeff(int m, double a[2], double b[2]) {
  double oost;
  oost = 1.0 / sqrt(2.0);
  if (m > 0) {
    if (m % 2 == 0) {
      a[0] = oost;
      a[1] = 0.0;
      b[0] = oost;
      b[1] = 0.0;
    } else {
      a[0] = -oost;
      a[1] = 0.0;
      b[0] = oost;
      b[1] = 0.0;
    }
  } else if (m < 0) {
    if (abs(m) % 2 == 0) {
      a[0] = 0.0;
      a[1] = oost;
      b[0] = 0.0;
      b[1] = -oost;
    } else {
      a[0] = 0.0;
      a[1] = oost;
      b[0] = 0.0;
      b[1] = oost;
    }
  } else {
    a[0] = 1.0;
    a[1] = 0.0;
    b[0] = 0.0;
    b[1] = 0.0;
  }
}
```