; LLVM IR from facebookresearch/habitat-sim :: src/deps/basis-universal/encoder/jpgd.ll (ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv)

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

%"class.jpgd::jpeg_decoder" = type <{ [1 x %struct.__jmp_buf_tag], i32, [4 x i8], ptr, i32, i32, ptr, i32, [8 x i8], [4 x i8], [8 x ptr], [8 x ptr], [4 x ptr], i32, i32, [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], i32, [4 x i32], [4 x i32], [4 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [10 x i32], i32, i32, i32, i32, i32, i32, [4 x i8], [8 x ptr], [4 x ptr], [4 x ptr], i32, [4 x i32], [4 x i8], ptr, i32, i32, [64 x i8], [8320 x i8], [64 x i8], i32, i32, i32, i32, i32, i32, i32, i32, [4 x i32], ptr, [10 x i32], ptr, ptr, [256 x i32], [256 x i32], [256 x i32], [256 x i32], ptr, ptr, i32, i32, i8, i8, i8, [5 x i8] }>
%struct.__jmp_buf_tag = type { [8 x i64], i32, %struct.__sigset_t }
%struct.__sigset_t = type { [16 x i64] }

@.str.1 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [24 x i8], align 1
@__PRETTY_FUNCTION__._ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv = external hidden unnamed_addr constant [51 x i8], align 1
@_ZZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEvE6s_muls = external hidden constant [2 x [2 x [4 x i8]]], align 16
@.str.4 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [22 x i8], align 1

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523), i32 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv(ptr noundef nonnull align 8 dereferenceable(13523) %0) #3 align 2 {
  %2 = alloca i32, align 4
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %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 ptr, align 8
  %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 ptr, align 8
  %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
  %47 = alloca i32, align 4
  %48 = alloca ptr, align 8
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca ptr, align 8
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca ptr, align 8
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  %81 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #4
  store i32 6, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #4
  %82 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 5
  %83 = load i32, ptr %82, align 4, !tbaa !11
  %84 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 36
  %85 = load i32, ptr %84, align 4, !tbaa !15
  %86 = sub nsw i32 %83, %85
  store i32 %86, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #4
  %87 = load i32, ptr %5, align 4, !tbaa !9
  %88 = and i32 %87, 15
  store i32 %88, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #4
  %89 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 5
  %90 = load i32, ptr %89, align 4, !tbaa !11
  %91 = ashr i32 %90, 1
  %92 = sub nsw i32 %91, 1
  store i32 %92, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #4
  %93 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 72
  %94 = load ptr, ptr %93, align 8, !tbaa !16
  store ptr %94, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  %95 = load i32, ptr %5, align 4, !tbaa !9
  %96 = sub nsw i32 %95, 1
  %97 = ashr i32 %96, 1
  store i32 %97, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #4
  %98 = load i32, ptr %9, align 4, !tbaa !9
  %99 = add nsw i32 %98, 1
  %100 = load i32, ptr %7, align 4, !tbaa !9
  %101 = icmp slt i32 %99, %100
  br i1 %101, label %102, label %105

102:                                              ; preds = %1
  %103 = load i32, ptr %9, align 4, !tbaa !9
  %104 = add nsw i32 %103, 1
  br label %107

105:                                              ; preds = %1
  %106 = load i32, ptr %7, align 4, !tbaa !9
  br label %107

107:                                              ; preds = %105, %102
  %108 = phi i32 [ %104, %102 ], [ %106, %105 ]
  store i32 %108, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  %109 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 66
  %110 = load ptr, ptr %109, align 8, !tbaa !17
  store ptr %110, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  %111 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 66
  %112 = load ptr, ptr %111, align 8, !tbaa !17
  store ptr %112, ptr %12, align 8, !tbaa !5
  %113 = load i32, ptr %9, align 4, !tbaa !9
  %114 = icmp sge i32 %113, 0
  br i1 %114, label %115, label %150

115:                                              ; preds = %107
  %116 = load i32, ptr %6, align 4, !tbaa !9
  %117 = and i32 %116, 15
  %118 = icmp eq i32 %117, 0
  br i1 %118, label %123, label %119

119:                                              ; preds = %115
  %120 = load i32, ptr %6, align 4, !tbaa !9
  %121 = and i32 %120, 15
  %122 = icmp eq i32 %121, 15
  br i1 %122, label %123, label %150

123:                                              ; preds = %119, %115
  %124 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 36
  %125 = load i32, ptr %124, align 4, !tbaa !15
  %126 = icmp sgt i32 %125, 1
  br i1 %126, label %127, label %150

127:                                              ; preds = %123
  %128 = load i32, ptr %5, align 4, !tbaa !9
  %129 = icmp sgt i32 %128, 0
  br i1 %129, label %130, label %131

130:                                              ; preds = %127
  br label %133

131:                                              ; preds = %127
  call void @__assert_fail(ptr noundef @.str.2, ptr noundef @.str.1, i32 noundef 1863, ptr noundef @__PRETTY_FUNCTION__._ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv) #5
  unreachable

132:                                              ; No predecessors!
  br label %133

133:                                              ; preds = %132, %130
  %134 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 78
  %135 = load i8, ptr %134, align 2, !tbaa !18, !range !19, !noundef !20
  %136 = trunc i8 %135 to i1
  br i1 %136, label %137, label %138

137:                                              ; preds = %133
  br label %140

138:                                              ; preds = %133
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 1864, ptr noundef @__PRETTY_FUNCTION__._ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv) #5
  unreachable

139:                                              ; No predecessors!
  br label %140

140:                                              ; preds = %139, %137
  %141 = load i32, ptr %6, align 4, !tbaa !9
  %142 = and i32 %141, 15
  %143 = icmp eq i32 %142, 15
  br i1 %143, label %144, label %147

144:                                              ; preds = %140
  %145 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 67
  %146 = load ptr, ptr %145, align 8, !tbaa !21
  store ptr %146, ptr %11, align 8, !tbaa !5
  br label %147

147:                                              ; preds = %144, %140
  %148 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 67
  %149 = load ptr, ptr %148, align 8, !tbaa !21
  store ptr %149, ptr %12, align 8, !tbaa !5
  br label %150

150:                                              ; preds = %147, %123, %119, %107
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  %151 = load i32, ptr %6, align 4, !tbaa !9
  %152 = and i32 %151, 8
  %153 = icmp ne i32 %152, 0
  %154 = zext i1 %153 to i64
  %155 = select i1 %153, i32 128, i32 0
  %156 = load i32, ptr %6, align 4, !tbaa !9
  %157 = and i32 %156, 7
  %158 = mul nsw i32 %157, 8
  %159 = add nsw i32 %155, %158
  store i32 %159, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  %160 = load i32, ptr %9, align 4, !tbaa !9
  %161 = and i32 %160, 7
  %162 = mul nsw i32 %161, 8
  %163 = add nsw i32 %162, 256
  store i32 %163, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  %164 = load i32, ptr %10, align 4, !tbaa !9
  %165 = and i32 %164, 7
  %166 = mul nsw i32 %165, 8
  %167 = add nsw i32 %166, 256
  store i32 %167, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  %168 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 4
  %169 = load i32, ptr %168, align 8, !tbaa !22
  %170 = ashr i32 %169, 1
  %171 = sub nsw i32 %170, 1
  store i32 %171, ptr %16, align 4, !tbaa !9
  %172 = load i32, ptr %6, align 4, !tbaa !9
  %173 = and i32 %172, 15
  %174 = icmp sge i32 %173, 1
  br i1 %174, label %175, label %884

175:                                              ; preds = %150
  %176 = load i32, ptr %6, align 4, !tbaa !9
  %177 = and i32 %176, 15
  %178 = icmp sle i32 %177, 14
  br i1 %178, label %179, label %884

179:                                              ; preds = %175
  %180 = load i32, ptr %6, align 4, !tbaa !9
  %181 = and i32 %180, 1
  %182 = icmp eq i32 %181, 1
  br i1 %182, label %183, label %184

183:                                              ; preds = %179
  br label %186

184:                                              ; preds = %179
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 1886, ptr noundef @__PRETTY_FUNCTION__._ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv) #5
  unreachable

185:                                              ; No predecessors!
  br label %186

186:                                              ; preds = %185, %183
  %187 = load i32, ptr %5, align 4, !tbaa !9
  %188 = add nsw i32 %187, 1
  %189 = sub nsw i32 %188, 1
  %190 = ashr i32 %189, 1
  %191 = load i32, ptr %9, align 4, !tbaa !9
  %192 = icmp eq i32 %190, %191
  br i1 %192, label %193, label %194

193:                                              ; preds = %186
  br label %196

194:                                              ; preds = %186
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str.1, i32 noundef 1887, ptr noundef @__PRETTY_FUNCTION__._ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv) #5
  unreachable

195:                                              ; No predecessors!
  br label %196

196:                                              ; preds = %195, %193
  %197 = load ptr, ptr %11, align 8, !tbaa !5
  %198 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 66
  %199 = load ptr, ptr %198, align 8, !tbaa !17
  %200 = icmp eq ptr %197, %199
  br i1 %200, label %201, label %202

201:                                              ; preds = %196
  br label %204

202:                                              ; preds = %196
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 1889, ptr noundef @__PRETTY_FUNCTION__._ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv) #5
  unreachable

203:                                              ; No predecessors!
  br label %204

204:                                              ; preds = %203, %201
  %205 = load ptr, ptr %12, align 8, !tbaa !5
  %206 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 66
  %207 = load ptr, ptr %206, align 8, !tbaa !17
  %208 = icmp eq ptr %205, %207
  br i1 %208, label %209, label %210

209:                                              ; preds = %204
  br label %212

210:                                              ; preds = %204
  call void @__assert_fail(ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 1890, ptr noundef @__PRETTY_FUNCTION__._ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv) #5
  unreachable

211:                                              ; No predecessors!
  br label %212

212:                                              ; preds = %211, %209
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  %213 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 73
  %214 = load ptr, ptr %213, align 8, !tbaa !23
  store ptr %214, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  %215 = load i32, ptr %6, align 4, !tbaa !9
  %216 = add nsw i32 %215, 1
  %217 = and i32 %216, 8
  %218 = icmp ne i32 %217, 0
  %219 = zext i1 %218 to i64
  %220 = select i1 %218, i32 128, i32 0
  %221 = load i32, ptr %6, align 4, !tbaa !9
  %222 = add nsw i32 %221, 1
  %223 = and i32 %222, 7
  %224 = mul nsw i32 %223, 8
  %225 = add nsw i32 %220, %224
  store i32 %225, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %226

226:                                              ; preds = %880, %212
  %227 = load i32, ptr %19, align 4, !tbaa !9
  %228 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 4
  %229 = load i32, ptr %228, align 8, !tbaa !22
  %230 = icmp slt i32 %227, %229
  br i1 %230, label %232, label %231

231:                                              ; preds = %226
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  br label %883

232:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  %233 = load i32, ptr %19, align 4, !tbaa !9
  %234 = ashr i32 %233, 4
  %235 = mul i32 %234, 6
  %236 = mul i32 %235, 64
  %237 = load i32, ptr %19, align 4, !tbaa !9
  %238 = and i32 %237, 8
  %239 = icmp ne i32 %238, 0
  %240 = zext i1 %239 to i64
  %241 = select i1 %239, i32 64, i32 0
  %242 = add i32 %236, %241
  %243 = load i32, ptr %19, align 4, !tbaa !9
  %244 = and i32 %243, 7
  %245 = add i32 %242, %244
  store i32 %245, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  %246 = load ptr, ptr %11, align 8, !tbaa !5
  %247 = load i32, ptr %20, align 4, !tbaa !9
  %248 = load i32, ptr %13, align 4, !tbaa !9
  %249 = add nsw i32 %247, %248
  %250 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %249)
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds i8, ptr %246, i64 %251
  %253 = load i8, ptr %252, align 1, !tbaa !24
  %254 = zext i8 %253 to i32
  store i32 %254, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  %255 = load ptr, ptr %11, align 8, !tbaa !5
  %256 = load i32, ptr %20, align 4, !tbaa !9
  %257 = load i32, ptr %18, align 4, !tbaa !9
  %258 = add nsw i32 %256, %257
  %259 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %258)
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds i8, ptr %255, i64 %260
  %262 = load i8, ptr %261, align 1, !tbaa !24
  %263 = zext i8 %262 to i32
  store i32 %263, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  %264 = load i32, ptr %19, align 4, !tbaa !9
  %265 = sub nsw i32 %264, 1
  %266 = ashr i32 %265, 1
  store i32 %266, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  %267 = load i32, ptr %23, align 4, !tbaa !9
  %268 = add nsw i32 %267, 1
  %269 = load i32, ptr %16, align 4, !tbaa !9
  %270 = icmp slt i32 %268, %269
  br i1 %270, label %271, label %274

