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

```asm
<fdtril>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  mov    %edi,-0x44(%rbp)
  mov    %esi,-0x48(%rbp)
  cmpl   $0x0,-0x44(%rbp)
  jle    L30
  cmpl   $0x0,-0x48(%rbp)
  jle    L30
  fldt   0x10(%rbp)
  fldz
  fcomip %st(1),%st
  fstp   %st(0)
  jae    L30
  fld1
  fldt   0x10(%rbp)
  fcomip %st(1),%st
  fstp   %st(0)
  jbe    L36
L30:
  mov    $0x1,%esi
  lea    D4(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <mtherr@plt>
  fldz
  jmp    L50
L36:
  fildl  -0x44(%rbp)
  fstpt  -0x30(%rbp)
  fildl  -0x48(%rbp)
  fstpt  -0x20(%rbp)
  fldt   -0x30(%rbp)
  fldt   0xe4e(%rip)        # 2010 <_fini+0xd20>
  fmulp  %st,%st(1)
  fldt   -0x20(%rbp)
  fldt   0xe43(%rip)        # 2010 <_fini+0xd20>
  fmulp  %st,%st(1)
  fldt   0xe3b(%rip)        # 2010 <_fini+0xd20>
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  fxch   %st(1)
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  mov    $0x0,%eax
  call   <incbetl@plt>
  add    $0x30,%rsp
  mov    %eax,-0x4c(%rbp)
  fildl  -0x4c(%rbp)
  fstpt  -0x10(%rbp)
  fldt   0x10(%rbp)
  fldt   -0x10(%rbp)
  fcomip %st(1),%st
  fstp   %st(0)
  ja     L68
  fldt   0x10(%rbp)
  fldt   0xe05(%rip)        # 2020 <_fini+0xd30>
  fcomip %st(1),%st
  fstp   %st(0)
  jbe    L71
L68:
  fldt   -0x30(%rbp)
  fldt   0xde6(%rip)        # 2010 <_fini+0xd20>
  fmulp  %st,%st(1)
  fldt   -0x20(%rbp)
  fldt   0xddb(%rip)        # 2010 <_fini+0xd20>
  fmulp  %st,%st(1)
  fxch   %st(1)
  push   0x18(%rbp)
  push   0x10(%rbp)
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  mov    $0x0,%eax
  call   <incbil@plt>
  add    $0x30,%rsp
  mov    %eax,-0x4c(%rbp)
  fildl  -0x4c(%rbp)
  fstpt  -0x10(%rbp)
  fldt   -0x20(%rbp)
  fldt   -0x10(%rbp)
  fmulp  %st,%st(1)
  fldt   -0x20(%rbp)
  fsubp  %st,%st(1)
  fldt   -0x30(%rbp)
  fldt   -0x10(%rbp)
  fmulp  %st,%st(1)
  fdivrp %st,%st(1)
  fstpt  -0x40(%rbp)
  jmp    L12
L71:
  fld1
  fldt   0x10(%rbp)
  fsubrp %st,%st(1)
  fldt   -0x20(%rbp)
  fldt   0xd7e(%rip)        # 2010 <_fini+0xd20>
  fmulp  %st,%st(1)
  fldt   -0x30(%rbp)
  fldt   0xd73(%rip)        # 2010 <_fini+0xd20>
  fmulp  %st,%st(1)
  fxch   %st(2)
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  mov    $0x0,%eax
  call   <incbil@plt>
  add    $0x30,%rsp
  mov    %eax,-0x4c(%rbp)
  fildl  -0x4c(%rbp)
  fstpt  -0x10(%rbp)
  fldt   -0x20(%rbp)
  fldt   -0x10(%rbp)
  fmulp  %st,%st(1)
  fld1
  fldt   -0x10(%rbp)
  fsubrp %st,%st(1)
  fldt   -0x30(%rbp)
  fmulp  %st,%st(1)
  fdivrp %st,%st(1)
  fstpt  -0x40(%rbp)
L12:
  fldt   -0x40(%rbp)
L50:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D4
type_guessed: string

tool: D4: fdtril

assistant: ```c
long double fdtril(ia, ib, y)
int ia, ib;
long double y;
{
  long double a, b, w, x;
  if ((ia < 1) || (ib < 1) || (y <= 0.0L) || (y > 1.0L)) {
    mtherr("fdtril", 1);
    return (0.0L);
  }
  a = ia;
  b = ib;
  w = incbetl(0.5L * b, 0.5L * a, 0.5L);
  if (w > y || y < 0.001L) {
    w = incbil(0.5L * b, 0.5L * a, y);
    x = (b - b * w) / (a * w);
  } else {
    w = incbil(0.5L * a, 0.5L * b, 1.0L - y);
    x = b * w / (a * (1.0L - w));
  }
  return (x);
}
```