const char *get_comp_point(double v) {
  if (v > 360.0 || v < 0.0)
    return "X";
  if (v < 5.63)
    return "N";
  if (v < 16.88)
    return "NbE";
  if (v < 28.13)
    return "NNE";
  if (v < 39.38)
    return "NEbN";
  if (v < 50.63)
    return "NE";
  if (v < 61.88)
    return "NEbE";
  if (v < 73.13)
    return "ENE";
  if (v < 84.38)
    return "EbN";
  if (v < 95.63)
    return "E";
  if (v < 106.88)
    return "EbS";
  if (v < 118.13)
    return "ESE";
  if (v < 129.38)
    return "SEbE";
  if (v < 140.63)
    return "SE";
  if (v < 151.88)
    return "SEbS";
  if (v < 163.13)
    return "SSE";
  if (v < 174.38)
    return "SbE";
  if (v < 185.63)
    return "S";
  if (v < 196.88)
    return "SbW";
  if (v < 208.13)
    return "SSW";
  if (v < 219.38)
    return "SWbS";
  if (v < 230.63)
    return "SW";
  if (v < 241.88)
    return "SWbW";
  if (v < 253.13)
    return "WSW";
  if (v < 264.38)
    return "WbS";
  if (v < 275.63)
    return "W";
  if (v < 286.88)
    return "WbN";
  if (v < 298.13)
    return "WNW";
  if (v < 309.38)
    return "NWbW";
  if (v < 320.63)
    return "NW";
  if (v < 331.88)
    return "NWbN";
  if (v < 343.13)
    return "NNW";
  if (v < 354.38)
    return "NbW";
  return "N";
}


