; LLVM IR from facebook/redex :: libredex/IROpcode.ll (ZN6opcode13to_dex_opcodeE8IROpcode)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }

@.str.7 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [70 x i8], align 1
@__PRETTY_FUNCTION__._ZN6opcode13to_dex_opcodeE8IROpcode = external hidden unnamed_addr constant [42 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [32 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

declare void @_Z4showB5cxx118IROpcode(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, i16 noundef zeroext) #2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i16 @_ZN6opcode13to_dex_opcodeE8IROpcode(i16 noundef zeroext %0) #3 personality ptr @__gxx_personality_v0 {
  %2 = alloca i16, align 2
  %3 = alloca i16, align 2
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  store i16 %0, ptr %3, align 2, !tbaa !5
  %7 = load i16, ptr %3, align 2, !tbaa !5
  %8 = zext i16 %7 to i32
  switch i32 %8, label %169 [
    i32 0, label %9
    i32 1, label %10
    i32 2, label %11
    i32 3, label %12
    i32 4, label %13
    i32 5, label %14
    i32 6, label %15
    i32 7, label %16
    i32 8, label %17
    i32 9, label %18
    i32 10, label %19
    i32 11, label %20
    i32 16, label %21
    i32 17, label %22
    i32 25, label %23
    i32 26, label %24
    i32 94, label %25
    i32 95, label %26
    i32 96, label %27
    i32 97, label %28
    i32 98, label %29
    i32 99, label %30
    i32 100, label %31
    i32 101, label %32
    i32 102, label %33
    i32 103, label %34
    i32 104, label %35
    i32 105, label %36
    i32 106, label %37
    i32 107, label %38
    i32 108, label %39
    i32 109, label %40
    i32 110, label %41
    i32 111, label %42
    i32 112, label %43
    i32 113, label %44
    i32 114, label %45
    i32 20, label %46
    i32 28, label %47
    i32 29, label %48
    i32 30, label %49
    i32 31, label %50
    i32 32, label %51
    i32 33, label %52
    i32 34, label %53
    i32 35, label %54
    i32 36, label %55
    i32 37, label %56
    i32 38, label %57
    i32 39, label %58
    i32 40, label %59
    i32 41, label %60
    i32 42, label %61
    i32 43, label %62
    i32 44, label %63
    i32 45, label %64
    i32 46, label %65
    i32 47, label %66
    i32 48, label %67
    i32 49, label %68
    i32 50, label %69
    i32 51, label %70
    i32 52, label %71
    i32 53, label %72
    i32 54, label %73
    i32 55, label %74
    i32 56, label %75
    i32 57, label %76
    i32 58, label %77
    i32 115, label %78
    i32 116, label %79
    i32 117, label %80
    i32 118, label %81
    i32 119, label %82
    i32 120, label %83
    i32 121, label %84
    i32 122, label %85
    i32 123, label %86
    i32 124, label %87
    i32 125, label %88
    i32 126, label %89
    i32 127, label %90
    i32 128, label %91
    i32 129, label %92
    i32 130, label %93
    i32 131, label %94
    i32 132, label %95
    i32 133, label %96
    i32 134, label %97
    i32 135, label %98
    i32 136, label %99
    i32 137, label %100
    i32 138, label %101
    i32 139, label %102
    i32 140, label %103
    i32 141, label %104
    i32 142, label %105
    i32 143, label %106
    i32 144, label %107
    i32 145, label %108
    i32 146, label %109
    i32 147, label %110
    i32 148, label %111
    i32 149, label %112
    i32 150, label %113
    i32 151, label %114
    i32 152, label %115
    i32 153, label %116
    i32 154, label %117
    i32 155, label %118
    i32 156, label %119
    i32 157, label %120
    i32 12, label %121
    i32 24, label %122
    i32 27, label %123
    i32 13, label %124
    i32 59, label %125
    i32 60, label %126
    i32 61, label %127
    i32 62, label %128
    i32 63, label %129
    i32 64, label %130
    i32 65, label %131
    i32 66, label %132
    i32 67, label %133
    i32 68, label %134
    i32 69, label %135
    i32 70, label %136
    i32 71, label %137
    i32 72, label %138
    i32 73, label %139
    i32 74, label %140
    i32 75, label %141
    i32 76, label %142
    i32 77, label %143
    i32 78, label %144
    i32 79, label %145
    i32 80, label %146
    i32 81, label %147
    i32 82, label %148
    i32 83, label %149
    i32 84, label %150
    i32 85, label %151
    i32 86, label %152
    i32 87, label %153
    i32 88, label %154
    i32 89, label %155
    i32 90, label %156
    i32 91, label %157
    i32 93, label %158
    i32 92, label %159
    i32 14, label %160
    i32 15, label %161
    i32 18, label %162
    i32 19, label %163
    i32 21, label %164
    i32 22, label %165
    i32 23, label %166
    i32 158, label %167
    i32 159, label %168
  ]

9:                                                ; preds = %1
  store i16 0, ptr %2, align 2
  br label %181

10:                                               ; preds = %1
  store i16 1, ptr %2, align 2
  br label %181

11:                                               ; preds = %1
  store i16 4, ptr %2, align 2
  br label %181

12:                                               ; preds = %1
  store i16 7, ptr %2, align 2
  br label %181

13:                                               ; preds = %1
  store i16 10, ptr %2, align 2
  br label %181

14:                                               ; preds = %1
  store i16 11, ptr %2, align 2
  br label %181

15:                                               ; preds = %1
  store i16 12, ptr %2, align 2
  br label %181

16:                                               ; preds = %1
  store i16 13, ptr %2, align 2
  br label %181

17:                                               ; preds = %1
  store i16 14, ptr %2, align 2
  br label %181

18:                                               ; preds = %1
  store i16 15, ptr %2, align 2
  br label %181

19:                                               ; preds = %1
  store i16 16, ptr %2, align 2
  br label %181

20:                                               ; preds = %1
  store i16 17, ptr %2, align 2
  br label %181

21:                                               ; preds = %1
  store i16 29, ptr %2, align 2
  br label %181

22:                                               ; preds = %1
  store i16 30, ptr %2, align 2
  br label %181

23:                                               ; preds = %1
  store i16 39, ptr %2, align 2
  br label %181

24:                                               ; preds = %1
  store i16 40, ptr %2, align 2
  br label %181

25:                                               ; preds = %1
  store i16 123, ptr %2, align 2
  br label %181

26:                                               ; preds = %1
  store i16 124, ptr %2, align 2
  br label %181

27:                                               ; preds = %1
  store i16 125, ptr %2, align 2
  br label %181

28:                                               ; preds = %1
  store i16 126, ptr %2, align 2
  br label %181

29:                                               ; preds = %1
  store i16 127, ptr %2, align 2
  br label %181

30:                                               ; preds = %1
  store i16 128, ptr %2, align 2
  br label %181

31:                                               ; preds = %1
  store i16 129, ptr %2, align 2
  br label %181

32:                                               ; preds = %1
  store i16 130, ptr %2, align 2
  br label %181

33:                                               ; preds = %1
  store i16 131, ptr %2, align 2
  br label %181

34:                                               ; preds = %1
  store i16 132, ptr %2, align 2
  br label %181

35:                                               ; preds = %1
  store i16 133, ptr %2, align 2
  br label %181

36:                                               ; preds = %1
  store i16 134, ptr %2, align 2
  br label %181

37:                                               ; preds = %1
  store i16 135, ptr %2, align 2
  br label %181

38:                                               ; preds = %1
  store i16 136, ptr %2, align 2
  br label %181

39:                                               ; preds = %1
  store i16 137, ptr %2, align 2
  br label %181

40:                                               ; preds = %1
  store i16 138, ptr %2, align 2
  br label %181

41:                                               ; preds = %1
  store i16 139, ptr %2, align 2
  br label %181

42:                                               ; preds = %1
  store i16 140, ptr %2, align 2
  br label %181

43:                                               ; preds = %1
  store i16 141, ptr %2, align 2
  br label %181

44:                                               ; preds = %1
  store i16 142, ptr %2, align 2
  br label %181

45:                                               ; preds = %1
  store i16 143, ptr %2, align 2
  br label %181

46:                                               ; preds = %1
  store i16 33, ptr %2, align 2
  br label %181

47:                                               ; preds = %1
  store i16 45, ptr %2, align 2
  br label %181

48:                                               ; preds = %1
  store i16 46, ptr %2, align 2
  br label %181

49:                                               ; preds = %1
  store i16 47, ptr %2, align 2
  br label %181

50:                                               ; preds = %1
  store i16 48, ptr %2, align 2
  br label %181

51:                                               ; preds = %1
  store i16 49, ptr %2, align 2
  br label %181

52:                                               ; preds = %1
  store i16 50, ptr %2, align 2
  br label %181

53:                                               ; preds = %1
  store i16 51, ptr %2, align 2
  br label %181

54:                                               ; preds = %1
  store i16 52, ptr %2, align 2
  br label %181

55:                                               ; preds = %1
  store i16 53, ptr %2, align 2
  br label %181

56:                                               ; preds = %1
  store i16 54, ptr %2, align 2
  br label %181

57:                                               ; preds = %1
  store i16 55, ptr %2, align 2
  br label %181

58:                                               ; preds = %1
  store i16 56, ptr %2, align 2
  br label %181

59:                                               ; preds = %1
  store i16 57, ptr %2, align 2
  br label %181

60:                                               ; preds = %1
  store i16 58, ptr %2, align 2
  br label %181

61:                                               ; preds = %1
  store i16 59, ptr %2, align 2
  br label %181

62:                                               ; preds = %1
  store i16 60, ptr %2, align 2
  br label %181

63:                                               ; preds = %1
  store i16 61, ptr %2, align 2
  br label %181

64:                                               ; preds = %1
  store i16 68, ptr %2, align 2
  br label %181

65:                                               ; preds = %1
  store i16 69, ptr %2, align 2
  br label %181

66:                                               ; preds = %1
  store i16 70, ptr %2, align 2
  br label %181

67:                                               ; preds = %1
  store i16 71, ptr %2, align 2
  br label %181

68:                                               ; preds = %1
  store i16 72, ptr %2, align 2
  br label %181

69:                                               ; preds = %1
  store i16 73, ptr %2, align 2
  br label %181

70:                                               ; preds = %1
  store i16 74, ptr %2, align 2
  br label %181

71:                                               ; preds = %1
  store i16 75, ptr %2, align 2
  br label %181

72:                                               ; preds = %1
  store i16 76, ptr %2, align 2
  br label %181

73:                                               ; preds = %1
  store i16 77, ptr %2, align 2
  br label %181

74:                                               ; preds = %1
  store i16 78, ptr %2, align 2
  br label %181

75:                                               ; preds = %1
  store i16 79, ptr %2, align 2
  br label %181

76:                                               ; preds = %1
  store i16 80, ptr %2, align 2
  br label %181

77:                                               ; preds = %1
  store i16 81, ptr %2, align 2
  br label %181

78:                                               ; preds = %1
  store i16 144, ptr %2, align 2
  br label %181

79:                                               ; preds = %1
  store i16 145, ptr %2, align 2
  br label %181

80:                                               ; preds = %1
  store i16 146, ptr %2, align 2
  br label %181

81:                                               ; preds = %1
  store i16 147, ptr %2, align 2
  br label %181

82:                                               ; preds = %1
  store i16 148, ptr %2, align 2
  br label %181

83:                                               ; preds = %1
  store i16 149, ptr %2, align 2
  br label %181

84:                                               ; preds = %1
  store i16 150, ptr %2, align 2
  br label %181

85:                                               ; preds = %1
  store i16 151, ptr %2, align 2
  br label %181

86:                                               ; preds = %1
  store i16 152, ptr %2, align 2
  br label %181

87:                                               ; preds = %1
  store i16 153, ptr %2, align 2
  br label %181

88:                                               ; preds = %1
  store i16 154, ptr %2, align 2
  br label %181

89:                                               ; preds = %1
  store i16 155, ptr %2, align 2
  br label %181

90:                                               ; preds = %1
  store i16 156, ptr %2, align 2
  br label %181

91:                                               ; preds = %1
  store i16 157, ptr %2, align 2
  br label %181

92:                                               ; preds = %1
  store i16 158, ptr %2, align 2
  br label %181

93:                                               ; preds = %1
  store i16 159, ptr %2, align 2
  br label %181

94:                                               ; preds = %1
  store i16 160, ptr %2, align 2
  br label %181

95:                                               ; preds = %1
  store i16 161, ptr %2, align 2
  br label %181

96:                                               ; preds = %1
  store i16 162, ptr %2, align 2
  br label %181

97:                                               ; preds = %1
  store i16 163, ptr %2, align 2
  br label %181

98:                                               ; preds = %1
  store i16 164, ptr %2, align 2
  br label %181

99:                                               ; preds = %1
  store i16 165, ptr %2, align 2
  br label %181

100:                                              ; preds = %1
  store i16 166, ptr %2, align 2
  br label %181

101:                                              ; preds = %1
  store i16 167, ptr %2, align 2
  br label %181

102:                                              ; preds = %1
  store i16 168, ptr %2, align 2
  br label %181

103:                                              ; preds = %1
  store i16 169, ptr %2, align 2
  br label %181

104:                                              ; preds = %1
  store i16 170, ptr %2, align 2
  br label %181

105:                                              ; preds = %1
  store i16 171, ptr %2, align 2
  br label %181

106:                                              ; preds = %1
  store i16 172, ptr %2, align 2
  br label %181

107:                                              ; preds = %1
  store i16 173, ptr %2, align 2
  br label %181

108:                                              ; preds = %1
  store i16 174, ptr %2, align 2
  br label %181

109:                                              ; preds = %1
  store i16 175, ptr %2, align 2
  br label %181

110:                                              ; preds = %1
  store i16 208, ptr %2, align 2
  br label %181

111:                                              ; preds = %1
  store i16 209, ptr %2, align 2
  br label %181

112:                                              ; preds = %1
  store i16 210, ptr %2, align 2
  br label %181

113:                                              ; preds = %1
  store i16 211, ptr %2, align 2
  br label %181

114:                                              ; preds = %1
  store i16 212, ptr %2, align 2
  br label %181

115:                                              ; preds = %1
  store i16 213, ptr %2, align 2
  br label %181

116:                                              ; preds = %1
  store i16 214, ptr %2, align 2
  br label %181

117:                                              ; preds = %1
  store i16 215, ptr %2, align 2
  br label %181

118:                                              ; preds = %1
  store i16 224, ptr %2, align 2
  br label %181

119:                                              ; preds = %1
  store i16 225, ptr %2, align 2
  br label %181

120:                                              ; preds = %1
  store i16 226, ptr %2, align 2
  br label %181

121:                                              ; preds = %1
  store i16 20, ptr %2, align 2
  br label %181

122:                                              ; preds = %1
  store i16 38, ptr %2, align 2
  br label %181

123:                                              ; preds = %1
  store i16 44, ptr %2, align 2
  br label %181

124:                                              ; preds = %1
  store i16 24, ptr %2, align 2
  br label %181

125:                                              ; preds = %1
  store i16 82, ptr %2, align 2
  br label %181

126:                                              ; preds = %1
  store i16 83, ptr %2, align 2
  br label %181

127:                                              ; preds = %1
  store i16 84, ptr %2, align 2
  br label %181

128:                                              ; preds = %1
  store i16 85, ptr %2, align 2
  br label %181

129:                                              ; preds = %1
  store i16 86, ptr %2, align 2
  br label %181

130:                                              ; preds = %1
  store i16 87, ptr %2, align 2
  br label %181

131:                                              ; preds = %1
  store i16 88, ptr %2, align 2
  br label %181

132:                                              ; preds = %1
  store i16 89, ptr %2, align 2
  br label %181

133:                                              ; preds = %1
  store i16 90, ptr %2, align 2
  br label %181

134:                                              ; preds = %1
  store i16 91, ptr %2, align 2
  br label %181

135:                                              ; preds = %1
  store i16 92, ptr %2, align 2
  br label %181

136:                                              ; preds = %1
  store i16 93, ptr %2, align 2
  br label %181

137:                                              ; preds = %1
  store i16 94, ptr %2, align 2
  br label %181

138:                                              ; preds = %1
  store i16 95, ptr %2, align 2
  br label %181

139:                                              ; preds = %1
  store i16 96, ptr %2, align 2
  br label %181

140:                                              ; preds = %1
  store i16 97, ptr %2, align 2
  br label %181

141:                                              ; preds = %1
  store i16 98, ptr %2, align 2
  br label %181

142:                                              ; preds = %1
  store i16 99, ptr %2, align 2
  br label %181

143:                                              ; preds = %1
  store i16 100, ptr %2, align 2
  br label %181

144:                                              ; preds = %1
  store i16 101, ptr %2, align 2
  br label %181

145:                                              ; preds = %1
  store i16 102, ptr %2, align 2
  br label %181

146:                                              ; preds = %1
  store i16 103, ptr %2, align 2
  br label %181

147:                                              ; preds = %1
  store i16 104, ptr %2, align 2
  br label %181

148:                                              ; preds = %1
  store i16 105, ptr %2, align 2
  br label %181

149:                                              ; preds = %1
  store i16 106, ptr %2, align 2
  br label %181

150:                                              ; preds = %1
  store i16 107, ptr %2, align 2
  br label %181

151:                                              ; preds = %1
  store i16 108, ptr %2, align 2
  br label %181

152:                                              ; preds = %1
  store i16 109, ptr %2, align 2
  br label %181

153:                                              ; preds = %1
  store i16 110, ptr %2, align 2
  br label %181

154:                                              ; preds = %1
  store i16 111, ptr %2, align 2
  br label %181

155:                                              ; preds = %1
  store i16 112, ptr %2, align 2
  br label %181

156:                                              ; preds = %1
  store i16 113, ptr %2, align 2
  br label %181

157:                                              ; preds = %1
  store i16 114, ptr %2, align 2
  br label %181

158:                                              ; preds = %1
  store i16 252, ptr %2, align 2
  br label %181

159:                                              ; preds = %1
  store i16 250, ptr %2, align 2
  br label %181

160:                                              ; preds = %1
  store i16 26, ptr %2, align 2
  br label %181

161:                                              ; preds = %1
  store i16 28, ptr %2, align 2
  br label %181

162:                                              ; preds = %1
  store i16 31, ptr %2, align 2
  br label %181

163:                                              ; preds = %1
  store i16 32, ptr %2, align 2
  br label %181

164:                                              ; preds = %1
  store i16 34, ptr %2, align 2
  br label %181

165:                                              ; preds = %1
  store i16 35, ptr %2, align 2
  br label %181

166:                                              ; preds = %1
  store i16 36, ptr %2, align 2
  br label %181

167:                                              ; preds = %1
  store i16 254, ptr %2, align 2
  br label %181

168:                                              ; preds = %1
  store i16 255, ptr %2, align 2
  br label %181

169:                                              ; preds = %1
  br label %170

170:                                              ; preds = %178, %169
  call void @llvm.lifetime.start.p0(i64 32, ptr %4) #5
  %171 = load i16, ptr %3, align 2, !tbaa !5
  call void @_Z4showB5cxx118IROpcode(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %4, i16 noundef zeroext %171)
  %172 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %4) #5
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.7, ptr noundef @.str.8, i32 noundef 814, ptr noundef @__PRETTY_FUNCTION__._ZN6opcode13to_dex_opcodeE8IROpcode, i32 noundef 2, ptr noundef @.str.9, ptr noundef %172) #6
          to label %173 unwind label %174

