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

```asm
<test3l>:
  endbr64
  push   %rbp
  push   %rbx
  mov    %edi,%ebx
  sub    $0xe8,%rsp
  fldt   0x100(%rsp)
  fld    %st(0)
  fstpt  0x20(%rsp)
  fldt   0x110(%rsp)
  fld    %st(0)
  fstpt  0x30(%rsp)
  fldt   0x120(%rsp)
  fstpt  0x40(%rsp)
  fldt   0x130(%rsp)
  fstpt  0x50(%rsp)
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ccosl@plt>
  fxch   %st(1)
  add    $0x20,%rsp
  fucomip %st(0),%st
  setp   %dl
  fucomip %st(0),%st
  setp   %al
  or     %al,%dl
  mov    %edx,%ebp
  jne    L4
L506:
  push   0x18(%rsp)
  push   0x18(%rsp)
  push   0x18(%rsp)
  push   0x18(%rsp)
  call   <ctanl@plt>
  fld    %st(0)
  fstpt  0x80(%rsp)
  fxch   %st(1)
  fld    %st(0)
  fstpt  0x90(%rsp)
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ccosl@plt>
  fxch   %st(1)
  add    $0x20,%rsp
  fucomip %st(0),%st
  jnp    L460
  fstp   %st(0)
L176:
  xor    %eax,%eax
  call   <link_error@plt>
L301:
  fldt   (%rsp)
  sub    $0x20,%rsp
  fldt   0x40(%rsp)
  fsubrp %st,%st(1)
  fld    %st(0)
  fstpt  0xd0(%rsp)
  fldt   0x30(%rsp)
  fldt   0x50(%rsp)
  fsubrp %st,%st(1)
  fld    %st(0)
  fstpt  0xc0(%rsp)
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ctanl@plt>
  fstpt  0x60(%rsp)
  fstpt  0x70(%rsp)
  fldt   0x20(%rsp)
  fldt   0x40(%rsp)
  fsubp  %st,%st(1)
  fld    %st(0)
  fstpt  0xa0(%rsp)
  fldt   0x30(%rsp)
  fldt   0x50(%rsp)
  fsubp  %st,%st(1)
  fld    %st(0)
  fstpt  0xb0(%rsp)
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ctanl@plt>
  add    $0x20,%rsp
  mov    $0x1,%edx
  fchs
  fldt   0x40(%rsp)
  fucomip %st(1),%st
  fstp   %st(0)
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L312
  fchs
  fldt   0x50(%rsp)
  fucomip %st(1),%st
  fstp   %st(0)
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L255
L365:
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  call   <__divxc3>
  add    $0x20,%rsp
  fld    %st(0)
  fstpt  0x60(%rsp)
  fxch   %st(1)
  fld    %st(0)
  fstpt  0x70(%rsp)
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ccosl@plt>
  add    $0x20,%rsp
  fucomip %st(0),%st
  jnp    L289
  fstp   %st(0)
L76:
  xor    %eax,%eax
  call   <link_error@plt>
  xor    %eax,%eax
  call   <link_error@plt>
L195:
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  call   <ctanl@plt>
  fxch   %st(1)
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  call   <__divxc3>
  fxch   %st(1)
  add    $0x20,%rsp
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ccosl@plt>
  add    $0x20,%rsp
  fucomip %st(0),%st
  jnp    L422
  fstp   %st(0)
L182:
  xor    %eax,%eax
  call   <link_error@plt>
L25:
  fldt   0x30(%rsp)
  fld    %st(0)
  fldt   0x10(%rsp)
  fmul   %st,%st(1)
  fldt   0x20(%rsp)
  fld    %st(0)
  fldt   (%rsp)
  fmul   %st,%st(1)
  fxch   %st(1)
  fsubp  %st,%st(4)
  fxch   %st(1)
  fmulp  %st,%st(2)
  fmulp  %st,%st(3)
  faddp  %st,%st(2)
  fucomi %st(1),%st
  jp     L352
  fxch   %st(1)
L99:
  sub    $0x20,%rsp
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ccosl@plt>
  add    $0x20,%rsp
  fucomip %st(0),%st
  jnp    L79
  fstp   %st(0)
L250:
  xor    %eax,%eax
  call   <link_error@plt>
  xor    %eax,%eax
  call   <link_error@plt>
L388:
  fldt   0x70(%rsp)
  fld    %st(0)
  fldt   0x30(%rsp)
  fmul   %st,%st(1)
  fldt   0x20(%rsp)
  fld    %st(0)
  fldt   0x60(%rsp)
  fmul   %st,%st(1)
  fxch   %st(1)
  fsubp  %st,%st(4)
  fxch   %st(4)
  fmul   %st(1),%st
  fxch   %st(2)
  fmulp  %st,%st(4)
  fxch   %st(3)
  faddp  %st,%st(1)
  fucomi %st(1),%st
  jp     L71
  fstp   %st(2)
  fxch   %st(1)
L55:
  sub    $0x20,%rsp
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ccosl@plt>
  add    $0x20,%rsp
  fucomip %st(0),%st
  jnp    L433
  fstp   %st(0)
L294:
  xor    %eax,%eax
  call   <link_error@plt>
L470:
  push   0x58(%rsp)
  push   0x58(%rsp)
  push   0x58(%rsp)
  push   0x58(%rsp)
  call   <ctanl@plt>
  fxch   %st(1)
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ccosl@plt>
  add    $0x20,%rsp
  fucomip %st(0),%st
  jnp    L432
  fstp   %st(0)
L431:
  xor    %eax,%eax
  call   <link_error@plt>
L5:
  test   %ebx,%ebx
  je     L227
  test   %bpl,%bpl
  jne    L254
L50:
  fldt   0x10(%rsp)
  fld    %st(0)
  fchs
  fldt   (%rsp)
  fucomip %st(0),%st
  jnp    L480
  fstp   %st(1)
L494:
  xor    %eax,%eax
  fstpt  0x20(%rsp)
  call   <link_error@plt>
  fldt   0x20(%rsp)
L474:
  sub    $0x10,%rsp
  fstpt  (%rsp)
  push   0x18(%rsp)
  push   0x18(%rsp)
  call   <ccosl@plt>
  add    $0x20,%rsp
  fucomip %st(0),%st
  jnp    L23
  fstp   %st(0)
L31:
  xor    %eax,%eax
  call   <link_error@plt>
L407:
  fldt   0xa0(%rsp)
  sub    $0x10,%rsp
  fchs
  fstpt  (%rsp)
  push   0xc8(%rsp)
  push   0xc8(%rsp)
  call   <ctanl@plt>
  pop    %rax
  pop    %rdx
  fstpt  0x30(%rsp)
  fstpt  0x40(%rsp)
  fldt   0xa0(%rsp)
  fchs
  fstpt  (%rsp)
  push   0x98(%rsp)
  push   0x98(%rsp)
  call   <ctanl@plt>
  add    $0x20,%rsp
  mov    $0x1,%edx
  fchs
  fldt   0x20(%rsp)
  fucomip %st(1),%st
  fstp   %st(0)
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L263
  fchs
  fldt   0x30(%rsp)
  fucomip %st(1),%st
  fstp   %st(0)
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L147
L225:
  fldt   0x50(%rsp)
  sub    $0x10,%rsp
  fchs
  fstpt  (%rsp)
  push   0x58(%rsp)
  push   0x58(%rsp)
  call   <ctanl@plt>
  add    $0x20,%rsp
  fucomip %st(0),%st
  jnp    L330
  fstp   %st(0)
L87:
  xor    %eax,%eax
  call   <link_error@plt>
L189:
  push   0x8(%rsp)
  push   0x8(%rsp)
  push   0x28(%rsp)
  push   0x28(%rsp)
  call   <atan2l@plt>
  fstpt  0x40(%rsp)
  add    $0x20,%rsp
  push   0x8(%rsp)
  push   0x8(%rsp)
  push   0x28(%rsp)
  push   0x28(%rsp)
  call   <atan2l@plt>
  fldt   0x40(%rsp)
  add    $0x20,%rsp
  fucomip %st(1),%st
  fstp   %st(0)
  jp     L443
  jne    L443
  add    $0xc8,%rsp
  pop    %rbx
  pop    %rbp
  ret
  nopw   0x0(%rax,%rax,1)
L480:
  fxch   %st(1)
  fucomip %st(0),%st
  jnp    L474
  jmp    L494
  nopw   0x0(%rax,%rax,1)
L227:
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  call   <ccosl@plt>
  add    $0x20,%rsp
  fucomip %st(0),%st
  jnp    L479
  fstp   %st(0)
  xor    %eax,%eax
  call   <link_error@plt>
  xor    %eax,%eax
  call   <link_error@plt>
  nopl   0x0(%rax)
L110:
  push   0x18(%rsp)
  push   0x18(%rsp)
  push   0x18(%rsp)
  push   0x18(%rsp)
  push   0x58(%rsp)
  push   0x58(%rsp)
  push   0x58(%rsp)
  push   0x58(%rsp)
  call   <__divxc3>
  fxch   %st(1)
  add    $0x20,%rsp
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ctanl@plt>
  fxch   %st(1)
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ccosl@plt>
  fxch   %st(1)
  add    $0x20,%rsp
  fucomip %st(0),%st
  jp     L358
  fucomip %st(0),%st
  jnp    L50
  jmp    L445
  nopl   0x0(%rax)
L358:
  fstp   %st(0)
L445:
  xor    %eax,%eax
  call   <link_error@plt>
  jmp    L50
  cs nopw 0x0(%rax,%rax,1)
L79:
  fucomip %st(0),%st
  jnp    L388
  jmp    L250
  nopl   (%rax)
L422:
  fucomip %st(0),%st
  jnp    L25
  jmp    L182
  nopl   (%rax)
L289:
  fucomip %st(0),%st
  jnp    L195
  jmp    L76
  nopl   (%rax)
L460:
  fucomip %st(0),%st
  jnp    L301
  jmp    L176
  nopl   (%rax)
L432:
  fucomip %st(0),%st
  jnp    L5
  jmp    L431
  nopl   (%rax)
L433:
  fucomip %st(0),%st
  jnp    L470
  jmp    L294
  nopl   (%rax)
L330:
  fucomip %st(0),%st
  jnp    L189
  jmp    L87
  nopl   (%rax)
L23:
  fucomip %st(0),%st
  jnp    L407
  jmp    L31
  nopl   (%rax)
L479:
  fucomip %st(0),%st
  jnp    L110
  xor    %eax,%eax
  call   <link_error@plt>
  xor    %eax,%eax
  call   <link_error@plt>
  jmp    L110
  nopl   0x0(%rax,%rax,1)
L263:
  fstp   %st(0)
L147:
  xor    %eax,%eax
  call   <link_error@plt>
  jmp    L225
  xchg   %ax,%ax
L443:
  add    $0xc8,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  jmp    10a0 <link_error@plt>
L312:
  fstp   %st(0)
L255:
  xor    %eax,%eax
  call   <link_error@plt>
  jmp    L365
  xchg   %ax,%ax
L4:
  xor    %eax,%eax
  call   <link_error@plt>
  jmp    L506
  nopl   0x0(%rax)
L254:
  xor    %eax,%eax
  call   <link_error@plt>
  xor    %eax,%eax
  call   <link_error@plt>
  xor    %eax,%eax
  call   <link_error@plt>
  jmp    L50
L352:
  fstp   %st(0)
  fstp   %st(0)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  call   <__mulxc3>
  fxch   %st(1)
  add    $0x40,%rsp
  jmp    L99
L71:
  fstp   %st(0)
  fstp   %st(0)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   %rcx
  push   %rcx
  fstpt  (%rsp)
  push   0x98(%rsp)
  push   0x98(%rsp)
  push   0x98(%rsp)
  push   0x98(%rsp)
  call   <__mulxc3>
  fxch   %st(1)
  add    $0x40,%rsp
  jmp    L55
```

