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

```asm
<test_integer_to_float>:
  endbr64
  sub    $0x18,%rsp
  xor    %edi,%edi
  call   <u2f@plt>
  pxor   %xmm2,%xmm2
  ucomiss %xmm2,%xmm0
  jp     L352
  jne    L352
L492:
  mov    $0xffffffff,%edi
  call   <u2f@plt>
  movss  D26(%rip),%xmm1
  call   <fnear@plt>
  test   %eax,%eax
  je     L146
L11:
  mov    $0x7fffffff,%edi
  call   <u2f@plt>
  movss  D101(%rip),%xmm1
  call   <fnear@plt>
  test   %eax,%eax
  je     L182
L470:
  mov    $0x80000000,%edi
  call   <u2f@plt>
  ucomiss D101(%rip),%xmm0
  jp     L362
  jne    L362
L304:
  xor    %edi,%edi
  call   <u2d@plt>
  pxor   %xmm3,%xmm3
  ucomisd %xmm3,%xmm0
  jp     L280
  jne    L280
L99:
  mov    $0xffffffff,%edi
  call   <u2d@plt>
  movsd  D85(%rip),%xmm1
  call   <dnear@plt>
  test   %eax,%eax
  je     L109
L51:
  mov    $0x7fffffff,%edi
  call   <u2d@plt>
  mov    D61(%rip),%rax
  movq   %rax,%xmm1
  call   <dnear@plt>
  test   %eax,%eax
  je     L25
L136:
  mov    $0x80000000,%edi
  call   <u2d@plt>
  ucomisd D106(%rip),%xmm0
  jp     L368
  jne    L368
L376:
  xor    %edi,%edi
  call   <u2ld@plt>
  fldz
  fxch   %st(1)
  fucomip %st(1),%st
  fstp   %st(0)
  jp     L190
  jne    L190
L582:
  mov    $0xffffffff,%edi
  call   <u2ld@plt>
  fldl   0xcad(%rip)        # 2010 <_fini+0x924>
  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     L168
L542:
  mov    $0x7fffffff,%edi
  call   <u2ld@plt>
  fldl   0xc80(%rip)        # 2018 <_fini+0x92c>
  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     L240
L520:
  mov    $0x80000000,%edi
  call   <u2ld@plt>
  flds   0xc37(%rip)        # 2004 <_fini+0x918>
  fxch   %st(1)
  fucomip %st(1),%st
  fstp   %st(0)
  jp     L286
  jne    L286
L62:
  xor    %edi,%edi
  call   <s2f@plt>
  pxor   %xmm4,%xmm4
  ucomiss %xmm4,%xmm0
  jp     L276
  jne    L276
L342:
  mov    $0xffffffff,%edi
  call   <s2f@plt>
  movss  D59(%rip),%xmm1
  call   <fnear@plt>
  test   %eax,%eax
  je     L459
L260:
  mov    $0x7fffffff,%edi
  call   <s2f@plt>
  movss  D101(%rip),%xmm1
  call   <fnear@plt>
  test   %eax,%eax
  je     L530
L586:
  mov    $0x80000000,%edi
  call   <s2f@plt>
  ucomiss D67(%rip),%xmm0
  jp     L317
  jne    L317
L529:
  xor    %edi,%edi
  call   <s2d@plt>
  pxor   %xmm5,%xmm5
  ucomisd %xmm5,%xmm0
  jp     L15
  jne    L15
L328:
  mov    $0xffffffff,%edi
  call   <s2d@plt>
  movsd  D58(%rip),%xmm1
  call   <dnear@plt>
  test   %eax,%eax
  je     L490
L506:
  mov    $0x7fffffff,%edi
  call   <s2d@plt>
  mov    D61(%rip),%rax
  movq   %rax,%xmm1
  call   <dnear@plt>
  test   %eax,%eax
  je     L548
L231:
  mov    $0x80000000,%edi
  call   <s2d@plt>
  ucomisd D46(%rip),%xmm0
  jp     L107
  jne    L107
L429:
  xor    %edi,%edi
  call   <s2ld@plt>
  fldz
  fxch   %st(1)
  fucomip %st(1),%st
  fstp   %st(0)
  jp     L318
  jne    L318
L353:
  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     L101
L546:
  mov    $0x7fffffff,%edi
  call   <s2ld@plt>
  fldl   0xaec(%rip)        # 2018 <_fini+0x92c>
  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     L142
L103:
  mov    $0x80000000,%edi
  call   <s2ld@plt>
  flds   0xaaf(%rip)        # 200c <_fini+0x920>
  fxch   %st(1)
  fucomip %st(1),%st
  fstp   %st(0)
  jp     L264
  jne    L264
  add    $0x18,%rsp
  ret
  nopl   0x0(%rax)
L352:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L492
  nopl   0x0(%rax)
L264:
  xor    %eax,%eax
  add    $0x18,%rsp
  jmp    1100 <abort@plt>
  nopl   0x0(%rax,%rax,1)
L142:
  call   <abort@plt>
  jmp    L103
  nopw   0x0(%rax,%rax,1)
L101:
  call   <abort@plt>
  jmp    L546
  nopw   0x0(%rax,%rax,1)
L318:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L353
  nopl   0x0(%rax)
L107:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L429
  nopl   0x0(%rax)
L548:
  call   <abort@plt>
  jmp    L231
  nopw   0x0(%rax,%rax,1)
L490:
  call   <abort@plt>
  jmp    L506
  nopw   0x0(%rax,%rax,1)
L15:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L328
  nopl   0x0(%rax)
L317:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L529
  nopl   0x0(%rax)
L530:
  call   <abort@plt>
  jmp    L586
  nopw   0x0(%rax,%rax,1)
L459:
  call   <abort@plt>
  jmp    L260
  nopw   0x0(%rax,%rax,1)
L276:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L342
  nopl   0x0(%rax)
L286:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L62
  nopl   0x0(%rax)
L240:
  call   <abort@plt>
  jmp    L520
  nopw   0x0(%rax,%rax,1)
L168:
  call   <abort@plt>
  jmp    L542
  nopw   0x0(%rax,%rax,1)
L190:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L582
  nopl   0x0(%rax)
L368:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L376
  nopl   0x0(%rax)
L25:
  call   <abort@plt>
  jmp    L136
  nopw   0x0(%rax,%rax,1)
L109:
  call   <abort@plt>
  jmp    L51
  nopw   0x0(%rax,%rax,1)
L280:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L99
  nopl   0x0(%rax)
L362:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L304
  nopl   0x0(%rax)
L182:
  call   <abort@plt>
  jmp    L470
  nopw   0x0(%rax,%rax,1)
L146:
  call   <abort@plt>
  jmp    L11
```

tool_calls: name: extract_symbolic_data
arguments: label: D26
datatype: byte[4]
name: extract_symbolic_data
arguments: label: D101
datatype: byte[4]
name: extract_symbolic_data
arguments: label: D85
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D61
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D106
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D59
datatype: byte[4]
name: extract_symbolic_data
arguments: label: D67
datatype: byte[4]
name: extract_symbolic_data
arguments: label: D58
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D46
datatype: byte[8]

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

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

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

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

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

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

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

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

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