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

```asm
<fourtoo>:
  endbr64
  push   %r12
  movapd %xmm0,%xmm2
  pxor   %xmm0,%xmm0
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  sub    $0x30,%rsp
  cvtss2sd 0x4(%rdi),%xmm0
  lea    0x28(%rsp),%rbp
  mulsd  D25(%rip),%xmm0
  lea    0x20(%rsp),%r12
  mov    %r12,%rsi
  mov    %rbp,%rdi
  movsd  %xmm2,0x8(%rsp)
  movsd  %xmm0,0x10(%rsp)
  movapd %xmm2,%xmm0
  call   <sincos@plt>
  pxor   %xmm0,%xmm0
  pxor   %xmm5,%xmm5
  mov    %r12,%rsi
  cvtss2sd 0xc(%rbx),%xmm0
  mulsd  0x20(%rsp),%xmm0
  movsd  0x10(%rsp),%xmm4
  mov    %rbp,%rdi
  movsd  0x8(%rsp),%xmm2
  addsd  %xmm0,%xmm4
  pxor   %xmm0,%xmm0
  cvtss2sd 0x10(%rbx),%xmm0
  mulsd  0x28(%rsp),%xmm0
  movsd  %xmm4,0x10(%rsp)
  addsd  %xmm0,%xmm5
  movapd %xmm2,%xmm0
  addsd  %xmm2,%xmm0
  movsd  %xmm5,0x18(%rsp)
  call   <sincos@plt>
  pxor   %xmm0,%xmm0
  mov    %r12,%rsi
  mov    %rbp,%rdi
  cvtss2sd 0x14(%rbx),%xmm0
  mulsd  0x20(%rsp),%xmm0
  movsd  0x10(%rsp),%xmm6
  movsd  0x18(%rsp),%xmm7
  addsd  %xmm0,%xmm6
  pxor   %xmm0,%xmm0
  cvtss2sd 0x18(%rbx),%xmm0
  mulsd  0x28(%rsp),%xmm0
  movsd  %xmm6,0x10(%rsp)
  addsd  %xmm0,%xmm7
  movsd  0x8(%rsp),%xmm0
  mulsd  D52(%rip),%xmm0
  movsd  %xmm7,0x18(%rsp)
  call   <sincos@plt>
  pxor   %xmm0,%xmm0
  mov    %r12,%rsi
  mov    %rbp,%rdi
  cvtss2sd 0x1c(%rbx),%xmm0
  mulsd  0x20(%rsp),%xmm0
  movsd  0x10(%rsp),%xmm3
  movsd  0x18(%rsp),%xmm4
  addsd  %xmm0,%xmm3
  pxor   %xmm0,%xmm0
  cvtss2sd 0x20(%rbx),%xmm0
  mulsd  0x28(%rsp),%xmm0
  movsd  %xmm3,0x10(%rsp)
  addsd  %xmm0,%xmm4
  movsd  0x8(%rsp),%xmm0
  mulsd  D14(%rip),%xmm0
  movsd  %xmm4,0x18(%rsp)
  call   <sincos@plt>
  pxor   %xmm0,%xmm0
  mov    %r12,%rsi
  mov    %rbp,%rdi
  cvtss2sd 0x24(%rbx),%xmm0
  mulsd  0x20(%rsp),%xmm0
  movsd  0x10(%rsp),%xmm5
  movsd  0x18(%rsp),%xmm6
  addsd  %xmm0,%xmm5
  pxor   %xmm0,%xmm0
  cvtss2sd 0x28(%rbx),%xmm0
  mulsd  0x28(%rsp),%xmm0
  movsd  %xmm5,0x10(%rsp)
  addsd  %xmm0,%xmm6
  movsd  0x8(%rsp),%xmm0
  mulsd  D87(%rip),%xmm0
  movsd  %xmm6,0x18(%rsp)
  call   <sincos@plt>
  pxor   %xmm0,%xmm0
  mov    %r12,%rsi
  mov    %rbp,%rdi
  cvtss2sd 0x2c(%rbx),%xmm0
  mulsd  0x20(%rsp),%xmm0
  movsd  0x10(%rsp),%xmm7
  movsd  0x18(%rsp),%xmm1
  addsd  %xmm0,%xmm7
  pxor   %xmm0,%xmm0
  cvtss2sd 0x30(%rbx),%xmm0
  mulsd  0x28(%rsp),%xmm0
  movsd  %xmm7,0x10(%rsp)
  addsd  %xmm0,%xmm1
  movsd  0x8(%rsp),%xmm0
  mulsd  D83(%rip),%xmm0
  movsd  %xmm1,0x18(%rsp)
  call   <sincos@plt>
  pxor   %xmm0,%xmm0
  mov    %r12,%rsi
  mov    %rbp,%rdi
  cvtss2sd 0x34(%rbx),%xmm0
  mulsd  0x20(%rsp),%xmm0
  movsd  0x10(%rsp),%xmm3
  movsd  0x18(%rsp),%xmm4
  addsd  %xmm0,%xmm3
  pxor   %xmm0,%xmm0
  cvtss2sd 0x38(%rbx),%xmm0
  mulsd  0x28(%rsp),%xmm0
  movsd  %xmm3,0x10(%rsp)
  addsd  %xmm0,%xmm4
  movsd  0x8(%rsp),%xmm0
  mulsd  D39(%rip),%xmm0
  movsd  %xmm4,0x18(%rsp)
  call   <sincos@plt>
  pxor   %xmm0,%xmm0
  mov    %r12,%rsi
  mov    %rbp,%rdi
  cvtss2sd 0x3c(%rbx),%xmm0
  mulsd  0x20(%rsp),%xmm0
  movsd  0x10(%rsp),%xmm5
  movsd  0x18(%rsp),%xmm6
  addsd  %xmm0,%xmm5
  pxor   %xmm0,%xmm0
  cvtss2sd 0x40(%rbx),%xmm0
  mulsd  0x28(%rsp),%xmm0
  movsd  %xmm5,0x10(%rsp)
  addsd  %xmm0,%xmm6
  movsd  0x8(%rsp),%xmm0
  mulsd  D79(%rip),%xmm0
  movsd  %xmm6,0x18(%rsp)
  call   <sincos@plt>
  pxor   %xmm0,%xmm0
  mov    %r12,%rsi
  mov    %rbp,%rdi
  cvtss2sd 0x44(%rbx),%xmm0
  mulsd  0x20(%rsp),%xmm0
  movsd  0x10(%rsp),%xmm2
  movsd  0x18(%rsp),%xmm7
  addsd  %xmm0,%xmm2
  pxor   %xmm0,%xmm0
  cvtss2sd 0x48(%rbx),%xmm0
  mulsd  0x28(%rsp),%xmm0
  movsd  %xmm2,0x10(%rsp)
  addsd  %xmm0,%xmm7
  movsd  0x8(%rsp),%xmm0
  mulsd  D57(%rip),%xmm0
  movsd  %xmm7,0x18(%rsp)
  call   <sincos@plt>
  pxor   %xmm0,%xmm0
  mov    %r12,%rsi
  mov    %rbp,%rdi
  cvtss2sd 0x4c(%rbx),%xmm0
  mulsd  0x20(%rsp),%xmm0
  movsd  0x10(%rsp),%xmm1
  movsd  0x18(%rsp),%xmm3
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd 0x50(%rbx),%xmm0
  mulsd  0x28(%rsp),%xmm0
  movsd  %xmm1,0x10(%rsp)
  addsd  %xmm0,%xmm3
  movsd  0x8(%rsp),%xmm0
  mulsd  D23(%rip),%xmm0
  movsd  %xmm3,0x18(%rsp)
  call   <sincos@plt>
  pxor   %xmm1,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd 0x54(%rbx),%xmm1
  cvtss2sd 0x58(%rbx),%xmm0
  mulsd  0x20(%rsp),%xmm1
  mulsd  0x28(%rsp),%xmm0
  addsd  0x10(%rsp),%xmm1
  addsd  0x18(%rsp),%xmm0
  add    $0x30,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  addsd  %xmm1,%xmm0
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D25
datatype: f32[2]
name: disassemble_data
arguments: data_label: D52
datatype: f32[2]
name: disassemble_data
arguments: data_label: D14
datatype: f32[2]
name: disassemble_data
arguments: data_label: D87
datatype: f32[2]
name: disassemble_data
arguments: data_label: D83
datatype: f32[2]
name: disassemble_data
arguments: data_label: D39
datatype: f32[2]
name: disassemble_data
arguments: data_label: D79
datatype: f32[2]
name: disassemble_data
arguments: data_label: D57
datatype: f32[2]
name: disassemble_data
arguments: data_label: D23
datatype: f32[2]

tool: {"D25": [0.0,1.75]}

tool: {"D52": [0.0,2.125]}

tool: {"D14": [0.0,2.25]}

tool: {"D87": [0.0,2.3125]}

tool: {"D83": [0.0,2.375]}

tool: {"D39": [0.0,2.4375]}

tool: {"D79": [0.0,2.5]}

tool: {"D57": [0.0,2.53125]}

tool: {"D23": [0.0,2.5625]}

assistant: ```c
double fourtoo(data, ex)
float data[];
double ex;
{
  register int k;
  double fivesm, sixsm;
  sixsm = data[1] / 2.0;
  fivesm = 0.0;
  for (k = 1; k < 11; k++) {
    sixsm += (double)(data[(k * 2) + 1] * cos((double)k * ex));
    fivesm += (double)(data[(k * 2) + 2] * sin((double)k * ex));
  }
  sixsm = sixsm + fivesm;
  return (sixsm);
}
```