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

```asm
<FrameClassify>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xb0,%rsp
  mov    %rdi,-0xa8(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movss  D93(%rip),%xmm0
  movss  %xmm0,-0x80(%rbp)
  movss  D75(%rip),%xmm0
  movss  %xmm0,-0x7c(%rbp)
  movss  D56(%rip),%xmm0
  movss  %xmm0,-0x78(%rbp)
  movss  D75(%rip),%xmm0
  movss  %xmm0,-0x74(%rbp)
  movss  D93(%rip),%xmm0
  movss  %xmm0,-0x70(%rbp)
  movss  D77(%rip),%xmm0
  movss  %xmm0,-0x60(%rbp)
  movss  D45(%rip),%xmm0
  movss  %xmm0,-0x5c(%rbp)
  movss  D69(%rip),%xmm0
  movss  %xmm0,-0x58(%rbp)
  movss  D34(%rip),%xmm0
  movss  %xmm0,-0x54(%rbp)
  movss  D94(%rip),%xmm0
  movss  %xmm0,-0x50(%rbp)
  lea    -0x40(%rbp),%rax
  mov    $0x18,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  lea    -0x20(%rbp),%rax
  mov    $0x18,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  movl   $0x0,-0x94(%rbp)
  mov    -0xa8(%rbp),%rax
  mov    %rax,-0x88(%rbp)
  movl   $0x0,-0x90(%rbp)
  jmp    L159
L47:
  mov    -0x94(%rbp),%eax
  cltq
  movss  -0x40(%rbp,%rax,4),%xmm1
  mov    -0x90(%rbp),%eax
  cltq
  movss  -0x60(%rbp,%rax,4),%xmm2
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm2
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  mov    -0x94(%rbp),%eax
  cltq
  movss  %xmm0,-0x40(%rbp,%rax,4)
  addq   $0x4,-0x88(%rbp)
  addl   $0x1,-0x90(%rbp)
L159:
  cmpl   $0x4,-0x90(%rbp)
  jle    L47
  movl   $0x5,-0x90(%rbp)
  jmp    L49
L73:
  mov    -0x94(%rbp),%eax
  cltq
  movss  -0x40(%rbp,%rax,4),%xmm1
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm2
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  mov    -0x94(%rbp),%eax
  cltq
  movss  %xmm0,-0x40(%rbp,%rax,4)
  addq   $0x4,-0x88(%rbp)
  addl   $0x1,-0x90(%rbp)
L49:
  cmpl   $0x27,-0x90(%rbp)
  jle    L73
  movl   $0x1,-0x94(%rbp)
  jmp    L60
L188:
  mov    -0x94(%rbp),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  shl    $0x3,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x88(%rbp)
  movl   $0x0,-0x90(%rbp)
  jmp    L177
L173:
  mov    -0x94(%rbp),%eax
  cltq
  movss  -0x40(%rbp,%rax,4),%xmm1
  mov    -0x90(%rbp),%eax
  cltq
  movss  -0x60(%rbp,%rax,4),%xmm2
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm2
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  mov    -0x94(%rbp),%eax
  cltq
  movss  %xmm0,-0x40(%rbp,%rax,4)
  mov    -0x94(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm2
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  mov    -0x94(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  addq   $0x4,-0x88(%rbp)
  addl   $0x1,-0x90(%rbp)
L177:
  cmpl   $0x4,-0x90(%rbp)
  jle    L173
  movl   $0x5,-0x90(%rbp)
  jmp    L179
L164:
  mov    -0x94(%rbp),%eax
  cltq
  movss  -0x40(%rbp,%rax,4),%xmm1
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm2
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  mov    -0x94(%rbp),%eax
  cltq
  movss  %xmm0,-0x40(%rbp,%rax,4)
  mov    -0x94(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm2
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  mov    -0x94(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  addq   $0x4,-0x88(%rbp)
  addl   $0x1,-0x90(%rbp)
L179:
  cmpl   $0x22,-0x90(%rbp)
  jle    L164
  movl   $0x23,-0x90(%rbp)
  jmp    L114
L33:
  mov    -0x94(%rbp),%eax
  cltq
  movss  -0x40(%rbp,%rax,4),%xmm1
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm2
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  mov    -0x94(%rbp),%eax
  cltq
  movss  %xmm0,-0x40(%rbp,%rax,4)
  mov    -0x94(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    $0x27,%eax
  sub    -0x90(%rbp),%eax
  cltq
  movss  -0x60(%rbp,%rax,4),%xmm2
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm2
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  mov    -0x94(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  addq   $0x4,-0x88(%rbp)
  addl   $0x1,-0x90(%rbp)
L114:
  cmpl   $0x27,-0x90(%rbp)
  jle    L33
  addl   $0x1,-0x94(%rbp)
L60:
  cmpl   $0x4,-0x94(%rbp)
  jle    L188
  movl   $0x5,-0x94(%rbp)
  mov    -0x94(%rbp),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  shl    $0x3,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x88(%rbp)
  movl   $0x0,-0x90(%rbp)
  jmp    L106
L149:
  mov    -0x94(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm2
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  mov    -0x94(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  addq   $0x4,-0x88(%rbp)
  addl   $0x1,-0x90(%rbp)
L106:
  cmpl   $0x22,-0x90(%rbp)
  jle    L149
  movl   $0x23,-0x90(%rbp)
  jmp    L56
L87:
  mov    -0x94(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    $0x27,%eax
  sub    -0x90(%rbp),%eax
  cltq
  movss  -0x60(%rbp,%rax,4),%xmm2
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm2
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  mov    -0x94(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  addq   $0x4,-0x88(%rbp)
  addl   $0x1,-0x90(%rbp)
L56:
  cmpl   $0x27,-0x90(%rbp)
  jle    L87
  movss  -0x40(%rbp),%xmm1
  movss  -0x1c(%rbp),%xmm0
  addss  %xmm0,%xmm1
  movss  -0x80(%rbp),%xmm0
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x98(%rbp)
  movl   $0x1,-0x8c(%rbp)
  movl   $0x2,-0x94(%rbp)
  jmp    L103
L174:
  mov    -0x94(%rbp),%eax
  sub    $0x1,%eax
  cltq
  movss  -0x40(%rbp,%rax,4),%xmm1
  mov    -0x94(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm0
  addss  %xmm0,%xmm1
  mov    -0x94(%rbp),%eax
  sub    $0x1,%eax
  cltq
  movss  -0x80(%rbp,%rax,4),%xmm0
  mulss  %xmm1,%xmm0
  comiss -0x98(%rbp),%xmm0
  jbe    L160
  mov    -0x94(%rbp),%eax
  sub    $0x1,%eax
  cltq
  movss  -0x40(%rbp,%rax,4),%xmm1
  mov    -0x94(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm0
  addss  %xmm0,%xmm1
  mov    -0x94(%rbp),%eax
  sub    $0x1,%eax
  cltq
  movss  -0x80(%rbp,%rax,4),%xmm0
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x98(%rbp)
  mov    -0x94(%rbp),%eax
  mov    %eax,-0x8c(%rbp)
L160:
  addl   $0x1,-0x94(%rbp)
L103:
  cmpl   $0x5,-0x94(%rbp)
  jle    L174
  mov    -0x8c(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L133
  call   <__stack_chk_fail@plt>
L133:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D93
data_type: f32
name: extract_symbolic_data
arguments: data_tag: D75
data_type: f32
name: extract_symbolic_data
arguments: data_tag: D56
data_type: f32
name: extract_symbolic_data
arguments: data_tag: D77
data_type: byte[4]
name: extract_symbolic_data
arguments: data_tag: D45
data_type: byte[4]
name: extract_symbolic_data
arguments: data_tag: D69
data_type: byte[4]
name: extract_symbolic_data
arguments: data_tag: D34
data_type: byte[4]
name: extract_symbolic_data
arguments: data_tag: D94
data_type: byte[4]

tool: D93: 0.8

tool: D75: 0.9

tool: D56: 1

tool: {"D77": [0xab,0xaa,0x2a,0x3e]}

tool: {"D45": [0xab,0xaa,0xaa,0x3e]}

tool: {"D69": [0x00,0x00,0x00,0x3f]}

tool: {"D34": [0xab,0xaa,0x2a,0x3f]}

tool: {"D94": [0x55,0x55,0x55,0x3f]}

assistant: ```c
int FrameClassify(float *residual) {
  float max_ssqEn, fssqEn[6], bssqEn[6], *pp;
  int n, l, max_ssqEn_n;
  const float ssqEn_win[6 - 1] = {(float)0.8, (float)0.9, (float)1.0, (float)0.9, (float)0.8};
  const float sampEn_win[5] = {(float)1.0 / (float)6.0, (float)2.0 / (float)6.0, (float)3.0 / (float)6.0, (float)4.0 / (float)6.0, (float)5.0 / (float)6.0};
  memset(fssqEn, 0, 6 * sizeof(float));
  memset(bssqEn, 0, 6 * sizeof(float));
  n = 0;
  pp = residual;
  for (l = 0; l < 5; l++) {
    fssqEn[n] += sampEn_win[l] * (*pp) * (*pp);
    pp++;
  }
  for (l = 5; l < 40; l++) {
    fssqEn[n] += (*pp) * (*pp);
    pp++;
  }
  for (n = 1; n < 6 - 1; n++) {
    pp = residual + n * 40;
    for (l = 0; l < 5; l++) {
      fssqEn[n] += sampEn_win[l] * (*pp) * (*pp);
      bssqEn[n] += (*pp) * (*pp);
      pp++;
    }
    for (l = 5; l < 40 - 5; l++) {
      fssqEn[n] += (*pp) * (*pp);
      bssqEn[n] += (*pp) * (*pp);
      pp++;
    }
    for (l = 40 - 5; l < 40; l++) {
      fssqEn[n] += (*pp) * (*pp);
      bssqEn[n] += sampEn_win[40 - l - 1] * (*pp) * (*pp);
      pp++;
    }
  }
  n = 6 - 1;
  pp = residual + n * 40;
  for (l = 0; l < 40 - 5; l++) {
    bssqEn[n] += (*pp) * (*pp);
    pp++;
  }
  for (l = 40 - 5; l < 40; l++) {
    bssqEn[n] += sampEn_win[40 - l - 1] * (*pp) * (*pp);
    pp++;
  }
  max_ssqEn = (fssqEn[0] + bssqEn[1]) * ssqEn_win[0];
  max_ssqEn_n = 1;
  for (n = 2; n < 6; n++) {
    if ((fssqEn[n - 1] + bssqEn[n]) * ssqEn_win[n - 1] > max_ssqEn) {
      max_ssqEn = (fssqEn[n - 1] + bssqEn[n]) * ssqEn_win[n - 1];
      max_ssqEn_n = n;
    }
  }
  return max_ssqEn_n;
}
```