user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<test_integer_to_float>:
  endbr64
  sub    $0x18,%rsp
  xor    %edi,%edi
  call   <u2f@plt>
  pxor   %xmm2,%xmm2
  ucomiss %xmm2,%xmm0
  jp     L386
  jne    L386
L180:
  mov    $0xffffffff,%edi
  call   <u2f@plt>
  movss  D81(%rip),%xmm1
  call   <fnear@plt>
  test   %eax,%eax
  je     L120
L144:
  mov    $0x7fffffff,%edi
  call   <u2f@plt>
  movss  D55(%rip),%xmm1
  call   <fnear@plt>
  test   %eax,%eax
  je     L454
L436:
  mov    $0x80000000,%edi
  call   <u2f@plt>
  ucomiss D55(%rip),%xmm0
  jp     L356
  jne    L356
L221:
  xor    %edi,%edi
  call   <u2d@plt>
  pxor   %xmm3,%xmm3
  ucomisd %xmm3,%xmm0
  jp     L491
  jne    L491
L405:
  mov    $0xffffffff,%edi
  call   <u2d@plt>
  movsd  D100(%rip),%xmm1
  call   <dnear@plt>
  test   %eax,%eax
  je     L131
L244:
  mov    $0x7fffffff,%edi
  call   <u2d@plt>
  mov    D7(%rip),%rax
  movq   %rax,%xmm1
  call   <dnear@plt>
  test   %eax,%eax
  je     L197
L237:
  mov    $0x80000000,%edi
  call   <u2d@plt>
  ucomisd D85(%rip),%xmm0
  jp     L501
  jne    L501
L158:
  xor    %edi,%edi
  call   <u2ld@plt>
  fldz
  fxch   %st(1)
  fucomip %st(1),%st
  fstp   %st(0)
  jp     L366
  jne    L366
L469:
  mov    $0xffffffff,%edi
  call   <u2ld@plt>
  fldl   0xcad(%rip)        # 2010 <_fini+0x920>
  fstpt  (%rsp)
  mov    (%rsp),%rax
  mov    0x8(%rsp),%edx
  push   %rdx
  push   %rax
  sub    $0x10,%rsp
  fstpt  (%rsp)
  call   <ldnear@plt>
  add    $0x20,%rsp
  test   %eax,%eax
  je     L268
L19:
  mov    $0x7fffffff,%edi
  call   <u2ld@plt>
  fldl   0xc80(%rip)        # 2018 <_fini+0x928>
  fstpt  (%rsp)
  mov    (%rsp),%rax
  mov    0x8(%rsp),%edx
  push   %rdx
  push   %rax
  sub    $0x10,%rsp
  fstpt  (%rsp)
  call   <ldnear@plt>
  add    $0x20,%rsp
  test   %eax,%eax
  je     L359
L44:
  mov    $0x80000000,%edi
  call   <u2ld@plt>
  flds   0xc37(%rip)        # 2004 <_fini+0x914>
  fxch   %st(1)
  fucomip %st(1),%st
  fstp   %st(0)
  jp     L399
  jne    L399
L537:
  xor    %edi,%edi
  call   <s2f@plt>
  pxor   %xmm4,%xmm4
  ucomiss %xmm4,%xmm0
  jp     L410
  jne    L410
L49:
  mov    $0xffffffff,%edi
  call   <s2f@plt>
  movss  D118(%rip),%xmm1
  call   <fnear@plt>
  test   %eax,%eax
  je     L116
L426:
  mov    $0x7fffffff,%edi
  call   <s2f@plt>
  movss  D55(%rip),%xmm1
  call   <fnear@plt>
  test   %eax,%eax
  je     L367
L213:
  mov    $0x80000000,%edi
  call   <s2f@plt>
  ucomiss D25(%rip),%xmm0
  jp     L147
  jne    L147
L424:
  xor    %edi,%edi
  call   <s2d@plt>
  pxor   %xmm5,%xmm5
  ucomisd %xmm5,%xmm0
  jp     L168
  jne    L168
L184:
  mov    $0xffffffff,%edi
  call   <s2d@plt>
  movsd  D54(%rip),%xmm1
  call   <dnear@plt>
  test   %eax,%eax
  je     L530
