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

```asm
<fa_fast_cos>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  movss  %xmm0,-0x14(%rbp)
  pxor   %xmm1,%xmm1
  cvtss2sd -0x14(%rbp),%xmm1
  movsd  D14(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x14(%rbp)
  movsd  D14(%rip),%xmm0
  mov    -0x14(%rbp),%eax
  movapd %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <fmod@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x14(%rbp)
  pxor   %xmm1,%xmm1
  cvtss2sd -0x14(%rbp),%xmm1
  movsd  D40(%rip),%xmm0
  comisd %xmm1,%xmm0
  jb     L67
  pxor   %xmm1,%xmm1
  cvtss2sd -0x14(%rbp),%xmm1
  movsd  D40(%rip),%xmm0
  subsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0xc(%rbp)
  pxor   %xmm1,%xmm1
  cvtss2sd -0x14(%rbp),%xmm1
  movsd  D88(%rip),%xmm0
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jb     L71
  mov    $0x1,%eax
  jmp    L33
L71:
  mov    $0xffffffff,%eax
L33:
  mov    %eax,-0x10(%rbp)
  movss  -0x14(%rbp),%xmm0
  comiss -0xc(%rbp),%xmm0
  jbe    L11
  movss  -0xc(%rbp),%xmm0
  jmp    L36
L11:
  movss  -0x14(%rbp),%xmm0
L36:
  movss  %xmm0,-0x14(%rbp)
  jmp    L81
L67:
  pxor   %xmm0,%xmm0
  cvtss2sd -0x14(%rbp),%xmm0
  movsd  D40(%rip),%xmm1
  subsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x14(%rbp)
  pxor   %xmm1,%xmm1
  cvtss2sd -0x14(%rbp),%xmm1
  movsd  D40(%rip),%xmm0
  subsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0xc(%rbp)
  pxor   %xmm0,%xmm0
  cvtss2sd -0x14(%rbp),%xmm0
  movsd  D88(%rip),%xmm1
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jb     L2
  mov    $0x1,%eax
  jmp    L56
L2:
  mov    $0xffffffff,%eax
L56:
  mov    %eax,-0x10(%rbp)
  movss  -0x14(%rbp),%xmm0
  comiss -0xc(%rbp),%xmm0
  jbe    L37
  movss  -0xc(%rbp),%xmm0
  jmp    L7
L37:
  movss  -0x14(%rbp),%xmm0
L7:
  movss  %xmm0,-0x14(%rbp)
L81:
  movss  -0x14(%rbp),%xmm0
  mulss  %xmm0,%xmm0
  movss  %xmm0,-0x8(%rbp)
  movss  D72(%rip),%xmm0
  movss  %xmm0,-0x4(%rbp)
  movss  -0x4(%rbp),%xmm0
  mulss  -0x8(%rbp),%xmm0
  movss  %xmm0,-0x4(%rbp)
  movss  -0x4(%rbp),%xmm0
  movss  D103(%rip),%xmm1
  subss  %xmm1,%xmm0
  movss  %xmm0,-0x4(%rbp)
  movss  -0x4(%rbp),%xmm0
  mulss  -0x8(%rbp),%xmm0
  movss  %xmm0,-0x4(%rbp)
  movss  -0x4(%rbp),%xmm1
  movss  D32(%rip),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x4(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x10(%rbp),%xmm0
  mulss  -0x4(%rbp),%xmm0
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D14
datatype: f64
name: parse_data
arguments: data_tag: D40
datatype: f64
name: parse_data
arguments: data_tag: D88
datatype: f64
name: parse_data
arguments: data_tag: D72
datatype: byte[4]
name: parse_data
arguments: data_tag: D103
datatype: byte[4]
name: parse_data
arguments: data_tag: D32
datatype: byte[4]

tool: D14: 6.283185307179586

tool: D40: 3.141592653589793

tool: D88: 1.5707963267948966

tool: {"D72": [0xbe,0xc1,0x17,0x3d]}

tool: {"D103": [0x76,0x4f,0xfe,0x3e]}

tool: {"D32": [0x00,0x00,0x80,0x3f]}

assistant: ```c
float fa_fast_cos(float angle) {
  float real_angle;
  float square, result;
  int sign;
  angle = angle + 6.28318530717958647692;
  angle = fmod(angle, 6.28318530717958647692);
  if (angle <= 3.14159265358979323846) {
    real_angle = 3.14159265358979323846 - angle;
    sign = ((1.57079632679489661923 - angle) >= 0 ? 1 : -1);
    angle = ((real_angle) < (angle) ? (real_angle) : (angle));
  } else {
    angle = angle - 3.14159265358979323846;
    real_angle = 3.14159265358979323846 - angle;
    sign = ((angle - 1.57079632679489661923) >= 0 ? 1 : -1);
    angle = ((real_angle) < (angle) ? (real_angle) : (angle));
  }
  square = angle * angle;
  result = 3.705e-02f;
  result *= square;
  result -= 4.967e-01f;
  result *= square;
  result += 1.0f;
  return result * sign;
}
```