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

```asm
<find_surface_point>:
  endbr64
  push   %r15
  mov    %rcx,%r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  mov    %rdx,%rbp
  push   %rbx
  sub    $0x118,%rsp
  mov    0x168(%rsp),%ecx
  mov    0x160(%rsp),%r14
  mov    0x170(%rsp),%r12d
  cmp    $0x1,%ecx
  je     L50
  movq   D65(%rip),%xmm3
  movsd  D23(%rip),%xmm2
  pxor   %xmm15,%xmm15
L120:
  lea    0x8(%rbp),%r13
  lea    0x8(%rsi),%rbx
  cmp    %r13,%r9
  je     L264
L705:
  cmp    %rbx,%r9
  je     L264
  movupd 0x0(%rbp),%xmm0
  movupd (%rsi),%xmm6
  subpd  %xmm6,%xmm0
  movups %xmm0,(%r9)
  movsd  0x10(%rbp),%xmm0
  subsd  0x10(%rsi),%xmm0
  movsd  %xmm0,0x10(%r9)
  movapd %xmm0,%xmm4
L345:
  movsd  (%r9),%xmm1
  movsd  0x8(%r9),%xmm8
  movapd %xmm1,%xmm0
  movapd %xmm8,%xmm5
  mulsd  %xmm8,%xmm5
  mulsd  %xmm1,%xmm0
  addsd  %xmm5,%xmm0
  movapd %xmm4,%xmm5
  mulsd  %xmm4,%xmm5
  addsd  %xmm5,%xmm0
  ucomisd %xmm0,%xmm15
  ja     L539
  sqrtsd %xmm0,%xmm0
L18:
  movapd %xmm0,%xmm5
  andpd  %xmm3,%xmm5
  comisd %xmm2,%xmm5
  jbe    L797
  divsd  %xmm0,%xmm1
  divsd  %xmm0,%xmm8
  movsd  %xmm1,(%r9)
  divsd  %xmm0,%xmm4
  movsd  %xmm8,0x8(%r9)
  movsd  %xmm4,0x10(%r9)
L797:
  movsd  (%r8),%xmm5
  movsd  0x8(%r8),%xmm7
  movsd  0x10(%r8),%xmm6
  mulsd  %xmm5,%xmm1
  mulsd  %xmm7,%xmm8
  mulsd  %xmm6,%xmm4
  addsd  %xmm8,%xmm1
  addsd  %xmm4,%xmm1
  comisd %xmm1,%xmm15
  jbe    L471
  movq   D66(%rip),%xmm0
  xorpd  %xmm0,%xmm5
  xorpd  %xmm0,%xmm7
  xorpd  %xmm0,%xmm6
  movsd  %xmm5,(%r8)
  movsd  %xmm7,0x8(%r8)
  movsd  %xmm6,0x10(%r8)
L471:
  cmp    $0x1,%ecx
  jne    L276
  movsd  0x8(%rdi),%xmm1
  movapd %xmm5,%xmm0
  xorpd  D66(%rip),%xmm0
  mulsd  (%rdi),%xmm0
  mulsd  %xmm7,%xmm1
  subsd  %xmm1,%xmm0
  movsd  0x10(%rdi),%xmm1
  mulsd  %xmm6,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,0x18(%r8)
L276:
  test   %r12d,%r12d
  jne    L642
  movsd  %xmm5,(%r14)
  movsd  0x8(%r8),%xmm0
  movsd  %xmm0,0x8(%r14)
  movsd  0x10(%r8),%xmm6
  movsd  %xmm6,0x10(%r14)
  movsd  (%r8),%xmm5
  movsd  0x8(%r8),%xmm7
L642:
  movsd  0x0(%rbp),%xmm9
  movsd  (%rsi),%xmm4
  movsd  0x8(%rbp),%xmm10
  movsd  0x8(%rsi),%xmm0
  subsd  %xmm9,%xmm4
  movsd  0x10(%rbp),%xmm8
  subsd  %xmm10,%xmm0
  movapd %xmm4,%xmm1
  mulsd  %xmm5,%xmm1
  mulsd  %xmm7,%xmm0
  addsd  %xmm1,%xmm0
  movsd  0x10(%rsi),%xmm1
  subsd  %xmm8,%xmm1
  mulsd  %xmm6,%xmm1
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  andpd  %xmm3,%xmm1
  comisd %xmm2,%xmm1
  jbe    L187
  mulsd  %xmm9,%xmm5
  movsd  0x18(%r8),%xmm1
  xorpd  D66(%rip),%xmm1
  mulsd  %xmm7,%xmm10
  mulsd  %xmm6,%xmm8
  subsd  %xmm5,%xmm1
  subsd  %xmm10,%xmm1
  subsd  %xmm8,%xmm1
  divsd  %xmm0,%xmm1
  comisd D93(%rip),%xmm1
  jbe    L187
  cmp    %r13,%r15
  je     L263
  cmp    %rbx,%r15
  je     L263
  movupd 0x0(%rbp),%xmm7
  movupd (%rsi),%xmm0
  movapd %xmm1,%xmm4
  unpcklpd %xmm4,%xmm4
  subpd  %xmm7,%xmm0
  mulpd  %xmm4,%xmm0
  addpd  %xmm7,%xmm0
  movups %xmm0,(%r15)
L91:
  movsd  0x10(%rbp),%xmm4
  movsd  0x10(%rsi),%xmm0
  mov    (%r15),%rbp
  mov    0x8(%r15),%rbx
  subsd  %xmm4,%xmm0
  mulsd  %xmm1,%xmm0
  movq   %rbx,%xmm1
  addsd  %xmm4,%xmm0
  movq   %rbp,%xmm4
  movsd  %xmm0,0x10(%r15)
  movsd  (%rdi),%xmm7
  movapd %xmm0,%xmm5
  movapd %xmm0,%xmm14
  movsd  0x10(%rdi),%xmm6
  subsd  %xmm7,%xmm4
  movsd  %xmm7,0x10(%rsp)
  movsd  0x8(%rdi),%xmm7
  subsd  %xmm6,%xmm5
  movsd  %xmm6,0x8(%rsp)
  subsd  %xmm7,%xmm1
  movsd  %xmm7,0x18(%rsp)
  movapd %xmm4,%xmm0
  andpd  %xmm3,%xmm0
  comisd %xmm0,%xmm2
  jbe    L697
  movapd %xmm1,%xmm0
  andpd  %xmm3,%xmm0
  comisd %xmm0,%xmm2
  ja     L257
L697:
  movsd  0x18(%rdi),%xmm7
  movsd  0x20(%rdi),%xmm9
  movsd  0x28(%rdi),%xmm8
  movapd %xmm7,%xmm6
  movapd %xmm9,%xmm0
  subsd  0x10(%rsp),%xmm6
  subsd  0x18(%rsp),%xmm0
  movapd %xmm8,%xmm12
  subsd  0x8(%rsp),%xmm12
  movsd  %xmm6,0x38(%rsp)
  mulsd  %xmm4,%xmm6
  movsd  %xmm0,0x30(%rsp)
  mulsd  %xmm1,%xmm0
  mulsd  %xmm4,%xmm4
  movsd  %xmm12,0x28(%rsp)
  mulsd  %xmm1,%xmm1
  addsd  %xmm0,%xmm6
  movapd %xmm12,%xmm0
  mulsd  %xmm5,%xmm0
  mulsd  %xmm5,%xmm5
  addsd  %xmm1,%xmm4
  addsd  %xmm0,%xmm6
  addsd  %xmm5,%xmm4
  movapd %xmm6,%xmm10
  ucomisd %xmm4,%xmm15
  ja     L566
  movapd %xmm4,%xmm1
  sqrtsd %xmm1,%xmm1
L305:
  movsd  0x38(%rsp),%xmm6
  movsd  0x30(%rsp),%xmm5
  movapd %xmm6,%xmm0
  mulsd  %xmm6,%xmm0
  movapd %xmm5,%xmm6
  mulsd  %xmm5,%xmm6
  movsd  0x28(%rsp),%xmm5
  addsd  %xmm0,%xmm6
  movapd %xmm5,%xmm0
  mulsd  %xmm5,%xmm0
  addsd  %xmm0,%xmm6
  ucomisd %xmm6,%xmm15
  ja     L579
  movapd %xmm6,%xmm0
  sqrtsd %xmm0,%xmm0
L780:
  mulsd  %xmm0,%xmm1
  movapd %xmm10,%xmm0
  divsd  %xmm1,%xmm0
  movsd  D175(%rip),%xmm1
  mulsd  %xmm0,%xmm0
  subsd  %xmm0,%xmm1
  ucomisd %xmm1,%xmm15
  ja     L209
  sqrtsd %xmm1,%xmm1
L140:
  ucomisd %xmm6,%xmm15
  ja     L369
  movapd %xmm6,%xmm5
  sqrtsd %xmm5,%xmm5
L759:
  ucomisd %xmm4,%xmm15
  ja     L750
  movapd %xmm4,%xmm0
  sqrtsd %xmm0,%xmm0
L683:
  mulsd  %xmm5,%xmm0
  movq   %rbp,%xmm5
  movq   %rbx,%xmm11
  subsd  %xmm7,%xmm5
  subsd  %xmm9,%xmm11
  mulsd  %xmm1,%xmm0
  movapd %xmm14,%xmm1
  mulsd  D97(%rip),%xmm0
  subsd  %xmm8,%xmm1
  movsd  %xmm1,0x80(%rsp)
  movsd  %xmm0,0x40(%rsp)
  movapd %xmm5,%xmm0
  andpd  %xmm3,%xmm0
  comisd %xmm0,%xmm2
  jbe    L312
  movapd %xmm11,%xmm0
  andpd  %xmm3,%xmm0
  comisd %xmm0,%xmm2
  jbe    L312
  andpd  %xmm3,%xmm1
  comisd %xmm1,%xmm2
  ja     L412
L312:
  movsd  0x30(%rdi),%xmm1
  movsd  0x38(%rdi),%xmm10
  movapd %xmm11,%xmm0
  mulsd  %xmm11,%xmm11
  movapd %xmm1,%xmm13
  movsd  %xmm1,0x20(%rsp)
  movsd  0x80(%rsp),%xmm1
  subsd  %xmm7,%xmm13
  movapd %xmm10,%xmm7
  subsd  %xmm9,%xmm7
  movsd  0x40(%rdi),%xmm9
  movapd %xmm9,%xmm12
  subsd  %xmm8,%xmm12
  mulsd  %xmm7,%xmm0
  movapd %xmm5,%xmm8
  mulsd  %xmm13,%xmm8
  mulsd  %xmm5,%xmm5
  addsd  %xmm0,%xmm8
  movapd %xmm1,%xmm0
  mulsd  %xmm12,%xmm0
  addsd  %xmm11,%xmm5
  addsd  %xmm0,%xmm8
  movapd %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  addsd  %xmm0,%xmm5
  ucomisd %xmm5,%xmm15
  ja     L744
  movapd %xmm5,%xmm11
  sqrtsd %xmm11,%xmm11
L657:
  mulsd  %xmm13,%xmm13
  mulsd  %xmm7,%xmm7
  mulsd  %xmm12,%xmm12
  addsd  %xmm13,%xmm7
  addsd  %xmm12,%xmm7
  ucomisd %xmm7,%xmm15
  ja     L776
  movapd %xmm7,%xmm0
  sqrtsd %xmm0,%xmm0
L529:
  mulsd  %xmm0,%xmm11
  movapd %xmm8,%xmm0
  divsd  %xmm11,%xmm0
  movsd  D175(%rip),%xmm11
  mulsd  %xmm0,%xmm0
  subsd  %xmm0,%xmm11
  ucomisd %xmm11,%xmm15
  ja     L486
  sqrtsd %xmm11,%xmm11
L499:
  ucomisd %xmm7,%xmm15
  ja     L282
  sqrtsd %xmm7,%xmm7
L193:
  ucomisd %xmm5,%xmm15
  ja     L452
  movapd %xmm5,%xmm0
  sqrtsd %xmm0,%xmm0
L4:
  mulsd  %xmm7,%xmm0
  movq   %rbp,%xmm8
  subsd  0x20(%rsp),%xmm8
  subsd  %xmm9,%xmm14
  movapd %xmm8,%xmm7
  andpd  %xmm3,%xmm7
  mulsd  %xmm11,%xmm0
  comisd %xmm7,%xmm2
  mulsd  D97(%rip),%xmm0
  movsd  %xmm0,0x80(%rsp)
  movq   %rbx,%xmm0
  subsd  %xmm10,%xmm0
  jbe    L777
  movapd %xmm0,%xmm7
  andpd  %xmm3,%xmm7
  comisd %xmm7,%xmm2
  jbe    L777
  movapd %xmm14,%xmm7
  mov    $0x2,%edx
  mov    $0x2,%eax
  andpd  %xmm3,%xmm7
  comisd %xmm7,%xmm2
  ja     L26
L777:
  movsd  0x10(%rsp),%xmm13
  subsd  0x20(%rsp),%xmm13
  movapd %xmm8,%xmm11
  movsd  0x18(%rsp),%xmm7
  movsd  0x8(%rsp),%xmm12
  mulsd  %xmm8,%xmm8
  mulsd  %xmm13,%xmm11
  subsd  %xmm10,%xmm7
  subsd  %xmm9,%xmm12
  movapd %xmm11,%xmm1
  movapd %xmm7,%xmm11
  mulsd  %xmm0,%xmm11
  mulsd  %xmm0,%xmm0
  addsd  %xmm1,%xmm11
  movapd %xmm12,%xmm1
  mulsd  %xmm14,%xmm1
  addsd  %xmm8,%xmm0
  mulsd  %xmm14,%xmm14
  addsd  %xmm1,%xmm11
  addsd  %xmm0,%xmm14
  ucomisd %xmm14,%xmm15
  ja     L199
  movapd %xmm14,%xmm8
  sqrtsd %xmm8,%xmm8
L628:
  mulsd  %xmm13,%xmm13
  mulsd  %xmm7,%xmm7
  mulsd  %xmm12,%xmm12
  addsd  %xmm13,%xmm7
  addsd  %xmm12,%xmm7
  ucomisd %xmm7,%xmm15
  ja     L615
  movapd %xmm7,%xmm0
  sqrtsd %xmm0,%xmm0
L639:
  mulsd  %xmm8,%xmm0
  movsd  D175(%rip),%xmm8
  divsd  %xmm0,%xmm11
  mulsd  %xmm11,%xmm11
  subsd  %xmm11,%xmm8
  ucomisd %xmm8,%xmm15
  ja     L346
  sqrtsd %xmm8,%xmm8
L99:
  ucomisd %xmm7,%xmm15
  ja     L463
  sqrtsd %xmm7,%xmm7
L136:
  ucomisd %xmm14,%xmm15
  ja     L536
  movapd %xmm14,%xmm0
  sqrtsd %xmm0,%xmm0
L361:
  mulsd  %xmm7,%xmm0
  movsd  D97(%rip),%xmm7
  subsd  0x18(%rsp),%xmm10
  movsd  0x20(%rsp),%xmm1
  subsd  0x10(%rsp),%xmm1
  subsd  0x8(%rsp),%xmm9
  mulsd  %xmm8,%xmm0
  movsd  0x30(%rsp),%xmm8
  mulsd  %xmm10,%xmm8
  mulsd  %xmm10,%xmm10
  mulsd  %xmm0,%xmm7
  movsd  0x38(%rsp),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm1
  addsd  %xmm0,%xmm8
  movsd  0x28(%rsp),%xmm0
  addsd  %xmm10,%xmm1
  mulsd  %xmm9,%xmm0
  mulsd  %xmm9,%xmm9
  addsd  %xmm0,%xmm8
  addsd  %xmm1,%xmm9
  ucomisd %xmm9,%xmm15
  ja     L459
  movapd %xmm9,%xmm1
  sqrtsd %xmm1,%xmm1
L84:
  ucomisd %xmm6,%xmm15
  ja     L775
  movapd %xmm6,%xmm0
  sqrtsd %xmm0,%xmm0
L85:
  mulsd  %xmm1,%xmm0
  divsd  %xmm0,%xmm8
  movsd  D175(%rip),%xmm0
  mulsd  %xmm8,%xmm8
  subsd  %xmm8,%xmm0
  ucomisd %xmm0,%xmm15
  ja     L241
  sqrtsd %xmm0,%xmm0
  movapd %xmm0,%xmm8
L758:
  ucomisd %xmm6,%xmm15
  ja     L666
  sqrtsd %xmm6,%xmm6
L372:
  ucomisd %xmm9,%xmm15
  ja     L456
  sqrtsd %xmm9,%xmm9
L411:
  mulsd  %xmm6,%xmm9
  movsd  D97(%rip),%xmm0
  mulsd  %xmm8,%xmm9
  mulsd  %xmm9,%xmm0
  subsd  0x40(%rsp),%xmm0
  subsd  0x80(%rsp),%xmm0
  subsd  %xmm7,%xmm0
  andpd  %xmm3,%xmm0
  comisd %xmm0,%xmm2
  jbe    L187
  ucomisd %xmm4,%xmm15
  ja     L77
  sqrtsd %xmm4,%xmm4
L105:
  ucomisd %xmm5,%xmm15
  ja     L56
  sqrtsd %xmm5,%xmm5
L114:
  ucomisd %xmm14,%xmm15
  ja     L139
  sqrtsd %xmm14,%xmm14
L713:
  movsd  D175(%rip),%xmm0
  movsd  D175(%rip),%xmm1
  mov    0x150(%rsp),%rax
  divsd  %xmm4,%xmm0
  divsd  %xmm5,%xmm1
  addsd  %xmm0,%xmm1
  movsd  D175(%rip),%xmm0
  divsd  %xmm14,%xmm0
  addsd  %xmm1,%xmm0
  movsd  0x8(%rax),%xmm1
  mulsd  %xmm0,%xmm4
  movapd %xmm0,%xmm2
  mulsd  %xmm0,%xmm5
  movsd  (%rax),%xmm0
  mulsd  %xmm14,%xmm2
  divsd  %xmm4,%xmm0
  divsd  %xmm5,%xmm1
  addsd  %xmm1,%xmm0
  movsd  0x10(%rax),%xmm1
  mov    0x158(%rsp),%rax
  divsd  %xmm2,%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  cmp    $0x1,%r12d
  jne    L586
  movsd  0x10(%r14),%xmm1
  movsd  0x28(%r14),%xmm0
  movupd (%r14),%xmm3
  divsd  %xmm4,%xmm1
  unpcklpd %xmm4,%xmm4
  divsd  %xmm5,%xmm0
  unpcklpd %xmm5,%xmm5
  divpd  %xmm4,%xmm3
  addsd  %xmm1,%xmm0
  movsd  0x40(%r14),%xmm1
  divsd  %xmm2,%xmm1
  unpcklpd %xmm2,%xmm2
  addsd  %xmm1,%xmm0
  movupd 0x18(%r14),%xmm1
  divpd  %xmm5,%xmm1
  movsd  %xmm0,0x10(%r14)
  addpd  %xmm3,%xmm1
  movupd 0x30(%r14),%xmm3
  divpd  %xmm2,%xmm3
  addpd  %xmm3,%xmm1
  movups %xmm1,(%r14)
L586:
  mov    $0x1,%eax
  jmp    L340
  nopl   0x0(%rax,%rax,1)
L187:
  xor    %eax,%eax
L340:
  add    $0x118,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L50:
  movsd  0x8(%rdi),%xmm1
  movsd  0x10(%rdi),%xmm2
  pxor   %xmm15,%xmm15
  movsd  0x20(%rdi),%xmm5
  movsd  0x40(%rdi),%xmm0
  subsd  %xmm1,%xmm5
  subsd  %xmm2,%xmm0
  mulsd  %xmm0,%xmm5
  movsd  0x38(%rdi),%xmm0
  subsd  %xmm1,%xmm0
  movsd  0x28(%rdi),%xmm1
  subsd  %xmm2,%xmm1
  mulsd  %xmm1,%xmm0
  subsd  %xmm0,%xmm5
  movsd  %xmm5,(%r8)
  movsd  (%rdi),%xmm3
  movsd  0x10(%rdi),%xmm2
  movsd  0x18(%rdi),%xmm0
  movsd  0x40(%rdi),%xmm1
  movsd  0x30(%rdi),%xmm4
  subsd  %xmm2,%xmm1
  subsd  %xmm3,%xmm0
  subsd  %xmm3,%xmm4
  mulsd  %xmm1,%xmm0
  movsd  0x28(%rdi),%xmm1
  subsd  %xmm2,%xmm1
  mulsd  %xmm1,%xmm4
  subsd  %xmm0,%xmm4
  movsd  %xmm4,0x8(%r8)
  movsd  (%rdi),%xmm2
  movsd  0x8(%rdi),%xmm3
  movsd  0x18(%rdi),%xmm1
  movsd  0x38(%rdi),%xmm0
  subsd  %xmm2,%xmm1
  subsd  %xmm3,%xmm0
  mulsd  %xmm0,%xmm1
  movsd  0x30(%rdi),%xmm0
  subsd  %xmm2,%xmm0
  movsd  0x20(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  mulsd  %xmm2,%xmm0
  movapd %xmm4,%xmm2
  mulsd  %xmm4,%xmm2
  subsd  %xmm0,%xmm1
  movapd %xmm5,%xmm0
  mulsd  %xmm5,%xmm0
  movsd  %xmm1,0x10(%r8)
  addsd  %xmm2,%xmm0
  movapd %xmm1,%xmm2
  mulsd  %xmm1,%xmm2
  addsd  %xmm2,%xmm0
  ucomisd %xmm0,%xmm15
  ja     L36
  sqrtsd %xmm0,%xmm0
L322:
  movq   D65(%rip),%xmm3
  movsd  D23(%rip),%xmm2
  movapd %xmm0,%xmm6
  andpd  %xmm3,%xmm6
  comisd %xmm2,%xmm6
  jbe    L120
  divsd  %xmm0,%xmm5
  lea    0x8(%rbp),%r13
  lea    0x8(%rsi),%rbx
  divsd  %xmm0,%xmm4
  movsd  %xmm5,(%r8)
  divsd  %xmm0,%xmm1
  movsd  %xmm4,0x8(%r8)
  movsd  %xmm1,0x10(%r8)
  cmp    %r13,%r9
  jne    L705
  nopl   0x0(%rax)
L264:
  movsd  0x0(%rbp),%xmm0
  subsd  (%rsi),%xmm0
  movsd  %xmm0,(%r9)
  movsd  0x8(%rbp),%xmm0
  subsd  0x8(%rsi),%xmm0
  movsd  %xmm0,0x8(%r9)
  movsd  0x10(%rbp),%xmm0
  subsd  0x10(%rsi),%xmm0
  movsd  %xmm0,0x10(%r9)
  movapd %xmm0,%xmm4
  jmp    L345
  nopw   0x0(%rax,%rax,1)
L257:
  movapd %xmm5,%xmm0
  andpd  %xmm3,%xmm0
  comisd %xmm0,%xmm2
  jbe    L697
  xor    %edx,%edx
  xor    %eax,%eax
L26:
  mov    0x150(%rsp),%rbx
  movsd  (%rbx,%rax,8),%xmm0
  mov    0x158(%rsp),%rax
  movsd  %xmm0,(%rax)
  cmp    $0x1,%r12d
  jne    L586
  lea    (%rdx,%rdx,2),%eax
  cltq
  movupd (%r14,%rax,8),%xmm1
  movsd  0x10(%r14,%rax,8),%xmm0
  mov    $0x1,%eax
  movups %xmm1,(%r14)
  movsd  %xmm0,0x10(%r14)
  jmp    L340
  nop
L263:
  mulsd  %xmm1,%xmm4
  addsd  %xmm9,%xmm4
  movsd  %xmm4,(%r15)
  movsd  0x8(%rbp),%xmm4
  movsd  0x8(%rsi),%xmm0
  subsd  %xmm4,%xmm0
  mulsd  %xmm1,%xmm0
  addsd  %xmm4,%xmm0
  movsd  %xmm0,0x8(%r15)
  jmp    L91
L412:
  mov    $0x1,%edx
  mov    $0x1,%eax
  jmp    L26
L539:
  mov    %ecx,0x168(%rsp)
  mov    %r9,0x38(%rsp)
  mov    %r8,0x30(%rsp)
  mov    %rsi,0x28(%rsp)
  mov    %rdi,0x20(%rsp)
  movsd  %xmm2,0x50(%rsp)
  movaps %xmm3,0x40(%rsp)
  movsd  %xmm15,0x80(%rsp)
  movsd  %xmm4,0x18(%rsp)
  movsd  %xmm8,0x10(%rsp)
  movsd  %xmm1,0x8(%rsp)
  call   <sqrt@plt>
  movsd  0x50(%rsp),%xmm2
  movapd 0x40(%rsp),%xmm3
  movsd  0x80(%rsp),%xmm15
  mov    0x168(%rsp),%ecx
  mov    0x38(%rsp),%r9
  mov    0x30(%rsp),%r8
  mov    0x28(%rsp),%rsi
  mov    0x20(%rsp),%rdi
  movsd  0x18(%rsp),%xmm4
  movsd  0x10(%rsp),%xmm8
  movsd  0x8(%rsp),%xmm1
  jmp    L18
L56:
  movapd %xmm5,%xmm0
  movsd  %xmm15,0x18(%rsp)
  movsd  %xmm14,0x10(%rsp)
  movsd  %xmm4,0x8(%rsp)
  call   <sqrt@plt>
  movsd  0x8(%rsp),%xmm4
  movsd  0x10(%rsp),%xmm14
  movsd  0x18(%rsp),%xmm15
  movapd %xmm0,%xmm5
  jmp    L114
L77:
  movapd %xmm4,%xmm0
  movsd  %xmm15,0x18(%rsp)
  movsd  %xmm14,0x10(%rsp)
  movsd  %xmm5,0x8(%rsp)
  call   <sqrt@plt>
  movsd  0x8(%rsp),%xmm5
  movsd  0x10(%rsp),%xmm14
  movsd  0x18(%rsp),%xmm15
  movapd %xmm0,%xmm4
  jmp    L105
L346:
  movapd %xmm8,%xmm0
  movsd  %xmm5,0x60(%rsp)
  movsd  %xmm2,0xd0(%rsp)
  movaps %xmm3,0xc0(%rsp)
  movsd  %xmm15,0xb0(%rsp)
  movsd  %xmm10,0xa0(%rsp)
  movsd  %xmm4,0x90(%rsp)
  movsd  %xmm6,0x100(%rsp)
  movsd  %xmm7,0x88(%rsp)
  movsd  %xmm14,0x70(%rsp)
  movsd  %xmm9,0x50(%rsp)
  call   <sqrt@plt>
  movsd  0x70(%rsp),%xmm14
  movsd  0xd0(%rsp),%xmm2
  movapd 0xc0(%rsp),%xmm3
  movsd  0x60(%rsp),%xmm5
  movapd %xmm0,%xmm8
  movsd  0x90(%rsp),%xmm4
  movsd  0x50(%rsp),%xmm9
  movsd  0xb0(%rsp),%xmm15
  movsd  0xa0(%rsp),%xmm10
  movsd  0x100(%rsp),%xmm6
  movsd  0x88(%rsp),%xmm7
  jmp    L99
L463:
  movapd %xmm7,%xmm0
  movsd  %xmm5,0x60(%rsp)
  movsd  %xmm2,0xd0(%rsp)
  movaps %xmm3,0xc0(%rsp)
  movsd  %xmm15,0xb0(%rsp)
  movsd  %xmm10,0xa0(%rsp)
  movsd  %xmm8,0x90(%rsp)
  movsd  %xmm4,0x100(%rsp)
  movsd  %xmm6,0x88(%rsp)
  movsd  %xmm14,0x70(%rsp)
  movsd  %xmm9,0x50(%rsp)
  call   <sqrt@plt>
  movsd  0x70(%rsp),%xmm14
  movsd  0xd0(%rsp),%xmm2
  movapd 0xc0(%rsp),%xmm3
  movsd  0x60(%rsp),%xmm5
  movapd %xmm0,%xmm7
  movsd  0x100(%rsp),%xmm4
  movsd  0x50(%rsp),%xmm9
  movsd  0xb0(%rsp),%xmm15
  movsd  0xa0(%rsp),%xmm10
  movsd  0x90(%rsp),%xmm8
  movsd  0x88(%rsp),%xmm6
  jmp    L136
L536:
  movapd %xmm14,%xmm0
  movsd  %xmm5,0x70(%rsp)
  movsd  %xmm2,0xe0(%rsp)
  movaps %xmm3,0xd0(%rsp)
  movsd  %xmm15,0xc0(%rsp)
  movsd  %xmm10,0xb0(%rsp)
  movsd  %xmm8,0xa0(%rsp)
  movsd  %xmm4,0x90(%rsp)
  movsd  %xmm6,0x100(%rsp)
  movsd  %xmm7,0x88(%rsp)
  movsd  %xmm9,0x60(%rsp)
  movsd  %xmm14,0x50(%rsp)
  call   <sqrt@plt>
  movsd  0x70(%rsp),%xmm5
  movsd  0xe0(%rsp),%xmm2
  movapd 0xd0(%rsp),%xmm3
  movsd  0xc0(%rsp),%xmm15
  movsd  0x90(%rsp),%xmm4
  movsd  0x60(%rsp),%xmm9
  movsd  0x100(%rsp),%xmm6
  movsd  0x50(%rsp),%xmm14
  movsd  0xb0(%rsp),%xmm10
  movsd  0xa0(%rsp),%xmm8
  movsd  0x88(%rsp),%xmm7
  jmp    L361
L459:
  movapd %xmm9,%xmm0
  movsd  %xmm2,0x70(%rsp)
  movaps %xmm3,0x60(%rsp)
  movsd  %xmm15,0x50(%rsp)
  movsd  %xmm4,0x38(%rsp)
  movsd  %xmm6,0x30(%rsp)
  movsd  %xmm8,0x28(%rsp)
  movsd  %xmm7,0x20(%rsp)
  movsd  %xmm14,0x18(%rsp)
  movsd  %xmm5,0x10(%rsp)
  movsd  %xmm9,0x8(%rsp)
  call   <sqrt@plt>
  movsd  0x70(%rsp),%xmm2
  movapd 0x60(%rsp),%xmm3
  movsd  0x38(%rsp),%xmm4
  movsd  0x50(%rsp),%xmm15
  movapd %xmm0,%xmm1
  movsd  0x30(%rsp),%xmm6
  movsd  0x28(%rsp),%xmm8
  movsd  0x20(%rsp),%xmm7
  movsd  0x18(%rsp),%xmm14
  movsd  0x10(%rsp),%xmm5
  movsd  0x8(%rsp),%xmm9
  jmp    L84
L775:
  movapd %xmm6,%xmm0
  movaps %xmm3,0x70(%rsp)
  movsd  %xmm2,0x88(%rsp)
  movsd  %xmm15,0x60(%rsp)
  movsd  %xmm4,0x50(%rsp)
  movsd  %xmm1,0x38(%rsp)
  movsd  %xmm9,0x30(%rsp)
  movsd  %xmm8,0x28(%rsp)
  movsd  %xmm7,0x20(%rsp)
  movsd  %xmm14,0x18(%rsp)
  movsd  %xmm5,0x10(%rsp)
  movsd  %xmm6,0x8(%rsp)
  call   <sqrt@plt>
  movapd 0x70(%rsp),%xmm3
  movsd  0x88(%rsp),%xmm2
  movsd  0x60(%rsp),%xmm15
  movsd  0x50(%rsp),%xmm4
  movsd  0x38(%rsp),%xmm1
  movsd  0x30(%rsp),%xmm9
  movsd  0x28(%rsp),%xmm8
  movsd  0x20(%rsp),%xmm7
  movsd  0x18(%rsp),%xmm14
  movsd  0x10(%rsp),%xmm5
  movsd  0x8(%rsp),%xmm6
  jmp    L85
L241:
  movsd  %xmm2,0x60(%rsp)
  movaps %xmm3,0x50(%rsp)
  movsd  %xmm15,0x38(%rsp)
  movsd  %xmm4,0x30(%rsp)
  movsd  %xmm6,0x28(%rsp)
  movsd  %xmm9,0x20(%rsp)
  movsd  %xmm7,0x18(%rsp)
  movsd  %xmm14,0x10(%rsp)
  movsd  %xmm5,0x8(%rsp)
  call   <sqrt@plt>
  movsd  0x60(%rsp),%xmm2
  movapd 0x50(%rsp),%xmm3
  movsd  0x38(%rsp),%xmm15
  movsd  0x30(%rsp),%xmm4
  movapd %xmm0,%xmm8
  movsd  0x28(%rsp),%xmm6
  movsd  0x20(%rsp),%xmm9
  movsd  0x18(%rsp),%xmm7
  movsd  0x10(%rsp),%xmm14
  movsd  0x8(%rsp),%xmm5
  jmp    L758
L139:
  movapd %xmm14,%xmm0
  movsd  %xmm5,0x10(%rsp)
  movsd  %xmm4,0x8(%rsp)
  call   <sqrt@plt>
  movsd  0x10(%rsp),%xmm5
  movsd  0x8(%rsp),%xmm4
  movapd %xmm0,%xmm14
  jmp    L713
L566:
  movapd %xmm4,%xmm0
  mov    %rdi,0x88(%rsp)
  movsd  %xmm2,0xa0(%rsp)
  movaps %xmm3,0x90(%rsp)
  movsd  %xmm15,0x100(%rsp)
  movsd  %xmm14,0x70(%rsp)
  movsd  %xmm7,0x60(%rsp)
  movsd  %xmm9,0x50(%rsp)
  movsd  %xmm8,0x40(%rsp)
  movsd  %xmm4,0x20(%rsp)
  movsd  %xmm6,0x80(%rsp)
  call   <sqrt@plt>
  movsd  0x20(%rsp),%xmm4
  movsd  0x80(%rsp),%xmm10
  movsd  0x40(%rsp),%xmm8
  movsd  0x50(%rsp),%xmm9
  movapd %xmm0,%xmm1
  movsd  0x60(%rsp),%xmm7
  movsd  0x70(%rsp),%xmm14
  mov    0x88(%rsp),%rdi
  movsd  0x100(%rsp),%xmm15
  movapd 0x90(%rsp),%xmm3
  movsd  0xa0(%rsp),%xmm2
  jmp    L305
L199:
  movapd %xmm14,%xmm0
  movsd  %xmm5,0x70(%rsp)
  movsd  %xmm2,0x108(%rsp)
  movaps %xmm3,0xf0(%rsp)
  movsd  %xmm15,0xe0(%rsp)
  movsd  %xmm10,0xd0(%rsp)
  movsd  %xmm4,0xc0(%rsp)
  movsd  %xmm6,0xb0(%rsp)
  movsd  %xmm11,0xa0(%rsp)
  movsd  %xmm12,0x90(%rsp)
  movsd  %xmm7,0x100(%rsp)
  movsd  %xmm13,0x88(%rsp)
  movsd  %xmm9,0x60(%rsp)
  movsd  %xmm14,0x50(%rsp)
  call   <sqrt@plt>
  movsd  0x70(%rsp),%xmm5
  movsd  0x108(%rsp),%xmm2
  movapd 0xf0(%rsp),%xmm3
  movsd  0x60(%rsp),%xmm9
  movapd %xmm0,%xmm8
  movsd  0xc0(%rsp),%xmm4
  movsd  0x50(%rsp),%xmm14
  movsd  0xe0(%rsp),%xmm15
  movsd  0xd0(%rsp),%xmm10
  movsd  0xb0(%rsp),%xmm6
  movsd  0xa0(%rsp),%xmm11
  movsd  0x90(%rsp),%xmm12
  movsd  0x100(%rsp),%xmm7
  movsd  0x88(%rsp),%xmm13
  jmp    L628
L615:
  movapd %xmm7,%xmm0
  movsd  %xmm5,0x70(%rsp)
  movsd  %xmm2,0xf0(%rsp)
  movaps %xmm3,0xe0(%rsp)
  movsd  %xmm15,0xd0(%rsp)
  movsd  %xmm10,0xc0(%rsp)
  movsd  %xmm4,0xb0(%rsp)
  movsd  %xmm6,0xa0(%rsp)
  movsd  %xmm8,0x90(%rsp)
  movsd  %xmm14,0x100(%rsp)
  movsd  %xmm11,0x88(%rsp)
  movsd  %xmm9,0x60(%rsp)
  movsd  %xmm7,0x50(%rsp)
  call   <sqrt@plt>
  movsd  0x70(%rsp),%xmm5
  movsd  0xf0(%rsp),%xmm2
  movapd 0xe0(%rsp),%xmm3
  movsd  0x60(%rsp),%xmm9
  movsd  0xd0(%rsp),%xmm15
  movsd  0x50(%rsp),%xmm7
  movsd  0xc0(%rsp),%xmm10
  movsd  0xb0(%rsp),%xmm4
  movsd  0xa0(%rsp),%xmm6
  movsd  0x90(%rsp),%xmm8
  movsd  0x100(%rsp),%xmm14
  movsd  0x88(%rsp),%xmm11
  jmp    L639
L369:
  movapd %xmm6,%xmm0
  mov    %rdi,0x100(%rsp)
  movsd  %xmm2,0xb0(%rsp)
  movaps %xmm3,0xa0(%rsp)
  movsd  %xmm15,0x90(%rsp)
  movsd  %xmm14,0x88(%rsp)
  movsd  %xmm7,0x70(%rsp)
  movsd  %xmm9,0x60(%rsp)
  movsd  %xmm8,0x50(%rsp)
  movsd  %xmm4,0x40(%rsp)
  movsd  %xmm1,0x80(%rsp)
  movsd  %xmm6,0x20(%rsp)
  call   <sqrt@plt>
  movsd  0x20(%rsp),%xmm6
  movsd  0x80(%rsp),%xmm1
  movsd  0x40(%rsp),%xmm4
  movsd  0x70(%rsp),%xmm7
  movapd %xmm0,%xmm5
  movsd  0x50(%rsp),%xmm8
  movsd  0x60(%rsp),%xmm9
  movsd  0x88(%rsp),%xmm14
  mov    0x100(%rsp),%rdi
  movsd  0x90(%rsp),%xmm15
  movapd 0xa0(%rsp),%xmm3
  movsd  0xb0(%rsp),%xmm2
  jmp    L759
L750:
  movapd %xmm4,%xmm0
  mov    %rdi,0x90(%rsp)
  movsd  %xmm2,0xc0(%rsp)
  movaps %xmm3,0xb0(%rsp)
  movsd  %xmm15,0xa0(%rsp)
  movsd  %xmm14,0x100(%rsp)
  movsd  %xmm7,0x88(%rsp)
  movsd  %xmm9,0x70(%rsp)
  movsd  %xmm8,0x60(%rsp)
  movsd  %xmm6,0x50(%rsp)
  movsd  %xmm1,0x40(%rsp)
  movsd  %xmm5,0x80(%rsp)
  movsd  %xmm4,0x20(%rsp)
  call   <sqrt@plt>
  movsd  0x20(%rsp),%xmm4
  movsd  0x80(%rsp),%xmm5
  movsd  0x40(%rsp),%xmm1
  movsd  0x50(%rsp),%xmm6
  movsd  0x60(%rsp),%xmm8
  movsd  0x70(%rsp),%xmm9
  movsd  0x88(%rsp),%xmm7
  movsd  0x100(%rsp),%xmm14
  mov    0x90(%rsp),%rdi
  movsd  0xa0(%rsp),%xmm15
  movapd 0xb0(%rsp),%xmm3
  movsd  0xc0(%rsp),%xmm2
  jmp    L683
L36:
  mov    %ecx,0x168(%rsp)
  mov    %r9,0x38(%rsp)
  mov    %r8,0x30(%rsp)
  mov    %rsi,0x28(%rsp)
  mov    %rdi,0x20(%rsp)
  movsd  %xmm15,0x80(%rsp)
  movsd  %xmm1,0x18(%rsp)
  movsd  %xmm4,0x10(%rsp)
  movsd  %xmm5,0x8(%rsp)
  call   <sqrt@plt>
  mov    0x38(%rsp),%r9
  mov    0x30(%rsp),%r8
  movsd  0x80(%rsp),%xmm15
  mov    0x168(%rsp),%ecx
  mov    0x28(%rsp),%rsi
  mov    0x20(%rsp),%rdi
  movsd  0x18(%rsp),%xmm1
  movsd  0x10(%rsp),%xmm4
  movsd  0x8(%rsp),%xmm5
  jmp    L322
L452:
  movapd %xmm5,%xmm0
  movsd  %xmm4,0x70(%rsp)
  movsd  %xmm2,0xd0(%rsp)
  movaps %xmm3,0xc0(%rsp)
  movsd  %xmm15,0xb0(%rsp)
  movsd  %xmm7,0xa0(%rsp)
  movsd  %xmm11,0x90(%rsp)
  movsd  %xmm10,0x100(%rsp)
  movsd  %xmm14,0x88(%rsp)
  movsd  %xmm6,0x60(%rsp)
  movsd  %xmm9,0x50(%rsp)
  movsd  %xmm5,0x80(%rsp)
  call   <sqrt@plt>
  movsd  0x50(%rsp),%xmm9
  movsd  0x80(%rsp),%xmm5
  movsd  0x60(%rsp),%xmm6
  movsd  0x70(%rsp),%xmm4
  movsd  0x88(%rsp),%xmm14
  movsd  0x100(%rsp),%xmm10
  movsd  0x90(%rsp),%xmm11
  movsd  0xa0(%rsp),%xmm7
  movsd  0xb0(%rsp),%xmm15
  movapd 0xc0(%rsp),%xmm3
  movsd  0xd0(%rsp),%xmm2
  jmp    L4
L666:
  movapd %xmm6,%xmm0
  movsd  %xmm2,0x60(%rsp)
  movaps %xmm3,0x50(%rsp)
  movsd  %xmm15,0x38(%rsp)
  movsd  %xmm8,0x30(%rsp)
  movsd  %xmm4,0x28(%rsp)
  movsd  %xmm9,0x20(%rsp)
  movsd  %xmm7,0x18(%rsp)
  movsd  %xmm14,0x10(%rsp)
  movsd  %xmm5,0x8(%rsp)
  call   <sqrt@plt>
  movsd  0x60(%rsp),%xmm2
  movapd 0x50(%rsp),%xmm3
  movsd  0x28(%rsp),%xmm4
  movsd  0x38(%rsp),%xmm15
  movapd %xmm0,%xmm6
  movsd  0x30(%rsp),%xmm8
  movsd  0x20(%rsp),%xmm9
  movsd  0x18(%rsp),%xmm7
  movsd  0x10(%rsp),%xmm14
  movsd  0x8(%rsp),%xmm5
  jmp    L372
L456:
  movapd %xmm9,%xmm0
  movsd  %xmm2,0x60(%rsp)
  movaps %xmm3,0x50(%rsp)
  movsd  %xmm15,0x38(%rsp)
  movsd  %xmm8,0x30(%rsp)
  movsd  %xmm4,0x28(%rsp)
  movsd  %xmm6,0x20(%rsp)
  movsd  %xmm7,0x18(%rsp)
  movsd  %xmm14,0x10(%rsp)
  movsd  %xmm5,0x8(%rsp)
  call   <sqrt@plt>
  movsd  0x60(%rsp),%xmm2
  movapd 0x50(%rsp),%xmm3
  movsd  0x38(%rsp),%xmm15
  movsd  0x30(%rsp),%xmm8
  movapd %xmm0,%xmm9
  movsd  0x28(%rsp),%xmm4
  movsd  0x20(%rsp),%xmm6
  movsd  0x18(%rsp),%xmm7
  movsd  0x10(%rsp),%xmm14
  movsd  0x8(%rsp),%xmm5
  jmp    L411
L744:
  movapd %xmm5,%xmm0
  movsd  %xmm6,0x70(%rsp)
  movsd  %xmm2,0xf0(%rsp)
  movaps %xmm3,0xe0(%rsp)
  movsd  %xmm15,0xd0(%rsp)
  movsd  %xmm8,0xc0(%rsp)
  movsd  %xmm7,0xb0(%rsp)
  movsd  %xmm10,0xa0(%rsp)
  movsd  %xmm13,0x90(%rsp)
  movsd  %xmm14,0x100(%rsp)
  movsd  %xmm4,0x88(%rsp)
  movsd  %xmm12,0x60(%rsp)
  movsd  %xmm9,0x50(%rsp)
  movsd  %xmm5,0x80(%rsp)
  call   <sqrt@plt>
  movsd  0x50(%rsp),%xmm9
  movsd  0x80(%rsp),%xmm5
  movsd  0x60(%rsp),%xmm12
  movsd  0x70(%rsp),%xmm6
  movapd %xmm0,%xmm11
  movsd  0x88(%rsp),%xmm4
  movsd  0x100(%rsp),%xmm14
  movsd  0x90(%rsp),%xmm13
  movsd  0xa0(%rsp),%xmm10
  movsd  0xb0(%rsp),%xmm7
  movsd  0xc0(%rsp),%xmm8
  movsd  0xd0(%rsp),%xmm15
  movapd 0xe0(%rsp),%xmm3
  movsd  0xf0(%rsp),%xmm2
  jmp    L657
L776:
  movapd %xmm7,%xmm0
  movsd  %xmm6,0x70(%rsp)
  movsd  %xmm2,0xe0(%rsp)
  movaps %xmm3,0xd0(%rsp)
  movsd  %xmm15,0xc0(%rsp)
  movsd  %xmm8,0xb0(%rsp)
  movsd  %xmm11,0xa0(%rsp)
  movsd  %xmm10,0x90(%rsp)
  movsd  %xmm14,0x100(%rsp)
  movsd  %xmm4,0x88(%rsp)
  movsd  %xmm5,0x60(%rsp)
  movsd  %xmm9,0x50(%rsp)
  movsd  %xmm7,0x80(%rsp)
  call   <sqrt@plt>
  movsd  0x50(%rsp),%xmm9
  movsd  0x80(%rsp),%xmm7
  movsd  0x60(%rsp),%xmm5
  movsd  0x70(%rsp),%xmm6
  movsd  0x88(%rsp),%xmm4
  movsd  0x100(%rsp),%xmm14
  movsd  0x90(%rsp),%xmm10
  movsd  0xa0(%rsp),%xmm11
  movsd  0xb0(%rsp),%xmm8
  movsd  0xc0(%rsp),%xmm15
  movapd 0xd0(%rsp),%xmm3
  movsd  0xe0(%rsp),%xmm2
  jmp    L529
L486:
  movapd %xmm11,%xmm0
  movsd  %xmm6,0x70(%rsp)
  movsd  %xmm2,0xc0(%rsp)
  movaps %xmm3,0xb0(%rsp)
  movsd  %xmm15,0xa0(%rsp)
  movsd  %xmm10,0x90(%rsp)
  movsd  %xmm14,0x100(%rsp)
  movsd  %xmm4,0x88(%rsp)
  movsd  %xmm7,0x60(%rsp)
  movsd  %xmm5,0x50(%rsp)
  movsd  %xmm9,0x80(%rsp)
  call   <sqrt@plt>
  movsd  0x50(%rsp),%xmm5
  movsd  0x80(%rsp),%xmm9
  movsd  0x60(%rsp),%xmm7
  movsd  0x70(%rsp),%xmm6
  movapd %xmm0,%xmm11
  movsd  0x88(%rsp),%xmm4
  movsd  0x100(%rsp),%xmm14
  movsd  0x90(%rsp),%xmm10
  movsd  0xa0(%rsp),%xmm15
  movapd 0xb0(%rsp),%xmm3
  movsd  0xc0(%rsp),%xmm2
  jmp    L499
L282:
  movapd %xmm7,%xmm0
  movsd  %xmm4,0x70(%rsp)
  movsd  %xmm2,0xc0(%rsp)
  movaps %xmm3,0xb0(%rsp)
  movsd  %xmm15,0xa0(%rsp)
  movsd  %xmm11,0x90(%rsp)
  movsd  %xmm10,0x100(%rsp)
  movsd  %xmm14,0x88(%rsp)
  movsd  %xmm6,0x60(%rsp)
  movsd  %xmm5,0x50(%rsp)
  movsd  %xmm9,0x80(%rsp)
  call   <sqrt@plt>
  movsd  0x50(%rsp),%xmm5
  movsd  0x80(%rsp),%xmm9
  movsd  0x60(%rsp),%xmm6
  movsd  0x70(%rsp),%xmm4
  movapd %xmm0,%xmm7
  movsd  0x88(%rsp),%xmm14
  movsd  0x100(%rsp),%xmm10
  movsd  0x90(%rsp),%xmm11
  movsd  0xa0(%rsp),%xmm15
  movapd 0xb0(%rsp),%xmm3
  movsd  0xc0(%rsp),%xmm2
  jmp    L193
L579:
  movapd %xmm6,%xmm0
  mov    %rdi,0x90(%rsp)
  movsd  %xmm2,0xc0(%rsp)
  movaps %xmm3,0xb0(%rsp)
  movsd  %xmm15,0xa0(%rsp)
  movsd  %xmm14,0x100(%rsp)
  movsd  %xmm7,0x88(%rsp)
  movsd  %xmm9,0x70(%rsp)
  movsd  %xmm8,0x60(%rsp)
  movsd  %xmm10,0x50(%rsp)
  movsd  %xmm4,0x40(%rsp)
  movsd  %xmm1,0x80(%rsp)
  movsd  %xmm6,0x20(%rsp)
  call   <sqrt@plt>
  movsd  0x20(%rsp),%xmm6
  movsd  0x80(%rsp),%xmm1
  movsd  0x40(%rsp),%xmm4
  movsd  0x50(%rsp),%xmm10
  movsd  0x60(%rsp),%xmm8
  movsd  0x70(%rsp),%xmm9
  movsd  0x88(%rsp),%xmm7
  movsd  0x100(%rsp),%xmm14
  mov    0x90(%rsp),%rdi
  movsd  0xa0(%rsp),%xmm15
  movapd 0xb0(%rsp),%xmm3
  movsd  0xc0(%rsp),%xmm2
  jmp    L780
L209:
  movapd %xmm1,%xmm0
  mov    %rdi,0x88(%rsp)
  movsd  %xmm2,0xa0(%rsp)
  movaps %xmm3,0x90(%rsp)
  movsd  %xmm15,0x100(%rsp)
  movsd  %xmm14,0x70(%rsp)
  movsd  %xmm7,0x60(%rsp)
  movsd  %xmm9,0x50(%rsp)
  movsd  %xmm8,0x40(%rsp)
  movsd  %xmm4,0x80(%rsp)
  movsd  %xmm6,0x20(%rsp)
  call   <sqrt@plt>
  movsd  0x20(%rsp),%xmm6
  movsd  0x80(%rsp),%xmm4
  movsd  0x40(%rsp),%xmm8
  movsd  0x50(%rsp),%xmm9
  movapd %xmm0,%xmm1
  movsd  0x60(%rsp),%xmm7
  movsd  0x70(%rsp),%xmm14
  mov    0x88(%rsp),%rdi
  movsd  0x100(%rsp),%xmm15
  movapd 0x90(%rsp),%xmm3
  movsd  0xa0(%rsp),%xmm2
  jmp    L140
```