L6:
  mov    $0x7fffffff,%edi
  call   <s2d@plt>
  mov    D7(%rip),%rax
  movq   %rax,%xmm1
  call   <dnear@plt>
  test   %eax,%eax
  je     L160
L548:
  mov    $0x80000000,%edi
  call   <s2d@plt>
  ucomisd D90(%rip),%xmm0
  jp     L310
  jne    L310
L238:
  xor    %edi,%edi
  call   <s2ld@plt>
  fldz
  fxch   %st(1)
  fucomip %st(1),%st
  fstp   %st(0)
  jp     L331
  jne    L331
L155:
  mov    $0xffffffff,%edi
  call   <s2ld@plt>
  push   $0xbfff
  movabs $0x8000000000000000,%rax
  push   %rax
  sub    $0x10,%rsp
  fstpt  (%rsp)
  call   <ldnear@plt>
  add    $0x20,%rsp
  test   %eax,%eax
  je     L188
L559:
  mov    $0x7fffffff,%edi
  call   <s2ld@plt>
  fldl   0xaec(%rip)        # 2018 <_fini+0x928>
  fstpt  (%rsp)
  mov    (%rsp),%rax
  mov    0x8(%rsp),%edx
  push   %rdx
  push   %rax
  sub    $0x10,%rsp
  fstpt  (%rsp)
  call   <ldnear@plt>
  add    $0x20,%rsp
  test   %eax,%eax
  je     L579
L282:
  mov    $0x80000000,%edi
  call   <s2ld@plt>
  flds   0xaaf(%rip)        # 200c <_fini+0x91c>
  fxch   %st(1)
  fucomip %st(1),%st
  fstp   %st(0)
  jp     L542
  jne    L542
  add    $0x18,%rsp
  ret
  nopl   0x0(%rax)
L386:
  mov    $0xffffffff,%edi
  call   <_exit@plt>
  jmp    L180
  nop
L542:
  mov    $0xffffffe8,%edi
  add    $0x18,%rsp
  jmp    1100 <_exit@plt>
  xchg   %ax,%ax
L579:
  mov    $0xffffffe9,%edi
  call   <_exit@plt>
  jmp    L282
  nopl   0x0(%rax)
L188:
  mov    $0xffffffea,%edi
  call   <_exit@plt>
  jmp    L559
  nop
L331:
  mov    $0xffffffeb,%edi
  call   <_exit@plt>
  jmp    L155
  nop
L310:
  mov    $0xffffffec,%edi
  call   <_exit@plt>
  jmp    L238
  nop
L160:
  mov    $0xffffffed,%edi
  call   <_exit@plt>
  jmp    L548
  nop
L530:
  mov    $0xffffffee,%edi
  call   <_exit@plt>
  jmp    L6
  nop
L168:
  mov    $0xffffffef,%edi
  call   <_exit@plt>
  jmp    L184
  nop
L147:
  mov    $0xfffffff0,%edi
  call   <_exit@plt>
  jmp    L424
  nop
L367:
  mov    $0xfffffff1,%edi
  call   <_exit@plt>
  jmp    L213
  nop
L116:
  mov    $0xfffffff2,%edi
  call   <_exit@plt>
  jmp    L426
  nop
L410:
  mov    $0xfffffff3,%edi
  call   <_exit@plt>
  jmp    L49
  nop
L399:
  mov    $0xfffffff4,%edi
  call   <_exit@plt>
  jmp    L537
  nop
L359:
  mov    $0xfffffff5,%edi
  call   <_exit@plt>
  jmp    L44
  nop
L268:
  mov    $0xfffffff6,%edi
  call   <_exit@plt>
  jmp    L19
  nop
L366:
  mov    $0xfffffff7,%edi
  call   <_exit@plt>
  jmp    L469
  nop
L501:
  mov    $0xfffffff8,%edi
  call   <_exit@plt>
  jmp    L158
  nop
L197:
  mov    $0xfffffff9,%edi
  call   <_exit@plt>
  jmp    L237
  nop
L131:
  mov    $0xfffffffa,%edi
  call   <_exit@plt>
  jmp    L244
  nop
L491:
  mov    $0xfffffffb,%edi
  call   <_exit@plt>
  jmp    L405
  nop
