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

```asm
<tst_integer>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    D15(%rip),%eax
  movd   %eax,%xmm0
  call   <f2u@plt>
  test   %eax,%eax
  je     L300
  mov    $0x0,%eax
  call   <abort@plt>
L300:
  mov    D197(%rip),%eax
  movd   %eax,%xmm0
  call   <f2u@plt>
  test   %eax,%eax
  je     L104
  mov    $0x0,%eax
  call   <abort@plt>
L104:
  mov    D93(%rip),%eax
  movd   %eax,%xmm0
  call   <f2u@plt>
  cmp    $0x1,%eax
  je     L255
  mov    $0x0,%eax
  call   <abort@plt>
L255:
  mov    D240(%rip),%eax
  movd   %eax,%xmm0
  call   <f2u@plt>
  cmp    $0x1,%eax
  je     L31
  mov    $0x0,%eax
  call   <abort@plt>
L31:
  mov    D63(%rip),%eax
  movd   %eax,%xmm0
  call   <f2u@plt>
  cmp    $0x7fffffff,%eax
  je     L296
  mov    D63(%rip),%eax
  movd   %eax,%xmm0
  call   <f2u@plt>
  cmp    $0x80000000,%eax
  je     L296
  mov    $0x0,%eax
  call   <abort@plt>
L296:
  mov    D63(%rip),%eax
  movd   %eax,%xmm0
  call   <f2u@plt>
  cmp    $0x80000000,%eax
  je     L52
  mov    $0x0,%eax
  call   <abort@plt>
L52:
  mov    D232(%rip),%rax
  movq   %rax,%xmm0
  call   <d2u@plt>
  test   %eax,%eax
  je     L264
  mov    $0x0,%eax
  call   <abort@plt>
L264:
  mov    D262(%rip),%rax
  movq   %rax,%xmm0
  call   <d2u@plt>
  test   %eax,%eax
  je     L298
  mov    $0x0,%eax
  call   <abort@plt>
L298:
  mov    D148(%rip),%rax
  movq   %rax,%xmm0
  call   <d2u@plt>
  cmp    $0x1,%eax
  je     L267
  mov    $0x0,%eax
  call   <abort@plt>
L267:
  mov    D155(%rip),%rax
  movq   %rax,%xmm0
  call   <d2u@plt>
  cmp    $0x1,%eax
  je     L241
  mov    $0x0,%eax
  call   <abort@plt>
L241:
  mov    D231(%rip),%rax
  movq   %rax,%xmm0
  call   <d2u@plt>
  cmp    $0xffffffff,%eax
  je     L202
  mov    $0x0,%eax
  call   <abort@plt>
L202:
  mov    D206(%rip),%rax
  movq   %rax,%xmm0
  call   <d2u@plt>
  cmp    $0x7fffffff,%eax
  je     L116
  mov    $0x0,%eax
  call   <abort@plt>
L116:
  mov    D109(%rip),%rax
  movq   %rax,%xmm0
  call   <d2u@plt>
  cmp    $0x80000000,%eax
  je     L42
  mov    $0x0,%eax
  call   <abort@plt>
L42:
  mov    D15(%rip),%eax
  movd   %eax,%xmm0
  call   <f2s@plt>
  test   %eax,%eax
  je     L9
  mov    $0x0,%eax
  call   <abort@plt>
L9:
  mov    D197(%rip),%eax
  movd   %eax,%xmm0
  call   <f2s@plt>
  test   %eax,%eax
  je     L69
  mov    $0x0,%eax
  call   <abort@plt>
L69:
  mov    D93(%rip),%eax
  movd   %eax,%xmm0
  call   <f2s@plt>
  cmp    $0x1,%eax
  je     L98
  mov    $0x0,%eax
  call   <abort@plt>
L98:
  mov    D240(%rip),%eax
  movd   %eax,%xmm0
  call   <f2s@plt>
  cmp    $0x1,%eax
  je     L167
  mov    $0x0,%eax
  call   <abort@plt>
L167:
  mov    D204(%rip),%eax
  movd   %eax,%xmm0
  call   <f2s@plt>
  test   %eax,%eax
  je     L297
  mov    $0x0,%eax
  call   <abort@plt>
L297:
  mov    D168(%rip),%eax
  movd   %eax,%xmm0
  call   <f2s@plt>
  cmp    $0xffffffff,%eax
  je     L294
  mov    $0x0,%eax
  call   <abort@plt>
L294:
  mov    D295(%rip),%eax
  movd   %eax,%xmm0
  call   <f2s@plt>
  cmp    $0xffffffff,%eax
  je     L265
  mov    $0x0,%eax
  call   <abort@plt>
L265:
  mov    D230(%rip),%eax
  movd   %eax,%xmm0
  call   <f2s@plt>
  cmp    $0x80000000,%eax
  je     L44
  mov    $0x0,%eax
  call   <abort@plt>
L44:
  mov    D232(%rip),%rax
  movq   %rax,%xmm0
  call   <d2s@plt>
  test   %eax,%eax
  je     L291
  mov    $0x0,%eax
  call   <abort@plt>
L291:
  mov    D262(%rip),%rax
  movq   %rax,%xmm0
  call   <d2s@plt>
  test   %eax,%eax
  je     L30
  mov    $0x0,%eax
  call   <abort@plt>
L30:
  mov    D148(%rip),%rax
  movq   %rax,%xmm0
  call   <d2s@plt>
  cmp    $0x1,%eax
  je     L164
  mov    $0x0,%eax
  call   <abort@plt>
L164:
  mov    D155(%rip),%rax
  movq   %rax,%xmm0
  call   <d2s@plt>
  cmp    $0x1,%eax
  je     L37
  mov    $0x0,%eax
  call   <abort@plt>
L37:
  mov    D10(%rip),%rax
  movq   %rax,%xmm0
  call   <d2s@plt>
  test   %eax,%eax
  je     L38
  mov    $0x0,%eax
  call   <abort@plt>
L38:
  mov    D87(%rip),%rax
  movq   %rax,%xmm0
  call   <d2s@plt>
  cmp    $0xffffffff,%eax
  je     L303
  mov    $0x0,%eax
  call   <abort@plt>
L303:
  mov    D153(%rip),%rax
  movq   %rax,%xmm0
  call   <d2s@plt>
  cmp    $0xffffffff,%eax
  je     L132
  mov    $0x0,%eax
  call   <abort@plt>
L132:
  mov    D206(%rip),%rax
  movq   %rax,%xmm0
  call   <d2s@plt>
  cmp    $0x7fffffff,%eax
  je     L92
  mov    $0x0,%eax
  call   <abort@plt>
L92:
  mov    D200(%rip),%rax
  movq   %rax,%xmm0
  call   <d2s@plt>
  cmp    $0x80000000,%eax
  je     L124
  mov    $0x0,%eax
  call   <abort@plt>
L124:
  nop
  pop    %rbp
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D15
datatype: f32
name: extract_symbolic_data
arguments: data_tag: D197
datatype: f32
name: extract_symbolic_data
arguments: data_tag: D93
datatype: f32
name: extract_symbolic_data
arguments: data_tag: D240
datatype: f32
name: extract_symbolic_data
arguments: data_tag: D63
datatype: byte[4]
name: extract_symbolic_data
arguments: data_tag: D232
datatype: f32[2]
name: extract_symbolic_data
arguments: data_tag: D262
datatype: byte[8]
name: extract_symbolic_data
arguments: data_tag: D148
datatype: f32[2]
name: extract_symbolic_data
arguments: data_tag: D155
datatype: byte[8]
name: extract_symbolic_data
arguments: data_tag: D231
datatype: byte[8]
name: extract_symbolic_data
arguments: data_tag: D206
datatype: byte[8]
name: extract_symbolic_data
arguments: data_tag: D109
datatype: f32[2]
name: extract_symbolic_data
arguments: data_tag: D204
datatype: byte[4]
name: extract_symbolic_data
arguments: data_tag: D168
datatype: byte[4]
name: extract_symbolic_data
arguments: data_tag: D295
datatype: byte[4]
name: extract_symbolic_data
arguments: data_tag: D230
datatype: byte[4]
name: extract_symbolic_data
arguments: data_tag: D10
datatype: byte[8]
name: extract_symbolic_data
arguments: data_tag: D87
datatype: f32[2]
name: extract_symbolic_data
arguments: data_tag: D153
datatype: byte[8]
name: extract_symbolic_data
arguments: data_tag: D200
datatype: f32[2]

tool: D15: 0

tool: D197: 0.999

tool: D93: 1

tool: D240: 1.99

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

tool: {"D232": [0.0,0.0]}

tool: {"D262": [0x2b,0x87,0x16,0xd9,0xce,0xf7,0xef,0x3f]}

tool: {"D148": [0.0,1.875]}

tool: {"D155": [0xd7,0xa3,0x70,0x3d,0x0a,0xd7,0xff,0x3f]}

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

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

tool: {"D109": [0.0,28.0]}

tool: {"D204": [0x77,0xbe,0x7f,0xbf]}

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

tool: {"D295": [0x52,0xb8,0xfe,0xbf]}

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

tool: {"D10": [0x2b,0x87,0x16,0xd9,0xce,0xf7,0xef,0xbf]}

tool: {"D87": [0.0,-1.875]}

tool: {"D153": [0xd7,0xa3,0x70,0x3d,0x0a,0xd7,0xff,0xbf]}

tool: {"D200": [0.0,-28.0]}

assistant: ```c
tst_integer() {
  if (f2u(0.0) != 0)
    abort();
  if (f2u(0.999) != 0)
    abort();
  if (f2u(1.0) != 1)
    abort();
  if (f2u(1.99) != 1)
    abort();
  if (f2u((float)((~0U) >> 1)) != (~0U) >> 1 && f2u((float)((~0U) >> 1)) != ((~0U) >> 1) + 1)
    abort();
  if (f2u((float)~((~0U) >> 1)) != ~((~0U) >> 1))
    abort();
  if (sizeof(double) >= 8) {
    if (d2u(0.0) != 0)
      abort();
    if (d2u(0.999) != 0)
      abort();
    if (d2u(1.0) != 1)
      abort();
    if (d2u(1.99) != 1)
      abort();
    if (d2u((double)(~0U)) != ~0U)
      abort();
    if (d2u((double)((~0U) >> 1)) != (~0U) >> 1)
      abort();
    if (d2u((double)~((~0U) >> 1)) != ~((~0U) >> 1))
      abort();
  }
  if (f2s(0.0) != 0)
    abort();
  if (f2s(0.999) != 0)
    abort();
  if (f2s(1.0) != 1)
    abort();
  if (f2s(1.99) != 1)
    abort();
  if (f2s(-0.999) != 0)
    abort();
  if (f2s(-1.0) != -1)
    abort();
  if (f2s(-1.99) != -1)
    abort();
  if (f2s((float)(int)~((~0U) >> 1)) != (int)~((~0U) >> 1))
    abort();
  if (sizeof(double) >= 8) {
    if (d2s(0.0) != 0)
      abort();
    if (d2s(0.999) != 0)
      abort();
    if (d2s(1.0) != 1)
      abort();
    if (d2s(1.99) != 1)
      abort();
    if (d2s(-0.999) != 0)
      abort();
    if (d2s(-1.0) != -1)
      abort();
    if (d2s(-1.99) != -1)
      abort();
    if (d2s((double)((~0U) >> 1)) != (~0U) >> 1)
      abort();
    if (d2s((double)(int)~((~0U) >> 1)) != (int)~((~0U) >> 1))
      abort();
  }
}
```