user: Translate the below assembly code into C programming language:

```asm
<stress_cpu_hyperbolic>:
  endbr64
  push   %rbx
  fldz
  xor    %ebx,%ebx
  sub    $0x40,%rsp
  nopl   (%rax)
L7:
  mov    %ebx,(%rsp)
  add    $0x1,%ebx
  fstpt  0x20(%rsp)
  fildl  (%rsp)
  fldt   0xefd(%rip)        # 2000 <_fini+0xca4>
  fmulp  %st,%st(1)
  fdivs  0xf05(%rip)        # 2010 <_fini+0xcb4>
  fstl   (%rsp)
  movsd  (%rsp),%xmm1
  fsts   0xc(%rsp)
  movapd %xmm1,%xmm0
  fstpt  0x30(%rsp)
  call   <cosh@plt>
  movsd  (%rsp),%xmm0
  mov    %rax,0x10(%rsp)
  call   <sinh@plt>
  fildll 0x10(%rsp)
  movsd  (%rsp),%xmm0
  mov    %rax,0x10(%rsp)
  fildll 0x10(%rsp)
  fmulp  %st,%st(1)
  fldt   0x20(%rsp)
  faddp  %st,%st(1)
  fstpt  0x20(%rsp)
  call   <cosh@plt>
  movsd  (%rsp),%xmm0
  mov    %rax,0x10(%rsp)
  call   <sinh@plt>
  fildll 0x10(%rsp)
  movss  0xc(%rsp),%xmm0
  mov    %rax,0x10(%rsp)
  fildll 0x10(%rsp)
  fmulp  %st,%st(1)
  fldt   0x20(%rsp)
  faddp  %st,%st(1)
  fstpt  0x20(%rsp)
  call   <coshf@plt>
  movss  0xc(%rsp),%xmm0
  mov    %rax,0x10(%rsp)
  call   <sinhf@plt>
  fildll 0x10(%rsp)
  mov    %rax,0x10(%rsp)
  fildll 0x10(%rsp)
  fmulp  %st,%st(1)
  fldt   0x20(%rsp)
  faddp  %st,%st(1)
  fstpt  0x20(%rsp)
  fldt   0x30(%rsp)
  fld    %st(0)
  faddp  %st,%st(1)
  fstpl  0x10(%rsp)
  movsd  0x10(%rsp),%xmm0
  call   <cosh@plt>
  movsd  (%rsp),%xmm0
  mov    %rax,0x10(%rsp)
  fildll 0x10(%rsp)
  fldt   0x20(%rsp)
  faddp  %st,%st(1)
  fstpt  0x20(%rsp)
  call   <cosh@plt>
  movss  0xc(%rsp),%xmm0
  mov    %rax,0x10(%rsp)
  fildll 0x10(%rsp)
  fldt   0x20(%rsp)
  faddp  %st,%st(1)
  fstpt  0x20(%rsp)
  call   <coshf@plt>
  mov    %rax,0x10(%rsp)
  fildll 0x10(%rsp)
  fldt   0x20(%rsp)
  faddp  %st,%st(1)
  fstpt  0x20(%rsp)
  fldt   0x30(%rsp)
  fmuls  0xdf3(%rip)        # 2014 <_fini+0xcb8>
  fstpl  0x10(%rsp)
  movsd  0x10(%rsp),%xmm0
  call   <sinh@plt>
  movsd  (%rsp),%xmm0
  mov    %rax,0x10(%rsp)
  fildll 0x10(%rsp)
  fldt   0x20(%rsp)
  faddp  %st,%st(1)
  fstpt  0x10(%rsp)
  call   <sinh@plt>
  movss  0xc(%rsp),%xmm0
  mov    %rax,(%rsp)
  fildll (%rsp)
  fldt   0x10(%rsp)
  faddp  %st,%st(1)
  fstpt  0x10(%rsp)
  call   <sinhf@plt>
  mov    %rax,(%rsp)
  fildll (%rsp)
  fldt   0x10(%rsp)
  faddp  %st,%st(1)
  cmp    $0x5dc,%ebx
  jne    L7
  sub    $0x10,%rsp
  fstpt  (%rsp)
  call   <stress_long_double_put@plt>
  add    $0x50,%rsp
  pop    %rbx
  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);
}
```