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

```asm
<cos>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x70,%rsp
  mov    %edi,-0x64(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x64(%rbp),%xmm1
  movsd  D6(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x5c(%rbp)
  mov    $0x2,%edi
  call   <factorial@plt>
  mov    %eax,-0x58(%rbp)
  mov    $0x4,%edi
  call   <factorial@plt>
  mov    %eax,-0x54(%rbp)
  mov    $0x6,%edi
  call   <factorial@plt>
  mov    %eax,-0x50(%rbp)
  mov    $0x8,%edi
  call   <factorial@plt>
  mov    %eax,-0x4c(%rbp)
  mov    $0xa,%edi
  call   <factorial@plt>
  mov    %eax,-0x48(%rbp)
  mov    $0xc,%edi
  call   <factorial@plt>
  mov    %eax,-0x44(%rbp)
  mov    $0xe,%edi
  call   <factorial@plt>
  mov    %eax,-0x40(%rbp)
  movss  -0x5c(%rbp),%xmm0
  mulss  %xmm0,%xmm0
  movss  %xmm0,-0x3c(%rbp)
  movss  -0x3c(%rbp),%xmm0
  mulss  -0x5c(%rbp),%xmm0
  movss  -0x5c(%rbp),%xmm1
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x38(%rbp)
  movss  -0x38(%rbp),%xmm0
  mulss  -0x5c(%rbp),%xmm0
  movss  -0x5c(%rbp),%xmm1
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x34(%rbp)
  movss  -0x34(%rbp),%xmm0
  mulss  -0x5c(%rbp),%xmm0
  movss  -0x5c(%rbp),%xmm1
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x30(%rbp)
  movss  -0x30(%rbp),%xmm0
  mulss  -0x5c(%rbp),%xmm0
  movss  -0x5c(%rbp),%xmm1
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x2c(%rbp)
  movss  -0x2c(%rbp),%xmm0
  mulss  -0x5c(%rbp),%xmm0
  movss  -0x5c(%rbp),%xmm1
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x28(%rbp)
  movss  -0x28(%rbp),%xmm0
  mulss  -0x5c(%rbp),%xmm0
  movss  -0x5c(%rbp),%xmm1
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x24(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x58(%rbp),%xmm1
  movss  -0x3c(%rbp),%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x20(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x54(%rbp),%xmm1
  movss  -0x38(%rbp),%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x1c(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x50(%rbp),%xmm1
  movss  -0x34(%rbp),%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x18(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x4c(%rbp),%xmm1
  movss  -0x30(%rbp),%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x14(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x48(%rbp),%xmm1
  movss  -0x2c(%rbp),%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x10(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x44(%rbp),%xmm1
  movss  -0x28(%rbp),%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x40(%rbp),%xmm1
  movss  -0x24(%rbp),%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x8(%rbp)
  movss  D19(%rip),%xmm0
  subss  -0x20(%rbp),%xmm0
  addss  -0x1c(%rbp),%xmm0
  subss  -0x18(%rbp),%xmm0
  addss  -0x14(%rbp),%xmm0
  subss  -0x10(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  subss  -0x8(%rbp),%xmm0
  movss  %xmm0,-0x4(%rbp)
  movss  -0x4(%rbp),%xmm0
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D6
type_infered: byte[8]
name: extract_symbolic_data
arguments: data_tag: D19
type_infered: f32

tool: {"D6": [0x39,0x9d,0x52,0xa2,0x46,0xdf,0x91,0x3f]}

tool: D19: 1

assistant: ```c
float cos(int ang) {
  float angrad = 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989 / 180 * ang;
  int angf2 = factorial(2);
  int angf4 = factorial(4);
  int angf6 = factorial(6);
  int angf8 = factorial(8);
  int angf10 = factorial(10);
  int angf12 = factorial(12);
  int angf14 = factorial(14);
  float ang2 = angrad * angrad;
  float ang4 = ang2 * angrad * angrad;
  float ang6 = ang4 * angrad * angrad;
  float ang8 = ang6 * angrad * angrad;
  float ang10 = ang8 * angrad * angrad;
  float ang12 = ang10 * angrad * angrad;
  float ang14 = ang12 * angrad * angrad;
  float ang22 = ang2 / angf2;
  float ang44 = ang4 / angf4;
  float ang66 = ang6 / angf6;
  float ang88 = ang8 / angf8;
  float ang101 = ang10 / angf10;
  float ang122 = ang12 / angf12;
  float ang144 = ang14 / angf14;
  float cos = 1 - ang22 + ang44 - ang66 + ang88 - ang101 + ang122 - ang144;
  return cos;
}
```