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

```asm
<fftmx>:
  endbr64
  push   %r15
  mov    %r9d,%eax
  push   %r14
  push   %r13
  push   %r12
  mov    %rdi,%r12
  push   %rbp
  mov    %rsi,%rbp
  push   %rbx
  sub    $0x128,%rsp
  neg    %eax
  cmovs  %r9d,%eax
  mov    %edx,0x104(%rsp)
  mov    0x170(%rsp),%r11
  mov    %ecx,0x100(%rsp)
  mov    0x180(%rsp),%r14
  imul   %eax,%r8d
  mov    %eax,%r10d
  mov    %r9d,0x108(%rsp)
  mov    %eax,0x68(%rsp)
  imul   %edx,%r10d
  mov    %r8d,0x94(%rsp)
  test   %r9d,%r9d
  js     L648
  pxor   %xmm1,%xmm1
  movsd  D18(%rip),%xmm0
  cvtsi2sd %ecx,%xmm1
  divsd  %xmm1,%xmm0
  test   %r10d,%r10d
  jle    L679
  movslq 0x68(%rsp),%rdx
  mov    $0x8,%eax
  mov    $0x1,%ecx
  shl    $0x3,%rdx
L479:
  movsd  (%r12,%rax,1),%xmm1
  add    0x68(%rsp),%ecx
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,(%r12,%rax,1)
  movsd  0x0(%rbp,%rax,1),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,0x0(%rbp,%rax,1)
  add    %rdx,%rax
  cmp    %ecx,%r10d
  jge    L479
L679:
  movsd  D173(%rip),%xmm7
  movsd  %xmm7,0xe8(%rsp)
  movsd  D27(%rip),%xmm7
  movsd  %xmm7,0x88(%rsp)
  movsd  D99(%rip),%xmm7
  movsd  %xmm7,0x8(%rsp)
L90:
  mov    %r10d,%eax
  sub    0x68(%rsp),%eax
  mov    0x198(%rsp),%rdi
  mov    %eax,0x6c(%rsp)
  mov    0x94(%rsp),%eax
  cltd
  idivl  0x100(%rsp)
  mov    0x160(%rsp),%edx
  mov    %eax,0x58(%rsp)
  mov    %eax,0x5c(%rsp)
  shl    $0x5,%eax
  mov    %eax,0x10(%rsp)
  mov    0x168(%rsp),%rax
  movslq (%rax),%rax
  sub    %eax,%edx
  movslq %edx,%rdx
  mov    (%rdi,%rdx,4),%edi
  mov    %edi,0xf4(%rsp)
  test   %eax,%eax
  jle    L889
  mov    0x198(%rsp),%rbx
  mov    (%rbx,%rax,4),%eax
  cmp    %eax,%edi
  cmovge %edi,%eax
  mov    %eax,0xf4(%rsp)
L889:
  mov    0x58(%rsp),%eax
  pxor   %xmm0,%xmm0
  mov    0x68(%rsp),%edi
  pxor   %xmm2,%xmm2
  mov    0x94(%rsp),%r9d
  movl   $0x0,0x60(%rsp)
  movapd %xmm2,%xmm1
  cvtsi2sd %eax,%xmm0
  add    %edi,%edi
  add    %eax,%eax
  movq   $0x1,0xd0(%rsp)
  mulsd  D164(%rip),%xmm0
  mov    %r9d,%ebx
  mov    %edi,0xf0(%rsp)
  mov    %r14,%r9
  mov    %eax,0x90(%rsp)
  mov    %r10d,%r14d
  mov    0x178(%rsp),%r10
  movq   $0x0,0xe0(%rsp)
  movl   $0x0,0x80(%rsp)
  movsd  %xmm2,0xd8(%rsp)
  movsd  %xmm0,0xf8(%rsp)
L358:
  pxor   %xmm0,%xmm0
  mov    %r9,0x180(%rsp)
  movsd  0xf8(%rsp),%xmm7
  cvtsi2sd %ebx,%xmm0
  mov    %r10,0x178(%rsp)
  mov    %r11,0x170(%rsp)
  movsd  %xmm2,0x28(%rsp)
  movsd  %xmm1,0x20(%rsp)
  divsd  %xmm0,%xmm7
  movsd  D68(%rip),%xmm0
  mulsd  %xmm7,%xmm0
  movsd  %xmm7,0x18(%rsp)
  mulsd  0x8(%rsp),%xmm0
  call   <sin@plt>
  movapd %xmm0,%xmm3
  addsd  %xmm0,%xmm3
  mulsd  %xmm0,%xmm3
  movsd  0x8(%rsp),%xmm0
  mulsd  0x18(%rsp),%xmm0
  movsd  %xmm3,0x40(%rsp)
  call   <sin@plt>
  mov    0x198(%rsp),%rax
  mov    0xd0(%rsp),%rdi
  movsd  0x20(%rsp),%xmm1
  movsd  0x28(%rsp),%xmm2
  movsd  %xmm0,0x38(%rsp)
  mov    (%rax,%rdi,4),%r13d
  mov    0x170(%rsp),%r11
  mov    0x178(%rsp),%r10
  mov    0x180(%rsp),%r9
  cmp    $0x2,%r13d
  je     L518
  cmp    $0x4,%r13d
  je     L947
  mov    %ebx,%eax
  cltd
  idiv   %r13d
  mov    %eax,0x20(%rsp)
  mov    %eax,0xcc(%rsp)
  cmp    $0x3,%r13d
  je     L352
  cmp    $0x5,%r13d
  je     L340
  cmp    0x80(%rsp),%r13d
  je     L581
  pxor   %xmm0,%xmm0
  movsd  0x8(%rsp),%xmm1
  lea    0x118(%rsp),%rdi
  lea    0x110(%rsp),%rsi
  cvtsi2sd %r13d,%xmm0
  mulsd  D60(%rip),%xmm0
  mov    %r9,0x180(%rsp)
  mov    %r10,0x178(%rsp)
  mov    %r11,0x170(%rsp)
  divsd  %xmm0,%xmm1
  movapd %xmm1,%xmm0
  call   <sincos@plt>
  mov    D18(%rip),%rdi
  movslq %r13d,%rax
  cmp    $0x1,%r13d
  mov    0x178(%rsp),%r10
  mov    0x170(%rsp),%r11
  movsd  0x110(%rsp),%xmm1
  mov    0x180(%rsp),%r9
  movsd  0x118(%rsp),%xmm2
  mov    %rdi,(%r10,%rax,8)
  mov    0x188(%rsp),%rdi
  movq   $0x0,(%rdi,%rax,8)
  jle    L581
  movq   D19(%rip),%xmm3
  mov    $0x1,%edx
  mov    %rdi,%rcx
L909:
  movsd  (%r10,%rax,8),%xmm0
  movsd  (%rcx,%rax,8),%xmm4
  mulsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm4
  addsd  %xmm4,%xmm0
  movsd  %xmm0,(%r10,%rdx,8)
  movsd  (%r10,%rax,8),%xmm0
  movsd  (%rcx,%rax,8),%xmm4
  mulsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm4
  subsd  %xmm4,%xmm0
  movsd  %xmm0,(%rcx,%rdx,8)
  movsd  (%r10,%rdx,8),%xmm0
  movsd  %xmm0,-0x8(%r10,%rax,8)
  movsd  (%rcx,%rdx,8),%xmm0
  add    $0x1,%rdx
  xorpd  %xmm3,%xmm0
  movsd  %xmm0,-0x8(%rcx,%rax,8)
  sub    $0x1,%rax
  cmp    %eax,%edx
  jl     L909
L581:
  movslq 0x20(%rsp),%rax
  mov    %ebx,0x98(%rsp)
  mov    %r14d,0x10c(%rsp)
  mov    %rax,%rdi
  mov    %rax,0x30(%rsp)
  neg    %rax
  lea    0x0(,%rax,8),%r15
  lea    (%r12,%r15,1),%rax
  mov    %rax,0xa8(%rsp)
  lea    0x0(%rbp,%r15,1),%rax
  mov    %rax,0xa0(%rsp)
  mov    %edi,%eax
  lea    0x18(%r11),%rdi
  mov    %rdi,0xb8(%rsp)
  lea    0x18(%r9),%rdi
  neg    %eax
  mov    %rdi,0xc0(%rsp)
  lea    0x1(%r13),%edi
  cltq
  mov    %edi,0xc8(%rsp)
  mov    0x188(%rsp),%rdi
  mov    %rax,0xb0(%rsp)
  mov    $0x1,%eax
L40:
  mov    0x98(%rsp),%ebx
  mov    %r13d,0x70(%rsp)
  mov    0xa8(%rsp),%r14
  mov    0xb0(%rsp),%r13
  lea    (%rax,%rbx,1),%esi
  movslq %eax,%rbx
  add    0x20(%rsp),%eax
  lea    0x0(,%rbx,8),%rdx
  mov    %esi,0x28(%rsp)
  movslq %esi,%rsi
  cltq
  lea    (%r12,%rdx,1),%r8
  lea    0x0(%rbp,%rdx,1),%rcx
  mov    %rsi,0x50(%rsp)
  mov    %rsi,%rdx
  movsd  (%r8),%xmm6
  movsd  (%rcx),%xmm7
  mov    %rcx,0x48(%rsp)
  mov    %rbx,0x78(%rsp)
  mov    0xb8(%rsp),%rsi
  mov    %r8,0x80(%rsp)
  mov    0xc0(%rsp),%rcx
  movapd %xmm7,%xmm1
  movapd %xmm6,%xmm2
  mov    0xa0(%rsp),%r8
  mov    0x30(%rsp),%rbx
  cs nopw 0x0(%rax,%rax,1)
L688:
  movsd  (%r12,%rax,8),%xmm0
  addsd  (%r14,%rdx,8),%xmm0
  add    $0x10,%rsi
  add    $0x10,%rcx
  movsd  %xmm0,-0x18(%rsi)
  addsd  %xmm0,%xmm2
  movsd  0x0(%rbp,%rax,8),%xmm0
  addsd  (%r8,%rdx,8),%xmm0
  movsd  %xmm0,-0x18(%rcx)
  addsd  %xmm0,%xmm1
  movsd  (%r12,%rax,8),%xmm0
  subsd  (%r14,%rdx,8),%xmm0
  movsd  %xmm0,-0x10(%rsi)
  movsd  0x0(%rbp,%rax,8),%xmm0
  add    %rbx,%rax
  subsd  (%r8,%rdx,8),%xmm0
  add    %r13,%rdx
  movsd  %xmm0,-0x10(%rcx)
  cmp    %edx,%eax
  jl     L688
  mov    0x48(%rsp),%rax
  mov    0x78(%rsp),%rbx
  mov    $0x1,%esi
  mov    0x80(%rsp),%r8
  mov    0x70(%rsp),%r13d
  mov    0xc8(%rsp),%r14d
  movsd  %xmm2,(%r8)
  mov    0x50(%rsp),%r8
  movsd  %xmm1,(%rax)
  mov    0x30(%rsp),%rax
  add    %rax,%rbx
  sub    %rax,%r8
  shl    $0x3,%rbx
  shl    $0x3,%r8
  nopl   0x0(%rax,%rax,1)
L441:
  pxor   %xmm2,%xmm2
  movapd %xmm7,%xmm1
  movapd %xmm6,%xmm4
  mov    %esi,%edx
  mov    $0x1,%eax
  movapd %xmm2,%xmm3
  nop
L837:
  movslq %edx,%rcx
  movsd  0x8(%r11,%rax,8),%xmm5
  add    %esi,%edx
  movsd  (%r10,%rcx,8),%xmm0
  mulsd  %xmm0,%xmm5
  mulsd  0x8(%r9,%rax,8),%xmm0
  addsd  %xmm5,%xmm4
  movsd  0x10(%r11,%rax,8),%xmm5
  addsd  %xmm0,%xmm1
  movsd  (%rdi,%rcx,8),%xmm0
  mov    %edx,%ecx
  sub    %r13d,%ecx
  cmp    %edx,%r13d
  mulsd  %xmm0,%xmm5
  cmovl  %ecx,%edx
  mulsd  0x10(%r9,%rax,8),%xmm0
  add    $0x2,%rax
  addsd  %xmm5,%xmm3
  addsd  %xmm0,%xmm2
  cmp    %eax,%r13d
  jg     L837
  movapd %xmm4,%xmm0
  add    $0x1,%esi
  mov    %r14d,%eax
  subsd  %xmm2,%xmm0
  addsd  %xmm4,%xmm2
  sub    %esi,%eax
  movsd  %xmm0,(%r12,%rbx,1)
  movapd %xmm3,%xmm0
  addsd  %xmm1,%xmm0
  subsd  %xmm3,%xmm1
  movsd  %xmm0,0x0(%rbp,%rbx,1)
  sub    %r15,%rbx
  movsd  %xmm2,(%r12,%r8,1)
  movsd  %xmm1,0x0(%rbp,%r8,1)
  add    %r15,%r8
  cmp    %esi,%eax
  jg     L441
  mov    0x6c(%rsp),%ebx
  mov    0x28(%rsp),%eax
  cmp    %eax,%ebx
  jge    L40
  sub    %ebx,%eax
  cmp    %eax,0x20(%rsp)
  jge    L40
  mov    %r13d,0x80(%rsp)
  mov    0x98(%rsp),%ebx
  mov    0x10c(%rsp),%r14d
L603:
  mov    0xd0(%rsp),%eax
  cmp    %eax,0x160(%rsp)
  je     L228
  mov    0x20(%rsp),%edi
  mov    0x58(%rsp),%esi
  mov    %ebx,%ecx
  mov    %r14d,%r13d
  movsd  D18(%rip),%xmm0
  subsd  0x40(%rsp),%xmm0
  mov    %r10,0x178(%rsp)
  mov    %edi,%eax
  sub    %esi,%ecx
  lea    0x1(%rsi),%r15d
  sub    %edi,%r13d
  sub    %esi,%eax
  mov    0x10(%rsp),%esi
  sub    0x68(%rsp),%eax
  mov    %ecx,0x30(%rsp)
  mov    %eax,0x50(%rsp)
  mov    %edi,%eax
  cmp    %edi,%esi
  mov    %r9,0x180(%rsp)
  cmovle %esi,%edi
  mov    %r11,0x170(%rsp)
  mov    %eax,%r11d
  movsd  %xmm0,0x70(%rsp)
  mov    %edi,0x78(%rsp)
  lea    0x118(%rsp),%rdi
  mov    %rdi,0x48(%rsp)
  mov    %r12,%rdi
  mov    %r13d,%r12d
  mov    %rdi,%r13
L431:
  movsd  0x38(%rsp),%xmm6
  movsd  0x70(%rsp),%xmm5
  mov    0x78(%rsp),%r10d
  nopl   0x0(%rax)
L416:
  add    %r11d,%r15d
  movapd %xmm6,%xmm0
  movapd %xmm5,%xmm1
  nopl   0x0(%rax,%rax,1)
L578:
  movslq %r15d,%rax
  movapd %xmm1,%xmm3
  add    %ebx,%r15d
  shl    $0x3,%rax
  lea    0x0(%r13,%rax,1),%rdx
  add    %rbp,%rax
  movsd  (%rdx),%xmm2
  movsd  (%rax),%xmm4
  mulsd  %xmm2,%xmm3
  mulsd  %xmm0,%xmm4
  mulsd  %xmm0,%xmm2
  subsd  %xmm4,%xmm3
  movsd  %xmm3,(%rdx)
  movsd  (%rax),%xmm3
  mulsd  %xmm1,%xmm3
  addsd  %xmm3,%xmm2
  movsd  %xmm2,(%rax)
  cmp    %r15d,%r14d
  jge    L578
  movapd %xmm1,%xmm2
  movapd %xmm5,%xmm3
  sub    %r12d,%r15d
  mulsd  %xmm0,%xmm3
  mulsd  %xmm6,%xmm2
  mulsd  %xmm5,%xmm1
  mulsd  %xmm6,%xmm0
  addsd  %xmm3,%xmm2
  subsd  %xmm0,%xmm1
  cmp    %r15d,%ebx
  jl     L865
  movapd %xmm2,%xmm0
  jmp    L578
  nopl   (%rax)
L865:
  sub    0x30(%rsp),%r15d
  cmp    %r15d,%r10d
  jge    L607
  mov    %r10d,0x20(%rsp)
  cmp    %r15d,%r11d
  jle    L714
  lea    -0x1(%r15),%eax
  pxor   %xmm0,%xmm0
  mov    0x48(%rsp),%rdi
  lea    0x110(%rsp),%rsi
  cltd
  mov    %r11d,0x28(%rsp)
  idivl  0x58(%rsp)
  cvtsi2sd %eax,%xmm0
  mulsd  0x18(%rsp),%xmm0
  mulsd  0x8(%rsp),%xmm0
  call   <sincos@plt>
  mov    0x28(%rsp),%r11d
  mov    0x20(%rsp),%r10d
  movsd  0x110(%rsp),%xmm5
  add    0x10(%rsp),%r10d
  movsd  0x118(%rsp),%xmm6
  cmp    %r11d,%r10d
  cmovg  %r11d,%r10d
  jmp    L416
  nopl   0x0(%rax)
L607:
  movsd  0x40(%rsp),%xmm7
  movsd  0x38(%rsp),%xmm4
  movapd %xmm7,%xmm0
  movapd %xmm4,%xmm1
  mulsd  %xmm6,%xmm1
  mulsd  %xmm5,%xmm0
  mulsd  %xmm6,%xmm7
  addsd  %xmm1,%xmm0
  movapd %xmm4,%xmm1
  mulsd  %xmm5,%xmm1
  subsd  %xmm0,%xmm5
  subsd  %xmm7,%xmm1
  addsd  %xmm1,%xmm6
  jmp    L416
L714:
  sub    0x50(%rsp),%r15d
  cmp    %r15d,0x90(%rsp)
  jge    L431
  mov    0x170(%rsp),%r11
  mov    0x178(%rsp),%r10
  mov    %r13,%r12
  mov    0x180(%rsp),%r9
L552:
  addq   $0x1,0xd0(%rsp)
  mov    0xcc(%rsp),%ebx
  jmp    L358
L518:
  mov    %ebx,%r15d
  mov    0x6c(%rsp),%esi
  mov    $0x1,%r13d
  shr    $0x1f,%r15d
  add    %ebx,%r15d
  sar    %r15d
  mov    %r15d,0xcc(%rsp)
  lea    0x2(%r15),%r8d
L298:
  lea    0x0(%r13,%r15,1),%ecx
  movslq %r13d,%rax
  movslq %ecx,%rdx
  shl    $0x3,%rax
  lea    (%r15,%rcx,1),%r13d
  shl    $0x3,%rdx
  lea    (%r12,%rax,1),%rbx
  add    %rbp,%rax
  lea    (%r12,%rdx,1),%rdi
  movsd  (%rbx),%xmm4
  add    %rbp,%rdx
  movsd  (%rdi),%xmm3
  movsd  (%rdx),%xmm0
  subsd  %xmm3,%xmm4
  movsd  %xmm4,(%rdi)
  movsd  (%rax),%xmm4
  subsd  %xmm0,%xmm4
  movsd  %xmm4,(%rdx)
  addsd  (%rbx),%xmm3
  movsd  %xmm3,(%rbx)
  addsd  (%rax),%xmm0
  movsd  %xmm0,(%rax)
  cmp    %r13d,%esi
  jge    L298
  sub    %esi,%r13d
  cmp    %r13d,0x58(%rsp)
  jge    L298
  cmp    %r13d,%r15d
  jl     L228
  lea    0x118(%rsp),%rax
  movsd  D18(%rip),%xmm0
  subsd  0x40(%rsp),%xmm0
  mov    %r10,0x178(%rsp)
  mov    %rax,0x48(%rsp)
  lea    0x110(%rsp),%rax
  mov    %rbp,%rcx
  mov    %r8d,%ebp
  mov    %rax,0x50(%rsp)
  mov    %r9,0x180(%rsp)
  mov    %r11,0x170(%rsp)
  mov    0x58(%rsp),%r11d
  movsd  %xmm0,0x70(%rsp)
  movsd  %xmm1,0x78(%rsp)
  movsd  %xmm2,0x98(%rsp)
L999:
  mov    %ebp,%ebx
  mov    0x10(%rsp),%eax
  movsd  0x38(%rsp),%xmm5
  shr    $0x1f,%ebx
  movsd  0x70(%rsp),%xmm3
  add    %ebp,%ebx
  mov    %eax,%r10d
  sar    %ebx
  cmp    %eax,%ebx
  cmovle %ebx,%r10d
  nopw   0x0(%rax,%rax,1)
L130:
  lea    0x0(%r13,%r15,1),%edx
  movslq %r13d,%r13
  movslq %edx,%rax
  shl    $0x3,%r13
  shl    $0x3,%rax
  lea    (%r12,%r13,1),%rsi
  add    %rcx,%r13
  lea    (%r12,%rax,1),%rdi
  movsd  (%rsi),%xmm2
  add    %rcx,%rax
  movsd  0x0(%r13),%xmm1
  movsd  (%rdi),%xmm4
  subsd  (%rax),%xmm1
  movapd %xmm2,%xmm0
  addsd  %xmm4,%xmm2
  subsd  %xmm4,%xmm0
  movapd %xmm5,%xmm4
  mulsd  %xmm1,%xmm4
  mulsd  %xmm3,%xmm1
  movsd  %xmm2,(%rsi)
  movsd  0x0(%r13),%xmm2
  addsd  (%rax),%xmm2
  movsd  %xmm2,0x0(%r13)
  movapd %xmm3,%xmm2
  lea    (%r15,%rdx,1),%r13d
  mulsd  %xmm0,%xmm2
  mulsd  %xmm5,%xmm0
  subsd  %xmm4,%xmm2
  addsd  %xmm1,%xmm0
  movsd  %xmm2,(%rdi)
  movsd  %xmm0,(%rax)
  cmp    %r13d,%r14d
  jg     L130
  mov    %r13d,%eax
  mov    %ebp,%r13d
  xorpd  D19(%rip),%xmm3
  sub    %r14d,%eax
  sub    %eax,%r13d
  cmp    %r13d,%eax
  jl     L130
  add    %r11d,%r13d
  cmp    %r13d,%r10d
  jge    L935
  mov    %r10d,0x20(%rsp)
  cmp    %r13d,%eax
  jle    L805
  lea    -0x1(%r13),%eax
  pxor   %xmm0,%xmm0
  mov    0x50(%rsp),%rsi
  mov    0x48(%rsp),%rdi
  cltd
  mov    %rcx,0x30(%rsp)
  idiv   %r11d
  mov    %r11d,0x28(%rsp)
  cvtsi2sd %eax,%xmm0
  mulsd  0x18(%rsp),%xmm0
  mulsd  0x8(%rsp),%xmm0
  call   <sincos@plt>
  mov    0x20(%rsp),%r10d
  add    0x10(%rsp),%r10d
  cmp    %r10d,%ebx
  mov    0x28(%rsp),%r11d
  mov    0x30(%rsp),%rcx
  movsd  0x110(%rsp),%xmm3
  cmovle %ebx,%r10d
  movsd  0x118(%rsp),%xmm5
  jmp    L130
  nopw   0x0(%rax,%rax,1)
L935:
  movsd  0x40(%rsp),%xmm7
  movsd  0x38(%rsp),%xmm6
  movapd %xmm7,%xmm0
  movapd %xmm6,%xmm1
  mulsd  %xmm5,%xmm1
  mulsd  %xmm3,%xmm0
  mulsd  %xmm3,%xmm6
  mulsd  %xmm5,%xmm7
  addsd  %xmm1,%xmm0
  movapd %xmm6,%xmm1
  subsd  %xmm7,%xmm1
  subsd  %xmm0,%xmm3
  addsd  %xmm1,%xmm5
  jmp    L130
L805:
  add    0xf0(%rsp),%ebp
  mov    %ebp,%eax
  sub    %r15d,%eax
  mov    %eax,%r13d
  shr    $0x1f,%r13d
  add    %eax,%r13d
  sar    %r13d
  add    %r11d,%r13d
  cmp    %r13d,0x90(%rsp)
  jge    L999
  movsd  0x78(%rsp),%xmm1
  mov    0x170(%rsp),%r11
  mov    %rcx,%rbp
  mov    0x178(%rsp),%r10
  mov    0x180(%rsp),%r9
  movsd  0x98(%rsp),%xmm2
  jmp    L552
L947:
  test   %ebx,%ebx
  lea    0x3(%rbx),%eax
  mov    $0x1,%r15d
  mov    %r11,0x170(%rsp)
  cmovs  %eax,%ebx
  mov    %r14d,%eax
  sub    0x58(%rsp),%eax
  mov    %r15d,%r8d
  mov    %eax,0x28(%rsp)
  movsd  0xd8(%rsp),%xmm11
  sar    $0x2,%ebx
  mov    %r10,0x178(%rsp)
  movsd  0xe0(%rsp),%xmm12
  mov    %ebx,%eax
  sub    0x68(%rsp),%eax
  mov    %ebx,0xcc(%rsp)
  mov    %eax,0x48(%rsp)
  mov    0x10(%rsp),%eax
  mov    %r9,0x180(%rsp)
  mov    0x108(%rsp),%r15d
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    %eax,0x50(%rsp)
  lea    0x118(%rsp),%rax
  mov    %rax,0x30(%rsp)
L28:
  mov    D18(%rip),%rax
  mov    0x50(%rsp),%r13d
  pxor   %xmm8,%xmm8
  movq   %rax,%xmm10
  mov    %r15d,%eax
  mov    %r14d,%r15d
  mov    %r13d,%r14d
  mov    %r8d,%r13d
  mov    %eax,%r8d
  nopl   0x0(%rax)
L566:
  lea    0x0(%r13,%rbx,1),%edx
  movslq %r13d,%r13
  lea    (%rbx,%rdx,1),%eax
  lea    0x0(,%r13,8),%rcx
  movslq %edx,%rdx
  lea    (%rbx,%rax,1),%edi
  cltq
  lea    (%r12,%rcx,1),%r9
  shl    $0x3,%rdx
  shl    $0x3,%rax
  movslq %edi,%rsi
  movsd  (%r9),%xmm0
  lea    (%r12,%rdx,1),%r13
  lea    (%r12,%rax,1),%r10
  shl    $0x3,%rsi
  add    %rbp,%rcx
  add    %rbp,%rax
  movsd  (%r10),%xmm3
  lea    (%r12,%rsi,1),%r11
  movapd %xmm0,%xmm6
  add    %rbp,%rdx
  movsd  0x0(%r13),%xmm9
  movsd  (%r11),%xmm4
  add    %rbp,%rsi
  addsd  %xmm3,%xmm6
  subsd  %xmm3,%xmm0
  movapd %xmm9,%xmm3
  subsd  %xmm4,%xmm9
  addsd  %xmm4,%xmm3
  movapd %xmm6,%xmm4
  addsd  %xmm3,%xmm4
  subsd  %xmm3,%xmm6
  movsd  %xmm4,(%r9)
  movsd  (%rcx),%xmm3
  movsd  (%rax),%xmm4
  movsd  (%rsi),%xmm13
  movapd %xmm3,%xmm7
  subsd  %xmm4,%xmm3
  addsd  %xmm4,%xmm7
  movsd  (%rdx),%xmm4
  movapd %xmm4,%xmm5
  subsd  %xmm13,%xmm4
  addsd  %xmm13,%xmm5
  movapd %xmm7,%xmm13
  addsd  %xmm5,%xmm13
  subsd  %xmm5,%xmm7
  movapd %xmm0,%xmm5
  movsd  %xmm13,(%rcx)
  test   %r8d,%r8d
  js     L485
  pxor   %xmm14,%xmm14
  subsd  %xmm4,%xmm5
  addsd  %xmm4,%xmm0
  ucomisd %xmm14,%xmm8
  movapd %xmm9,%xmm4
  addsd  %xmm3,%xmm4
  subsd  %xmm9,%xmm3
  jp     L346
L600:
  je     L245
L346:
  movapd %xmm5,%xmm9
  movapd %xmm4,%xmm13
  mulsd  %xmm10,%xmm9
  mulsd  %xmm10,%xmm4
  mulsd  %xmm8,%xmm13
  mulsd  %xmm8,%xmm5
  subsd  %xmm13,%xmm9
  addsd  %xmm4,%xmm5
  movapd %xmm1,%xmm4
  mulsd  %xmm6,%xmm4
  movsd  %xmm9,0x0(%r13)
  mulsd  %xmm2,%xmm6
  lea    (%rbx,%rdi,1),%r13d
  movsd  %xmm5,(%rdx)
  movapd %xmm2,%xmm5
  mulsd  %xmm7,%xmm5
  mulsd  %xmm1,%xmm7
  subsd  %xmm5,%xmm4
  movapd %xmm3,%xmm5
  mulsd  %xmm12,%xmm5
  addsd  %xmm7,%xmm6
  mulsd  %xmm11,%xmm3
  movsd  %xmm4,(%r10)
  movapd %xmm0,%xmm4
  mulsd  %xmm11,%xmm4
  movsd  %xmm6,(%rax)
  mulsd  %xmm12,%xmm0
  subsd  %xmm5,%xmm4
  addsd  %xmm3,%xmm0
  movsd  %xmm4,(%r11)
  movsd  %xmm0,(%rsi)
  cmp    %r13d,%r15d
  jge    L566
L446:
  sub    0x28(%rsp),%r13d
  cmp    %r13d,%r14d
  jge    L325
  cmp    %r13d,%ebx
  jle    L819
  lea    -0x1(%r13),%eax
  pxor   %xmm0,%xmm0
  mov    0x30(%rsp),%rdi
  lea    0x110(%rsp),%rsi
  cltd
  mov    %r8d,0x20(%rsp)
  idivl  0x58(%rsp)
  cvtsi2sd %eax,%xmm0
  mulsd  0x18(%rsp),%xmm0
  mulsd  0x8(%rsp),%xmm0
  call   <sincos@plt>
  add    0x10(%rsp),%r14d
  mov    0x20(%rsp),%r8d
  movsd  0x110(%rsp),%xmm10
  cmp    %ebx,%r14d
  movsd  0x118(%rsp),%xmm8
  cmovg  %ebx,%r14d
L314:
  movapd %xmm8,%xmm0
  movapd %xmm10,%xmm1
  movapd %xmm10,%xmm2
  movapd %xmm10,%xmm11
  movapd %xmm8,%xmm12
  mulsd  %xmm8,%xmm0
  mulsd  %xmm10,%xmm1
  mulsd  %xmm8,%xmm2
  subsd  %xmm0,%xmm1
  movapd %xmm8,%xmm0
  addsd  %xmm2,%xmm2
  mulsd  %xmm1,%xmm11
  mulsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm12
  subsd  %xmm0,%xmm11
  movapd %xmm10,%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm12
  jmp    L566
  nopl   0x0(%rax,%rax,1)
L245:
  movsd  %xmm5,0x0(%r13)
  lea    (%rbx,%rdi,1),%r13d
  movsd  %xmm4,(%rdx)
  movsd  %xmm6,(%r10)
  movsd  %xmm7,(%rax)
  movsd  %xmm0,(%r11)
  movsd  %xmm3,(%rsi)
  cmp    %r13d,%r15d
  jge    L566
  jmp    L446
  xchg   %ax,%ax
L485:
  pxor   %xmm15,%xmm15
  addsd  %xmm4,%xmm5
  subsd  %xmm4,%xmm0
  ucomisd %xmm15,%xmm8
  movapd %xmm3,%xmm4
  addsd  %xmm9,%xmm3
  subsd  %xmm9,%xmm4
  jnp    L600
  jmp    L346
  nopl   0x0(%rax,%rax,1)
L325:
  movsd  0x40(%rsp),%xmm7
  movsd  0x38(%rsp),%xmm6
  movapd %xmm7,%xmm0
  movapd %xmm6,%xmm1
  mulsd  %xmm8,%xmm1
  mulsd  %xmm10,%xmm0
  mulsd  %xmm10,%xmm6
  mulsd  %xmm8,%xmm7
  addsd  %xmm1,%xmm0
  movapd %xmm6,%xmm1
  subsd  %xmm7,%xmm1
  subsd  %xmm0,%xmm10
  addsd  %xmm1,%xmm8
  jmp    L314
L819:
  mov    %r15d,%r14d
  mov    %r8d,%r15d
  mov    %r13d,%r8d
  sub    0x48(%rsp),%r8d
  cmp    %r8d,0x58(%rsp)
  jge    L28
  mov    %edi,0x60(%rsp)
  mov    0x170(%rsp),%r11
  mov    0x178(%rsp),%r10
  mov    0x180(%rsp),%r9
  movsd  %xmm11,0xd8(%rsp)
  movsd  %xmm12,0xe0(%rsp)
  cmp    %ebx,0x58(%rsp)
  jne    L552
L228:
  mov    0x190(%rsp),%rax
  mov    0x94(%rsp),%edi
  mov    %r14d,%r10d
  mov    %r9,%r14
  mov    %edi,0x4(%rax)
  mov    0x168(%rsp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L66
  lea    (%rax,%rax,1),%edx
  mov    0x190(%rsp),%rdi
  mov    0x58(%rsp),%ebx
  lea    0x1(%rdx),%eax
  cmp    %eax,0x160(%rsp)
  cmovl  %edx,%eax
  movslq %eax,%rsi
  mov    %ebx,0x4(%rdi,%rsi,4)
  cmp    $0x1,%eax
  jle    L820
  mov    0x198(%rsp),%r8
  mov    $0x1,%ecx
L508:
  mov    (%rdi,%rcx,4),%eax
  cltd
  idivl  (%r8,%rcx,4)
  mov    %eax,0x4(%rdi,%rcx,4)
  mov    0x4(%rdi,%rsi,4),%eax
  imul   (%r8,%rcx,4),%eax
  add    $0x1,%rcx
  mov    %eax,(%rdi,%rsi,4)
  sub    $0x1,%rsi
  cmp    %ecx,%esi
  jg     L508
L630:
  mov    %eax,0x60(%rsp)
  mov    0x190(%rsp),%rax
  mov    0x100(%rsp),%ebx
  mov    0x8(%rax),%r13d
  mov    0x58(%rsp),%eax
  lea    0x1(%rax),%ecx
  lea    0x1(%r13),%eax
  cmp    %ebx,0x104(%rsp)
  je     L356
  mov    0x58(%rsp),%r9d
  mov    0x94(%rsp),%edi
  mov    %r11,0x170(%rsp)
  movslq 0x68(%rsp),%rdx
  mov    %r10d,0x8(%rsp)
  mov    %edi,%ebx
  mov    %r14,0x180(%rsp)
  mov    %edi,%r14d
  sub    %r9d,%ebx
  mov    %rdx,%rsi
  mov    %ebx,0x10(%rsp)
  mov    %r10d,%ebx
  sub    %r9d,%ebx
  mov    %ebx,0x18(%rsp)
  mov    %r10d,%ebx
  mov    %r9d,%r10d
  sub    %r13d,%ebx
  mov    %ebx,0x20(%rsp)
  mov    0x190(%rsp),%rbx
  mov    0x4(%rbx),%r15d
  add    $0xc,%rbx
L843:
  lea    (%rcx,%r10,1),%edi
  cltq
  movslq %ecx,%rcx
  nopl   0x0(%rax)
L595:
  movsd  (%r12,%rcx,8),%xmm0
  movsd  (%r12,%rax,8),%xmm1
  lea    (%rsi,%rcx,1),%r9d
  lea    (%rsi,%rax,1),%r8d
  movsd  %xmm1,(%r12,%rcx,8)
  movsd  %xmm0,(%r12,%rax,8)
  movsd  0x0(%rbp,%rax,8),%xmm1
  movsd  0x0(%rbp,%rcx,8),%xmm0
  movsd  %xmm1,0x0(%rbp,%rcx,8)
  add    %rdx,%rcx
  movsd  %xmm0,0x0(%rbp,%rax,8)
  add    %rdx,%rax
  cmp    %ecx,%edi
  jg     L595
  mov    0x10(%rsp),%eax
  lea    (%r9,%rax,1),%ecx
  add    %r8d,%eax
  cmp    %ecx,0x8(%rsp)
  jg     L843
  sub    0x20(%rsp),%eax
  sub    0x18(%rsp),%ecx
  cmp    %eax,%r14d
  jg     L843
  mov    %ecx,%r11d
L687:
  mov    %rbx,%rdi
  mov    %r13d,%r9d
  mov    %r15d,%ecx
  jmp    L217
L1001:
  mov    %r8d,%r9d
L217:
  mov    (%rdi),%r8d
  sub    %ecx,%eax
  add    $0x4,%rdi
  mov    %r9d,%ecx
  add    %r8d,%eax
  cmp    %r9d,%eax
  jg     L1001
  mov    %r11d,%edi
L490:
  mov    %edi,%ecx
  add    %r10d,%edi
  mov    %edi,%r11d
  cmp    %ecx,%eax
  jg     L843
  add    %r13d,%eax
  cmp    %eax,%r14d
  jg     L490
  cmp    %r14d,%edi
  jl     L687
  mov    0x8(%rsp),%r10d
  mov    0x170(%rsp),%r11
  mov    0x180(%rsp),%r14
L377:
  mov    0x60(%rsp),%edi
  mov    0x168(%rsp),%rax
  mov    %edi,0x5c(%rsp)
  mov    (%rax),%eax
L66:
  lea    0x1(%rax,%rax,1),%edx
  cmp    0x160(%rsp),%edx
  jge    L89
  mov    0x160(%rsp),%edx
  mov    0x190(%rsp),%rdi
  movslq %eax,%rcx
  sub    %eax,%edx
  mov    0x198(%rsp),%rax
  mov    0x4(%rdi,%rcx,4),%edi
  movslq %edx,%rdx
  movl   $0x1,0x4(%rax,%rdx,4)
  movslq 0x160(%rsp),%rax
  mov    %edi,0x38(%rsp)
  mov    0x198(%rsp),%rdi
  sub    %rcx,%rax
  mov    0x4(%rdi,%rax,4),%eax
  mov    %rdi,%rsi
L26:
  imul   (%rsi,%rdx,4),%eax
  mov    0x168(%rsp),%rdi
  mov    %eax,(%rsi,%rdx,4)
  mov    (%rdi),%ecx
  sub    $0x1,%rdx
  cmp    %edx,%ecx
  jne    L26
  lea    0x1(%rcx),%eax
  lea    0x2(%rcx),%esi
  mov    %eax,(%rdi)
  mov    0x198(%rsp),%rdi
  cltq
  mov    (%rdi,%rax,4),%edx
  mov    0x4(%rdi,%rax,4),%ecx
  lea    -0x1(%rdx),%r9d
  test   %r9d,%r9d
  jle    L614
  mov    0x190(%rsp),%rax
  mov    0x190(%rsp),%rbx
  mov    0x168(%rsp),%r13
  lea    0x4(%rax),%rdi
  lea    -0x2(%rdx),%eax
  lea    0x8(%rbx,%rax,4),%r8
  mov    0x198(%rsp),%rbx
  xor    %eax,%eax
L262:
  movslq %esi,%rsi
  add    %ecx,%eax
  lea    (%rbx,%rsi,4),%rsi
  cmp    %edx,%eax
  jl     L737
L15:
  sub    %edx,%eax
  mov    %ecx,%edx
  mov    0x4(%rsi),%ecx
  add    $0x4,%rsi
  add    %ecx,%eax
  cmp    %edx,%eax
  jge    L15
L737:
  mov    %eax,(%rdi)
  movslq 0x0(%r13),%r15
  add    $0x4,%rdi
  mov    (%rbx,%r15,4),%edx
  mov    0x4(%rbx,%r15,4),%ecx
  lea    0x1(%r15),%esi
  cmp    %r8,%rdi
  jne    L262
L614:
  mov    0x190(%rsp),%rcx
  mov    $0x1,%eax
  jmp    L277
L497:
  mov    %eax,%edx
  neg    %edx
  mov    %edx,(%rcx,%rax,4)
  cmp    %eax,%r9d
  je     L604
L644:
  add    $0x1,%rax
L277:
  movslq (%rcx,%rax,4),%rdx
  mov    %eax,%r8d
  test   %edx,%edx
  js     L644
  mov    %eax,%edi
  cmp    %edx,%eax
  je     L497
L766:
  lea    (%rcx,%rdx,4),%rsi
  movslq (%rsi),%rdx
  mov    %edx,%ebx
  neg    %ebx
  mov    %ebx,(%rsi)
  cmp    %edx,%edi
  jne    L766
  mov    %r8d,0x60(%rsp)
  jmp    L644
L340:
  movsd  0x88(%rsp),%xmm7
  mov    %r11,0x170(%rsp)
  mov    $0x1,%edi
  movsd  D38(%rip),%xmm8
  mov    %r10,0x178(%rsp)
  movapd %xmm7,%xmm0
  mov    %r9,0x180(%rsp)
  mov    0x20(%rsp),%r9d
  mulsd  %xmm7,%xmm0
  mulsd  D175(%rip),%xmm7
  subsd  %xmm0,%xmm8
  movapd %xmm7,%xmm13
L56:
  lea    (%rdi,%r9,1),%edx
  movapd %xmm8,%xmm5
  movapd %xmm8,%xmm11
  movsd  0x88(%rsp),%xmm15
  lea    (%r9,%rdx,1),%eax
  movslq %edx,%rdx
  lea    (%r9,%rax,1),%esi
  shl    $0x3,%rdx
  cltq
  lea    (%r9,%rsi,1),%ecx
  lea    (%r12,%rdx,1),%r15
  add    %rbp,%rdx
  mov    %esi,0x60(%rsp)
  mov    %ecx,0x28(%rsp)
  movslq %ecx,%rcx
  movsd  (%r15),%xmm2
  lea    0x0(,%rax,8),%r11
  shl    $0x3,%rcx
  movsd  (%rdx),%xmm3
  movslq %esi,%rax
  lea    (%r12,%r11,1),%r8
  lea    (%r12,%rcx,1),%r13
  add    %rbp,%rcx
  shl    $0x3,%rax
  movapd %xmm2,%xmm1
  movsd  (%rcx),%xmm4
  movsd  (%r8),%xmm7
  lea    (%r12,%rax,1),%rsi
  add    %rbp,%r11
  movsd  0x0(%r13),%xmm0
  lea    0x0(%rbp,%rax,1),%r10
  movslq %edi,%rax
  movsd  (%r11),%xmm6
  movapd %xmm7,%xmm10
  shl    $0x3,%rax
  addsd  %xmm0,%xmm1
  subsd  %xmm0,%xmm2
  movapd %xmm3,%xmm0
  addsd  %xmm4,%xmm0
  subsd  %xmm4,%xmm3
  movsd  (%rsi),%xmm4
  movapd %xmm6,%xmm9
  lea    (%r12,%rax,1),%rdi
  add    %rbp,%rax
  addsd  %xmm4,%xmm10
  subsd  %xmm4,%xmm7
  movsd  (%r10),%xmm4
  movsd  (%rdi),%xmm14
  movsd  (%rax),%xmm12
  mulsd  %xmm2,%xmm15
  addsd  %xmm4,%xmm9
  subsd  %xmm4,%xmm6
  movapd %xmm1,%xmm4
  addsd  %xmm14,%xmm4
  mulsd  %xmm10,%xmm5
  mulsd  %xmm13,%xmm2
  mulsd  %xmm9,%xmm11
  addsd  %xmm10,%xmm4
  mulsd  D56(%rip),%xmm10
  movsd  %xmm4,(%rdi)
  movapd %xmm0,%xmm4
  addsd  %xmm12,%xmm4
  addsd  %xmm9,%xmm4
  mulsd  D56(%rip),%xmm9
  movsd  %xmm4,(%rax)
  movsd  D56(%rip),%xmm4
  mulsd  %xmm1,%xmm4
  mulsd  %xmm8,%xmm1
  addsd  %xmm4,%xmm5
  movsd  D56(%rip),%xmm4
  addsd  %xmm10,%xmm1
  mulsd  %xmm0,%xmm4
  addsd  %xmm14,%xmm5
  mulsd  %xmm8,%xmm0
  addsd  %xmm14,%xmm1
  addsd  %xmm11,%xmm4
  movapd %xmm13,%xmm11
  mulsd  %xmm7,%xmm11
  addsd  %xmm9,%xmm0
  addsd  %xmm12,%xmm4
  addsd  %xmm12,%xmm0
  addsd  %xmm11,%xmm15
  movapd %xmm13,%xmm11
  mulsd  %xmm6,%xmm11
  movsd  %xmm15,0x30(%rsp)
  movsd  0x88(%rsp),%xmm15
  mulsd  %xmm3,%xmm15
  mulsd  %xmm13,%xmm3
  addsd  %xmm15,%xmm11
  movapd %xmm5,%xmm15
  subsd  %xmm11,%xmm15
  addsd  %xmm11,%xmm5
  movsd  0x30(%rsp),%xmm11
  movsd  %xmm15,(%r15)
  movsd  %xmm5,0x0(%r13)
  movapd %xmm11,%xmm5
  addsd  %xmm4,%xmm5
  subsd  %xmm11,%xmm4
  movsd  %xmm5,(%rdx)
  movsd  0x88(%rsp),%xmm5
  movsd  %xmm4,(%rcx)
  movapd %xmm1,%xmm4
  mov    0x28(%rsp),%ecx
  mulsd  %xmm5,%xmm6
  mulsd  %xmm5,%xmm7
  lea    (%r9,%rcx,1),%edi
  subsd  %xmm6,%xmm3
  subsd  %xmm7,%xmm2
  addsd  %xmm3,%xmm1
  subsd  %xmm3,%xmm4
  movsd  %xmm4,(%r8)
  movsd  %xmm1,(%rsi)
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm0
  addsd  %xmm2,%xmm1
  movsd  %xmm1,(%r11)
  movsd  %xmm0,(%r10)
  mov    0x6c(%rsp),%eax
  cmp    %edi,%eax
  jg     L56
  sub    %eax,%edi
  cmp    %edi,%r9d
  jge    L56
  mov    0x170(%rsp),%r11
  mov    0x178(%rsp),%r10
  mov    0x180(%rsp),%r9
  jmp    L603
L352:
  movsd  D20(%rip),%xmm4
  mov    %eax,%ecx
  mov    $0x1,%eax
L269:
  movsd  0xe8(%rsp),%xmm7
  lea    (%rax,%rcx,1),%edi
  movslq %eax,%rdx
  lea    (%rcx,%rdi,1),%esi
  movslq %edi,%rax
  shl    $0x3,%rdx
  movslq %esi,%rdi
  shl    $0x3,%rax
  lea    (%r12,%rdx,1),%r13
  add    %rbp,%rdx
  shl    $0x3,%rdi
  lea    (%r12,%rax,1),%r15
  add    %rbp,%rax
  movsd  (%rdx),%xmm2
  lea    (%r12,%rdi,1),%r8
  movsd  (%r15),%xmm1
  add    %rbp,%rdi
  movsd  (%rax),%xmm0
  movsd  0x0(%r13),%xmm3
  addsd  (%r8),%xmm1
  addsd  (%rdi),%xmm0
  movapd %xmm3,%xmm5
  addsd  %xmm1,%xmm5
  mulsd  %xmm4,%xmm1
  movsd  %xmm5,0x0(%r13)
  movapd %xmm2,%xmm5
  addsd  %xmm0,%xmm5
  mulsd  %xmm4,%xmm0
  addsd  %xmm3,%xmm1
  movsd  %xmm5,(%rdx)
  movsd  (%rax),%xmm3
  subsd  (%rdi),%xmm3
  movapd %xmm1,%xmm5
  addsd  %xmm2,%xmm0
  movsd  (%r15),%xmm2
  subsd  (%r8),%xmm2
  mulsd  %xmm7,%xmm3
  mulsd  %xmm7,%xmm2
  subsd  %xmm3,%xmm5
  addsd  %xmm3,%xmm1
  movsd  %xmm5,(%r15)
  movapd %xmm0,%xmm5
  subsd  %xmm2,%xmm0
  addsd  %xmm2,%xmm5
  movsd  %xmm5,(%rax)
  lea    (%rcx,%rsi,1),%eax
  movsd  %xmm1,(%r8)
  movsd  %xmm0,(%rdi)
  mov    0x6c(%rsp),%edi
  cmp    %eax,%edi
  jg     L269
  sub    %edi,%eax
  cmp    %eax,%ecx
  jge    L269
  jmp    L603
L957:
  mov    0x38(%rsp),%edi
  sub    %edi,0x40(%rsp)
  jns    L922
L89:
  add    $0x128,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L604:
  mov    0x68(%rsp),%r13d
  mov    0xf4(%rsp),%eax
  movslq 0x60(%rsp),%rbx
  imul   %r13d,%eax
  mov    %r13d,%edi
  mov    %rbx,0x60(%rsp)
  mov    %eax,0x30(%rsp)
  mov    %r10d,%eax
  sub    0x38(%rsp),%eax
  mov    %eax,%edx
  mov    %eax,0x40(%rsp)
  sub    %r13d,%edx
  test   %eax,%eax
  js     L89
  sub    %eax,%edx
  neg    %edi
  mov    0x190(%rsp),%r15
  mov    %r11,%rbx
  mov    %edx,%eax
  movslq %edi,%rcx
  add    $0x1,%eax
  mov    %eax,0x68(%rsp)
L922:
  mov    0x68(%rsp),%eax
  add    0x40(%rsp),%eax
  mov    %eax,0x48(%rsp)
  mov    0x60(%rsp),%rax
  mov    %rax,0x20(%rsp)
L128:
  mov    0x20(%rsp),%rdi
  mov    (%r15,%rdi,4),%eax
  mov    %eax,0x28(%rsp)
  test   %eax,%eax
  js     L188
  mov    0x5c(%rsp),%esi
  mov    %edi,0x50(%rsp)
  imul   %esi,%eax
  add    0x48(%rsp),%eax
  mov    %esi,0x8(%rsp)
  mov    %eax,0x58(%rsp)
  nopw   0x0(%rax,%rax,1)
L641:
  mov    0x8(%rsp),%eax
  mov    0x30(%rsp),%r11d
  mov    $0x8,%edx
  mov    0x58(%rsp),%edi
  cmp    %r11d,%eax
  cmovle %eax,%r11d
  sub    %r11d,%eax
  add    %eax,%edi
  mov    %eax,0x8(%rsp)
  lea    (%rdi,%r11,1),%r8d
  movslq %r8d,%rax
  nopl   0x0(%rax)
L929:
  movsd  (%r12,%rax,8),%xmm0
  movsd  %xmm0,(%rbx,%rdx,1)
  movsd  0x0(%rbp,%rax,8),%xmm0
  add    %rcx,%rax
  movsd  %xmm0,(%r14,%rdx,1)
  add    $0x8,%rdx
  cmp    %eax,%edi
  jne    L929
  mov    %rbx,0x10(%rsp)
  mov    0x28(%rsp),%r10d
  mov    %r14,0x18(%rsp)
  mov    0x5c(%rsp),%ebx
  mov    0x20(%rsp),%r14
  nopw   0x0(%rax,%rax,1)
L954:
  movslq %r10d,%rax
  mov    %r8d,%esi
  mov    (%r15,%rax,4),%eax
  add    %eax,%r10d
  neg    %eax
  imul   %ebx,%r10d
  sub    %r10d,%esi
  mov    %eax,%r10d
  movslq %r8d,%rax
  add    %r13d,%r8d
  movslq %esi,%rdx
  sub    %r8d,%esi
  nopl   (%rax)
L713:
  movsd  (%r12,%rdx,8),%xmm0
  lea    (%rsi,%rax,1),%r9d
  mov    %edx,%r8d
  movsd  %xmm0,(%r12,%rax,8)
  movsd  0x0(%rbp,%rdx,8),%xmm0
  add    %rcx,%rdx
  movsd  %xmm0,0x0(%rbp,%rax,8)
  add    %rcx,%rax
  cmp    %eax,%edi
  jne    L713
  cmp    %r14d,%r10d
  je     L665
  mov    %r9d,%edi
  lea    (%r9,%r11,1),%r8d
  jmp    L954
L648:
  movsd  D89(%rip),%xmm7
  movsd  %xmm7,0xe8(%rsp)
  movsd  D199(%rip),%xmm7
  movsd  %xmm7,0x88(%rsp)
  movsd  D16(%rip),%xmm7
  movsd  %xmm7,0x8(%rsp)
  jmp    L90
  nopl   0x0(%rax)
L665:
  lea    (%r11,%r9,1),%eax
  mov    0x10(%rsp),%rbx
  mov    0x18(%rsp),%r14
  mov    $0x8,%edx
  cltq
  nopl   (%rax)
L739:
  movsd  (%rbx,%rdx,1),%xmm0
  movsd  %xmm0,(%r12,%rax,8)
  movsd  (%r14,%rdx,1),%xmm0
  add    $0x8,%rdx
  movsd  %xmm0,0x0(%rbp,%rax,8)
  add    %rcx,%rax
  lea    0x0(%r13,%rax,1),%esi
  cmp    %esi,%r8d
  jne    L739
  mov    0x8(%rsp),%eax
  test   %eax,%eax
  jne    L641
  cmpl   $0x1,0x50(%rsp)
  je     L957
L188:
  subq   $0x1,0x20(%rsp)
  jmp    L128
L356:
  mov    0x190(%rsp),%rdi
  mov    0x4(%rdi),%r15d
  lea    0xc(%rdi),%rbx
  mov    0x94(%rsp),%edi
L558:
  movslq %ecx,%rsi
  movslq %eax,%rdx
  add    %r13d,%eax
  add    0x68(%rsp),%ecx
  shl    $0x3,%rsi
  shl    $0x3,%rdx
  lea    (%r12,%rsi,1),%r9
  lea    (%r12,%rdx,1),%r8
  add    %rbp,%rsi
  add    %rbp,%rdx
  movsd  (%r9),%xmm0
  movsd  (%r8),%xmm1
  movsd  %xmm1,(%r9)
  movsd  %xmm0,(%r8)
  movsd  (%rsi),%xmm0
  movsd  (%rdx),%xmm1
  movsd  %xmm1,(%rsi)
  movsd  %xmm0,(%rdx)
  cmp    %eax,%edi
  jg     L558
L193:
  mov    %rbx,%rsi
  mov    %r13d,%r9d
  mov    %r15d,%edx
  jmp    L809
L82:
  mov    %r8d,%r9d
L809:
  mov    (%rsi),%r8d
  sub    %edx,%eax
  add    $0x4,%rsi
  mov    %r9d,%edx
  add    %r8d,%eax
  cmp    %r9d,%eax
  jg     L82
  mov    0x68(%rsp),%r8d
  mov    %eax,%edx
  mov    %ecx,%esi
L101:
  mov    %esi,%ecx
  mov    %edx,%eax
  add    %r8d,%esi
  add    %r13d,%edx
  cmp    %ecx,%eax
  jg     L558
  cmp    %edx,%edi
  jg     L101
  cmp    %esi,%edi
  jle    L377
  mov    %esi,%ecx
  mov    %edx,%eax
  jmp    L193
L820:
  mov    %ebx,%eax
  jmp    L630
```

