// File: /workspace/github_cpp_makefile_star2_O3/jingdao[P]PointCloudApp/pcd.cpp
// Function: PCD::rotate(PCD::Quaternion)
void PCD::rotate(Quaternion q) {
	for (int i=0;i<numPoints;i++) {
		Quaternion vec = {0, float_data[i*4], float_data[i*4+1], float_data[i*4+2]};
		vec = quaternionMult(quaternionMult(q, vec), quaternionInv(q));
		float_data[i * 4] = vec.i;
		float_data[i * 4 + 1] = vec.j;
		float_data[i * 4 + 2] = vec.k;
	}
}

// Assembly:
movslq 0x60(%rdi), %rax
testq %rax, %rax
jle 0x6447
movaps %xmm1, %xmm2
shufps $0x55, %xmm1, %xmm2     # xmm2 = xmm2[1,1],xmm1[1,1]
movaps %xmm2, -0x18(%rsp)
movq 0x58(%rdi), %rcx
movaps %xmm0, %xmm13
shufps $0x55, %xmm0, %xmm13    # xmm13 = xmm13[1,1],xmm0[1,1]
movaps 0x5125(%rip), %xmm3     # 0xb400
movaps %xmm13, -0x28(%rsp)
xorps %xmm3, %xmm13
xorps %xmm1, %xmm3
pshufd $0x55, %xmm3, %xmm6     # xmm6 = xmm3[1,1,1,1]
xorps %xmm2, %xmm2
movaps %xmm1, %xmm8
mulss %xmm2, %xmm8
movaps %xmm0, %xmm2
shufps $0x11, %xmm1, %xmm2     # xmm2 = xmm2[1,0],xmm1[1,0]
shufps $0xe2, %xmm1, %xmm2     # xmm2 = xmm2[2,0],xmm1[2,3]
xorps %xmm9, %xmm9
mulps %xmm2, %xmm9
movaps %xmm1, %xmm10
shufps $0x10, %xmm0, %xmm10    # xmm10 = xmm10[0,0],xmm0[1,0]
shufps $0xe2, %xmm0, %xmm10    # xmm10 = xmm10[2,0],xmm0[2,3]
movaps %xmm0, %xmm11
shufps $0x0, %xmm0, %xmm11     # xmm11 = xmm11[0,0],xmm0[0,0]
pshufd $0x0, %xmm3, %xmm12     # xmm12 = xmm3[0,0,0,0]
movss %xmm13, %xmm12          # xmm12 = xmm13[0],xmm12[1,2,3]
movaps %xmm13, %xmm7
shufps $0x10, %xmm3, %xmm7     # xmm7 = xmm7[0,0],xmm3[1,0]
shufps $0xe2, %xmm3, %xmm7     # xmm7 = xmm7[2,0],xmm3[2,3]
shlq $0x4, %rax
xorl %edx, %edx
movss 0x8(%rcx,%rdx), %xmm2
movsd (%rcx,%rdx), %xmm14
movaps %xmm14, %xmm5
mulss %xmm13, %xmm5
movaps %xmm0, %xmm15
mulss 0x5162(%rip), %xmm15    # 0xb4c4
addss %xmm5, %xmm15
movaps %xmm14, %xmm5
shufps $0x55, %xmm14, %xmm5    # xmm5 = xmm5[1,1],xmm14[1,1]
movaps %xmm3, %xmm4
mulss %xmm5, %xmm4
addss %xmm15, %xmm4
movdqa %xmm6, %xmm15
mulss %xmm2, %xmm15
addss %xmm4, %xmm15
mulss %xmm0, %xmm5
addss %xmm8, %xmm5
movaps -0x18(%rsp), %xmm4
mulss %xmm14, %xmm4
addss %xmm5, %xmm4
movaps %xmm13, %xmm5
mulss %xmm2, %xmm5
addss %xmm4, %xmm5
movsd 0x4(%rcx,%rdx), %xmm4
mulps %xmm10, %xmm4
unpcklps %xmm14, %xmm2           # xmm2 = xmm2[0],xmm14[0],xmm2[1],xmm14[1]
mulps %xmm11, %xmm2
addps %xmm9, %xmm2
addps %xmm4, %xmm2
mulps %xmm3, %xmm14
addps %xmm2, %xmm14
movaps %xmm5, %xmm2
shufps $0xd4, %xmm14, %xmm2    # xmm2 = xmm2[0,1],xmm14[1,3]
shufps $0x52, %xmm14, %xmm2    # xmm2 = xmm2[2,0],xmm14[1,1]
mulps %xmm11, %xmm2
movaps %xmm15, %xmm4
unpcklps %xmm15, %xmm4           # xmm4 = xmm4[0],xmm15[0],xmm4[1],xmm15[1]
mulps %xmm12, %xmm4
addps %xmm2, %xmm4
movaps %xmm5, %xmm2
unpcklps %xmm14, %xmm2           # xmm2 = xmm2[0],xmm14[0],xmm2[1],xmm14[1]
mulps %xmm7, %xmm2
addps %xmm4, %xmm2
movaps %xmm14, %xmm4
mulps %xmm1, %xmm4
addps %xmm2, %xmm4
movaps %xmm14, %xmm2
mulss %xmm0, %xmm14
mulss %xmm6, %xmm15
addss %xmm14, %xmm15
shufps $0x55, %xmm2, %xmm2     # xmm2 = xmm2[1,1,1,1]
mulss %xmm3, %xmm2
addss %xmm15, %xmm2
mulss -0x28(%rsp), %xmm5
addss %xmm2, %xmm5
movlps %xmm4, (%rcx,%rdx)
movss %xmm5, 0x8(%rcx,%rdx)
addq $0x10, %rdx
cmpq %rdx, %rax
jne 0x6340
retq