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

```asm
<test3f>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  mov    %edi,%ebp
  push   %rbx
  sub    $0x198,%rsp
  movq   %xmm0,0x188(%rsp)
  movss  0x188(%rsp),%xmm2
  movss  0x18c(%rsp),%xmm3
  movq   %xmm1,0x180(%rsp)
  movss  0x180(%rsp),%xmm4
  movss  0x184(%rsp),%xmm5
  movss  %xmm2,0x178(%rsp)
  movss  %xmm3,0x17c(%rsp)
  movq   0x178(%rsp),%xmm0
  movss  %xmm2,0x4(%rsp)
  movss  %xmm3,0x8(%rsp)
  movss  %xmm4,0xc(%rsp)
  movss  %xmm5,0x10(%rsp)
  call   <ccosf@plt>
  movq   %xmm0,0x170(%rsp)
  movss  0x174(%rsp),%xmm1
  movss  0x170(%rsp),%xmm0
  ucomiss %xmm1,%xmm1
  setp   %bl
  ucomiss %xmm0,%xmm0
  setp   %al
  or     %al,%bl
  jne    L15
L175:
  movss  0x4(%rsp),%xmm2
  movss  %xmm2,0x168(%rsp)
  movss  0x8(%rsp),%xmm2
  movss  %xmm2,0x16c(%rsp)
  movq   0x168(%rsp),%xmm0
  call   <ctanf@plt>
  movq   %xmm0,0x160(%rsp)
  movss  0x160(%rsp),%xmm6
  movss  0x164(%rsp),%xmm4
  movss  %xmm6,0x158(%rsp)
  movss  %xmm4,0x15c(%rsp)
  movq   0x158(%rsp),%xmm0
  movss  %xmm6,0x14(%rsp)
  movss  %xmm4,0x18(%rsp)
  call   <ccosf@plt>
  movq   %xmm0,0x150(%rsp)
  movss  0x154(%rsp),%xmm0
  movss  0x150(%rsp),%xmm1
  ucomiss %xmm0,%xmm0
  jnp    L304
L357:
  xor    %eax,%eax
  call   <link_error@plt>
L52:
  movss  0x4(%rsp),%xmm4
  movss  0x8(%rsp),%xmm7
  subss  0xc(%rsp),%xmm4
  subss  0x10(%rsp),%xmm7
  movss  %xmm4,0x148(%rsp)
  movss  %xmm7,0x14c(%rsp)
  movq   0x148(%rsp),%xmm0
  movss  %xmm4,0x20(%rsp)
  movss  %xmm7,0x1c(%rsp)
  call   <ctanf@plt>
  movss  0xc(%rsp),%xmm6
  movss  0x10(%rsp),%xmm3
  subss  0x4(%rsp),%xmm6
  subss  0x8(%rsp),%xmm3
  movq   %xmm0,0x140(%rsp)
  movss  0x144(%rsp),%xmm2
  movd   %xmm6,%r12d
  movss  %xmm2,0x24(%rsp)
  movd   %xmm3,%r13d
  movss  %xmm6,0x138(%rsp)
  movss  %xmm3,0x13c(%rsp)
  movq   0x138(%rsp),%xmm0
  call   <ctanf@plt>
  mov    $0x1,%edx
  movq   %xmm0,0x130(%rsp)
  movss  0x130(%rsp),%xmm0
  xorps  D74(%rip),%xmm0
  ucomiss 0x140(%rsp),%xmm0
  movss  0x134(%rsp),%xmm1
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L366
  xorps  D74(%rip),%xmm1
  ucomiss 0x24(%rsp),%xmm1
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L366
L353:
  movss  0x8(%rsp),%xmm1
  movss  0x4(%rsp),%xmm0
  movss  0x10(%rsp),%xmm3
  movss  0xc(%rsp),%xmm2
  call   <__divsc3>
  movq   %xmm0,0x128(%rsp)
  movss  0x128(%rsp),%xmm5
  movss  0x12c(%rsp),%xmm7
  movss  %xmm5,0x120(%rsp)
  movd   %xmm5,%r14d
  movd   %xmm7,%r15d
  movss  %xmm7,0x124(%rsp)
  movq   0x120(%rsp),%xmm0
  call   <ccosf@plt>
  movq   %xmm0,0x118(%rsp)
  movss  0x118(%rsp),%xmm0
  movss  0x11c(%rsp),%xmm1
  ucomiss %xmm0,%xmm0
  jnp    L6
L404:
  xor    %eax,%eax
  call   <link_error@plt>
  xor    %eax,%eax
  call   <link_error@plt>
L124:
  movss  0xc(%rsp),%xmm4
  movss  0x10(%rsp),%xmm7
  movss  %xmm4,0x110(%rsp)
  movss  %xmm7,0x114(%rsp)
  movq   0x110(%rsp),%xmm0
  call   <ctanf@plt>
  movss  0x8(%rsp),%xmm1
  movq   %xmm0,0x108(%rsp)
  movss  0x4(%rsp),%xmm0
  movss  0x10c(%rsp),%xmm3
  movss  0x108(%rsp),%xmm2
  call   <__divsc3>
  movq   %xmm0,0x100(%rsp)
  movss  0x100(%rsp),%xmm0
  movss  %xmm0,0xf8(%rsp)
  movss  0x104(%rsp),%xmm0
  movss  %xmm0,0xfc(%rsp)
  movq   0xf8(%rsp),%xmm0
  call   <ccosf@plt>
  movq   %xmm0,0xf0(%rsp)
  movss  0xf0(%rsp),%xmm0
  movss  0xf4(%rsp),%xmm1
  ucomiss %xmm0,%xmm0
  jnp    L336
L48:
  xor    %eax,%eax
  call   <link_error@plt>
L27:
  movss  0x10(%rsp),%xmm5
  movss  0xc(%rsp),%xmm2
  movss  0x8(%rsp),%xmm3
  movss  0x4(%rsp),%xmm6
  movaps %xmm5,%xmm0
  movaps %xmm2,%xmm1
  mulss  %xmm3,%xmm0
  mulss  %xmm6,%xmm1
  mulss  %xmm6,%xmm5
  mulss  %xmm3,%xmm2
  subss  %xmm0,%xmm1
  movaps %xmm5,%xmm0
  addss  %xmm2,%xmm0
  ucomiss %xmm0,%xmm1
  jp     L199
L463:
  movss  %xmm1,0xe0(%rsp)
  movss  %xmm0,0xe4(%rsp)
  movq   0xe0(%rsp),%xmm0
  call   <ccosf@plt>
  movq   %xmm0,0xd8(%rsp)
  movss  0xd8(%rsp),%xmm0
  movss  0xdc(%rsp),%xmm1
  ucomiss %xmm0,%xmm0
  jnp    L345
L265:
  xor    %eax,%eax
  call   <link_error@plt>
  xor    %eax,%eax
  call   <link_error@plt>
L278:
  movss  0x18(%rsp),%xmm4
  movss  0xc(%rsp),%xmm5
  movss  0x10(%rsp),%xmm7
  movss  0x14(%rsp),%xmm3
  movaps %xmm4,%xmm0
  movaps %xmm5,%xmm1
  mulss  %xmm7,%xmm0
  mulss  %xmm3,%xmm1
  mulss  %xmm3,%xmm7
  mulss  %xmm5,%xmm4
  subss  %xmm0,%xmm1
  movaps %xmm7,%xmm0
  addss  %xmm4,%xmm0
  ucomiss %xmm0,%xmm1
  jp     L208
L395:
  movss  %xmm1,0xc8(%rsp)
  movss  %xmm0,0xcc(%rsp)
  movq   0xc8(%rsp),%xmm0
  call   <ccosf@plt>
  movq   %xmm0,0xc0(%rsp)
  movss  0xc0(%rsp),%xmm0
  movss  0xc4(%rsp),%xmm1
  ucomiss %xmm0,%xmm0
  jnp    L277
L308:
  xor    %eax,%eax
  call   <link_error@plt>
L273:
  mov    %r14d,0xb8(%rsp)
  mov    %r15d,0xbc(%rsp)
  movq   0xb8(%rsp),%xmm0
  call   <ctanf@plt>
  movq   %xmm0,0xb0(%rsp)
  movss  0xb0(%rsp),%xmm0
  movss  %xmm0,0xa8(%rsp)
  movss  0xb4(%rsp),%xmm0
  movss  %xmm0,0xac(%rsp)
  movq   0xa8(%rsp),%xmm0
  call   <ccosf@plt>
  movq   %xmm0,0xa0(%rsp)
  movss  0xa0(%rsp),%xmm0
  movss  0xa4(%rsp),%xmm1
  ucomiss %xmm0,%xmm0
  jnp    L429
L392:
  xor    %eax,%eax
  call   <link_error@plt>
L247:
  test   %ebp,%ebp
  je     L150
  test   %bl,%bl
  jne    L44
L152:
  movss  0x4(%rsp),%xmm4
  movss  0x8(%rsp),%xmm6
  ucomiss %xmm4,%xmm4
  movaps %xmm6,%xmm0
  xorps  D74(%rip),%xmm0
  jnp    L129
L446:
  xor    %eax,%eax
  movss  %xmm0,0xc(%rsp)
  call   <link_error@plt>
  movss  0xc(%rsp),%xmm0
L171:
  movss  0x4(%rsp),%xmm7
  movss  %xmm0,0x74(%rsp)
  movss  %xmm7,0x70(%rsp)
  movq   0x70(%rsp),%xmm0
  call   <ccosf@plt>
  movq   %xmm0,0x68(%rsp)
  movss  0x68(%rsp),%xmm0
  movss  0x6c(%rsp),%xmm1
  ucomiss %xmm0,%xmm0
  jnp    L68
L164:
  xor    %eax,%eax
  call   <link_error@plt>
L107:
  movss  0x20(%rsp),%xmm2
  movss  0x1c(%rsp),%xmm0
  xorps  D74(%rip),%xmm0
  movss  %xmm2,0x60(%rsp)
  movss  %xmm0,0x64(%rsp)
  movq   0x60(%rsp),%xmm0
  call   <ctanf@plt>
  mov    %r12d,0x50(%rsp)
  movq   %xmm0,0x58(%rsp)
  movd   %r13d,%xmm0
  xorps  D74(%rip),%xmm0
  movss  0x5c(%rsp),%xmm6
  movss  %xmm0,0x54(%rsp)
  movq   0x50(%rsp),%xmm0
  movss  %xmm6,0xc(%rsp)
  call   <ctanf@plt>
  mov    $0x1,%edx
  movq   %xmm0,0x48(%rsp)
  movss  0x48(%rsp),%xmm0
  xorps  D74(%rip),%xmm0
  ucomiss 0x58(%rsp),%xmm0
  movss  0x4c(%rsp),%xmm1
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L220
  xorps  D74(%rip),%xmm1
  ucomiss 0xc(%rsp),%xmm1
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L220
L61:
  movd   %r15d,%xmm0
  xorps  D74(%rip),%xmm0
  mov    %r14d,0x40(%rsp)
  movss  %xmm0,0x44(%rsp)
  movq   0x40(%rsp),%xmm0
  call   <ctanf@plt>
  movq   %xmm0,0x38(%rsp)
  movss  0x38(%rsp),%xmm0
  movss  0x3c(%rsp),%xmm1
  ucomiss %xmm0,%xmm0
  jnp    L57
L425:
  xor    %eax,%eax
  call   <link_error@plt>
L196:
  movss  0x4(%rsp),%xmm1
  movss  0x8(%rsp),%xmm0
  call   <atan2f@plt>
  movss  0x4(%rsp),%xmm1
  movd   %xmm0,%ebx
  movss  0x8(%rsp),%xmm0
  call   <atan2f@plt>
  movd   %ebx,%xmm7
  ucomiss %xmm0,%xmm7
  jp     L75
  jne    L75
  add    $0x198,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L129:
  ucomiss %xmm6,%xmm6
  jnp    L171
  jmp    L446
  xchg   %ax,%ax
L150:
  movss  0xc(%rsp),%xmm5
  movss  0x10(%rsp),%xmm4
  movss  %xmm5,0x30(%rsp)
  movss  %xmm4,0x34(%rsp)
  movq   0x30(%rsp),%xmm0
  call   <ccosf@plt>
  movq   %xmm0,0x28(%rsp)
  movss  0x28(%rsp),%xmm0
  movss  0x2c(%rsp),%xmm1
  ucomiss %xmm0,%xmm0
  jnp    L158
  xor    %eax,%eax
  call   <link_error@plt>
  xor    %eax,%eax
  call   <link_error@plt>
  nopl   0x0(%rax)
L488:
  movss  0x10(%rsp),%xmm1
  movss  0x8(%rsp),%xmm3
  movss  0x4(%rsp),%xmm2
  movss  0xc(%rsp),%xmm0
  call   <__divsc3>
  movq   %xmm0,0x98(%rsp)
  movss  0x98(%rsp),%xmm0
  movss  %xmm0,0x90(%rsp)
  movss  0x9c(%rsp),%xmm0
  movss  %xmm0,0x94(%rsp)
  movq   0x90(%rsp),%xmm0
  call   <ctanf@plt>
  movq   %xmm0,0x88(%rsp)
  movss  0x88(%rsp),%xmm0
  movss  %xmm0,0x80(%rsp)
  movss  0x8c(%rsp),%xmm0
  movss  %xmm0,0x84(%rsp)
  movq   0x80(%rsp),%xmm0
  call   <ccosf@plt>
  movq   %xmm0,0x78(%rsp)
  movss  0x7c(%rsp),%xmm0
  movss  0x78(%rsp),%xmm1
  ucomiss %xmm0,%xmm0
  jp     L225
  ucomiss %xmm1,%xmm1
  jnp    L152
L225:
  xor    %eax,%eax
  call   <link_error@plt>
  jmp    L152
  nop
L345:
  ucomiss %xmm1,%xmm1
  jnp    L278
  jmp    L265
  xchg   %ax,%ax
L336:
  ucomiss %xmm1,%xmm1
  jnp    L27
  jmp    L48
  xchg   %ax,%ax
L6:
  ucomiss %xmm1,%xmm1
  jnp    L124
  jmp    L404
  xchg   %ax,%ax
L304:
  ucomiss %xmm1,%xmm1
  jnp    L52
  jmp    L357
  xchg   %ax,%ax
L429:
  ucomiss %xmm1,%xmm1
  jnp    L247
  jmp    L392
  xchg   %ax,%ax
L277:
  ucomiss %xmm1,%xmm1
  jnp    L273
  jmp    L308
  xchg   %ax,%ax
L57:
  ucomiss %xmm1,%xmm1
  jnp    L196
  jmp    L425
  xchg   %ax,%ax
L68:
  ucomiss %xmm1,%xmm1
  jnp    L107
  jmp    L164
  xchg   %ax,%ax
L158:
  ucomiss %xmm1,%xmm1
  jnp    L488
  xor    %eax,%eax
  call   <link_error@plt>
  xor    %eax,%eax
  call   <link_error@plt>
  jmp    L488
  nopl   0x0(%rax)
L220:
  xor    %eax,%eax
  call   <link_error@plt>
  jmp    L61
  nopl   0x0(%rax)
L75:
  add    $0x198,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1090 <link_error@plt>
  nopl   0x0(%rax,%rax,1)
L366:
  xor    %eax,%eax
  call   <link_error@plt>
  jmp    L353
  nopl   0x0(%rax)
L15:
  xor    %eax,%eax
  call   <link_error@plt>
  jmp    L175
  nopl   0x0(%rax)
L44:
  xor    %eax,%eax
  call   <link_error@plt>
  xor    %eax,%eax
  call   <link_error@plt>
  xor    %eax,%eax
  call   <link_error@plt>
  jmp    L152
L199:
  movss  0x8(%rsp),%xmm1
  movss  0x10(%rsp),%xmm3
  movaps %xmm6,%xmm0
  movss  0xc(%rsp),%xmm2
  call   <__mulsc3>
  movq   %xmm0,0xe8(%rsp)
  movss  0xe8(%rsp),%xmm1
  movss  0xec(%rsp),%xmm0
  jmp    L463
L208:
  movss  0x14(%rsp),%xmm0
  movss  0x18(%rsp),%xmm1
  movaps %xmm5,%xmm2
  movss  0x10(%rsp),%xmm3
  call   <__mulsc3>
  movq   %xmm0,0xd0(%rsp)
  movss  0xd0(%rsp),%xmm1
  movss  0xd4(%rsp),%xmm0
  jmp    L395
```

