#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 */
float sqrt(float);
void getdistance(float playerpos_x, float playerpos_y, float playerpos_z,
                 float enemypos_x, float enemypos_y, float enemypos_z,
                 float *dist) {
  if (enemypos_x > playerpos_x && enemypos_y > playerpos_y &&
      enemypos_z >= playerpos_z) {
    *dist = sqrt((enemypos_y - playerpos_y) * (enemypos_y - playerpos_y) +
                 (enemypos_x - playerpos_x) * (enemypos_x - playerpos_x) +
                 (enemypos_z - playerpos_z) * (enemypos_z - playerpos_z));
  }
  if (enemypos_x < playerpos_x && enemypos_y > playerpos_y &&
      enemypos_z >= playerpos_z) {
    *dist = sqrt((enemypos_y - playerpos_y) * (enemypos_y - playerpos_y) +
                 (playerpos_x - enemypos_x) * (playerpos_x - enemypos_x) +
                 (enemypos_z - playerpos_z) * (enemypos_z - playerpos_z));
  }
  if (enemypos_x < playerpos_x && enemypos_y < playerpos_y &&
      enemypos_z >= playerpos_z) {
    *dist = sqrt((playerpos_y - enemypos_y) * (playerpos_y - enemypos_y) +
                 (playerpos_x - enemypos_x) * (playerpos_x - enemypos_x) +
                 (enemypos_z - playerpos_z) * (enemypos_z - playerpos_z));
  }
  if (enemypos_x > playerpos_x && enemypos_y < playerpos_y &&
      enemypos_z >= playerpos_z) {
    *dist = sqrt((playerpos_y - enemypos_y) * (playerpos_y - enemypos_y) +
                 (enemypos_x - playerpos_x) * (enemypos_x - playerpos_x) +
                 (enemypos_z - playerpos_z) * (enemypos_z - playerpos_z));
  }
  if (enemypos_x > playerpos_x && enemypos_y > playerpos_y &&
      enemypos_z < playerpos_z) {
    *dist = sqrt((enemypos_y - playerpos_y) * (enemypos_y - playerpos_y) +
                 (enemypos_x - playerpos_x) * (enemypos_x - playerpos_x) +
                 (playerpos_z - enemypos_z) * (playerpos_z - enemypos_z));
  }
  if (enemypos_x < playerpos_x && enemypos_y > playerpos_y &&
      enemypos_z < playerpos_z) {
    *dist = sqrt((enemypos_y - playerpos_y) * (enemypos_y - playerpos_y) +
                 (playerpos_x - enemypos_x) * (playerpos_x - enemypos_x) +
                 (playerpos_z - enemypos_z) * (playerpos_z - enemypos_z));
  }
  if (enemypos_x < playerpos_x && enemypos_y < playerpos_y &&
      enemypos_z < playerpos_z) {
    *dist = sqrt((playerpos_y - enemypos_y) * (playerpos_y - enemypos_y) +
                 (playerpos_x - enemypos_x) * (playerpos_x - enemypos_x) +
                 (playerpos_z - enemypos_z) * (playerpos_z - enemypos_z));
  }
  if (enemypos_x > playerpos_x && enemypos_y < playerpos_y &&
      enemypos_z < playerpos_z) {
    *dist = sqrt((playerpos_y - enemypos_y) * (playerpos_y - enemypos_y) +
                 (enemypos_x - playerpos_x) * (enemypos_x - playerpos_x) +
                 (playerpos_z - enemypos_z) * (playerpos_z - enemypos_z));
  }
}