assistant: ```c
void test3l(__complex__ long double x, __complex__ long double y, int i) {
  if (ccosl(x) != ccosl(-x))
    link_error();
  if (ccosl(ctanl(x)) != ccosl(ctanl(-x)))
    link_error();
  if (ctanl(x - y) != -ctanl(y - x))
    link_error();
  if (ccosl(x / y) != ccosl(-x / y))
    link_error();
  if (ccosl(x / y) != ccosl(x / -y))
    link_error();
  if (ccosl(x / ctanl(y)) != ccosl(-x / ctanl(-y)))
    link_error();
  if (ccosl(x * y) != ccosl(-x * y))
    link_error();
  if (ccosl(x * y) != ccosl(x * -y))
    link_error();
  if (ccosl(ctanl(x) * y) != ccosl(ctanl(-x) * -y))
    link_error();
  if (ccosl(ctanl(x / y)) != ccosl(-ctanl(x / -y)))
    link_error();
  if (ccosl(i ? x : y) != ccosl(i ? -x : y))
    link_error();
  if (ccosl(i ? x : y) != ccosl(i ? x : -y))
    link_error();
  if (ccosl(i ? x : ctanl(y / x)) != ccosl(i ? -x : -ctanl(-y / x)))
    link_error();
  if (~x != -~-x)
    link_error();
  if (ccosl(~x) != ccosl(-~-x))
    link_error();
  if (ctanl(~(x - y)) != -ctanl(~(y - x)))
    link_error();
  if (ctanl(~(x / y)) != -ctanl(~(x / -y)))
    link_error();
  if (cargl(x) != atan2l(__imag__ x, __real__ x))
    link_error();
}
```