user: Demonstrate the C code that generates the assembly output below:

```asm
<FP_Atan>:
  endbr64
  push   %r14
  pxor   %xmm1,%xmm1
  push   %rbx
  sub    $0x18,%rsp
  movss  %xmm0,0x8(%rsp)
  call   <FP_Cmp@plt>
  movss  0x8(%rsp),%xmm2
  test   %rax,%rax
  js     L20
  movss  D165(%rip),%xmm1
  movaps %xmm2,%xmm0
  call   <FP_Cmp@plt>
  movss  0x8(%rsp),%xmm2
  test   %rax,%rax
  jg     L25
L43:
  movss  D48(%rip),%xmm1
  movaps %xmm2,%xmm0
  movss  %xmm2,0x8(%rsp)
  call   <FP_Cmp@plt>
  movss  0x8(%rsp),%xmm2
  test   %rax,%rax
  jg     L19
  movss  D146(%rip),%xmm1
  movaps %xmm2,%xmm0
  movss  %xmm2,0x8(%rsp)
  call   <FP_Cmp@plt>
  movss  0x8(%rsp),%xmm2
  test   %rax,%rax
  movaps %xmm2,%xmm0
  js     L12
  movss  %xmm2,0x8(%rsp)
  mov    $0x3,%ebx
  call   <__negsf2@plt>
  movss  0x8(%rsp),%xmm2
  movaps %xmm2,%xmm1
  call   <__mulsf3@plt>
  movss  0x8(%rsp),%xmm2
  movd   %xmm0,%r14d
  movaps %xmm2,%xmm3
  nopl   0x0(%rax)
L21:
  movd   %r14d,%xmm1
  movaps %xmm2,%xmm0
  movss  %xmm3,0xc(%rsp)
  call   <__mulsf3@plt>
  mov    %ebx,%edi
  add    $0x2,%ebx
  movss  %xmm0,0x8(%rsp)
  call   <__floatsisf@plt>
  movss  0x8(%rsp),%xmm2
  movaps %xmm0,%xmm1
  movaps %xmm2,%xmm0
  call   <__divsf3@plt>
  movss  0xc(%rsp),%xmm3
  movaps %xmm0,%xmm1
  movaps %xmm3,%xmm0
  call   <__addsf3@plt>
  cmp    $0xf,%ebx
  movss  0x8(%rsp),%xmm2
  movaps %xmm0,%xmm3
  jne    L21
  add    $0x18,%rsp
  pop    %rbx
  pop    %r14
  ret
  nopl   0x0(%rax,%rax,1)
L19:
  movss  D74(%rip),%xmm1
  movaps %xmm2,%xmm0
  movss  %xmm2,0xc(%rsp)
  call   <__mulsf3@plt>
  movaps %xmm0,%xmm1
  movss  D165(%rip),%xmm0
  call   <__addsf3@plt>
  movss  0xc(%rsp),%xmm2
  movss  D74(%rip),%xmm1
  movss  %xmm0,0x8(%rsp)
  movaps %xmm2,%xmm0
  call   <__subsf3@plt>
  movss  0x8(%rsp),%xmm3
  movaps %xmm3,%xmm1
  call   <__divsf3@plt>
  call   <FP_Atan>
  movaps %xmm0,%xmm1
  movss  D151(%rip),%xmm0
  call   <__addsf3@plt>
  movss  D62(%rip),%xmm1
  add    $0x18,%rsp
  pop    %rbx
  pop    %r14
  jmp    10c0 <__subsf3@plt>
  nopl   0x0(%rax)
L20:
  movss  D64(%rip),%xmm1
  movaps %xmm2,%xmm0
  movss  %xmm2,0x8(%rsp)
  call   <FP_Cmp@plt>
  movss  0x8(%rsp),%xmm2
  test   %rax,%rax
  jle    L43
  movss  D165(%rip),%xmm0
  movaps %xmm2,%xmm1
  call   <__divsf3@plt>
  call   <FP_Atan>
  movaps %xmm0,%xmm1
  movss  D13(%rip),%xmm0
  add    $0x18,%rsp
  pop    %rbx
  pop    %r14
  jmp    10c0 <__subsf3@plt>
  nopl   0x0(%rax)
L25:
  movss  D165(%rip),%xmm0
  movaps %xmm2,%xmm1
  call   <__divsf3@plt>
  call   <FP_Atan>
  movaps %xmm0,%xmm1
  movss  D148(%rip),%xmm0
  add    $0x18,%rsp
  pop    %rbx
  pop    %r14
  jmp    10c0 <__subsf3@plt>
  nopl   0x0(%rax)
L12:
  call   <__negsf2@plt>
  movss  D74(%rip),%xmm1
  movss  %xmm0,0xc(%rsp)
  call   <__mulsf3@plt>
  movaps %xmm0,%xmm1
  movss  D165(%rip),%xmm0
  call   <__addsf3@plt>
  movss  0xc(%rsp),%xmm2
  movss  D74(%rip),%xmm1
  movss  %xmm0,0x8(%rsp)
  movaps %xmm2,%xmm0
  call   <__subsf3@plt>
  movss  0x8(%rsp),%xmm3
  movaps %xmm3,%xmm1
  call   <__divsf3@plt>
  call   <FP_Atan>
  movaps %xmm0,%xmm1
  movss  D151(%rip),%xmm0
  call   <__addsf3@plt>
  movss  D62(%rip),%xmm1
  call   <__subsf3@plt>
  add    $0x18,%rsp
  pop    %rbx
  pop    %r14
  jmp    10e0 <__negsf2@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D165
type: f32
name: extract_symbolic_data
arguments: data_label: D48
type: f32
name: extract_symbolic_data
arguments: data_label: D146
type: byte[4]
name: extract_symbolic_data
arguments: data_label: D74
type: f32
name: extract_symbolic_data
arguments: data_label: D151
type: byte[4]
name: extract_symbolic_data
arguments: data_label: D62
type: f32
name: extract_symbolic_data
arguments: data_label: D64
type: byte[4]
name: extract_symbolic_data
arguments: data_label: D13
type: byte[4]
name: extract_symbolic_data
arguments: data_label: D148
type: byte[4]

tool: D165: 1

tool: D48: 0.45

tool: {"D146": [0x66,0x66,0xe6,0xbe]}

tool: D74: 0.37419668

tool: {"D151": [0xda,0x0f,0xc9,0x3e]}

tool: D62: 0.034633

tool: {"D64": [0x00,0x00,0x80,0xbf]}

tool: {"D13": [0xda,0x0f,0xc9,0xbf]}

tool: {"D148": [0xda,0x0f,0xc9,0x3f]}

assistant: ```c
float FP_Atan(float x) {
  const float b = (float)(((float)3.1415926) / 8.0);
  const float atan_b = (float)0.37419668;
  int n;
  float answer, x2, top;
  if (FP_Cmp(x, (float)0.0) >= 0) {
    if (FP_Cmp(x, (float)1.0) > 0)
      return __subsf3(((float)(((float)3.1415926) / 2.0)), FP_Atan(__divsf3((float)1.0, x)));
  } else {
    if (FP_Cmp(x, (float)-1.0) > 0)
      return __subsf3(-((float)(((float)3.1415926) / 2.0)), FP_Atan(__divsf3((float)1.0, x)));
  }
  if (FP_Cmp(x, (float)0.45) > 0) {
    answer = __divsf3(__subsf3(x, atan_b), __addsf3(1.0, __mulsf3(x, atan_b)));
    answer = __subsf3(__addsf3(b, FP_Atan(answer)), (float)0.034633);
    return answer;
  }
  if (FP_Cmp(x, (float)-0.45) < 0) {
    x = __negsf2(x);
    answer = __divsf3(__subsf3(x, atan_b), __addsf3(1.0, __mulsf3(x, atan_b)));
    answer = __subsf3(__addsf3(b, FP_Atan(answer)), (float)0.034633);
    return __negsf2(answer);
  }
  answer = x;
  x2 = __mulsf3(__negsf2(x), x);
  top = x;
  for (n = 3; n < 14; n += 2) {
    top = __mulsf3(top, x2);
    answer = __addsf3(answer, __divsf3(top, __floatsisf(n)));
  }
  return answer;
}
```