; LLVM IR from modlfo/AudioEngine :: AudioEngine/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis (fit)

; 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.lsfit_acc = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.vorbis_look_floor1 = type { [65 x i32], [65 x i32], [65 x i32], [63 x i32], [63 x i32], i32, i32, i32, ptr, i64, i64, i64 }
%struct.vorbis_info_floor1 = type { i32, [31 x i32], [16 x i32], [16 x i32], [16 x i32], [16 x [8 x i32]], i32, [65 x i32], float, float, float, float, float, i32 }

; Function Attrs: nounwind uwtable
define dso_local ptr @floor1_fit(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) #0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca [64 x %struct.lsfit_acc], align 16
  %16 = alloca [65 x i32], align 16
  %17 = alloca [65 x i32], align 16
  %18 = alloca [65 x i32], align 16
  %19 = alloca [65 x i32], align 16
  %20 = alloca ptr, align 8
  %21 = alloca [65 x i32], align 16
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  %47 = load ptr, ptr %6, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.vorbis_look_floor1, ptr %47, i32 0, i32 8
  %49 = load ptr, ptr %48, align 8, !tbaa !9
  store ptr %49, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  %50 = load ptr, ptr %6, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.vorbis_look_floor1, ptr %50, i32 0, i32 6
  %52 = load i32, ptr %51, align 8, !tbaa !13
  %53 = sext i32 %52 to i64
  store i64 %53, ptr %12, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  %54 = load ptr, ptr %6, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct.vorbis_look_floor1, ptr %54, i32 0, i32 5
  %56 = load i32, ptr %55, align 4, !tbaa !15
  %57 = sext i32 %56 to i64
  store i64 %57, ptr %13, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  store i64 0, ptr %14, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 3584, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 260, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 260, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 260, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 260, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #4
  store ptr null, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 260, ptr %21) #4
  store i64 0, ptr %9, align 8, !tbaa !14
  br label %58

58:                                               ; preds = %65, %4
  %59 = load i64, ptr %9, align 8, !tbaa !14
  %60 = load i64, ptr %13, align 8, !tbaa !14
  %61 = icmp slt i64 %59, %60
  br i1 %61, label %62, label %68

62:                                               ; preds = %58
  %63 = load i64, ptr %9, align 8, !tbaa !14
  %64 = getelementptr inbounds [65 x i32], ptr %16, i64 0, i64 %63
  store i32 -200, ptr %64, align 4, !tbaa !16
  br label %65

65:                                               ; preds = %62
  %66 = load i64, ptr %9, align 8, !tbaa !14
  %67 = add nsw i64 %66, 1
  store i64 %67, ptr %9, align 8, !tbaa !14
  br label %58, !llvm.loop !17

68:                                               ; preds = %58
  store i64 0, ptr %9, align 8, !tbaa !14
  br label %69

69:                                               ; preds = %76, %68
  %70 = load i64, ptr %9, align 8, !tbaa !14
  %71 = load i64, ptr %13, align 8, !tbaa !14
  %72 = icmp slt i64 %70, %71
  br i1 %72, label %73, label %79

73:                                               ; preds = %69
  %74 = load i64, ptr %9, align 8, !tbaa !14
  %75 = getelementptr inbounds [65 x i32], ptr %17, i64 0, i64 %74
  store i32 -200, ptr %75, align 4, !tbaa !16
  br label %76

76:                                               ; preds = %73
  %77 = load i64, ptr %9, align 8, !tbaa !14
  %78 = add nsw i64 %77, 1
  store i64 %78, ptr %9, align 8, !tbaa !14
  br label %69, !llvm.loop !19

79:                                               ; preds = %69
  store i64 0, ptr %9, align 8, !tbaa !14
  br label %80

80:                                               ; preds = %87, %79
  %81 = load i64, ptr %9, align 8, !tbaa !14
  %82 = load i64, ptr %13, align 8, !tbaa !14
  %83 = icmp slt i64 %81, %82
  br i1 %83, label %84, label %90

84:                                               ; preds = %80
  %85 = load i64, ptr %9, align 8, !tbaa !14
  %86 = getelementptr inbounds [65 x i32], ptr %18, i64 0, i64 %85
  store i32 0, ptr %86, align 4, !tbaa !16
  br label %87

87:                                               ; preds = %84
  %88 = load i64, ptr %9, align 8, !tbaa !14
  %89 = add nsw i64 %88, 1
  store i64 %89, ptr %9, align 8, !tbaa !14
  br label %80, !llvm.loop !20

90:                                               ; preds = %80
  store i64 0, ptr %9, align 8, !tbaa !14
  br label %91

91:                                               ; preds = %98, %90
  %92 = load i64, ptr %9, align 8, !tbaa !14
  %93 = load i64, ptr %13, align 8, !tbaa !14
  %94 = icmp slt i64 %92, %93
  br i1 %94, label %95, label %101

95:                                               ; preds = %91
  %96 = load i64, ptr %9, align 8, !tbaa !14
  %97 = getelementptr inbounds [65 x i32], ptr %19, i64 0, i64 %96
  store i32 1, ptr %97, align 4, !tbaa !16
  br label %98

98:                                               ; preds = %95
  %99 = load i64, ptr %9, align 8, !tbaa !14
  %100 = add nsw i64 %99, 1
  store i64 %100, ptr %9, align 8, !tbaa !14
  br label %91, !llvm.loop !21

101:                                              ; preds = %91
  store i64 0, ptr %9, align 8, !tbaa !14
  br label %102

102:                                              ; preds = %109, %101
  %103 = load i64, ptr %9, align 8, !tbaa !14
  %104 = load i64, ptr %13, align 8, !tbaa !14
  %105 = icmp slt i64 %103, %104
  br i1 %105, label %106, label %112

106:                                              ; preds = %102
  %107 = load i64, ptr %9, align 8, !tbaa !14
  %108 = getelementptr inbounds [65 x i32], ptr %21, i64 0, i64 %107
  store i32 -1, ptr %108, align 4, !tbaa !16
  br label %109

109:                                              ; preds = %106
  %110 = load i64, ptr %9, align 8, !tbaa !14
  %111 = add nsw i64 %110, 1
  store i64 %111, ptr %9, align 8, !tbaa !14
  br label %102, !llvm.loop !22

112:                                              ; preds = %102
  %113 = load i64, ptr %13, align 8, !tbaa !14
  %114 = icmp eq i64 %113, 0
  br i1 %114, label %115, label %128

115:                                              ; preds = %112
  %116 = load ptr, ptr %8, align 8, !tbaa !5
  %117 = load ptr, ptr %7, align 8, !tbaa !5
  %118 = load i64, ptr %12, align 8, !tbaa !14
  %119 = trunc i64 %118 to i32
  %120 = getelementptr inbounds [64 x %struct.lsfit_acc], ptr %15, i64 0, i64 0
  %121 = load i64, ptr %12, align 8, !tbaa !14
  %122 = trunc i64 %121 to i32
  %123 = load ptr, ptr %11, align 8, !tbaa !5
  %124 = call i32 @accumulate_fit(ptr noundef %116, ptr noundef %117, i32 noundef 0, i32 noundef %119, ptr noundef %120, i32 noundef %122, ptr noundef %123)
  %125 = sext i32 %124 to i64
  %126 = load i64, ptr %14, align 8, !tbaa !14
  %127 = add nsw i64 %126, %125
  store i64 %127, ptr %14, align 8, !tbaa !14
  br label %162

128:                                              ; preds = %112
  store i64 0, ptr %9, align 8, !tbaa !14
  br label %129

129:                                              ; preds = %158, %128
  %130 = load i64, ptr %9, align 8, !tbaa !14
  %131 = load i64, ptr %13, align 8, !tbaa !14
  %132 = sub nsw i64 %131, 1
  %133 = icmp slt i64 %130, %132
  br i1 %133, label %134, label %161

