user: What is the c source code of the assembly code below:

```asm
<stress_cpu_hyperbolic>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x90,%rsp
  mov    %rdi,-0x78(%rbp)
  fldz
  fstpt  -0x40(%rbp)
  movl   $0x0,-0x68(%rbp)
  jmp    L0
L18:
  fildl  -0x68(%rbp)
  fldt   0xe3a(%rip)        # 2000 <_fini+0xc18>
  fmulp  %st,%st(1)
  fldt   0xe42(%rip)        # 2010 <_fini+0xc28>
  fdivrp %st,%st(1)
  fstpt  -0x30(%rbp)
  fldt   -0x30(%rbp)
  fstpl  -0x58(%rbp)
  fldt   -0x30(%rbp)
  fstps  -0x64(%rbp)
  fldt   -0x30(%rbp)
  fstpl  -0x90(%rbp)
  movsd  -0x90(%rbp),%xmm0
  call   <cosh@plt>
  mov    %rax,-0x90(%rbp)
  fildll -0x90(%rbp)
  fstpt  -0x90(%rbp)
  fldt   -0x30(%rbp)
  fstpl  -0x80(%rbp)
  movsd  -0x80(%rbp),%xmm0
  call   <sinh@plt>
  mov    %rax,-0x80(%rbp)
  fildll -0x80(%rbp)
  fldt   -0x90(%rbp)
  fmulp  %st,%st(1)
  fldt   -0x40(%rbp)
  faddp  %st,%st(1)
  fstpt  -0x40(%rbp)
  mov    -0x58(%rbp),%rax
  movq   %rax,%xmm0
  call   <cosh@plt>
  mov    %rax,-0x90(%rbp)
  fildll -0x90(%rbp)
  fstpt  -0x90(%rbp)
  mov    -0x58(%rbp),%rax
  movq   %rax,%xmm0
  call   <sinh@plt>
  mov    %rax,-0x80(%rbp)
  fildll -0x80(%rbp)
  fldt   -0x90(%rbp)
  fmulp  %st,%st(1)
  fldt   -0x40(%rbp)
  faddp  %st,%st(1)
  fstpt  -0x40(%rbp)
  mov    -0x64(%rbp),%eax
  movd   %eax,%xmm0
  call   <coshf@plt>
  mov    %rax,-0x90(%rbp)
  fildll -0x90(%rbp)
  fstpt  -0x90(%rbp)
  mov    -0x64(%rbp),%eax
  movd   %eax,%xmm0
  call   <sinhf@plt>
  mov    %rax,-0x80(%rbp)
  fildll -0x80(%rbp)
  fldt   -0x90(%rbp)
  fmulp  %st,%st(1)
  fldt   -0x40(%rbp)
  faddp  %st,%st(1)
  fstpt  -0x40(%rbp)
  fldt   -0x30(%rbp)
  fadd   %st(0),%st
  fstpt  -0x20(%rbp)
  fldt   -0x30(%rbp)
  fstpl  -0x50(%rbp)
  fldt   -0x30(%rbp)
  fstps  -0x60(%rbp)
  fldt   -0x20(%rbp)
  fstpl  -0x90(%rbp)
  movsd  -0x90(%rbp),%xmm0
  call   <cosh@plt>
  mov    %rax,-0x90(%rbp)
  fildll -0x90(%rbp)
  fldt   -0x40(%rbp)
  faddp  %st,%st(1)
  fstpt  -0x40(%rbp)
  mov    -0x50(%rbp),%rax
  movq   %rax,%xmm0
  call   <cosh@plt>
  mov    %rax,-0x90(%rbp)
  fildll -0x90(%rbp)
  fldt   -0x40(%rbp)
  faddp  %st,%st(1)
  fstpt  -0x40(%rbp)
  mov    -0x60(%rbp),%eax
  movd   %eax,%xmm0
  call   <coshf@plt>
  mov    %rax,-0x90(%rbp)
  fildll -0x90(%rbp)
  fldt   -0x40(%rbp)
  faddp  %st,%st(1)
  fstpt  -0x40(%rbp)
  fldt   -0x30(%rbp)
  fldt   0xcdd(%rip)        # 2020 <_fini+0xc38>
  fmulp  %st,%st(1)
  fstpt  -0x10(%rbp)
  fldt   -0x30(%rbp)
  fstpl  -0x48(%rbp)
  fldt   -0x30(%rbp)
  fstps  -0x5c(%rbp)
  fldt   -0x10(%rbp)
  fstpl  -0x90(%rbp)
  movsd  -0x90(%rbp),%xmm0
  call   <sinh@plt>
  mov    %rax,-0x90(%rbp)
  fildll -0x90(%rbp)
  fldt   -0x40(%rbp)
  faddp  %st,%st(1)
  fstpt  -0x40(%rbp)
  mov    -0x48(%rbp),%rax
  movq   %rax,%xmm0
  call   <sinh@plt>
  mov    %rax,-0x90(%rbp)
  fildll -0x90(%rbp)
  fldt   -0x40(%rbp)
  faddp  %st,%st(1)
  fstpt  -0x40(%rbp)
  mov    -0x5c(%rbp),%eax
  movd   %eax,%xmm0
  call   <sinhf@plt>
  mov    %rax,-0x90(%rbp)
  fildll -0x90(%rbp)
  fldt   -0x40(%rbp)
  faddp  %st,%st(1)
  fstpt  -0x40(%rbp)
  addl   $0x1,-0x68(%rbp)
L0:
  cmpl   $0x5db,-0x68(%rbp)
  jle    L18
  push   -0x38(%rbp)
  push   -0x40(%rbp)
  call   <stress_long_double_put@plt>
  add    $0x10,%rsp
  nop
  leave
  ret
```

assistant: ```c
void __attribute__((hot)) stress_cpu_hyperbolic(const char *name) {
  int i;
  long double d_sum = 0.0L;
  (void)name;
  for (i = 0; i < 1500; i++) {
    long double theta = (2.0L * (3.14159265358979323846264338327950288419716939937511L) * (long double)i) / 1500.0L;
    {
      double thetad = (double)theta;
      float thetaf = (float)theta;
      d_sum += (((long double)cosh((double)(theta))) * ((long double)sinh((double)(theta))));
      d_sum += ((long double)cosh(thetad) * (long double)sinh(thetad));
      d_sum += ((long double)coshf(thetaf) * (long double)sinhf(thetaf));
    }
    {
      long double thetal = theta * 2.0L;
      double thetad = (double)theta;
      float thetaf = (float)theta;
      d_sum += ((long double)cosh((double)(thetal)));
      d_sum += (long double)cosh(thetad);
      d_sum += (long double)coshf(thetaf);
    }
    {
      long double thetal = theta * 3.0L;
      double thetad = (double)theta;
      float thetaf = (float)theta;
      d_sum += ((long double)sinh((double)(thetal)));
      d_sum += (long double)sinh(thetad);
      d_sum += (long double)sinhf(thetaf);
    }
  }
  stress_long_double_put(d_sum);
}
```