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

```asm
<getP8>:
  endbr64
  push   %r15
  mov    %rcx,%r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x148,%rsp
  mov    0x188(%rsp),%ebp
  mov    0x180(%rsp),%r14d
  mov    %rdx,0x8(%rsp)
  mov    %r8,0x18(%rsp)
  mov    0x190(%rsp),%rbx
  imul   %ebp,%ebp
  mov    %r9,0xd0(%rsp)
  movslq %ebp,%r12
  mov    %ebp,0x9c(%rsp)
  shl    $0x3,%r12
  mov    %r12,%rdi
  call   <malloc@plt>
  mov    %rax,0x90(%rsp)
  test   %r14d,%r14d
  jne    L8
  test   %ebp,%ebp
  je     L13
  mov    %r12,%rdx
  xor    %esi,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L13:
  mov    0x90(%rsp),%rax
  add    $0x148,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L8:
  movslq 0x188(%rsp),%rdx
  lea    0x0(,%rdx,8),%rax
  mov    %rdx,0x28(%rsp)
  mov    %rax,%rbp
  mov    %rax,%rdi
  mov    %rax,0xe0(%rsp)
  call   <malloc@plt>
  mov    %rbp,%rdi
  mov    %rax,0x68(%rsp)
  call   <malloc@plt>
  mov    %r14d,%ecx
  imul   %r14d,%ecx
  mov    %rax,0x10(%rsp)
  movslq %ecx,%rbp
  mov    %ecx,0x20(%rsp)
  lea    0x0(,%rbp,8),%rax
  mov    %rax,%rdi
  mov    %rax,0x88(%rsp)
  call   <malloc@plt>
  mov    %rax,0x80(%rsp)
  movslq %r14d,%rax
  lea    0x0(,%rax,8),%r13
  mov    %rax,0x128(%rsp)
  mov    %r13,%rdi
  call   <malloc@plt>
  mov    %r13,%rdi
  mov    %rax,0x30(%rsp)
  call   <malloc@plt>
  mov    %r13,%rdi
  mov    %rax,0x38(%rsp)
  call   <malloc@plt>
  mov    %r13,%rdi
  mov    %rax,0x40(%rsp)
  call   <malloc@plt>
  mov    %r13,%rdi
  mov    %rax,0x48(%rsp)
  call   <malloc@plt>
  mov    %r13,%rdi
  mov    %rax,0x50(%rsp)
  call   <malloc@plt>
  mov    %r13,%rdi
  mov    %rax,0x58(%rsp)
  call   <malloc@plt>
  mov    0x9c(%rsp),%edi
  mov    %rax,0x60(%rsp)
  imul   %r14d,%edi
  imul   %r14d,%edi
  movslq %edi,%rdi
  shl    $0x3,%rdi
  call   <malloc@plt>
  mov    0x188(%rsp),%ecx
  mov    0x28(%rsp),%rdx
  mov    %rax,%r12
  test   %ecx,%ecx
  mov    0x20(%rsp),%ecx
  jle    L190
  mov    %rdx,%rax
  mov    %r14d,0x180(%rsp)
  pxor   %xmm3,%xmm3
  mov    %r13,%r14
  shl    $0x6,%rax
  add    0x18(%rsp),%rax
  mov    %rbp,%r13
  mov    %r15,0x18(%rsp)
  mov    %rax,0x20(%rsp)
  xor    %eax,%eax
  mov    %r12,%r15
  mov    %rdx,%rbp
  mov    %rbx,0x190(%rsp)
  mov    %ecx,%r12d
  mov    %rax,%rbx
L251:
  mov    0x20(%rsp),%rax
  movsd  D223(%rip),%xmm0
  movsd  D223(%rip),%xmm1
  movsd  (%rax,%rbx,8),%xmm2
  addsd  %xmm2,%xmm0
  divsd  %xmm0,%xmm1
  ucomisd %xmm1,%xmm3
  ja     L37
  movapd %xmm1,%xmm0
  mov    0x10(%rsp),%rax
  sqrtsd %xmm0,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm1
  movsd  %xmm0,(%rax,%rbx,8)
  mov    0x68(%rsp),%rax
  movsd  %xmm1,(%rax,%rbx,8)
  add    $0x1,%rbx
  cmp    %rbx,%rbp
  jne    L251
L218:
  mov    %r12d,%ecx
  mov    %r13,%rbp
  mov    %r15,%r12
  mov    %r14,%r13
  mov    0x18(%rsp),%r15
  mov    0x180(%rsp),%r14d
  mov    0x190(%rsp),%rbx
L190:
  test   %r14d,%r14d
  jle    L317
  cmp    $0x1,%r14d
  je     L258
  mov    %r14d,%edx
  mov    0x8(%rsp),%rsi
  xor    %eax,%eax
  movapd D316(%rip),%xmm14
  shr    %edx
  movapd D449(%rip),%xmm13
  movapd D324(%rip),%xmm12
  movapd D143(%rip),%xmm11
  shl    $0x4,%rdx
  movapd D292(%rip),%xmm10
  movapd D140(%rip),%xmm9
  movapd D41(%rip),%xmm7
  movapd D113(%rip),%xmm8
L343:
  movupd (%rsi,%rax,1),%xmm0
  movupd (%r15,%rax,1),%xmm5
  mov    0x38(%rsp),%rdi
  mulpd  %xmm0,%xmm0
  movapd %xmm5,%xmm1
  mulpd  %xmm5,%xmm1
  movapd %xmm0,%xmm4
  movapd %xmm0,%xmm2
  movapd %xmm0,%xmm15
  mulpd  %xmm14,%xmm4
  movapd %xmm1,%xmm3
  mulpd  %xmm0,%xmm2
  mulpd  %xmm12,%xmm15
  mulpd  %xmm5,%xmm3
  subpd  %xmm5,%xmm4
  movapd %xmm2,%xmm6
  mulpd  %xmm5,%xmm15
  movups %xmm4,(%rdi,%rax,1)
  movapd %xmm0,%xmm4
  mov    0x30(%rsp),%rdi
  mulpd  %xmm13,%xmm4
  mulpd  %xmm0,%xmm6
  subpd  %xmm5,%xmm4
  movups %xmm4,(%rdi,%rax,1)
  movapd %xmm2,%xmm4
  mov    0x40(%rsp),%rdi
  mulpd  %xmm11,%xmm4
  subpd  %xmm15,%xmm4
  addpd  %xmm1,%xmm4
  movups %xmm4,(%rdi,%rax,1)
  movapd %xmm2,%xmm4
  mov    0x48(%rsp),%rdi
  mulpd  %xmm10,%xmm4
  subpd  %xmm15,%xmm4
  movapd %xmm1,%xmm15
  mulpd  %xmm9,%xmm15
  addpd  %xmm15,%xmm4
  movapd %xmm2,%xmm15
  mulpd  %xmm8,%xmm15
  movups %xmm4,(%rdi,%rax,1)
  movapd %xmm6,%xmm4
  mov    0x50(%rsp),%rdi
  mulpd  %xmm8,%xmm4
  mulpd  %xmm5,%xmm15
  subpd  %xmm15,%xmm4
  movapd D153(%rip),%xmm15
  mulpd  %xmm0,%xmm15
  mulpd  %xmm1,%xmm15
  addpd  %xmm15,%xmm4
  movapd D311(%rip),%xmm15
  mulpd  %xmm2,%xmm15
  subpd  %xmm3,%xmm4
  movups %xmm4,(%rdi,%rax,1)
  movapd D405(%rip),%xmm4
  mov    0x58(%rsp),%rdi
  mulpd  %xmm5,%xmm15
  mulpd  %xmm6,%xmm4
  mulpd  D213(%rip),%xmm6
  subpd  %xmm15,%xmm4
  movapd D297(%rip),%xmm15
  mulpd  %xmm6,%xmm5
  mulpd  %xmm0,%xmm15
  mulpd  D283(%rip),%xmm0
  mulpd  %xmm1,%xmm15
  mulpd  %xmm3,%xmm0
  addpd  %xmm15,%xmm4
  movapd %xmm3,%xmm15
  mulpd  %xmm7,%xmm15
  subpd  %xmm15,%xmm4
  movups %xmm4,(%rdi,%rax,1)
  movapd %xmm2,%xmm4
  mov    0x60(%rsp),%rdi
  mulpd  %xmm2,%xmm4
  mulpd  D251(%rip),%xmm2
  mulpd  D264(%rip),%xmm4
  mulpd  %xmm1,%xmm2
  mulpd  %xmm1,%xmm1
  subpd  %xmm5,%xmm4
  addpd  %xmm4,%xmm2
  mulpd  %xmm7,%xmm1
  subpd  %xmm0,%xmm2
  movapd %xmm1,%xmm0
  addpd  %xmm2,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %rax,%rdx
  jne    L343
  mov    %r14d,%eax
  and    $0xfffffffe,%eax
  test   $0x1,%r14b
  je     L336
L56:
  mov    0x8(%rsp),%rdi
  cltq
  movsd  D316(%rip),%xmm2
  movsd  (%r15,%rax,8),%xmm4
  movsd  D324(%rip),%xmm6
  movsd  (%rdi,%rax,8),%xmm0
  mov    0x38(%rsp),%rdi
  movapd %xmm4,%xmm3
  mulsd  %xmm0,%xmm0
  mulsd  %xmm4,%xmm3
  mulsd  %xmm0,%xmm2
  movapd %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  movapd %xmm3,%xmm7
  mulsd  %xmm0,%xmm6
  mulsd  %xmm4,%xmm7
  subsd  %xmm4,%xmm2
  movapd %xmm1,%xmm5
  mulsd  %xmm4,%xmm6
  movsd  %xmm2,(%rdi,%rax,8)
  mov    0x30(%rsp),%rdi
  mulsd  %xmm0,%xmm5
  movsd  D449(%rip),%xmm2
  movapd %xmm7,%xmm8
  mulsd  %xmm0,%xmm2
  subsd  %xmm4,%xmm2
  movsd  %xmm2,(%rdi,%rax,8)
  movsd  D143(%rip),%xmm2
  mov    0x40(%rsp),%rdi
  mulsd  %xmm1,%xmm2
  subsd  %xmm6,%xmm2
  addsd  %xmm3,%xmm2
  movsd  %xmm2,(%rdi,%rax,8)
  movsd  D292(%rip),%xmm2
  mov    0x48(%rsp),%rdi
  mulsd  %xmm1,%xmm2
  subsd  %xmm6,%xmm2
  movsd  D140(%rip),%xmm6
  mulsd  %xmm3,%xmm6
  addsd  %xmm6,%xmm2
  movsd  D113(%rip),%xmm6
  movsd  %xmm2,(%rdi,%rax,8)
  movapd %xmm5,%xmm2
  mov    0x50(%rsp),%rdi
  mulsd  %xmm6,%xmm2
  mulsd  %xmm1,%xmm6
  mulsd  %xmm4,%xmm6
  subsd  %xmm6,%xmm2
  movsd  D153(%rip),%xmm6
  mulsd  %xmm0,%xmm6
  mulsd  %xmm3,%xmm6
  addsd  %xmm6,%xmm2
  movsd  D311(%rip),%xmm6
  mulsd  %xmm1,%xmm6
  subsd  %xmm7,%xmm2
  movsd  %xmm2,(%rdi,%rax,8)
  movsd  D405(%rip),%xmm2
  mov    0x58(%rsp),%rdi
  mulsd  %xmm4,%xmm6
  mulsd  %xmm5,%xmm2
  mulsd  D213(%rip),%xmm5
  subsd  %xmm6,%xmm2
  movsd  D297(%rip),%xmm6
  mulsd  %xmm5,%xmm4
  mulsd  %xmm0,%xmm6
  mulsd  D283(%rip),%xmm0
  mulsd  %xmm3,%xmm6
  mulsd  %xmm7,%xmm0
  addsd  %xmm6,%xmm2
  movsd  D41(%rip),%xmm6
  mulsd  %xmm6,%xmm8
  subsd  %xmm8,%xmm2
  movsd  %xmm2,(%rdi,%rax,8)
  movapd %xmm1,%xmm2
  mov    0x60(%rsp),%rdi
  mulsd  %xmm1,%xmm2
  mulsd  D251(%rip),%xmm1
  mulsd  D264(%rip),%xmm2
  mulsd  %xmm3,%xmm1
  subsd  %xmm4,%xmm2
  mulsd  %xmm3,%xmm3
  addsd  %xmm2,%xmm1
  subsd  %xmm0,%xmm1
  movapd %xmm3,%xmm0
  mulsd  %xmm6,%xmm0
  addsd  %xmm0,%xmm1
  movsd  %xmm1,(%rdi,%rax,8)
L336:
  lea    (%rcx,%rcx,1),%edi
  movl   $0x0,0x18(%rsp)
  xor    %r8d,%r8d
  lea    (%rdi,%rcx,1),%eax
  add    %eax,%eax
  mov    %eax,0x120(%rsp)
  mov    %rbp,%rax
  shl    $0x5,%rax
  add    %rbx,%rax
  mov    %rax,0x20(%rsp)
  mov    0x88(%rsp),%rax
  add    %rbx,%rax
  mov    %rax,0x28(%rsp)
  mov    %rbp,%rax
  shl    $0x4,%rax
  mov    %rax,0x70(%rsp)
  lea    0x0(,%rbp,8),%rax
  sub    %rbp,%rax
  xor    %ebp,%ebp
  lea    (%rbx,%rax,8),%rax
  mov    %rax,0xa8(%rsp)
  mov    %r14d,%eax
  shr    %eax
  sub    $0x1,%eax
  add    $0x1,%rax
  shl    $0x4,%rax
  mov    %rax,0x108(%rsp)
  mov    %r14d,%eax
  and    $0xfffffffe,%eax
  mov    %eax,0xd8(%rsp)
  lea    (%rcx,%rcx,4),%eax
  mov    %eax,0x124(%rsp)
L130:
  mov    0x8(%rsp),%rax
  movsd  D417(%rip),%xmm0
  movsd  D161(%rip),%xmm6
  mov    0x120(%rsp),%esi
  movsd  (%rax,%r8,8),%xmm8
  mov    0x38(%rsp),%rax
  add    0x18(%rsp),%esi
  movsd  D80(%rip),%xmm5
  mulsd  (%rax,%r8,8),%xmm0
  mov    0x48(%rsp),%rax
  mov    %esi,0x104(%rsp)
  sub    %edi,%esi
  mov    %esi,0x100(%rsp)
  sub    %edi,%esi
  movsd  D323(%rip),%xmm4
  mulsd  (%rax,%r8,8),%xmm6
  mov    0x58(%rsp),%rax
  mov    %esi,0xf8(%rsp)
  movsd  D266(%rip),%xmm3
  movsd  D437(%rip),%xmm2
  mulsd  (%rax,%r8,8),%xmm5
  mov    0x124(%rsp),%eax
  add    %esi,%eax
  mov    0x30(%rsp),%rsi
  mov    %eax,0xf0(%rsp)
  sub    %edi,%eax
  mulsd  (%rsi,%r8,8),%xmm4
  mov    %eax,0xfc(%rsp)
  sub    %edi,%eax
  mov    0x40(%rsp),%rsi
  mov    %eax,0xe8(%rsp)
  sub    %edi,%eax
  mov    %eax,0x78(%rsp)
  mov    0x60(%rsp),%rax
  mulsd  (%rsi,%r8,8),%xmm3
  mov    0x50(%rsp),%rsi
  movsd  (%rax,%r8,8),%xmm7
  mulsd  (%rsi,%r8,8),%xmm2
  cmp    $0x1,%r14d
  je     L125
  mov    0x88(%rsp),%rax
  mov    0x28(%rsp),%rdx
  movapd %xmm2,%xmm1
  movapd %xmm8,%xmm14
  mov    0xa8(%rsp),%rsi
  mov    0x70(%rsp),%rcx
  unpcklpd %xmm1,%xmm1
  movapd %xmm0,%xmm13
  add    0x20(%rsp),%rcx
  add    %rax,%rdx
  movapd %xmm6,%xmm12
  movaps %xmm1,0xc0(%rsp)
  mov    %rcx,%r9
  lea    0x0(%rbp,%rsi,1),%r10
  lea    (%rax,%rdx,1),%rsi
  mov    %r13,0x130(%rsp)
  sub    %rax,%r9
  movapd %xmm7,%xmm1
  movapd %xmm5,%xmm11
  mov    %r14d,%r13d
  movapd %xmm4,%xmm10
  unpcklpd %xmm1,%xmm1
  lea    (%rbx,%rbp,1),%r11
  mov    %rbx,%r14
  mov    0x80(%rsp),%rax
  movapd %xmm3,%xmm9
  mov    %rbp,%rbx
  unpcklpd %xmm14,%xmm14
  unpcklpd %xmm13,%xmm13
  unpcklpd %xmm12,%xmm12
  unpcklpd %xmm11,%xmm11
  movaps %xmm1,0xb0(%rsp)
  add    %rbp,%rax
  unpcklpd %xmm10,%xmm10
  mov    %r8,%rbp
  movsd  %xmm0,0x138(%rsp)
  mov    %rax,0xa0(%rsp)
  mov    %r12,%r8
  xor    %eax,%eax
  mov    %r15,%r12
  unpcklpd %xmm9,%xmm9
  mov    %edi,%r15d
L71:
  mov    0x38(%rsp),%rdi
  movupd (%rdx,%rax,1),%xmm0
  movupd (%rdi,%rax,1),%xmm1
  mov    0x20(%rsp),%rdi
  mulpd  %xmm13,%xmm1
  movupd (%rdi,%rax,1),%xmm15
  mov    0x48(%rsp),%rdi
  mulpd  %xmm15,%xmm1
  movupd (%rcx,%rax,1),%xmm15
  mulpd  D435(%rip),%xmm15
  addpd  %xmm15,%xmm1
  movupd (%rdi,%rax,1),%xmm15
  mov    0x58(%rsp),%rdi
  mulpd  %xmm12,%xmm15
  mulpd  %xmm0,%xmm15
  movupd (%rdi,%rax,1),%xmm0
  mov    0x8(%rsp),%rdi
  addpd  %xmm15,%xmm1
  movapd %xmm0,%xmm15
  movupd (%r11,%rax,1),%xmm0
  mulpd  %xmm11,%xmm15
  mulpd  %xmm0,%xmm15
  movupd (%rdi,%rax,1),%xmm0
  mov    0x30(%rsp),%rdi
  addpd  %xmm15,%xmm1
  movapd %xmm0,%xmm15
  movupd (%rdi,%rax,1),%xmm0
  mov    0x40(%rsp),%rdi
  mulpd  %xmm14,%xmm15
  mulpd  %xmm15,%xmm1
  movupd (%r10,%rax,1),%xmm15
  mulpd  D264(%rip),%xmm15
  addpd  %xmm15,%xmm1
  movapd %xmm0,%xmm15
  movupd (%r9,%rax,1),%xmm0
  mulpd  %xmm10,%xmm15
  mulpd  %xmm0,%xmm15
  movupd (%rdi,%rax,1),%xmm0
  mov    0x50(%rsp),%rdi
  addpd  %xmm15,%xmm1
  movapd %xmm0,%xmm15
  movupd (%rsi,%rax,1),%xmm0
  mulpd  %xmm9,%xmm15
  mulpd  %xmm0,%xmm15
  movupd (%rdi,%rax,1),%xmm0
  mov    0x28(%rsp),%rdi
  addpd  %xmm15,%xmm1
  movapd 0xc0(%rsp),%xmm15
  mulpd  %xmm0,%xmm15
  movupd (%rdi,%rax,1),%xmm0
  mov    0x60(%rsp),%rdi
  mulpd  %xmm0,%xmm15
  movupd (%rdi,%rax,1),%xmm0
  mov    0xa0(%rsp),%rdi
  movaps %xmm0,0x110(%rsp)
  addpd  %xmm15,%xmm1
  movapd 0xb0(%rsp),%xmm15
  mulpd  %xmm0,%xmm15
  addpd  %xmm15,%xmm1
  movups %xmm1,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    0x108(%rsp),%rax
  jne    L71
  mov    0xd8(%rsp),%eax
  mov    %r15d,%edi
  mov    %r12,%r15
  mov    %r8,%r12
  movsd  0x138(%rsp),%xmm0
  mov    %rbp,%r8
  mov    %rbx,%rbp
  mov    %r14,%rbx
  mov    %r13d,%r14d
  mov    0x130(%rsp),%r13
  cmp    %eax,%r14d
  jne    L208
  jmp    L15
L125:
  xor    %eax,%eax
L208:
  mov    0x18(%rsp),%esi
  mov    0x38(%rsp),%r11
  movslq %eax,%rdx
  movsd  D435(%rip),%xmm1
  lea    (%rsi,%rax,1),%ecx
  mov    0x100(%rsp),%esi
  mulsd  (%r11,%rdx,8),%xmm0
  mov    0x48(%rsp),%r11
  movslq %ecx,%rcx
  add    %eax,%esi
  mulsd  (%r11,%rdx,8),%xmm6
  movslq %esi,%rsi
  mov    0x30(%rsp),%r11
  mulsd  (%rbx,%rsi,8),%xmm0
  mov    0x104(%rsp),%esi
  mulsd  (%r11,%rdx,8),%xmm4
  mov    0x40(%rsp),%r11
  add    %eax,%esi
  mulsd  (%r11,%rdx,8),%xmm3
  movslq %esi,%rsi
  mulsd  (%rbx,%rsi,8),%xmm1
  mov    0xf8(%rsp),%esi
  add    %eax,%esi
  movslq %esi,%rsi
  mulsd  (%rbx,%rsi,8),%xmm6
  mov    0x58(%rsp),%rsi
  addsd  %xmm1,%xmm0
  movsd  D264(%rip),%xmm1
  mulsd  (%rsi,%rdx,8),%xmm5
  mov    0x8(%rsp),%rsi
  mulsd  (%rbx,%rcx,8),%xmm5
  mulsd  (%rsi,%rdx,8),%xmm8
  mov    0xf0(%rsp),%esi
  addsd  %xmm6,%xmm0
  add    %eax,%esi
  movslq %esi,%rsi
  addsd  %xmm5,%xmm0
  mulsd  (%rbx,%rsi,8),%xmm1
  mov    0xfc(%rsp),%esi
  add    %eax,%esi
  mulsd  %xmm8,%xmm0
  movslq %esi,%rsi
  mulsd  (%rbx,%rsi,8),%xmm4
  mov    0xe8(%rsp),%esi
  add    %eax,%esi
  add    0x78(%rsp),%eax
  movslq %esi,%rsi
  cltq
  addsd  %xmm1,%xmm0
  mulsd  (%rbx,%rsi,8),%xmm3
  mov    0x50(%rsp),%rsi
  mulsd  (%rsi,%rdx,8),%xmm2
  addsd  %xmm4,%xmm0
  mulsd  (%rbx,%rax,8),%xmm2
  mov    0x60(%rsp),%rax
  mulsd  (%rax,%rdx,8),%xmm7
  mov    0x80(%rsp),%rax
  addsd  %xmm3,%xmm0
  addsd  %xmm2,%xmm0
  addsd  %xmm7,%xmm0
  movsd  %xmm0,(%rax,%rcx,8)
L15:
  add    %r14d,0x18(%rsp)
  add    $0x1,%r8
  add    %r13,%rbp
  add    %r13,0x20(%rsp)
  add    %r13,0x28(%rsp)
  cmp    %r8,0x128(%rsp)
  jne    L130
  mov    0x188(%rsp),%eax
  test   %eax,%eax
  jle    L275
  mov    %r14d,%eax
  mov    0x68(%rsp),%rbx
  movl   $0x0,0xa8(%rsp)
  imul   %r14d,%eax
  mov    %r13,0xc0(%rsp)
  imul   0x188(%rsp),%eax
  mov    %rbx,0x78(%rsp)
  mov    %r14d,0x180(%rsp)
  mov    %r12,0xd8(%rsp)
  mov    %eax,0xf8(%rsp)
  mov    0x188(%rsp),%eax
  mov    %rax,0x18(%rsp)
  lea    (%rbx,%rax,8),%rax
  mov    %rax,0xb0(%rsp)
  lea    -0x1(%r14),%eax
  lea    0x8(%r15,%rax,8),%rax
  mov    %rax,0xe8(%rsp)
  mov    %r14d,%eax
  mov    %rax,%r12
L298:
  movslq 0xa8(%rsp),%rax
  mov    0xd8(%rsp),%rbx
  lea    (%rbx,%rax,8),%rax
  mov    %rax,0xa0(%rsp)
  mov    0x68(%rsp),%rax
  mov    %rax,0x70(%rsp)
L350:
  mov    0x78(%rsp),%rax
  mov    0x80(%rsp),%rbp
  mov    %r15,%r14
  mov    0xa0(%rsp),%rbx
  movsd  (%rax),%xmm0
  mov    0x70(%rsp),%rax
  xorpd  D319(%rip),%xmm0
  movsd  (%rax),%xmm7
  movsd  %xmm0,0xf0(%rsp)
  movsd  %xmm7,0x20(%rsp)
L9:
  movsd  0xf0(%rsp),%xmm6
  mulsd  (%r14),%xmm6
  xor    %r13d,%r13d
  movsd  %xmm6,0x28(%rsp)
  nopl   0x0(%rax)
L61:
  movsd  0x20(%rsp),%xmm1
  mulsd  (%r15,%r13,8),%xmm1
  movsd  0x28(%rsp),%xmm0
  movsd  0x0(%rbp,%r13,8),%xmm7
  movsd  %xmm7,0x8(%rsp)
  subsd  %xmm1,%xmm0
  call   <exp@plt>
  mulsd  0x8(%rsp),%xmm0
  movsd  %xmm0,(%rbx,%r13,8)
  add    $0x1,%r13
  cmp    %r12,%r13
  jne    L61
  mov    0xc0(%rsp),%rax
  add    $0x8,%r14
  add    %rax,%rbp
  add    %rax,%rbx
  cmp    0xe8(%rsp),%r14
  jne    L9
  addq   $0x8,0x70(%rsp)
  mov    0x88(%rsp),%rdi
  mov    0x70(%rsp),%rax
  add    %rdi,0xa0(%rsp)
  cmp    0xb0(%rsp),%rax
  jne    L350
  addq   $0x8,0x78(%rsp)
  mov    0xf8(%rsp),%ebx
  mov    0x78(%rsp),%rax
  add    %ebx,0xa8(%rsp)
  cmp    0xb0(%rsp),%rax
  jne    L298
  mov    0xc0(%rsp),%r13
  mov    0xd8(%rsp),%r12
  mov    0x180(%rsp),%r14d
L335:
  mov    0x9c(%rsp),%eax
  mov    %r14d,%ebx
  mov    %r14d,%ebp
  movl   $0x0,0x88(%rsp)
  imul   %r14d,%ebx
  and    $0xfffffffe,%ebp
  pxor   %xmm3,%xmm3
  movq   $0x0,0x28(%rsp)
  shl    $0x3,%eax
  mov    %eax,0xa8(%rsp)
  mov    0x188(%rsp),%eax
  imul   %ebx,%eax
  mov    %eax,0x9c(%rsp)
  mov    %r14d,%eax
  shr    %eax
  sub    $0x1,%eax
  add    $0x1,%rax
  shl    $0x4,%rax
  mov    %rax,%r15
L357:
  movslq 0x88(%rsp),%rax
  mov    0xa8(%rsp),%edi
  mov    0x90(%rsp),%rsi
  add    %eax,%edi
  lea    (%rsi,%rax,8),%rax
  mov    %edi,0xb0(%rsp)
  mov    %rax,0xa0(%rsp)
  mov    0x28(%rsp),%rax
  mov    %edi,0x78(%rsp)
  mov    %rax,0x70(%rsp)
L219:
  movslq 0x78(%rsp),%rax
  mov    0xd0(%rsp),%rdi
  xor    %r10d,%r10d
  movapd %xmm3,%xmm2
  movq   $0x0,0x20(%rsp)
  lea    (%rdi,%rax,8),%r11
L198:
  mov    0x20(%rsp),%rdi
  mov    0xb0(%rsp),%eax
  xor    %r9d,%r9d
  xor    %r8d,%r8d
  mov    0xd0(%rsp),%rsi
  add    %edi,%eax
  cltq
  movsd  (%rsi,%rax,8),%xmm5
  mov    0x10(%rsp),%rax
  movsd  (%rax,%rdi,8),%xmm4
  movslq %r10d,%rax
  mov    %rax,0x8(%rsp)
  nopl   0x0(%rax,%rax,1)
L295:
  test   %r14d,%r14d
  jle    L162
  movslq %r9d,%rax
  add    0x8(%rsp),%rax
  lea    (%r9,%r10,1),%edx
  xor    %edi,%edi
  lea    (%r12,%rax,8),%rsi
  movapd %xmm3,%xmm0
  nop
L265:
  cmp    $0x1,%r14d
  je     L375
  lea    (%r15,%rsi,1),%rcx
  mov    %rsi,%rax
  nopl   0x0(%rax)
L119:
  movsd  (%rax),%xmm1
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  movsd  -0x8(%rax),%xmm1
  addsd  %xmm1,%xmm0
  cmp    %rcx,%rax
  jne    L119
  mov    %ebp,%eax
  cmp    %ebp,%r14d
  je     L305
L68:
  add    %edx,%eax
  cltq
  addsd  (%r12,%rax,8),%xmm0
L305:
  add    $0x1,%edi
  add    %r14d,%edx
  add    %r13,%rsi
  cmp    %edi,%r14d
  jne    L265
L99:
  movsd  (%r11,%r8,8),%xmm1
  mov    0x10(%rsp),%rax
  add    %ebx,%r9d
  mulsd  %xmm5,%xmm1
  mulsd  %xmm4,%xmm1
  mulsd  (%rax,%r8,8),%xmm1
  add    $0x1,%r8
  mulsd  %xmm1,%xmm0
  addsd  %xmm0,%xmm2
  cmp    0x18(%rsp),%r8
  jne    L295
  addq   $0x1,0x20(%rsp)
  mov    0x20(%rsp),%rax
  add    0x9c(%rsp),%r10d
  cmp    %r8,%rax
  jne    L198
  mulsd  D458(%rip),%xmm2
  mov    0x70(%rsp),%rax
  mov    0xa0(%rsp),%rdi
  mov    0x188(%rsp),%esi
  add    %esi,0x78(%rsp)
  movsd  %xmm2,(%rdi,%rax,8)
  add    $0x1,%rax
  mov    %rax,0x70(%rsp)
  cmp    %eax,%esi
  jg     L219
  addq   $0x1,0x28(%rsp)
  mov    0x28(%rsp),%rax
  add    %esi,0x88(%rsp)
  cmp    0x20(%rsp),%rax
  jne    L357
  cmpl   $0x1,0x188(%rsp)
  jle    L275
  mov    %esi,%eax
  mov    0x90(%rsp),%rsi
  mov    0xe0(%rsp),%r10
  lea    -0x2(%rax),%ecx
  mov    $0x1,%eax
  mov    %rsi,%rdi
  lea    0x8(%r10),%r9
  add    $0x2,%rcx
  add    %r10,%rdi
L248:
  mov    %rdi,%r8
  mov    %rax,%rdx
L346:
  movsd  (%rsi,%rdx,8),%xmm0
  add    $0x1,%rdx
  movsd  %xmm0,(%r8)
  add    %r10,%r8
  cmp    %edx,0x188(%rsp)
  jg     L346
  add    $0x1,%rax
  add    %r9,%rdi
  add    %r10,%rsi
  cmp    %rcx,%rax
  jne    L248
L275:
  mov    0x10(%rsp),%rdi
  call   <free@plt>
  mov    0x68(%rsp),%rdi
  call   <free@plt>
  mov    0x80(%rsp),%rdi
  call   <free@plt>
  mov    0x30(%rsp),%rdi
  call   <free@plt>
  mov    0x38(%rsp),%rdi
  call   <free@plt>
  mov    0x40(%rsp),%rdi
  call   <free@plt>
  mov    0x48(%rsp),%rdi
  call   <free@plt>
  mov    0x50(%rsp),%rdi
  call   <free@plt>
  mov    0x58(%rsp),%rdi
  call   <free@plt>
  mov    0x60(%rsp),%rdi
  call   <free@plt>
  mov    %r12,%rdi
  call   <free@plt>
  jmp    L13
  nopl   0x0(%rax,%rax,1)
L375:
  xor    %eax,%eax
  jmp    L68
L162:
  movapd %xmm3,%xmm0
  jmp    L99
L317:
  mov    0x188(%rsp),%eax
  mov    0x188(%rsp),%edx
  mov    %rax,0x18(%rsp)
  test   %edx,%edx
  jg     L335
  jmp    L275
L37:
  movapd %xmm1,%xmm0
  movsd  %xmm3,0x78(%rsp)
  movsd  %xmm2,0x70(%rsp)
  movsd  %xmm1,0x28(%rsp)
  call   <sqrt@plt>
  movsd  0x28(%rsp),%xmm1
  mov    0x10(%rsp),%rax
  movsd  0x70(%rsp),%xmm2
  movsd  0x78(%rsp),%xmm3
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm2
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax,%rbx,8)
  mov    0x68(%rsp),%rax
  movsd  %xmm2,(%rax,%rbx,8)
  add    $0x1,%rbx
  cmp    %rbp,%rbx
  jne    L251
  jmp    L218
  nopl   0x0(%rax,%rax,1)
L258:
  xor    %eax,%eax
  jmp    L56
```

