// File: rishabh-battulwar[P]imageprocessing/./include/ImageProc.h
// Function: ImageProc::distance_from_vertex(float, float, float, char)
float ImageProc::distance_from_vertex(float r, float g, float b, char vertex)
{
	float coord[3];
	if(vertex == 'C')
	{
		coord[0] = 1.0; coord[1] = 0.0; coord[2] = 1.0;
	}
	else if(vertex = 'M')
	{
		coord[0] = 0.0; coord[1] = 1.0; coord[2] = 1.0;
	}
	else if(vertex = 'Y')
	{
		coord[0] = 1.0; coord[1] = 1.0; coord[2] = 0.0;
	}
	else if(vertex = 'W')
	{
		coord[0] = 1.0; coord[1] = 1.0; coord[2] = 1.0;
	}
	else if(vertex = 'R')
	{
		coord[0] = 0.0; coord[1] = 1.0; coord[2] = 0.0;
	}
	else if(vertex = 'G')
	{
		coord[0] = 1.0; coord[1] = 0.0; coord[2] = 0.0;
	}
	else if(vertex = 'B')
	{
		coord[0] = 0.0; coord[1] = 0.0; coord[2] = 1.0;
	}
	else if(vertex = 'K')
	{
		coord[0] = 0.0; coord[1] = 0.0; coord[2] = 0.0;
	}

	float distance;
	distance 	= pow((r-coord[0]),2)
				+ pow((g-coord[1]),2)
				+ pow((b-coord[2]),2);
	return distance;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %dil, %al
movss %xmm0, -0x4(%rbp)
movss %xmm1, -0x8(%rbp)
movss %xmm2, -0xc(%rbp)
movb %al, -0xd(%rbp)
movsbl -0xd(%rbp), %eax
cmpl $0x43, %eax
jne 0x15e0d
movss 0x67da(%rip), %xmm0     # 0x1c5c8
movss %xmm0, -0x1c(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x18(%rbp)
movss 0x67c5(%rip), %xmm0     # 0x1c5c8
movss %xmm0, -0x14(%rbp)
jmp 0x15f61
movb $0x4d, -0xd(%rbp)
movb $0x1, %al
testb $0x1, %al
jne 0x15e19
jmp 0x15e40
xorps %xmm0, %xmm0
movss %xmm0, -0x1c(%rbp)
movss 0x679f(%rip), %xmm0     # 0x1c5c8
movss %xmm0, -0x18(%rbp)
movss 0x6792(%rip), %xmm0     # 0x1c5c8
movss %xmm0, -0x14(%rbp)
jmp 0x15f5f
movb $0x59, -0xd(%rbp)
movb $0x1, %al
testb $0x1, %al
jne 0x15e4c
jmp 0x15e73
movss 0x6774(%rip), %xmm0     # 0x1c5c8
movss %xmm0, -0x1c(%rbp)
movss 0x6767(%rip), %xmm0     # 0x1c5c8
movss %xmm0, -0x18(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x14(%rbp)
jmp 0x15f5d
movb $0x57, -0xd(%rbp)
movb $0x1, %al
testb $0x1, %al
jne 0x15e7f
jmp 0x15eab
movss 0x6741(%rip), %xmm0     # 0x1c5c8
movss %xmm0, -0x1c(%rbp)
movss 0x6734(%rip), %xmm0     # 0x1c5c8
movss %xmm0, -0x18(%rbp)
movss 0x6727(%rip), %xmm0     # 0x1c5c8
movss %xmm0, -0x14(%rbp)
jmp 0x15f5b
movb $0x52, -0xd(%rbp)
movb $0x1, %al
testb $0x1, %al
jne 0x15eb7
jmp 0x15ed9
xorps %xmm0, %xmm0
movss %xmm0, -0x1c(%rbp)
movss 0x6701(%rip), %xmm0     # 0x1c5c8
movss %xmm0, -0x18(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x14(%rbp)
jmp 0x15f59
movb $0x47, -0xd(%rbp)
movb $0x1, %al
testb $0x1, %al
jne 0x15ee5
jmp 0x15f04
movss 0x66db(%rip), %xmm0     # 0x1c5c8
movss %xmm0, -0x1c(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x18(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x14(%rbp)
jmp 0x15f57
movb $0x42, -0xd(%rbp)
movb $0x1, %al
testb $0x1, %al
jne 0x15f10
jmp 0x15f2f
xorps %xmm0, %xmm0
movss %xmm0, -0x1c(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x18(%rbp)
movss 0x66a0(%rip), %xmm0     # 0x1c5c8
movss %xmm0, -0x14(%rbp)
jmp 0x15f55
movb $0x4b, -0xd(%rbp)
movb $0x1, %al
testb $0x1, %al
jne 0x15f3b
jmp 0x15f53
xorps %xmm0, %xmm0
movss %xmm0, -0x1c(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x18(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x14(%rbp)
jmp 0x15f55
jmp 0x15f57
jmp 0x15f59
jmp 0x15f5b
jmp 0x15f5d
jmp 0x15f5f
jmp 0x15f61
movss -0x4(%rbp), %xmm0
subss -0x1c(%rbp), %xmm0
movl $0x2, %edi
callq 0x1b3e0
movsd %xmm0, -0x30(%rbp)
movss -0x8(%rbp), %xmm0
subss -0x18(%rbp), %xmm0
movl $0x2, %edi
callq 0x1b3e0
movaps %xmm0, %xmm1
movsd -0x30(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movss -0xc(%rbp), %xmm0
subss -0x14(%rbp), %xmm0
movl $0x2, %edi
callq 0x1b3e0
movaps %xmm0, %xmm1
movsd -0x28(%rbp), %xmm0
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x20(%rbp)
movss -0x20(%rbp), %xmm0
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)