double protMass(char *protBuff) {
  double mass = 0.0;
  int i = 0;
  while (protBuff[i]) {
    if (protBuff[i] == 'A')
      mass += 71.03711;
    else if (protBuff[i] == 'C')
      mass += 103.00919;
    else if (protBuff[i] == 'D')
      mass += 115.02694;
    else if (protBuff[i] == 'E')
      mass += 129.04259;
    else if (protBuff[i] == 'F')
      mass += 147.06841;
    else if (protBuff[i] == 'G')
      mass += 57.02146;
    else if (protBuff[i] == 'H')
      mass += 137.05891;
    else if (protBuff[i] == 'I')
      mass += 113.08406;
    else if (protBuff[i] == 'K')
      mass += 128.09496;
    else if (protBuff[i] == 'L')
      mass += 113.08406;
    else if (protBuff[i] == 'M')
      mass += 131.04049;
    else if (protBuff[i] == 'N')
      mass += 114.04293;
    else if (protBuff[i] == 'P')
      mass += 97.05276;
    else if (protBuff[i] == 'Q')
      mass += 128.05858;
    else if (protBuff[i] == 'R')
      mass += 156.10111;
    else if (protBuff[i] == 'S')
      mass += 87.03203;
    else if (protBuff[i] == 'T')
      mass += 101.04786;
    else if (protBuff[i] == 'V')
      mass += 99.06841;
    else if (protBuff[i] == 'W')
      mass += 186.07931;
    else if (protBuff[i] == 'Y')
      mass += 163.06333;
    i++;
  }
  return mass;
}