tool_calls: name: parse_data
arguments: tag: D223
type_guessed: f64
name: parse_data
arguments: tag: D316
type_guessed: f64[2]
name: parse_data
arguments: tag: D449
type_guessed: f64[2]
name: parse_data
arguments: tag: D324
type_guessed: f32[4]
name: parse_data
arguments: tag: D143
type_guessed: f32[4]
name: parse_data
arguments: tag: D292
type_guessed: f32[4]
name: parse_data
arguments: tag: D140
type_guessed: f32[4]
name: parse_data
arguments: tag: D41
type_guessed: f32[4]
name: parse_data
arguments: tag: D113
type_guessed: f32[4]
name: parse_data
arguments: tag: D153
type_guessed: f32[4]
name: parse_data
arguments: tag: D311
type_guessed: f32[4]
name: parse_data
arguments: tag: D405
type_guessed: f32[4]
name: parse_data
arguments: tag: D213
type_guessed: f32[4]
name: parse_data
arguments: tag: D297
type_guessed: f32[4]
name: parse_data
arguments: tag: D283
type_guessed: f32[4]
name: parse_data
arguments: tag: D251
type_guessed: f32[4]
name: parse_data
arguments: tag: D264
type_guessed: f32[4]
name: parse_data
arguments: tag: D417
type_guessed: f32[2]
name: parse_data
arguments: tag: D161
type_guessed: f32[2]
name: parse_data
arguments: tag: D80
type_guessed: f32[2]
name: parse_data
arguments: tag: D323
type_guessed: f32[2]
name: parse_data
arguments: tag: D266
type_guessed: f32[2]
name: parse_data
arguments: tag: D437
type_guessed: f32[2]
name: parse_data
arguments: tag: D435
type_guessed: f32[4]
name: parse_data
arguments: tag: D319
type_guessed: f32[4]
name: parse_data
arguments: tag: D458
type_guessed: byte[8]

