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

```asm
<main>:
  endbr64
  push   %rbx
  sub    $0xa0,%rsp
  movsd  D484(%rip),%xmm0
  movsd  %xmm0,0x40(%rsp)
  movsd  D161(%rip),%xmm0
  movsd  %xmm0,0x48(%rsp)
  movsd  0x40(%rsp),%xmm4
  movsd  0x48(%rsp),%xmm1
  movapd %xmm4,%xmm0
  addsd  %xmm4,%xmm0
  pxor   %xmm2,%xmm2
  movapd %xmm1,%xmm3
  mulsd  %xmm2,%xmm3
  subsd  %xmm3,%xmm0
  mulsd  %xmm4,%xmm2
  movapd %xmm1,%xmm3
  addsd  %xmm1,%xmm3
  addsd  %xmm3,%xmm2
  ucomisd %xmm2,%xmm0
  jp     L150
L253:
  movsd  %xmm0,0x40(%rsp)
  movsd  %xmm2,0x48(%rsp)
  movsd  0x40(%rsp),%xmm1
  movsd  0x48(%rsp),%xmm0
  ucomisd D463(%rip),%xmm1
  setp   %al
  mov    $0x1,%edx
  cmovne %edx,%eax
  test   %al,%al
  jne    L29
  ucomisd D215(%rip),%xmm0
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L29
  movsd  D484(%rip),%xmm0
  movsd  %xmm0,0x50(%rsp)
  movsd  D161(%rip),%xmm0
  movsd  %xmm0,0x58(%rsp)
  movsd  0x50(%rsp),%xmm0
  movsd  0x58(%rsp),%xmm1
  pxor   %xmm3,%xmm3
  movsd  D297(%rip),%xmm2
  call   <__divdc3>
  movsd  %xmm0,0x50(%rsp)
  movsd  %xmm1,0x58(%rsp)
  movsd  0x50(%rsp),%xmm1
  movsd  0x58(%rsp),%xmm0
  ucomisd D272(%rip),%xmm1
  setp   %al
  mov    $0x1,%edx
  cmovne %edx,%eax
  test   %al,%al
  jne    L223
  ucomisd D297(%rip),%xmm0
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L223
  mov    D16(%rip),%rax
  mov    %rax,0x10(%rsp)
  mov    0x10(%rsp),%edx
  mov    0x14(%rsp),%eax
  add    %edx,%edx
  add    %eax,%eax
  mov    %edx,0x10(%rsp)
  mov    %eax,0x14(%rsp)
  mov    0x10(%rsp),%edx
  mov    0x14(%rsp),%eax
  cmp    $0x6,%edx
  jne    L226
  cmp    $0x8,%eax
  jne    L226
  mov    D16(%rip),%rax
  mov    %rax,0x18(%rsp)
  mov    0x18(%rsp),%eax
  mov    0x1c(%rsp),%ecx
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %eax,%edx
  sar    %edx
  mov    %ecx,%eax
  shr    $0x1f,%eax
  add    %ecx,%eax
  sar    %eax
  mov    %edx,0x18(%rsp)
  mov    %eax,0x1c(%rsp)
  mov    0x18(%rsp),%edx
  mov    0x1c(%rsp),%eax
  cmp    $0x1,%edx
  jne    L137
  cmp    $0x2,%eax
  jne    L137
  movsd  D484(%rip),%xmm0
  movsd  %xmm0,0x60(%rsp)
  movsd  D161(%rip),%xmm0
  movsd  %xmm0,0x68(%rsp)
  movsd  0x60(%rsp),%xmm4
  movsd  0x68(%rsp),%xmm1
  movapd %xmm4,%xmm0
  addsd  %xmm4,%xmm0
  movsd  D114(%rip),%xmm2
  movapd %xmm1,%xmm3
  mulsd  %xmm2,%xmm3
  subsd  %xmm3,%xmm0
  mulsd  %xmm4,%xmm2
  movapd %xmm1,%xmm3
  addsd  %xmm1,%xmm3
  addsd  %xmm3,%xmm2
  ucomisd %xmm2,%xmm0
  jp     L39
L117:
  movsd  %xmm0,0x60(%rsp)
  movsd  %xmm2,0x68(%rsp)
  movsd  0x60(%rsp),%xmm1
  movsd  0x68(%rsp),%xmm0
  ucomisd D445(%rip),%xmm1
  setp   %al
  mov    $0x1,%edx
  cmovne %edx,%eax
  test   %al,%al
  jne    L283
  ucomisd D530(%rip),%xmm0
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L283
  movsd  D484(%rip),%xmm0
  movsd  %xmm0,0x70(%rsp)
  movsd  D161(%rip),%xmm0
  movsd  %xmm0,0x78(%rsp)
  movsd  0x70(%rsp),%xmm0
  movsd  0x78(%rsp),%xmm1
  movsd  D114(%rip),%xmm3
  pxor   %xmm2,%xmm2
  call   <__divdc3>
  movsd  %xmm0,0x70(%rsp)
  movsd  %xmm1,0x78(%rsp)
  movsd  0x70(%rsp),%xmm1
  movsd  0x78(%rsp),%xmm0
  ucomisd D28(%rip),%xmm1
  setp   %al
  mov    $0x1,%edx
  cmovne %edx,%eax
  test   %al,%al
  jne    L250
  ucomisd D532(%rip),%xmm0
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L250
  mov    D16(%rip),%rax
  mov    %rax,0x20(%rsp)
  mov    0x20(%rsp),%ecx
  mov    0x24(%rsp),%edx
  lea    (%rcx,%rcx,1),%eax
  lea    (%rdx,%rdx,4),%esi
  sub    %esi,%eax
  lea    (%rcx,%rcx,4),%ecx
  lea    (%rcx,%rdx,2),%edx
  mov    %eax,0x20(%rsp)
  mov    %edx,0x24(%rsp)
  mov    0x20(%rsp),%edx
  mov    0x24(%rsp),%eax
  cmp    $0xfffffff2,%edx
  jne    L301
  cmp    $0x17,%eax
  jne    L301
  mov    D133(%rip),%rax
  mov    %rax,0x28(%rsp)
  mov    0x28(%rsp),%edx
  mov    0x2c(%rsp),%ecx
  movslq %ecx,%rax
  imul   $0x66666667,%rax,%rax
  sar    $0x21,%rax
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  movslq %edx,%rcx
  imul   $0x66666667,%rcx,%rcx
  sar    $0x21,%rcx
  sar    $0x1f,%edx
  sub    %ecx,%edx
  mov    %eax,0x28(%rsp)
  mov    %edx,0x2c(%rsp)
  mov    0x28(%rsp),%edx
  mov    0x2c(%rsp),%eax
  cmp    $0x8,%edx
  jne    L49
  cmp    $0xfffffffa,%eax
  jne    L49
  mov    D37(%rip),%rax
  mov    %rax,0x30(%rsp)
  mov    0x30(%rsp),%eax
  mov    0x34(%rsp),%ecx
  movslq %eax,%rdx
  imul   $0xffffffff92492493,%rdx,%rdx
  shr    $0x20,%rdx
  add    %eax,%edx
  sar    $0x2,%edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  movslq %ecx,%rax
  imul   $0xffffffff92492493,%rax,%rax
  shr    $0x20,%rax
  add    %ecx,%eax
  sar    $0x2,%eax
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %edx,0x30(%rsp)
  mov    %eax,0x34(%rsp)
  mov    0x30(%rsp),%edx
  mov    0x34(%rsp),%eax
  cmp    $0x2,%edx
  jne    L371
  test   %eax,%eax
  jne    L371
  mov    D399(%rip),%rax
  mov    %rax,0x38(%rsp)
  mov    0x38(%rsp),%ecx
  mov    0x3c(%rsp),%eax
  movslq %eax,%rdx
  imul   $0x2aaaaaab,%rdx,%rdx
  sar    $0x21,%rdx
  sar    $0x1f,%eax
  sub    %eax,%edx
  neg    %ecx
  movslq %ecx,%rax
  imul   $0x2aaaaaab,%rax,%rax
  sar    $0x21,%rax
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %edx,0x38(%rsp)
  mov    %eax,0x3c(%rsp)
  mov    0x38(%rsp),%edx
  mov    0x3c(%rsp),%eax
  cmp    $0x2,%edx
  jne    L4
  test   %eax,%eax
  jne    L4
  movsd  D482(%rip),%xmm0
  movsd  %xmm0,0x80(%rsp)
  movsd  D338(%rip),%xmm0
  movsd  %xmm0,0x88(%rsp)
  movsd  0x80(%rsp),%xmm0
  movsd  0x88(%rsp),%xmm1
  movsd  D108(%rip),%xmm2
  movapd %xmm2,%xmm3
  call   <__divdc3>
  movsd  %xmm0,0x80(%rsp)
  movsd  %xmm1,0x88(%rsp)
  movsd  0x80(%rsp),%xmm0
  movsd  0x88(%rsp),%xmm1
  ucomisd D297(%rip),%xmm0
  setp   %al
  mov    $0x1,%edx
  cmovne %edx,%eax
  test   %al,%al
  jne    L262
  ucomisd D52(%rip),%xmm1
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L262
  movsd  D148(%rip),%xmm0
  movapd %xmm0,%xmm6
  mulsd  D52(%rip),%xmm6
  movsd  %xmm6,0x8(%rsp)
  ucomisd %xmm0,%xmm6
  jp     L9
  mov    D148(%rip),%rbx
L190:
  movq   %rbx,%xmm1
  mulsd  %xmm1,%xmm1
  movsd  0x8(%rsp),%xmm5
  movapd %xmm5,%xmm0
  mulsd  %xmm5,%xmm0
  subsd  %xmm1,%xmm0
  movq   %rbx,%xmm1
  mulsd  %xmm5,%xmm1
  addsd  %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L302
L145:
  andpd  D464(%rip),%xmm0
  ucomisd D99(%rip),%xmm0
  ja     L247
  andpd  D464(%rip),%xmm1
  ucomisd D99(%rip),%xmm1
  jbe    L234
L247:
  pxor   %xmm3,%xmm3
  movapd %xmm3,%xmm2
  movapd %xmm3,%xmm1
  movsd  D56(%rip),%xmm0
  call   <__divdc3>
  andpd  D464(%rip),%xmm0
  ucomisd D99(%rip),%xmm0
  ja     L260
  andpd  D464(%rip),%xmm1
  ucomisd D99(%rip),%xmm1
  jbe    L71
L260:
  movsd  0x8(%rsp),%xmm0
  andpd  D464(%rip),%xmm0
  ucomisd D99(%rip),%xmm0
  ja     L361
  movq   %rbx,%xmm0
  andpd  D464(%rip),%xmm0
  ucomisd D99(%rip),%xmm0
  jbe    L221
L361:
  movsd  D70(%rip),%xmm0
  movsd  %xmm0,0x90(%rsp)
  movsd  D153(%rip),%xmm0
  movsd  %xmm0,0x98(%rsp)
  movsd  0x90(%rsp),%xmm0
  movsd  0x98(%rsp),%xmm1
  movq   %rbx,%xmm3
  movsd  0x8(%rsp),%xmm2
  call   <__divdc3>
  movsd  %xmm0,0x90(%rsp)
  movsd  %xmm1,0x98(%rsp)
  movsd  0x90(%rsp),%xmm1
  movsd  0x98(%rsp),%xmm0
  ucomisd D52(%rip),%xmm1
  setp   %al
  mov    $0x1,%edx
  cmovne %edx,%eax
  test   %al,%al
  jne    L290
  ucomisd D52(%rip),%xmm0
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L290
  mov    $0x0,%eax
  add    $0xa0,%rsp
  pop    %rbx
  ret
L150:
  pxor   %xmm3,%xmm3
  movsd  D297(%rip),%xmm2
  movapd %xmm4,%xmm0
  call   <__muldc3>
  movapd %xmm1,%xmm2
  jmp    L253
L29:
  call   <abort@plt>
L223:
  call   <abort@plt>
L226:
  call   <abort@plt>
L137:
  call   <abort@plt>
L39:
  movsd  D114(%rip),%xmm3
  movsd  D297(%rip),%xmm2
  movapd %xmm4,%xmm0
  call   <__muldc3>
  movapd %xmm1,%xmm2
  jmp    L117
L283:
  call   <abort@plt>
L250:
  call   <abort@plt>
L301:
  call   <abort@plt>
L49:
  call   <abort@plt>
L371:
  call   <abort@plt>
L4:
  call   <abort@plt>
L262:
  call   <abort@plt>
L9:
  movsd  D56(%rip),%xmm3
  pxor   %xmm2,%xmm2
  movapd %xmm2,%xmm1
  call   <__muldc3>
  movsd  %xmm0,0x8(%rsp)
  movq   %xmm1,%rbx
  jmp    L190
L302:
  movq   %rbx,%xmm3
  movapd %xmm5,%xmm2
  movq   %rbx,%xmm1
  movapd %xmm5,%xmm0
  call   <__muldc3>
  jmp    L145
L234:
  call   <abort@plt>
L71:
  call   <abort@plt>
L221:
  call   <abort@plt>
L290:
  call   <abort@plt>
```

