user: What would the C source look like for the assembly code provided here?

```asm
<cftmdl>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x190,%rsp
  mov    %edi,-0x184(%rbp)
  mov    %esi,-0x188(%rbp)
  mov    %rdx,-0x190(%rbp)
  mov    -0x188(%rbp),%eax
  shl    $0x3,%eax
  mov    %eax,-0x168(%rbp)
  movsd  D17(%rip),%xmm0
  movsd  %xmm0,-0x148(%rbp)
  movl   $0x0,-0x178(%rbp)
  jmp    L90
L21:
  mov    -0x178(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x164(%rbp)
  mov    -0x164(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x160(%rbp)
  mov    -0x160(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x15c(%rbp)
  mov    -0x15c(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x158(%rbp)
  mov    -0x158(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x154(%rbp)
  mov    -0x154(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x150(%rbp)
  mov    -0x150(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x14c(%rbp)
  mov    -0x178(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x164(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  mov    -0x178(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x164(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  mov    -0x178(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x164(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  mov    -0x178(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x164(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  mov    -0x160(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x15c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  mov    -0x160(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x15c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0x160(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x15c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x90(%rbp)
  mov    -0x160(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x15c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x88(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  addsd  -0xa0(%rbp),%xmm0
  movsd  %xmm0,-0x80(%rbp)
  movsd  -0xb8(%rbp),%xmm0
  addsd  -0x98(%rbp),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  subsd  -0xa0(%rbp),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  -0xb8(%rbp),%xmm0
  subsd  -0x98(%rbp),%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  -0xb0(%rbp),%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  addsd  -0x90(%rbp),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0xb0(%rbp),%xmm0
  addsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  subsd  -0x90(%rbp),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x158(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x154(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  mov    -0x158(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x154(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  mov    -0x158(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x154(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  mov    -0x158(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x154(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  mov    -0x150(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x14c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  mov    -0x150(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x14c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0x150(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x14c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x90(%rbp)
  mov    -0x150(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x14c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x88(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  addsd  -0xa0(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  -0xb8(%rbp),%xmm0
  addsd  -0x98(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  subsd  -0xa0(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0xb8(%rbp),%xmm0
  subsd  -0x98(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0xb0(%rbp),%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  addsd  -0x90(%rbp),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  -0xb0(%rbp),%xmm0
  addsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  subsd  -0x90(%rbp),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  subsd  -0xb8(%rbp),%xmm0
  movsd  -0x148(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  addsd  -0xb8(%rbp),%xmm0
  movsd  -0x148(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0xa0(%rbp),%xmm0
  subsd  -0x98(%rbp),%xmm0
  movsd  -0x148(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0xa0(%rbp),%xmm0
  addsd  -0x98(%rbp),%xmm0
  movsd  -0x148(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x164(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x60(%rbp),%xmm0
  addsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x164(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x58(%rbp),%xmm0
  addsd  -0x18(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x154(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x60(%rbp),%xmm0
  subsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x154(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x58(%rbp),%xmm0
  subsd  -0x18(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x15c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x50(%rbp),%xmm0
  subsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x15c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x48(%rbp),%xmm0
  addsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x14c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x50(%rbp),%xmm0
  addsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x14c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x48(%rbp),%xmm0
  subsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x80(%rbp),%xmm0
  addsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x78(%rbp),%xmm0
  addsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x158(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x80(%rbp),%xmm0
  subsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x158(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x78(%rbp),%xmm0
  subsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x160(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x70(%rbp),%xmm0
  subsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x160(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x68(%rbp),%xmm0
  addsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x150(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x70(%rbp),%xmm0
  addsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x150(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x68(%rbp),%xmm0
  subsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x2,-0x178(%rbp)
L90:
  mov    -0x178(%rbp),%eax
  cmp    -0x188(%rbp),%eax
  jl     L21
  mov    -0x168(%rbp),%eax
  cmp    -0x184(%rbp),%eax
  jge    L26
  movsd  D29(%rip),%xmm0
  movsd  %xmm0,-0x140(%rbp)
  movsd  D38(%rip),%xmm0
  movsd  %xmm0,-0x138(%rbp)
  mov    -0x168(%rbp),%eax
  mov    %eax,-0x178(%rbp)
  jmp    L83
L34:
  mov    -0x178(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x164(%rbp)
  mov    -0x164(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x160(%rbp)
  mov    -0x160(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x15c(%rbp)
  mov    -0x15c(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x158(%rbp)
  mov    -0x158(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x154(%rbp)
  mov    -0x154(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x150(%rbp)
  mov    -0x150(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x14c(%rbp)
  mov    -0x178(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x164(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  mov    -0x178(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x164(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  mov    -0x178(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x164(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  mov    -0x178(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x164(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  mov    -0x160(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x15c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  mov    -0x160(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x15c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0x160(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x15c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x90(%rbp)
  mov    -0x160(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x15c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x88(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  addsd  -0xa0(%rbp),%xmm0
  movsd  %xmm0,-0x80(%rbp)
  movsd  -0xb8(%rbp),%xmm0
  addsd  -0x98(%rbp),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  subsd  -0xa0(%rbp),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  -0xb8(%rbp),%xmm0
  subsd  -0x98(%rbp),%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  -0xb0(%rbp),%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  addsd  -0x90(%rbp),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0xb0(%rbp),%xmm0
  addsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  subsd  -0x90(%rbp),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x158(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x154(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  mov    -0x158(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x154(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  mov    -0x158(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x154(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  mov    -0x158(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x154(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  mov    -0x150(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x14c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  mov    -0x150(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x14c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0x150(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x14c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x90(%rbp)
  mov    -0x150(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x14c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x88(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  addsd  -0xa0(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  -0xb8(%rbp),%xmm0
  addsd  -0x98(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  subsd  -0xa0(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0xb8(%rbp),%xmm0
  subsd  -0x98(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0xb0(%rbp),%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  addsd  -0x90(%rbp),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  -0xb0(%rbp),%xmm0
  addsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  movsd  -0x90(%rbp),%xmm0
  subsd  -0xa8(%rbp),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  movsd  -0x138(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  movsd  -0x140(%rbp),%xmm1
  mulsd  -0xb8(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x138(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0xb8(%rbp),%xmm1
  movsd  -0x140(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x140(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0xa0(%rbp),%xmm1
  movsd  -0x138(%rbp),%xmm0
  mulsd  -0x98(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x140(%rbp),%xmm0
  mulsd  -0x98(%rbp),%xmm0
  movsd  -0x138(%rbp),%xmm1
  mulsd  -0xa0(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x140(%rbp),%xmm0
  mulsd  -0x60(%rbp),%xmm0
  movsd  -0x138(%rbp),%xmm1
  mulsd  -0x58(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  -0x140(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x58(%rbp),%xmm1
  movsd  -0x138(%rbp),%xmm0
  mulsd  -0x60(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  mov    -0x164(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0xc0(%rbp),%xmm0
  addsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x164(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0xb8(%rbp),%xmm0
  addsd  -0x18(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x154(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x18(%rbp),%xmm0
  subsd  -0xb8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x154(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0xc0(%rbp),%xmm0
  subsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x138(%rbp),%xmm0
  mulsd  -0x50(%rbp),%xmm0
  movsd  -0x140(%rbp),%xmm1
  mulsd  -0x48(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  -0x138(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x48(%rbp),%xmm1
  movsd  -0x140(%rbp),%xmm0
  mulsd  -0x50(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  mov    -0x15c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0xc0(%rbp),%xmm0
  subsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x15c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0xb8(%rbp),%xmm0
  addsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x14c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x8(%rbp),%xmm0
  subsd  -0xb8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x14c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0xc0(%rbp),%xmm0
  addsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x80(%rbp),%xmm0
  addsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x78(%rbp),%xmm0
  addsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x158(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x38(%rbp),%xmm0
  subsd  -0x78(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x158(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x80(%rbp),%xmm0
  subsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x70(%rbp),%xmm0
  subsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  -0x68(%rbp),%xmm0
  addsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  subsd  -0xb8(%rbp),%xmm0
  mov    -0x160(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  mulsd  -0x148(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0xb8(%rbp),%xmm0
  addsd  -0xc0(%rbp),%xmm0
  mov    -0x160(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  mulsd  -0x148(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x30(%rbp),%xmm0
  subsd  -0x68(%rbp),%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  -0x70(%rbp),%xmm0
  addsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  subsd  -0xb8(%rbp),%xmm0
  mov    -0x150(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  mulsd  -0x148(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0xb8(%rbp),%xmm0
  addsd  -0xc0(%rbp),%xmm0
  mov    -0x150(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  mulsd  -0x148(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x2,-0x178(%rbp)
L83:
  mov    -0x188(%rbp),%edx
  mov    -0x168(%rbp),%eax
  add    %edx,%eax
  cmp    %eax,-0x178(%rbp)
  jl     L34
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x184(%rbp),%xmm1
  movsd  D20(%rip),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x130(%rbp)
  mov    -0x184(%rbp),%eax
  sar    $0x2,%eax
  mov    %eax,-0x16c(%rbp)
  mov    -0x168(%rbp),%eax
  add    %eax,%eax
  mov    %eax,-0x174(%rbp)
  jmp    L109
L41:
  mov    -0x184(%rbp),%eax
  sar    $0x2,%eax
  mov    %eax,-0x170(%rbp)
  jmp    L49
L108:
  sarl   -0x170(%rbp)
L49:
  mov    -0x170(%rbp),%eax
  xor    %eax,-0x16c(%rbp)
  mov    -0x16c(%rbp),%eax
  cmp    -0x170(%rbp),%eax
  jl     L108
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x16c(%rbp),%xmm0
  mulsd  -0x130(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x140(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x16c(%rbp),%xmm0
  mulsd  -0x130(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x138(%rbp)
  movsd  -0x138(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x138(%rbp),%xmm1
  movsd  D24(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x128(%rbp)
  movsd  -0x138(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movsd  -0x140(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x120(%rbp)
  movsd  -0x120(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movsd  %xmm0,-0x118(%rbp)
  movsd  -0x118(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x138(%rbp),%xmm1
  movsd  -0x140(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x110(%rbp)
  movsd  -0x118(%rbp),%xmm0
  mulsd  -0x140(%rbp),%xmm0
  subsd  -0x138(%rbp),%xmm0
  movsd  %xmm0,-0x108(%rbp)
  movsd  -0x118(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x120(%rbp),%xmm1
  movsd  D24(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x100(%rbp)
  movsd  -0x118(%rbp),%xmm0
  mulsd  -0x128(%rbp),%xmm0
  movsd  %xmm0,-0xf8(%rbp)
  movsd  -0xf8(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movsd  %xmm0,-0x118(%rbp)
  movsd  -0x118(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x138(%rbp),%xmm1
  movsd  -0x110(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xf0(%rbp)
  movsd  -0x118(%rbp),%xmm0
  mulsd  -0x140(%rbp),%xmm0
  subsd  -0x108(%rbp),%xmm0
  movsd  %xmm0,-0xe8(%rbp)
  movsd  -0x118(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x120(%rbp),%xmm1
  movsd  -0x128(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xe0(%rbp)
  movsd  -0x118(%rbp),%xmm0
  mulsd  -0x128(%rbp),%xmm0
  subsd  -0x120(%rbp),%xmm0
  movsd  %xmm0,-0xd8(%rbp)
  movsd  -0x118(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x108(%rbp),%xmm1
  movsd  -0x140(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xd0(%rbp)
  movsd  -0x118(%rbp),%xmm0
  mulsd  -0x110(%rbp),%xmm0
  subsd  -0x138(%rbp),%xmm0
  movsd  %xmm0,-0xc8(%rbp)
  mov    -0x174(%rbp),%eax
  mov    %eax,-0x178(%rbp)
  jmp    L67
L92:
  mov    -0x178(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x164(%rbp)
  mov    -0x164(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x160(%rbp)
  mov    -0x160(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x15c(%rbp)
  mov    -0x15c(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x158(%rbp)
  mov    -0x158(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x154(%rbp)
  mov    -0x154(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x150(%rbp)
  mov    -0x150(%rbp),%edx
  mov    -0x188(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x14c(%rbp)
  mov    -0x178(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x164(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  mov    -0x178(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x164(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  mov    -0x178(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x164(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  mov    -0x178(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x164(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  mov    -0x160(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x15c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  mov    -0x160(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x15c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0x160(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x15c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x90(%rbp)
  mov    -0x160(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x15c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x88(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  addsd  -0xa0(%rbp),%xmm0
  movsd  %xmm0,-0x80(%rbp)
  movsd  -0xb8(%rbp),%xmm0
  addsd  -0x98(%rbp),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  subsd  -0xa0(%rbp),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  -0xb8(%rbp),%xmm0
  subsd  -0x98(%rbp),%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  -0xb0(%rbp),%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  addsd  -0x90(%rbp),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0xb0(%rbp),%xmm0
  addsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  subsd  -0x90(%rbp),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x158(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x154(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  mov    -0x158(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x154(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  mov    -0x158(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x154(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  mov    -0x158(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x154(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  mov    -0x150(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x14c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  mov    -0x150(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x14c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0x150(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x14c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x90(%rbp)
  mov    -0x150(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x14c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x88(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  addsd  -0xa0(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  -0xb8(%rbp),%xmm0
  addsd  -0x98(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  subsd  -0xa0(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0xb8(%rbp),%xmm0
  subsd  -0x98(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0xb0(%rbp),%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  addsd  -0x90(%rbp),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  -0xb0(%rbp),%xmm0
  addsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  subsd  -0x90(%rbp),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  subsd  -0xb8(%rbp),%xmm0
  movsd  -0x148(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  addsd  -0xb8(%rbp),%xmm0
  movsd  -0x148(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0xa0(%rbp),%xmm0
  subsd  -0x98(%rbp),%xmm0
  movsd  -0x148(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0xa0(%rbp),%xmm0
  addsd  -0x98(%rbp),%xmm0
  movsd  -0x148(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x60(%rbp),%xmm0
  addsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  -0x58(%rbp),%xmm0
  addsd  -0x18(%rbp),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  -0x140(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  movsd  -0x138(%rbp),%xmm1
  mulsd  -0xb8(%rbp),%xmm1
  mov    -0x164(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x140(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0xb8(%rbp),%xmm1
  movsd  -0x138(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  mov    -0x164(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x60(%rbp),%xmm0
  subsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  -0x58(%rbp),%xmm0
  subsd  -0x18(%rbp),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  -0xf0(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  movsd  -0xe8(%rbp),%xmm1
  mulsd  -0xb8(%rbp),%xmm1
  mov    -0x154(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0xf0(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0xb8(%rbp),%xmm1
  movsd  -0xe8(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  mov    -0x154(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x50(%rbp),%xmm0
  subsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  -0x48(%rbp),%xmm0
  addsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  -0x110(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  movsd  -0x108(%rbp),%xmm1
  mulsd  -0xb8(%rbp),%xmm1
  mov    -0x15c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x110(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0xb8(%rbp),%xmm1
  movsd  -0x108(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  mov    -0x15c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x50(%rbp),%xmm0
  addsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  -0x48(%rbp),%xmm0
  subsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  -0xd0(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  movsd  -0xc8(%rbp),%xmm1
  mulsd  -0xb8(%rbp),%xmm1
  mov    -0x14c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0xd0(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0xb8(%rbp),%xmm1
  movsd  -0xc8(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  mov    -0x14c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x80(%rbp),%xmm0
  addsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x78(%rbp),%xmm0
  addsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x80(%rbp),%xmm0
  subsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  -0x78(%rbp),%xmm0
  subsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  -0x100(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  movsd  -0xf8(%rbp),%xmm1
  mulsd  -0xb8(%rbp),%xmm1
  mov    -0x158(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x100(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0xb8(%rbp),%xmm1
  movsd  -0xf8(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  mov    -0x158(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x70(%rbp),%xmm0
  subsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  -0x68(%rbp),%xmm0
  addsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  -0x128(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  movsd  -0x120(%rbp),%xmm1
  mulsd  -0xb8(%rbp),%xmm1
  mov    -0x160(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x128(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0xb8(%rbp),%xmm1
  movsd  -0x120(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  mov    -0x160(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x70(%rbp),%xmm0
  addsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  -0x68(%rbp),%xmm0
  subsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  -0xe0(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  movsd  -0xd8(%rbp),%xmm1
  mulsd  -0xb8(%rbp),%xmm1
  mov    -0x150(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0xe0(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0xb8(%rbp),%xmm1
  movsd  -0xd8(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  mov    -0x150(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x2,-0x178(%rbp)
L67:
  mov    -0x188(%rbp),%edx
  mov    -0x174(%rbp),%eax
  add    %edx,%eax
  cmp    %eax,-0x178(%rbp)
  jl     L92
  mov    -0x168(%rbp),%eax
  add    %eax,-0x174(%rbp)
L109:
  mov    -0x174(%rbp),%eax
  cmp    -0x184(%rbp),%eax
  jl     L41
L26:
  nop
  leave
  ret
```

