user: 请从给定的汇编指令推导出C源代码：

```asm
<fft16>:
  endbr64
  sub    $0x118,%rsp
  movsd  (%rsi),%xmm6
  movsd  0x80(%rsi),%xmm1
  movsd  0x8(%rsi),%xmm5
  movsd  0x88(%rsi),%xmm0
  movapd %xmm6,%xmm9
  subsd  %xmm1,%xmm6
  movsd  0x40(%rsi),%xmm7
  movsd  0xc0(%rsi),%xmm2
  addsd  %xmm1,%xmm9
  movapd %xmm5,%xmm4
  movsd  0x48(%rsi),%xmm1
  subsd  %xmm0,%xmm5
  addsd  %xmm0,%xmm4
  movsd  0xc8(%rsi),%xmm0
  movapd %xmm7,%xmm8
  subsd  %xmm2,%xmm7
  movapd %xmm1,%xmm3
  addsd  %xmm2,%xmm8
  addsd  %xmm0,%xmm3
  subsd  %xmm0,%xmm1
  movapd %xmm9,%xmm11
  movapd %xmm4,%xmm15
  movapd %xmm7,%xmm2
  addsd  %xmm8,%xmm11
  subsd  %xmm8,%xmm9
  subsd  %xmm3,%xmm4
  movapd %xmm1,%xmm0
  addsd  %xmm3,%xmm15
  movsd  %xmm11,0x18(%rsp)
  movsd  %xmm4,0x88(%rsp)
  pxor   %xmm4,%xmm4
  mulsd  %xmm4,%xmm2
  movsd  %xmm15,0x78(%rsp)
  movsd  %xmm9,0x80(%rsp)
  mulsd  %xmm4,%xmm0
  subsd  %xmm1,%xmm2
  addsd  %xmm7,%xmm0
  ucomisd %xmm0,%xmm2
  jp     L277
L258:
  movapd %xmm6,%xmm7
  subsd  %xmm2,%xmm6
  movsd  0x90(%rsi),%xmm3
  movsd  0x58(%rsi),%xmm8
  movsd  0xd0(%rsi),%xmm10
  addsd  %xmm2,%xmm7
  movsd  0x98(%rsi),%xmm2
  movsd  0xd8(%rsi),%xmm9
  movsd  D264(%rip),%xmm14
  movsd  %xmm6,0xa0(%rsp)
  movsd  0x18(%rsi),%xmm6
  movsd  %xmm7,0x90(%rsp)
  movapd %xmm5,%xmm7
  subsd  %xmm0,%xmm5
  addsd  %xmm0,%xmm7
  movapd %xmm6,%xmm1
  subsd  %xmm2,%xmm6
  addsd  %xmm2,%xmm1
  movapd %xmm8,%xmm2
  movsd  %xmm5,0xa8(%rsp)
  movsd  0x10(%rsi),%xmm5
  addsd  %xmm9,%xmm2
  movsd  %xmm7,0x98(%rsp)
  movsd  0x50(%rsi),%xmm7
  movapd %xmm5,%xmm0
  subsd  %xmm3,%xmm5
  movapd %xmm1,%xmm11
  addsd  %xmm3,%xmm0
  movapd %xmm7,%xmm3
  subsd  %xmm2,%xmm1
  addsd  %xmm10,%xmm3
  addsd  %xmm2,%xmm11
  movapd %xmm0,%xmm13
  movapd %xmm1,%xmm2
  subsd  %xmm3,%xmm0
  addsd  %xmm3,%xmm13
  mulsd  %xmm14,%xmm2
  movsd  %xmm11,0xb8(%rsp)
  movsd  %xmm13,0xb0(%rsp)
  movapd %xmm0,%xmm3
  mulsd  %xmm14,%xmm3
  movapd %xmm3,%xmm12
  addsd  %xmm2,%xmm3
  subsd  %xmm2,%xmm12
  movsd  %xmm3,0x28(%rsp)
  ucomisd %xmm3,%xmm12
  movsd  %xmm12,0x20(%rsp)
  jp     L35
L146:
  movapd %xmm8,%xmm1
  subsd  %xmm10,%xmm7
  subsd  %xmm9,%xmm1
  movapd %xmm7,%xmm0
  movapd %xmm7,%xmm8
  mulsd  %xmm4,%xmm8
  movapd %xmm1,%xmm7
  mulsd  %xmm4,%xmm7
  subsd  %xmm1,%xmm8
  addsd  %xmm0,%xmm7
  ucomisd %xmm7,%xmm8
  jp     L20
L246:
  movapd %xmm5,%xmm0
  movapd %xmm6,%xmm1
  movsd  D174(%rip),%xmm13
  movsd  D293(%rip),%xmm11
  addsd  %xmm8,%xmm0
  addsd  %xmm7,%xmm1
  movapd %xmm0,%xmm12
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm3
  mulsd  %xmm11,%xmm2
  mulsd  %xmm13,%xmm12
  mulsd  %xmm11,%xmm3
  subsd  %xmm2,%xmm12
  movapd %xmm1,%xmm2
  mulsd  %xmm13,%xmm2
  addsd  %xmm2,%xmm3
  ucomisd %xmm3,%xmm12
  movsd  %xmm3,0x30(%rsp)
  jp     L219
L336:
  subsd  %xmm8,%xmm5
  subsd  %xmm7,%xmm6
  movapd %xmm5,%xmm1
  movapd %xmm6,%xmm0
  mulsd  %xmm11,%xmm1
  mulsd  %xmm13,%xmm0
  movapd %xmm1,%xmm7
  movapd %xmm5,%xmm1
  subsd  %xmm0,%xmm7
  mulsd  %xmm13,%xmm1
  movapd %xmm6,%xmm0
  mulsd  %xmm11,%xmm0
  movsd  %xmm7,0x38(%rsp)
  movapd %xmm1,%xmm3
  addsd  %xmm0,%xmm3
  ucomisd %xmm3,%xmm7
  movsd  %xmm3,0x40(%rsp)
  jp     L1
L72:
  movsd  0x20(%rsi),%xmm5
  movsd  0x60(%rsi),%xmm7
  movsd  0xa0(%rsi),%xmm3
  movsd  0x28(%rsi),%xmm6
  movapd %xmm5,%xmm0
  movsd  0xa8(%rsi),%xmm2
  movsd  0xe0(%rsi),%xmm10
  addsd  %xmm3,%xmm0
  subsd  %xmm3,%xmm5
  movapd %xmm7,%xmm3
  movsd  0x68(%rsi),%xmm8
  addsd  %xmm10,%xmm3
  movapd %xmm6,%xmm1
  movsd  0xe8(%rsi),%xmm9
  subsd  %xmm2,%xmm6
  addsd  %xmm2,%xmm1
  movapd %xmm8,%xmm2
  movapd %xmm0,%xmm15
  addsd  %xmm9,%xmm2
  addsd  %xmm3,%xmm15
  subsd  %xmm3,%xmm0
  movsd  %xmm15,0xc0(%rsp)
  movapd %xmm1,%xmm15
  subsd  %xmm2,%xmm1
  addsd  %xmm2,%xmm15
  movapd %xmm0,%xmm2
  mulsd  %xmm4,%xmm2
  movsd  %xmm15,0xc8(%rsp)
  subsd  %xmm1,%xmm2
  movapd %xmm2,%xmm3
  movsd  %xmm2,0x48(%rsp)
  movapd %xmm1,%xmm2
  mulsd  %xmm4,%xmm2
  addsd  %xmm0,%xmm2
  ucomisd %xmm2,%xmm3
  movsd  %xmm2,0x50(%rsp)
  jp     L314
L287:
  movapd %xmm8,%xmm1
  subsd  %xmm10,%xmm7
  subsd  %xmm9,%xmm1
  movapd %xmm7,%xmm0
  movapd %xmm7,%xmm8
  mulsd  %xmm4,%xmm8
  movapd %xmm1,%xmm7
  mulsd  %xmm4,%xmm7
  subsd  %xmm1,%xmm8
  addsd  %xmm0,%xmm7
  ucomisd %xmm7,%xmm8
  jp     L13
L286:
  movapd %xmm5,%xmm0
  movapd %xmm6,%xmm1
  addsd  %xmm8,%xmm0
  addsd  %xmm7,%xmm1
  movapd %xmm0,%xmm3
  movapd %xmm1,%xmm2
  mulsd  %xmm14,%xmm3
  mulsd  %xmm14,%xmm2
  movapd %xmm3,%xmm10
  subsd  %xmm2,%xmm10
  addsd  %xmm2,%xmm3
  ucomisd %xmm3,%xmm10
  movsd  %xmm10,0x58(%rsp)
  movsd  %xmm3,0x60(%rsp)
  jp     L150
L151:
  subsd  %xmm8,%xmm5
  subsd  %xmm7,%xmm6
  movsd  D359(%rip),%xmm2
  mulsd  %xmm5,%xmm2
  movapd %xmm6,%xmm1
  movapd %xmm5,%xmm0
  movq   D10(%rip),%xmm5
  mulsd  %xmm14,%xmm1
  movapd %xmm2,%xmm7
  xorpd  %xmm5,%xmm2
  subsd  %xmm1,%xmm7
  subsd  %xmm1,%xmm2
  ucomisd %xmm2,%xmm7
  movsd  %xmm7,0x68(%rsp)
  movsd  %xmm2,0x70(%rsp)
  jp     L77
L7:
  movsd  0x30(%rsi),%xmm6
  movsd  0xb0(%rsi),%xmm3
  movsd  0x70(%rsi),%xmm8
  movsd  0x38(%rsi),%xmm7
  movapd %xmm6,%xmm0
  subsd  %xmm3,%xmm6
  movsd  0xf0(%rsi),%xmm15
  movsd  0xb8(%rsi),%xmm2
  addsd  %xmm3,%xmm0
  movapd %xmm8,%xmm3
  movapd %xmm7,%xmm1
  movsd  0x78(%rsi),%xmm9
  addsd  %xmm15,%xmm3
  addsd  %xmm2,%xmm1
  subsd  %xmm2,%xmm7
  movsd  0xf8(%rsi),%xmm2
  movapd %xmm0,%xmm10
  addsd  %xmm3,%xmm10
  subsd  %xmm3,%xmm0
  movsd  D359(%rip),%xmm3
  movsd  %xmm2,0xd0(%rsp)
  addsd  %xmm9,%xmm2
  movsd  %xmm10,0x8(%rsp)
  mulsd  %xmm0,%xmm3
  movapd %xmm1,%xmm10
  subsd  %xmm2,%xmm1
  addsd  %xmm2,%xmm10
  movapd %xmm1,%xmm2
  movsd  %xmm10,0x10(%rsp)
  mulsd  %xmm14,%xmm2
  movapd %xmm3,%xmm10
  xorpd  %xmm3,%xmm5
  subsd  %xmm2,%xmm10
  subsd  %xmm2,%xmm5
  ucomisd %xmm5,%xmm10
  jp     L109
L249:
  subsd  0xd0(%rsp),%xmm9
  subsd  %xmm15,%xmm8
  movapd %xmm9,%xmm14
  movapd %xmm8,%xmm15
  mulsd  %xmm4,%xmm15
  mulsd  %xmm4,%xmm14
  subsd  %xmm9,%xmm15
  addsd  %xmm8,%xmm14
  ucomisd %xmm14,%xmm15
  jp     L8
L142:
  movapd %xmm6,%xmm0
  movapd %xmm7,%xmm1
  addsd  %xmm15,%xmm0
  addsd  %xmm14,%xmm1
  movapd %xmm0,%xmm9
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm8
  mulsd  %xmm13,%xmm2
  mulsd  %xmm11,%xmm9
  mulsd  %xmm13,%xmm8
  subsd  %xmm2,%xmm9
  movapd %xmm1,%xmm2
  mulsd  %xmm11,%xmm2
  addsd  %xmm2,%xmm8
  ucomisd %xmm8,%xmm9
  jp     L275
L305:
  subsd  %xmm14,%xmm7
  subsd  %xmm15,%xmm6
  movsd  D311(%rip),%xmm2
  movsd  D72(%rip),%xmm3
  movapd %xmm6,%xmm15
  movapd %xmm7,%xmm0
  movapd %xmm6,%xmm14
  mulsd  %xmm3,%xmm0
  mulsd  %xmm2,%xmm15
  mulsd  %xmm3,%xmm14
  subsd  %xmm0,%xmm15
  movapd %xmm7,%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm14
  ucomisd %xmm14,%xmm15
  jp     L187
L190:
  movsd  0x18(%rsp),%xmm7
  movsd  0x78(%rsp),%xmm6
  movsd  0xc0(%rsp),%xmm3
  movsd  0xc8(%rsp),%xmm2
  movapd %xmm7,%xmm1
  movapd %xmm6,%xmm0
  movsd  0xb0(%rsp),%xmm13
  movsd  0xb8(%rsp),%xmm11
  addsd  %xmm3,%xmm1
  subsd  %xmm3,%xmm7
  movsd  0x8(%rsp),%xmm3
  addsd  %xmm2,%xmm0
  subsd  %xmm2,%xmm6
  movsd  0x10(%rsp),%xmm2
  addsd  %xmm13,%xmm3
  addsd  %xmm11,%xmm2
  movsd  %xmm0,0x18(%rsp)
  movapd %xmm1,%xmm0
  addsd  %xmm3,%xmm0
  subsd  %xmm3,%xmm1
  movsd  %xmm0,(%rdi)
  movsd  0x18(%rsp),%xmm0
  movsd  %xmm1,0x80(%rdi)
  movapd %xmm11,%xmm1
  subsd  0x10(%rsp),%xmm1
  addsd  %xmm2,%xmm0
  movsd  %xmm0,0x8(%rdi)
  movsd  0x18(%rsp),%xmm0
  subsd  %xmm2,%xmm0
  movapd %xmm1,%xmm2
  mulsd  %xmm4,%xmm2
  movsd  %xmm0,0x88(%rdi)
  movapd %xmm13,%xmm0
  subsd  0x8(%rsp),%xmm0
  movapd %xmm0,%xmm3
  addsd  %xmm0,%xmm2
  mulsd  %xmm4,%xmm3
  subsd  %xmm1,%xmm3
  ucomisd %xmm2,%xmm3
  jp     L333
L212:
  movapd %xmm7,%xmm0
  subsd  %xmm3,%xmm7
  movsd  0x60(%rsp),%xmm13
  addsd  %xmm3,%xmm0
  movsd  0x98(%rsp),%xmm3
  movsd  %xmm7,0xc0(%rdi)
  movsd  0x90(%rsp),%xmm7
  movsd  %xmm0,0x40(%rdi)
  movapd %xmm6,%xmm0
  subsd  %xmm2,%xmm6
  addsd  %xmm2,%xmm0
  movsd  0x58(%rsp),%xmm2
  movapd %xmm7,%xmm1
  addsd  %xmm2,%xmm1
  movsd  %xmm6,0xc8(%rdi)
  movapd %xmm7,%xmm6
  movapd %xmm3,%xmm7
  movsd  %xmm0,0x48(%rdi)
  movapd %xmm3,%xmm0
  movapd %xmm12,%xmm3
  subsd  %xmm13,%xmm7
  addsd  %xmm13,%xmm0
  addsd  %xmm9,%xmm3
  movsd  0x30(%rsp),%xmm13
  movapd %xmm1,%xmm11
  subsd  %xmm2,%xmm6
  movapd %xmm13,%xmm2
  addsd  %xmm8,%xmm2
  addsd  %xmm3,%xmm11
  subsd  %xmm3,%xmm1
  movsd  %xmm11,0x10(%rdi)
  movapd %xmm0,%xmm11
  subsd  %xmm2,%xmm0
  movsd  %xmm1,0x90(%rdi)
  movapd %xmm13,%xmm1
  addsd  %xmm2,%xmm11
  subsd  %xmm8,%xmm1
  movsd  %xmm0,0x98(%rdi)
  movapd %xmm12,%xmm0
  subsd  %xmm9,%xmm0
  movsd  %xmm11,0x18(%rdi)
  movapd %xmm1,%xmm2
  mulsd  %xmm4,%xmm2
  movapd %xmm0,%xmm3
  mulsd  %xmm4,%xmm3
  addsd  %xmm0,%xmm2
  subsd  %xmm1,%xmm3
  ucomisd %xmm2,%xmm3
  jp     L229
L225:
  movapd %xmm6,%xmm0
  subsd  %xmm3,%xmm6
  movsd  0x20(%rsp),%xmm12
  movsd  0x28(%rsp),%xmm13
  addsd  %xmm3,%xmm0
  movsd  0x48(%rsp),%xmm3
  movsd  %xmm6,0xd0(%rdi)
  movsd  0x80(%rsp),%xmm6
  movsd  %xmm0,0x50(%rdi)
  movapd %xmm7,%xmm0
  subsd  %xmm2,%xmm7
  addsd  %xmm2,%xmm0
  movapd %xmm6,%xmm1
  subsd  %xmm3,%xmm6
  movsd  0x50(%rsp),%xmm2
  addsd  %xmm3,%xmm1
  movapd %xmm12,%xmm3
  movsd  %xmm7,0xd8(%rdi)
  addsd  %xmm10,%xmm3
  movsd  0x88(%rsp),%xmm7
  movsd  %xmm0,0x58(%rdi)
  movapd %xmm7,%xmm0
  movapd %xmm1,%xmm8
  subsd  %xmm2,%xmm7
  addsd  %xmm2,%xmm0
  movapd %xmm13,%xmm2
  addsd  %xmm3,%xmm8
  addsd  %xmm5,%xmm2
  subsd  %xmm3,%xmm1
  movsd  %xmm8,0x20(%rdi)
  movapd %xmm0,%xmm8
  subsd  %xmm2,%xmm0
  movsd  %xmm1,0xa0(%rdi)
  movapd %xmm13,%xmm1
  addsd  %xmm2,%xmm8
  subsd  %xmm5,%xmm1
  movsd  %xmm0,0xa8(%rdi)
  movapd %xmm12,%xmm0
  subsd  %xmm10,%xmm0
  movapd %xmm1,%xmm2
  movsd  %xmm8,0x28(%rdi)
  mulsd  %xmm4,%xmm2
  movapd %xmm0,%xmm3
  mulsd  %xmm4,%xmm3
  addsd  %xmm0,%xmm2
  subsd  %xmm1,%xmm3
  ucomisd %xmm2,%xmm3
  jp     L198
L66:
  movapd %xmm6,%xmm0
  subsd  %xmm3,%xmm6
  movsd  0xa0(%rsp),%xmm5
  movsd  0x38(%rsp),%xmm12
  addsd  %xmm3,%xmm0
  movsd  0x70(%rsp),%xmm3
  movsd  0x40(%rsp),%xmm10
  movapd %xmm5,%xmm1
  movsd  %xmm6,0xe0(%rdi)
  movsd  0xa8(%rsp),%xmm6
  movsd  %xmm0,0x60(%rdi)
  movapd %xmm7,%xmm0
  subsd  %xmm2,%xmm7
  addsd  %xmm2,%xmm0
  movapd %xmm10,%xmm2
  addsd  %xmm14,%xmm2
  movsd  %xmm7,0xe8(%rdi)
  movsd  0x68(%rsp),%xmm7
  movsd  %xmm0,0x68(%rdi)
  movapd %xmm6,%xmm0
  subsd  %xmm3,%xmm6
  addsd  %xmm3,%xmm0
  addsd  %xmm7,%xmm1
  movapd %xmm12,%xmm3
  addsd  %xmm15,%xmm3
  subsd  %xmm7,%xmm5
  movapd %xmm1,%xmm7
  addsd  %xmm3,%xmm7
  subsd  %xmm3,%xmm1
  movsd  %xmm7,0x30(%rdi)
  movapd %xmm0,%xmm7
  subsd  %xmm2,%xmm0
  movsd  %xmm1,0xb0(%rdi)
  movapd %xmm10,%xmm1
  addsd  %xmm2,%xmm7
  subsd  %xmm14,%xmm1
  movsd  %xmm0,0xb8(%rdi)
  movapd %xmm12,%xmm0
  subsd  %xmm15,%xmm0
  movsd  %xmm7,0x38(%rdi)
  movapd %xmm1,%xmm2
  mulsd  %xmm4,%xmm2
  movapd %xmm0,%xmm3
  mulsd  %xmm4,%xmm3
  addsd  %xmm0,%xmm2
  subsd  %xmm1,%xmm3
  ucomisd %xmm2,%xmm3
  jp     L255
L307:
  movapd %xmm5,%xmm0
  subsd  %xmm3,%xmm5
  addsd  %xmm3,%xmm0
  movsd  %xmm5,0xf0(%rdi)
  movsd  %xmm0,0x70(%rdi)
  movapd %xmm6,%xmm0
  subsd  %xmm2,%xmm6
  addsd  %xmm2,%xmm0
  movsd  %xmm6,0xf8(%rdi)
  movsd  %xmm0,0x78(%rdi)
  add    $0x118,%rsp
  ret
L277:
  movsd  D167(%rip),%xmm3
  movapd %xmm4,%xmm2
  movapd %xmm7,%xmm0
  mov    %rsi,0x28(%rsp)
  mov    %rdi,0x20(%rsp)
  movsd  %xmm5,0x10(%rsp)
  movsd  %xmm6,0x8(%rsp)
  call   <__muldc3>
  mov    0x28(%rsp),%rsi
  mov    0x20(%rsp),%rdi
  pxor   %xmm4,%xmm4
  movapd %xmm0,%xmm2
  movsd  0x10(%rsp),%xmm5
  movsd  0x8(%rsp),%xmm6
  movapd %xmm1,%xmm0
  jmp    L258
L255:
  movsd  D167(%rip),%xmm3
  movapd %xmm4,%xmm2
  mov    %rdi,0x18(%rsp)
  movsd  %xmm6,0x10(%rsp)
  movsd  %xmm5,0x8(%rsp)
  call   <__muldc3>
  mov    0x18(%rsp),%rdi
  movsd  0x10(%rsp),%xmm6
  movsd  0x8(%rsp),%xmm5
  movapd %xmm0,%xmm3
  movapd %xmm1,%xmm2
  jmp    L307
L198:
  movsd  D167(%rip),%xmm3
  movapd %xmm4,%xmm2
  mov    %rdi,0x28(%rsp)
  movsd  %xmm7,0x20(%rsp)
  movsd  %xmm6,0x18(%rsp)
  movsd  %xmm14,0x10(%rsp)
  movsd  %xmm15,0x8(%rsp)
  call   <__muldc3>
  mov    0x28(%rsp),%rdi
  pxor   %xmm4,%xmm4
  movsd  0x20(%rsp),%xmm7
  movsd  0x18(%rsp),%xmm6
  movsd  0x10(%rsp),%xmm14
  movapd %xmm0,%xmm3
  movapd %xmm1,%xmm2
  movsd  0x8(%rsp),%xmm15
  jmp    L66
L229:
  movsd  D167(%rip),%xmm3
  movapd %xmm4,%xmm2
  mov    %rdi,0x78(%rsp)
  movsd  %xmm7,0x60(%rsp)
  movsd  %xmm6,0x58(%rsp)
  movsd  %xmm14,0x30(%rsp)
  movsd  %xmm15,0x18(%rsp)
  movsd  %xmm5,0x10(%rsp)
  movsd  %xmm10,0x8(%rsp)
  call   <__muldc3>
  mov    0x78(%rsp),%rdi
  pxor   %xmm4,%xmm4
  movsd  0x60(%rsp),%xmm7
  movsd  0x58(%rsp),%xmm6
  movsd  0x10(%rsp),%xmm5
  movapd %xmm0,%xmm3
  movapd %xmm1,%xmm2
  movsd  0x30(%rsp),%xmm14
  movsd  0x18(%rsp),%xmm15
  movsd  0x8(%rsp),%xmm10
  jmp    L225
L333:
  movsd  D167(%rip),%xmm3
  movapd %xmm4,%xmm2
  mov    %rdi,0xd8(%rsp)
  movsd  %xmm6,0xd0(%rsp)
  movsd  %xmm7,0xc8(%rsp)
  movsd  %xmm14,0xc0(%rsp)
  movsd  %xmm15,0xb8(%rsp)
  movsd  %xmm8,0xb0(%rsp)
  movsd  %xmm9,0x78(%rsp)
  movsd  %xmm5,0x18(%rsp)
  movsd  %xmm10,0x10(%rsp)
  movsd  %xmm12,0x8(%rsp)
  call   <__muldc3>
  movsd  0x78(%rsp),%xmm9
  pxor   %xmm4,%xmm4
  mov    0xd8(%rsp),%rdi
  movsd  0xd0(%rsp),%xmm6
  movsd  0x18(%rsp),%xmm5
  movapd %xmm0,%xmm3
  movapd %xmm1,%xmm2
  movsd  0xc8(%rsp),%xmm7
  movsd  0xc0(%rsp),%xmm14
  movsd  0x10(%rsp),%xmm10
  movsd  0x8(%rsp),%xmm12
  movsd  0xb8(%rsp),%xmm15
  movsd  0xb0(%rsp),%xmm8
  jmp    L212
L187:
  movapd %xmm7,%xmm1
  movapd %xmm6,%xmm0
  mov    %rdi,0xf8(%rsp)
  movsd  %xmm8,0xf0(%rsp)
  movsd  %xmm9,0xe8(%rsp)
  movsd  %xmm5,0xe0(%rsp)
  movsd  %xmm10,0xd8(%rsp)
  movsd  %xmm12,0xd0(%rsp)
  call   <__muldc3>
  mov    0xf8(%rsp),%rdi
  pxor   %xmm4,%xmm4
  movsd  0xf0(%rsp),%xmm8
  movsd  0xe8(%rsp),%xmm9
  movapd %xmm0,%xmm15
  movsd  0xe0(%rsp),%xmm5
  movapd %xmm1,%xmm14
  movsd  0xd8(%rsp),%xmm10
  movsd  0xd0(%rsp),%xmm12
  jmp    L190
L275:
  movapd %xmm13,%xmm3
  movapd %xmm11,%xmm2
  mov    %rdi,0x108(%rsp)
  movsd  %xmm14,0x100(%rsp)
  movsd  %xmm15,0xf8(%rsp)
  movsd  %xmm5,0xf0(%rsp)
  movsd  %xmm10,0xe8(%rsp)
  movsd  %xmm7,0xe0(%rsp)
  movsd  %xmm6,0xd8(%rsp)
  movsd  %xmm12,0xd0(%rsp)
  call   <__muldc3>
  mov    0x108(%rsp),%rdi
  pxor   %xmm4,%xmm4
  movsd  0x100(%rsp),%xmm14
  movsd  0xf8(%rsp),%xmm15
  movapd %xmm0,%xmm9
  movsd  0xf0(%rsp),%xmm5
  movapd %xmm1,%xmm8
  movsd  0xe8(%rsp),%xmm10
  movsd  0xe0(%rsp),%xmm7
  movsd  0xd8(%rsp),%xmm6
  movsd  0xd0(%rsp),%xmm12
  jmp    L305
L8:
  movapd %xmm4,%xmm2
  movapd %xmm9,%xmm1
  movsd  D167(%rip),%xmm3
  movapd %xmm8,%xmm0
  mov    %rdi,0xf8(%rsp)
  movsd  %xmm5,0xf0(%rsp)
  movsd  %xmm10,0xe8(%rsp)
  movsd  %xmm7,0xe0(%rsp)
  movsd  %xmm6,0xd8(%rsp)
  movsd  %xmm12,0xd0(%rsp)
  call   <__muldc3>
  mov    D293(%rip),%rax
  pxor   %xmm4,%xmm4
  mov    0xf8(%rsp),%rdi
  movsd  0xf0(%rsp),%xmm5
  movapd %xmm0,%xmm15
  movsd  0xe8(%rsp),%xmm10
  movapd %xmm1,%xmm14
  movsd  0xe0(%rsp),%xmm7
  movq   %rax,%xmm11
  mov    D174(%rip),%rax
  movsd  0xd8(%rsp),%xmm6
  movsd  0xd0(%rsp),%xmm12
  movq   %rax,%xmm13
  jmp    L142
L109:
  mov    D359(%rip),%rax
  movapd %xmm14,%xmm3
  mov    %rdi,0x108(%rsp)
  movsd  %xmm15,0x100(%rsp)
  movsd  %xmm9,0xf8(%rsp)
  movq   %rax,%xmm2
  movsd  %xmm8,0xf0(%rsp)
  movsd  %xmm7,0xe8(%rsp)
  movsd  %xmm6,0xe0(%rsp)
  movsd  %xmm12,0xd8(%rsp)
  call   <__muldc3>
  mov    D293(%rip),%rax
  pxor   %xmm4,%xmm4
  mov    0x108(%rsp),%rdi
  movsd  0x100(%rsp),%xmm15
  movapd %xmm0,%xmm10
  movsd  0xf8(%rsp),%xmm9
  movapd %xmm1,%xmm5
  movsd  0xf0(%rsp),%xmm8
  movq   %rax,%xmm11
  mov    D174(%rip),%rax
  movsd  0xe8(%rsp),%xmm7
  movsd  0xe0(%rsp),%xmm6
  movsd  0xd8(%rsp),%xmm12
  movq   %rax,%xmm13
  jmp    L249
L77:
  mov    D359(%rip),%rax
  movapd %xmm14,%xmm3
  movapd %xmm6,%xmm1
  mov    %rsi,0xd0(%rsp)
  mov    %rdi,0x10(%rsp)
  movq   %rax,%xmm2
  movsd  %xmm12,0x8(%rsp)
  call   <__muldc3>
  mov    D293(%rip),%rax
  mov    0x10(%rsp),%rdi
  pxor   %xmm4,%xmm4
  movq   D10(%rip),%xmm5
  mov    0xd0(%rsp),%rsi
  movsd  %xmm0,0x68(%rsp)
  movq   %rax,%xmm11
  mov    D174(%rip),%rax
  movsd  0x8(%rsp),%xmm12
  movsd  %xmm1,0x70(%rsp)
  movq   %rax,%xmm13
  mov    D264(%rip),%rax
  movq   %rax,%xmm14
  jmp    L7
L150:
  movapd %xmm14,%xmm3
  movapd %xmm14,%xmm2
  mov    %rsi,0xe0(%rsp)
  mov    %rdi,0xd8(%rsp)
  movsd  %xmm7,0xd0(%rsp)
  movsd  %xmm8,0x70(%rsp)
  movsd  %xmm6,0x68(%rsp)
  movsd  %xmm5,0x10(%rsp)
  movsd  %xmm12,0x8(%rsp)
  call   <__muldc3>
  mov    D293(%rip),%rax
  pxor   %xmm4,%xmm4
  mov    0xe0(%rsp),%rsi
  mov    0xd8(%rsp),%rdi
  movsd  0x70(%rsp),%xmm8
  movsd  %xmm0,0x58(%rsp)
  movq   %rax,%xmm11
  mov    D174(%rip),%rax
  movsd  0xd0(%rsp),%xmm7
  movsd  %xmm1,0x60(%rsp)
  movsd  0x68(%rsp),%xmm6
  movsd  0x10(%rsp),%xmm5
  movq   %rax,%xmm13
  mov    D264(%rip),%rax
  movsd  0x8(%rsp),%xmm12
  movq   %rax,%xmm14
  jmp    L151
L13:
  movsd  D167(%rip),%xmm3
  movapd %xmm4,%xmm2
  mov    %rsi,0x68(%rsp)
  mov    %rdi,0x60(%rsp)
  movsd  %xmm6,0x58(%rsp)
  movsd  %xmm5,0x10(%rsp)
  movsd  %xmm12,0x8(%rsp)
  call   <__muldc3>
  mov    D293(%rip),%rax
  mov    0x68(%rsp),%rsi
  pxor   %xmm4,%xmm4
  mov    0x60(%rsp),%rdi
  movapd %xmm0,%xmm8
  movapd %xmm1,%xmm7
  movsd  0x58(%rsp),%xmm6
  movq   %rax,%xmm11
  mov    D174(%rip),%rax
  movsd  0x10(%rsp),%xmm5
  movsd  0x8(%rsp),%xmm12
  movq   %rax,%xmm13
  mov    D264(%rip),%rax
  movq   %rax,%xmm14
  jmp    L286
L314:
  movsd  D167(%rip),%xmm3
  movapd %xmm4,%xmm2
  mov    %rsi,0xe0(%rsp)
  mov    %rdi,0xd8(%rsp)
  movsd  %xmm9,0xd0(%rsp)
  movsd  %xmm10,0x70(%rsp)
  movsd  %xmm8,0x68(%rsp)
  movsd  %xmm7,0x60(%rsp)
  movsd  %xmm6,0x58(%rsp)
  movsd  %xmm5,0x10(%rsp)
  movsd  %xmm12,0x8(%rsp)
  call   <__muldc3>
  mov    D293(%rip),%rax
  pxor   %xmm4,%xmm4
  mov    0xe0(%rsp),%rsi
  mov    0xd8(%rsp),%rdi
  movsd  0x70(%rsp),%xmm10
  movsd  %xmm0,0x48(%rsp)
  movq   %rax,%xmm11
  mov    D174(%rip),%rax
  movsd  0xd0(%rsp),%xmm9
  movsd  %xmm1,0x50(%rsp)
  movsd  0x68(%rsp),%xmm8
  movsd  0x60(%rsp),%xmm7
  movq   %rax,%xmm13
  mov    D264(%rip),%rax
  movsd  0x58(%rsp),%xmm6
  movsd  0x10(%rsp),%xmm5
  movsd  0x8(%rsp),%xmm12
  movq   %rax,%xmm14
  jmp    L287
L1:
  movapd %xmm13,%xmm3
  movapd %xmm11,%xmm2
  movapd %xmm6,%xmm1
  mov    %rsi,0x48(%rsp)
  movapd %xmm5,%xmm0
  mov    %rdi,0x10(%rsp)
  movsd  %xmm12,0x8(%rsp)
  call   <__muldc3>
  mov    D264(%rip),%rax
  pxor   %xmm4,%xmm4
  mov    0x48(%rsp),%rsi
  mov    0x10(%rsp),%rdi
  movsd  0x8(%rsp),%xmm12
  movsd  %xmm0,0x38(%rsp)
  movq   %rax,%xmm14
  mov    D174(%rip),%rax
  movsd  %xmm1,0x40(%rsp)
  movq   %rax,%xmm13
  mov    D293(%rip),%rax
  movq   %rax,%xmm11
  jmp    L72
L219:
  movapd %xmm11,%xmm3
  movapd %xmm13,%xmm2
  mov    %rsi,0x50(%rsp)
  mov    %rdi,0x48(%rsp)
  movsd  %xmm7,0x40(%rsp)
  movsd  %xmm8,0x38(%rsp)
  movsd  %xmm6,0x10(%rsp)
  movsd  %xmm5,0x8(%rsp)
  call   <__muldc3>
  mov    D264(%rip),%rax
  mov    0x50(%rsp),%rsi
  pxor   %xmm4,%xmm4
  mov    0x48(%rsp),%rdi
  movsd  0x40(%rsp),%xmm7
  movapd %xmm0,%xmm12
  movsd  %xmm1,0x30(%rsp)
  movq   %rax,%xmm14
  mov    D293(%rip),%rax
  movsd  0x38(%rsp),%xmm8
  movsd  0x10(%rsp),%xmm6
  movsd  0x8(%rsp),%xmm5
  movq   %rax,%xmm11
  mov    D174(%rip),%rax
  movq   %rax,%xmm13
  jmp    L336
L20:
  movsd  D167(%rip),%xmm3
  movapd %xmm4,%xmm2
  mov    %rsi,0x38(%rsp)
  mov    %rdi,0x30(%rsp)
  movsd  %xmm6,0x10(%rsp)
  movsd  %xmm5,0x8(%rsp)
  call   <__muldc3>
  mov    D264(%rip),%rax
  mov    0x38(%rsp),%rsi
  pxor   %xmm4,%xmm4
  mov    0x30(%rsp),%rdi
  movsd  0x10(%rsp),%xmm6
  movapd %xmm0,%xmm8
  movapd %xmm1,%xmm7
  movsd  0x8(%rsp),%xmm5
  movq   %rax,%xmm14
  jmp    L246
L35:
  movapd %xmm14,%xmm3
  movapd %xmm14,%xmm2
  mov    %rsi,0x58(%rsp)
  mov    %rdi,0x50(%rsp)
  movsd  %xmm9,0x48(%rsp)
  movsd  %xmm10,0x40(%rsp)
  movsd  %xmm8,0x38(%rsp)
  movsd  %xmm7,0x30(%rsp)
  movsd  %xmm6,0x10(%rsp)
  movsd  %xmm5,0x8(%rsp)
  call   <__muldc3>
  mov    D264(%rip),%rax
  pxor   %xmm4,%xmm4
  mov    0x58(%rsp),%rsi
  mov    0x50(%rsp),%rdi
  movsd  0x48(%rsp),%xmm9
  movsd  %xmm0,0x20(%rsp)
  movsd  0x40(%rsp),%xmm10
  movsd  0x38(%rsp),%xmm8
  movsd  %xmm1,0x28(%rsp)
  movq   %rax,%xmm14
  movsd  0x30(%rsp),%xmm7
  movsd  0x10(%rsp),%xmm6
  movsd  0x8(%rsp),%xmm5
  jmp    L146
```