tool: D223: 1

tool: {"D316": [5.0,5.0]}

tool: {"D449": [15.0,15.0]}

tool: {"D324": [0.0,2.90625,0.0,2.90625]}

tool: {"D143": [0.0,3.25390625,0.0,3.25390625]}

tool: {"D292": [0.0,3.0546875,0.0,3.0546875]}

tool: {"D140": [0.0,2.125,0.0,2.125]}

tool: {"D41": [0.0,3.0234375,0.0,3.0234375]}

tool: {"D113": [0.0,3.529296875,0.0,3.529296875]}

tool: {"D153": [0.0,3.0078125,0.0,3.0078125]}

tool: {"D311": [0.0,4.4775390625,0.0,4.4775390625]}

tool: {"D405": [0.0,4.1982421875,0.0,4.1982421875]}

tool: {"D213": [0.0,6.233154296875,0.0,6.233154296875]}

tool: {"D297": [0.0,3.8759765625,0.0,3.8759765625]}

tool: {"D283": [0.0,4.615234375,0.0,4.615234375]}

tool: {"D251": [0.0,5.845947265625,0.0,5.845947265625]}

tool: {"D264": [0.0,5.7855224609375,0.0,5.7855224609375]}

tool: {"D417": [0.0,8.0997314453125]}

