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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    $0x0,%eax
  call   <makeQNaN32@plt>
  mov    %eax,%ebx
  mov    $0x7e00,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %ebx,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L8
  mov    $0x1,%eax
  jmp    L65
L8:
  mov    $0x8000,%edi
  mov    $0x0,%eax
  call   <UINT32_C@plt>
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <makeNaN32@plt>
  mov    %eax,%ebx
  mov    $0x7e00,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %ebx,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L421
  mov    $0x1,%eax
  jmp    L65
L421:
  mov    $0x0,%eax
  call   <makeInf32@plt>
  mov    %eax,%ebx
  mov    $0x7c00,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %ebx,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L305
  mov    $0x1,%eax
  jmp    L65
L305:
  mov    $0x0,%eax
  call   <makeInf32@plt>
  neg    %eax
  mov    %eax,%ebx
  mov    $0xfc00,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %ebx,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L108
  mov    $0x1,%eax
  jmp    L65
L108:
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %eax,%edx
  mov    D28(%rip),%rax
  movq   %rax,%xmm0
  mov    %edx,%edi
  mov    $0x1,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L205
  mov    $0x1,%eax
  jmp    L65
L205:
  mov    $0x8000,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %eax,%edx
  mov    D45(%rip),%rax
  movq   %rax,%xmm0
  mov    %edx,%edi
  mov    $0x1,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L221
  mov    $0x1,%eax
  jmp    L65
L221:
  mov    $0x4248,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %eax,%edx
  mov    D36(%rip),%rax
  movq   %rax,%xmm0
  mov    %edx,%edi
  mov    $0x1,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L176
  mov    $0x1,%eax
  jmp    L65
L176:
  mov    $0xc248,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %eax,%edx
  mov    D25(%rip),%rax
  movq   %rax,%xmm0
  mov    %edx,%edi
  mov    $0x1,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L244
  mov    $0x1,%eax
  jmp    L65
L244:
  mov    $0x7c00,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %eax,%edx
  mov    D31(%rip),%rax
  movq   %rax,%xmm0
  mov    %edx,%edi
  mov    $0x1,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L84
  mov    $0x1,%eax
  jmp    L65
L84:
  mov    $0x6e62,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %eax,%edx
  mov    D1(%rip),%rax
  movq   %rax,%xmm0
  mov    %edx,%edi
  mov    $0x1,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L342
  mov    $0x1,%eax
  jmp    L65
L342:
  mov    $0x3c00,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %eax,%edx
  mov    D12(%rip),%rax
  movq   %rax,%xmm0
  mov    %edx,%edi
  mov    $0x1,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L385
  mov    $0x1,%eax
  jmp    L65
L385:
  mov    $0x400,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %eax,%edx
  mov    D35(%rip),%rax
  movq   %rax,%xmm0
  mov    %edx,%edi
  mov    $0x1,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L206
  mov    $0x1,%eax
  jmp    L65
L206:
  mov    $0x10,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %eax,%edx
  mov    D98(%rip),%rax
  movq   %rax,%xmm0
  mov    %edx,%edi
  mov    $0x1,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L100
  mov    $0x1,%eax
  jmp    L65
L100:
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %eax,%edx
  mov    D22(%rip),%rax
  movq   %rax,%xmm0
  mov    %edx,%edi
  mov    $0x1,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L179
  mov    $0x1,%eax
  jmp    L65
L179:
  mov    $0x8001,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %eax,%edx
  mov    D82(%rip),%rax
  movq   %rax,%xmm0
  mov    %edx,%edi
  mov    $0x1,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L34
  mov    $0x1,%eax
  jmp    L65
L34:
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %eax,%edx
  mov    D64(%rip),%rax
  movq   %rax,%xmm0
  mov    %edx,%edi
  mov    $0x1,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L360
  mov    $0x1,%eax
  jmp    L65
L360:
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %eax,%edx
  mov    D24(%rip),%rax
  movq   %rax,%xmm0
  mov    %edx,%edi
  mov    $0x1,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L373
  mov    $0x1,%eax
  jmp    L65
L373:
  mov    $0x8000,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %eax,%edx
  mov    D8(%rip),%rax
  movq   %rax,%xmm0
  mov    %edx,%edi
  mov    $0x1,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L194
  mov    $0x1,%eax
  jmp    L65
