// File: /workspace/github_cpp_makefile_star2_O3/Olverine[P]TerminalGraphics/./Graphics.h
// Function: DrawLine(glm::tvec3<float, (glm::precision)0>, glm::tvec3<float, (glm::precision)0>)
void DrawLine(vec3 p1, vec3 p2) {
	int i, dx, dy, dz, l, m, n, x_inc, y_inc, z_inc, err_1, err_2, dx2, dy2, dz2;
	vec3 point = p1;
	dx = p2.x - p1.x;
	dy = p2.y - p1.y;
	dz = p2.z - p1.z;
	x_inc = (dx < 0) ? -1 : 1;
	l = abs(dx);
	y_inc = (dy < 0) ? -1 : 1;
	m = abs(dy);
	z_inc = (dz < 0) ? -1 : 1;
	n = abs(dz);
	dx2 = l << 1;
	dy2 = m << 1;
	dz2 = n << 1;

	if ((l >= m) && (l >= n)) {
		err_1 = dy2 - l;
		err_2 = dz2 - l;
		for (i = 0; i < l; i++) {
			DrawPoint(point);
			if (err_1 > 0) {
				point.y += y_inc;
				err_1 -= dx2;
			}
			if (err_2 > 0) {
				point.z += z_inc;
				err_2 -= dx2;
			}
			err_1 += dy2;
			err_2 += dz2;
			point.x += x_inc;
		}
	}
	else if ((m >= l) && (m >= n)) {
		err_1 = dx2 - m;
		err_2 = dz2 - m;
		for (i = 0; i < m; i++) {
			DrawPoint(point);
			if (err_1 > 0) {
				point.x += x_inc;
				err_1 -= dy2;
			}
			if (err_2 > 0) {
				point.z += z_inc;
				err_2 -= dy2;
			}
			err_1 += dx2;
			err_2 += dz2;
			point.y += y_inc;
		}
	}
	else {
		err_1 = dy2 - n;
		err_2 = dx2 - n;
		for (i = 0; i < n; i++) {
			DrawPoint(point);
			if (err_1 > 0) {
				point.y += y_inc;
				err_1 -= dz2;
			}
			if (err_2 > 0) {
				point.x += x_inc;
				err_2 -= dz2;
			}
			err_1 += dy2;
			err_2 += dx2;
			point.z += z_inc;
		}
	}
	DrawPoint(point);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
subps %xmm0, %xmm2
cvttss2si %xmm2, %r8d
shufps $0x55, %xmm2, %xmm2     # xmm2 = xmm2[1,1,1,1]
cvttss2si %xmm2, %edi
subss %xmm1, %xmm3
cvttss2si %xmm3, %esi
movl %r8d, %eax
sarl $0x1f, %eax
orl $0x1, %eax
movl %r8d, %r12d
negl %r12d
cmovsl %r8d, %r12d
movl %edi, %ecx
sarl $0x1f, %ecx
orl $0x1, %ecx
movl %edi, %r13d
negl %r13d
cmovsl %edi, %r13d
movl %esi, %edx
sarl $0x1f, %edx
orl $0x1, %edx
movl %esi, %r9d
negl %r9d
cmovsl %esi, %r9d
leal (%r12,%r12), %r15d
leal (,%r13,2), %r14d
leal (%r9,%r9), %r10d
movl %r10d, -0x2c(%rbp)
cmpl %r13d, %r12d
setb %r10b
cmpl %r9d, %r12d
setb %r11b
orb %r10b, %r11b
je 0x2a8d
cmpl %r12d, %r13d
setb %r8b
cmpl %r9d, %r13d
setb %r10b
orb %r8b, %r10b
je 0x2b29
testl %esi, %esi
je 0x2bd0
movl %r15d, %r12d
subl %r9d, %r12d
xorps %xmm2, %xmm2
cvtsi2ss %ecx, %xmm2
movss %xmm2, -0x60(%rbp)
movl %r14d, %r13d
xorps %xmm2, %xmm2
cvtsi2ss %eax, %xmm2
movaps %xmm2, -0x50(%rbp)
subl %r9d, %r13d
xorps %xmm2, %xmm2
cvtsi2ss %edx, %xmm2
movss %xmm2, -0x70(%rbp)
movl %esi, %ebx
negl %ebx
cmovsl %esi, %ebx
movaps %xmm0, -0x40(%rbp)
movss %xmm1, -0x30(%rbp)
callq 0x280a
testl %r13d, %r13d
jle 0x2a5a
movaps -0x40(%rbp), %xmm1
movaps %xmm1, %xmm0
shufps $0x55, %xmm1, %xmm0     # xmm0 = xmm0[1,1],xmm1[1,1]
addss -0x60(%rbp), %xmm0
movlhps %xmm1, %xmm0            # xmm0 = xmm0[0],xmm1[0]
shufps $0xe2, %xmm1, %xmm0     # xmm0 = xmm0[2,0],xmm1[2,3]
subl -0x2c(%rbp), %r13d
jmp 0x2a5e
movaps -0x40(%rbp), %xmm0
testl %r12d, %r12d
movss -0x30(%rbp), %xmm1
jle 0x2a6d
addss -0x50(%rbp), %xmm0
movl $0x0, %eax
cmovgl -0x2c(%rbp), %eax
subl %eax, %r12d
addl %r14d, %r13d
addl %r15d, %r12d
addss -0x70(%rbp), %xmm1
decl %ebx
jne 0x2a2a
jmp 0x2bd0
testl %r8d, %r8d
je 0x2bd0
movl -0x2c(%rbp), %r13d
subl %r12d, %r13d
xorps %xmm2, %xmm2
cvtsi2ss %ecx, %xmm2
movss %xmm2, -0x60(%rbp)
movl %r14d, %ebx
xorps %xmm2, %xmm2
cvtsi2ss %edx, %xmm2
movss %xmm2, -0x50(%rbp)
subl %r12d, %ebx
xorps %xmm2, %xmm2
cvtsi2ss %eax, %xmm2
movaps %xmm2, -0x70(%rbp)
movaps %xmm0, -0x40(%rbp)
movss %xmm1, -0x30(%rbp)
callq 0x280a
testl %ebx, %ebx
jle 0x2af4
movaps -0x40(%rbp), %xmm1
movaps %xmm1, %xmm0
shufps $0x55, %xmm1, %xmm0     # xmm0 = xmm0[1,1],xmm1[1,1]
addss -0x60(%rbp), %xmm0
movlhps %xmm1, %xmm0            # xmm0 = xmm0[0],xmm1[0]
shufps $0xe2, %xmm1, %xmm0     # xmm0 = xmm0[2,0],xmm1[2,3]
subl %r15d, %ebx
jmp 0x2af8
movaps -0x40(%rbp), %xmm0
testl %r13d, %r13d
movss -0x30(%rbp), %xmm1
jle 0x2b07
addss -0x50(%rbp), %xmm1
movl $0x0, %eax
cmovgl %r15d, %eax
addl %r14d, %ebx
addl -0x2c(%rbp), %r13d
subl %eax, %r13d
addss -0x70(%rbp), %xmm0
decl %r12d
jne 0x2ac6
jmp 0x2bd0
testl %edi, %edi
je 0x2bd0
movl -0x2c(%rbp), %r12d
subl %r13d, %r12d
movl %r15d, %ebx
xorps %xmm2, %xmm2
cvtsi2ss %eax, %xmm2
movaps %xmm2, -0x60(%rbp)
subl %r13d, %ebx
xorps %xmm2, %xmm2
cvtsi2ss %edx, %xmm2
movss %xmm2, -0x50(%rbp)
xorps %xmm2, %xmm2
cvtsi2ss %ecx, %xmm2
movss %xmm2, -0x70(%rbp)
movaps %xmm0, %xmm2
movaps %xmm2, -0x40(%rbp)
movaps %xmm2, %xmm0
movss %xmm1, -0x30(%rbp)
callq 0x280a
testl %ebx, %ebx
jg 0x2b7f
movaps -0x40(%rbp), %xmm2
jmp 0x2b88
movaps -0x40(%rbp), %xmm2
addss -0x60(%rbp), %xmm2
movl $0x0, %eax
cmovgl %r14d, %eax
subl %eax, %ebx
testl %r12d, %r12d
movss -0x30(%rbp), %xmm1
jle 0x2ba2
addss -0x50(%rbp), %xmm1
movl $0x0, %eax
cmovgl %r14d, %eax
addl %r15d, %ebx
addl -0x2c(%rbp), %r12d
subl %eax, %r12d
movaps %xmm2, %xmm0
shufps $0x55, %xmm2, %xmm0     # xmm0 = xmm0[1,1],xmm2[1,1]
addss -0x70(%rbp), %xmm0
movlhps %xmm2, %xmm0            # xmm0 = xmm0[0],xmm2[0]
shufps $0xe2, %xmm2, %xmm0     # xmm0 = xmm0[2,0],xmm2[2,3]
movaps %xmm0, %xmm2
decl %r13d
jne 0x2b64
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x280a