; LLVM IR from Ryuk17/SpeechAlgorithms :: WebRTC_VAD/src (vad_sp)

; 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"

%struct.VadInstT_ = type { i32, [4 x i32], %struct.WebRtcSpl_State48khzTo8khz, [12 x i16], [12 x i16], [12 x i16], [12 x i16], i32, i16, i16, [96 x i16], [96 x i16], [6 x i16], [5 x i16], [5 x i16], [4 x i16], [3 x i16], [3 x i16], [3 x i16], [3 x i16], i32 }
%struct.WebRtcSpl_State48khzTo8khz = type { [8 x i32], [16 x i32], [8 x i32], [8 x i32] }

@.str = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [81 x i8], align 1
@__PRETTY_FUNCTION__.WebRtcVad_FindMinimum = external hidden unnamed_addr constant [56 x i8], align 1

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

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

; Function Attrs: nounwind uwtable
define dso_local signext i16 @WebRtcVad_FindMinimum(ptr noundef %0, i16 noundef signext %1, i32 noundef %2) #1 {
  %4 = alloca ptr, align 8
  %5 = alloca i16, align 2
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i16, align 2
  %12 = alloca i16, align 2
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store i16 %1, ptr %5, align 2, !tbaa !9
  store i32 %2, ptr %6, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #3
  store i32 0, ptr %7, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #3
  store i32 0, ptr %8, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #3
  store i32 -1, ptr %9, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #3
  %16 = load i32, ptr %6, align 4, !tbaa !11
  %17 = shl i32 %16, 4
  store i32 %17, ptr %10, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2, ptr %11) #3
  store i16 1600, ptr %11, align 2, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 2, ptr %12) #3
  store i16 0, ptr %12, align 2, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  store i32 0, ptr %13, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #3
  %18 = load ptr, ptr %4, align 8, !tbaa !5
  %19 = getelementptr inbounds %struct.VadInstT_, ptr %18, i32 0, i32 10
  %20 = load i32, ptr %10, align 4, !tbaa !11
  %21 = sext i32 %20 to i64
  %22 = getelementptr inbounds [96 x i16], ptr %19, i64 0, i64 %21
  store ptr %22, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #3
  %23 = load ptr, ptr %4, align 8, !tbaa !5
  %24 = getelementptr inbounds %struct.VadInstT_, ptr %23, i32 0, i32 11
  %25 = load i32, ptr %10, align 4, !tbaa !11
  %26 = sext i32 %25 to i64
  %27 = getelementptr inbounds [96 x i16], ptr %24, i64 0, i64 %26
  store ptr %27, ptr %15, align 8, !tbaa !5
  br label %28

28:                                               ; preds = %3
  %29 = load i32, ptr %6, align 4, !tbaa !11
  %30 = icmp slt i32 %29, 6
  br i1 %30, label %31, label %32

31:                                               ; preds = %28
  br label %33

32:                                               ; preds = %28
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 69, ptr noundef @__PRETTY_FUNCTION__.WebRtcVad_FindMinimum) #4
  unreachable

33:                                               ; preds = %31
  br label %34

34:                                               ; preds = %33
  br label %35

35:                                               ; preds = %34
  store i32 0, ptr %7, align 4, !tbaa !11
  br label %36

36:                                               ; preds = %89, %35
  %37 = load i32, ptr %7, align 4, !tbaa !11
  %38 = icmp slt i32 %37, 16
  br i1 %38, label %39, label %92

39:                                               ; preds = %36
  %40 = load ptr, ptr %14, align 8, !tbaa !5
  %41 = load i32, ptr %7, align 4, !tbaa !11
  %42 = sext i32 %41 to i64
  %43 = getelementptr inbounds i16, ptr %40, i64 %42
  %44 = load i16, ptr %43, align 2, !tbaa !9
  %45 = sext i16 %44 to i32
  %46 = icmp ne i32 %45, 100
  br i1 %46, label %47, label %54

47:                                               ; preds = %39
  %48 = load ptr, ptr %14, align 8, !tbaa !5
  %49 = load i32, ptr %7, align 4, !tbaa !11
  %50 = sext i32 %49 to i64
  %51 = getelementptr inbounds i16, ptr %48, i64 %50
  %52 = load i16, ptr %51, align 2, !tbaa !9
  %53 = add i16 %52, 1
  store i16 %53, ptr %51, align 2, !tbaa !9
  br label %88

54:                                               ; preds = %39
  %55 = load i32, ptr %7, align 4, !tbaa !11
  store i32 %55, ptr %8, align 4, !tbaa !11
  br label %56

56:                                               ; preds = %80, %54
  %57 = load i32, ptr %8, align 4, !tbaa !11
  %58 = icmp slt i32 %57, 15
  br i1 %58, label %59, label %83

