// File: /workspace/github_c_makefile_star2_O0/kilobyte[P]colormatch/color_distance.c
// Function: rgb2lab
void rgb2lab(int rgb, double lab[3])
{
    double r = ((rgb>>16)&0xff)/255.0;
    double g = ((rgb>> 8)&0xff)/255.0;
    double b = ((rgb    )&0xff)/255.0;
    double x,y,z;

    r = (r > 0.04045) ? pow((r + 0.055) / 1.055, 2.4) : r / 12.92;
    g = (g > 0.04045) ? pow((g + 0.055) / 1.055, 2.4) : g / 12.92;
    b = (b > 0.04045) ? pow((b + 0.055) / 1.055, 2.4) : b / 12.92;

    // at D65
    x = (r * 0.4124 + g * 0.3576 + b * 0.1805) / 0.95047;
    y = (r * 0.2126 + g * 0.7152 + b * 0.0722) / 1.00000;
    z = (r * 0.0193 + g * 0.1192 + b * 0.9505) / 1.08883;

    x = (x > 0.008856) ? pow(x, 1.0/3) : (7.787 * x) + 16.0/116;
    y = (y > 0.008856) ? pow(y, 1.0/3) : (7.787 * y) + 16.0/116;
    z = (z > 0.008856) ? pow(z, 1.0/3) : (7.787 * z) + 16.0/116;

    lab[0] = 116 * y - 16;
    lab[1] = 500 * (x - y);
    lab[2] = 200 * (y - z);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movl -0x4(%rbp), %eax
sarl $0x10, %eax
andl $0xff, %eax
cvtsi2sd %eax, %xmm0
movsd 0x146a(%rip), %xmm1     # 0x3170
divsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movl -0x4(%rbp), %eax
sarl $0x8, %eax
andl $0xff, %eax
cvtsi2sd %eax, %xmm0
movsd 0x144a(%rip), %xmm1     # 0x3170
divsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movl -0x4(%rbp), %eax
andl $0xff, %eax
cvtsi2sd %eax, %xmm0
movsd 0x142d(%rip), %xmm1     # 0x3170
divsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x18(%rbp), %xmm0
movsd 0x140f(%rip), %xmm1     # 0x3168
ucomisd %xmm1, %xmm0
jbe 0x1d8c
movsd 0x1429(%rip), %xmm0     # 0x3190
addsd -0x18(%rbp), %xmm0
movsd 0x1414(%rip), %xmm1     # 0x3188
divsd %xmm1, %xmm0
movsd 0x1400(%rip), %xmm1     # 0x3180
callq 0x1040
movsd %xmm0, -0x48(%rbp)
jmp 0x1da2
movsd -0x18(%rbp), %xmm0
movsd 0x13df(%rip), %xmm1     # 0x3178
divsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
movsd -0x48(%rbp), %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x20(%rbp), %xmm0
movsd 0x13af(%rip), %xmm1     # 0x3168
ucomisd %xmm1, %xmm0
jbe 0x1dec
movsd 0x13c9(%rip), %xmm0     # 0x3190
addsd -0x20(%rbp), %xmm0
movsd 0x13b4(%rip), %xmm1     # 0x3188
divsd %xmm1, %xmm0
movsd 0x13a0(%rip), %xmm1     # 0x3180
callq 0x1040
movsd %xmm0, -0x50(%rbp)
jmp 0x1e02
movsd -0x20(%rbp), %xmm0
movsd 0x137f(%rip), %xmm1     # 0x3178
divsd %xmm1, %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x28(%rbp), %xmm0
movsd 0x134f(%rip), %xmm1     # 0x3168
ucomisd %xmm1, %xmm0
jbe 0x1e4c
movsd 0x1369(%rip), %xmm0     # 0x3190
addsd -0x28(%rbp), %xmm0
movsd 0x1354(%rip), %xmm1     # 0x3188
divsd %xmm1, %xmm0
movsd 0x1340(%rip), %xmm1     # 0x3180
callq 0x1040
movsd %xmm0, -0x58(%rbp)
jmp 0x1e62
movsd -0x28(%rbp), %xmm0
movsd 0x131f(%rip), %xmm1     # 0x3178
divsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x18(%rbp), %xmm1
movsd 0x1377(%rip), %xmm0     # 0x31f0
mulsd -0x20(%rbp), %xmm0
movsd 0x1362(%rip), %xmm2     # 0x31e8
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0x28(%rbp), %xmm0
movsd 0x1345(%rip), %xmm2     # 0x31e0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd 0x132d(%rip), %xmm1     # 0x31d8
divsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x18(%rbp), %xmm1
movsd 0x130f(%rip), %xmm0     # 0x31d0
mulsd -0x20(%rbp), %xmm0
movsd 0x12fa(%rip), %xmm2     # 0x31c8
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0x28(%rbp), %xmm0
movsd 0x12dd(%rip), %xmm2     # 0x31c0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd 0x11bd(%rip), %xmm1     # 0x30b0
divsd %xmm1, %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x18(%rbp), %xmm1
movsd 0x12af(%rip), %xmm0     # 0x31b8
mulsd -0x20(%rbp), %xmm0
movsd 0x129a(%rip), %xmm2     # 0x31b0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0x28(%rbp), %xmm0
movsd 0x127d(%rip), %xmm2     # 0x31a8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd 0x1265(%rip), %xmm1     # 0x31a0
divsd %xmm1, %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x30(%rbp), %xmm0
movsd 0x1247(%rip), %xmm1     # 0x3198
ucomisd %xmm1, %xmm0
jbe 0x1f70
movsd -0x30(%rbp), %xmm0
movsd 0x12a4(%rip), %xmm1     # 0x3208
callq 0x1040
movsd %xmm0, -0x60(%rbp)
jmp 0x1f92
movsd -0x30(%rbp), %xmm0
movsd 0x127b(%rip), %xmm1     # 0x31f8
mulsd %xmm1, %xmm0
movsd 0x1277(%rip), %xmm1     # 0x3200
addsd %xmm1, %xmm0
movsd %xmm0, -0x60(%rbp)
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x38(%rbp), %xmm0
movsd 0x11ef(%rip), %xmm1     # 0x3198
ucomisd %xmm1, %xmm0
jbe 0x1fc8
movsd -0x38(%rbp), %xmm0
movsd 0x124c(%rip), %xmm1     # 0x3208
callq 0x1040
movsd %xmm0, -0x68(%rbp)
jmp 0x1fea
movsd -0x38(%rbp), %xmm0
movsd 0x1223(%rip), %xmm1     # 0x31f8
mulsd %xmm1, %xmm0
movsd 0x121f(%rip), %xmm1     # 0x3200
addsd %xmm1, %xmm0
movsd %xmm0, -0x68(%rbp)
movsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x40(%rbp), %xmm0
movsd 0x1197(%rip), %xmm1     # 0x3198
ucomisd %xmm1, %xmm0
jbe 0x2020
movsd -0x40(%rbp), %xmm0
movsd 0x11f4(%rip), %xmm1     # 0x3208
callq 0x1040
movsd %xmm0, -0x70(%rbp)
jmp 0x2042
movsd -0x40(%rbp), %xmm0
movsd 0x11cb(%rip), %xmm1     # 0x31f8
mulsd %xmm1, %xmm0
movsd 0x11c7(%rip), %xmm1     # 0x3200
addsd %xmm1, %xmm0
movsd %xmm0, -0x70(%rbp)
movsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x38(%rbp), %xmm0
movsd 0x11c7(%rip), %xmm1     # 0x3220
mulsd %xmm1, %xmm0
movsd 0x11c3(%rip), %xmm1     # 0x3228
addsd %xmm1, %xmm0
movq -0x10(%rbp), %rax
movsd %xmm0, (%rax)
movsd -0x30(%rbp), %xmm1
subsd -0x38(%rbp), %xmm1
movsd 0x1195(%rip), %xmm0     # 0x3218
mulsd %xmm1, %xmm0
movq -0x10(%rbp), %rax
movsd %xmm0, 0x8(%rax)
movsd -0x38(%rbp), %xmm1
subsd -0x40(%rbp), %xmm1
movsd 0x116e(%rip), %xmm0     # 0x3210
mulsd %xmm1, %xmm0
movq -0x10(%rbp), %rax
movsd %xmm0, 0x10(%rax)
addq $0x70, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)