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

```asm
<test_integer_to_float>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    $0x0,%edi
  call   <u2f@plt>
  movd   %xmm0,%eax
  pxor   %xmm0,%xmm0
  movd   %eax,%xmm2
  ucomiss %xmm0,%xmm2
  jp     L102
  pxor   %xmm0,%xmm0
  movd   %eax,%xmm3
  ucomiss %xmm0,%xmm3
  je     L361
L102:
  mov    $0x0,%eax
  call   <abort@plt>
L361:
  mov    $0xffffffff,%edi
  call   <u2f@plt>
  movd   %xmm0,%eax
  movss  D9(%rip),%xmm1
  movd   %eax,%xmm0
  call   <fnear@plt>
  test   %eax,%eax
  jne    L23
  mov    $0x0,%eax
  call   <abort@plt>
L23:
  mov    $0x7fffffff,%edi
  call   <u2f@plt>
  movd   %xmm0,%eax
  movss  D33(%rip),%xmm1
  movd   %eax,%xmm0
  call   <fnear@plt>
  test   %eax,%eax
  jne    L18
  mov    $0x0,%eax
  call   <abort@plt>
L18:
  mov    $0x80000000,%edi
  call   <u2f@plt>
  movd   %xmm0,%eax
  movd   %eax,%xmm4
  ucomiss D33(%rip),%xmm4
  jp     L201
  movd   %eax,%xmm5
  ucomiss D33(%rip),%xmm5
  je     L14
L201:
  mov    $0x0,%eax
  call   <abort@plt>
L14:
  mov    $0x0,%edi
  call   <u2d@plt>
  movq   %xmm0,%rax
  pxor   %xmm0,%xmm0
  movq   %rax,%xmm6
  ucomisd %xmm0,%xmm6
  jp     L316
  pxor   %xmm0,%xmm0
  movq   %rax,%xmm7
  ucomisd %xmm0,%xmm7
  je     L347
L316:
  mov    $0x0,%eax
  call   <abort@plt>
L347:
  mov    $0xffffffff,%edi
  call   <u2d@plt>
  movq   %xmm0,%rax
  movsd  D54(%rip),%xmm0
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <dnear@plt>
  test   %eax,%eax
  jne    L381
  mov    $0x0,%eax
  call   <abort@plt>
L381:
  mov    $0x7fffffff,%edi
  call   <u2d@plt>
  movq   %xmm0,%rax
  movsd  D99(%rip),%xmm0
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <dnear@plt>
  test   %eax,%eax
  jne    L322
  mov    $0x0,%eax
  call   <abort@plt>
L322:
  mov    $0x80000000,%edi
  call   <u2d@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm2
  ucomisd D105(%rip),%xmm2
  jp     L140
  movq   %rax,%xmm3
  ucomisd D105(%rip),%xmm3
  je     L215
L140:
  mov    $0x0,%eax
  call   <abort@plt>
L215:
  mov    $0x0,%edi
  call   <u2ld@plt>
  fldz
  fucomip %st(1),%st
  jp     L216
  fldz
  fucomip %st(1),%st
  fstp   %st(0)
  je     L108
  jmp    L95
L216:
  fstp   %st(0)
L95:
  mov    $0x0,%eax
  call   <abort@plt>
L108:
  mov    $0xffffffff,%edi
  call   <u2ld@plt>
  fldt   0xc17(%rip)        # 2020 <_fini+0x934>
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  call   <ldnear@plt>
  add    $0x20,%rsp
  test   %eax,%eax
  jne    L247
  mov    $0x0,%eax
  call   <abort@plt>
L247:
  mov    $0x7fffffff,%edi
  call   <u2ld@plt>
  fldt   0xbf0(%rip)        # 2030 <_fini+0x944>
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  call   <ldnear@plt>
  add    $0x20,%rsp
  test   %eax,%eax
  jne    L306
  mov    $0x0,%eax
  call   <abort@plt>
L306:
  mov    $0x80000000,%edi
  call   <u2ld@plt>
  fldt   0xbc9(%rip)        # 2040 <_fini+0x954>
  fucomip %st(1),%st
  jp     L181
  fldt   0xbbf(%rip)        # 2040 <_fini+0x954>
  fucomip %st(1),%st
  fstp   %st(0)
  je     L21
  jmp    L248
L181:
  fstp   %st(0)
L248:
  mov    $0x0,%eax
  call   <abort@plt>
L21:
  mov    $0x0,%edi
  call   <s2f@plt>
  movd   %xmm0,%eax
  pxor   %xmm0,%xmm0
  movd   %eax,%xmm4
  ucomiss %xmm0,%xmm4
  jp     L52
  pxor   %xmm0,%xmm0
  movd   %eax,%xmm5
  ucomiss %xmm0,%xmm5
  je     L280
L52:
  mov    $0x0,%eax
  call   <abort@plt>
L280:
  mov    $0xffffffff,%edi
  call   <s2f@plt>
  movd   %xmm0,%eax
  movss  D138(%rip),%xmm1
  movd   %eax,%xmm0
  call   <fnear@plt>
  test   %eax,%eax
  jne    L94
  mov    $0x0,%eax
  call   <abort@plt>
L94:
  mov    $0x7fffffff,%edi
  call   <s2f@plt>
  movd   %xmm0,%eax
  movss  D33(%rip),%xmm1
  movd   %eax,%xmm0
  call   <fnear@plt>
  test   %eax,%eax
  jne    L302
  mov    $0x0,%eax
  call   <abort@plt>
L302:
  mov    $0x80000000,%edi
  call   <s2f@plt>
  movd   %xmm0,%eax
  movd   %eax,%xmm6
  ucomiss D38(%rip),%xmm6
  jp     L161
  movd   %eax,%xmm7
  ucomiss D38(%rip),%xmm7
  je     L238
L161:
  mov    $0x0,%eax
  call   <abort@plt>
L238:
  mov    $0x0,%edi
  call   <s2d@plt>
  movq   %xmm0,%rax
  pxor   %xmm0,%xmm0
  movq   %rax,%xmm2
  ucomisd %xmm0,%xmm2
  jp     L93
  pxor   %xmm0,%xmm0
  movq   %rax,%xmm3
  ucomisd %xmm0,%xmm3
  je     L300
L93:
  mov    $0x0,%eax
  call   <abort@plt>
L300:
  mov    $0xffffffff,%edi
  call   <s2d@plt>
  movq   %xmm0,%rax
  movsd  D146(%rip),%xmm0
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <dnear@plt>
  test   %eax,%eax
  jne    L5
  mov    $0x0,%eax
  call   <abort@plt>
L5:
  mov    $0x7fffffff,%edi
  call   <s2d@plt>
  movq   %xmm0,%rax
  movsd  D99(%rip),%xmm0
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <dnear@plt>
  test   %eax,%eax
  jne    L66
  mov    $0x0,%eax
  call   <abort@plt>
L66:
  mov    $0x80000000,%edi
  call   <s2d@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm4
  ucomisd D143(%rip),%xmm4
  jp     L79
  movq   %rax,%xmm5
  ucomisd D143(%rip),%xmm5
  je     L226
L79:
  mov    $0x0,%eax
  call   <abort@plt>
L226:
  mov    $0x0,%edi
  call   <s2ld@plt>
  fldz
  fucomip %st(1),%st
  jp     L97
  fldz
  fucomip %st(1),%st
  fstp   %st(0)
  je     L16
  jmp    L232
L97:
  fstp   %st(0)
L232:
  mov    $0x0,%eax
  call   <abort@plt>
L16:
  mov    $0xffffffff,%edi
  call   <s2ld@plt>
  fld1
  fchs
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  call   <ldnear@plt>
  add    $0x20,%rsp
  test   %eax,%eax
  jne    L13
  mov    $0x0,%eax
  call   <abort@plt>
L13:
  mov    $0x7fffffff,%edi
  call   <s2ld@plt>
  fldt   0x99e(%rip)        # 2030 <_fini+0x944>
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  call   <ldnear@plt>
  add    $0x20,%rsp
  test   %eax,%eax
  jne    L122
  mov    $0x0,%eax
  call   <abort@plt>
L122:
  mov    $0x80000000,%edi
  call   <s2ld@plt>
  fldt   0x9a7(%rip)        # 2070 <_fini+0x984>
  fucomip %st(1),%st
  jp     L328
  fldt   0x99d(%rip)        # 2070 <_fini+0x984>
  fucomip %st(1),%st
  fstp   %st(0)
  je     L176
  jmp    L318
L328:
  fstp   %st(0)
L318:
  mov    $0x0,%eax
  call   <abort@plt>
L176:
  nop
  leave
  ret
```

tool_calls: name: parse_data
arguments: tag: D9
data_type: byte[4]
name: parse_data
arguments: tag: D33
data_type: byte[4]
name: parse_data
arguments: tag: D54
data_type: byte[8]
name: parse_data
arguments: tag: D99
data_type: byte[8]
name: parse_data
arguments: tag: D105
data_type: byte[8]
name: parse_data
arguments: tag: D138
data_type: byte[4]
name: parse_data
arguments: tag: D38
data_type: byte[4]
name: parse_data
arguments: tag: D146
data_type: byte[8]
name: parse_data
arguments: tag: D143
data_type: byte[8]

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

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

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

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

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

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

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

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

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

assistant: ```c
test_integer_to_float() {
  if (u2f(0U) != (float)0U)
    abort();
  if (!fnear(u2f(~0U), (float)~0U))
    abort();
  if (!fnear(u2f((~0U) >> 1), (float)((~0U) >> 1)))
    abort();
  if (u2f(~((~0U) >> 1)) != (float)~((~0U) >> 1))
    abort();
  if (u2d(0U) != (double)0U)
    abort();
  if (!dnear(u2d(~0U), (double)~0U))
    abort();
  if (!dnear(u2d((~0U) >> 1), (double)((~0U) >> 1)))
    abort();
  if (u2d(~((~0U) >> 1)) != (double)~((~0U) >> 1))
    abort();
  if (u2ld(0U) != (long double)0U)
    abort();
  if (!ldnear(u2ld(~0U), (long double)~0U))
    abort();
  if (!ldnear(u2ld((~0U) >> 1), (long double)((~0U) >> 1)))
    abort();
  if (u2ld(~((~0U) >> 1)) != (long double)~((~0U) >> 1))
    abort();
  if (s2f(0) != (float)0)
    abort();
  if (!fnear(s2f(~0), (float)~0))
    abort();
  if (!fnear(s2f((int)((~0U) >> 1)), (float)(int)((~0U) >> 1)))
    abort();
  if (s2f((int)(~((~0U) >> 1))) != (float)(int)~((~0U) >> 1))
    abort();
  if (s2d(0) != (double)0)
    abort();
  if (!dnear(s2d(~0), (double)~0))
    abort();
  if (!dnear(s2d((int)((~0U) >> 1)), (double)(int)((~0U) >> 1)))
    abort();
  if (s2d((int)~((~0U) >> 1)) != (double)(int)~((~0U) >> 1))
    abort();
  if (s2ld(0) != (long double)0)
    abort();
  if (!ldnear(s2ld(~0), (long double)~0))
    abort();
  if (!ldnear(s2ld((int)((~0U) >> 1)), (long double)(int)((~0U) >> 1)))
    abort();
  if (s2ld((int)~((~0U) >> 1)) != (long double)(int)~((~0U) >> 1))
    abort();
}
```