// File: jingdao[P]PointCloudApp/pcd.cpp
// Function: PCD::drawLine(float, float, float, float, float, float, float, float)
void PCD::drawLine(float x1,float y1,float z1,float x2,float y2,float z2,float rgb,float interval) {
	float distance = 0;
	int offset = numPoints * 4,numSteps;
	distance += (x2-x1) * (x2-x1);
	distance += (y2-y1) * (y2-y1);
	distance += (z2-z1) * (z2-z1);
	numSteps = (int) (distance/interval/interval);
	expand(numPoints + numSteps - 1);
	float* data = float_data + offset;

	float dx = (x2-x1) / numSteps;
	float dy = (y2-y1) / numSteps;
	float dz = (z2-z1) / numSteps;
	float x = x1+dx, y = y1+dy, z = z1+dz;
	for (int i=1;i<numSteps;i++) {
		*data++ = x;
		*data++ = y;
		*data++ = z;
		*data++ = rgb;
		x += dx;
		y += dy;
		z += dz;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movss %xmm0, -0xc(%rbp)
movss %xmm1, -0x10(%rbp)
movss %xmm2, -0x14(%rbp)
movss %xmm3, -0x18(%rbp)
movss %xmm4, -0x1c(%rbp)
movss %xmm5, -0x20(%rbp)
movss %xmm6, -0x24(%rbp)
movss %xmm7, -0x28(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x68(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x2c(%rbp)
movl 0x60(%rdi), %eax
shll $0x2, %eax
movl %eax, -0x30(%rbp)
movss -0x18(%rbp), %xmm0
subss -0xc(%rbp), %xmm0
movss -0x18(%rbp), %xmm2
subss -0xc(%rbp), %xmm2
movss -0x2c(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x2c(%rbp)
movss -0x1c(%rbp), %xmm0
subss -0x10(%rbp), %xmm0
movss -0x1c(%rbp), %xmm2
subss -0x10(%rbp), %xmm2
movss -0x2c(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x2c(%rbp)
movss -0x20(%rbp), %xmm0
subss -0x14(%rbp), %xmm0
movss -0x20(%rbp), %xmm2
subss -0x14(%rbp), %xmm2
movss -0x2c(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x2c(%rbp)
movss -0x2c(%rbp), %xmm0
divss -0x28(%rbp), %xmm0
divss -0x28(%rbp), %xmm0
cvttss2si %xmm0, %eax
movl %eax, -0x34(%rbp)
movl 0x60(%rdi), %esi
addl -0x34(%rbp), %esi
subl $0x1, %esi
callq 0x4330
movq -0x68(%rbp), %rax
movq 0x58(%rax), %rax
movslq -0x30(%rbp), %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movss -0x18(%rbp), %xmm0
subss -0xc(%rbp), %xmm0
cvtsi2ssl -0x34(%rbp), %xmm1
divss %xmm1, %xmm0
movss %xmm0, -0x44(%rbp)
movss -0x1c(%rbp), %xmm0
subss -0x10(%rbp), %xmm0
cvtsi2ssl -0x34(%rbp), %xmm1
divss %xmm1, %xmm0
movss %xmm0, -0x48(%rbp)
movss -0x20(%rbp), %xmm0
subss -0x14(%rbp), %xmm0
cvtsi2ssl -0x34(%rbp), %xmm1
divss %xmm1, %xmm0
movss %xmm0, -0x4c(%rbp)
movss -0xc(%rbp), %xmm0
addss -0x44(%rbp), %xmm0
movss %xmm0, -0x50(%rbp)
movss -0x10(%rbp), %xmm0
addss -0x48(%rbp), %xmm0
movss %xmm0, -0x54(%rbp)
movss -0x14(%rbp), %xmm0
addss -0x4c(%rbp), %xmm0
movss %xmm0, -0x58(%rbp)
movl $0x1, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0x462d
movss -0x50(%rbp), %xmm0
movq -0x40(%rbp), %rax
movq %rax, %rcx
addq $0x4, %rcx
movq %rcx, -0x40(%rbp)
movss %xmm0, (%rax)
movss -0x54(%rbp), %xmm0
movq -0x40(%rbp), %rax
movq %rax, %rcx
addq $0x4, %rcx
movq %rcx, -0x40(%rbp)
movss %xmm0, (%rax)
movss -0x58(%rbp), %xmm0
movq -0x40(%rbp), %rax
movq %rax, %rcx
addq $0x4, %rcx
movq %rcx, -0x40(%rbp)
movss %xmm0, (%rax)
movss -0x24(%rbp), %xmm0
movq -0x40(%rbp), %rax
movq %rax, %rcx
addq $0x4, %rcx
movq %rcx, -0x40(%rbp)
movss %xmm0, (%rax)
movss -0x44(%rbp), %xmm0
addss -0x50(%rbp), %xmm0
movss %xmm0, -0x50(%rbp)
movss -0x48(%rbp), %xmm0
addss -0x54(%rbp), %xmm0
movss %xmm0, -0x54(%rbp)
movss -0x4c(%rbp), %xmm0
addss -0x58(%rbp), %xmm0
movss %xmm0, -0x58(%rbp)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x4586
addq $0x70, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)