134:                                              ; preds = %129
  %135 = load ptr, ptr %8, align 8, !tbaa !5
  %136 = load ptr, ptr %7, align 8, !tbaa !5
  %137 = load ptr, ptr %6, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.vorbis_look_floor1, ptr %137, i32 0, i32 0
  %139 = load i64, ptr %9, align 8, !tbaa !14
  %140 = getelementptr inbounds [65 x i32], ptr %138, i64 0, i64 %139
  %141 = load i32, ptr %140, align 4, !tbaa !16
  %142 = load ptr, ptr %6, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.vorbis_look_floor1, ptr %142, i32 0, i32 0
  %144 = load i64, ptr %9, align 8, !tbaa !14
  %145 = add nsw i64 %144, 1
  %146 = getelementptr inbounds [65 x i32], ptr %143, i64 0, i64 %145
  %147 = load i32, ptr %146, align 4, !tbaa !16
  %148 = getelementptr inbounds [64 x %struct.lsfit_acc], ptr %15, i64 0, i64 0
  %149 = load i64, ptr %9, align 8, !tbaa !14
  %150 = getelementptr inbounds %struct.lsfit_acc, ptr %148, i64 %149
  %151 = load i64, ptr %12, align 8, !tbaa !14
  %152 = trunc i64 %151 to i32
  %153 = load ptr, ptr %11, align 8, !tbaa !5
  %154 = call i32 @accumulate_fit(ptr noundef %135, ptr noundef %136, i32 noundef %141, i32 noundef %147, ptr noundef %150, i32 noundef %152, ptr noundef %153)
  %155 = sext i32 %154 to i64
  %156 = load i64, ptr %14, align 8, !tbaa !14
  %157 = add nsw i64 %156, %155
  store i64 %157, ptr %14, align 8, !tbaa !14
  br label %158

158:                                              ; preds = %134
  %159 = load i64, ptr %9, align 8, !tbaa !14
  %160 = add nsw i64 %159, 1
  store i64 %160, ptr %9, align 8, !tbaa !14
  br label %129, !llvm.loop !23

161:                                              ; preds = %129
  br label %162

162:                                              ; preds = %161, %115
  %163 = load i64, ptr %14, align 8, !tbaa !14
  %164 = icmp ne i64 %163, 0
  br i1 %164, label %165, label %485

165:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  store i32 -200, ptr %22, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  store i32 -200, ptr %23, align 4, !tbaa !16
  %166 = getelementptr inbounds [64 x %struct.lsfit_acc], ptr %15, i64 0, i64 0
  %167 = load i64, ptr %13, align 8, !tbaa !14
  %168 = sub nsw i64 %167, 1
  %169 = trunc i64 %168 to i32
  %170 = load ptr, ptr %11, align 8, !tbaa !5
  %171 = call i32 @fit_line(ptr noundef %166, i32 noundef %169, ptr noundef %22, ptr noundef %23, ptr noundef %170)
  %172 = load i32, ptr %22, align 4, !tbaa !16
  %173 = getelementptr inbounds [65 x i32], ptr %16, i64 0, i64 0
  store i32 %172, ptr %173, align 16, !tbaa !16
  %174 = load i32, ptr %22, align 4, !tbaa !16
  %175 = getelementptr inbounds [65 x i32], ptr %17, i64 0, i64 0
  store i32 %174, ptr %175, align 16, !tbaa !16
  %176 = load i32, ptr %23, align 4, !tbaa !16
  %177 = getelementptr inbounds [65 x i32], ptr %17, i64 0, i64 1
  store i32 %176, ptr %177, align 4, !tbaa !16
  %178 = load i32, ptr %23, align 4, !tbaa !16
  %179 = getelementptr inbounds [65 x i32], ptr %16, i64 0, i64 1
  store i32 %178, ptr %179, align 4, !tbaa !16
  store i64 2, ptr %9, align 8, !tbaa !14
  br label %180

180:                                              ; preds = %391, %165
  %181 = load i64, ptr %9, align 8, !tbaa !14
  %182 = load i64, ptr %13, align 8, !tbaa !14
  %183 = icmp slt i64 %181, %182
  br i1 %183, label %184, label %394

184:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  %185 = load ptr, ptr %6, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.vorbis_look_floor1, ptr %185, i32 0, i32 2
  %187 = load i64, ptr %9, align 8, !tbaa !14
  %188 = getelementptr inbounds [65 x i32], ptr %186, i64 0, i64 %187
  %189 = load i32, ptr %188, align 4, !tbaa !16
  store i32 %189, ptr %24, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  %190 = load i32, ptr %24, align 4, !tbaa !16
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds [65 x i32], ptr %18, i64 0, i64 %191
  %193 = load i32, ptr %192, align 4, !tbaa !16
  store i32 %193, ptr %25, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  %194 = load i32, ptr %24, align 4, !tbaa !16
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds [65 x i32], ptr %19, i64 0, i64 %195
  %197 = load i32, ptr %196, align 4, !tbaa !16
  store i32 %197, ptr %26, align 4, !tbaa !16
  %198 = load i32, ptr %25, align 4, !tbaa !16
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds [65 x i32], ptr %21, i64 0, i64 %199
  %201 = load i32, ptr %200, align 4, !tbaa !16
  %202 = load i32, ptr %26, align 4, !tbaa !16
  %203 = icmp ne i32 %201, %202
  br i1 %203, label %204, label %390

204:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  %205 = load ptr, ptr %6, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.vorbis_look_floor1, ptr %205, i32 0, i32 2
  %207 = load i32, ptr %25, align 4, !tbaa !16
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds [65 x i32], ptr %206, i64 0, i64 %208
  %210 = load i32, ptr %209, align 4, !tbaa !16
  store i32 %210, ptr %27, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  %211 = load ptr, ptr %6, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.vorbis_look_floor1, ptr %211, i32 0, i32 2
  %213 = load i32, ptr %26, align 4, !tbaa !16
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds [65 x i32], ptr %212, i64 0, i64 %214
  %216 = load i32, ptr %215, align 4, !tbaa !16
  store i32 %216, ptr %28, align 4, !tbaa !16
  %217 = load i32, ptr %26, align 4, !tbaa !16
  %218 = load i32, ptr %25, align 4, !tbaa !16
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds [65 x i32], ptr %21, i64 0, i64 %219
  store i32 %217, ptr %220, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  %221 = load ptr, ptr %11, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.vorbis_info_floor1, ptr %221, i32 0, i32 7
  %223 = load i32, ptr %25, align 4, !tbaa !16
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds [65 x i32], ptr %222, i64 0, i64 %224
  %226 = load i32, ptr %225, align 4, !tbaa !16
  store i32 %226, ptr %29, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #4
  %227 = load ptr, ptr %11, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.vorbis_info_floor1, ptr %227, i32 0, i32 7
  %229 = load i32, ptr %26, align 4, !tbaa !16
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds [65 x i32], ptr %228, i64 0, i64 %230
  %232 = load i32, ptr %231, align 4, !tbaa !16
  store i32 %232, ptr %30, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #4
  %233 = getelementptr inbounds [65 x i32], ptr %16, i64 0, i64 0
  %234 = getelementptr inbounds [65 x i32], ptr %17, i64 0, i64 0
  %235 = load i32, ptr %25, align 4, !tbaa !16
  %236 = call i32 @post_Y(ptr noundef %233, ptr noundef %234, i32 noundef %235)
  store i32 %236, ptr %31, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  %237 = getelementptr inbounds [65 x i32], ptr %16, i64 0, i64 0
  %238 = getelementptr inbounds [65 x i32], ptr %17, i64 0, i64 0
  %239 = load i32, ptr %26, align 4, !tbaa !16
  %240 = call i32 @post_Y(ptr noundef %237, ptr noundef %238, i32 noundef %239)
  store i32 %240, ptr %32, align 4, !tbaa !16
  %241 = load i32, ptr %31, align 4, !tbaa !16
  %242 = icmp eq i32 %241, -1
  br i1 %242, label %246, label %243

