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

```asm
<radbg>:
  endbr64
  push   %r15
  pxor   %xmm0,%xmm0
  mov    %r9,%r15
  push   %r14
  cvtsi2ss %esi,%xmm0
  mov    %esi,%r14d
  push   %r13
  mov    %edx,%r13d
  push   %r12
  mov    %r8,%r12
  push   %rbp
  push   %rbx
  mov    %edi,%ebx
  sub    $0x148,%rsp
  movss  D1(%rip),%xmm1
  mov    %esi,0xbc(%rsp)
  divss  %xmm0,%xmm1
  mov    %edi,0x1c(%rsp)
  mov    %ecx,0x134(%rsp)
  movaps %xmm1,%xmm0
  movss  %xmm1,0x8(%rsp)
  call   <cos@plt>
  movss  0x8(%rsp),%xmm1
  movss  %xmm0,(%rsp)
  movaps %xmm1,%xmm0
  call   <sin@plt>
  lea    -0x1(%rbx),%esi
  lea    0x1(%r14),%edx
  movss  (%rsp),%xmm2
  mov    %esi,%eax
  mov    %esi,0x20(%rsp)
  movaps %xmm0,%xmm3
  shr    $0x1f,%eax
  add    %esi,%eax
  sar    %eax
  mov    %eax,0x138(%rsp)
  mov    %edx,%eax
  shr    $0x1f,%eax
  add    %edx,%eax
  sar    %eax
  cmp    %r13d,%ebx
  mov    %eax,0x28(%rsp)
  jge    L675
  test   %ebx,%ebx
  jle    L150
  test   %r13d,%r13d
  jle    L150
  imul   %ebx,%r14d
  movslq %ebx,%rdi
  mov    %r12,%r10
  mov    %r15,%r9
  shl    $0x2,%rdi
  xor    %r8d,%r8d
  mov    %ebx,%r11d
  movslq %r14d,%rsi
  shl    $0x2,%rsi
L1087:
  mov    %r9,%rcx
  mov    %r10,%rdx
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L1228:
  movss  (%rdx),%xmm0
  add    $0x1,%eax
  add    %rsi,%rdx
  movss  %xmm0,(%rcx)
  add    %rdi,%rcx
  cmp    %eax,%r13d
  jne    L1228
  add    $0x1,%r8d
  add    $0x4,%r10
  add    $0x4,%r9
  cmp    %r8d,%r11d
  jne    L1087
L150:
  cmpl   $0x2,0xbc(%rsp)
  jle    L1574
  test   %r13d,%r13d
  jg     L67
L1027:
  cmpl   $0x1,0x1c(%rsp)
  je     L1589
L1379:
  cmp    %r13d,0x138(%rsp)
  jl     L1189
  cmpl   $0x2,0xbc(%rsp)
  jle    L1585
  test   %r13d,%r13d
  jle    L1589
  cmpl   $0x2,0x1c(%rsp)
  jle    L1589
  mov    0xbc(%rsp),%edx
  movslq 0x1c(%rsp),%rbx
  lea    0x8(%r15),%rbp
  mov    %r13d,0x8(%rsp)
  movl   $0x1,(%rsp)
  lea    -0x1(%rdx),%eax
  mov    %r12,0x30(%rsp)
  mov    %eax,0x108(%rsp)
  imul   %r13d,%eax
  mov    %eax,0x10(%rsp)
  lea    (%rbx,%rbx,1),%eax
  movslq %eax,%rcx
  mov    %edx,%eax
  imul   %ebx,%eax
  mov    %rcx,0x38(%rsp)
  mov    %rcx,0x20(%rsp)
  cltq
  lea    0x0(,%rax,4),%rdx
  lea    -0x3(%rbx),%eax
  shr    %eax
  mov    %rdx,%r12
  lea    (%rax,%rax,1),%r14
L1466:
  mov    0x1c(%rsp),%eax
  mov    0x8(%rsp),%r8d
  xor    %r11d,%r11d
  mov    0x10(%rsp),%r10d
  mov    0x30(%rsp),%rsi
  imul   %eax,%r8d
  mov    0x20(%rsp),%rdx
  imul   %eax,%r10d
  lea    (%rsi,%rdx,4),%r9
  movslq %r8d,%r8
  movslq %r10d,%r10
  nopl   0x0(%rax)
L467:
  lea    (%r14,%r8,1),%rdx
  mov    %r10,%rsi
  lea    -0xc(%r9),%rcx
  lea    0x0(%rbp,%rdx,4),%rdi
  lea    (%r15,%r8,4),%rax
  mov    %r9,%rdx
  sub    %r8,%rsi
  nopw   0x0(%rax,%rax,1)
L1149:
  movss  0x4(%rdx),%xmm0
  addss  (%rcx),%xmm0
  add    $0x8,%rdx
  sub    $0x8,%rcx
  movss  %xmm0,0x4(%rax)
  movss  -0x4(%rdx),%xmm0
  subss  0x8(%rcx),%xmm0
  movss  %xmm0,0x4(%rax,%rsi,4)
  movss  (%rdx),%xmm0
  subss  0xc(%rcx),%xmm0
  movss  %xmm0,0x8(%rax)
  movss  (%rdx),%xmm0
  addss  0xc(%rcx),%xmm0
  movss  %xmm0,0x8(%rax,%rsi,4)
  add    $0x8,%rax
  cmp    %rdi,%rax
  jne    L1149
  add    $0x1,%r11d
  add    %rbx,%r8
  add    %r12,%r9
  add    %rbx,%r10
  cmp    %r11d,%r13d
  jne    L467
  addl   $0x1,(%rsp)
  mov    0x38(%rsp),%rdx
  add    %r13d,0x8(%rsp)
  mov    (%rsp),%eax
  sub    %r13d,0x10(%rsp)
  add    %rdx,0x20(%rsp)
  cmp    %eax,0x28(%rsp)
  jg     L1466
  mov    0x30(%rsp),%r12
  jmp    L712
L675:
  test   %r13d,%r13d
  jle    L76
  mov    0x1c(%rsp),%ebx
  test   %ebx,%ebx
  jle    L317
  mov    0xbc(%rsp),%r14d
  movslq %ebx,%rax
  mov    %ebx,%ecx
  mov    %ebx,%r8d
  shl    $0x2,%rax
  shr    $0x2,%ecx
  and    $0xfffffffc,%r8d
  mov    %r13d,(%rsp)
  imul   %ebx,%r14d
  mov    %rax,0x8(%rsp)
  sub    $0x1,%ecx
  lea    0x2(%r8),%esi
  add    $0x1,%rcx
  mov    %ebx,%ebx
  mov    %esi,0x30(%rsp)
  mov    %r8d,%r11d
  lea    0x1(%r8),%ebp
  mov    %r15,%rdx
  shl    $0x4,%rcx
  xor    %edi,%edi
  movslq %r14d,%rax
  xor    %esi,%esi
  xor    %r10d,%r10d
  mov    %rbx,%r8
  shl    $0x2,%rax
  mov    %rax,0x10(%rsp)
  mov    %r12,%rax
L191:
  lea    0x4(%rax),%r13
  mov    %rdx,%r9
  sub    %r13,%r9
  cmp    $0x8,%r9
  jbe    L706
  xor    %r9d,%r9d
  cmpl   $0x2,0x20(%rsp)
  jbe    L706
  nopl   0x0(%rax)
L1500:
  movups (%rax,%r9,1),%xmm5
  movups %xmm5,(%rdx,%r9,1)
  add    $0x10,%r9
  cmp    %rcx,%r9
  jne    L1500
  cmp    %r8d,%r11d
  je     L586
  lea    (%rsi,%r11,1),%r9d
  movslq %r9d,%r9
  movss  (%r12,%r9,4),%xmm0
  lea    (%rdi,%r11,1),%r9d
  movslq %r9d,%r9
  movss  %xmm0,(%r15,%r9,4)
  cmp    %ebp,%r8d
  jle    L586
  lea    (%rsi,%rbp,1),%r9d
  mov    0x30(%rsp),%r13d
  movslq %r9d,%r9
  movss  (%r12,%r9,4),%xmm0
  lea    (%rdi,%rbp,1),%r9d
  movslq %r9d,%r9
  movss  %xmm0,(%r15,%r9,4)
  cmp    %r13d,%r8d
  jle    L586
  lea    (%rsi,%r13,1),%r9d
  movslq %r9d,%r9
  movss  (%r12,%r9,4),%xmm0
  lea    (%rdi,%r13,1),%r9d
  movslq %r9d,%r9
  movss  %xmm0,(%r15,%r9,4)
L586:
  add    $0x1,%r10d
  add    0x8(%rsp),%rdx
  add    %r14d,%esi
  add    %r8d,%edi
  add    0x10(%rsp),%rax
  cmp    %r10d,(%rsp)
  jne    L191
  mov    (%rsp),%r13d
L317:
  cmpl   $0x2,0xbc(%rsp)
  jle    L1574
L67:
  cmpl   $0x1,0x1c(%rsp)
  jne    L585
  mov    0xbc(%rsp),%r10d
  mov    %r13d,%eax
  movslq %r13d,%rdx
  movl   $0x1,(%rsp)
  neg    %eax
  lea    0x0(,%rdx,4),%rdi
  mov    %r13d,0x68(%rsp)
  lea    -0x1(%r10),%esi
  cltq
  lea    (%r15,%rdi,1),%r11
  mov    %rdi,0xa0(%rsp)
  mov    %esi,0x108(%rsp)
  imul   %r13d,%esi
  lea    0x0(,%rax,4),%rbx
  sub    %rdx,%rax
  mov    %rax,0xa8(%rsp)
  movslq %r10d,%rax
  lea    0x8(%r12),%rdi
  mov    %rdi,0x8(%rsp)
  movslq %esi,%rcx
  mov    %esi,0x60(%rsp)
  mov    %r13d,%esi
  lea    (%r15,%rcx,4),%rbp
  sub    %rdx,%rcx
  lea    -0x1(%rsi),%rdx
  mov    %rbx,0x98(%rsp)
  imul   %rax,%rdx
  mov    %rcx,%rdi
  xor    %ecx,%ecx
  mov    %r15,0xe0(%rsp)
  lea    0x0(,%rsi,4),%rbx
  mov    %rcx,%r8
  mov    %r13d,%esi
  mov    %r13d,%r15d
  mov    %rbx,0xe8(%rsp)
  mov    %rax,%rbx
  shl    $0x2,%rdx
  test   %r10d,%r10d
  cmovs  %rdx,%rcx
  cmovns %rdx,%r8
  and    $0xfffffffc,%esi
  shl    $0x4,%rbx
  lea    0x0(,%rax,4),%rdx
  mov    %esi,0x20(%rsp)
  lea    (%rax,%rax,2),%rax
  mov    %rcx,%r9
  mov    %rcx,0x90(%rsp)
  mov    %r13d,%ecx
  lea    0x0(,%rax,4),%r14
  mov    %r10d,%eax
  shr    $0x2,%ecx
  mov    %r8,0x88(%rsp)
  imul   %esi,%r10d
  sub    $0x1,%ecx
  mov    %r10d,0x78(%rsp)
  lea    0x1(%rsi),%r10d
  add    $0x2,%esi
  mov    %r10d,0x40(%rsp)
  mov    0x40(%rsp),%r10d
  mov    %esi,0x70(%rsp)
  imul   %eax,%r10d
  mov    %r10d,0x80(%rsp)
  mov    %eax,%r10d
  mov    0xe8(%rsp),%rax
  imul   %esi,%r10d
  lea    -0x1(%r13),%esi
  sub    $0x4,%rax
  mov    %esi,0xb8(%rsp)
  lea    -0x8(%r8),%rsi
  mov    %rax,0xc8(%rsp)
  lea    0x1(%rcx),%rax
  mov    %rsi,0xb0(%rsp)
  shl    $0x4,%rax
  lea    -0x8(%r9),%rsi
  mov    0x8(%rsp),%r9
  mov    %rsi,0xc0(%rsp)
  mov    %rax,0xd8(%rsp)
  mov    %r10d,0xd0(%rsp)
  mov    $0x4,%r10d
  mov    %r10,%r13
  mov    %rdi,%r10
L363:
  mov    (%rsp),%eax
  mov    0xc8(%rsp),%rcx
  mov    %r13,0x58(%rsp)
  add    $0x8,%r13
  mov    0xb0(%rsp),%rsi
  add    %eax,%eax
  lea    (%rcx,%r11,1),%r8
  mov    %eax,0x38(%rsp)
  sub    $0x1,%eax
  lea    (%rsi,%r13,1),%rdi
  mov    0xc0(%rsp),%rsi
  mov    %eax,0x30(%rsp)
  lea    (%rcx,%rbp,1),%rax
  add    %r12,%rdi
  mov    0x88(%rsp),%rcx
  mov    %rax,0x8(%rsp)
  mov    %r9,%rax
  add    %r13,%rsi
  add    %r9,%rcx
  sub    %r12,%rax
  add    %r12,%rsi
  mov    %r8,0x48(%rsp)
  mov    %rcx,0x10(%rsp)
  add    0x90(%rsp),%rax
  lea    -0x4(,%r10,4),%rcx
  add    %r12,%rax
  cmp    $0x8,%rcx
  seta   %r8b
  cmpl   $0x1b,0xb8(%rsp)
  seta   %cl
  and    %ecx,%r8d
  cmp    %rbp,%rdi
  setb   %cl
  cmp    0x8(%rsp),%rsi
  seta   0x50(%rsp)
  or     0x50(%rsp),%cl
  and    %r8d,%ecx
  mov    0x48(%rsp),%r8
  cmp    %r11,%rdi
  setb   %dil
  cmp    %r8,%rsi
  seta   %sil
  or     %esi,%edi
  and    %ecx,%edi
  cmp    0x10(%rsp),%rbp
  seta   %cl
  cmp    0x8(%rsp),%rax
  seta   %sil
  or     %esi,%ecx
  test   %cl,%dil
  je     L1101
  cmp    %r8,%rax
  seta   %al
  cmp    0x10(%rsp),%r11
  seta   %cl
  or     %al,%cl
  je     L1101
  mov    0xd8(%rsp),%rsi
  mov    0x58(%rsp),%rax
  mov    %rbp,%rdi
  mov    %r9,%rcx
  lea    (%rsi,%r11,1),%r8
  add    %r12,%rax
  mov    %r11,%rsi
  nopl   (%rax)
L1514:
  movss  (%rax,%r14,1),%xmm0
  movss  (%rax,%rdx,2),%xmm1
  add    $0x10,%rsi
  add    $0x10,%rdi
  movss  (%rax,%rdx,1),%xmm4
  unpcklps %xmm0,%xmm1
  movss  (%rax),%xmm0
  add    %rbx,%rax
  unpcklps %xmm4,%xmm0
  movlhps %xmm1,%xmm0
  addps  %xmm0,%xmm0
  movups %xmm0,-0x10(%rsi)
  movss  (%rcx,%r14,1),%xmm0
  movss  (%rcx,%rdx,2),%xmm1
  movss  (%rcx,%rdx,1),%xmm4
  unpcklps %xmm0,%xmm1
  movss  (%rcx),%xmm0
  add    %rbx,%rcx
  unpcklps %xmm4,%xmm0
  movlhps %xmm1,%xmm0
  addps  %xmm0,%xmm0
  movups %xmm0,-0x10(%rdi)
  cmp    %r8,%rsi
  jne    L1514
  mov    0x20(%rsp),%esi
  cmp    %r15d,%esi
  je     L455
  mov    0x78(%rsp),%ecx
  add    0x30(%rsp),%ecx
  movslq %ecx,%rcx
  mov    0x68(%rsp),%edi
  mov    0x60(%rsp),%r8d
  movss  (%r12,%rcx,4),%xmm0
  mov    0x78(%rsp),%ecx
  mov    %edi,%eax
  add    0x38(%rsp),%ecx
  addss  %xmm0,%xmm0
  add    %esi,%eax
  mov    0xe0(%rsp),%rsi
  movslq %ecx,%rcx
  cltq
  movss  %xmm0,(%rsi,%rax,4)
  movss  (%r12,%rcx,4),%xmm0
  mov    0x20(%rsp),%eax
  mov    0x40(%rsp),%ecx
  addss  %xmm0,%xmm0
  add    %r8d,%eax
  cltq
  movss  %xmm0,(%rsi,%rax,4)
  cmp    %ecx,%r15d
  jle    L455
  mov    %edi,%eax
  add    %ecx,%eax
  mov    0x80(%rsp),%ecx
  add    0x30(%rsp),%ecx
  movslq %ecx,%rcx
  cltq
  movss  (%r12,%rcx,4),%xmm0
  mov    0x80(%rsp),%ecx
  add    0x38(%rsp),%ecx
  addss  %xmm0,%xmm0
  movslq %ecx,%rcx
  movss  %xmm0,(%rsi,%rax,4)
  movss  (%r12,%rcx,4),%xmm0
  mov    0x40(%rsp),%eax
  addss  %xmm0,%xmm0
  add    %r8d,%eax
  cltq
  movss  %xmm0,(%rsi,%rax,4)
  mov    0x70(%rsp),%eax
  cmp    %r15d,%eax
  jge    L455
  mov    %eax,%ecx
  add    %edi,%ecx
  mov    0x30(%rsp),%edi
  add    0xd0(%rsp),%edi
  movslq %edi,%rax
  movslq %ecx,%rcx
  movss  (%r12,%rax,4),%xmm0
  mov    0x70(%rsp),%eax
  addss  %xmm0,%xmm0
  add    %r8d,%eax
  cltq
  movss  %xmm0,(%rsi,%rcx,4)
  mov    0x38(%rsp),%ecx
  add    0xd0(%rsp),%ecx
  movslq %ecx,%rcx
  movss  (%r12,%rcx,4),%xmm0
  addss  %xmm0,%xmm0
  movss  %xmm0,(%rsi,%rax,4)
L455:
  addl   $0x1,(%rsp)
  add    $0x8,%r9
  mov    (%rsp),%eax
  add    %r15d,0x68(%rsp)
  add    0x98(%rsp),%rbp
  sub    %r15d,0x60(%rsp)
  add    0xa0(%rsp),%r11
  add    0xa8(%rsp),%r10
  cmp    %eax,0x28(%rsp)
  jg     L363
  mov    %r15d,%r13d
  mov    0xe0(%rsp),%r15
L712:
  movslq 0x134(%rsp),%rcx
  mov    0x108(%rsp),%r11d
  pxor   %xmm5,%xmm5
  movl   $0x1,0xb0(%rsp)
  mov    %r13d,0x13c(%rsp)
  movss  D8(%rip),%xmm6
  imul   %ecx,%r11d
  mov    %rcx,%rsi
  mov    %rcx,0x38(%rsp)
  and    $0xfffffffc,%esi
  mov    %ecx,0x98(%rsp)
  mov    %esi,0x88(%rsp)
  mov    %ecx,%esi
  movslq %r11d,%rax
  mov    %ecx,0xd0(%rsp)
  mov    %r11d,%r14d
  lea    0x0(,%rax,4),%rdx
  mov    %rax,0xe0(%rsp)
  lea    (%r15,%rdx,1),%rax
  mov    %r11d,0xb8(%rsp)
  mov    %rax,0xd8(%rsp)
  lea    0x10(%r15,%rdx,1),%rax
  mov    %rax,0xe8(%rsp)
  lea    0x4(,%rcx,4),%rax
  lea    (%r15,%rax,1),%rbx
  lea    -0x4(%r15,%rax,1),%rax
  mov    %r11d,0xa0(%rsp)
  mov    %rax,0x100(%rsp)
  mov    %ecx,%eax
  shr    $0x2,%eax
  mov    %rbx,0xf0(%rsp)
  lea    0x4(%r15,%rdx,1),%rbx
  sub    $0x1,%eax
  mov    %rbx,0xf8(%rsp)
  lea    -0x1(%rcx),%ebx
  add    $0x1,%rax
  mov    %ebx,0x50(%rsp)
  shl    $0x4,%rax
  mov    %rax,%rbx
  mov    %ecx,%eax
  neg    %eax
  mov    %rbx,0x90(%rsp)
  movslq %eax,%rdx
  lea    0x0(,%rdx,4),%rax
  mov    %rdx,0x78(%rsp)
  mov    %rax,0x70(%rsp)
  mov    0xbc(%rsp),%eax
  sub    $0x2,%eax
  imul   %ecx,%eax
  mov    %eax,0x10c(%rsp)
  cltq
  lea    (%r15,%rax,4),%rdi
  mov    %rax,0x118(%rsp)
  mov    %rdi,0x110(%rsp)
  lea    (%rcx,%rcx,1),%edi
  sub    %rdx,%rcx
  mov    %edi,0x130(%rsp)
  movslq %edi,%rdi
  mov    %rdi,0x128(%rsp)
  sub    %rax,%rdi
  lea    0x4(%r15),%rax
  mov    %rax,0x58(%rsp)
  mov    %esi,%eax
  and    $0x3,%esi
  mov    %rdi,0x120(%rsp)
  mov    %eax,%r11d
  mov    %rcx,0x80(%rsp)
  mov    %esi,0xa8(%rsp)
  nopl   0x0(%rax)
L1475:
  movaps %xmm6,%xmm0
  movaps %xmm3,%xmm1
  movaps %xmm2,%xmm6
  mulss  %xmm0,%xmm6
  mulss  %xmm5,%xmm1
  mulss  %xmm3,%xmm0
  mulss  %xmm2,%xmm5
  subss  %xmm1,%xmm6
  addss  %xmm0,%xmm5
  test   %r11d,%r11d
  jle    L1322
  movslq 0x98(%rsp),%r9
  mov    0xd8(%rsp),%r13
  mov    0xf0(%rsp),%rbp
  mov    0x58(%rsp),%rbx
  lea    0x10(,%r9,4),%rdi
  lea    (%r12,%r9,4),%rdx
  movslq 0xa0(%rsp),%r10
  lea    (%r12,%rdi,1),%rax
  cmp    %rax,%r13
  lea    0x0(,%r10,4),%rsi
  setae  %r8b
  cmp    %rdx,0xe8(%rsp)
  lea    (%r12,%rsi,1),%rcx
  setbe  %al
  or     %eax,%r8d
  mov    %rdx,%rax
  sub    %rbp,%rax
  cmp    $0x8,%rax
  seta   %al
  and    %r8d,%eax
  cmp    $0x1,%r11d
  setne  %r8b
  and    %r8d,%eax
  mov    %rdx,%r8
  sub    %rbx,%r8
  cmp    $0x8,%r8
  seta   %r8b
  and    %r8d,%eax
  mov    %rcx,%r8
  sub    0xf8(%rsp),%r8
  cmp    $0x8,%r8
  seta   %r8b
  and    %r8d,%eax
  mov    %rcx,%r8
  sub    %rbp,%r8
  cmp    $0x8,%r8
  seta   %r8b
  and    %r8d,%eax
  mov    %rcx,%r8
  sub    %rbx,%r8
  cmp    $0x8,%r8
  seta   %r8b
  test   %r8b,%al
  je     L486
  sub    $0xc,%rdi
  sub    %rdi,%rsi
  cmp    $0x8,%rsi
  jbe    L486
  cmpl   $0x2,0x50(%rsp)
  jbe    L1414
  mov    0x100(%rsp),%rdi
  movaps %xmm6,%xmm4
  movaps %xmm5,%xmm1
  xor    %eax,%eax
  mov    0x90(%rsp),%r8
  mov    %r13,%rsi
  shufps $0x0,%xmm4,%xmm4
  shufps $0x0,%xmm1,%xmm1
  nopl   0x0(%rax)
L1567:
  movups (%rdi,%rax,1),%xmm0
  movups (%r15,%rax,1),%xmm7
  mulps  %xmm4,%xmm0
  addps  %xmm7,%xmm0
  movups %xmm0,(%rdx,%rax,1)
  movups (%rsi,%rax,1),%xmm0
  mulps  %xmm1,%xmm0
  movups %xmm0,(%rcx,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L1567
  mov    0x88(%rsp),%eax
  cmp    %eax,%r11d
  je     L337
  mov    0xa8(%rsp),%ebx
  mov    %eax,%edx
  mov    %ebx,%ecx
  cmp    $0x1,%ebx
  je     L136
L625:
  mov    0x38(%rsp),%rbx
  movaps %xmm6,%xmm1
  add    %rdx,%r9
  add    %rdx,%r10
  shufps $0xe0,%xmm1,%xmm1
  lea    (%rbx,%rdx,1),%rsi
  mov    0xe0(%rsp),%rbx
  movq   (%r15,%rsi,4),%xmm0
  lea    (%rbx,%rdx,1),%rsi
  mulps  %xmm1,%xmm0
  movq   (%r15,%rdx,4),%xmm1
  mov    %ecx,%edx
  and    $0xfffffffe,%edx
  add    %edx,%eax
  addps  %xmm1,%xmm0
  movaps %xmm5,%xmm1
  shufps $0xe0,%xmm1,%xmm1
  movlps %xmm0,(%r12,%r9,4)
  movq   (%r15,%rsi,4),%xmm0
  mulps  %xmm1,%xmm0
  movlps %xmm0,(%r12,%r10,4)
  cmp    %ecx,%edx
  je     L337
L136:
  lea    (%r11,%rax,1),%ecx
  mov    0x98(%rsp),%ebx
  movslq %ecx,%rcx
  movss  (%r15,%rcx,4),%xmm0
  movslq %eax,%rcx
  lea    (%rbx,%rax,1),%edx
  mov    0xa0(%rsp),%ebx
  movslq %edx,%rdx
  mulss  %xmm6,%xmm0
  addss  (%r15,%rcx,4),%xmm0
  movss  %xmm0,(%r12,%rdx,4)
  lea    (%rbx,%rax,1),%edx
  add    0xb8(%rsp),%eax
  cltq
  movslq %edx,%rdx
  movss  (%r15,%rax,4),%xmm0
  mulss  %xmm5,%xmm0
  movss  %xmm0,(%r12,%rdx,4)
L337:
  cmpl   $0x4,0xbc(%rsp)
  jle    L1322
  movslq %r14d,%rbp
  movl   $0x2,(%rsp)
  movaps %xmm6,%xmm4
  movaps %xmm5,%xmm1
  movslq 0xd0(%rsp),%rbx
  lea    0x0(,%rbp,4),%rdx
  mov    %rbp,0x48(%rsp)
  lea    0x10(%rdx),%rdi
  mov    %r11d,0x8(%rsp)
  mov    0x128(%rsp),%r10
  lea    0x0(,%rbx,4),%rax
  mov    %rbx,0x40(%rsp)
  mov    %rbx,%r13
  mov    0x10c(%rsp),%r9d
  lea    0x10(%rax),%rsi
  cmp    %rax,%rdi
  lea    (%r12,%rax,1),%rcx
  mov    0x130(%rsp),%r8d
  setle  %dil
  cmp    %rdx,%rsi
  setle  %al
  sub    %rbx,%rbp
  add    %r12,%rdx
  or     %eax,%edi
  lea    (%r12,%rsi,1),%rax
  mov    %rbp,0xc8(%rsp)
  mov    0x110(%rsp),%rsi
  mov    %rax,0x68(%rsp)
  mov    0x50(%rsp),%eax
  mov    %dil,0x60(%rsp)
  add    %rbx,%rax
  lea    0x4(%r12,%rax,4),%rax
  mov    %rax,0xc0(%rsp)
  mov    0x118(%rsp),%rax
  mov    %rax,0x10(%rsp)
  mov    0x120(%rsp),%rax
  mov    %rax,0x30(%rsp)
  nopl   0x0(%rax,%rax,1)
L109:
  lea    0x10(%rsi),%rdi
  mov    0x58(%rsp),%rbx
  lea    0x4(%rsi),%rbp
  movaps %xmm4,%xmm0
  cmp    %rdi,%rcx
  lea    0x0(,%r10,4),%rax
  movaps %xmm6,%xmm4
  lea    (%rbx,%rax,1),%r11
  mulss  %xmm0,%xmm4
  movaps %xmm5,%xmm7
  setae  %dil
  mulss  %xmm1,%xmm7
  cmp    %rsi,0x68(%rsp)
  mulss  %xmm6,%xmm1
  setbe  %bl
  mulss  %xmm5,%xmm0
  or     %ebx,%edi
  cmpl   $0x1,0x8(%rsp)
  setne  %bl
  and    0x60(%rsp),%bl
  and    %ebx,%edi
  mov    %rdx,%rbx
  sub    %rbp,%rbx
  subss  %xmm7,%xmm4
  cmp    $0x8,%rbx
  seta   %bl
  addss  %xmm0,%xmm1
  and    %ebx,%edi
  mov    %rcx,%rbx
  sub    %r11,%rbx
  cmp    $0x8,%rbx
  seta   %bl
  test   %bl,%dil
  je     L548
  mov    %rdx,%rdi
  sub    %r11,%rdi
  cmp    $0x8,%rdi
  jbe    L548
  cmpl   $0x2,0x50(%rsp)
  jbe    L56
  mov    0x90(%rsp),%r11
  movaps %xmm1,%xmm7
  add    %r15,%rax
  xor    %edi,%edi
  movaps %xmm4,%xmm8
  shufps $0x0,%xmm7,%xmm7
  shufps $0x0,%xmm8,%xmm8
  cs nopw 0x0(%rax,%rax,1)
L739:
  movups (%rax,%rdi,1),%xmm0
  movups (%rcx,%rdi,1),%xmm9
  mulps  %xmm8,%xmm0
  addps  %xmm9,%xmm0
  movups %xmm0,(%rcx,%rdi,1)
  movups (%rsi,%rdi,1),%xmm0
  movups (%rdx,%rdi,1),%xmm10
  mulps  %xmm7,%xmm0
  addps  %xmm10,%xmm0
  movups %xmm0,(%rdx,%rdi,1)
  add    $0x10,%rdi
  cmp    %r11,%rdi
  jne    L739
  mov    0x88(%rsp),%eax
  cmp    %eax,0x8(%rsp)
  je     L575
  mov    0xa8(%rsp),%ebx
  mov    %ebx,%ebp
  cmp    $0x1,%ebx
  je     L943
  mov    %eax,0x20(%rsp)
  mov    %eax,%edi
L465:
  mov    0x40(%rsp),%rax
  movaps %xmm4,%xmm7
  shufps $0xe0,%xmm7,%xmm7
  lea    (%rax,%rdi,1),%r11
  mov    0x48(%rsp),%rax
  lea    (%r12,%r11,4),%rbx
  lea    (%rax,%rdi,1),%r11
  lea    (%rdi,%r10,1),%rax
  add    0x10(%rsp),%rdi
  movq   (%r15,%rax,4),%xmm0
  lea    (%r12,%r11,4),%r11
  mov    0x20(%rsp),%eax
  mulps  %xmm7,%xmm0
  movq   (%rbx),%xmm7
  addps  %xmm7,%xmm0
  movaps %xmm1,%xmm7
  shufps $0xe0,%xmm7,%xmm7
  movlps %xmm0,(%rbx)
  movq   (%r15,%rdi,4),%xmm0
  mov    %ebp,%edi
  and    $0xfffffffe,%edi
  mulps  %xmm7,%xmm0
  movq   (%r11),%xmm7
  add    %edi,%eax
  addps  %xmm7,%xmm0
  movlps %xmm0,(%r11)
  cmp    %ebp,%edi
  je     L575
L943:
  lea    (%rax,%r13,1),%edi
  movslq %edi,%rdi
  lea    (%r12,%rdi,4),%r11
  lea    (%r8,%rax,1),%edi
  movslq %edi,%rdi
  movss  (%r15,%rdi,4),%xmm0
  lea    (%rax,%r14,1),%edi
  add    %r9d,%eax
  cltq
  movslq %edi,%rdi
  mulss  %xmm4,%xmm0
  lea    (%r12,%rdi,4),%rdi
  addss  (%r11),%xmm0
  movss  %xmm0,(%r11)
  movss  (%r15,%rax,4),%xmm0
  mulss  %xmm1,%xmm0
  addss  (%rdi),%xmm0
  movss  %xmm0,(%rdi)
L575:
  mov    0x8(%rsp),%edi
  addl   $0x1,(%rsp)
  mov    0x80(%rsp),%r11
  mov    (%rsp),%eax
  add    %edi,%r8d
  sub    %edi,%r9d
  add    %r11,0x30(%rsp)
  mov    0x78(%rsp),%rdi
  add    0x70(%rsp),%rsi
  add    %rdi,0x10(%rsp)
  add    0x38(%rsp),%r10
  cmp    %eax,0x28(%rsp)
  jg     L109
  mov    0x8(%rsp),%r11d
L1322:
  addl   $0x1,0xb0(%rsp)
  sub    %r11d,%r14d
  mov    0xb0(%rsp),%eax
  add    %r11d,0xd0(%rsp)
  add    %r11d,0x98(%rsp)
  sub    %r11d,0xa0(%rsp)
  cmp    %eax,0x28(%rsp)
  jg     L1475
  mov    0x134(%rsp),%ecx
  mov    0x90(%rsp),%rbx
  mov    0x13c(%rsp),%r13d
  test   %ecx,%ecx
  jle    L1018
  mov    0x50(%rsp),%eax
  mov    %ecx,%esi
  mov    0x38(%rsp),%rdi
  mov    %r13d,0x8(%rsp)
  mov    0x88(%rsp),%r10d
  mov    0x100(%rsp),%rdx
  mov    %r12,0x10(%rsp)
  mov    %esi,%r12d
  lea    0x4(%r15,%rax,4),%r11
  mov    $0x4,%eax
  lea    0x0(,%rdi,4),%r14
  mov    $0x1,%r9d
  sub    %r10d,%ecx
  sub    %r15,%rax
  mov    %r10d,%r13d
  mov    %ecx,(%rsp)
  mov    %rax,%rbp
  nopw   0x0(%rax,%rax,1)
L917:
  lea    0x0(%rbp,%rdx,1),%rax
  neg    %rax
  cmp    $0x8,%rax
  jbe    L75
  cmp    $0x1,%r12d
  je     L75
  cmpl   $0x2,0x50(%rsp)
  jbe    L641
  xor    %eax,%eax
  nopl   0x0(%rax)
L500:
  movups (%r15,%rax,1),%xmm0
  movups (%rdx,%rax,1),%xmm3
  addps  %xmm3,%xmm0
  movups %xmm0,(%r15,%rax,1)
  add    $0x10,%rax
  cmp    %rbx,%rax
  jne    L500
  cmp    %r13d,%r12d
  je     L218
  mov    (%rsp),%eax
  mov    %r13d,%ecx
  cmp    $0x1,%eax
  mov    %eax,%r10d
  mov    %r13d,%eax
  je     L769
L300:
  lea    (%r15,%rcx,4),%r8
  add    %rdi,%rcx
  movq   (%r15,%rcx,4),%xmm0
  movq   (%r8),%xmm1
  mov    %r10d,%ecx
  and    $0xfffffffe,%ecx
  addps  %xmm1,%xmm0
  add    %ecx,%eax
  movlps %xmm0,(%r8)
  cmp    %r10d,%ecx
  je     L218
L769:
  movslq %eax,%rcx
  add    %esi,%eax
  lea    (%r15,%rcx,4),%rcx
  cltq
  movss  (%rcx),%xmm0
  addss  (%r15,%rax,4),%xmm0
  movss  %xmm0,(%rcx)
L218:
  add    $0x1,%r9d
  add    %r12d,%esi
  add    0x38(%rsp),%rdi
  add    %r14,%rdx
  cmp    %r9d,0x28(%rsp)
  jg     L917
  mov    0x8(%rsp),%r13d
  mov    0x10(%rsp),%r12
L1018:
  test   %r13d,%r13d
  jle    L495
  cmpl   $0x1,0x1c(%rsp)
  jne    L597
  mov    0x108(%rsp),%r10d
  mov    %r13d,%eax
  mov    %r13d,%ebp
  neg    %eax
  imul   %r13d,%r10d
  cltq
  lea    0x0(,%rax,4),%rbx
  mov    %rax,0x70(%rsp)
  mov    %rbx,0x48(%rsp)
  movslq %r10d,%r14
  lea    0x4(%r12,%r14,4),%rbx
  lea    0x0(,%r14,4),%rcx
  mov    %r14,(%rsp)
  mov    %rbx,0x30(%rsp)
  movslq %r13d,%rbx
  lea    (%r15,%rcx,1),%rdi
  add    %r12,%rcx
  lea    0x0(,%rbx,4),%rdx
  mov    %rbx,0x68(%rsp)
  lea    0x10(%r15,%rdx,1),%r8
  mov    %rdx,0x60(%rsp)
  lea    (%r15,%rdx,1),%rsi
  add    %r12,%rdx
  mov    %r8,0x20(%rsp)
  mov    %rax,%r8
  sub    %rbx,%rax
  shl    $0x2,%rax
  mov    %rax,0x50(%rsp)
  mov    %r14,%rax
  sub    %rbx,%rax
  lea    -0x4(,%rax,4),%rax
  mov    %rax,0x10(%rsp)
  mov    %rbx,%rax
  sub    %r8,%rbx
  mov    %rax,%r9
  mov    %rbx,0x58(%rsp)
  mov    %rax,%rbx
  lea    -0x1(%r13),%eax
  mov    %eax,0x80(%rsp)
  mov    %r13d,%eax
  sub    %r14,%r9
  shr    $0x2,%eax
  mov    %rbx,0x8(%rsp)
  sub    $0x1,%eax
  add    $0x1,%rax
  shl    $0x4,%rax
  mov    %rax,%r14
  mov    %r13d,%eax
  and    $0xfffffffc,%eax
  mov    %eax,0x78(%rsp)
  mov    %r13d,%eax
  shl    $0x2,%rax
  mov    %rax,0x90(%rsp)
  mov    %r13d,%eax
  mov    %r14,%r13
  mov    %ebp,%r14d
  and    $0x3,%eax
  mov    %eax,0x88(%rsp)
L259:
  cmpq   $0x8,0x10(%rsp)
  mov    0x30(%rsp),%rbx
  seta   %r8b
  cmp    $0x1,%r14d
  setne  %al
  and    %eax,%r8d
  mov    %rdi,%rax
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  and    %eax,%r8d
  lea    0xc(%rbx),%rax
  mov    0x20(%rsp),%rbx
  cmp    %rax,%rsi
  setae  %al
  cmp    %rbx,%rcx
  setae  %r11b
  or     %r11d,%eax
  and    %r8d,%eax
  lea    0x10(%rdx),%r8
  cmp    %r8,%rsi
  setae  %r8b
  cmp    %rbx,%rdx
  setae  %r11b
  or     %r11d,%r8d
  test   %r8b,%al
  je     L1312
  lea    0x4(%rdx),%r8
  mov    %rdi,%rax
  sub    %r8,%rax
  cmp    $0x8,%rax
  jbe    L1312
  cmpl   $0x2,0x80(%rsp)
  jbe    L1106
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L1099:
  movups (%rdx,%rax,1),%xmm0
  movups (%rcx,%rax,1),%xmm3
  subps  %xmm3,%xmm0
  movups %xmm0,(%rsi,%rax,1)
  movups (%rcx,%rax,1),%xmm0
  movups (%rdx,%rax,1),%xmm5
  addps  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r13,%rax
  jne    L1099
  mov    0x78(%rsp),%eax
  cmp    %r14d,%eax
  je     L878
  mov    0x88(%rsp),%ebx
  mov    %ebx,0x38(%rsp)
  cmp    $0x1,%ebx
  je     L435
  mov    %eax,0x40(%rsp)
  mov    %eax,%r8d
L1063:
  mov    0x8(%rsp),%rax
  add    %r8,%rax
  add    (%rsp),%r8
  lea    (%r12,%r8,4),%rbx
  lea    (%r12,%rax,4),%r11
  movq   (%rbx),%xmm1
  movq   (%r11),%xmm0
  subps  %xmm1,%xmm0
  movlps %xmm0,(%r15,%rax,4)
  movq   (%rbx),%xmm0
  movq   (%r11),%xmm1
  mov    0x38(%rsp),%ebx
  mov    0x40(%rsp),%eax
  addps  %xmm1,%xmm0
  movlps %xmm0,(%r15,%r8,4)
  mov    %ebx,%r8d
  and    $0xfffffffe,%r8d
  add    %r8d,%eax
  cmp    %ebx,%r8d
  je     L878
L435:
  lea    (%rax,%rbp,1),%r8d
  add    %r10d,%eax
  movslq %r8d,%r8
  cltq
  lea    (%r12,%r8,4),%r11
  lea    (%r12,%rax,4),%rbx
  movss  (%r11),%xmm0
  subss  (%rbx),%xmm0
  movss  %xmm0,(%r15,%r8,4)
  movss  (%rbx),%xmm0
  addss  (%r11),%xmm0
  movss  %xmm0,(%r15,%rax,4)
L878:
  mov    0x48(%rsp),%rbx
  add    %rbx,0x30(%rsp)
  add    %r14d,%ebp
  sub    %r14d,%r10d
  mov    0x50(%rsp),%r8
  addl   $0x1,0x1c(%rsp)
  add    %rbx,%rdi
  add    %rbx,%rcx
  mov    0x60(%rsp),%rbx
  add    %r8,0x10(%rsp)
  add    %rbx,0x20(%rsp)
  mov    0x68(%rsp),%r8
  mov    0x1c(%rsp),%eax
  add    %r8,0x8(%rsp)
  add    %rbx,%rsi
  add    %rbx,%rdx
  mov    0x70(%rsp),%r8
  add    0x58(%rsp),%r9
  add    %r8,(%rsp)
  cmp    %eax,0x28(%rsp)
  jg     L259
L74:
  add    $0x148,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nop
L548:
  mov    0xc0(%rsp),%rbx
  mov    0x30(%rsp),%rbp
  mov    %rsi,%rdi
  mov    %rcx,%rax
  mov    0xc8(%rsp),%r11
  nopl   0x0(%rax,%rax,1)
L151:
  movss  (%rdi,%rbp,4),%xmm0
  add    $0x4,%rdi
  mulss  %xmm4,%xmm0
  addss  (%rax),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x4(%rdi),%xmm0
  mulss  %xmm1,%xmm0
  addss  (%rax,%r11,4),%xmm0
  movss  %xmm0,(%rax,%r11,4)
  add    $0x4,%rax
  cmp    %rbx,%rax
  jne    L151
  jmp    L575
L56:
  movl   $0x0,0x20(%rsp)
  mov    0x8(%rsp),%ebp
  xor    %edi,%edi
  jmp    L465
L75:
  mov    %r15,%rax
  xchg   %ax,%ax
L315:
  movss  (%rax),%xmm0
  addss  (%rax,%rdi,4),%xmm0
  add    $0x4,%rax
  movss  %xmm0,-0x4(%rax)
  cmp    %r11,%rax
  jne    L315
  jmp    L218
L486:
  mov    0x50(%rsp),%edi
  mov    0xd8(%rsp),%r8
  xor    %eax,%eax
  mov    0x100(%rsp),%r9
  nopw   0x0(%rax,%rax,1)
L8:
  movss  (%r9,%rax,4),%xmm0
  mov    %rax,%rsi
  mulss  %xmm6,%xmm0
  addss  (%r15,%rax,4),%xmm0
  movss  %xmm0,(%rdx,%rax,4)
  movss  (%r8,%rax,4),%xmm0
  mulss  %xmm5,%xmm0
  movss  %xmm0,(%rcx,%rax,4)
  add    $0x1,%rax
  cmp    %rdi,%rsi
  jne    L8
  jmp    L337
L1101:
  mov    0xe8(%rsp),%rax
  mov    %r9,%rcx
  lea    (%rax,%r11,1),%rsi
  mov    %r11,%rax
  nop
L890:
  movss  -0x4(%rcx),%xmm0
  addss  %xmm0,%xmm0
  movss  %xmm0,(%rax)
  movss  (%rcx),%xmm0
  add    %rdx,%rcx
  addss  %xmm0,%xmm0
  movss  %xmm0,(%rax,%r10,4)
  add    $0x4,%rax
  cmp    %rsi,%rax
  jne    L890
  jmp    L455
L1312:
  mov    0x90(%rsp),%rax
  mov    %rdi,%r8
  lea    (%rax,%rcx,1),%r11
  mov    %rcx,%rax
  xchg   %ax,%ax
L149:
  movss  (%rax,%r9,4),%xmm0
  subss  (%rax),%xmm0
  movss  %xmm0,(%r8,%r9,4)
  movss  (%rax),%xmm0
  addss  (%rax,%r9,4),%xmm0
  add    $0x4,%rax
  add    $0x4,%r8
  movss  %xmm0,-0x4(%r8)
  cmp    %r11,%rax
  jne    L149
  jmp    L878
L706:
  xor    %r9d,%r9d
  nopl   (%rax)
L1293:
  movss  (%rax,%r9,4),%xmm0
  movss  %xmm0,(%rdx,%r9,4)
  add    $0x1,%r9
  cmp    %rbx,%r9
  jne    L1293
  jmp    L586
L1414:
  mov    %r11d,%ecx
  xor    %edx,%edx
  xor    %eax,%eax
  jmp    L625
L641:
  mov    %r12d,%r10d
  xor    %eax,%eax
  xor    %ecx,%ecx
  jmp    L300
L495:
  cmpl   $0x1,0x1c(%rsp)
  je     L74
L771:
  cmp    %r13d,0x138(%rsp)
  jge    L45
  cmpl   $0x2,0xbc(%rsp)
  jle    L1585
  mov    0x1c(%rsp),%ebp
  cmp    $0x2,%ebp
  jle    L15
  test   %r13d,%r13d
  jle    L15
  mov    0x108(%rsp),%ebx
  movslq %ebp,%rsi
  mov    0x28(%rsp),%r14d
  mov    %r13d,%r11d
  shl    $0x2,%rsi
  mov    $0x1,%r10d
  imul   %r13d,%ebx
L843:
  mov    %ebx,%eax
  mov    %r11d,%r9d
  mov    $0x2,%r8d
  imul   %ebp,%eax
  imul   %ebp,%r9d
  cltq
  movslq %r9d,%r9
  lea    0x8(,%rax,4),%rdi
  sub    %rax,%r9
  shl    $0x2,%r9
  nopl   (%rax)
L166:
  lea    (%r9,%rdi,1),%rdx
  mov    %rdi,%rax
  xor    %ecx,%ecx
  nopl   0x0(%rax)
L1298:
  movss  -0x4(%r12,%rdx,1),%xmm0
  subss  (%r12,%rax,1),%xmm0
  add    $0x1,%ecx
  movss  %xmm0,-0x4(%r15,%rdx,1)
  movss  -0x4(%r12,%rdx,1),%xmm0
  addss  (%r12,%rax,1),%xmm0
  movss  %xmm0,-0x4(%r15,%rax,1)
  movss  (%r12,%rdx,1),%xmm0
  addss  -0x4(%r12,%rax,1),%xmm0
  movss  %xmm0,(%r15,%rdx,1)
  movss  (%r12,%rdx,1),%xmm0
  add    %rsi,%rdx
  subss  -0x4(%r12,%rax,1),%xmm0
  movss  %xmm0,(%r15,%rax,1)
  add    %rsi,%rax
  cmp    %ecx,%r13d
  jne    L1298
  add    $0x2,%r8d
  add    $0x8,%rdi
  cmp    %r8d,%ebp
  jg     L166
  add    $0x1,%r10d
  sub    %r13d,%ebx
  add    %r13d,%r11d
  cmp    %r10d,%r14d
  jg     L843
L15:
  mov    0x134(%rsp),%eax
  test   %eax,%eax
  jle    L653
L817:
  lea    0x4(%r15),%rdx
  mov    %r12,%rax
  sub    %rdx,%rax
  cmp    $0x8,%rax
  jbe    L335
  mov    0x134(%rsp),%ebx
  lea    -0x1(%rbx),%eax
  cmp    $0x2,%eax
  jbe    L335
  shr    $0x2,%ebx
  xor    %eax,%eax
  mov    %ebx,%edx
  shl    $0x4,%rdx
L903:
  movups (%r15,%rax,1),%xmm3
  movups %xmm3,(%r12,%rax,1)
  add    $0x10,%rax
  cmp    %rdx,%rax
  jne    L903
  mov    0x134(%rsp),%ebx
  mov    %ebx,%eax
  and    $0xfffffffc,%eax
  test   $0x3,%bl
  je     L1126
  mov    %eax,%ecx
  movss  (%r15,%rcx,4),%xmm0
  lea    0x0(,%rcx,4),%rdx
  movss  %xmm0,(%r12,%rcx,4)
  lea    0x1(%rax),%ecx
  cmp    %ecx,%ebx
  jle    L1126
  movss  0x4(%r15,%rdx,1),%xmm0
  add    $0x2,%eax
  movss  %xmm0,0x4(%r12,%rdx,1)
  cmp    %eax,%ebx
  jle    L1126
  movss  0x8(%r15,%rdx,1),%xmm0
  movss  %xmm0,0x8(%r12,%rdx,1)
L1126:
  cmpl   $0x1,0xbc(%rsp)
  jle    L74
L653:
  test   %r13d,%r13d
  jle    L1560
  movslq 0x1c(%rsp),%rcx
  mov    0xbc(%rsp),%r9d
  mov    $0x1,%esi
  mov    %ecx,%r8d
  shl    $0x2,%rcx
  imul   %r13d,%r8d
  movslq %r8d,%r8
  shl    $0x2,%r8
  mov    %r8,%rdi
L754:
  mov    %rdi,%rax
  xor    %edx,%edx
L861:
  movss  (%r15,%rax,1),%xmm0
  add    $0x1,%edx
  movss  %xmm0,(%r12,%rax,1)
  add    %rcx,%rax
  cmp    %edx,%r13d
  jne    L861
  add    $0x1,%esi
  add    %r8,%rdi
  cmp    %esi,%r9d
  jne    L754
L1560:
  cmp    %r13d,0x138(%rsp)
  jg     L1200
  mov    0x1c(%rsp),%ebp
  mov    %ebp,%eax
  neg    %eax
  cmp    $0x2,%ebp
  jle    L74
  test   %r13d,%r13d
  jle    L74
  movslq %ebp,%rdx
  mov    0x180(%rsp),%rbx
  cltq
  mov    %r13d,%r11d
  lea    0x1(%rdx,%rax,1),%rax
  mov    0xbc(%rsp),%r14d
  lea    0x0(,%rdx,4),%rdi
  mov    $0x1,%r10d
  lea    -0x4(%rbx,%rax,4),%rbx
L759:
  mov    %r11d,%eax
  mov    %rbx,%rdx
  mov    $0x2,%r9d
  imul   %ebp,%eax
  cltq
  lea    0x8(,%rax,4),%r8
  nopl   0x0(%rax,%rax,1)
L396:
  lea    (%r15,%r8,1),%rax
  lea    (%r12,%r8,1),%rcx
  xor    %esi,%esi
  nopw   0x0(%rax,%rax,1)
L620:
  movss  (%rdx),%xmm0
  movss  0x4(%rdx),%xmm1
  add    $0x1,%esi
  mulss  (%rax),%xmm1
  mulss  -0x4(%rax),%xmm0
  subss  %xmm1,%xmm0
  movss  %xmm0,-0x4(%rcx)
  movss  (%rdx),%xmm0
  movss  0x4(%rdx),%xmm1
  mulss  (%rax),%xmm0
  mulss  -0x4(%rax),%xmm1
  add    %rdi,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rcx)
  add    %rdi,%rcx
  cmp    %esi,%r13d
  jne    L620
  add    $0x2,%r9d
  add    $0x8,%rdx
  add    $0x8,%r8
  cmp    %r9d,%ebp
  jg     L396
  add    $0x1,%r10d
  add    %r13d,%r11d
  add    %rdi,%rbx
  cmp    %r10d,%r14d
  jne    L759
  jmp    L74
L1106:
  mov    %r14d,0x38(%rsp)
  xor    %r8d,%r8d
  movl   $0x0,0x40(%rsp)
  jmp    L1063
L76:
  cmpl   $0x2,0xbc(%rsp)
  jg     L1027
L1574:
  cmpl   $0x1,0x1c(%rsp)
  je     L74
  cmp    %r13d,0x138(%rsp)
  jge    L1585
L1189:
  cmpl   $0x2,0xbc(%rsp)
  jle    L1585
  cmpl   $0x2,0x1c(%rsp)
  jle    L1589
  test   %r13d,%r13d
  jle    L1589
  mov    0xbc(%rsp),%esi
  movslq 0x1c(%rsp),%rdx
  mov    %r13d,0x10(%rsp)
  movl   $0x1,(%rsp)
  lea    -0x1(%rsi),%eax
  lea    0x0(,%rdx,4),%r9
  mov    %rdx,0x20(%rsp)
  mov    %eax,0x108(%rsp)
  imul   %r13d,%eax
  lea    0x8(%r12,%r9,1),%rbx
  imul   %edx,%esi
  mov    %rbx,0x40(%rsp)
  mov    %r12,0x48(%rsp)
  mov    %eax,0x8(%rsp)
  lea    (%rdx,%rdx,1),%eax
  cltq
  movslq %esi,%r8
  lea    0x0(,%rax,8),%rcx
  lea    (%r12,%rax,4),%rax
  shl    $0x2,%r8
  mov    %edx,%r12d
  mov    %rcx,0x38(%rsp)
  lea    (%rax,%rax,1),%r14
L452:
  mov    0x40(%rsp),%rax
  mov    0x10(%rsp),%ebp
  mov    $0x2,%ebx
  imul   %r12d,%ebp
  lea    (%rax,%rdx,4),%r11
  mov    0x8(%rsp),%eax
  imul   %r12d,%eax
  movslq %ebp,%rbp
  cltq
  sub    %rax,%rbp
  lea    0x8(%r15,%rax,4),%r10
  mov    0x20(%rsp),%rax
  shl    $0x2,%rbp
  add    %rdx,%rax
  mov    %rax,0x30(%rsp)
  nopl   0x0(%rax,%rax,1)
L18:
  mov    %r14,%rdx
  lea    (%r10,%rbp,1),%rsi
  mov    %r10,%rcx
  mov    %r11,%rax
  sub    %r11,%rdx
  xor    %edi,%edi
  nopw   0x0(%rax,%rax,1)
L434:
  movss  -0x4(%rax),%xmm0
  addss  -0x4(%rdx),%xmm0
  add    $0x1,%edi
  movss  %xmm0,-0x4(%rsi)
  movss  -0x4(%rax),%xmm0
  subss  -0x4(%rdx),%xmm0
  movss  %xmm0,-0x4(%rcx)
  movss  (%rax),%xmm0
  subss  (%rdx),%xmm0
  movss  %xmm0,(%rsi)
  movss  (%rax),%xmm0
  addss  (%rdx),%xmm0
  add    %r8,%rax
  add    %r8,%rdx
  add    %r9,%rsi
  movss  %xmm0,(%rcx)
  add    %r9,%rcx
  cmp    %edi,%r13d
  jne    L434
  add    $0x2,%ebx
  add    $0x8,%r11
  add    $0x8,%r10
  cmp    %ebx,%r12d
  jg     L18
  addl   $0x1,(%rsp)
  mov    0x30(%rsp),%rdx
  sub    %r13d,0x8(%rsp)
  mov    (%rsp),%eax
  add    %r13d,0x10(%rsp)
  add    0x20(%rsp),%rdx
  add    0x38(%rsp),%r14
  cmp    %eax,0x28(%rsp)
  jg     L452
  mov    0x48(%rsp),%r12
  jmp    L712
L1200:
  mov    0x1c(%rsp),%eax
  neg    %eax
  mov    %eax,0xa0(%rsp)
  test   %r13d,%r13d
  jle    L74
  mov    0x1c(%rsp),%esi
  cmp    $0x2,%esi
  jle    L74
  movslq 0xa0(%rsp),%rax
  movslq %esi,%rdx
  mov    %r13d,0xb8(%rsp)
  mov    %rdx,0x30(%rsp)
  lea    0x0(,%rdx,4),%rbx
  lea    0x1(%rdx,%rax,1),%rax
  mov    0x180(%rsp),%rdx
  mov    %r13d,0x20(%rsp)
  movl   $0x1,0xa8(%rsp)
  lea    (%rdx,%rax,4),%r11
  lea    -0x3(%rsi),%eax
  mov    %eax,0x38(%rsp)
  shr    %eax
  lea    0x1(%rax),%esi
  add    %rax,%rax
  mov    %esi,%edx
  mov    %esi,0x48(%rsp)
  and    $0xfffffffc,%esi
  shr    $0x2,%edx
  mov    %esi,0x40(%rsp)
  add    %esi,%esi
  sub    $0x1,%edx
  mov    %esi,0xc8(%rsp)
  add    $0x1,%rdx
  mov    %rax,0xb0(%rsp)
  lea    0x8(%r15),%rax
  shl    $0x5,%rdx
  mov    %rax,0xc0(%rsp)
  mov    %rdx,%r14
  lea    0x2(%rsi),%edx
  mov    %edx,0x68(%rsp)
  lea    0x1(%rsi),%edx
  mov    %edx,0x60(%rsp)
  lea    0x4(%rsi),%edx
  mov    %edx,0x70(%rsp)
  lea    0x3(%rsi),%edx
  mov    %edx,0x88(%rsp)
  lea    0x6(%rsi),%edx
  add    $0x5,%esi
  mov    %edx,0x90(%rsp)
  mov    %esi,0x98(%rsp)
L959:
  mov    0x1c(%rsp),%eax
  add    %eax,0xa0(%rsp)
  xor    %r9d,%r9d
  mov    0xa0(%rsp),%esi
  add    0xc8(%rsp),%esi
  mov    %r14,0x8(%rsp)
  mov    %esi,%ecx
  lea    0x2(%rsi),%esi
  mov    0x180(%rsp),%rdi
  mov    0xb8(%rsp),%r8d
  movslq %esi,%rsi
  lea    0x4(%rcx),%r10d
  add    $0x6,%ecx
  shl    $0x2,%rsi
  imul   %eax,%r8d
  movslq %r10d,%r10
  movslq %ecx,%rcx
  lea    -0x4(%rdi,%rsi,1),%rdi
  shl    $0x2,%r10
  shl    $0x2,%rcx
  add    0x180(%rsp),%rsi
  mov    %rsi,0x58(%rsp)
  mov    0x180(%rsp),%rsi
  movslq %r8d,%rax
  mov    %rdi,0x50(%rsp)
  lea    -0x4(%rsi,%r10,1),%rbp
  add    %rsi,%r10
  lea    -0x4(%rsi,%rcx,1),%rsi
  add    0x180(%rsp),%rcx
  mov    %rsi,0x80(%rsp)
  lea    0x20(%r11),%rsi
  lea    0x4(,%rax,4),%rdx
  mov    %rcx,0x78(%rsp)
  mov    %rsi,0x28(%rsp)
  mov    %r10,(%rsp)
  mov    %rax,0x10(%rsp)
  lea    (%r12,%rdx,1),%rax
  add    %r15,%rdx
  nopw   0x0(%rax,%rax,1)
L140:
  lea    0x20(%rdx),%rcx
  lea    0x20(%rax),%rdi
  cmp    %rcx,%rax
  setae  %sil
  cmp    %rdx,%rdi
  setbe  %cl
  or     %ecx,%esi
  cmp    0x28(%rsp),%rax
  setae  %cl
  cmp    %r11,%rdi
  setbe  %dil
  or     %edi,%ecx
  test   %cl,%sil
  je     L1179
  xor    %ecx,%ecx
  cmpl   $0x5,0x38(%rsp)
  mov    (%rsp),%r10
  mov    0x8(%rsp),%r14
  jbe    L1179
  nop
L899:
  movups (%r11,%rcx,1),%xmm3
  movups 0x10(%r11,%rcx,1),%xmm5
  movups (%rdx,%rcx,1),%xmm1
  movaps %xmm3,%xmm4
  shufps $0xdd,%xmm5,%xmm3
  shufps $0x88,%xmm5,%xmm4
  movups 0x10(%rdx,%rcx,1),%xmm5
  movaps %xmm1,%xmm0
  shufps $0x88,%xmm5,%xmm0
  shufps $0xdd,%xmm5,%xmm1
  movaps %xmm0,%xmm2
  movaps %xmm1,%xmm5
  mulps  %xmm4,%xmm2
  mulps  %xmm3,%xmm5
  mulps  %xmm4,%xmm1
  mulps  %xmm3,%xmm0
  subps  %xmm5,%xmm2
  addps  %xmm1,%xmm0
  movaps %xmm2,%xmm1
  unpcklps %xmm0,%xmm1
  unpckhps %xmm0,%xmm2
  movups %xmm1,(%rax,%rcx,1)
  movups %xmm2,0x10(%rax,%rcx,1)
  add    $0x20,%rcx
  cmp    %r14,%rcx
  jne    L899
  mov    %r10,(%rsp)
  mov    0x48(%rsp),%ecx
  mov    %r14,0x8(%rsp)
  cmp    %ecx,0x40(%rsp)
  je     L942
  mov    0x60(%rsp),%esi
  mov    0x68(%rsp),%ecx
  mov    0x58(%rsp),%r14
  mov    0x50(%rsp),%r10
  add    %r8d,%esi
  add    %r8d,%ecx
  movslq %ecx,%rcx
  movslq %esi,%rsi
  movss  (%r10),%xmm0
  lea    (%r15,%rcx,4),%rdi
  lea    (%r15,%rsi,4),%r13
  mulss  0x0(%r13),%xmm0
  movss  (%rdi),%xmm1
  mulss  (%r14),%xmm1
  subss  %xmm1,%xmm0
  movss  %xmm0,(%r12,%rsi,4)
  movss  0x0(%r13),%xmm0
  movss  (%rdi),%xmm1
  mulss  (%r14),%xmm0
  mov    0x1c(%rsp),%r14d
  mulss  (%r10),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,(%r12,%rcx,4)
  mov    0x70(%rsp),%ecx
  cmp    %ecx,%r14d
  jle    L942
  mov    0x88(%rsp),%esi
  add    %r8d,%ecx
  mov    (%rsp),%r10
  movslq %ecx,%rcx
  movss  0x0(%rbp),%xmm0
  add    %r8d,%esi
  lea    (%r15,%rcx,4),%rdi
  movss  (%r10),%xmm1
  mulss  (%rdi),%xmm1
  movslq %esi,%rsi
  lea    (%r15,%rsi,4),%r13
  mulss  0x0(%r13),%xmm0
  subss  %xmm1,%xmm0
  movss  %xmm0,(%r12,%rsi,4)
  movss  (%r10),%xmm0
  movss  0x0(%rbp),%xmm1
  mulss  0x0(%r13),%xmm0
  mulss  (%rdi),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,(%r12,%rcx,4)
  mov    0x90(%rsp),%ecx
  cmp    %ecx,%r14d
  jle    L942
  mov    0x98(%rsp),%esi
  add    %r8d,%ecx
  mov    0x78(%rsp),%r10
  mov    0x80(%rsp),%r14
  movslq %ecx,%rcx
  add    %r8d,%esi
  lea    (%r15,%rcx,4),%rdi
  movslq %esi,%rsi
  movss  (%rdi),%xmm1
  lea    (%r15,%rsi,4),%r13
  mulss  (%r10),%xmm1
  movss  0x0(%r13),%xmm0
  mulss  (%r14),%xmm0
  subss  %xmm1,%xmm0
  movss  %xmm0,(%r12,%rsi,4)
  movss  0x0(%r13),%xmm0
  movss  (%rdi),%xmm1
  mulss  (%r10),%xmm0
  mulss  (%r14),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,(%r12,%rcx,4)
L942:
  mov    0x30(%rsp),%rcx
  add    $0x1,%r9d
  add    %rbx,%rax
  add    %rbx,%rdx
  add    %rcx,0x10(%rsp)
  add    0x1c(%rsp),%r8d
  cmp    %r9d,0x20(%rsp)
  jne    L140
  addl   $0x1,0xa8(%rsp)
  mov    0x20(%rsp),%edx
  add    %rbx,%r11
  add    %edx,0xb8(%rsp)
  mov    0x8(%rsp),%r14
  mov    0xa8(%rsp),%eax
  cmp    %eax,0xbc(%rsp)
  jne    L959
  jmp    L74
  nopl   0x0(%rax,%rax,1)
L1179:
  mov    0xc0(%rsp),%r14
  mov    (%rsp),%r10
  lea    -0x4(%r11),%rsi
  lea    -0x4(%rdx),%rcx
  mov    0xb0(%rsp),%r13
  add    0x10(%rsp),%r13
  lea    -0x4(%rax),%rdi
  lea    (%r14,%r13,4),%r13
  mov    0x8(%rsp),%r14
  xchg   %ax,%ax
L990:
  movss  0x4(%rcx),%xmm0
  add    $0x8,%rcx
  movss  (%rcx),%xmm1
  add    $0x8,%rsi
  mulss  (%rsi),%xmm1
  add    $0x8,%rdi
  mulss  -0x4(%rsi),%xmm0
  subss  %xmm1,%xmm0
  movss  %xmm0,-0x4(%rdi)
  movss  -0x4(%rcx),%xmm0
  movss  (%rcx),%xmm1
  mulss  (%rsi),%xmm0
  mulss  -0x4(%rsi),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rdi)
  cmp    %r13,%rcx
  jne    L990
  mov    %r10,(%rsp)
  mov    %r14,0x8(%rsp)
  jmp    L942
L45:
  cmpl   $0x2,0xbc(%rsp)
  jle    L1585
  test   %r13d,%r13d
  jle    L15
  mov    0x1c(%rsp),%eax
  cmp    $0x2,%eax
  jle    L15
  mov    0x108(%rsp),%ebx
  mov    %r13d,0xc0(%rsp)
  movl   $0x1,0xb0(%rsp)
  imul   %r13d,%ebx
  mov    %r13d,0x50(%rsp)
  mov    %ebx,0xc8(%rsp)
  movslq %eax,%rbx
  lea    0x0(,%rbx,4),%r11
  mov    %rbx,0x68(%rsp)
  lea    -0x3(%rax),%ebx
  mov    %ebx,%eax
  mov    %ebx,0x60(%rsp)
  shr    $0x3,%eax
  mov    %r11,0x80(%rsp)
  lea    -0x1(%rax),%edx
  lea    0x2(,%rax,8),%eax
  lea    -0x1(%rax),%esi
  mov    %eax,0x88(%rsp)
  add    $0x1,%rdx
  mov    %esi,0x98(%rsp)
  lea    0x2(%rax),%esi
  shl    $0x5,%rdx
  mov    %esi,0x90(%rsp)
  lea    0x1(%rax),%esi
  mov    %rdx,%rbp
  mov    %esi,0x30(%rsp)
  lea    0x4(%rax),%esi
  mov    %esi,0xa0(%rsp)
  lea    0x3(%rax),%esi
  mov    %esi,0x38(%rsp)
  lea    0x6(%rax),%esi
  add    $0x5,%eax
  mov    %eax,0xb8(%rsp)
  mov    %ebx,%eax
  shr    %eax
  mov    %esi,0xa8(%rsp)
  add    %rax,%rax
  mov    %rax,0xd0(%rsp)
  lea    0x20(%r12),%rax
  mov    %rax,0x70(%rsp)
  lea    0x20(%r15),%rax
  mov    %rax,0x78(%rsp)
  lea    -0x4(%r12),%rax
  mov    %rax,0xd8(%rsp)
  lea    0x8(%r15),%rax
  mov    %rax,0xe0(%rsp)
L318:
  mov    0x1c(%rsp),%ebx
  mov    0xc0(%rsp),%r8d
  movl   $0x0,(%rsp)
  mov    0xc8(%rsp),%ecx
  imul   %ebx,%r8d
  imul   %ebx,%ecx
  movslq %r8d,%rax
  movslq %ecx,%rbx
  sub    %r8d,%ecx
  lea    0x4(,%rax,4),%r14
  mov    %rax,0x40(%rsp)
  mov    %rbx,0x48(%rsp)
  lea    (%r15,%r14,1),%rdx
  lea    (%r12,%r14,1),%rax
  mov    %ecx,0x58(%rsp)
  lea    0x4(,%rbx,4),%r13
  nopl   (%rax)
L342:
  mov    0x70(%rsp),%rdi
  mov    0x58(%rsp),%ebx
  lea    0x20(%r14),%r9
  lea    (%r15,%r13,1),%rsi
  mov    0x78(%rsp),%rcx
  lea    (%rdi,%r14,1),%r11
  add    %r13,%rdi
  add    %r8d,%ebx
  mov    %rdi,0x10(%rsp)
  lea    0x20(%r13),%rdi
  lea    (%rcx,%r14,1),%r10
  add    %r13,%rcx
  cmp    %r14,%rdi
  mov    %rcx,0x8(%rsp)
  lea    (%r12,%r13,1),%rcx
  setle  %dil
  cmp    %r13,%r9
  setle  %r9b
  or     %edi,%r9d
  cmpl   $0x7,0x60(%rsp)
  seta   %dil
  and    %edi,%r9d
  cmp    %r10,%rax
  setae  %dil
  cmp    %r11,%rdx
  setae  0x20(%rsp)
  or     0x20(%rsp),%dil
  and    %r9d,%edi
  cmp    0x8(%rsp),%rax
  setae  %r9b
  cmp    %r11,%rsi
  setae  %r11b
  or     %r11d,%r9d
  mov    0x10(%rsp),%r11
  and    %edi,%r9d
  cmp    %r11,%rdx
  setae  %dil
  cmp    %r10,%rcx
  setae  %r10b
  or     %r10d,%edi
  test   %dil,%r9b
  je     L1294
  cmp    %r11,%rsi
  lea    0x4(%rax),%r9
  setae  %r10b
  cmp    0x8(%rsp),%rcx
  setae  %r11b
  xor    %edi,%edi
  or     %r10b,%r11b
  je     L1294
  nopl   0x0(%rax)
L39:
  movups (%rax,%rdi,1),%xmm1
  movups 0x10(%rax,%rdi,1),%xmm6
  movups (%rcx,%rdi,1),%xmm0
  movups 0x10(%rax,%rdi,1),%xmm5
  movaps %xmm1,%xmm4
  shufps $0x88,%xmm6,%xmm4
  movups 0x10(%rcx,%rdi,1),%xmm6
  movaps %xmm4,%xmm2
  movaps %xmm0,%xmm3
  shufps $0xdd,%xmm5,%xmm1
  shufps $0xdd,%xmm6,%xmm0
  subps  %xmm0,%xmm2
  shufps $0x88,%xmm6,%xmm3
  addps  %xmm3,%xmm1
  addps  %xmm4,%xmm0
  movaps %xmm2,%xmm4
  unpckhps %xmm1,%xmm2
  unpcklps %xmm1,%xmm4
  movups %xmm2,0x10(%rdx,%rdi,1)
  movaps %xmm0,%xmm2
  movups %xmm4,(%rdx,%rdi,1)
  movups (%r9,%rdi,1),%xmm1
  movups 0x10(%r9,%rdi,1),%xmm6
  shufps $0x88,%xmm6,%xmm1
  subps  %xmm3,%xmm1
  unpcklps %xmm1,%xmm2
  unpckhps %xmm1,%xmm0
  movups %xmm2,(%rsi,%rdi,1)
  movups %xmm0,0x10(%rsi,%rdi,1)
  add    $0x20,%rdi
  cmp    %rdi,%rbp
  jne    L39
  mov    0x98(%rsp),%r10d
  mov    0x88(%rsp),%r11d
  lea    (%r8,%r10,1),%edi
  lea    (%rbx,%r11,1),%ecx
  movslq %edi,%rdi
  movslq %ecx,%rcx
  lea    (%r12,%rdi,4),%r9
  lea    (%r12,%rcx,4),%rsi
  movss  (%r9),%xmm0
  subss  (%rsi),%xmm0
  movss  %xmm0,(%r15,%rdi,4)
  movss  (%r9),%xmm0
  addss  (%rsi),%xmm0
  lea    (%rbx,%r10,1),%edi
  lea    (%r8,%r11,1),%esi
  movslq %edi,%rdi
  mov    0x1c(%rsp),%r11d
  mov    0x90(%rsp),%r10d
  movslq %esi,%rsi
  movss  %xmm0,(%r15,%rdi,4)
  lea    (%r12,%rsi,4),%r9
  lea    (%r12,%rdi,4),%rdi
  movss  (%r9),%xmm0
  addss  (%rdi),%xmm0
  movss  %xmm0,(%r15,%rsi,4)
  movss  (%r9),%xmm0
  subss  (%rdi),%xmm0
  movss  %xmm0,(%r15,%rcx,4)
  cmp    %r10d,%r11d
  jle    L908
  mov    0x30(%rsp),%esi
  lea    (%rbx,%r10,1),%ecx
  movslq %ecx,%rcx
  lea    (%r8,%rsi,1),%edi
  lea    (%r12,%rcx,4),%rsi
  movslq %edi,%rdi
  lea    (%r12,%rdi,4),%r9
  movss  (%r9),%xmm0
  subss  (%rsi),%xmm0
  movss  %xmm0,(%r15,%rdi,4)
  mov    0x30(%rsp),%edi
  movss  (%r9),%xmm0
  addss  (%rsi),%xmm0
  lea    (%r8,%r10,1),%esi
  mov    %r11d,%r10d
  add    %ebx,%edi
  movslq %esi,%rsi
  movslq %edi,%rdi
  lea    (%r12,%rsi,4),%r9
  movss  %xmm0,(%r15,%rdi,4)
  lea    (%r12,%rdi,4),%rdi
  movss  (%r9),%xmm0
  addss  (%rdi),%xmm0
  movss  %xmm0,(%r15,%rsi,4)
  movss  (%r9),%xmm0
  subss  (%rdi),%xmm0
  mov    0xa0(%rsp),%esi
  movss  %xmm0,(%r15,%rcx,4)
  cmp    %r11d,%esi
  jge    L908
  mov    0x38(%rsp),%ecx
  mov    %esi,%r11d
  lea    (%r8,%rcx,1),%edi
  lea    (%rsi,%rbx,1),%ecx
  movslq %edi,%rdi
  movslq %ecx,%rcx
  lea    (%r12,%rdi,4),%r9
  lea    (%r12,%rcx,4),%rsi
  movss  (%r9),%xmm0
  subss  (%rsi),%xmm0
  movss  %xmm0,(%r15,%rdi,4)
  mov    0x38(%rsp),%edi
  movss  (%r9),%xmm0
  addss  (%rsi),%xmm0
  lea    (%r8,%r11,1),%esi
  add    %ebx,%edi
  movslq %esi,%rsi
  movslq %edi,%rdi
  lea    (%r12,%rsi,4),%r9
  movss  %xmm0,(%r15,%rdi,4)
  lea    (%r12,%rdi,4),%rdi
  movss  (%r9),%xmm0
  addss  (%rdi),%xmm0
  movss  %xmm0,(%r15,%rsi,4)
  movss  (%r9),%xmm0
  subss  (%rdi),%xmm0
  movss  %xmm0,(%r15,%rcx,4)
  mov    0xa8(%rsp),%ecx
  cmp    %r10d,%ecx
  jge    L908
  mov    0xb8(%rsp),%r11d
  mov    %ecx,%r10d
  lea    (%rcx,%rbx,1),%ecx
  movslq %ecx,%rcx
  lea    (%r8,%r11,1),%esi
  lea    (%r12,%rcx,4),%r9
  movslq %esi,%rsi
  lea    (%r12,%rsi,4),%rdi
  movss  (%rdi),%xmm0
  subss  (%r9),%xmm0
  movss  %xmm0,(%r15,%rsi,4)
  movss  (%r9),%xmm0
  addss  (%rdi),%xmm0
  lea    (%rbx,%r11,1),%esi
  lea    (%r8,%r10,1),%edi
  movslq %esi,%rsi
  movslq %edi,%rdi
  movss  %xmm0,(%r15,%rsi,4)
  lea    (%r12,%rdi,4),%r9
  lea    (%r12,%rsi,4),%rsi
  movss  (%rsi),%xmm0
  addss  (%r9),%xmm0
  movss  %xmm0,(%r15,%rdi,4)
  movss  (%r9),%xmm0
  subss  (%rsi),%xmm0
  movss  %xmm0,(%r15,%rcx,4)
L908:
  mov    0x80(%rsp),%rbx
  mov    0x68(%rsp),%rcx
  addl   $0x1,(%rsp)
  add    0x1c(%rsp),%r8d
  add    %rcx,0x48(%rsp)
  mov    (%rsp),%esi
  add    %rbx,%rdx
  add    %rbx,%rax
  add    %rcx,0x40(%rsp)
  add    %rbx,%r13
  add    %rbx,%r14
  cmp    %esi,0x50(%rsp)
  jne    L342
  mov    0x50(%rsp),%esi
  addl   $0x1,0xb0(%rsp)
  add    %esi,0xc0(%rsp)
  mov    0xb0(%rsp),%eax
  sub    %esi,0xc8(%rsp)
  cmp    %eax,0x28(%rsp)
  jg     L318
  mov    %esi,%r13d
  jmp    L15
  nopl   0x0(%rax)
L1294:
  mov    0xd8(%rsp),%rbx
  mov    0xd0(%rsp),%r9
  lea    -0x4(%rdx),%rcx
  mov    0xe0(%rsp),%r10
  lea    (%rbx,%r14,1),%rdi
  lea    (%rbx,%r13,1),%rsi
  mov    0x40(%rsp),%rbx
  add    %rbx,%r9
  lea    (%r10,%r9,4),%r10
  mov    0x48(%rsp),%r9
  sub    %rbx,%r9
  nopl   0x0(%rax,%rax,1)
L384:
  movss  0x4(%rdi),%xmm0
  subss  0x8(%rsi),%xmm0
  add    $0x8,%rdi
  add    $0x8,%rsi
  movss  %xmm0,0x4(%rcx)
  movss  (%rsi),%xmm0
  addss  -0x4(%rdi),%xmm0
  movss  %xmm0,0x4(%rcx,%r9,4)
  movss  -0x4(%rsi),%xmm0
  addss  (%rdi),%xmm0
  movss  %xmm0,0x8(%rcx)
  movss  (%rdi),%xmm0
  subss  -0x4(%rsi),%xmm0
  movss  %xmm0,0x8(%rcx,%r9,4)
  add    $0x8,%rcx
  cmp    %r10,%rcx
  jne    L384
  jmp    L908
L597:
  mov    0x108(%rsp),%edi
  movslq 0x1c(%rsp),%rsi
  mov    $0x1,%r9d
  imul   %r13d,%edi
  mov    %esi,%r8d
  imul   %r13d,%r8d
  imul   %esi,%edi
  shl    $0x2,%rsi
  movslq %r8d,%r8
  shl    $0x2,%r8
  movslq %edi,%rdi
  mov    %r8,%r10
  shl    $0x2,%rdi
L215:
  mov    %rdi,%rdx
  mov    %r10,%rax
  xor    %ecx,%ecx
L918:
  movss  (%r12,%rax,1),%xmm0
  subss  (%r12,%rdx,1),%xmm0
  add    $0x1,%ecx
  movss  %xmm0,(%r15,%rax,1)
  movss  (%r12,%rax,1),%xmm0
  add    %rsi,%rax
  addss  (%r12,%rdx,1),%xmm0
  movss  %xmm0,(%r15,%rdx,1)
  add    %rsi,%rdx
  cmp    %ecx,%r13d
  jne    L918
  add    $0x1,%r9d
  add    %r8,%r10
  sub    %r8,%rdi
  cmp    %r9d,0x28(%rsp)
  jg     L215
  jmp    L771
L585:
  mov    0x1c(%rsp),%edi
  mov    $0x1,%r11d
  mov    %edi,%edx
  movslq %edi,%r8
  lea    (%rdi,%rdi,1),%ecx
  imul   %r13d,%edx
  movslq %ecx,%rbp
  mov    %rbp,%r9
  movslq %edx,%rax
  neg    %edx
  movslq %edx,%rdx
  lea    0x0(,%rax,4),%rbx
  sub    %rax,%rdx
  lea    (%r15,%rbx,1),%r10
  mov    %rdx,%r14
  mov    0xbc(%rsp),%edx
  lea    -0x1(%rdx),%esi
  imul   %r13d,%esi
  imul   %edi,%esi
  movslq %esi,%rsi
  sub    %rax,%rsi
  mov    %r8,%rax
  shl    $0x2,%r8
  imul   %eax,%edx
  movslq %edx,%rdi
  shl    $0x2,%rdi
L496:
  lea    (%r12,%r9,4),%rdx
  mov    %r10,%rax
  xor    %ecx,%ecx
  nop
L377:
  movss  -0x4(%rdx),%xmm0
  add    $0x1,%ecx
  addss  %xmm0,%xmm0
  movss  %xmm0,(%rax)
  movss  (%rdx),%xmm0
  add    %rdi,%rdx
  addss  %xmm0,%xmm0
  movss  %xmm0,(%rax,%rsi,4)
  add    %r8,%rax
  cmp    %ecx,%r13d
  jne    L377
  add    $0x1,%r11d
  add    %rbx,%r10
  add    %rbp,%r9
  add    %r14,%rsi
  cmp    %r11d,0x28(%rsp)
  jg     L496
  jmp    L1379
L1589:
  mov    0xbc(%rsp),%eax
  sub    $0x1,%eax
  mov    %eax,0x108(%rsp)
  jmp    L712
L1585:
  mov    0x134(%rsp),%edx
  test   %edx,%edx
  jg     L817
  jmp    L1126
  nopl   0x0(%rax,%rax,1)
L335:
  mov    0x134(%rsp),%edx
  xor    %eax,%eax
L921:
  movss  (%r15,%rax,4),%xmm0
  movss  %xmm0,(%r12,%rax,4)
  add    $0x1,%rax
  cmp    %rdx,%rax
  jne    L921
  jmp    L1126
```

