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

```asm
<xatan>:
  endbr64
  movapd %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  xor    %eax,%eax
  comisd %xmm1,%xmm0
  jbe    L14
  xorpd  D55(%rip),%xmm1
  mov    $0x2,%eax
L14:
  movsd  D194(%rip),%xmm0
  mov    %eax,%edx
  and    $0x1,%edx
  comisd %xmm0,%xmm1
  jbe    L27
  divsd  %xmm1,%xmm0
  mov    $0x1,%edx
  movapd %xmm0,%xmm1
L27:
  movapd %xmm1,%xmm2
  movsd  D190(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  mulsd  %xmm2,%xmm0
  addsd  D6(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D57(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D72(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D205(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D87(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D35(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D204(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D70(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D200(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D226(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D116(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D4(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D17(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D152(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D125(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D29(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D91(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D135(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  addsd  %xmm1,%xmm0
  test   %edx,%edx
  je     L28
  movsd  D129(%rip),%xmm1
  subsd  %xmm0,%xmm1
  movapd %xmm1,%xmm0
L28:
  test   %eax,%eax
  je     L23
  xorpd  D55(%rip),%xmm0
L23:
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D55
type_infered: byte[16]
name: disassemble_data
arguments: tag: D194
type_infered: f64
name: disassemble_data
arguments: tag: D190
type_infered: byte[8]
name: disassemble_data
arguments: tag: D6
type_infered: f64
name: disassemble_data
arguments: tag: D57
type_infered: f64
name: disassemble_data
arguments: tag: D72
type_infered: f64
name: disassemble_data
arguments: tag: D205
type_infered: f64
name: disassemble_data
arguments: tag: D87
type_infered: f64
name: disassemble_data
arguments: tag: D35
type_infered: f64
name: disassemble_data
arguments: tag: D204
type_infered: f64
name: disassemble_data
arguments: tag: D70
type_infered: f64
name: disassemble_data
arguments: tag: D200
type_infered: f64
name: disassemble_data
arguments: tag: D226
type_infered: f64
name: disassemble_data
arguments: tag: D116
type_infered: f64
name: disassemble_data
arguments: tag: D4
type_infered: f64
name: disassemble_data
arguments: tag: D17
type_infered: f64
name: disassemble_data
arguments: tag: D152
type_infered: f64
name: disassemble_data
arguments: tag: D125
type_infered: f64
name: disassemble_data
arguments: tag: D29
type_infered: f64
name: disassemble_data
arguments: tag: D91
type_infered: f64
name: disassemble_data
arguments: tag: D135
type_infered: f64
name: disassemble_data
arguments: tag: D129
type_infered: f64

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

tool: D194: 1

tool: {"D190": [0x5f,0x55,0x88,0x4a,0xf4,0xcb,0xf3,0xbe]}

tool: D6: 0.00020985007664581698

tool: D57: 0.0011061183148667248

tool: D72: 0.003700267441887131

tool: D205: 0.008898961958876555

tool: D87: 0.016599329773529202

tool: D35: 0.025451762493231264

tool: D204: 0.03378525800013531

tool: D70: 0.04076291912768365

tool: D200: 0.04666671500778406

tool: D226: 0.052367485230348246

tool: D116: 0.05876663929266736

tool: D4: 0.06665735793610805

tool: D17: 0.07692195383117696

tool: D152: 0.09090899500824501

tool: D125: 0.11111110564826142

tool: D29: 0.1428571426677133

tool: D91: 0.19999999999659127

tool: D135: 0.3333333333333111

tool: D129: 1.5707963267948966

assistant: ```c
double xatan(double s) {
  double t, u;
  int q = 0;
  if (s < 0) {
    s = -s;
    q = 2;
  }
  if (s > 1) {
    s = 1.0 / s;
    q |= 1;
  }
  t = s * s;
  u = -1.88796008463073496563746e-05;
  u = u * t + (0.000209850076645816976906797);
  u = u * t + (-0.00110611831486672482563471);
  u = u * t + (0.00370026744188713119232403);
  u = u * t + (-0.00889896195887655491740809);
  u = u * t + (0.016599329773529201970117);
  u = u * t + (-0.0254517624932312641616861);
  u = u * t + (0.0337852580001353069993897);
  u = u * t + (-0.0407629191276836500001934);
  u = u * t + (0.0466667150077840625632675);
  u = u * t + (-0.0523674852303482457616113);
  u = u * t + (0.0587666392926673580854313);
  u = u * t + (-0.0666573579361080525984562);
  u = u * t + (0.0769219538311769618355029);
  u = u * t + (-0.090908995008245008229153);
  u = u * t + (0.111111105648261418443745);
  u = u * t + (-0.14285714266771329383765);
  u = u * t + (0.199999999996591265594148);
  u = u * t + (-0.333333333333311110369124);
  t = s + s * (t * u);
  if ((q & 1) != 0)
    t = 1.570796326794896557998982 - t;
  if ((q & 2) != 0)
    t = -t;
  return t;
}
```