tool_calls: name: parse_data
arguments: tag: D65
data_type: qword
name: parse_data
arguments: tag: D23
data_type: f64
name: parse_data
arguments: tag: D66
data_type: f32[4]
name: parse_data
arguments: tag: D93
data_type: byte[16]
name: parse_data
arguments: tag: D175
data_type: f64
name: parse_data
arguments: tag: D97
data_type: f32[2]

tool: D65: 9223372036854775807

tool: D23: 1e-08

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

tool: {"D93": [0x3a,0x8c,0x30,0xe2,0x8e,0x79,0x45,0xbe,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: D175: 1

tool: {"D97": [0.0,1.75]}

assistant: ```c
int find_surface_point(double fp[3][3], double point_o[3], double view_point_d[3], double point[3], double n_f[4], double v_f[9], double c_value[3], double *value, double normal[9], int normal_flag, int smooth_shading) {
  int i, j, n1, n2, flag_inside;
  double s[3], sina, cosa, ss, t, dis[3], dist, n_norm, v_norm, nv_sign;
  double tmp_p[7];
  flag_inside = 0;
  if (normal_flag == 1) {
    n_f[0] = (fp[1][1] - fp[0][1]) * (fp[2][2] - fp[0][2]) - (fp[2][1] - fp[0][1]) * (fp[1][2] - fp[0][2]);
    n_f[1] = -(fp[1][0] - fp[0][0]) * (fp[2][2] - fp[0][2]) + (fp[2][0] - fp[0][0]) * (fp[1][2] - fp[0][2]);
    n_f[2] = (fp[1][0] - fp[0][0]) * (fp[2][1] - fp[0][1]) - (fp[2][0] - fp[0][0]) * (fp[1][1] - fp[0][1]);
    n_norm = sqrt(n_f[0] * n_f[0] + n_f[1] * n_f[1] + n_f[2] * n_f[2]);
    if (fabs(n_norm) > 0.00000001) {
      for (j = 0; j < 3; j++)
        n_f[j] /= n_norm;
    }
  }
  for (i = 0; i < 3; i++)
    v_f[i] = view_point_d[i] - point_o[i];
  v_norm = sqrt(v_f[0] * v_f[0] + v_f[1] * v_f[1] + v_f[2] * v_f[2]);
  if (fabs(v_norm) > 0.00000001) {
    for (i = 0; i < 3; i++)
      v_f[i] /= v_norm;
  }
  nv_sign = n_f[0] * v_f[0] + n_f[1] * v_f[1] + n_f[2] * v_f[2];
  if (nv_sign < 0.0) {
    for (i = 0; i < 3; i++)
      n_f[i] = -n_f[i];
  }
  if (normal_flag == 1)
    n_f[3] = -n_f[0] * fp[0][0] - n_f[1] * fp[0][1] - n_f[2] * fp[0][2];
  if (smooth_shading == 0)
    for (i = 0; i < 3; i++)
      normal[i] = n_f[i];
  if (fabs(n_f[0] * (point_o[0] - view_point_d[0]) + n_f[1] * (point_o[1] - view_point_d[1]) + n_f[2] * (point_o[2] - view_point_d[2])) > 0.00000001) {
    t = (-n_f[3] - n_f[0] * view_point_d[0] - n_f[1] * view_point_d[1] - n_f[2] * view_point_d[2]) / (n_f[0] * (point_o[0] - view_point_d[0]) + n_f[1] * (point_o[1] - view_point_d[1]) + n_f[2] * (point_o[2] - view_point_d[2]));
    if (t > -0.00000001) {
      for (j = 0; j < 3; j++)
        point[j] = view_point_d[j] + t * (point_o[j] - view_point_d[j]);
      for (j = 0; j < 3; j++) {
        n1 = j;
        n2 = j + 1;
        if (n2 == 3)
          n2 = 0;
        if ((fabs(point[0] - fp[n1][0]) < 0.00000001) && (fabs(point[1] - fp[n1][1]) < 0.00000001) && (fabs(point[2] - fp[n1][2]) < 0.00000001)) {
          flag_inside = 1;
          *value = c_value[n1];
          if (smooth_shading == 1) {
            tmp_p[0] = normal[n1 * 3 + 0];
            tmp_p[1] = normal[n1 * 3 + 1];
            tmp_p[2] = normal[n1 * 3 + 2];
            normal[0] = tmp_p[0];
            normal[1] = tmp_p[1];
            normal[2] = tmp_p[2];
          }
          break;
        }
        cosa = ((point[0] - fp[n1][0]) * (fp[n2][0] - fp[n1][0]) + (point[1] - fp[n1][1]) * (fp[n2][1] - fp[n1][1]) + (point[2] - fp[n1][2]) * (fp[n2][2] - fp[n1][2])) / (sqrt((point[0] - fp[n1][0]) * (point[0] - fp[n1][0]) + (point[1] - fp[n1][1]) * (point[1] - fp[n1][1]) + (point[2] - fp[n1][2]) * (point[2] - fp[n1][2])) * sqrt((fp[n2][0] - fp[n1][0]) * (fp[n2][0] - fp[n1][0]) + (fp[n2][1] - fp[n1][1]) * (fp[n2][1] - fp[n1][1]) + (fp[n2][2] - fp[n1][2]) * (fp[n2][2] - fp[n1][2])));
        sina = sqrt(1 - cosa * cosa);
        s[j] = sqrt((fp[n2][0] - fp[n1][0]) * (fp[n2][0] - fp[n1][0]) + (fp[n2][1] - fp[n1][1]) * (fp[n2][1] - fp[n1][1]) + (fp[n2][2] - fp[n1][2]) * (fp[n2][2] - fp[n1][2])) * sqrt((point[0] - fp[n1][0]) * (point[0] - fp[n1][0]) + (point[1] - fp[n1][1]) * (point[1] - fp[n1][1]) + (point[2] - fp[n1][2]) * (point[2] - fp[n1][2])) * sina / 2.0;
      }
      if (flag_inside == 0) {
        cosa = ((fp[2][0] - fp[0][0]) * (fp[1][0] - fp[0][0]) + (fp[2][1] - fp[0][1]) * (fp[1][1] - fp[0][1]) + (fp[2][2] - fp[0][2]) * (fp[1][2] - fp[0][2])) / (sqrt((fp[2][0] - fp[0][0]) * (fp[2][0] - fp[0][0]) + (fp[2][1] - fp[0][1]) * (fp[2][1] - fp[0][1]) + (fp[2][2] - fp[0][2]) * (fp[2][2] - fp[0][2])) * sqrt((fp[1][0] - fp[0][0]) * (fp[1][0] - fp[0][0]) + (fp[1][1] - fp[0][1]) * (fp[1][1] - fp[0][1]) + (fp[1][2] - fp[0][2]) * (fp[1][2] - fp[0][2])));
        sina = sqrt(1 - cosa * cosa);
        ss = sqrt((fp[1][0] - fp[0][0]) * (fp[1][0] - fp[0][0]) + (fp[1][1] - fp[0][1]) * (fp[1][1] - fp[0][1]) + (fp[1][2] - fp[0][2]) * (fp[1][2] - fp[0][2])) * sqrt((fp[2][0] - fp[0][0]) * (fp[2][0] - fp[0][0]) + (fp[2][1] - fp[0][1]) * (fp[2][1] - fp[0][1]) + (fp[2][2] - fp[0][2]) * (fp[2][2] - fp[0][2])) * sina / 2.0;
        if (fabs(ss - s[0] - s[1] - s[2]) < 0.00000001) {
          flag_inside = 1;
          for (j = 0; j < 3; j++)
            dis[j] = sqrt((point[0] - fp[j][0]) * (point[0] - fp[j][0]) + (point[1] - fp[j][1]) * (point[1] - fp[j][1]) + (point[2] - fp[j][2]) * (point[2] - fp[j][2]));
          dist = 1.0 / dis[0] + 1.0 / dis[1] + 1.0 / dis[2];
          *value = c_value[0] / (dis[0] * dist) + c_value[1] / (dis[1] * dist) + c_value[2] / (dis[2] * dist);
          if (smooth_shading == 1) {
            for (j = 0; j < 3; j++) {
              tmp_p[j] = normal[0 * 3 + j] / (dis[0] * dist) + normal[1 * 3 + j] / (dis[1] * dist) + normal[2 * 3 + j] / (dis[2] * dist);
            }
            for (j = 0; j < 3; j++)
              normal[j] = tmp_p[j];
          }
        }
      }
    }
  }
  return (flag_inside);
}
```