user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<eight_f3>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xa0,%rsp
  mov    %edi,-0x84(%rbp)
  mov    %esi,-0x88(%rbp)
  mov    %edx,-0x8c(%rbp)
  mov    %ecx,-0x90(%rbp)
  mov    %r8d,-0x94(%rbp)
  mov    -0x88(%rbp),%edx
  mov    -0x84(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <probability@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x80(%rbp)
  mov    -0x8c(%rbp),%edx
  mov    -0x84(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <probability@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x78(%rbp)
  mov    -0x90(%rbp),%edx
  mov    -0x84(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <probability@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x94(%rbp),%edx
  mov    -0x84(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <probability@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x68(%rbp)
  mov    -0x8c(%rbp),%edx
  mov    -0x88(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <probability@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x60(%rbp)
  mov    -0x90(%rbp),%edx
  mov    -0x88(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <probability@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x58(%rbp)
  mov    -0x94(%rbp),%edx
  mov    -0x88(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <probability@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x50(%rbp)
  mov    -0x90(%rbp),%edx
  mov    -0x8c(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <probability@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x48(%rbp)
  mov    -0x94(%rbp),%edx
  mov    -0x8c(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <probability@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x40(%rbp)
  mov    -0x94(%rbp),%edx
  mov    -0x90(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <probability@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x38(%rbp)
  movsd  D31(%rip),%xmm0
  subsd  -0x60(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D31(%rip),%xmm0
  subsd  -0x58(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  D31(%rip),%xmm0
  subsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  D31(%rip),%xmm0
  subsd  -0x50(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  D31(%rip),%xmm0
  subsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  D31(%rip),%xmm0
  subsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x60(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x38(%rbp),%xmm1
  movsd  -0x50(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x80(%rbp),%xmm0
  subsd  -0x70(%rbp),%xmm0
  mulsd  -0x58(%rbp),%xmm0
  addsd  -0x70(%rbp),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x58(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x40(%rbp),%xmm2
  movsd  -0x50(%rbp),%xmm0
  mulsd  -0x48(%rbp),%xmm0
  addsd  %xmm0,%xmm2
  movsd  -0x80(%rbp),%xmm0
  subsd  -0x78(%rbp),%xmm0
  mulsd  -0x60(%rbp),%xmm0
  addsd  -0x78(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x30(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x38(%rbp),%xmm2
  movsd  -0x28(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  addsd  %xmm0,%xmm2
  movsd  -0x78(%rbp),%xmm0
  subsd  -0x70(%rbp),%xmm0
  mulsd  -0x48(%rbp),%xmm0
  addsd  -0x70(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x48(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x18(%rbp),%xmm2
  movsd  -0x30(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  addsd  %xmm0,%xmm2
  movsd  -0x78(%rbp),%xmm0
  subsd  -0x68(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  addsd  -0x68(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x20(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x18(%rbp),%xmm2
  movsd  -0x28(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  addsd  %xmm0,%xmm2
  movsd  -0x70(%rbp),%xmm0
  subsd  -0x68(%rbp),%xmm0
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0x68(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x58(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  -0x60(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  addsd  %xmm0,%xmm2
  movsd  -0x68(%rbp),%xmm0
  subsd  -0x80(%rbp),%xmm0
  mulsd  -0x18(%rbp),%xmm0
  addsd  -0x80(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: label: D31
type_guessed: f64

tool: D31: 1

assistant: ```c
double eight_f3(int a, int b, int c, int d, int e) {
  double ab, ac, ad, ae, bc, bd, be, cb, cd, ce, db, dc, de, eb, ec, ed;
  ab = probability(a, b);
  ac = probability(a, c);
  ad = probability(a, d);
  ae = probability(a, e);
  bc = probability(b, c);
  bd = probability(b, d);
  be = probability(b, e);
  cd = probability(c, d);
  ce = probability(c, e);
  de = probability(d, e);
  cb = 1.0 - bc;
  db = 1.0 - bd;
  dc = 1.0 - cd;
  eb = 1.0 - be;
  ec = 1.0 - ce;
  ed = 1.0 - de;
  return (bc * de + be * dc) * ((ab - ad) * bd + ad) + (bd * ce + be * cd) * ((ab - ac) * bc + ac) + (cb * de + db * ce) * ((ac - ad) * cd + ad) + (cd * eb + cb * ed) * ((ac - ae) * ce + ae) + (dc * eb + db * ec) * ((ad - ae) * de + ae) + (bd * ec + bc * ed) * ((ae - ab) * eb + ab);
}
```