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

```asm
<sum_residual_error>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x108,%rsp
  mov    %rdi,-0x108(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x18(%rbp)
  xor    %eax,%eax
  movsd  D55(%rip),%xmm0
  movsd  %xmm0,-0xf0(%rbp)
  movsd  D211(%rip),%xmm0
  movsd  %xmm0,-0xe8(%rbp)
  movsd  D23(%rip),%xmm0
  movsd  %xmm0,-0xe0(%rbp)
  movsd  D131(%rip),%xmm0
  movsd  %xmm0,-0xd8(%rbp)
  movsd  D120(%rip),%xmm0
  movsd  %xmm0,-0xd0(%rbp)
  movsd  D207(%rip),%xmm0
  movsd  %xmm0,-0xc8(%rbp)
  movsd  D102(%rip),%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  D256(%rip),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  D46(%rip),%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  movsd  D182(%rip),%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  movsd  D253(%rip),%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  movsd  D146(%rip),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  movsd  D1(%rip),%xmm0
  movsd  %xmm0,-0x90(%rbp)
  movsd  D220(%rip),%xmm0
  movsd  %xmm0,-0x88(%rbp)
  movsd  D12(%rip),%xmm0
  movsd  %xmm0,-0x80(%rbp)
  movsd  D41(%rip),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movsd  D80(%rip),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  D121(%rip),%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  D229(%rip),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  D113(%rip),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  D3(%rip),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  D181(%rip),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  D58(%rip),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  D123(%rip),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  D258(%rip),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D242(%rip),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0xf8(%rbp)
  mov    $0x0,%ebx
  jmp    L11
L10:
  movslq %ebx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x108(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movslq %ebx,%rax
  movsd  -0xf0(%rbp,%rax,8),%xmm1
  subsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  mov    $0x2,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
  movsd  -0xf8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xf8(%rbp)
  add    $0x1,%ebx
L11:
  cmp    $0x19,%ebx
  jle    L10
  movsd  -0xf8(%rbp),%xmm0
  movq   %xmm0,%rax
  mov    -0x18(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L28
  call   <__stack_chk_fail@plt>
L28:
  movq   %rax,%xmm0
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: unpack_data
arguments: label: D55
data_type: f64
name: unpack_data
arguments: label: D211
data_type: f64
name: unpack_data
arguments: label: D23
data_type: f64
name: unpack_data
arguments: label: D131
data_type: f64
name: unpack_data
arguments: label: D120
data_type: f64
name: unpack_data
arguments: label: D207
data_type: f64
name: unpack_data
arguments: label: D102
data_type: f64
name: unpack_data
arguments: label: D256
data_type: f64
name: unpack_data
arguments: label: D46
data_type: f64
name: unpack_data
arguments: label: D182
data_type: f64
name: unpack_data
arguments: label: D253
data_type: f64
name: unpack_data
arguments: label: D146
data_type: f64
name: unpack_data
arguments: label: D1
data_type: f64
name: unpack_data
arguments: label: D220
data_type: f64
name: unpack_data
arguments: label: D12
data_type: f64
name: unpack_data
arguments: label: D41
data_type: f64
name: unpack_data
arguments: label: D80
data_type: f64
name: unpack_data
arguments: label: D121
data_type: f64
name: unpack_data
arguments: label: D229
data_type: f64
name: unpack_data
arguments: label: D113
data_type: f64
name: unpack_data
arguments: label: D3
data_type: f64
name: unpack_data
arguments: label: D181
data_type: f64
name: unpack_data
arguments: label: D58
data_type: f64
name: unpack_data
arguments: label: D123
data_type: f64
name: unpack_data
arguments: label: D258
data_type: f64
name: unpack_data
arguments: label: D242
data_type: f64

tool: D55: 8.167

tool: D211: 1.492

tool: D23: 2.782

tool: D131: 4.253

tool: D120: 12.702

tool: D207: 2.228

tool: D102: 2.015

tool: D256: 6.094

tool: D46: 6.996

tool: D182: 0.153

tool: D253: 0.772

tool: D146: 4.025

tool: D1: 2.406

tool: D220: 6.749

tool: D12: 7.507

tool: D41: 1.929

tool: D80: 0.095

tool: D121: 5.987

tool: D229: 6.327

tool: D113: 9.056

tool: D3: 2.758

tool: D181: 0.978

tool: D58: 2.36

tool: D123: 0.15

tool: D258: 1.974

tool: D242: 0.074

assistant: ```c
double sum_residual_error(double scaled_frequencies[26]) {
  register int i;
  double ErrorSum;
  double English_Frequencies[] = {8.167, 1.492, 2.782, 4.253, 12.702, 2.228, 2.015, 6.094, 6.996, 0.153, 0.772, 4.025, 2.406, 6.749, 7.507, 1.929, 0.095, 5.987, 6.327, 9.056, 2.758, 0.978, 2.360, 0.150, 1.974, 0.074};
  ErrorSum = 0;
  for (i = 0; i < 26; i++)
    ErrorSum += pow((scaled_frequencies[i] - English_Frequencies[i]), 2);
  return ErrorSum;
}
```