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

```asm
<eight_f3>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x50,%rsp
  mov    %edi,%r14d
  mov    %esi,%r13d
  mov    %edx,%r12d
  mov    %ecx,%ebx
  mov    %r8d,%ebp
  call   <probability@plt>
  movsd  %xmm0,0x10(%rsp)
  mov    %r12d,%esi
  mov    %r14d,%edi
  call   <probability@plt>
  movsd  %xmm0,0x18(%rsp)
  mov    %ebx,%esi
  mov    %r14d,%edi
  call   <probability@plt>
  movsd  %xmm0,0x20(%rsp)
  mov    %ebp,%esi
  mov    %r14d,%edi
  call   <probability@plt>
  movsd  %xmm0,0x28(%rsp)
  mov    %r12d,%esi
  mov    %r13d,%edi
  call   <probability@plt>
  movsd  %xmm0,0x30(%rsp)
  mov    %ebx,%esi
  mov    %r13d,%edi
  call   <probability@plt>
  movsd  %xmm0,0x38(%rsp)
  mov    %ebp,%esi
  mov    %r13d,%edi
  call   <probability@plt>
  movsd  %xmm0,0x40(%rsp)
  mov    %ebx,%esi
  mov    %r12d,%edi
  call   <probability@plt>
  movsd  %xmm0,0x48(%rsp)
  mov    %ebp,%esi
  mov    %r12d,%edi
  call   <probability@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %ebp,%esi
  mov    %ebx,%edi
  call   <probability@plt>
  movapd %xmm0,%xmm7
  movsd  D3(%rip),%xmm2
  movapd %xmm2,%xmm5
  movsd  0x30(%rsp),%xmm15
  subsd  %xmm15,%xmm5
  movapd %xmm2,%xmm8
  movsd  0x38(%rsp),%xmm10
  subsd  %xmm10,%xmm8
  movapd %xmm2,%xmm6
  movsd  0x48(%rsp),%xmm9
  subsd  %xmm9,%xmm6
  movapd %xmm2,%xmm3
  movsd  0x40(%rsp),%xmm14
  subsd  %xmm14,%xmm3
  movapd %xmm2,%xmm4
  movsd  0x8(%rsp),%xmm13
  subsd  %xmm13,%xmm4
  subsd  %xmm0,%xmm2
  movapd %xmm15,%xmm1
  mulsd  %xmm0,%xmm1
  movapd %xmm1,%xmm0
  movapd %xmm14,%xmm1
  mulsd  %xmm6,%xmm1
  addsd  %xmm1,%xmm0
  movsd  0x10(%rsp),%xmm11
  movapd %xmm11,%xmm1
  movsd  0x20(%rsp),%xmm12
  subsd  %xmm12,%xmm1
  mulsd  %xmm10,%xmm1
  addsd  %xmm12,%xmm1
  mulsd  %xmm1,%xmm0
  movapd %xmm10,%xmm1
  mulsd  %xmm13,%xmm1
  movapd %xmm14,%xmm13
  movapd %xmm9,%xmm14
  mulsd  %xmm9,%xmm13
  addsd  %xmm13,%xmm1
  movapd %xmm11,%xmm9
  movsd  0x18(%rsp),%xmm13
  subsd  %xmm13,%xmm9
  mulsd  %xmm15,%xmm9
  addsd  %xmm13,%xmm9
  mulsd  %xmm9,%xmm1
  addsd  %xmm1,%xmm0
  movapd %xmm7,%xmm1
  mulsd  %xmm5,%xmm1
  movsd  0x8(%rsp),%xmm9
  mulsd  %xmm8,%xmm9
  addsd  %xmm9,%xmm1
  movapd %xmm13,%xmm9
  subsd  %xmm12,%xmm9
  mulsd  %xmm14,%xmm9
  addsd  %xmm12,%xmm9
  mulsd  %xmm9,%xmm1
  addsd  %xmm1,%xmm0
  movapd %xmm14,%xmm1
  mulsd  %xmm3,%xmm1
  mulsd  %xmm2,%xmm5
  addsd  %xmm5,%xmm1
  movapd %xmm13,%xmm5
  movsd  0x28(%rsp),%xmm14
  subsd  %xmm14,%xmm5
  mulsd  0x8(%rsp),%xmm5
  addsd  %xmm14,%xmm5
  mulsd  %xmm5,%xmm1
  addsd  %xmm1,%xmm0
  mulsd  %xmm3,%xmm6
  mulsd  %xmm4,%xmm8
  addsd  %xmm8,%xmm6
  subsd  %xmm14,%xmm12
  movapd %xmm12,%xmm1
  mulsd  %xmm7,%xmm1
  movapd %xmm14,%xmm7
  addsd  %xmm14,%xmm1
  mulsd  %xmm1,%xmm6
  addsd  %xmm6,%xmm0
  movapd %xmm10,%xmm1
  mulsd  %xmm4,%xmm1
  mulsd  %xmm15,%xmm2
  addsd  %xmm1,%xmm2
  subsd  %xmm11,%xmm7
  movapd %xmm7,%xmm1
  mulsd  %xmm3,%xmm1
  addsd  %xmm11,%xmm1
  mulsd  %xmm2,%xmm1
  addsd  %xmm1,%xmm0
  add    $0x50,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D3
datatype: f64

tool: D3: 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);
}
```