#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*/ printf(char *, int);
int /*<<< orphan*/ scanf(char *, char *);
int strlen(char *);
int main() {
  char num[10];
  int l, i, sum = 0;
  scanf("%s", num);
  l = strlen(num);
  for (i = 0; i < l; i++) {
    if (num[i] == 'C' && num[i - 1] != 'I')
      sum += 100;
    if (num[i] == 'C' && num[i - 1] == 'I')
      sum += 99;
    if (num[i] == 'L' && num[i - 1] != 'I')
      sum += 50;
    if (num[i] == 'L' && num[i - 1] == 'I')
      sum += 49;
    if (num[i] == 'X' && num[i - 1] != 'I')
      sum += 10;
    if (num[i] == 'X' && num[i - 1] == 'I')
      sum += 9;
    if (num[i] == 'V' && num[i - 1] != 'I')
      sum += 5;
    if (num[i] == 'V' && num[i - 1] == 'I')
      sum += 4;
    if (num[i] == 'I' && num[i - 1] != 'I' && num[i + 1] == 0)
      sum += 1;
    if (num[i] == 'I' && num[i - 1] != 'I' && num[i + 1] == 'I' &&
        num[i + 2] == 0)
      sum += 2;
    if (num[i] == 'I' && num[i - 1] != 'I' && num[i + 1] == 'I' &&
        num[i + 2] == 'I' && num[i + 3] == 0)
      sum += 3;
  }
  printf("%d \n\n", sum);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x1c(%rbp)
lea    -0xe(%rbp),%rsi
lea    0xeaf(%rip),%rdi
call   1050 <scanf@plt>
lea    -0xe(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1427 <main+0x2f7>
movslq -0x18(%rbp),%rax
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x43,%eax
jne    11a6 <main+0x76>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x49,%eax
je     11a6 <main+0x76>
mov    -0x1c(%rbp),%eax
add    $0x64,%eax
mov    %eax,-0x1c(%rbp)
movslq -0x18(%rbp),%rax
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x43,%eax
jne    11d7 <main+0xa7>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x49,%eax
jne    11d7 <main+0xa7>
mov    -0x1c(%rbp),%eax
add    $0x63,%eax
mov    %eax,-0x1c(%rbp)
movslq -0x18(%rbp),%rax
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x4c,%eax
jne    1208 <main+0xd8>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x49,%eax
je     1208 <main+0xd8>
mov    -0x1c(%rbp),%eax
add    $0x32,%eax
mov    %eax,-0x1c(%rbp)
movslq -0x18(%rbp),%rax
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x4c,%eax
jne    1239 <main+0x109>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x49,%eax
jne    1239 <main+0x109>
mov    -0x1c(%rbp),%eax
add    $0x31,%eax
mov    %eax,-0x1c(%rbp)
movslq -0x18(%rbp),%rax
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x58,%eax
jne    126a <main+0x13a>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x49,%eax
je     126a <main+0x13a>
mov    -0x1c(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0x1c(%rbp)
movslq -0x18(%rbp),%rax
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x58,%eax
jne    129b <main+0x16b>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x49,%eax
jne    129b <main+0x16b>
mov    -0x1c(%rbp),%eax
add    $0x9,%eax
mov    %eax,-0x1c(%rbp)
movslq -0x18(%rbp),%rax
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x56,%eax
jne    12cc <main+0x19c>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x49,%eax
je     12cc <main+0x19c>
mov    -0x1c(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0x1c(%rbp)
movslq -0x18(%rbp),%rax
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x56,%eax
jne    12fd <main+0x1cd>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x49,%eax
jne    12fd <main+0x1cd>
mov    -0x1c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x1c(%rbp)
movslq -0x18(%rbp),%rax
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x49,%eax
jne    1344 <main+0x214>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x49,%eax
je     1344 <main+0x214>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x0,%eax
jne    1344 <main+0x214>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
movslq -0x18(%rbp),%rax
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x49,%eax
jne    13a1 <main+0x271>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x49,%eax
je     13a1 <main+0x271>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x49,%eax
jne    13a1 <main+0x271>
mov    -0x18(%rbp),%eax
add    $0x2,%eax
cltq
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x0,%eax
jne    13a1 <main+0x271>
mov    -0x1c(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x1c(%rbp)
movslq -0x18(%rbp),%rax
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x49,%eax
jne    1414 <main+0x2e4>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x49,%eax
je     1414 <main+0x2e4>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x49,%eax
jne    1414 <main+0x2e4>
mov    -0x18(%rbp),%eax
add    $0x2,%eax
cltq
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x49,%eax
jne    1414 <main+0x2e4>
mov    -0x18(%rbp),%eax
add    $0x3,%eax
cltq
movsbl -0xe(%rbp,%rax,1),%eax
cmp    $0x0,%eax
jne    1414 <main+0x2e4>
mov    -0x1c(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x1c(%rbp)
jmp    1419 <main+0x2e9>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1169 <main+0x39>
mov    -0x1c(%rbp),%esi
lea    0xbd2(%rip),%rdi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
sub    $0x10,%rsp
lea    0xf1c(%rip),%rdi
lea    0x6(%rsp),%rbx
mov    %rbx,%rsi
call   1050 <scanf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
test   %eax,%eax
jle    1223 <main+0xf3>
mov    %eax,%eax
xor    %ecx,%ecx
lea    0xe9c(%rip),%rdx
xor    %esi,%esi
jmp    118d <main+0x5d>
xor    %edi,%edi
cmpb   $0x49,0x5(%rsp,%rcx,1)
sete   %dil
sub    %edi,%esi
add    $0x5,%esi
nopl   0x0(%rax,%rax,1)
add    $0x1,%rcx
cmp    %rcx,%rax
je     1225 <main+0xf5>
movzbl 0x6(%rsp,%rcx,1),%ebx
add    $0xbd,%bl
cmp    $0x15,%bl
ja     1180 <main+0x50>
movzbl %bl,%edi
movslq (%rdx,%rdi,4),%rdi
add    %rdx,%rdi
jmp    *%rdi
xor    %edi,%edi
cmpb   $0x49,0x5(%rsp,%rcx,1)
sete   %dil
sub    %edi,%esi
add    $0x64,%esi
jmp    1180 <main+0x50>
cmpb   $0x49,0x5(%rsp,%rcx,1)
je     1180 <main+0x50>
movzbl 0x7(%rsp,%rcx,1),%ebx
cmp    $0x1,%bl
adc    $0x0,%esi
cmp    $0x49,%bl
jne    11dc <main+0xac>
lea    0x2(%rsi),%edi
cmpb   $0x0,0x8(%rsp,%rcx,1)
cmovne %esi,%edi
mov    %edi,%esi
cmpb   $0x49,0x7(%rsp,%rcx,1)
jne    1180 <main+0x50>
cmpb   $0x49,0x8(%rsp,%rcx,1)
jne    1180 <main+0x50>
lea    0x3(%rsi),%edi
cmpb   $0x0,0x9(%rsp,%rcx,1)
cmovne %esi,%edi
mov    %edi,%esi
jmp    1180 <main+0x50>
xor    %edi,%edi
cmpb   $0x49,0x5(%rsp,%rcx,1)
sete   %dil
sub    %edi,%esi
add    $0x32,%esi
jmp    1180 <main+0x50>
xor    %edi,%edi
cmpb   $0x49,0x5(%rsp,%rcx,1)
sete   %dil
sub    %edi,%esi
add    $0xa,%esi
jmp    1180 <main+0x50>
xor    %esi,%esi
lea    0xe2f(%rip),%rdi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbx
ret

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

LLVM IR (-O2):
@.str = [3 x i8] c"%s\00"
@.str.1 = [6 x i8] c"%d \0A\0A\00"
define i32 @main() {
%1 = alloca [10 x i8]
%2 = getelementptr inbounds [10 x i8], [10 x i8]* %1, i64 0, i64 0
%3 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %2)
%4 = call i32 @strlen(i8* %2)
%5 = icmp sgt i32 %4, 0
br i1 %5, label %6, label %89
6: ; preds = %0
%7 = zext i32 %4 to i64
br label %8
8: ; preds = %6, %85
%9 = phi i64 [ 0, %6 ], [ %87, %85 ]
%10 = phi i32 [ 0, %6 ], [ %86, %85 ]
%11 = getelementptr inbounds [10 x i8], [10 x i8]* %1, i64 0, i64 %9
%12 = load i8, i8* %11
switch i8 %12, label %85 [
i8 67, label %13
i8 76, label %20
i8 88, label %27
i8 86, label %34
i8 73, label %41
]
13: ; preds = %8
%14 = add nsw i64 %9, -1
%15 = getelementptr inbounds [10 x i8], [10 x i8]* %1, i64 0, i64 %14
%16 = load i8, i8* %15
%17 = icmp eq i8 %16, 73
%18 = select i1 %17, i32 99, i32 100
%19 = add nsw i32 %10, %18
br label %85
20: ; preds = %8
%21 = add nsw i64 %9, -1
%22 = getelementptr inbounds [10 x i8], [10 x i8]* %1, i64 0, i64 %21
%23 = load i8, i8* %22
%24 = icmp eq i8 %23, 73
%25 = select i1 %24, i32 49, i32 50
%26 = add nsw i32 %10, %25
br label %85
27: ; preds = %8
%28 = add nsw i64 %9, -1
%29 = getelementptr inbounds [10 x i8], [10 x i8]* %1, i64 0, i64 %28
%30 = load i8, i8* %29
%31 = icmp eq i8 %30, 73
%32 = select i1 %31, i32 9, i32 10
%33 = add nsw i32 %10, %32
br label %85
34: ; preds = %8
%35 = add nsw i64 %9, -1
%36 = getelementptr inbounds [10 x i8], [10 x i8]* %1, i64 0, i64 %35
%37 = load i8, i8* %36
%38 = icmp eq i8 %37, 73
%39 = select i1 %38, i32 4, i32 5
%40 = add nsw i32 %10, %39
br label %85
41: ; preds = %8
%42 = add nsw i64 %9, -1
%43 = getelementptr inbounds [10 x i8], [10 x i8]* %1, i64 0, i64 %42
%44 = load i8, i8* %43
%45 = icmp eq i8 %44, 73
br i1 %45, label %85, label %46
46: ; preds = %41
%47 = add nuw nsw i64 %9, 1
%48 = getelementptr inbounds [10 x i8], [10 x i8]* %1, i64 0, i64 %47
%49 = load i8, i8* %48
%50 = icmp eq i8 %49, 0
%51 = zext i1 %50 to i32
%52 = add nsw i32 %10, %51
%53 = add nuw nsw i64 %9, 1
%54 = getelementptr inbounds [10 x i8], [10 x i8]* %1, i64 0, i64 %53
%55 = load i8, i8* %54
%56 = icmp eq i8 %55, 73
br i1 %56, label %57, label %65
57: ; preds = %46
%58 = add nuw i64 %9, 2
%59 = and i64 %58, 4294967295
%60 = getelementptr inbounds [10 x i8], [10 x i8]* %1, i64 0, i64 %59
%61 = load i8, i8* %60
%62 = icmp eq i8 %61, 0
%63 = add nsw i32 %52, 2
%64 = select i1 %62, i32 %63, i32 %52
br label %65
65: ; preds = %46, %57
%66 = phi i32 [ %64, %57 ], [ %52, %46 ]
%67 = add nuw nsw i64 %9, 1
%68 = getelementptr inbounds [10 x i8], [10 x i8]* %1, i64 0, i64 %67
%69 = load i8, i8* %68
%70 = icmp eq i8 %69, 73
br i1 %70, label %71, label %85
71: ; preds = %65
%72 = add nuw i64 %9, 2
%73 = and i64 %72, 4294967295
%74 = getelementptr inbounds [10 x i8], [10 x i8]* %1, i64 0, i64 %73
%75 = load i8, i8* %74
%76 = icmp eq i8 %75, 73
br i1 %76, label %77, label %85
77: ; preds = %71
%78 = add nuw i64 %9, 3
%79 = and i64 %78, 4294967295
%80 = getelementptr inbounds [10 x i8], [10 x i8]* %1, i64 0, i64 %79
%81 = load i8, i8* %80
%82 = icmp eq i8 %81, 0
%83 = add nsw i32 %66, 3
%84 = select i1 %82, i32 %83, i32 %66
br label %85
85: ; preds = %41, %8, %34, %20, %13, %27, %77, %65, %71
%86 = phi i32 [ %66, %71 ], [ %66, %65 ], [ %84, %77 ], [ %40, %34 ], [ %19, %13 ], [ %26, %20 ], [ %33, %27 ], [ %10, %8 ], [ %10, %41 ]
%87 = add nuw nsw i64 %9, 1
%88 = icmp eq i64 %87, %7
br i1 %88, label %89, label %8
89: ; preds = %85, %0
%90 = phi i32 [ 0, %0 ], [ %86, %85 ]
%91 = call i32 @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i32 %90)
ret i32 0
}