unsigned int p_env_find_pixel(float x, float y, float z, unsigned int size) {
  unsigned int i, j, found;
  float r, half_size;
  half_size = 0.5 * (float)size;
  r = x;
  found = 0;
  if (y > r) {
    r = y;
    found = 1;
  }
  if (z > r) {
    r = z;
    found = 2;
  }
  if (-x > r) {
    r = -x;
    found = 3;
  }
  if (-y > r) {
    r = -y;
    found = 4;
  }
  if (-z > r) {
    r = -z;
    found = 5;
  }
  switch (found) {
  case 0:
    i = size - ((y / x) + 1.0) * half_size;
    j = size - ((z / x) + 1.0) * half_size;
    return i * size + j;
    break;
  case 1:
    i = ((x / y) + 1.0) * half_size;
    j = ((z / y) + 1.0) * half_size;
    return i * size + j + size * size;
    break;
  case 2:
    i = size - ((y / z) + 1.0) * half_size;
    j = ((x / z) + 1.0) * half_size;
    return i * size + j + size * size * 2;
    break;
  case 3:
    i = size - ((y / -x) + 1.0) * half_size;
    j = ((z / -x) + 1.0) * half_size;
    return i * size + j + size * size * 3;
    break;
  case 4:
    i = size - ((z / -y) + 1.0) * half_size;
    j = ((x / -y) + 1.0) * half_size;
    return i * size + j + size * size * 4;
    break;
  case 5:
    i = size - ((y / -z) + 1.0) * half_size;
    j = size - ((x / -z) + 1.0) * half_size;
    return i * size + j + size * size * 5;
    break;
  }
  return 0;
}


