user: Translate the below assembly code into C programming language:

```asm
<atan2k>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r13
  push   %r12
  push   %rbx
  sub    $0x58,%rsp
  movsd  %xmm0,-0x68(%rbp)
  movsd  %xmm1,-0x70(%rbp)
  movl   $0x0,-0x5c(%rbp)
  pxor   %xmm0,%xmm0
  comisd -0x70(%rbp),%xmm0
  jbe    L7
  movsd  -0x70(%rbp),%xmm0
  movq   D195(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movl   $0xfffffffe,-0x5c(%rbp)
L7:
  movsd  -0x68(%rbp),%xmm0
  comisd -0x70(%rbp),%xmm0
  jbe    L15
  movsd  -0x70(%rbp),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x68(%rbp),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  -0x58(%rbp),%xmm0
  movq   D195(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  addl   $0x1,-0x5c(%rbp)
L15:
  movsd  -0x68(%rbp),%xmm0
  divsd  -0x70(%rbp),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  -0x50(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x58(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x48(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  -0x40(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0x38(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D108(%rip),%xmm1
  movsd  D75(%rip),%xmm0
  mov    -0x58(%rbp),%rax
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <mla@plt>
  movq   %xmm0,%rbx
  movsd  D180(%rip),%xmm1
  movsd  D166(%rip),%xmm0
  mov    -0x58(%rbp),%rax
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <mla@plt>
  movq   %xmm0,%rdx
  mov    -0x48(%rbp),%rax
  movq   %rbx,%xmm2
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  call   <mla@plt>
  movq   %xmm0,%rbx
  movsd  D117(%rip),%xmm1
  movsd  D174(%rip),%xmm0
  mov    -0x58(%rbp),%rax
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <mla@plt>
  movq   %xmm0,%r12
  movsd  D84(%rip),%xmm1
  movsd  D34(%rip),%xmm0
  mov    -0x58(%rbp),%rax
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <mla@plt>
  movq   %xmm0,%rdx
  mov    -0x48(%rbp),%rax
  movq   %r12,%xmm2
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  call   <mla@plt>
  movq   %xmm0,%rdx
  mov    -0x40(%rbp),%rax
  movq   %rbx,%xmm2
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  call   <mla@plt>
  movq   %xmm0,%rbx
  movsd  D123(%rip),%xmm1
  movsd  D185(%rip),%xmm0
  mov    -0x58(%rbp),%rax
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <mla@plt>
  movq   %xmm0,%r12
  movsd  D76(%rip),%xmm1
  movsd  D112(%rip),%xmm0
  mov    -0x58(%rbp),%rax
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <mla@plt>
  movq   %xmm0,%rdx
  mov    -0x48(%rbp),%rax
  movq   %r12,%xmm2
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  call   <mla@plt>
  movq   %xmm0,%r12
  movsd  D61(%rip),%xmm1
  movsd  D88(%rip),%xmm0
  mov    -0x58(%rbp),%rax
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <mla@plt>
  movq   %xmm0,%r13
  movsd  D14(%rip),%xmm1
  movsd  D119(%rip),%xmm0
  mov    -0x58(%rbp),%rax
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <mla@plt>
  movq   %xmm0,%rdx
  mov    -0x48(%rbp),%rax
  movq   %r13,%xmm2
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  call   <mla@plt>
  movq   %xmm0,%rdx
  mov    -0x40(%rbp),%rax
  movq   %r12,%xmm2
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  call   <mla@plt>
  movq   %xmm0,%rdx
  mov    -0x38(%rbp),%rax
  movq   %rbx,%xmm2
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  call   <mla@plt>
  movq   %xmm0,%rbx
  movsd  D44(%rip),%xmm1
  movsd  D105(%rip),%xmm0
  mov    -0x58(%rbp),%rax
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <mla@plt>
  movq   %xmm0,%rdx
  movsd  D49(%rip),%xmm0
  mov    -0x48(%rbp),%rax
  movq   %rdx,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <mla@plt>
  movq   %xmm0,%rdx
  mov    -0x30(%rbp),%rax
  movq   %rbx,%xmm2
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  call   <mla@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x28(%rbp)
  movsd  -0x28(%rbp),%xmm0
  mulsd  -0x58(%rbp),%xmm0
  mulsd  -0x50(%rbp),%xmm0
  movsd  -0x50(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x5c(%rbp),%xmm1
  movsd  D30(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x58(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x58(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  add    $0x58,%rsp
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %rbp
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D195
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D108
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D75
data_type: f64
name: extract_symbolic_data
arguments: tag: D180
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D166
data_type: f64
name: extract_symbolic_data
arguments: tag: D117
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D174
data_type: f64
name: extract_symbolic_data
arguments: tag: D84
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D34
data_type: f64
name: extract_symbolic_data
arguments: tag: D123
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D185
data_type: f64
name: extract_symbolic_data
arguments: tag: D76
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D112
data_type: f64
name: extract_symbolic_data
arguments: tag: D61
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D88
data_type: f64
name: extract_symbolic_data
arguments: tag: D14
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D119
data_type: f64
name: extract_symbolic_data
arguments: tag: D44
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D105
data_type: f64
name: extract_symbolic_data
arguments: tag: D49
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D30
data_type: byte[8]

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

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

tool: D75: 0.19999999999659127

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

tool: D166: 0.11111110564826142

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

tool: D174: 0.07692195383117696

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

tool: D34: 0.05876663929266736

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

tool: D185: 0.04666671500778406

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

tool: D112: 0.03378525800013531

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

tool: D88: 0.016599329773529202

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

tool: D119: 0.003700267441887131

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

tool: D105: 0.00020985007664581698

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

tool: {"D30": [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;
}
```