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

```asm
<testl>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  mov    %rsi,%rbp
  push   %rbx
  sub    $0x20,%rsp
  mov    %edi,0x1c(%rsp)
  push   0x58(%rsp)
  push   0x58(%rsp)
  call   <__finitel@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  mov    %rax,%rbx
  call   <__fpclassifyl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <__isinfl@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  call   <__isnanl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <__signbitl@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  call   <acoshl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <acosl@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  call   <asinhl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <asinl@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  push   0x78(%rsp)
  push   0x78(%rsp)
  call   <atan2l@plt>
  add    $0x30,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <atanhl@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  call   <atanl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <cbrtl@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  call   <ceill@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  push   0x68(%rsp)
  push   0x68(%rsp)
  call   <copysignl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <coshl@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  call   <cosl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <erfcl@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  call   <erfl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <exp2l@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  call   <expl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <expm1l@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  call   <fabsl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  push   0x68(%rsp)
  push   0x68(%rsp)
  call   <fdiml@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <floorl@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  push   0x78(%rsp)
  push   0x78(%rsp)
  push   0x88(%rsp)
  push   0x88(%rsp)
  call   <fmal@plt>
  add    %eax,%ebx
  add    $0x40,%rsp
  push   0x58(%rsp)
  push   0x58(%rsp)
  push   0x68(%rsp)
  push   0x68(%rsp)
  call   <fmaxl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  push   0x68(%rsp)
  push   0x68(%rsp)
  call   <fminl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  push   0x68(%rsp)
  push   0x68(%rsp)
  call   <fmodl@plt>
  add    $0x20,%rsp
  lea    0x1c(%rsp),%r14
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  mov    %r14,%rdi
  call   <frexpl@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  push   0x78(%rsp)
  push   0x78(%rsp)
  call   <hypotl@plt>
  add    $0x30,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <ilogbl@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  mov    0x3c(%rsp),%edi
  call   <ldexpl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <lgammal@plt>
  fldt   0x60(%rsp)
  sub    $0x10,%rsp
  mov    %rax,%r13
  add    %r13d,%ebx
  fld    %st(0)
  fstpt  (%rsp)
  fstpt  0x20(%rsp)
  call   <llrintl@plt>
  mov    %rax,%r12
  pop    %rax
  pop    %rdx
  fldt   0x10(%rsp)
  add    %r12d,%ebx
  fld    %st(0)
  fstpt  (%rsp)
  fstpt  0x10(%rsp)
  call   <llroundl@plt>
  fldt   0x10(%rsp)
  sub    $0x10,%rsp
  add    %eax,%ebx
  fstpt  (%rsp)
  call   <log10l@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <log1pl@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  call   <logbl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <logl@plt>
  fldt   0x60(%rsp)
  sub    $0x10,%rsp
  mov    %rax,%r13
  add    %r13d,%ebx
  fld    %st(0)
  fstpt  (%rsp)
  fstpt  0x20(%rsp)
  call   <lrintl@plt>
  pop    %rcx
  pop    %rsi
  fldt   0x10(%rsp)
  mov    %rax,%r12
  add    %r12d,%ebx
  fld    %st(0)
  fstpt  (%rsp)
  fstpt  0x10(%rsp)
  call   <lroundl@plt>
  fldt   0x10(%rsp)
  sub    $0x10,%rsp
  lea    0x70(%rsp),%rdi
  add    %eax,%ebx
  fstpt  (%rsp)
  call   <modfl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <nearbyintl@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  push   0x78(%rsp)
  push   0x78(%rsp)
  call   <nextafterl@plt>
  add    $0x30,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  push   0x68(%rsp)
  push   0x68(%rsp)
  call   <powl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  push   0x68(%rsp)
  push   0x68(%rsp)
  call   <remainderl@plt>
  add    $0x20,%rsp
  mov    %r14,%rdi
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  push   0x68(%rsp)
  push   0x68(%rsp)
  call   <remquol@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <rintl@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  call   <roundl@plt>
  add    $0x20,%rsp
  mov    %rbp,%rdi
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <scalblnl@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  mov    0x3c(%rsp),%edi
  call   <scalbnl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <sinhl@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  call   <sinl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <sqrtl@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  call   <tanhl@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <tanl@plt>
  push   0x68(%rsp)
  push   0x68(%rsp)
  add    %eax,%ebx
  call   <tgammal@plt>
  add    $0x20,%rsp
  push   0x58(%rsp)
  add    %eax,%ebx
  push   0x58(%rsp)
  call   <truncl@plt>
  add    $0x30,%rsp
  add    %ebx,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
```

assistant: ```c
int testl(long double long_double_x, int int_x, long long_x) {
  int r = 0;
  r += __finitel(long_double_x);
  r += __fpclassifyl(long_double_x);
  r += __isinfl(long_double_x);
  r += __isnanl(long_double_x);
  r += __signbitl(long_double_x);
  r += acoshl(long_double_x);
  r += acosl(long_double_x);
  r += asinhl(long_double_x);
  r += asinl(long_double_x);
  r += atan2l(long_double_x, long_double_x);
  r += atanhl(long_double_x);
  r += atanl(long_double_x);
  r += cbrtl(long_double_x);
  r += ceill(long_double_x);
  r += copysignl(long_double_x, long_double_x);
  r += coshl(long_double_x);
  r += cosl(long_double_x);
  r += erfcl(long_double_x);
  r += erfl(long_double_x);
  r += exp2l(long_double_x);
  r += expl(long_double_x);
  r += expm1l(long_double_x);
  r += fabsl(long_double_x);
  r += fdiml(long_double_x, long_double_x);
  r += floorl(long_double_x);
  r += fmal(long_double_x, long_double_x, long_double_x);
  r += fmaxl(long_double_x, long_double_x);
  r += fminl(long_double_x, long_double_x);
  r += fmodl(long_double_x, long_double_x);
  r += frexpl(long_double_x, &int_x);
  r += hypotl(long_double_x, long_double_x);
  r += ilogbl(long_double_x);
  r += ldexpl(long_double_x, int_x);
  r += lgammal(long_double_x);
  r += llrintl(long_double_x);
  r += llroundl(long_double_x);
  r += log10l(long_double_x);
  r += log1pl(long_double_x);
  r += logbl(long_double_x);
  r += logl(long_double_x);
  r += lrintl(long_double_x);
  r += lroundl(long_double_x);
  r += modfl(long_double_x, &long_double_x);
  r += nearbyintl(long_double_x);
  r += nextafterl(long_double_x, long_double_x);
  r += powl(long_double_x, long_double_x);
  r += remainderl(long_double_x, long_double_x);
  r += remquol(long_double_x, long_double_x, &int_x);
  r += rintl(long_double_x);
  r += roundl(long_double_x);
  r += scalblnl(long_double_x, long_x);
  r += scalbnl(long_double_x, int_x);
  r += sinhl(long_double_x);
  r += sinl(long_double_x);
  r += sqrtl(long_double_x);
  r += tanhl(long_double_x);
  r += tanl(long_double_x);
  r += tgammal(long_double_x);
  r += truncl(long_double_x);
  return r;
}
```