user: 下面的汇编指令对应的C源代码是什么：

```asm
<rf_hyp2f1_core>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  movsd  %xmm0,-0x38(%rbp)
  mov    %edi,-0x3c(%rbp)
  movsd  %xmm1,-0x48(%rbp)
  movsd  %xmm2,-0x50(%rbp)
  mov    %esi,-0x40(%rbp)
  mov    -0x3c(%rbp),%eax
  not    %eax
  mov    %eax,-0x24(%rbp)
  mov    -0x50(%rbp),%rdx
  mov    -0x20(%rbp),%eax
  movq   %rdx,%xmm0
  mov    %eax,%edi
  call   <mpf_init_set_d@plt>
  mov    -0x40(%rbp),%eax
  mov    %eax,-0x1c(%rbp)
  mov    -0x1c(%rbp),%edx
  mov    -0x18(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <mpf_init2@plt>
  mov    -0x18(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <mpf_set_si@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x24(%rbp),%xmm0
  addsd  -0x38(%rbp),%xmm0
  movq   %xmm0,%rdx
  mov    -0x14(%rbp),%eax
  movq   %rdx,%xmm0
  mov    %eax,%edi
  call   <mpf_init_set_d@plt>
  mov    -0x3c(%rbp),%edx
  mov    -0x24(%rbp),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <mpf_init_set_si@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x24(%rbp),%xmm0
  addsd  -0x48(%rbp),%xmm0
  movq   %xmm0,%rdx
  mov    -0xc(%rbp),%eax
  movq   %rdx,%xmm0
  mov    %eax,%edi
  call   <mpf_init_set_d@plt>
  mov    -0x3c(%rbp),%eax
  not    %eax
  mov    %eax,-0x28(%rbp)
  jmp    L17
L3:
  mov    -0x20(%rbp),%edx
  mov    -0x18(%rbp),%ecx
  mov    -0x18(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <mpf_mul@plt>
  mov    -0x14(%rbp),%edx
  mov    -0x18(%rbp),%ecx
  mov    -0x18(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <mpf_mul@plt>
  mov    -0x10(%rbp),%edx
  mov    -0x18(%rbp),%ecx
  mov    -0x18(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <mpf_mul@plt>
  mov    -0x28(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x18(%rbp),%ecx
  mov    -0x18(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <mpf_div_ui@plt>
  mov    -0xc(%rbp),%edx
  mov    -0x18(%rbp),%ecx
  mov    -0x18(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <mpf_div@plt>
  mov    -0x18(%rbp),%ecx
  mov    -0x18(%rbp),%eax
  mov    $0x1,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <mpf_add_ui@plt>
  mov    -0x14(%rbp),%ecx
  mov    -0x14(%rbp),%eax
  mov    $0x1,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <mpf_sub_ui@plt>
  mov    -0x10(%rbp),%ecx
  mov    -0x10(%rbp),%eax
  mov    $0x1,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <mpf_sub_ui@plt>
  mov    -0xc(%rbp),%ecx
  mov    -0xc(%rbp),%eax
  mov    $0x1,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <mpf_sub_ui@plt>
  subl   $0x1,-0x28(%rbp)
L17:
  cmpl   $0x0,-0x28(%rbp)
  jns    L3
  mov    -0x18(%rbp),%eax
  mov    %eax,%edi
  call   <mpf_get_d@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x18(%rbp),%eax
  mov    %eax,%edi
  call   <mpf_clear@plt>
  mov    -0x14(%rbp),%eax
  mov    %eax,%edi
  call   <mpf_clear@plt>
  mov    -0x10(%rbp),%eax
  mov    %eax,%edi
  call   <mpf_clear@plt>
  mov    -0xc(%rbp),%eax
  mov    %eax,%edi
  call   <mpf_clear@plt>
  mov    -0x20(%rbp),%eax
  mov    %eax,%edi
  call   <mpf_clear@plt>
  movsd  -0x8(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

assistant: ```c
double rf_hyp2f1_core(double a, int b, double c, double w, int mpf_prec) {
  double d_result;
  mpf_t ma, mb, mc, mw;
  mpf_t result;
  int i;
  int start_iter = -(b + 1);
  mpf_init_set_d(mw, w);
  mp_bitcnt_t prec = mpf_prec;
  mpf_init2(result, prec);
  mpf_set_si(result, 1);
  mpf_init_set_d(ma, a + start_iter);
  mpf_init_set_si(mb, b + start_iter);
  mpf_init_set_d(mc, c + start_iter);
  for (i = -(b + 1); i >= 0; i--) {
    mpf_mul(result, result, mw);
    mpf_mul(result, result, ma);
    mpf_mul(result, result, mb);
    mpf_div_ui(result, result, i + 1);
    mpf_div(result, result, mc);
    mpf_add_ui(result, result, 1);
    mpf_sub_ui(ma, ma, 1);
    mpf_sub_ui(mb, mb, 1);
    mpf_sub_ui(mc, mc, 1);
  }
  d_result = mpf_get_d(result);
  mpf_clear(result);
  mpf_clear(ma);
  mpf_clear(mb);
  mpf_clear(mc);
  mpf_clear(mw);
  return d_result;
}
```