L194:
  mov    $0x7bff,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %eax,%edx
  mov    D75(%rip),%rax
  movq   %rax,%xmm0
  mov    %edx,%edi
  mov    $0x1,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L372
  mov    $0x1,%eax
  jmp    L65
L372:
  mov    $0x7bff,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %eax,%edx
  mov    D75(%rip),%rax
  movq   %rax,%xmm0
  mov    %edx,%edi
  mov    $0x1,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L324
  mov    $0x1,%eax
  jmp    L65
L324:
  mov    $0x0,%eax
  call   <makeInf32@plt>
  mov    %eax,%ebx
  mov    $0x7c00,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %ebx,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L277
  mov    $0x1,%eax
  jmp    L65
L277:
  mov    $0x0,%eax
  call   <makeInf32@plt>
  neg    %eax
  mov    %eax,%ebx
  mov    $0xfc00,%edi
  mov    $0x0,%eax
  call   <UINT16_C@plt>
  mov    %ebx,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <test__extendhfsf2@plt>
  test   %eax,%eax
  je     L337
  mov    $0x1,%eax
  jmp    L65
L337:
  mov    $0x0,%eax
L65:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D28
datatype: byte[8]
name: retrieve_data
arguments: tag: D45
datatype: byte[8]
name: retrieve_data
arguments: tag: D36
datatype: byte[8]
name: retrieve_data
arguments: tag: D25
datatype: byte[8]
name: retrieve_data
arguments: tag: D31
datatype: byte[8]
name: retrieve_data
arguments: tag: D1
datatype: byte[8]
name: retrieve_data
arguments: tag: D12
datatype: f64
name: retrieve_data
arguments: tag: D35
datatype: f64
name: retrieve_data
arguments: tag: D98
datatype: f64
name: retrieve_data
arguments: tag: D22
datatype: f64
name: retrieve_data
arguments: tag: D82
datatype: byte[8]
name: retrieve_data
arguments: tag: D64
datatype: byte[8]
name: retrieve_data
arguments: tag: D24
datatype: f64
name: retrieve_data
arguments: tag: D8
datatype: byte[8]
name: retrieve_data
arguments: tag: D75
datatype: byte[8]

tool: {"D28": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

tool: {"D45": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80]}

tool: {"D36": [0x00,0x00,0x00,0x60,0xfb,0x21,0x09,0x40]}

tool: {"D25": [0x00,0x00,0x00,0x60,0xfb,0x21,0x09,0xc0]}

tool: {"D31": [0x00,0x00,0x00,0x40,0x12,0x87,0x39,0x46]}

tool: {"D1": [0x00,0x00,0x00,0x00,0x00,0x88,0xb9,0x40]}

tool: D12: 1

tool: D35: 6.103515625e-05

tool: D98: 9.5367431640625e-07

tool: D22: 5.960464477539063e-08

tool: {"D82": [0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xbe]}

tool: {"D64": [0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x3e]}

tool: D24: 2.9802322387695312e-08

tool: {"D8": [0x00,0x00,0x00,0x00,0x00,0x00,0x60,0xbe]}

tool: {"D75": [0x00,0x00,0x00,0x00,0x00,0xfc,0xef,0x40]}

assistant: ```c
int main() {
  if (test__extendhfsf2(UINT16_C(0x7e00), makeQNaN32()))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x7e00), makeNaN32(UINT32_C(0x8000))))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x7c00), makeInf32()))
    return 1;
  if (test__extendhfsf2(UINT16_C(0xfc00), -makeInf32()))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x0), 0.0f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x8000), -0.0f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x4248), 3.1415926535f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0xc248), -3.1415926535f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x7c00), 0x1.987124876876324p+100f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x6e62), 0x1.988p+12f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x3c00), 0x1.0p+0f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x0400), 0x1.0p-14f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x0010), 0x1.0p-20f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x0001), 0x1.0p-24f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x8001), -0x1.0p-24f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x0001), 0x1.5p-25f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x0000), 0x1.0p-25f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x8000), -0x1.0p-25f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x7bff), 65504.0f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x7bff), 65504.0f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x7c00), makeInf32()))
    return 1;
  if (test__extendhfsf2(UINT16_C(0xfc00), -makeInf32()))
    return 1;
  return 0;
}
```