#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);
void calulaDec(int tam, char romano[20]) {
  int i, dec = 0;
  for (i = 0; i < tam; i++) {
    if (romano[i] == 'C' && romano[i + 1] == 'M') {
      dec += 900;
      i++;
    } else if (romano[i] == 'C' && romano[i + 1] == 'D') {
      dec += 400;
      i++;
    } else if (romano[i] == 'X' && romano[i + 1] == 'C') {
      dec += 90;
      i++;
    } else if (romano[i] == 'X' && romano[i + 1] == 'L') {
      dec += 40;
      i++;
    } else if (romano[i] == 'I' && romano[i + 1] == 'X') {
      dec += 9;
      i++;
    } else if (romano[i] == 'I' && romano[i + 1] == 'V') {
      dec += 4;
      i++;
    } else if (romano[i] == 'M')
      dec += 1000;
    else if (romano[i] == 'D')
      dec += 500;
    else if (romano[i] == 'C')
      dec += 100;
    else if (romano[i] == 'L')
      dec += 50;
    else if (romano[i] == 'X')
      dec += 10;
    else if (romano[i] == 'V')
      dec += 5;
    else if (romano[i] == 'I')
      dec += 1;
  }
  printf("%d\n", dec);
}


x86 assembly (clang, -O0):
<calulaDec>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1424 <calulaDec+0x314>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    1181 <calulaDec+0x71>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4d,%eax
jne    1181 <calulaDec+0x71>
mov    -0x18(%rbp),%eax
add    $0x384,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1411 <calulaDec+0x301>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    11c9 <calulaDec+0xb9>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x44,%eax
jne    11c9 <calulaDec+0xb9>
mov    -0x18(%rbp),%eax
add    $0x190,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    140c <calulaDec+0x2fc>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x58,%eax
jne    120f <calulaDec+0xff>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    120f <calulaDec+0xff>
mov    -0x18(%rbp),%eax
add    $0x5a,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1407 <calulaDec+0x2f7>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x58,%eax
jne    1255 <calulaDec+0x145>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4c,%eax
jne    1255 <calulaDec+0x145>
mov    -0x18(%rbp),%eax
add    $0x28,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1402 <calulaDec+0x2f2>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x49,%eax
jne    129b <calulaDec+0x18b>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x58,%eax
jne    129b <calulaDec+0x18b>
mov    -0x18(%rbp),%eax
add    $0x9,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    13fd <calulaDec+0x2ed>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x49,%eax
jne    12e1 <calulaDec+0x1d1>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x56,%eax
jne    12e1 <calulaDec+0x1d1>
mov    -0x18(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    13f8 <calulaDec+0x2e8>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4d,%eax
jne    1306 <calulaDec+0x1f6>
mov    -0x18(%rbp),%eax
add    $0x3e8,%eax
mov    %eax,-0x18(%rbp)
jmp    13f3 <calulaDec+0x2e3>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x44,%eax
jne    132b <calulaDec+0x21b>
mov    -0x18(%rbp),%eax
add    $0x1f4,%eax
mov    %eax,-0x18(%rbp)
jmp    13ee <calulaDec+0x2de>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    134e <calulaDec+0x23e>
mov    -0x18(%rbp),%eax
add    $0x64,%eax
mov    %eax,-0x18(%rbp)
jmp    13e9 <calulaDec+0x2d9>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4c,%eax
jne    1371 <calulaDec+0x261>
mov    -0x18(%rbp),%eax
add    $0x32,%eax
mov    %eax,-0x18(%rbp)
jmp    13e4 <calulaDec+0x2d4>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x58,%eax
jne    1394 <calulaDec+0x284>
mov    -0x18(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0x18(%rbp)
jmp    13df <calulaDec+0x2cf>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x56,%eax
jne    13b7 <calulaDec+0x2a7>
mov    -0x18(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0x18(%rbp)
jmp    13da <calulaDec+0x2ca>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x49,%eax
jne    13d5 <calulaDec+0x2c5>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    13da <calulaDec+0x2ca>
jmp    13df <calulaDec+0x2cf>
jmp    13e4 <calulaDec+0x2d4>
jmp    13e9 <calulaDec+0x2d9>
jmp    13ee <calulaDec+0x2de>
jmp    13f3 <calulaDec+0x2e3>
jmp    13f8 <calulaDec+0x2e8>
jmp    13fd <calulaDec+0x2ed>
jmp    1402 <calulaDec+0x2f2>
jmp    1407 <calulaDec+0x2f7>
jmp    140c <calulaDec+0x2fc>
jmp    1411 <calulaDec+0x301>
jmp    1416 <calulaDec+0x306>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    112d <calulaDec+0x1d>
mov    -0x18(%rbp),%esi
lea    0xbd2(%rip),%rdi
call   1030 <printf@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<calulaDec>:
test   %edi,%edi
jle    1200 <calulaDec+0xf0>
mov    %rsi,%r9
xor    %esi,%esi
lea    0xedc(%rip),%r8
xor    %edx,%edx
jmp    113b <calulaDec+0x2b>
add    $0x32,%esi
nopl   0x0(%rax,%rax,1)
add    $0x1,%edx
cmp    %edi,%edx
jge    11f4 <calulaDec+0xe4>
movslq %edx,%rcx
movzbl (%r9,%rcx,1),%eax
add    $0xbd,%al
cmp    $0x15,%al
ja     1130 <calulaDec+0x20>
movzbl %al,%eax
movslq (%r8,%rax,4),%rax
add    %r8,%rax
jmp    *%rax
movzbl 0x1(%r9,%rcx,1),%eax
add    $0x1,%rcx
cmp    $0x44,%al
je     11bb <calulaDec+0xab>
cmp    $0x4d,%al
jne    11c8 <calulaDec+0xb8>
add    $0x384,%esi
mov    %ecx,%edx
jmp    1130 <calulaDec+0x20>
add    $0x1f4,%esi
jmp    1130 <calulaDec+0x20>
movzbl 0x1(%r9,%rcx,1),%eax
add    $0x1,%rcx
cmp    $0x56,%al
je     11d0 <calulaDec+0xc0>
cmp    $0x58,%al
jne    11da <calulaDec+0xca>
add    $0x9,%esi
mov    %ecx,%edx
jmp    1130 <calulaDec+0x20>
add    $0x3e8,%esi
jmp    1130 <calulaDec+0x20>
add    $0x5,%esi
jmp    1130 <calulaDec+0x20>
movzbl 0x1(%r9,%rcx,1),%eax
add    $0x1,%rcx
cmp    $0x4c,%al
je     11e2 <calulaDec+0xd2>
cmp    $0x43,%al
jne    11ec <calulaDec+0xdc>
add    $0x5a,%esi
mov    %ecx,%edx
jmp    1130 <calulaDec+0x20>
add    $0x190,%esi
mov    %ecx,%edx
jmp    1130 <calulaDec+0x20>
add    $0x64,%esi
jmp    1130 <calulaDec+0x20>
add    $0x4,%esi
mov    %ecx,%edx
jmp    1130 <calulaDec+0x20>
add    $0x1,%esi
jmp    1130 <calulaDec+0x20>
add    $0x28,%esi
mov    %ecx,%edx
jmp    1130 <calulaDec+0x20>
add    $0xa,%esi
jmp    1130 <calulaDec+0x20>
lea    0xe5d(%rip),%rdi
jmp    1030 <printf@plt>
xor    %esi,%esi
lea    0xe4f(%rip),%rdi
jmp    1030 <printf@plt>

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

LLVM IR (-O2):
@.str = [4 x i8] c"%d\0A\00"
define void @calulaDec(i32 %0, i8* nocapture %1) {
%3 = icmp sgt i32 %0, 0
br i1 %3, label %4, label %56
4: ; preds = %2, %51
%5 = phi i32 [ %53, %51 ], [ 0, %2 ]
%6 = phi i32 [ %54, %51 ], [ 0, %2 ]
%7 = sext i32 %6 to i64
%8 = getelementptr inbounds i8, i8* %1, i64 %7
%9 = load i8, i8* %8
switch i8 %9, label %51 [
i8 67, label %10
i8 88, label %19
i8 73, label %28
i8 77, label %37
i8 68, label %39
i8 86, label %47
i8 76, label %43
]
10: ; preds = %4
%11 = add nsw i32 %6, 1
%12 = sext i32 %11 to i64
%13 = getelementptr inbounds i8, i8* %1, i64 %12
%14 = load i8, i8* %13
switch i8 %14, label %41 [
i8 77, label %15
i8 68, label %17
]
15: ; preds = %10
%16 = add nsw i32 %5, 900
br label %51
17: ; preds = %10
%18 = add nsw i32 %5, 400
br label %51
19: ; preds = %4
%20 = add nsw i32 %6, 1
%21 = sext i32 %20 to i64
%22 = getelementptr inbounds i8, i8* %1, i64 %21
%23 = load i8, i8* %22
switch i8 %23, label %45 [
i8 67, label %24
i8 76, label %26
]
24: ; preds = %19
%25 = add nsw i32 %5, 90
br label %51
26: ; preds = %19
%27 = add nsw i32 %5, 40
br label %51
28: ; preds = %4
%29 = add nsw i32 %6, 1
%30 = sext i32 %29 to i64
%31 = getelementptr inbounds i8, i8* %1, i64 %30
%32 = load i8, i8* %31
switch i8 %32, label %49 [
i8 88, label %33
i8 86, label %35
]
33: ; preds = %28
%34 = add nsw i32 %5, 9
br label %51
35: ; preds = %28
%36 = add nsw i32 %5, 4
br label %51
37: ; preds = %4
%38 = add nsw i32 %5, 1000
br label %51
39: ; preds = %4
%40 = add nsw i32 %5, 500
br label %51
41: ; preds = %10
%42 = add nsw i32 %5, 100
br label %51
43: ; preds = %4
%44 = add nsw i32 %5, 50
br label %51
45: ; preds = %19
%46 = add nsw i32 %5, 10
br label %51
47: ; preds = %4
%48 = add nsw i32 %5, 5
br label %51
49: ; preds = %28
%50 = add nsw i32 %5, 1
br label %51
51: ; preds = %4, %15, %24, %33, %37, %41, %45, %49, %47, %43, %39, %35, %26, %17
%52 = phi i32 [ %11, %15 ], [ %11, %17 ], [ %20, %24 ], [ %20, %26 ], [ %29, %33 ], [ %29, %35 ], [ %6, %37 ], [ %6, %39 ], [ %6, %41 ], [ %6, %43 ], [ %6, %45 ], [ %6, %47 ], [ %6, %49 ], [ %6, %4 ]
%53 = phi i32 [ %16, %15 ], [ %18, %17 ], [ %25, %24 ], [ %27, %26 ], [ %34, %33 ], [ %36, %35 ], [ %38, %37 ], [ %40, %39 ], [ %42, %41 ], [ %44, %43 ], [ %46, %45 ], [ %48, %47 ], [ %50, %49 ], [ %5, %4 ]
%54 = add nsw i32 %52, 1
%55 = icmp slt i32 %54, %0
br i1 %55, label %4, label %56
56: ; preds = %51, %2
%57 = phi i32 [ 0, %2 ], [ %53, %51 ]
%58 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %57)
ret void
}