tool_calls: name: read_data
arguments: data_tag: D18
datatype: f64
name: read_data
arguments: data_tag: D173
datatype: f64
name: read_data
arguments: data_tag: D27
datatype: f64
name: read_data
arguments: data_tag: D99
datatype: f64
name: read_data
arguments: data_tag: D164
datatype: f64
name: read_data
arguments: data_tag: D68
datatype: f64
name: read_data
arguments: data_tag: D60
datatype: f32[2]
name: read_data
arguments: data_tag: D19
datatype: f32[4]
name: read_data
arguments: data_tag: D38
datatype: byte[8]
name: read_data
arguments: data_tag: D175
datatype: byte[8]
name: read_data
arguments: data_tag: D56
datatype: f64
name: read_data
arguments: data_tag: D20
datatype: f32[2]
name: read_data
arguments: data_tag: D89
datatype: byte[8]
name: read_data
arguments: data_tag: D199
datatype: byte[8]
name: read_data
arguments: data_tag: D16
datatype: byte[8]

tool: D18: 1

tool: D173: 0.8660254037844387

tool: D27: 0.9510565162951535

tool: D99: 0.7853981633974483

tool: D164: 8

tool: D68: 0.5

tool: {"D60": [0.0,1.5]}

tool: {"D19": [0.0,-0.0,0.0,0.0]}