271:                                              ; preds = %232
  %272 = load i32, ptr %23, align 4, !tbaa !9
  %273 = add nsw i32 %272, 1
  br label %276

274:                                              ; preds = %232
  %275 = load i32, ptr %16, align 4, !tbaa !9
  br label %276

276:                                              ; preds = %274, %271
  %277 = phi i32 [ %273, %271 ], [ %275, %274 ]
  store i32 %277, ptr %24, align 4, !tbaa !9
  %278 = load i32, ptr %23, align 4, !tbaa !9
  %279 = icmp sgt i32 %278, 0
  br i1 %279, label %280, label %282

280:                                              ; preds = %276
  %281 = load i32, ptr %23, align 4, !tbaa !9
  br label %283

282:                                              ; preds = %276
  br label %283

283:                                              ; preds = %282, %280
  %284 = phi i32 [ %281, %280 ], [ 0, %282 ]
  store i32 %284, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  %285 = load i32, ptr %23, align 4, !tbaa !9
  %286 = ashr i32 %285, 3
  %287 = mul i32 %286, 6
  %288 = mul i32 %287, 64
  %289 = load i32, ptr %23, align 4, !tbaa !9
  %290 = and i32 %289, 7
  %291 = add i32 %288, %290
  store i32 %291, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  %292 = load ptr, ptr %12, align 8, !tbaa !5
  %293 = load i32, ptr %25, align 4, !tbaa !9
  %294 = load i32, ptr %14, align 4, !tbaa !9
  %295 = add nsw i32 %293, %294
  %296 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %295)
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds i8, ptr %292, i64 %297
  %299 = load i8, ptr %298, align 1, !tbaa !24
  %300 = zext i8 %299 to i32
  store i32 %300, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  %301 = load ptr, ptr %12, align 8, !tbaa !5
  %302 = load i32, ptr %25, align 4, !tbaa !9
  %303 = load i32, ptr %14, align 4, !tbaa !9
  %304 = add nsw i32 %302, %303
  %305 = add nsw i32 %304, 64
  %306 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %305)
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds i8, ptr %301, i64 %307
  %309 = load i8, ptr %308, align 1, !tbaa !24
  %310 = zext i8 %309 to i32
  store i32 %310, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  %311 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 66
  %312 = load ptr, ptr %311, align 8, !tbaa !17
  %313 = load i32, ptr %25, align 4, !tbaa !9
  %314 = load i32, ptr %15, align 4, !tbaa !9
  %315 = add nsw i32 %313, %314
  %316 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %315)
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds i8, ptr %312, i64 %317
  %319 = load i8, ptr %318, align 1, !tbaa !24
  %320 = zext i8 %319 to i32
  store i32 %320, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  %321 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 66
  %322 = load ptr, ptr %321, align 8, !tbaa !17
  %323 = load i32, ptr %25, align 4, !tbaa !9
  %324 = load i32, ptr %15, align 4, !tbaa !9
  %325 = add nsw i32 %323, %324
  %326 = add nsw i32 %325, 64
  %327 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %326)
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds i8, ptr %322, i64 %328
  %330 = load i8, ptr %329, align 1, !tbaa !24
  %331 = zext i8 %330 to i32
  store i32 %331, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #4
  %332 = load i32, ptr %24, align 4, !tbaa !9
  %333 = ashr i32 %332, 3
  %334 = mul i32 %333, 6
  %335 = mul i32 %334, 64
  %336 = load i32, ptr %24, align 4, !tbaa !9
  %337 = and i32 %336, 7
  %338 = add i32 %335, %337
  store i32 %338, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #4
  %339 = load ptr, ptr %12, align 8, !tbaa !5
  %340 = load i32, ptr %30, align 4, !tbaa !9
  %341 = load i32, ptr %14, align 4, !tbaa !9
  %342 = add nsw i32 %340, %341
  %343 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %342)
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds i8, ptr %339, i64 %344
  %346 = load i8, ptr %345, align 1, !tbaa !24
  %347 = zext i8 %346 to i32
  store i32 %347, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  %348 = load ptr, ptr %12, align 8, !tbaa !5
  %349 = load i32, ptr %30, align 4, !tbaa !9
  %350 = load i32, ptr %14, align 4, !tbaa !9
  %351 = add nsw i32 %349, %350
  %352 = add nsw i32 %351, 64
  %353 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %352)
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds i8, ptr %348, i64 %354
  %356 = load i8, ptr %355, align 1, !tbaa !24
  %357 = zext i8 %356 to i32
  store i32 %357, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  %358 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 66
  %359 = load ptr, ptr %358, align 8, !tbaa !17
  %360 = load i32, ptr %30, align 4, !tbaa !9
  %361 = load i32, ptr %15, align 4, !tbaa !9
  %362 = add nsw i32 %360, %361
  %363 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %362)
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds i8, ptr %359, i64 %364
  %366 = load i8, ptr %365, align 1, !tbaa !24
  %367 = zext i8 %366 to i32
  store i32 %367, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  %368 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 66
  %369 = load ptr, ptr %368, align 8, !tbaa !17
  %370 = load i32, ptr %30, align 4, !tbaa !9
  %371 = load i32, ptr %15, align 4, !tbaa !9
  %372 = add nsw i32 %370, %371
  %373 = add nsw i32 %372, 64
  %374 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %373)
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds i8, ptr %369, i64 %375
  %377 = load i8, ptr %376, align 1, !tbaa !24
  %378 = zext i8 %377 to i32
  store i32 %378, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  %379 = load i32, ptr %6, align 4, !tbaa !9
  %380 = and i32 %379, 1
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds [2 x [2 x [4 x i8]]], ptr @_ZZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEvE6s_muls, i64 0, i64 %381
  %383 = load i32, ptr %19, align 4, !tbaa !9
  %384 = and i32 %383, 1
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds [2 x [4 x i8]], ptr %382, i64 0, i64 %385
  %387 = getelementptr inbounds [4 x i8], ptr %386, i64 0, i64 0
  store ptr %387, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  %388 = load i32, ptr %26, align 4, !tbaa !9
  %389 = load ptr, ptr %35, align 8, !tbaa !5
  %390 = getelementptr inbounds i8, ptr %389, i64 0
  %391 = load i8, ptr %390, align 1, !tbaa !24
  %392 = zext i8 %391 to i32
  %393 = mul nsw i32 %388, %392
  %394 = load i32, ptr %28, align 4, !tbaa !9
  %395 = load ptr, ptr %35, align 8, !tbaa !5
  %396 = getelementptr inbounds i8, ptr %395, i64 1
  %397 = load i8, ptr %396, align 1, !tbaa !24
  %398 = zext i8 %397 to i32
  %399 = mul nsw i32 %394, %398
  %400 = add nsw i32 %393, %399
  %401 = load i32, ptr %31, align 4, !tbaa !9
  %402 = load ptr, ptr %35, align 8, !tbaa !5
  %403 = getelementptr inbounds i8, ptr %402, i64 2
  %404 = load i8, ptr %403, align 1, !tbaa !24
  %405 = zext i8 %404 to i32
  %406 = mul nsw i32 %401, %405
  %407 = add nsw i32 %400, %406
  %408 = load i32, ptr %33, align 4, !tbaa !9
  %409 = load ptr, ptr %35, align 8, !tbaa !5
  %410 = getelementptr inbounds i8, ptr %409, i64 3
  %411 = load i8, ptr %410, align 1, !tbaa !24
  %412 = zext i8 %411 to i32
  %413 = mul nsw i32 %408, %412
  %414 = add nsw i32 %407, %413
  %415 = add nsw i32 %414, 8
  %416 = ashr i32 %415, 4
  store i32 %416, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #4
  %417 = load i32, ptr %27, align 4, !tbaa !9
  %418 = load ptr, ptr %35, align 8, !tbaa !5
  %419 = getelementptr inbounds i8, ptr %418, i64 0
  %420 = load i8, ptr %419, align 1, !tbaa !24
  %421 = zext i8 %420 to i32
  %422 = mul nsw i32 %417, %421
  %423 = load i32, ptr %29, align 4, !tbaa !9
  %424 = load ptr, ptr %35, align 8, !tbaa !5
  %425 = getelementptr inbounds i8, ptr %424, i64 1
  %426 = load i8, ptr %425, align 1, !tbaa !24
  %427 = zext i8 %426 to i32
  %428 = mul nsw i32 %423, %427
  %429 = add nsw i32 %422, %428
  %430 = load i32, ptr %32, align 4, !tbaa !9
  %431 = load ptr, ptr %35, align 8, !tbaa !5
  %432 = getelementptr inbounds i8, ptr %431, i64 2
  %433 = load i8, ptr %432, align 1, !tbaa !24
  %434 = zext i8 %433 to i32
  %435 = mul nsw i32 %430, %434
  %436 = add nsw i32 %429, %435
  %437 = load i32, ptr %34, align 4, !tbaa !9
  %438 = load ptr, ptr %35, align 8, !tbaa !5
  %439 = getelementptr inbounds i8, ptr %438, i64 3
  %440 = load i8, ptr %439, align 1, !tbaa !24
  %441 = zext i8 %440 to i32
  %442 = mul nsw i32 %437, %441
  %443 = add nsw i32 %436, %442
  %444 = add nsw i32 %443, 8
  %445 = ashr i32 %444, 4
  store i32 %445, ptr %37, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  %446 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 68
  %447 = load i32, ptr %37, align 4, !tbaa !9
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds [256 x i32], ptr %446, i64 0, i64 %448
  %450 = load i32, ptr %449, align 4, !tbaa !9
  store i32 %450, ptr %38, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #4
  %451 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 70
  %452 = load i32, ptr %37, align 4, !tbaa !9
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds [256 x i32], ptr %451, i64 0, i64 %453
  %455 = load i32, ptr %454, align 4, !tbaa !9
  %456 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 71
  %457 = load i32, ptr %36, align 4, !tbaa !9
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds [256 x i32], ptr %456, i64 0, i64 %458
  %460 = load i32, ptr %459, align 4, !tbaa !9
  %461 = add nsw i32 %455, %460
  %462 = ashr i32 %461, 16
  store i32 %462, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  %463 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 69
  %464 = load i32, ptr %36, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds [256 x i32], ptr %463, i64 0, i64 %465
  %467 = load i32, ptr %466, align 4, !tbaa !9
  store i32 %467, ptr %40, align 4, !tbaa !9
  %468 = load i32, ptr %21, align 4, !tbaa !9
  %469 = load i32, ptr %38, align 4, !tbaa !9
  %470 = add nsw i32 %468, %469
  %471 = call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %470)
  %472 = load ptr, ptr %8, align 8, !tbaa !5
  %473 = getelementptr inbounds i8, ptr %472, i64 0
  store i8 %471, ptr %473, align 1, !tbaa !24
  %474 = load i32, ptr %21, align 4, !tbaa !9
  %475 = load i32, ptr %39, align 4, !tbaa !9
  %476 = add nsw i32 %474, %475
  %477 = call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %476)
  %478 = load ptr, ptr %8, align 8, !tbaa !5
  %479 = getelementptr inbounds i8, ptr %478, i64 1
  store i8 %477, ptr %479, align 1, !tbaa !24
  %480 = load i32, ptr %21, align 4, !tbaa !9
  %481 = load i32, ptr %40, align 4, !tbaa !9
  %482 = add nsw i32 %480, %481
  %483 = call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %482)
  %484 = load ptr, ptr %8, align 8, !tbaa !5
  %485 = getelementptr inbounds i8, ptr %484, i64 2
  store i8 %483, ptr %485, align 1, !tbaa !24
  %486 = load ptr, ptr %8, align 8, !tbaa !5
  %487 = getelementptr inbounds i8, ptr %486, i64 3
  store i8 -1, ptr %487, align 1, !tbaa !24
  %488 = load ptr, ptr %8, align 8, !tbaa !5
  %489 = getelementptr inbounds i8, ptr %488, i64 4
  store ptr %489, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  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 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  %490 = load i32, ptr %6, align 4, !tbaa !9
  %491 = add nsw i32 %490, 1
  %492 = and i32 %491, 1
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds [2 x [2 x [4 x i8]]], ptr @_ZZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEvE6s_muls, i64 0, i64 %493
  %495 = load i32, ptr %19, align 4, !tbaa !9
  %496 = and i32 %495, 1
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds [2 x [4 x i8]], ptr %494, i64 0, i64 %497
  %499 = getelementptr inbounds [4 x i8], ptr %498, i64 0, i64 0
  store ptr %499, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #4
  %500 = load i32, ptr %26, align 4, !tbaa !9
  %501 = load ptr, ptr %41, align 8, !tbaa !5
  %502 = getelementptr inbounds i8, ptr %501, i64 0
  %503 = load i8, ptr %502, align 1, !tbaa !24
  %504 = zext i8 %503 to i32
  %505 = mul nsw i32 %500, %504
  %506 = load i32, ptr %28, align 4, !tbaa !9
  %507 = load ptr, ptr %41, align 8, !tbaa !5
  %508 = getelementptr inbounds i8, ptr %507, i64 1
  %509 = load i8, ptr %508, align 1, !tbaa !24
  %510 = zext i8 %509 to i32
  %511 = mul nsw i32 %506, %510
  %512 = add nsw i32 %505, %511
  %513 = load i32, ptr %31, align 4, !tbaa !9
  %514 = load ptr, ptr %41, align 8, !tbaa !5
  %515 = getelementptr inbounds i8, ptr %514, i64 2
  %516 = load i8, ptr %515, align 1, !tbaa !24
  %517 = zext i8 %516 to i32
  %518 = mul nsw i32 %513, %517
  %519 = add nsw i32 %512, %518
  %520 = load i32, ptr %33, align 4, !tbaa !9
  %521 = load ptr, ptr %41, align 8, !tbaa !5
  %522 = getelementptr inbounds i8, ptr %521, i64 3
  %523 = load i8, ptr %522, align 1, !tbaa !24
  %524 = zext i8 %523 to i32
  %525 = mul nsw i32 %520, %524
  %526 = add nsw i32 %519, %525
  %527 = add nsw i32 %526, 8
  %528 = ashr i32 %527, 4
  store i32 %528, ptr %42, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #4
  %529 = load i32, ptr %27, align 4, !tbaa !9
  %530 = load ptr, ptr %41, align 8, !tbaa !5
  %531 = getelementptr inbounds i8, ptr %530, i64 0
  %532 = load i8, ptr %531, align 1, !tbaa !24
  %533 = zext i8 %532 to i32
  %534 = mul nsw i32 %529, %533
  %535 = load i32, ptr %29, align 4, !tbaa !9
  %536 = load ptr, ptr %41, align 8, !tbaa !5
  %537 = getelementptr inbounds i8, ptr %536, i64 1
  %538 = load i8, ptr %537, align 1, !tbaa !24
  %539 = zext i8 %538 to i32
  %540 = mul nsw i32 %535, %539
  %541 = add nsw i32 %534, %540
  %542 = load i32, ptr %32, align 4, !tbaa !9
  %543 = load ptr, ptr %41, align 8, !tbaa !5
  %544 = getelementptr inbounds i8, ptr %543, i64 2
  %545 = load i8, ptr %544, align 1, !tbaa !24
  %546 = zext i8 %545 to i32
  %547 = mul nsw i32 %542, %546
  %548 = add nsw i32 %541, %547
  %549 = load i32, ptr %34, align 4, !tbaa !9
  %550 = load ptr, ptr %41, align 8, !tbaa !5
  %551 = getelementptr inbounds i8, ptr %550, i64 3
  %552 = load i8, ptr %551, align 1, !tbaa !24
  %553 = zext i8 %552 to i32
  %554 = mul nsw i32 %549, %553
  %555 = add nsw i32 %548, %554
  %556 = add nsw i32 %555, 8
  %557 = ashr i32 %556, 4
  store i32 %557, ptr %43, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #4
  %558 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 68
  %559 = load i32, ptr %43, align 4, !tbaa !9
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds [256 x i32], ptr %558, i64 0, i64 %560
  %562 = load i32, ptr %561, align 4, !tbaa !9
  store i32 %562, ptr %44, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #4
  %563 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 70
  %564 = load i32, ptr %43, align 4, !tbaa !9
  %565 = sext i32 %564 to i64
  %566 = getelementptr inbounds [256 x i32], ptr %563, i64 0, i64 %565
  %567 = load i32, ptr %566, align 4, !tbaa !9
  %568 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 71
  %569 = load i32, ptr %42, align 4, !tbaa !9
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds [256 x i32], ptr %568, i64 0, i64 %570
  %572 = load i32, ptr %571, align 4, !tbaa !9
  %573 = add nsw i32 %567, %572
  %574 = ashr i32 %573, 16
  store i32 %574, ptr %45, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  %575 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 69
  %576 = load i32, ptr %42, align 4, !tbaa !9
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds [256 x i32], ptr %575, i64 0, i64 %577
  %579 = load i32, ptr %578, align 4, !tbaa !9
  store i32 %579, ptr %46, align 4, !tbaa !9
  %580 = load i32, ptr %22, align 4, !tbaa !9
  %581 = load i32, ptr %44, align 4, !tbaa !9
  %582 = add nsw i32 %580, %581
  %583 = call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %582)
  %584 = load ptr, ptr %17, align 8, !tbaa !5
  %585 = getelementptr inbounds i8, ptr %584, i64 0
  store i8 %583, ptr %585, align 1, !tbaa !24
  %586 = load i32, ptr %22, align 4, !tbaa !9
  %587 = load i32, ptr %45, align 4, !tbaa !9
  %588 = add nsw i32 %586, %587
  %589 = call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %588)
  %590 = load ptr, ptr %17, align 8, !tbaa !5
  %591 = getelementptr inbounds i8, ptr %590, i64 1
  store i8 %589, ptr %591, align 1, !tbaa !24
  %592 = load i32, ptr %22, align 4, !tbaa !9
  %593 = load i32, ptr %46, align 4, !tbaa !9
  %594 = add nsw i32 %592, %593
  %595 = call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %594)
  %596 = load ptr, ptr %17, align 8, !tbaa !5
  %597 = getelementptr inbounds i8, ptr %596, i64 2
  store i8 %595, ptr %597, align 1, !tbaa !24
  %598 = load ptr, ptr %17, align 8, !tbaa !5
  %599 = getelementptr inbounds i8, ptr %598, i64 3
  store i8 -1, ptr %599, align 1, !tbaa !24
  %600 = load ptr, ptr %17, align 8, !tbaa !5
  %601 = getelementptr inbounds i8, ptr %600, i64 4
  store ptr %601, ptr %17, align 8, !tbaa !5
  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 8, ptr %41) #4
  %602 = load i32, ptr %19, align 4, !tbaa !9
  %603 = and i32 %602, 1
  %604 = icmp eq i32 %603, 1
  br i1 %604, label %605, label %879

