user: Please show me the C implementation that matches the assembly code listed below:

```asm
<xatan>:
  endbr64
  movapd %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  xor    %eax,%eax
  comisd %xmm1,%xmm0
  jbe    L30
  xorpd  D226(%rip),%xmm1
  mov    $0x2,%eax
L30:
  movsd  D134(%rip),%xmm0
  xor    %edx,%edx
  comisd %xmm0,%xmm1
  jbe    L25
  divsd  %xmm1,%xmm0
  mov    $0x1,%edx
  movapd %xmm0,%xmm1
L25:
  movapd %xmm1,%xmm2
  movsd  D98(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  mulsd  %xmm2,%xmm0
  addsd  D0(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D144(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D166(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D167(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D199(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D75(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D178(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D119(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D71(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D96(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D158(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D63(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D162(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D30(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D124(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D64(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D156(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D145(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  addsd  %xmm1,%xmm0
  test   %edx,%edx
  je     L0
  movsd  D35(%rip),%xmm1
  subsd  %xmm0,%xmm1
  movapd %xmm1,%xmm0
L0:
  test   %eax,%eax
  je     L3
  xorpd  D226(%rip),%xmm0
L3:
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D226
type: byte[16]
name: parse_data
arguments: data_tag: D134
type: f64
name: parse_data
arguments: data_tag: D98
type: byte[8]
name: parse_data
arguments: data_tag: D0
type: f64
name: parse_data
arguments: data_tag: D144
type: f64
name: parse_data
arguments: data_tag: D166
type: f64
name: parse_data
arguments: data_tag: D167
type: f64
name: parse_data
arguments: data_tag: D199
type: f64
name: parse_data
arguments: data_tag: D75
type: f64
name: parse_data
arguments: data_tag: D178
type: f64
name: parse_data
arguments: data_tag: D119
type: f64
name: parse_data
arguments: data_tag: D71
type: f64
name: parse_data
arguments: data_tag: D96
type: f64
name: parse_data
arguments: data_tag: D158
type: f64
name: parse_data
arguments: data_tag: D63
type: f64
name: parse_data
arguments: data_tag: D162
type: f64
name: parse_data
arguments: data_tag: D30
type: f64
name: parse_data
arguments: data_tag: D124
type: f64
name: parse_data
arguments: data_tag: D64
type: f64
name: parse_data
arguments: data_tag: D156
type: f64
name: parse_data
arguments: data_tag: D145
type: f64
name: parse_data
arguments: data_tag: D35
type: f64

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

tool: D134: 1

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

tool: D0: 0.00020985007664581698

tool: D144: 0.0011061183148667248

tool: D166: 0.003700267441887131

tool: D167: 0.008898961958876555

tool: D199: 0.016599329773529202

tool: D75: 0.025451762493231264

tool: D178: 0.03378525800013531

tool: D119: 0.04076291912768365

tool: D71: 0.04666671500778406

tool: D96: 0.052367485230348246

tool: D158: 0.05876663929266736

tool: D63: 0.06665735793610805

tool: D162: 0.07692195383117696

tool: D30: 0.09090899500824501

tool: D124: 0.11111110564826142

tool: D64: 0.1428571426677133

tool: D156: 0.19999999999659127

tool: D145: 0.3333333333333111

tool: D35: 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;
}
```