// File: /workspace/github_cpp_makefile_star2_O3/ingowald[P]closestSurfacePointQueries/src/distanceQueries.cpp
// Function: bvhlib::GeneralTriangleMesh<double, int, true>::testPrimAndUpdateIfCloser(bvhlib::QueryResult&, ospcommon::vec_t<float, 3, 1> const&, unsigned long)
inline Triangle GeneralTriangleMesh<coord_t,index_t,has_strides>::getTriangle(const size_t primID) const
  {
    Triangle t;
    if (has_strides) {
      const size_t i0 = this->idx_x[primID*idx_stride];
      const size_t i1 = this->idx_y[primID*idx_stride];
      const size_t i2 = this->idx_z[primID*idx_stride];
    
      t.v0 = vec3fa(this->vtx_x[i0*vtx_stride],
                    this->vtx_y[i0*vtx_stride],
                    this->vtx_z[i0*vtx_stride]);
      t.v1 = vec3fa(this->vtx_x[i1*vtx_stride],
                    this->vtx_y[i1*vtx_stride],
                    this->vtx_z[i1*vtx_stride]);
      t.v2 = vec3fa(this->vtx_x[i2*vtx_stride],
                    this->vtx_y[i2*vtx_stride],
                    this->vtx_z[i2*vtx_stride]);
    } else {
      const size_t i0 = this->idx_x[primID];
      const size_t i1 = this->idx_y[primID];
      const size_t i2 = this->idx_z[primID];
    
      t.v0 = vec3fa(this->vtx_x[i0],
                    this->vtx_y[i0],
                    this->vtx_z[i0]);
      t.v1 = vec3fa(this->vtx_x[i1],
                    this->vtx_y[i1],
                    this->vtx_z[i1]);
      t.v2 = vec3fa(this->vtx_x[i2],
                    this->vtx_y[i2],
                    this->vtx_z[i2]);
    }
    return t;
  }