tool_calls: name: read_data
arguments: label: D484
type_guessed: f64
name: read_data
arguments: label: D161
type_guessed: f64
name: read_data
arguments: label: D463
type_guessed: byte[8]
name: read_data
arguments: label: D215
type_guessed: byte[8]
name: read_data
arguments: label: D297
type_guessed: byte[8]
name: read_data
arguments: label: D272
type_guessed: f64
name: read_data
arguments: label: D16
type_guessed: byte[8]
name: read_data
arguments: label: D114
type_guessed: byte[8]
name: read_data
arguments: label: D445
type_guessed: byte[8]
name: read_data
arguments: label: D530
type_guessed: byte[8]
name: read_data
arguments: label: D28
type_guessed: byte[8]
name: read_data
arguments: label: D532
type_guessed: byte[8]
name: read_data
arguments: label: D133
type_guessed: byte[8]
name: read_data
arguments: label: D37
type_guessed: byte[8]
name: read_data
arguments: label: D399
type_guessed: byte[8]
name: read_data
arguments: label: D482
type_guessed: byte[8]
name: read_data
arguments: label: D338
type_guessed: byte[8]
name: read_data
arguments: label: D108
type_guessed: byte[8]
name: read_data
arguments: label: D52
type_guessed: byte[8]
name: read_data
arguments: label: D148
type_guessed: byte[8]
name: read_data
arguments: label: D464
type_guessed: byte[16]
name: read_data
arguments: label: D99
type_guessed: byte[8]
name: read_data
arguments: label: D56
type_guessed: byte[8]
name: read_data
arguments: label: D70
type_guessed: byte[8]
name: read_data
arguments: label: D153
type_guessed: byte[8]