59:                                               ; preds = %56
  %60 = load ptr, ptr %15, align 8, !tbaa !5
  %61 = load i32, ptr %8, align 4, !tbaa !11
  %62 = add nsw i32 %61, 1
  %63 = sext i32 %62 to i64
  %64 = getelementptr inbounds i16, ptr %60, i64 %63
  %65 = load i16, ptr %64, align 2, !tbaa !9
  %66 = load ptr, ptr %15, align 8, !tbaa !5
  %67 = load i32, ptr %8, align 4, !tbaa !11
  %68 = sext i32 %67 to i64
  %69 = getelementptr inbounds i16, ptr %66, i64 %68
  store i16 %65, ptr %69, align 2, !tbaa !9
  %70 = load ptr, ptr %14, align 8, !tbaa !5
  %71 = load i32, ptr %8, align 4, !tbaa !11
  %72 = add nsw i32 %71, 1
  %73 = sext i32 %72 to i64
  %74 = getelementptr inbounds i16, ptr %70, i64 %73
  %75 = load i16, ptr %74, align 2, !tbaa !9
  %76 = load ptr, ptr %14, align 8, !tbaa !5
  %77 = load i32, ptr %8, align 4, !tbaa !11
  %78 = sext i32 %77 to i64
  %79 = getelementptr inbounds i16, ptr %76, i64 %78
  store i16 %75, ptr %79, align 2, !tbaa !9
  br label %80

80:                                               ; preds = %59
  %81 = load i32, ptr %8, align 4, !tbaa !11
  %82 = add nsw i32 %81, 1
  store i32 %82, ptr %8, align 4, !tbaa !11
  br label %56, !llvm.loop !13

83:                                               ; preds = %56
  %84 = load ptr, ptr %14, align 8, !tbaa !5
  %85 = getelementptr inbounds i16, ptr %84, i64 15
  store i16 101, ptr %85, align 2, !tbaa !9
  %86 = load ptr, ptr %15, align 8, !tbaa !5
  %87 = getelementptr inbounds i16, ptr %86, i64 15
  store i16 10000, ptr %87, align 2, !tbaa !9
  br label %88

88:                                               ; preds = %83, %47
  br label %89

89:                                               ; preds = %88
  %90 = load i32, ptr %7, align 4, !tbaa !11
  %91 = add nsw i32 %90, 1
  store i32 %91, ptr %7, align 4, !tbaa !11
  br label %36, !llvm.loop !15

92:                                               ; preds = %36
  %93 = load i16, ptr %5, align 2, !tbaa !9
  %94 = sext i16 %93 to i32
  %95 = load ptr, ptr %15, align 8, !tbaa !5
  %96 = getelementptr inbounds i16, ptr %95, i64 7
  %97 = load i16, ptr %96, align 2, !tbaa !9
  %98 = sext i16 %97 to i32
  %99 = icmp slt i32 %94, %98
  br i1 %99, label %100, label %171

100:                                              ; preds = %92
  %101 = load i16, ptr %5, align 2, !tbaa !9
  %102 = sext i16 %101 to i32
  %103 = load ptr, ptr %15, align 8, !tbaa !5
  %104 = getelementptr inbounds i16, ptr %103, i64 3
  %105 = load i16, ptr %104, align 2, !tbaa !9
  %106 = sext i16 %105 to i32
  %107 = icmp slt i32 %102, %106
  br i1 %107, label %108, label %139

108:                                              ; preds = %100
  %109 = load i16, ptr %5, align 2, !tbaa !9
  %110 = sext i16 %109 to i32
  %111 = load ptr, ptr %15, align 8, !tbaa !5
  %112 = getelementptr inbounds i16, ptr %111, i64 1
  %113 = load i16, ptr %112, align 2, !tbaa !9
  %114 = sext i16 %113 to i32
  %115 = icmp slt i32 %110, %114
  br i1 %115, label %116, label %127

116:                                              ; preds = %108
  %117 = load i16, ptr %5, align 2, !tbaa !9
  %118 = sext i16 %117 to i32
  %119 = load ptr, ptr %15, align 8, !tbaa !5
  %120 = getelementptr inbounds i16, ptr %119, i64 0
  %121 = load i16, ptr %120, align 2, !tbaa !9
  %122 = sext i16 %121 to i32
  %123 = icmp slt i32 %118, %122
  br i1 %123, label %124, label %125

124:                                              ; preds = %116
  store i32 0, ptr %9, align 4, !tbaa !11
  br label %126

125:                                              ; preds = %116
  store i32 1, ptr %9, align 4, !tbaa !11
  br label %126

126:                                              ; preds = %125, %124
  br label %138

127:                                              ; preds = %108
  %128 = load i16, ptr %5, align 2, !tbaa !9
  %129 = sext i16 %128 to i32
  %130 = load ptr, ptr %15, align 8, !tbaa !5
  %131 = getelementptr inbounds i16, ptr %130, i64 2
  %132 = load i16, ptr %131, align 2, !tbaa !9
  %133 = sext i16 %132 to i32
  %134 = icmp slt i32 %129, %133
  br i1 %134, label %135, label %136

135:                                              ; preds = %127
  store i32 2, ptr %9, align 4, !tbaa !11
  br label %137

136:                                              ; preds = %127
  store i32 3, ptr %9, align 4, !tbaa !11
  br label %137

137:                                              ; preds = %136, %135
  br label %138

138:                                              ; preds = %137, %126
  br label %170