tool_calls: name: retrieve_data
arguments: data_tag: D74
type_infered: byte[16]

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

assistant: ```c
void test3f(__complex__ float x, __complex__ float y, int i) {
  if (ccosf(x) != ccosf(-x))
    link_error();
  if (ccosf(ctanf(x)) != ccosf(ctanf(-x)))
    link_error();
  if (ctanf(x - y) != -ctanf(y - x))
    link_error();
  if (ccosf(x / y) != ccosf(-x / y))
    link_error();
  if (ccosf(x / y) != ccosf(x / -y))
    link_error();
  if (ccosf(x / ctanf(y)) != ccosf(-x / ctanf(-y)))
    link_error();
  if (ccosf(x * y) != ccosf(-x * y))
    link_error();
  if (ccosf(x * y) != ccosf(x * -y))
    link_error();
  if (ccosf(ctanf(x) * y) != ccosf(ctanf(-x) * -y))
    link_error();
  if (ccosf(ctanf(x / y)) != ccosf(-ctanf(x / -y)))
    link_error();
  if (ccosf(i ? x : y) != ccosf(i ? -x : y))
    link_error();
  if (ccosf(i ? x : y) != ccosf(i ? x : -y))
    link_error();
  if (ccosf(i ? x : ctanf(y / x)) != ccosf(i ? -x : -ctanf(-y / x)))
    link_error();
  if (~x != -~-x)
    link_error();
  if (ccosf(~x) != ccosf(-~-x))
    link_error();
  if (ctanf(~(x - y)) != -ctanf(~(y - x)))
    link_error();
  if (ctanf(~(x / y)) != -ctanf(~(x / -y)))
    link_error();
  if (cargf(x) != atan2f(__imag__ x, __real__ x))
    link_error();
}
```