tool: {"D161": [0.0,6.56396484375]}

tool: {"D80": [0.0,3.53125]}

tool: {"D323": [0.0,5.337890625]}

tool: {"D266": [0.0,5.1767578125]}

tool: {"D437": [0.0,5.115234375]}

tool: {"D435": [0.0,7.7855224609375,0.0,7.7855224609375]}

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

tool: {"D458": [0x3d,0x2a,0x5a,0x96,0x10,0xf9,0x64,0x3f]}

assistant: ```c
double *getP8(double *x, double *y, double *z, double *r2, double *alphas, double *betas, int Asize, int Nsize, double *ReX) {
  double *P8 = (double *)malloc(Nsize * Nsize * sizeof(double));
  if (Asize == 0) {
    for (int n = 0; n < Nsize * Nsize; n++) {
      P8[n] = 0.0;
    }
    return P8;
  }
  double sumsInner = 0;
  double sumsOuter = 0;
  double oneO1Palpha;
  double oneO1PalphaSqrt;
  double z2 = 0, z4 = 0, z6 = 0, z8 = 0;
  double r4 = 0, r6 = 0, r8 = 0;
  double *alphaO1Palpha = (double *)malloc(Nsize * sizeof(double));
  double *oneO1PalphaSqrt19 = (double *)malloc(Nsize * sizeof(double));
  double *ReXStripe = (double *)malloc(Asize * Asize * sizeof(double));
  double *zr15 = (double *)malloc(Asize * sizeof(double));
  double *zr5 = (double *)malloc(Asize * sizeof(double));
  double *zr65 = (double *)malloc(Asize * sizeof(double));
  double *zr39 = (double *)malloc(Asize * sizeof(double));
  double *zr143 = (double *)malloc(Asize * sizeof(double));
  double *zr715 = (double *)malloc(Asize * sizeof(double));
  double *zr6435 = (double *)malloc(Asize * sizeof(double));
  double *kkdij = (double *)malloc(Nsize * Nsize * Asize * Asize * sizeof(double));
  for (int n = 0; n < Nsize; n++) {
    oneO1Palpha = 1.0 / (1.0 + alphas[8 * Nsize + n]);
    oneO1PalphaSqrt = sqrt(oneO1Palpha);
    oneO1PalphaSqrt19[n] = oneO1PalphaSqrt * oneO1Palpha * oneO1Palpha * oneO1Palpha * oneO1Palpha * oneO1Palpha * oneO1Palpha * oneO1Palpha * oneO1Palpha * oneO1Palpha;
    alphaO1Palpha[n] = alphas[8 * Nsize + n] * oneO1Palpha;
  }
  for (int i = 0; i < Asize; i++) {
    z2 = z[i] * z[i];
    z4 = z2 * z2;
    z6 = z2 * z4;
    z8 = z4 * z4;
    r4 = r2[i] * r2[i];
    r6 = r4 * r2[i];
    r8 = r4 * r4;
    zr5[i] = 5.0 * z2 - r2[i];
    zr15[i] = 15.0 * z2 - r2[i];
    zr65[i] = 65 * z4 - 26 * z2 * r2[i] + r4;
    zr39[i] = 39 * z4 - 26 * z2 * r2[i] + 3 * r4;
    zr143[i] = 143 * z6 - 143 * z4 * r2[i] + 33 * z2 * r4 - r6;
    zr715[i] = 715 * z6 - 1001 * z4 * r2[i] + 385 * z2 * r4 - 35 * r6;
    zr6435[i] = 6435 * z8 - 12012 * z6 * r2[i] + 6930 * z4 * r4 - 1260 * z2 * r6 + 35 * r8;
  }
  for (int i = 0; i < Asize; i++) {
    for (int j = 0; j < Asize; j++) {
      ReXStripe[i * Asize + j] = z[i] * z[j] * (102960 * ReX[6 * Asize * Asize + i * Asize + j] + 144144 * zr5[i] * zr5[j] * ReX[4 * Asize * Asize + i * Asize + j] + 18480 * zr39[i] * zr39[j] * ReX[2 * Asize * Asize + i * Asize + j] + 144 * zr715[i] * zr715[j] * ReX[i * Asize + j]) + 6435 * ReX[7 * Asize * Asize + i * Asize + j] + 3432 * zr15[i] * zr15[j] * ReX[5 * Asize * Asize + i * Asize + j] + 2772 * zr65[i] * zr65[j] * ReX[3 * Asize * Asize + i * Asize + j] + 2520 * zr143[i] * zr143[j] * ReX[Asize * Asize + i * Asize + j] + zr6435[i] * zr6435[j];
    }
  }
  for (int k = 0; k < Nsize; k++) {
    for (int kd = 0; kd < Nsize; kd++) {
      for (int i = 0; i < Asize; i++) {
        for (int j = 0; j < Asize; j++) {
          kkdij[k * Nsize * Asize * Asize + kd * Asize * Asize + i * Asize + j] = ReXStripe[i * Asize + j] * exp(-alphaO1Palpha[k] * r2[i] - alphaO1Palpha[kd] * r2[j]);
        }
      }
    }
  }
  for (int n = 0; n < Nsize; n++) {
    for (int nd = n; nd < Nsize; nd++) {
      sumsOuter = 0;
      for (int k = 0; k < Nsize; k++) {
        for (int kd = 0; kd < Nsize; kd++) {
          sumsInner = 0;
          for (int i = 0; i < Asize; i++) {
            for (int j = 0; j < Asize; j++) {
              sumsInner += kkdij[k * Nsize * Asize * Asize + kd * Asize * Asize + i * Asize + j];
            }
          }
          sumsOuter += betas[8 * Nsize * Nsize + n * Nsize + k] * betas[8 * Nsize * Nsize + nd * Nsize + kd] * oneO1PalphaSqrt19[k] * oneO1PalphaSqrt19[kd] * sumsInner;
        }
      }
      P8[Nsize * n + nd] = 17.0 * 9.86960440108936 * 1.52587890625e-05 * sumsOuter;
    }
  }
  for (int n = 0; n < Nsize; n++) {
    for (int nd = n + 1; nd < Nsize; nd++) {
      P8[Nsize * nd + n] = P8[Nsize * n + nd];
    }
  }
  free(oneO1PalphaSqrt19);
  free(alphaO1Palpha);
  free(ReXStripe);
  free(zr15);
  free(zr5);
  free(zr65);
  free(zr39);
  free(zr143);
  free(zr715);
  free(zr6435);
  free(kkdij);
  return P8;
}
```