tool_calls: name: unpack_data
arguments: tag: D17
datatype: f64
name: unpack_data
arguments: tag: D29
datatype: f64
name: unpack_data
arguments: tag: D38
datatype: f64
name: unpack_data
arguments: tag: D20
datatype: f64
name: unpack_data
arguments: tag: D24
datatype: byte[8]

tool: D17: 0.7071067811865476

tool: D29: 0.9238795325112867

tool: D38: 0.3826834323650898

tool: D20: 1.5707963267948966

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

assistant: ```c
void cftmdl(int n, int l, double *a) {
  int j, j1, j2, j3, j4, j5, j6, j7, k, kj, kr, m;
  double ew, wn4r, wtmp, wk1r, wk1i, wk2r, wk2i, wk3r, wk3i, wk4r, wk4i, wk5r, wk5i, wk6r, wk6i, wk7r, wk7i;
  double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i, y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i, y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i;
  m = l << 3;
  wn4r = 0.707106781186547524400844362104849039284835937688;
  for (j = 0; j < l; j += 2) {
    j1 = j + l;
    j2 = j1 + l;
    j3 = j2 + l;
    j4 = j3 + l;
    j5 = j4 + l;
    j6 = j5 + l;
    j7 = j6 + l;
    x0r = a[j] + a[j1];
    x0i = a[j + 1] + a[j1 + 1];
    x1r = a[j] - a[j1];
    x1i = a[j + 1] - a[j1 + 1];
    x2r = a[j2] + a[j3];
    x2i = a[j2 + 1] + a[j3 + 1];
    x3r = a[j2] - a[j3];
    x3i = a[j2 + 1] - a[j3 + 1];
    y0r = x0r + x2r;
    y0i = x0i + x2i;
    y2r = x0r - x2r;
    y2i = x0i - x2i;
    y1r = x1r - x3i;
    y1i = x1i + x3r;
    y3r = x1r + x3i;
    y3i = x1i - x3r;
    x0r = a[j4] + a[j5];
    x0i = a[j4 + 1] + a[j5 + 1];
    x1r = a[j4] - a[j5];
    x1i = a[j4 + 1] - a[j5 + 1];
    x2r = a[j6] + a[j7];
    x2i = a[j6 + 1] + a[j7 + 1];
    x3r = a[j6] - a[j7];
    x3i = a[j6 + 1] - a[j7 + 1];
    y4r = x0r + x2r;
    y4i = x0i + x2i;
    y6r = x0r - x2r;
    y6i = x0i - x2i;
    x0r = x1r - x3i;
    x0i = x1i + x3r;
    x2r = x1r + x3i;
    x2i = x1i - x3r;
    y5r = wn4r * (x0r - x0i);
    y5i = wn4r * (x0r + x0i);
    y7r = wn4r * (x2r - x2i);
    y7i = wn4r * (x2r + x2i);
    a[j1] = y1r + y5r;
    a[j1 + 1] = y1i + y5i;
    a[j5] = y1r - y5r;
    a[j5 + 1] = y1i - y5i;
    a[j3] = y3r - y7i;
    a[j3 + 1] = y3i + y7r;
    a[j7] = y3r + y7i;
    a[j7 + 1] = y3i - y7r;
    a[j] = y0r + y4r;
    a[j + 1] = y0i + y4i;
    a[j4] = y0r - y4r;
    a[j4 + 1] = y0i - y4i;
    a[j2] = y2r - y6i;
    a[j2 + 1] = y2i + y6r;
    a[j6] = y2r + y6i;
    a[j6 + 1] = y2i - y6r;
  }
  if (m < n) {
    wk1r = 0.923879532511286756128183189396788286822416625863;
    wk1i = 0.382683432365089771728459984030398866761344562485;
    for (j = m; j < l + m; j += 2) {
      j1 = j + l;
      j2 = j1 + l;
      j3 = j2 + l;
      j4 = j3 + l;
      j5 = j4 + l;
      j6 = j5 + l;
      j7 = j6 + l;
      x0r = a[j] + a[j1];
      x0i = a[j + 1] + a[j1 + 1];
      x1r = a[j] - a[j1];
      x1i = a[j + 1] - a[j1 + 1];
      x2r = a[j2] + a[j3];
      x2i = a[j2 + 1] + a[j3 + 1];
      x3r = a[j2] - a[j3];
      x3i = a[j2 + 1] - a[j3 + 1];
      y0r = x0r + x2r;
      y0i = x0i + x2i;
      y2r = x0r - x2r;
      y2i = x0i - x2i;
      y1r = x1r - x3i;
      y1i = x1i + x3r;
      y3r = x1r + x3i;
      y3i = x1i - x3r;
      x0r = a[j4] + a[j5];
      x0i = a[j4 + 1] + a[j5 + 1];
      x1r = a[j4] - a[j5];
      x1i = a[j4 + 1] - a[j5 + 1];
      x2r = a[j6] + a[j7];
      x2i = a[j6 + 1] + a[j7 + 1];
      x3r = a[j6] - a[j7];
      x3i = a[j6 + 1] - a[j7 + 1];
      y4r = x0r + x2r;
      y4i = x0i + x2i;
      y6r = x0r - x2r;
      y6i = x0i - x2i;
      x0r = x1r - x3i;
      x0i = x1i + x3r;
      x2r = x1r + x3i;
      x2i = x3r - x1i;
      y5r = wk1i * x0r - wk1r * x0i;
      y5i = wk1i * x0i + wk1r * x0r;
      y7r = wk1r * x2r + wk1i * x2i;
      y7i = wk1r * x2i - wk1i * x2r;
      x0r = wk1r * y1r - wk1i * y1i;
      x0i = wk1r * y1i + wk1i * y1r;
      a[j1] = x0r + y5r;
      a[j1 + 1] = x0i + y5i;
      a[j5] = y5i - x0i;
      a[j5 + 1] = x0r - y5r;
      x0r = wk1i * y3r - wk1r * y3i;
      x0i = wk1i * y3i + wk1r * y3r;
      a[j3] = x0r - y7r;
      a[j3 + 1] = x0i + y7i;
      a[j7] = y7i - x0i;
      a[j7 + 1] = x0r + y7r;
      a[j] = y0r + y4r;
      a[j + 1] = y0i + y4i;
      a[j4] = y4i - y0i;
      a[j4 + 1] = y0r - y4r;
      x0r = y2r - y6i;
      x0i = y2i + y6r;
      a[j2] = wn4r * (x0r - x0i);
      a[j2 + 1] = wn4r * (x0i + x0r);
      x0r = y6r - y2i;
      x0i = y2r + y6i;
      a[j6] = wn4r * (x0r - x0i);
      a[j6 + 1] = wn4r * (x0i + x0r);
    }
    ew = 1.570796326794896619231321691639751442098584699687 / n;
    kr = n >> 2;
    for (k = 2 * m; k < n; k += m) {
      for (kj = n >> 2; kj > (kr ^= kj); kj >>= 1)
        ;
      wk1r = cos(ew * kr);
      wk1i = sin(ew * kr);
      wk2r = 1 - 2 * wk1i * wk1i;
      wk2i = 2 * wk1i * wk1r;
      wtmp = 2 * wk2i;
      wk3r = wk1r - wtmp * wk1i;
      wk3i = wtmp * wk1r - wk1i;
      wk4r = 1 - wtmp * wk2i;
      wk4i = wtmp * wk2r;
      wtmp = 2 * wk4i;
      wk5r = wk3r - wtmp * wk1i;
      wk5i = wtmp * wk1r - wk3i;
      wk6r = wk2r - wtmp * wk2i;
      wk6i = wtmp * wk2r - wk2i;
      wk7r = wk1r - wtmp * wk3i;
      wk7i = wtmp * wk3r - wk1i;
      for (j = k; j < l + k; j += 2) {
        j1 = j + l;
        j2 = j1 + l;
        j3 = j2 + l;
        j4 = j3 + l;
        j5 = j4 + l;
        j6 = j5 + l;
        j7 = j6 + l;
        x0r = a[j] + a[j1];
        x0i = a[j + 1] + a[j1 + 1];
        x1r = a[j] - a[j1];
        x1i = a[j + 1] - a[j1 + 1];
        x2r = a[j2] + a[j3];
        x2i = a[j2 + 1] + a[j3 + 1];
        x3r = a[j2] - a[j3];
        x3i = a[j2 + 1] - a[j3 + 1];
        y0r = x0r + x2r;
        y0i = x0i + x2i;
        y2r = x0r - x2r;
        y2i = x0i - x2i;
        y1r = x1r - x3i;
        y1i = x1i + x3r;
        y3r = x1r + x3i;
        y3i = x1i - x3r;
        x0r = a[j4] + a[j5];
        x0i = a[j4 + 1] + a[j5 + 1];
        x1r = a[j4] - a[j5];
        x1i = a[j4 + 1] - a[j5 + 1];
        x2r = a[j6] + a[j7];
        x2i = a[j6 + 1] + a[j7 + 1];
        x3r = a[j6] - a[j7];
        x3i = a[j6 + 1] - a[j7 + 1];
        y4r = x0r + x2r;
        y4i = x0i + x2i;
        y6r = x0r - x2r;
        y6i = x0i - x2i;
        x0r = x1r - x3i;
        x0i = x1i + x3r;
        x2r = x1r + x3i;
        x2i = x1i - x3r;
        y5r = wn4r * (x0r - x0i);
        y5i = wn4r * (x0r + x0i);
        y7r = wn4r * (x2r - x2i);
        y7i = wn4r * (x2r + x2i);
        x0r = y1r + y5r;
        x0i = y1i + y5i;
        a[j1] = wk1r * x0r - wk1i * x0i;
        a[j1 + 1] = wk1r * x0i + wk1i * x0r;
        x0r = y1r - y5r;
        x0i = y1i - y5i;
        a[j5] = wk5r * x0r - wk5i * x0i;
        a[j5 + 1] = wk5r * x0i + wk5i * x0r;
        x0r = y3r - y7i;
        x0i = y3i + y7r;
        a[j3] = wk3r * x0r - wk3i * x0i;
        a[j3 + 1] = wk3r * x0i + wk3i * x0r;
        x0r = y3r + y7i;
        x0i = y3i - y7r;
        a[j7] = wk7r * x0r - wk7i * x0i;
        a[j7 + 1] = wk7r * x0i + wk7i * x0r;
        a[j] = y0r + y4r;
        a[j + 1] = y0i + y4i;
        x0r = y0r - y4r;
        x0i = y0i - y4i;
        a[j4] = wk4r * x0r - wk4i * x0i;
        a[j4 + 1] = wk4r * x0i + wk4i * x0r;
        x0r = y2r - y6i;
        x0i = y2i + y6r;
        a[j2] = wk2r * x0r - wk2i * x0i;
        a[j2 + 1] = wk2r * x0i + wk2i * x0r;
        x0r = y2r + y6i;
        x0i = y2i - y6r;
        a[j6] = wk6r * x0r - wk6i * x0i;
        a[j6 + 1] = wk6r * x0i + wk6i * x0r;
      }
    }
  }
}
```