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

```asm
<check_long_double>:
  endbr64
  sub    $0x28,%rsp
  fldz
  fchs
  fstpt  (%rsp)
  flds   0xf52(%rip)        # 2080 <_fini+0xd44>
  fstpt  0x10(%rsp)
  mov    0x10(%rsp),%rax
  mov    0x18(%rsp),%edx
  push   %rdx
  push   %rax
  push   0xed5(%rip)        # 2018 <_fini+0xcdc>
  push   0xec7(%rip)        # 2010 <_fini+0xcd4>
  push   0xeb9(%rip)        # 2008 <_fini+0xccc>
  push   0xeab(%rip)        # 2000 <_fini+0xcc4>
  mov    $0x0,%eax
  call   <comparecl@plt>
  add    $0x30,%rsp
  fldz
  fchs
  fstpt  (%rsp)
  flds   0xf10(%rip)        # 2080 <_fini+0xd44>
  fstpt  0x10(%rsp)
  mov    0x10(%rsp),%rax
  mov    0x18(%rsp),%edx
  push   %rdx
  push   %rax
  push   0xe93(%rip)        # 2018 <_fini+0xcdc>
  push   0xe85(%rip)        # 2010 <_fini+0xcd4>
  push   0xe77(%rip)        # 2008 <_fini+0xccc>
  push   0xe69(%rip)        # 2000 <_fini+0xcc4>
  mov    $0x0,%eax
  call   <comparecl@plt>
  add    $0x30,%rsp
  fldz
  fchs
  fstpt  (%rsp)
  flds   0xed2(%rip)        # 2084 <_fini+0xd48>
  fstpt  0x10(%rsp)
  mov    0x10(%rsp),%rax
  mov    0x18(%rsp),%edx
  push   %rdx
  push   %rax
  push   0xe71(%rip)        # 2038 <_fini+0xcfc>
  push   0xe63(%rip)        # 2030 <_fini+0xcf4>
  push   0xe55(%rip)        # 2028 <_fini+0xcec>
  push   0xe47(%rip)        # 2020 <_fini+0xce4>
  mov    $0x0,%eax
  call   <comparecl@plt>
  add    $0x30,%rsp
  fldz
  fchs
  fstpt  (%rsp)
  flds   0xe90(%rip)        # 2084 <_fini+0xd48>
  fstpt  0x10(%rsp)
  mov    0x10(%rsp),%rax
  mov    0x18(%rsp),%edx
  push   %rdx
  push   %rax
  push   0xe2f(%rip)        # 2038 <_fini+0xcfc>
  push   0xe21(%rip)        # 2030 <_fini+0xcf4>
  push   0xe13(%rip)        # 2028 <_fini+0xcec>
  push   0xe05(%rip)        # 2020 <_fini+0xce4>
  mov    $0x0,%eax
  call   <comparecl@plt>
  add    $0x40,%rsp
  flds   0xe51(%rip)        # 2080 <_fini+0xd44>
  fstpt  (%rsp)
  mov    (%rsp),%rax
  mov    0x8(%rsp),%edx
  push   %rdx
  push   %rax
  flds   0xe42(%rip)        # 2084 <_fini+0xd48>
  fstpt  0x10(%rsp)
  mov    0x10(%rsp),%rax
  mov    0x18(%rsp),%edx
  push   %rdx
  push   %rax
  push   0xe01(%rip)        # 2058 <_fini+0xd1c>
  push   0xdf3(%rip)        # 2050 <_fini+0xd14>
  push   0xde5(%rip)        # 2048 <_fini+0xd0c>
  push   0xdd7(%rip)        # 2040 <_fini+0xd04>
  mov    $0x0,%eax
  call   <comparecl@plt>
  add    $0x40,%rsp
  flds   0xe03(%rip)        # 2080 <_fini+0xd44>
  fstpt  (%rsp)
  mov    (%rsp),%rax
  mov    0x8(%rsp),%edx
  push   %rdx
  push   %rax
  flds   0xdf4(%rip)        # 2084 <_fini+0xd48>
  fstpt  0x10(%rsp)
  mov    0x10(%rsp),%rax
  mov    0x18(%rsp),%edx
  push   %rdx
  push   %rax
  push   0xdb3(%rip)        # 2058 <_fini+0xd1c>
  push   0xda5(%rip)        # 2050 <_fini+0xd14>
  push   0xd97(%rip)        # 2048 <_fini+0xd0c>
  push   0xd89(%rip)        # 2040 <_fini+0xd04>
  mov    $0x0,%eax
  call   <comparecl@plt>
  add    $0x40,%rsp
  flds   0xdb9(%rip)        # 2084 <_fini+0xd48>
  fstpt  (%rsp)
  mov    (%rsp),%rax
  mov    0x8(%rsp),%edx
  push   %rdx
  push   %rax
  push   %rdx
  push   %rax
  push   0xd98(%rip)        # 2078 <_fini+0xd3c>
  push   0xd8a(%rip)        # 2070 <_fini+0xd34>
  push   0xd7c(%rip)        # 2068 <_fini+0xd2c>
  push   0xd6e(%rip)        # 2060 <_fini+0xd24>
  mov    $0x0,%eax
  call   <comparecl@plt>
  add    $0x40,%rsp
  flds   0xd7e(%rip)        # 2084 <_fini+0xd48>
  fstpt  (%rsp)
  mov    (%rsp),%rax
  mov    0x8(%rsp),%edx
  push   %rdx
  push   %rax
  push   %rdx
  push   %rax
  push   0xd5d(%rip)        # 2078 <_fini+0xd3c>
  push   0xd4f(%rip)        # 2070 <_fini+0xd34>
  push   0xd41(%rip)        # 2068 <_fini+0xd2c>
  push   0xd33(%rip)        # 2060 <_fini+0xd24>
  mov    $0x0,%eax
  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);
}
```