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     L163
  pxor   %xmm0,%xmm0
  movd   %eax,%xmm3
  ucomiss %xmm0,%xmm3
  je     L155
L163:
  mov    $0x0,%eax
  call   <abort@plt>
L155:
  mov    $0xffffffff,%edi
  call   <u2f@plt>
  movd   %xmm0,%eax
  movss  D155(%rip),%xmm1
  movd   %eax,%xmm0
  call   <fnear@plt>
  test   %eax,%eax
  jne    L73
  mov    $0x0,%eax
  call   <abort@plt>
L73:
  mov    $0x7fffffff,%edi
  call   <u2f@plt>
  movd   %xmm0,%eax
  movss  D38(%rip),%xmm1
  movd   %eax,%xmm0
  call   <fnear@plt>
  test   %eax,%eax
  jne    L159
  mov    $0x0,%eax
  call   <abort@plt>
L159:
  mov    $0x80000000,%edi
  call   <u2f@plt>
  movd   %xmm0,%eax
  movd   %eax,%xmm4
  ucomiss D38(%rip),%xmm4
  jp     L92
  movd   %eax,%xmm5
  ucomiss D38(%rip),%xmm5
  je     L168
L92:
  mov    $0x0,%eax
  call   <abort@plt>
L168:
  mov    $0x0,%edi
  call   <u2d@plt>
  movq   %xmm0,%rax
  pxor   %xmm0,%xmm0
  movq   %rax,%xmm6
  ucomisd %xmm0,%xmm6
  jp     L37
  pxor   %xmm0,%xmm0
  movq   %rax,%xmm7
  ucomisd %xmm0,%xmm7
  je     L172
L37:
  mov    $0x0,%eax
  call   <abort@plt>
L172:
  mov    $0xffffffff,%edi
  call   <u2d@plt>
  movq   %xmm0,%rax
  movsd  D80(%rip),%xmm0
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <dnear@plt>
  test   %eax,%eax
  jne    L215
  mov    $0x0,%eax
  call   <abort@plt>
L215:
  mov    $0x7fffffff,%edi
  call   <u2d@plt>
  movq   %xmm0,%rax
  movsd  D107(%rip),%xmm0
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <dnear@plt>
  test   %eax,%eax
  jne    L160
  mov    $0x0,%eax
  call   <abort@plt>
L160:
  mov    $0x80000000,%edi
  call   <u2d@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm2
  ucomisd D43(%rip),%xmm2
  jp     L31
  movq   %rax,%xmm3
  ucomisd D43(%rip),%xmm3
  je     L125
L31:
  mov    $0x0,%eax
  call   <abort@plt>
L125:
  mov    $0x0,%edi
  call   <s2f@plt>
  movd   %xmm0,%eax
  pxor   %xmm0,%xmm0
  movd   %eax,%xmm4
  ucomiss %xmm0,%xmm4
  jp     L13
  pxor   %xmm0,%xmm0
  movd   %eax,%xmm5
  ucomiss %xmm0,%xmm5
  je     L169
L13:
  mov    $0x0,%eax
  call   <abort@plt>
L169:
  mov    $0xffffffff,%edi
  call   <s2f@plt>
  movd   %xmm0,%eax
  movss  D58(%rip),%xmm1
  movd   %eax,%xmm0
  call   <fnear@plt>
  test   %eax,%eax
  jne    L99
  mov    $0x0,%eax
  call   <abort@plt>
L99:
  mov    $0x7fffffff,%edi
  call   <s2f@plt>
  movd   %xmm0,%eax
  movss  D38(%rip),%xmm1
  movd   %eax,%xmm0
  call   <fnear@plt>
  test   %eax,%eax
  jne    L205
  mov    $0x0,%eax
  call   <abort@plt>
L205:
  mov    $0x80000000,%edi
  call   <s2f@plt>
  movd   %xmm0,%eax
  movd   %eax,%xmm6
  ucomiss D128(%rip),%xmm6
  jp     L63
  movd   %eax,%xmm7
  ucomiss D128(%rip),%xmm7
  je     L217
L63:
  mov    $0x0,%eax
  call   <abort@plt>
L217:
  mov    $0x0,%edi
  call   <s2d@plt>
  movq   %xmm0,%rax
  pxor   %xmm0,%xmm0
  movq   %rax,%xmm2
  ucomisd %xmm0,%xmm2
  jp     L77
  pxor   %xmm0,%xmm0
  movq   %rax,%xmm3
  ucomisd %xmm0,%xmm3
  je     L109
L77:
  mov    $0x0,%eax
  call   <abort@plt>
L109:
  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    L52
  mov    $0x0,%eax
  call   <abort@plt>
L52:
  mov    $0x7fffffff,%edi
  call   <s2d@plt>
  movq   %xmm0,%rax
  movsd  D107(%rip),%xmm0
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <dnear@plt>
  test   %eax,%eax
  jne    L103
  mov    $0x0,%eax
  call   <abort@plt>
L103:
  mov    $0x80000000,%edi
  call   <s2d@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm4
  ucomisd D33(%rip),%xmm4
  jp     L130
  movq   %rax,%xmm5
  ucomisd D33(%rip),%xmm5
  je     L225
L130:
  mov    $0x0,%eax
  call   <abort@plt>
L225:
  nop
  pop    %rbp
  ret
```

tool_calls: name: unpack_data
arguments: tag: D155
type: byte[4]
name: unpack_data
arguments: tag: D38
type: byte[4]
name: unpack_data
arguments: tag: D80
type: byte[8]
name: unpack_data
arguments: tag: D107
type: byte[8]
name: unpack_data
arguments: tag: D43
type: byte[8]
name: unpack_data
arguments: tag: D58
type: byte[4]
name: unpack_data
arguments: tag: D128
type: byte[4]
name: unpack_data
arguments: tag: D146
type: byte[8]
name: unpack_data
arguments: tag: D33
type: byte[8]

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

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

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

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

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

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

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

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

tool: {"D33": [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 (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();
}
```