x86 assembly (clang, -O0):
<protMass>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
cmpb   $0x0,(%rax,%rcx,1)
je     1501 <protMass+0x401>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x41,%eax
jne    1155 <protMass+0x55>
movsd  0xf4a(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14f3 <protMass+0x3f3>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    1181 <protMass+0x81>
movsd  0xf16(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14ee <protMass+0x3ee>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x44,%eax
jne    11ad <protMass+0xad>
movsd  0xee2(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14e9 <protMass+0x3e9>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x45,%eax
jne    11d9 <protMass+0xd9>
movsd  0xeae(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14e4 <protMass+0x3e4>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x46,%eax
jne    1205 <protMass+0x105>
movsd  0xe7a(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14df <protMass+0x3df>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x47,%eax
jne    1231 <protMass+0x131>
movsd  0xe46(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14da <protMass+0x3da>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x48,%eax
jne    125d <protMass+0x15d>
movsd  0xe12(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14d5 <protMass+0x3d5>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x49,%eax
jne    1289 <protMass+0x189>
movsd  0xdd6(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14d0 <protMass+0x3d0>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4b,%eax
jne    12b5 <protMass+0x1b5>
movsd  0xdb2(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14cb <protMass+0x3cb>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4c,%eax
jne    12e1 <protMass+0x1e1>
movsd  0xd7e(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14c6 <protMass+0x3c6>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4d,%eax
jne    130d <protMass+0x20d>
movsd  0xd4a(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14c1 <protMass+0x3c1>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4e,%eax
jne    1339 <protMass+0x239>
movsd  0xd16(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14bc <protMass+0x3bc>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x50,%eax
jne    1365 <protMass+0x265>
movsd  0xce2(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14b7 <protMass+0x3b7>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x51,%eax
jne    1391 <protMass+0x291>
movsd  0xcae(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14b2 <protMass+0x3b2>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x52,%eax
jne    13bd <protMass+0x2bd>
movsd  0xc7a(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14ad <protMass+0x3ad>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x53,%eax
jne    13e9 <protMass+0x2e9>
movsd  0xc46(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14a8 <protMass+0x3a8>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x54,%eax
jne    1415 <protMass+0x315>
movsd  0xc12(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14a3 <protMass+0x3a3>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x56,%eax
jne    1441 <protMass+0x341>
movsd  0xbde(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    149e <protMass+0x39e>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x57,%eax
jne    146d <protMass+0x36d>
movsd  0xbaa(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    1499 <protMass+0x399>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x59,%eax
jne    1494 <protMass+0x394>
movsd  0xb76(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    1499 <protMass+0x399>
jmp    149e <protMass+0x39e>
jmp    14a3 <protMass+0x3a3>
jmp    14a8 <protMass+0x3a8>
jmp    14ad <protMass+0x3ad>
jmp    14b2 <protMass+0x3b2>
jmp    14b7 <protMass+0x3b7>
jmp    14bc <protMass+0x3bc>
jmp    14c1 <protMass+0x3c1>
jmp    14c6 <protMass+0x3c6>
jmp    14cb <protMass+0x3cb>
jmp    14d0 <protMass+0x3d0>
jmp    14d5 <protMass+0x3d5>
jmp    14da <protMass+0x3da>
jmp    14df <protMass+0x3df>
jmp    14e4 <protMass+0x3e4>
jmp    14e9 <protMass+0x3e9>
jmp    14ee <protMass+0x3ee>
jmp    14f3 <protMass+0x3f3>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1117 <protMass+0x17>
movsd  -0x10(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<protMass>:
xorpd  %xmm0,%xmm0
lea    0xf8d(%rip),%rax
movsd  0xf5c(%rip),%xmm12
movsd  0xf4b(%rip),%xmm13
movsd  0xf3a(%rip),%xmm14
movsd  0xf22(%rip),%xmm1
movsd  0xf21(%rip),%xmm15
movsd  0xf09(%rip),%xmm3
movsd  0xef9(%rip),%xmm4
movsd  0xee9(%rip),%xmm5
movsd  0xed9(%rip),%xmm6
movsd  0xec9(%rip),%xmm7
movsd  0xeb9(%rip),%xmm2
movsd  0xea8(%rip),%xmm8
movsd  0xe97(%rip),%xmm9
movsd  0xe86(%rip),%xmm10
movsd  0xe75(%rip),%xmm11
jmp    11a0 <protMass+0xa0>
addsd  %xmm11,%xmm0
add    $0x1,%rdi
cs nopw 0x0(%rax,%rax,1)
movzbl (%rdi),%ecx
cmp    $0x59,%rcx
ja     1192 <protMass+0x92>
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
addsd  0xed6(%rip),%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
addsd  0xec0(%rip),%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
addsd  0xeaa(%rip),%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
addsd  0xe94(%rip),%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
addsd  %xmm12,%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
addsd  %xmm13,%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
addsd  %xmm14,%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
addsd  %xmm1,%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
addsd  %xmm15,%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
addsd  %xmm1,%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
addsd  %xmm3,%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
addsd  %xmm4,%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
addsd  %xmm5,%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
addsd  %xmm6,%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
addsd  %xmm7,%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
addsd  %xmm2,%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
addsd  %xmm8,%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
addsd  %xmm9,%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
addsd  %xmm10,%xmm0
add    $0x1,%rdi
jmp    11a0 <protMass+0xa0>
ret

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

LLVM IR (-O2):
define double @protMass(i8* nocapture %0) {
br label %2
2: ; preds = %47, %1
%3 = phi i64 [ %49, %47 ], [ 0, %1 ]
%4 = phi double [ %48, %47 ], [ 0.000000e+00, %1 ]
%5 = getelementptr inbounds i8, i8* %0, i64 %3
%6 = load i8, i8* %5
switch i8 %6, label %47 [
i8 0, label %50
i8 65, label %7
i8 67, label %9
i8 68, label %11
i8 69, label %13
i8 70, label %15
i8 71, label %17
i8 72, label %19
i8 73, label %21
i8 75, label %23
i8 76, label %25
i8 77, label %27
i8 78, label %29
i8 80, label %31
i8 81, label %33
i8 82, label %35
i8 83, label %37
i8 84, label %39
i8 86, label %41
i8 87, label %43
i8 89, label %45
]
7: ; preds = %2
%8 = fadd double %4, 0x4051C260029F16B1
br label %47
9: ; preds = %2
%10 = fadd double %4, 0x4059C09691A75CD1
br label %47
11: ; preds = %2
%12 = fadd double %4, 0x405CC1B9628CBD12
br label %47
13: ; preds = %2
%14 = fadd double %4, 0x4060215CE5B4245F
br label %47
15: ; preds = %2
%16 = fadd double %4, 0x406262306A2B1705
br label %47
17: ; preds = %2
%18 = fadd double %4, 0x404C82BF33871609
br label %47
19: ; preds = %2
%20 = fadd double %4, 0x406121E297396D09
br label %47
21: ; preds = %2
%22 = fadd double %4, 0x405C45613D31B9B6
br label %47
23: ; preds = %2
%24 = fadd double %4, 0x40600309E98DCDB3
br label %47
25: ; preds = %2
%26 = fadd double %4, 0x405C45613D31B9B6
br label %47
27: ; preds = %2
%28 = fadd double %4, 0x4060614BB1AF3A15
br label %47
29: ; preds = %2
%30 = fadd double %4, 0x405C82BF5D78811B
br label %47
31: ; preds = %2
%32 = fadd double %4, 0x405843606B7AA25E
br label %47
33: ; preds = %2
%34 = fadd double %4, 0x406001DFE32A0664
br label %47
35: ; preds = %2
%36 = fadd double %4, 0x4063833C4B09E98E
br label %47
37: ; preds = %2
%38 = fadd double %4, 0x4055C20CC78E9F6B
br label %47
39: ; preds = %2
%40 = fadd double %4, 0x405943102363B257
br label %47
41: ; preds = %2
%42 = fadd double %4, 0x4058C460D4562E0A
br label %47
43: ; preds = %2
%44 = fadd double %4, 0x40674289B52007DD
br label %47
45: ; preds = %2
%46 = fadd double %4, 0x40646206CCA2DB62
br label %47
47: ; preds = %2, %9, %13, %17, %21, %25, %29, %33, %37, %41, %45, %43, %39, %35, %31, %27, %23, %19, %15, %11, %7
%48 = phi double [ %8, %7 ], [ %10, %9 ], [ %12, %11 ], [ %14, %13 ], [ %16, %15 ], [ %18, %17 ], [ %20, %19 ], [ %22, %21 ], [ %24, %23 ], [ %26, %25 ], [ %28, %27 ], [ %30, %29 ], [ %32, %31 ], [ %34, %33 ], [ %36, %35 ], [ %38, %37 ], [ %40, %39 ], [ %42, %41 ], [ %44, %43 ], [ %46, %45 ], [ %4, %2 ]
%49 = add nuw i64 %3, 1
br label %2
50: ; preds = %2
ret double %4
}