#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 */
int /*<<< orphan*/ fgets(char *, int, int /*<<< orphan*/);
int /*<<< orphan*/ printf(char *, int);
int /*<<< orphan*/ stdin;
int strlen(char *);
int main() {
  char length[160];
  int i = 0, sum = 0, n;
  fgets(length, 160, stdin);
  n = strlen(length);
  for (i = 0; i < n; i++) {
    if (length[i] == ' ') {
      sum = sum + 1;
    }
    if (length[i] == 'a') {
      sum = sum + 1;
    }
    if (length[i] == 'b') {
      sum = sum + 2;
    }
    if (length[i] == 'c') {
      sum = sum + 3;
    }
    if (length[i] == 'd') {
      sum = sum + 1;
    }
    if (length[i] == 'e') {
      sum = sum + 2;
    }
    if (length[i] == 'f') {
      sum = sum + 3;
    }
    if (length[i] == 'g') {
      sum = sum + 1;
    }
    if (length[i] == 'h') {
      sum = sum + 2;
    }
    if (length[i] == 'i') {
      sum = sum + 3;
    }
    if (length[i] == 'j') {
      sum = sum + 1;
    }
    if (length[i] == 'k') {
      sum = sum + 2;
    }
    if (length[i] == 'l') {
      sum = sum + 3;
    }
    if (length[i] == 'm') {
      sum = sum + 1;
    }
    if (length[i] == 'n') {
      sum = sum + 2;
    }
    if (length[i] == 'o') {
      sum = sum + 3;
    }
    if (length[i] == 'p') {
      sum = sum + 1;
    }
    if (length[i] == 'q') {
      sum = sum + 2;
    }
    if (length[i] == 'r') {
      sum = sum + 3;
    }
    if (length[i] == 's') {
      sum = sum + 4;
    }
    if (length[i] == 't') {
      sum = sum + 1;
    }
    if (length[i] == 'u') {
      sum = sum + 2;
    }
    if (length[i] == 'v') {
      sum = sum + 3;
    }
    if (length[i] == 'w') {
      sum = sum + 1;
    }
    if (length[i] == 'x') {
      sum = sum + 2;
    }
    if (length[i] == 'y') {
      sum = sum + 3;
    }
    if (length[i] == 'z') {
      sum = sum + 4;
    }
  }
  printf("%d", sum);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0xb4(%rbp)
movl   $0x0,-0xb8(%rbp)
lea    -0xb0(%rbp),%rdi
mov    0x2e84(%rip),%rax
mov    (%rax),%edx
mov    $0xa0,%esi
call   1050 <fgets@plt>
lea    -0xb0(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0xbc(%rbp)
movl   $0x0,-0xb4(%rbp)
mov    -0xb4(%rbp),%eax
cmp    -0xbc(%rbp),%eax
jge    15d4 <main+0x4a4>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x20,%eax
jne    11c5 <main+0x95>
mov    -0xb8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x61,%eax
jne    11ec <main+0xbc>
mov    -0xb8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x62,%eax
jne    1213 <main+0xe3>
mov    -0xb8(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x63,%eax
jne    123a <main+0x10a>
mov    -0xb8(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x64,%eax
jne    1261 <main+0x131>
mov    -0xb8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x65,%eax
jne    1288 <main+0x158>
mov    -0xb8(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x66,%eax
jne    12af <main+0x17f>
mov    -0xb8(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x67,%eax
jne    12d6 <main+0x1a6>
mov    -0xb8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x68,%eax
jne    12fd <main+0x1cd>
mov    -0xb8(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x69,%eax
jne    1324 <main+0x1f4>
mov    -0xb8(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6a,%eax
jne    134b <main+0x21b>
mov    -0xb8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6b,%eax
jne    1372 <main+0x242>
mov    -0xb8(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6c,%eax
jne    1399 <main+0x269>
mov    -0xb8(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6d,%eax
jne    13c0 <main+0x290>
mov    -0xb8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6e,%eax
jne    13e7 <main+0x2b7>
mov    -0xb8(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6f,%eax
jne    140e <main+0x2de>
mov    -0xb8(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x70,%eax
jne    1435 <main+0x305>
mov    -0xb8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x71,%eax
jne    145c <main+0x32c>
mov    -0xb8(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x72,%eax
jne    1483 <main+0x353>
mov    -0xb8(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x73,%eax
jne    14aa <main+0x37a>
mov    -0xb8(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x74,%eax
jne    14d1 <main+0x3a1>
mov    -0xb8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x75,%eax
jne    14f8 <main+0x3c8>
mov    -0xb8(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x76,%eax
jne    151f <main+0x3ef>
mov    -0xb8(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x77,%eax
jne    1546 <main+0x416>
mov    -0xb8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x78,%eax
jne    156d <main+0x43d>
mov    -0xb8(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x79,%eax
jne    1594 <main+0x464>
mov    -0xb8(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x7a,%eax
jne    15bb <main+0x48b>
mov    -0xb8(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0xb8(%rbp)
jmp    15c0 <main+0x490>
mov    -0xb4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb4(%rbp)
jmp    118c <main+0x5c>
mov    -0xb8(%rbp),%esi
lea    0xa1f(%rip),%rdi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
sub    $0xa0,%rsp
mov    0x2ea9(%rip),%rax
mov    (%rax),%edx
mov    %rsp,%rbx
mov    %rbx,%rdi
mov    $0xa0,%esi
call   1050 <fgets@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
test   %eax,%eax
jle    1298 <main+0x168>
mov    %eax,%eax
xor    %ecx,%ecx
xor    %esi,%esi
nopw   0x0(%rax,%rax,1)
movzbl (%rsp,%rcx,1),%edx
xor    %edi,%edi
cmp    $0x20,%dl
sete   %dil
add    %esi,%edi
xor    %esi,%esi
cmp    $0x61,%dl
sete   %sil
lea    (%rdi,%rsi,1),%ebx
cmp    $0x62,%dl
lea    0x2(%rsi,%rdi,1),%esi
cmovne %ebx,%esi
lea    0x3(%rsi),%edi
cmp    $0x63,%dl
cmovne %esi,%edi
xor    %esi,%esi
cmp    $0x64,%dl
sete   %sil
lea    (%rdi,%rsi,1),%ebx
cmp    $0x65,%dl
lea    0x2(%rdi,%rsi,1),%esi
cmovne %ebx,%esi
lea    0x3(%rsi),%edi
cmp    $0x66,%dl
cmovne %esi,%edi
xor    %esi,%esi
cmp    $0x67,%dl
sete   %sil
lea    (%rdi,%rsi,1),%ebx
cmp    $0x68,%dl
lea    0x2(%rdi,%rsi,1),%esi
cmovne %ebx,%esi
lea    0x3(%rsi),%edi
cmp    $0x69,%dl
cmovne %esi,%edi
xor    %esi,%esi
cmp    $0x6a,%dl
sete   %sil
lea    (%rdi,%rsi,1),%ebx
cmp    $0x6b,%dl
lea    0x2(%rdi,%rsi,1),%esi
cmovne %ebx,%esi
lea    0x3(%rsi),%edi
cmp    $0x6c,%dl
cmovne %esi,%edi
xor    %esi,%esi
cmp    $0x6d,%dl
sete   %sil
lea    (%rdi,%rsi,1),%ebx
cmp    $0x6e,%dl
lea    0x2(%rdi,%rsi,1),%esi
cmovne %ebx,%esi
lea    0x3(%rsi),%edi
cmp    $0x6f,%dl
cmovne %esi,%edi
xor    %esi,%esi
cmp    $0x70,%dl
sete   %sil
lea    (%rdi,%rsi,1),%ebx
cmp    $0x71,%dl
lea    0x2(%rdi,%rsi,1),%esi
cmovne %ebx,%esi
lea    0x3(%rsi),%edi
cmp    $0x72,%dl
cmovne %esi,%edi
lea    0x4(%rdi),%esi
cmp    $0x73,%dl
cmovne %edi,%esi
xor    %edi,%edi
cmp    $0x74,%dl
sete   %dil
lea    (%rsi,%rdi,1),%ebx
cmp    $0x75,%dl
lea    0x2(%rsi,%rdi,1),%esi
cmovne %ebx,%esi
lea    0x3(%rsi),%edi
cmp    $0x76,%dl
cmovne %esi,%edi
xor    %esi,%esi
cmp    $0x77,%dl
sete   %sil
lea    (%rdi,%rsi,1),%ebx
cmp    $0x78,%dl
lea    0x2(%rdi,%rsi,1),%esi
cmovne %ebx,%esi
lea    0x3(%rsi),%edi
cmp    $0x79,%dl
cmovne %esi,%edi
lea    0x4(%rdi),%esi
cmp    $0x7a,%dl
cmovne %edi,%esi
add    $0x1,%rcx
cmp    %rcx,%rax
jne    1170 <main+0x40>
jmp    129a <main+0x16a>
xor    %esi,%esi
lea    0xd5f(%rip),%rdi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0xa0,%rsp
pop    %rbx
ret

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

LLVM IR (-O2):
@stdin = global i32 0
@.str = [3 x i8] c"%d\00"
define i32 @main() {
%1 = alloca [160 x i8]
%2 = getelementptr inbounds [160 x i8], [160 x i8]* %1, i64 0, i64 0
%3 = load i32, i32* @stdin
%4 = call i32 @fgets(i8* %2, i32 160, i32 %3)
%5 = call i32 @strlen(i8* %2)
%6 = icmp sgt i32 %5, 0
br i1 %6, label %7, label %97
7: ; preds = %0
%8 = zext i32 %5 to i64
br label %9
9: ; preds = %7, %9
%10 = phi i64 [ 0, %7 ], [ %95, %9 ]
%11 = phi i32 [ 0, %7 ], [ %94, %9 ]
%12 = getelementptr inbounds [160 x i8], [160 x i8]* %1, i64 0, i64 %10
%13 = load i8, i8* %12
%14 = icmp eq i8 %13, 32
%15 = zext i1 %14 to i32
%16 = add nsw i32 %11, %15
%17 = icmp eq i8 %13, 97
%18 = zext i1 %17 to i32
%19 = add nsw i32 %16, %18
%20 = icmp eq i8 %13, 98
%21 = add nsw i32 %19, 2
%22 = select i1 %20, i32 %21, i32 %19
%23 = icmp eq i8 %13, 99
%24 = add nsw i32 %22, 3
%25 = select i1 %23, i32 %24, i32 %22
%26 = icmp eq i8 %13, 100
%27 = zext i1 %26 to i32
%28 = add nsw i32 %25, %27
%29 = icmp eq i8 %13, 101
%30 = add nsw i32 %28, 2
%31 = select i1 %29, i32 %30, i32 %28
%32 = icmp eq i8 %13, 102
%33 = add nsw i32 %31, 3
%34 = select i1 %32, i32 %33, i32 %31
%35 = icmp eq i8 %13, 103
%36 = zext i1 %35 to i32
%37 = add nsw i32 %34, %36
%38 = icmp eq i8 %13, 104
%39 = add nsw i32 %37, 2
%40 = select i1 %38, i32 %39, i32 %37
%41 = icmp eq i8 %13, 105
%42 = add nsw i32 %40, 3
%43 = select i1 %41, i32 %42, i32 %40
%44 = icmp eq i8 %13, 106
%45 = zext i1 %44 to i32
%46 = add nsw i32 %43, %45
%47 = icmp eq i8 %13, 107
%48 = add nsw i32 %46, 2
%49 = select i1 %47, i32 %48, i32 %46
%50 = icmp eq i8 %13, 108
%51 = add nsw i32 %49, 3
%52 = select i1 %50, i32 %51, i32 %49
%53 = icmp eq i8 %13, 109
%54 = zext i1 %53 to i32
%55 = add nsw i32 %52, %54
%56 = icmp eq i8 %13, 110
%57 = add nsw i32 %55, 2
%58 = select i1 %56, i32 %57, i32 %55
%59 = icmp eq i8 %13, 111
%60 = add nsw i32 %58, 3
%61 = select i1 %59, i32 %60, i32 %58
%62 = icmp eq i8 %13, 112
%63 = zext i1 %62 to i32
%64 = add nsw i32 %61, %63
%65 = icmp eq i8 %13, 113
%66 = add nsw i32 %64, 2
%67 = select i1 %65, i32 %66, i32 %64
%68 = icmp eq i8 %13, 114
%69 = add nsw i32 %67, 3
%70 = select i1 %68, i32 %69, i32 %67
%71 = icmp eq i8 %13, 115
%72 = add nsw i32 %70, 4
%73 = select i1 %71, i32 %72, i32 %70
%74 = icmp eq i8 %13, 116
%75 = zext i1 %74 to i32
%76 = add nsw i32 %73, %75
%77 = icmp eq i8 %13, 117
%78 = add nsw i32 %76, 2
%79 = select i1 %77, i32 %78, i32 %76
%80 = icmp eq i8 %13, 118
%81 = add nsw i32 %79, 3
%82 = select i1 %80, i32 %81, i32 %79
%83 = icmp eq i8 %13, 119
%84 = zext i1 %83 to i32
%85 = add nsw i32 %82, %84
%86 = icmp eq i8 %13, 120
%87 = add nsw i32 %85, 2
%88 = select i1 %86, i32 %87, i32 %85
%89 = icmp eq i8 %13, 121
%90 = add nsw i32 %88, 3
%91 = select i1 %89, i32 %90, i32 %88
%92 = icmp eq i8 %13, 122
%93 = add nsw i32 %91, 4
%94 = select i1 %92, i32 %93, i32 %91
%95 = add nuw nsw i64 %10, 1
%96 = icmp eq i64 %95, %8
br i1 %96, label %97, label %9
97: ; preds = %9, %0
%98 = phi i32 [ 0, %0 ], [ %94, %9 ]
%99 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32 %98)
ret i32 0
}