x86 assembly (clang, -O0):
<get_comp_point>:
push   %rbp
mov    %rsp,%rbp
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  0xeea(%rip),%xmm1
ucomisd %xmm1,%xmm0
ja     112e <get_comp_point+0x2e>
xorps  %xmm0,%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    113e <get_comp_point+0x3e>
lea    0xfd3(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xec2(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1161 <get_comp_point+0x61>
lea    0xfbd(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xea7(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1184 <get_comp_point+0x84>
lea    0xf8f(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xe8c(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    11a7 <get_comp_point+0xa7>
lea    0xf70(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xe71(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    11ca <get_comp_point+0xca>
lea    0xf51(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xe56(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    11ed <get_comp_point+0xed>
lea    0xf39(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xe3b(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1210 <get_comp_point+0x110>
lea    0xf10(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xe20(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1233 <get_comp_point+0x133>
lea    0xef2(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xe05(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1256 <get_comp_point+0x156>
lea    0xec6(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xdea(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1279 <get_comp_point+0x179>
lea    0xeae(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xdcf(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    129c <get_comp_point+0x19c>
lea    0xe97(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xdb4(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    12bf <get_comp_point+0x1bf>
lea    0xe6a(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xd99(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    12e2 <get_comp_point+0x1e2>
lea    0xe4b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xd7e(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1305 <get_comp_point+0x205>
lea    0xe25(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xd63(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1328 <get_comp_point+0x228>
lea    0xe0a(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xd48(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    134b <get_comp_point+0x24b>
lea    0xdec(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xd2d(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    136e <get_comp_point+0x26e>
lea    0xdcd(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xd12(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1391 <get_comp_point+0x291>
lea    0xda4(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xcf7(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    13b4 <get_comp_point+0x2b4>
lea    0xd8b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xcdc(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    13d7 <get_comp_point+0x2d7>
lea    0xd6c(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xcc1(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    13fa <get_comp_point+0x2fa>
lea    0xd4d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xca6(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    141d <get_comp_point+0x31d>
lea    0xd27(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xc8b(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1440 <get_comp_point+0x340>
lea    0xd0c(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xc70(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1463 <get_comp_point+0x363>
lea    0xcee(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xc55(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1486 <get_comp_point+0x386>
lea    0xcc2(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xc3a(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    14a9 <get_comp_point+0x3a9>
lea    0xcbc(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xc1f(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    14cc <get_comp_point+0x3cc>
lea    0xc93(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xc04(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    14ef <get_comp_point+0x3ef>
lea    0xc66(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xbe9(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1512 <get_comp_point+0x412>
lea    0xc47(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xbce(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1535 <get_comp_point+0x435>
lea    0xc2f(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xbb3(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1558 <get_comp_point+0x458>
lea    0xc06(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xb98(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    157b <get_comp_point+0x47b>
lea    0xbe8(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
movsd  0xb7d(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    159e <get_comp_point+0x49e>
lea    0xbc9(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15a9 <get_comp_point+0x4a9>
lea    0xb70(%rip),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<get_comp_point>:
ucomisd 0xef8(%rip),%xmm0
lea    0xff9(%rip),%rax
ja     13eb <get_comp_point+0x2eb>
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
ja     13eb <get_comp_point+0x2eb>
movsd  0xedd(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1139 <get_comp_point+0x39>
lea    0xfdd(%rip),%rax
ret
movsd  0xecf(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    114f <get_comp_point+0x4f>
lea    0xfbc(%rip),%rax
ret
movsd  0xec1(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1165 <get_comp_point+0x65>
lea    0xfaa(%rip),%rax
ret
movsd  0xeb3(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    117b <get_comp_point+0x7b>
lea    0xf98(%rip),%rax
ret
movsd  0xea5(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1191 <get_comp_point+0x91>
lea    0xf8d(%rip),%rax
ret
movsd  0xe97(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    11a7 <get_comp_point+0xa7>
lea    0xf71(%rip),%rax
ret
movsd  0xe89(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    11bd <get_comp_point+0xbd>
lea    0xf60(%rip),%rax
ret
movsd  0xe7b(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    11d3 <get_comp_point+0xd3>
lea    0xf41(%rip),%rax
ret
movsd  0xe6d(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    11e9 <get_comp_point+0xe9>
lea    0xf36(%rip),%rax
ret
movsd  0xe5f(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    11ff <get_comp_point+0xff>
lea    0xf2c(%rip),%rax
ret
movsd  0xe51(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1215 <get_comp_point+0x115>
lea    0xf0c(%rip),%rax
ret
movsd  0xe43(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    122b <get_comp_point+0x12b>
lea    0xefa(%rip),%rax
ret
movsd  0xe35(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1241 <get_comp_point+0x141>
lea    0xee1(%rip),%rax
ret
movsd  0xe27(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1257 <get_comp_point+0x157>
lea    0xed3(%rip),%rax
ret
movsd  0xe19(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    126d <get_comp_point+0x16d>
lea    0xec2(%rip),%rax
ret
movsd  0xe0b(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1283 <get_comp_point+0x183>
lea    0xeb0(%rip),%rax
ret
movsd  0xdfd(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1299 <get_comp_point+0x199>
lea    0xe94(%rip),%rax
ret
movsd  0xdef(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    12af <get_comp_point+0x1af>
lea    0xe88(%rip),%rax
ret
movsd  0xde1(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    12c5 <get_comp_point+0x1c5>
lea    0xe76(%rip),%rax
ret
movsd  0xdd3(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    12db <get_comp_point+0x1db>
lea    0xe64(%rip),%rax
ret
movsd  0xdc5(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    12f1 <get_comp_point+0x1f1>
lea    0xe4b(%rip),%rax
ret
movsd  0xdb7(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1307 <get_comp_point+0x207>
lea    0xe3d(%rip),%rax
ret
movsd  0xda9(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    131d <get_comp_point+0x21d>
lea    0xe2c(%rip),%rax
ret
movsd  0xd9b(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1333 <get_comp_point+0x233>
lea    0xe0d(%rip),%rax
ret
movsd  0xd8d(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1349 <get_comp_point+0x249>
lea    0xe14(%rip),%rax
ret
movsd  0xd7f(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    135f <get_comp_point+0x25f>
lea    0xdf8(%rip),%rax
ret
movsd  0xd71(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1375 <get_comp_point+0x275>
lea    0xdd8(%rip),%rax
ret
movsd  0xd63(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    138b <get_comp_point+0x28b>
lea    0xdc6(%rip),%rax
ret
movsd  0xd55(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    13a1 <get_comp_point+0x2a1>
lea    0xdbb(%rip),%rax
ret
movsd  0xd47(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    13b7 <get_comp_point+0x2b7>
lea    0xd9f(%rip),%rax
ret
movsd  0xd39(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    13cd <get_comp_point+0x2cd>
lea    0xd8e(%rip),%rax
ret
movsd  0xd2b(%rip),%xmm1
ucomisd %xmm0,%xmm1
lea    0xd7e(%rip),%rcx
lea    0xd2e(%rip),%rax
cmova  %rcx,%rax
ret

LLVM IR (-O0):
@.str = [2 x i8] c"X\00"
@.str.1 = [2 x i8] c"N\00"
@.str.2 = [4 x i8] c"NbE\00"
@.str.3 = [4 x i8] c"NNE\00"
@.str.4 = [5 x i8] c"NEbN\00"
@.str.5 = [3 x i8] c"NE\00"
@.str.6 = [5 x i8] c"NEbE\00"
@.str.7 = [4 x i8] c"ENE\00"
@.str.8 = [4 x i8] c"EbN\00"
@.str.9 = [2 x i8] c"E\00"
@.str.10 = [4 x i8] c"EbS\00"
@.str.11 = [4 x i8] c"ESE\00"
@.str.12 = [5 x i8] c"SEbE\00"
@.str.13 = [3 x i8] c"SE\00"
@.str.14 = [5 x i8] c"SEbS\00"
@.str.15 = [4 x i8] c"SSE\00"
@.str.16 = [4 x i8] c"SbE\00"
@.str.17 = [2 x i8] c"S\00"
@.str.18 = [4 x i8] c"SbW\00"
@.str.19 = [4 x i8] c"SSW\00"
@.str.20 = [5 x i8] c"SWbS\00"
@.str.21 = [3 x i8] c"SW\00"
@.str.22 = [5 x i8] c"SWbW\00"
@.str.23 = [4 x i8] c"WSW\00"
@.str.24 = [4 x i8] c"WbS\00"
@.str.25 = [2 x i8] c"W\00"
@.str.26 = [4 x i8] c"WbN\00"
@.str.27 = [4 x i8] c"WNW\00"
@.str.28 = [5 x i8] c"NWbW\00"
@.str.29 = [3 x i8] c"NW\00"
@.str.30 = [5 x i8] c"NWbN\00"
@.str.31 = [4 x i8] c"NNW\00"
@.str.32 = [4 x i8] c"NbW\00"
define i8* @get_comp_point(double %0) {
%2 = alloca i8*
%3 = alloca double
store double %0, double* %3
%4 = load double, double* %3
%5 = fcmp ogt double %4, 3.600000e+02
br i1 %5, label %9, label %6
6: ; preds = %1
%7 = load double, double* %3
%8 = fcmp olt double %7, 0.000000e+00
br i1 %8, label %9, label %10
9: ; preds = %6, %1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %2
br label %139
10: ; preds = %6
%11 = load double, double* %3
%12 = fcmp olt double %11, 5.630000e+00
br i1 %12, label %13, label %14
13: ; preds = %10
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8** %2
br label %139
14: ; preds = %10
%15 = load double, double* %3
%16 = fcmp olt double %15, 1.688000e+01
br i1 %16, label %17, label %18
17: ; preds = %14
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), i8** %2
br label %139
18: ; preds = %14
%19 = load double, double* %3
%20 = fcmp olt double %19, 2.813000e+01
br i1 %20, label %21, label %22
21: ; preds = %18
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i8** %2
br label %139
22: ; preds = %18
%23 = load double, double* %3
%24 = fcmp olt double %23, 3.938000e+01
br i1 %24, label %25, label %26
25: ; preds = %22
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0), i8** %2
br label %139
26: ; preds = %22
%27 = load double, double* %3
%28 = fcmp olt double %27, 5.063000e+01
br i1 %28, label %29, label %30
29: ; preds = %26
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i8** %2
br label %139
30: ; preds = %26
%31 = load double, double* %3
%32 = fcmp olt double %31, 6.188000e+01
br i1 %32, label %33, label %34
33: ; preds = %30
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i8** %2
br label %139
34: ; preds = %30
%35 = load double, double* %3
%36 = fcmp olt double %35, 0x40524851EB851EB8
br i1 %36, label %37, label %38
37: ; preds = %34
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0), i8** %2
br label %139
38: ; preds = %34
%39 = load double, double* %3
%40 = fcmp olt double %39, 0x40551851EB851EB8
br i1 %40, label %41, label %42
41: ; preds = %38
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0), i8** %2
br label %139
42: ; preds = %38
%43 = load double, double* %3
%44 = fcmp olt double %43, 0x4057E851EB851EB8
br i1 %44, label %45, label %46
45: ; preds = %42
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i64 0, i64 0), i8** %2
br label %139
46: ; preds = %42
%47 = load double, double* %3
%48 = fcmp olt double %47, 1.068800e+02
br i1 %48, label %49, label %50
49: ; preds = %46
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0), i8** %2
br label %139
50: ; preds = %46
%51 = load double, double* %3
%52 = fcmp olt double %51, 1.181300e+02
br i1 %52, label %53, label %54
53: ; preds = %50
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i8** %2
br label %139
54: ; preds = %50
%55 = load double, double* %3
%56 = fcmp olt double %55, 1.293800e+02
br i1 %56, label %57, label %58
57: ; preds = %54
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.12, i64 0, i64 0), i8** %2
br label %139
58: ; preds = %54
%59 = load double, double* %3
%60 = fcmp olt double %59, 1.406300e+02
br i1 %60, label %61, label %62
61: ; preds = %58
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.13, i64 0, i64 0), i8** %2
br label %139
62: ; preds = %58
%63 = load double, double* %3
%64 = fcmp olt double %63, 1.518800e+02
br i1 %64, label %65, label %66
65: ; preds = %62
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), i8** %2
br label %139
66: ; preds = %62
%67 = load double, double* %3
%68 = fcmp olt double %67, 1.631300e+02
br i1 %68, label %69, label %70
69: ; preds = %66
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0), i8** %2
br label %139
70: ; preds = %66
%71 = load double, double* %3
%72 = fcmp olt double %71, 1.743800e+02
br i1 %72, label %73, label %74
73: ; preds = %70
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.16, i64 0, i64 0), i8** %2
br label %139
74: ; preds = %70
%75 = load double, double* %3
%76 = fcmp olt double %75, 1.856300e+02
br i1 %76, label %77, label %78
77: ; preds = %74
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0), i8** %2
br label %139
78: ; preds = %74
%79 = load double, double* %3
%80 = fcmp olt double %79, 1.968800e+02
br i1 %80, label %81, label %82
81: ; preds = %78
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.18, i64 0, i64 0), i8** %2
br label %139
82: ; preds = %78
%83 = load double, double* %3
%84 = fcmp olt double %83, 2.081300e+02
br i1 %84, label %85, label %86
85: ; preds = %82
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.19, i64 0, i64 0), i8** %2
br label %139
86: ; preds = %82
%87 = load double, double* %3
%88 = fcmp olt double %87, 2.193800e+02
br i1 %88, label %89, label %90
89: ; preds = %86
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.20, i64 0, i64 0), i8** %2
br label %139
90: ; preds = %86
%91 = load double, double* %3
%92 = fcmp olt double %91, 2.306300e+02
br i1 %92, label %93, label %94
93: ; preds = %90
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.21, i64 0, i64 0), i8** %2
br label %139
94: ; preds = %90
%95 = load double, double* %3
%96 = fcmp olt double %95, 2.418800e+02
br i1 %96, label %97, label %98
97: ; preds = %94
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.22, i64 0, i64 0), i8** %2
br label %139
98: ; preds = %94
%99 = load double, double* %3
%100 = fcmp olt double %99, 2.531300e+02
br i1 %100, label %101, label %102
101: ; preds = %98
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0), i8** %2
br label %139
102: ; preds = %98
%103 = load double, double* %3
%104 = fcmp olt double %103, 2.643800e+02
br i1 %104, label %105, label %106
105: ; preds = %102
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), i8** %2
br label %139
106: ; preds = %102
%107 = load double, double* %3
%108 = fcmp olt double %107, 2.756300e+02
br i1 %108, label %109, label %110
109: ; preds = %106
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.25, i64 0, i64 0), i8** %2
br label %139
110: ; preds = %106
%111 = load double, double* %3
%112 = fcmp olt double %111, 2.868800e+02
br i1 %112, label %113, label %114
113: ; preds = %110
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.26, i64 0, i64 0), i8** %2
br label %139
114: ; preds = %110
%115 = load double, double* %3
%116 = fcmp olt double %115, 2.981300e+02
br i1 %116, label %117, label %118
117: ; preds = %114
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.27, i64 0, i64 0), i8** %2
br label %139
118: ; preds = %114
%119 = load double, double* %3
%120 = fcmp olt double %119, 3.093800e+02
br i1 %120, label %121, label %122
121: ; preds = %118
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.28, i64 0, i64 0), i8** %2
br label %139
122: ; preds = %118
%123 = load double, double* %3
%124 = fcmp olt double %123, 3.206300e+02
br i1 %124, label %125, label %126
125: ; preds = %122
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.29, i64 0, i64 0), i8** %2
br label %139
126: ; preds = %122
%127 = load double, double* %3
%128 = fcmp olt double %127, 3.318800e+02
br i1 %128, label %129, label %130
129: ; preds = %126
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.30, i64 0, i64 0), i8** %2
br label %139
130: ; preds = %126
%131 = load double, double* %3
%132 = fcmp olt double %131, 3.431300e+02
br i1 %132, label %133, label %134
133: ; preds = %130
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.31, i64 0, i64 0), i8** %2
br label %139
134: ; preds = %130
%135 = load double, double* %3
%136 = fcmp olt double %135, 3.543800e+02
br i1 %136, label %137, label %138
137: ; preds = %134
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.32, i64 0, i64 0), i8** %2
br label %139
138: ; preds = %134
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8** %2
br label %139
139: ; preds = %138, %137, %133, %129, %125, %121, %117, %113, %109, %105, %101, %97, %93, %89, %85, %81, %77, %73, %69, %65, %61, %57, %53, %49, %45, %41, %37, %33, %29, %25, %21, %17, %13, %9
%140 = load i8*, i8** %2
ret i8* %140
}

LLVM IR (-O2):
@.str = [2 x i8] c"X\00"
@.str.1 = [2 x i8] c"N\00"
@.str.2 = [4 x i8] c"NbE\00"
@.str.3 = [4 x i8] c"NNE\00"
@.str.4 = [5 x i8] c"NEbN\00"
@.str.5 = [3 x i8] c"NE\00"
@.str.6 = [5 x i8] c"NEbE\00"
@.str.7 = [4 x i8] c"ENE\00"
@.str.8 = [4 x i8] c"EbN\00"
@.str.9 = [2 x i8] c"E\00"
@.str.10 = [4 x i8] c"EbS\00"
@.str.11 = [4 x i8] c"ESE\00"
@.str.12 = [5 x i8] c"SEbE\00"
@.str.13 = [3 x i8] c"SE\00"
@.str.14 = [5 x i8] c"SEbS\00"
@.str.15 = [4 x i8] c"SSE\00"
@.str.16 = [4 x i8] c"SbE\00"
@.str.17 = [2 x i8] c"S\00"
@.str.18 = [4 x i8] c"SbW\00"
@.str.19 = [4 x i8] c"SSW\00"
@.str.20 = [5 x i8] c"SWbS\00"
@.str.21 = [3 x i8] c"SW\00"
@.str.22 = [5 x i8] c"SWbW\00"
@.str.23 = [4 x i8] c"WSW\00"
@.str.24 = [4 x i8] c"WbS\00"
@.str.25 = [2 x i8] c"W\00"
@.str.26 = [4 x i8] c"WbN\00"
@.str.27 = [4 x i8] c"WNW\00"
@.str.28 = [5 x i8] c"NWbW\00"
@.str.29 = [3 x i8] c"NW\00"
@.str.30 = [5 x i8] c"NWbN\00"
@.str.31 = [4 x i8] c"NNW\00"
@.str.32 = [4 x i8] c"NbW\00"
define i8* @get_comp_point(double %0) {
%2 = fcmp ogt double %0, 3.600000e+02
%3 = fcmp olt double %0, 0.000000e+00
%4 = or i1 %2, %3
br i1 %4, label %70, label %5
5: ; preds = %1
%6 = fcmp olt double %0, 5.630000e+00
br i1 %6, label %70, label %7
7: ; preds = %5
%8 = fcmp olt double %0, 1.688000e+01
br i1 %8, label %70, label %9
9: ; preds = %7
%10 = fcmp olt double %0, 2.813000e+01
br i1 %10, label %70, label %11
11: ; preds = %9
%12 = fcmp olt double %0, 3.938000e+01
br i1 %12, label %70, label %13
13: ; preds = %11
%14 = fcmp olt double %0, 5.063000e+01
br i1 %14, label %70, label %15
15: ; preds = %13
%16 = fcmp olt double %0, 6.188000e+01
br i1 %16, label %70, label %17
17: ; preds = %15
%18 = fcmp olt double %0, 0x40524851EB851EB8
br i1 %18, label %70, label %19
19: ; preds = %17
%20 = fcmp olt double %0, 0x40551851EB851EB8
br i1 %20, label %70, label %21
21: ; preds = %19
%22 = fcmp olt double %0, 0x4057E851EB851EB8
br i1 %22, label %70, label %23
23: ; preds = %21
%24 = fcmp olt double %0, 1.068800e+02
br i1 %24, label %70, label %25
25: ; preds = %23
%26 = fcmp olt double %0, 1.181300e+02
br i1 %26, label %70, label %27
27: ; preds = %25
%28 = fcmp olt double %0, 1.293800e+02
br i1 %28, label %70, label %29
29: ; preds = %27
%30 = fcmp olt double %0, 1.406300e+02
br i1 %30, label %70, label %31
31: ; preds = %29
%32 = fcmp olt double %0, 1.518800e+02
br i1 %32, label %70, label %33
33: ; preds = %31
%34 = fcmp olt double %0, 1.631300e+02
br i1 %34, label %70, label %35
35: ; preds = %33
%36 = fcmp olt double %0, 1.743800e+02
br i1 %36, label %70, label %37
37: ; preds = %35
%38 = fcmp olt double %0, 1.856300e+02
br i1 %38, label %70, label %39
39: ; preds = %37
%40 = fcmp olt double %0, 1.968800e+02
br i1 %40, label %70, label %41
41: ; preds = %39
%42 = fcmp olt double %0, 2.081300e+02
br i1 %42, label %70, label %43
43: ; preds = %41
%44 = fcmp olt double %0, 2.193800e+02
br i1 %44, label %70, label %45
45: ; preds = %43
%46 = fcmp olt double %0, 2.306300e+02
br i1 %46, label %70, label %47
47: ; preds = %45
%48 = fcmp olt double %0, 2.418800e+02
br i1 %48, label %70, label %49
49: ; preds = %47
%50 = fcmp olt double %0, 2.531300e+02
br i1 %50, label %70, label %51
51: ; preds = %49
%52 = fcmp olt double %0, 2.643800e+02
br i1 %52, label %70, label %53
53: ; preds = %51
%54 = fcmp olt double %0, 2.756300e+02
br i1 %54, label %70, label %55
55: ; preds = %53
%56 = fcmp olt double %0, 2.868800e+02
br i1 %56, label %70, label %57
57: ; preds = %55
%58 = fcmp olt double %0, 2.981300e+02
br i1 %58, label %70, label %59
59: ; preds = %57
%60 = fcmp olt double %0, 3.093800e+02
br i1 %60, label %70, label %61
61: ; preds = %59
%62 = fcmp olt double %0, 3.206300e+02
br i1 %62, label %70, label %63
63: ; preds = %61
%64 = fcmp olt double %0, 3.318800e+02
br i1 %64, label %70, label %65
65: ; preds = %63
%66 = fcmp olt double %0, 3.431300e+02
br i1 %66, label %70, label %67
67: ; preds = %65
%68 = fcmp olt double %0, 3.543800e+02
%69 = select i1 %68, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.32, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0)
br label %70
70: ; preds = %67, %65, %63, %61, %59, %57, %55, %53, %51, %49, %47, %45, %43, %41, %39, %37, %35, %33, %31, %29, %27, %25, %23, %21, %19, %17, %15, %13, %11, %9, %7, %5, %1
%71 = phi i8* [ getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), %1 ], [ getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), %5 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), %7 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), %9 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0), %11 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), %13 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), %15 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0), %17 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0), %19 ], [ getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i64 0, i64 0), %21 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0), %23 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), %25 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.12, i64 0, i64 0), %27 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.13, i64 0, i64 0), %29 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), %31 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0), %33 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.16, i64 0, i64 0), %35 ], [ getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0), %37 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.18, i64 0, i64 0), %39 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.19, i64 0, i64 0), %41 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.20, i64 0, i64 0), %43 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.21, i64 0, i64 0), %45 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.22, i64 0, i64 0), %47 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0), %49 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), %51 ], [ getelementptr inbounds ([2 x i8], [2 x i8]* @.str.25, i64 0, i64 0), %53 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.26, i64 0, i64 0), %55 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.27, i64 0, i64 0), %57 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.28, i64 0, i64 0), %59 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.29, i64 0, i64 0), %61 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.30, i64 0, i64 0), %63 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.31, i64 0, i64 0), %65 ], [ %69, %67 ]
ret i8* %71
}