user: Please show me the C implementation that matches the assembly code listed below:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <__CPROVER_isnan@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <__CPROVER_assume@plt>
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <__CPROVER_isinf@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <__CPROVER_assume@plt>
  movsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    $0x1,%edi
  call   <assert@plt>
  movsd  -0x8(%rbp),%xmm1
  pxor   %xmm0,%xmm0
  addsd  %xmm1,%xmm0
  ucomisd -0x8(%rbp),%xmm0
  setnp  %al
  mov    $0x0,%edx
  ucomisd -0x8(%rbp),%xmm0
  cmovne %edx,%eax
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  movsd  -0x8(%rbp),%xmm1
  pxor   %xmm0,%xmm0
  addsd  %xmm1,%xmm0
  ucomisd -0x8(%rbp),%xmm0
  setnp  %al
  mov    $0x0,%edx
  ucomisd -0x8(%rbp),%xmm0
  cmovne %edx,%eax
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  movsd  -0x8(%rbp),%xmm1
  pxor   %xmm0,%xmm0
  addsd  %xmm1,%xmm0
  ucomisd -0x8(%rbp),%xmm0
  setnp  %al
  mov    $0x0,%edx
  ucomisd -0x8(%rbp),%xmm0
  cmovne %edx,%eax
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  pxor   %xmm0,%xmm0
  subsd  -0x8(%rbp),%xmm0
  movsd  -0x8(%rbp),%xmm1
  movq   D1(%rip),%xmm2
  xorpd  %xmm2,%xmm1
  ucomisd %xmm1,%xmm0
  setnp  %al
  mov    $0x0,%edx
  ucomisd %xmm1,%xmm0
  cmovne %edx,%eax
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x1,%eax
  movsd  -0x8(%rbp),%xmm0
  ucomisd -0x8(%rbp),%xmm0
  jnp    L28
  mov    $0x0,%eax
L28:
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  pxor   %xmm0,%xmm0
  subsd  -0x8(%rbp),%xmm0
  movsd  -0x8(%rbp),%xmm1
  movq   D1(%rip),%xmm2
  xorpd  %xmm2,%xmm1
  ucomisd %xmm1,%xmm0
  setnp  %al
  mov    $0x0,%edx
  ucomisd %xmm1,%xmm0
  cmovne %edx,%eax
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%eax
  movsd  -0x8(%rbp),%xmm0
  ucomisd -0x8(%rbp),%xmm0
  jnp    L49
  mov    $0x0,%eax
L49:
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  movsd  -0x8(%rbp),%xmm1
  pxor   %xmm0,%xmm0
  mulsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  setnp  %al
  mov    $0x0,%edx
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  cmovne %edx,%eax
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  movsd  -0x8(%rbp),%xmm1
  pxor   %xmm0,%xmm0
  mulsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  setnp  %al
  mov    $0x0,%edx
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  cmovne %edx,%eax
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%eax
  movsd  -0x8(%rbp),%xmm0
  ucomisd -0x8(%rbp),%xmm0
  jnp    L54
  mov    $0x0,%eax
L54:
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x1,%eax
  movsd  -0x8(%rbp),%xmm0
  ucomisd -0x8(%rbp),%xmm0
  jnp    L25
  mov    $0x0,%eax
L25:
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x1,%eax
  movsd  -0x8(%rbp),%xmm0
  ucomisd -0x8(%rbp),%xmm0
  jnp    L53
  mov    $0x0,%eax
L53:
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%eax
  movsd  -0x8(%rbp),%xmm0
  ucomisd -0x8(%rbp),%xmm0
  jnp    L33
  mov    $0x0,%eax
L33:
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x64,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x1,%edi
  call   <assert@plt>
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D1
type_infered: f32[2]

tool: {"D1": [0.0,-0.0]}

assistant: ```c
int main() {
  double f, f2;
  __CPROVER_assume(!__CPROVER_isnan(f2));
  __CPROVER_assume(!__CPROVER_isinf(f2));
  f = f2;
  assert(100.0 + 10 == 110);
  assert(0 + f == f);
  assert(f + 0 == f);
  assert(100 + 0.5 == 100.5);
  assert(0.0 + 0.0 + f == f);
  assert(100.0 - 10 == 90);
  assert(0 - f == -f);
  assert(f - 0 == f);
  assert(100 - 0.5 == 99.5);
  assert(0.0 - 0.0 - f == -f);
  assert(-(-100.0) == 100);
  assert(-(1 - 2.0) == 1);
  assert(-(-f) == f);
  assert(100.0 * 10 == 1000);
  assert(0 * f == 0);
  assert(f * 0 == 0);
  assert(100 * 0.5 == 50);
  assert(f * 1 == f);
  assert(1 * f == f);
  assert(1.0 * 1.0 * f == f);
  assert(100.0 / 1.0 == 100);
  assert(100.1 / 1.0 == 100.1);
  assert(100.0 / 2.0 == 50);
  assert(100.0 / 0.5 == 200);
  assert(0 / 1.0 == 0);
  assert(f / 1.0 == f);
  assert(((double)(float)100) == 100.0);
  assert(((unsigned int)100.0) == 100.0);
  assert(100.0);
  assert(!0.0);
  assert((int)0.5 == 0);
  assert((int)0.49 == 0);
  assert((int)-1.5 == -1);
  assert((int)-10.49 == -10);
  assert(1.0 < 2.5);
  assert(1.0 <= 2.5);
  assert(1.01 <= 1.01);
  assert(2.5 > 1.0);
  assert(2.5 >= 1.0);
  assert(1.01 >= 1.01);
  assert(!(1.0 >= 2.5));
  assert(!(1.0 > 2.5));
  assert(1.0 != 2.5);
}
```