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

```asm
<radbg>:
  endbr64
  push   %r15
  mov    %rsi,%rax
  mov    %r9,%r15
  push   %r14
  add    $0x1,%rax
  mov    %r8,%r14
  push   %r13
  shr    %rax
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x168,%rsp
  mov    %rdi,0x8(%rsp)
  mov    %rsi,0xe8(%rsp)
  mov    %rdx,0x18(%rsp)
  mov    %rcx,0x150(%rsp)
  mov    %rax,0x30(%rsp)
  test   %rdx,%rdx
  je     L533
  lea    0x0(,%rdi,8),%r13
  mov    %rsi,%rax
  mov    %r9,%rbx
  xor    %ebp,%ebp
  imul   %r13,%rax
  mov    %r8,(%rsp)
  mov    %r13,%r14
  mov    %r8,%r15
  mov    %r9,0x10(%rsp)
  mov    %rdx,%r13
  mov    %rax,%r12
  cs nopw 0x0(%rax,%rax,1)
L135:
  mov    %r15,%rsi
  mov    %rbx,%rdi
  mov    %r14,%rdx
  add    $0x1,%rbp
  call   <memcpy@plt>
  add    %r14,%rbx
  add    %r12,%r15
  cmp    %rbp,%r13
  jne    L135
  cmpq   $0x1,0x30(%rsp)
  mov    (%rsp),%r14
  mov    0x10(%rsp),%r15
  jbe    L533
  cmpq   $0x1,0x8(%rsp)
  jne    L385
  mov    0x18(%rsp),%rdi
  mov    0xe8(%rsp),%rsi
  mov    %rdi,%rax
  lea    -0x1(%rsi),%rdx
  mov    %rsi,%rbx
  neg    %rax
  lea    0x0(,%rax,8),%r11
  mov    %r11,%rax
  mov    %r11,0x50(%rsp)
  neg    %rax
  mov    %rax,%rcx
  lea    (%r15,%rax,1),%rbp
  imul   %rdx,%rcx
  add    %rbp,%rax
  imul   %rdi,%rdx
  mov    %rax,(%rsp)
  lea    (%rdi,%rdi,1),%rax
  mov    %rax,0x40(%rsp)
  add    %r15,%rcx
  mov    %rdx,%rax
  mov    %rdx,%r12
  sub    %rdi,%rax
  mov    %rax,0x28(%rsp)
  lea    0x8(%r14),%rax
  mov    %rax,0x10(%rsp)
  mov    0x30(%rsp),%rax
  add    %rax,%rax
  mov    %rax,0x48(%rsp)
  lea    -0x1(%rdi),%rax
  imul   %rax,%rsi
  mov    %rax,0x38(%rsp)
  lea    0x8(,%rsi,8),%rdx
  mov    %rbx,%rsi
  shl    $0x3,%rsi
  mov    %rsi,%rax
  mov    $0x8,%esi
  cmovns %rdx,%rsi
  sub    $0x8,%rdx
  mov    %rsi,%r8
  xor    %esi,%esi
  test   %rax,%rax
  cmovs  %rdx,%rsi
  mov    %rdi,%rdx
  lea    -0x8(%r8),%r10
  mov    $0xfffffffffffffff8,%r8
  shr    %rdx
  mov    %r10,0x60(%rsp)
  sub    %r11,%r8
  shl    $0x4,%rdx
  mov    %rsi,%r9
  mov    %rbx,%rsi
  mov    %r8,0x58(%rsp)
  mov    %rdx,0x70(%rsp)
  mov    %rdi,%rdx
  lea    -0x8(%r9),%r10
  shl    $0x4,%rbx
  and    $0xfffffffffffffffe,%rdx
  mov    %r10,0x68(%rsp)
  imul   %rdx,%rsi
  mov    %rsi,%r13
  mov    $0x2,%esi
L444:
  mov    0x60(%rsp),%r11
  lea    0x0(,%rsi,8),%r8
  lea    0x8(,%rdi,8),%r10
  lea    (%r11,%r8,1),%r9
  mov    %rcx,%r11
  add    0x68(%rsp),%r8
  sub    %r15,%r11
  add    %r14,%r9
  add    %r14,%r8
  cmp    %r11,%r10
  setne  %r11b
  cmpq   $0x5,0x38(%rsp)
  seta   %r10b
  and    %r10d,%r11d
  mov    0x58(%rsp),%r10
  add    %rcx,%r10
  cmp    %r10,%r8
  seta   %r10b
  cmp    %rcx,%r9
  setb   0x20(%rsp)
  or     0x20(%rsp),%r10b
  test   %r10b,%r11b
  je     L876
  mov    (%rsp),%r11
  lea    -0x8(%r11),%r10
  cmp    %r10,%r8
  seta   %r8b
  cmp    %rbp,%r9
  setb   %r9b
  or     %r8b,%r9b
  je     L876
  mov    0x10(%rsp),%r8
  mov    0x70(%rsp),%r10
  xor    %r9d,%r9d
  nopl   (%rax)
L198:
  movsd  (%r8),%xmm0
  movhpd (%r8,%rax,1),%xmm0
  addpd  %xmm0,%xmm0
  movups %xmm0,0x0(%rbp,%r9,1)
  movsd  0x8(%r8),%xmm0
  movhpd 0x8(%rax,%r8,1),%xmm0
  add    %rbx,%r8
  addpd  %xmm0,%xmm0
  movups %xmm0,(%rcx,%r9,1)
  add    $0x10,%r9
  cmp    %r10,%r9
  jne    L198
  cmp    %rdx,0x18(%rsp)
  je     L870
  lea    0x0(%r13,%rsi,1),%r8
  lea    (%rdx,%rdi,1),%r9
  movsd  -0x8(%r14,%r8,8),%xmm0
  addsd  %xmm0,%xmm0
  movsd  %xmm0,(%r15,%r9,8)
  movsd  (%r14,%r8,8),%xmm0
  lea    (%rdx,%r12,1),%r9
  addsd  %xmm0,%xmm0
  movsd  %xmm0,(%r15,%r9,8)
L870:
  mov    0x50(%rsp),%r11
  sub    %r11,(%rsp)
  add    $0x2,%rsi
  mov    0x40(%rsp),%r10
  addq   $0x10,0x10(%rsp)
  add    %r11,%rcx
  sub    %r11,%rbp
  mov    0x18(%rsp),%r11
  sub    %r10,0x28(%rsp)
  add    %r11,%rdi
  sub    %r11,%r12
  cmp    0x48(%rsp),%rsi
  jne    L444
L533:
  mov    0xe8(%rsp),%rbx
  mov    %ebx,%edi
  shl    $0x4,%edi
  call   <util_malloc_@plt>
  mov    %rax,0x48(%rsp)
  test   %rbx,%rbx
  js     L381
  pxor   %xmm0,%xmm0
  cvtsi2sd %rbx,%xmm0
L482:
  movsd  D63(%rip),%xmm1
  mov    0x48(%rsp),%rax
  movapd %xmm1,%xmm7
  divsd  %xmm0,%xmm7
  movq   D38(%rip),%xmm0
  movups %xmm0,(%rax)
  comisd D75(%rip),%xmm7
  movsd  %xmm7,(%rsp)
  jae    L289
  cvttsd2si %xmm7,%rbp
  mov    %rax,%r12
L470:
  mov    0xe8(%rsp),%r13
  mov    %rbp,%rdi
  call   <cos@plt>
  mov    %rbp,%rdi
  mov    %r13,%rbx
  shl    $0x4,%rbx
  lea    -0x10(%r12,%rbx,1),%r12
  movsd  %xmm0,(%r12)
  mov    0x48(%rsp),%r12
  movsd  %xmm0,0x10(%r12)
  call   <sin@plt>
  mov    %r13,%rax
  shr    %r13
  movsd  %xmm0,0x18(%r12)
  xorpd  D31(%rip),%xmm0
  mov    %r13,%rdi
  movsd  %xmm0,-0x8(%r12,%rbx,1)
  cmp    $0x3,%rax
  jbe    L71
  mov    0xe8(%rsp),%rax
  mov    %r14,0x10(%rsp)
  mov    $0x2,%r13d
  mov    %rdi,%r12
  lea    -0x2(%rax),%rbx
  mov    0x48(%rsp),%rax
  shl    $0x4,%rbx
  add    %rax,%rbx
  lea    0x20(%rax),%rbp
  jmp    L99
L541:
  cvttsd2si %xmm0,%r14
L411:
  mov    %r14,%rdi
  sub    $0x10,%rbx
  add    $0x10,%rbp
  call   <cos@plt>
  mov    %r14,%rdi
  movsd  %xmm0,0x10(%rbx)
  movsd  %xmm0,-0x10(%rbp)
  call   <sin@plt>
  mov    %r13,%rax
  add    $0x1,%r13
  movsd  %xmm0,-0x8(%rbp)
  xorpd  D31(%rip),%xmm0
  movsd  %xmm0,0x18(%rbx)
  cmp    %r12,%rax
  je     L369
L99:
  pxor   %xmm0,%xmm0
  cvtsi2sd %r13,%xmm0
  mulsd  (%rsp),%xmm0
  comisd D75(%rip),%xmm0
  jb     L541
  subsd  D75(%rip),%xmm0
  movabs $0x8000000000000000,%rax
  cvttsd2si %xmm0,%r14
  xor    %rax,%r14
  jmp    L411
L876:
  mov    0x10(%rsp),%r11
  mov    (%rsp),%r10
  mov    %rbp,%r8
  lea    0x8(%r11),%r9
  mov    0x28(%rsp),%r11
  nopw   0x0(%rax,%rax,1)
L190:
  movsd  -0x8(%r9),%xmm0
  addsd  %xmm0,%xmm0
  movsd  %xmm0,(%r8)
  movsd  (%r9),%xmm0
  add    %rax,%r9
  addsd  %xmm0,%xmm0
  movsd  %xmm0,(%r8,%r11,8)
  add    $0x8,%r8
  cmp    %r10,%r8
  jne    L190
  jmp    L870
L369:
  mov    0x10(%rsp),%r14
L71:
  cmpq   $0x1,0x30(%rsp)
  jbe    L691
  mov    0x150(%rsp),%rbx
  mov    0xe8(%rsp),%r8
  mov    %rbx,%rsi
  lea    0x0(,%rbx,8),%r9
  lea    -0x1(%r8),%rax
  shl    $0x4,%rsi
  lea    (%r8,%r8,1),%rdi
  mov    %rax,%r11
  mov    %r9,0x28(%rsp)
  lea    (%rsi,%r14,1),%rdx
  mov    %rdi,0x58(%rsp)
  mov    0x48(%rsp),%rdi
  lea    -0x2(%r8),%rbp
  mov    %rdx,0xc0(%rsp)
  lea    0x10(%r9),%rdx
  lea    0x8(%r15,%rsi,1),%rsi
  imul   %rbx,%r11
  add    $0x10,%rdi
  mov    %rdx,0x40(%rsp)
  add    %r14,%rdx
  mov    %rdx,0x50(%rsp)
  mov    0x30(%rsp),%rdx
  lea    (%r14,%r9,1),%rcx
  mov    %rdi,0xd8(%rsp)
  lea    (%rbx,%rbx,1),%rdi
  mov    %rdi,0xe0(%rsp)
  add    %rdx,%rdx
  mov    %r11,%rdi
  lea    0x10(,%rdi,8),%r10
  mov    %rdx,0xf8(%rsp)
  lea    0x0(,%rdi,8),%rdx
  mov    %r10,0x60(%rsp)
  mov    %rdi,%r10
  lea    (%r15,%rdx,1),%rdi
  mov    %rdi,0x100(%rsp)
  lea    0x10(%r15,%rdx,1),%rdi
  mov    %rdi,0x148(%rsp)
  lea    0x8(%r15,%r9,1),%rdi
  mov    %rdi,0x108(%rsp)
  lea    0x8(%r15,%rdx,1),%rdi
  mov    %rdi,0x110(%rsp)
  lea    (%r15,%r9,1),%rdi
  mov    %r11,0x78(%rsp)
  sub    %rbx,%r11
  mov    %rdi,0x130(%rsp)
  mov    %rbx,%rdi
  shr    %rbx
  mov    %rbx,%rdx
  mov    %rdi,%rbx
  mov    %rax,0xc8(%rsp)
  and    $0xfffffffffffffffe,%rbx
  shl    $0x4,%rdx
  imul   %r9,%rax
  mov    %rsi,0x120(%rsp)
  mov    %rdx,%r13
  lea    (%r15,%rbx,8),%rdx
  lea    0x8(%r15),%rsi
  mov    %r9,0x68(%rsp)
  mov    %rdx,0x88(%rsp)
  imul   %rdi,%r8
  lea    (%rdi,%rbx,1),%rdx
  lea    (%r15,%rdx,8),%rdx
  mov    %rax,0x38(%rsp)
  add    %r14,%rax
  mov    %rdx,0x90(%rsp)
  mov    %r10,%rdx
  add    %rbx,%rdx
  mov    %rbp,0x158(%rsp)
  lea    (%r15,%rdx,8),%rdx
  mov    %r11,0x128(%rsp)
  mov    %rdx,0x98(%rsp)
  mov    %r9,%rdx
  imul   %rbp,%rdx
  mov    %r8,0xf0(%rsp)
  mov    %r11,0xb8(%rsp)
  mov    %rdi,0x70(%rsp)
  add    %r15,%rdx
  mov    %rdx,0x118(%rsp)
  movq   $0x2,0x20(%rsp)
  mov    %rsi,0x138(%rsp)
  lea    -0x1(%rdi),%rsi
  mov    %rsi,0x140(%rsp)
  mov    %r14,0x80(%rsp)
  mov    %r13,%r14
  mov    %rdi,%r13
  nopl   0x0(%rax)
L498:
  mov    0xd8(%rsp),%rdi
  movsd  (%rdi),%xmm1
  movsd  0x8(%rdi),%xmm2
  test   %r13,%r13
  je     L663
  mov    0x40(%rsp),%rdi
  mov    0x138(%rsp),%r11
  lea    -0x8(%rdi),%rdx
  mov    0x108(%rsp),%rdi
  cmp    0x38(%rsp),%rdx
  setne  %sil
  cmp    %rdi,%rcx
  setne  %dl
  and    %esi,%edx
  cmpq   $0x1,0x140(%rsp)
  seta   %sil
  and    %edx,%esi
  cmp    %r11,%rcx
  setne  %dl
  and    %esi,%edx
  cmp    0x110(%rsp),%rax
  setne  %sil
  and    %edx,%esi
  cmp    %rax,%rdi
  setne  %dl
  and    %esi,%edx
  cmp    %rax,%r11
  setne  %sil
  test   %sil,%dl
  je     L173
  mov    0x50(%rsp),%rsi
  mov    0x100(%rsp),%rdi
  cmp    %rsi,%rdi
  setae  %sil
  cmp    %rcx,0x148(%rsp)
  setbe  %dl
  or     %sil,%dl
  je     L173
  movapd %xmm1,%xmm4
  movapd %xmm2,%xmm3
  mov    %rdi,%rsi
  xor    %edx,%edx
  mov    0x130(%rsp),%rdi
  unpcklpd %xmm4,%xmm4
  unpcklpd %xmm3,%xmm3
  xchg   %ax,%ax
L371:
  movupd (%rdi,%rdx,1),%xmm0
  movupd (%r15,%rdx,1),%xmm6
  mulpd  %xmm4,%xmm0
  addpd  %xmm6,%xmm0
  movups %xmm0,(%rcx,%rdx,1)
  movupd (%rsi,%rdx,1),%xmm0
  mulpd  %xmm3,%xmm0
  movups %xmm0,(%rax,%rdx,1)
  add    $0x10,%rdx
  cmp    %r14,%rdx
  jne    L371
  cmp    %rbx,%r13
  je     L663
  mov    0x70(%rsp),%rdi
  mov    0x78(%rsp),%rsi
  lea    (%rbx,%rdi,1),%rdx
  mov    0x90(%rsp),%rdi
  mulsd  (%rdi),%xmm1
  mov    0x88(%rsp),%rdi
  movapd %xmm1,%xmm0
  addsd  (%rdi),%xmm0
  mov    0x80(%rsp),%rdi
  movsd  %xmm0,(%rdi,%rdx,8)
  lea    (%rbx,%rsi,1),%rdx
  mov    0x98(%rsp),%rsi
  mulsd  (%rsi),%xmm2
  movsd  %xmm2,(%rdi,%rdx,8)
L663:
  cmpq   $0x2,0x30(%rsp)
  mov    0x28(%rsp),%rdi
  je     L777
  mov    0x70(%rsp),%r11
  mov    0x80(%rsp),%rdi
  movq   $0x2,(%rsp)
  mov    0x78(%rsp),%rsi
  mov    %r14,0x10(%rsp)
  lea    (%rbx,%r11,1),%rdx
  mov    0x120(%rsp),%r12
  mov    0x20(%rsp),%r9
  lea    (%rdi,%rdx,8),%r8
  lea    (%rbx,%rsi,1),%rdx
  mov    %rdi,%rsi
  mov    0x128(%rsp),%rbp
  lea    (%rsi,%r11,8),%rsi
  mov    0xe0(%rsp),%r11
  lea    (%rdi,%rdx,8),%rdi
  mov    %rsi,0xd0(%rsp)
  mov    0x118(%rsp),%rsi
  nopw   0x0(%rax,%rax,1)
L511:
  add    0x20(%rsp),%r9
  mov    0x58(%rsp),%r10
  mov    %r9,%rdx
  sub    %r10,%rdx
  cmp    %r9,%r10
  cmovbe %rdx,%r9
  mov    0x48(%rsp),%rdx
  movsd  (%rdx,%r9,8),%xmm2
  movsd  0x8(%rdx,%r9,8),%xmm1
  test   %r13,%r13
  je     L485
  mov    0x38(%rsp),%r10
  cmp    %r10,0x40(%rsp)
  setle  %r10b
  mov    0x68(%rsp),%r14
  cmp    %r14,0x60(%rsp)
  setle  %dl
  or     %r10d,%edx
  cmp    $0x1,%r13
  setne  %r10b
  and    %edx,%r10d
  cmp    %r12,%rcx
  setne  %dl
  and    %r10d,%edx
  cmp    %r12,%rax
  setne  %r10b
  and    %r10d,%edx
  lea    0x8(%rsi),%r10
  cmp    %r10,%rax
  setne  %r10b
  test   %r10b,%dl
  je     L261
  lea    0x10(%rsi),%rdx
  cmp    %rdx,%rcx
  setae  %r10b
  cmp    0x50(%rsp),%rsi
  setae  %dl
  or     %r10b,%dl
  je     L261
  movapd %xmm2,%xmm4
  movapd %xmm1,%xmm3
  mov    0x10(%rsp),%r14
  xor    %edx,%edx
  lea    -0x8(%r12),%r10
  unpcklpd %xmm4,%xmm4
  unpcklpd %xmm3,%xmm3
  nopw   0x0(%rax,%rax,1)
L128:
  movupd (%r10,%rdx,1),%xmm0
  movupd (%rcx,%rdx,1),%xmm6
  mulpd  %xmm4,%xmm0
  addpd  %xmm6,%xmm0
  movups %xmm0,(%rcx,%rdx,1)
  movupd (%rsi,%rdx,1),%xmm0
  movupd (%rax,%rdx,1),%xmm7
  mulpd  %xmm3,%xmm0
  addpd  %xmm7,%xmm0
  movups %xmm0,(%rax,%rdx,1)
  add    $0x10,%rdx
  cmp    %r14,%rdx
  jne    L128
  mov    %r14,0x10(%rsp)
  cmp    %rbx,%r13
  je     L485
  lea    (%rbx,%r11,1),%rdx
  movsd  (%r8),%xmm0
  mulsd  (%r15,%rdx,8),%xmm2
  lea    (%rbx,%rbp,1),%rdx
  addsd  %xmm2,%xmm0
  movsd  %xmm0,(%r8)
  mulsd  (%r15,%rdx,8),%xmm1
  movsd  (%rdi),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rdi)
L485:
  mov    0x28(%rsp),%r10
  addq   $0x1,(%rsp)
  add    %r13,%r11
  sub    %r13,%rbp
  mov    (%rsp),%rdx
  sub    %r10,%rsi
  add    %r10,%r12
  cmp    %rdx,0x30(%rsp)
  jne    L511
  mov    0x10(%rsp),%r14
  mov    %r10,%rdi
L777:
  add    %rdi,0xc0(%rsp)
  mov    0xe0(%rsp),%rdx
  add    %rdi,%rcx
  sub    %rdi,%rax
  add    %rdi,0x40(%rsp)
  add    %rdi,0x68(%rsp)
  sub    %rdi,0x38(%rsp)
  sub    %rdi,0x60(%rsp)
  add    %rdi,0x50(%rsp)
  addq   $0x2,0x20(%rsp)
  mov    0x20(%rsp),%rdi
  addq   $0x10,0xd8(%rsp)
  add    %r13,0x70(%rsp)
  sub    %r13,0x78(%rsp)
  sub    %rdx,0xb8(%rsp)
  cmp    0xf8(%rsp),%rdi
  jne    L498
  mov    0x48(%rsp),%rdi
  mov    %r14,%r13
  mov    0x80(%rsp),%r14
  call   <util_free_@plt>
  mov    0x150(%rsp),%r11
  test   %r11,%r11
  je     L681
  mov    0x130(%rsp),%r10
  mov    $0x8,%eax
  mov    %r11,%rdx
  mov    0x30(%rsp),%rbp
  sub    %r15,%rax
  mov    0x28(%rsp),%r12
  mov    $0x1,%esi
  mov    0x88(%rsp),%r9
  mov    %r10,%rcx
  mov    %rax,%rdi
  lea    -0x1(%r11),%r8
L693:
  mov    %rdi,%rax
  add    %rcx,%rax
  je     L348
  xor    %eax,%eax
  cmp    $0x1,%r8
  jbe    L348
  nopl   0x0(%rax,%rax,1)
L764:
  movupd (%r15,%rax,1),%xmm0
  movupd (%rcx,%rax,1),%xmm7
  addpd  %xmm7,%xmm0
  movups %xmm0,(%r15,%rax,1)
  add    $0x10,%rax
  cmp    %r13,%rax
  jne    L764
  cmp    %rbx,%r11
  je     L455
  lea    (%rbx,%rdx,1),%rax
  movsd  (%r9),%xmm0
  addsd  (%r15,%rax,8),%xmm0
  movsd  %xmm0,(%r9)
L455:
  add    $0x1,%rsi
  add    %r11,%rdx
  add    %r12,%rcx
  cmp    %rsi,%rbp
  jne    L693
L681:
  cmpq   $0x0,0x18(%rsp)
  je     L549
  cmpq   $0x1,0x8(%rsp)
  jne    L133
  mov    0x18(%rsp),%r8
  mov    %r8,%rdx
  lea    0x0(,%r8,8),%rcx
  mov    %r8,%rbx
  neg    %rdx
  mov    %rcx,(%rsp)
  lea    (%r15,%rcx,1),%rdi
  lea    (%r14,%rcx,1),%rax
  lea    0x0(,%rdx,8),%rsi
  mov    0xc8(%rsp),%rdx
  and    $0xfffffffffffffffe,%rbx
  mov    %rsi,0x28(%rsp)
  mov    %rdx,%rsi
  imul   %r8,%rdx
  imul   %rcx,%rsi
  lea    (%r8,%r8,1),%rcx
  mov    %rcx,0x10(%rsp)
  mov    0xe8(%rsp),%rcx
  mov    %rdx,%r10
  mov    %rdx,%r11
  lea    0x8(%r14,%rdx,8),%r13
  mov    %r8,%rdx
  shr    %rdx
  sub    0x30(%rsp),%rcx
  add    %r15,%rsi
  sub    %r8,%r10
  shl    $0x4,%rdx
  mov    %rcx,0x20(%rsp)
  mov    %rbx,%rcx
  mov    %rdx,%r12
L351:
  mov    %r13,%r9
  lea    0x0(,%r8,8),%rbx
  lea    0x10(%rsi),%rbp
  sub    %r14,%r9
  lea    -0x8(%r13),%rdx
  cmp    %r9,%rbx
  setne  %bl
  cmp    %r13,%rdi
  setne  %r9b
  and    %ebx,%r9d
  cmpq   $0x1,0x18(%rsp)
  setne  %bl
  and    %ebx,%r9d
  lea    0x8(%rax),%rbx
  cmp    %rbx,%rdi
  setne  %bl
  and    %ebx,%r9d
  lea    0x10(%rax),%rbx
  cmp    %rbx,%rsi
  setae  %bl
  cmp    %rbp,%rax
  setae  0x8(%rsp)
  or     0x8(%rsp),%bl
  test   %bl,%r9b
  je     L111
  lea    0x8(%r13),%r9
  cmp    %r9,%rsi
  setae  %r9b
  cmp    %rdx,%rbp
  setbe  %bl
  or     %r9b,%bl
  je     L111
  xor    %r9d,%r9d
  nopw   0x0(%rax,%rax,1)
L118:
  movupd (%rax,%r9,1),%xmm0
  movupd (%rdx,%r9,1),%xmm6
  addpd  %xmm6,%xmm0
  movups %xmm0,(%rsi,%r9,1)
  movupd (%rax,%r9,1),%xmm0
  movupd (%rdx,%r9,1),%xmm7
  subpd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%r9,1)
  add    $0x10,%r9
  cmp    %r12,%r9
  jne    L118
  mov    (%rsp),%rbx
  add    %rax,%rbx
  cmp    %rcx,0x18(%rsp)
  je     L581
  lea    (%rcx,%r8,1),%rax
  lea    (%rcx,%r11,1),%rbp
  lea    (%r14,%rax,8),%r9
  lea    (%r14,%rbp,8),%rdx
  movsd  (%r9),%xmm0
  addsd  (%rdx),%xmm0
  movsd  %xmm0,(%r15,%rbp,8)
  movsd  (%r9),%xmm0
  subsd  (%rdx),%xmm0
  movsd  %xmm0,(%r15,%rax,8)
L581:
  mov    %rbx,%rax
  mov    0x28(%rsp),%rbx
  add    (%rsp),%rdi
  subq   $0x1,0xc8(%rsp)
  sub    0x10(%rsp),%r10
  add    %rbx,%rsi
  add    %rbx,%r13
  mov    0x18(%rsp),%rbx
  mov    0xc8(%rsp),%rdx
  add    %rbx,%r8
  sub    %rbx,%r11
  cmp    0x20(%rsp),%rdx
  jne    L351
L457:
  add    $0x168,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nop
L261:
  lea    (%r11,%r11,1),%rdx
  sub    0xf0(%rsp),%rdx
  mov    %r9,0xa0(%rsp)
  mov    %rsi,%r10
  mov    %rdx,%r14
  mov    %r8,0xa8(%rsp)
  mov    0xd0(%rsp),%rdx
  mov    %rax,0xb0(%rsp)
  mov    %r14,%r9
  mov    0xb8(%rsp),%r8
  mov    0x10(%rsp),%r14
  mov    0xc0(%rsp),%rax
  nopw   0x0(%rax,%rax,1)
L240:
  movsd  (%r10,%r9,8),%xmm0
  add    $0x8,%r10
  mulsd  %xmm2,%xmm0
  addsd  (%rdx),%xmm0
  movsd  %xmm0,(%rdx)
  movsd  -0x8(%r10),%xmm0
  mulsd  %xmm1,%xmm0
  addsd  (%rdx,%r8,8),%xmm0
  movsd  %xmm0,(%rdx,%r8,8)
  add    $0x8,%rdx
  cmp    %rax,%rdx
  jne    L240
  mov    %r14,0x10(%rsp)
  mov    0xa0(%rsp),%r9
  mov    0xa8(%rsp),%r8
  mov    0xb0(%rsp),%rax
  jmp    L485
L173:
  mov    0x80(%rsp),%rdi
  mov    0x70(%rsp),%rsi
  xor    %edx,%edx
  mov    0x130(%rsp),%r8
  lea    (%rdi,%rsi,8),%rsi
  mov    0x100(%rsp),%rdi
  nopw   0x0(%rax,%rax,1)
L761:
  movsd  (%r8,%rdx,8),%xmm0
  mulsd  %xmm1,%xmm0
  addsd  (%r15,%rdx,8),%xmm0
  movsd  %xmm0,(%rsi,%rdx,8)
  movsd  (%rdi,%rdx,8),%xmm0
  mulsd  %xmm2,%xmm0
  movsd  %xmm0,(%rax,%rdx,8)
  add    $0x1,%rdx
  cmp    %rdx,%r13
  jne    L761
  jmp    L663
L348:
  mov    %r15,%rax
  nopl   0x0(%rax)
L404:
  movsd  (%rax),%xmm0
  addsd  (%rax,%rdx,8),%xmm0
  add    $0x8,%rax
  movsd  %xmm0,-0x8(%rax)
  cmp    %r10,%rax
  jne    L404
  jmp    L455
L111:
  mov    (%rsp),%rbx
  mov    %rdi,%rdx
  add    %rax,%rbx
  xchg   %ax,%ax
L8:
  movsd  (%rax),%xmm0
  addsd  (%rax,%r10,8),%xmm0
  movsd  %xmm0,(%rdx,%r10,8)
  movsd  (%rax),%xmm0
  subsd  (%rax,%r10,8),%xmm0
  add    $0x8,%rax
  add    $0x8,%rdx
  movsd  %xmm0,-0x8(%rdx)
  cmp    %rbx,%rax
  jne    L8
  jmp    L581
L289:
  movapd %xmm7,%xmm0
  subsd  D75(%rip),%xmm0
  mov    %rax,%r12
  cvttsd2si %xmm0,%rbp
  btc    $0x3f,%rbp
  jmp    L470
L381:
  mov    0xe8(%rsp),%rbx
  pxor   %xmm0,%xmm0
  mov    %rbx,%rax
  and    $0x1,%ebx
  shr    %rax
  or     %rbx,%rax
  cvtsi2sd %rax,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L482
L385:
  mov    0x8(%rsp),%rdx
  mov    0x18(%rsp),%rcx
  mov    %r14,0x10(%rsp)
  mov    $0x2,%r11d
  lea    0x0(,%rdx,8),%rdi
  mov    %rcx,%rax
  mov    %rdx,%rsi
  imul   %rdi,%rax
  shl    $0x4,%rsi
  lea    (%r14,%rsi,1),%r9
  mov    %rsi,%rbp
  mov    %rcx,%rsi
  imul   %rdx,%rsi
  mov    %rax,%rbx
  lea    (%r15,%rax,1),%r10
  mov    %rcx,%rax
  add    %rax,%rax
  neg    %rax
  imul   %rdx,%rax
  mov    0x30(%rsp),%rdx
  add    %rdx,%rdx
  mov    %rax,%r12
  mov    %rcx,%rax
  mov    0xe8(%rsp),%rcx
  mov    %rdx,(%rsp)
  mov    %rax,%r14
  lea    -0x2(%rcx),%r13
  imul   %rdi,%rcx
  imul   %r13,%rsi
  mov    %rcx,%r8
L12:
  mov    %r10,%rdx
  mov    %r9,%rax
  xor    %ecx,%ecx
  cs nopw 0x0(%rax,%rax,1)
L249:
  movsd  -0x8(%rax),%xmm0
  add    $0x1,%rcx
  addsd  %xmm0,%xmm0
  movsd  %xmm0,(%rdx)
  movsd  (%rax),%xmm0
  add    %r8,%rax
  addsd  %xmm0,%xmm0
  movsd  %xmm0,(%rdx,%rsi,8)
  add    %rdi,%rdx
  cmp    %rcx,%r14
  jne    L249
  add    %rbp,%r9
  add    %rbx,%r10
  add    $0x2,%r11
  add    %r12,%rsi
  cmp    (%rsp),%r11
  jne    L12
  cmpq   $0x2,0x8(%rsp)
  mov    0x10(%rsp),%r14
  jbe    L533
  mov    %r13,%rsi
  mov    %r14,0x48(%rsp)
  lea    0x8(%r15),%r12
  lea    0x18(%r15),%rbp
  mov    0x18(%rsp),%rcx
  mov    0x8(%rsp),%rdi
  mov    %r15,0x50(%rsp)
  movq   $0x2,(%rsp)
  lea    (%rcx,%rcx,1),%rax
  mov    %rcx,%rdx
  lea    -0x3(%rdi),%r11
  mov    %rcx,%r15
  neg    %rax
  imul   %rdi,%rdx
  and    $0xfffffffffffffffe,%r11
  mov    %rax,%rbx
  mov    %rdi,%rax
  imul   %rdi,%rbx
  shl    $0x4,%rax
  mov    %rax,0x38(%rsp)
  imul   %rdx,%rsi
  lea    0x8(%r14,%rax,1),%r13
  mov    %rdi,%r14
  mov    0x30(%rsp),%rax
  mov    %rdx,0x20(%rsp)
  mov    %rbx,0x28(%rsp)
  mov    0xe8(%rsp),%rbx
  add    %rax,%rax
  mov    %rdx,0x10(%rsp)
  imul   %rdi,%rbx
  mov    %rax,0x40(%rsp)
  shl    $0x3,%rbx
L91:
  mov    0x10(%rsp),%r8
  mov    %r13,%r9
  xor    %r10d,%r10d
  nopl   0x0(%rax,%rax,1)
L788:
  lea    (%r11,%r8,1),%rdx
  lea    -0x20(%r9),%rcx
  lea    0x0(%rbp,%rdx,8),%rdi
  lea    (%r12,%r8,8),%rax
  mov    %r9,%rdx
  nopl   0x0(%rax)
L781:
  movsd  (%rdx),%xmm0
  addsd  (%rcx),%xmm0
  add    $0x10,%rdx
  sub    $0x10,%rcx
  movsd  %xmm0,(%rax)
  movsd  -0x10(%rdx),%xmm0
  subsd  0x10(%rcx),%xmm0
  movsd  %xmm0,(%rax,%rsi,8)
  movsd  -0x8(%rdx),%xmm0
  addsd  0x18(%rcx),%xmm0
  movsd  %xmm0,0x8(%rax,%rsi,8)
  movsd  -0x8(%rdx),%xmm0
  subsd  0x18(%rcx),%xmm0
  add    $0x10,%rax
  movsd  %xmm0,-0x8(%rax)
  cmp    %rdi,%rax
  jne    L781
  add    $0x1,%r10
  add    %r14,%r8
  add    %rbx,%r9
  cmp    %r10,%r15
  jne    L788
  addq   $0x2,(%rsp)
  mov    0x20(%rsp),%rdi
  mov    (%rsp),%rax
  add    %rdi,0x10(%rsp)
  add    0x28(%rsp),%rsi
  add    0x38(%rsp),%r13
  cmp    0x40(%rsp),%rax
  jne    L91
  mov    0x48(%rsp),%r14
  mov    0x50(%rsp),%r15
  jmp    L533
L133:
  mov    0x8(%rsp),%rax
  mov    0x18(%rsp),%r11
  mov    $0x1,%edi
  mov    0xc8(%rsp),%r10
  lea    0x0(,%rax,8),%rsi
  mov    %r11,%r9
  imul   %rsi,%r9
  imul   %r9,%r10
  mov    %r9,%r8
L272:
  mov    %r10,%rdx
  mov    %r8,%rax
  xor    %ecx,%ecx
  cs nopw 0x0(%rax,%rax,1)
L515:
  movsd  (%r14,%rax,1),%xmm0
  addsd  (%r14,%rdx,1),%xmm0
  add    $0x1,%rcx
  movsd  %xmm0,(%r15,%rdx,1)
  movsd  (%r14,%rax,1),%xmm0
  subsd  (%r14,%rdx,1),%xmm0
  add    %rsi,%rdx
  movsd  %xmm0,(%r15,%rax,1)
  add    %rsi,%rax
  cmp    %rcx,%r11
  jne    L515
  add    $0x1,%rdi
  add    %r9,%r8
  sub    %r9,%r10
  cmp    %rdi,0x30(%rsp)
  jne    L272
  cmpq   $0x2,0x8(%rsp)
  jbe    L614
  mov    0x18(%rsp),%rsi
  mov    0x8(%rsp),%rdx
  movq   $0x1,0x70(%rsp)
  mov    %rsi,%rdi
  lea    0x0(,%rdx,8),%rbx
  mov    %rsi,%rcx
  imul   %rdx,%rdi
  mov    %rbx,%r12
  imul   %rbx,%rcx
  lea    (%rdi,%rdi,1),%rax
  mov    %rdi,0xc0(%rsp)
  mov    %rax,0xa8(%rsp)
  mov    $0x2,%eax
  sub    0xe8(%rsp),%rax
  imul   %rdi,%rax
  mov    %rcx,0xb0(%rsp)
  lea    -0x3(%rdx),%rcx
  mov    %rcx,0x40(%rsp)
  mov    %rdi,0x90(%rsp)
  mov    %rax,0x78(%rsp)
  lea    0x8(,%rdi,8),%rax
  mov    %rax,0x80(%rsp)
  mov    0xc8(%rsp),%rax
  imul   %rdi,%rax
  lea    0x8(,%rax,8),%rax
  mov    %rax,0x88(%rsp)
  lea    (%rsi,%rsi,1),%rax
  neg    %rax
  imul   %rdx,%rax
  mov    %rax,0xb8(%rsp)
  mov    0x158(%rsp),%rax
  imul   %rdi,%rax
  mov    %rax,0x38(%rsp)
  mov    %rcx,%rax
  and    $0xfffffffffffffffe,%rcx
  shr    $0x2,%rax
  mov    %rcx,0x98(%rsp)
  mov    %rax,%rsi
  lea    0x2(,%rax,4),%rax
  mov    %rax,0x60(%rsp)
  add    $0x2,%rax
  shl    $0x5,%rsi
  mov    %rax,0x58(%rsp)
  lea    0x20(%r14),%rax
  mov    %rax,0x48(%rsp)
  lea    0x20(%r15),%rax
  mov    %rax,0x50(%rsp)
  lea    0x18(%r15),%rax
  mov    %rsi,0x68(%rsp)
  mov    %rax,0xa0(%rsp)
L384:
  mov    0x88(%rsp),%r13
  mov    0x80(%rsp),%rdi
  mov    %r12,%rbp
  movq   $0x0,(%rsp)
  mov    0x90(%rsp),%rbx
  lea    (%r14,%rdi,1),%rax
  lea    (%r15,%r13,1),%rcx
  lea    (%r14,%r13,1),%rdx
  mov    %rbx,%r12
  nopl   0x0(%rax)
L623:
  mov    0x38(%rsp),%rbx
  mov    0x48(%rsp),%r9
  lea    0x20(%rdi),%r8
  lea    (%r15,%rdi,1),%rsi
  add    %r12,%rbx
  lea    (%r9,%rdi,1),%r11
  add    %r13,%r9
  mov    %rbx,0x10(%rsp)
  mov    0x50(%rsp),%rbx
  mov    %r9,0x20(%rsp)
  lea    0x20(%r13),%r9
  lea    (%rbx,%rdi,1),%r10
  add    %r13,%rbx
  cmp    %r8,%r13
  setge  %r8b
  cmp    %r9,%rdi
  setge  %r9b
  or     %r8d,%r9d
  cmpq   $0x3,0x40(%rsp)
  seta   %r8b
  and    %r8d,%r9d
  cmp    %rax,%r10
  setbe  %r8b
  cmp    %r11,%rsi
  setae  0x28(%rsp)
  or     0x28(%rsp),%r8b
  and    %r9d,%r8d
  cmp    %rax,%rbx
  setbe  %r9b
  cmp    %r11,%rcx
  setae  %r11b
  or     %r11d,%r9d
  mov    0x20(%rsp),%r11
  and    %r8d,%r9d
  cmp    %r11,%rsi
  setae  %r8b
  cmp    %rdx,%r10
  setbe  %r10b
  or     %r10d,%r8d
  test   %r8b,%r9b
  je     L231
  cmp    %rcx,%r11
  lea    0x8(%rax),%r9
  setbe  %r10b
  cmp    %rdx,%rbx
  setbe  %r11b
  xor    %r8d,%r8d
  or     %r10b,%r11b
  mov    0x68(%rsp),%r10
  je     L231
  nopl   0x0(%rax)
L624:
  movupd (%rax,%r8,1),%xmm0
  movupd 0x10(%rdx,%r8,1),%xmm1
  movlpd 0x8(%rdx,%r8,1),%xmm1
  movupd (%rdx,%r8,1),%xmm3
  movhpd 0x10(%rax,%r8,1),%xmm0
  movapd %xmm1,%xmm2
  movhpd 0x10(%rdx,%r8,1),%xmm3
  addpd  %xmm0,%xmm2
  subpd  %xmm1,%xmm0
  movupd 0x10(%rax,%r8,1),%xmm1
  movlpd 0x8(%rax,%r8,1),%xmm1
  addpd  %xmm3,%xmm1
  movapd %xmm0,%xmm4
  unpcklpd %xmm1,%xmm4
  unpckhpd %xmm1,%xmm0
  movapd %xmm2,%xmm1
  movups %xmm4,(%rsi,%r8,1)
  movups %xmm0,0x10(%rsi,%r8,1)
  movupd (%r9,%r8,1),%xmm0
  movhpd 0x10(%r9,%r8,1),%xmm0
  subpd  %xmm3,%xmm0
  unpcklpd %xmm0,%xmm1
  unpckhpd %xmm0,%xmm2
  movups %xmm1,(%rcx,%r8,1)
  movups %xmm2,0x10(%rcx,%r8,1)
  add    $0x20,%r8
  cmp    %r10,%r8
  jne    L624
  mov    0x60(%rsp),%r11
  mov    0x10(%rsp),%rsi
  lea    (%r11,%r12,1),%r8
  add    %r11,%rsi
  lea    -0x1(%r8),%r10
  lea    (%r14,%rsi,8),%r11
  lea    (%r14,%r10,8),%rbx
  movsd  (%r11),%xmm0
  lea    -0x1(%rsi),%r9
  addsd  (%rbx),%xmm0
  movsd  %xmm0,(%r15,%r9,8)
  movsd  (%rbx),%xmm0
  subsd  (%r11),%xmm0
  lea    (%r14,%r9,8),%r9
  mov    0x58(%rsp),%r11
  mov    0x8(%rsp),%rbx
  movsd  %xmm0,(%r15,%r10,8)
  lea    (%r14,%r8,8),%r10
  movsd  (%r10),%xmm0
  addsd  (%r9),%xmm0
  movsd  %xmm0,(%r15,%r8,8)
  movsd  (%r10),%xmm0
  subsd  (%r9),%xmm0
  movsd  %xmm0,(%r15,%rsi,8)
  cmp    %rbx,%r11
  jae    L30
  mov    0x10(%rsp),%rsi
  lea    (%r11,%r12,1),%r8
  lea    -0x1(%r8),%r10
  add    %r11,%rsi
  lea    (%r14,%r10,8),%rbx
  lea    (%r14,%rsi,8),%r11
  lea    -0x1(%rsi),%r9
  movsd  (%r11),%xmm0
  addsd  (%rbx),%xmm0
  movsd  %xmm0,(%r15,%r9,8)
  movsd  (%rbx),%xmm0
  subsd  (%r11),%xmm0
  lea    (%r14,%r9,8),%r9
  movsd  %xmm0,(%r15,%r10,8)
  lea    (%r14,%r8,8),%r10
  movsd  (%r9),%xmm0
  addsd  (%r10),%xmm0
  movsd  %xmm0,(%r15,%r8,8)
  movsd  (%r10),%xmm0
  subsd  (%r9),%xmm0
  movsd  %xmm0,(%r15,%rsi,8)
L30:
  addq   $0x1,(%rsp)
  add    %rbp,%rax
  mov    (%rsp),%rbx
  add    %rbp,%rcx
  add    %rbp,%rdx
  add    %rbp,%rdi
  add    %rbp,%r13
  add    0x8(%rsp),%r12
  cmp    %rbx,0x18(%rsp)
  jne    L623
  mov    0xa8(%rsp),%rdi
  addq   $0x1,0x70(%rsp)
  mov    %rbp,%r12
  add    %rdi,0x78(%rsp)
  mov    0x70(%rsp),%rax
  mov    0xb0(%rsp),%rdi
  add    %rdi,0x80(%rsp)
  sub    %rdi,0x88(%rsp)
  mov    0xc0(%rsp),%rdi
  add    %rdi,0x90(%rsp)
  mov    0xb8(%rsp),%rdi
  add    %rdi,0x38(%rsp)
  cmp    %rax,0x30(%rsp)
  jne    L384
L614:
  mov    0x150(%rsp),%rdx
  mov    %r15,%rsi
  mov    %r14,%rdi
  shl    $0x3,%rdx
  call   <memcpy@plt>
  cmpq   $0x1,0xe8(%rsp)
  jbe    L457
  mov    0x18(%rsp),%rbx
  test   %rbx,%rbx
  je     L457
  mov    0x8(%rsp),%rdi
  mov    %rbx,%rax
  mov    0x1a0(%rsp),%r9
  movq   $0x0,0x58(%rsp)
  mov    0x1a0(%rsp),%rsi
  movq   $0x1,0x38(%rsp)
  imul   %rdi,%rax
  lea    0x0(,%rdi,8),%rcx
  imul   %rcx,%rbx
  add    $0x20,%rsi
  mov    %rcx,(%rsp)
  mov    %rsi,0x10(%rsp)
  mov    %rax,0x70(%rsp)
  mov    %rbx,0x68(%rsp)
  mov    %rax,%rbx
  lea    0x8(,%rax,8),%rax
  mov    %rax,0x50(%rsp)
  lea    -0x3(%rdi),%rax
  mov    %rax,0x20(%rsp)
  shr    %rax
  lea    0x1(%rax),%rdi
  mov    %rax,%rdx
  mov    %rbx,0x60(%rsp)
  mov    %rdi,%rax
  mov    %rdi,0x30(%rsp)
  and    $0xfffffffffffffffe,%rdi
  shr    %rax
  mov    %rdi,0x28(%rsp)
  shl    $0x5,%rax
  mov    %rax,%r13
  lea    (%rdi,%rdi,1),%rax
  lea    (%rdx,%rdx,1),%rdi
  lea    0x2(%rax),%rbp
  add    $0x1,%rax
  mov    %rdi,0x78(%rsp)
  mov    %rax,0x80(%rsp)
  mov    %r9,%rax
  add    $0x10,%rax
  mov    %rax,0x88(%rsp)
L595:
  mov    0x50(%rsp),%rax
  mov    0x80(%rsp),%r10
  xor    %r12d,%r12d
  mov    0x1a0(%rsp),%rbx
  lea    (%r15,%rax,1),%rcx
  lea    (%r14,%rax,1),%rdx
  mov    0x58(%rsp),%rax
  add    %rax,%r10
  shl    $0x3,%r10
  lea    -0x8(%rbx,%r10,1),%r11
  add    %rbx,%r10
  lea    (%rbx,%rax,8),%rbx
  add    0x78(%rsp),%rax
  mov    %rbx,0x40(%rsp)
  mov    0x88(%rsp),%rbx
  lea    (%rbx,%rax,8),%rax
  mov    0x60(%rsp),%rbx
  mov    %rax,0x48(%rsp)
  nopl   0x0(%rax)
L293:
  movsd  -0x8(%rcx),%xmm0
  cmpq   $0x2,0x8(%rsp)
  movsd  %xmm0,-0x8(%rdx)
  jbe    L359
  lea    0x20(%rcx),%rsi
  lea    0x20(%rdx),%rax
  cmp    %rsi,%rdx
  setae  %sil
  cmp    %rcx,%rax
  setbe  %dil
  or     %edi,%esi
  cmp    %r9,%rax
  setbe  %al
  cmp    0x10(%rsp),%rdx
  setae  %dil
  or     %edi,%eax
  test   %al,%sil
  je     L57
  cmpq   $0x1,0x20(%rsp)
  jbe    L57
  xor    %eax,%eax
  cs nopw 0x0(%rax,%rax,1)
L837:
  movupd (%r9,%rax,1),%xmm4
  movupd (%rcx,%rax,1),%xmm0
  movupd 0x10(%r9,%rax,1),%xmm2
  movupd 0x10(%rcx,%rax,1),%xmm1
  movlpd 0x8(%r9,%rax,1),%xmm2
  movlpd 0x8(%rcx,%rax,1),%xmm1
  movhpd 0x10(%r9,%rax,1),%xmm4
  movhpd 0x10(%rcx,%rax,1),%xmm0
  movapd %xmm0,%xmm3
  mulpd  %xmm4,%xmm0
  movapd %xmm1,%xmm5
  mulpd  %xmm2,%xmm1
  mulpd  %xmm2,%xmm3
  mulpd  %xmm4,%xmm5
  subpd  %xmm1,%xmm0
  addpd  %xmm5,%xmm3
  movapd %xmm0,%xmm1
  unpcklpd %xmm3,%xmm1
  unpckhpd %xmm3,%xmm0
  movups %xmm1,(%rdx,%rax,1)
  movups %xmm0,0x10(%rdx,%rax,1)
  add    $0x20,%rax
  cmp    %r13,%rax
  jne    L837
  mov    0x30(%rsp),%rdi
  cmp    %rdi,0x28(%rsp)
  je     L359
  lea    0x0(%rbp,%rbx,1),%rax
  lea    -0x1(%rax),%rsi
  lea    (%r15,%rax,8),%rdi
  lea    (%r15,%rsi,8),%r8
  movsd  (%rdi),%xmm1
  mulsd  (%r11),%xmm1
  movsd  (%r8),%xmm0
  mulsd  (%r10),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%r14,%rax,8)
  movsd  (%r8),%xmm0
  movsd  (%rdi),%xmm1
  mulsd  (%r11),%xmm0
  mulsd  (%r10),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%r14,%rsi,8)
L359:
  mov    (%rsp),%rax
  add    $0x1,%r12
  add    0x8(%rsp),%rbx
  add    %rax,%rcx
  add    %rax,%rdx
  cmp    %r12,0x18(%rsp)
  jne    L293
  mov    0x70(%rsp),%rdi
  add    %rdi,0x60(%rsp)
  mov    0x8(%rsp),%rdi
  add    %rdi,0x58(%rsp)
  mov    (%rsp),%rdi
  addq   $0x1,0x38(%rsp)
  add    %rdi,0x10(%rsp)
  mov    0x38(%rsp),%rax
  add    %rdi,%r9
  mov    0x68(%rsp),%rdi
  add    %rdi,0x50(%rsp)
  cmp    %rax,0xe8(%rsp)
  jne    L595
  jmp    L457
  nopl   (%rax)
L57:
  mov    0x40(%rsp),%rax
  mov    0x48(%rsp),%r8
  mov    %rdx,%rdi
  mov    %rcx,%rsi
L844:
  movsd  (%rsi),%xmm0
  add    $0x10,%rax
  add    $0x10,%rsi
  add    $0x10,%rdi
  mulsd  -0x8(%rax),%xmm0
  movsd  -0x8(%rsi),%xmm1
  mulsd  -0x10(%rax),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rdi)
  movsd  -0x10(%rsi),%xmm0
  movsd  -0x8(%rsi),%xmm1
  mulsd  -0x10(%rax),%xmm0
  mulsd  -0x8(%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rdi)
  cmp    %r8,%rax
  jne    L844
  jmp    L359
  nop
L231:
  mov    0x10(%rsp),%rsi
  mov    0x78(%rsp),%r11
  mov    %rdx,%r9
  mov    %rax,%r8
  mov    0xa0(%rsp),%rbx
  add    0x98(%rsp),%rsi
  lea    (%rbx,%rsi,8),%r10
  mov    %rcx,%rsi
  nopw   0x0(%rax,%rax,1)
L868:
  movsd  0x8(%r9),%xmm0
  addsd  (%r8),%xmm0
  add    $0x10,%r9
  add    $0x10,%r8
  movsd  %xmm0,(%rsi)
  movsd  -0x10(%r8),%xmm0
  subsd  -0x8(%r9),%xmm0
  movsd  %xmm0,(%rsi,%r11,8)
  movsd  -0x10(%r9),%xmm0
  addsd  -0x8(%r8),%xmm0
  movsd  %xmm0,0x8(%rsi,%r11,8)
  movsd  -0x8(%r8),%xmm0
  add    $0x10,%rsi
  subsd  -0x10(%r9),%xmm0
  movsd  %xmm0,-0x8(%rsi)
  cmp    %r10,%rsi
  jne    L868
  jmp    L30
L691:
  mov    0x48(%rsp),%rdi
  call   <util_free_@plt>
  cmpq   $0x1,0x8(%rsp)
  jne    L614
  jmp    L457
L549:
  cmpq   $0x1,0x8(%rsp)
  jne    L614
  jmp    L457
```

