#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 atan2(double, double);
int /*<<< orphan*/ fail(char *, int);
float hypot(double, double);
int symmetrize_index_inside(int, int);
float eval_colonvar(int w, int h, int i, int j, int c) {
  double x, y;
  switch (c) {
  case 'i':
    return i;
  case 'j':
    return j;
  case 'w':
    return w;
  case 'h':
    return h;
  case 'n':
    return w * h;
  case 'x':
    return (2.0 / (w - 1)) * i - 1;
  case 'y':
    return (2.0 / (h - 1)) * j - 1;
  case 'r':
    return hypot((2.0 / (h - 1)) * j - 1, (2.0 / (w - 1)) * i - 1);
  case 't':
    return atan2((2.0 / (h - 1)) * j - 1, (2.0 / (w - 1)) * i - 1);
  case 'I':
    return symmetrize_index_inside(i, w);
  case 'J':
    return symmetrize_index_inside(j, h);
  case 'P':
    return symmetrize_index_inside(i, w) * 2 * 3.14159265358979323846264338328 /
           w;
  case 'Q':
    return symmetrize_index_inside(j, h) * 2 * 3.14159265358979323846264338328 /
           h;
  case 'L':
    x = symmetrize_index_inside(i, w);
    y = symmetrize_index_inside(j, h);
    return -(x * x + y * y);
  case 'R':
    x = symmetrize_index_inside(i, w);
    y = symmetrize_index_inside(j, h);
    return hypot(x, y);
  case 'W':
    return w / (2 * 3.14159265358979323846264338328);
  case 'H':
    return h / (2 * 3.14159265358979323846264338328);
  default:
    fail("unrecognized colonvar \":%c\"", c);
  }
}