tool_calls: name: disassemble_data
arguments: data_tag: D1
type_guessed: f32
name: disassemble_data
arguments: data_tag: D8
type_guessed: byte[4]

tool: D1: 6.28318530717959

tool: {"D8": [0x00,0x00,0x80,0x3f]}

assistant: ```c
void radbg(int ido, int ip, int l1, int idl1, float cc[], float ch[], const float wa[]) {
  static const float twopi = 6.28318530717959;
  int idij, ipph, i, j, k, l, j2, ic, jc, lc, ik, is;
  float dc2, ai1, ai2, ar1, ar2, ds2;
  int nbd;
  float dcp, arg, dsp, ar1h, ar2h;
  arg = twopi / ip;
  dcp = cos(arg);
  dsp = sin(arg);
  nbd = (ido - 1) / 2;
  ipph = (ip + 1) / 2;
  if (ido >= l1) {
    for (k = 0; k < l1; k++) {
      for (i = 0; i < ido; i++) {
        ch[i + k * ido] = cc[i + k * ip * ido];
      }
    }
  } else {
    for (i = 0; i < ido; i++) {
      for (k = 0; k < l1; k++) {
        ch[i + k * ido] = cc[i + k * ip * ido];
      }
    }
  }
  for (j = 1; j < ipph; j++) {
    jc = ip - j;
    j2 = 2 * j;
    for (k = 0; k < l1; k++) {
      ch[(k + j * l1) * ido] = cc[ido - 1 + (j2 - 1 + k * ip) * ido] + cc[ido - 1 + (j2 - 1 + k * ip) * ido];
      ch[(k + jc * l1) * ido] = cc[(j2 + k * ip) * ido] + cc[(j2 + k * ip) * ido];
    }
  }
  if (ido != 1) {
    if (nbd >= l1) {
      for (j = 1; j < ipph; j++) {
        jc = ip - j;
        for (k = 0; k < l1; k++) {
          for (i = 2; i < ido; i += 2) {
            ic = ido - i;
            ch[i - 1 + (k + j * l1) * ido] = cc[i - 1 + (2 * j + k * ip) * ido] + cc[ic - 1 + (2 * j - 1 + k * ip) * ido];
            ch[i - 1 + (k + jc * l1) * ido] = cc[i - 1 + (2 * j + k * ip) * ido] - cc[ic - 1 + (2 * j - 1 + k * ip) * ido];
            ch[i + (k + j * l1) * ido] = cc[i + (2 * j + k * ip) * ido] - cc[ic + (2 * j - 1 + k * ip) * ido];
            ch[i + (k + jc * l1) * ido] = cc[i + (2 * j + k * ip) * ido] + cc[ic + (2 * j - 1 + k * ip) * ido];
          }
        }
      }
    } else {
      for (j = 1; j < ipph; j++) {
        jc = ip - j;
        for (i = 2; i < ido; i += 2) {
          ic = ido - i;
          for (k = 0; k < l1; k++) {
            ch[i - 1 + (k + j * l1) * ido] = cc[i - 1 + (2 * j + k * ip) * ido] + cc[ic - 1 + (2 * j - 1 + k * ip) * ido];
            ch[i - 1 + (k + jc * l1) * ido] = cc[i - 1 + (2 * j + k * ip) * ido] - cc[ic - 1 + (2 * j - 1 + k * ip) * ido];
            ch[i + (k + j * l1) * ido] = cc[i + (2 * j + k * ip) * ido] - cc[ic + (2 * j - 1 + k * ip) * ido];
            ch[i + (k + jc * l1) * ido] = cc[i + (2 * j + k * ip) * ido] + cc[ic + (2 * j - 1 + k * ip) * ido];
          }
        }
      }
    }
  }
  ar1 = 1;
  ai1 = 0;
  for (l = 1; l < ipph; l++) {
    lc = ip - l;
    ar1h = dcp * ar1 - dsp * ai1;
    ai1 = dcp * ai1 + dsp * ar1;
    ar1 = ar1h;
    for (ik = 0; ik < idl1; ik++) {
      cc[ik + l * idl1] = ch[ik] + ar1 * ch[ik + idl1];
      cc[ik + lc * idl1] = ai1 * ch[ik + (ip - 1) * idl1];
    }
    dc2 = ar1;
    ds2 = ai1;
    ar2 = ar1;
    ai2 = ai1;
    for (j = 2; j < ipph; j++) {
      jc = ip - j;
      ar2h = dc2 * ar2 - ds2 * ai2;
      ai2 = dc2 * ai2 + ds2 * ar2;
      ar2 = ar2h;
      for (ik = 0; ik < idl1; ik++) {
        cc[ik + l * idl1] += ar2 * ch[ik + j * idl1];
        cc[ik + lc * idl1] += ai2 * ch[ik + jc * idl1];
      }
    }
  }
  for (j = 1; j < ipph; j++) {
    for (ik = 0; ik < idl1; ik++) {
      ch[ik] += ch[ik + j * idl1];
    }
  }
  for (j = 1; j < ipph; j++) {
    jc = ip - j;
    for (k = 0; k < l1; k++) {
      ch[(k + j * l1) * ido] = cc[(k + j * l1) * ido] - cc[(k + jc * l1) * ido];
      ch[(k + jc * l1) * ido] = cc[(k + j * l1) * ido] + cc[(k + jc * l1) * ido];
    }
  }
  if (ido == 1)
    return;
  if (nbd >= l1) {
    for (j = 1; j < ipph; j++) {
      jc = ip - j;
      for (k = 0; k < l1; k++) {
        for (i = 2; i < ido; i += 2) {
          ch[i - 1 + (k + j * l1) * ido] = cc[i - 1 + (k + j * l1) * ido] - cc[i + (k + jc * l1) * ido];
          ch[i - 1 + (k + jc * l1) * ido] = cc[i - 1 + (k + j * l1) * ido] + cc[i + (k + jc * l1) * ido];
          ch[i + (k + j * l1) * ido] = cc[i + (k + j * l1) * ido] + cc[i - 1 + (k + jc * l1) * ido];
          ch[i + (k + jc * l1) * ido] = cc[i + (k + j * l1) * ido] - cc[i - 1 + (k + jc * l1) * ido];
        }
      }
    }
  } else {
    for (j = 1; j < ipph; j++) {
      jc = ip - j;
      for (i = 2; i < ido; i += 2) {
        for (k = 0; k < l1; k++) {
          ch[i - 1 + (k + j * l1) * ido] = cc[i - 1 + (k + j * l1) * ido] - cc[i + (k + jc * l1) * ido];
          ch[i - 1 + (k + jc * l1) * ido] = cc[i - 1 + (k + j * l1) * ido] + cc[i + (k + jc * l1) * ido];
          ch[i + (k + j * l1) * ido] = cc[i + (k + j * l1) * ido] + cc[i - 1 + (k + jc * l1) * ido];
          ch[i + (k + jc * l1) * ido] = cc[i + (k + j * l1) * ido] - cc[i - 1 + (k + jc * l1) * ido];
        }
      }
    }
  }
  for (ik = 0; ik < idl1; ik++)
    cc[ik] = ch[ik];
  for (j = 1; j < ip; j++)
    for (k = 0; k < l1; k++)
      cc[(k + j * l1) * ido] = ch[(k + j * l1) * ido];
  if (nbd <= l1) {
    is = -ido;
    for (j = 1; j < ip; j++) {
      is += ido;
      idij = is - 1;
      for (i = 2; i < ido; i += 2) {
        idij += 2;
        for (k = 0; k < l1; k++) {
          cc[i - 1 + (k + j * l1) * ido] = wa[idij - 1] * ch[i - 1 + (k + j * l1) * ido] - wa[idij] * ch[i + (k + j * l1) * ido];
          cc[i + (k + j * l1) * ido] = wa[idij - 1] * ch[i + (k + j * l1) * ido] + wa[idij] * ch[i - 1 + (k + j * l1) * ido];
        }
      }
    }
  } else {
    is = -ido;
    for (j = 1; j < ip; j++) {
      is += ido;
      for (k = 0; k < l1; k++) {
        idij = is;
        for (i = 2; i < ido; i += 2) {
          idij += 2;
          cc[i - 1 + (k + j * l1) * ido] = wa[idij - 1] * ch[i - 1 + (k + j * l1) * ido] - wa[idij] * ch[i + (k + j * l1) * ido];
          cc[i + (k + j * l1) * ido] = wa[idij - 1] * ch[i + (k + j * l1) * ido] + wa[idij] * ch[i - 1 + (k + j * l1) * ido];
        }
      }
    }
  }
}
```