int Module_Type(char *ModStr) {
  int ModType = -1;
  char DAC_S[4] = {"DAC"};
  char GPO_S[4] = {"GPO"};
  char TIM_S[4] = {"TIM"};
  char LCD_S[4] = {"LCD"};
  char BUZ_S[4] = {"BUZ"};
  char SER_S[4] = {"SER"};
  char TEM_S[4] = {"TEM"};
  char ADC_S[4] = {"ADC"};
  char GPI_S[4] = {"GPI"};
  if (*ModStr == DAC_S[0] && *(ModStr + 1) == DAC_S[1] &&
      *(ModStr + 2) == DAC_S[2])
    ModType = 2;
  if (*ModStr == GPO_S[0] && *(ModStr + 1) == GPO_S[1] &&
      *(ModStr + 2) == GPO_S[2])
    ModType = 3;
  if (*ModStr == TIM_S[0] && *(ModStr + 1) == TIM_S[1] &&
      *(ModStr + 2) == TIM_S[2])
    ModType = 4;
  if (*ModStr == LCD_S[0] && *(ModStr + 1) == LCD_S[1] &&
      *(ModStr + 2) == LCD_S[2])
    ModType = 5;
  if (*ModStr == BUZ_S[0] && *(ModStr + 1) == BUZ_S[1] &&
      *(ModStr + 2) == BUZ_S[2])
    ModType = 6;
  if (*ModStr == SER_S[0] && *(ModStr + 1) == SER_S[1] &&
      *(ModStr + 2) == SER_S[2])
    ModType = 7;
  if (*ModStr == TEM_S[0] && *(ModStr + 1) == TEM_S[1] &&
      *(ModStr + 2) == TEM_S[2])
    ModType = 10;
  if (*ModStr == ADC_S[0] && *(ModStr + 1) == ADC_S[1] &&
      *(ModStr + 2) == ADC_S[2])
    ModType = 8;
  if (*ModStr == GPI_S[0] && *(ModStr + 1) == GPI_S[1] &&
      *(ModStr + 2) == GPI_S[2])
    ModType = 9;
  return ModType;
}