243:                                              ; preds = %204
  %244 = load i32, ptr %32, align 4, !tbaa !16
  %245 = icmp eq i32 %244, -1
  br i1 %245, label %246, label %247

246:                                              ; preds = %243, %204
  call void @exit(i32 noundef 1) #5
  unreachable

247:                                              ; preds = %243
  %248 = load i32, ptr %29, align 4, !tbaa !16
  %249 = load i32, ptr %30, align 4, !tbaa !16
  %250 = load i32, ptr %31, align 4, !tbaa !16
  %251 = load i32, ptr %32, align 4, !tbaa !16
  %252 = load ptr, ptr %8, align 8, !tbaa !5
  %253 = load ptr, ptr %7, align 8, !tbaa !5
  %254 = load ptr, ptr %11, align 8, !tbaa !5
  %255 = call i32 @inspect_error(i32 noundef %248, i32 noundef %249, i32 noundef %250, i32 noundef %251, ptr noundef %252, ptr noundef %253, ptr noundef %254)
  %256 = icmp ne i32 %255, 0
  br i1 %256, label %257, label %384

257:                                              ; preds = %247
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  store i32 -200, ptr %33, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  store i32 -200, ptr %34, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #4
  store i32 -200, ptr %35, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  store i32 -200, ptr %36, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #4
  %258 = getelementptr inbounds [64 x %struct.lsfit_acc], ptr %15, i64 0, i64 0
  %259 = load i32, ptr %27, align 4, !tbaa !16
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds %struct.lsfit_acc, ptr %258, i64 %260
  %262 = load i32, ptr %24, align 4, !tbaa !16
  %263 = load i32, ptr %27, align 4, !tbaa !16
  %264 = sub nsw i32 %262, %263
  %265 = load ptr, ptr %11, align 8, !tbaa !5
  %266 = call i32 @fit_line(ptr noundef %261, i32 noundef %264, ptr noundef %33, ptr noundef %34, ptr noundef %265)
  store i32 %266, ptr %37, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  %267 = getelementptr inbounds [64 x %struct.lsfit_acc], ptr %15, i64 0, i64 0
  %268 = load i32, ptr %24, align 4, !tbaa !16
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds %struct.lsfit_acc, ptr %267, i64 %269
  %271 = load i32, ptr %28, align 4, !tbaa !16
  %272 = load i32, ptr %24, align 4, !tbaa !16
  %273 = sub nsw i32 %271, %272
  %274 = load ptr, ptr %11, align 8, !tbaa !5
  %275 = call i32 @fit_line(ptr noundef %270, i32 noundef %273, ptr noundef %35, ptr noundef %36, ptr noundef %274)
  store i32 %275, ptr %38, align 4, !tbaa !16
  %276 = load i32, ptr %37, align 4, !tbaa !16
  %277 = icmp ne i32 %276, 0
  br i1 %277, label %278, label %281

278:                                              ; preds = %257
  %279 = load i32, ptr %31, align 4, !tbaa !16
  store i32 %279, ptr %33, align 4, !tbaa !16
  %280 = load i32, ptr %35, align 4, !tbaa !16
  store i32 %280, ptr %34, align 4, !tbaa !16
  br label %281

281:                                              ; preds = %278, %257
  %282 = load i32, ptr %38, align 4, !tbaa !16
  %283 = icmp ne i32 %282, 0
  br i1 %283, label %284, label %287

284:                                              ; preds = %281
  %285 = load i32, ptr %34, align 4, !tbaa !16
  store i32 %285, ptr %35, align 4, !tbaa !16
  %286 = load i32, ptr %32, align 4, !tbaa !16
  store i32 %286, ptr %36, align 4, !tbaa !16
  br label %287

287:                                              ; preds = %284, %281
  %288 = load i32, ptr %37, align 4, !tbaa !16
  %289 = icmp ne i32 %288, 0
  br i1 %289, label %290, label %298

290:                                              ; preds = %287
  %291 = load i32, ptr %38, align 4, !tbaa !16
  %292 = icmp ne i32 %291, 0
  br i1 %292, label %293, label %298

293:                                              ; preds = %290
  %294 = load i64, ptr %9, align 8, !tbaa !14
  %295 = getelementptr inbounds [65 x i32], ptr %16, i64 0, i64 %294
  store i32 -200, ptr %295, align 4, !tbaa !16
  %296 = load i64, ptr %9, align 8, !tbaa !14
  %297 = getelementptr inbounds [65 x i32], ptr %17, i64 0, i64 %296
  store i32 -200, ptr %297, align 4, !tbaa !16
  br label %383

298:                                              ; preds = %290, %287
  %299 = load i32, ptr %33, align 4, !tbaa !16
  %300 = load i32, ptr %25, align 4, !tbaa !16
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds [65 x i32], ptr %17, i64 0, i64 %301
  store i32 %299, ptr %302, align 4, !tbaa !16
  %303 = load i32, ptr %25, align 4, !tbaa !16
  %304 = icmp eq i32 %303, 0
  br i1 %304, label %305, label %310

305:                                              ; preds = %298
  %306 = load i32, ptr %33, align 4, !tbaa !16
  %307 = load i32, ptr %25, align 4, !tbaa !16
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds [65 x i32], ptr %16, i64 0, i64 %308
  store i32 %306, ptr %309, align 4, !tbaa !16
  br label %310

310:                                              ; preds = %305, %298
  %311 = load i32, ptr %34, align 4, !tbaa !16
  %312 = load i64, ptr %9, align 8, !tbaa !14
  %313 = getelementptr inbounds [65 x i32], ptr %16, i64 0, i64 %312
  store i32 %311, ptr %313, align 4, !tbaa !16
  %314 = load i32, ptr %35, align 4, !tbaa !16
  %315 = load i64, ptr %9, align 8, !tbaa !14
  %316 = getelementptr inbounds [65 x i32], ptr %17, i64 0, i64 %315
  store i32 %314, ptr %316, align 4, !tbaa !16
  %317 = load i32, ptr %36, align 4, !tbaa !16
  %318 = load i32, ptr %26, align 4, !tbaa !16
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds [65 x i32], ptr %16, i64 0, i64 %319
  store i32 %317, ptr %320, align 4, !tbaa !16
  %321 = load i32, ptr %26, align 4, !tbaa !16
  %322 = icmp eq i32 %321, 1
  br i1 %322, label %323, label %328

323:                                              ; preds = %310
  %324 = load i32, ptr %36, align 4, !tbaa !16
  %325 = load i32, ptr %26, align 4, !tbaa !16
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds [65 x i32], ptr %17, i64 0, i64 %326
  store i32 %324, ptr %327, align 4, !tbaa !16
  br label %328

328:                                              ; preds = %323, %310
  %329 = load i32, ptr %34, align 4, !tbaa !16
  %330 = icmp sge i32 %329, 0
  br i1 %330, label %334, label %331

331:                                              ; preds = %328
  %332 = load i32, ptr %35, align 4, !tbaa !16
  %333 = icmp sge i32 %332, 0
  br i1 %333, label %334, label %382

334:                                              ; preds = %331, %328
  %335 = load i32, ptr %24, align 4, !tbaa !16
  %336 = sub nsw i32 %335, 1
  %337 = sext i32 %336 to i64
  store i64 %337, ptr %10, align 8, !tbaa !14
  br label %338

338:                                              ; preds = %354, %334
  %339 = load i64, ptr %10, align 8, !tbaa !14
  %340 = icmp sge i64 %339, 0
  br i1 %340, label %341, label %357

