user: What would the C source look like for the assembly code provided here?

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movss  D153(%rip),%xmm0
  movss  %xmm0,-0x50(%rbp)
  movss  D102(%rip),%xmm0
  movss  %xmm0,-0x4c(%rbp)
  movss  D44(%rip),%xmm0
  movss  %xmm0,-0x48(%rbp)
  movss  D8(%rip),%xmm0
  movss  %xmm0,-0x44(%rbp)
  movss  D55(%rip),%xmm0
  movss  %xmm0,-0x40(%rbp)
  movss  D123(%rip),%xmm0
  movss  %xmm0,-0x30(%rbp)
  movss  D2(%rip),%xmm0
  movss  %xmm0,-0x2c(%rbp)
  movss  D51(%rip),%xmm0
  movss  %xmm0,-0x28(%rbp)
  movss  D42(%rip),%xmm0
  movss  %xmm0,-0x24(%rbp)
  movss  D116(%rip),%xmm0
  movss  %xmm0,-0x20(%rbp)
  movss  D2(%rip),%xmm0
  movss  %xmm0,-0x1c(%rbp)
  movss  D122(%rip),%xmm0
  movss  %xmm0,-0x18(%rbp)
  movss  D45(%rip),%xmm0
  movss  %xmm0,-0x14(%rbp)
  movss  D8(%rip),%xmm0
  movss  %xmm0,-0x10(%rbp)
  movss  D36(%rip),%xmm0
  movss  %xmm0,-0xc(%rbp)
  lea    -0x50(%rbp),%rax
  mov    $0x5,%esi
  mov    %rax,%rdi
  call   <average@plt>
  movd   %xmm0,%eax
  movd   %eax,%xmm0
  lea    D12(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0x30(%rbp),%rax
  mov    $0xa,%esi
  mov    %rax,%rdi
  call   <average@plt>
  movd   %xmm0,%eax
  movd   %eax,%xmm0
  lea    D92(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L7
  call   <__stack_chk_fail@plt>
L7:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: label: D153
type_infered: f32
name: unpack_data
arguments: label: D102
type_infered: byte[4]
name: unpack_data
arguments: label: D44
type_infered: f32
name: unpack_data
arguments: label: D8
type_infered: byte[4]
name: unpack_data
arguments: label: D55
type_infered: byte[4]
name: unpack_data
arguments: label: D123
type_infered: f32
name: unpack_data
arguments: label: D2
type_infered: f32
name: unpack_data
arguments: label: D51
type_infered: byte[4]
name: unpack_data
arguments: label: D42
type_infered: f32
name: unpack_data
arguments: label: D116
type_infered: byte[4]
name: unpack_data
arguments: label: D122
type_infered: f32
name: unpack_data
arguments: label: D45
type_infered: byte[4]
name: unpack_data
arguments: label: D36
type_infered: f32
name: unpack_data
arguments: label: D12
type_infered: string
name: unpack_data
arguments: label: D92
type_infered: string

tool: D153: 98.5

tool: {"D102": [0x00,0x00,0xc2,0x42]}

tool: D44: 91.5

tool: {"D8": [0x00,0x00,0x70,0x42]}

tool: {"D55": [0x00,0x00,0x5c,0x42]}

tool: D123: 67.5

tool: D2: 89.5

tool: {"D51": [0x00,0x00,0xc6,0x42]}

tool: D42: 69.5

tool: {"D116": [0x00,0x00,0x9a,0x42]}

tool: D122: 76.5

tool: {"D45": [0x00,0x00,0x58,0x42]}

tool: D36: 99.5

tool: D12: The average score of class 1 is: %f


tool: D92: The average score of class 2 is: %f


assistant: ```c
int main() {
  float average(float array[], int n);
  float score_class1[5] = {98.5, 97, 91.5, 60, 55};
  float score_class2[10] = {67.5, 89.5, 99, 69.5, 77, 89.5, 76.5, 54, 60, 99.5};
  printf("The average score of class 1 is: %f\n", average(score_class1, 5));
  printf("The average score of class 2 is: %f\n", average(score_class2, 10));
  return 0;
}
```