173:                                              ; preds = %170
  unreachable

174:                                              ; preds = %170
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %5, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %4) #5
  br label %183

178:                                              ; No predecessors!
  br i1 true, label %170, label %179, !llvm.loop !9

179:                                              ; preds = %178
  br label %180

180:                                              ; preds = %179
  unreachable

181:                                              ; preds = %168, %167, %166, %165, %164, %163, %162, %161, %160, %159, %158, %157, %156, %155, %154, %153, %152, %151, %150, %149, %148, %147, %146, %145, %144, %143, %142, %141, %140, %139, %138, %137, %136, %135, %134, %133, %132, %131, %130, %129, %128, %127, %126, %125, %124, %123, %122, %121, %120, %119, %118, %117, %116, %115, %114, %113, %112, %111, %110, %109, %108, %107, %106, %105, %104, %103, %102, %101, %100, %99, %98, %97, %96, %95, %94, %93, %92, %91, %90, %89, %88, %87, %86, %85, %84, %83, %82, %81, %80, %79, %78, %77, %76, %75, %74, %73, %72, %71, %70, %69, %68, %67, %66, %65, %64, %63, %62, %61, %60, %59, %58, %57, %56, %55, %54, %53, %52, %51, %50, %49, %48, %47, %46, %45, %44, %43, %42, %41, %40, %39, %38, %37, %36, %35, %34, %33, %32, %31, %30, %29, %28, %27, %26, %25, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9
  %182 = load i16, ptr %2, align 2
  ret i16 %182

183:                                              ; preds = %174
  %184 = load ptr, ptr %5, align 8
  %185 = load i32, ptr %6, align 4
  %186 = insertvalue { ptr, i32 } poison, ptr %184, 0
  %187 = insertvalue { ptr, i32 } %186, i32 %185, 1
  resume { ptr, i32 } %187
}

; Function Attrs: noreturn
declare void @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ...) #4

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { noreturn "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }
attributes #6 = { noreturn }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"_ZTS8IROpcode", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }

@.str.7 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [70 x i8], align 1
@__PRETTY_FUNCTION__._ZN6opcode13to_dex_opcodeE8IROpcode = external hidden unnamed_addr constant [42 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [32 x i8], align 1
@switch.table._ZN6opcode13to_dex_opcodeE8IROpcode = private unnamed_addr constant [160 x i16] [i16 0, i16 1, i16 4, i16 7, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15, i16 16, i16 17, i16 20, i16 24, i16 26, i16 28, i16 29, i16 30, i16 31, i16 32, i16 33, i16 34, i16 35, i16 36, i16 38, i16 39, i16 40, i16 44, i16 45, i16 46, i16 47, i16 48, i16 49, i16 50, i16 51, i16 52, i16 53, i16 54, i16 55, i16 56, i16 57, i16 58, i16 59, i16 60, i16 61, i16 68, i16 69, i16 70, i16 71, i16 72, i16 73, i16 74, i16 75, i16 76, i16 77, i16 78, i16 79, i16 80, i16 81, i16 82, i16 83, i16 84, i16 85, i16 86, i16 87, i16 88, i16 89, i16 90, i16 91, i16 92, i16 93, i16 94, i16 95, i16 96, i16 97, i16 98, i16 99, i16 100, i16 101, i16 102, i16 103, i16 104, i16 105, i16 106, i16 107, i16 108, i16 109, i16 110, i16 111, i16 112, i16 113, i16 114, i16 250, i16 252, i16 123, i16 124, i16 125, i16 126, i16 127, i16 128, i16 129, i16 130, i16 131, i16 132, i16 133, i16 134, i16 135, i16 136, i16 137, i16 138, i16 139, i16 140, i16 141, i16 142, i16 143, i16 144, i16 145, i16 146, i16 147, i16 148, i16 149, i16 150, i16 151, i16 152, i16 153, i16 154, i16 155, i16 156, i16 157, i16 158, i16 159, i16 160, i16 161, i16 162, i16 163, i16 164, i16 165, i16 166, i16 167, i16 168, i16 169, i16 170, i16 171, i16 172, i16 173, i16 174, i16 175, i16 208, i16 209, i16 210, i16 211, i16 212, i16 213, i16 214, i16 215, i16 224, i16 225, i16 226, i16 254, i16 255], align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

declare void @_Z4showB5cxx118IROpcode(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, i16 noundef zeroext) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i16 @_ZN6opcode13to_dex_opcodeE8IROpcode(i16 noundef zeroext %0) local_unnamed_addr #3 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::__cxx11::basic_string", align 8
  %3 = icmp ult i16 %0, 160
  br i1 %3, label %switch.lookup, label %4

4:                                                ; preds = %1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #5
  call void @_Z4showB5cxx118IROpcode(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %2, i16 noundef zeroext %0)
  %5 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %2) #5
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.8, i32 noundef 814, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN6opcode13to_dex_opcodeE8IROpcode, i32 noundef 2, ptr noundef nonnull @.str.9, ptr noundef %5) #6
          to label %6 unwind label %7

6:                                                ; preds = %4
  unreachable

7:                                                ; preds = %4
  %8 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #5
  resume { ptr, i32 } %8

switch.lookup:                                    ; preds = %1
  %9 = zext nneg i16 %0 to i64
  %switch.gep = getelementptr inbounds [160 x i16], ptr @switch.table._ZN6opcode13to_dex_opcodeE8IROpcode, i64 0, i64 %9
  %switch.load = load i16, ptr %switch.gep, align 2
  ret i16 %switch.load
}

; Function Attrs: noreturn
declare void @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ...) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { noreturn "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }
attributes #6 = { noreturn }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,SROAPass,SimplifyCFGPass