341:                                              ; preds = %338
  %342 = load i64, ptr %10, align 8, !tbaa !14
  %343 = getelementptr inbounds [65 x i32], ptr %19, i64 0, i64 %342
  %344 = load i32, ptr %343, align 4, !tbaa !16
  %345 = load i32, ptr %26, align 4, !tbaa !16
  %346 = icmp eq i32 %344, %345
  br i1 %346, label %347, label %352

347:                                              ; preds = %341
  %348 = load i64, ptr %9, align 8, !tbaa !14
  %349 = trunc i64 %348 to i32
  %350 = load i64, ptr %10, align 8, !tbaa !14
  %351 = getelementptr inbounds [65 x i32], ptr %19, i64 0, i64 %350
  store i32 %349, ptr %351, align 4, !tbaa !16
  br label %353

352:                                              ; preds = %341
  br label %357

353:                                              ; preds = %347
  br label %354

354:                                              ; preds = %353
  %355 = load i64, ptr %10, align 8, !tbaa !14
  %356 = add nsw i64 %355, -1
  store i64 %356, ptr %10, align 8, !tbaa !14
  br label %338, !llvm.loop !24

357:                                              ; preds = %352, %338
  %358 = load i32, ptr %24, align 4, !tbaa !16
  %359 = add nsw i32 %358, 1
  %360 = sext i32 %359 to i64
  store i64 %360, ptr %10, align 8, !tbaa !14
  br label %361

361:                                              ; preds = %378, %357
  %362 = load i64, ptr %10, align 8, !tbaa !14
  %363 = load i64, ptr %13, align 8, !tbaa !14
  %364 = icmp slt i64 %362, %363
  br i1 %364, label %365, label %381

365:                                              ; preds = %361
  %366 = load i64, ptr %10, align 8, !tbaa !14
  %367 = getelementptr inbounds [65 x i32], ptr %18, i64 0, i64 %366
  %368 = load i32, ptr %367, align 4, !tbaa !16
  %369 = load i32, ptr %25, align 4, !tbaa !16
  %370 = icmp eq i32 %368, %369
  br i1 %370, label %371, label %376

371:                                              ; preds = %365
  %372 = load i64, ptr %9, align 8, !tbaa !14
  %373 = trunc i64 %372 to i32
  %374 = load i64, ptr %10, align 8, !tbaa !14
  %375 = getelementptr inbounds [65 x i32], ptr %18, i64 0, i64 %374
  store i32 %373, ptr %375, align 4, !tbaa !16
  br label %377

376:                                              ; preds = %365
  br label %381

377:                                              ; preds = %371
  br label %378

378:                                              ; preds = %377
  %379 = load i64, ptr %10, align 8, !tbaa !14
  %380 = add nsw i64 %379, 1
  store i64 %380, ptr %10, align 8, !tbaa !14
  br label %361, !llvm.loop !25

381:                                              ; preds = %376, %361
  br label %382

382:                                              ; preds = %381, %331
  br label %383

383:                                              ; preds = %382, %293
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  br label %389

384:                                              ; preds = %247
  %385 = load i64, ptr %9, align 8, !tbaa !14
  %386 = getelementptr inbounds [65 x i32], ptr %16, i64 0, i64 %385
  store i32 -200, ptr %386, align 4, !tbaa !16
  %387 = load i64, ptr %9, align 8, !tbaa !14
  %388 = getelementptr inbounds [65 x i32], ptr %17, i64 0, i64 %387
  store i32 -200, ptr %388, align 4, !tbaa !16
  br label %389

389:                                              ; preds = %384, %383
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  br label %390

390:                                              ; preds = %389, %184
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  br label %391

391:                                              ; preds = %390
  %392 = load i64, ptr %9, align 8, !tbaa !14
  %393 = add nsw i64 %392, 1
  store i64 %393, ptr %9, align 8, !tbaa !14
  br label %180, !llvm.loop !26

394:                                              ; preds = %180
  %395 = load ptr, ptr %5, align 8, !tbaa !5
  %396 = load i64, ptr %13, align 8, !tbaa !14
  %397 = mul i64 4, %396
  %398 = call ptr @_vorbis_block_alloc(ptr noundef %395, i64 noundef %397)
  store ptr %398, ptr %20, align 8, !tbaa !5
  %399 = getelementptr inbounds [65 x i32], ptr %16, i64 0, i64 0
  %400 = getelementptr inbounds [65 x i32], ptr %17, i64 0, i64 0
  %401 = call i32 @post_Y(ptr noundef %399, ptr noundef %400, i32 noundef 0)
  %402 = load ptr, ptr %20, align 8, !tbaa !5
  %403 = getelementptr inbounds i32, ptr %402, i64 0
  store i32 %401, ptr %403, align 4, !tbaa !16
  %404 = getelementptr inbounds [65 x i32], ptr %16, i64 0, i64 0
  %405 = getelementptr inbounds [65 x i32], ptr %17, i64 0, i64 0
  %406 = call i32 @post_Y(ptr noundef %404, ptr noundef %405, i32 noundef 1)
  %407 = load ptr, ptr %20, align 8, !tbaa !5
  %408 = getelementptr inbounds i32, ptr %407, i64 1
  store i32 %406, ptr %408, align 4, !tbaa !16
  store i64 2, ptr %9, align 8, !tbaa !14
  br label %409

409:                                              ; preds = %481, %394
  %410 = load i64, ptr %9, align 8, !tbaa !14
  %411 = load i64, ptr %13, align 8, !tbaa !14
  %412 = icmp slt i64 %410, %411
  br i1 %412, label %413, label %484

413:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #4
  %414 = load ptr, ptr %6, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.vorbis_look_floor1, ptr %414, i32 0, i32 4
  %416 = load i64, ptr %9, align 8, !tbaa !14
  %417 = sub nsw i64 %416, 2
  %418 = getelementptr inbounds [63 x i32], ptr %415, i64 0, i64 %417
  %419 = load i32, ptr %418, align 4, !tbaa !16
  store i32 %419, ptr %39, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  %420 = load ptr, ptr %6, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.vorbis_look_floor1, ptr %420, i32 0, i32 3
  %422 = load i64, ptr %9, align 8, !tbaa !14
  %423 = sub nsw i64 %422, 2
  %424 = getelementptr inbounds [63 x i32], ptr %421, i64 0, i64 %423
  %425 = load i32, ptr %424, align 4, !tbaa !16
  store i32 %425, ptr %40, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #4
  %426 = load ptr, ptr %11, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.vorbis_info_floor1, ptr %426, i32 0, i32 7
  %428 = load i32, ptr %39, align 4, !tbaa !16
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds [65 x i32], ptr %427, i64 0, i64 %429
  %431 = load i32, ptr %430, align 4, !tbaa !16
  store i32 %431, ptr %41, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #4
  %432 = load ptr, ptr %11, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.vorbis_info_floor1, ptr %432, i32 0, i32 7
  %434 = load i32, ptr %40, align 4, !tbaa !16
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds [65 x i32], ptr %433, i64 0, i64 %435
  %437 = load i32, ptr %436, align 4, !tbaa !16
  store i32 %437, ptr %42, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #4
  %438 = load ptr, ptr %20, align 8, !tbaa !5
  %439 = load i32, ptr %39, align 4, !tbaa !16
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds i32, ptr %438, i64 %440
  %442 = load i32, ptr %441, align 4, !tbaa !16
  store i32 %442, ptr %43, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #4
  %443 = load ptr, ptr %20, align 8, !tbaa !5
  %444 = load i32, ptr %40, align 4, !tbaa !16
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds i32, ptr %443, i64 %445
  %447 = load i32, ptr %446, align 4, !tbaa !16
  store i32 %447, ptr %44, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #4
  %448 = load i32, ptr %41, align 4, !tbaa !16
  %449 = load i32, ptr %42, align 4, !tbaa !16
  %450 = load i32, ptr %43, align 4, !tbaa !16
  %451 = load i32, ptr %44, align 4, !tbaa !16
  %452 = load ptr, ptr %11, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.vorbis_info_floor1, ptr %452, i32 0, i32 7
  %454 = load i64, ptr %9, align 8, !tbaa !14
  %455 = getelementptr inbounds [65 x i32], ptr %453, i64 0, i64 %454
  %456 = load i32, ptr %455, align 4, !tbaa !16
  %457 = call i32 @render_point(i32 noundef %448, i32 noundef %449, i32 noundef %450, i32 noundef %451, i32 noundef %456)
  store i32 %457, ptr %45, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  %458 = getelementptr inbounds [65 x i32], ptr %16, i64 0, i64 0
  %459 = getelementptr inbounds [65 x i32], ptr %17, i64 0, i64 0
  %460 = load i64, ptr %9, align 8, !tbaa !14
  %461 = trunc i64 %460 to i32
  %462 = call i32 @post_Y(ptr noundef %458, ptr noundef %459, i32 noundef %461)
  store i32 %462, ptr %46, align 4, !tbaa !16
  %463 = load i32, ptr %46, align 4, !tbaa !16
  %464 = icmp sge i32 %463, 0
  br i1 %464, label %465, label %474