tool: {"D38": [0x62,0x2d,0xa0,0x91,0x21,0x72,0xb8,0x3f]}

tool: {"D175": [0x50,0xe9,0x2f,0x37,0xef,0xc6,0xe3,0x3f]}

tool: D56: 0.30901699437494745

tool: {"D20": [0.0,-1.75]}

tool: {"D89": [0xab,0x4c,0x58,0xe8,0x7a,0xb6,0xeb,0xbf]}

tool: {"D199": [0xff,0x54,0x44,0x13,0x0e,0x6f,0xee,0xbf]}

tool: {"D16": [0x18,0x2d,0x44,0x54,0xfb,0x21,0xe9,0xbf]}

assistant: ```c
void fftmx(double *a, double *b, int ntot, int n, int nspan, int isn, int m, int *kt, double *at, double *ck, double *bt, double *sk, int *np, int nfac[]) {
  int i, inc, j, jc, jf, jj, k, k1, k2, k3, k4, kk, klim, ks, kspan, kspnn, lim, maxf, mm, nn, nt;
  double aa, aj, ajm, ajp, ak, akm, akp, bb, bj, bjm, bjp, bk, bkm, bkp, c1, c2, c3, c72, cd, dr, rad, sd, s1, s2, s3, s72, s120;
  double xx;
  c2 = c3 = s2 = s3 = k3 = 0;
  inc = abs(isn);
  nt = inc * ntot;
  ks = inc * nspan;
  rad = 0.785398163397448278900;
  c72 = 0.309016994374947451270;
  s72 = 0.951056516295153531190;
  s120 = 0.866025403784438707600;
  if (isn < 0) {
    s72 = -s72;
    s120 = -s120;
    rad = -rad;
  } else {
    ak = 1.0 / (double)n;
    for (j = 1; j <= nt; j += inc) {
      a[j] *= (double)ak;
      b[j] *= (double)ak;
    }
  }
  kspan = ks;
  nn = nt - inc;
  jc = ks / n;
  lim = 32;
  klim = lim * jc;
  i = 0;
  jf = 0;
  maxf = m - (*kt);
  maxf = nfac[maxf];
  if ((*kt) > 0 && maxf < nfac[*kt])
    maxf = nfac[*kt];
lbl40:
  dr = (8.0 * (double)jc) / ((double)kspan);
  xx = sin((double)0.5 * dr * rad);
  cd = 2.0 * xx * xx;
  sd = sin(dr * rad);
  kk = 1;
  if (nfac[++i] != 2)
    goto lbl110;
  kspan /= 2;
  k1 = kspan + 2;
  do {
    do {
      k2 = kk + kspan;
      ak = a[k2];
      bk = b[k2];
      a[k2] = (a[kk]) - (double)ak;
      b[k2] = (b[kk]) - (double)bk;
      a[kk] = (a[kk]) + (double)ak;
      b[kk] = (b[kk]) + (double)bk;
      kk = k2 + kspan;
    } while (kk <= nn);
    kk -= nn;
  } while (kk <= jc);
  if (kk > kspan)
    goto lbl350;
lbl60:
  c1 = 1.0 - cd;
  s1 = sd;
  mm = (k1 / 2 < klim ? k1 / 2 : klim);
  goto lbl80;
lbl70:
  ak = c1 - ((cd * c1) + (sd * s1));
  s1 = ((sd * c1) - (cd * s1)) + s1;
  c1 = ak;
lbl80:
  do {
    do {
      k2 = kk + kspan;
      ak = a[kk] - a[k2];
      bk = b[kk] - b[k2];
      a[kk] = a[kk] + a[k2];
      b[kk] = b[kk] + b[k2];
      a[k2] = (double)((c1 * ak) - (s1 * bk));
      b[k2] = (double)((s1 * ak) + (c1 * bk));
      kk = k2 + kspan;
    } while (kk < nt);
    k2 = kk - nt;
    c1 = -c1;
    kk = k1 - k2;
  } while (kk > k2);
  kk += jc;
  if (kk <= mm)
    goto lbl70;
  if (kk < k2)
    goto lbl90;
  k1 += (inc + inc);
  kk = ((k1 - kspan) / 2) + jc;
  if (kk <= (jc + jc))
    goto lbl60;
  goto lbl40;
lbl90:
  s1 = ((double)((kk - 1) / jc)) * dr * rad;
  c1 = cos(s1);
  s1 = sin(s1);
  mm = (k1 / 2 < mm + klim ? k1 / 2 : mm + klim);
  goto lbl80;
lbl100:
  k1 = kk + kspan;
  k2 = k1 + kspan;
  ak = a[kk];
  bk = b[kk];
  aj = a[k1] + a[k2];
  bj = b[k1] + b[k2];
  a[kk] = (double)(ak + aj);
  b[kk] = (double)(bk + bj);
  ak += (-0.5 * aj);
  bk += (-0.5 * bj);
  aj = (a[k1] - a[k2]) * s120;
  bj = (b[k1] - b[k2]) * s120;
  a[k1] = (double)(ak - bj);
  b[k1] = (double)(bk + aj);
  a[k2] = (double)(ak + bj);
  b[k2] = (double)(bk - aj);
  kk = k2 + kspan;
  if (kk < nn)
    goto lbl100;
  kk -= nn;
  if (kk <= kspan)
    goto lbl100;
  goto lbl290;
lbl110:
  if (nfac[i] != 4)
    goto lbl230;
  kspnn = kspan;
  kspan = kspan / 4;
lbl120:
  c1 = 1.0;
  s1 = 0;
  mm = (kspan < klim ? kspan : klim);
  goto lbl150;
lbl130:
  c2 = c1 - ((cd * c1) + (sd * s1));
  s1 = ((sd * c1) - (cd * s1)) + s1;
  c1 = c2;
lbl140:
  c2 = (c1 * c1) - (s1 * s1);
  s2 = c1 * s1 * 2.0;
  c3 = (c2 * c1) - (s2 * s1);
  s3 = (c2 * s1) + (s2 * c1);
lbl150:
  k1 = kk + kspan;
  k2 = k1 + kspan;
  k3 = k2 + kspan;
  akp = a[kk] + a[k2];
  akm = a[kk] - a[k2];
  ajp = a[k1] + a[k3];
  ajm = a[k1] - a[k3];
  a[kk] = (double)(akp + ajp);
  ajp = akp - ajp;
  bkp = b[kk] + b[k2];
  bkm = b[kk] - b[k2];
  bjp = b[k1] + b[k3];
  bjm = b[k1] - b[k3];
  b[kk] = (double)(bkp + bjp);
  bjp = bkp - bjp;
  if (isn < 0)
    goto lbl180;
  akp = akm - bjm;
  akm = akm + bjm;
  bkp = bkm + ajm;
  bkm = bkm - ajm;
  if (s1 == 0.0)
    goto lbl190;
lbl160:
  a[k1] = (double)((akp * c1) - (bkp * s1));
  b[k1] = (double)((akp * s1) + (bkp * c1));
  a[k2] = (double)((ajp * c2) - (bjp * s2));
  b[k2] = (double)((ajp * s2) + (bjp * c2));
  a[k3] = (double)((akm * c3) - (bkm * s3));
  b[k3] = (double)((akm * s3) + (bkm * c3));
  kk = k3 + kspan;
  if (kk <= nt)
    goto lbl150;
lbl170:
  kk -= (nt - jc);
  if (kk <= mm)
    goto lbl130;
  if (kk < kspan)
    goto lbl200;
  kk -= (kspan - inc);
  if (kk <= jc)
    goto lbl120;
  if (kspan == jc)
    goto lbl350;
  goto lbl40;
lbl180:
  akp = akm + bjm;
  akm = akm - bjm;
  bkp = bkm - ajm;
  bkm = bkm + ajm;
  if (s1 != 0.0)
    goto lbl160;
lbl190:
  a[k1] = (double)akp;
  b[k1] = (double)bkp;
  a[k2] = (double)ajp;
  b[k2] = (double)bjp;
  a[k3] = (double)akm;
  b[k3] = (double)bkm;
  kk = k3 + kspan;
  if (kk <= nt)
    goto lbl150;
  goto lbl170;
lbl200:
  s1 = ((double)((kk - 1) / jc)) * dr * rad;
  c1 = cos(s1);
  s1 = sin(s1);
  mm = (kspan < mm + klim ? kspan : mm + klim);
  goto lbl140;
lbl210:
  c2 = (c72 * c72) - (s72 * s72);
  s2 = 2.0 * c72 * s72;
lbl220:
  k1 = kk + kspan;
  k2 = k1 + kspan;
  k3 = k2 + kspan;
  k4 = k3 + kspan;
  akp = a[k1] + a[k4];
  akm = a[k1] - a[k4];
  bkp = b[k1] + b[k4];
  bkm = b[k1] - b[k4];
  ajp = a[k2] + a[k3];
  ajm = a[k2] - a[k3];
  bjp = b[k2] + b[k3];
  bjm = b[k2] - b[k3];
  aa = a[kk];
  bb = b[kk];
  a[kk] = (double)(aa + akp + ajp);
  b[kk] = (double)(bb + bkp + bjp);
  ak = (akp * c72) + (ajp * c2) + aa;
  bk = (bkp * c72) + (bjp * c2) + bb;
  aj = (akm * s72) + (ajm * s2);
  bj = (bkm * s72) + (bjm * s2);
  a[k1] = (double)(ak - bj);
  a[k4] = (double)(ak + bj);
  b[k1] = (double)(bk + aj);
  b[k4] = (double)(bk - aj);
  ak = (akp * c2) + (ajp * c72) + aa;
  bk = (bkp * c2) + (bjp * c72) + bb;
  aj = (akm * s2) - (ajm * s72);
  bj = (bkm * s2) - (bjm * s72);
  a[k2] = (double)(ak - bj);
  a[k3] = (double)(ak + bj);
  b[k2] = (double)(bk + aj);
  b[k3] = (double)(bk - aj);
  kk = k4 + kspan;
  if (kk < nn)
    goto lbl220;
  kk -= nn;
  if (kk <= kspan)
    goto lbl220;
  goto lbl290;
lbl230:
  k = nfac[i];
  kspnn = kspan;
  kspan /= k;
  if (k == 3)
    goto lbl100;
  if (k == 5)
    goto lbl210;
  if (k == jf)
    goto lbl250;
  jf = k;
  s1 = rad / (((double)(k)) / 8.0);
  c1 = cos(s1);
  s1 = sin(s1);
  ck[jf] = 1.0;
  sk[jf] = 0.0;
  for (j = 1; j < k; j++) {
    ck[j] = (double)((ck[k]) * c1 + (sk[k]) * s1);
    sk[j] = (double)((ck[k]) * s1 - (sk[k]) * c1);
    k--;
    ck[k] = ck[j];
    sk[k] = -(sk[j]);
  }
lbl250:
  k1 = kk;
  k2 = kk + kspnn;
  aa = a[kk];
  bb = b[kk];
  ak = aa;
  bk = bb;
  j = 1;
  k1 += kspan;
  do {
    k2 -= kspan;
    j++;
    at[j] = a[k1] + a[k2];
    ak = at[j] + ak;
    bt[j] = b[k1] + b[k2];
    bk = bt[j] + bk;
    j++;
    at[j] = a[k1] - a[k2];
    bt[j] = b[k1] - b[k2];
    k1 += kspan;
  } while (k1 < k2);
  a[kk] = (double)ak;
  b[kk] = (double)bk;
  k1 = kk;
  k2 = kk + kspnn;
  j = 1;
lbl270:
  k1 += kspan;
  k2 -= kspan;
  jj = j;
  ak = aa;
  bk = bb;
  aj = 0.0;
  bj = 0.0;
  k = 1;
  do {
    k++;
    ak = (at[k] * ck[jj]) + ak;
    bk = (bt[k] * ck[jj]) + bk;
    k++;
    aj = (at[k] * sk[jj]) + aj;
    bj = (bt[k] * sk[jj]) + bj;
    jj += j;
    if (jj > jf)
      jj -= jf;
  } while (k < jf);
  k = jf - j;
  a[k1] = (double)(ak - bj);
  b[k1] = (double)(bk + aj);
  a[k2] = (double)(ak + bj);
  b[k2] = (double)(bk - aj);
  j++;
  if (j < k)
    goto lbl270;
  kk += kspnn;
  if (kk <= nn)
    goto lbl250;
  kk -= nn;
  if (kk <= kspan)
    goto lbl250;
lbl290:
  if (i == m)
    goto lbl350;
  kk = jc + 1;
lbl300:
  c2 = 1.0 - cd;
  s1 = sd;
  mm = (kspan < klim ? kspan : klim);
  goto lbl320;
lbl310:
  c2 = c1 - ((cd * c1) + (sd * s1));
  s1 = s1 + ((sd * c1) - (cd * s1));
lbl320:
  c1 = c2;
  s2 = s1;
  kk += kspan;
lbl330:
  ak = a[kk];
  a[kk] = (double)((c2 * ak) - (s2 * b[kk]));
  b[kk] = (double)((s2 * ak) + (c2 * b[kk]));
  kk += kspnn;
  if (kk <= nt)
    goto lbl330;
  ak = s1 * s2;
  s2 = (s1 * c2) + (c1 * s2);
  c2 = (c1 * c2) - ak;
  kk -= (nt - kspan);
  if (kk <= kspnn)
    goto lbl330;
  kk -= (kspnn - jc);
  if (kk <= mm)
    goto lbl310;
  if (kk < kspan)
    goto lbl340;
  kk -= (kspan - jc - inc);
  if (kk <= (jc + jc))
    goto lbl300;
  goto lbl40;
lbl340:
  s1 = ((double)((kk - 1) / jc)) * dr * rad;
  c2 = cos(s1);
  s1 = sin(s1);
  mm = (kspan < mm + klim ? kspan : mm + klim);
  goto lbl320;
lbl350:
  np[1] = ks;
  if (!(*kt))
    goto lbl440;
  k = *kt + *kt + 1;
  if (m < k)
    k--;
  np[k + 1] = jc;
  for (j = 1; j < k; j++, k--) {
    np[j + 1] = np[j] / nfac[j];
    np[k] = np[k + 1] * nfac[j];
  }
  k3 = np[k + 1];
  kspan = np[2];
  kk = jc + 1;
  k2 = kspan + 1;
  j = 1;
  if (n != ntot)
    goto lbl400;
lbl370:
  do {
    ak = a[kk];
    a[kk] = a[k2];
    a[k2] = (double)ak;
    bk = b[kk];
    b[kk] = b[k2];
    b[k2] = (double)bk;
    kk += inc;
    k2 += kspan;
  } while (k2 < ks);
lbl380:
  do {
    k2 -= np[j++];
    k2 += np[j + 1];
  } while (k2 > np[j]);
  j = 1;
lbl390:
  if (kk < k2) {
    goto lbl370;
  }
  kk += inc;
  k2 += kspan;
  if (k2 < ks)
    goto lbl390;
  if (kk < ks)
    goto lbl380;
  jc = k3;
  goto lbl440;
lbl400:
  do {
    do {
      k = kk + jc;
      do {
        ak = a[kk];
        a[kk] = a[k2];
        a[k2] = (double)ak;
        bk = b[kk];
        b[kk] = b[k2];
        b[k2] = (double)bk;
        kk += inc;
        k2 += inc;
      } while (kk < k);
      kk += (ks - jc);
      k2 += (ks - jc);
    } while (kk < nt);
    k2 -= (nt - kspan);
    kk -= (nt - jc);
  } while (k2 < ks);
lbl420:
  do {
    k2 -= np[j++];
    k2 += np[j + 1];
  } while (k2 > np[j]);
  j = 1;
lbl430:
  if (kk < k2)
    goto lbl400;
  kk += jc;
  k2 += kspan;
  if (k2 < ks)
    goto lbl430;
  if (kk < ks)
    goto lbl420;
  jc = k3;
lbl440:
  if ((2 * (*kt)) + 1 >= m)
    return;
  kspnn = *(np + *(kt) + 1);
  j = m - *kt;
  nfac[j + 1] = 1;
lbl450:
  nfac[j] = nfac[j] * nfac[j + 1];
  j--;
  if (j != *kt)
    goto lbl450;
  *kt = *(kt) + 1;
  nn = nfac[*kt] - 1;
  jj = 0;
  j = 0;
  goto lbl480;
lbl460:
  jj -= k2;
  k2 = kk;
  kk = nfac[++k];
lbl470:
  jj += kk;
  if (jj >= k2)
    goto lbl460;
  np[j] = jj;
lbl480:
  k2 = nfac[*kt];
  k = *kt + 1;
  kk = nfac[k];
  j++;
  if (j <= nn)
    goto lbl470;
  j = 0;
  goto lbl500;
lbl490:
  k = kk;
  kk = np[k];
  np[k] = -kk;
  if (kk != j)
    goto lbl490;
  k3 = kk;
lbl500:
  kk = np[++j];
  if (kk < 0)
    goto lbl500;
  if (kk != j)
    goto lbl490;
  np[j] = -j;
  if (j != nn)
    goto lbl500;
  maxf *= inc;
  goto lbl570;
lbl510:
  j--;
  if (np[j] < 0)
    goto lbl510;
  jj = jc;
lbl520:
  kspan = jj;
  if (jj > maxf)
    kspan = maxf;
  jj -= kspan;
  k = np[j];
  kk = (jc * k) + i + jj;
  k1 = kk + kspan;
  k2 = 0;
lbl530:
  k2++;
  at[k2] = a[k1];
  bt[k2] = b[k1];
  k1 -= inc;
  if (k1 != kk)
    goto lbl530;
lbl540:
  k1 = kk + kspan;
  k2 = k1 - (jc * (k + np[k]));
  k = -(np[k]);
lbl550:
  a[k1] = a[k2];
  b[k1] = b[k2];
  k1 -= inc;
  k2 -= inc;
  if (k1 != kk)
    goto lbl550;
  kk = k2;
  if (k != j)
    goto lbl540;
  k1 = kk + kspan;
  k2 = 0;
lbl560:
  k2++;
  a[k1] = at[k2];
  b[k1] = bt[k2];
  k1 -= inc;
  if (k1 != kk)
    goto lbl560;
  if (jj)
    goto lbl520;
  if (j != 1)
    goto lbl510;
lbl570:
  j = k3 + 1;
  nt -= kspnn;
  i = nt - inc + 1;
  if (nt >= 0)
    goto lbl510;
  return;
}
```