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

```asm
<potm>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xa0,%rsp
  movsd  %xmm0,-0x98(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movsd  -0x98(%rbp),%xmm1
  movsd  D14(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D148(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x88(%rbp)
  lea    -0x88(%rbp),%rax
  mov    %rax,%rdi
  call   <adj360@plt>
  movsd  -0x88(%rbp),%xmm1
  movsd  D105(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  D176(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x80(%rbp)
  lea    -0x80(%rbp),%rax
  mov    %rax,%rdi
  call   <adj360@plt>
  mov    -0x80(%rbp),%rax
  movq   %rax,%xmm0
  call   <dtor@plt>
  mov    %eax,%edi
  call   <sin@plt>
  movsd  D59(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x88(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  -0x58(%rbp),%xmm1
  movsd  D105(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x78(%rbp)
  lea    -0x78(%rbp),%rax
  mov    %rax,%rdi
  call   <adj360@plt>
  movsd  -0x98(%rbp),%xmm1
  movsd  D40(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D43(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x70(%rbp)
  lea    -0x70(%rbp),%rax
  mov    %rax,%rdi
  call   <adj360@plt>
  movsd  -0x70(%rbp),%xmm0
  movsd  -0x98(%rbp),%xmm2
  movsd  D44(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  D133(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  lea    -0x68(%rbp),%rax
  mov    %rax,%rdi
  call   <adj360@plt>
  movsd  -0x98(%rbp),%xmm1
  movsd  D159(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D106(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  lea    -0x60(%rbp),%rax
  mov    %rax,%rdi
  call   <adj360@plt>
  movsd  -0x70(%rbp),%xmm0
  movsd  -0x78(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  addsd  %xmm0,%xmm0
  movsd  -0x68(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <dtor@plt>
  mov    %eax,%edi
  call   <sin@plt>
  movsd  D122(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x80(%rbp),%rax
  movq   %rax,%xmm0
  call   <dtor@plt>
  mov    %eax,%edi
  call   <sin@plt>
  movsd  D173(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x80(%rbp),%rax
  movq   %rax,%xmm0
  call   <dtor@plt>
  mov    %eax,%edi
  call   <sin@plt>
  movsd  D118(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  -0x68(%rbp),%xmm0
  addsd  -0x50(%rbp),%xmm0
  subsd  -0x48(%rbp),%xmm0
  subsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x38(%rbp),%rax
  movq   %rax,%xmm0
  call   <dtor@plt>
  mov    %eax,%edi
  call   <sin@plt>
  movsd  D119(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x38(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <dtor@plt>
  mov    %eax,%edi
  call   <sin@plt>
  movsd  D146(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0x70(%rbp),%xmm0
  addsd  -0x50(%rbp),%xmm0
  addsd  -0x58(%rbp),%xmm0
  subsd  -0x48(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x78(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  addsd  %xmm0,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <dtor@plt>
  mov    %eax,%edi
  call   <sin@plt>
  movsd  D165(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x28(%rbp),%xmm0
  addsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x78(%rbp),%xmm1
  movsd  -0x18(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <dtor@plt>
  mov    %eax,%edi
  call   <cos@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  sub    %edx,%eax
  imul   $0x32,%eax,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movq   %xmm0,%rax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L6
  call   <__stack_chk_fail@plt>
L6:
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: unpack_data
arguments: label: D14
type: byte[8]
name: unpack_data
arguments: label: D148
type: f64
name: unpack_data
arguments: label: D105
type: f64
name: unpack_data
arguments: label: D176
type: f64
name: unpack_data
arguments: label: D59
type: byte[8]
name: unpack_data
arguments: label: D40
type: f64
name: unpack_data
arguments: label: D43
type: f64
name: unpack_data
arguments: label: D44
type: f64
name: unpack_data
arguments: label: D133
type: f64
name: unpack_data
arguments: label: D159
type: f64
name: unpack_data
arguments: label: D106
type: f64
name: unpack_data
arguments: label: D122
type: f64
name: unpack_data
arguments: label: D173
type: f64
name: unpack_data
arguments: label: D118
type: f64
name: unpack_data
arguments: label: D119
type: f64
name: unpack_data
arguments: label: D146
type: f64
name: unpack_data
arguments: label: D165
type: f64

tool: {"D14": [0x00,0x00,0x00,0x00,0x00,0x80,0x76,0x40]}

tool: D148: 365.2422

tool: D105: 279.611371

tool: D176: 282.680403

tool: {"D59": [0x5e,0x58,0x8a,0xbe,0xaa,0xa5,0xfe,0x3f]}

tool: D40: 13.1763966

tool: D43: 18.251907

tool: D44: 0.1114041

tool: D133: 192.917585

tool: D159: 0.0529539

tool: D106: 55.204723

tool: D122: 1.2739

tool: D173: 0.1858

tool: D118: 0.37

tool: D119: 6.2886

tool: D146: 0.214

tool: D165: 0.6583

assistant: ```c
double potm(double days) {
  double N, Msol, Ec, LambdaSol, l, Mm, Ev, Ac, A3, Mmprime;
  double A4, lprime, V, ldprime, D, Nm;
  N = 360 * days / 365.2422;
  adj360(&N);
  Msol = N + 279.611371 - 282.680403;
  adj360(&Msol);
  Ec = 360 / 3.14159265358979323846 * 0.01671542 * sin(dtor(Msol));
  LambdaSol = N + Ec + 279.611371;
  adj360(&LambdaSol);
  l = 13.1763966 * days + 18.251907;
  adj360(&l);
  Mm = l - (0.1114041 * days) - 192.917585;
  adj360(&Mm);
  Nm = 55.204723 - (0.0529539 * days);
  adj360(&Nm);
  Ev = 1.2739 * sin(dtor(2 * (l - LambdaSol) - Mm));
  Ac = 0.1858 * sin(dtor(Msol));
  A3 = 0.37 * sin(dtor(Msol));
  Mmprime = Mm + Ev - Ac - A3;
  Ec = 6.2886 * sin(dtor(Mmprime));
  A4 = 0.214 * sin(dtor(2 * Mmprime));
  lprime = l + Ev + Ec - Ac + A4;
  V = 0.6583 * sin(dtor(2 * (lprime - LambdaSol)));
  ldprime = lprime + V;
  D = ldprime - LambdaSol;
  return (50 * (1 - cos(dtor(D))));
}
```