char *constellationOut(int *encDibit) {
  static char constellationPoints[49];
  int a, index = 0;
  for (a = 0; a < 98; a = a + 2) {
    if ((*(encDibit + a) == +1) && (*(encDibit + a + 1) == -1))
      constellationPoints[index] = 0;
    else if ((*(encDibit + a) == -1) && (*(encDibit + a + 1) == -1))
      constellationPoints[index] = 1;
    else if ((*(encDibit + a) == +3) && (*(encDibit + a + 1) == -3))
      constellationPoints[index] = 2;
    else if ((*(encDibit + a) == -3) && (*(encDibit + a + 1) == -3))
      constellationPoints[index] = 3;
    else if ((*(encDibit + a) == -3) && (*(encDibit + a + 1) == -1))
      constellationPoints[index] = 4;
    else if ((*(encDibit + a) == +3) && (*(encDibit + a + 1) == -1))
      constellationPoints[index] = 5;
    else if ((*(encDibit + a) == -1) && (*(encDibit + a + 1) == -3))
      constellationPoints[index] = 6;
    else if ((*(encDibit + a) == +1) && (*(encDibit + a + 1) == -3))
      constellationPoints[index] = 7;
    else if ((*(encDibit + a) == -3) && (*(encDibit + a + 1) == +3))
      constellationPoints[index] = 8;
    else if ((*(encDibit + a) == +3) && (*(encDibit + a + 1) == +3))
      constellationPoints[index] = 9;
    else if ((*(encDibit + a) == -1) && (*(encDibit + a + 1) == +1))
      constellationPoints[index] = 10;
    else if ((*(encDibit + a) == +1) && (*(encDibit + a + 1) == +1))
      constellationPoints[index] = 11;
    else if ((*(encDibit + a) == +1) && (*(encDibit + a + 1) == +3))
      constellationPoints[index] = 12;
    else if ((*(encDibit + a) == -1) && (*(encDibit + a + 1) == +3))
      constellationPoints[index] = 13;
    else if ((*(encDibit + a) == +3) && (*(encDibit + a + 1) == +1))
      constellationPoints[index] = 14;
    else if ((*(encDibit + a) == -3) && (*(encDibit + a + 1) == +1))
      constellationPoints[index] = 15;
    index++;
  }
  return constellationPoints;
}