465:                                              ; preds = %413
  %466 = load i32, ptr %45, align 4, !tbaa !16
  %467 = load i32, ptr %46, align 4, !tbaa !16
  %468 = icmp ne i32 %466, %467
  br i1 %468, label %469, label %474

469:                                              ; preds = %465
  %470 = load i32, ptr %46, align 4, !tbaa !16
  %471 = load ptr, ptr %20, align 8, !tbaa !5
  %472 = load i64, ptr %9, align 8, !tbaa !14
  %473 = getelementptr inbounds i32, ptr %471, i64 %472
  store i32 %470, ptr %473, align 4, !tbaa !16
  br label %480

474:                                              ; preds = %465, %413
  %475 = load i32, ptr %45, align 4, !tbaa !16
  %476 = or i32 %475, 32768
  %477 = load ptr, ptr %20, align 8, !tbaa !5
  %478 = load i64, ptr %9, align 8, !tbaa !14
  %479 = getelementptr inbounds i32, ptr %477, i64 %478
  store i32 %476, ptr %479, align 4, !tbaa !16
  br label %480

480:                                              ; preds = %474, %469
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  br label %481

481:                                              ; preds = %480
  %482 = load i64, ptr %9, align 8, !tbaa !14
  %483 = add nsw i64 %482, 1
  store i64 %483, ptr %9, align 8, !tbaa !14
  br label %409, !llvm.loop !27

484:                                              ; preds = %409
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  br label %485

485:                                              ; preds = %484, %162
  %486 = load ptr, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 260, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 260, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 260, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 260, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 260, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 3584, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  ret ptr %486
}

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