// Assembly:
pushq %rbx
subq $0x80, %rsp
movq 0x68(%rdi), %rax
movq 0x80(%rdi), %r8
imulq %rcx, %r8
movslq (%rax,%r8,4), %r10
movq 0x70(%rdi), %rax
movslq (%rax,%r8,4), %rax
movq 0x78(%rdi), %r9
movslq (%r9,%r8,4), %r8
movq 0x60(%rdi), %r11
imulq %r11, %r10
movq 0x48(%rdi), %rbx
movq 0x50(%rdi), %r9
movq 0x58(%rdi), %rdi
cvtsd2ss (%rdi,%r10,8), %xmm6
imulq %r11, %rax
movsd (%rbx,%r10,8), %xmm0
movhpd (%r9,%r10,8), %xmm0     # xmm0 = xmm0[0],mem[0]
imulq %r11, %r8
cvtpd2ps %xmm0, %xmm11
movsd (%r9,%rax,8), %xmm0
movapd %xmm0, -0x80(%rsp)
movsd (%rbx,%rax,8), %xmm1
movsd (%rbx,%r8,8), %xmm5
movapd %xmm5, %xmm2
unpcklpd %xmm1, %xmm5            # xmm5 = xmm5[0],xmm1[0]
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
cvtpd2ps %xmm1, %xmm4
movapd %xmm4, %xmm0
movapd %xmm11, -0x50(%rsp)
subps %xmm11, %xmm0
movaps %xmm0, %xmm7
shufps $0x55, %xmm0, %xmm7     # xmm7 = xmm7[1,1],xmm0[1,1]
movsd (%r9,%r8,8), %xmm1
movapd %xmm1, -0x60(%rsp)
unpcklpd %xmm1, %xmm2            # xmm2 = xmm2[0],xmm1[0]
cvtpd2ps %xmm2, %xmm15
subps %xmm15, %xmm11
movaps %xmm11, %xmm3
shufps $0x55, %xmm11, %xmm3    # xmm3 = xmm3[1,1],xmm11[1,1]
movaps %xmm0, %xmm1
mulss %xmm3, %xmm1
movaps %xmm11, %xmm10
mulss %xmm7, %xmm10
subss %xmm1, %xmm10
movsd (%rdi,%r8,8), %xmm1
movhpd (%rdi,%rax,8), %xmm1    # xmm1 = xmm1[0],mem[0]
cvtpd2ps %xmm1, %xmm8
movapd %xmm8, %xmm1
shufps $0x55, %xmm8, %xmm1     # xmm1 = xmm1[1,1],xmm8[1,1]
movaps %xmm1, 0x20(%rsp)
movaps %xmm1, %xmm14
movaps %xmm6, -0x40(%rsp)
subss %xmm6, %xmm14
movaps %xmm8, %xmm13
shufps $0x0, %xmm8, %xmm13     # xmm13 = xmm13[0,0],xmm8[0,0]
movss %xmm6, %xmm13           # xmm13 = xmm6[0],xmm13[1,2,3]
subps %xmm8, %xmm13
movaps %xmm7, %xmm1
mulss %xmm13, %xmm1
movaps %xmm3, 0x60(%rsp)
mulss %xmm14, %xmm3
subss %xmm1, %xmm3
movaps %xmm14, %xmm1
mulss %xmm11, %xmm1
movaps %xmm13, %xmm12
mulss %xmm0, %xmm12
subss %xmm1, %xmm12
movaps %xmm15, 0x10(%rsp)
movapd %xmm4, -0x70(%rsp)
subps %xmm4, %xmm15
movaps %xmm15, %xmm1
shufps $0x11, %xmm11, %xmm1    # xmm1 = xmm1[1,0],xmm11[1,0]
shufps $0xe2, %xmm11, %xmm1    # xmm1 = xmm1[2,0],xmm11[2,3]
movaps %xmm10, %xmm2
shufps $0x0, %xmm10, %xmm2     # xmm2 = xmm2[0,0],xmm10[0,0]
movaps %xmm3, %xmm6
shufps $0x0, %xmm3, %xmm6      # xmm6 = xmm6[0,0],xmm3[0,0]
movaps %xmm13, %xmm9
mulps %xmm6, %xmm9
mulps %xmm1, %xmm6
mulps %xmm2, %xmm1
movaps %xmm12, %xmm4
shufps $0x0, %xmm12, %xmm4     # xmm4 = xmm4[0,0],xmm12[0,0]
movaps %xmm11, 0x70(%rsp)
unpcklps %xmm15, %xmm11          # xmm11 = xmm11[0],xmm15[0],xmm11[1],xmm15[1]
mulps %xmm11, %xmm2
mulps %xmm4, %xmm11
movaps %xmm13, 0x30(%rsp)
mulps %xmm13, %xmm4
subps %xmm1, %xmm4
subps %xmm9, %xmm2
subps %xmm11, %xmm6
movaps %xmm7, %xmm1
mulss %xmm10, %xmm1
movaps %xmm12, %xmm11
mulss %xmm14, %xmm11
subss %xmm1, %xmm11
movaps %xmm14, -0x30(%rsp)
movaps %xmm14, %xmm1
mulss %xmm3, %xmm1
movaps %xmm10, %xmm14
mulss %xmm0, %xmm14
subss %xmm1, %xmm14
movaps %xmm0, -0x20(%rsp)
mulss %xmm12, %xmm0
movaps %xmm3, %xmm1
movaps %xmm7, 0x40(%rsp)
mulss %xmm7, %xmm1
subss %xmm0, %xmm1
cvtpd2ps %xmm5, %xmm0
movss (%rdx), %xmm9
movaps %xmm9, %xmm7
shufps $0x0, %xmm9, %xmm7      # xmm7 = xmm7[0,0],xmm9[0,0]
subps %xmm0, %xmm7
movapd -0x60(%rsp), %xmm0
unpcklpd -0x80(%rsp), %xmm0      # xmm0 = xmm0[0],mem[0]
movss 0x4(%rdx), %xmm5
movaps %xmm5, %xmm13
shufps $0x0, %xmm5, %xmm13     # xmm13 = xmm13[0,0],xmm5[0,0]
cvtpd2ps %xmm0, %xmm0
subps %xmm0, %xmm13
movaps %xmm13, -0x10(%rsp)
mulps %xmm13, %xmm2
movaps %xmm7, (%rsp)
mulps %xmm7, %xmm4
addps %xmm2, %xmm4
movss 0x8(%rdx), %xmm7
movaps %xmm7, %xmm2
shufps $0x0, %xmm7, %xmm2      # xmm2 = xmm2[0,0],xmm7[0,0]
movaps %xmm8, -0x60(%rsp)
subps %xmm8, %xmm2
mulps %xmm2, %xmm6
addps %xmm4, %xmm6
movaps -0x50(%rsp), %xmm4
movaps %xmm4, %xmm0
shufps $0x55, %xmm4, %xmm0     # xmm0 = xmm0[1,1],xmm4[1,1]
movaps %xmm9, -0x80(%rsp)
movaps %xmm9, %xmm8
subss %xmm4, %xmm8
movaps %xmm5, %xmm9
subss %xmm0, %xmm5
mulss %xmm5, %xmm14
mulss %xmm8, %xmm11
addss %xmm14, %xmm11
movaps %xmm7, %xmm13
subss -0x40(%rsp), %xmm13
mulss %xmm13, %xmm1
addss %xmm11, %xmm1
movaps %xmm6, %xmm11
shufps $0x55, %xmm6, %xmm11    # xmm11 = xmm11[1,1],xmm6[1,1]
movaps %xmm6, %xmm4
minss %xmm11, %xmm4
movaps %xmm1, %xmm14
minss %xmm4, %xmm14
xorps %xmm4, %xmm4
ucomiss %xmm4, %xmm14
jae 0x71e8
ucomiss %xmm11, %xmm4
jae 0x7225
movss 0x2473(%rip), %xmm3     # 0x964c
movaps -0x80(%rsp), %xmm14
movaps %xmm9, %xmm12
jmp 0x73bd
movaps %xmm12, %xmm1
mulss %xmm12, %xmm1
movaps %xmm3, %xmm2
mulss %xmm3, %xmm2
addss %xmm1, %xmm2
movaps %xmm10, %xmm1
mulss %xmm10, %xmm1
addss %xmm2, %xmm1
ucomiss %xmm4, %xmm1
jne 0x7280
jp 0x7280
movaps -0x50(%rsp), %xmm10
movaps -0x40(%rsp), %xmm4
movaps -0x80(%rsp), %xmm2
jmp 0x72cc
movaps %xmm15, %xmm0
shufps $0x55, %xmm15, %xmm0    # xmm0 = xmm0[1,1],xmm15[1,1]
mulss %xmm0, %xmm0
movaps %xmm15, %xmm4
mulss %xmm15, %xmm4
addss %xmm0, %xmm4
movaps 0x30(%rsp), %xmm0
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movaps %xmm0, %xmm3
mulss %xmm0, %xmm3
addss %xmm4, %xmm3
xorps %xmm4, %xmm4
ucomiss %xmm4, %xmm3
movaps -0x80(%rsp), %xmm14
movaps %xmm9, %xmm12
jne 0x7304
jp 0x7304
movaps -0x70(%rsp), %xmm10
movaps 0x20(%rsp), %xmm11
jmp 0x7373
mulss %xmm12, %xmm5
mulss %xmm3, %xmm8
addss %xmm5, %xmm8
mulss %xmm10, %xmm13
addss %xmm8, %xmm13
divss %xmm1, %xmm13
mulss %xmm13, %xmm3
mulss %xmm13, %xmm12
mulss %xmm10, %xmm13
movaps -0x80(%rsp), %xmm2
movaps %xmm2, %xmm10
subss %xmm3, %xmm10
movaps %xmm9, %xmm0
subss %xmm12, %xmm0
movaps %xmm7, %xmm4
subss %xmm13, %xmm4
movaps %xmm10, %xmm1
subss %xmm2, %xmm1
movaps %xmm0, %xmm2
subss %xmm9, %xmm2
movaps %xmm4, %xmm3
subss %xmm7, %xmm3
mulss %xmm2, %xmm2
mulss %xmm1, %xmm1
addss %xmm2, %xmm1
mulss %xmm3, %xmm3
addss %xmm1, %xmm3
sqrtss %xmm3, %xmm3
movaps %xmm4, %xmm11
jmp 0x75d9
movaps %xmm15, %xmm10
mulps -0x10(%rsp), %xmm10
shufps $0x55, %xmm10, %xmm10   # xmm10 = xmm10[1,1,1,1]
movaps (%rsp), %xmm11
shufps $0x55, %xmm11, %xmm11   # xmm11 = xmm11[1,1,1,1]
mulss %xmm15, %xmm11
addss %xmm10, %xmm11
movaps %xmm2, %xmm10
shufps $0x55, %xmm2, %xmm10    # xmm10 = xmm10[1,1],xmm2[1,1]
mulss %xmm0, %xmm10
addss %xmm11, %xmm10
divss %xmm3, %xmm10
minss 0x2308(%rip), %xmm10    # 0x9650
maxss %xmm4, %xmm10
mulss %xmm10, %xmm0
shufps $0x0, %xmm10, %xmm10    # xmm10 = xmm10[0,0,0,0]
mulps %xmm15, %xmm10
movaps -0x70(%rsp), %xmm3
addps %xmm10, %xmm3
movaps %xmm3, %xmm10
movaps 0x20(%rsp), %xmm11
addss %xmm0, %xmm11
movaps %xmm10, %xmm0
subss %xmm14, %xmm0
movaps %xmm10, %xmm3
shufps $0x55, %xmm10, %xmm3    # xmm3 = xmm3[1,1],xmm10[1,1]
subss %xmm12, %xmm3
movaps %xmm11, %xmm4
subss %xmm7, %xmm4
mulss %xmm3, %xmm3
mulss %xmm0, %xmm0
addss %xmm3, %xmm0
mulss %xmm4, %xmm4
addss %xmm0, %xmm4
xorps %xmm3, %xmm3
sqrtss %xmm4, %xmm3
movss 0x2297(%rip), %xmm0     # 0x964c
ucomiss %xmm0, %xmm3
jne 0x73bd
movaps %xmm0, %xmm3
movaps %xmm5, -0x80(%rsp)
xorps %xmm0, %xmm0
ucomiss %xmm6, %xmm0
movaps %xmm8, 0x50(%rsp)
jae 0x73e8
movaps %xmm7, %xmm9
movaps -0x20(%rsp), %xmm5
movaps -0x30(%rsp), %xmm7
movaps 0x40(%rsp), %xmm6
jmp 0x74ef
movss %xmm3, -0x70(%rsp)
movaps %xmm7, %xmm9
movaps 0x60(%rsp), %xmm8
movaps %xmm8, %xmm3
mulss %xmm8, %xmm3
movaps 0x70(%rsp), %xmm5
movaps %xmm5, %xmm4
mulss %xmm5, %xmm4
addss %xmm3, %xmm4
movaps 0x30(%rsp), %xmm7
movaps %xmm7, %xmm3
mulss %xmm7, %xmm3
addss %xmm4, %xmm3
ucomiss %xmm0, %xmm3
movaps 0x40(%rsp), %xmm6
jne 0x7445
jp 0x7445
movaps -0x20(%rsp), %xmm5
movaps -0x30(%rsp), %xmm7
movaps 0x10(%rsp), %xmm15
movaps -0x60(%rsp), %xmm8
jmp 0x749e
mulss -0x10(%rsp), %xmm8
movaps (%rsp), %xmm4
mulss %xmm5, %xmm4
addss %xmm8, %xmm4
mulss %xmm7, %xmm2
addss %xmm4, %xmm2
divss %xmm3, %xmm2
minss 0x21e3(%rip), %xmm2     # 0x9650
xorps %xmm3, %xmm3
maxss %xmm3, %xmm2
mulss %xmm2, %xmm7
shufps $0x0, %xmm2, %xmm2      # xmm2 = xmm2[0,0,0,0]
mulps %xmm2, %xmm5
movaps 0x10(%rsp), %xmm15
addps %xmm5, %xmm15
movaps -0x60(%rsp), %xmm8
addss %xmm7, %xmm8
movaps -0x20(%rsp), %xmm5
movaps -0x30(%rsp), %xmm7
movaps %xmm15, %xmm2
subss %xmm14, %xmm2
movaps %xmm15, %xmm3
shufps $0x55, %xmm15, %xmm3    # xmm3 = xmm3[1,1],xmm15[1,1]
subss %xmm12, %xmm3
movaps %xmm8, %xmm4
subss %xmm9, %xmm4
mulss %xmm3, %xmm3
mulss %xmm2, %xmm2
addss %xmm3, %xmm2
mulss %xmm4, %xmm4
addss %xmm2, %xmm4
xorps %xmm2, %xmm2
sqrtss %xmm4, %xmm2
movss -0x70(%rsp), %xmm3
ucomiss %xmm2, %xmm3
jbe 0x74ef
movaps %xmm2, %xmm3
movaps %xmm8, %xmm11
movaps %xmm15, %xmm10
ucomiss %xmm1, %xmm0
movaps %xmm10, %xmm0
shufps $0x55, %xmm10, %xmm0    # xmm0 = xmm0[1,1],xmm10[1,1]
jb 0x75d9
movaps %xmm3, %xmm8
movaps %xmm6, %xmm1
mulss %xmm6, %xmm1
movaps %xmm5, %xmm2
mulss %xmm5, %xmm2
addss %xmm1, %xmm2
movaps %xmm7, %xmm1
mulss %xmm7, %xmm1
addss %xmm2, %xmm1
xorps %xmm2, %xmm2
ucomiss %xmm2, %xmm1
jne 0x7538
jp 0x7538
movaps -0x40(%rsp), %xmm5
movaps -0x50(%rsp), %xmm6
jmp 0x7587
mulss -0x80(%rsp), %xmm6
movaps 0x50(%rsp), %xmm3
mulss %xmm5, %xmm3
addss %xmm6, %xmm3
mulss %xmm7, %xmm13
addss %xmm3, %xmm13
divss %xmm1, %xmm13
minss 0x20ed(%rip), %xmm13    # 0x9650
maxss %xmm2, %xmm13
mulss %xmm13, %xmm7
shufps $0x0, %xmm13, %xmm13    # xmm13 = xmm13[0,0,0,0]
mulps %xmm13, %xmm5
movaps -0x50(%rsp), %xmm6
addps %xmm5, %xmm6
movaps -0x40(%rsp), %xmm5
addss %xmm7, %xmm5
movaps %xmm6, %xmm2
subss %xmm14, %xmm2
movaps %xmm6, %xmm1
shufps $0x55, %xmm6, %xmm1     # xmm1 = xmm1[1,1],xmm6[1,1]
movaps %xmm1, %xmm3
subss %xmm12, %xmm3
movaps %xmm5, %xmm4
subss %xmm9, %xmm4
mulss %xmm3, %xmm3
mulss %xmm2, %xmm2
addss %xmm3, %xmm2
mulss %xmm4, %xmm4
addss %xmm2, %xmm4
xorps %xmm2, %xmm2
sqrtss %xmm4, %xmm2
movaps %xmm8, %xmm3
ucomiss %xmm2, %xmm8
jbe 0x75d9
movaps %xmm2, %xmm3
movaps %xmm6, %xmm10
movaps %xmm1, %xmm0
movaps %xmm5, %xmm11
ucomiss 0x10(%rsi), %xmm3
jae 0x75f7
movss %xmm3, 0x10(%rsi)
movss %xmm10, (%rsi)
movss %xmm0, 0x4(%rsi)
movss %xmm11, 0x8(%rsi)
movl %ecx, 0x14(%rsi)
addq $0x80, %rsp
popq %rbx
retq