x86 assembly (clang, -O0):
<constellationOut>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0x10(%rbp)
movl   $0x0,-0xc(%rbp)
cmpl   $0x62,-0xc(%rbp)
jge    150d <constellationOut+0x40d>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1159 <constellationOut+0x59>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0xffffffff,0x4(%rax,%rcx,4)
jne    1159 <constellationOut+0x59>
movslq -0x10(%rbp),%rcx
lea    0x2ee0(%rip),%rax
movb   $0x0,(%rax,%rcx,1)
jmp    14f6 <constellationOut+0x3f6>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0xffffffff,(%rax,%rcx,4)
jne    1192 <constellationOut+0x92>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0xffffffff,0x4(%rax,%rcx,4)
jne    1192 <constellationOut+0x92>
movslq -0x10(%rbp),%rcx
lea    0x2ea7(%rip),%rax
movb   $0x1,(%rax,%rcx,1)
jmp    14f1 <constellationOut+0x3f1>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0x3,(%rax,%rcx,4)
jne    11cb <constellationOut+0xcb>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0xfffffffd,0x4(%rax,%rcx,4)
jne    11cb <constellationOut+0xcb>
movslq -0x10(%rbp),%rcx
lea    0x2e6e(%rip),%rax
movb   $0x2,(%rax,%rcx,1)
jmp    14ec <constellationOut+0x3ec>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0xfffffffd,(%rax,%rcx,4)
jne    1204 <constellationOut+0x104>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0xfffffffd,0x4(%rax,%rcx,4)
jne    1204 <constellationOut+0x104>
movslq -0x10(%rbp),%rcx
lea    0x2e35(%rip),%rax
movb   $0x3,(%rax,%rcx,1)
jmp    14e7 <constellationOut+0x3e7>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0xfffffffd,(%rax,%rcx,4)
jne    123d <constellationOut+0x13d>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0xffffffff,0x4(%rax,%rcx,4)
jne    123d <constellationOut+0x13d>
movslq -0x10(%rbp),%rcx
lea    0x2dfc(%rip),%rax
movb   $0x4,(%rax,%rcx,1)
jmp    14e2 <constellationOut+0x3e2>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0x3,(%rax,%rcx,4)
jne    1276 <constellationOut+0x176>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0xffffffff,0x4(%rax,%rcx,4)
jne    1276 <constellationOut+0x176>
movslq -0x10(%rbp),%rcx
lea    0x2dc3(%rip),%rax
movb   $0x5,(%rax,%rcx,1)
jmp    14dd <constellationOut+0x3dd>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0xffffffff,(%rax,%rcx,4)
jne    12af <constellationOut+0x1af>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0xfffffffd,0x4(%rax,%rcx,4)
jne    12af <constellationOut+0x1af>
movslq -0x10(%rbp),%rcx
lea    0x2d8a(%rip),%rax
movb   $0x6,(%rax,%rcx,1)
jmp    14d8 <constellationOut+0x3d8>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    12e8 <constellationOut+0x1e8>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0xfffffffd,0x4(%rax,%rcx,4)
jne    12e8 <constellationOut+0x1e8>
movslq -0x10(%rbp),%rcx
lea    0x2d51(%rip),%rax
movb   $0x7,(%rax,%rcx,1)
jmp    14d3 <constellationOut+0x3d3>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0xfffffffd,(%rax,%rcx,4)
jne    1321 <constellationOut+0x221>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0x3,0x4(%rax,%rcx,4)
jne    1321 <constellationOut+0x221>
movslq -0x10(%rbp),%rcx
lea    0x2d18(%rip),%rax
movb   $0x8,(%rax,%rcx,1)
jmp    14ce <constellationOut+0x3ce>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0x3,(%rax,%rcx,4)
jne    135a <constellationOut+0x25a>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0x3,0x4(%rax,%rcx,4)
jne    135a <constellationOut+0x25a>
movslq -0x10(%rbp),%rcx
lea    0x2cdf(%rip),%rax
movb   $0x9,(%rax,%rcx,1)
jmp    14c9 <constellationOut+0x3c9>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0xffffffff,(%rax,%rcx,4)
jne    1393 <constellationOut+0x293>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0x1,0x4(%rax,%rcx,4)
jne    1393 <constellationOut+0x293>
movslq -0x10(%rbp),%rcx
lea    0x2ca6(%rip),%rax
movb   $0xa,(%rax,%rcx,1)
jmp    14c4 <constellationOut+0x3c4>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    13cc <constellationOut+0x2cc>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0x1,0x4(%rax,%rcx,4)
jne    13cc <constellationOut+0x2cc>
movslq -0x10(%rbp),%rcx
lea    0x2c6d(%rip),%rax
movb   $0xb,(%rax,%rcx,1)
jmp    14bf <constellationOut+0x3bf>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1405 <constellationOut+0x305>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0x3,0x4(%rax,%rcx,4)
jne    1405 <constellationOut+0x305>
movslq -0x10(%rbp),%rcx
lea    0x2c34(%rip),%rax
movb   $0xc,(%rax,%rcx,1)
jmp    14ba <constellationOut+0x3ba>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0xffffffff,(%rax,%rcx,4)
jne    143e <constellationOut+0x33e>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0x3,0x4(%rax,%rcx,4)
jne    143e <constellationOut+0x33e>
movslq -0x10(%rbp),%rcx
lea    0x2bfb(%rip),%rax
movb   $0xd,(%rax,%rcx,1)
jmp    14b5 <constellationOut+0x3b5>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0x3,(%rax,%rcx,4)
jne    1477 <constellationOut+0x377>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0x1,0x4(%rax,%rcx,4)
jne    1477 <constellationOut+0x377>
movslq -0x10(%rbp),%rcx
lea    0x2bc2(%rip),%rax
movb   $0xe,(%rax,%rcx,1)
jmp    14b0 <constellationOut+0x3b0>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0xfffffffd,(%rax,%rcx,4)
jne    14ab <constellationOut+0x3ab>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmpl   $0x1,0x4(%rax,%rcx,4)
jne    14ab <constellationOut+0x3ab>
movslq -0x10(%rbp),%rcx
lea    0x2b89(%rip),%rax
movb   $0xf,(%rax,%rcx,1)
jmp    14b0 <constellationOut+0x3b0>
jmp    14b5 <constellationOut+0x3b5>
jmp    14ba <constellationOut+0x3ba>
jmp    14bf <constellationOut+0x3bf>
jmp    14c4 <constellationOut+0x3c4>
jmp    14c9 <constellationOut+0x3c9>
jmp    14ce <constellationOut+0x3ce>
jmp    14d3 <constellationOut+0x3d3>
jmp    14d8 <constellationOut+0x3d8>
jmp    14dd <constellationOut+0x3dd>
jmp    14e2 <constellationOut+0x3e2>
jmp    14e7 <constellationOut+0x3e7>
jmp    14ec <constellationOut+0x3ec>
jmp    14f1 <constellationOut+0x3f1>
jmp    14f6 <constellationOut+0x3f6>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0xc(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0xc(%rbp)
jmp    1116 <constellationOut+0x16>
lea    0x2b1c(%rip),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<constellationOut>:
push   %r14
push   %rbx
xor    %eax,%eax
lea    0xef4(%rip),%rdx
movabs $0x8030f03040303,%r8
mov    $0x55,%esi
lea    0x2f0e(%rip),%r9
movabs $0xd010a01010106,%r10
movabs $0xc000b00000007,%r11
movabs $0x9020e02050202,%r14
jmp    116e <constellationOut+0x6e>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
shl    $0x3,%ecx
shr    %cl,%rbx
mov    %bl,(%rax,%r9,1)
nopw   0x0(%rax,%rax,1)
add    $0x1,%rax
cmp    $0x31,%rax
je     1201 <constellationOut+0x101>
mov    (%rdi,%rax,8),%ecx
add    $0x3,%ecx
cmp    $0x6,%ecx
ja     1160 <constellationOut+0x60>
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    0x4(%rdi,%rax,8),%ecx
add    $0x3,%ecx
cmp    $0x7,%ecx
jae    1160 <constellationOut+0x60>
bt     %ecx,%esi
mov    %r8,%rbx
jb     1150 <constellationOut+0x50>
jmp    1160 <constellationOut+0x60>
nopl   0x0(%rax,%rax,1)
mov    0x4(%rdi,%rax,8),%ecx
add    $0x3,%ecx
cmp    $0x7,%ecx
jae    1160 <constellationOut+0x60>
bt     %ecx,%esi
mov    %r10,%rbx
jb     1150 <constellationOut+0x50>
jmp    1160 <constellationOut+0x60>
cs nopw 0x0(%rax,%rax,1)
mov    0x4(%rdi,%rax,8),%ecx
add    $0x3,%ecx
cmp    $0x7,%ecx
jae    1160 <constellationOut+0x60>
bt     %ecx,%esi
mov    %r11,%rbx
jb     1150 <constellationOut+0x50>
jmp    1160 <constellationOut+0x60>
nopw   0x0(%rax,%rax,1)
mov    0x4(%rdi,%rax,8),%ecx
add    $0x3,%ecx
cmp    $0x7,%ecx
jae    1160 <constellationOut+0x60>
bt     %ecx,%esi
mov    %r14,%rbx
jb     1150 <constellationOut+0x50>
jmp    1160 <constellationOut+0x60>
lea    0x2e28(%rip),%rax
pop    %rbx
pop    %r14
ret

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

LLVM IR (-O2):
@constellationOut.constellationPoints = internal global [49 x i8] zeroinitializer
define i8* @constellationOut(i32* %0) {
br label %2
2: ; preds = %1, %55
%3 = phi i64 [ 0, %1 ], [ %57, %55 ]
%4 = phi i64 [ 0, %1 ], [ %56, %55 ]
%5 = getelementptr inbounds i32, i32* %0, i64 %3
%6 = load i32, i32* %5
switch i32 %6, label %55 [
i32 1, label %7
i32 -1, label %12
i32 3, label %17
i32 -3, label %22
]
7: ; preds = %2
%8 = getelementptr inbounds i32, i32* %5, i64 1
%9 = load i32, i32* %8
%10 = add i32 %9, 3
%11 = icmp ult i32 %10, 7
br i1 %11, label %27, label %55
12: ; preds = %2
%13 = getelementptr inbounds i32, i32* %5, i64 1
%14 = load i32, i32* %13
%15 = add i32 %14, 3
%16 = icmp ult i32 %15, 7
br i1 %16, label %32, label %55
17: ; preds = %2
%18 = getelementptr inbounds i32, i32* %5, i64 1
%19 = load i32, i32* %18
%20 = add i32 %19, 3
%21 = icmp ult i32 %20, 7
br i1 %21, label %37, label %55
22: ; preds = %2
%23 = getelementptr inbounds i32, i32* %5, i64 1
%24 = load i32, i32* %23
%25 = add i32 %24, 3
%26 = icmp ult i32 %25, 7
br i1 %26, label %42, label %55
27: ; preds = %7
%28 = trunc i32 %10 to i8
%29 = lshr i8 85, %28
%30 = and i8 %29, 1
%31 = icmp eq i8 %30, 0
br i1 %31, label %55, label %47
32: ; preds = %12
%33 = trunc i32 %15 to i8
%34 = lshr i8 85, %33
%35 = and i8 %34, 1
%36 = icmp eq i8 %35, 0
br i1 %36, label %55, label %47
37: ; preds = %17
%38 = trunc i32 %20 to i8
%39 = lshr i8 85, %38
%40 = and i8 %39, 1
%41 = icmp eq i8 %40, 0
br i1 %41, label %55, label %47
42: ; preds = %22
%43 = trunc i32 %25 to i8
%44 = lshr i8 85, %43
%45 = and i8 %44, 1
%46 = icmp eq i8 %45, 0
br i1 %46, label %55, label %47
47: ; preds = %42, %37, %32, %27
%48 = phi i32 [ %10, %27 ], [ %15, %32 ], [ %20, %37 ], [ %25, %42 ]
%49 = phi i56 [ 3377746965168135, %27 ], [ 3660317175382278, %32 ], [ 2535533977076226, %37 ], [ 2255162823672579, %42 ]
%50 = zext i32 %48 to i56
%51 = shl nuw nsw i56 %50, 3
%52 = lshr i56 %49, %51
%53 = trunc i56 %52 to i8
%54 = getelementptr inbounds [49 x i8], [49 x i8]* @constellationOut.constellationPoints, i64 0, i64 %4
store i8 %53, i8* %54
br label %55
55: ; preds = %42, %22, %37, %17, %32, %12, %27, %7, %47, %2
%56 = add nuw nsw i64 %4, 1
%57 = add nuw nsw i64 %3, 2
%58 = icmp eq i64 %56, 49
br i1 %58, label %59, label %2
59: ; preds = %55
ret i8* getelementptr inbounds ([49 x i8], [49 x i8]* @constellationOut.constellationPoints, i64 0, i64 0)
}