; Function Attrs: nounwind uwtable
declare hidden i32 @accumulate_fit(ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare hidden i32 @fit_line(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare hidden i32 @post_Y(ptr noundef, ptr noundef, i32 noundef) #0

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #2

; Function Attrs: nounwind uwtable
declare hidden i32 @inspect_error(i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) #0

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

declare ptr @_vorbis_block_alloc(ptr noundef, i64 noundef) #3

; Function Attrs: nounwind uwtable
declare hidden i32 @render_point(i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #0

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !6, i64 1296}
!10 = !{!"", !7, i64 0, !7, i64 260, !7, i64 520, !7, i64 780, !7, i64 1032, !11, i64 1284, !11, i64 1288, !11, i64 1292, !6, i64 1296, !12, i64 1304, !12, i64 1312, !12, i64 1320}
!11 = !{!"int", !7, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!10, !11, i64 1288}
!14 = !{!12, !12, i64 0}
!15 = !{!10, !11, i64 1284}
!16 = !{!11, !11, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = distinct !{!19, !18}
!20 = distinct !{!20, !18}
!21 = distinct !{!21, !18}
!22 = distinct !{!22, !18}
!23 = distinct !{!23, !18}
!24 = distinct !{!24, !18}
!25 = distinct !{!25, !18}
!26 = distinct !{!26, !18}
!27 = distinct !{!27, !18}


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

%struct.lsfit_acc = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }

; Function Attrs: nounwind uwtable
define dso_local ptr @floor1_fit(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noundef %2, ptr noundef %3) local_unnamed_addr #0 {
  %5 = alloca [64 x %struct.lsfit_acc], align 16
  %6 = alloca [65 x i32], align 16
  %7 = alloca [65 x i32], align 16
  %8 = alloca [65 x i32], align 16
  %9 = alloca [65 x i32], align 16
  %10 = alloca [65 x i32], align 16
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = getelementptr inbounds i8, ptr %1, i64 1296
  %18 = load ptr, ptr %17, align 8, !tbaa !5
  %19 = getelementptr inbounds i8, ptr %1, i64 1288
  %20 = load i32, ptr %19, align 8, !tbaa !12
  %21 = getelementptr inbounds i8, ptr %1, i64 1284
  %22 = load i32, ptr %21, align 4, !tbaa !13
  %23 = sext i32 %22 to i64
  call void @llvm.lifetime.start.p0(i64 3584, ptr nonnull %5) #5
  call void @llvm.lifetime.start.p0(i64 260, ptr nonnull %6) #5
  call void @llvm.lifetime.start.p0(i64 260, ptr nonnull %7) #5
  call void @llvm.lifetime.start.p0(i64 260, ptr nonnull %8) #5
  call void @llvm.lifetime.start.p0(i64 260, ptr nonnull %9) #5
  call void @llvm.lifetime.start.p0(i64 260, ptr nonnull %10) #5
  %24 = icmp sgt i32 %22, 0
  br i1 %24, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %4
  %min.iters.check = icmp ult i32 %22, 8
  br i1 %min.iters.check, label %.lr.ph.preheader246, label %vector.ph

.lr.ph.preheader246:                              ; preds = %middle.block, %.lr.ph.preheader
  %.0177.ph = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %middle.block ]
  br label %.lr.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %23, 2147483640
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %25 = getelementptr inbounds [65 x i32], ptr %6, i64 0, i64 %index
  %26 = getelementptr inbounds i8, ptr %25, i64 16
  store <4 x i32> <i32 -200, i32 -200, i32 -200, i32 -200>, ptr %25, align 16, !tbaa !14
  store <4 x i32> <i32 -200, i32 -200, i32 -200, i32 -200>, ptr %26, align 16, !tbaa !14
  %index.next = add nuw i64 %index, 8
  %27 = icmp eq i64 %index.next, %n.vec
  br i1 %27, label %middle.block, label %vector.body, !llvm.loop !15

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %23
  br i1 %cmp.n, label %.preheader176, label %.lr.ph.preheader246

.preheader176:                                    ; preds = %.lr.ph, %middle.block
  br i1 %24, label %.lr.ph179.preheader, label %._crit_edge

.lr.ph179.preheader:                              ; preds = %.preheader176
  %min.iters.check224 = icmp ult i32 %22, 8
  br i1 %min.iters.check224, label %.lr.ph179.preheader245, label %vector.ph225

.lr.ph179.preheader245:                           ; preds = %middle.block222, %.lr.ph179.preheader
  %.1178.ph = phi i64 [ 0, %.lr.ph179.preheader ], [ %n.vec227, %middle.block222 ]
  br label %.lr.ph179

vector.ph225:                                     ; preds = %.lr.ph179.preheader
  %n.vec227 = and i64 %23, 2147483640
  br label %vector.body229

vector.body229:                                   ; preds = %vector.body229, %vector.ph225
  %index230 = phi i64 [ 0, %vector.ph225 ], [ %index.next231, %vector.body229 ]
  %28 = getelementptr inbounds [65 x i32], ptr %7, i64 0, i64 %index230
  %29 = getelementptr inbounds i8, ptr %28, i64 16
  store <4 x i32> <i32 -200, i32 -200, i32 -200, i32 -200>, ptr %28, align 16, !tbaa !14
  store <4 x i32> <i32 -200, i32 -200, i32 -200, i32 -200>, ptr %29, align 16, !tbaa !14
  %index.next231 = add nuw i64 %index230, 8
  %30 = icmp eq i64 %index.next231, %n.vec227
  br i1 %30, label %middle.block222, label %vector.body229, !llvm.loop !19

middle.block222:                                  ; preds = %vector.body229
  %cmp.n232 = icmp eq i64 %n.vec227, %23
  br i1 %cmp.n232, label %.preheader175, label %.lr.ph179.preheader245

.lr.ph:                                           ; preds = %.lr.ph.preheader246, %.lr.ph
  %.0177 = phi i64 [ %32, %.lr.ph ], [ %.0177.ph, %.lr.ph.preheader246 ]
  %31 = getelementptr inbounds [65 x i32], ptr %6, i64 0, i64 %.0177
  store i32 -200, ptr %31, align 4, !tbaa !14
  %32 = add nuw nsw i64 %.0177, 1
  %exitcond.not = icmp eq i64 %32, %23
  br i1 %exitcond.not, label %.preheader176, label %.lr.ph, !llvm.loop !20

.preheader175:                                    ; preds = %.lr.ph179, %middle.block222
  br i1 %24, label %.lr.ph183.preheader, label %._crit_edge

.lr.ph179:                                        ; preds = %.lr.ph179.preheader245, %.lr.ph179
  %.1178 = phi i64 [ %34, %.lr.ph179 ], [ %.1178.ph, %.lr.ph179.preheader245 ]
  %33 = getelementptr inbounds [65 x i32], ptr %7, i64 0, i64 %.1178
  store i32 -200, ptr %33, align 4, !tbaa !14
  %34 = add nuw nsw i64 %.1178, 1
  %exitcond210.not = icmp eq i64 %34, %23
  br i1 %exitcond210.not, label %.preheader175, label %.lr.ph179, !llvm.loop !21

.lr.ph183.preheader:                              ; preds = %.preheader175
  %35 = shl nuw nsw i64 %23, 2
  call void @llvm.memset.p0.i64(ptr nonnull align 16 %8, i8 0, i64 %35, i1 false), !tbaa !14
  %min.iters.check235 = icmp ult i32 %22, 8
  br i1 %min.iters.check235, label %.lr.ph183.preheader244, label %vector.ph236

.lr.ph183.preheader244:                           ; preds = %middle.block233, %.lr.ph183.preheader
  %.3182.ph = phi i64 [ 0, %.lr.ph183.preheader ], [ %n.vec238, %middle.block233 ]
  br label %.lr.ph183

vector.ph236:                                     ; preds = %.lr.ph183.preheader
  %n.vec238 = and i64 %23, 2147483640
  br label %vector.body240

vector.body240:                                   ; preds = %vector.body240, %vector.ph236
  %index241 = phi i64 [ 0, %vector.ph236 ], [ %index.next242, %vector.body240 ]
  %36 = getelementptr inbounds [65 x i32], ptr %9, i64 0, i64 %index241
  %37 = getelementptr inbounds i8, ptr %36, i64 16
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %36, align 16, !tbaa !14
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %37, align 16, !tbaa !14
  %index.next242 = add nuw i64 %index241, 8
  %38 = icmp eq i64 %index.next242, %n.vec238
  br i1 %38, label %middle.block233, label %vector.body240, !llvm.loop !22

middle.block233:                                  ; preds = %vector.body240
  %cmp.n243 = icmp eq i64 %n.vec238, %23
  br i1 %cmp.n243, label %.preheader173, label %.lr.ph183.preheader244

.preheader173:                                    ; preds = %.lr.ph183, %middle.block233
  br i1 %24, label %.preheader, label %._crit_edge

.lr.ph183:                                        ; preds = %.lr.ph183.preheader244, %.lr.ph183
  %.3182 = phi i64 [ %40, %.lr.ph183 ], [ %.3182.ph, %.lr.ph183.preheader244 ]
  %39 = getelementptr inbounds [65 x i32], ptr %9, i64 0, i64 %.3182
  store i32 1, ptr %39, align 4, !tbaa !14
  %40 = add nuw nsw i64 %.3182, 1
  %exitcond211.not = icmp eq i64 %40, %23
  br i1 %exitcond211.not, label %.preheader173, label %.lr.ph183, !llvm.loop !23

._crit_edge:                                      ; preds = %.preheader175, %.preheader176, %4, %.preheader173
  %41 = icmp eq i32 %22, 0
  br i1 %41, label %44, label %.loopexit172.thread

.preheader:                                       ; preds = %.preheader173
  %42 = shl nuw nsw i64 %23, 2
  call void @llvm.memset.p0.i64(ptr nonnull align 16 %10, i8 -1, i64 %42, i1 false), !tbaa !14
  %.not221 = icmp eq i32 %22, 1
  br i1 %.not221, label %.loopexit172.thread, label %.lr.ph188.preheader

.lr.ph188.preheader:                              ; preds = %.preheader
  %43 = add nsw i64 %23, -2
  br label %.lr.ph188

44:                                               ; preds = %._crit_edge
  %45 = call i32 @accumulate_fit(ptr noundef %3, ptr noundef %2, i32 noundef 0, i32 noundef %20, ptr noundef nonnull %5, i32 noundef %20, ptr noundef %18)
  %46 = sext i32 %45 to i64
  br label %.loopexit172

.lr.ph188:                                        ; preds = %.lr.ph188.preheader, %.lr.ph188
  %.5187 = phi i64 [ %49, %.lr.ph188 ], [ 0, %.lr.ph188.preheader ]
  %.0159186 = phi i64 [ %55, %.lr.ph188 ], [ 0, %.lr.ph188.preheader ]
  %47 = getelementptr inbounds [65 x i32], ptr %1, i64 0, i64 %.5187
  %48 = load i32, ptr %47, align 4, !tbaa !14
  %49 = add nuw nsw i64 %.5187, 1
  %50 = getelementptr inbounds [65 x i32], ptr %1, i64 0, i64 %49
  %51 = load i32, ptr %50, align 4, !tbaa !14
  %52 = getelementptr inbounds %struct.lsfit_acc, ptr %5, i64 %.5187
  %53 = call i32 @accumulate_fit(ptr noundef %3, ptr noundef %2, i32 noundef %48, i32 noundef %51, ptr noundef nonnull %52, i32 noundef %20, ptr noundef %18)
  %54 = sext i32 %53 to i64
  %55 = add nsw i64 %.0159186, %54
  %exitcond212.not = icmp eq i64 %.5187, %43
  br i1 %exitcond212.not, label %.loopexit172, label %.lr.ph188, !llvm.loop !24

.loopexit172:                                     ; preds = %.lr.ph188, %44
  %.1160 = phi i64 [ %46, %44 ], [ %55, %.lr.ph188 ]
  %.not = icmp eq i64 %.1160, 0
  br i1 %.not, label %.loopexit172.thread, label %56

56:                                               ; preds = %.loopexit172
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #5
  store i32 -200, ptr %11, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #5
  store i32 -200, ptr %12, align 4, !tbaa !14
  %57 = add i32 %22, -1
  %58 = call i32 @fit_line(ptr noundef nonnull %5, i32 noundef %57, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %18)
  %59 = load i32, ptr %11, align 4, !tbaa !14
  store i32 %59, ptr %6, align 16, !tbaa !14
  store i32 %59, ptr %7, align 16, !tbaa !14
  %60 = load i32, ptr %12, align 4, !tbaa !14
  %61 = getelementptr inbounds i8, ptr %7, i64 4
  store i32 %60, ptr %61, align 4, !tbaa !14
  %62 = getelementptr inbounds i8, ptr %6, i64 4
  store i32 %60, ptr %62, align 4, !tbaa !14
  %63 = icmp sgt i32 %22, 2
  br i1 %63, label %.lr.ph202, label %._crit_edge203

.lr.ph202:                                        ; preds = %56
  %64 = getelementptr inbounds i8, ptr %1, i64 520
  %65 = getelementptr inbounds i8, ptr %18, i64 836
  br label %66

66:                                               ; preds = %.lr.ph202, %152
  %.6198 = phi i64 [ 2, %.lr.ph202 ], [ %153, %152 ]
  %67 = getelementptr inbounds [65 x i32], ptr %64, i64 0, i64 %.6198
  %68 = load i32, ptr %67, align 4, !tbaa !14
  %69 = sext i32 %68 to i64
  %70 = getelementptr inbounds [65 x i32], ptr %8, i64 0, i64 %69
  %71 = load i32, ptr %70, align 4, !tbaa !14
  %72 = getelementptr inbounds [65 x i32], ptr %9, i64 0, i64 %69
  %73 = load i32, ptr %72, align 4, !tbaa !14
  %74 = sext i32 %71 to i64
  %75 = getelementptr inbounds [65 x i32], ptr %10, i64 0, i64 %74
  %76 = load i32, ptr %75, align 4, !tbaa !14
  %.not168 = icmp eq i32 %76, %73
  br i1 %.not168, label %152, label %77

77:                                               ; preds = %66
  %78 = getelementptr inbounds [65 x i32], ptr %64, i64 0, i64 %74
  %79 = load i32, ptr %78, align 4, !tbaa !14
  %80 = sext i32 %73 to i64
  %81 = getelementptr inbounds [65 x i32], ptr %64, i64 0, i64 %80
  %82 = load i32, ptr %81, align 4, !tbaa !14
  store i32 %73, ptr %75, align 4, !tbaa !14
  %83 = getelementptr inbounds [65 x i32], ptr %65, i64 0, i64 %74
  %84 = load i32, ptr %83, align 4, !tbaa !14
  %85 = getelementptr inbounds [65 x i32], ptr %65, i64 0, i64 %80
  %86 = load i32, ptr %85, align 4, !tbaa !14
  %87 = call i32 @post_Y(ptr noundef nonnull %6, ptr noundef nonnull %7, i32 noundef %71)
  %88 = call i32 @post_Y(ptr noundef nonnull %6, ptr noundef nonnull %7, i32 noundef %73)
  %89 = icmp eq i32 %87, -1
  %90 = icmp eq i32 %88, -1
  %or.cond = select i1 %89, i1 true, i1 %90
  br i1 %or.cond, label %91, label %92

91:                                               ; preds = %77
  call void @exit(i32 noundef 1) #6
  unreachable

92:                                               ; preds = %77
  %93 = call i32 @inspect_error(i32 noundef %84, i32 noundef %86, i32 noundef %87, i32 noundef %88, ptr noundef %3, ptr noundef %2, ptr noundef nonnull %18)
  %.not169 = icmp eq i32 %93, 0
  br i1 %.not169, label %149, label %94

94:                                               ; preds = %92
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #5
  store i32 -200, ptr %13, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #5
  store i32 -200, ptr %14, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #5
  store i32 -200, ptr %15, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #5
  store i32 -200, ptr %16, align 4, !tbaa !14
  %95 = sext i32 %79 to i64
  %96 = getelementptr inbounds %struct.lsfit_acc, ptr %5, i64 %95
  %97 = sub nsw i32 %68, %79
  %98 = call i32 @fit_line(ptr noundef nonnull %96, i32 noundef %97, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %18)
  %99 = getelementptr inbounds %struct.lsfit_acc, ptr %5, i64 %69
  %100 = sub nsw i32 %82, %68
  %101 = call i32 @fit_line(ptr noundef nonnull %99, i32 noundef %100, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %18)
  %.not208 = icmp eq i32 %98, 0
  br i1 %.not208, label %102, label %.thread218

102:                                              ; preds = %94
  %.not209 = icmp eq i32 %101, 0
  br i1 %.not209, label %.thread, label %104

.thread218:                                       ; preds = %94
  store i32 %87, ptr %13, align 4, !tbaa !14
  %103 = load i32, ptr %15, align 4, !tbaa !14
  store i32 %103, ptr %14, align 4, !tbaa !14
  %.not209219 = icmp eq i32 %101, 0
  br i1 %.not209219, label %.thread, label %106

104:                                              ; preds = %102
  %105 = load i32, ptr %14, align 4, !tbaa !14
  store i32 %105, ptr %15, align 4, !tbaa !14
  store i32 %88, ptr %16, align 4, !tbaa !14
  br label %.thread

106:                                              ; preds = %.thread218
  %107 = getelementptr inbounds [65 x i32], ptr %6, i64 0, i64 %.6198
  store i32 -200, ptr %107, align 4, !tbaa !14
  %108 = getelementptr inbounds [65 x i32], ptr %7, i64 0, i64 %.6198
  store i32 -200, ptr %108, align 4, !tbaa !14
  br label %.loopexit

.thread:                                          ; preds = %104, %.thread218, %102
  %109 = load i32, ptr %13, align 4, !tbaa !14
  %110 = getelementptr inbounds [65 x i32], ptr %7, i64 0, i64 %74
  store i32 %109, ptr %110, align 4, !tbaa !14
  %111 = icmp eq i32 %71, 0
  br i1 %111, label %112, label %114

112:                                              ; preds = %.thread
  %113 = getelementptr inbounds [65 x i32], ptr %6, i64 0, i64 %74
  store i32 %109, ptr %113, align 4, !tbaa !14
  br label %114

114:                                              ; preds = %112, %.thread
  %115 = load i32, ptr %14, align 4, !tbaa !14
  %116 = getelementptr inbounds [65 x i32], ptr %6, i64 0, i64 %.6198
  store i32 %115, ptr %116, align 4, !tbaa !14
  %117 = load i32, ptr %15, align 4
  %118 = getelementptr inbounds [65 x i32], ptr %7, i64 0, i64 %.6198
  store i32 %117, ptr %118, align 4, !tbaa !14
  %119 = load i32, ptr %16, align 4, !tbaa !14
  %120 = getelementptr inbounds [65 x i32], ptr %6, i64 0, i64 %80
  store i32 %119, ptr %120, align 4, !tbaa !14
  %121 = icmp eq i32 %73, 1
  br i1 %121, label %122, label %124

122:                                              ; preds = %114
  %123 = getelementptr inbounds [65 x i32], ptr %7, i64 0, i64 %80
  store i32 %119, ptr %123, align 4, !tbaa !14
  br label %124

124:                                              ; preds = %122, %114
  %125 = icmp sgt i32 %115, -1
  %126 = icmp sgt i32 %117, -1
  %or.cond5 = select i1 %125, i1 true, i1 %126
  br i1 %or.cond5, label %127, label %.loopexit

127:                                              ; preds = %124
  %128 = icmp sgt i32 %68, 0
  br i1 %128, label %.lr.ph191, label %._crit_edge192

.lr.ph191:                                        ; preds = %127
  %129 = add nsw i32 %68, -1
  %130 = zext nneg i32 %129 to i64
  %131 = trunc i64 %.6198 to i32
  br label %132

132:                                              ; preds = %.lr.ph191, %136
  %.0157189 = phi i64 [ %130, %.lr.ph191 ], [ %137, %136 ]
  %133 = getelementptr inbounds [65 x i32], ptr %9, i64 0, i64 %.0157189
  %134 = load i32, ptr %133, align 4, !tbaa !14
  %135 = icmp eq i32 %134, %73
  br i1 %135, label %136, label %._crit_edge192

136:                                              ; preds = %132
  store i32 %131, ptr %133, align 4, !tbaa !14
  %137 = add nsw i64 %.0157189, -1
  %138 = icmp sgt i64 %.0157189, 0
  br i1 %138, label %132, label %._crit_edge192, !llvm.loop !25

._crit_edge192:                                   ; preds = %136, %132, %127
  %139 = add nsw i32 %68, 1
  %140 = icmp slt i32 %139, %22
  br i1 %140, label %.lr.ph196, label %.loopexit

.lr.ph196:                                        ; preds = %._crit_edge192
  %141 = sext i32 %139 to i64
  %142 = trunc i64 %.6198 to i32
  br label %143

143:                                              ; preds = %.lr.ph196, %147
  %.1158194 = phi i64 [ %141, %.lr.ph196 ], [ %148, %147 ]
  %144 = getelementptr inbounds [65 x i32], ptr %8, i64 0, i64 %.1158194
  %145 = load i32, ptr %144, align 4, !tbaa !14
  %146 = icmp eq i32 %145, %71
  br i1 %146, label %147, label %.loopexit

147:                                              ; preds = %143
  store i32 %142, ptr %144, align 4, !tbaa !14
  %148 = add nsw i64 %.1158194, 1
  %exitcond213.not = icmp eq i64 %148, %23
  br i1 %exitcond213.not, label %.loopexit, label %143, !llvm.loop !26

.loopexit:                                        ; preds = %147, %143, %._crit_edge192, %124, %106
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5
  br label %152

149:                                              ; preds = %92
  %150 = getelementptr inbounds [65 x i32], ptr %6, i64 0, i64 %.6198
  store i32 -200, ptr %150, align 4, !tbaa !14
  %151 = getelementptr inbounds [65 x i32], ptr %7, i64 0, i64 %.6198
  store i32 -200, ptr %151, align 4, !tbaa !14
  br label %152

152:                                              ; preds = %.loopexit, %149, %66
  %153 = add nuw nsw i64 %.6198, 1
  %exitcond214.not = icmp eq i64 %153, %23
  br i1 %exitcond214.not, label %._crit_edge203, label %66, !llvm.loop !27

._crit_edge203:                                   ; preds = %152, %56
  %154 = shl nsw i64 %23, 2
  %155 = call ptr @_vorbis_block_alloc(ptr noundef %0, i64 noundef %154) #5
  %156 = call i32 @post_Y(ptr noundef nonnull %6, ptr noundef nonnull %7, i32 noundef 0)
  store i32 %156, ptr %155, align 4, !tbaa !14
  %157 = call i32 @post_Y(ptr noundef nonnull %6, ptr noundef nonnull %7, i32 noundef 1)
  %158 = getelementptr inbounds i8, ptr %155, i64 4
  store i32 %157, ptr %158, align 4, !tbaa !14
  br i1 %63, label %.lr.ph206, label %._crit_edge207

.lr.ph206:                                        ; preds = %._crit_edge203
  %159 = getelementptr inbounds i8, ptr %1, i64 1032
  %160 = getelementptr inbounds i8, ptr %1, i64 780
  %161 = getelementptr inbounds i8, ptr %18, i64 836
  br label %162

162:                                              ; preds = %.lr.ph206, %162
  %.7204 = phi i64 [ 2, %.lr.ph206 ], [ %186, %162 ]
  %163 = add nsw i64 %.7204, -2
  %164 = getelementptr inbounds [63 x i32], ptr %159, i64 0, i64 %163
  %165 = load i32, ptr %164, align 4, !tbaa !14
  %166 = getelementptr inbounds [63 x i32], ptr %160, i64 0, i64 %163
  %167 = load i32, ptr %166, align 4, !tbaa !14
  %168 = sext i32 %165 to i64
  %169 = getelementptr inbounds [65 x i32], ptr %161, i64 0, i64 %168
  %170 = load i32, ptr %169, align 4, !tbaa !14
  %171 = sext i32 %167 to i64
  %172 = getelementptr inbounds [65 x i32], ptr %161, i64 0, i64 %171
  %173 = load i32, ptr %172, align 4, !tbaa !14
  %174 = getelementptr inbounds i32, ptr %155, i64 %168
  %175 = load i32, ptr %174, align 4, !tbaa !14
  %176 = getelementptr inbounds i32, ptr %155, i64 %171
  %177 = load i32, ptr %176, align 4, !tbaa !14
  %178 = getelementptr inbounds [65 x i32], ptr %161, i64 0, i64 %.7204
  %179 = load i32, ptr %178, align 4, !tbaa !14
  %180 = call i32 @render_point(i32 noundef %170, i32 noundef %173, i32 noundef %175, i32 noundef %177, i32 noundef %179)
  %181 = trunc i64 %.7204 to i32
  %182 = call i32 @post_Y(ptr noundef nonnull %6, ptr noundef nonnull %7, i32 noundef %181)
  %183 = icmp slt i32 %182, 0
  %.not167 = icmp eq i32 %180, %182
  %or.cond170 = select i1 %183, i1 true, i1 %.not167
  %184 = or i32 %180, 32768
  %spec.select = select i1 %or.cond170, i32 %184, i32 %182
  %185 = getelementptr inbounds i32, ptr %155, i64 %.7204
  store i32 %spec.select, ptr %185, align 4
  %186 = add nuw nsw i64 %.7204, 1
  %exitcond215.not = icmp eq i64 %186, %23
  br i1 %exitcond215.not, label %._crit_edge207, label %162, !llvm.loop !28

._crit_edge207:                                   ; preds = %162, %._crit_edge203
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #5
  br label %.loopexit172.thread

.loopexit172.thread:                              ; preds = %._crit_edge, %.preheader, %._crit_edge207, %.loopexit172
  %.0161 = phi ptr [ %155, %._crit_edge207 ], [ null, %.loopexit172 ], [ null, %.preheader ], [ null, %._crit_edge ]
  call void @llvm.lifetime.end.p0(i64 260, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 260, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 260, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 260, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 260, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 3584, ptr nonnull %5) #5
  ret ptr %.0161
}

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