tool: D484: 3

tool: D161: 4

tool: {"D463": [0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x40]}

tool: {"D215": [0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x40]}

tool: {"D297": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40]}

tool: D272: 1.5

tool: {"D16": [0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00]}

tool: {"D114": [0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x40]}

tool: {"D445": [0x00,0x00,0x00,0x00,0x00,0x00,0x2c,0xc0]}

tool: {"D530": [0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x40]}

tool: {"D28": [0x9a,0x99,0x99,0x99,0x99,0x99,0xe9,0x3f]}

tool: {"D532": [0x33,0x33,0x33,0x33,0x33,0x33,0xe3,0xbf]}

tool: {"D133": [0x1e,0x00,0x00,0x00,0x28,0x00,0x00,0x00]}

tool: {"D37": [0x0e,0x00,0x00,0x00,0x06,0x00,0x00,0x00]}

tool: {"D399": [0x08,0x00,0x00,0x00,0x18,0x00,0x00,0x00]}

tool: {"D482": [0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0x7f]}

tool: {"D338": [0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0x7f]}

tool: {"D108": [0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0x7f]}

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

tool: {"D148": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x7f]}

tool: {"D464": [0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

tool: {"D99": [0xff,0xff,0xff,0xff,0xff,0xff,0xef,0x7f]}

tool: {"D56": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: {"D70": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

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

assistant: ```c
int main() {
  do {
    do {
      static const _Complex double foo = (_Complex double)(3. + 4.i) * (_Complex double)(2);
      if (foo != (_Complex double)(6 + 8i))
        __builtin_abort();
    } while (0);
    do {
      if ((_Complex double)(3. + 4.i) * (_Complex double)(2) != (_Complex double)(6 + 8i))
        link_error(64);
    } while (0);
    do {
      volatile _Complex double foo;
      foo = (_Complex double)(3. + 4.i);
      foo *= (_Complex double)(2);
      if (foo != (_Complex double)(6 + 8i))
        __builtin_abort();
    } while (0);
  } while (0);
  do {
    do {
      static const _Complex double foo = (_Complex double)(3. + 4.i) / (_Complex double)(2);
      if (foo != (_Complex double)(1.5 + 2i))
        __builtin_abort();
    } while (0);
    do {
      if ((_Complex double)(3. + 4.i) / (_Complex double)(2) != (_Complex double)(1.5 + 2i))
        link_error(65);
    } while (0);
    do {
      volatile _Complex double foo;
      foo = (_Complex double)(3. + 4.i);
      foo /= (_Complex double)(2);
      if (foo != (_Complex double)(1.5 + 2i))
        __builtin_abort();
    } while (0);
  } while (0);
  do {
    do {
      static const _Complex int foo = (_Complex int)(3 + 4i) * (_Complex int)(2);
      if (foo != (_Complex int)(6 + 8i))
        __builtin_abort();
    } while (0);
    do {
      if ((_Complex int)(3 + 4i) * (_Complex int)(2) != (_Complex int)(6 + 8i))
        link_error(66);
    } while (0);
    do {
      volatile _Complex int foo;
      foo = (_Complex int)(3 + 4i);
      foo *= (_Complex int)(2);
      if (foo != (_Complex int)(6 + 8i))
        __builtin_abort();
    } while (0);
  } while (0);
  do {
    do {
      static const _Complex int foo = (_Complex int)(3 + 4i) / (_Complex int)(2);
      if (foo != (_Complex int)(1 + 2i))
        __builtin_abort();
    } while (0);
    do {
      if ((_Complex int)(3 + 4i) / (_Complex int)(2) != (_Complex int)(1 + 2i))
        link_error(67);
    } while (0);
    do {
      volatile _Complex int foo;
      foo = (_Complex int)(3 + 4i);
      foo /= (_Complex int)(2);
      if (foo != (_Complex int)(1 + 2i))
        __builtin_abort();
    } while (0);
  } while (0);
  do {
    do {
      static const _Complex double foo = (_Complex double)(3. + 4.i) * (_Complex double)(2 + 5i);
      if (foo != (_Complex double)(-14 + 23i))
        __builtin_abort();
    } while (0);
    do {
      if ((_Complex double)(3. + 4.i) * (_Complex double)(2 + 5i) != (_Complex double)(-14 + 23i))
        link_error(69);
    } while (0);
    do {
      volatile _Complex double foo;
      foo = (_Complex double)(3. + 4.i);
      foo *= (_Complex double)(2 + 5i);
      if (foo != (_Complex double)(-14 + 23i))
        __builtin_abort();
    } while (0);
  } while (0);
  do {
    do {
      static const _Complex double foo = (_Complex double)(3. + 4.i) / (_Complex double)(5i);
      if (foo != (_Complex double)(.8 - .6i))
        __builtin_abort();
    } while (0);
    do {
      if ((_Complex double)(3. + 4.i) / (_Complex double)(5i) != (_Complex double)(.8 - .6i))
        link_error(70);
    } while (0);
    do {
      volatile _Complex double foo;
      foo = (_Complex double)(3. + 4.i);
      foo /= (_Complex double)(5i);
      if (foo != (_Complex double)(.8 - .6i))
        __builtin_abort();
    } while (0);
  } while (0);
  do {
    do {
      static const _Complex int foo = (_Complex int)(3 + 4i) * (_Complex int)(2 + 5i);
      if (foo != (_Complex int)(-14 + 23i))
        __builtin_abort();
    } while (0);
    do {
      if ((_Complex int)(3 + 4i) * (_Complex int)(2 + 5i) != (_Complex int)(-14 + 23i))
        link_error(71);
    } while (0);
    do {
      volatile _Complex int foo;
      foo = (_Complex int)(3 + 4i);
      foo *= (_Complex int)(2 + 5i);
      if (foo != (_Complex int)(-14 + 23i))
        __builtin_abort();
    } while (0);
  } while (0);
  do {
    do {
      static const _Complex int foo = (_Complex int)(30 + 40i) / (_Complex int)(5i);
      if (foo != (_Complex int)(8 - 6i))
        __builtin_abort();
    } while (0);
    do {
      if ((_Complex int)(30 + 40i) / (_Complex int)(5i) != (_Complex int)(8 - 6i))
        link_error(72);
    } while (0);
    do {
      volatile _Complex int foo;
      foo = (_Complex int)(30 + 40i);
      foo /= (_Complex int)(5i);
      if (foo != (_Complex int)(8 - 6i))
        __builtin_abort();
    } while (0);
  } while (0);
  do {
    do {
      static const _Complex int foo = (_Complex int)(14 + 6i) / (_Complex int)(7 + 3i);
      if (foo != (_Complex int)(2))
        __builtin_abort();
    } while (0);
    do {
      if ((_Complex int)(14 + 6i) / (_Complex int)(7 + 3i) != (_Complex int)(2))
        link_error(73);
    } while (0);
    do {
      volatile _Complex int foo;
      foo = (_Complex int)(14 + 6i);
      foo /= (_Complex int)(7 + 3i);
      if (foo != (_Complex int)(2))
        __builtin_abort();
    } while (0);
  } while (0);
  do {
    do {
      static const _Complex int foo = (_Complex int)(8 + 24i) / (_Complex int)(4 + 12i);
      if (foo != (_Complex int)(2))
        __builtin_abort();
    } while (0);
    do {
      if ((_Complex int)(8 + 24i) / (_Complex int)(4 + 12i) != (_Complex int)(2))
        link_error(74);
    } while (0);
    do {
      volatile _Complex int foo;
      foo = (_Complex int)(8 + 24i);
      foo /= (_Complex int)(4 + 12i);
      if (foo != (_Complex int)(2))
        __builtin_abort();
    } while (0);
  } while (0);
  do {
    do {
      static const _Complex double foo = (_Complex double)((((double)1.79769313486231570814527423731704357e+308L) * 0.5 + ((double)1.79769313486231570814527423731704357e+308L) * 0.5i)) / (_Complex double)((((double)1.79769313486231570814527423731704357e+308L) * 0.25 + ((double)1.79769313486231570814527423731704357e+308L) * 0.25i));
      if (foo != (_Complex double)(2))
        __builtin_abort();
    } while (0);
    do {
      if ((_Complex double)((((double)1.79769313486231570814527423731704357e+308L) * 0.5 + ((double)1.79769313486231570814527423731704357e+308L) * 0.5i)) / (_Complex double)((((double)1.79769313486231570814527423731704357e+308L) * 0.25 + ((double)1.79769313486231570814527423731704357e+308L) * 0.25i)) != (_Complex double)(2))
        link_error(77);
    } while (0);
    do {
      volatile _Complex double foo;
      foo = (_Complex double)((((double)1.79769313486231570814527423731704357e+308L) * 0.5 + ((double)1.79769313486231570814527423731704357e+308L) * 0.5i));
      foo /= (_Complex double)((((double)1.79769313486231570814527423731704357e+308L) * 0.25 + ((double)1.79769313486231570814527423731704357e+308L) * 0.25i));
      if (foo != (_Complex double)(2))
        __builtin_abort();
    } while (0);
  } while (0);
  do {
    if ((_Complex double)((1 + ((double)2.22044604925031308084726333618164062e-16L) + 1i)) * (_Complex double)((1 - ((double)2.22044604925031308084726333618164062e-16L) + 1i)) != (_Complex double)(-4.93038065763132378382330353301741393545754021943139377981e-32 + 2i))
      link_error(84);
  } while (0);
  do {
    static const _Complex double foo = ((((_Complex double)__builtin_inf() * 1i)) * (((_Complex double)__builtin_inf() * 1i)));
    if (!__builtin_isinf(__real foo) && !__builtin_isinf(__imag foo))
      __builtin_abort();
    if (!__builtin_isinf(__real((((_Complex double)__builtin_inf() * 1i)) * (((_Complex double)__builtin_inf() * 1i)))) && !__builtin_isinf(__imag((((_Complex double)__builtin_inf() * 1i)) * (((_Complex double)__builtin_inf() * 1i)))))
      __builtin_abort();
  } while (0);
  do {
    static const _Complex double foo = ((_Complex double)1 / (_Complex double)0);
    if (!__builtin_isinf(__real foo) && !__builtin_isinf(__imag foo))
      __builtin_abort();
    if (!__builtin_isinf(__real((_Complex double)1 / (_Complex double)0)) && !__builtin_isinf(__imag((_Complex double)1 / (_Complex double)0)))
      __builtin_abort();
  } while (0);
  do {
    static const _Complex double foo = ((((_Complex double)__builtin_inf() * 1i)) / (_Complex double)1);
    if (!__builtin_isinf(__real foo) && !__builtin_isinf(__imag foo))
      __builtin_abort();
    if (!__builtin_isinf(__real((((_Complex double)__builtin_inf() * 1i)) / (_Complex double)1)) && !__builtin_isinf(__imag((((_Complex double)__builtin_inf() * 1i)) / (_Complex double)1)))
      __builtin_abort();
  } while (0);
  do {
    volatile _Complex double foo;
    foo = (_Complex double)(1);
    foo /= (_Complex double)(((_Complex double)__builtin_inf() * 1i));
    if (foo != (_Complex double)(0))
      __builtin_abort();
  } while (0);
  do {
    static const _Complex double foo = (_Complex double)(1) / (_Complex double)(((_Complex double)__builtin_inf() * 1i));
    if (foo != (_Complex double)(0))
      __builtin_abort();
  } while (0);
  return 0;
}
```