user: Demonstrate the C code that generates the assembly output below:

```asm
<FrameClassify>:
  endbr64
  push   %rbp
  mov    $0x18,%edx
  xor    %esi,%esi
  push   %rbx
  mov    %rdi,%rbx
  sub    $0x48,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x38(%rsp)
  xor    %eax,%eax
  mov    %rsp,%rbp
  mov    %rbp,%rdi
  call   <memset@plt>
  lea    0x20(%rsp),%rdi
  mov    $0x18,%edx
  xor    %esi,%esi
  call   <memset@plt>
  movups (%rbx),%xmm1
  movups (%rbx),%xmm7
  mov    %rbp,%rcx
  movss  (%rsp),%xmm0
  mulps  D101(%rip),%xmm1
  lea    0xa0(%rbx),%rdx
  lea    0x24(%rsp),%rsi
  movss  0x10(%rbx),%xmm3
  lea    0x10(%rsp),%rdi
  movss  D26(%rip),%xmm12
  movss  0x9c(%rbx),%xmm4
  movss  D39(%rip),%xmm14
  mulss  %xmm4,%xmm4
  mulps  %xmm7,%xmm1
  addss  %xmm1,%xmm0
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  movaps %xmm3,%xmm1
  mulss  %xmm12,%xmm1
  mulss  %xmm3,%xmm1
  movq   0x94(%rbx),%xmm3
  mulps  %xmm3,%xmm3
  addss  %xmm1,%xmm0
  movups 0x14(%rbx),%xmm1
  mulps  %xmm1,%xmm1
  addss  %xmm1,%xmm0
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  movups 0x24(%rbx),%xmm1
  mulps  %xmm1,%xmm1
  addss  %xmm1,%xmm0
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  movups 0x34(%rbx),%xmm1
  mulps  %xmm1,%xmm1
  addss  %xmm1,%xmm0
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  movups 0x44(%rbx),%xmm1
  mulps  %xmm1,%xmm1
  addss  %xmm1,%xmm0
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  movups 0x54(%rbx),%xmm1
  mulps  %xmm1,%xmm1
  addss  %xmm1,%xmm0
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  movups 0x64(%rbx),%xmm1
  mulps  %xmm1,%xmm1
  addss  %xmm1,%xmm0
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  movups 0x74(%rbx),%xmm1
  mulps  %xmm1,%xmm1
  addss  %xmm1,%xmm0
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  movups 0x84(%rbx),%xmm1
  mulps  %xmm1,%xmm1
  addss  %xmm1,%xmm0
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm0,%xmm2
  movaps %xmm1,%xmm0
  movss  D101(%rip),%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm3,%xmm0
  shufps $0xe5,%xmm3,%xmm3
  addss  %xmm3,%xmm0
  addss  %xmm4,%xmm0
  movaps %xmm0,%xmm13
  movss  %xmm0,(%rsp)
  nop
L19:
  movss  0x4(%rdx),%xmm11
  movss  (%rdx),%xmm2
  add    $0x4,%rcx
  add    $0xa0,%rdx
  movss  -0x98(%rdx),%xmm10
  movss  -0x90(%rdx),%xmm7
  add    $0x4,%rsi
  movaps %xmm11,%xmm9
  movaps %xmm2,%xmm0
  movss  -0x94(%rdx),%xmm8
  movups -0x8c(%rdx),%xmm3
  mulss  %xmm14,%xmm9
  mulss  %xmm1,%xmm0
  mulps  %xmm3,%xmm3
  mulss  %xmm11,%xmm9
  mulss  %xmm2,%xmm0
  addss  (%rcx),%xmm0
  mulss  %xmm11,%xmm11
  movaps %xmm3,%xmm6
  mulss  %xmm2,%xmm2
  movaps %xmm3,%xmm5
  movaps %xmm3,%xmm4
  addss  -0x4(%rsi),%xmm2
  shufps $0x55,%xmm3,%xmm5
  unpckhps %xmm3,%xmm4
  addss  %xmm9,%xmm0
  movss  D56(%rip),%xmm9
  mulss  %xmm10,%xmm9
  addss  %xmm11,%xmm2
  mulss  %xmm10,%xmm9
  mulss  %xmm10,%xmm10
  addss  %xmm9,%xmm0
  movss  D49(%rip),%xmm9
  addss  %xmm10,%xmm2
  mulss  %xmm8,%xmm9
  mulss  %xmm8,%xmm9
  mulss  %xmm8,%xmm8
  addss  %xmm9,%xmm0
  movaps %xmm7,%xmm9
  mulss  %xmm12,%xmm9
  addss  %xmm8,%xmm2
  movss  -0x14(%rdx),%xmm8
  movaps %xmm8,%xmm15
  mulss  %xmm8,%xmm15
  mulss  %xmm7,%xmm9
  mulss  %xmm7,%xmm7
  addss  %xmm9,%xmm0
  movq   -0x1c(%rdx),%xmm9
  addss  %xmm7,%xmm2
  movss  -0x10(%rdx),%xmm7
  mulps  %xmm9,%xmm9
  addss  %xmm3,%xmm0
  shufps $0xff,%xmm3,%xmm3
  addss  %xmm6,%xmm2
  addss  %xmm5,%xmm0
  addss  %xmm2,%xmm5
  movups -0x7c(%rdx),%xmm2
  movaps %xmm9,%xmm10
  shufps $0xe5,%xmm9,%xmm9
  mulps  %xmm2,%xmm2
  addss  %xmm4,%xmm0
  addss  %xmm5,%xmm4
  addss  %xmm3,%xmm0
  addss  %xmm3,%xmm4
  movaps %xmm2,%xmm6
  movaps %xmm2,%xmm5
  movaps %xmm2,%xmm3
  addss  %xmm2,%xmm0
  shufps $0x55,%xmm2,%xmm5
  unpckhps %xmm2,%xmm3
  shufps $0xff,%xmm2,%xmm2
  addss  %xmm6,%xmm4
  addss  %xmm5,%xmm0
  addss  %xmm4,%xmm5
  movaps %xmm3,%xmm4
  addss  %xmm3,%xmm0
  addss  %xmm5,%xmm4
  addss  %xmm2,%xmm0
  addss  %xmm2,%xmm4
  movups -0x6c(%rdx),%xmm2
  mulps  %xmm2,%xmm2
  movaps %xmm2,%xmm6
  addss  %xmm2,%xmm0
  movaps %xmm2,%xmm5
  addss  %xmm6,%xmm4
  shufps $0x55,%xmm2,%xmm5
  movaps %xmm2,%xmm3
  unpckhps %xmm2,%xmm3
  shufps $0xff,%xmm2,%xmm2
  addss  %xmm5,%xmm0
  addss  %xmm4,%xmm5
  movaps %xmm3,%xmm4
  addss  %xmm3,%xmm0
  addss  %xmm5,%xmm4
  addss  %xmm2,%xmm0
  addss  %xmm2,%xmm4
  movups -0x5c(%rdx),%xmm2
  mulps  %xmm2,%xmm2
  movaps %xmm2,%xmm6
  addss  %xmm2,%xmm0
  movaps %xmm2,%xmm5
  addss  %xmm6,%xmm4
  shufps $0x55,%xmm2,%xmm5
  movaps %xmm2,%xmm3
  unpckhps %xmm2,%xmm3
  shufps $0xff,%xmm2,%xmm2
  addss  %xmm5,%xmm0
  addss  %xmm4,%xmm5
  movaps %xmm3,%xmm4
  addss  %xmm3,%xmm0
  addss  %xmm5,%xmm4
  addss  %xmm2,%xmm0
  addss  %xmm2,%xmm4
  movups -0x4c(%rdx),%xmm2
  mulps  %xmm2,%xmm2
  movaps %xmm2,%xmm6
  addss  %xmm2,%xmm0
  movaps %xmm2,%xmm5
  addss  %xmm6,%xmm4
  shufps $0x55,%xmm2,%xmm5
  movaps %xmm2,%xmm3
  unpckhps %xmm2,%xmm3
  shufps $0xff,%xmm2,%xmm2
  addss  %xmm5,%xmm0
  addss  %xmm4,%xmm5
  addss  %xmm3,%xmm0
  addss  %xmm5,%xmm3
  addss  %xmm2,%xmm0
  addss  %xmm2,%xmm3
  movups -0x3c(%rdx),%xmm2
  mulps  %xmm2,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm2,%xmm6
  movaps %xmm2,%xmm5
  addss  %xmm6,%xmm3
  shufps $0x55,%xmm2,%xmm5
  movaps %xmm2,%xmm4
  movss  -0xc(%rdx),%xmm6
  unpckhps %xmm2,%xmm4
  shufps $0xff,%xmm2,%xmm2
  addss  %xmm5,%xmm0
  addss  %xmm3,%xmm5
  movups -0x2c(%rdx),%xmm3
  addss  %xmm4,%xmm0
  mulps  %xmm3,%xmm3
  addss  %xmm5,%xmm4
  addss  %xmm2,%xmm0
  addss  %xmm2,%xmm4
  movaps %xmm3,%xmm11
  movaps %xmm3,%xmm2
  movaps %xmm3,%xmm5
  addss  %xmm3,%xmm0
  shufps $0x55,%xmm3,%xmm11
  unpckhps %xmm3,%xmm2
  shufps $0xff,%xmm3,%xmm3
  addss  %xmm4,%xmm5
  movss  -0x4(%rdx),%xmm4
  addss  %xmm11,%xmm0
  addss  %xmm5,%xmm11
  movss  -0x8(%rdx),%xmm5
  addss  %xmm2,%xmm0
  addss  %xmm11,%xmm2
  addss  %xmm3,%xmm0
  addss  %xmm3,%xmm2
  addss  %xmm10,%xmm0
  addss  %xmm10,%xmm2
  addss  %xmm9,%xmm0
  addss  %xmm9,%xmm2
  addss  %xmm15,%xmm0
  movaps %xmm7,%xmm15
  mulss  %xmm7,%xmm15
  addss  %xmm15,%xmm0
  movaps %xmm6,%xmm15
  mulss  %xmm6,%xmm15
  addss  %xmm15,%xmm0
  movaps %xmm5,%xmm15
  mulss  %xmm5,%xmm15
  addss  %xmm15,%xmm0
  movaps %xmm4,%xmm15
  mulss  %xmm4,%xmm15
  addss  %xmm15,%xmm0
  movss  %xmm0,(%rcx)
  movaps %xmm8,%xmm0
  mulss  %xmm12,%xmm0
  mulss  %xmm8,%xmm0
  addss  %xmm0,%xmm2
  movss  D49(%rip),%xmm0
  mulss  %xmm7,%xmm0
  mulss  %xmm7,%xmm0
  addss  %xmm0,%xmm2
  movss  D56(%rip),%xmm0
  mulss  %xmm6,%xmm0
  mulss  %xmm6,%xmm0
  addss  %xmm0,%xmm2
  movaps %xmm5,%xmm0
  mulss  %xmm14,%xmm0
  mulss  %xmm5,%xmm0
  addss  %xmm0,%xmm2
  movaps %xmm4,%xmm0
  mulss  %xmm1,%xmm0
  mulss  %xmm4,%xmm0
  addss  %xmm2,%xmm0
  movss  %xmm0,-0x4(%rsi)
  cmp    %rdi,%rcx
  jne    L19
  movups 0x320(%rbx),%xmm0
  movss  0x34(%rsp),%xmm2
  mov    $0x1,%eax
  movss  0x3a8(%rbx),%xmm5
  movups 0x3ac(%rbx),%xmm7
  mulps  %xmm0,%xmm0
  mulss  %xmm5,%xmm5
  addss  %xmm0,%xmm2
  movaps %xmm0,%xmm3
  shufps $0x55,%xmm0,%xmm3
  addss  %xmm3,%xmm2
  movaps %xmm0,%xmm3
  unpckhps %xmm0,%xmm3
  shufps $0xff,%xmm0,%xmm0
  addss  %xmm3,%xmm2
  addss  %xmm0,%xmm2
  movups 0x330(%rbx),%xmm0
  mulps  %xmm0,%xmm0
  addss  %xmm0,%xmm2
  movaps %xmm0,%xmm3
  shufps $0x55,%xmm0,%xmm3
  addss  %xmm2,%xmm3
  movaps %xmm0,%xmm2
  unpckhps %xmm0,%xmm2
  shufps $0xff,%xmm0,%xmm0
  addss  %xmm3,%xmm2
  addss  %xmm0,%xmm2
  movups 0x340(%rbx),%xmm0
  mulps  %xmm0,%xmm0
  addss  %xmm0,%xmm2
  movaps %xmm0,%xmm3
  shufps $0x55,%xmm0,%xmm3
  addss  %xmm3,%xmm2
  movaps %xmm0,%xmm3
  unpckhps %xmm0,%xmm3
  shufps $0xff,%xmm0,%xmm0
  addss  %xmm2,%xmm3
  movups 0x350(%rbx),%xmm2
  mulps  %xmm2,%xmm2
  addss  %xmm0,%xmm3
  movaps %xmm2,%xmm0
  addss  %xmm3,%xmm0
  movaps %xmm2,%xmm3
  shufps $0x55,%xmm2,%xmm3
  addss  %xmm3,%xmm0
  movaps %xmm2,%xmm3
  unpckhps %xmm2,%xmm3
  shufps $0xff,%xmm2,%xmm2
  addss  %xmm3,%xmm0
  addss  %xmm2,%xmm0
  movups 0x360(%rbx),%xmm2
  mulps  %xmm2,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm2,%xmm3
  shufps $0x55,%xmm2,%xmm3
  addss  %xmm3,%xmm0
  movaps %xmm2,%xmm3
  unpckhps %xmm2,%xmm3
  shufps $0xff,%xmm2,%xmm2
  addss  %xmm3,%xmm0
  addss  %xmm2,%xmm0
  movups 0x370(%rbx),%xmm2
  mulps  %xmm2,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm2,%xmm3
  shufps $0x55,%xmm2,%xmm3
  addss  %xmm3,%xmm0
  movaps %xmm2,%xmm3
  unpckhps %xmm2,%xmm3
  shufps $0xff,%xmm2,%xmm2
  addss  %xmm3,%xmm0
  addss  %xmm2,%xmm0
  movups 0x380(%rbx),%xmm2
  mulps  %xmm2,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm2,%xmm3
  shufps $0x55,%xmm2,%xmm3
  addss  %xmm3,%xmm0
  movaps %xmm2,%xmm3
  unpckhps %xmm2,%xmm3
  shufps $0xff,%xmm2,%xmm2
  addss  %xmm3,%xmm0
  movq   0x3a0(%rbx),%xmm3
  mulps  %xmm3,%xmm3
  addss  %xmm2,%xmm0
  movups 0x390(%rbx),%xmm2
  mulps  %xmm2,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm2,%xmm4
  shufps $0x55,%xmm2,%xmm4
  addss  %xmm0,%xmm4
  movaps %xmm2,%xmm0
  unpckhps %xmm2,%xmm0
  shufps $0xff,%xmm2,%xmm2
  addss  %xmm4,%xmm0
  movss  0x3bc(%rbx),%xmm4
  mulss  %xmm4,%xmm1
  addss  %xmm2,%xmm0
  movups 0x3ac(%rbx),%xmm2
  mulps  D26(%rip),%xmm2
  addss  %xmm3,%xmm0
  shufps $0xe5,%xmm3,%xmm3
  mulss  %xmm4,%xmm1
  mulps  %xmm7,%xmm2
  addss  %xmm3,%xmm0
  addss  %xmm5,%xmm0
  movaps %xmm2,%xmm3
  shufps $0x55,%xmm2,%xmm3
  movss  %xmm0,0x34(%rsp)
  addss  %xmm2,%xmm0
  addss  %xmm0,%xmm3
  movaps %xmm2,%xmm0
  unpckhps %xmm2,%xmm0
  shufps $0xff,%xmm2,%xmm2
  addss  %xmm3,%xmm0
  addss  %xmm2,%xmm0
  movss  0x24(%rsp),%xmm2
  addss  %xmm13,%xmm2
  mulss  D106(%rip),%xmm2
  addss  %xmm1,%xmm0
  movss  0x4(%rsp),%xmm1
  addss  0x28(%rsp),%xmm1
  mulss  D64(%rip),%xmm1
  comiss %xmm2,%xmm1
  jbe    L33
  movaps %xmm1,%xmm2
  mov    $0x2,%eax
L33:
  movss  0x8(%rsp),%xmm1
  addss  0x2c(%rsp),%xmm1
  comiss %xmm2,%xmm1
  jbe    L43
  movaps %xmm1,%xmm2
  mov    $0x3,%eax
L43:
  movss  0x30(%rsp),%xmm1
  addss  0xc(%rsp),%xmm1
  mulss  D64(%rip),%xmm1
  comiss %xmm2,%xmm1
  jbe    L22
  movaps %xmm1,%xmm2
  mov    $0x4,%eax
L22:
  addss  0x10(%rsp),%xmm0
  mulss  D106(%rip),%xmm0
  mov    $0x5,%edx
  ucomiss %xmm2,%xmm0
  cmova  %edx,%eax
  mov    0x38(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L26
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  ret
L26:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: data_tag: D101
type: byte[16]
name: read_data
arguments: data_tag: D26
type: byte[16]
name: read_data
arguments: data_tag: D39
type: byte[4]
name: read_data
arguments: data_tag: D56
type: byte[4]
name: read_data
arguments: data_tag: D49
type: byte[4]
name: read_data
arguments: data_tag: D106
type: f32
name: read_data
arguments: data_tag: D64
type: f32

tool: {"D101": [0xab,0xaa,0x2a,0x3e,0xab,0xaa,0xaa,0x3e,0x00,0x00,0x00,0x3f,0xab,0xaa,0x2a,0x3f]}

tool: {"D26": [0x55,0x55,0x55,0x3f,0xab,0xaa,0x2a,0x3f,0x00,0x00,0x00,0x3f,0xab,0xaa,0xaa,0x3e]}

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

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

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

tool: D106: 0.8

tool: D64: 0.9

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;
}
```