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

```asm
<ast_args>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x58,%rsp
  movsd  %xmm0,-0x58(%rbp)
  mov    %rdi,-0x60(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x18(%rbp)
  xor    %eax,%eax
  movsd  -0x58(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movl   $0x1,-0x48(%rbp)
  jmp    L11
L61:
  mov    -0x48(%rbp),%eax
  sub    $0x1,%eax
  cltq
  movsd  -0x40(%rbp,%rax,8),%xmm0
  mulsd  -0x58(%rbp),%xmm0
  mov    -0x48(%rbp),%eax
  cltq
  movsd  %xmm0,-0x40(%rbp,%rax,8)
  addl   $0x1,-0x48(%rbp)
L11:
  cmpl   $0x3,-0x48(%rbp)
  jle    L61
  movl   $0x0,-0x48(%rbp)
  jmp    L18
L16:
  mov    -0x48(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  mov    %rax,%rdx
  lea    D28(%rip),%rax
  movsd  (%rdx,%rax,1),%xmm1
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  movsd  D13(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movl   $0x0,-0x44(%rbp)
  jmp    L35
L10:
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x44(%rbp),%eax
  add    $0x1,%eax
  movslq %eax,%rcx
  mov    -0x48(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  add    %rcx,%rax
  lea    0x0(,%rax,8),%rdx
  lea    D28(%rip),%rax
  movsd  (%rdx,%rax,1),%xmm2
  mov    -0x44(%rbp),%eax
  cltq
  movsd  -0x40(%rbp,%rax,8),%xmm0
  mulsd  %xmm2,%xmm0
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x44(%rbp)
L35:
  cmpl   $0x3,-0x44(%rbp)
  jle    L10
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  movsd  D42(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  mov    -0x48(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x60(%rbp),%rdx
  lea    (%rcx,%rdx,1),%rbx
  movsd  D34(%rip),%xmm0
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <fmod@plt>
  movq   %xmm0,%rax
  mov    %rax,(%rbx)
  addl   $0x1,-0x48(%rbp)
L18:
  cmpl   $0x4,-0x48(%rbp)
  jle    L16
  nop
  mov    -0x18(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L58
  call   <__stack_chk_fail@plt>
L58:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D28
datatype: f64
name: unpack_data
arguments: data_tag: D13
datatype: f64
name: unpack_data
arguments: data_tag: D42
datatype: byte[8]
name: unpack_data
arguments: data_tag: D34
datatype: byte[8]

tool: D28: 134.96340251

tool: D13: 3600

tool: {"D42": [0x9d,0x8f,0xff,0xb2,0xa5,0x55,0xd4,0x3e]}

tool: {"D34": [0x18,0x2d,0x44,0x54,0xfb,0x21,0x19,0x40]}

assistant: ```c
void ast_args(double t, double *f) {
  static const double fc[][5] = {{134.96340251, 1717915923.2178, 31.8792, 0.051635, -0.00024470}, {357.52910918, 129596581.0481, -0.5532, 0.000136, -0.00001149}, {93.27209062, 1739527262.8478, -12.7512, -0.001037, 0.00000417}, {297.85019547, 1602961601.2090, -6.3706, 0.006593, -0.00003169}, {125.04455501, -6962890.2665, 7.4722, 0.007702 - 0.00005939}};
  double tt[4];
  int i, j;
  for (tt[0] = t, i = 1; i < 4; i++)
    tt[i] = tt[i - 1] * t;
  for (i = 0; i < 5; i++) {
    f[i] = fc[i][0] * 3600.0;
    for (j = 0; j < 4; j++)
      f[i] += fc[i][j + 1] * tt[j];
    f[i] = fmod(f[i] * ((3.1415926535897932 / 180.0) / 3600.0), 2.0 * 3.1415926535897932);
  }
}
```