user: What is the c source code of the assembly code below?

```asm
<test3l>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbx
  sub    $0xc0,%rsp
  mov    0x100(%rsp),%r14
  mov    0x108(%rsp),%r15d
  mov    %edi,%ebx
  fldt   0xf0(%rsp)
  fld    %st(0)
  fstpt  (%rsp)
  mov    %r14,0x10(%rsp)
  mov    %r15d,0x18(%rsp)
  push   %r15
  push   %r14
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  call   <ccosl@plt>
  add    $0x20,%rsp
  fld    %st(0)
  fstpt  0x30(%rsp)
  fxch   %st(1)
  fld    %st(0)
  fstpt  0x40(%rsp)
  fxch   %st(1)
  fucomip %st(0),%st
  jp     L348
  fucomip %st(0),%st
  jp     L246
L374:
  push   %r15
  push   %r14
  push   0x108(%rsp)
  push   0x108(%rsp)
  call   <ctanl@plt>
  fld    %st(0)
  fstpt  0x70(%rsp)
  fxch   %st(1)
  fld    %st(0)
  fstpt  0x80(%rsp)
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ccosl@plt>
  add    $0x20,%rsp
  fucomip %st(0),%st
  jp     L129
  fucomip %st(0),%st
  jp     L371
L227:
  fldt   (%rsp)
  fldt   0x110(%rsp)
  fsubrp %st,%st(1)
  fld    %st(0)
  fstpt  0x70(%rsp)
  fldt   0x10(%rsp)
  fldt   0x120(%rsp)
  fsubrp %st,%st(1)
  fld    %st(0)
  fstpt  0x80(%rsp)
  lea    -0x20(%rsp),%rsp
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ctanl@plt>
  fstpt  0x40(%rsp)
  fstpt  0xd0(%rsp)
  fldt   0x130(%rsp)
  fldt   0x20(%rsp)
  fsubrp %st,%st(1)
  fld    %st(0)
  fstpt  0xb0(%rsp)
  fldt   0x140(%rsp)
  fldt   0x30(%rsp)
  fsubrp %st,%st(1)
  fld    %st(0)
  fstpt  0xc0(%rsp)
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ctanl@plt>
  add    $0x20,%rsp
  fchs
  fldt   0x20(%rsp)
  fucomip %st(1),%st
  fstp   %st(0)
  setp   %al
  mov    $0x1,%edx
  cmovne %edx,%eax
  test   %al,%al
  jne    L293
  fchs
  fldt   0xb0(%rsp)
  fucomip %st(1),%st
  fstp   %st(0)
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L274
L523:
  push   0x128(%rsp)
  push   0x128(%rsp)
  push   0x128(%rsp)
  push   0x128(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  call   <__divxc3>
  add    $0x40,%rsp
  fstpt  0x20(%rsp)
  mov    0x20(%rsp),%rax
  mov    0x28(%rsp),%edx
  fstpt  0xb0(%rsp)
  mov    0xb0(%rsp),%r12
  mov    0xb8(%rsp),%r13d
  push   %r13
  push   %r12
  push   %rdx
  push   %rax
  call   <ccosl@plt>
  add    $0x20,%rsp
  fucomip %st(0),%st
  jp     L169
  fucomip %st(0),%st
  jp     L248
L205:
  push   0x128(%rsp)
  push   0x128(%rsp)
  push   0x128(%rsp)
  push   0x128(%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
  jp     L132
  fucomip %st(0),%st
  jp     L44
L0:
  fldt   0x110(%rsp)
  fldt   (%rsp)
  fmul   %st,%st(1)
  fldt   0x120(%rsp)
  fldt   0x10(%rsp)
  fmul   %st,%st(1)
  fxch   %st(3)
  fsubp  %st,%st(1)
  fldt   0x120(%rsp)
  fmulp  %st,%st(2)
  fldt   0x110(%rsp)
  fmulp  %st,%st(3)
  fxch   %st(1)
  faddp  %st,%st(2)
  fucomi %st(1),%st
  jp     L332
  fxch   %st(1)
L491:
  lea    -0x20(%rsp),%rsp
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ccosl@plt>
  add    $0x20,%rsp
  fucomip %st(0),%st
  jp     L91
  fucomip %st(0),%st
  jp     L541
L282:
  fldt   0x110(%rsp)
  fldt   0x50(%rsp)
  fmul   %st,%st(1)
  fldt   0x60(%rsp)
  fld    %st(0)
  fldt   0x120(%rsp)
  fmul   %st,%st(1)
  fxch   %st(4)
  fsubp  %st,%st(1)
  fld    %st(3)
  fmulp  %st,%st(3)
  fldt   0x110(%rsp)
  fmul   %st,%st(2)
  fxch   %st(3)
  faddp  %st,%st(2)
  fucomi %st(1),%st
  jp     L43
  fstp   %st(3)
  fstp   %st(1)
L482:
  lea    -0x20(%rsp),%rsp
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ccosl@plt>
  add    $0x20,%rsp
  fucomip %st(0),%st
  jp     L200
  fucomip %st(0),%st
  jp     L595
L431:
  push   %r13
  push   %r12
  push   0x38(%rsp)
  push   0x38(%rsp)
  call   <ctanl@plt>
  fxch   %st(1)
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ccosl@plt>
  add    $0x20,%rsp
  fucomip %st(0),%st
  jp     L501
  fucomip %st(0),%st
  jp     L267
L583:
  test   %ebx,%ebx
  jne    L586
  fldt   0x110(%rsp)
  fldt   0x120(%rsp)
L516:
  lea    -0x20(%rsp),%rsp
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ccosl@plt>
  add    $0x20,%rsp
  fld    %st(0)
  fstpt  0x50(%rsp)
  fxch   %st(1)
  fld    %st(0)
  fstpt  0x60(%rsp)
  fxch   %st(1)
  fucomip %st(0),%st
  jp     L158
  fucomip %st(0),%st
  jp     L430
L594:
  test   %ebx,%ebx
  je     L108
  push   %r15
  push   %r14
  push   0x108(%rsp)
  push   0x108(%rsp)
  call   <ccosl@plt>
  add    $0x20,%rsp
  fldt   0x50(%rsp)
  fucomip %st(1),%st
  fstp   %st(0)
  setp   %al
  mov    $0x1,%edx
  cmovne %edx,%eax
  test   %al,%al
  jne    L347
  fldt   0x60(%rsp)
  fucomip %st(1),%st
  fstp   %st(0)
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  je     L328
  jmp    L263
L347:
  fstp   %st(0)
  jmp    L263
L562:
  fstp   %st(0)
L263:
  mov    $0x0,%eax
  call   <link_error@plt>
  test   %ebx,%ebx
  jne    L328
  jmp    L524
L348:
  fstp   %st(0)
L246:
  mov    $0x0,%eax
  call   <link_error@plt>
  jmp    L374
L129:
  fstp   %st(0)
L371:
  mov    $0x0,%eax
  call   <link_error@plt>
  jmp    L227
L293:
  fstp   %st(0)
L274:
  mov    $0x0,%eax
  call   <link_error@plt>
  jmp    L523
L169:
  fstp   %st(0)
L248:
  mov    $0x0,%eax
  call   <link_error@plt>
  mov    $0x0,%eax
  call   <link_error@plt>
  jmp    L205
L132:
  fstp   %st(0)
L44:
  mov    $0x0,%eax
  call   <link_error@plt>
  jmp    L0
L332:
  fstp   %st(0)
  fstp   %st(0)
  push   0x128(%rsp)
  push   0x128(%rsp)
  push   0x128(%rsp)
  push   0x128(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  push   0x38(%rsp)
  call   <__mulxc3>
  fxch   %st(1)
  add    $0x40,%rsp
  jmp    L491
L91:
  fstp   %st(0)
L541:
  mov    $0x0,%eax
  call   <link_error@plt>
  mov    $0x0,%eax
  call   <link_error@plt>
  jmp    L282
L43:
  fstp   %st(0)
  fstp   %st(0)
  fxch   %st(1)
  lea    -0x20(%rsp),%rsp
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  push   0x88(%rsp)
  push   0x88(%rsp)
  push   0x88(%rsp)
  push   0x88(%rsp)
  call   <__mulxc3>
  fxch   %st(1)
  add    $0x40,%rsp
  jmp    L482
L200:
  fstp   %st(0)
L595:
  mov    $0x0,%eax
  call   <link_error@plt>
  jmp    L431
L501:
  fstp   %st(0)
L267:
  mov    $0x0,%eax
  call   <link_error@plt>
  jmp    L583
L586:
  fldt   0xf0(%rsp)
  mov    %r14,0x50(%rsp)
  mov    %r15d,0x58(%rsp)
  fldt   0x50(%rsp)
  jmp    L516
L158:
  fstp   %st(0)
L430:
  mov    $0x0,%eax
  call   <link_error@plt>
  jmp    L594
L243:
  fstp   %st(0)
L417:
  mov    $0x0,%eax
  call   <link_error@plt>
  jmp    L331
L18:
  fstp   %st(0)
L372:
  mov    $0x0,%eax
  call   <link_error@plt>
  jmp    L58
L513:
  fstp   %st(0)
L390:
  mov    $0x0,%eax
  call   <link_error@plt>
  jmp    L47
L416:
  fstp   %st(0)
L83:
  mov    $0x0,%eax
  call   <link_error@plt>
  jmp    L377
L426:
  fstp   %st(0)
L176:
  mov    $0x0,%eax
  call   <link_error@plt>
  jmp    L9
L560:
  mov    $0x0,%eax
  call   <link_error@plt>
  jmp    L228
L108:
  push   0x128(%rsp)
  push   0x128(%rsp)
  push   0x128(%rsp)
  push   0x128(%rsp)
  call   <ccosl@plt>
  add    $0x20,%rsp
  fldt   0x50(%rsp)
  fucomip %st(1),%st
  fstp   %st(0)
  setp   %al
  mov    $0x1,%edx
  cmovne %edx,%eax
  test   %al,%al
  jne    L562
  fldt   0x60(%rsp)
  fucomip %st(1),%st
  fstp   %st(0)
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L263
L524:
  push   0x18(%rsp)
  push   0x18(%rsp)
  push   0x18(%rsp)
  push   0x18(%rsp)
  push   0x148(%rsp)
  push   0x148(%rsp)
  push   0x148(%rsp)
  push   0x148(%rsp)
  call   <__divxc3>
  fxch   %st(1)
  add    $0x20,%rsp
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <ctanl@plt>
  add    $0x20,%rsp
  fld    %st(0)
  fstpt  0xf0(%rsp)
  fxch   %st(1)
  fstpt  0x30(%rsp)
  mov    0x30(%rsp),%r14
  mov    0x38(%rsp),%r15d
  push   %r15
  push   %r14
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  call   <ccosl@plt>
  add    $0x20,%rsp
  fstpt  0x30(%rsp)
  fstpt  0x40(%rsp)
L328:
  push   %r15
  push   %r14
  push   0x108(%rsp)
  push   0x108(%rsp)
  call   <ccosl@plt>
  add    $0x20,%rsp
  fldt   0x30(%rsp)
  fucomip %st(1),%st
  fstp   %st(0)
  setp   %al
  mov    $0x1,%edx
  cmovne %edx,%eax
  test   %al,%al
  jne    L243
  fldt   0x40(%rsp)
  fucomip %st(1),%st
  fstp   %st(0)
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L417
L331:
  fldt   0x10(%rsp)
  fld    %st(0)
  fchs
  fstpt  0x30(%rsp)
  mov    0x30(%rsp),%r14
  mov    0x38(%rsp),%r15d
  fldt   (%rsp)
  fucomip %st(0),%st
  jp     L18
  fucomip %st(0),%st
  jp     L372
L58:
  push   %r15
  push   %r14
  push   0x18(%rsp)
  push   0x18(%rsp)
  call   <ccosl@plt>
  add    $0x20,%rsp
  fucomip %st(0),%st
  jp     L513
  fucomip %st(0),%st
  jp     L390
L47:
  fldt   0x80(%rsp)
  fchs
  fstpt  0x30(%rsp)
  mov    0x30(%rsp),%rax
  mov    0x38(%rsp),%edx
  push   %rdx
  push   %rax
  push   0x88(%rsp)
  push   0x88(%rsp)
  call   <ctanl@plt>
  add    $0x20,%rsp
  fstpt  0x30(%rsp)
  fstpt  0x50(%rsp)
  fldt   0xa0(%rsp)
  fchs
  fstpt  0x40(%rsp)
  mov    0x40(%rsp),%rax
  mov    0x48(%rsp),%edx
  push   %rdx
  push   %rax
  push   0xa8(%rsp)
  push   0xa8(%rsp)
  call   <ctanl@plt>
  add    $0x20,%rsp
  fchs
  fldt   0x30(%rsp)
  fucomip %st(1),%st
  fstp   %st(0)
  setp   %al
  mov    $0x1,%edx
  cmovne %edx,%eax
  test   %al,%al
  jne    L416
  fchs
  fldt   0x50(%rsp)
  fucomip %st(1),%st
  fstp   %st(0)
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L83
L377:
  xor    $0x8000,%r13d
  push   %r13
  push   %r12
  push   0x38(%rsp)
  push   0x38(%rsp)
  call   <ctanl@plt>
  add    $0x20,%rsp
  fucomip %st(0),%st
  jp     L426
  fucomip %st(0),%st
  jp     L176
L9:
  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>
  add    $0x20,%rsp
  fldt   0x20(%rsp)
  fucomip %st(1),%st
  fstp   %st(0)
  jp     L560
  jne    L560
L228:
  add    $0xc0,%rsp
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

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();
}
```