user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<atan2k>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  pxor   %xmm2,%xmm2
  mov    $0x0,%ebp
  comisd %xmm1,%xmm2
  ja     L7
L20:
  comisd %xmm1,%xmm0
  jbe    L11
  movapd %xmm1,%xmm2
  xorpd  D198(%rip),%xmm2
  add    $0x1,%ebp
  movapd %xmm0,%xmm1
  movapd %xmm2,%xmm0
L11:
  divsd  %xmm1,%xmm0
  movapd %xmm0,%xmm3
  movsd  %xmm0,0x18(%rsp)
  mulsd  %xmm0,%xmm3
  movapd %xmm3,%xmm4
  mulsd  %xmm3,%xmm4
  movapd %xmm4,%xmm5
  movsd  %xmm4,0x8(%rsp)
  mulsd  %xmm4,%xmm5
  movapd %xmm5,%xmm6
  movsd  %xmm5,0x10(%rsp)
  mulsd  %xmm5,%xmm6
  movapd %xmm6,%xmm7
  movsd  %xmm6,0x20(%rsp)
  mulsd  %xmm6,%xmm7
  movsd  %xmm7,0x28(%rsp)
  movsd  D36(%rip),%xmm2
  movsd  D143(%rip),%xmm1
  movsd  %xmm3,(%rsp)
  movapd %xmm3,%xmm0
  call   <mla@plt>
  movq   %xmm0,%rbx
  movsd  D19(%rip),%xmm2
  movsd  D158(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <mla@plt>
  movapd %xmm0,%xmm1
  movq   %rbx,%xmm2
  movsd  0x8(%rsp),%xmm0
  call   <mla@plt>
  movq   %xmm0,%rbx
  movsd  D127(%rip),%xmm2
  movsd  D87(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <mla@plt>
  movq   %xmm0,%r12
  movsd  D27(%rip),%xmm2
  movsd  D188(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <mla@plt>
  movapd %xmm0,%xmm1
  movq   %r12,%xmm2
  movsd  0x8(%rsp),%xmm0
  call   <mla@plt>
  movapd %xmm0,%xmm1
  movq   %rbx,%xmm2
  movsd  0x10(%rsp),%xmm0
  call   <mla@plt>
  movq   %xmm0,%rbx
  movsd  D193(%rip),%xmm2
  movsd  D217(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <mla@plt>
  movq   %xmm0,%r12
  movsd  D24(%rip),%xmm2
  movsd  D81(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <mla@plt>
  movapd %xmm0,%xmm1
  movq   %r12,%xmm2
  movsd  0x8(%rsp),%xmm0
  call   <mla@plt>
  movq   %xmm0,%r12
  movsd  D209(%rip),%xmm2
  movsd  D160(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <mla@plt>
  movq   %xmm0,%r13
  movsd  D135(%rip),%xmm2
  movsd  D44(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <mla@plt>
  movapd %xmm0,%xmm1
  movq   %r13,%xmm2
  movsd  0x8(%rsp),%xmm0
  call   <mla@plt>
  movapd %xmm0,%xmm1
  movq   %r12,%xmm2
  movsd  0x10(%rsp),%xmm0
  call   <mla@plt>
  movapd %xmm0,%xmm1
  movq   %rbx,%xmm2
  movsd  0x20(%rsp),%xmm0
  call   <mla@plt>
  movq   %xmm0,%rbx
  movsd  D128(%rip),%xmm2
  movsd  D34(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <mla@plt>
  movapd %xmm0,%xmm2
  movsd  D17(%rip),%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <mla@plt>
  movapd %xmm0,%xmm1
  movq   %rbx,%xmm2
  movsd  0x28(%rsp),%xmm0
  call   <mla@plt>
  movsd  (%rsp),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  0x18(%rsp),%xmm3
  mulsd  %xmm3,%xmm1
  addsd  %xmm3,%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sd %ebp,%xmm0
  mulsd  D103(%rip),%xmm0
  addsd  %xmm1,%xmm0
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L7:
  xorpd  D198(%rip),%xmm1
  mov    $0xfffffffe,%ebp
  jmp    L20
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D198
data_type: byte[16]
name: extract_symbolic_data
arguments: data_tag: D36
data_type: byte[8]
name: extract_symbolic_data
arguments: data_tag: D143
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D19
data_type: byte[8]
name: extract_symbolic_data
arguments: data_tag: D158
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D127
data_type: byte[8]
name: extract_symbolic_data
arguments: data_tag: D87
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D27
data_type: byte[8]
name: extract_symbolic_data
arguments: data_tag: D188
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D193
data_type: byte[8]
name: extract_symbolic_data
arguments: data_tag: D217
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D24
data_type: byte[8]
name: extract_symbolic_data
arguments: data_tag: D81
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D209
data_type: byte[8]
name: extract_symbolic_data
arguments: data_tag: D160
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D135
data_type: byte[8]
name: extract_symbolic_data
arguments: data_tag: D44
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D128
data_type: byte[8]
name: extract_symbolic_data
arguments: data_tag: D34
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D17
data_type: byte[8]
name: extract_symbolic_data
arguments: data_tag: D103
data_type: byte[8]

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

tool: {"D36": [0xc5,0x53,0x55,0x55,0x55,0x55,0xd5,0xbf]}

tool: D143: 0.19999999999659127

tool: {"D19": [0xbb,0x00,0xe1,0x91,0x24,0x49,0xc2,0xbf]}

tool: D158: 0.11111110564826142

tool: {"D127": [0xe8,0xfe,0x78,0xd8,0xcf,0x45,0xb7,0xbf]}

tool: D87: 0.07692195383117696

tool: {"D27": [0xe0,0x93,0x5f,0xe4,0x74,0x10,0xb1,0xbf]}

tool: D188: 0.05876663929266736

tool: {"D193": [0xca,0x4f,0xe0,0x38,0xe9,0xcf,0xaa,0xbf]}

tool: D217: 0.04666671500778406

tool: {"D24": [0x38,0xf6,0x15,0x99,0xe0,0xde,0xa4,0xbf]}

tool: D81: 0.03378525800013531

tool: {"D209": [0xac,0xcd,0x22,0xde,0x06,0x10,0x9a,0xbf]}

tool: D160: 0.016599329773529202

tool: {"D135": [0x56,0x5e,0xa7,0x74,0x9e,0x39,0x82,0xbf]}

tool: D44: 0.003700267441887131

tool: {"D128": [0xda,0x15,0x39,0x7f,0x65,0x1f,0x52,0xbf]}

tool: D34: 0.00020985007664581698

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

tool: {"D103": [0x18,0x2d,0x44,0x54,0xfb,0x21,0xf9,0x3f]}

assistant: ```c
__attribute__((always_)) const double atan2k(double y, double x) {
  double s, t, u;
  int q = 0;
  if (x < 0) {
    x = -x;
    q = -2;
  }
  if (y > x) {
    t = x;
    x = y;
    y = -t;
    q += 1;
  }
  s = y / x;
  t = s * s;
  double t2 = t * t, t4 = t2 * t2, t8 = t4 * t4, t16 = t8 * t8;
  u = mla(t16, mla(t2, (-1.88796008463073496563746e-05), mla(t, (0.000209850076645816976906797), (-0.00110611831486672482563471))), mla(t8, mla(t4, mla(t2, mla(t, (0.00370026744188713119232403), (-0.00889896195887655491740809)), mla(t, (0.016599329773529201970117), (-0.0254517624932312641616861))), mla(t2, mla(t, (0.0337852580001353069993897), (-0.0407629191276836500001934)), mla(t, (0.0466667150077840625632675), (-0.0523674852303482457616113)))), mla(t4, mla(t2, mla(t, (0.0587666392926673580854313), (-0.0666573579361080525984562)), mla(t, (0.0769219538311769618355029), (-0.090908995008245008229153))), mla(t2, mla(t, (0.111111105648261418443745), (-0.14285714266771329383765)), mla(t, (0.199999999996591265594148), (-0.333333333333311110369124))))));
  t = u * t * s + s;
  t = q * (3.141592653589793238462643383279502884 / 2) + t;
  return t;
}
```