tool_calls: name: read_data
arguments: tag: D63
type_guessed: f64
name: read_data
arguments: tag: D38
type_guessed: f64
name: read_data
arguments: tag: D75
type_guessed: f32[4]
name: read_data
arguments: tag: D31
type_guessed: f32[4]

tool: D63: 6.283185307179586

tool: D38: 1

tool: {"D75": [0.0,448.0,0.0,1.875]}

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

assistant: ```c
void radbg(size_t ido, size_t ip, size_t l1, size_t idl1, double *cc, double *ch, const double *wa) {
  const size_t cdim = ip;
  static const double twopi = 6.28318530717958647692;
  size_t idij, ipph, i, j, k, l, j2, ic, jc, lc, ik;
  double ai1, ai2, ar1, ar2, arg;
  double *csarr;
  size_t aidx;
  ipph = (ip + 1) / 2;
  for (k = 0; k < l1; k++)
    memcpy(&ch[(0) + ido * ((k) + l1 * (0))], &cc[(0) + ido * ((0) + cdim * (k))], ido * sizeof(double));
  for (j = 1; j < ipph; j++) {
    jc = ip - j;
    j2 = 2 * j;
    for (k = 0; k < l1; k++) {
      ch[(0) + ido * ((k) + l1 * (j))] = 2 * cc[(ido - 1) + ido * ((j2 - 1) + cdim * (k))];
      ch[(0) + ido * ((k) + l1 * (jc))] = 2 * cc[(0) + ido * ((j2) + cdim * (k))];
    }
  }
  if (ido != 1)
    for (j = 1, jc = ip - 1; j < ipph; j++, jc--)
      for (k = 0; k < l1; k++)
        for (i = 2; i < ido; i += 2) {
          ic = ido - i;
          {
            ch[(i - 1) + ido * ((k) + l1 * (j))] = cc[(i - 1) + ido * ((2 * j) + cdim * (k))] + cc[(ic - 1) + ido * ((2 * j - 1) + cdim * (k))];
            ch[(i - 1) + ido * ((k) + l1 * (jc))] = cc[(i - 1) + ido * ((2 * j) + cdim * (k))] - cc[(ic - 1) + ido * ((2 * j - 1) + cdim * (k))];
          }
          {
            ch[(i) + ido * ((k) + l1 * (jc))] = cc[(i) + ido * ((2 * j) + cdim * (k))] + cc[(ic) + ido * ((2 * j - 1) + cdim * (k))];
            ch[(i) + ido * ((k) + l1 * (j))] = cc[(i) + ido * ((2 * j) + cdim * (k))] - cc[(ic) + ido * ((2 * j - 1) + cdim * (k))];
          }
        }
  csarr = ((double *)util_malloc_((2 * ip) * sizeof(double)));
  arg = twopi / ip;
  csarr[0] = 1.;
  csarr[1] = 0.;
  csarr[2] = csarr[2 * ip - 2] = cos(arg);
  csarr[3] = sin(arg);
  csarr[2 * ip - 1] = -csarr[3];
  for (i = 2; i <= ip / 2; ++i) {
    csarr[2 * i] = csarr[2 * ip - 2 * i] = cos(i * arg);
    csarr[2 * i + 1] = sin(i * arg);
    csarr[2 * ip - 2 * i + 1] = -csarr[2 * i + 1];
  }
  for (l = 1; l < ipph; l++) {
    lc = ip - l;
    ar1 = csarr[2 * l];
    ai1 = csarr[2 * l + 1];
    for (ik = 0; ik < idl1; ik++) {
      cc[(ik) + idl1 * (l)] = ch[(ik) + idl1 * (0)] + ar1 * ch[(ik) + idl1 * (1)];
      cc[(ik) + idl1 * (lc)] = ai1 * ch[(ik) + idl1 * (ip - 1)];
    }
    aidx = 2 * l;
    for (j = 2; j < ipph; j++) {
      jc = ip - j;
      aidx += 2 * l;
      if (aidx >= 2 * ip)
        aidx -= 2 * ip;
      ar2 = csarr[aidx];
      ai2 = csarr[aidx + 1];
      for (ik = 0; ik < idl1; ik++) {
        cc[(ik) + idl1 * (l)] += ar2 * ch[(ik) + idl1 * (j)];
        cc[(ik) + idl1 * (lc)] += ai2 * ch[(ik) + idl1 * (jc)];
      }
    }
  }
  do {
    util_free_(csarr);
    (csarr) = NULL;
  } while (0);
  for (j = 1; j < ipph; j++)
    for (ik = 0; ik < idl1; ik++)
      ch[(ik) + idl1 * (0)] += ch[(ik) + idl1 * (j)];
  for (j = 1, jc = ip - 1; j < ipph; j++, jc--)
    for (k = 0; k < l1; k++) {
      ch[(0) + ido * ((k) + l1 * (jc))] = cc[(0) + ido * ((k) + l1 * (j))] + cc[(0) + ido * ((k) + l1 * (jc))];
      ch[(0) + ido * ((k) + l1 * (j))] = cc[(0) + ido * ((k) + l1 * (j))] - cc[(0) + ido * ((k) + l1 * (jc))];
    }
  if (ido == 1)
    return;
  for (j = 1, jc = ip - 1; j < ipph; j++, jc--)
    for (k = 0; k < l1; k++)
      for (i = 2; i < ido; i += 2) {
        {
          ch[(i - 1) + ido * ((k) + l1 * (jc))] = cc[(i - 1) + ido * ((k) + l1 * (j))] + cc[(i) + ido * ((k) + l1 * (jc))];
          ch[(i - 1) + ido * ((k) + l1 * (j))] = cc[(i - 1) + ido * ((k) + l1 * (j))] - cc[(i) + ido * ((k) + l1 * (jc))];
        }
        {
          ch[(i) + ido * ((k) + l1 * (j))] = cc[(i) + ido * ((k) + l1 * (j))] + cc[(i - 1) + ido * ((k) + l1 * (jc))];
          ch[(i) + ido * ((k) + l1 * (jc))] = cc[(i) + ido * ((k) + l1 * (j))] - cc[(i - 1) + ido * ((k) + l1 * (jc))];
        }
      }
  memcpy(cc, ch, idl1 * sizeof(double));
  for (j = 1; j < ip; j++)
    for (k = 0; k < l1; k++) {
      cc[(0) + ido * ((k) + l1 * (j))] = ch[(0) + ido * ((k) + l1 * (j))];
      idij = (j - 1) * ido + 1;
      for (i = 2; i < ido; i += 2, idij += 2) {
        cc[(i) + ido * ((k) + l1 * (j))] = wa[idij - 1] * ch[(i) + ido * ((k) + l1 * (j))] + wa[idij] * ch[(i - 1) + ido * ((k) + l1 * (j))];
        cc[(i - 1) + ido * ((k) + l1 * (j))] = wa[idij - 1] * ch[(i - 1) + ido * ((k) + l1 * (j))] - wa[idij] * ch[(i) + ido * ((k) + l1 * (j))];
      }
    }
}
```