tool_calls: name: unpack_data
arguments: tag: D264
data_type: f64
name: unpack_data
arguments: tag: D174
data_type: f64
name: unpack_data
arguments: tag: D293
data_type: f64
name: unpack_data
arguments: tag: D359
data_type: byte[8]
name: unpack_data
arguments: tag: D10
data_type: byte[8]
name: unpack_data
arguments: tag: D311
data_type: byte[8]
name: unpack_data
arguments: tag: D72
data_type: byte[8]
name: unpack_data
arguments: tag: D167
data_type: f64

tool: D264: 0.7071067811865476

tool: D174: 0.9238795325112867

tool: D293: 0.3826834323650898

tool: {"D359": [0xcd,0x3b,0x7f,0x66,0x9e,0xa0,0xe6,0xbf]}

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

tool: {"D311": [0x46,0x8d,0x32,0xcf,0x6b,0x90,0xed,0xbf]}

tool: {"D72": [0x63,0xa9,0xae,0xa6,0xe2,0x7d,0xd8,0xbf]}

tool: D167: 1

assistant: ```c
void fft16(_Complex double *Y, _Complex double *X) {
  _Complex double a289, a290, t243, t244, a291, a292, t245, t246, t247, a293, t248, t249, a294, a295, t250, t251, a296, a297, t252, t253, s31, a298, s32, s33, a299, a300, t254, t255, a301, a302, t256, t257, s34, a303, s35, s36, a304, a305, t258, t259, a306, a307, t260, t261, s37, a308, s38, s39, t262, t263, t264, a309, t265, t266, t267, a310, t268, t269, t270, a311, t271, t272, t273, a312;
  a289 = *(X);
  a290 = *((X + 8));
  t243 = (a289 + a290);
  t244 = (a289 - a290);
  a291 = *((X + 4));
  a292 = *((X + 12));
  t245 = (a291 + a292);
  t246 = (t243 + t245);
  t247 = (t243 - t245);
  a293 = (1.0if * (a291 - a292));
  t248 = (t244 + a293);
  t249 = (t244 - a293);
  a294 = *((X + 1));
  a295 = *((X + 9));
  t250 = (a294 + a295);
  t251 = (a294 - a295);
  a296 = *((X + 5));
  a297 = *((X + 13));
  t252 = (a296 + a297);
  t253 = (t250 + t252);
  s31 = ((0.70710678118654757 + 1.0if * 0.70710678118654757) * (t250 - t252));
  a298 = (1.0if * (a296 - a297));
  s32 = ((0.92387953251128674 + 1.0if * 0.38268343236508978) * (t251 + a298));
  s33 = ((0.38268343236508978 + 1.0if * 0.92387953251128674) * (t251 - a298));
  a299 = *((X + 2));
  a300 = *((X + 10));
  t254 = (a299 + a300);
  t255 = (a299 - a300);
  a301 = *((X + 6));
  a302 = *((X + 14));
  t256 = (a301 + a302);
  t257 = (t254 + t256);
  s34 = (1.0if * (t254 - t256));
  a303 = (1.0if * (a301 - a302));
  s35 = ((0.70710678118654757 + 1.0if * 0.70710678118654757) * (t255 + a303));
  s36 = ((-0.70710678118654757 + 1.0if * 0.70710678118654757) * (t255 - a303));
  a304 = *((X + 3));
  a305 = *((X + 11));
  t258 = (a304 + a305);
  t259 = (a304 - a305);
  a306 = *((X + 7));
  a307 = *((X + 15));
  t260 = (a306 + a307);
  t261 = (t258 + t260);
  s37 = ((-0.70710678118654757 + 1.0if * 0.70710678118654757) * (t258 - t260));
  a308 = (1.0if * (a306 - a307));
  s38 = ((0.38268343236508978 + 1.0if * 0.92387953251128674) * (t259 + a308));
  s39 = ((-0.92387953251128674 - 1.0if * 0.38268343236508978) * (t259 - a308));
  t262 = (t246 + t257);
  t263 = (t246 - t257);
  t264 = (t253 + t261);
  *(Y) = (t262 + t264);
  *((Y + 8)) = (t262 - t264);
  a309 = (1.0if * (t253 - t261));
  *((Y + 4)) = (t263 + a309);
  *((Y + 12)) = (t263 - a309);
  t265 = (t248 + s35);
  t266 = (t248 - s35);
  t267 = (s32 + s38);
  *((Y + 1)) = (t265 + t267);
  *((Y + 9)) = (t265 - t267);
  a310 = (1.0if * (s32 - s38));
  *((Y + 5)) = (t266 + a310);
  *((Y + 13)) = (t266 - a310);
  t268 = (t247 + s34);
  t269 = (t247 - s34);
  t270 = (s31 + s37);
  *((Y + 2)) = (t268 + t270);
  *((Y + 10)) = (t268 - t270);
  a311 = (1.0if * (s31 - s37));
  *((Y + 6)) = (t269 + a311);
  *((Y + 14)) = (t269 - a311);
  t271 = (t249 + s36);
  t272 = (t249 - s36);
  t273 = (s33 + s39);
  *((Y + 3)) = (t271 + t273);
  *((Y + 11)) = (t271 - t273);
  a312 = (1.0if * (s33 - s39));
  *((Y + 7)) = (t272 + a312);
  *((Y + 15)) = (t272 - a312);
}
```