#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double M_PI;
double atan2f(float, float);
double cosf(double);
double expf(double);
double fabsf(float);
float powf(int, int);
double sinf(double);
double sqrtf(float);
float dt_colorspaces_deltaE_2000(float Lab0[3], float Lab1[3]) {
  float L_ip = (Lab0[0] + Lab1[0]) * 0.5;
  float C1 = sqrtf(Lab0[1] * Lab0[1] + Lab0[2] * Lab0[2]);
  float C2 = sqrtf(Lab1[1] * Lab1[1] + Lab1[2] * Lab1[2]);
  float C_i = (C1 + C2) * 0.5;
  float G = (1.0 - sqrtf(powf(C_i, 7) / (powf(C_i, 7) + powf(25, 7)))) * 0.5;
  float a1_p = Lab0[1] * (1 + G);
  float a2_p = Lab1[1] * (1 + G);
  float C1_p = sqrtf(a1_p * a1_p + Lab0[2] * Lab0[2]);
  float C2_p = sqrtf(a2_p * a2_p + Lab1[2] * Lab1[2]);
  float C_ip = (C1_p + C2_p) * 0.5;
  float h1_p = (atan2f(Lab0[2], a1_p) * 180.0 / M_PI);
  if (h1_p < 0)
    h1_p += 360.0;
  float h2_p = (atan2f(Lab1[2], a2_p) * 180.0 / M_PI);
  if (h2_p < 0)
    h2_p += 360.0;
  float H_ip;
  if (fabsf(h1_p - h2_p) > 180.0)
    H_ip = (h1_p + h2_p + 360.0) * 0.5;
  else
    H_ip = (h1_p + h2_p) * 0.5;
  float T = 1.0 - 0.17 * cosf((H_ip - 30.0 * M_PI / 180.0)) +
            0.24 * cosf((2.0 * H_ip * M_PI / 180.0)) +
            0.32 * cosf((3.0 * H_ip + 6.0 * M_PI / 180.0)) -
            0.20 * cosf((4.0 * H_ip - 63.0 * M_PI / 180.0));
  float dh_p = h2_p - h1_p;
  if (fabsf(dh_p) > 180.0) {
    if (h2_p <= h1_p)
      dh_p += 360.0;
    else
      dh_p -= 360.0;
  }
  float dL_p = Lab1[0] - Lab0[0];
  float dC_p = C2_p - C1_p;
  float dH_p = 2.0 * sqrtf(C1_p * C2_p) * sinf((dh_p * 0.5 * M_PI / 180.0));
  float SL = 1.0 + ((0.015 * (L_ip - 50.0) * (L_ip - 50.0)) /
                    sqrtf(20.0 + (L_ip - 50.0) * (L_ip - 50.0)));
  float SC = 1.0 + 0.045 * C_ip;
  float SH = 1.0 + 0.015 * C_ip * T;
  float dtheta =
      30.0 * expf(-1.0 * ((H_ip - 275.0) / 25.0) * ((H_ip - 275.0) / 25.0));
  float RC = 2.0 * sqrtf(powf(C_ip, 7) / (powf(C_ip, 7) + powf(25, 7)));
  float RT = -1.0 * RC * sinf((2.0 * dtheta * M_PI / 180.0));
  float KL = 1.0;
  float KC = 1.0;
  float KH = 1.0;
  float dE = sqrtf((dL_p / (KL * SL)) * (dL_p / (KL * SL)) +
                   (dC_p / (KC * SC)) * (dC_p / (KC * SC)) +
                   (dH_p / (KH * SH)) * (dH_p / (KH * SH)) +
                   RT * (dC_p / (KC * SC)) * (dH_p / (KH * SH)));
  return dE;
}


