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  D117(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D69(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x88(%rbp)
  lea    -0x88(%rbp),%rax
  mov    %rax,%rdi
  call   <adj360@plt>
  movsd  -0x88(%rbp),%xmm1
  movsd  D167(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  D139(%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  D14(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x88(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  -0x58(%rbp),%xmm1
  movsd  D167(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x78(%rbp)
  lea    -0x78(%rbp),%rax
  mov    %rax,%rdi
  call   <adj360@plt>
  movsd  -0x98(%rbp),%xmm1
  movsd  D148(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D145(%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  D132(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  D107(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  lea    -0x68(%rbp),%rax
  mov    %rax,%rdi
  call   <adj360@plt>
  movsd  -0x98(%rbp),%xmm1
  movsd  D51(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D42(%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  D182(%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  D129(%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  D75(%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  D166(%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  D174(%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  D164(%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    $0x1,%edx
  sub    %eax,%edx
  pxor   %xmm1,%xmm1
  cvtsi2sd %edx,%xmm1
  movsd  D32(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L4
  call   <__stack_chk_fail@plt>
L4:
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: read_data
arguments: tag: D117
type_infered: byte[8]
name: read_data
arguments: tag: D69
type_infered: f64
name: read_data
arguments: tag: D167
type_infered: f64
name: read_data
arguments: tag: D139
type_infered: f64
name: read_data
arguments: tag: D14
type_infered: byte[8]
name: read_data
arguments: tag: D148
type_infered: f64
name: read_data
arguments: tag: D145
type_infered: f64
name: read_data
arguments: tag: D132
type_infered: f64
name: read_data
arguments: tag: D107
type_infered: f64
name: read_data
arguments: tag: D51
type_infered: f64
name: read_data
arguments: tag: D42
type_infered: f64
name: read_data
arguments: tag: D182
type_infered: f64
name: read_data
arguments: tag: D129
type_infered: f64
name: read_data
arguments: tag: D75
type_infered: f64
name: read_data
arguments: tag: D166
type_infered: f64
name: read_data
arguments: tag: D174
type_infered: f64
name: read_data
arguments: tag: D164
type_infered: f64
name: read_data
arguments: tag: D32
type_infered: f64

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

tool: D69: 365.242191

tool: D167: 279.403303

tool: D139: 282.768422

tool: {"D14": [0xa2,0x2a,0x48,0xf6,0x87,0xa4,0xfe,0x3f]}

tool: D148: 13.1763966

tool: D145: 318.351648

tool: D132: 0.1114041

tool: D107: 36.34041

tool: D51: 0.0529539

tool: D42: 318.510107

tool: D182: 1.2739

tool: D129: 0.1858

tool: D75: 0.37

tool: D166: 6.2886

tool: D174: 0.214

tool: D164: 0.6583

tool: D32: 50

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.242191;
  adj360(&N);
  Msol = N + 279.403303 - 282.768422;
  adj360(&Msol);
  Ec = 360 / 3.14159265358979323846 * 0.016713 * sin(dtor(Msol));
  LambdaSol = N + Ec + 279.403303;
  adj360(&LambdaSol);
  l = 13.1763966 * days + 318.351648;
  adj360(&l);
  Mm = l - (0.1114041 * days) - 36.340410;
  adj360(&Mm);
  Nm = 318.510107 - (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.0 * (1 - cos(dtor(D))));
}
```