139:                                              ; preds = %100
  %140 = load i16, ptr %5, align 2, !tbaa !9
  %141 = sext i16 %140 to i32
  %142 = load ptr, ptr %15, align 8, !tbaa !5
  %143 = getelementptr inbounds i16, ptr %142, i64 5
  %144 = load i16, ptr %143, align 2, !tbaa !9
  %145 = sext i16 %144 to i32
  %146 = icmp slt i32 %141, %145
  br i1 %146, label %147, label %158

147:                                              ; preds = %139
  %148 = load i16, ptr %5, align 2, !tbaa !9
  %149 = sext i16 %148 to i32
  %150 = load ptr, ptr %15, align 8, !tbaa !5
  %151 = getelementptr inbounds i16, ptr %150, i64 4
  %152 = load i16, ptr %151, align 2, !tbaa !9
  %153 = sext i16 %152 to i32
  %154 = icmp slt i32 %149, %153
  br i1 %154, label %155, label %156

155:                                              ; preds = %147
  store i32 4, ptr %9, align 4, !tbaa !11
  br label %157

156:                                              ; preds = %147
  store i32 5, ptr %9, align 4, !tbaa !11
  br label %157

157:                                              ; preds = %156, %155
  br label %169

158:                                              ; preds = %139
  %159 = load i16, ptr %5, align 2, !tbaa !9
  %160 = sext i16 %159 to i32
  %161 = load ptr, ptr %15, align 8, !tbaa !5
  %162 = getelementptr inbounds i16, ptr %161, i64 6
  %163 = load i16, ptr %162, align 2, !tbaa !9
  %164 = sext i16 %163 to i32
  %165 = icmp slt i32 %160, %164
  br i1 %165, label %166, label %167

166:                                              ; preds = %158
  store i32 6, ptr %9, align 4, !tbaa !11
  br label %168

167:                                              ; preds = %158
  store i32 7, ptr %9, align 4, !tbaa !11
  br label %168

168:                                              ; preds = %167, %166
  br label %169

169:                                              ; preds = %168, %157
  br label %170

170:                                              ; preds = %169, %138
  br label %251

171:                                              ; preds = %92
  %172 = load i16, ptr %5, align 2, !tbaa !9
  %173 = sext i16 %172 to i32
  %174 = load ptr, ptr %15, align 8, !tbaa !5
  %175 = getelementptr inbounds i16, ptr %174, i64 15
  %176 = load i16, ptr %175, align 2, !tbaa !9
  %177 = sext i16 %176 to i32
  %178 = icmp slt i32 %173, %177
  br i1 %178, label %179, label %250

179:                                              ; preds = %171
  %180 = load i16, ptr %5, align 2, !tbaa !9
  %181 = sext i16 %180 to i32
  %182 = load ptr, ptr %15, align 8, !tbaa !5
  %183 = getelementptr inbounds i16, ptr %182, i64 11
  %184 = load i16, ptr %183, align 2, !tbaa !9
  %185 = sext i16 %184 to i32
  %186 = icmp slt i32 %181, %185
  br i1 %186, label %187, label %218

187:                                              ; preds = %179
  %188 = load i16, ptr %5, align 2, !tbaa !9
  %189 = sext i16 %188 to i32
  %190 = load ptr, ptr %15, align 8, !tbaa !5
  %191 = getelementptr inbounds i16, ptr %190, i64 9
  %192 = load i16, ptr %191, align 2, !tbaa !9
  %193 = sext i16 %192 to i32
  %194 = icmp slt i32 %189, %193
  br i1 %194, label %195, label %206

195:                                              ; preds = %187
  %196 = load i16, ptr %5, align 2, !tbaa !9
  %197 = sext i16 %196 to i32
  %198 = load ptr, ptr %15, align 8, !tbaa !5
  %199 = getelementptr inbounds i16, ptr %198, i64 8
  %200 = load i16, ptr %199, align 2, !tbaa !9
  %201 = sext i16 %200 to i32
  %202 = icmp slt i32 %197, %201
  br i1 %202, label %203, label %204

203:                                              ; preds = %195
  store i32 8, ptr %9, align 4, !tbaa !11
  br label %205

204:                                              ; preds = %195
  store i32 9, ptr %9, align 4, !tbaa !11
  br label %205

205:                                              ; preds = %204, %203
  br label %217

206:                                              ; preds = %187
  %207 = load i16, ptr %5, align 2, !tbaa !9
  %208 = sext i16 %207 to i32
  %209 = load ptr, ptr %15, align 8, !tbaa !5
  %210 = getelementptr inbounds i16, ptr %209, i64 10
  %211 = load i16, ptr %210, align 2, !tbaa !9
  %212 = sext i16 %211 to i32
  %213 = icmp slt i32 %208, %212
  br i1 %213, label %214, label %215

214:                                              ; preds = %206
  store i32 10, ptr %9, align 4, !tbaa !11
  br label %216

215:                                              ; preds = %206
  store i32 11, ptr %9, align 4, !tbaa !11
  br label %216

216:                                              ; preds = %215, %214
  br label %217

217:                                              ; preds = %216, %205
  br label %249

218:                                              ; preds = %179
  %219 = load i16, ptr %5, align 2, !tbaa !9
  %220 = sext i16 %219 to i32
  %221 = load ptr, ptr %15, align 8, !tbaa !5
  %222 = getelementptr inbounds i16, ptr %221, i64 13
  %223 = load i16, ptr %222, align 2, !tbaa !9
  %224 = sext i16 %223 to i32
  %225 = icmp slt i32 %220, %224
  br i1 %225, label %226, label %237

