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

```asm
<__kernel_cos>:
  endbr64
  movapd %xmm0,%xmm4
  movq   %xmm0,%rax
  sar    $0x20,%rax
  and    $0x7fffffff,%eax
  cmp    $0x3e3fffff,%eax
  jg     L16
  cvttsd2si %xmm0,%eax
  movsd  D79(%rip),%xmm0
  test   %eax,%eax
  je     L7
  movapd %xmm4,%xmm3
  mulsd  %xmm4,%xmm3
  movapd %xmm3,%xmm2
  mulsd  D175(%rip),%xmm2
  addsd  D160(%rip),%xmm2
  mulsd  %xmm3,%xmm2
  subsd  D45(%rip),%xmm2
  mulsd  %xmm3,%xmm2
  addsd  D161(%rip),%xmm2
  mulsd  %xmm3,%xmm2
  subsd  D128(%rip),%xmm2
  mulsd  %xmm3,%xmm2
  addsd  D138(%rip),%xmm2
  mulsd  %xmm3,%xmm2
L12:
  movapd %xmm3,%xmm0
  mulsd  D75(%rip),%xmm0
  mulsd  %xmm3,%xmm2
  mulsd  %xmm4,%xmm1
  subsd  %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  D79(%rip),%xmm0
  subsd  %xmm1,%xmm0
  ret
L7:
  ret
L16:
  movapd %xmm0,%xmm3
  mulsd  %xmm0,%xmm3
  movapd %xmm3,%xmm2
  mulsd  D175(%rip),%xmm2
  addsd  D160(%rip),%xmm2
  mulsd  %xmm3,%xmm2
  subsd  D45(%rip),%xmm2
  mulsd  %xmm3,%xmm2
  addsd  D161(%rip),%xmm2
  mulsd  %xmm3,%xmm2
  subsd  D128(%rip),%xmm2
  mulsd  %xmm3,%xmm2
  addsd  D138(%rip),%xmm2
  mulsd  %xmm3,%xmm2
  cmp    $0x3fd33332,%eax
  jle    L12
  movsd  D70(%rip),%xmm6
  cmp    $0x3fe90000,%eax
  jg     L22
  lea    -0x200000(%rax),%eax
  shl    $0x20,%rax
  movq   %rax,%xmm6
L22:
  movsd  D79(%rip),%xmm0
  subsd  %xmm6,%xmm0
  movapd %xmm3,%xmm5
  mulsd  D75(%rip),%xmm5
  subsd  %xmm6,%xmm5
  mulsd  %xmm3,%xmm2
  mulsd  %xmm4,%xmm1
  subsd  %xmm1,%xmm2
  subsd  %xmm2,%xmm5
  subsd  %xmm5,%xmm0
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D79
data_type: byte[8]
name: disassemble_data
arguments: data_label: D175
data_type: byte[8]
name: disassemble_data
arguments: data_label: D160
data_type: byte[8]
name: disassemble_data
arguments: data_label: D45
data_type: byte[8]
name: disassemble_data
arguments: data_label: D161
data_type: byte[8]
name: disassemble_data
arguments: data_label: D128
data_type: byte[8]
name: disassemble_data
arguments: data_label: D138
data_type: byte[8]
name: disassemble_data
arguments: data_label: D75
data_type: f64
name: disassemble_data
arguments: data_label: D70
data_type: f64

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

tool: {"D175": [0xd4,0x38,0x88,0xbe,0xe9,0xfa,0xa8,0xbd]}

tool: {"D160": [0xc4,0xb1,0xb4,0xbd,0x9e,0xee,0x21,0x3e]}

tool: {"D45": [0xad,0x52,0x9c,0x80,0x4f,0x7e,0x92,0x3e]}

tool: {"D161": [0x90,0x15,0xcb,0x19,0xa0,0x01,0xfa,0x3e]}

tool: {"D128": [0x77,0x51,0xc1,0x16,0x6c,0xc1,0x56,0x3f]}

tool: {"D138": [0x4c,0x55,0x55,0x55,0x55,0x55,0xa5,0x3f]}

tool: D75: 0.5

tool: D70: 0.28125

assistant: ```c
double __kernel_cos(double x, double y) {
  double a, hz, z, r, qx;
  int ix;
  ix = *(1 + (int *)&x) & 0x7fffffff;
  if (ix < 0x3e400000) {
    if (((int)x) == 0) {
      return 1.00000000000000000000e+00;
    }
  }
  z = x * x;
  r = z * (4.16666666666666019037e-02 + z * (-1.38888888888741095749e-03 + z * (2.48015872894767294178e-05 + z * (-2.75573143513906633035e-07 + z * (2.08757232129817482790e-09 + z * -1.13596475577881948265e-11)))));
  if (ix < 0x3FD33333) {
    return 1.00000000000000000000e+00 - (0.5 * z - (z * r - x * y));
  } else {
    if (ix > 0x3fe90000) {
      qx = 0.28125;
    } else {
      *(1 + (int *)&qx) = ix - 0x00200000;
      *(int *)&qx = 0;
    }
    hz = 0.5 * z - qx;
    a = 1.00000000000000000000e+00 - qx;
    return a - (hz - (z * r - x * y));
  }
}
```