user: Converte this assembly snippet into its equivalent C code:

```asm
<check_long_double>:
  endbr64
  fldz
  sub    $0x28,%rsp
  fchs
  fstpt  (%rsp)
  flds   0xf4b(%rip)        # 2080 <_fini+0xd54>
  fstpt  0x10(%rsp)
  mov    0x10(%rsp),%rax
  mov    0x18(%rsp),%edx
  push   %rdx
  push   %rax
  xor    %eax,%eax
  push   0xecc(%rip)        # 2018 <_fini+0xcec>
  push   0xebe(%rip)        # 2010 <_fini+0xce4>
  push   0xeb0(%rip)        # 2008 <_fini+0xcdc>
  push   0xea2(%rip)        # 2000 <_fini+0xcd4>
  call   <comparecl@plt>
  add    $0x30,%rsp
  fldz
  fchs
  fstpt  (%rsp)
  flds   0xf0c(%rip)        # 2080 <_fini+0xd54>
  fstpt  0x10(%rsp)
  mov    0x10(%rsp),%rax
  mov    0x18(%rsp),%edx
  push   %rdx
  push   %rax
  xor    %eax,%eax
  push   0xe8d(%rip)        # 2018 <_fini+0xcec>
  push   0xe7f(%rip)        # 2010 <_fini+0xce4>
  push   0xe71(%rip)        # 2008 <_fini+0xcdc>
  push   0xe63(%rip)        # 2000 <_fini+0xcd4>
  call   <comparecl@plt>
  add    $0x30,%rsp
  fldz
  fchs
  fstpt  (%rsp)
  flds   0xed1(%rip)        # 2084 <_fini+0xd58>
  fstpt  0x10(%rsp)
  mov    0x10(%rsp),%rax
  mov    0x18(%rsp),%edx
  push   %rdx
  push   %rax
  xor    %eax,%eax
  push   0xe6e(%rip)        # 2038 <_fini+0xd0c>
  push   0xe60(%rip)        # 2030 <_fini+0xd04>
  push   0xe52(%rip)        # 2028 <_fini+0xcfc>
  push   0xe44(%rip)        # 2020 <_fini+0xcf4>
  call   <comparecl@plt>
  add    $0x30,%rsp
  fldz
  fchs
  fstpt  (%rsp)
  flds   0xe92(%rip)        # 2084 <_fini+0xd58>
  fstpt  0x10(%rsp)
  mov    0x10(%rsp),%rax
  mov    0x18(%rsp),%edx
  push   %rdx
  push   %rax
  xor    %eax,%eax
  push   0xe2f(%rip)        # 2038 <_fini+0xd0c>
  push   0xe21(%rip)        # 2030 <_fini+0xd04>
  push   0xe13(%rip)        # 2028 <_fini+0xcfc>
  push   0xe05(%rip)        # 2020 <_fini+0xcf4>
  call   <comparecl@plt>
  flds   0xe5a(%rip)        # 2080 <_fini+0xd54>
  add    $0x40,%rsp
  fstpt  (%rsp)
  mov    (%rsp),%rax
  mov    0x8(%rsp),%edx
  flds   0xe49(%rip)        # 2084 <_fini+0xd58>
  push   %rdx
  push   %rax
  fstpt  0x10(%rsp)
  mov    0x10(%rsp),%rax
  mov    0x18(%rsp),%edx
  push   %rdx
  push   %rax
  xor    %eax,%eax
  push   0xe04(%rip)        # 2058 <_fini+0xd2c>
  push   0xdf6(%rip)        # 2050 <_fini+0xd24>
  push   0xde8(%rip)        # 2048 <_fini+0xd1c>
  push   0xdda(%rip)        # 2040 <_fini+0xd14>
  call   <comparecl@plt>
  flds   0xe0f(%rip)        # 2080 <_fini+0xd54>
  add    $0x40,%rsp
  fstpt  (%rsp)
  mov    (%rsp),%rax
  mov    0x8(%rsp),%edx
  flds   0xdfe(%rip)        # 2084 <_fini+0xd58>
  push   %rdx
  push   %rax
  fstpt  0x10(%rsp)
  mov    0x10(%rsp),%rax
  mov    0x18(%rsp),%edx
  push   %rdx
  push   %rax
  xor    %eax,%eax
  push   0xdb9(%rip)        # 2058 <_fini+0xd2c>
  push   0xdab(%rip)        # 2050 <_fini+0xd24>
  push   0xd9d(%rip)        # 2048 <_fini+0xd1c>
  push   0xd8f(%rip)        # 2040 <_fini+0xd14>
  call   <comparecl@plt>
  flds   0xdc8(%rip)        # 2084 <_fini+0xd58>
  add    $0x40,%rsp
  fstpt  (%rsp)
  mov    (%rsp),%rax
  mov    0x8(%rsp),%edx
  push   %rdx
  push   %rax
  push   %rdx
  push   %rax
  xor    %eax,%eax
  push   0xda1(%rip)        # 2078 <_fini+0xd4c>
  push   0xd93(%rip)        # 2070 <_fini+0xd44>
  push   0xd85(%rip)        # 2068 <_fini+0xd3c>
  push   0xd77(%rip)        # 2060 <_fini+0xd34>
  call   <comparecl@plt>
  flds   0xd90(%rip)        # 2084 <_fini+0xd58>
  add    $0x40,%rsp
  fstpt  (%rsp)
  mov    (%rsp),%rax
  mov    0x8(%rsp),%edx
  push   %rdx
  push   %rax
  push   %rdx
  push   %rax
  xor    %eax,%eax
  push   0xd69(%rip)        # 2078 <_fini+0xd4c>
  push   0xd5b(%rip)        # 2070 <_fini+0xd44>
  push   0xd4d(%rip)        # 2068 <_fini+0xd3c>
  push   0xd3f(%rip)        # 2060 <_fini+0xd34>
  call   <comparecl@plt>
  add    $0x58,%rsp
  ret
```

assistant: ```c
void check_long_double(void) {
  do {
    do {
      long double a = __builtin_nanl("");
      long double b = -0.0l;
      _Complex long double cr = __builtin_complex(a, b);
      static _Complex long double cs = __builtin_complex(__builtin_nanl(""), -0.0l);
      comparecl(cr, __builtin_nanl(""), -0.0l);
      comparecl(cs, __builtin_nanl(""), -0.0l);
    } while (0);
    do {
      long double a = __builtin_infl();
      long double b = -0.0l;
      _Complex long double cr = __builtin_complex(a, b);
      static _Complex long double cs = __builtin_complex(__builtin_infl(), -0.0l);
      comparecl(cr, __builtin_infl(), -0.0l);
      comparecl(cs, __builtin_infl(), -0.0l);
    } while (0);
    do {
      long double a = __builtin_infl();
      long double b = __builtin_nanl("");
      _Complex long double cr = __builtin_complex(a, b);
      static _Complex long double cs = __builtin_complex(__builtin_infl(), __builtin_nanl(""));
      comparecl(cr, __builtin_infl(), __builtin_nanl(""));
      comparecl(cs, __builtin_infl(), __builtin_nanl(""));
    } while (0);
    do {
      long double a = __builtin_infl();
      long double b = __builtin_infl();
      _Complex long double cr = __builtin_complex(a, b);
      static _Complex long double cs = __builtin_complex(__builtin_infl(), __builtin_infl());
      comparecl(cr, __builtin_infl(), __builtin_infl());
      comparecl(cs, __builtin_infl(), __builtin_infl());
    } while (0);
  } while (0);
}
```