605:                                              ; preds = %283
  %606 = load i32, ptr %19, align 4, !tbaa !9
  %607 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 4
  %608 = load i32, ptr %607, align 8, !tbaa !22
  %609 = sub nsw i32 %608, 1
  %610 = icmp slt i32 %606, %609
  br i1 %610, label %611, label %879

611:                                              ; preds = %605
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #4
  %612 = load i32, ptr %19, align 4, !tbaa !9
  %613 = add nsw i32 %612, 1
  store i32 %613, ptr %47, align 4, !tbaa !9
  %614 = load i32, ptr %23, align 4, !tbaa !9
  %615 = load i32, ptr %47, align 4, !tbaa !9
  %616 = sub nsw i32 %615, 1
  %617 = ashr i32 %616, 1
  %618 = icmp eq i32 %614, %617
  br i1 %618, label %619, label %620

619:                                              ; preds = %611
  br label %622

620:                                              ; preds = %611
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 1956, ptr noundef @__PRETTY_FUNCTION__._ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv) #5
  unreachable

621:                                              ; No predecessors!
  br label %622

622:                                              ; preds = %621, %619
  %623 = load i32, ptr %47, align 4, !tbaa !9
  %624 = ashr i32 %623, 4
  %625 = mul i32 %624, 6
  %626 = mul i32 %625, 64
  %627 = load i32, ptr %47, align 4, !tbaa !9
  %628 = and i32 %627, 8
  %629 = icmp ne i32 %628, 0
  %630 = zext i1 %629 to i64
  %631 = select i1 %629, i32 64, i32 0
  %632 = add i32 %626, %631
  %633 = load i32, ptr %47, align 4, !tbaa !9
  %634 = and i32 %633, 7
  %635 = add i32 %632, %634
  store i32 %635, ptr %20, align 4, !tbaa !9
  %636 = load ptr, ptr %11, align 8, !tbaa !5
  %637 = load i32, ptr %20, align 4, !tbaa !9
  %638 = load i32, ptr %13, align 4, !tbaa !9
  %639 = add nsw i32 %637, %638
  %640 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %639)
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds i8, ptr %636, i64 %641
  %643 = load i8, ptr %642, align 1, !tbaa !24
  %644 = zext i8 %643 to i32
  store i32 %644, ptr %21, align 4, !tbaa !9
  %645 = load ptr, ptr %11, align 8, !tbaa !5
  %646 = load i32, ptr %20, align 4, !tbaa !9
  %647 = load i32, ptr %18, align 4, !tbaa !9
  %648 = add nsw i32 %646, %647
  %649 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %648)
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds i8, ptr %645, i64 %650
  %652 = load i8, ptr %651, align 1, !tbaa !24
  %653 = zext i8 %652 to i32
  store i32 %653, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #4
  %654 = load i32, ptr %6, align 4, !tbaa !9
  %655 = and i32 %654, 1
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds [2 x [2 x [4 x i8]]], ptr @_ZZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEvE6s_muls, i64 0, i64 %656
  %658 = load i32, ptr %47, align 4, !tbaa !9
  %659 = and i32 %658, 1
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds [2 x [4 x i8]], ptr %657, i64 0, i64 %660
  %662 = getelementptr inbounds [4 x i8], ptr %661, i64 0, i64 0
  store ptr %662, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #4
  %663 = load i32, ptr %26, align 4, !tbaa !9
  %664 = load ptr, ptr %48, align 8, !tbaa !5
  %665 = getelementptr inbounds i8, ptr %664, i64 0
  %666 = load i8, ptr %665, align 1, !tbaa !24
  %667 = zext i8 %666 to i32
  %668 = mul nsw i32 %663, %667
  %669 = load i32, ptr %28, align 4, !tbaa !9
  %670 = load ptr, ptr %48, align 8, !tbaa !5
  %671 = getelementptr inbounds i8, ptr %670, i64 1
  %672 = load i8, ptr %671, align 1, !tbaa !24
  %673 = zext i8 %672 to i32
  %674 = mul nsw i32 %669, %673
  %675 = add nsw i32 %668, %674
  %676 = load i32, ptr %31, align 4, !tbaa !9
  %677 = load ptr, ptr %48, align 8, !tbaa !5
  %678 = getelementptr inbounds i8, ptr %677, i64 2
  %679 = load i8, ptr %678, align 1, !tbaa !24
  %680 = zext i8 %679 to i32
  %681 = mul nsw i32 %676, %680
  %682 = add nsw i32 %675, %681
  %683 = load i32, ptr %33, align 4, !tbaa !9
  %684 = load ptr, ptr %48, align 8, !tbaa !5
  %685 = getelementptr inbounds i8, ptr %684, i64 3
  %686 = load i8, ptr %685, align 1, !tbaa !24
  %687 = zext i8 %686 to i32
  %688 = mul nsw i32 %683, %687
  %689 = add nsw i32 %682, %688
  %690 = add nsw i32 %689, 8
  %691 = ashr i32 %690, 4
  store i32 %691, ptr %49, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #4
  %692 = load i32, ptr %27, align 4, !tbaa !9
  %693 = load ptr, ptr %48, align 8, !tbaa !5
  %694 = getelementptr inbounds i8, ptr %693, i64 0
  %695 = load i8, ptr %694, align 1, !tbaa !24
  %696 = zext i8 %695 to i32
  %697 = mul nsw i32 %692, %696
  %698 = load i32, ptr %29, align 4, !tbaa !9
  %699 = load ptr, ptr %48, align 8, !tbaa !5
  %700 = getelementptr inbounds i8, ptr %699, i64 1
  %701 = load i8, ptr %700, align 1, !tbaa !24
  %702 = zext i8 %701 to i32
  %703 = mul nsw i32 %698, %702
  %704 = add nsw i32 %697, %703
  %705 = load i32, ptr %32, align 4, !tbaa !9
  %706 = load ptr, ptr %48, align 8, !tbaa !5
  %707 = getelementptr inbounds i8, ptr %706, i64 2
  %708 = load i8, ptr %707, align 1, !tbaa !24
  %709 = zext i8 %708 to i32
  %710 = mul nsw i32 %705, %709
  %711 = add nsw i32 %704, %710
  %712 = load i32, ptr %34, align 4, !tbaa !9
  %713 = load ptr, ptr %48, align 8, !tbaa !5
  %714 = getelementptr inbounds i8, ptr %713, i64 3
  %715 = load i8, ptr %714, align 1, !tbaa !24
  %716 = zext i8 %715 to i32
  %717 = mul nsw i32 %712, %716
  %718 = add nsw i32 %711, %717
  %719 = add nsw i32 %718, 8
  %720 = ashr i32 %719, 4
  store i32 %720, ptr %50, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #4
  %721 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 68
  %722 = load i32, ptr %50, align 4, !tbaa !9
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds [256 x i32], ptr %721, i64 0, i64 %723
  %725 = load i32, ptr %724, align 4, !tbaa !9
  store i32 %725, ptr %51, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #4
  %726 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 70
  %727 = load i32, ptr %50, align 4, !tbaa !9
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds [256 x i32], ptr %726, i64 0, i64 %728
  %730 = load i32, ptr %729, align 4, !tbaa !9
  %731 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 71
  %732 = load i32, ptr %49, align 4, !tbaa !9
  %733 = sext i32 %732 to i64
  %734 = getelementptr inbounds [256 x i32], ptr %731, i64 0, i64 %733
  %735 = load i32, ptr %734, align 4, !tbaa !9
  %736 = add nsw i32 %730, %735
  %737 = ashr i32 %736, 16
  store i32 %737, ptr %52, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #4
  %738 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 69
  %739 = load i32, ptr %49, align 4, !tbaa !9
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds [256 x i32], ptr %738, i64 0, i64 %740
  %742 = load i32, ptr %741, align 4, !tbaa !9
  store i32 %742, ptr %53, align 4, !tbaa !9
  %743 = load i32, ptr %21, align 4, !tbaa !9
  %744 = load i32, ptr %51, align 4, !tbaa !9
  %745 = add nsw i32 %743, %744
  %746 = call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %745)
  %747 = load ptr, ptr %8, align 8, !tbaa !5
  %748 = getelementptr inbounds i8, ptr %747, i64 0
  store i8 %746, ptr %748, align 1, !tbaa !24
  %749 = load i32, ptr %21, align 4, !tbaa !9
  %750 = load i32, ptr %52, align 4, !tbaa !9
  %751 = add nsw i32 %749, %750
  %752 = call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %751)
  %753 = load ptr, ptr %8, align 8, !tbaa !5
  %754 = getelementptr inbounds i8, ptr %753, i64 1
  store i8 %752, ptr %754, align 1, !tbaa !24
  %755 = load i32, ptr %21, align 4, !tbaa !9
  %756 = load i32, ptr %53, align 4, !tbaa !9
  %757 = add nsw i32 %755, %756
  %758 = call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %757)
  %759 = load ptr, ptr %8, align 8, !tbaa !5
  %760 = getelementptr inbounds i8, ptr %759, i64 2
  store i8 %758, ptr %760, align 1, !tbaa !24
  %761 = load ptr, ptr %8, align 8, !tbaa !5
  %762 = getelementptr inbounds i8, ptr %761, i64 3
  store i8 -1, ptr %762, align 1, !tbaa !24
  %763 = load ptr, ptr %8, align 8, !tbaa !5
  %764 = getelementptr inbounds i8, ptr %763, i64 4
  store ptr %764, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #4
  %765 = load i32, ptr %6, align 4, !tbaa !9
  %766 = add nsw i32 %765, 1
  %767 = and i32 %766, 1
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds [2 x [2 x [4 x i8]]], ptr @_ZZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEvE6s_muls, i64 0, i64 %768
  %770 = load i32, ptr %47, align 4, !tbaa !9
  %771 = and i32 %770, 1
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds [2 x [4 x i8]], ptr %769, i64 0, i64 %772
  %774 = getelementptr inbounds [4 x i8], ptr %773, i64 0, i64 0
  store ptr %774, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #4
  %775 = load i32, ptr %26, align 4, !tbaa !9
  %776 = load ptr, ptr %54, align 8, !tbaa !5
  %777 = getelementptr inbounds i8, ptr %776, i64 0
  %778 = load i8, ptr %777, align 1, !tbaa !24
  %779 = zext i8 %778 to i32
  %780 = mul nsw i32 %775, %779
  %781 = load i32, ptr %28, align 4, !tbaa !9
  %782 = load ptr, ptr %54, align 8, !tbaa !5
  %783 = getelementptr inbounds i8, ptr %782, i64 1
  %784 = load i8, ptr %783, align 1, !tbaa !24
  %785 = zext i8 %784 to i32
  %786 = mul nsw i32 %781, %785
  %787 = add nsw i32 %780, %786
  %788 = load i32, ptr %31, align 4, !tbaa !9
  %789 = load ptr, ptr %54, align 8, !tbaa !5
  %790 = getelementptr inbounds i8, ptr %789, i64 2
  %791 = load i8, ptr %790, align 1, !tbaa !24
  %792 = zext i8 %791 to i32
  %793 = mul nsw i32 %788, %792
  %794 = add nsw i32 %787, %793
  %795 = load i32, ptr %33, align 4, !tbaa !9
  %796 = load ptr, ptr %54, align 8, !tbaa !5
  %797 = getelementptr inbounds i8, ptr %796, i64 3
  %798 = load i8, ptr %797, align 1, !tbaa !24
  %799 = zext i8 %798 to i32
  %800 = mul nsw i32 %795, %799
  %801 = add nsw i32 %794, %800
  %802 = add nsw i32 %801, 8
  %803 = ashr i32 %802, 4
  store i32 %803, ptr %55, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #4
  %804 = load i32, ptr %27, align 4, !tbaa !9
  %805 = load ptr, ptr %54, align 8, !tbaa !5
  %806 = getelementptr inbounds i8, ptr %805, i64 0
  %807 = load i8, ptr %806, align 1, !tbaa !24
  %808 = zext i8 %807 to i32
  %809 = mul nsw i32 %804, %808
  %810 = load i32, ptr %29, align 4, !tbaa !9
  %811 = load ptr, ptr %54, align 8, !tbaa !5
  %812 = getelementptr inbounds i8, ptr %811, i64 1
  %813 = load i8, ptr %812, align 1, !tbaa !24
  %814 = zext i8 %813 to i32
  %815 = mul nsw i32 %810, %814
  %816 = add nsw i32 %809, %815
  %817 = load i32, ptr %32, align 4, !tbaa !9
  %818 = load ptr, ptr %54, align 8, !tbaa !5
  %819 = getelementptr inbounds i8, ptr %818, i64 2
  %820 = load i8, ptr %819, align 1, !tbaa !24
  %821 = zext i8 %820 to i32
  %822 = mul nsw i32 %817, %821
  %823 = add nsw i32 %816, %822
  %824 = load i32, ptr %34, align 4, !tbaa !9
  %825 = load ptr, ptr %54, align 8, !tbaa !5
  %826 = getelementptr inbounds i8, ptr %825, i64 3
  %827 = load i8, ptr %826, align 1, !tbaa !24
  %828 = zext i8 %827 to i32
  %829 = mul nsw i32 %824, %828
  %830 = add nsw i32 %823, %829
  %831 = add nsw i32 %830, 8
  %832 = ashr i32 %831, 4
  store i32 %832, ptr %56, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #4
  %833 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 68
  %834 = load i32, ptr %56, align 4, !tbaa !9
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds [256 x i32], ptr %833, i64 0, i64 %835
  %837 = load i32, ptr %836, align 4, !tbaa !9
  store i32 %837, ptr %57, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #4
  %838 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 70
  %839 = load i32, ptr %56, align 4, !tbaa !9
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds [256 x i32], ptr %838, i64 0, i64 %840
  %842 = load i32, ptr %841, align 4, !tbaa !9
  %843 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 71
  %844 = load i32, ptr %55, align 4, !tbaa !9
  %845 = sext i32 %844 to i64
  %846 = getelementptr inbounds [256 x i32], ptr %843, i64 0, i64 %845
  %847 = load i32, ptr %846, align 4, !tbaa !9
  %848 = add nsw i32 %842, %847
  %849 = ashr i32 %848, 16
  store i32 %849, ptr %58, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #4
  %850 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 69
  %851 = load i32, ptr %55, align 4, !tbaa !9
  %852 = sext i32 %851 to i64
  %853 = getelementptr inbounds [256 x i32], ptr %850, i64 0, i64 %852
  %854 = load i32, ptr %853, align 4, !tbaa !9
  store i32 %854, ptr %59, align 4, !tbaa !9
  %855 = load i32, ptr %22, align 4, !tbaa !9
  %856 = load i32, ptr %57, align 4, !tbaa !9
  %857 = add nsw i32 %855, %856
  %858 = call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %857)
  %859 = load ptr, ptr %17, align 8, !tbaa !5
  %860 = getelementptr inbounds i8, ptr %859, i64 0
  store i8 %858, ptr %860, align 1, !tbaa !24
  %861 = load i32, ptr %22, align 4, !tbaa !9
  %862 = load i32, ptr %58, align 4, !tbaa !9
  %863 = add nsw i32 %861, %862
  %864 = call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %863)
  %865 = load ptr, ptr %17, align 8, !tbaa !5
  %866 = getelementptr inbounds i8, ptr %865, i64 1
  store i8 %864, ptr %866, align 1, !tbaa !24
  %867 = load i32, ptr %22, align 4, !tbaa !9
  %868 = load i32, ptr %59, align 4, !tbaa !9
  %869 = add nsw i32 %867, %868
  %870 = call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %869)
  %871 = load ptr, ptr %17, align 8, !tbaa !5
  %872 = getelementptr inbounds i8, ptr %871, i64 2
  store i8 %870, ptr %872, align 1, !tbaa !24
  %873 = load ptr, ptr %17, align 8, !tbaa !5
  %874 = getelementptr inbounds i8, ptr %873, i64 3
  store i8 -1, ptr %874, align 1, !tbaa !24
  %875 = load ptr, ptr %17, align 8, !tbaa !5
  %876 = getelementptr inbounds i8, ptr %875, i64 4
  store ptr %876, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  %877 = load i32, ptr %19, align 4, !tbaa !9
  %878 = add nsw i32 %877, 1
  store i32 %878, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  br label %879

