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

```asm
<FP_Atan>:
  endbr64
  push   %rbx
  sub    $0x10,%rsp
  pxor   %xmm1,%xmm1
  movss  %xmm0,0x4(%rsp)
  call   <FP_Cmp@plt>
  test   %rax,%rax
  js     L83
  movss  D30(%rip),%xmm1
  movss  0x4(%rsp),%xmm0
  call   <FP_Cmp@plt>
  test   %rax,%rax
  jg     L69
L41:
  movss  D148(%rip),%xmm1
  movss  0x4(%rsp),%xmm0
  call   <FP_Cmp@plt>
  test   %rax,%rax
  jg     L52
  movss  D125(%rip),%xmm1
  movss  0x4(%rsp),%xmm0
  call   <FP_Cmp@plt>
  test   %rax,%rax
  js     L19
  movss  0x4(%rsp),%xmm0
  call   <__negsf2@plt>
  movss  0x4(%rsp),%xmm1
  call   <__mulsf3@plt>
  movss  %xmm0,0xc(%rsp)
  movss  0x4(%rsp),%xmm2
  movss  %xmm2,0x8(%rsp)
  mov    $0x3,%ebx
L25:
  movss  0xc(%rsp),%xmm1
  movss  0x4(%rsp),%xmm0
  call   <__mulsf3@plt>
  movss  %xmm0,0x4(%rsp)
  mov    %ebx,%edi
  call   <__floatsisf@plt>
  movaps %xmm0,%xmm1
  movss  0x4(%rsp),%xmm0
  call   <__divsf3@plt>
  movaps %xmm0,%xmm1
  movss  0x8(%rsp),%xmm0
  call   <__addsf3@plt>
  movss  %xmm0,0x8(%rsp)
  add    $0x2,%ebx
  cmp    $0xf,%ebx
  jne    L25
  jmp    L70
L69:
  movss  0x4(%rsp),%xmm1
  movss  D30(%rip),%xmm0
  call   <__divsf3@plt>
  call   <FP_Atan>
  movaps %xmm0,%xmm1
  movss  D104(%rip),%xmm0
  call   <__subsf3@plt>
  movss  %xmm0,0x8(%rsp)
  jmp    L70
L83:
  movss  D118(%rip),%xmm1
  movss  0x4(%rsp),%xmm0
  call   <FP_Cmp@plt>
  test   %rax,%rax
  jle    L41
  movss  0x4(%rsp),%xmm1
  movss  D30(%rip),%xmm0
  call   <__divsf3@plt>
  call   <FP_Atan>
  movaps %xmm0,%xmm1
  movss  D74(%rip),%xmm0
  call   <__subsf3@plt>
  movss  %xmm0,0x8(%rsp)
  jmp    L70
L52:
  movss  D147(%rip),%xmm1
  movss  0x4(%rsp),%xmm0
  call   <__mulsf3@plt>
  movaps %xmm0,%xmm1
  movss  D30(%rip),%xmm0
  call   <__addsf3@plt>
  movss  %xmm0,0x8(%rsp)
  movss  D147(%rip),%xmm1
  movss  0x4(%rsp),%xmm0
  call   <__subsf3@plt>
  movss  0x8(%rsp),%xmm1
  call   <__divsf3@plt>
  call   <FP_Atan>
  movaps %xmm0,%xmm1
  movss  D5(%rip),%xmm0
  call   <__addsf3@plt>
  movss  D122(%rip),%xmm1
  call   <__subsf3@plt>
  movss  %xmm0,0x8(%rsp)
L70:
  movss  0x8(%rsp),%xmm0
  add    $0x10,%rsp
  pop    %rbx
  ret
L19:
  movss  0x4(%rsp),%xmm0
  call   <__negsf2@plt>
  movss  D147(%rip),%xmm1
  movss  %xmm0,0x8(%rsp)
  call   <__mulsf3@plt>
  movaps %xmm0,%xmm1
  movss  D30(%rip),%xmm0
  call   <__addsf3@plt>
  movss  %xmm0,0x4(%rsp)
  movss  D147(%rip),%xmm1
  movss  0x8(%rsp),%xmm0
  call   <__subsf3@plt>
  movss  0x4(%rsp),%xmm1
  call   <__divsf3@plt>
  call   <FP_Atan>
  movaps %xmm0,%xmm1
  movss  D5(%rip),%xmm0
  call   <__addsf3@plt>
  movss  D122(%rip),%xmm1
  call   <__subsf3@plt>
  call   <__negsf2@plt>
  movss  %xmm0,0x8(%rsp)
  jmp    L70
```

tool_calls: name: extract_symbolic_data
arguments: tag: D30
data_type: f32
name: extract_symbolic_data
arguments: tag: D148
data_type: f32
name: extract_symbolic_data
arguments: tag: D125
data_type: byte[4]
name: extract_symbolic_data
arguments: tag: D104
data_type: byte[4]
name: extract_symbolic_data
arguments: tag: D118
data_type: byte[4]
name: extract_symbolic_data
arguments: tag: D74
data_type: byte[4]
name: extract_symbolic_data
arguments: tag: D147
data_type: f32
name: extract_symbolic_data
arguments: tag: D5
data_type: byte[4]
name: extract_symbolic_data
arguments: tag: D122
data_type: f32

tool: D30: 1

tool: D148: 0.45

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

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

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

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

tool: D147: 0.37419668

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

tool: D122: 0.034633

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;
}
```