226:                                              ; preds = %218
  %227 = load i16, ptr %5, align 2, !tbaa !9
  %228 = sext i16 %227 to i32
  %229 = load ptr, ptr %15, align 8, !tbaa !5
  %230 = getelementptr inbounds i16, ptr %229, i64 12
  %231 = load i16, ptr %230, align 2, !tbaa !9
  %232 = sext i16 %231 to i32
  %233 = icmp slt i32 %228, %232
  br i1 %233, label %234, label %235

234:                                              ; preds = %226
  store i32 12, ptr %9, align 4, !tbaa !11
  br label %236

235:                                              ; preds = %226
  store i32 13, ptr %9, align 4, !tbaa !11
  br label %236

236:                                              ; preds = %235, %234
  br label %248

237:                                              ; preds = %218
  %238 = load i16, ptr %5, align 2, !tbaa !9
  %239 = sext i16 %238 to i32
  %240 = load ptr, ptr %15, align 8, !tbaa !5
  %241 = getelementptr inbounds i16, ptr %240, i64 14
  %242 = load i16, ptr %241, align 2, !tbaa !9
  %243 = sext i16 %242 to i32
  %244 = icmp slt i32 %239, %243
  br i1 %244, label %245, label %246

245:                                              ; preds = %237
  store i32 14, ptr %9, align 4, !tbaa !11
  br label %247

246:                                              ; preds = %237
  store i32 15, ptr %9, align 4, !tbaa !11
  br label %247

247:                                              ; preds = %246, %245
  br label %248

248:                                              ; preds = %247, %236
  br label %249

249:                                              ; preds = %248, %217
  br label %250

250:                                              ; preds = %249, %171
  br label %251

251:                                              ; preds = %250, %170
  %252 = load i32, ptr %9, align 4, !tbaa !11
  %253 = icmp sgt i32 %252, -1
  br i1 %253, label %254, label %293

254:                                              ; preds = %251
  store i32 15, ptr %7, align 4, !tbaa !11
  br label %255

255:                                              ; preds = %280, %254
  %256 = load i32, ptr %7, align 4, !tbaa !11
  %257 = load i32, ptr %9, align 4, !tbaa !11
  %258 = icmp sgt i32 %256, %257
  br i1 %258, label %259, label %283

259:                                              ; preds = %255
  %260 = load ptr, ptr %15, align 8, !tbaa !5
  %261 = load i32, ptr %7, align 4, !tbaa !11
  %262 = sub nsw i32 %261, 1
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds i16, ptr %260, i64 %263
  %265 = load i16, ptr %264, align 2, !tbaa !9
  %266 = load ptr, ptr %15, align 8, !tbaa !5
  %267 = load i32, ptr %7, align 4, !tbaa !11
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds i16, ptr %266, i64 %268
  store i16 %265, ptr %269, align 2, !tbaa !9
  %270 = load ptr, ptr %14, align 8, !tbaa !5
  %271 = load i32, ptr %7, align 4, !tbaa !11
  %272 = sub nsw i32 %271, 1
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds i16, ptr %270, i64 %273
  %275 = load i16, ptr %274, align 2, !tbaa !9
  %276 = load ptr, ptr %14, align 8, !tbaa !5
  %277 = load i32, ptr %7, align 4, !tbaa !11
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds i16, ptr %276, i64 %278
  store i16 %275, ptr %279, align 2, !tbaa !9
  br label %280

280:                                              ; preds = %259
  %281 = load i32, ptr %7, align 4, !tbaa !11
  %282 = add nsw i32 %281, -1
  store i32 %282, ptr %7, align 4, !tbaa !11
  br label %255, !llvm.loop !16

283:                                              ; preds = %255
  %284 = load i16, ptr %5, align 2, !tbaa !9
  %285 = load ptr, ptr %15, align 8, !tbaa !5
  %286 = load i32, ptr %9, align 4, !tbaa !11
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds i16, ptr %285, i64 %287
  store i16 %284, ptr %288, align 2, !tbaa !9
  %289 = load ptr, ptr %14, align 8, !tbaa !5
  %290 = load i32, ptr %9, align 4, !tbaa !11
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds i16, ptr %289, i64 %291
  store i16 1, ptr %292, align 2, !tbaa !9
  br label %293

293:                                              ; preds = %283, %251
  %294 = load ptr, ptr %4, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.VadInstT_, ptr %294, i32 0, i32 7
  %296 = load i32, ptr %295, align 4, !tbaa !17
  %297 = icmp sgt i32 %296, 2
  br i1 %297, label %298, label %302

298:                                              ; preds = %293
  %299 = load ptr, ptr %15, align 8, !tbaa !5
  %300 = getelementptr inbounds i16, ptr %299, i64 2
  %301 = load i16, ptr %300, align 2, !tbaa !9
  store i16 %301, ptr %11, align 2, !tbaa !9
  br label %312

302:                                              ; preds = %293
  %303 = load ptr, ptr %4, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.VadInstT_, ptr %303, i32 0, i32 7
  %305 = load i32, ptr %304, align 4, !tbaa !17
  %306 = icmp sgt i32 %305, 0
  br i1 %306, label %307, label %311