879:                                              ; preds = %622, %605, %283
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  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
  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
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  br label %880

880:                                              ; preds = %879
  %881 = load i32, ptr %19, align 4, !tbaa !9
  %882 = add nsw i32 %881, 1
  store i32 %882, ptr %19, align 4, !tbaa !9
  br label %226, !llvm.loop !25

883:                                              ; preds = %231
  store i32 2, ptr %2, align 4
  store i32 1, ptr %60, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  br label %1143

884:                                              ; preds = %175, %150
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #4
  store i32 0, ptr %61, align 4, !tbaa !9
  br label %885

885:                                              ; preds = %1139, %884
  %886 = load i32, ptr %61, align 4, !tbaa !9
  %887 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 4
  %888 = load i32, ptr %887, align 8, !tbaa !22
  %889 = icmp slt i32 %886, %888
  br i1 %889, label %891, label %890

890:                                              ; preds = %885
  store i32 5, ptr %60, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  br label %1142

891:                                              ; preds = %885
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #4
  %892 = load ptr, ptr %11, align 8, !tbaa !5
  %893 = load i32, ptr %61, align 4, !tbaa !9
  %894 = ashr i32 %893, 4
  %895 = mul i32 %894, 6
  %896 = mul i32 %895, 64
  %897 = load i32, ptr %61, align 4, !tbaa !9
  %898 = and i32 %897, 8
  %899 = icmp ne i32 %898, 0
  %900 = zext i1 %899 to i64
  %901 = select i1 %899, i32 64, i32 0
  %902 = add i32 %896, %901
  %903 = load i32, ptr %61, align 4, !tbaa !9
  %904 = and i32 %903, 7
  %905 = add i32 %902, %904
  %906 = load i32, ptr %13, align 4, !tbaa !9
  %907 = add i32 %905, %906
  %908 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %907)
  %909 = sext i32 %908 to i64
  %910 = getelementptr inbounds i8, ptr %892, i64 %909
  %911 = load i8, ptr %910, align 1, !tbaa !24
  %912 = zext i8 %911 to i32
  store i32 %912, ptr %62, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #4
  %913 = load i32, ptr %61, align 4, !tbaa !9
  %914 = sub nsw i32 %913, 1
  %915 = ashr i32 %914, 1
  store i32 %915, ptr %63, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #4
  %916 = load i32, ptr %63, align 4, !tbaa !9
  %917 = add nsw i32 %916, 1
  %918 = load i32, ptr %16, align 4, !tbaa !9
  %919 = icmp slt i32 %917, %918
  br i1 %919, label %920, label %923

920:                                              ; preds = %891
  %921 = load i32, ptr %63, align 4, !tbaa !9
  %922 = add nsw i32 %921, 1
  br label %925

923:                                              ; preds = %891
  %924 = load i32, ptr %16, align 4, !tbaa !9
  br label %925

925:                                              ; preds = %923, %920
  %926 = phi i32 [ %922, %920 ], [ %924, %923 ]
  store i32 %926, ptr %64, align 4, !tbaa !9
  %927 = load i32, ptr %63, align 4, !tbaa !9
  %928 = icmp sgt i32 %927, 0
  br i1 %928, label %929, label %931

929:                                              ; preds = %925
  %930 = load i32, ptr %63, align 4, !tbaa !9
  br label %932

931:                                              ; preds = %925
  br label %932

932:                                              ; preds = %931, %929
  %933 = phi i32 [ %930, %929 ], [ 0, %931 ]
  store i32 %933, ptr %63, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #4
  %934 = load i32, ptr %63, align 4, !tbaa !9
  %935 = ashr i32 %934, 3
  %936 = mul i32 %935, 6
  %937 = mul i32 %936, 64
  %938 = load i32, ptr %63, align 4, !tbaa !9
  %939 = and i32 %938, 7
  %940 = add i32 %937, %939
  store i32 %940, ptr %65, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #4
  %941 = load ptr, ptr %12, align 8, !tbaa !5
  %942 = load i32, ptr %65, align 4, !tbaa !9
  %943 = load i32, ptr %14, align 4, !tbaa !9
  %944 = add nsw i32 %942, %943
  %945 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %944)
  %946 = sext i32 %945 to i64
  %947 = getelementptr inbounds i8, ptr %941, i64 %946
  %948 = load i8, ptr %947, align 1, !tbaa !24
  %949 = zext i8 %948 to i32
  store i32 %949, ptr %66, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #4
  %950 = load ptr, ptr %12, align 8, !tbaa !5
  %951 = load i32, ptr %65, align 4, !tbaa !9
  %952 = load i32, ptr %14, align 4, !tbaa !9
  %953 = add nsw i32 %951, %952
  %954 = add nsw i32 %953, 64
  %955 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %954)
  %956 = sext i32 %955 to i64
  %957 = getelementptr inbounds i8, ptr %950, i64 %956
  %958 = load i8, ptr %957, align 1, !tbaa !24
  %959 = zext i8 %958 to i32
  store i32 %959, ptr %67, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #4
  %960 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 66
  %961 = load ptr, ptr %960, align 8, !tbaa !17
  %962 = load i32, ptr %65, align 4, !tbaa !9
  %963 = load i32, ptr %15, align 4, !tbaa !9
  %964 = add nsw i32 %962, %963
  %965 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %964)
  %966 = sext i32 %965 to i64
  %967 = getelementptr inbounds i8, ptr %961, i64 %966
  %968 = load i8, ptr %967, align 1, !tbaa !24
  %969 = zext i8 %968 to i32
  store i32 %969, ptr %68, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #4
  %970 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 66
  %971 = load ptr, ptr %970, align 8, !tbaa !17
  %972 = load i32, ptr %65, align 4, !tbaa !9
  %973 = load i32, ptr %15, align 4, !tbaa !9
  %974 = add nsw i32 %972, %973
  %975 = add nsw i32 %974, 64
  %976 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %975)
  %977 = sext i32 %976 to i64
  %978 = getelementptr inbounds i8, ptr %971, i64 %977
  %979 = load i8, ptr %978, align 1, !tbaa !24
  %980 = zext i8 %979 to i32
  store i32 %980, ptr %69, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #4
  %981 = load i32, ptr %64, align 4, !tbaa !9
  %982 = ashr i32 %981, 3
  %983 = mul i32 %982, 6
  %984 = mul i32 %983, 64
  %985 = load i32, ptr %64, align 4, !tbaa !9
  %986 = and i32 %985, 7
  %987 = add i32 %984, %986
  store i32 %987, ptr %70, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #4
  %988 = load ptr, ptr %12, align 8, !tbaa !5
  %989 = load i32, ptr %70, align 4, !tbaa !9
  %990 = load i32, ptr %14, align 4, !tbaa !9
  %991 = add nsw i32 %989, %990
  %992 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %991)
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds i8, ptr %988, i64 %993
  %995 = load i8, ptr %994, align 1, !tbaa !24
  %996 = zext i8 %995 to i32
  store i32 %996, ptr %71, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #4
  %997 = load ptr, ptr %12, align 8, !tbaa !5
  %998 = load i32, ptr %70, align 4, !tbaa !9
  %999 = load i32, ptr %14, align 4, !tbaa !9
  %1000 = add nsw i32 %998, %999
  %1001 = add nsw i32 %1000, 64
  %1002 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %1001)
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds i8, ptr %997, i64 %1003
  %1005 = load i8, ptr %1004, align 1, !tbaa !24
  %1006 = zext i8 %1005 to i32
  store i32 %1006, ptr %72, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #4
  %1007 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 66
  %1008 = load ptr, ptr %1007, align 8, !tbaa !17
  %1009 = load i32, ptr %70, align 4, !tbaa !9
  %1010 = load i32, ptr %15, align 4, !tbaa !9
  %1011 = add nsw i32 %1009, %1010
  %1012 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %1011)
  %1013 = sext i32 %1012 to i64
  %1014 = getelementptr inbounds i8, ptr %1008, i64 %1013
  %1015 = load i8, ptr %1014, align 1, !tbaa !24
  %1016 = zext i8 %1015 to i32
  store i32 %1016, ptr %73, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #4
  %1017 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 66
  %1018 = load ptr, ptr %1017, align 8, !tbaa !17
  %1019 = load i32, ptr %70, align 4, !tbaa !9
  %1020 = load i32, ptr %15, align 4, !tbaa !9
  %1021 = add nsw i32 %1019, %1020
  %1022 = add nsw i32 %1021, 64
  %1023 = call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %81, i32 noundef %1022)
  %1024 = sext i32 %1023 to i64
  %1025 = getelementptr inbounds i8, ptr %1018, i64 %1024
  %1026 = load i8, ptr %1025, align 1, !tbaa !24
  %1027 = zext i8 %1026 to i32
  store i32 %1027, ptr %74, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #4
  %1028 = load i32, ptr %6, align 4, !tbaa !9
  %1029 = and i32 %1028, 1
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds [2 x [2 x [4 x i8]]], ptr @_ZZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEvE6s_muls, i64 0, i64 %1030
  %1032 = load i32, ptr %61, align 4, !tbaa !9
  %1033 = and i32 %1032, 1
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds [2 x [4 x i8]], ptr %1031, i64 0, i64 %1034
  %1036 = getelementptr inbounds [4 x i8], ptr %1035, i64 0, i64 0
  store ptr %1036, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #4
  %1037 = load i32, ptr %66, align 4, !tbaa !9
  %1038 = load ptr, ptr %75, align 8, !tbaa !5
  %1039 = getelementptr inbounds i8, ptr %1038, i64 0
  %1040 = load i8, ptr %1039, align 1, !tbaa !24
  %1041 = zext i8 %1040 to i32
  %1042 = mul nsw i32 %1037, %1041
  %1043 = load i32, ptr %68, align 4, !tbaa !9
  %1044 = load ptr, ptr %75, align 8, !tbaa !5
  %1045 = getelementptr inbounds i8, ptr %1044, i64 1
  %1046 = load i8, ptr %1045, align 1, !tbaa !24
  %1047 = zext i8 %1046 to i32
  %1048 = mul nsw i32 %1043, %1047
  %1049 = add nsw i32 %1042, %1048
  %1050 = load i32, ptr %71, align 4, !tbaa !9
  %1051 = load ptr, ptr %75, align 8, !tbaa !5
  %1052 = getelementptr inbounds i8, ptr %1051, i64 2
  %1053 = load i8, ptr %1052, align 1, !tbaa !24
  %1054 = zext i8 %1053 to i32
  %1055 = mul nsw i32 %1050, %1054
  %1056 = add nsw i32 %1049, %1055
  %1057 = load i32, ptr %73, align 4, !tbaa !9
  %1058 = load ptr, ptr %75, align 8, !tbaa !5
  %1059 = getelementptr inbounds i8, ptr %1058, i64 3
  %1060 = load i8, ptr %1059, align 1, !tbaa !24
  %1061 = zext i8 %1060 to i32
  %1062 = mul nsw i32 %1057, %1061
  %1063 = add nsw i32 %1056, %1062
  %1064 = add nsw i32 %1063, 8
  %1065 = ashr i32 %1064, 4
  store i32 %1065, ptr %76, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #4
  %1066 = load i32, ptr %67, align 4, !tbaa !9
  %1067 = load ptr, ptr %75, align 8, !tbaa !5
  %1068 = getelementptr inbounds i8, ptr %1067, i64 0
  %1069 = load i8, ptr %1068, align 1, !tbaa !24
  %1070 = zext i8 %1069 to i32
  %1071 = mul nsw i32 %1066, %1070
  %1072 = load i32, ptr %69, align 4, !tbaa !9
  %1073 = load ptr, ptr %75, align 8, !tbaa !5
  %1074 = getelementptr inbounds i8, ptr %1073, i64 1
  %1075 = load i8, ptr %1074, align 1, !tbaa !24
  %1076 = zext i8 %1075 to i32
  %1077 = mul nsw i32 %1072, %1076
  %1078 = add nsw i32 %1071, %1077
  %1079 = load i32, ptr %72, align 4, !tbaa !9
  %1080 = load ptr, ptr %75, align 8, !tbaa !5
  %1081 = getelementptr inbounds i8, ptr %1080, i64 2
  %1082 = load i8, ptr %1081, align 1, !tbaa !24
  %1083 = zext i8 %1082 to i32
  %1084 = mul nsw i32 %1079, %1083
  %1085 = add nsw i32 %1078, %1084
  %1086 = load i32, ptr %74, align 4, !tbaa !9
  %1087 = load ptr, ptr %75, align 8, !tbaa !5
  %1088 = getelementptr inbounds i8, ptr %1087, i64 3
  %1089 = load i8, ptr %1088, align 1, !tbaa !24
  %1090 = zext i8 %1089 to i32
  %1091 = mul nsw i32 %1086, %1090
  %1092 = add nsw i32 %1085, %1091
  %1093 = add nsw i32 %1092, 8
  %1094 = ashr i32 %1093, 4
  store i32 %1094, ptr %77, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #4
  %1095 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 68
  %1096 = load i32, ptr %77, align 4, !tbaa !9
  %1097 = sext i32 %1096 to i64
  %1098 = getelementptr inbounds [256 x i32], ptr %1095, i64 0, i64 %1097
  %1099 = load i32, ptr %1098, align 4, !tbaa !9
  store i32 %1099, ptr %78, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #4
  %1100 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 70
  %1101 = load i32, ptr %77, align 4, !tbaa !9
  %1102 = sext i32 %1101 to i64
  %1103 = getelementptr inbounds [256 x i32], ptr %1100, i64 0, i64 %1102
  %1104 = load i32, ptr %1103, align 4, !tbaa !9
  %1105 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 71
  %1106 = load i32, ptr %76, align 4, !tbaa !9
  %1107 = sext i32 %1106 to i64
  %1108 = getelementptr inbounds [256 x i32], ptr %1105, i64 0, i64 %1107
  %1109 = load i32, ptr %1108, align 4, !tbaa !9
  %1110 = add nsw i32 %1104, %1109
  %1111 = ashr i32 %1110, 16
  store i32 %1111, ptr %79, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #4
  %1112 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %81, i32 0, i32 69
  %1113 = load i32, ptr %76, align 4, !tbaa !9
  %1114 = sext i32 %1113 to i64
  %1115 = getelementptr inbounds [256 x i32], ptr %1112, i64 0, i64 %1114
  %1116 = load i32, ptr %1115, align 4, !tbaa !9
  store i32 %1116, ptr %80, align 4, !tbaa !9
  %1117 = load i32, ptr %62, align 4, !tbaa !9
  %1118 = load i32, ptr %78, align 4, !tbaa !9
  %1119 = add nsw i32 %1117, %1118
  %1120 = call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %1119)
  %1121 = load ptr, ptr %8, align 8, !tbaa !5
  %1122 = getelementptr inbounds i8, ptr %1121, i64 0
  store i8 %1120, ptr %1122, align 1, !tbaa !24
  %1123 = load i32, ptr %62, align 4, !tbaa !9
  %1124 = load i32, ptr %79, align 4, !tbaa !9
  %1125 = add nsw i32 %1123, %1124
  %1126 = call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %1125)
  %1127 = load ptr, ptr %8, align 8, !tbaa !5
  %1128 = getelementptr inbounds i8, ptr %1127, i64 1
  store i8 %1126, ptr %1128, align 1, !tbaa !24
  %1129 = load i32, ptr %62, align 4, !tbaa !9
  %1130 = load i32, ptr %80, align 4, !tbaa !9
  %1131 = add nsw i32 %1129, %1130
  %1132 = call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %1131)
  %1133 = load ptr, ptr %8, align 8, !tbaa !5
  %1134 = getelementptr inbounds i8, ptr %1133, i64 2
  store i8 %1132, ptr %1134, align 1, !tbaa !24
  %1135 = load ptr, ptr %8, align 8, !tbaa !5
  %1136 = getelementptr inbounds i8, ptr %1135, i64 3
  store i8 -1, ptr %1136, align 1, !tbaa !24
  %1137 = load ptr, ptr %8, align 8, !tbaa !5
  %1138 = getelementptr inbounds i8, ptr %1137, i64 4
  store ptr %1138, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  br label %1139

1139:                                             ; preds = %932
  %1140 = load i32, ptr %61, align 4, !tbaa !9
  %1141 = add nsw i32 %1140, 1
  store i32 %1141, ptr %61, align 4, !tbaa !9
  br label %885, !llvm.loop !27

1142:                                             ; preds = %890
  store i32 1, ptr %2, align 4
  store i32 1, ptr %60, align 4
  br label %1143

1143:                                             ; preds = %1142, %883
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #4
  %1144 = load i32, ptr %2, align 4
  ret i32 %1144
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 220}
!12 = !{!"_ZTSN4jpgd12jpeg_decoderE", !7, i64 0, !10, i64 200, !6, i64 208, !10, i64 216, !10, i64 220, !6, i64 224, !10, i64 232, !7, i64 236, !7, i64 248, !7, i64 312, !7, i64 376, !10, i64 408, !10, i64 412, !7, i64 416, !7, i64 432, !7, i64 448, !7, i64 464, !7, i64 480, !7, i64 496, !10, i64 512, !7, i64 516, !7, i64 532, !7, i64 548, !10, i64 564, !10, i64 568, !10, i64 572, !10, i64 576, !10, i64 580, !10, i64 584, !10, i64 588, !10, i64 592, !10, i64 596, !10, i64 600, !7, i64 604, !10, i64 644, !10, i64 648, !10, i64 652, !10, i64 656, !10, i64 660, !10, i64 664, !7, i64 672, !7, i64 736, !7, i64 768, !10, i64 800, !7, i64 804, !6, i64 824, !10, i64 832, !10, i64 836, !7, i64 840, !7, i64 904, !7, i64 9224, !10, i64 9288, !10, i64 9292, !10, i64 9296, !10, i64 9300, !10, i64 9304, !10, i64 9308, !10, i64 9312, !10, i64 9316, !7, i64 9320, !6, i64 9336, !7, i64 9344, !6, i64 9384, !6, i64 9392, !7, i64 9400, !7, i64 10424, !7, i64 11448, !7, i64 12472, !6, i64 13496, !6, i64 13504, !13, i64 13512, !10, i64 13516, !14, i64 13520, !14, i64 13521, !14, i64 13522}
!13 = !{!"_ZTSN4jpgd11jpgd_statusE", !7, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!12, !10, i64 644}
!16 = !{!12, !6, i64 13496}
!17 = !{!12, !6, i64 9384}
!18 = !{!12, !14, i64 13522}
!19 = !{i8 0, i8 2}
!20 = !{}
!21 = !{!12, !6, i64 9392}
!22 = !{!12, !10, i64 216}
!23 = !{!12, !6, i64 13504}
!24 = !{!7, !7, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = distinct !{!27, !26}


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

@.str.1 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [24 x i8], align 1
@__PRETTY_FUNCTION__._ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv = external hidden unnamed_addr constant [51 x i8], align 1
@_ZZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEvE6s_muls = external hidden local_unnamed_addr constant [2 x [2 x [4 x i8]]], align 16
@.str.4 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [22 x i8], align 1

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523), i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
define dso_local noundef range(i32 1, 3) i32 @_ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv(ptr noundef nonnull align 8 dereferenceable(13523) %0) local_unnamed_addr #2 align 2 {
  %2 = getelementptr inbounds i8, ptr %0, i64 220
  %3 = load i32, ptr %2, align 4, !tbaa !5
  %4 = getelementptr inbounds i8, ptr %0, i64 644
  %5 = load i32, ptr %4, align 4, !tbaa !13
  %6 = sub nsw i32 %3, %5
  %7 = and i32 %6, 15
  %8 = ashr i32 %3, 1
  %9 = add nsw i32 %8, -1
  %10 = getelementptr inbounds i8, ptr %0, i64 13496
  %11 = load ptr, ptr %10, align 8, !tbaa !14
  %12 = add nsw i32 %6, -1
  %13 = ashr i32 %12, 1
  %14 = add nsw i32 %13, 1
  %15 = tail call i32 @llvm.smin.i32(i32 %14, i32 %9)
  %16 = getelementptr inbounds i8, ptr %0, i64 9384
  %17 = load ptr, ptr %16, align 8, !tbaa !15
  %18 = icmp sgt i32 %13, -1
  br i1 %18, label %19, label %34

19:                                               ; preds = %1
  switch i32 %7, label %34 [
    i32 0, label %20
    i32 15, label %20
  ]

20:                                               ; preds = %19, %19
  %21 = icmp sgt i32 %5, 1
  br i1 %21, label %22, label %34

22:                                               ; preds = %20
  %23 = icmp sgt i32 %6, 0
  br i1 %23, label %25, label %24

24:                                               ; preds = %22
  tail call void @__assert_fail(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, i32 noundef 1863, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv) #4
  unreachable

25:                                               ; preds = %22
  %26 = getelementptr inbounds i8, ptr %0, i64 13522
  %27 = load i8, ptr %26, align 2, !tbaa !16, !range !17, !noundef !18
  %28 = trunc nuw i8 %27 to i1
  br i1 %28, label %30, label %29

29:                                               ; preds = %25
  tail call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 1864, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv) #4
  unreachable

30:                                               ; preds = %25
  %31 = icmp eq i32 %7, 15
  %32 = getelementptr inbounds i8, ptr %0, i64 9392
  %33 = load ptr, ptr %32, align 8
  %.0286 = select i1 %31, ptr %33, ptr %17
  br label %34

34:                                               ; preds = %19, %30, %20, %1
  %.0288 = phi ptr [ %33, %30 ], [ %17, %20 ], [ %17, %1 ], [ %17, %19 ]
  %.1287 = phi ptr [ %.0286, %30 ], [ %17, %20 ], [ %17, %1 ], [ %17, %19 ]
  %35 = shl i32 %6, 4
  %36 = and i32 %35, 128
  %37 = shl i32 %6, 3
  %38 = and i32 %37, 56
  %39 = or disjoint i32 %36, %38
  %40 = shl i32 %13, 3
  %41 = and i32 %40, 56
  %42 = or disjoint i32 %41, 256
  %43 = shl i32 %15, 3
  %44 = and i32 %43, 56
  %45 = or disjoint i32 %44, 256
  %46 = getelementptr inbounds i8, ptr %0, i64 216
  %47 = load i32, ptr %46, align 8, !tbaa !19
  %48 = ashr i32 %47, 1
  %49 = add nsw i32 %48, -1
  switch i32 %7, label %50 [
    i32 0, label %395
    i32 15, label %395
  ]

50:                                               ; preds = %34
  %51 = and i32 %6, 1
  %.not300 = icmp eq i32 %51, 0
  br i1 %.not300, label %52, label %53

52:                                               ; preds = %50
  tail call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.1, i32 noundef 1886, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv) #4
  unreachable

53:                                               ; preds = %50
  %54 = ashr i32 %6, 1
  %55 = icmp eq i32 %54, %13
  br i1 %55, label %57, label %56

56:                                               ; preds = %53
  tail call void @__assert_fail(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.1, i32 noundef 1887, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv) #4
  unreachable

57:                                               ; preds = %53
  %58 = icmp eq ptr %.1287, %17
  br i1 %58, label %60, label %59

59:                                               ; preds = %57
  tail call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, i32 noundef 1889, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv) #4
  unreachable

60:                                               ; preds = %57
  %61 = icmp eq ptr %.0288, %17
  br i1 %61, label %63, label %62

62:                                               ; preds = %60
  tail call void @__assert_fail(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 1890, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv) #4
  unreachable

63:                                               ; preds = %60
  %64 = add nuw nsw i32 %7, 1
  %65 = shl nuw nsw i32 %64, 4
  %66 = and i32 %65, 128
  %67 = shl nuw nsw i32 %64, 3
  %68 = and i32 %67, 48
  %69 = or disjoint i32 %66, %68
  %70 = icmp sgt i32 %47, 0
  br i1 %70, label %.lr.ph311, label %.loopexit

.lr.ph311:                                        ; preds = %63
  %71 = getelementptr inbounds i8, ptr %0, i64 13504
  %72 = load ptr, ptr %71, align 8, !tbaa !20
  %73 = getelementptr inbounds i8, ptr %0, i64 9400
  %74 = getelementptr inbounds i8, ptr %0, i64 11448
  %75 = getelementptr inbounds i8, ptr %0, i64 12472
  %76 = getelementptr inbounds i8, ptr %0, i64 10424
  %77 = load i8, ptr getelementptr inbounds (i8, ptr @_ZZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEvE6s_muls, i64 8), align 8
  %78 = zext i8 %77 to i32
  %79 = load i8, ptr getelementptr inbounds (i8, ptr @_ZZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEvE6s_muls, i64 9), align 1
  %80 = zext i8 %79 to i32
  %81 = load i8, ptr getelementptr inbounds (i8, ptr @_ZZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEvE6s_muls, i64 10), align 2
  %82 = zext i8 %81 to i32
  %83 = load i8, ptr getelementptr inbounds (i8, ptr @_ZZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEvE6s_muls, i64 11), align 1
  %84 = zext i8 %83 to i32
  %85 = load i8, ptr @_ZZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEvE6s_muls, align 16
  %86 = zext i8 %85 to i32
  %87 = load i8, ptr getelementptr inbounds (i8, ptr @_ZZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEvE6s_muls, i64 1), align 1
  %88 = zext i8 %87 to i32
  %89 = load i8, ptr getelementptr inbounds (i8, ptr @_ZZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEvE6s_muls, i64 2), align 2
  %90 = zext i8 %89 to i32
  %91 = load i8, ptr getelementptr inbounds (i8, ptr @_ZZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEvE6s_muls, i64 3), align 1
  %92 = zext i8 %91 to i32
  br label %93