x86 assembly (clang, -O0):
<Module_Type>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
movl   $0xffffffff,-0xc(%rbp)
mov    0xeeb(%rip),%eax
mov    %eax,-0x10(%rbp)
mov    0xee6(%rip),%eax
mov    %eax,-0x14(%rbp)
mov    0xee1(%rip),%eax
mov    %eax,-0x18(%rbp)
mov    0xedc(%rip),%eax
mov    %eax,-0x1c(%rbp)
mov    0xed7(%rip),%eax
mov    %eax,-0x20(%rbp)
mov    0xed2(%rip),%eax
mov    %eax,-0x24(%rbp)
mov    0xecd(%rip),%eax
mov    %eax,-0x28(%rbp)
mov    0xec8(%rip),%eax
mov    %eax,-0x2c(%rbp)
mov    0xec3(%rip),%eax
mov    %eax,-0x30(%rbp)
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x10(%rbp),%ecx
cmp    %ecx,%eax
jne    11a2 <Module_Type+0xa2>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
movsbl -0xf(%rbp),%ecx
cmp    %ecx,%eax
jne    11a2 <Module_Type+0xa2>
mov    -0x8(%rbp),%rax
movsbl 0x2(%rax),%eax
movsbl -0xe(%rbp),%ecx
cmp    %ecx,%eax
jne    11a2 <Module_Type+0xa2>
movl   $0x2,-0xc(%rbp)
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x14(%rbp),%ecx
cmp    %ecx,%eax
jne    11e4 <Module_Type+0xe4>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
movsbl -0x13(%rbp),%ecx
cmp    %ecx,%eax
jne    11e4 <Module_Type+0xe4>
mov    -0x8(%rbp),%rax
movsbl 0x2(%rax),%eax
movsbl -0x12(%rbp),%ecx
cmp    %ecx,%eax
jne    11e4 <Module_Type+0xe4>
movl   $0x3,-0xc(%rbp)
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x18(%rbp),%ecx
cmp    %ecx,%eax
jne    1226 <Module_Type+0x126>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
movsbl -0x17(%rbp),%ecx
cmp    %ecx,%eax
jne    1226 <Module_Type+0x126>
mov    -0x8(%rbp),%rax
movsbl 0x2(%rax),%eax
movsbl -0x16(%rbp),%ecx
cmp    %ecx,%eax
jne    1226 <Module_Type+0x126>
movl   $0x4,-0xc(%rbp)
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x1c(%rbp),%ecx
cmp    %ecx,%eax
jne    1268 <Module_Type+0x168>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
movsbl -0x1b(%rbp),%ecx
cmp    %ecx,%eax
jne    1268 <Module_Type+0x168>
mov    -0x8(%rbp),%rax
movsbl 0x2(%rax),%eax
movsbl -0x1a(%rbp),%ecx
cmp    %ecx,%eax
jne    1268 <Module_Type+0x168>
movl   $0x5,-0xc(%rbp)
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x20(%rbp),%ecx
cmp    %ecx,%eax
jne    12aa <Module_Type+0x1aa>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
movsbl -0x1f(%rbp),%ecx
cmp    %ecx,%eax
jne    12aa <Module_Type+0x1aa>
mov    -0x8(%rbp),%rax
movsbl 0x2(%rax),%eax
movsbl -0x1e(%rbp),%ecx
cmp    %ecx,%eax
jne    12aa <Module_Type+0x1aa>
movl   $0x6,-0xc(%rbp)
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x24(%rbp),%ecx
cmp    %ecx,%eax
jne    12ec <Module_Type+0x1ec>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
movsbl -0x23(%rbp),%ecx
cmp    %ecx,%eax
jne    12ec <Module_Type+0x1ec>
mov    -0x8(%rbp),%rax
movsbl 0x2(%rax),%eax
movsbl -0x22(%rbp),%ecx
cmp    %ecx,%eax
jne    12ec <Module_Type+0x1ec>
movl   $0x7,-0xc(%rbp)
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x28(%rbp),%ecx
cmp    %ecx,%eax
jne    132e <Module_Type+0x22e>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
movsbl -0x27(%rbp),%ecx
cmp    %ecx,%eax
jne    132e <Module_Type+0x22e>
mov    -0x8(%rbp),%rax
movsbl 0x2(%rax),%eax
movsbl -0x26(%rbp),%ecx
cmp    %ecx,%eax
jne    132e <Module_Type+0x22e>
movl   $0xa,-0xc(%rbp)
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x2c(%rbp),%ecx
cmp    %ecx,%eax
jne    1370 <Module_Type+0x270>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
movsbl -0x2b(%rbp),%ecx
cmp    %ecx,%eax
jne    1370 <Module_Type+0x270>
mov    -0x8(%rbp),%rax
movsbl 0x2(%rax),%eax
movsbl -0x2a(%rbp),%ecx
cmp    %ecx,%eax
jne    1370 <Module_Type+0x270>
movl   $0x8,-0xc(%rbp)
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x30(%rbp),%ecx
cmp    %ecx,%eax
jne    13b2 <Module_Type+0x2b2>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
movsbl -0x2f(%rbp),%ecx
cmp    %ecx,%eax
jne    13b2 <Module_Type+0x2b2>
mov    -0x8(%rbp),%rax
movsbl 0x2(%rax),%eax
movsbl -0x2e(%rbp),%ecx
cmp    %ecx,%eax
jne    13b2 <Module_Type+0x2b2>
movl   $0x9,-0xc(%rbp)
mov    -0xc(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<Module_Type>:
mov    (%rdi),%cl
mov    $0xffffffff,%eax
add    $0xbf,%cl
cmp    $0x13,%cl
ja     119e <Module_Type+0x9e>
movzbl %cl,%ecx
lea    0xee3(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
cmpb   $0x44,0x1(%rdi)
jne    119e <Module_Type+0x9e>
xor    %eax,%eax
cmpb   $0x43,0x2(%rdi)
sete   %al
lea    (%rax,%rax,8),%eax
add    $0xffffffff,%eax
ret
cmpb   $0x55,0x1(%rdi)
jne    119e <Module_Type+0x9e>
cmpb   $0x5a,0x2(%rdi)
mov    $0x6,%ecx
jmp    11d6 <Module_Type+0xd6>
cmpb   $0x45,0x1(%rdi)
jne    119e <Module_Type+0x9e>
xor    %eax,%eax
cmpb   $0x52,0x2(%rdi)
sete   %al
lea    -0x1(,%rax,8),%eax
ret
cmpb   $0x41,0x1(%rdi)
jne    119e <Module_Type+0x9e>
xor    %eax,%eax
cmpb   $0x43,0x2(%rdi)
sete   %al
lea    (%rax,%rax,2),%eax
add    $0xffffffff,%eax
ret
cmpb   $0x50,0x1(%rdi)
jne    119e <Module_Type+0x9e>
mov    0x2(%rdi),%al
xor    %ecx,%ecx
cmp    $0x4f,%al
sete   %cl
lea    -0x1(,%rcx,4),%ecx
cmp    $0x49,%al
mov    $0x9,%eax
cmovne %ecx,%eax
ret
cmpb   $0x43,0x1(%rdi)
jne    119e <Module_Type+0x9e>
cmpb   $0x44,0x2(%rdi)
mov    $0x5,%ecx
jmp    11d6 <Module_Type+0xd6>
mov    0x1(%rdi),%cl
cmp    $0x45,%cl
je     11cd <Module_Type+0xcd>
cmp    $0x49,%cl
jne    119e <Module_Type+0x9e>
xor    %eax,%eax
cmpb   $0x4d,0x2(%rdi)
sete   %al
lea    (%rax,%rax,4),%eax
add    $0xffffffff,%eax
ret
cmpb   $0x4d,0x2(%rdi)
mov    $0xa,%ecx
mov    $0xffffffff,%eax
cmove  %ecx,%eax
ret

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

LLVM IR (-O2):
define i32 @Module_Type(i8* %0) {
%2 = load i8, i8* %0
switch i8 %2, label %72 [
i8 68, label %3
i8 71, label %12
i8 84, label %16
i8 76, label %24
i8 66, label %33
i8 83, label %42
i8 65, label %56
]
3: ; preds = %1
%4 = getelementptr inbounds i8, i8* %0, i64 1
%5 = load i8, i8* %4
%6 = icmp eq i8 %5, 65
br i1 %6, label %7, label %72
7: ; preds = %3
%8 = getelementptr inbounds i8, i8* %0, i64 2
%9 = load i8, i8* %8
%10 = icmp eq i8 %9, 67
%11 = select i1 %10, i32 2, i32 -1
br label %72
12: ; preds = %1
%13 = getelementptr inbounds i8, i8* %0, i64 1
%14 = load i8, i8* %13
%15 = icmp eq i8 %14, 80
br i1 %15, label %65, label %72
16: ; preds = %1
%17 = getelementptr inbounds i8, i8* %0, i64 1
%18 = load i8, i8* %17
switch i8 %18, label %72 [
i8 73, label %19
i8 69, label %51
]
19: ; preds = %16
%20 = getelementptr inbounds i8, i8* %0, i64 2
%21 = load i8, i8* %20
%22 = icmp eq i8 %21, 77
%23 = select i1 %22, i32 4, i32 -1
br label %72
24: ; preds = %1
%25 = getelementptr inbounds i8, i8* %0, i64 1
%26 = load i8, i8* %25
%27 = icmp eq i8 %26, 67
br i1 %27, label %28, label %72
28: ; preds = %24
%29 = getelementptr inbounds i8, i8* %0, i64 2
%30 = load i8, i8* %29
%31 = icmp eq i8 %30, 68
%32 = select i1 %31, i32 5, i32 -1
br label %72
33: ; preds = %1
%34 = getelementptr inbounds i8, i8* %0, i64 1
%35 = load i8, i8* %34
%36 = icmp eq i8 %35, 85
br i1 %36, label %37, label %72
37: ; preds = %33
%38 = getelementptr inbounds i8, i8* %0, i64 2
%39 = load i8, i8* %38
%40 = icmp eq i8 %39, 90
%41 = select i1 %40, i32 6, i32 -1
br label %72
42: ; preds = %1
%43 = getelementptr inbounds i8, i8* %0, i64 1
%44 = load i8, i8* %43
%45 = icmp eq i8 %44, 69
br i1 %45, label %46, label %72
46: ; preds = %42
%47 = getelementptr inbounds i8, i8* %0, i64 2
%48 = load i8, i8* %47
%49 = icmp eq i8 %48, 82
%50 = select i1 %49, i32 7, i32 -1
br label %72
51: ; preds = %16
%52 = getelementptr inbounds i8, i8* %0, i64 2
%53 = load i8, i8* %52
%54 = icmp eq i8 %53, 77
%55 = select i1 %54, i32 10, i32 -1
br label %72
56: ; preds = %1
%57 = getelementptr inbounds i8, i8* %0, i64 1
%58 = load i8, i8* %57
%59 = icmp eq i8 %58, 68
br i1 %59, label %60, label %72
60: ; preds = %56
%61 = getelementptr inbounds i8, i8* %0, i64 2
%62 = load i8, i8* %61
%63 = icmp eq i8 %62, 67
%64 = select i1 %63, i32 8, i32 -1
br label %72
65: ; preds = %12
%66 = getelementptr inbounds i8, i8* %0, i64 2
%67 = load i8, i8* %66
%68 = icmp eq i8 %67, 79
%69 = select i1 %68, i32 3, i32 -1
%70 = icmp eq i8 %67, 73
%71 = select i1 %70, i32 9, i32 %69
br label %72
72: ; preds = %16, %12, %19, %1, %28, %24, %51, %42, %56, %7, %3, %60, %46, %37, %33, %65
%73 = phi i32 [ %71, %65 ], [ %64, %60 ], [ %50, %46 ], [ %41, %37 ], [ -1, %33 ], [ %11, %7 ], [ -1, %3 ], [ -1, %56 ], [ -1, %42 ], [ %55, %51 ], [ %32, %28 ], [ -1, %24 ], [ -1, %1 ], [ %23, %19 ], [ -1, %12 ], [ -1, %16 ]
ret i32 %73
}