x86 assembly (clang, -O0):
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x10(%rbp),%rax
addss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe69(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movss  0x4(%rax),%xmm0
mov    -0x8(%rbp),%rax
movss  0x4(%rax),%xmm2
mov    -0x8(%rbp),%rax
movss  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulss  0x8(%rax),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1080 <sqrtf@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
movss  0x4(%rax),%xmm0
mov    -0x10(%rbp),%rax
movss  0x4(%rax),%xmm2
mov    -0x10(%rbp),%rax
movss  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulss  0x8(%rax),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1080 <sqrtf@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x1c(%rbp)
movss  -0x18(%rbp),%xmm0
addss  -0x1c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xdd2(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x20(%rbp)
cvttss2si -0x20(%rbp),%edi
mov    $0x7,%esi
call   1050 <powf@plt>
movss  %xmm0,-0x84(%rbp)
ff
cvttss2si -0x20(%rbp),%edi
mov    $0x7,%esi
call   1050 <powf@plt>
movss  %xmm0,-0x88(%rbp)
ff
mov    $0x19,%edi
mov    $0x7,%esi
call   1050 <powf@plt>
movss  -0x88(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movss  -0x84(%rbp),%xmm0
ff
addss  %xmm2,%xmm1
divss  %xmm1,%xmm0
call   1080 <sqrtf@plt>
movaps %xmm0,%xmm1
movsd  0xd65(%rip),%xmm0
subsd  %xmm1,%xmm0
movsd  0xd51(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  0xdd3(%rip),%xmm1
addss  -0x24(%rbp),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  0xdb4(%rip),%xmm1
addss  -0x24(%rbp),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0x28(%rbp),%xmm0
movss  -0x28(%rbp),%xmm2
mov    -0x8(%rbp),%rax
movss  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulss  0x8(%rax),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1080 <sqrtf@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x2c(%rbp),%xmm0
movss  -0x2c(%rbp),%xmm2
mov    -0x10(%rbp),%rax
movss  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulss  0x8(%rax),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1080 <sqrtf@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x30(%rbp),%xmm0
addss  -0x34(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xc8c(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x38(%rbp)
mov    -0x8(%rbp),%rax
movss  0x8(%rax),%xmm0
movss  -0x28(%rbp),%xmm1
call   1090 <atan2f@plt>
movsd  0xc5c(%rip),%xmm1
mulsd  %xmm1,%xmm0
mov    0x2c39(%rip),%rax
divsd  (%rax),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x3c(%rbp)
xorps  %xmm0,%xmm0
ucomiss -0x3c(%rbp),%xmm0
jbe    13e7 <dt_colorspaces_deltaE_2000+0x277>
movss  -0x3c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xc3e(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
movss  0x8(%rax),%xmm0
movss  -0x2c(%rbp),%xmm1
call   1090 <atan2f@plt>
movsd  0xbfe(%rip),%xmm1
mulsd  %xmm1,%xmm0
mov    0x2bdb(%rip),%rax
divsd  (%rax),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x40(%rbp)
xorps  %xmm0,%xmm0
ucomiss -0x40(%rbp),%xmm0
jbe    1445 <dt_colorspaces_deltaE_2000+0x2d5>
movss  -0x40(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xbe0(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x3c(%rbp),%xmm0
subss  -0x40(%rbp),%xmm0
call   1030 <fabsf@plt>
movsd  0xba4(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    149a <dt_colorspaces_deltaE_2000+0x32a>
movss  -0x3c(%rbp),%xmm0
addss  -0x40(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xb9c(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xb80(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x44(%rbp)
jmp    14bd <dt_colorspaces_deltaE_2000+0x34d>
movss  -0x3c(%rbp),%xmm0
addss  -0x40(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xb58(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xb9a(%rip),%xmm1
mov    0x2b13(%rip),%rax
mulsd  (%rax),%xmm1
movsd  0xb1f(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
call   1060 <cosf@plt>
movsd  0xb6a(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb0e(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xb39(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    0x2abe(%rip),%rax
mulsd  (%rax),%xmm0
movsd  0xaca(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1060 <cosf@plt>
movsd  -0xa0(%rbp),%xmm1
ff
movsd  0xb01(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xad8(%rip),%xmm1
mov    0x2a71(%rip),%rax
mulsd  (%rax),%xmm1
movsd  0xa7d(%rip),%xmm2
divsd  %xmm2,%xmm1
movsd  0xab1(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1060 <cosf@plt>
movsd  -0x98(%rbp),%xmm1
ff
movsd  0xa8c(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xa63(%rip),%xmm1
mov    0x2a14(%rip),%rax
mulsd  (%rax),%xmm1
movsd  0xa20(%rip),%xmm2
divsd  %xmm2,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xa25(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1060 <cosf@plt>
movsd  -0x90(%rbp),%xmm1
ff
movsd  0xa00(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x40(%rbp),%xmm0
subss  -0x3c(%rbp),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x4c(%rbp),%xmm0
call   1030 <fabsf@plt>
movsd  0x9ae(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    16b5 <dt_colorspaces_deltaE_2000+0x545>
movss  -0x40(%rbp),%xmm1
movss  -0x3c(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1692 <dt_colorspaces_deltaE_2000+0x522>
movss  -0x4c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x998(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x4c(%rbp)
jmp    16b0 <dt_colorspaces_deltaE_2000+0x540>
movss  -0x4c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x975(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x4c(%rbp)
jmp    16b5 <dt_colorspaces_deltaE_2000+0x545>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
subss  (%rax),%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x34(%rbp),%xmm0
subss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x30(%rbp),%xmm0
mulss  -0x34(%rbp),%xmm0
call   1080 <sqrtf@plt>
movaps %xmm0,%xmm1
movsd  0x965(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movss  -0x4c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x8f8(%rip),%xmm1
mulsd  %xmm1,%xmm0
mov    0x28cd(%rip),%rax
mulsd  (%rax),%xmm0
movsd  0x8d9(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1040 <sinf@plt>
movaps %xmm0,%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x14(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x947(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0x923(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x14(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0x926(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movss  -0x14(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x905(%rip),%xmm1
subsd  %xmm1,%xmm0
movss  -0x14(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0x8f0(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x8d8(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
call   1080 <sqrtf@plt>
movsd  -0xb8(%rbp),%xmm1
ff
divsd  %xmm0,%xmm1
movsd  0x82f(%rip),%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x38(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x891(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x805(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x38(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x85f(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x48(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x7ce(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x820(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0x80c(%rip),%xmm0
divsd  %xmm0,%xmm1
movsd  0x7f8(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x44(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0x7f3(%rip),%xmm2
subsd  %xmm2,%xmm1
movsd  0x7df(%rip),%xmm2
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
call   1070 <expf@plt>
movaps %xmm0,%xmm1
movsd  0x7b7(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x68(%rbp)
cvttss2si -0x38(%rbp),%edi
mov    $0x7,%esi
call   1050 <powf@plt>
movss  %xmm0,-0xac(%rbp)
ff
cvttss2si -0x38(%rbp),%edi
mov    $0x7,%esi
call   1050 <powf@plt>
movss  %xmm0,-0xb0(%rbp)
ff
mov    $0x19,%edi
mov    $0x7,%esi
call   1050 <powf@plt>
movss  -0xb0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movss  -0xac(%rbp),%xmm0
ff
addss  %xmm2,%xmm1
divss  %xmm1,%xmm0
call   1080 <sqrtf@plt>
movaps %xmm0,%xmm1
movsd  0x732(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x6c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x72c(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movss  -0x68(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x6f7(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    0x267c(%rip),%rax
mulsd  (%rax),%xmm0
movsd  0x688(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1040 <sinf@plt>
movaps %xmm0,%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  0x707(%rip),%xmm0
movss  %xmm0,-0x74(%rbp)
movss  0x6fa(%rip),%xmm0
movss  %xmm0,-0x78(%rbp)
movss  0x6ed(%rip),%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x50(%rbp),%xmm0
movss  -0x74(%rbp),%xmm1
mulss  -0x5c(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x74(%rbp),%xmm1
mulss  -0x5c(%rbp),%xmm1
divss  %xmm1,%xmm2
movss  -0x54(%rbp),%xmm1
movss  -0x78(%rbp),%xmm3
mulss  -0x60(%rbp),%xmm3
divss  %xmm3,%xmm1
movss  -0x54(%rbp),%xmm3
movss  -0x78(%rbp),%xmm4
mulss  -0x60(%rbp),%xmm4
divss  %xmm4,%xmm3
mulss  %xmm3,%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  -0x58(%rbp),%xmm1
movss  -0x7c(%rbp),%xmm2
mulss  -0x64(%rbp),%xmm2
divss  %xmm2,%xmm1
movss  -0x58(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm3
mulss  -0x64(%rbp),%xmm3
divss  %xmm3,%xmm2
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x70(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x78(%rbp),%xmm3
mulss  -0x60(%rbp),%xmm3
divss  %xmm3,%xmm2
mulss  %xmm2,%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm3
mulss  -0x64(%rbp),%xmm3
divss  %xmm3,%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1080 <sqrtf@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x80(%rbp),%xmm0
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
push   %rbp
push   %r14
push   %rbx
sub    $0x80,%rsp
mov    %rsi,%rbx
mov    %rdi,%r14
movss  (%rdi),%xmm0
movss  %xmm0,0x18(%rsp)
movss  0x4(%rdi),%xmm0
movss  (%rsi),%xmm1
movss  %xmm1,0x4c(%rsp)
movss  0x8(%rdi),%xmm1
mulss  %xmm1,%xmm1
mulss  %xmm0,%xmm0
addss  %xmm1,%xmm0
call   1080 <sqrtf@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x20(%rsp)
movss  0x4(%rbx),%xmm0
movss  0x8(%rbx),%xmm1
mulss  %xmm1,%xmm1
mulss  %xmm0,%xmm0
addss  %xmm1,%xmm0
call   1080 <sqrtf@plt>
cvtsd2ss %xmm0,%xmm0
addss  0x20(%rsp),%xmm0
mulss  0xe19(%rip),%xmm0
cvttss2si %xmm0,%ebp
mov    %ebp,%edi
mov    $0x7,%esi
call   1050 <powf@plt>
movss  %xmm0,0x20(%rsp)
mov    %ebp,%edi
mov    $0x7,%esi
call   1050 <powf@plt>
movss  %xmm0,(%rsp)
mov    $0x19,%edi
mov    $0x7,%esi
call   1050 <powf@plt>
addss  (%rsp),%xmm0
movss  0x20(%rsp),%xmm1
divss  %xmm0,%xmm1
movaps %xmm1,%xmm0
call   1080 <sqrtf@plt>
movsd  0xdd4(%rip),%xmm1
subsd  %xmm0,%xmm1
mulsd  0xdd0(%rip),%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
addss  0xdad(%rip),%xmm0
movss  0x4(%r14),%xmm2
mulss  %xmm0,%xmm2
movss  %xmm2,0x30(%rsp)
mulss  0x4(%rbx),%xmm0
movss  %xmm0,0x20(%rsp)
movss  0x8(%r14),%xmm1
mulss  %xmm1,%xmm1
movaps %xmm2,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1080 <sqrtf@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0xc(%rsp)
movss  0x8(%rbx),%xmm1
mulss  %xmm1,%xmm1
movss  0x20(%rsp),%xmm0
mulss  %xmm0,%xmm0
addss  %xmm1,%xmm0
call   1080 <sqrtf@plt>
xorps  %xmm1,%xmm1
cvtsd2ss %xmm0,%xmm1
movss  0xc(%rsp),%xmm0
movss  %xmm1,0x48(%rsp)
addss  %xmm1,%xmm0
movss  %xmm0,(%rsp)
movss  0x8(%r14),%xmm0
movss  0x30(%rsp),%xmm1
call   1090 <atan2f@plt>
movaps %xmm0,0x50(%rsp)
mov    0x2cfd(%rip),%rbp
movss  0x8(%rbx),%xmm0
movsd  0x0(%rbp),%xmm1
movaps %xmm1,0x30(%rsp)
movss  0x20(%rsp),%xmm1
call   1090 <atan2f@plt>
movapd 0x50(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
mulpd  0xda9(%rip),%xmm1
movapd 0x30(%rsp),%xmm0
movhpd 0x0(%rbp),%xmm0
divpd  %xmm0,%xmm1
cvtpd2ps %xmm1,%xmm2
xorpd  %xmm0,%xmm0
movapd %xmm2,%xmm1
cmpltps %xmm0,%xmm1
movaps %xmm1,%xmm0
andnps %xmm2,%xmm0
addps  0xd8d(%rip),%xmm2
andps  %xmm1,%xmm2
orps   %xmm0,%xmm2
movaps %xmm2,0x30(%rsp)
pshufd $0x55,%xmm2,%xmm1
movdqa %xmm1,0x50(%rsp)
movaps %xmm2,%xmm0
subss  %xmm1,%xmm0
call   1030 <fabsf@plt>
movaps 0x50(%rsp),%xmm2
ucomisd 0xcae(%rip),%xmm0
movaps 0x30(%rsp),%xmm1
addss  %xmm2,%xmm1
jbe    139d <dt_colorspaces_deltaE_2000+0x22d>
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
addsd  0xc9c(%rip),%xmm0
mulsd  0xc84(%rip),%xmm0
xorps  %xmm1,%xmm1
cvtsd2ss %xmm0,%xmm1
jmp    13a5 <dt_colorspaces_deltaE_2000+0x235>
mulss  0xc5b(%rip),%xmm1
movss  (%rsp),%xmm0
movss  0xc4e(%rip),%xmm2
mulss  %xmm2,%xmm0
movss  %xmm0,(%rsp)
movsd  0x0(%rbp),%xmm0
mulsd  0xc68(%rip),%xmm0
cvtss2sd %xmm1,%xmm1
movaps %xmm1,0x20(%rsp)
divsd  0xc47(%rip),%xmm0
addsd  %xmm1,%xmm0
call   1060 <cosf@plt>
movsd  %xmm0,0x78(%rsp)
movapd 0x20(%rsp),%xmm0
addsd  %xmm0,%xmm0
mulsd  0x0(%rbp),%xmm0
divsd  0xc21(%rip),%xmm0
call   1060 <cosf@plt>
movsd  %xmm0,0x70(%rsp)
movsd  0x0(%rbp),%xmm1
mulsd  0xc21(%rip),%xmm1
divsd  0xc01(%rip),%xmm1
movsd  0xc19(%rip),%xmm0
mulsd  0x20(%rsp),%xmm0
addsd  %xmm1,%xmm0
call   1060 <cosf@plt>
movsd  0x0(%rbp),%xmm1
mulsd  0xc05(%rip),%xmm1
divsd  0xc05(%rip),%xmm1
movsd  %xmm0,0x68(%rsp)
movsd  0xbff(%rip),%xmm0
mulsd  0x20(%rsp),%xmm0
addsd  %xmm1,%xmm0
call   1060 <cosf@plt>
movsd  %xmm0,0x60(%rsp)
movaps 0x50(%rsp),%xmm0
subss  0x30(%rsp),%xmm0
movss  %xmm0,0x10(%rsp)
call   1030 <fabsf@plt>
ucomisd 0xb94(%rip),%xmm0
jbe    14d4 <dt_colorspaces_deltaE_2000+0x364>
movaps 0x30(%rsp),%xmm0
ucomiss 0x50(%rsp),%xmm0
movss  0x4c(%rsp),%xmm1
movss  0xc(%rsp),%xmm2
movss  0x48(%rsp),%xmm3
movsd  0x78(%rsp),%xmm4
movsd  0x70(%rsp),%xmm5
movss  0x10(%rsp),%xmm0
movsd  0x68(%rsp),%xmm6
movsd  0x60(%rsp),%xmm7
jae    1500 <dt_colorspaces_deltaE_2000+0x390>
addss  0xb3a(%rip),%xmm0
jmp    1508 <dt_colorspaces_deltaE_2000+0x398>
movss  0x4c(%rsp),%xmm1
movss  0xc(%rsp),%xmm2
movss  0x48(%rsp),%xmm3
movsd  0x78(%rsp),%xmm4
movsd  0x70(%rsp),%xmm5
movsd  0x68(%rsp),%xmm6
movsd  0x60(%rsp),%xmm7
jmp    150e <dt_colorspaces_deltaE_2000+0x39e>
addss  0xb00(%rip),%xmm0
movss  %xmm0,0x10(%rsp)
mulsd  0xb4a(%rip),%xmm4
movsd  0xaf2(%rip),%xmm0
addsd  %xmm0,%xmm4
mulsd  0xb3e(%rip),%xmm5
addsd  %xmm4,%xmm5
mulsd  0xb3a(%rip),%xmm6
mulsd  0xb3a(%rip),%xmm7
addsd  %xmm5,%xmm6
addsd  %xmm6,%xmm7
xorps  %xmm0,%xmm0
cvtsd2ss %xmm7,%xmm0
movss  %xmm0,0xc(%rsp)
movss  0x18(%rsp),%xmm0
addss  %xmm1,%xmm0
mulss  0xa9b(%rip),%xmm0
movss  %xmm0,0x18(%rsp)
movss  (%rbx),%xmm0
subss  (%r14),%xmm0
movss  %xmm0,0x30(%rsp)
movaps %xmm3,%xmm0
subss  %xmm2,%xmm0
movss  %xmm0,0x50(%rsp)
mulss  %xmm3,%xmm2
movaps %xmm2,%xmm0
call   1080 <sqrtf@plt>
movaps %xmm0,%xmm1
movss  0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mulsd  0xa70(%rip),%xmm0
addsd  %xmm1,%xmm1
movsd  %xmm1,0x10(%rsp)
mulsd  0x0(%rbp),%xmm0
movsd  0xa61(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1040 <sinf@plt>
mulsd  0x10(%rsp),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x10(%rsp)
movss  0x18(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
addsd  0xa96(%rip),%xmm0
movapd %xmm0,%xmm1
mulsd  0xa92(%rip),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x18(%rsp)
mulsd  %xmm0,%xmm0
addsd  0xa84(%rip),%xmm0
cvtsd2ss %xmm0,%xmm0
call   1080 <sqrtf@plt>
movsd  0x18(%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  0x9e9(%rip),%xmm3
addsd  %xmm3,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
movss  (%rsp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xa55(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm3,%xmm2
movapd %xmm3,%xmm4
cvtsd2ss %xmm2,%xmm2
movss  0x30(%rsp),%xmm3
divss  %xmm0,%xmm3
movss  %xmm3,0x30(%rsp)
movss  0x50(%rsp),%xmm0
divss  %xmm2,%xmm0
movss  %xmm0,0x50(%rsp)
mulsd  0xa0d(%rip),%xmm1
movss  0xc(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm4,%xmm0
cvtsd2ss %xmm0,%xmm0
movapd 0x20(%rsp),%xmm1
addsd  0xa01(%rip),%xmm1
divsd  0xa01(%rip),%xmm1
movss  0x10(%rsp),%xmm2
divss  %xmm0,%xmm2
movss  %xmm2,0x10(%rsp)
movapd 0xa21(%rip),%xmm0
xorpd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
call   1070 <expf@plt>
mulsd  0x9dc(%rip),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x20(%rsp)
cvttss2si (%rsp),%ebx
mov    %ebx,%edi
mov    $0x7,%esi
call   1050 <powf@plt>
movss  %xmm0,(%rsp)
mov    %ebx,%edi
mov    $0x7,%esi
call   1050 <powf@plt>
movss  %xmm0,0x18(%rsp)
mov    $0x19,%edi
mov    $0x7,%esi
call   1050 <powf@plt>
addss  0x18(%rsp),%xmm0
movss  (%rsp),%xmm1
divss  %xmm0,%xmm1
movaps %xmm1,%xmm0
call   1080 <sqrtf@plt>
addsd  %xmm0,%xmm0
cvtsd2ss %xmm0,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,(%rsp)
movss  0x20(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
addsd  %xmm0,%xmm0
mulsd  0x0(%rbp),%xmm0
divsd  0x8c8(%rip),%xmm0
call   1040 <sinf@plt>
mulsd  (%rsp),%xmm0
xorps  %xmm1,%xmm1
cvtsd2ss %xmm0,%xmm1
movss  0x50(%rsp),%xmm3
movaps %xmm3,%xmm0
mulss  %xmm3,%xmm0
movss  0x30(%rsp),%xmm2
mulss  %xmm2,%xmm2
addss  %xmm0,%xmm2
movss  0x10(%rsp),%xmm4
movaps %xmm4,%xmm0
mulss  %xmm4,%xmm0
addss  %xmm2,%xmm0
mulss  %xmm3,%xmm1
mulss  %xmm4,%xmm1
subss  %xmm1,%xmm0
call   1080 <sqrtf@plt>
cvtsd2ss %xmm0,%xmm0
add    $0x80,%rsp
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
@M_PI = global double 0.000000e+00
define float @dt_colorspaces_deltaE_2000(float* %0, float* %1) {
%3 = alloca float*
%4 = alloca float*
%5 = alloca float
%6 = alloca float
%7 = alloca float
%8 = alloca float
%9 = alloca float
%10 = alloca float
%11 = alloca float
%12 = alloca float
%13 = alloca float
%14 = alloca float
%15 = alloca float
%16 = alloca float
%17 = alloca float
%18 = alloca float
%19 = alloca float
%20 = alloca float
%21 = alloca float
%22 = alloca float
%23 = alloca float
%24 = alloca float
%25 = alloca float
%26 = alloca float
%27 = alloca float
%28 = alloca float
%29 = alloca float
%30 = alloca float
%31 = alloca float
%32 = alloca float
store float* %0, float** %3
store float* %1, float** %4
%33 = load float*, float** %3
%34 = getelementptr inbounds float, float* %33, i64 0
%35 = load float, float* %34
%36 = load float*, float** %4
%37 = getelementptr inbounds float, float* %36, i64 0
%38 = load float, float* %37
%39 = fadd float %35, %38
%40 = fpext float %39 to double
%41 = fmul double %40, 5.000000e-01
%42 = fptrunc double %41 to float
store float %42, float* %5
%43 = load float*, float** %3
%44 = getelementptr inbounds float, float* %43, i64 1
%45 = load float, float* %44
%46 = load float*, float** %3
%47 = getelementptr inbounds float, float* %46, i64 1
%48 = load float, float* %47
%49 = load float*, float** %3
%50 = getelementptr inbounds float, float* %49, i64 2
%51 = load float, float* %50
%52 = load float*, float** %3
%53 = getelementptr inbounds float, float* %52, i64 2
%54 = load float, float* %53
%55 = fmul float %51, %54
%56 = call float @llvm.fmuladd.f32(float %45, float %48, float %55)
%57 = call double @sqrtf(float %56)
%58 = fptrunc double %57 to float
store float %58, float* %6
%59 = load float*, float** %4
%60 = getelementptr inbounds float, float* %59, i64 1
%61 = load float, float* %60
%62 = load float*, float** %4
%63 = getelementptr inbounds float, float* %62, i64 1
%64 = load float, float* %63
%65 = load float*, float** %4
%66 = getelementptr inbounds float, float* %65, i64 2
%67 = load float, float* %66
%68 = load float*, float** %4
%69 = getelementptr inbounds float, float* %68, i64 2
%70 = load float, float* %69
%71 = fmul float %67, %70
%72 = call float @llvm.fmuladd.f32(float %61, float %64, float %71)
%73 = call double @sqrtf(float %72)
%74 = fptrunc double %73 to float
store float %74, float* %7
%75 = load float, float* %6
%76 = load float, float* %7
%77 = fadd float %75, %76
%78 = fpext float %77 to double
%79 = fmul double %78, 5.000000e-01
%80 = fptrunc double %79 to float
store float %80, float* %8
%81 = load float, float* %8
%82 = fptosi float %81 to i32
%83 = call float @powf(i32 %82, i32 7)
%84 = load float, float* %8
%85 = fptosi float %84 to i32
%86 = call float @powf(i32 %85, i32 7)
%87 = call float @powf(i32 25, i32 7)
%88 = fadd float %86, %87
%89 = fdiv float %83, %88
%90 = call double @sqrtf(float %89)
%91 = fsub double 1.000000e+00, %90
%92 = fmul double %91, 5.000000e-01
%93 = fptrunc double %92 to float
store float %93, float* %9
%94 = load float*, float** %3
%95 = getelementptr inbounds float, float* %94, i64 1
%96 = load float, float* %95
%97 = load float, float* %9
%98 = fadd float 1.000000e+00, %97
%99 = fmul float %96, %98
store float %99, float* %10
%100 = load float*, float** %4
%101 = getelementptr inbounds float, float* %100, i64 1
%102 = load float, float* %101
%103 = load float, float* %9
%104 = fadd float 1.000000e+00, %103
%105 = fmul float %102, %104
store float %105, float* %11
%106 = load float, float* %10
%107 = load float, float* %10
%108 = load float*, float** %3
%109 = getelementptr inbounds float, float* %108, i64 2
%110 = load float, float* %109
%111 = load float*, float** %3
%112 = getelementptr inbounds float, float* %111, i64 2
%113 = load float, float* %112
%114 = fmul float %110, %113
%115 = call float @llvm.fmuladd.f32(float %106, float %107, float %114)
%116 = call double @sqrtf(float %115)
%117 = fptrunc double %116 to float
store float %117, float* %12
%118 = load float, float* %11
%119 = load float, float* %11
%120 = load float*, float** %4
%121 = getelementptr inbounds float, float* %120, i64 2
%122 = load float, float* %121
%123 = load float*, float** %4
%124 = getelementptr inbounds float, float* %123, i64 2
%125 = load float, float* %124
%126 = fmul float %122, %125
%127 = call float @llvm.fmuladd.f32(float %118, float %119, float %126)
%128 = call double @sqrtf(float %127)
%129 = fptrunc double %128 to float
store float %129, float* %13
%130 = load float, float* %12
%131 = load float, float* %13
%132 = fadd float %130, %131
%133 = fpext float %132 to double
%134 = fmul double %133, 5.000000e-01
%135 = fptrunc double %134 to float
store float %135, float* %14
%136 = load float*, float** %3
%137 = getelementptr inbounds float, float* %136, i64 2
%138 = load float, float* %137
%139 = load float, float* %10
%140 = call double @atan2f(float %138, float %139)
%141 = fmul double %140, 1.800000e+02
%142 = load double, double* @M_PI
%143 = fdiv double %141, %142
%144 = fptrunc double %143 to float
store float %144, float* %15
%145 = load float, float* %15
%146 = fcmp olt float %145, 0.000000e+00
br i1 %146, label %147, label %152
147: ; preds = %2
%148 = load float, float* %15
%149 = fpext float %148 to double
%150 = fadd double %149, 3.600000e+02
%151 = fptrunc double %150 to float
store float %151, float* %15
br label %152
152: ; preds = %147, %2
%153 = load float*, float** %4
%154 = getelementptr inbounds float, float* %153, i64 2
%155 = load float, float* %154
%156 = load float, float* %11
%157 = call double @atan2f(float %155, float %156)
%158 = fmul double %157, 1.800000e+02
%159 = load double, double* @M_PI
%160 = fdiv double %158, %159
%161 = fptrunc double %160 to float
store float %161, float* %16
%162 = load float, float* %16
%163 = fcmp olt float %162, 0.000000e+00
br i1 %163, label %164, label %169
164: ; preds = %152
%165 = load float, float* %16
%166 = fpext float %165 to double
%167 = fadd double %166, 3.600000e+02
%168 = fptrunc double %167 to float
store float %168, float* %16
br label %169
169: ; preds = %164, %152
%170 = load float, float* %15
%171 = load float, float* %16
%172 = fsub float %170, %171
%173 = call double @fabsf(float %172)
%174 = fcmp ogt double %173, 1.800000e+02
br i1 %174, label %175, label %183
175: ; preds = %169
%176 = load float, float* %15
%177 = load float, float* %16
%178 = fadd float %176, %177
%179 = fpext float %178 to double
%180 = fadd double %179, 3.600000e+02
%181 = fmul double %180, 5.000000e-01
%182 = fptrunc double %181 to float
store float %182, float* %17
br label %190
183: ; preds = %169
%184 = load float, float* %15
%185 = load float, float* %16
%186 = fadd float %184, %185
%187 = fpext float %186 to double
%188 = fmul double %187, 5.000000e-01
%189 = fptrunc double %188 to float
store float %189, float* %17
br label %190
190: ; preds = %183, %175
%191 = load float, float* %17
%192 = fpext float %191 to double
%193 = load double, double* @M_PI
%194 = fmul double 3.000000e+01, %193
%195 = fdiv double %194, 1.800000e+02
%196 = fsub double %192, %195
%197 = call double @cosf(double %196)
%198 = call double @llvm.fmuladd.f64(double -1.700000e-01, double %197, double 1.000000e+00)
%199 = load float, float* %17
%200 = fpext float %199 to double
%201 = fmul double 2.000000e+00, %200
%202 = load double, double* @M_PI
%203 = fmul double %201, %202
%204 = fdiv double %203, 1.800000e+02
%205 = call double @cosf(double %204)
%206 = call double @llvm.fmuladd.f64(double 2.400000e-01, double %205, double %198)
%207 = load float, float* %17
%208 = fpext float %207 to double
%209 = load double, double* @M_PI
%210 = fmul double 6.000000e+00, %209
%211 = fdiv double %210, 1.800000e+02
%212 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %208, double %211)
%213 = call double @cosf(double %212)
%214 = call double @llvm.fmuladd.f64(double 3.200000e-01, double %213, double %206)
%215 = load float, float* %17
%216 = fpext float %215 to double
%217 = load double, double* @M_PI
%218 = fmul double 6.300000e+01, %217
%219 = fdiv double %218, 1.800000e+02
%220 = fneg double %219
%221 = call double @llvm.fmuladd.f64(double 4.000000e+00, double %216, double %220)
%222 = call double @cosf(double %221)
%223 = call double @llvm.fmuladd.f64(double -2.000000e-01, double %222, double %214)
%224 = fptrunc double %223 to float
store float %224, float* %18
%225 = load float, float* %16
%226 = load float, float* %15
%227 = fsub float %225, %226
store float %227, float* %19
%228 = load float, float* %19
%229 = call double @fabsf(float %228)
%230 = fcmp ogt double %229, 1.800000e+02
br i1 %230, label %231, label %246
231: ; preds = %190
%232 = load float, float* %16
%233 = load float, float* %15
%234 = fcmp ole float %232, %233
br i1 %234, label %235, label %240
235: ; preds = %231
%236 = load float, float* %19
%237 = fpext float %236 to double
%238 = fadd double %237, 3.600000e+02
%239 = fptrunc double %238 to float
store float %239, float* %19
br label %245
240: ; preds = %231
%241 = load float, float* %19
%242 = fpext float %241 to double
%243 = fsub double %242, 3.600000e+02
%244 = fptrunc double %243 to float
store float %244, float* %19
br label %245
245: ; preds = %240, %235
br label %246
246: ; preds = %245, %190
%247 = load float*, float** %4
%248 = getelementptr inbounds float, float* %247, i64 0
%249 = load float, float* %248
%250 = load float*, float** %3
%251 = getelementptr inbounds float, float* %250, i64 0
%252 = load float, float* %251
%253 = fsub float %249, %252
store float %253, float* %20
%254 = load float, float* %13
%255 = load float, float* %12
%256 = fsub float %254, %255
store float %256, float* %21
%257 = load float, float* %12
%258 = load float, float* %13
%259 = fmul float %257, %258
%260 = call double @sqrtf(float %259)
%261 = fmul double 2.000000e+00, %260
%262 = load float, float* %19
%263 = fpext float %262 to double
%264 = fmul double %263, 5.000000e-01
%265 = load double, double* @M_PI
%266 = fmul double %264, %265
%267 = fdiv double %266, 1.800000e+02
%268 = call double @sinf(double %267)
%269 = fmul double %261, %268
%270 = fptrunc double %269 to float
store float %270, float* %22
%271 = load float, float* %5
%272 = fpext float %271 to double
%273 = fsub double %272, 5.000000e+01
%274 = fmul double 1.500000e-02, %273
%275 = load float, float* %5
%276 = fpext float %275 to double
%277 = fsub double %276, 5.000000e+01
%278 = fmul double %274, %277
%279 = load float, float* %5
%280 = fpext float %279 to double
%281 = fsub double %280, 5.000000e+01
%282 = load float, float* %5
%283 = fpext float %282 to double
%284 = fsub double %283, 5.000000e+01
%285 = call double @llvm.fmuladd.f64(double %281, double %284, double 2.000000e+01)
%286 = fptrunc double %285 to float
%287 = call double @sqrtf(float %286)
%288 = fdiv double %278, %287
%289 = fadd double 1.000000e+00, %288
%290 = fptrunc double %289 to float
store float %290, float* %23
%291 = load float, float* %14
%292 = fpext float %291 to double
%293 = call double @llvm.fmuladd.f64(double 4.500000e-02, double %292, double 1.000000e+00)
%294 = fptrunc double %293 to float
store float %294, float* %24
%295 = load float, float* %14
%296 = fpext float %295 to double
%297 = fmul double 1.500000e-02, %296
%298 = load float, float* %18
%299 = fpext float %298 to double
%300 = call double @llvm.fmuladd.f64(double %297, double %299, double 1.000000e+00)
%301 = fptrunc double %300 to float
store float %301, float* %25
%302 = load float, float* %17
%303 = fpext float %302 to double
%304 = fsub double %303, 2.750000e+02
%305 = fdiv double %304, 2.500000e+01
%306 = fmul double -1.000000e+00, %305
%307 = load float, float* %17
%308 = fpext float %307 to double
%309 = fsub double %308, 2.750000e+02
%310 = fdiv double %309, 2.500000e+01
%311 = fmul double %306, %310
%312 = call double @expf(double %311)
%313 = fmul double 3.000000e+01, %312
%314 = fptrunc double %313 to float
store float %314, float* %26
%315 = load float, float* %14
%316 = fptosi float %315 to i32
%317 = call float @powf(i32 %316, i32 7)
%318 = load float, float* %14
%319 = fptosi float %318 to i32
%320 = call float @powf(i32 %319, i32 7)
%321 = call float @powf(i32 25, i32 7)
%322 = fadd float %320, %321
%323 = fdiv float %317, %322
%324 = call double @sqrtf(float %323)
%325 = fmul double 2.000000e+00, %324
%326 = fptrunc double %325 to float
store float %326, float* %27
%327 = load float, float* %27
%328 = fpext float %327 to double
%329 = fmul double -1.000000e+00, %328
%330 = load float, float* %26
%331 = fpext float %330 to double
%332 = fmul double 2.000000e+00, %331
%333 = load double, double* @M_PI
%334 = fmul double %332, %333
%335 = fdiv double %334, 1.800000e+02
%336 = call double @sinf(double %335)
%337 = fmul double %329, %336
%338 = fptrunc double %337 to float
store float %338, float* %28
store float 1.000000e+00, float* %29
store float 1.000000e+00, float* %30
store float 1.000000e+00, float* %31
%339 = load float, float* %20
%340 = load float, float* %29
%341 = load float, float* %23
%342 = fmul float %340, %341
%343 = fdiv float %339, %342
%344 = load float, float* %20
%345 = load float, float* %29
%346 = load float, float* %23
%347 = fmul float %345, %346
%348 = fdiv float %344, %347
%349 = load float, float* %21
%350 = load float, float* %30
%351 = load float, float* %24
%352 = fmul float %350, %351
%353 = fdiv float %349, %352
%354 = load float, float* %21
%355 = load float, float* %30
%356 = load float, float* %24
%357 = fmul float %355, %356
%358 = fdiv float %354, %357
%359 = fmul float %353, %358
%360 = call float @llvm.fmuladd.f32(float %343, float %348, float %359)
%361 = load float, float* %22
%362 = load float, float* %31
%363 = load float, float* %25
%364 = fmul float %362, %363
%365 = fdiv float %361, %364
%366 = load float, float* %22
%367 = load float, float* %31
%368 = load float, float* %25
%369 = fmul float %367, %368
%370 = fdiv float %366, %369
%371 = call float @llvm.fmuladd.f32(float %365, float %370, float %360)
%372 = load float, float* %28
%373 = load float, float* %21
%374 = load float, float* %30
%375 = load float, float* %24
%376 = fmul float %374, %375
%377 = fdiv float %373, %376
%378 = fmul float %372, %377
%379 = load float, float* %22
%380 = load float, float* %31
%381 = load float, float* %25
%382 = fmul float %380, %381
%383 = fdiv float %379, %382
%384 = call float @llvm.fmuladd.f32(float %378, float %383, float %371)
%385 = call double @sqrtf(float %384)
%386 = fptrunc double %385 to float
store float %386, float* %32
%387 = load float, float* %32
ret float %387
}

LLVM IR (-O2):
@M_PI = global double 0.000000e+00
define float @dt_colorspaces_deltaE_2000(float* nocapture %0, float* nocapture %1) {
%3 = load float, float* %0
%4 = load float, float* %1
%5 = getelementptr inbounds float, float* %0, i64 1
%6 = load float, float* %5
%7 = getelementptr inbounds float, float* %0, i64 2
%8 = load float, float* %7
%9 = fmul float %8, %8
%10 = tail call float @llvm.fmuladd.f32(float %6, float %6, float %9)
%11 = tail call double @sqrtf(float %10)
%12 = fptrunc double %11 to float
%13 = getelementptr inbounds float, float* %1, i64 1
%14 = load float, float* %13
%15 = getelementptr inbounds float, float* %1, i64 2
%16 = load float, float* %15
%17 = fmul float %16, %16
%18 = tail call float @llvm.fmuladd.f32(float %14, float %14, float %17)
%19 = tail call double @sqrtf(float %18)
%20 = fptrunc double %19 to float
%21 = fadd float %12, %20
%22 = fmul float %21, 5.000000e-01
%23 = fptosi float %22 to i32
%24 = tail call float @powf(i32 %23, i32 7)
%25 = tail call float @powf(i32 %23, i32 7)
%26 = tail call float @powf(i32 25, i32 7)
%27 = fadd float %25, %26
%28 = fdiv float %24, %27
%29 = tail call double @sqrtf(float %28)
%30 = fsub double 1.000000e+00, %29
%31 = fmul double %30, 5.000000e-01
%32 = fptrunc double %31 to float
%33 = load float, float* %5
%34 = fadd float %32, 1.000000e+00
%35 = fmul float %33, %34
%36 = load float, float* %13
%37 = fmul float %36, %34
%38 = load float, float* %7
%39 = fmul float %38, %38
%40 = tail call float @llvm.fmuladd.f32(float %35, float %35, float %39)
%41 = tail call double @sqrtf(float %40)
%42 = fptrunc double %41 to float
%43 = load float, float* %15
%44 = fmul float %43, %43
%45 = tail call float @llvm.fmuladd.f32(float %37, float %37, float %44)
%46 = tail call double @sqrtf(float %45)
%47 = fptrunc double %46 to float
%48 = fadd float %42, %47
%49 = fmul float %48, 5.000000e-01
%50 = load float, float* %7
%51 = tail call double @atan2f(float %50, float %35)
%52 = load double, double* @M_PI
%53 = load float, float* %15
%54 = tail call double @atan2f(float %53, float %37)
%55 = insertelement <2 x double> poison, double %51, i64 0
%56 = insertelement <2 x double> %55, double %54, i64 1
%57 = fmul <2 x double> %56, <double 1.800000e+02, double 1.800000e+02>
%58 = load double, double* @M_PI
%59 = insertelement <2 x double> poison, double %52, i64 0
%60 = insertelement <2 x double> %59, double %58, i64 1
%61 = fdiv <2 x double> %57, %60
%62 = fptrunc <2 x double> %61 to <2 x float>
%63 = fcmp olt <2 x float> %62, zeroinitializer
%64 = fadd <2 x float> %62, <float 3.600000e+02, float 3.600000e+02>
%65 = select <2 x i1> %63, <2 x float> %64, <2 x float> %62
%66 = extractelement <2 x float> %65, i64 0
%67 = extractelement <2 x float> %65, i64 1
%68 = fsub float %66, %67
%69 = tail call double @fabsf(float %68)
%70 = fcmp ogt double %69, 1.800000e+02
%71 = fadd float %66, %67
br i1 %70, label %72, label %77
72: ; preds = %2
%73 = fpext float %71 to double
%74 = fadd double %73, 3.600000e+02
%75 = fmul double %74, 5.000000e-01
%76 = fptrunc double %75 to float
br label %79
77: ; preds = %2
%78 = fmul float %71, 5.000000e-01
br label %79
79: ; preds = %77, %72
%80 = phi float [ %76, %72 ], [ %78, %77 ]
%81 = fpext float %80 to double
%82 = load double, double* @M_PI
%83 = fmul double %82, 3.000000e+01
%84 = fdiv double %83, 1.800000e+02
%85 = fsub double %81, %84
%86 = tail call double @cosf(double %85)
%87 = fmul double %81, 2.000000e+00
%88 = load double, double* @M_PI
%89 = fmul double %87, %88
%90 = fdiv double %89, 1.800000e+02
%91 = tail call double @cosf(double %90)
%92 = load double, double* @M_PI
%93 = fmul double %92, 6.000000e+00
%94 = fdiv double %93, 1.800000e+02
%95 = tail call double @llvm.fmuladd.f64(double %81, double 3.000000e+00, double %94)
%96 = tail call double @cosf(double %95)
%97 = load double, double* @M_PI
%98 = fmul double %97, 6.300000e+01
%99 = fdiv double %98, -1.800000e+02
%100 = tail call double @llvm.fmuladd.f64(double %81, double 4.000000e+00, double %99)
%101 = tail call double @cosf(double %100)
%102 = fsub float %67, %66
%103 = tail call double @fabsf(float %102)
%104 = fcmp ogt double %103, 1.800000e+02
br i1 %104, label %105, label %111
105: ; preds = %79
%106 = fcmp ugt float %67, %66
br i1 %106, label %109, label %107
107: ; preds = %105
%108 = fadd float %102, 3.600000e+02
br label %111
109: ; preds = %105
%110 = fadd float %102, -3.600000e+02
br label %111
111: ; preds = %107, %109, %79
%112 = phi float [ %108, %107 ], [ %110, %109 ], [ %102, %79 ]
%113 = tail call double @llvm.fmuladd.f64(double %86, double -1.700000e-01, double 1.000000e+00)
%114 = tail call double @llvm.fmuladd.f64(double %91, double 2.400000e-01, double %113)
%115 = tail call double @llvm.fmuladd.f64(double %96, double 3.200000e-01, double %114)
%116 = tail call double @llvm.fmuladd.f64(double %101, double -2.000000e-01, double %115)
%117 = fptrunc double %116 to float
%118 = fadd float %3, %4
%119 = fmul float %118, 5.000000e-01
%120 = load float, float* %1
%121 = load float, float* %0
%122 = fsub float %120, %121
%123 = fsub float %47, %42
%124 = fmul float %42, %47
%125 = tail call double @sqrtf(float %124)
%126 = fmul double %125, 2.000000e+00
%127 = fpext float %112 to double
%128 = fmul double %127, 5.000000e-01
%129 = load double, double* @M_PI
%130 = fmul double %128, %129
%131 = fdiv double %130, 1.800000e+02
%132 = tail call double @sinf(double %131)
%133 = fmul double %126, %132
%134 = fptrunc double %133 to float
%135 = fpext float %119 to double
%136 = fadd double %135, -5.000000e+01
%137 = fmul double %136, 1.500000e-02
%138 = fmul double %136, %137
%139 = tail call double @llvm.fmuladd.f64(double %136, double %136, double 2.000000e+01)
%140 = fptrunc double %139 to float
%141 = tail call double @sqrtf(float %140)
%142 = fdiv double %138, %141
%143 = fadd double %142, 1.000000e+00
%144 = fptrunc double %143 to float
%145 = fpext float %49 to double
%146 = tail call double @llvm.fmuladd.f64(double %145, double 4.500000e-02, double 1.000000e+00)
%147 = fptrunc double %146 to float
%148 = fmul double %145, 1.500000e-02
%149 = fpext float %117 to double
%150 = tail call double @llvm.fmuladd.f64(double %148, double %149, double 1.000000e+00)
%151 = fptrunc double %150 to float
%152 = fadd double %81, -2.750000e+02
%153 = fdiv double %152, 2.500000e+01
%154 = fneg double %153
%155 = fmul double %153, %154
%156 = tail call double @expf(double %155)
%157 = fmul double %156, 3.000000e+01
%158 = fptrunc double %157 to float
%159 = fptosi float %49 to i32
%160 = tail call float @powf(i32 %159, i32 7)
%161 = tail call float @powf(i32 %159, i32 7)
%162 = tail call float @powf(i32 25, i32 7)
%163 = fadd float %161, %162
%164 = fdiv float %160, %163
%165 = tail call double @sqrtf(float %164)
%166 = fmul double %165, 2.000000e+00
%167 = fptrunc double %166 to float
%168 = fpext float %167 to double
%169 = fneg double %168
%170 = fpext float %158 to double
%171 = fmul double %170, 2.000000e+00
%172 = load double, double* @M_PI
%173 = fmul double %171, %172
%174 = fdiv double %173, 1.800000e+02
%175 = tail call double @sinf(double %174)
%176 = fmul double %175, %169
%177 = fptrunc double %176 to float
%178 = fdiv float %122, %144
%179 = fdiv float %123, %147
%180 = fmul float %179, %179
%181 = tail call float @llvm.fmuladd.f32(float %178, float %178, float %180)
%182 = fdiv float %134, %151
%183 = tail call float @llvm.fmuladd.f32(float %182, float %182, float %181)
%184 = fmul float %179, %177
%185 = tail call float @llvm.fmuladd.f32(float %184, float %182, float %183)
%186 = tail call double @sqrtf(float %185)
%187 = fptrunc double %186 to float
ret float %187
}