x86 assembly (clang, -O0):
<eval_colonvar>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %edi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    %r8d,-0x18(%rbp)
mov    -0x18(%rbp),%eax
add    $0xffffffb8,%eax
mov    %eax,%ecx
mov    %rcx,-0x30(%rbp)
sub    $0x31,%eax
ja     1492 <eval_colonvar+0x352>
mov    -0x30(%rbp),%rax
lea    0xea8(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
cvtsi2ssl -0x10(%rbp),%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    14a1 <eval_colonvar+0x361>
cvtsi2ssl -0x14(%rbp),%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    14a1 <eval_colonvar+0x361>
cvtsi2ssl -0x8(%rbp),%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    14a1 <eval_colonvar+0x361>
cvtsi2ssl -0xc(%rbp),%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    14a1 <eval_colonvar+0x361>
mov    -0x8(%rbp),%eax
imul   -0xc(%rbp),%eax
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    14a1 <eval_colonvar+0x361>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm1
movsd  0xe34(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsi2sdl -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe17(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    14a1 <eval_colonvar+0x361>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm1
movsd  0xdfb(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsi2sdl -0x14(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdde(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    14a1 <eval_colonvar+0x361>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm1
movsd  0xdc2(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsi2sdl -0x14(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xda5(%rip),%xmm1
addsd  %xmm1,%xmm0
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm2
movsd  0xd97(%rip),%xmm1
divsd  %xmm2,%xmm1
cvtsi2sdl -0x10(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xd7a(%rip),%xmm2
addsd  %xmm2,%xmm1
call   1050 <hypot@plt>
movss  %xmm0,-0x4(%rbp)
jmp    14a1 <eval_colonvar+0x361>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm1
movsd  0xd5d(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsi2sdl -0x14(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd40(%rip),%xmm1
addsd  %xmm1,%xmm0
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm2
movsd  0xd32(%rip),%xmm1
divsd  %xmm2,%xmm1
cvtsi2sdl -0x10(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xd15(%rip),%xmm2
addsd  %xmm2,%xmm1
call   1040 <atan2@plt>
movss  %xmm0,-0x4(%rbp)
jmp    14a1 <eval_colonvar+0x361>
mov    -0x10(%rbp),%edi
mov    -0x8(%rbp),%esi
call   1060 <symmetrize_index_inside@plt>
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    14a1 <eval_colonvar+0x361>
mov    -0x14(%rbp),%edi
mov    -0xc(%rbp),%esi
call   1060 <symmetrize_index_inside@plt>
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    14a1 <eval_colonvar+0x361>
mov    -0x10(%rbp),%edi
mov    -0x8(%rbp),%esi
call   1060 <symmetrize_index_inside@plt>
shl    $0x1,%eax
cvtsi2sd %eax,%xmm0
movsd  0xcae(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x8(%rbp),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    14a1 <eval_colonvar+0x361>
mov    -0x14(%rbp),%edi
mov    -0xc(%rbp),%esi
call   1060 <symmetrize_index_inside@plt>
shl    $0x1,%eax
cvtsi2sd %eax,%xmm0
movsd  0xc79(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsi2sdl -0xc(%rbp),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    14a1 <eval_colonvar+0x361>
mov    -0x10(%rbp),%edi
mov    -0x8(%rbp),%esi
call   1060 <symmetrize_index_inside@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x14(%rbp),%edi
mov    -0xc(%rbp),%esi
call   1060 <symmetrize_index_inside@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  -0x28(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    14a1 <eval_colonvar+0x361>
mov    -0x10(%rbp),%edi
mov    -0x8(%rbp),%esi
call   1060 <symmetrize_index_inside@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x14(%rbp),%edi
mov    -0xc(%rbp),%esi
call   1060 <symmetrize_index_inside@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
call   1050 <hypot@plt>
movss  %xmm0,-0x4(%rbp)
jmp    14a1 <eval_colonvar+0x361>
cvtsi2sdl -0x8(%rbp),%xmm0
movsd  0xb9f(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    14a1 <eval_colonvar+0x361>
cvtsi2sdl -0xc(%rbp),%xmm0
movsd  0xb80(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    14a1 <eval_colonvar+0x361>
mov    -0x18(%rbp),%esi
lea    0xc4c(%rip),%rdi
call   1030 <fail@plt>
movss  -0x4(%rbp),%xmm0
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<eval_colonvar>:
push   %rbp
push   %r14
push   %rbx
sub    $0x10,%rsp
lea    -0x48(%r8),%eax
cmp    $0x31,%eax
ja     118a <eval_colonvar+0x4a>
mov    %ecx,%r14d
mov    %esi,%ebp
mov    %edi,%ebx
lea    0xed1(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
cvtsi2sd %ebp,%xmm0
jmp    1259 <eval_colonvar+0x119>
mov    %edx,%edi
mov    %ebx,%esi
jmp    117c <eval_colonvar+0x3c>
mov    %r14d,%edi
mov    %ebp,%esi
call   1060 <symmetrize_index_inside@plt>
cvtsi2ss %eax,%xmm0
jmp    1387 <eval_colonvar+0x247>
lea    0xf67(%rip),%rdi
mov    %r8d,%esi
call   1030 <fail@plt>
jmp    1387 <eval_colonvar+0x247>
mov    %edx,%edi
mov    %ebx,%esi
call   1060 <symmetrize_index_inside@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%rsp)
mov    %r14d,%edi
mov    %ebp,%esi
call   1060 <symmetrize_index_inside@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  %xmm0,%xmm0
movsd  0x8(%rsp),%xmm1
mulsd  %xmm1,%xmm1
addsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
xorps  0xe3e(%rip),%xmm0
jmp    1387 <eval_colonvar+0x247>
mov    %edx,%edi
mov    %ebx,%esi
call   1060 <symmetrize_index_inside@plt>
add    %eax,%eax
cvtsi2sd %eax,%xmm0
mulsd  0xe0a(%rip),%xmm0
cvtsi2sd %ebx,%xmm1
jmp    1220 <eval_colonvar+0xe0>
mov    %r14d,%edi
mov    %ebp,%esi
call   1060 <symmetrize_index_inside@plt>
add    %eax,%eax
cvtsi2sd %eax,%xmm0
mulsd  0xdec(%rip),%xmm0
cvtsi2sd %ebp,%xmm1
divsd  %xmm1,%xmm0
jmp    1383 <eval_colonvar+0x243>
mov    %edx,%edi
mov    %ebx,%esi
call   1060 <symmetrize_index_inside@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%rsp)
mov    %r14d,%edi
mov    %ebp,%esi
call   1060 <symmetrize_index_inside@plt>
cvtsi2sd %eax,%xmm1
movsd  0x8(%rsp),%xmm0
jmp    12d7 <eval_colonvar+0x197>
cvtsi2sd %ebx,%xmm0
divsd  0xd9f(%rip),%xmm0
jmp    1383 <eval_colonvar+0x243>
cvtsi2ss %ebp,%xmm0
jmp    1387 <eval_colonvar+0x247>
cvtsi2ss %edx,%xmm0
jmp    1387 <eval_colonvar+0x247>
cvtsi2ss %r14d,%xmm0
jmp    1387 <eval_colonvar+0x247>
imul   %ebx,%ebp
cvtsi2ss %ebp,%xmm0
jmp    1387 <eval_colonvar+0x247>
add    $0xffffffff,%ebp
cvtsi2sd %ebp,%xmm1
movsd  0xd73(%rip),%xmm2
movapd %xmm2,%xmm3
cvtsi2sd %r14d,%xmm0
divsd  %xmm1,%xmm3
mulsd  %xmm3,%xmm0
movsd  0xd62(%rip),%xmm3
addsd  %xmm3,%xmm0
add    $0xffffffff,%ebx
xorps  %xmm1,%xmm1
cvtsi2sd %ebx,%xmm1
divsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
cvtsi2sd %edx,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm3,%xmm1
add    $0x10,%rsp
pop    %rbx
pop    %r14
pop    %rbp
jmp    1050 <hypot@plt>
add    $0xffffffff,%ebp
cvtsi2sd %ebp,%xmm1
movsd  0xd1d(%rip),%xmm2
movapd %xmm2,%xmm3
cvtsi2sd %r14d,%xmm0
divsd  %xmm1,%xmm3
mulsd  %xmm3,%xmm0
movsd  0xd0c(%rip),%xmm3
addsd  %xmm3,%xmm0
add    $0xffffffff,%ebx
xorps  %xmm1,%xmm1
cvtsi2sd %ebx,%xmm1
divsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
cvtsi2sd %edx,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm3,%xmm1
add    $0x10,%rsp
pop    %rbx
pop    %r14
pop    %rbp
jmp    1040 <atan2@plt>
cvtsi2ss %ebx,%xmm0
jmp    1387 <eval_colonvar+0x247>
add    $0xffffffff,%ebx
cvtsi2sd %ebx,%xmm0
movsd  0xcc1(%rip),%xmm1
divsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtsi2sd %edx,%xmm0
jmp    1377 <eval_colonvar+0x237>
add    $0xffffffff,%ebp
cvtsi2sd %ebp,%xmm0
movsd  0xca5(%rip),%xmm1
divsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtsi2sd %r14d,%xmm0
mulsd  %xmm1,%xmm0
addsd  0xc95(%rip),%xmm0
cvtsd2ss %xmm0,%xmm0
add    $0x10,%rsp
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
@.str = [28 x i8] c"unrecognized colonvar \22:%c\22\00"
define float @eval_colonvar(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4) {
%6 = alloca float
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca double
%13 = alloca double
store i32 %0, i32* %7
store i32 %1, i32* %8
store i32 %2, i32* %9
store i32 %3, i32* %10
store i32 %4, i32* %11
%14 = load i32, i32* %11
switch i32 %14, label %153 [
i32 105, label %15
i32 106, label %18
i32 119, label %21
i32 104, label %24
i32 110, label %27
i32 120, label %32
i32 121, label %41
i32 114, label %50
i32 116, label %66
i32 73, label %82
i32 74, label %87
i32 80, label %92
i32 81, label %103
i32 76, label %114
i32 82, label %131
i32 87, label %143
i32 72, label %148
]
15: ; preds = %5
%16 = load i32, i32* %9
%17 = sitofp i32 %16 to float
store float %17, float* %6
br label %156
18: ; preds = %5
%19 = load i32, i32* %10
%20 = sitofp i32 %19 to float
store float %20, float* %6
br label %156
21: ; preds = %5
%22 = load i32, i32* %7
%23 = sitofp i32 %22 to float
store float %23, float* %6
br label %156
24: ; preds = %5
%25 = load i32, i32* %8
%26 = sitofp i32 %25 to float
store float %26, float* %6
br label %156
27: ; preds = %5
%28 = load i32, i32* %7
%29 = load i32, i32* %8
%30 = mul nsw i32 %28, %29
%31 = sitofp i32 %30 to float
store float %31, float* %6
br label %156
32: ; preds = %5
%33 = load i32, i32* %7
%34 = sub nsw i32 %33, 1
%35 = sitofp i32 %34 to double
%36 = fdiv double 2.000000e+00, %35
%37 = load i32, i32* %9
%38 = sitofp i32 %37 to double
%39 = call double @llvm.fmuladd.f64(double %36, double %38, double -1.000000e+00)
%40 = fptrunc double %39 to float
store float %40, float* %6
br label %156
41: ; preds = %5
%42 = load i32, i32* %8
%43 = sub nsw i32 %42, 1
%44 = sitofp i32 %43 to double
%45 = fdiv double 2.000000e+00, %44
%46 = load i32, i32* %10
%47 = sitofp i32 %46 to double
%48 = call double @llvm.fmuladd.f64(double %45, double %47, double -1.000000e+00)
%49 = fptrunc double %48 to float
store float %49, float* %6
br label %156
50: ; preds = %5
%51 = load i32, i32* %8
%52 = sub nsw i32 %51, 1
%53 = sitofp i32 %52 to double
%54 = fdiv double 2.000000e+00, %53
%55 = load i32, i32* %10
%56 = sitofp i32 %55 to double
%57 = call double @llvm.fmuladd.f64(double %54, double %56, double -1.000000e+00)
%58 = load i32, i32* %7
%59 = sub nsw i32 %58, 1
%60 = sitofp i32 %59 to double
%61 = fdiv double 2.000000e+00, %60
%62 = load i32, i32* %9
%63 = sitofp i32 %62 to double
%64 = call double @llvm.fmuladd.f64(double %61, double %63, double -1.000000e+00)
%65 = call float @hypot(double %57, double %64)
store float %65, float* %6
br label %156
66: ; preds = %5
%67 = load i32, i32* %8
%68 = sub nsw i32 %67, 1
%69 = sitofp i32 %68 to double
%70 = fdiv double 2.000000e+00, %69
%71 = load i32, i32* %10
%72 = sitofp i32 %71 to double
%73 = call double @llvm.fmuladd.f64(double %70, double %72, double -1.000000e+00)
%74 = load i32, i32* %7
%75 = sub nsw i32 %74, 1
%76 = sitofp i32 %75 to double
%77 = fdiv double 2.000000e+00, %76
%78 = load i32, i32* %9
%79 = sitofp i32 %78 to double
%80 = call double @llvm.fmuladd.f64(double %77, double %79, double -1.000000e+00)
%81 = call float @atan2(double %73, double %80)
store float %81, float* %6
br label %156
82: ; preds = %5
%83 = load i32, i32* %9
%84 = load i32, i32* %7
%85 = call i32 @symmetrize_index_inside(i32 %83, i32 %84)
%86 = sitofp i32 %85 to float
store float %86, float* %6
br label %156
87: ; preds = %5
%88 = load i32, i32* %10
%89 = load i32, i32* %8
%90 = call i32 @symmetrize_index_inside(i32 %88, i32 %89)
%91 = sitofp i32 %90 to float
store float %91, float* %6
br label %156
92: ; preds = %5
%93 = load i32, i32* %9
%94 = load i32, i32* %7
%95 = call i32 @symmetrize_index_inside(i32 %93, i32 %94)
%96 = mul nsw i32 %95, 2
%97 = sitofp i32 %96 to double
%98 = fmul double %97, 0x400921FB54442D18
%99 = load i32, i32* %7
%100 = sitofp i32 %99 to double
%101 = fdiv double %98, %100
%102 = fptrunc double %101 to float
store float %102, float* %6
br label %156
103: ; preds = %5
%104 = load i32, i32* %10
%105 = load i32, i32* %8
%106 = call i32 @symmetrize_index_inside(i32 %104, i32 %105)
%107 = mul nsw i32 %106, 2
%108 = sitofp i32 %107 to double
%109 = fmul double %108, 0x400921FB54442D18
%110 = load i32, i32* %8
%111 = sitofp i32 %110 to double
%112 = fdiv double %109, %111
%113 = fptrunc double %112 to float
store float %113, float* %6
br label %156
114: ; preds = %5
%115 = load i32, i32* %9
%116 = load i32, i32* %7
%117 = call i32 @symmetrize_index_inside(i32 %115, i32 %116)
%118 = sitofp i32 %117 to double
store double %118, double* %12
%119 = load i32, i32* %10
%120 = load i32, i32* %8
%121 = call i32 @symmetrize_index_inside(i32 %119, i32 %120)
%122 = sitofp i32 %121 to double
store double %122, double* %13
%123 = load double, double* %12
%124 = load double, double* %12
%125 = load double, double* %13
%126 = load double, double* %13
%127 = fmul double %125, %126
%128 = call double @llvm.fmuladd.f64(double %123, double %124, double %127)
%129 = fneg double %128
%130 = fptrunc double %129 to float
store float %130, float* %6
br label %156
131: ; preds = %5
%132 = load i32, i32* %9
%133 = load i32, i32* %7
%134 = call i32 @symmetrize_index_inside(i32 %132, i32 %133)
%135 = sitofp i32 %134 to double
store double %135, double* %12
%136 = load i32, i32* %10
%137 = load i32, i32* %8
%138 = call i32 @symmetrize_index_inside(i32 %136, i32 %137)
%139 = sitofp i32 %138 to double
store double %139, double* %13
%140 = load double, double* %12
%141 = load double, double* %13
%142 = call float @hypot(double %140, double %141)
store float %142, float* %6
br label %156
143: ; preds = %5
%144 = load i32, i32* %7
%145 = sitofp i32 %144 to double
%146 = fdiv double %145, 0x401921FB54442D18
%147 = fptrunc double %146 to float
store float %147, float* %6
br label %156
148: ; preds = %5
%149 = load i32, i32* %8
%150 = sitofp i32 %149 to double
%151 = fdiv double %150, 0x401921FB54442D18
%152 = fptrunc double %151 to float
store float %152, float* %6
br label %156
153: ; preds = %5
%154 = load i32, i32* %11
%155 = call i32 @fail(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str, i64 0, i64 0), i32 %154)
br label %156
156: ; preds = %15, %18, %21, %24, %27, %32, %41, %50, %66, %82, %87, %92, %103, %114, %131, %143, %148, %153
%157 = load float, float* %6
ret float %157
}

LLVM IR (-O2):
@.str = [28 x i8] c"unrecognized colonvar \22:%c\22\00"
define float @eval_colonvar(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4) {
switch i32 %4, label %100 [
i32 105, label %6
i32 106, label %8
i32 119, label %10
i32 104, label %12
i32 110, label %14
i32 120, label %17
i32 121, label %24
i32 114, label %31
i32 116, label %43
i32 73, label %55
i32 74, label %58
i32 80, label %61
i32 81, label %69
i32 76, label %77
i32 82, label %86
i32 87, label %92
i32 72, label %96
]
6: ; preds = %5
%7 = sitofp i32 %2 to float
br label %102
8: ; preds = %5
%9 = sitofp i32 %3 to float
br label %102
10: ; preds = %5
%11 = sitofp i32 %0 to float
br label %102
12: ; preds = %5
%13 = sitofp i32 %1 to float
br label %102
14: ; preds = %5
%15 = mul nsw i32 %1, %0
%16 = sitofp i32 %15 to float
br label %102
17: ; preds = %5
%18 = add nsw i32 %0, -1
%19 = sitofp i32 %18 to double
%20 = fdiv double 2.000000e+00, %19
%21 = sitofp i32 %2 to double
%22 = tail call double @llvm.fmuladd.f64(double %20, double %21, double -1.000000e+00)
%23 = fptrunc double %22 to float
br label %102
24: ; preds = %5
%25 = add nsw i32 %1, -1
%26 = sitofp i32 %25 to double
%27 = fdiv double 2.000000e+00, %26
%28 = sitofp i32 %3 to double
%29 = tail call double @llvm.fmuladd.f64(double %27, double %28, double -1.000000e+00)
%30 = fptrunc double %29 to float
br label %102
31: ; preds = %5
%32 = add nsw i32 %1, -1
%33 = sitofp i32 %32 to double
%34 = fdiv double 2.000000e+00, %33
%35 = sitofp i32 %3 to double
%36 = tail call double @llvm.fmuladd.f64(double %34, double %35, double -1.000000e+00)
%37 = add nsw i32 %0, -1
%38 = sitofp i32 %37 to double
%39 = fdiv double 2.000000e+00, %38
%40 = sitofp i32 %2 to double
%41 = tail call double @llvm.fmuladd.f64(double %39, double %40, double -1.000000e+00)
%42 = tail call float @hypot(double %36, double %41)
br label %102
43: ; preds = %5
%44 = add nsw i32 %1, -1
%45 = sitofp i32 %44 to double
%46 = fdiv double 2.000000e+00, %45
%47 = sitofp i32 %3 to double
%48 = tail call double @llvm.fmuladd.f64(double %46, double %47, double -1.000000e+00)
%49 = add nsw i32 %0, -1
%50 = sitofp i32 %49 to double
%51 = fdiv double 2.000000e+00, %50
%52 = sitofp i32 %2 to double
%53 = tail call double @llvm.fmuladd.f64(double %51, double %52, double -1.000000e+00)
%54 = tail call float @atan2(double %48, double %53)
br label %102
55: ; preds = %5
%56 = tail call i32 @symmetrize_index_inside(i32 %2, i32 %0)
%57 = sitofp i32 %56 to float
br label %102
58: ; preds = %5
%59 = tail call i32 @symmetrize_index_inside(i32 %3, i32 %1)
%60 = sitofp i32 %59 to float
br label %102
61: ; preds = %5
%62 = tail call i32 @symmetrize_index_inside(i32 %2, i32 %0)
%63 = shl nsw i32 %62, 1
%64 = sitofp i32 %63 to double
%65 = fmul double %64, 0x400921FB54442D18
%66 = sitofp i32 %0 to double
%67 = fdiv double %65, %66
%68 = fptrunc double %67 to float
br label %102
69: ; preds = %5
%70 = tail call i32 @symmetrize_index_inside(i32 %3, i32 %1)
%71 = shl nsw i32 %70, 1
%72 = sitofp i32 %71 to double
%73 = fmul double %72, 0x400921FB54442D18
%74 = sitofp i32 %1 to double
%75 = fdiv double %73, %74
%76 = fptrunc double %75 to float
br label %102
77: ; preds = %5
%78 = tail call i32 @symmetrize_index_inside(i32 %2, i32 %0)
%79 = sitofp i32 %78 to double
%80 = tail call i32 @symmetrize_index_inside(i32 %3, i32 %1)
%81 = sitofp i32 %80 to double
%82 = fmul double %81, %81
%83 = tail call double @llvm.fmuladd.f64(double %79, double %79, double %82)
%84 = fptrunc double %83 to float
%85 = fneg float %84
br label %102
86: ; preds = %5
%87 = tail call i32 @symmetrize_index_inside(i32 %2, i32 %0)
%88 = sitofp i32 %87 to double
%89 = tail call i32 @symmetrize_index_inside(i32 %3, i32 %1)
%90 = sitofp i32 %89 to double
%91 = tail call float @hypot(double %88, double %90)
br label %102
92: ; preds = %5
%93 = sitofp i32 %0 to double
%94 = fdiv double %93, 0x401921FB54442D18
%95 = fptrunc double %94 to float
br label %102
96: ; preds = %5
%97 = sitofp i32 %1 to double
%98 = fdiv double %97, 0x401921FB54442D18
%99 = fptrunc double %98 to float
br label %102
100: ; preds = %5
%101 = tail call i32 @fail(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str, i64 0, i64 0), i32 %4)
br label %102
102: ; preds = %100, %96, %92, %86, %77, %69, %61, %58, %55, %43, %31, %24, %17, %14, %12, %10, %8, %6
%103 = phi float [ undef, %100 ], [ %99, %96 ], [ %95, %92 ], [ %91, %86 ], [ %85, %77 ], [ %76, %69 ], [ %68, %61 ], [ %60, %58 ], [ %57, %55 ], [ %54, %43 ], [ %42, %31 ], [ %30, %24 ], [ %23, %17 ], [ %16, %14 ], [ %13, %12 ], [ %11, %10 ], [ %9, %8 ], [ %7, %6 ]
ret float %103
}