user: 请从给定的汇编指令推导出C源代码:

```asm
<calcQuarterbackRating>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  movss  %xmm0,-0x14(%rbp)
  movss  %xmm1,-0x18(%rbp)
  movss  %xmm2,-0x1c(%rbp)
  movss  %xmm3,-0x20(%rbp)
  movss  %xmm4,-0x24(%rbp)
  movss  -0x14(%rbp),%xmm0
  movaps %xmm0,%xmm1
  divss  -0x18(%rbp),%xmm1
  movss  D24(%rip),%xmm0
  mulss  %xmm1,%xmm0
  movss  D85(%rip),%xmm1
  subss  %xmm1,%xmm0
  movss  D35(%rip),%xmm1
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x10(%rbp)
  movss  -0x1c(%rbp),%xmm0
  movaps %xmm0,%xmm1
  divss  -0x18(%rbp),%xmm1
  movss  D24(%rip),%xmm0
  mulss  %xmm1,%xmm0
  movss  D95(%rip),%xmm1
  divss  %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
  movss  -0x20(%rbp),%xmm0
  movaps %xmm0,%xmm1
  divss  -0x18(%rbp),%xmm1
  movss  D24(%rip),%xmm0
  mulss  %xmm0,%xmm1
  movss  D116(%rip),%xmm0
  subss  %xmm1,%xmm0
  movss  D27(%rip),%xmm1
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x8(%rbp)
  movss  -0x24(%rbp),%xmm0
  divss  -0x18(%rbp),%xmm0
  movss  D28(%rip),%xmm1
  subss  %xmm1,%xmm0
  movss  D27(%rip),%xmm1
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x4(%rbp)
  mov    -0x10(%rbp),%eax
  pxor   %xmm1,%xmm1
  movd   %eax,%xmm0
  call   <max@plt>
  mov    %eax,%edx
  mov    D135(%rip),%eax
  movd   %eax,%xmm0
  mov    %edx,%edi
  call   <min@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0xc(%rbp),%eax
  pxor   %xmm1,%xmm1
  movd   %eax,%xmm0
  call   <max@plt>
  mov    %eax,%edx
  mov    D135(%rip),%eax
  movd   %eax,%xmm0
  mov    %edx,%edi
  call   <min@plt>
  movd   %xmm0,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x8(%rbp),%eax
  pxor   %xmm1,%xmm1
  movd   %eax,%xmm0
  call   <max@plt>
  mov    %eax,%edx
  mov    D135(%rip),%eax
  movd   %eax,%xmm0
  mov    %edx,%edi
  call   <min@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x8(%rbp)
  movss  -0x10(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  addss  -0x8(%rbp),%xmm0
  movss  %xmm0,-0x28(%rbp)
  mov    -0x4(%rbp),%eax
  pxor   %xmm1,%xmm1
  movd   %eax,%xmm0
  call   <max@plt>
  mov    %eax,%edx
  mov    D135(%rip),%eax
  movd   %eax,%xmm0
  mov    %edx,%edi
  call   <min@plt>
  addss  -0x28(%rbp),%xmm0
  movss  D130(%rip),%xmm1
  divss  %xmm1,%xmm0
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D24
datatype: byte[4]
name: unpack_data
arguments: data_tag: D85
datatype: byte[4]
name: unpack_data
arguments: data_tag: D35
datatype: byte[4]
name: unpack_data
arguments: data_tag: D95
datatype: byte[4]
name: unpack_data
arguments: data_tag: D116
datatype: byte[4]
name: unpack_data
arguments: data_tag: D27
datatype: byte[4]
name: unpack_data
arguments: data_tag: D28
datatype: byte[4]
name: unpack_data
arguments: data_tag: D135
datatype: byte[4]
name: unpack_data
arguments: data_tag: D130
datatype: byte[4]

tool: {"D24": [0x00,0x00,0xc8,0x42]}

tool: {"D85": [0x00,0x00,0xf0,0x41]}

tool: {"D35": [0x00,0x00,0xa0,0x41]}

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

tool: {"D116": [0x00,0x00,0x18,0x41]}

tool: {"D27": [0x00,0x00,0x80,0x40]}

tool: {"D28": [0x00,0x00,0x40,0x40]}

tool: {"D135": [0x00,0x00,0x18,0x40]}

tool: {"D130": [0x8f,0xc2,0x75,0x3d]}

assistant: ```c
float calcQuarterbackRating(float Comp, float Att, float TDs, float Int, float Yards) {
  float a, b, c, d;
  a = (((Comp / Att) * 100.0F) - 30.0F) / 20.0F;
  b = ((TDs / Att) * 100.0F) / 5.0F;
  c = (9.5F - ((Int / Att) * 100.0F)) / 4.0F;
  d = ((Yards / Att) - 3.0F) / 4.0F;
  a = min(max(a, 0.0F), 2.375F);
  b = min(max(b, 0.0F), 2.375F);
  c = min(max(c, 0.0F), 2.375F);
  return (a + b + c + min(max(d, 0.0F), 2.375F)) / .06F;
}
```