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

```asm
<sincosf>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  movss  %xmm0,-0x24(%rbp)
  mov    %edi,-0x28(%rbp)
  cmpl   $0x0,-0x28(%rbp)
  je     L77
  mov    -0x24(%rbp),%eax
  movd   %eax,%xmm0
  call   <fabsf@plt>
  movsd  D109(%rip),%xmm1
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x18(%rbp)
  movb   $0x0,-0x19(%rbp)
  jmp    L66
L77:
  pxor   %xmm0,%xmm0
  comiss -0x24(%rbp),%xmm0
  jbe    L19
  movss  -0x24(%rbp),%xmm0
  movss  D49(%rip),%xmm1
  xorps  %xmm1,%xmm0
  movss  %xmm0,-0x18(%rbp)
  movb   $0x1,-0x19(%rbp)
  jmp    L66
L19:
  movss  -0x24(%rbp),%xmm0
  movss  %xmm0,-0x18(%rbp)
  movb   $0x0,-0x19(%rbp)
L66:
  movss  -0x18(%rbp),%xmm0
  comiss D56(%rip),%xmm0
  jbe    L73
  pxor   %xmm0,%xmm0
  jmp    L53
L73:
  pxor   %xmm1,%xmm1
  cvtss2sd -0x18(%rbp),%xmm1
  movsd  D0(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D122(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L99
  cmpb   $0x0,-0x19(%rbp)
  sete   %al
  mov    %al,-0x19(%rbp)
L99:
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0xc(%rbp),%xmm0
  movss  %xmm0,-0x10(%rbp)
  cmpl   $0x0,-0x28(%rbp)
  je     L28
  movss  -0x10(%rbp),%xmm0
  movss  D80(%rip),%xmm1
  subss  %xmm1,%xmm0
  movss  %xmm0,-0x10(%rbp)
L28:
  mov    -0x24(%rbp),%eax
  movd   %eax,%xmm0
  call   <fabsf@plt>
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x18(%rbp)
  movss  -0x18(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,-0x8(%rbp)
  movss  -0x18(%rbp),%xmm0
  subss  -0x8(%rbp),%xmm0
  movss  %xmm0,-0x4(%rbp)
  pxor   %xmm0,%xmm0
  cvtss2sd -0x8(%rbp),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd -0x10(%rbp),%xmm2
  movsd  D54(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x4(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd -0x10(%rbp),%xmm2
  movsd  D21(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x14(%rbp)
  movss  -0x14(%rbp),%xmm0
  mulss  %xmm0,%xmm0
  movss  %xmm0,-0x4(%rbp)
  pxor   %xmm0,%xmm0
  cvtss2sd -0x4(%rbp),%xmm0
  comisd D105(%rip),%xmm0
  jbe    L97
  pxor   %xmm1,%xmm1
  cvtss2sd -0x4(%rbp),%xmm1
  movsd  D6(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D76(%rip),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x4(%rbp),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D70(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x4(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D129(%rip),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x4(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x8(%rbp)
  movss  -0x14(%rbp),%xmm0
  mulss  -0x8(%rbp),%xmm0
  movss  -0x14(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x14(%rbp)
L97:
  cmpb   $0x0,-0x19(%rbp)
  je     L39
  movss  -0x14(%rbp),%xmm0
  movss  D49(%rip),%xmm1
  xorps  %xmm1,%xmm0
  jmp    L53
L39:
  movss  -0x14(%rbp),%xmm0
L53:
  leave
  ret
```

tool_calls: name: read_data
arguments: label: D109
type: f64
name: read_data
arguments: label: D49
type: byte[4]
name: read_data
arguments: label: D56
type: f32
name: read_data
arguments: label: D0
type: f64
name: read_data
arguments: label: D122
type: f64
name: read_data
arguments: label: D80
type: byte[4]
name: read_data
arguments: label: D54
type: f64
name: read_data
arguments: label: D21
type: byte[8]
name: read_data
arguments: label: D105
type: byte[16]
name: read_data
arguments: label: D6
type: byte[8]
name: read_data
arguments: label: D76
type: byte[8]
name: read_data
arguments: label: D70
type: byte[8]
name: read_data
arguments: label: D129
type: byte[8]

tool: D109: 1.5707963268

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

tool: D56: 12867

tool: D0: 0.3183098862

tool: D122: 0.5

tool: {"D80": [0x00,0x00,0x00,0x3f]}

tool: D54: 3.140625

tool: {"D21": [0x25,0x65,0xc4,0x42,0x44,0xb5,0x4f,0x3f]}

tool: {"D105": [0x82,0xfa,0xb2,0x6c,0xfe,0xff,0x6f,0x3e,0xf2,0x11,0x3b,0x52,0x8b,0xd3,0xc5,0x3e]}

tool: {"D6": [0xf2,0x11,0x3b,0x52,0x8b,0xd3,0xc5,0x3e]}

tool: {"D76": [0x49,0x34,0xfa,0x4f,0x44,0xf6,0x29,0x3f]}

tool: {"D70": [0xb0,0x0a,0x97,0xb3,0xe7,0x10,0x81,0x3f]}

tool: {"D129": [0x7f,0x0d,0xdf,0x7e,0x54,0x55,0xc5,0x3f]}

assistant: ```c
float sincosf(float x, int iscos) {
  float y, f, r, g, XN;
  int N;
  char sign;
  if (iscos) {
    y = fabsf(x) + 1.5707963268;
    sign = 0;
  } else {
    if (x < 0.0) {
      y = -x;
      sign = 1;
    } else {
      y = x;
      sign = 0;
    }
  }
  if (y > 12867.0) {
    return 0.0;
  }
  N = ((y * 0.3183098862) + 0.5);
  if (N & 1)
    sign = !sign;
  XN = N;
  if (iscos)
    XN -= 0.5;
  y = fabsf(x);
  r = (int)y;
  g = y - r;
  f = ((r - XN * 3.140625) + g) - XN * 9.676535897E-4;
  g = f * f;
  if (g > 59.6046E-9) {
    r = ((((0.2601903036E-5) * g + (-0.1980741872E-3)) * g + (0.8333025139E-2)) * g + (-0.1666665668E+0)) * g;
    f += f * r;
  }
  return (sign ? -f : f);
}
```