307:                                              ; preds = %302
  %308 = load ptr, ptr %15, align 8, !tbaa !5
  %309 = getelementptr inbounds i16, ptr %308, i64 0
  %310 = load i16, ptr %309, align 2, !tbaa !9
  store i16 %310, ptr %11, align 2, !tbaa !9
  br label %311

311:                                              ; preds = %307, %302
  br label %312

312:                                              ; preds = %311, %298
  %313 = load ptr, ptr %4, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.VadInstT_, ptr %313, i32 0, i32 7
  %315 = load i32, ptr %314, align 4, !tbaa !17
  %316 = icmp sgt i32 %315, 0
  br i1 %316, label %317, label %331

317:                                              ; preds = %312
  %318 = load i16, ptr %11, align 2, !tbaa !9
  %319 = sext i16 %318 to i32
  %320 = load ptr, ptr %4, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.VadInstT_, ptr %320, i32 0, i32 12
  %322 = load i32, ptr %6, align 4, !tbaa !11
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds [6 x i16], ptr %321, i64 0, i64 %323
  %325 = load i16, ptr %324, align 2, !tbaa !9
  %326 = sext i16 %325 to i32
  %327 = icmp slt i32 %319, %326
  br i1 %327, label %328, label %329

328:                                              ; preds = %317
  store i16 6553, ptr %12, align 2, !tbaa !9
  br label %330

329:                                              ; preds = %317
  store i16 32439, ptr %12, align 2, !tbaa !9
  br label %330

330:                                              ; preds = %329, %328
  br label %331