x86 assembly (clang, -O0):
<getdistance>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movss  %xmm0,-0x4(%rbp)
movss  %xmm1,-0x8(%rbp)
movss  %xmm2,-0xc(%rbp)
movss  %xmm3,-0x10(%rbp)
movss  %xmm4,-0x14(%rbp)
movss  %xmm5,-0x18(%rbp)
mov    %rdi,-0x20(%rbp)
movss  -0x10(%rbp),%xmm0
ucomiss -0x4(%rbp),%xmm0
jbe    11c4 <getdistance+0xb4>
movss  -0x14(%rbp),%xmm0
ucomiss -0x8(%rbp),%xmm0
jbe    11c4 <getdistance+0xb4>
movss  -0x18(%rbp),%xmm0
ucomiss -0xc(%rbp),%xmm0
jb     11c4 <getdistance+0xb4>
movss  -0x14(%rbp),%xmm1
subss  -0x8(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
subss  -0x8(%rbp),%xmm2
movss  -0x10(%rbp),%xmm0
subss  -0x4(%rbp),%xmm0
movss  -0x10(%rbp),%xmm3
subss  -0x4(%rbp),%xmm3
mulss  %xmm3,%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x18(%rbp),%xmm0
subss  -0xc(%rbp),%xmm0
movss  -0x18(%rbp),%xmm2
subss  -0xc(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x20(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x10(%rbp),%xmm1
movss  -0x4(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    1252 <getdistance+0x142>
movss  -0x14(%rbp),%xmm0
ucomiss -0x8(%rbp),%xmm0
jbe    1252 <getdistance+0x142>
movss  -0x18(%rbp),%xmm0
ucomiss -0xc(%rbp),%xmm0
jb     1252 <getdistance+0x142>
movss  -0x14(%rbp),%xmm1
subss  -0x8(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
subss  -0x8(%rbp),%xmm2
movss  -0x4(%rbp),%xmm0
subss  -0x10(%rbp),%xmm0
movss  -0x4(%rbp),%xmm3
subss  -0x10(%rbp),%xmm3
mulss  %xmm3,%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x18(%rbp),%xmm0
subss  -0xc(%rbp),%xmm0
movss  -0x18(%rbp),%xmm2
subss  -0xc(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x20(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x10(%rbp),%xmm1
movss  -0x4(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    12e4 <getdistance+0x1d4>
movss  -0x14(%rbp),%xmm1
movss  -0x8(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    12e4 <getdistance+0x1d4>
movss  -0x18(%rbp),%xmm0
ucomiss -0xc(%rbp),%xmm0
jb     12e4 <getdistance+0x1d4>
movss  -0x8(%rbp),%xmm1
subss  -0x14(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
subss  -0x14(%rbp),%xmm2
movss  -0x4(%rbp),%xmm0
subss  -0x10(%rbp),%xmm0
movss  -0x4(%rbp),%xmm3
subss  -0x10(%rbp),%xmm3
mulss  %xmm3,%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x18(%rbp),%xmm0
subss  -0xc(%rbp),%xmm0
movss  -0x18(%rbp),%xmm2
subss  -0xc(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x20(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x10(%rbp),%xmm0
ucomiss -0x4(%rbp),%xmm0
jbe    1372 <getdistance+0x262>
movss  -0x14(%rbp),%xmm1
movss  -0x8(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    1372 <getdistance+0x262>
movss  -0x18(%rbp),%xmm0
ucomiss -0xc(%rbp),%xmm0
jb     1372 <getdistance+0x262>
movss  -0x8(%rbp),%xmm1
subss  -0x14(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
subss  -0x14(%rbp),%xmm2
movss  -0x10(%rbp),%xmm0
subss  -0x4(%rbp),%xmm0
movss  -0x10(%rbp),%xmm3
subss  -0x4(%rbp),%xmm3
mulss  %xmm3,%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x18(%rbp),%xmm0
subss  -0xc(%rbp),%xmm0
movss  -0x18(%rbp),%xmm2
subss  -0xc(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x20(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x10(%rbp),%xmm0
ucomiss -0x4(%rbp),%xmm0
jbe    1400 <getdistance+0x2f0>
movss  -0x14(%rbp),%xmm0
ucomiss -0x8(%rbp),%xmm0
jbe    1400 <getdistance+0x2f0>
movss  -0x18(%rbp),%xmm1
movss  -0xc(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    1400 <getdistance+0x2f0>
movss  -0x14(%rbp),%xmm1
subss  -0x8(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
subss  -0x8(%rbp),%xmm2
movss  -0x10(%rbp),%xmm0
subss  -0x4(%rbp),%xmm0
movss  -0x10(%rbp),%xmm3
subss  -0x4(%rbp),%xmm3
mulss  %xmm3,%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0xc(%rbp),%xmm0
subss  -0x18(%rbp),%xmm0
movss  -0xc(%rbp),%xmm2
subss  -0x18(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x20(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x10(%rbp),%xmm1
movss  -0x4(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    1492 <getdistance+0x382>
movss  -0x14(%rbp),%xmm0
ucomiss -0x8(%rbp),%xmm0
jbe    1492 <getdistance+0x382>
movss  -0x18(%rbp),%xmm1
movss  -0xc(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    1492 <getdistance+0x382>
movss  -0x14(%rbp),%xmm1
subss  -0x8(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
subss  -0x8(%rbp),%xmm2
movss  -0x4(%rbp),%xmm0
subss  -0x10(%rbp),%xmm0
movss  -0x4(%rbp),%xmm3
subss  -0x10(%rbp),%xmm3
mulss  %xmm3,%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0xc(%rbp),%xmm0
subss  -0x18(%rbp),%xmm0
movss  -0xc(%rbp),%xmm2
subss  -0x18(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x20(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x10(%rbp),%xmm1
movss  -0x4(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    1528 <getdistance+0x418>
movss  -0x14(%rbp),%xmm1
movss  -0x8(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    1528 <getdistance+0x418>
movss  -0x18(%rbp),%xmm1
movss  -0xc(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    1528 <getdistance+0x418>
movss  -0x8(%rbp),%xmm1
subss  -0x14(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
subss  -0x14(%rbp),%xmm2
movss  -0x4(%rbp),%xmm0
subss  -0x10(%rbp),%xmm0
movss  -0x4(%rbp),%xmm3
subss  -0x10(%rbp),%xmm3
mulss  %xmm3,%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0xc(%rbp),%xmm0
subss  -0x18(%rbp),%xmm0
movss  -0xc(%rbp),%xmm2
subss  -0x18(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x20(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x10(%rbp),%xmm0
ucomiss -0x4(%rbp),%xmm0
jbe    15ba <getdistance+0x4aa>
movss  -0x14(%rbp),%xmm1
movss  -0x8(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    15ba <getdistance+0x4aa>
movss  -0x18(%rbp),%xmm1
movss  -0xc(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    15ba <getdistance+0x4aa>
movss  -0x8(%rbp),%xmm1
subss  -0x14(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
subss  -0x14(%rbp),%xmm2
movss  -0x10(%rbp),%xmm0
subss  -0x4(%rbp),%xmm0
movss  -0x10(%rbp),%xmm3
subss  -0x4(%rbp),%xmm3
mulss  %xmm3,%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0xc(%rbp),%xmm0
subss  -0x18(%rbp),%xmm0
movss  -0xc(%rbp),%xmm2
subss  -0x18(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x20(%rbp),%rax
movss  %xmm0,(%rax)
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<getdistance>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x20,%rsp
movaps %xmm1,%xmm6
movaps %xmm0,%xmm7
ucomiss %xmm0,%xmm3
seta   %al
ucomiss %xmm1,%xmm4
seta   %bpl
mov    %rdi,%r14
and    %al,%bpl
ucomiss %xmm2,%xmm5
movss  %xmm2,0x1c(%rsp)
movss  %xmm1,0x18(%rsp)
movss  %xmm3,0x14(%rsp)
movss  %xmm5,0x10(%rsp)
movss  %xmm4,0xc(%rsp)
movss  %xmm0,0x8(%rsp)
jb     11c8 <getdistance+0xb8>
test   %bpl,%bpl
je     11c8 <getdistance+0xb8>
movaps %xmm4,%xmm1
subss  %xmm6,%xmm1
movaps %xmm3,%xmm0
subss  %xmm7,%xmm0
mulss  %xmm0,%xmm0
mulss  %xmm1,%xmm1
addss  %xmm0,%xmm1
movaps %xmm5,%xmm0
subss  %xmm2,%xmm0
mulss  %xmm0,%xmm0
addss  %xmm1,%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     119a <getdistance+0x8a>
sqrtss %xmm0,%xmm0
jmp    11c3 <getdistance+0xb3>
call   1030 <sqrt@plt>
movss  0x8(%rsp),%xmm7
movss  0xc(%rsp),%xmm4
movss  0x10(%rsp),%xmm5
movss  0x14(%rsp),%xmm3
movss  0x18(%rsp),%xmm6
movss  0x1c(%rsp),%xmm2
movss  %xmm0,(%r14)
ucomiss %xmm6,%xmm4
seta   %al
ucomiss %xmm3,%xmm7
seta   %r15b
and    %al,%r15b
ucomiss %xmm2,%xmm5
jb     1247 <getdistance+0x137>
test   %r15b,%r15b
je     1247 <getdistance+0x137>
movaps %xmm4,%xmm1
subss  %xmm6,%xmm1
movaps %xmm7,%xmm0
subss  %xmm3,%xmm0
mulss  %xmm0,%xmm0
mulss  %xmm1,%xmm1
addss  %xmm0,%xmm1
movaps %xmm5,%xmm0
subss  %xmm2,%xmm0
mulss  %xmm0,%xmm0
addss  %xmm1,%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     1219 <getdistance+0x109>
sqrtss %xmm0,%xmm0
jmp    1242 <getdistance+0x132>
call   1030 <sqrt@plt>
movss  0x8(%rsp),%xmm7
movss  0xc(%rsp),%xmm4
movss  0x10(%rsp),%xmm5
movss  0x14(%rsp),%xmm3
movss  0x18(%rsp),%xmm6
movss  0x1c(%rsp),%xmm2
movss  %xmm0,(%r14)
ucomiss %xmm3,%xmm7
seta   %al
ucomiss %xmm4,%xmm6
seta   %r12b
and    %al,%r12b
ucomiss %xmm2,%xmm5
jb     12c6 <getdistance+0x1b6>
test   %r12b,%r12b
je     12c6 <getdistance+0x1b6>
movaps %xmm6,%xmm1
subss  %xmm4,%xmm1
movaps %xmm7,%xmm0
subss  %xmm3,%xmm0
mulss  %xmm0,%xmm0
mulss  %xmm1,%xmm1
addss  %xmm0,%xmm1
movaps %xmm5,%xmm0
subss  %xmm2,%xmm0
mulss  %xmm0,%xmm0
addss  %xmm1,%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     1298 <getdistance+0x188>
sqrtss %xmm0,%xmm0
jmp    12c1 <getdistance+0x1b1>
call   1030 <sqrt@plt>
movss  0x8(%rsp),%xmm7
movss  0xc(%rsp),%xmm4
movss  0x10(%rsp),%xmm5
movss  0x14(%rsp),%xmm3
movss  0x18(%rsp),%xmm6
movss  0x1c(%rsp),%xmm2
movss  %xmm0,(%r14)
ucomiss %xmm4,%xmm6
seta   %al
ucomiss %xmm7,%xmm3
seta   %bl
and    %al,%bl
ucomiss %xmm2,%xmm5
jb     1342 <getdistance+0x232>
test   %bl,%bl
je     1342 <getdistance+0x232>
movaps %xmm6,%xmm1
subss  %xmm4,%xmm1
movaps %xmm3,%xmm0
subss  %xmm7,%xmm0
mulss  %xmm0,%xmm0
mulss  %xmm1,%xmm1
addss  %xmm0,%xmm1
movaps %xmm5,%xmm0
subss  %xmm2,%xmm0
mulss  %xmm0,%xmm0
addss  %xmm1,%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     1314 <getdistance+0x204>
sqrtss %xmm0,%xmm0
jmp    133d <getdistance+0x22d>
call   1030 <sqrt@plt>
movss  0x8(%rsp),%xmm7
movss  0xc(%rsp),%xmm4
movss  0x10(%rsp),%xmm5
movss  0x14(%rsp),%xmm3
movss  0x18(%rsp),%xmm6
movss  0x1c(%rsp),%xmm2
movss  %xmm0,(%r14)
ucomiss %xmm5,%xmm2
setbe  %al
xor    $0x1,%bpl
or     %al,%bpl
jne    13b6 <getdistance+0x2a6>
movaps %xmm4,%xmm1
subss  %xmm6,%xmm1
movaps %xmm3,%xmm0
subss  %xmm7,%xmm0
mulss  %xmm0,%xmm0
mulss  %xmm1,%xmm1
addss  %xmm0,%xmm1
movaps %xmm2,%xmm0
subss  %xmm5,%xmm0
mulss  %xmm0,%xmm0
addss  %xmm1,%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     1388 <getdistance+0x278>
sqrtss %xmm0,%xmm0
jmp    13b1 <getdistance+0x2a1>
call   1030 <sqrt@plt>
movss  0x8(%rsp),%xmm7
movss  0xc(%rsp),%xmm4
movss  0x10(%rsp),%xmm5
movss  0x14(%rsp),%xmm3
movss  0x18(%rsp),%xmm6
movss  0x1c(%rsp),%xmm2
movss  %xmm0,(%r14)
ucomiss %xmm5,%xmm2
setbe  %al
xor    $0x1,%r15b
or     %al,%r15b
jne    142a <getdistance+0x31a>
movaps %xmm4,%xmm1
subss  %xmm6,%xmm1
movaps %xmm7,%xmm0
subss  %xmm3,%xmm0
mulss  %xmm0,%xmm0
mulss  %xmm1,%xmm1
addss  %xmm0,%xmm1
movaps %xmm2,%xmm0
subss  %xmm5,%xmm0
mulss  %xmm0,%xmm0
addss  %xmm1,%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     13fc <getdistance+0x2ec>
sqrtss %xmm0,%xmm0
jmp    1425 <getdistance+0x315>
call   1030 <sqrt@plt>
movss  0x8(%rsp),%xmm7
movss  0xc(%rsp),%xmm4
movss  0x10(%rsp),%xmm5
movss  0x14(%rsp),%xmm3
movss  0x18(%rsp),%xmm6
movss  0x1c(%rsp),%xmm2
movss  %xmm0,(%r14)
ucomiss %xmm5,%xmm2
setbe  %al
xor    $0x1,%r12b
or     %al,%r12b
jne    149e <getdistance+0x38e>
movaps %xmm6,%xmm1
subss  %xmm4,%xmm1
movaps %xmm7,%xmm0
subss  %xmm3,%xmm0
mulss  %xmm0,%xmm0
mulss  %xmm1,%xmm1
addss  %xmm0,%xmm1
movaps %xmm2,%xmm0
subss  %xmm5,%xmm0
mulss  %xmm0,%xmm0
addss  %xmm1,%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     1470 <getdistance+0x360>
sqrtss %xmm0,%xmm0
jmp    1499 <getdistance+0x389>
call   1030 <sqrt@plt>
movss  0x8(%rsp),%xmm7
movss  0xc(%rsp),%xmm4
movss  0x10(%rsp),%xmm5
movss  0x14(%rsp),%xmm3
movss  0x18(%rsp),%xmm6
movss  0x1c(%rsp),%xmm2
movss  %xmm0,(%r14)
ucomiss %xmm5,%xmm2
setbe  %al
xor    $0x1,%bl
or     %al,%bl
jne    14e9 <getdistance+0x3d9>
subss  %xmm4,%xmm6
subss  %xmm7,%xmm3
mulss  %xmm3,%xmm3
mulss  %xmm6,%xmm6
addss  %xmm3,%xmm6
subss  %xmm5,%xmm2
mulss  %xmm2,%xmm2
addss  %xmm6,%xmm2
xorps  %xmm0,%xmm0
ucomiss %xmm0,%xmm2
jb     14dc <getdistance+0x3cc>
xorps  %xmm0,%xmm0
sqrtss %xmm2,%xmm0
jmp    14e4 <getdistance+0x3d4>
movaps %xmm2,%xmm0
call   1030 <sqrt@plt>
movss  %xmm0,(%r14)
add    $0x20,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @getdistance(float %0, float %1, float %2, float %3, float %4, float %5, float* %6) {
%8 = alloca float
%9 = alloca float
%10 = alloca float
%11 = alloca float
%12 = alloca float
%13 = alloca float
%14 = alloca float*
store float %0, float* %8
store float %1, float* %9
store float %2, float* %10
store float %3, float* %11
store float %4, float* %12
store float %5, float* %13
store float* %6, float** %14
%15 = load float, float* %11
%16 = load float, float* %8
%17 = fcmp ogt float %15, %16
br i1 %17, label %18, label %50
18: ; preds = %7
%19 = load float, float* %12
%20 = load float, float* %9
%21 = fcmp ogt float %19, %20
br i1 %21, label %22, label %50
22: ; preds = %18
%23 = load float, float* %13
%24 = load float, float* %10
%25 = fcmp oge float %23, %24
br i1 %25, label %26, label %50
26: ; preds = %22
%27 = load float, float* %12
%28 = load float, float* %9
%29 = fsub float %27, %28
%30 = load float, float* %12
%31 = load float, float* %9
%32 = fsub float %30, %31
%33 = load float, float* %11
%34 = load float, float* %8
%35 = fsub float %33, %34
%36 = load float, float* %11
%37 = load float, float* %8
%38 = fsub float %36, %37
%39 = fmul float %35, %38
%40 = call float @llvm.fmuladd.f32(float %29, float %32, float %39)
%41 = load float, float* %13
%42 = load float, float* %10
%43 = fsub float %41, %42
%44 = load float, float* %13
%45 = load float, float* %10
%46 = fsub float %44, %45
%47 = call float @llvm.fmuladd.f32(float %43, float %46, float %40)
%48 = call float @sqrt(float %47)
%49 = load float*, float** %14
store float %48, float* %49
br label %50
50: ; preds = %26, %22, %18, %7
%51 = load float, float* %11
%52 = load float, float* %8
%53 = fcmp olt float %51, %52
br i1 %53, label %54, label %86
54: ; preds = %50
%55 = load float, float* %12
%56 = load float, float* %9
%57 = fcmp ogt float %55, %56
br i1 %57, label %58, label %86
58: ; preds = %54
%59 = load float, float* %13
%60 = load float, float* %10
%61 = fcmp oge float %59, %60
br i1 %61, label %62, label %86
62: ; preds = %58
%63 = load float, float* %12
%64 = load float, float* %9
%65 = fsub float %63, %64
%66 = load float, float* %12
%67 = load float, float* %9
%68 = fsub float %66, %67
%69 = load float, float* %8
%70 = load float, float* %11
%71 = fsub float %69, %70
%72 = load float, float* %8
%73 = load float, float* %11
%74 = fsub float %72, %73
%75 = fmul float %71, %74
%76 = call float @llvm.fmuladd.f32(float %65, float %68, float %75)
%77 = load float, float* %13
%78 = load float, float* %10
%79 = fsub float %77, %78
%80 = load float, float* %13
%81 = load float, float* %10
%82 = fsub float %80, %81
%83 = call float @llvm.fmuladd.f32(float %79, float %82, float %76)
%84 = call float @sqrt(float %83)
%85 = load float*, float** %14
store float %84, float* %85
br label %86
86: ; preds = %62, %58, %54, %50
%87 = load float, float* %11
%88 = load float, float* %8
%89 = fcmp olt float %87, %88
br i1 %89, label %90, label %122
90: ; preds = %86
%91 = load float, float* %12
%92 = load float, float* %9
%93 = fcmp olt float %91, %92
br i1 %93, label %94, label %122
94: ; preds = %90
%95 = load float, float* %13
%96 = load float, float* %10
%97 = fcmp oge float %95, %96
br i1 %97, label %98, label %122
98: ; preds = %94
%99 = load float, float* %9
%100 = load float, float* %12
%101 = fsub float %99, %100
%102 = load float, float* %9
%103 = load float, float* %12
%104 = fsub float %102, %103
%105 = load float, float* %8
%106 = load float, float* %11
%107 = fsub float %105, %106
%108 = load float, float* %8
%109 = load float, float* %11
%110 = fsub float %108, %109
%111 = fmul float %107, %110
%112 = call float @llvm.fmuladd.f32(float %101, float %104, float %111)
%113 = load float, float* %13
%114 = load float, float* %10
%115 = fsub float %113, %114
%116 = load float, float* %13
%117 = load float, float* %10
%118 = fsub float %116, %117
%119 = call float @llvm.fmuladd.f32(float %115, float %118, float %112)
%120 = call float @sqrt(float %119)
%121 = load float*, float** %14
store float %120, float* %121
br label %122
122: ; preds = %98, %94, %90, %86
%123 = load float, float* %11
%124 = load float, float* %8
%125 = fcmp ogt float %123, %124
br i1 %125, label %126, label %158
126: ; preds = %122
%127 = load float, float* %12
%128 = load float, float* %9
%129 = fcmp olt float %127, %128
br i1 %129, label %130, label %158
130: ; preds = %126
%131 = load float, float* %13
%132 = load float, float* %10
%133 = fcmp oge float %131, %132
br i1 %133, label %134, label %158
134: ; preds = %130
%135 = load float, float* %9
%136 = load float, float* %12
%137 = fsub float %135, %136
%138 = load float, float* %9
%139 = load float, float* %12
%140 = fsub float %138, %139
%141 = load float, float* %11
%142 = load float, float* %8
%143 = fsub float %141, %142
%144 = load float, float* %11
%145 = load float, float* %8
%146 = fsub float %144, %145
%147 = fmul float %143, %146
%148 = call float @llvm.fmuladd.f32(float %137, float %140, float %147)
%149 = load float, float* %13
%150 = load float, float* %10
%151 = fsub float %149, %150
%152 = load float, float* %13
%153 = load float, float* %10
%154 = fsub float %152, %153
%155 = call float @llvm.fmuladd.f32(float %151, float %154, float %148)
%156 = call float @sqrt(float %155)
%157 = load float*, float** %14
store float %156, float* %157
br label %158
158: ; preds = %134, %130, %126, %122
%159 = load float, float* %11
%160 = load float, float* %8
%161 = fcmp ogt float %159, %160
br i1 %161, label %162, label %194
162: ; preds = %158
%163 = load float, float* %12
%164 = load float, float* %9
%165 = fcmp ogt float %163, %164
br i1 %165, label %166, label %194
166: ; preds = %162
%167 = load float, float* %13
%168 = load float, float* %10
%169 = fcmp olt float %167, %168
br i1 %169, label %170, label %194
170: ; preds = %166
%171 = load float, float* %12
%172 = load float, float* %9
%173 = fsub float %171, %172
%174 = load float, float* %12
%175 = load float, float* %9
%176 = fsub float %174, %175
%177 = load float, float* %11
%178 = load float, float* %8
%179 = fsub float %177, %178
%180 = load float, float* %11
%181 = load float, float* %8
%182 = fsub float %180, %181
%183 = fmul float %179, %182
%184 = call float @llvm.fmuladd.f32(float %173, float %176, float %183)
%185 = load float, float* %10
%186 = load float, float* %13
%187 = fsub float %185, %186
%188 = load float, float* %10
%189 = load float, float* %13
%190 = fsub float %188, %189
%191 = call float @llvm.fmuladd.f32(float %187, float %190, float %184)
%192 = call float @sqrt(float %191)
%193 = load float*, float** %14
store float %192, float* %193
br label %194
194: ; preds = %170, %166, %162, %158
%195 = load float, float* %11
%196 = load float, float* %8
%197 = fcmp olt float %195, %196
br i1 %197, label %198, label %230
198: ; preds = %194
%199 = load float, float* %12
%200 = load float, float* %9
%201 = fcmp ogt float %199, %200
br i1 %201, label %202, label %230
202: ; preds = %198
%203 = load float, float* %13
%204 = load float, float* %10
%205 = fcmp olt float %203, %204
br i1 %205, label %206, label %230
206: ; preds = %202
%207 = load float, float* %12
%208 = load float, float* %9
%209 = fsub float %207, %208
%210 = load float, float* %12
%211 = load float, float* %9
%212 = fsub float %210, %211
%213 = load float, float* %8
%214 = load float, float* %11
%215 = fsub float %213, %214
%216 = load float, float* %8
%217 = load float, float* %11
%218 = fsub float %216, %217
%219 = fmul float %215, %218
%220 = call float @llvm.fmuladd.f32(float %209, float %212, float %219)
%221 = load float, float* %10
%222 = load float, float* %13
%223 = fsub float %221, %222
%224 = load float, float* %10
%225 = load float, float* %13
%226 = fsub float %224, %225
%227 = call float @llvm.fmuladd.f32(float %223, float %226, float %220)
%228 = call float @sqrt(float %227)
%229 = load float*, float** %14
store float %228, float* %229
br label %230
230: ; preds = %206, %202, %198, %194
%231 = load float, float* %11
%232 = load float, float* %8
%233 = fcmp olt float %231, %232
br i1 %233, label %234, label %266
234: ; preds = %230
%235 = load float, float* %12
%236 = load float, float* %9
%237 = fcmp olt float %235, %236
br i1 %237, label %238, label %266
238: ; preds = %234
%239 = load float, float* %13
%240 = load float, float* %10
%241 = fcmp olt float %239, %240
br i1 %241, label %242, label %266
242: ; preds = %238
%243 = load float, float* %9
%244 = load float, float* %12
%245 = fsub float %243, %244
%246 = load float, float* %9
%247 = load float, float* %12
%248 = fsub float %246, %247
%249 = load float, float* %8
%250 = load float, float* %11
%251 = fsub float %249, %250
%252 = load float, float* %8
%253 = load float, float* %11
%254 = fsub float %252, %253
%255 = fmul float %251, %254
%256 = call float @llvm.fmuladd.f32(float %245, float %248, float %255)
%257 = load float, float* %10
%258 = load float, float* %13
%259 = fsub float %257, %258
%260 = load float, float* %10
%261 = load float, float* %13
%262 = fsub float %260, %261
%263 = call float @llvm.fmuladd.f32(float %259, float %262, float %256)
%264 = call float @sqrt(float %263)
%265 = load float*, float** %14
store float %264, float* %265
br label %266
266: ; preds = %242, %238, %234, %230
%267 = load float, float* %11
%268 = load float, float* %8
%269 = fcmp ogt float %267, %268
br i1 %269, label %270, label %302
270: ; preds = %266
%271 = load float, float* %12
%272 = load float, float* %9
%273 = fcmp olt float %271, %272
br i1 %273, label %274, label %302
274: ; preds = %270
%275 = load float, float* %13
%276 = load float, float* %10
%277 = fcmp olt float %275, %276
br i1 %277, label %278, label %302
278: ; preds = %274
%279 = load float, float* %9
%280 = load float, float* %12
%281 = fsub float %279, %280
%282 = load float, float* %9
%283 = load float, float* %12
%284 = fsub float %282, %283
%285 = load float, float* %11
%286 = load float, float* %8
%287 = fsub float %285, %286
%288 = load float, float* %11
%289 = load float, float* %8
%290 = fsub float %288, %289
%291 = fmul float %287, %290
%292 = call float @llvm.fmuladd.f32(float %281, float %284, float %291)
%293 = load float, float* %10
%294 = load float, float* %13
%295 = fsub float %293, %294
%296 = load float, float* %10
%297 = load float, float* %13
%298 = fsub float %296, %297
%299 = call float @llvm.fmuladd.f32(float %295, float %298, float %292)
%300 = call float @sqrt(float %299)
%301 = load float*, float** %14
store float %300, float* %301
br label %302
302: ; preds = %278, %274, %270, %266
ret void
}

LLVM IR (-O2):
define void @getdistance(float %0, float %1, float %2, float %3, float %4, float %5, float* nocapture writeonly %6) {
%8 = fcmp ogt float %3, %0
%9 = fcmp ogt float %4, %1
%10 = and i1 %8, %9
%11 = xor i1 %10, true
%12 = fcmp ult float %5, %2
%13 = or i1 %12, %11
br i1 %13, label %22, label %14
14: ; preds = %7
%15 = fsub float %4, %1
%16 = fsub float %3, %0
%17 = fmul float %16, %16
%18 = tail call float @llvm.fmuladd.f32(float %15, float %15, float %17)
%19 = fsub float %5, %2
%20 = tail call float @llvm.fmuladd.f32(float %19, float %19, float %18)
%21 = tail call float @sqrt(float %20)
store float %21, float* %6
br label %22
22: ; preds = %14, %7
%23 = fcmp olt float %3, %0
%24 = and i1 %23, %9
%25 = xor i1 %24, true
%26 = or i1 %12, %25
br i1 %26, label %35, label %27
27: ; preds = %22
%28 = fsub float %4, %1
%29 = fsub float %0, %3
%30 = fmul float %29, %29
%31 = tail call float @llvm.fmuladd.f32(float %28, float %28, float %30)
%32 = fsub float %5, %2
%33 = tail call float @llvm.fmuladd.f32(float %32, float %32, float %31)
%34 = tail call float @sqrt(float %33)
store float %34, float* %6
br label %35
35: ; preds = %27, %22
%36 = fcmp olt float %4, %1
%37 = and i1 %23, %36
%38 = xor i1 %37, true
%39 = or i1 %12, %38
br i1 %39, label %48, label %40
40: ; preds = %35
%41 = fsub float %1, %4
%42 = fsub float %0, %3
%43 = fmul float %42, %42
%44 = tail call float @llvm.fmuladd.f32(float %41, float %41, float %43)
%45 = fsub float %5, %2
%46 = tail call float @llvm.fmuladd.f32(float %45, float %45, float %44)
%47 = tail call float @sqrt(float %46)
store float %47, float* %6
br label %48
48: ; preds = %40, %35
%49 = and i1 %8, %36
%50 = xor i1 %49, true
%51 = or i1 %12, %50
br i1 %51, label %60, label %52
52: ; preds = %48
%53 = fsub float %1, %4
%54 = fsub float %3, %0
%55 = fmul float %54, %54
%56 = tail call float @llvm.fmuladd.f32(float %53, float %53, float %55)
%57 = fsub float %5, %2
%58 = tail call float @llvm.fmuladd.f32(float %57, float %57, float %56)
%59 = tail call float @sqrt(float %58)
store float %59, float* %6
br label %60
60: ; preds = %52, %48
%61 = fcmp olt float %5, %2
%62 = and i1 %10, %61
br i1 %62, label %63, label %71
63: ; preds = %60
%64 = fsub float %4, %1
%65 = fsub float %3, %0
%66 = fmul float %65, %65
%67 = tail call float @llvm.fmuladd.f32(float %64, float %64, float %66)
%68 = fsub float %2, %5
%69 = tail call float @llvm.fmuladd.f32(float %68, float %68, float %67)
%70 = tail call float @sqrt(float %69)
store float %70, float* %6
br label %71
71: ; preds = %63, %60
%72 = and i1 %24, %61
br i1 %72, label %73, label %81
73: ; preds = %71
%74 = fsub float %4, %1
%75 = fsub float %0, %3
%76 = fmul float %75, %75
%77 = tail call float @llvm.fmuladd.f32(float %74, float %74, float %76)
%78 = fsub float %2, %5
%79 = tail call float @llvm.fmuladd.f32(float %78, float %78, float %77)
%80 = tail call float @sqrt(float %79)
store float %80, float* %6
br label %81
81: ; preds = %73, %71
%82 = and i1 %37, %61
br i1 %82, label %83, label %91
83: ; preds = %81
%84 = fsub float %1, %4
%85 = fsub float %0, %3
%86 = fmul float %85, %85
%87 = tail call float @llvm.fmuladd.f32(float %84, float %84, float %86)
%88 = fsub float %2, %5
%89 = tail call float @llvm.fmuladd.f32(float %88, float %88, float %87)
%90 = tail call float @sqrt(float %89)
store float %90, float* %6
br label %91
91: ; preds = %83, %81
%92 = and i1 %49, %61
br i1 %92, label %93, label %101
93: ; preds = %91
%94 = fsub float %1, %4
%95 = fsub float %3, %0
%96 = fmul float %95, %95
%97 = tail call float @llvm.fmuladd.f32(float %94, float %94, float %96)
%98 = fsub float %2, %5
%99 = tail call float @llvm.fmuladd.f32(float %98, float %98, float %97)
%100 = tail call float @sqrt(float %99)
store float %100, float* %6
br label %101
101: ; preds = %93, %91
ret void
}