user: 请从给定的汇编指令推导出C源代码：

```asm
<test_longlong_integer_to_float>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    $0x0,%edi
  call   <ull2f@plt>
  movd   %xmm0,%eax
  pxor   %xmm0,%xmm0
  movd   %eax,%xmm2
  ucomiss %xmm0,%xmm2
  jp     L201
  pxor   %xmm0,%xmm0
  movd   %eax,%xmm3
  ucomiss %xmm0,%xmm3
  je     L183
L201:
  mov    $0x0,%eax
  call   <abort@plt>
L183:
  mov    $0xffffffffffffffff,%rdi
  call   <ull2f@plt>
  movd   %xmm0,%eax
  movd   %eax,%xmm4
  ucomiss D14(%rip),%xmm4
  jp     L277
  movd   %eax,%xmm5
  ucomiss D14(%rip),%xmm5
  je     L190
L277:
  mov    $0x0,%eax
  call   <abort@plt>
L190:
  movabs $0x7fffffffffffffff,%rax
  mov    %rax,%rdi
  call   <ull2f@plt>
  movd   %xmm0,%eax
  movd   %eax,%xmm6
  ucomiss D208(%rip),%xmm6
  jp     L259
  movd   %eax,%xmm7
  ucomiss D208(%rip),%xmm7
  je     L180
L259:
  mov    $0x0,%eax
  call   <abort@plt>
L180:
  movabs $0x8000000000000000,%rax
  mov    %rax,%rdi
  call   <ull2f@plt>
  movd   %xmm0,%eax
  movd   %eax,%xmm2
  ucomiss D208(%rip),%xmm2
  jp     L273
  movd   %eax,%xmm3
  ucomiss D208(%rip),%xmm3
  je     L179
L273:
  mov    $0x0,%eax
  call   <abort@plt>
L179:
  mov    $0x0,%edi
  call   <ull2d@plt>
  movq   %xmm0,%rax
  pxor   %xmm0,%xmm0
  movq   %rax,%xmm4
  ucomisd %xmm0,%xmm4
  jp     L219
  pxor   %xmm0,%xmm0
  movq   %rax,%xmm5
  ucomisd %xmm0,%xmm5
  je     L27
L219:
  mov    $0x0,%eax
  call   <abort@plt>
L27:
  mov    $0xffffffffffffffff,%rdi
  call   <ull2d@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm6
  ucomisd D11(%rip),%xmm6
  jp     L209
  movq   %rax,%xmm7
  ucomisd D11(%rip),%xmm7
  je     L49
L209:
  mov    $0x0,%eax
  call   <abort@plt>
L49:
  movabs $0x7fffffffffffffff,%rax
  mov    %rax,%rdi
  call   <ull2d@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm1
  ucomisd D27(%rip),%xmm1
  jp     L176
  movq   %rax,%xmm2
  ucomisd D27(%rip),%xmm2
  je     L87
L176:
  mov    $0x0,%eax
  call   <abort@plt>
L87:
  movabs $0x8000000000000000,%rax
  mov    %rax,%rdi
  call   <ull2d@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm3
  ucomisd D27(%rip),%xmm3
  jp     L29
  movq   %rax,%xmm4
  ucomisd D27(%rip),%xmm4
  je     L72
L29:
  mov    $0x0,%eax
  call   <abort@plt>
L72:
  mov    $0x0,%edi
  call   <sll2f@plt>
  movd   %xmm0,%eax
  pxor   %xmm0,%xmm0
  movd   %eax,%xmm5
  ucomiss %xmm0,%xmm5
  jp     L231
  pxor   %xmm0,%xmm0
  movd   %eax,%xmm6
  ucomiss %xmm0,%xmm6
  je     L262
L231:
  mov    $0x0,%eax
  call   <abort@plt>
L262:
  mov    $0xffffffffffffffff,%rdi
  call   <sll2f@plt>
  movd   %xmm0,%eax
  movss  D60(%rip),%xmm0
  movd   %eax,%xmm7
  ucomiss %xmm0,%xmm7
  jp     L14
  movss  D60(%rip),%xmm0
  movd   %eax,%xmm1
  ucomiss %xmm0,%xmm1
  je     L168
L14:
  mov    $0x0,%eax
  call   <abort@plt>
L168:
  movabs $0x7fffffffffffffff,%rax
  mov    %rax,%rdi
  call   <sll2f@plt>
  movd   %xmm0,%eax
  movss  D208(%rip),%xmm1
  movd   %eax,%xmm0
  call   <fnear@plt>
  test   %eax,%eax
  jne    L75
  mov    $0x0,%eax
  call   <abort@plt>
L75:
  movabs $0x8000000000000000,%rax
  mov    %rax,%rdi
  call   <sll2f@plt>
  movd   %xmm0,%eax
  movd   %eax,%xmm2
  ucomiss D178(%rip),%xmm2
  jp     L170
  movd   %eax,%xmm3
  ucomiss D178(%rip),%xmm3
  je     L78
L170:
  mov    $0x0,%eax
  call   <abort@plt>
L78:
  mov    $0x0,%edi
  call   <sll2d@plt>
  movq   %xmm0,%rax
  pxor   %xmm0,%xmm0
  movq   %rax,%xmm4
  ucomisd %xmm0,%xmm4
  jp     L284
  pxor   %xmm0,%xmm0
  movq   %rax,%xmm5
  ucomisd %xmm0,%xmm5
  je     L152
L284:
  mov    $0x0,%eax
  call   <abort@plt>
L152:
  mov    $0xffffffffffffffff,%rdi
  call   <sll2d@plt>
  movq   %xmm0,%rax
  movsd  D122(%rip),%xmm0
  movq   %rax,%xmm6
  ucomisd %xmm0,%xmm6
  jp     L30
  movsd  D122(%rip),%xmm0
  movq   %rax,%xmm7
  ucomisd %xmm0,%xmm7
  je     L177
L30:
  mov    $0x0,%eax
  call   <abort@plt>
L177:
  movabs $0x7fffffffffffffff,%rax
  mov    %rax,%rdi
  call   <sll2d@plt>
  movq   %xmm0,%rax
  movsd  D27(%rip),%xmm0
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <dnear@plt>
  test   %eax,%eax
  jne    L37
  mov    $0x0,%eax
  call   <abort@plt>
L37:
  movabs $0x8000000000000000,%rax
  mov    %rax,%rdi
  call   <sll2d@plt>
  movq   %xmm0,%rax
  movsd  D70(%rip),%xmm0
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <dnear@plt>
  test   %eax,%eax
  jne    L235
  mov    $0x0,%eax
  call   <abort@plt>
L235:
  nop
  pop    %rbp
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D14
type_infered: byte[4]
name: retrieve_data
arguments: data_tag: D208
type_infered: byte[4]
name: retrieve_data
arguments: data_tag: D11
type_infered: byte[8]
name: retrieve_data
arguments: data_tag: D27
type_infered: byte[8]
name: retrieve_data
arguments: data_tag: D60
type_infered: byte[4]
name: retrieve_data
arguments: data_tag: D178
type_infered: byte[4]
name: retrieve_data
arguments: data_tag: D122
type_infered: byte[8]
name: retrieve_data
arguments: data_tag: D70
type_infered: byte[8]

tool: {"D14": [0x00,0x00,0x80,0x5f]}

tool: {"D208": [0x00,0x00,0x00,0x5f]}

tool: {"D11": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x43]}

tool: {"D27": [0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x43]}

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

tool: {"D178": [0x00,0x00,0x00,0xdf]}

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

tool: {"D70": [0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xc3]}

assistant: ```c
test_longlong_integer_to_float() {
  if (ull2f(0ULL) != (float)0ULL)
    abort();
  if (ull2f(~0ULL) != (float)~0ULL)
    abort();
  if (ull2f((~0ULL) >> 1) != (float)((~0ULL) >> 1))
    abort();
  if (ull2f(~((~0ULL) >> 1)) != (float)~((~0ULL) >> 1))
    abort();
  if (ull2d(0ULL) != (double)0ULL)
    abort();
  if (ull2d(~0ULL) != (double)~0ULL)
    abort();
  if (ull2d((~0ULL) >> 1) != (double)((~0ULL) >> 1))
    abort();
  if (ull2d(~((~0ULL) >> 1)) != (double)~((~0ULL) >> 1))
    abort();
  if (sll2f(0LL) != (float)0LL)
    abort();
  if (sll2f(~0LL) != (float)~0LL)
    abort();
  if (!fnear(sll2f((long long int)((~0ULL) >> 1)), (float)(long long int)((~0ULL) >> 1)))
    abort();
  if (sll2f((long long int)(~((~0ULL) >> 1))) != (float)(long long int)~((~0ULL) >> 1))
    abort();
  if (sll2d(0LL) != (double)0LL)
    abort();
  if (sll2d(~0LL) != (double)~0LL)
    abort();
  if (!dnear(sll2d((long long int)((~0ULL) >> 1)), (double)(long long int)((~0ULL) >> 1)))
    abort();
  if (!dnear(sll2d((long long int)~((~0ULL) >> 1)), (double)(long long int)~((~0ULL) >> 1)))
    abort();
}
```