331:                                              ; preds = %330, %312
  %332 = load i16, ptr %12, align 2, !tbaa !9
  %333 = sext i16 %332 to i32
  %334 = add nsw i32 %333, 1
  %335 = load ptr, ptr %4, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.VadInstT_, ptr %335, i32 0, i32 12
  %337 = load i32, ptr %6, align 4, !tbaa !11
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds [6 x i16], ptr %336, i64 0, i64 %338
  %340 = load i16, ptr %339, align 2, !tbaa !9
  %341 = sext i16 %340 to i32
  %342 = mul nsw i32 %334, %341
  store i32 %342, ptr %13, align 4, !tbaa !11
  %343 = load i16, ptr %12, align 2, !tbaa !9
  %344 = sext i16 %343 to i32
  %345 = sub nsw i32 32767, %344
  %346 = load i16, ptr %11, align 2, !tbaa !9
  %347 = sext i16 %346 to i32
  %348 = mul nsw i32 %345, %347
  %349 = load i32, ptr %13, align 4, !tbaa !11
  %350 = add nsw i32 %349, %348
  store i32 %350, ptr %13, align 4, !tbaa !11
  %351 = load i32, ptr %13, align 4, !tbaa !11
  %352 = add nsw i32 %351, 16384
  store i32 %352, ptr %13, align 4, !tbaa !11
  %353 = load i32, ptr %13, align 4, !tbaa !11
  %354 = ashr i32 %353, 15
  %355 = trunc i32 %354 to i16
  %356 = load ptr, ptr %4, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.VadInstT_, ptr %356, i32 0, i32 12
  %358 = load i32, ptr %6, align 4, !tbaa !11
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds [6 x i16], ptr %357, i64 0, i64 %359
  store i16 %355, ptr %360, align 2, !tbaa !9
  %361 = load ptr, ptr %4, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.VadInstT_, ptr %361, i32 0, i32 12
  %363 = load i32, ptr %6, align 4, !tbaa !11
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds [6 x i16], ptr %362, i64 0, i64 %364
  %366 = load i16, ptr %365, align 2, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #3
  ret i16 %366
}

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 = { noreturn nounwind "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 = { nounwind }
attributes #4 = { noreturn nounwind }

!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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"short", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = !{!18, !12, i64 276}
!18 = !{!"VadInstT_", !12, i64 0, !7, i64 4, !19, i64 20, !7, i64 180, !7, i64 204, !7, i64 228, !7, i64 252, !12, i64 276, !10, i64 280, !10, i64 282, !7, i64 284, !7, i64 476, !7, i64 668, !7, i64 680, !7, i64 690, !7, i64 700, !7, i64 708, !7, i64 714, !7, i64 720, !7, i64 726, !12, i64 732}
!19 = !{!"", !7, i64 0, !7, i64 32, !7, i64 96, !7, i64 128}


; 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"

@.str = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [81 x i8], align 1
@__PRETTY_FUNCTION__.WebRtcVad_FindMinimum = external hidden unnamed_addr constant [56 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local signext i16 @WebRtcVad_FindMinimum(ptr nocapture noundef %0, i16 noundef signext %1, i32 noundef %2) local_unnamed_addr #0 {
  %4 = shl i32 %2, 4
  %5 = getelementptr inbounds i8, ptr %0, i64 284
  %6 = sext i32 %4 to i64
  %7 = getelementptr inbounds [96 x i16], ptr %5, i64 0, i64 %6
  %8 = getelementptr inbounds i8, ptr %0, i64 476
  %9 = getelementptr inbounds [96 x i16], ptr %8, i64 0, i64 %6
  %10 = icmp slt i32 %2, 6
  br i1 %10, label %.preheader113, label %13

.preheader113:                                    ; preds = %3
  %11 = getelementptr inbounds i8, ptr %7, i64 30
  %12 = getelementptr inbounds i8, ptr %9, i64 30
  br label %14

13:                                               ; preds = %3
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 69, ptr noundef nonnull @__PRETTY_FUNCTION__.WebRtcVad_FindMinimum) #3
  unreachable

14:                                               ; preds = %.preheader113, %27
  %indvars.iv = phi i64 [ 0, %.preheader113 ], [ %indvars.iv.next, %27 ]
  %15 = trunc nuw nsw i64 %indvars.iv to i32
  %umax = tail call i32 @llvm.umax.i32(i32 %15, i32 14)
  %16 = add nuw nsw i32 %umax, 1
  %17 = getelementptr inbounds i16, ptr %7, i64 %indvars.iv
  %18 = load i16, ptr %17, align 2, !tbaa !5
  %.not = icmp eq i16 %18, 100
  br i1 %.not, label %.preheader, label %19

.preheader:                                       ; preds = %14
  %.not121 = icmp eq i64 %indvars.iv, 15
  br i1 %.not121, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %.preheader
  %wide.trip.count = zext i32 %16 to i64
  br label %.lr.ph

19:                                               ; preds = %14
  %20 = add i16 %18, 1
  store i16 %20, ptr %17, align 2, !tbaa !5
  br label %27

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv123 = phi i64 [ %indvars.iv, %.lr.ph.preheader ], [ %indvars.iv.next124, %.lr.ph ]
  %indvars.iv.next124 = add nuw nsw i64 %indvars.iv123, 1
  %21 = getelementptr inbounds i16, ptr %9, i64 %indvars.iv.next124
  %22 = load i16, ptr %21, align 2, !tbaa !5
  %23 = getelementptr inbounds i16, ptr %9, i64 %indvars.iv123
  store i16 %22, ptr %23, align 2, !tbaa !5
  %24 = getelementptr inbounds i16, ptr %7, i64 %indvars.iv.next124
  %25 = load i16, ptr %24, align 2, !tbaa !5
  %26 = getelementptr inbounds i16, ptr %7, i64 %indvars.iv123
  store i16 %25, ptr %26, align 2, !tbaa !5
  %exitcond.not = icmp eq i64 %indvars.iv.next124, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !9

._crit_edge:                                      ; preds = %.lr.ph, %.preheader
  store i16 101, ptr %11, align 2, !tbaa !5
  store i16 10000, ptr %12, align 2, !tbaa !5
  br label %27

27:                                               ; preds = %19, %._crit_edge
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond127.not = icmp eq i64 %indvars.iv.next, 16
  br i1 %exitcond127.not, label %28, label %14, !llvm.loop !13

28:                                               ; preds = %27
  %29 = getelementptr inbounds i8, ptr %9, i64 14
  %30 = load i16, ptr %29, align 2, !tbaa !5
  %31 = icmp sgt i16 %30, %1
  br i1 %31, label %32, label %59

32:                                               ; preds = %28
  %33 = getelementptr inbounds i8, ptr %9, i64 6
  %34 = load i16, ptr %33, align 2, !tbaa !5
  %35 = icmp sgt i16 %34, %1
  br i1 %35, label %36, label %47

36:                                               ; preds = %32
  %37 = getelementptr inbounds i8, ptr %9, i64 2
  %38 = load i16, ptr %37, align 2, !tbaa !5
  %39 = icmp sgt i16 %38, %1
  br i1 %39, label %40, label %43

40:                                               ; preds = %36
  %41 = load i16, ptr %9, align 2, !tbaa !5
  %42 = icmp sle i16 %41, %1
  %. = zext i1 %42 to i64
  br label %.lr.ph119.preheader

43:                                               ; preds = %36
  %44 = getelementptr inbounds i8, ptr %9, i64 4
  %45 = load i16, ptr %44, align 2, !tbaa !5
  %46 = icmp sgt i16 %45, %1
  %.100 = select i1 %46, i64 2, i64 3
  br label %.lr.ph119.preheader

47:                                               ; preds = %32
  %48 = getelementptr inbounds i8, ptr %9, i64 10
  %49 = load i16, ptr %48, align 2, !tbaa !5
  %50 = icmp sgt i16 %49, %1
  br i1 %50, label %51, label %55

51:                                               ; preds = %47
  %52 = getelementptr inbounds i8, ptr %9, i64 8
  %53 = load i16, ptr %52, align 2, !tbaa !5
  %54 = icmp sgt i16 %53, %1
  %.101 = select i1 %54, i64 4, i64 5
  br label %.lr.ph119.preheader

55:                                               ; preds = %47
  %56 = getelementptr inbounds i8, ptr %9, i64 12
  %57 = load i16, ptr %56, align 2, !tbaa !5
  %58 = icmp sgt i16 %57, %1
  %.102 = select i1 %58, i64 6, i64 7
  br label %.lr.ph119.preheader

59:                                               ; preds = %28
  %60 = load i16, ptr %12, align 2, !tbaa !5
  %61 = icmp sgt i16 %60, %1
  br i1 %61, label %62, label %.thread

62:                                               ; preds = %59
  %63 = getelementptr inbounds i8, ptr %9, i64 22
  %64 = load i16, ptr %63, align 2, !tbaa !5
  %65 = icmp sgt i16 %64, %1
  br i1 %65, label %66, label %78

66:                                               ; preds = %62
  %67 = getelementptr inbounds i8, ptr %9, i64 18
  %68 = load i16, ptr %67, align 2, !tbaa !5
  %69 = icmp sgt i16 %68, %1
  br i1 %69, label %70, label %74

70:                                               ; preds = %66
  %71 = getelementptr inbounds i8, ptr %9, i64 16
  %72 = load i16, ptr %71, align 2, !tbaa !5
  %73 = icmp sgt i16 %72, %1
  %.103 = select i1 %73, i64 8, i64 9
  br label %.lr.ph119.preheader

74:                                               ; preds = %66
  %75 = getelementptr inbounds i8, ptr %9, i64 20
  %76 = load i16, ptr %75, align 2, !tbaa !5
  %77 = icmp sgt i16 %76, %1
  %.104 = select i1 %77, i64 10, i64 11
  br label %.lr.ph119.preheader

78:                                               ; preds = %62
  %79 = getelementptr inbounds i8, ptr %9, i64 26
  %80 = load i16, ptr %79, align 2, !tbaa !5
  %81 = icmp sgt i16 %80, %1
  br i1 %81, label %82, label %86

82:                                               ; preds = %78
  %83 = getelementptr inbounds i8, ptr %9, i64 24
  %84 = load i16, ptr %83, align 2, !tbaa !5
  %85 = icmp sgt i16 %84, %1
  %.105 = select i1 %85, i64 12, i64 13
  br label %.lr.ph119.preheader

86:                                               ; preds = %78
  %87 = getelementptr inbounds i8, ptr %9, i64 28
  %88 = load i16, ptr %87, align 2, !tbaa !5
  %89 = icmp sgt i16 %88, %1
  br i1 %89, label %.lr.ph119.preheader, label %._crit_edge120

.lr.ph119.preheader:                              ; preds = %86, %40, %43, %51, %55, %70, %74, %82
  %.096.ph = phi i64 [ %.105, %82 ], [ %.104, %74 ], [ %.103, %70 ], [ %.102, %55 ], [ %.101, %51 ], [ %.100, %43 ], [ %., %40 ], [ 14, %86 ]
  %90 = xor i64 %.096.ph, 15
  %xtraiter = and i64 %90, 1
  %91 = icmp eq i64 %.096.ph, 14
  br i1 %91, label %._crit_edge120.loopexit.unr-lcssa, label %.lr.ph119.preheader.new

.lr.ph119.preheader.new:                          ; preds = %.lr.ph119.preheader
  %unroll_iter = and i64 %90, 14
  br label %.lr.ph119

.lr.ph119:                                        ; preds = %.lr.ph119, %.lr.ph119.preheader.new
  %indvars.iv128 = phi i64 [ 15, %.lr.ph119.preheader.new ], [ %indvars.iv.next129.1, %.lr.ph119 ]
  %niter = phi i64 [ 0, %.lr.ph119.preheader.new ], [ %niter.next.1, %.lr.ph119 ]
  %indvars.iv.next129 = add nsw i64 %indvars.iv128, -1
  %92 = getelementptr inbounds i16, ptr %9, i64 %indvars.iv.next129
  %93 = load i16, ptr %92, align 2, !tbaa !5
  %94 = getelementptr inbounds i16, ptr %9, i64 %indvars.iv128
  store i16 %93, ptr %94, align 2, !tbaa !5
  %95 = getelementptr inbounds i16, ptr %7, i64 %indvars.iv.next129
  %96 = load i16, ptr %95, align 2, !tbaa !5
  %97 = getelementptr inbounds i16, ptr %7, i64 %indvars.iv128
  store i16 %96, ptr %97, align 2, !tbaa !5
  %indvars.iv.next129.1 = add nsw i64 %indvars.iv128, -2
  %98 = getelementptr inbounds i16, ptr %9, i64 %indvars.iv.next129.1
  %99 = load i16, ptr %98, align 2, !tbaa !5
  %100 = getelementptr inbounds i16, ptr %9, i64 %indvars.iv.next129
  store i16 %99, ptr %100, align 2, !tbaa !5
  %101 = getelementptr inbounds i16, ptr %7, i64 %indvars.iv.next129.1
  %102 = load i16, ptr %101, align 2, !tbaa !5
  %103 = getelementptr inbounds i16, ptr %7, i64 %indvars.iv.next129
  store i16 %102, ptr %103, align 2, !tbaa !5
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1.not = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1.not, label %._crit_edge120.loopexit.unr-lcssa, label %.lr.ph119, !llvm.loop !14

._crit_edge120.loopexit.unr-lcssa:                ; preds = %.lr.ph119, %.lr.ph119.preheader
  %indvars.iv128.unr = phi i64 [ 15, %.lr.ph119.preheader ], [ %indvars.iv.next129.1, %.lr.ph119 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge120, label %.lr.ph119.epil

.lr.ph119.epil:                                   ; preds = %._crit_edge120.loopexit.unr-lcssa
  %indvars.iv.next129.epil = add nsw i64 %indvars.iv128.unr, -1
  %104 = getelementptr inbounds i16, ptr %9, i64 %indvars.iv.next129.epil
  %105 = load i16, ptr %104, align 2, !tbaa !5
  %106 = getelementptr inbounds i16, ptr %9, i64 %indvars.iv128.unr
  store i16 %105, ptr %106, align 2, !tbaa !5
  %107 = getelementptr inbounds i16, ptr %7, i64 %indvars.iv.next129.epil
  %108 = load i16, ptr %107, align 2, !tbaa !5
  %109 = getelementptr inbounds i16, ptr %7, i64 %indvars.iv128.unr
  store i16 %108, ptr %109, align 2, !tbaa !5
  br label %._crit_edge120

._crit_edge120:                                   ; preds = %.lr.ph119.epil, %._crit_edge120.loopexit.unr-lcssa, %86
  %.pre-phi135 = phi i64 [ 15, %86 ], [ %.096.ph, %._crit_edge120.loopexit.unr-lcssa ], [ %.096.ph, %.lr.ph119.epil ]
  %110 = getelementptr inbounds i16, ptr %9, i64 %.pre-phi135
  store i16 %1, ptr %110, align 2, !tbaa !5
  %111 = getelementptr inbounds i16, ptr %7, i64 %.pre-phi135
  store i16 1, ptr %111, align 2, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %59, %._crit_edge120
  %112 = getelementptr inbounds i8, ptr %0, i64 276
  %113 = load i32, ptr %112, align 4, !tbaa !15
  %114 = icmp sgt i32 %113, 2
  br i1 %114, label %115, label %117

115:                                              ; preds = %.thread
  %116 = getelementptr inbounds i8, ptr %9, i64 4
  br label %119

117:                                              ; preds = %.thread
  %118 = icmp sgt i32 %113, 0
  br i1 %118, label %119, label %._crit_edge131

._crit_edge131:                                   ; preds = %117
  %.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 668
  %.phi.trans.insert132 = sext i32 %2 to i64
  %.phi.trans.insert133 = getelementptr inbounds [6 x i16], ptr %.phi.trans.insert, i64 0, i64 %.phi.trans.insert132
  %.pre = load i16, ptr %.phi.trans.insert133, align 2, !tbaa !5
  br label %126

119:                                              ; preds = %117, %115
  %.095.ph.in = phi ptr [ %116, %115 ], [ %9, %117 ]
  %.095.ph = load i16, ptr %.095.ph.in, align 2, !tbaa !5
  %120 = getelementptr inbounds i8, ptr %0, i64 668
  %121 = sext i32 %2 to i64
  %122 = getelementptr inbounds [6 x i16], ptr %120, i64 0, i64 %121
  %123 = load i16, ptr %122, align 2, !tbaa !5
  %124 = icmp slt i16 %.095.ph, %123
  %.107 = select i1 %124, i32 6553, i32 32439
  %125 = sext i16 %.095.ph to i32
  br label %126

126:                                              ; preds = %._crit_edge131, %119
  %.pre-phi = phi i64 [ %.phi.trans.insert132, %._crit_edge131 ], [ %121, %119 ]
  %127 = phi i16 [ %.pre, %._crit_edge131 ], [ %123, %119 ]
  %.095111 = phi i32 [ 1600, %._crit_edge131 ], [ %125, %119 ]
  %.094 = phi i32 [ 0, %._crit_edge131 ], [ %.107, %119 ]
  %128 = add nuw nsw i32 %.094, 1
  %129 = getelementptr inbounds i8, ptr %0, i64 668
  %130 = getelementptr inbounds [6 x i16], ptr %129, i64 0, i64 %.pre-phi
  %131 = sext i16 %127 to i32
  %132 = mul nsw i32 %128, %131
  %133 = xor i32 %.094, 32767
  %134 = mul nsw i32 %133, %.095111
  %135 = add nsw i32 %134, 16384
  %136 = add nsw i32 %135, %132
  %137 = lshr i32 %136, 15
  %138 = trunc i32 %137 to i16
  store i16 %138, ptr %130, align 2, !tbaa !5
  ret i16 %138
}

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.i32(i32, i32) #2

attributes #0 = { 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 #1 = { noreturn nounwind "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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { noreturn nounwind }

!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 = !{!"short", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10, !11, !12}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.unroll.runtime.disable"}
!12 = !{!"llvm.loop.isvectorized", i32 1}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = !{!16, !17, i64 276}
!16 = !{!"VadInstT_", !17, i64 0, !7, i64 4, !18, i64 20, !7, i64 180, !7, i64 204, !7, i64 228, !7, i64 252, !17, i64 276, !6, i64 280, !6, i64 282, !7, i64 284, !7, i64 476, !7, i64 668, !7, i64 680, !7, i64 690, !7, i64 700, !7, i64 708, !7, i64 714, !7, i64 720, !7, i64 726, !17, i64 732}
!17 = !{!"int", !7, i64 0}
!18 = !{!"", !7, i64 0, !7, i64 32, !7, i64 96, !7, i64 128}


; Effective O3 passes: ADCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass