// File: rishabh-battulwar[P]imageprocessing/./include/colorspace.h
// Function: Rgb2Hsl(double*, double*, double*, double, double, double)
void Rgb2Hsl(num *H, num *S, num *L, num R, num G, num B)
{
	num Max = MAX3(R, G, B);
	num Min = MIN3(R, G, B);
	num C = Max - Min;
	
	
	*L = (Max + Min)/2;
	
	if(C > 0)
	{
		if(Max == R)
		{
			*H = (G - B) / C;
			
			if(G < B)
				*H += 6;
		}
		else if(Max == G)
			*H = 2 + (B - R) / C;
		else
			*H = 4 + (R - G) / C;
		
		*H *= 60;
		*S = (*L <= 0.5) ? (C/(2*(*L))) : (C/(2 - 2*(*L)));
	}
	else
		*H = *S = 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movsd %xmm0, -0x20(%rbp)
movsd %xmm1, -0x28(%rbp)
movsd %xmm2, -0x30(%rbp)
movsd -0x20(%rbp), %xmm0
ucomisd -0x28(%rbp), %xmm0
jb 0x9549
movsd -0x20(%rbp), %xmm0
ucomisd -0x30(%rbp), %xmm0
jb 0x9533
movsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
jmp 0x953d
movsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x9575
movsd -0x28(%rbp), %xmm0
ucomisd -0x30(%rbp), %xmm0
jb 0x9561
movsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
jmp 0x956b
movsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x20(%rbp), %xmm1
movsd -0x28(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x95c1
movsd -0x20(%rbp), %xmm1
movsd -0x30(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x95ab
movsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
jmp 0x95b5
movsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
jmp 0x95f1
movsd -0x28(%rbp), %xmm1
movsd -0x30(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x95dd
movsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
jmp 0x95e7
movsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x38(%rbp), %xmm0
subsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x48(%rbp)
movsd -0x38(%rbp), %xmm0
addsd -0x40(%rbp), %xmm0
movsd 0x12c24(%rip), %xmm1    # 0x1c240
divsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, (%rax)
movsd -0x48(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x9758
movsd -0x38(%rbp), %xmm0
ucomisd -0x20(%rbp), %xmm0
jne 0x9685
jp 0x9685
movsd -0x28(%rbp), %xmm0
subsd -0x30(%rbp), %xmm0
divsd -0x48(%rbp), %xmm0
movq -0x8(%rbp), %rax
movsd %xmm0, (%rax)
movsd -0x28(%rbp), %xmm1
movsd -0x30(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x9683
movq -0x8(%rbp), %rax
movsd 0x12bcd(%rip), %xmm0    # 0x1c248
addsd (%rax), %xmm0
movsd %xmm0, (%rax)
jmp 0x96dd
movsd -0x38(%rbp), %xmm0
ucomisd -0x28(%rbp), %xmm0
jne 0x96b8
jp 0x96b8
movsd -0x30(%rbp), %xmm1
subsd -0x20(%rbp), %xmm1
divsd -0x48(%rbp), %xmm1
movsd 0x12b96(%rip), %xmm0    # 0x1c240
addsd %xmm1, %xmm0
movq -0x8(%rbp), %rax
movsd %xmm0, (%rax)
jmp 0x96db
movsd -0x20(%rbp), %xmm1
subsd -0x28(%rbp), %xmm1
divsd -0x48(%rbp), %xmm1
movsd 0x12b69(%rip), %xmm0    # 0x1c238
addsd %xmm1, %xmm0
movq -0x8(%rbp), %rax
movsd %xmm0, (%rax)
jmp 0x96dd
movq -0x8(%rbp), %rax
movsd 0x12b67(%rip), %xmm0    # 0x1c250
mulsd (%rax), %xmm0
movsd %xmm0, (%rax)
movq -0x18(%rbp), %rax
movsd 0x12a0b(%rip), %xmm0    # 0x1c108
ucomisd (%rax), %xmm0
jb 0x9723
movsd -0x48(%rbp), %xmm0
movq -0x18(%rbp), %rax
movsd 0x12b2c(%rip), %xmm1    # 0x1c240
mulsd (%rax), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x80(%rbp)
jmp 0x9749
movsd -0x48(%rbp), %xmm0
movq -0x18(%rbp), %rax
movsd (%rax), %xmm2
addsd %xmm2, %xmm2
movsd 0x12b04(%rip), %xmm1    # 0x1c240
subsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x80(%rbp)
movsd -0x80(%rbp), %xmm0
movq -0x10(%rbp), %rax
movsd %xmm0, (%rax)
jmp 0x976e
movq -0x10(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movq -0x8(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
popq %rbp
retq