x86 assembly (clang, -O0):
<p_env_find_pixel>:
push   %rbp
mov    %rsp,%rbp
movss  %xmm0,-0x8(%rbp)
movss  %xmm1,-0xc(%rbp)
movss  %xmm2,-0x10(%rbp)
mov    %edi,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cvtsi2ss %rax,%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xed6(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x28(%rbp)
movss  -0x8(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
movl   $0x0,-0x20(%rbp)
movss  -0xc(%rbp),%xmm0
ucomiss -0x24(%rbp),%xmm0
jbe    1168 <p_env_find_pixel+0x68>
movss  -0xc(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
movl   $0x1,-0x20(%rbp)
movss  -0x10(%rbp),%xmm0
ucomiss -0x24(%rbp),%xmm0
jbe    1188 <p_env_find_pixel+0x88>
movss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
movl   $0x2,-0x20(%rbp)
movss  -0x8(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
ucomiss -0x24(%rbp),%xmm0
jbe    11c2 <p_env_find_pixel+0xc2>
movss  -0x8(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  %xmm0,-0x24(%rbp)
movl   $0x3,-0x20(%rbp)
movss  -0xc(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
ucomiss -0x24(%rbp),%xmm0
jbe    11fc <p_env_find_pixel+0xfc>
movss  -0xc(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  %xmm0,-0x24(%rbp)
movl   $0x4,-0x20(%rbp)
movss  -0x10(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
ucomiss -0x24(%rbp),%xmm0
jbe    1236 <p_env_find_pixel+0x136>
movss  -0x10(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  %xmm0,-0x24(%rbp)
movl   $0x5,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    %rax,-0x30(%rbp)
sub    $0x5,%rax
ja     1591 <p_env_find_pixel+0x491>
mov    -0x30(%rbp),%rax
lea    0xdbe(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x14(%rbp),%eax
cvtsi2sd %rax,%xmm0
movss  -0xc(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
divss  %xmm2,%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xd8b(%rip),%xmm2
addsd  %xmm2,%xmm1
movss  -0x28(%rbp),%xmm3
cvtss2sd %xmm3,%xmm3
mulsd  %xmm3,%xmm1
subsd  %xmm1,%xmm0
cvttsd2si %xmm0,%rax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
cvtsi2sd %rax,%xmm0
movss  -0x10(%rbp),%xmm1
movss  -0x8(%rbp),%xmm3
divss  %xmm3,%xmm1
cvtss2sd %xmm1,%xmm1
addsd  %xmm2,%xmm1
movss  -0x28(%rbp),%xmm2
cvtss2sd %xmm2,%xmm2
mulsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
cvttsd2si %xmm0,%rax
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
imul   -0x14(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1598 <p_env_find_pixel+0x498>
movss  -0x8(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
divss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd0b(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x28(%rbp),%xmm2
cvtss2sd %xmm2,%xmm2
mulsd  %xmm2,%xmm0
cvttsd2si %xmm0,%rax
mov    %eax,-0x18(%rbp)
movss  -0x10(%rbp),%xmm0
movss  -0xc(%rbp),%xmm2
divss  %xmm2,%xmm0
cvtss2sd %xmm0,%xmm0
addsd  %xmm1,%xmm0
movss  -0x28(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%rax
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
imul   -0x14(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    -0x14(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    1598 <p_env_find_pixel+0x498>
mov    -0x14(%rbp),%eax
cvtsi2sd %rax,%xmm0
movss  -0xc(%rbp),%xmm1
movss  -0x10(%rbp),%xmm2
divss  %xmm2,%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0xc8a(%rip),%xmm1
addsd  %xmm1,%xmm2
movss  -0x28(%rbp),%xmm3
cvtss2sd %xmm3,%xmm3
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm0
cvttsd2si %xmm0,%rax
mov    %eax,-0x18(%rbp)
movss  -0x8(%rbp),%xmm0
movss  -0x10(%rbp),%xmm2
divss  %xmm2,%xmm0
cvtss2sd %xmm0,%xmm0
addsd  %xmm1,%xmm0
movss  -0x28(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%rax
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
imul   -0x14(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    -0x14(%rbp),%ecx
imul   -0x14(%rbp),%ecx
shl    $0x1,%ecx
add    %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    1598 <p_env_find_pixel+0x498>
mov    -0x14(%rbp),%eax
cvtsi2sd %rax,%xmm1
movss  -0xc(%rbp),%xmm0
movss  -0x8(%rbp),%xmm2
divss  %xmm2,%xmm0
cvtss2sd %xmm0,%xmm3
movsd  0xc02(%rip),%xmm0
movaps %xmm0,%xmm2
subsd  %xmm3,%xmm2
movss  -0x28(%rbp),%xmm3
cvtss2sd %xmm3,%xmm3
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm1
cvttsd2si %xmm1,%rax
mov    %eax,-0x18(%rbp)
movss  -0x10(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
divss  %xmm2,%xmm1
cvtss2sd %xmm1,%xmm1
subsd  %xmm1,%xmm0
movss  -0x28(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%rax
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
imul   -0x14(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    -0x14(%rbp),%ecx
imul   -0x14(%rbp),%ecx
imul   $0x3,%ecx,%ecx
add    %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    1598 <p_env_find_pixel+0x498>
mov    -0x14(%rbp),%eax
cvtsi2sd %rax,%xmm1
movss  -0x10(%rbp),%xmm0
movss  -0xc(%rbp),%xmm2
divss  %xmm2,%xmm0
cvtss2sd %xmm0,%xmm3
movsd  0xb77(%rip),%xmm0
movaps %xmm0,%xmm2
subsd  %xmm3,%xmm2
movss  -0x28(%rbp),%xmm3
cvtss2sd %xmm3,%xmm3
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm1
cvttsd2si %xmm1,%rax
mov    %eax,-0x18(%rbp)
movss  -0x8(%rbp),%xmm1
movss  -0xc(%rbp),%xmm2
divss  %xmm2,%xmm1
cvtss2sd %xmm1,%xmm1
subsd  %xmm1,%xmm0
movss  -0x28(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%rax
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
imul   -0x14(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    -0x14(%rbp),%ecx
imul   -0x14(%rbp),%ecx
shl    $0x2,%ecx
add    %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    1598 <p_env_find_pixel+0x498>
mov    -0x14(%rbp),%eax
cvtsi2sd %rax,%xmm0
movss  -0xc(%rbp),%xmm1
movss  -0x10(%rbp),%xmm2
divss  %xmm2,%xmm1
cvtss2sd %xmm1,%xmm3
movsd  0xaec(%rip),%xmm1
movaps %xmm1,%xmm2
subsd  %xmm3,%xmm2
movss  -0x28(%rbp),%xmm3
cvtss2sd %xmm3,%xmm3
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm0
cvttsd2si %xmm0,%rax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
cvtsi2sd %rax,%xmm0
movss  -0x8(%rbp),%xmm2
movss  -0x10(%rbp),%xmm3
divss  %xmm3,%xmm2
cvtss2sd %xmm2,%xmm2
subsd  %xmm2,%xmm1
movss  -0x28(%rbp),%xmm2
cvtss2sd %xmm2,%xmm2
mulsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
cvttsd2si %xmm0,%rax
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
imul   -0x14(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    -0x14(%rbp),%ecx
imul   -0x14(%rbp),%ecx
imul   $0x5,%ecx,%ecx
add    %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    1598 <p_env_find_pixel+0x498>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<p_env_find_pixel>:
xor    %eax,%eax
ucomiss %xmm0,%xmm1
seta   %al
movaps %xmm1,%xmm3
maxss  %xmm0,%xmm3
ucomiss %xmm3,%xmm2
mov    $0x2,%ecx
cmovbe %eax,%ecx
movaps %xmm2,%xmm6
maxss  %xmm3,%xmm6
movaps 0xee8(%rip),%xmm4
movaps %xmm0,%xmm5
xorps  %xmm4,%xmm5
ucomiss %xmm6,%xmm5
mov    $0x3,%eax
cmovbe %ecx,%eax
movaps %xmm5,%xmm3
maxss  %xmm6,%xmm3
movaps %xmm1,%xmm6
xorps  %xmm4,%xmm6
ucomiss %xmm3,%xmm6
mov    $0x4,%edx
cmovbe %eax,%edx
movaps %xmm6,%xmm7
maxss  %xmm3,%xmm7
xorps  %xmm2,%xmm4
ucomiss %xmm7,%xmm4
mov    $0x5,%ecx
cmovbe %edx,%ecx
cmp    $0x5,%ecx
ja     11df <p_env_find_pixel+0xdf>
mov    %edi,%eax
xorps  %xmm3,%xmm3
cvtsi2ss %rax,%xmm3
mulss  0xe83(%rip),%xmm3
lea    0xea4(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
xorps  %xmm4,%xmm4
cvtsi2sd %rax,%xmm4
divss  %xmm0,%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xe7b(%rip),%xmm5
addsd  %xmm5,%xmm1
cvtss2sd %xmm3,%xmm3
mulsd  %xmm3,%xmm1
movapd %xmm4,%xmm6
subsd  %xmm1,%xmm6
cvttsd2si %xmm6,%rax
divss  %xmm0,%xmm2
xorps  %xmm0,%xmm0
cvtss2sd %xmm2,%xmm0
addsd  %xmm5,%xmm0
mulsd  %xmm3,%xmm0
subsd  %xmm0,%xmm4
cvttsd2si %xmm4,%rcx
jmp    12fe <p_env_find_pixel+0x1fe>
xor    %eax,%eax
ret
divss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe2e(%rip),%xmm4
addsd  %xmm4,%xmm0
cvtss2sd %xmm3,%xmm3
mulsd  %xmm3,%xmm0
cvttsd2si %xmm0,%rax
divss  %xmm1,%xmm2
xorps  %xmm0,%xmm0
cvtss2sd %xmm2,%xmm0
addsd  %xmm4,%xmm0
mulsd  %xmm3,%xmm0
cvttsd2si %xmm0,%rcx
add    %edi,%eax
jmp    12fe <p_env_find_pixel+0x1fe>
xorps  %xmm4,%xmm4
cvtsi2sd %rax,%xmm4
divss  %xmm2,%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xde6(%rip),%xmm5
addsd  %xmm5,%xmm1
cvtss2sd %xmm3,%xmm3
mulsd  %xmm3,%xmm1
subsd  %xmm1,%xmm4
cvttsd2si %xmm4,%rax
divss  %xmm2,%xmm0
cvtss2sd %xmm0,%xmm0
addsd  %xmm5,%xmm0
mulsd  %xmm3,%xmm0
cvttsd2si %xmm0,%rcx
lea    (%rax,%rdi,2),%eax
jmp    12fe <p_env_find_pixel+0x1fe>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
divss  %xmm5,%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xd9c(%rip),%xmm4
addsd  %xmm4,%xmm1
cvtss2sd %xmm3,%xmm3
mulsd  %xmm3,%xmm1
subsd  %xmm1,%xmm0
cvttsd2si %xmm0,%rcx
divss  %xmm5,%xmm2
xorps  %xmm0,%xmm0
cvtss2sd %xmm2,%xmm0
addsd  %xmm4,%xmm0
mulsd  %xmm3,%xmm0
cvttsd2si %xmm0,%rdx
lea    (%rdi,%rdi,2),%eax
jmp    1351 <p_env_find_pixel+0x251>
xorps  %xmm1,%xmm1
cvtsi2sd %rax,%xmm1
divss  %xmm6,%xmm2
cvtss2sd %xmm2,%xmm2
movsd  0xd4f(%rip),%xmm4
addsd  %xmm4,%xmm2
cvtss2sd %xmm3,%xmm3
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm1
cvttsd2si %xmm1,%rax
divss  %xmm6,%xmm0
cvtss2sd %xmm0,%xmm0
addsd  %xmm4,%xmm0
mulsd  %xmm3,%xmm0
cvttsd2si %xmm0,%rcx
lea    (%rax,%rdi,4),%eax
imul   %edi,%eax
add    %ecx,%eax
ret
xorps  %xmm2,%xmm2
cvtsi2sd %rax,%xmm2
divss  %xmm4,%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xd04(%rip),%xmm5
addsd  %xmm5,%xmm1
cvtss2sd %xmm3,%xmm3
mulsd  %xmm3,%xmm1
movapd %xmm2,%xmm6
subsd  %xmm1,%xmm6
cvttsd2si %xmm6,%rcx
divss  %xmm4,%xmm0
cvtss2sd %xmm0,%xmm0
addsd  %xmm5,%xmm0
mulsd  %xmm3,%xmm0
subsd  %xmm0,%xmm2
cvttsd2si %xmm2,%rdx
lea    (%rdi,%rdi,4),%eax
add    %ecx,%eax
imul   %edi,%eax
add    %edx,%eax
ret

LLVM IR (-O0):
define i32 @p_env_find_pixel(float %0, float %1, float %2, i32 %3) {
%5 = alloca i32
%6 = alloca float
%7 = alloca float
%8 = alloca float
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca float
%14 = alloca float
store float %0, float* %6
store float %1, float* %7
store float %2, float* %8
store i32 %3, i32* %9
%15 = load i32, i32* %9
%16 = uitofp i32 %15 to float
%17 = fpext float %16 to double
%18 = fmul double 5.000000e-01, %17
%19 = fptrunc double %18 to float
store float %19, float* %14
%20 = load float, float* %6
store float %20, float* %13
store i32 0, i32* %12
%21 = load float, float* %7
%22 = load float, float* %13
%23 = fcmp ogt float %21, %22
br i1 %23, label %24, label %26
24: ; preds = %4
%25 = load float, float* %7
store float %25, float* %13
store i32 1, i32* %12
br label %26
26: ; preds = %24, %4
%27 = load float, float* %8
%28 = load float, float* %13
%29 = fcmp ogt float %27, %28
br i1 %29, label %30, label %32
30: ; preds = %26
%31 = load float, float* %8
store float %31, float* %13
store i32 2, i32* %12
br label %32
32: ; preds = %30, %26
%33 = load float, float* %6
%34 = fneg float %33
%35 = load float, float* %13
%36 = fcmp ogt float %34, %35
br i1 %36, label %37, label %40
37: ; preds = %32
%38 = load float, float* %6
%39 = fneg float %38
store float %39, float* %13
store i32 3, i32* %12
br label %40
40: ; preds = %37, %32
%41 = load float, float* %7
%42 = fneg float %41
%43 = load float, float* %13
%44 = fcmp ogt float %42, %43
br i1 %44, label %45, label %48
45: ; preds = %40
%46 = load float, float* %7
%47 = fneg float %46
store float %47, float* %13
store i32 4, i32* %12
br label %48
48: ; preds = %45, %40
%49 = load float, float* %8
%50 = fneg float %49
%51 = load float, float* %13
%52 = fcmp ogt float %50, %51
br i1 %52, label %53, label %56
53: ; preds = %48
%54 = load float, float* %8
%55 = fneg float %54
store float %55, float* %13
store i32 5, i32* %12
br label %56
56: ; preds = %53, %48
%57 = load i32, i32* %12
switch i32 %57, label %253 [
i32 0, label %58
i32 1, label %88
i32 2, label %116
i32 3, label %148
i32 4, label %182
i32 5, label %216
]
58: ; preds = %56
%59 = load i32, i32* %9
%60 = uitofp i32 %59 to double
%61 = load float, float* %7
%62 = load float, float* %6
%63 = fdiv float %61, %62
%64 = fpext float %63 to double
%65 = fadd double %64, 1.000000e+00
%66 = load float, float* %14
%67 = fpext float %66 to double
%68 = fneg double %65
%69 = call double @llvm.fmuladd.f64(double %68, double %67, double %60)
%70 = fptoui double %69 to i32
store i32 %70, i32* %10
%71 = load i32, i32* %9
%72 = uitofp i32 %71 to double
%73 = load float, float* %8
%74 = load float, float* %6
%75 = fdiv float %73, %74
%76 = fpext float %75 to double
%77 = fadd double %76, 1.000000e+00
%78 = load float, float* %14
%79 = fpext float %78 to double
%80 = fneg double %77
%81 = call double @llvm.fmuladd.f64(double %80, double %79, double %72)
%82 = fptoui double %81 to i32
store i32 %82, i32* %11
%83 = load i32, i32* %10
%84 = load i32, i32* %9
%85 = mul i32 %83, %84
%86 = load i32, i32* %11
%87 = add i32 %85, %86
store i32 %87, i32* %5
br label %254
88: ; preds = %56
%89 = load float, float* %6
%90 = load float, float* %7
%91 = fdiv float %89, %90
%92 = fpext float %91 to double
%93 = fadd double %92, 1.000000e+00
%94 = load float, float* %14
%95 = fpext float %94 to double
%96 = fmul double %93, %95
%97 = fptoui double %96 to i32
store i32 %97, i32* %10
%98 = load float, float* %8
%99 = load float, float* %7
%100 = fdiv float %98, %99
%101 = fpext float %100 to double
%102 = fadd double %101, 1.000000e+00
%103 = load float, float* %14
%104 = fpext float %103 to double
%105 = fmul double %102, %104
%106 = fptoui double %105 to i32
store i32 %106, i32* %11
%107 = load i32, i32* %10
%108 = load i32, i32* %9
%109 = mul i32 %107, %108
%110 = load i32, i32* %11
%111 = add i32 %109, %110
%112 = load i32, i32* %9
%113 = load i32, i32* %9
%114 = mul i32 %112, %113
%115 = add i32 %111, %114
store i32 %115, i32* %5
br label %254
116: ; preds = %56
%117 = load i32, i32* %9
%118 = uitofp i32 %117 to double
%119 = load float, float* %7
%120 = load float, float* %8
%121 = fdiv float %119, %120
%122 = fpext float %121 to double
%123 = fadd double %122, 1.000000e+00
%124 = load float, float* %14
%125 = fpext float %124 to double
%126 = fneg double %123
%127 = call double @llvm.fmuladd.f64(double %126, double %125, double %118)
%128 = fptoui double %127 to i32
store i32 %128, i32* %10
%129 = load float, float* %6
%130 = load float, float* %8
%131 = fdiv float %129, %130
%132 = fpext float %131 to double
%133 = fadd double %132, 1.000000e+00
%134 = load float, float* %14
%135 = fpext float %134 to double
%136 = fmul double %133, %135
%137 = fptoui double %136 to i32
store i32 %137, i32* %11
%138 = load i32, i32* %10
%139 = load i32, i32* %9
%140 = mul i32 %138, %139
%141 = load i32, i32* %11
%142 = add i32 %140, %141
%143 = load i32, i32* %9
%144 = load i32, i32* %9
%145 = mul i32 %143, %144
%146 = mul i32 %145, 2
%147 = add i32 %142, %146
store i32 %147, i32* %5
br label %254
148: ; preds = %56
%149 = load i32, i32* %9
%150 = uitofp i32 %149 to double
%151 = load float, float* %7
%152 = load float, float* %6
%153 = fneg float %152
%154 = fdiv float %151, %153
%155 = fpext float %154 to double
%156 = fadd double %155, 1.000000e+00
%157 = load float, float* %14
%158 = fpext float %157 to double
%159 = fneg double %156
%160 = call double @llvm.fmuladd.f64(double %159, double %158, double %150)
%161 = fptoui double %160 to i32
store i32 %161, i32* %10
%162 = load float, float* %8
%163 = load float, float* %6
%164 = fneg float %163
%165 = fdiv float %162, %164
%166 = fpext float %165 to double
%167 = fadd double %166, 1.000000e+00
%168 = load float, float* %14
%169 = fpext float %168 to double
%170 = fmul double %167, %169
%171 = fptoui double %170 to i32
store i32 %171, i32* %11
%172 = load i32, i32* %10
%173 = load i32, i32* %9
%174 = mul i32 %172, %173
%175 = load i32, i32* %11
%176 = add i32 %174, %175
%177 = load i32, i32* %9
%178 = load i32, i32* %9
%179 = mul i32 %177, %178
%180 = mul i32 %179, 3
%181 = add i32 %176, %180
store i32 %181, i32* %5
br label %254
182: ; preds = %56
%183 = load i32, i32* %9
%184 = uitofp i32 %183 to double
%185 = load float, float* %8
%186 = load float, float* %7
%187 = fneg float %186
%188 = fdiv float %185, %187
%189 = fpext float %188 to double
%190 = fadd double %189, 1.000000e+00
%191 = load float, float* %14
%192 = fpext float %191 to double
%193 = fneg double %190
%194 = call double @llvm.fmuladd.f64(double %193, double %192, double %184)
%195 = fptoui double %194 to i32
store i32 %195, i32* %10
%196 = load float, float* %6
%197 = load float, float* %7
%198 = fneg float %197
%199 = fdiv float %196, %198
%200 = fpext float %199 to double
%201 = fadd double %200, 1.000000e+00
%202 = load float, float* %14
%203 = fpext float %202 to double
%204 = fmul double %201, %203
%205 = fptoui double %204 to i32
store i32 %205, i32* %11
%206 = load i32, i32* %10
%207 = load i32, i32* %9
%208 = mul i32 %206, %207
%209 = load i32, i32* %11
%210 = add i32 %208, %209
%211 = load i32, i32* %9
%212 = load i32, i32* %9
%213 = mul i32 %211, %212
%214 = mul i32 %213, 4
%215 = add i32 %210, %214
store i32 %215, i32* %5
br label %254
216: ; preds = %56
%217 = load i32, i32* %9
%218 = uitofp i32 %217 to double
%219 = load float, float* %7
%220 = load float, float* %8
%221 = fneg float %220
%222 = fdiv float %219, %221
%223 = fpext float %222 to double
%224 = fadd double %223, 1.000000e+00
%225 = load float, float* %14
%226 = fpext float %225 to double
%227 = fneg double %224
%228 = call double @llvm.fmuladd.f64(double %227, double %226, double %218)
%229 = fptoui double %228 to i32
store i32 %229, i32* %10
%230 = load i32, i32* %9
%231 = uitofp i32 %230 to double
%232 = load float, float* %6
%233 = load float, float* %8
%234 = fneg float %233
%235 = fdiv float %232, %234
%236 = fpext float %235 to double
%237 = fadd double %236, 1.000000e+00
%238 = load float, float* %14
%239 = fpext float %238 to double
%240 = fneg double %237
%241 = call double @llvm.fmuladd.f64(double %240, double %239, double %231)
%242 = fptoui double %241 to i32
store i32 %242, i32* %11
%243 = load i32, i32* %10
%244 = load i32, i32* %9
%245 = mul i32 %243, %244
%246 = load i32, i32* %11
%247 = add i32 %245, %246
%248 = load i32, i32* %9
%249 = load i32, i32* %9
%250 = mul i32 %248, %249
%251 = mul i32 %250, 5
%252 = add i32 %247, %251
store i32 %252, i32* %5
br label %254
253: ; preds = %56
store i32 0, i32* %5
br label %254
254: ; preds = %253, %216, %182, %148, %116, %88, %58
%255 = load i32, i32* %5
ret i32 %255
}

LLVM IR (-O2):
define i32 @p_env_find_pixel(float %0, float %1, float %2, i32 %3) {
%5 = uitofp i32 %3 to float
%6 = fmul float %5, 5.000000e-01
%7 = fcmp ogt float %1, %0
%8 = zext i1 %7 to i32
%9 = select i1 %7, float %1, float %0
%10 = fcmp olt float %9, %2
%11 = select i1 %10, i32 2, i32 %8
%12 = select i1 %10, float %2, float %9
%13 = fneg float %0
%14 = fcmp olt float %12, %13
%15 = select i1 %14, i32 3, i32 %11
%16 = select i1 %14, float %13, float %12
%17 = fneg float %1
%18 = fcmp olt float %16, %17
%19 = select i1 %18, i32 4, i32 %15
%20 = select i1 %18, float %17, float %16
%21 = fneg float %2
%22 = fcmp olt float %20, %21
%23 = select i1 %22, i32 5, i32 %19
switch i32 %23, label %129 [
i32 0, label %24
i32 1, label %41
i32 2, label %56
i32 3, label %74
i32 4, label %92
i32 5, label %110
]
24: ; preds = %4
%25 = uitofp i32 %3 to double
%26 = fdiv float %1, %0
%27 = fpext float %26 to double
%28 = fadd double %27, 1.000000e+00
%29 = fpext float %6 to double
%30 = fneg double %28
%31 = tail call double @llvm.fmuladd.f64(double %30, double %29, double %25)
%32 = fptoui double %31 to i32
%33 = fdiv float %2, %0
%34 = fpext float %33 to double
%35 = fadd double %34, 1.000000e+00
%36 = fneg double %35
%37 = tail call double @llvm.fmuladd.f64(double %36, double %29, double %25)
%38 = fptoui double %37 to i32
%39 = mul i32 %32, %3
%40 = add i32 %39, %38
br label %129
41: ; preds = %4
%42 = fdiv float %0, %1
%43 = fpext float %42 to double
%44 = fadd double %43, 1.000000e+00
%45 = fpext float %6 to double
%46 = fmul double %44, %45
%47 = fptoui double %46 to i32
%48 = fdiv float %2, %1
%49 = fpext float %48 to double
%50 = fadd double %49, 1.000000e+00
%51 = fmul double %50, %45
%52 = fptoui double %51 to i32
%53 = add i32 %47, %3
%54 = mul i32 %53, %3
%55 = add i32 %54, %52
br label %129
56: ; preds = %4
%57 = uitofp i32 %3 to double
%58 = fdiv float %1, %2
%59 = fpext float %58 to double
%60 = fadd double %59, 1.000000e+00
%61 = fpext float %6 to double
%62 = fneg double %60
%63 = tail call double @llvm.fmuladd.f64(double %62, double %61, double %57)
%64 = fptoui double %63 to i32
%65 = fdiv float %0, %2
%66 = fpext float %65 to double
%67 = fadd double %66, 1.000000e+00
%68 = fmul double %67, %61
%69 = fptoui double %68 to i32
%70 = shl i32 %3, 1
%71 = add i32 %70, %64
%72 = mul i32 %71, %3
%73 = add i32 %72, %69
br label %129
74: ; preds = %4
%75 = uitofp i32 %3 to double
%76 = fdiv float %1, %13
%77 = fpext float %76 to double
%78 = fadd double %77, 1.000000e+00
%79 = fpext float %6 to double
%80 = fneg double %78
%81 = tail call double @llvm.fmuladd.f64(double %80, double %79, double %75)
%82 = fptoui double %81 to i32
%83 = fdiv float %2, %13
%84 = fpext float %83 to double
%85 = fadd double %84, 1.000000e+00
%86 = fmul double %85, %79
%87 = fptoui double %86 to i32
%88 = mul i32 %3, 3
%89 = add i32 %88, %82
%90 = mul i32 %89, %3
%91 = add i32 %90, %87
br label %129
92: ; preds = %4
%93 = uitofp i32 %3 to double
%94 = fdiv float %2, %17
%95 = fpext float %94 to double
%96 = fadd double %95, 1.000000e+00
%97 = fpext float %6 to double
%98 = fneg double %96
%99 = tail call double @llvm.fmuladd.f64(double %98, double %97, double %93)
%100 = fptoui double %99 to i32
%101 = fdiv float %0, %17
%102 = fpext float %101 to double
%103 = fadd double %102, 1.000000e+00
%104 = fmul double %103, %97
%105 = fptoui double %104 to i32
%106 = shl i32 %3, 2
%107 = add i32 %106, %100
%108 = mul i32 %107, %3
%109 = add i32 %108, %105
br label %129
110: ; preds = %4
%111 = uitofp i32 %3 to double
%112 = fdiv float %1, %21
%113 = fpext float %112 to double
%114 = fadd double %113, 1.000000e+00
%115 = fpext float %6 to double
%116 = fneg double %114
%117 = tail call double @llvm.fmuladd.f64(double %116, double %115, double %111)
%118 = fptoui double %117 to i32
%119 = fdiv float %0, %21
%120 = fpext float %119 to double
%121 = fadd double %120, 1.000000e+00
%122 = fneg double %121
%123 = tail call double @llvm.fmuladd.f64(double %122, double %115, double %111)
%124 = fptoui double %123 to i32
%125 = mul i32 %3, 5
%126 = add i32 %125, %118
%127 = mul i32 %126, %3
%128 = add i32 %127, %124
br label %129
129: ; preds = %4, %110, %92, %74, %56, %41, %24
%130 = phi i32 [ %128, %110 ], [ %109, %92 ], [ %91, %74 ], [ %73, %56 ], [ %55, %41 ], [ %40, %24 ], [ 0, %4 ]
ret i32 %130
}