L356:
  mov    $0xfffffffc,%edi
  call   <_exit@plt>
  jmp    L221
  nop
L454:
  mov    $0xfffffffd,%edi
  call   <_exit@plt>
  jmp    L436
  nop
L120:
  mov    $0xfffffffe,%edi
  call   <_exit@plt>
  jmp    L144
```

tool_calls: name: retrieve_data
arguments: data_tag: D81
type_guessed: byte[4]
name: retrieve_data
arguments: data_tag: D55
type_guessed: byte[4]
name: retrieve_data
arguments: data_tag: D100
type_guessed: byte[8]
name: retrieve_data
arguments: data_tag: D7
type_guessed: byte[8]
name: retrieve_data
arguments: data_tag: D85
type_guessed: byte[8]
name: retrieve_data
arguments: data_tag: D118
type_guessed: byte[4]
name: retrieve_data
arguments: data_tag: D25
type_guessed: byte[4]
name: retrieve_data
arguments: data_tag: D54
type_guessed: byte[8]
name: retrieve_data
arguments: data_tag: D90
type_guessed: byte[8]

tool: {"D81": [0x00,0x00,0x80,0x4f]}

tool: {"D55": [0x00,0x00,0x00,0x4f]}

tool: {"D100": [0x00,0x00,0xe0,0xff,0xff,0xff,0xef,0x41]}

tool: {"D7": [0x00,0x00,0xc0,0xff,0xff,0xff,0xdf,0x41]}

tool: {"D85": [0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x41]}

tool: {"D118": [0x00,0x00,0x80,0xbf]}

tool: {"D25": [0x00,0x00,0x00,0xcf]}

tool: {"D54": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xbf]}

tool: {"D90": [0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xc1]}

assistant: ```c
test_integer_to_float() {
  if (u2f(0U) != (float)0U)
    _exit(-1);
  if (!fnear(u2f(~0U), (float)~0U))
    _exit(-2);
  if (!fnear(u2f((~0U) >> 1), (float)((~0U) >> 1)))
    _exit(-3);
  if (u2f(~((~0U) >> 1)) != (float)~((~0U) >> 1))
    _exit(-4);
  if (u2d(0U) != (double)0U)
    _exit(-5);
  if (!dnear(u2d(~0U), (double)~0U))
    _exit(-6);
  if (!dnear(u2d((~0U) >> 1), (double)((~0U) >> 1)))
    _exit(-7);
  if (u2d(~((~0U) >> 1)) != (double)~((~0U) >> 1))
    _exit(-8);
  if (u2ld(0U) != (long double)0U)
    _exit(-9);
  if (!ldnear(u2ld(~0U), (long double)~0U))
    _exit(-10);
  if (!ldnear(u2ld((~0U) >> 1), (long double)((~0U) >> 1)))
    _exit(-11);
  if (u2ld(~((~0U) >> 1)) != (long double)~((~0U) >> 1))
    _exit(-12);
  if (s2f(0) != (float)0)
    _exit(-13);
  if (!fnear(s2f(~0), (float)~0))
    _exit(-14);
  if (!fnear(s2f((int)((~0U) >> 1)), (float)(int)((~0U) >> 1)))
    _exit(-15);
  if (s2f((int)(~((~0U) >> 1))) != (float)(int)~((~0U) >> 1))
    _exit(-16);
  if (s2d(0) != (double)0)
    _exit(-17);
  if (!dnear(s2d(~0), (double)~0))
    _exit(-18);
  if (!dnear(s2d((int)((~0U) >> 1)), (double)(int)((~0U) >> 1)))
    _exit(-19);
  if (s2d((int)~((~0U) >> 1)) != (double)(int)~((~0U) >> 1))
    _exit(-20);
  if (s2ld(0) != (long double)0)
    _exit(-21);
  if (!ldnear(s2ld(~0), (long double)~0))
    _exit(-22);
  if (!ldnear(s2ld((int)((~0U) >> 1)), (long double)(int)((~0U) >> 1)))
    _exit(-23);
  if (s2ld((int)~((~0U) >> 1)) != (long double)(int)~((~0U) >> 1))
    _exit(-24);
}
```