; Function Attrs: nounwind uwtable
declare hidden i32 @accumulate_fit(ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden i32 @fit_line(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden i32 @post_Y(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden i32 @inspect_error(i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

declare ptr @_vorbis_block_alloc(ptr noundef, i64 noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare hidden i32 @render_point(i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 1296}
!6 = !{!"", !7, i64 0, !7, i64 260, !7, i64 520, !7, i64 780, !7, i64 1032, !9, i64 1284, !9, i64 1288, !9, i64 1292, !10, i64 1296, !11, i64 1304, !11, i64 1312, !11, i64 1320}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!"int", !7, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!"long", !7, i64 0}
!12 = !{!6, !9, i64 1288}
!13 = !{!6, !9, i64 1284}
!14 = !{!9, !9, i64 0}
!15 = distinct !{!15, !16, !17, !18}
!16 = !{!"llvm.loop.mustprogress"}
!17 = !{!"llvm.loop.isvectorized", i32 1}
!18 = !{!"llvm.loop.unroll.runtime.disable"}
!19 = distinct !{!19, !16, !17, !18}
!20 = distinct !{!20, !16, !18, !17}
!21 = distinct !{!21, !16, !18, !17}
!22 = distinct !{!22, !16, !17, !18}
!23 = distinct !{!23, !16, !18, !17}
!24 = distinct !{!24, !16}
!25 = distinct !{!25, !16}
!26 = distinct !{!26, !16}
!27 = distinct !{!27, !16}
!28 = distinct !{!28, !16}


; Effective O3 passes: ConstraintEliminationPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass