user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<main>:
  endbr64
  push   %r13
  lea    D164(%rip),%rdi
  mov    $0x7d0,%r13d
  push   %r12
  push   %rbp
  push   %rbx
  lea    D95(%rip),%rbx
  sub    $0x118,%rsp
  movaps D101(%rip),%xmm0
  mov    %fs:0x28,%rax
  mov    %rax,0x108(%rsp)
  xor    %eax,%eax
  lea    0x10(%rsp),%r12
  movaps %xmm0,0x10(%rsp)
  movaps D172(%rip),%xmm0
  mov    %r12,%rbp
  movaps %xmm0,0x20(%rsp)
  movaps D124(%rip),%xmm0
  movaps %xmm0,0x30(%rsp)
  movaps D108(%rip),%xmm0
  movaps %xmm0,0x40(%rsp)
  movaps D222(%rip),%xmm0
  movaps %xmm0,0x50(%rsp)
  movaps D41(%rip),%xmm0
  movaps %xmm0,0x60(%rsp)
  movaps D149(%rip),%xmm0
  movaps %xmm0,0x70(%rsp)
  movaps D226(%rip),%xmm0
  movaps %xmm0,0x80(%rsp)
  movaps D86(%rip),%xmm0
  movaps %xmm0,0x90(%rsp)
  movaps D23(%rip),%xmm0
  movaps %xmm0,0xa0(%rsp)
  movaps D109(%rip),%xmm0
  movaps %xmm0,0xb0(%rsp)
  movaps D198(%rip),%xmm0
  movaps %xmm0,0xc0(%rsp)
  movaps D49(%rip),%xmm0
  movaps %xmm0,0xd0(%rsp)
  movaps D43(%rip),%xmm0
  movaps %xmm0,0xe0(%rsp)
  movaps D26(%rip),%xmm0
  movaps %xmm0,0xf0(%rsp)
  call   <puts@plt>
  pxor   %xmm2,%xmm2
L25:
  pxor   %xmm1,%xmm1
  addss  0x0(%rbp),%xmm1
  mov    %r13d,%esi
  mov    %rbx,%rdi
  addss  0x4(%rbp),%xmm1
  addss  0x8(%rbp),%xmm1
  pxor   %xmm0,%xmm0
  mov    $0x1,%eax
  addss  0xc(%rbp),%xmm1
  addss  0x10(%rbp),%xmm1
  add    $0x1,%r13d
  add    $0x30,%rbp
  addss  -0x1c(%rbp),%xmm1
  addss  -0x18(%rbp),%xmm1
  movss  %xmm2,0xc(%rsp)
  addss  -0x14(%rbp),%xmm1
  addss  -0x10(%rbp),%xmm1
  addss  -0xc(%rbp),%xmm1
  addss  -0x8(%rbp),%xmm1
  addss  -0x4(%rbp),%xmm1
  movss  %xmm1,0x8(%rsp)
  cvtss2sd %xmm1,%xmm0
  call   <printf@plt>
  movss  0x8(%rsp),%xmm1
  movss  0xc(%rsp),%xmm2
  addss  %xmm1,%xmm2
  cmp    $0x7d5,%r13d
  jne    L25
  lea    D89(%rip),%rdi
  pxor   %xmm0,%xmm0
  mov    $0x1,%eax
  divss  D142(%rip),%xmm2
  cvtss2sd %xmm2,%xmm0
  call   <printf@plt>
  lea    0x30(%r12),%rbp
  lea    D146(%rip),%rdi
  call   <puts@plt>
  lea    D90(%rip),%rdi
  lea    D111(%rip),%rbx
  call   <puts@plt>
  nopl   0x0(%rax,%rax,1)
L8:
  pxor   %xmm0,%xmm0
  mov    %rbx,%rdi
  mov    $0x1,%eax
  add    $0x4,%r12
  addss  -0x4(%r12),%xmm0
  addss  0x2c(%r12),%xmm0
  addss  0x5c(%r12),%xmm0
  addss  0x8c(%r12),%xmm0
  addss  0xbc(%r12),%xmm0
  divss  D142(%rip),%xmm0
  cvtss2sd %xmm0,%xmm0
  call   <printf@plt>
  cmp    %r12,%rbp
  jne    L8
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    0x108(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L26
  add    $0x118,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L26:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: tag: D164
data_type: string
name: parse_data
arguments: tag: D95
data_type: string
name: parse_data
arguments: tag: D101
data_type: f32[4]
name: parse_data
arguments: tag: D172
data_type: f32[4]
name: parse_data
arguments: tag: D124
data_type: f32[4]
name: parse_data
arguments: tag: D108
data_type: f32[4]
name: parse_data
arguments: tag: D222
data_type: f32[4]
name: parse_data
arguments: tag: D41
data_type: f32[4]
name: parse_data
arguments: tag: D149
data_type: f32[4]
name: parse_data
arguments: tag: D226
data_type: f32[4]
name: parse_data
arguments: tag: D86
data_type: f32[4]
name: parse_data
arguments: tag: D23
data_type: f32[4]
name: parse_data
arguments: tag: D109
data_type: f32[4]
name: parse_data
arguments: tag: D198
data_type: f32[4]
name: parse_data
arguments: tag: D49
data_type: f32[4]
name: parse_data
arguments: tag: D43
data_type: f32[4]
name: parse_data
arguments: tag: D26
data_type: f32[4]
name: parse_data
arguments: tag: D89
data_type: string
name: parse_data
arguments: tag: D142
data_type: byte[4]
name: parse_data
arguments: tag: D146
data_type: string
name: parse_data
arguments: tag: D90
data_type: string
name: parse_data
arguments: tag: D111
data_type: string

tool: D164:  YEAR RAINFALL (inches) 

tool: D95: %5d %15.1f


tool: {"D101": [4.300000190734863,4.300000190734863,4.300000190734863,3.0]}

tool: {"D172": [2.0,1.2000000476837158,0.20000000298023224,0.20000000298023224]}

tool: {"D124": [0.4000000059604645,2.4000000953674316,3.5,6.599999904632568]}

tool: {"D108": [8.5,8.199999809265137,1.2000000476837158,1.600000023841858]}

tool: {"D222": [2.4000000953674316,0.0,5.199999809265137,0.8999999761581421]}

tool: {"D41": [0.30000001192092896,0.8999999761581421,1.399999976158142,7.300000190734863]}

tool: {"D149": [9.100000381469727,8.5,6.699999809265137,4.300000190734863]}

tool: {"D226": [2.0999999046325684,0.800000011920929,0.20000000298023224,0.20000000298023224]}

tool: {"D86": [1.100000023841858,2.299999952316284,6.099999904632568,8.399999618530273]}

tool: {"D23": [7.199999809265137,9.899999618530273,8.399999618530273,3.299999952316284]}

tool: {"D109": [1.2000000476837158,0.800000011920929,0.4000000059604645,0.0]}

tool: {"D198": [0.6000000238418579,1.7000000476837158,4.300000190734863,6.199999809265137]}

tool: {"D49": [7.599999904632568,5.599999904632568,3.799999952316284,2.799999952316284]}

tool: {"D43": [3.799999952316284,0.20000000298023224,0.0,0.0]}

tool: {"D26": [0.0,1.2999999523162842,2.5999999046325684,5.199999809265137]}

tool: D89: 
The yearly average is %.1f inches.



tool: {"D142": [0x00,0x00,0xa0,0x40]}

tool: D146: MONTHLY AVERAGES: 


tool: D90:  Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

tool: D111: %4.1f 

assistant: ```c
int main(void) {
  const float rain[5][12] = {{4.3, 4.3, 4.3, 3.0, 2.0, 1.2, 0.2, 0.2, 0.4, 2.4, 3.5, 6.6}, {8.5, 8.2, 1.2, 1.6, 2.4, 0.0, 5.2, 0.9, 0.3, 0.9, 1.4, 7.3}, {9.1, 8.5, 6.7, 4.3, 2.1, 0.8, 0.2, 0.2, 1.1, 2.3, 6.1, 8.4}, {7.2, 9.9, 8.4, 3.3, 1.2, 0.8, 0.4, 0.0, 0.6, 1.7, 4.3, 6.2}, {7.6, 5.6, 3.8, 2.8, 3.8, 0.2, 0.0, 0.0, 0.0, 1.3, 2.6, 5.2}};
  int year, month;
  float subtot, total;
  printf(" YEAR RAINFALL (inches) \n");
  for (year = 0, total = 0; year < 5; year++) {
    for (month = 0, subtot = 0; month < 12; month++)
      subtot += rain[year][month];
    printf("%5d %15.1f\n", 2000 + year, subtot);
    total += subtot;
  }
  printf("\nThe yearly average is %.1f inches.\n\n", total / 5);
  printf("MONTHLY AVERAGES: \n\n");
  printf(" Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\n");
  for (month = 0; month < 12; month++) {
    for (year = 0, subtot = 0; year < 5; year++)
      subtot += rain[year][month];
    printf("%4.1f ", subtot / 5);
  }
  printf("\n");
  return 0;
}
```