; LLVM IR from Ryuk17/SpeechAlgorithms :: WebRTC_AGC/src (agc)

; 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.LegacyAgc = type { i32, i16, i16, i16, i8, %struct.WebRtcAgcConfig, %struct.WebRtcAgcConfig, i16, i16, i32, i32, i32, i32, i32, i32, i32, i16, i16, [8 x i32], i32, i32, i32, i32, i32, i32, [10 x i32], [2 x [5 x i32]], [2 x [10 x i32]], i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i32, i16, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, %struct.AgcVad, %struct.DigitalAgc, i16 }
%struct.WebRtcAgcConfig = type { i16, i16, i8 }
%struct.AgcVad = type { [8 x i32], i16, i16, i16, i16, i32, i16, i16, i32, i16 }
%struct.DigitalAgc = type { i32, i32, i32, [32 x i32], i16, i16, %struct.AgcVad, %struct.AgcVad }

@kOffset1 = external hidden constant [8 x i16], align 16
@kSlope1 = external hidden constant [8 x i16], align 16
@kOffset2 = external hidden constant [8 x i16], align 16
@kSlope2 = external hidden constant [8 x i16], align 16

; 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
declare dso_local void @WebRtcAgc_SaturationCtrl(ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @WebRtcAgc_ZeroCtrl(ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @WebRtcAgc_SpeakerInactiveCtrl(ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @WebRtcAgc_ExpCurve(i16 noundef signext, ptr noundef) #1

; Function Attrs: nounwind uwtable
define dso_local i32 @WebRtcAgc_ProcessAnalog(ptr noundef %0, i32 noundef %1, ptr noundef %2, i16 noundef signext %3, i16 noundef signext %4, ptr noundef %5) #1 {
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i16, align 2
  %12 = alloca i16, align 2
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i16, align 2
  %20 = alloca i8, align 1
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i16, align 2
  %25 = alloca i16, align 2
  %26 = alloca i16, align 2
  %27 = alloca i16, align 2
  %28 = alloca i16, align 2
  %29 = alloca i16, align 2
  store ptr %0, ptr %8, align 8, !tbaa !5
  store i32 %1, ptr %9, align 4, !tbaa !9
  store ptr %2, ptr %10, align 8, !tbaa !5
  store i16 %3, ptr %11, align 2, !tbaa !11
  store i16 %4, ptr %12, align 2, !tbaa !11
  store ptr %5, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #2
  call void @llvm.lifetime.start.p0(i64 2, ptr %19) #2
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #2
  store i8 0, ptr %20, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #2
  %30 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %30, ptr %21, align 8, !tbaa !5
  %31 = load i32, ptr %9, align 4, !tbaa !9
  %32 = load ptr, ptr %21, align 8, !tbaa !5
  %33 = getelementptr inbounds %struct.LegacyAgc, ptr %32, i32 0, i32 53
  %34 = load i16, ptr %33, align 4, !tbaa !14
  %35 = sext i16 %34 to i32
  %36 = shl i32 %31, %35
  store i32 %36, ptr %17, align 4, !tbaa !9
  %37 = load i32, ptr %17, align 4, !tbaa !9
  %38 = load ptr, ptr %21, align 8, !tbaa !5
  %39 = getelementptr inbounds %struct.LegacyAgc, ptr %38, i32 0, i32 47
  %40 = load i32, ptr %39, align 4, !tbaa !19
  %41 = icmp sgt i32 %37, %40
  br i1 %41, label %42, label %43

42:                                               ; preds = %6
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %22, align 4
  br label %966

43:                                               ; preds = %6
  %44 = load i32, ptr %17, align 4, !tbaa !9
  %45 = load ptr, ptr %21, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct.LegacyAgc, ptr %45, i32 0, i32 49
  %47 = load i32, ptr %46, align 4, !tbaa !20
  %48 = icmp slt i32 %44, %47
  br i1 %48, label %49, label %50

49:                                               ; preds = %43
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %22, align 4
  br label %966

50:                                               ; preds = %43
  br label %51

51:                                               ; preds = %50
  %52 = load ptr, ptr %21, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.LegacyAgc, ptr %52, i32 0, i32 35
  %54 = load i16, ptr %53, align 2, !tbaa !21
  %55 = sext i16 %54 to i32
  %56 = icmp eq i32 %55, 0
  br i1 %56, label %57, label %89

57:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #2
  %58 = load ptr, ptr %21, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.LegacyAgc, ptr %58, i32 0, i32 35
  store i16 1, ptr %59, align 2, !tbaa !21
  %60 = load ptr, ptr %21, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.LegacyAgc, ptr %60, i32 0, i32 46
  %62 = load i32, ptr %61, align 4, !tbaa !22
  %63 = load ptr, ptr %21, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.LegacyAgc, ptr %63, i32 0, i32 49
  %65 = load i32, ptr %64, align 4, !tbaa !20
  %66 = sub nsw i32 %62, %65
  %67 = mul nsw i32 %66, 51
  %68 = ashr i32 %67, 9
  store i32 %68, ptr %16, align 4, !tbaa !9
  %69 = load ptr, ptr %21, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.LegacyAgc, ptr %69, i32 0, i32 49
  %71 = load i32, ptr %70, align 4, !tbaa !20
  %72 = load i32, ptr %16, align 4, !tbaa !9
  %73 = add nsw i32 %71, %72
  store i32 %73, ptr %23, align 4, !tbaa !9
  %74 = load i32, ptr %17, align 4, !tbaa !9
  %75 = load i32, ptr %23, align 4, !tbaa !9
  %76 = icmp slt i32 %74, %75
  br i1 %76, label %77, label %85

77:                                               ; preds = %57
  %78 = load ptr, ptr %21, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.LegacyAgc, ptr %78, i32 0, i32 3
  %80 = load i16, ptr %79, align 4, !tbaa !23
  %81 = sext i16 %80 to i32
  %82 = icmp eq i32 %81, 1
  br i1 %82, label %83, label %85

83:                                               ; preds = %77
  %84 = load i32, ptr %23, align 4, !tbaa !9
  store i32 %84, ptr %17, align 4, !tbaa !9
  br label %85

85:                                               ; preds = %83, %77, %57
  %86 = load i32, ptr %17, align 4, !tbaa !9
  %87 = load ptr, ptr %21, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.LegacyAgc, ptr %87, i32 0, i32 45
  store i32 %86, ptr %88, align 4, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #2
  br label %89

89:                                               ; preds = %85, %51
  %90 = load i32, ptr %17, align 4, !tbaa !9
  %91 = load ptr, ptr %21, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.LegacyAgc, ptr %91, i32 0, i32 47
  %93 = load i32, ptr %92, align 4, !tbaa !19
  %94 = icmp eq i32 %90, %93
  br i1 %94, label %95, label %107

95:                                               ; preds = %89
  %96 = load ptr, ptr %21, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.LegacyAgc, ptr %96, i32 0, i32 45
  %98 = load i32, ptr %97, align 4, !tbaa !24
  %99 = load ptr, ptr %21, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct.LegacyAgc, ptr %99, i32 0, i32 47
  %101 = load i32, ptr %100, align 4, !tbaa !19
  %102 = icmp sgt i32 %98, %101
  br i1 %102, label %103, label %107

103:                                              ; preds = %95
  %104 = load ptr, ptr %21, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.LegacyAgc, ptr %104, i32 0, i32 45
  %106 = load i32, ptr %105, align 4, !tbaa !24
  store i32 %106, ptr %17, align 4, !tbaa !9
  br label %107

107:                                              ; preds = %103, %95, %89
  %108 = load i32, ptr %17, align 4, !tbaa !9
  %109 = load ptr, ptr %21, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.LegacyAgc, ptr %109, i32 0, i32 45
  %111 = load i32, ptr %110, align 4, !tbaa !24
  %112 = icmp ne i32 %108, %111
  br i1 %112, label %113, label %137

113:                                              ; preds = %107
  %114 = load i32, ptr %17, align 4, !tbaa !9
  %115 = load ptr, ptr %21, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.LegacyAgc, ptr %115, i32 0, i32 50
  %117 = load i32, ptr %116, align 4, !tbaa !25
  %118 = icmp slt i32 %114, %117
  br i1 %118, label %119, label %137

119:                                              ; preds = %113
  %120 = load ptr, ptr %21, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.LegacyAgc, ptr %120, i32 0, i32 46
  %122 = load i32, ptr %121, align 4, !tbaa !22
  %123 = load ptr, ptr %21, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.LegacyAgc, ptr %123, i32 0, i32 49
  %125 = load i32, ptr %124, align 4, !tbaa !20
  %126 = sub nsw i32 %122, %125
  %127 = mul nsw i32 %126, 51
  %128 = ashr i32 %127, 9
  store i32 %128, ptr %16, align 4, !tbaa !9
  %129 = load ptr, ptr %21, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.LegacyAgc, ptr %129, i32 0, i32 49
  %131 = load i32, ptr %130, align 4, !tbaa !20
  %132 = load i32, ptr %16, align 4, !tbaa !9
  %133 = add nsw i32 %131, %132
  store i32 %133, ptr %17, align 4, !tbaa !9
  %134 = load i32, ptr %17, align 4, !tbaa !9
  %135 = load ptr, ptr %21, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.LegacyAgc, ptr %135, i32 0, i32 45
  store i32 %134, ptr %136, align 4, !tbaa !24
  br label %137

137:                                              ; preds = %119, %113, %107
  %138 = load i32, ptr %17, align 4, !tbaa !9
  %139 = load ptr, ptr %21, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.LegacyAgc, ptr %139, i32 0, i32 45
  %141 = load i32, ptr %140, align 4, !tbaa !24
  %142 = icmp ne i32 %138, %141
  br i1 %142, label %143, label %158

143:                                              ; preds = %137
  %144 = load i32, ptr %9, align 4, !tbaa !9
  %145 = load ptr, ptr %21, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.LegacyAgc, ptr %145, i32 0, i32 52
  %147 = load i32, ptr %146, align 4, !tbaa !26
  %148 = icmp eq i32 %144, %147
  br i1 %148, label %149, label %153

149:                                              ; preds = %143
  %150 = load ptr, ptr %21, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.LegacyAgc, ptr %150, i32 0, i32 45
  %152 = load i32, ptr %151, align 4, !tbaa !24
  store i32 %152, ptr %17, align 4, !tbaa !9
  br label %157

153:                                              ; preds = %143
  %154 = load i32, ptr %17, align 4, !tbaa !9
  %155 = load ptr, ptr %21, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.LegacyAgc, ptr %155, i32 0, i32 45
  store i32 %154, ptr %156, align 4, !tbaa !24
  br label %157

157:                                              ; preds = %153, %149
  br label %158

158:                                              ; preds = %157, %137
  %159 = load i32, ptr %17, align 4, !tbaa !9
  %160 = load ptr, ptr %21, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.LegacyAgc, ptr %160, i32 0, i32 46
  %162 = load i32, ptr %161, align 4, !tbaa !22
  %163 = icmp sgt i32 %159, %162
  br i1 %163, label %164, label %168

164:                                              ; preds = %158
  %165 = load i32, ptr %17, align 4, !tbaa !9
  %166 = load ptr, ptr %21, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.LegacyAgc, ptr %166, i32 0, i32 46
  store i32 %165, ptr %167, align 4, !tbaa !22
  br label %168

168:                                              ; preds = %164, %158
  %169 = load i32, ptr %9, align 4, !tbaa !9
  %170 = load ptr, ptr %21, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.LegacyAgc, ptr %170, i32 0, i32 52
  store i32 %169, ptr %171, align 4, !tbaa !26
  %172 = load ptr, ptr %21, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.LegacyAgc, ptr %172, i32 0, i32 45
  %174 = load i32, ptr %173, align 4, !tbaa !24
  store i32 %174, ptr %18, align 4, !tbaa !9
  %175 = load ptr, ptr %21, align 8, !tbaa !5
  %176 = load ptr, ptr %21, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.LegacyAgc, ptr %176, i32 0, i32 27
  %178 = getelementptr inbounds [2 x [10 x i32]], ptr %177, i64 0, i64 0
  %179 = getelementptr inbounds [10 x i32], ptr %178, i64 0, i64 0
  call void @WebRtcAgc_SaturationCtrl(ptr noundef %175, ptr noundef %20, ptr noundef %179)
  %180 = load i8, ptr %20, align 1, !tbaa !13
  %181 = zext i8 %180 to i32
  %182 = icmp eq i32 %181, 1
  br i1 %182, label %183, label %260

183:                                              ; preds = %168
  %184 = load ptr, ptr %21, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.LegacyAgc, ptr %184, i32 0, i32 23
  %186 = load i32, ptr %185, align 4, !tbaa !27
  %187 = sdiv i32 %186, 8
  %188 = mul nsw i32 %187, 7
  %189 = load ptr, ptr %21, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.LegacyAgc, ptr %189, i32 0, i32 23
  store i32 %188, ptr %190, align 4, !tbaa !27
  %191 = load ptr, ptr %21, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.LegacyAgc, ptr %191, i32 0, i32 45
  %193 = load i32, ptr %192, align 4, !tbaa !24
  %194 = load ptr, ptr %21, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.LegacyAgc, ptr %194, i32 0, i32 51
  store i32 %193, ptr %195, align 4, !tbaa !28
  %196 = load i32, ptr %17, align 4, !tbaa !9
  %197 = load ptr, ptr %21, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.LegacyAgc, ptr %197, i32 0, i32 49
  %199 = load i32, ptr %198, align 4, !tbaa !20
  %200 = sub nsw i32 %196, %199
  store i32 %200, ptr %16, align 4, !tbaa !9
  %201 = load i32, ptr %16, align 4, !tbaa !9
  %202 = mul i32 29591, %201
  store i32 %202, ptr %14, align 4, !tbaa !9
  %203 = load i32, ptr %14, align 4, !tbaa !9
  %204 = lshr i32 %203, 15
  %205 = load ptr, ptr %21, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.LegacyAgc, ptr %205, i32 0, i32 49
  %207 = load i32, ptr %206, align 4, !tbaa !20
  %208 = add i32 %204, %207
  %209 = load ptr, ptr %21, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.LegacyAgc, ptr %209, i32 0, i32 45
  store i32 %208, ptr %210, align 4, !tbaa !24
  %211 = load ptr, ptr %21, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.LegacyAgc, ptr %211, i32 0, i32 45
  %213 = load i32, ptr %212, align 4, !tbaa !24
  %214 = load i32, ptr %18, align 4, !tbaa !9
  %215 = sub nsw i32 %214, 2
  %216 = icmp sgt i32 %213, %215
  br i1 %216, label %217, label %222

217:                                              ; preds = %183
  %218 = load i32, ptr %18, align 4, !tbaa !9
  %219 = sub nsw i32 %218, 2
  %220 = load ptr, ptr %21, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.LegacyAgc, ptr %220, i32 0, i32 45
  store i32 %219, ptr %221, align 4, !tbaa !24
  br label %222

222:                                              ; preds = %217, %183
  %223 = load ptr, ptr %21, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.LegacyAgc, ptr %223, i32 0, i32 45
  %225 = load i32, ptr %224, align 4, !tbaa !24
  store i32 %225, ptr %17, align 4, !tbaa !9
  %226 = load ptr, ptr %21, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.LegacyAgc, ptr %226, i32 0, i32 45
  %228 = load i32, ptr %227, align 4, !tbaa !24
  %229 = load ptr, ptr %21, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.LegacyAgc, ptr %229, i32 0, i32 50
  %231 = load i32, ptr %230, align 4, !tbaa !25
  %232 = icmp slt i32 %228, %231
  br i1 %232, label %233, label %235

233:                                              ; preds = %222
  %234 = load ptr, ptr %13, align 8, !tbaa !5
  store i8 1, ptr %234, align 1, !tbaa !13
  br label %235

235:                                              ; preds = %233, %222
  %236 = load ptr, ptr %21, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.LegacyAgc, ptr %236, i32 0, i32 33
  store i16 -100, ptr %237, align 2, !tbaa !29
  %238 = load ptr, ptr %21, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.LegacyAgc, ptr %238, i32 0, i32 39
  store i16 0, ptr %239, align 2, !tbaa !30
  %240 = load ptr, ptr %21, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.LegacyAgc, ptr %240, i32 0, i32 24
  store i32 0, ptr %241, align 4, !tbaa !31
  %242 = load ptr, ptr %21, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.LegacyAgc, ptr %242, i32 0, i32 38
  store i16 520, ptr %243, align 4, !tbaa !32
  %244 = load ptr, ptr %21, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.LegacyAgc, ptr %244, i32 0, i32 37
  store i16 340, ptr %245, align 2, !tbaa !33
  %246 = load ptr, ptr %21, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.LegacyAgc, ptr %246, i32 0, i32 34
  store i16 0, ptr %247, align 4, !tbaa !34
  %248 = load ptr, ptr %21, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.LegacyAgc, ptr %248, i32 0, i32 40
  store i16 0, ptr %249, align 4, !tbaa !35
  %250 = load ptr, ptr %21, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.LegacyAgc, ptr %250, i32 0, i32 10
  %252 = load i32, ptr %251, align 4, !tbaa !36
  %253 = load ptr, ptr %21, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.LegacyAgc, ptr %253, i32 0, i32 19
  store i32 %252, ptr %254, align 4, !tbaa !37
  %255 = load ptr, ptr %21, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.LegacyAgc, ptr %255, i32 0, i32 11
  %257 = load i32, ptr %256, align 4, !tbaa !38
  %258 = load ptr, ptr %21, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.LegacyAgc, ptr %258, i32 0, i32 20
  store i32 %257, ptr %259, align 4, !tbaa !39
  br label %260

260:                                              ; preds = %235, %168
  %261 = load ptr, ptr %21, align 8, !tbaa !5
  %262 = load ptr, ptr %21, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.LegacyAgc, ptr %262, i32 0, i32 27
  %264 = getelementptr inbounds [2 x [10 x i32]], ptr %263, i64 0, i64 0
  %265 = getelementptr inbounds [10 x i32], ptr %264, i64 0, i64 0
  call void @WebRtcAgc_ZeroCtrl(ptr noundef %261, ptr noundef %17, ptr noundef %265)
  %266 = load ptr, ptr %21, align 8, !tbaa !5
  call void @WebRtcAgc_SpeakerInactiveCtrl(ptr noundef %266)
  store i16 0, ptr %19, align 2, !tbaa !11
  br label %267

267:                                              ; preds = %883, %260
  %268 = load i16, ptr %19, align 2, !tbaa !11
  %269 = sext i16 %268 to i32
  %270 = icmp slt i32 %269, 5
  br i1 %270, label %271, label %886

271:                                              ; preds = %267
  %272 = load ptr, ptr %21, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.LegacyAgc, ptr %272, i32 0, i32 26
  %274 = getelementptr inbounds [2 x [5 x i32]], ptr %273, i64 0, i64 0
  %275 = load i16, ptr %19, align 2, !tbaa !11
  %276 = sext i16 %275 to i64
  %277 = getelementptr inbounds [5 x i32], ptr %274, i64 0, i64 %276
  %278 = load i32, ptr %277, align 4, !tbaa !9
  store i32 %278, ptr %15, align 4, !tbaa !9
  %279 = load i32, ptr %15, align 4, !tbaa !9
  %280 = load ptr, ptr %21, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.LegacyAgc, ptr %280, i32 0, i32 25
  %282 = load ptr, ptr %21, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.LegacyAgc, ptr %282, i32 0, i32 28
  %284 = load i16, ptr %283, align 4, !tbaa !40
  %285 = sext i16 %284 to i64
  %286 = getelementptr inbounds [10 x i32], ptr %281, i64 0, i64 %285
  %287 = load i32, ptr %286, align 4, !tbaa !9
  %288 = sub nsw i32 %279, %287
  %289 = ashr i32 %288, 3
  store i32 %289, ptr %16, align 4, !tbaa !9
  %290 = load ptr, ptr %21, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.LegacyAgc, ptr %290, i32 0, i32 21
  %292 = load i32, ptr %291, align 4, !tbaa !41
  %293 = load i32, ptr %16, align 4, !tbaa !9
  %294 = add nsw i32 %292, %293
  %295 = load ptr, ptr %21, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.LegacyAgc, ptr %295, i32 0, i32 21
  store i32 %294, ptr %296, align 4, !tbaa !41
  %297 = load i32, ptr %15, align 4, !tbaa !9
  %298 = load ptr, ptr %21, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.LegacyAgc, ptr %298, i32 0, i32 25
  %300 = load ptr, ptr %21, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.LegacyAgc, ptr %300, i32 0, i32 28
  %302 = load i16, ptr %301, align 4, !tbaa !40
  %303 = sext i16 %302 to i64
  %304 = getelementptr inbounds [10 x i32], ptr %299, i64 0, i64 %303
  store i32 %297, ptr %304, align 4, !tbaa !9
  %305 = load ptr, ptr %21, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.LegacyAgc, ptr %305, i32 0, i32 28
  %307 = load i16, ptr %306, align 4, !tbaa !40
  %308 = add i16 %307, 1
  store i16 %308, ptr %306, align 4, !tbaa !40
  %309 = load ptr, ptr %21, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.LegacyAgc, ptr %309, i32 0, i32 28
  %311 = load i16, ptr %310, align 4, !tbaa !40
  %312 = sext i16 %311 to i32
  %313 = icmp eq i32 %312, 10
  br i1 %313, label %314, label %317

314:                                              ; preds = %271
  %315 = load ptr, ptr %21, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.LegacyAgc, ptr %315, i32 0, i32 28
  store i16 0, ptr %316, align 4, !tbaa !40
  br label %317

317:                                              ; preds = %314, %271
  %318 = load i32, ptr %15, align 4, !tbaa !9
  %319 = load ptr, ptr %21, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.LegacyAgc, ptr %319, i32 0, i32 22
  %321 = load i32, ptr %320, align 4, !tbaa !42
  %322 = sub nsw i32 %318, %321
  %323 = ashr i32 %322, 6
  store i32 %323, ptr %16, align 4, !tbaa !9
  %324 = load ptr, ptr %21, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.LegacyAgc, ptr %324, i32 0, i32 22
  %326 = load i32, ptr %325, align 4, !tbaa !42
  %327 = load i32, ptr %16, align 4, !tbaa !9
  %328 = add nsw i32 %326, %327
  %329 = load ptr, ptr %21, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.LegacyAgc, ptr %329, i32 0, i32 22
  store i32 %328, ptr %330, align 4, !tbaa !42
  %331 = load i16, ptr %11, align 2, !tbaa !11
  %332 = sext i16 %331 to i32
  %333 = load ptr, ptr %21, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.LegacyAgc, ptr %333, i32 0, i32 30
  %335 = load i16, ptr %334, align 4, !tbaa !43
  %336 = sext i16 %335 to i32
  %337 = icmp sgt i32 %332, %336
  br i1 %337, label %338, label %882

338:                                              ; preds = %317
  %339 = load ptr, ptr %21, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.LegacyAgc, ptr %339, i32 0, i32 39
  %341 = load i16, ptr %340, align 2, !tbaa !30
  %342 = sext i16 %341 to i32
  %343 = icmp slt i32 %342, 250
  br i1 %343, label %344, label %365

344:                                              ; preds = %338
  %345 = load ptr, ptr %21, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.LegacyAgc, ptr %345, i32 0, i32 39
  %347 = load i16, ptr %346, align 2, !tbaa !30
  %348 = sext i16 %347 to i32
  %349 = add nsw i32 %348, 2
  %350 = trunc i32 %349 to i16
  store i16 %350, ptr %346, align 2, !tbaa !30
  %351 = load ptr, ptr %21, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.LegacyAgc, ptr %351, i32 0, i32 22
  %353 = load i32, ptr %352, align 4, !tbaa !42
  %354 = load ptr, ptr %21, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.LegacyAgc, ptr %354, i32 0, i32 24
  %356 = load i32, ptr %355, align 4, !tbaa !31
  %357 = icmp sgt i32 %353, %356
  br i1 %357, label %358, label %364

358:                                              ; preds = %344
  %359 = load ptr, ptr %21, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.LegacyAgc, ptr %359, i32 0, i32 22
  %361 = load i32, ptr %360, align 4, !tbaa !42
  %362 = load ptr, ptr %21, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.LegacyAgc, ptr %362, i32 0, i32 24
  store i32 %361, ptr %363, align 4, !tbaa !31
  br label %364

364:                                              ; preds = %358, %344
  br label %387

365:                                              ; preds = %338
  %366 = load ptr, ptr %21, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.LegacyAgc, ptr %366, i32 0, i32 39
  %368 = load i16, ptr %367, align 2, !tbaa !30
  %369 = sext i16 %368 to i32
  %370 = icmp eq i32 %369, 250
  br i1 %370, label %371, label %386

371:                                              ; preds = %365
  %372 = load ptr, ptr %21, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.LegacyAgc, ptr %372, i32 0, i32 39
  %374 = load i16, ptr %373, align 2, !tbaa !30
  %375 = sext i16 %374 to i32
  %376 = add nsw i32 %375, 2
  %377 = trunc i32 %376 to i16
  store i16 %377, ptr %373, align 2, !tbaa !30
  %378 = load ptr, ptr %21, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.LegacyAgc, ptr %378, i32 0, i32 24
  %380 = load i32, ptr %379, align 4, !tbaa !31
  %381 = ashr i32 %380, 3
  store i32 %381, ptr %16, align 4, !tbaa !9
  %382 = load i32, ptr %16, align 4, !tbaa !9
  %383 = mul nsw i32 %382, 10
  %384 = load ptr, ptr %21, align 8, !tbaa !5
  %385 = getelementptr inbounds %struct.LegacyAgc, ptr %384, i32 0, i32 23
  store i32 %383, ptr %385, align 4, !tbaa !27
  br label %386

386:                                              ; preds = %371, %365
  br label %387

387:                                              ; preds = %386, %364
  %388 = load ptr, ptr %21, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.LegacyAgc, ptr %388, i32 0, i32 21
  %390 = load i32, ptr %389, align 4, !tbaa !41
  %391 = load ptr, ptr %21, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.LegacyAgc, ptr %391, i32 0, i32 23
  %393 = load i32, ptr %392, align 4, !tbaa !27
  %394 = sub nsw i32 %390, %393
  %395 = ashr i32 %394, 10
  store i32 %395, ptr %16, align 4, !tbaa !9
  %396 = load ptr, ptr %21, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.LegacyAgc, ptr %396, i32 0, i32 23
  %398 = load i32, ptr %397, align 4, !tbaa !27
  %399 = load i32, ptr %16, align 4, !tbaa !9
  %400 = add nsw i32 %398, %399
  %401 = load ptr, ptr %21, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.LegacyAgc, ptr %401, i32 0, i32 23
  store i32 %400, ptr %402, align 4, !tbaa !27
  %403 = load ptr, ptr %21, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.LegacyAgc, ptr %403, i32 0, i32 23
  %405 = load i32, ptr %404, align 4, !tbaa !27
  %406 = load ptr, ptr %21, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.LegacyAgc, ptr %406, i32 0, i32 14
  %408 = load i32, ptr %407, align 4, !tbaa !44
  %409 = icmp sgt i32 %405, %408
  br i1 %409, label %410, label %511

410:                                              ; preds = %387
  %411 = load ptr, ptr %21, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.LegacyAgc, ptr %411, i32 0, i32 33
  %413 = load i16, ptr %412, align 2, !tbaa !29
  %414 = sext i16 %413 to i32
  %415 = add nsw i32 %414, 2
  %416 = trunc i32 %415 to i16
  store i16 %416, ptr %412, align 2, !tbaa !29
  %417 = load ptr, ptr %21, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.LegacyAgc, ptr %417, i32 0, i32 32
  store i16 0, ptr %418, align 4, !tbaa !45
  %419 = load ptr, ptr %21, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct.LegacyAgc, ptr %419, i32 0, i32 34
  store i16 0, ptr %420, align 4, !tbaa !34
  %421 = load ptr, ptr %21, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.LegacyAgc, ptr %421, i32 0, i32 33
  %423 = load i16, ptr %422, align 2, !tbaa !29
  %424 = sext i16 %423 to i32
  %425 = load ptr, ptr %21, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.LegacyAgc, ptr %425, i32 0, i32 37
  %427 = load i16, ptr %426, align 2, !tbaa !33
  %428 = sext i16 %427 to i32
  %429 = icmp sgt i32 %424, %428
  br i1 %429, label %430, label %510

430:                                              ; preds = %410
  %431 = load ptr, ptr %21, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.LegacyAgc, ptr %431, i32 0, i32 33
  store i16 0, ptr %432, align 2, !tbaa !29
  %433 = load ptr, ptr %21, align 8, !tbaa !5
  %434 = getelementptr inbounds %struct.LegacyAgc, ptr %433, i32 0, i32 23
  %435 = load i32, ptr %434, align 4, !tbaa !27
  %436 = ashr i32 %435, 6
  store i32 %436, ptr %16, align 4, !tbaa !9
  %437 = load i32, ptr %16, align 4, !tbaa !9
  %438 = mul nsw i32 %437, 53
  %439 = load ptr, ptr %21, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.LegacyAgc, ptr %439, i32 0, i32 23
  store i32 %438, ptr %440, align 4, !tbaa !27
  %441 = load ptr, ptr %21, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.LegacyAgc, ptr %441, i32 0, i32 46
  %443 = load i32, ptr %442, align 4, !tbaa !22
  %444 = mul nsw i32 15, %443
  %445 = load ptr, ptr %21, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.LegacyAgc, ptr %445, i32 0, i32 45
  %447 = load i32, ptr %446, align 4, !tbaa !24
  %448 = add nsw i32 %444, %447
  %449 = sdiv i32 %448, 16
  %450 = load ptr, ptr %21, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.LegacyAgc, ptr %450, i32 0, i32 46
  store i32 %449, ptr %451, align 4, !tbaa !22
  %452 = load ptr, ptr %21, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.LegacyAgc, ptr %452, i32 0, i32 46
  %454 = load i32, ptr %453, align 4, !tbaa !22
  %455 = load ptr, ptr %21, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.LegacyAgc, ptr %455, i32 0, i32 47
  %457 = load i32, ptr %456, align 4, !tbaa !19
  %458 = icmp sgt i32 %454, %457
  br i1 %458, label %459, label %463

459:                                              ; preds = %430
  %460 = load ptr, ptr %21, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct.LegacyAgc, ptr %460, i32 0, i32 46
  %462 = load i32, ptr %461, align 4, !tbaa !22
  br label %467

463:                                              ; preds = %430
  %464 = load ptr, ptr %21, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.LegacyAgc, ptr %464, i32 0, i32 47
  %466 = load i32, ptr %465, align 4, !tbaa !19
  br label %467

467:                                              ; preds = %463, %459
  %468 = phi i32 [ %462, %459 ], [ %466, %463 ]
  %469 = load ptr, ptr %21, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.LegacyAgc, ptr %469, i32 0, i32 46
  store i32 %468, ptr %470, align 4, !tbaa !22
  %471 = load ptr, ptr %21, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.LegacyAgc, ptr %471, i32 0, i32 45
  %473 = load i32, ptr %472, align 4, !tbaa !24
  %474 = load ptr, ptr %21, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.LegacyAgc, ptr %474, i32 0, i32 51
  store i32 %473, ptr %475, align 4, !tbaa !28
  %476 = load i32, ptr %17, align 4, !tbaa !9
  %477 = load ptr, ptr %21, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.LegacyAgc, ptr %477, i32 0, i32 49
  %479 = load i32, ptr %478, align 4, !tbaa !20
  %480 = sub nsw i32 %476, %479
  store i32 %480, ptr %16, align 4, !tbaa !9
  %481 = load i32, ptr %16, align 4, !tbaa !9
  %482 = mul i32 31130, %481
  store i32 %482, ptr %14, align 4, !tbaa !9
  %483 = load i32, ptr %14, align 4, !tbaa !9
  %484 = lshr i32 %483, 15
  %485 = load ptr, ptr %21, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.LegacyAgc, ptr %485, i32 0, i32 49
  %487 = load i32, ptr %486, align 4, !tbaa !20
  %488 = add i32 %484, %487
  %489 = load ptr, ptr %21, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.LegacyAgc, ptr %489, i32 0, i32 45
  store i32 %488, ptr %490, align 4, !tbaa !24
  %491 = load ptr, ptr %21, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.LegacyAgc, ptr %491, i32 0, i32 45
  %493 = load i32, ptr %492, align 4, !tbaa !24
  %494 = load i32, ptr %18, align 4, !tbaa !9
  %495 = sub nsw i32 %494, 1
  %496 = icmp sgt i32 %493, %495
  br i1 %496, label %497, label %502

497:                                              ; preds = %467
  %498 = load i32, ptr %18, align 4, !tbaa !9
  %499 = sub nsw i32 %498, 1
  %500 = load ptr, ptr %21, align 8, !tbaa !5
  %501 = getelementptr inbounds %struct.LegacyAgc, ptr %500, i32 0, i32 45
  store i32 %499, ptr %501, align 4, !tbaa !24
  br label %502

502:                                              ; preds = %497, %467
  %503 = load ptr, ptr %21, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.LegacyAgc, ptr %503, i32 0, i32 45
  %505 = load i32, ptr %504, align 4, !tbaa !24
  store i32 %505, ptr %17, align 4, !tbaa !9
  %506 = load ptr, ptr %21, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.LegacyAgc, ptr %506, i32 0, i32 39
  store i16 0, ptr %507, align 2, !tbaa !30
  %508 = load ptr, ptr %21, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.LegacyAgc, ptr %508, i32 0, i32 24
  store i32 0, ptr %509, align 4, !tbaa !31
  br label %510

510:                                              ; preds = %502, %410
  br label %881

511:                                              ; preds = %387
  %512 = load ptr, ptr %21, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.LegacyAgc, ptr %512, i32 0, i32 23
  %514 = load i32, ptr %513, align 4, !tbaa !27
  %515 = load ptr, ptr %21, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.LegacyAgc, ptr %515, i32 0, i32 19
  %517 = load i32, ptr %516, align 4, !tbaa !37
  %518 = icmp sgt i32 %514, %517
  br i1 %518, label %519, label %614

519:                                              ; preds = %511
  %520 = load ptr, ptr %21, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.LegacyAgc, ptr %520, i32 0, i32 33
  %522 = load i16, ptr %521, align 2, !tbaa !29
  %523 = sext i16 %522 to i32
  %524 = add nsw i32 %523, 2
  %525 = trunc i32 %524 to i16
  store i16 %525, ptr %521, align 2, !tbaa !29
  %526 = load ptr, ptr %21, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.LegacyAgc, ptr %526, i32 0, i32 32
  store i16 0, ptr %527, align 4, !tbaa !45
  %528 = load ptr, ptr %21, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.LegacyAgc, ptr %528, i32 0, i32 34
  store i16 0, ptr %529, align 4, !tbaa !34
  %530 = load ptr, ptr %21, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.LegacyAgc, ptr %530, i32 0, i32 33
  %532 = load i16, ptr %531, align 2, !tbaa !29
  %533 = sext i16 %532 to i32
  %534 = load ptr, ptr %21, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.LegacyAgc, ptr %534, i32 0, i32 38
  %536 = load i16, ptr %535, align 4, !tbaa !32
  %537 = sext i16 %536 to i32
  %538 = icmp sgt i32 %533, %537
  br i1 %538, label %539, label %613

539:                                              ; preds = %519
  %540 = load ptr, ptr %21, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.LegacyAgc, ptr %540, i32 0, i32 33
  store i16 0, ptr %541, align 2, !tbaa !29
  %542 = load ptr, ptr %21, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.LegacyAgc, ptr %542, i32 0, i32 23
  %544 = load i32, ptr %543, align 4, !tbaa !27
  %545 = sdiv i32 %544, 64
  %546 = mul nsw i32 %545, 53
  %547 = load ptr, ptr %21, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.LegacyAgc, ptr %547, i32 0, i32 23
  store i32 %546, ptr %548, align 4, !tbaa !27
  %549 = load ptr, ptr %21, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.LegacyAgc, ptr %549, i32 0, i32 46
  %551 = load i32, ptr %550, align 4, !tbaa !22
  %552 = mul nsw i32 15, %551
  %553 = load ptr, ptr %21, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.LegacyAgc, ptr %553, i32 0, i32 45
  %555 = load i32, ptr %554, align 4, !tbaa !24
  %556 = add nsw i32 %552, %555
  %557 = sdiv i32 %556, 16
  %558 = load ptr, ptr %21, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.LegacyAgc, ptr %558, i32 0, i32 46
  store i32 %557, ptr %559, align 4, !tbaa !22
  %560 = load ptr, ptr %21, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.LegacyAgc, ptr %560, i32 0, i32 46
  %562 = load i32, ptr %561, align 4, !tbaa !22
  %563 = load ptr, ptr %21, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.LegacyAgc, ptr %563, i32 0, i32 47
  %565 = load i32, ptr %564, align 4, !tbaa !19
  %566 = icmp sgt i32 %562, %565
  br i1 %566, label %567, label %571

567:                                              ; preds = %539
  %568 = load ptr, ptr %21, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.LegacyAgc, ptr %568, i32 0, i32 46
  %570 = load i32, ptr %569, align 4, !tbaa !22
  br label %575

571:                                              ; preds = %539
  %572 = load ptr, ptr %21, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.LegacyAgc, ptr %572, i32 0, i32 47
  %574 = load i32, ptr %573, align 4, !tbaa !19
  br label %575

575:                                              ; preds = %571, %567
  %576 = phi i32 [ %570, %567 ], [ %574, %571 ]
  %577 = load ptr, ptr %21, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.LegacyAgc, ptr %577, i32 0, i32 46
  store i32 %576, ptr %578, align 4, !tbaa !22
  %579 = load ptr, ptr %21, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.LegacyAgc, ptr %579, i32 0, i32 45
  %581 = load i32, ptr %580, align 4, !tbaa !24
  %582 = load ptr, ptr %21, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.LegacyAgc, ptr %582, i32 0, i32 51
  store i32 %581, ptr %583, align 4, !tbaa !28
  %584 = load i32, ptr %17, align 4, !tbaa !9
  %585 = load ptr, ptr %21, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.LegacyAgc, ptr %585, i32 0, i32 49
  %587 = load i32, ptr %586, align 4, !tbaa !20
  %588 = sub nsw i32 %584, %587
  %589 = mul i32 31621, %588
  store i32 %589, ptr %14, align 4, !tbaa !9
  %590 = load i32, ptr %14, align 4, !tbaa !9
  %591 = lshr i32 %590, 15
  %592 = load ptr, ptr %21, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.LegacyAgc, ptr %592, i32 0, i32 49
  %594 = load i32, ptr %593, align 4, !tbaa !20
  %595 = add i32 %591, %594
  %596 = load ptr, ptr %21, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.LegacyAgc, ptr %596, i32 0, i32 45
  store i32 %595, ptr %597, align 4, !tbaa !24
  %598 = load ptr, ptr %21, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.LegacyAgc, ptr %598, i32 0, i32 45
  %600 = load i32, ptr %599, align 4, !tbaa !24
  %601 = load i32, ptr %18, align 4, !tbaa !9
  %602 = sub nsw i32 %601, 1
  %603 = icmp sgt i32 %600, %602
  br i1 %603, label %604, label %609

604:                                              ; preds = %575
  %605 = load i32, ptr %18, align 4, !tbaa !9
  %606 = sub nsw i32 %605, 1
  %607 = load ptr, ptr %21, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.LegacyAgc, ptr %607, i32 0, i32 45
  store i32 %606, ptr %608, align 4, !tbaa !24
  br label %609

609:                                              ; preds = %604, %575
  %610 = load ptr, ptr %21, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.LegacyAgc, ptr %610, i32 0, i32 45
  %612 = load i32, ptr %611, align 4, !tbaa !24
  store i32 %612, ptr %17, align 4, !tbaa !9
  br label %613

613:                                              ; preds = %609, %519
  br label %880

614:                                              ; preds = %511
  %615 = load ptr, ptr %21, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.LegacyAgc, ptr %615, i32 0, i32 23
  %617 = load i32, ptr %616, align 4, !tbaa !27
  %618 = load ptr, ptr %21, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.LegacyAgc, ptr %618, i32 0, i32 15
  %620 = load i32, ptr %619, align 4, !tbaa !46
  %621 = icmp slt i32 %617, %620
  br i1 %621, label %622, label %728

622:                                              ; preds = %614
  %623 = load ptr, ptr %21, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.LegacyAgc, ptr %623, i32 0, i32 33
  store i16 0, ptr %624, align 2, !tbaa !29
  %625 = load ptr, ptr %21, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.LegacyAgc, ptr %625, i32 0, i32 34
  store i16 0, ptr %626, align 4, !tbaa !34
  %627 = load ptr, ptr %21, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.LegacyAgc, ptr %627, i32 0, i32 32
  %629 = load i16, ptr %628, align 4, !tbaa !45
  %630 = sext i16 %629 to i32
  %631 = add nsw i32 %630, 2
  %632 = trunc i32 %631 to i16
  store i16 %632, ptr %628, align 4, !tbaa !45
  %633 = load ptr, ptr %21, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.LegacyAgc, ptr %633, i32 0, i32 32
  %635 = load i16, ptr %634, align 4, !tbaa !45
  %636 = sext i16 %635 to i32
  %637 = load ptr, ptr %21, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.LegacyAgc, ptr %637, i32 0, i32 37
  %639 = load i16, ptr %638, align 2, !tbaa !33
  %640 = sext i16 %639 to i32
  %641 = icmp sgt i32 %636, %640
  br i1 %641, label %642, label %727

642:                                              ; preds = %622
  call void @llvm.lifetime.start.p0(i64 2, ptr %24) #2
  call void @llvm.lifetime.start.p0(i64 2, ptr %25) #2
  call void @llvm.lifetime.start.p0(i64 2, ptr %26) #2
  store i16 16384, ptr %26, align 2, !tbaa !11
  %643 = load ptr, ptr %21, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.LegacyAgc, ptr %643, i32 0, i32 32
  store i16 0, ptr %644, align 4, !tbaa !45
  %645 = load i32, ptr %17, align 4, !tbaa !9
  %646 = load ptr, ptr %21, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.LegacyAgc, ptr %646, i32 0, i32 49
  %648 = load i32, ptr %647, align 4, !tbaa !20
  %649 = sub nsw i32 %645, %648
  %650 = shl i32 %649, 14
  store i32 %650, ptr %16, align 4, !tbaa !9
  %651 = load ptr, ptr %21, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.LegacyAgc, ptr %651, i32 0, i32 48
  %653 = load i32, ptr %652, align 4, !tbaa !47
  %654 = load ptr, ptr %21, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.LegacyAgc, ptr %654, i32 0, i32 49
  %656 = load i32, ptr %655, align 4, !tbaa !20
  %657 = icmp ne i32 %653, %656
  br i1 %657, label %658, label %669

658:                                              ; preds = %642
  %659 = load i32, ptr %16, align 4, !tbaa !9
  %660 = load ptr, ptr %21, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.LegacyAgc, ptr %660, i32 0, i32 48
  %662 = load i32, ptr %661, align 4, !tbaa !47
  %663 = load ptr, ptr %21, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.LegacyAgc, ptr %663, i32 0, i32 49
  %665 = load i32, ptr %664, align 4, !tbaa !20
  %666 = sub nsw i32 %662, %665
  %667 = sdiv i32 %659, %666
  %668 = trunc i32 %667 to i16
  store i16 %668, ptr %26, align 2, !tbaa !11
  br label %669

669:                                              ; preds = %658, %642
  %670 = load i16, ptr %26, align 2, !tbaa !11
  call void @WebRtcAgc_ExpCurve(i16 noundef signext %670, ptr noundef %24)
  %671 = load i16, ptr %24, align 2, !tbaa !11
  %672 = sext i16 %671 to i64
  %673 = getelementptr inbounds [8 x i16], ptr @kOffset1, i64 0, i64 %672
  %674 = load i16, ptr %673, align 2, !tbaa !11
  %675 = sext i16 %674 to i32
  %676 = load i16, ptr %24, align 2, !tbaa !11
  %677 = sext i16 %676 to i64
  %678 = getelementptr inbounds [8 x i16], ptr @kSlope1, i64 0, i64 %677
  %679 = load i16, ptr %678, align 2, !tbaa !11
  %680 = sext i16 %679 to i32
  %681 = load i16, ptr %26, align 2, !tbaa !11
  %682 = sext i16 %681 to i32
  %683 = mul nsw i32 %680, %682
  %684 = ashr i32 %683, 13
  %685 = trunc i32 %684 to i16
  %686 = sext i16 %685 to i32
  %687 = sub nsw i32 %675, %686
  %688 = trunc i32 %687 to i16
  store i16 %688, ptr %25, align 2, !tbaa !11
  %689 = load ptr, ptr %21, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.LegacyAgc, ptr %689, i32 0, i32 23
  %691 = load i32, ptr %690, align 4, !tbaa !27
  %692 = sdiv i32 %691, 64
  %693 = mul nsw i32 %692, 67
  %694 = load ptr, ptr %21, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.LegacyAgc, ptr %694, i32 0, i32 23
  store i32 %693, ptr %695, align 4, !tbaa !27
  %696 = load i16, ptr %25, align 2, !tbaa !11
  %697 = sext i16 %696 to i32
  %698 = load i32, ptr %17, align 4, !tbaa !9
  %699 = load ptr, ptr %21, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.LegacyAgc, ptr %699, i32 0, i32 49
  %701 = load i32, ptr %700, align 4, !tbaa !20
  %702 = sub nsw i32 %698, %701
  %703 = mul i32 %697, %702
  store i32 %703, ptr %14, align 4, !tbaa !9
  %704 = load i32, ptr %14, align 4, !tbaa !9
  %705 = lshr i32 %704, 14
  %706 = load ptr, ptr %21, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.LegacyAgc, ptr %706, i32 0, i32 49
  %708 = load i32, ptr %707, align 4, !tbaa !20
  %709 = add i32 %705, %708
  %710 = load ptr, ptr %21, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.LegacyAgc, ptr %710, i32 0, i32 45
  store i32 %709, ptr %711, align 4, !tbaa !24
  %712 = load ptr, ptr %21, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct.LegacyAgc, ptr %712, i32 0, i32 45
  %714 = load i32, ptr %713, align 4, !tbaa !24
  %715 = load i32, ptr %18, align 4, !tbaa !9
  %716 = add nsw i32 %715, 2
  %717 = icmp slt i32 %714, %716
  br i1 %717, label %718, label %723

718:                                              ; preds = %669
  %719 = load i32, ptr %18, align 4, !tbaa !9
  %720 = add nsw i32 %719, 2
  %721 = load ptr, ptr %21, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.LegacyAgc, ptr %721, i32 0, i32 45
  store i32 %720, ptr %722, align 4, !tbaa !24
  br label %723

723:                                              ; preds = %718, %669
  %724 = load ptr, ptr %21, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.LegacyAgc, ptr %724, i32 0, i32 45
  %726 = load i32, ptr %725, align 4, !tbaa !24
  store i32 %726, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 2, ptr %26) #2
  call void @llvm.lifetime.end.p0(i64 2, ptr %25) #2
  call void @llvm.lifetime.end.p0(i64 2, ptr %24) #2
  br label %727

727:                                              ; preds = %723, %622
  br label %879

728:                                              ; preds = %614
  %729 = load ptr, ptr %21, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.LegacyAgc, ptr %729, i32 0, i32 23
  %731 = load i32, ptr %730, align 4, !tbaa !27
  %732 = load ptr, ptr %21, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.LegacyAgc, ptr %732, i32 0, i32 20
  %734 = load i32, ptr %733, align 4, !tbaa !39
  %735 = icmp slt i32 %731, %734
  br i1 %735, label %736, label %842

736:                                              ; preds = %728
  %737 = load ptr, ptr %21, align 8, !tbaa !5
  %738 = getelementptr inbounds %struct.LegacyAgc, ptr %737, i32 0, i32 33
  store i16 0, ptr %738, align 2, !tbaa !29
  %739 = load ptr, ptr %21, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.LegacyAgc, ptr %739, i32 0, i32 34
  store i16 0, ptr %740, align 4, !tbaa !34
  %741 = load ptr, ptr %21, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.LegacyAgc, ptr %741, i32 0, i32 32
  %743 = load i16, ptr %742, align 4, !tbaa !45
  %744 = sext i16 %743 to i32
  %745 = add nsw i32 %744, 2
  %746 = trunc i32 %745 to i16
  store i16 %746, ptr %742, align 4, !tbaa !45
  %747 = load ptr, ptr %21, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.LegacyAgc, ptr %747, i32 0, i32 32
  %749 = load i16, ptr %748, align 4, !tbaa !45
  %750 = sext i16 %749 to i32
  %751 = load ptr, ptr %21, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.LegacyAgc, ptr %751, i32 0, i32 38
  %753 = load i16, ptr %752, align 4, !tbaa !32
  %754 = sext i16 %753 to i32
  %755 = icmp sgt i32 %750, %754
  br i1 %755, label %756, label %841

756:                                              ; preds = %736
  call void @llvm.lifetime.start.p0(i64 2, ptr %27) #2
  call void @llvm.lifetime.start.p0(i64 2, ptr %28) #2
  call void @llvm.lifetime.start.p0(i64 2, ptr %29) #2
  store i16 16384, ptr %29, align 2, !tbaa !11
  %757 = load ptr, ptr %21, align 8, !tbaa !5
  %758 = getelementptr inbounds %struct.LegacyAgc, ptr %757, i32 0, i32 32
  store i16 0, ptr %758, align 4, !tbaa !45
  %759 = load i32, ptr %17, align 4, !tbaa !9
  %760 = load ptr, ptr %21, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.LegacyAgc, ptr %760, i32 0, i32 49
  %762 = load i32, ptr %761, align 4, !tbaa !20
  %763 = sub nsw i32 %759, %762
  %764 = shl i32 %763, 14
  store i32 %764, ptr %16, align 4, !tbaa !9
  %765 = load ptr, ptr %21, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.LegacyAgc, ptr %765, i32 0, i32 48
  %767 = load i32, ptr %766, align 4, !tbaa !47
  %768 = load ptr, ptr %21, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.LegacyAgc, ptr %768, i32 0, i32 49
  %770 = load i32, ptr %769, align 4, !tbaa !20
  %771 = icmp ne i32 %767, %770
  br i1 %771, label %772, label %783

772:                                              ; preds = %756
  %773 = load i32, ptr %16, align 4, !tbaa !9
  %774 = load ptr, ptr %21, align 8, !tbaa !5
  %775 = getelementptr inbounds %struct.LegacyAgc, ptr %774, i32 0, i32 48
  %776 = load i32, ptr %775, align 4, !tbaa !47
  %777 = load ptr, ptr %21, align 8, !tbaa !5
  %778 = getelementptr inbounds %struct.LegacyAgc, ptr %777, i32 0, i32 49
  %779 = load i32, ptr %778, align 4, !tbaa !20
  %780 = sub nsw i32 %776, %779
  %781 = sdiv i32 %773, %780
  %782 = trunc i32 %781 to i16
  store i16 %782, ptr %29, align 2, !tbaa !11
  br label %783

783:                                              ; preds = %772, %756
  %784 = load i16, ptr %29, align 2, !tbaa !11
  call void @WebRtcAgc_ExpCurve(i16 noundef signext %784, ptr noundef %27)
  %785 = load i16, ptr %27, align 2, !tbaa !11
  %786 = sext i16 %785 to i64
  %787 = getelementptr inbounds [8 x i16], ptr @kOffset2, i64 0, i64 %786
  %788 = load i16, ptr %787, align 2, !tbaa !11
  %789 = sext i16 %788 to i32
  %790 = load i16, ptr %27, align 2, !tbaa !11
  %791 = sext i16 %790 to i64
  %792 = getelementptr inbounds [8 x i16], ptr @kSlope2, i64 0, i64 %791
  %793 = load i16, ptr %792, align 2, !tbaa !11
  %794 = sext i16 %793 to i32
  %795 = load i16, ptr %29, align 2, !tbaa !11
  %796 = sext i16 %795 to i32
  %797 = mul nsw i32 %794, %796
  %798 = ashr i32 %797, 13
  %799 = trunc i32 %798 to i16
  %800 = sext i16 %799 to i32
  %801 = sub nsw i32 %789, %800
  %802 = trunc i32 %801 to i16
  store i16 %802, ptr %28, align 2, !tbaa !11
  %803 = load ptr, ptr %21, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.LegacyAgc, ptr %803, i32 0, i32 23
  %805 = load i32, ptr %804, align 4, !tbaa !27
  %806 = sdiv i32 %805, 64
  %807 = mul nsw i32 %806, 67
  %808 = load ptr, ptr %21, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.LegacyAgc, ptr %808, i32 0, i32 23
  store i32 %807, ptr %809, align 4, !tbaa !27
  %810 = load i16, ptr %28, align 2, !tbaa !11
  %811 = sext i16 %810 to i32
  %812 = load i32, ptr %17, align 4, !tbaa !9
  %813 = load ptr, ptr %21, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.LegacyAgc, ptr %813, i32 0, i32 49
  %815 = load i32, ptr %814, align 4, !tbaa !20
  %816 = sub nsw i32 %812, %815
  %817 = mul i32 %811, %816
  store i32 %817, ptr %14, align 4, !tbaa !9
  %818 = load i32, ptr %14, align 4, !tbaa !9
  %819 = lshr i32 %818, 14
  %820 = load ptr, ptr %21, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.LegacyAgc, ptr %820, i32 0, i32 49
  %822 = load i32, ptr %821, align 4, !tbaa !20
  %823 = add i32 %819, %822
  %824 = load ptr, ptr %21, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.LegacyAgc, ptr %824, i32 0, i32 45
  store i32 %823, ptr %825, align 4, !tbaa !24
  %826 = load ptr, ptr %21, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.LegacyAgc, ptr %826, i32 0, i32 45
  %828 = load i32, ptr %827, align 4, !tbaa !24
  %829 = load i32, ptr %18, align 4, !tbaa !9
  %830 = add nsw i32 %829, 1
  %831 = icmp slt i32 %828, %830
  br i1 %831, label %832, label %837

832:                                              ; preds = %783
  %833 = load i32, ptr %18, align 4, !tbaa !9
  %834 = add nsw i32 %833, 1
  %835 = load ptr, ptr %21, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.LegacyAgc, ptr %835, i32 0, i32 45
  store i32 %834, ptr %836, align 4, !tbaa !24
  br label %837

837:                                              ; preds = %832, %783
  %838 = load ptr, ptr %21, align 8, !tbaa !5
  %839 = getelementptr inbounds %struct.LegacyAgc, ptr %838, i32 0, i32 45
  %840 = load i32, ptr %839, align 4, !tbaa !24
  store i32 %840, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 2, ptr %29) #2
  call void @llvm.lifetime.end.p0(i64 2, ptr %28) #2
  call void @llvm.lifetime.end.p0(i64 2, ptr %27) #2
  br label %841

841:                                              ; preds = %837, %736
  br label %878

842:                                              ; preds = %728
  %843 = load ptr, ptr %21, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.LegacyAgc, ptr %843, i32 0, i32 34
  %845 = load i16, ptr %844, align 4, !tbaa !34
  %846 = sext i16 %845 to i32
  %847 = icmp sgt i32 %846, 4000
  br i1 %847, label %848, label %863

848:                                              ; preds = %842
  %849 = load ptr, ptr %21, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.LegacyAgc, ptr %849, i32 0, i32 38
  store i16 1000, ptr %850, align 4, !tbaa !32
  %851 = load ptr, ptr %21, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.LegacyAgc, ptr %851, i32 0, i32 37
  store i16 500, ptr %852, align 2, !tbaa !33
  %853 = load ptr, ptr %21, align 8, !tbaa !5
  %854 = getelementptr inbounds %struct.LegacyAgc, ptr %853, i32 0, i32 12
  %855 = load i32, ptr %854, align 4, !tbaa !48
  %856 = load ptr, ptr %21, align 8, !tbaa !5
  %857 = getelementptr inbounds %struct.LegacyAgc, ptr %856, i32 0, i32 19
  store i32 %855, ptr %857, align 4, !tbaa !37
  %858 = load ptr, ptr %21, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.LegacyAgc, ptr %858, i32 0, i32 13
  %860 = load i32, ptr %859, align 4, !tbaa !49
  %861 = load ptr, ptr %21, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.LegacyAgc, ptr %861, i32 0, i32 20
  store i32 %860, ptr %862, align 4, !tbaa !39
  br label %870

863:                                              ; preds = %842
  %864 = load ptr, ptr %21, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.LegacyAgc, ptr %864, i32 0, i32 34
  %866 = load i16, ptr %865, align 4, !tbaa !34
  %867 = sext i16 %866 to i32
  %868 = add nsw i32 %867, 2
  %869 = trunc i32 %868 to i16
  store i16 %869, ptr %865, align 4, !tbaa !34
  br label %870

870:                                              ; preds = %863, %848
  %871 = load ptr, ptr %21, align 8, !tbaa !5
  %872 = getelementptr inbounds %struct.LegacyAgc, ptr %871, i32 0, i32 32
  store i16 0, ptr %872, align 4, !tbaa !45
  %873 = load ptr, ptr %21, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.LegacyAgc, ptr %873, i32 0, i32 33
  store i16 0, ptr %874, align 2, !tbaa !29
  %875 = load i32, ptr %17, align 4, !tbaa !9
  %876 = load ptr, ptr %21, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.LegacyAgc, ptr %876, i32 0, i32 45
  store i32 %875, ptr %877, align 4, !tbaa !24
  br label %878

878:                                              ; preds = %870, %841
  br label %879

879:                                              ; preds = %878, %727
  br label %880

880:                                              ; preds = %879, %613
  br label %881

881:                                              ; preds = %880, %510
  br label %882

882:                                              ; preds = %881, %317
  br label %883

883:                                              ; preds = %882
  %884 = load i16, ptr %19, align 2, !tbaa !11
  %885 = add i16 %884, 1
  store i16 %885, ptr %19, align 2, !tbaa !11
  br label %267, !llvm.loop !50

886:                                              ; preds = %267
  %887 = load i16, ptr %12, align 2, !tbaa !11
  %888 = sext i16 %887 to i32
  %889 = icmp eq i32 %888, 1
  br i1 %889, label %902, label %890

890:                                              ; preds = %886
  %891 = load ptr, ptr %21, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.LegacyAgc, ptr %891, i32 0, i32 40
  %893 = load i16, ptr %892, align 4, !tbaa !35
  %894 = sext i16 %893 to i32
  %895 = icmp sgt i32 %894, 0
  br i1 %895, label %896, label %913

896:                                              ; preds = %890
  %897 = load ptr, ptr %21, align 8, !tbaa !5
  %898 = getelementptr inbounds %struct.LegacyAgc, ptr %897, i32 0, i32 40
  %899 = load i16, ptr %898, align 4, !tbaa !35
  %900 = sext i16 %899 to i32
  %901 = icmp slt i32 %900, 8000
  br i1 %901, label %902, label %913

902:                                              ; preds = %896, %886
  %903 = load ptr, ptr %21, align 8, !tbaa !5
  %904 = getelementptr inbounds %struct.LegacyAgc, ptr %903, i32 0, i32 45
  %905 = load i32, ptr %904, align 4, !tbaa !24
  %906 = load i32, ptr %18, align 4, !tbaa !9
  %907 = icmp sgt i32 %905, %906
  br i1 %907, label %908, label %912

908:                                              ; preds = %902
  %909 = load i32, ptr %18, align 4, !tbaa !9
  %910 = load ptr, ptr %21, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.LegacyAgc, ptr %910, i32 0, i32 45
  store i32 %909, ptr %911, align 4, !tbaa !24
  br label %912

912:                                              ; preds = %908, %902
  br label %913

913:                                              ; preds = %912, %896, %890
  %914 = load ptr, ptr %21, align 8, !tbaa !5
  %915 = getelementptr inbounds %struct.LegacyAgc, ptr %914, i32 0, i32 45
  %916 = load i32, ptr %915, align 4, !tbaa !24
  %917 = load ptr, ptr %21, align 8, !tbaa !5
  %918 = getelementptr inbounds %struct.LegacyAgc, ptr %917, i32 0, i32 46
  %919 = load i32, ptr %918, align 4, !tbaa !22
  %920 = icmp sgt i32 %916, %919
  br i1 %920, label %921, label %927

921:                                              ; preds = %913
  %922 = load ptr, ptr %21, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.LegacyAgc, ptr %922, i32 0, i32 46
  %924 = load i32, ptr %923, align 4, !tbaa !22
  %925 = load ptr, ptr %21, align 8, !tbaa !5
  %926 = getelementptr inbounds %struct.LegacyAgc, ptr %925, i32 0, i32 45
  store i32 %924, ptr %926, align 4, !tbaa !24
  br label %942

927:                                              ; preds = %913
  %928 = load ptr, ptr %21, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.LegacyAgc, ptr %928, i32 0, i32 45
  %930 = load i32, ptr %929, align 4, !tbaa !24
  %931 = load ptr, ptr %21, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.LegacyAgc, ptr %931, i32 0, i32 50
  %933 = load i32, ptr %932, align 4, !tbaa !25
  %934 = icmp slt i32 %930, %933
  br i1 %934, label %935, label %941

935:                                              ; preds = %927
  %936 = load ptr, ptr %21, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.LegacyAgc, ptr %936, i32 0, i32 50
  %938 = load i32, ptr %937, align 4, !tbaa !25
  %939 = load ptr, ptr %21, align 8, !tbaa !5
  %940 = getelementptr inbounds %struct.LegacyAgc, ptr %939, i32 0, i32 45
  store i32 %938, ptr %940, align 4, !tbaa !24
  br label %941

941:                                              ; preds = %935, %927
  br label %942

942:                                              ; preds = %941, %921
  %943 = load ptr, ptr %21, align 8, !tbaa !5
  %944 = getelementptr inbounds %struct.LegacyAgc, ptr %943, i32 0, i32 45
  %945 = load i32, ptr %944, align 4, !tbaa !24
  %946 = load ptr, ptr %21, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.LegacyAgc, ptr %946, i32 0, i32 47
  %948 = load i32, ptr %947, align 4, !tbaa !19
  %949 = icmp slt i32 %945, %948
  br i1 %949, label %950, label %954

950:                                              ; preds = %942
  %951 = load ptr, ptr %21, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.LegacyAgc, ptr %951, i32 0, i32 45
  %953 = load i32, ptr %952, align 4, !tbaa !24
  br label %958

954:                                              ; preds = %942
  %955 = load ptr, ptr %21, align 8, !tbaa !5
  %956 = getelementptr inbounds %struct.LegacyAgc, ptr %955, i32 0, i32 47
  %957 = load i32, ptr %956, align 4, !tbaa !19
  br label %958

958:                                              ; preds = %954, %950
  %959 = phi i32 [ %953, %950 ], [ %957, %954 ]
  %960 = load ptr, ptr %21, align 8, !tbaa !5
  %961 = getelementptr inbounds %struct.LegacyAgc, ptr %960, i32 0, i32 53
  %962 = load i16, ptr %961, align 4, !tbaa !14
  %963 = sext i16 %962 to i32
  %964 = ashr i32 %959, %963
  %965 = load ptr, ptr %10, align 8, !tbaa !5
  store i32 %964, ptr %965, align 4, !tbaa !9
  store i32 0, ptr %7, align 4
  store i32 1, ptr %22, align 4
  br label %966

966:                                              ; preds = %958, %49, %42
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #2
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #2
  call void @llvm.lifetime.end.p0(i64 2, ptr %19) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #2
  %967 = load i32, ptr %7, align 4
  ret i32 %967
}

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 = { 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 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"short", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = !{!15, !12, i64 348}
!15 = !{!"", !10, i64 0, !12, i64 4, !12, i64 6, !12, i64 8, !7, i64 10, !16, i64 12, !16, i64 18, !12, i64 24, !12, i64 26, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !12, i64 56, !12, i64 58, !7, i64 60, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !7, i64 116, !7, i64 156, !7, i64 196, !12, i64 276, !12, i64 278, !12, i64 280, !12, i64 282, !12, i64 284, !12, i64 286, !12, i64 288, !12, i64 290, !12, i64 292, !12, i64 294, !12, i64 296, !12, i64 298, !12, i64 300, !12, i64 302, !10, i64 304, !12, i64 308, !10, i64 312, !10, i64 316, !10, i64 320, !10, i64 324, !10, i64 328, !10, i64 332, !10, i64 336, !10, i64 340, !10, i64 344, !12, i64 348, !17, i64 352, !18, i64 408, !12, i64 664}
!16 = !{!"", !12, i64 0, !12, i64 2, !7, i64 4}
!17 = !{!"", !7, i64 0, !12, i64 32, !12, i64 34, !12, i64 36, !12, i64 38, !10, i64 40, !12, i64 44, !12, i64 46, !10, i64 48, !12, i64 52}
!18 = !{!"", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !12, i64 140, !12, i64 142, !17, i64 144, !17, i64 200}
!19 = !{!15, !10, i64 324}
!20 = !{!15, !10, i64 332}
!21 = !{!15, !12, i64 290}
!22 = !{!15, !10, i64 320}
!23 = !{!15, !12, i64 8}
!24 = !{!15, !10, i64 316}
!25 = !{!15, !10, i64 336}
!26 = !{!15, !10, i64 344}
!27 = !{!15, !10, i64 108}
!28 = !{!15, !10, i64 340}
!29 = !{!15, !12, i64 286}
!30 = !{!15, !12, i64 298}
!31 = !{!15, !10, i64 112}
!32 = !{!15, !12, i64 296}
!33 = !{!15, !12, i64 294}
!34 = !{!15, !12, i64 288}
!35 = !{!15, !12, i64 300}
!36 = !{!15, !10, i64 32}
!37 = !{!15, !10, i64 92}
!38 = !{!15, !10, i64 36}
!39 = !{!15, !10, i64 96}
!40 = !{!15, !12, i64 276}
!41 = !{!15, !10, i64 100}
!42 = !{!15, !10, i64 104}
!43 = !{!15, !12, i64 280}
!44 = !{!15, !10, i64 48}
!45 = !{!15, !12, i64 284}
!46 = !{!15, !10, i64 52}
!47 = !{!15, !10, i64 328}
!48 = !{!15, !10, i64 40}
!49 = !{!15, !10, i64 44}
!50 = distinct !{!50, !51}
!51 = !{!"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"

@kOffset1 = external hidden local_unnamed_addr constant [8 x i16], align 16
@kSlope1 = external hidden local_unnamed_addr constant [8 x i16], align 16
@kOffset2 = external hidden local_unnamed_addr constant [8 x i16], align 16
@kSlope2 = external hidden local_unnamed_addr constant [8 x i16], align 16

; 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 nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: nounwind uwtable
declare dso_local void @WebRtcAgc_SaturationCtrl(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @WebRtcAgc_ZeroCtrl(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @WebRtcAgc_SpeakerInactiveCtrl(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @WebRtcAgc_ExpCurve(i16 noundef signext, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local range(i32 -1, 1) i32 @WebRtcAgc_ProcessAnalog(ptr noundef %0, i32 noundef %1, ptr nocapture noundef writeonly %2, i16 noundef signext %3, i16 noundef signext %4, ptr nocapture noundef writeonly %5) local_unnamed_addr #1 {
  %7 = alloca i32, align 4
  %8 = alloca i8, align 1
  %9 = alloca i16, align 2
  %10 = alloca i16, align 2
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #3
  store i8 0, ptr %8, align 1, !tbaa !5
  %11 = getelementptr inbounds i8, ptr %0, i64 348
  %12 = load i16, ptr %11, align 4, !tbaa !8
  %13 = zext nneg i16 %12 to i32
  %14 = shl i32 %1, %13
  store i32 %14, ptr %7, align 4, !tbaa !15
  %15 = getelementptr inbounds i8, ptr %0, i64 324
  %16 = load i32, ptr %15, align 4, !tbaa !16
  %17 = icmp sgt i32 %14, %16
  br i1 %17, label %408, label %18

18:                                               ; preds = %6
  %19 = getelementptr inbounds i8, ptr %0, i64 332
  %20 = load i32, ptr %19, align 4, !tbaa !17
  %21 = icmp slt i32 %14, %20
  br i1 %21, label %408, label %22

22:                                               ; preds = %18
  %23 = getelementptr inbounds i8, ptr %0, i64 290
  %24 = load i16, ptr %23, align 2, !tbaa !18
  %25 = icmp eq i16 %24, 0
  br i1 %25, label %26, label %42

26:                                               ; preds = %22
  store i16 1, ptr %23, align 2, !tbaa !18
  %27 = getelementptr inbounds i8, ptr %0, i64 320
  %28 = load i32, ptr %27, align 4, !tbaa !19
  %29 = sub nsw i32 %28, %20
  %30 = mul nsw i32 %29, 51
  %31 = ashr i32 %30, 9
  %32 = add nsw i32 %31, %20
  %33 = icmp slt i32 %14, %32
  br i1 %33, label %34, label %39

34:                                               ; preds = %26
  %35 = getelementptr inbounds i8, ptr %0, i64 8
  %36 = load i16, ptr %35, align 4, !tbaa !20
  %37 = icmp eq i16 %36, 1
  br i1 %37, label %38, label %39

38:                                               ; preds = %34
  store i32 %32, ptr %7, align 4, !tbaa !15
  br label %39

39:                                               ; preds = %38, %34, %26
  %40 = phi i32 [ %32, %38 ], [ %14, %34 ], [ %14, %26 ]
  %41 = getelementptr inbounds i8, ptr %0, i64 316
  store i32 %40, ptr %41, align 4, !tbaa !21
  br label %42

42:                                               ; preds = %39, %22
  %43 = phi i32 [ %40, %39 ], [ %14, %22 ]
  %44 = icmp eq i32 %43, %16
  %45 = getelementptr inbounds i8, ptr %0, i64 316
  %46 = load i32, ptr %45, align 4, !tbaa !21
  br i1 %44, label %47, label %._crit_edge

47:                                               ; preds = %42
  %48 = icmp sgt i32 %46, %16
  br i1 %48, label %.thread, label %._crit_edge

.thread:                                          ; preds = %47
  store i32 %46, ptr %7, align 4, !tbaa !15
  %49 = getelementptr inbounds i8, ptr %0, i64 316
  br label %.thread322

._crit_edge:                                      ; preds = %42, %47
  %50 = phi i32 [ %16, %47 ], [ %43, %42 ]
  %51 = getelementptr inbounds i8, ptr %0, i64 316
  %.not = icmp eq i32 %50, %46
  br i1 %.not, label %.thread322, label %52

52:                                               ; preds = %._crit_edge
  %53 = getelementptr inbounds i8, ptr %0, i64 336
  %54 = load i32, ptr %53, align 4, !tbaa !22
  %55 = icmp slt i32 %50, %54
  br i1 %55, label %56, label %63

56:                                               ; preds = %52
  %57 = getelementptr inbounds i8, ptr %0, i64 320
  %58 = load i32, ptr %57, align 4, !tbaa !19
  %59 = sub nsw i32 %58, %20
  %60 = mul nsw i32 %59, 51
  %61 = ashr i32 %60, 9
  %62 = add nsw i32 %61, %20
  store i32 %62, ptr %7, align 4, !tbaa !15
  store i32 %62, ptr %51, align 4, !tbaa !21
  br label %.thread322

63:                                               ; preds = %52
  %.not293 = icmp eq i32 %50, %46
  br i1 %.not293, label %.thread322, label %64

64:                                               ; preds = %63
  %65 = getelementptr inbounds i8, ptr %0, i64 344
  %66 = load i32, ptr %65, align 4, !tbaa !23
  %67 = icmp eq i32 %66, %1
  br i1 %67, label %68, label %69

68:                                               ; preds = %64
  store i32 %46, ptr %7, align 4, !tbaa !15
  br label %.thread322

69:                                               ; preds = %64
  store i32 %50, ptr %51, align 4, !tbaa !21
  br label %.thread322

.thread322:                                       ; preds = %.thread, %._crit_edge, %56, %68, %69, %63
  %70 = phi ptr [ %51, %68 ], [ %51, %69 ], [ %51, %63 ], [ %49, %.thread ], [ %51, %._crit_edge ], [ %51, %56 ]
  %71 = phi i32 [ %46, %68 ], [ %50, %69 ], [ %46, %63 ], [ %46, %.thread ], [ %46, %._crit_edge ], [ %62, %56 ]
  %72 = getelementptr inbounds i8, ptr %0, i64 320
  %73 = load i32, ptr %72, align 4, !tbaa !19
  %74 = icmp sgt i32 %71, %73
  br i1 %74, label %75, label %76

75:                                               ; preds = %.thread322
  store i32 %71, ptr %72, align 4, !tbaa !19
  br label %76

76:                                               ; preds = %75, %.thread322
  %77 = getelementptr inbounds i8, ptr %0, i64 344
  store i32 %1, ptr %77, align 4, !tbaa !23
  %78 = getelementptr inbounds i8, ptr %0, i64 196
  call void @WebRtcAgc_SaturationCtrl(ptr noundef nonnull %0, ptr noundef nonnull %8, ptr noundef nonnull %78)
  %79 = load i8, ptr %8, align 1, !tbaa !5
  %80 = icmp eq i8 %79, 1
  br i1 %80, label %81, label %110

81:                                               ; preds = %76
  %82 = getelementptr inbounds i8, ptr %0, i64 108
  %83 = load i32, ptr %82, align 4, !tbaa !24
  %84 = sdiv i32 %83, 8
  %85 = mul nsw i32 %84, 7
  store i32 %85, ptr %82, align 4, !tbaa !24
  %86 = load i32, ptr %70, align 4, !tbaa !21
  %87 = getelementptr inbounds i8, ptr %0, i64 340
  store i32 %86, ptr %87, align 4, !tbaa !25
  %88 = load i32, ptr %7, align 4, !tbaa !15
  %89 = load i32, ptr %19, align 4, !tbaa !17
  %90 = sub nsw i32 %88, %89
  %91 = mul i32 %90, 29591
  %92 = lshr i32 %91, 15
  %93 = add i32 %92, %89
  %94 = add nsw i32 %71, -2
  %spec.select = call i32 @llvm.smin.i32(i32 %93, i32 %94)
  store i32 %spec.select, ptr %70, align 4, !tbaa !21
  store i32 %spec.select, ptr %7, align 4, !tbaa !15
  %95 = getelementptr inbounds i8, ptr %0, i64 336
  %96 = load i32, ptr %95, align 4, !tbaa !22
  %97 = icmp slt i32 %spec.select, %96
  br i1 %97, label %98, label %99

98:                                               ; preds = %81
  store i8 1, ptr %5, align 1, !tbaa !5
  br label %99

99:                                               ; preds = %98, %81
  %100 = getelementptr inbounds i8, ptr %0, i64 286
  store i16 -100, ptr %100, align 2, !tbaa !26
  %101 = getelementptr inbounds i8, ptr %0, i64 298
  store i16 0, ptr %101, align 2, !tbaa !27
  %102 = getelementptr inbounds i8, ptr %0, i64 112
  store i32 0, ptr %102, align 4, !tbaa !28
  %103 = getelementptr inbounds i8, ptr %0, i64 296
  store i16 520, ptr %103, align 4, !tbaa !29
  %104 = getelementptr inbounds i8, ptr %0, i64 294
  store i16 340, ptr %104, align 2, !tbaa !30
  %105 = getelementptr inbounds i8, ptr %0, i64 288
  store i16 0, ptr %105, align 4, !tbaa !31
  %106 = getelementptr inbounds i8, ptr %0, i64 300
  store i16 0, ptr %106, align 4, !tbaa !32
  %107 = getelementptr inbounds i8, ptr %0, i64 32
  %108 = getelementptr inbounds i8, ptr %0, i64 92
  %109 = load <2 x i32>, ptr %107, align 4, !tbaa !15
  store <2 x i32> %109, ptr %108, align 4, !tbaa !15
  br label %110

110:                                              ; preds = %99, %76
  call void @WebRtcAgc_ZeroCtrl(ptr noundef nonnull %0, ptr noundef nonnull %7, ptr noundef nonnull %78)
  call void @WebRtcAgc_SpeakerInactiveCtrl(ptr noundef nonnull %0)
  %111 = getelementptr inbounds i8, ptr %0, i64 156
  %112 = getelementptr inbounds i8, ptr %0, i64 116
  %113 = getelementptr inbounds i8, ptr %0, i64 276
  %114 = getelementptr inbounds i8, ptr %0, i64 100
  %115 = getelementptr inbounds i8, ptr %0, i64 104
  %116 = getelementptr inbounds i8, ptr %0, i64 280
  %117 = getelementptr inbounds i8, ptr %0, i64 298
  %118 = getelementptr inbounds i8, ptr %0, i64 112
  %119 = getelementptr inbounds i8, ptr %0, i64 108
  %120 = getelementptr inbounds i8, ptr %0, i64 48
  %121 = getelementptr inbounds i8, ptr %0, i64 92
  %122 = getelementptr inbounds i8, ptr %0, i64 52
  %123 = getelementptr inbounds i8, ptr %0, i64 96
  %124 = getelementptr inbounds i8, ptr %0, i64 288
  %125 = getelementptr inbounds i8, ptr %0, i64 296
  %126 = getelementptr inbounds i8, ptr %0, i64 294
  %127 = getelementptr inbounds i8, ptr %0, i64 40
  %128 = getelementptr inbounds i8, ptr %0, i64 284
  %129 = getelementptr inbounds i8, ptr %0, i64 286
  %130 = getelementptr inbounds i8, ptr %0, i64 328
  %131 = add nsw i32 %71, 1
  %132 = add nsw i32 %71, 2
  %133 = getelementptr inbounds i8, ptr %0, i64 340
  %134 = add nsw i32 %71, -1
  %135 = load i16, ptr %116, align 4, !tbaa !33
  %136 = icmp slt i16 %135, %3
  br i1 %136, label %.split, label %.split.us

.split.us:                                        ; preds = %110
  %.promoted = load i16, ptr %113, align 4, !tbaa !34
  %137 = load i32, ptr %111, align 4, !tbaa !15
  %138 = sext i16 %.promoted to i64
  %139 = getelementptr inbounds [10 x i32], ptr %112, i64 0, i64 %138
  %140 = load i32, ptr %139, align 4, !tbaa !15
  %141 = sub nsw i32 %137, %140
  %142 = ashr i32 %141, 3
  %143 = load i32, ptr %114, align 4, !tbaa !35
  %144 = add nsw i32 %142, %143
  store i32 %144, ptr %114, align 4, !tbaa !35
  store i32 %137, ptr %139, align 4, !tbaa !15
  %145 = add i16 %.promoted, 1
  %146 = icmp eq i16 %145, 10
  %spec.select304.us = select i1 %146, i16 0, i16 %145
  %147 = load i32, ptr %115, align 4, !tbaa !36
  %148 = sub nsw i32 %137, %147
  %149 = ashr i32 %148, 6
  %150 = add nsw i32 %149, %147
  store i32 %150, ptr %115, align 4, !tbaa !36
  %151 = getelementptr inbounds i8, ptr %0, i64 160
  %152 = load i32, ptr %151, align 4, !tbaa !15
  %153 = sext i16 %spec.select304.us to i64
  %154 = getelementptr inbounds [10 x i32], ptr %112, i64 0, i64 %153
  %155 = load i32, ptr %154, align 4, !tbaa !15
  %156 = sub nsw i32 %152, %155
  %157 = ashr i32 %156, 3
  %158 = load i32, ptr %114, align 4, !tbaa !35
  %159 = add nsw i32 %157, %158
  store i32 %159, ptr %114, align 4, !tbaa !35
  store i32 %152, ptr %154, align 4, !tbaa !15
  %160 = add i16 %spec.select304.us, 1
  %161 = icmp eq i16 %160, 10
  %spec.select304.us.1 = select i1 %161, i16 0, i16 %160
  %162 = load i32, ptr %115, align 4, !tbaa !36
  %163 = sub nsw i32 %152, %162
  %164 = ashr i32 %163, 6
  %165 = add nsw i32 %164, %162
  store i32 %165, ptr %115, align 4, !tbaa !36
  %166 = getelementptr inbounds i8, ptr %0, i64 164
  %167 = load i32, ptr %166, align 4, !tbaa !15
  %168 = sext i16 %spec.select304.us.1 to i64
  %169 = getelementptr inbounds [10 x i32], ptr %112, i64 0, i64 %168
  %170 = load i32, ptr %169, align 4, !tbaa !15
  %171 = sub nsw i32 %167, %170
  %172 = ashr i32 %171, 3
  %173 = load i32, ptr %114, align 4, !tbaa !35
  %174 = add nsw i32 %172, %173
  store i32 %174, ptr %114, align 4, !tbaa !35
  store i32 %167, ptr %169, align 4, !tbaa !15
  %175 = add i16 %spec.select304.us.1, 1
  %176 = icmp eq i16 %175, 10
  %spec.select304.us.2 = select i1 %176, i16 0, i16 %175
  %177 = load i32, ptr %115, align 4, !tbaa !36
  %178 = sub nsw i32 %167, %177
  %179 = ashr i32 %178, 6
  %180 = add nsw i32 %179, %177
  store i32 %180, ptr %115, align 4, !tbaa !36
  %181 = getelementptr inbounds i8, ptr %0, i64 168
  %182 = load i32, ptr %181, align 4, !tbaa !15
  %183 = sext i16 %spec.select304.us.2 to i64
  %184 = getelementptr inbounds [10 x i32], ptr %112, i64 0, i64 %183
  %185 = load i32, ptr %184, align 4, !tbaa !15
  %186 = sub nsw i32 %182, %185
  %187 = ashr i32 %186, 3
  %188 = load i32, ptr %114, align 4, !tbaa !35
  %189 = add nsw i32 %187, %188
  store i32 %189, ptr %114, align 4, !tbaa !35
  store i32 %182, ptr %184, align 4, !tbaa !15
  %190 = add i16 %spec.select304.us.2, 1
  %191 = icmp eq i16 %190, 10
  %spec.select304.us.3 = select i1 %191, i16 0, i16 %190
  %192 = load i32, ptr %115, align 4, !tbaa !36
  %193 = sub nsw i32 %182, %192
  %194 = ashr i32 %193, 6
  %195 = add nsw i32 %194, %192
  store i32 %195, ptr %115, align 4, !tbaa !36
  %196 = getelementptr inbounds i8, ptr %0, i64 172
  %197 = load i32, ptr %196, align 4, !tbaa !15
  %198 = sext i16 %spec.select304.us.3 to i64
  %199 = getelementptr inbounds [10 x i32], ptr %112, i64 0, i64 %198
  %200 = load i32, ptr %199, align 4, !tbaa !15
  %201 = sub nsw i32 %197, %200
  %202 = ashr i32 %201, 3
  %203 = load i32, ptr %114, align 4, !tbaa !35
  %204 = add nsw i32 %202, %203
  store i32 %204, ptr %114, align 4, !tbaa !35
  store i32 %197, ptr %199, align 4, !tbaa !15
  %205 = add i16 %spec.select304.us.3, 1
  %206 = icmp eq i16 %205, 10
  %spec.select304.us.4 = select i1 %206, i16 0, i16 %205
  %207 = load i32, ptr %115, align 4, !tbaa !36
  %208 = sub nsw i32 %197, %207
  %209 = ashr i32 %208, 6
  %210 = add nsw i32 %209, %207
  store i32 %210, ptr %115, align 4, !tbaa !36
  store i16 %spec.select304.us.4, ptr %113, align 4, !tbaa !34
  br label %.split311

.split:                                           ; preds = %110, %385
  %indvars.iv = phi i64 [ %indvars.iv.next, %385 ], [ 0, %110 ]
  %211 = getelementptr inbounds [5 x i32], ptr %111, i64 0, i64 %indvars.iv
  %212 = load i32, ptr %211, align 4, !tbaa !15
  %213 = load i16, ptr %113, align 4, !tbaa !34
  %214 = sext i16 %213 to i64
  %215 = getelementptr inbounds [10 x i32], ptr %112, i64 0, i64 %214
  %216 = load i32, ptr %215, align 4, !tbaa !15
  %217 = sub nsw i32 %212, %216
  %218 = ashr i32 %217, 3
  %219 = load i32, ptr %114, align 4, !tbaa !35
  %220 = add nsw i32 %218, %219
  store i32 %220, ptr %114, align 4, !tbaa !35
  store i32 %212, ptr %215, align 4, !tbaa !15
  %221 = add i16 %213, 1
  %222 = icmp eq i16 %221, 10
  %spec.select304 = select i1 %222, i16 0, i16 %221
  store i16 %spec.select304, ptr %113, align 4, !tbaa !34
  %223 = load i32, ptr %115, align 4, !tbaa !36
  %224 = sub nsw i32 %212, %223
  %225 = ashr i32 %224, 6
  %226 = add nsw i32 %225, %223
  store i32 %226, ptr %115, align 4, !tbaa !36
  %227 = load i16, ptr %116, align 4, !tbaa !33
  %228 = icmp slt i16 %227, %3
  br i1 %228, label %229, label %385

229:                                              ; preds = %.split
  %230 = load i16, ptr %117, align 2, !tbaa !27
  %231 = icmp slt i16 %230, 250
  br i1 %231, label %232, label %237

232:                                              ; preds = %229
  %233 = add nsw i16 %230, 2
  store i16 %233, ptr %117, align 2, !tbaa !27
  %234 = load i32, ptr %118, align 4, !tbaa !28
  %235 = icmp sgt i32 %226, %234
  br i1 %235, label %236, label %243

236:                                              ; preds = %232
  store i32 %226, ptr %118, align 4, !tbaa !28
  br label %243

237:                                              ; preds = %229
  %238 = icmp eq i16 %230, 250
  br i1 %238, label %239, label %243

239:                                              ; preds = %237
  store i16 252, ptr %117, align 2, !tbaa !27
  %240 = load i32, ptr %118, align 4, !tbaa !28
  %241 = ashr i32 %240, 3
  %242 = mul nsw i32 %241, 10
  store i32 %242, ptr %119, align 4, !tbaa !24
  br label %243

243:                                              ; preds = %237, %239, %232, %236
  %244 = load i32, ptr %114, align 4, !tbaa !35
  %245 = load i32, ptr %119, align 4, !tbaa !24
  %246 = sub nsw i32 %244, %245
  %247 = ashr i32 %246, 10
  %248 = add nsw i32 %247, %245
  store i32 %248, ptr %119, align 4, !tbaa !24
  %249 = load i32, ptr %120, align 4, !tbaa !37
  %250 = icmp sgt i32 %248, %249
  br i1 %250, label %251, label %271

251:                                              ; preds = %243
  %252 = load i16, ptr %129, align 2, !tbaa !26
  %253 = add i16 %252, 2
  store i16 %253, ptr %129, align 2, !tbaa !26
  store i16 0, ptr %128, align 4, !tbaa !38
  store i16 0, ptr %124, align 4, !tbaa !31
  %254 = load i16, ptr %126, align 2, !tbaa !30
  %255 = icmp sgt i16 %253, %254
  br i1 %255, label %256, label %385

256:                                              ; preds = %251
  store i16 0, ptr %129, align 2, !tbaa !26
  %257 = ashr i32 %248, 6
  %258 = mul nsw i32 %257, 53
  store i32 %258, ptr %119, align 4, !tbaa !24
  %259 = load i32, ptr %72, align 4, !tbaa !19
  %260 = mul nsw i32 %259, 15
  %261 = load i32, ptr %70, align 4, !tbaa !21
  %262 = add nsw i32 %260, %261
  %263 = sdiv i32 %262, 16
  %264 = load i32, ptr %15, align 4, !tbaa !16
  %. = call i32 @llvm.smax.i32(i32 %263, i32 %264)
  store i32 %., ptr %72, align 4, !tbaa !19
  store i32 %261, ptr %133, align 4, !tbaa !25
  %265 = load i32, ptr %7, align 4, !tbaa !15
  %266 = load i32, ptr %19, align 4, !tbaa !17
  %267 = sub nsw i32 %265, %266
  %268 = mul i32 %267, 31130
  %269 = lshr i32 %268, 15
  %270 = add i32 %269, %266
  %.not302 = icmp slt i32 %270, %71
  %storemerge303 = select i1 %.not302, i32 %270, i32 %134
  store i32 %storemerge303, ptr %70, align 4, !tbaa !21
  store i32 %storemerge303, ptr %7, align 4, !tbaa !15
  store i16 0, ptr %117, align 2, !tbaa !27
  store i32 0, ptr %118, align 4, !tbaa !28
  br label %385

271:                                              ; preds = %243
  %272 = load i32, ptr %121, align 4, !tbaa !39
  %273 = icmp sgt i32 %248, %272
  br i1 %273, label %274, label %294

274:                                              ; preds = %271
  %275 = load i16, ptr %129, align 2, !tbaa !26
  %276 = add i16 %275, 2
  store i16 %276, ptr %129, align 2, !tbaa !26
  store i16 0, ptr %128, align 4, !tbaa !38
  store i16 0, ptr %124, align 4, !tbaa !31
  %277 = load i16, ptr %125, align 4, !tbaa !29
  %278 = icmp sgt i16 %276, %277
  br i1 %278, label %279, label %385

279:                                              ; preds = %274
  store i16 0, ptr %129, align 2, !tbaa !26
  %280 = sdiv i32 %248, 64
  %281 = mul nsw i32 %280, 53
  store i32 %281, ptr %119, align 4, !tbaa !24
  %282 = load i32, ptr %72, align 4, !tbaa !19
  %283 = mul nsw i32 %282, 15
  %284 = load i32, ptr %70, align 4, !tbaa !21
  %285 = add nsw i32 %283, %284
  %286 = sdiv i32 %285, 16
  %287 = load i32, ptr %15, align 4, !tbaa !16
  %.305 = call i32 @llvm.smax.i32(i32 %286, i32 %287)
  store i32 %.305, ptr %72, align 4, !tbaa !19
  store i32 %284, ptr %133, align 4, !tbaa !25
  %288 = load i32, ptr %7, align 4, !tbaa !15
  %289 = load i32, ptr %19, align 4, !tbaa !17
  %290 = sub nsw i32 %288, %289
  %291 = mul i32 %290, 31621
  %292 = lshr i32 %291, 15
  %293 = add i32 %292, %289
  %.not300 = icmp slt i32 %293, %71
  %storemerge301 = select i1 %.not300, i32 %293, i32 %134
  store i32 %storemerge301, ptr %70, align 4, !tbaa !21
  store i32 %storemerge301, ptr %7, align 4, !tbaa !15
  br label %385

294:                                              ; preds = %271
  %295 = load i32, ptr %122, align 4, !tbaa !40
  %296 = icmp slt i32 %248, %295
  br i1 %296, label %297, label %335

297:                                              ; preds = %294
  store i16 0, ptr %129, align 2, !tbaa !26
  store i16 0, ptr %124, align 4, !tbaa !31
  %298 = load i16, ptr %128, align 4, !tbaa !38
  %299 = add i16 %298, 2
  store i16 %299, ptr %128, align 4, !tbaa !38
  %300 = load i16, ptr %126, align 2, !tbaa !30
  %301 = icmp sgt i16 %299, %300
  br i1 %301, label %302, label %385

302:                                              ; preds = %297
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %9) #3
  store i16 0, ptr %128, align 4, !tbaa !38
  %303 = load i32, ptr %19, align 4, !tbaa !17
  %304 = load i32, ptr %130, align 4, !tbaa !41
  %.not298 = icmp eq i32 %304, %303
  br i1 %.not298, label %312, label %305

305:                                              ; preds = %302
  %306 = load i32, ptr %7, align 4, !tbaa !15
  %307 = sub nsw i32 %306, %303
  %308 = shl i32 %307, 14
  %309 = sub nsw i32 %304, %303
  %310 = sdiv i32 %308, %309
  %311 = trunc i32 %310 to i16
  br label %312

312:                                              ; preds = %305, %302
  %.0259 = phi i16 [ %311, %305 ], [ 16384, %302 ]
  call void @WebRtcAgc_ExpCurve(i16 noundef signext %.0259, ptr noundef nonnull %9)
  %313 = load i16, ptr %9, align 2, !tbaa !42
  %314 = sext i16 %313 to i64
  %315 = getelementptr inbounds [8 x i16], ptr @kOffset1, i64 0, i64 %314
  %316 = load i16, ptr %315, align 2, !tbaa !42
  %317 = getelementptr inbounds [8 x i16], ptr @kSlope1, i64 0, i64 %314
  %318 = load i16, ptr %317, align 2, !tbaa !42
  %319 = sext i16 %318 to i32
  %320 = sext i16 %.0259 to i32
  %321 = mul nsw i32 %319, %320
  %322 = lshr i32 %321, 13
  %323 = trunc i32 %322 to i16
  %324 = sub i16 %316, %323
  %325 = load i32, ptr %119, align 4, !tbaa !24
  %326 = sdiv i32 %325, 64
  %327 = mul nsw i32 %326, 67
  store i32 %327, ptr %119, align 4, !tbaa !24
  %328 = sext i16 %324 to i32
  %329 = load i32, ptr %7, align 4, !tbaa !15
  %330 = load i32, ptr %19, align 4, !tbaa !17
  %331 = sub nsw i32 %329, %330
  %332 = mul i32 %331, %328
  %333 = lshr i32 %332, 14
  %334 = add i32 %333, %330
  %spec.select306 = call i32 @llvm.smax.i32(i32 %334, i32 %132)
  store i32 %spec.select306, ptr %70, align 4, !tbaa !21
  store i32 %spec.select306, ptr %7, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %9) #3
  br label %385

335:                                              ; preds = %294
  %336 = load i32, ptr %123, align 4, !tbaa !43
  %337 = icmp slt i32 %248, %336
  br i1 %337, label %338, label %376

338:                                              ; preds = %335
  store i16 0, ptr %129, align 2, !tbaa !26
  store i16 0, ptr %124, align 4, !tbaa !31
  %339 = load i16, ptr %128, align 4, !tbaa !38
  %340 = add i16 %339, 2
  store i16 %340, ptr %128, align 4, !tbaa !38
  %341 = load i16, ptr %125, align 4, !tbaa !29
  %342 = icmp sgt i16 %340, %341
  br i1 %342, label %343, label %385

343:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %10) #3
  store i16 0, ptr %128, align 4, !tbaa !38
  %344 = load i32, ptr %19, align 4, !tbaa !17
  %345 = load i32, ptr %130, align 4, !tbaa !41
  %.not295 = icmp eq i32 %345, %344
  br i1 %.not295, label %353, label %346

346:                                              ; preds = %343
  %347 = load i32, ptr %7, align 4, !tbaa !15
  %348 = sub nsw i32 %347, %344
  %349 = shl i32 %348, 14
  %350 = sub nsw i32 %345, %344
  %351 = sdiv i32 %349, %350
  %352 = trunc i32 %351 to i16
  br label %353

353:                                              ; preds = %346, %343
  %.0 = phi i16 [ %352, %346 ], [ 16384, %343 ]
  call void @WebRtcAgc_ExpCurve(i16 noundef signext %.0, ptr noundef nonnull %10)
  %354 = load i16, ptr %10, align 2, !tbaa !42
  %355 = sext i16 %354 to i64
  %356 = getelementptr inbounds [8 x i16], ptr @kOffset2, i64 0, i64 %355
  %357 = load i16, ptr %356, align 2, !tbaa !42
  %358 = getelementptr inbounds [8 x i16], ptr @kSlope2, i64 0, i64 %355
  %359 = load i16, ptr %358, align 2, !tbaa !42
  %360 = sext i16 %359 to i32
  %361 = sext i16 %.0 to i32
  %362 = mul nsw i32 %360, %361
  %363 = lshr i32 %362, 13
  %364 = trunc i32 %363 to i16
  %365 = sub i16 %357, %364
  %366 = load i32, ptr %119, align 4, !tbaa !24
  %367 = sdiv i32 %366, 64
  %368 = mul nsw i32 %367, 67
  store i32 %368, ptr %119, align 4, !tbaa !24
  %369 = sext i16 %365 to i32
  %370 = load i32, ptr %7, align 4, !tbaa !15
  %371 = load i32, ptr %19, align 4, !tbaa !17
  %372 = sub nsw i32 %370, %371
  %373 = mul i32 %372, %369
  %374 = lshr i32 %373, 14
  %375 = add i32 %374, %371
  %.not296 = icmp sgt i32 %375, %71
  %spec.select307 = select i1 %.not296, i32 %375, i32 %131
  store i32 %spec.select307, ptr %70, align 4, !tbaa !21
  store i32 %spec.select307, ptr %7, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %10) #3
  br label %385

376:                                              ; preds = %335
  %377 = load i16, ptr %124, align 4, !tbaa !31
  %378 = icmp sgt i16 %377, 4000
  br i1 %378, label %379, label %381

379:                                              ; preds = %376
  store i16 1000, ptr %125, align 4, !tbaa !29
  store i16 500, ptr %126, align 2, !tbaa !30
  %380 = load <2 x i32>, ptr %127, align 4, !tbaa !15
  store <2 x i32> %380, ptr %121, align 4, !tbaa !15
  br label %383

381:                                              ; preds = %376
  %382 = add nsw i16 %377, 2
  store i16 %382, ptr %124, align 4, !tbaa !31
  br label %383

383:                                              ; preds = %381, %379
  store i16 0, ptr %128, align 4, !tbaa !38
  store i16 0, ptr %129, align 2, !tbaa !26
  %384 = load i32, ptr %7, align 4, !tbaa !15
  store i32 %384, ptr %70, align 4, !tbaa !21
  br label %385

385:                                              ; preds = %.split, %279, %274, %383, %353, %338, %297, %312, %251, %256
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 5
  br i1 %exitcond.not, label %.split311, label %.split, !llvm.loop !44

.split311:                                        ; preds = %385, %.split.us
  %386 = icmp eq i16 %4, 1
  br i1 %386, label %.split311._crit_edge, label %387

.split311._crit_edge:                             ; preds = %.split311
  %.pre317 = load i32, ptr %70, align 4, !tbaa !21
  br label %391

387:                                              ; preds = %.split311
  %388 = getelementptr inbounds i8, ptr %0, i64 300
  %389 = load i16, ptr %388, align 4, !tbaa !32
  %390 = add i16 %389, -1
  %or.cond = icmp ult i16 %390, 7999
  %.pre318 = load i32, ptr %70, align 4, !tbaa !21
  br i1 %or.cond, label %391, label %._crit_edge315

391:                                              ; preds = %.split311._crit_edge, %387
  %392 = phi i32 [ %.pre317, %.split311._crit_edge ], [ %.pre318, %387 ]
  %393 = icmp sgt i32 %392, %71
  br i1 %393, label %394, label %._crit_edge315

394:                                              ; preds = %391
  store i32 %71, ptr %70, align 4, !tbaa !21
  br label %._crit_edge315

._crit_edge315:                                   ; preds = %387, %391, %394
  %395 = phi i32 [ %392, %391 ], [ %71, %394 ], [ %.pre318, %387 ]
  %396 = load i32, ptr %72, align 4, !tbaa !19
  %397 = icmp sgt i32 %395, %396
  br i1 %397, label %.sink.split, label %398

398:                                              ; preds = %._crit_edge315
  %399 = getelementptr inbounds i8, ptr %0, i64 336
  %400 = load i32, ptr %399, align 4, !tbaa !22
  %401 = icmp slt i32 %395, %400
  br i1 %401, label %.sink.split, label %402

.sink.split:                                      ; preds = %398, %._crit_edge315
  %.sink = phi i32 [ %396, %._crit_edge315 ], [ %400, %398 ]
  store i32 %.sink, ptr %70, align 4, !tbaa !21
  br label %402

402:                                              ; preds = %.sink.split, %398
  %403 = phi i32 [ %395, %398 ], [ %.sink, %.sink.split ]
  %404 = load i32, ptr %15, align 4, !tbaa !16
  %.308 = call i32 @llvm.smin.i32(i32 %403, i32 %404)
  %405 = load i16, ptr %11, align 4, !tbaa !8
  %406 = zext nneg i16 %405 to i32
  %407 = ashr i32 %.308, %406
  store i32 %407, ptr %2, align 4, !tbaa !15
  br label %408

408:                                              ; preds = %18, %6, %402
  %.0258 = phi i32 [ 0, %402 ], [ -1, %6 ], [ -1, %18 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #3
  ret i32 %.0258
}

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

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

attributes #0 = { mustprogress 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { 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 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C/C++ TBAA"}
!8 = !{!9, !11, i64 348}
!9 = !{!"", !10, i64 0, !11, i64 4, !11, i64 6, !11, i64 8, !6, i64 10, !12, i64 12, !12, i64 18, !11, i64 24, !11, i64 26, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !11, i64 56, !11, i64 58, !6, i64 60, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !6, i64 116, !6, i64 156, !6, i64 196, !11, i64 276, !11, i64 278, !11, i64 280, !11, i64 282, !11, i64 284, !11, i64 286, !11, i64 288, !11, i64 290, !11, i64 292, !11, i64 294, !11, i64 296, !11, i64 298, !11, i64 300, !11, i64 302, !10, i64 304, !11, i64 308, !10, i64 312, !10, i64 316, !10, i64 320, !10, i64 324, !10, i64 328, !10, i64 332, !10, i64 336, !10, i64 340, !10, i64 344, !11, i64 348, !13, i64 352, !14, i64 408, !11, i64 664}
!10 = !{!"int", !6, i64 0}
!11 = !{!"short", !6, i64 0}
!12 = !{!"", !11, i64 0, !11, i64 2, !6, i64 4}
!13 = !{!"", !6, i64 0, !11, i64 32, !11, i64 34, !11, i64 36, !11, i64 38, !10, i64 40, !11, i64 44, !11, i64 46, !10, i64 48, !11, i64 52}
!14 = !{!"", !10, i64 0, !10, i64 4, !10, i64 8, !6, i64 12, !11, i64 140, !11, i64 142, !13, i64 144, !13, i64 200}
!15 = !{!10, !10, i64 0}
!16 = !{!9, !10, i64 324}
!17 = !{!9, !10, i64 332}
!18 = !{!9, !11, i64 290}
!19 = !{!9, !10, i64 320}
!20 = !{!9, !11, i64 8}
!21 = !{!9, !10, i64 316}
!22 = !{!9, !10, i64 336}
!23 = !{!9, !10, i64 344}
!24 = !{!9, !10, i64 108}
!25 = !{!9, !10, i64 340}
!26 = !{!9, !11, i64 286}
!27 = !{!9, !11, i64 298}
!28 = !{!9, !10, i64 112}
!29 = !{!9, !11, i64 296}
!30 = !{!9, !11, i64 294}
!31 = !{!9, !11, i64 288}
!32 = !{!9, !11, i64 300}
!33 = !{!9, !11, i64 280}
!34 = !{!9, !11, i64 276}
!35 = !{!9, !10, i64 100}
!36 = !{!9, !10, i64 104}
!37 = !{!9, !10, i64 48}
!38 = !{!9, !11, i64 284}
!39 = !{!9, !10, i64 92}
!40 = !{!9, !10, i64 52}
!41 = !{!9, !10, i64 328}
!42 = !{!11, !11, i64 0}
!43 = !{!9, !10, i64 96}
!44 = distinct !{!44, !45, !46}
!45 = !{!"llvm.loop.mustprogress"}
!46 = !{!"llvm.loop.unswitch.partial.disable"}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass