user: What is the c source code of the assembly code below?

```asm
<eval_sin2pi>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,-0x4(%rbp)
  mov    %esi,-0x8(%rbp)
  movsd  %xmm0,-0x10(%rbp)
  cmpl   $0x1,-0x4(%rbp)
  jne    L286
  cmpl   $0x3,-0x8(%rbp)
  je     L212
  cmpl   $0x3,-0x8(%rbp)
  jg     L301
  cmpl   $0x2,-0x8(%rbp)
  je     L29
  cmpl   $0x2,-0x8(%rbp)
  jg     L301
  cmpl   $0x0,-0x8(%rbp)
  je     L58
  cmpl   $0x1,-0x8(%rbp)
  je     L102
  jmp    L301
L58:
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin2pi0_hi@plt>
  movq   %xmm0,%rax
  jmp    L0
L102:
  pxor   %xmm0,%xmm0
  comisd -0x10(%rbp),%xmm0
  jbe    L191
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos2pi0_hi@plt>
  movq   %xmm0,%rax
  jmp    L0
L191:
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos2pi0_lo@plt>
  movq   %xmm0,%rax
  jmp    L0
L29:
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin2pi0_hi@plt>
  movq   %xmm0,%rax
  movq   D5(%rip),%xmm0
  movq   %rax,%xmm1
  xorpd  %xmm0,%xmm1
  movq   %xmm1,%rax
  jmp    L0
L212:
  pxor   %xmm0,%xmm0
  comisd -0x10(%rbp),%xmm0
  jbe    L63
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos2pi0_hi@plt>
  movq   %xmm0,%rax
  movq   D5(%rip),%xmm0
  movq   %rax,%xmm2
  xorpd  %xmm0,%xmm2
  movq   %xmm2,%rax
  jmp    L0
L63:
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos2pi0_lo@plt>
  movq   %xmm0,%rax
  movq   D5(%rip),%xmm0
  movq   %rax,%xmm3
  xorpd  %xmm0,%xmm3
  movq   %xmm3,%rax
  jmp    L0
L286:
  cmpl   $0x3,-0x8(%rbp)
  je     L263
  cmpl   $0x3,-0x8(%rbp)
  jg     L301
  cmpl   $0x2,-0x8(%rbp)
  je     L182
  cmpl   $0x2,-0x8(%rbp)
  jg     L301
  cmpl   $0x0,-0x8(%rbp)
  je     L47
  cmpl   $0x1,-0x8(%rbp)
  je     L187
  jmp    L301
L47:
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin2pi0_lo@plt>
  movq   %xmm0,%rax
  jmp    L0
L187:
  pxor   %xmm0,%xmm0
  comisd -0x10(%rbp),%xmm0
  jbe    L152
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos2pi0_lo@plt>
  movq   %xmm0,%rax
  jmp    L0
L152:
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos2pi0_hi@plt>
  movq   %xmm0,%rax
  jmp    L0
L182:
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin2pi0_lo@plt>
  movq   %xmm0,%rax
  movq   D5(%rip),%xmm0
  movq   %rax,%xmm4
  xorpd  %xmm0,%xmm4
  movq   %xmm4,%rax
  jmp    L0
L263:
  pxor   %xmm0,%xmm0
  comisd -0x10(%rbp),%xmm0
  jbe    L261
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos2pi0_lo@plt>
  movq   %xmm0,%rax
  movq   D5(%rip),%xmm0
  movq   %rax,%xmm5
  xorpd  %xmm0,%xmm5
  movq   %xmm5,%rax
  jmp    L0
L261:
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos2pi0_hi@plt>
  movq   %xmm0,%rax
  movq   D5(%rip),%xmm0
  movq   %rax,%xmm6
  xorpd  %xmm0,%xmm6
  movq   %xmm6,%rax
  jmp    L0
L301:
  mov    D37(%rip),%rax
L0:
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D5
type_infered: byte[8]
name: disassemble_data
arguments: tag: D37
type_infered: byte[8]

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

tool: {"D37": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

assistant: ```c
double eval_sin2pi(int hilo, int j, double x) {
  if (hilo == 1) {
    switch (j) {
    case 0:
      return (sin2pi0_hi(x));
    case 1:
      if (x < 0)
        return (cos2pi0_hi(x));
      else
        return (cos2pi0_lo(x));
    case 2:
      return (-sin2pi0_hi(x));
    case 3:
      if (x < 0)
        return (-cos2pi0_hi(x));
      else
        return (-cos2pi0_lo(x));
    }
  } else {
    switch (j) {
    case 0:
      return (sin2pi0_lo(x));
    case 1:
      if (x < 0)
        return (cos2pi0_lo(x));
      else
        return (cos2pi0_hi(x));
    case 2:
      return (-sin2pi0_lo(x));
    case 3:
      if (x < 0)
        return (-cos2pi0_lo(x));
      else
        return (-cos2pi0_hi(x));
    }
  }
  return 0;
}
```