93:                                               ; preds = %.lr.ph311, %391
  %.0285310 = phi ptr [ %11, %.lr.ph311 ], [ %.1, %391 ]
  %.0289309 = phi ptr [ %72, %.lr.ph311 ], [ %.1290, %391 ]
  %.0291308 = phi i32 [ 0, %.lr.ph311 ], [ %393, %391 ]
  %94 = ashr i32 %.0291308, 4
  %95 = mul i32 %94, 384
  %96 = shl i32 %.0291308, 3
  %97 = and i32 %96, 64
  %98 = or disjoint i32 %95, %97
  %99 = and i32 %.0291308, 7
  %100 = or disjoint i32 %98, %99
  %101 = add nsw i32 %100, %39
  %102 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %101)
  %103 = sext i32 %102 to i64
  %104 = getelementptr inbounds i8, ptr %.1287, i64 %103
  %105 = load i8, ptr %104, align 1, !tbaa !21
  %106 = zext i8 %105 to i32
  %107 = add nsw i32 %100, %69
  %108 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %107)
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds i8, ptr %.1287, i64 %109
  %111 = load i8, ptr %110, align 1, !tbaa !21
  %112 = zext i8 %111 to i32
  %113 = add nsw i32 %.0291308, -1
  %114 = ashr i32 %113, 1
  %115 = add nsw i32 %114, 1
  %116 = tail call i32 @llvm.smin.i32(i32 %115, i32 %49)
  %117 = tail call i32 @llvm.smax.i32(i32 %114, i32 0)
  %118 = lshr i32 %117, 3
  %119 = mul i32 %118, 384
  %120 = and i32 %117, 7
  %121 = or disjoint i32 %119, %120
  %122 = add nsw i32 %121, %42
  %123 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %122)
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds i8, ptr %.0288, i64 %124
  %126 = load i8, ptr %125, align 1, !tbaa !21
  %127 = zext i8 %126 to i32
  %128 = or disjoint i32 %122, 64
  %129 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %128)
  %130 = sext i32 %129 to i64
  %131 = getelementptr inbounds i8, ptr %.0288, i64 %130
  %132 = load i8, ptr %131, align 1, !tbaa !21
  %133 = zext i8 %132 to i32
  %134 = load ptr, ptr %16, align 8, !tbaa !15
  %135 = add nsw i32 %121, %45
  %136 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %135)
  %137 = sext i32 %136 to i64
  %138 = getelementptr inbounds i8, ptr %134, i64 %137
  %139 = load i8, ptr %138, align 1, !tbaa !21
  %140 = zext i8 %139 to i32
  %141 = load ptr, ptr %16, align 8, !tbaa !15
  %142 = or disjoint i32 %135, 64
  %143 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %142)
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds i8, ptr %141, i64 %144
  %146 = load i8, ptr %145, align 1, !tbaa !21
  %147 = zext i8 %146 to i32
  %148 = ashr i32 %116, 3
  %149 = mul i32 %148, 384
  %150 = and i32 %116, 7
  %151 = or disjoint i32 %149, %150
  %152 = add nsw i32 %151, %42
  %153 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %152)
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds i8, ptr %.0288, i64 %154
  %156 = load i8, ptr %155, align 1, !tbaa !21
  %157 = zext i8 %156 to i32
  %158 = or disjoint i32 %152, 64
  %159 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %158)
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds i8, ptr %.0288, i64 %160
  %162 = load i8, ptr %161, align 1, !tbaa !21
  %163 = zext i8 %162 to i32
  %164 = load ptr, ptr %16, align 8, !tbaa !15
  %165 = add nsw i32 %151, %45
  %166 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %165)
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds i8, ptr %164, i64 %167
  %169 = load i8, ptr %168, align 1, !tbaa !21
  %170 = zext i8 %169 to i32
  %171 = load ptr, ptr %16, align 8, !tbaa !15
  %172 = or disjoint i32 %165, 64
  %173 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %172)
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds i8, ptr %171, i64 %174
  %176 = load i8, ptr %175, align 1, !tbaa !21
  %177 = zext i8 %176 to i32
  %178 = and i32 %.0291308, 1
  %179 = zext nneg i32 %178 to i64
  %180 = getelementptr inbounds [2 x [4 x i8]], ptr getelementptr inbounds (i8, ptr @_ZZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEvE6s_muls, i64 8), i64 0, i64 %179
  %181 = load i8, ptr %180, align 4, !tbaa !21
  %182 = zext i8 %181 to i32
  %183 = mul nuw nsw i32 %182, %127
  %184 = getelementptr inbounds i8, ptr %180, i64 1
  %185 = load i8, ptr %184, align 1, !tbaa !21
  %186 = zext i8 %185 to i32
  %187 = mul nuw nsw i32 %186, %140
  %188 = getelementptr inbounds i8, ptr %180, i64 2
  %189 = load i8, ptr %188, align 2, !tbaa !21
  %190 = zext i8 %189 to i32
  %191 = mul nuw nsw i32 %190, %157
  %192 = getelementptr inbounds i8, ptr %180, i64 3
  %193 = load i8, ptr %192, align 1, !tbaa !21
  %194 = zext i8 %193 to i32
  %195 = mul nuw nsw i32 %194, %170
  %196 = add nuw nsw i32 %183, 8
  %197 = add nuw nsw i32 %196, %187
  %198 = add nuw nsw i32 %197, %191
  %199 = add nuw nsw i32 %198, %195
  %200 = lshr i32 %199, 4
  %201 = mul nuw nsw i32 %182, %133
  %202 = mul nuw nsw i32 %186, %147
  %203 = mul nuw nsw i32 %190, %163
  %204 = mul nuw nsw i32 %194, %177
  %205 = add nuw nsw i32 %201, 8
  %206 = add nuw nsw i32 %205, %202
  %207 = add nuw nsw i32 %206, %203
  %208 = add nuw nsw i32 %207, %204
  %209 = lshr i32 %208, 4
  %210 = zext nneg i32 %209 to i64
  %211 = getelementptr inbounds [256 x i32], ptr %73, i64 0, i64 %210
  %212 = load i32, ptr %211, align 4, !tbaa !22
  %213 = getelementptr inbounds [256 x i32], ptr %74, i64 0, i64 %210
  %214 = load i32, ptr %213, align 4, !tbaa !22
  %215 = zext nneg i32 %200 to i64
  %216 = getelementptr inbounds [256 x i32], ptr %75, i64 0, i64 %215
  %217 = load i32, ptr %216, align 4, !tbaa !22
  %218 = add nsw i32 %217, %214
  %219 = ashr i32 %218, 16
  %220 = getelementptr inbounds [256 x i32], ptr %76, i64 0, i64 %215
  %221 = load i32, ptr %220, align 4, !tbaa !22
  %222 = add nsw i32 %212, %106
  %223 = tail call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %222)
  store i8 %223, ptr %.0285310, align 1, !tbaa !21
  %224 = add nsw i32 %219, %106
  %225 = tail call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %224)
  %226 = getelementptr inbounds i8, ptr %.0285310, i64 1
  store i8 %225, ptr %226, align 1, !tbaa !21
  %227 = add nsw i32 %221, %106
  %228 = tail call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %227)
  %229 = getelementptr inbounds i8, ptr %.0285310, i64 2
  store i8 %228, ptr %229, align 1, !tbaa !21
  %230 = getelementptr inbounds i8, ptr %.0285310, i64 3
  store i8 -1, ptr %230, align 1, !tbaa !21
  %231 = getelementptr inbounds i8, ptr %.0285310, i64 4
  %232 = getelementptr inbounds [2 x [4 x i8]], ptr @_ZZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEvE6s_muls, i64 0, i64 %179
  %233 = load i8, ptr %232, align 4, !tbaa !21
  %234 = zext i8 %233 to i32
  %235 = mul nuw nsw i32 %234, %127
  %236 = getelementptr inbounds i8, ptr %232, i64 1
  %237 = load i8, ptr %236, align 1, !tbaa !21
  %238 = zext i8 %237 to i32
  %239 = mul nuw nsw i32 %238, %140
  %240 = getelementptr inbounds i8, ptr %232, i64 2
  %241 = load i8, ptr %240, align 2, !tbaa !21
  %242 = zext i8 %241 to i32
  %243 = mul nuw nsw i32 %242, %157
  %244 = getelementptr inbounds i8, ptr %232, i64 3
  %245 = load i8, ptr %244, align 1, !tbaa !21
  %246 = zext i8 %245 to i32
  %247 = mul nuw nsw i32 %246, %170
  %248 = add nuw nsw i32 %235, 8
  %249 = add nuw nsw i32 %248, %239
  %250 = add nuw nsw i32 %249, %243
  %251 = add nuw nsw i32 %250, %247
  %252 = lshr i32 %251, 4
  %253 = mul nuw nsw i32 %234, %133
  %254 = mul nuw nsw i32 %238, %147
  %255 = mul nuw nsw i32 %242, %163
  %256 = mul nuw nsw i32 %246, %177
  %257 = add nuw nsw i32 %253, 8
  %258 = add nuw nsw i32 %257, %254
  %259 = add nuw nsw i32 %258, %255
  %260 = add nuw nsw i32 %259, %256
  %261 = lshr i32 %260, 4
  %262 = zext nneg i32 %261 to i64
  %263 = getelementptr inbounds [256 x i32], ptr %73, i64 0, i64 %262
  %264 = load i32, ptr %263, align 4, !tbaa !22
  %265 = getelementptr inbounds [256 x i32], ptr %74, i64 0, i64 %262
  %266 = load i32, ptr %265, align 4, !tbaa !22
  %267 = zext nneg i32 %252 to i64
  %268 = getelementptr inbounds [256 x i32], ptr %75, i64 0, i64 %267
  %269 = load i32, ptr %268, align 4, !tbaa !22
  %270 = add nsw i32 %269, %266
  %271 = ashr i32 %270, 16
  %272 = getelementptr inbounds [256 x i32], ptr %76, i64 0, i64 %267
  %273 = load i32, ptr %272, align 4, !tbaa !22
  %274 = add nsw i32 %264, %112
  %275 = tail call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %274)
  store i8 %275, ptr %.0289309, align 1, !tbaa !21
  %276 = add nsw i32 %271, %112
  %277 = tail call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %276)
  %278 = getelementptr inbounds i8, ptr %.0289309, i64 1
  store i8 %277, ptr %278, align 1, !tbaa !21
  %279 = add nsw i32 %273, %112
  %280 = tail call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %279)
  %281 = getelementptr inbounds i8, ptr %.0289309, i64 2
  store i8 %280, ptr %281, align 1, !tbaa !21
  %282 = getelementptr inbounds i8, ptr %.0289309, i64 3
  store i8 -1, ptr %282, align 1, !tbaa !21
  %283 = getelementptr inbounds i8, ptr %.0289309, i64 4
  %.not303 = icmp ne i32 %178, 0
  %.pre313 = load i32, ptr %46, align 8, !tbaa !19
  %284 = add nsw i32 %.pre313, -1
  %285 = icmp slt i32 %.0291308, %284
  %or.cond = select i1 %.not303, i1 %285, i1 false
  br i1 %or.cond, label %286, label %391

286:                                              ; preds = %93
  %287 = ashr i32 %.0291308, 1
  %288 = icmp eq i32 %117, %287
  br i1 %288, label %290, label %289

289:                                              ; preds = %286
  tail call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 1956, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEv) #4
  unreachable

290:                                              ; preds = %286
  %291 = add nsw i32 %.0291308, 1
  %292 = ashr i32 %291, 4
  %293 = mul i32 %292, 384
  %294 = shl i32 %291, 3
  %295 = and i32 %294, 64
  %296 = or disjoint i32 %293, %295
  %297 = and i32 %291, 6
  %298 = or disjoint i32 %296, %297
  %299 = add nsw i32 %298, %39
  %300 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %299)
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds i8, ptr %.1287, i64 %301
  %303 = load i8, ptr %302, align 1, !tbaa !21
  %304 = zext i8 %303 to i32
  %305 = add nsw i32 %298, %69
  %306 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %305)
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds i8, ptr %.1287, i64 %307
  %309 = load i8, ptr %308, align 1, !tbaa !21
  %310 = zext i8 %309 to i32
  %311 = mul nuw nsw i32 %78, %127
  %312 = mul nuw nsw i32 %80, %140
  %313 = mul nuw nsw i32 %82, %157
  %314 = mul nuw nsw i32 %84, %170
  %315 = add nuw nsw i32 %311, 8
  %316 = add nuw nsw i32 %315, %312
  %317 = add nuw nsw i32 %316, %313
  %318 = add nuw nsw i32 %317, %314
  %319 = lshr i32 %318, 4
  %320 = mul nuw nsw i32 %78, %133
  %321 = mul nuw nsw i32 %80, %147
  %322 = mul nuw nsw i32 %82, %163
  %323 = mul nuw nsw i32 %84, %177
  %324 = add nuw nsw i32 %320, 8
  %325 = add nuw nsw i32 %324, %321
  %326 = add nuw nsw i32 %325, %322
  %327 = add nuw nsw i32 %326, %323
  %328 = lshr i32 %327, 4
  %329 = zext nneg i32 %328 to i64
  %330 = getelementptr inbounds [256 x i32], ptr %73, i64 0, i64 %329
  %331 = load i32, ptr %330, align 4, !tbaa !22
  %332 = getelementptr inbounds [256 x i32], ptr %74, i64 0, i64 %329
  %333 = load i32, ptr %332, align 4, !tbaa !22
  %334 = zext nneg i32 %319 to i64
  %335 = getelementptr inbounds [256 x i32], ptr %75, i64 0, i64 %334
  %336 = load i32, ptr %335, align 4, !tbaa !22
  %337 = add nsw i32 %336, %333
  %338 = ashr i32 %337, 16
  %339 = getelementptr inbounds [256 x i32], ptr %76, i64 0, i64 %334
  %340 = load i32, ptr %339, align 4, !tbaa !22
  %341 = add nsw i32 %331, %304
  %342 = tail call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %341)
  store i8 %342, ptr %231, align 1, !tbaa !21
  %343 = add nsw i32 %338, %304
  %344 = tail call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %343)
  %345 = getelementptr inbounds i8, ptr %.0285310, i64 5
  store i8 %344, ptr %345, align 1, !tbaa !21
  %346 = add nsw i32 %340, %304
  %347 = tail call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %346)
  %348 = getelementptr inbounds i8, ptr %.0285310, i64 6
  store i8 %347, ptr %348, align 1, !tbaa !21
  %349 = getelementptr inbounds i8, ptr %.0285310, i64 7
  store i8 -1, ptr %349, align 1, !tbaa !21
  %350 = getelementptr inbounds i8, ptr %.0285310, i64 8
  %351 = mul nuw nsw i32 %86, %127
  %352 = mul nuw nsw i32 %88, %140
  %353 = mul nuw nsw i32 %90, %157
  %354 = mul nuw nsw i32 %92, %170
  %355 = add nuw nsw i32 %351, 8
  %356 = add nuw nsw i32 %355, %352
  %357 = add nuw nsw i32 %356, %353
  %358 = add nuw nsw i32 %357, %354
  %359 = lshr i32 %358, 4
  %360 = mul nuw nsw i32 %86, %133
  %361 = mul nuw nsw i32 %88, %147
  %362 = mul nuw nsw i32 %90, %163
  %363 = mul nuw nsw i32 %92, %177
  %364 = add nuw nsw i32 %360, 8
  %365 = add nuw nsw i32 %364, %361
  %366 = add nuw nsw i32 %365, %362
  %367 = add nuw nsw i32 %366, %363
  %368 = lshr i32 %367, 4
  %369 = zext nneg i32 %368 to i64
  %370 = getelementptr inbounds [256 x i32], ptr %73, i64 0, i64 %369
  %371 = load i32, ptr %370, align 4, !tbaa !22
  %372 = getelementptr inbounds [256 x i32], ptr %74, i64 0, i64 %369
  %373 = load i32, ptr %372, align 4, !tbaa !22
  %374 = zext nneg i32 %359 to i64
  %375 = getelementptr inbounds [256 x i32], ptr %75, i64 0, i64 %374
  %376 = load i32, ptr %375, align 4, !tbaa !22
  %377 = add nsw i32 %376, %373
  %378 = ashr i32 %377, 16
  %379 = getelementptr inbounds [256 x i32], ptr %76, i64 0, i64 %374
  %380 = load i32, ptr %379, align 4, !tbaa !22
  %381 = add nsw i32 %371, %310
  %382 = tail call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %381)
  store i8 %382, ptr %283, align 1, !tbaa !21
  %383 = add nsw i32 %378, %310
  %384 = tail call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %383)
  %385 = getelementptr inbounds i8, ptr %.0289309, i64 5
  store i8 %384, ptr %385, align 1, !tbaa !21
  %386 = add nsw i32 %380, %310
  %387 = tail call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %386)
  %388 = getelementptr inbounds i8, ptr %.0289309, i64 6
  store i8 %387, ptr %388, align 1, !tbaa !21
  %389 = getelementptr inbounds i8, ptr %.0289309, i64 7
  store i8 -1, ptr %389, align 1, !tbaa !21
  %390 = getelementptr inbounds i8, ptr %.0289309, i64 8
  %.pre = load i32, ptr %46, align 8, !tbaa !19
  br label %391

