// File: /workspace/github_cpp_makefile_star2_O2/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, %edx
shufps $0x55, %xmm2, %xmm2     # xmm2 = xmm2[1,1,1,1]
cvttss2si %xmm2, %esi
subss %xmm1, %xmm3
cvttss2si %xmm3, %ecx
movl %edx, %eax
sarl $0x1f, %eax
orl $0x1, %eax
movl %edx, %r12d
negl %r12d
cmovsl %edx, %r12d
movl %esi, %edx
sarl $0x1f, %edx
orl $0x1, %edx
movl %esi, %r13d
negl %r13d
cmovsl %esi, %r13d
movl %ecx, %esi
sarl $0x1f, %esi
orl $0x1, %esi
movl %ecx, %edi
negl %edi
cmovsl %ecx, %edi
leal (%r12,%r12), %ebx
leal (,%r13,2), %r14d
leal (%rdi,%rdi), %r15d
cmpl %r13d, %r12d
setb %r8b
cmpl %edi, %r12d
setb %r9b
orb %r8b, %r9b
movl %r15d, -0x30(%rbp)
je 0x2a30
cmpl %r12d, %r13d
setb %r8b
cmpl %edi, %r13d
setb %r9b
orb %r8b, %r9b
je 0x2aba
movl %r14d, %r12d
subl %edi, %r12d
cvtsi2ss %edx, %xmm2
movss %xmm2, -0x60(%rbp)
movl %ebx, %r13d
cvtsi2ss %eax, %xmm2
movaps %xmm2, -0x50(%rbp)
subl %edi, %r13d
cvtsi2ss %esi, %xmm2
movss %xmm2, -0x70(%rbp)
movl %ecx, %r15d
negl %r15d
cmovsl %ecx, %r15d
subl $0x1, %r15d
jb 0x2b4a
movss %xmm1, -0x2c(%rbp)
movaps %xmm0, -0x40(%rbp)
callq 0x27e2
testl %r12d, %r12d
jle 0x2a02
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]
movl -0x30(%rbp), %ecx
subl %ecx, %r12d
jmp 0x2a09
movaps -0x40(%rbp), %xmm0
movl -0x30(%rbp), %ecx
testl %r13d, %r13d
movss -0x2c(%rbp), %xmm1
jle 0x2a18
addss -0x50(%rbp), %xmm0
movl $0x0, %eax
cmovgl %ecx, %eax
subl %eax, %r13d
addl %r14d, %r12d
addl %ebx, %r13d
addss -0x70(%rbp), %xmm1
jmp 0x29c6
movl %r14d, %r13d
subl %r12d, %r13d
cvtsi2ss %edx, %xmm2
movss %xmm2, -0x60(%rbp)
cvtsi2ss %esi, %xmm2
movss %xmm2, -0x50(%rbp)
subl %r12d, %r15d
cvtsi2ss %eax, %xmm2
movaps %xmm2, -0x70(%rbp)
subl $0x1, %r12d
jb 0x2b4a
movss %xmm1, -0x2c(%rbp)
movaps %xmm0, -0x40(%rbp)
callq 0x27e2
testl %r13d, %r13d
jle 0x2a8c
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 %ebx, %r13d
jmp 0x2a90
movaps -0x40(%rbp), %xmm0
testl %r15d, %r15d
movss -0x2c(%rbp), %xmm1
movl -0x30(%rbp), %ecx
jle 0x2aa2
addss -0x50(%rbp), %xmm1
movl $0x0, %eax
cmovgl %ebx, %eax
addl %r14d, %r13d
addl %ecx, %r15d
subl %eax, %r15d
addss -0x70(%rbp), %xmm0
jmp 0x2a53
movl %ebx, %r12d
subl %r13d, %r12d
cvtsi2ss %eax, %xmm2
movaps %xmm2, -0x60(%rbp)
cvtsi2ss %esi, %xmm2
movss %xmm2, -0x50(%rbp)
subl %r13d, %r15d
cvtsi2ss %edx, %xmm2
movss %xmm2, -0x70(%rbp)
subl $0x1, %r13d
jb 0x2b4a
movss %xmm1, -0x2c(%rbp)
movaps %xmm0, -0x40(%rbp)
callq 0x27e2
testl %r12d, %r12d
jg 0x2afc
movaps -0x40(%rbp), %xmm2
jmp 0x2b05
movaps -0x40(%rbp), %xmm2
addss -0x60(%rbp), %xmm2
movl $0x0, %eax
cmovgl %r14d, %eax
subl %eax, %r12d
testl %r15d, %r15d
movss -0x2c(%rbp), %xmm1
movl -0x30(%rbp), %ecx
jle 0x2b23
addss -0x50(%rbp), %xmm1
movl $0x0, %eax
cmovgl %r14d, %eax
addl %ebx, %r12d
addl %ecx, %r15d
subl %eax, %r15d
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]
jmp 0x2add
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x27e2