391:                                              ; preds = %290, %93
  %392 = phi i32 [ %.pre, %290 ], [ %.pre313, %93 ]
  %.1292 = phi i32 [ %291, %290 ], [ %.0291308, %93 ]
  %.1290 = phi ptr [ %390, %290 ], [ %283, %93 ]
  %.1 = phi ptr [ %350, %290 ], [ %231, %93 ]
  %393 = add nsw i32 %.1292, 1
  %394 = icmp slt i32 %393, %392
  br i1 %394, label %93, label %.loopexit, !llvm.loop !23

395:                                              ; preds = %34, %34
  %396 = icmp sgt i32 %47, 0
  br i1 %396, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %395
  %397 = and i32 %6, 1
  %398 = zext nneg i32 %397 to i64
  %399 = getelementptr inbounds i8, ptr %0, i64 9400
  %400 = getelementptr inbounds i8, ptr %0, i64 11448
  %401 = getelementptr inbounds i8, ptr %0, i64 12472
  %402 = getelementptr inbounds i8, ptr %0, i64 10424
  br label %403

403:                                              ; preds = %.lr.ph, %403
  %.2307 = phi ptr [ %11, %.lr.ph ], [ %535, %403 ]
  %.0293306 = phi i32 [ 0, %.lr.ph ], [ %536, %403 ]
  %404 = lshr i32 %.0293306, 4
  %405 = mul i32 %404, 384
  %406 = shl i32 %.0293306, 3
  %407 = and i32 %406, 64
  %408 = and i32 %.0293306, 7
  %409 = or disjoint i32 %408, %407
  %410 = or disjoint i32 %409, %39
  %411 = add i32 %410, %405
  %412 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %411)
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds i8, ptr %.1287, i64 %413
  %415 = load i8, ptr %414, align 1, !tbaa !21
  %416 = zext i8 %415 to i32
  %417 = add nsw i32 %.0293306, -1
  %418 = ashr i32 %417, 1
  %419 = add nsw i32 %418, 1
  %420 = tail call i32 @llvm.smin.i32(i32 %419, i32 %49)
  %421 = tail call i32 @llvm.smax.i32(i32 %418, i32 0)
  %422 = lshr i32 %421, 3
  %423 = mul i32 %422, 384
  %424 = and i32 %421, 7
  %425 = or disjoint i32 %423, %424
  %426 = add nsw i32 %425, %42
  %427 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %426)
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds i8, ptr %.0288, i64 %428
  %430 = load i8, ptr %429, align 1, !tbaa !21
  %431 = zext i8 %430 to i32
  %432 = or disjoint i32 %426, 64
  %433 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %432)
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds i8, ptr %.0288, i64 %434
  %436 = load i8, ptr %435, align 1, !tbaa !21
  %437 = zext i8 %436 to i32
  %438 = load ptr, ptr %16, align 8, !tbaa !15
  %439 = add nsw i32 %425, %45
  %440 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %439)
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds i8, ptr %438, i64 %441
  %443 = load i8, ptr %442, align 1, !tbaa !21
  %444 = zext i8 %443 to i32
  %445 = load ptr, ptr %16, align 8, !tbaa !15
  %446 = or disjoint i32 %439, 64
  %447 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %446)
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds i8, ptr %445, i64 %448
  %450 = load i8, ptr %449, align 1, !tbaa !21
  %451 = zext i8 %450 to i32
  %452 = ashr i32 %420, 3
  %453 = mul i32 %452, 384
  %454 = and i32 %420, 7
  %455 = or disjoint i32 %453, %454
  %456 = add nsw i32 %455, %42
  %457 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %456)
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds i8, ptr %.0288, i64 %458
  %460 = load i8, ptr %459, align 1, !tbaa !21
  %461 = zext i8 %460 to i32
  %462 = or disjoint i32 %456, 64
  %463 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %462)
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds i8, ptr %.0288, i64 %464
  %466 = load i8, ptr %465, align 1, !tbaa !21
  %467 = zext i8 %466 to i32
  %468 = load ptr, ptr %16, align 8, !tbaa !15
  %469 = add nsw i32 %455, %45
  %470 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %469)
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds i8, ptr %468, i64 %471
  %473 = load i8, ptr %472, align 1, !tbaa !21
  %474 = zext i8 %473 to i32
  %475 = load ptr, ptr %16, align 8, !tbaa !15
  %476 = or disjoint i32 %469, 64
  %477 = tail call noundef i32 @_ZNK4jpgd12jpeg_decoder20check_sample_buf_ofsEi(ptr noundef nonnull align 8 dereferenceable(13523) %0, i32 noundef %476)
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds i8, ptr %475, i64 %478
  %480 = load i8, ptr %479, align 1, !tbaa !21
  %481 = zext i8 %480 to i32
  %482 = and i32 %.0293306, 1
  %483 = zext nneg i32 %482 to i64
  %484 = getelementptr inbounds [2 x [2 x [4 x i8]]], ptr @_ZZN4jpgd12jpeg_decoder19H2V2ConvertFilteredEvE6s_muls, i64 0, i64 %398, i64 %483
  %485 = load i8, ptr %484, align 4, !tbaa !21
  %486 = zext i8 %485 to i32
  %487 = mul nuw nsw i32 %486, %431
  %488 = getelementptr inbounds i8, ptr %484, i64 1
  %489 = load i8, ptr %488, align 1, !tbaa !21
  %490 = zext i8 %489 to i32
  %491 = mul nuw nsw i32 %490, %444
  %492 = getelementptr inbounds i8, ptr %484, i64 2
  %493 = load i8, ptr %492, align 2, !tbaa !21
  %494 = zext i8 %493 to i32
  %495 = mul nuw nsw i32 %494, %461
  %496 = getelementptr inbounds i8, ptr %484, i64 3
  %497 = load i8, ptr %496, align 1, !tbaa !21
  %498 = zext i8 %497 to i32
  %499 = mul nuw nsw i32 %498, %474
  %500 = add nuw nsw i32 %487, 8
  %501 = add nuw nsw i32 %500, %491
  %502 = add nuw nsw i32 %501, %495
  %503 = add nuw nsw i32 %502, %499
  %504 = lshr i32 %503, 4
  %505 = mul nuw nsw i32 %486, %437
  %506 = mul nuw nsw i32 %490, %451
  %507 = mul nuw nsw i32 %494, %467
  %508 = mul nuw nsw i32 %498, %481
  %509 = add nuw nsw i32 %505, 8
  %510 = add nuw nsw i32 %509, %506
  %511 = add nuw nsw i32 %510, %507
  %512 = add nuw nsw i32 %511, %508
  %513 = lshr i32 %512, 4
  %514 = zext nneg i32 %513 to i64
  %515 = getelementptr inbounds [256 x i32], ptr %399, i64 0, i64 %514
  %516 = load i32, ptr %515, align 4, !tbaa !22
  %517 = getelementptr inbounds [256 x i32], ptr %400, i64 0, i64 %514
  %518 = load i32, ptr %517, align 4, !tbaa !22
  %519 = zext nneg i32 %504 to i64
  %520 = getelementptr inbounds [256 x i32], ptr %401, i64 0, i64 %519
  %521 = load i32, ptr %520, align 4, !tbaa !22
  %522 = add nsw i32 %521, %518
  %523 = ashr i32 %522, 16
  %524 = getelementptr inbounds [256 x i32], ptr %402, i64 0, i64 %519
  %525 = load i32, ptr %524, align 4, !tbaa !22
  %526 = add nsw i32 %516, %416
  %527 = tail call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %526)
  store i8 %527, ptr %.2307, align 1, !tbaa !21
  %528 = add nsw i32 %523, %416
  %529 = tail call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %528)
  %530 = getelementptr inbounds i8, ptr %.2307, i64 1
  store i8 %529, ptr %530, align 1, !tbaa !21
  %531 = add nsw i32 %525, %416
  %532 = tail call noundef zeroext i8 @_ZN4jpgd12jpeg_decoder5clampEi(i32 noundef %531)
  %533 = getelementptr inbounds i8, ptr %.2307, i64 2
  store i8 %532, ptr %533, align 1, !tbaa !21
  %534 = getelementptr inbounds i8, ptr %.2307, i64 3
  store i8 -1, ptr %534, align 1, !tbaa !21
  %535 = getelementptr inbounds i8, ptr %.2307, i64 4
  %536 = add nuw nsw i32 %.0293306, 1
  %537 = load i32, ptr %46, align 8, !tbaa !19
  %538 = icmp slt i32 %536, %537
  br i1 %538, label %403, label %.loopexit, !llvm.loop !25

.loopexit:                                        ; preds = %403, %391, %395, %63
  %.0 = phi i32 [ 2, %63 ], [ 1, %395 ], [ 2, %391 ], [ 1, %403 ]
  ret i32 %.0
}

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

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

attributes #0 = { 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 #1 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !9, i64 220}
!6 = !{!"_ZTSN4jpgd12jpeg_decoderE", !7, i64 0, !9, i64 200, !10, i64 208, !9, i64 216, !9, i64 220, !10, i64 224, !9, i64 232, !7, i64 236, !7, i64 248, !7, i64 312, !7, i64 376, !9, i64 408, !9, i64 412, !7, i64 416, !7, i64 432, !7, i64 448, !7, i64 464, !7, i64 480, !7, i64 496, !9, i64 512, !7, i64 516, !7, i64 532, !7, i64 548, !9, i64 564, !9, i64 568, !9, i64 572, !9, i64 576, !9, i64 580, !9, i64 584, !9, i64 588, !9, i64 592, !9, i64 596, !9, i64 600, !7, i64 604, !9, i64 644, !9, i64 648, !9, i64 652, !9, i64 656, !9, i64 660, !9, i64 664, !7, i64 672, !7, i64 736, !7, i64 768, !9, i64 800, !7, i64 804, !10, i64 824, !9, i64 832, !9, i64 836, !7, i64 840, !7, i64 904, !7, i64 9224, !9, i64 9288, !9, i64 9292, !9, i64 9296, !9, i64 9300, !9, i64 9304, !9, i64 9308, !9, i64 9312, !9, i64 9316, !7, i64 9320, !10, i64 9336, !7, i64 9344, !10, i64 9384, !10, i64 9392, !7, i64 9400, !7, i64 10424, !7, i64 11448, !7, i64 12472, !10, i64 13496, !10, i64 13504, !11, i64 13512, !9, i64 13516, !12, i64 13520, !12, i64 13521, !12, i64 13522}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!"int", !7, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!"_ZTSN4jpgd11jpgd_statusE", !7, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!6, !9, i64 644}
!14 = !{!6, !10, i64 13496}
!15 = !{!6, !10, i64 9384}
!16 = !{!6, !12, i64 13522}
!17 = !{i8 0, i8 2}
!18 = !{}
!19 = !{!6, !9, i64 216}
!20 = !{!6, !10, i64 13504}
!21 = !{!7, !7, i64 0}
!22 = !{!9, !9, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = distinct !{!25, !24}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass