; LLVM IR from drohmer/cgp :: library/third_party/src/jpeg/jpgd.ll (ZN4jpgd12jpeg_decoder13load_next_rowEv)

; 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], 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, [8 x ptr], [4 x ptr], [4 x ptr], i32, [4 x i32], [4 x i8], ptr, i32, i32, i8, [128 x i8], [8320 x i8], [128 x i8], [3 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, [3 x i8], i32, [4 x i32], [4 x i8], ptr, [10 x i32], ptr, [256 x i32], [256 x i32], [256 x i32], [256 x i32], ptr, ptr, i32, i8, [3 x i8], i32, [4 x i8] }>
%struct.__jmp_buf_tag = type { [8 x i64], i32, %struct.__sigset_t }
%struct.__sigset_t = type { [16 x i64] }

@_ZN4jpgdL5g_ZAGE = external hidden global [64 x i32], align 16

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4jpgd12jpeg_decoder13transform_mcuEi(ptr noundef nonnull align 8 dereferenceable(13652), i32 noundef) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4jpgd12jpeg_decoder20transform_mcu_expandEi(ptr noundef nonnull align 8 dereferenceable(13652), i32 noundef) #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4jpgd12jpeg_decoder13load_next_rowEv(ptr noundef nonnull align 8 dereferenceable(13652) %0) #3 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca [4 x i32], align 16
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %16 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #5
  store i32 0, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #5
  %17 = getelementptr inbounds [4 x i32], ptr %11, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %17, i8 0, i64 16, i1 false)
  store i32 0, ptr %6, align 4, !tbaa !9
  br label %18

18:                                               ; preds = %220, %1
  %19 = load i32, ptr %6, align 4, !tbaa !9
  %20 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 31
  %21 = load i32, ptr %20, align 4, !tbaa !11
  %22 = icmp slt i32 %19, %21
  br i1 %22, label %23, label %223

23:                                               ; preds = %18
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  store i32 0, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  store i32 0, ptr %13, align 4, !tbaa !9
  store i32 0, ptr %7, align 4, !tbaa !9
  br label %24

24:                                               ; preds = %208, %23
  %25 = load i32, ptr %7, align 4, !tbaa !9
  %26 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 29
  %27 = load i32, ptr %26, align 4, !tbaa !15
  %28 = icmp slt i32 %25, %27
  br i1 %28, label %29, label %211

29:                                               ; preds = %24
  %30 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 33
  %31 = load i32, ptr %7, align 4, !tbaa !9
  %32 = sext i32 %31 to i64
  %33 = getelementptr inbounds [10 x i32], ptr %30, i64 0, i64 %32
  %34 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %34, ptr %10, align 4, !tbaa !9
  %35 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 10
  %36 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 15
  %37 = load i32, ptr %10, align 4, !tbaa !9
  %38 = sext i32 %37 to i64
  %39 = getelementptr inbounds [4 x i32], ptr %36, i64 0, i64 %38
  %40 = load i32, ptr %39, align 4, !tbaa !9
  %41 = sext i32 %40 to i64
  %42 = getelementptr inbounds [4 x ptr], ptr %35, i64 0, i64 %41
  %43 = load ptr, ptr %42, align 8, !tbaa !5
  store ptr %43, ptr %5, align 8, !tbaa !5
  %44 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 68
  %45 = load ptr, ptr %44, align 8, !tbaa !16
  %46 = load i32, ptr %7, align 4, !tbaa !9
  %47 = mul nsw i32 64, %46
  %48 = sext i32 %47 to i64
  %49 = getelementptr inbounds i16, ptr %45, i64 %48
  store ptr %49, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  %50 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 41
  %51 = load i32, ptr %10, align 4, !tbaa !9
  %52 = sext i32 %51 to i64
  %53 = getelementptr inbounds [4 x ptr], ptr %50, i64 0, i64 %52
  %54 = load ptr, ptr %53, align 8, !tbaa !5
  %55 = load i32, ptr %10, align 4, !tbaa !9
  %56 = sext i32 %55 to i64
  %57 = getelementptr inbounds [4 x i32], ptr %11, i64 0, i64 %56
  %58 = load i32, ptr %57, align 4, !tbaa !9
  %59 = load i32, ptr %12, align 4, !tbaa !9
  %60 = add nsw i32 %58, %59
  %61 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 43
  %62 = load i32, ptr %10, align 4, !tbaa !9
  %63 = sext i32 %62 to i64
  %64 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 %63
  %65 = load i32, ptr %64, align 4, !tbaa !9
  %66 = load i32, ptr %13, align 4, !tbaa !9
  %67 = add nsw i32 %65, %66
  %68 = call noundef ptr @_ZN4jpgd12jpeg_decoder14coeff_buf_getpEPNS0_9coeff_bufEii(ptr noundef nonnull align 8 dereferenceable(13652) %16, ptr noundef %54, i32 noundef %60, i32 noundef %67)
  store ptr %68, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  %69 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 40
  %70 = load i32, ptr %10, align 4, !tbaa !9
  %71 = sext i32 %70 to i64
  %72 = getelementptr inbounds [4 x ptr], ptr %69, i64 0, i64 %71
  %73 = load ptr, ptr %72, align 8, !tbaa !5
  %74 = load i32, ptr %10, align 4, !tbaa !9
  %75 = sext i32 %74 to i64
  %76 = getelementptr inbounds [4 x i32], ptr %11, i64 0, i64 %75
  %77 = load i32, ptr %76, align 4, !tbaa !9
  %78 = load i32, ptr %12, align 4, !tbaa !9
  %79 = add nsw i32 %77, %78
  %80 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 43
  %81 = load i32, ptr %10, align 4, !tbaa !9
  %82 = sext i32 %81 to i64
  %83 = getelementptr inbounds [4 x i32], ptr %80, i64 0, i64 %82
  %84 = load i32, ptr %83, align 4, !tbaa !9
  %85 = load i32, ptr %13, align 4, !tbaa !9
  %86 = add nsw i32 %84, %85
  %87 = call noundef ptr @_ZN4jpgd12jpeg_decoder14coeff_buf_getpEPNS0_9coeff_bufEii(ptr noundef nonnull align 8 dereferenceable(13652) %16, ptr noundef %73, i32 noundef %79, i32 noundef %86)
  store ptr %87, ptr %15, align 8, !tbaa !5
  %88 = load ptr, ptr %15, align 8, !tbaa !5
  %89 = getelementptr inbounds i16, ptr %88, i64 0
  %90 = load i16, ptr %89, align 2, !tbaa !17
  %91 = load ptr, ptr %4, align 8, !tbaa !5
  %92 = getelementptr inbounds i16, ptr %91, i64 0
  store i16 %90, ptr %92, align 2, !tbaa !17
  %93 = load ptr, ptr %4, align 8, !tbaa !5
  %94 = getelementptr inbounds i16, ptr %93, i64 1
  %95 = load ptr, ptr %14, align 8, !tbaa !5
  %96 = getelementptr inbounds i16, ptr %95, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %94, ptr align 2 %96, i64 126, i1 false)
  store i32 63, ptr %3, align 4, !tbaa !9
  br label %97

97:                                               ; preds = %112, %29
  %98 = load i32, ptr %3, align 4, !tbaa !9
  %99 = icmp sgt i32 %98, 0
  br i1 %99, label %100, label %115

100:                                              ; preds = %97
  %101 = load ptr, ptr %4, align 8, !tbaa !5
  %102 = load i32, ptr %3, align 4, !tbaa !9
  %103 = sext i32 %102 to i64
  %104 = getelementptr inbounds [64 x i32], ptr @_ZN4jpgdL5g_ZAGE, i64 0, i64 %103
  %105 = load i32, ptr %104, align 4, !tbaa !9
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds i16, ptr %101, i64 %106
  %108 = load i16, ptr %107, align 2, !tbaa !17
  %109 = icmp ne i16 %108, 0
  br i1 %109, label %110, label %111

110:                                              ; preds = %100
  br label %115

111:                                              ; preds = %100
  br label %112

112:                                              ; preds = %111
  %113 = load i32, ptr %3, align 4, !tbaa !9
  %114 = add nsw i32 %113, -1
  store i32 %114, ptr %3, align 4, !tbaa !9
  br label %97, !llvm.loop !19

115:                                              ; preds = %110, %97
  %116 = load i32, ptr %3, align 4, !tbaa !9
  %117 = add nsw i32 %116, 1
  %118 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 69
  %119 = load i32, ptr %7, align 4, !tbaa !9
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds [10 x i32], ptr %118, i64 0, i64 %120
  store i32 %117, ptr %121, align 4, !tbaa !9
  br label %122

122:                                              ; preds = %161, %115
  %123 = load i32, ptr %3, align 4, !tbaa !9
  %124 = icmp sge i32 %123, 0
  br i1 %124, label %125, label %164

125:                                              ; preds = %122
  %126 = load ptr, ptr %4, align 8, !tbaa !5
  %127 = load i32, ptr %3, align 4, !tbaa !9
  %128 = sext i32 %127 to i64
  %129 = getelementptr inbounds [64 x i32], ptr @_ZN4jpgdL5g_ZAGE, i64 0, i64 %128
  %130 = load i32, ptr %129, align 4, !tbaa !9
  %131 = sext i32 %130 to i64
  %132 = getelementptr inbounds i16, ptr %126, i64 %131
  %133 = load i16, ptr %132, align 2, !tbaa !17
  %134 = icmp ne i16 %133, 0
  br i1 %134, label %135, label %160

135:                                              ; preds = %125
  %136 = load ptr, ptr %4, align 8, !tbaa !5
  %137 = load i32, ptr %3, align 4, !tbaa !9
  %138 = sext i32 %137 to i64
  %139 = getelementptr inbounds [64 x i32], ptr @_ZN4jpgdL5g_ZAGE, i64 0, i64 %138
  %140 = load i32, ptr %139, align 4, !tbaa !9
  %141 = sext i32 %140 to i64
  %142 = getelementptr inbounds i16, ptr %136, i64 %141
  %143 = load i16, ptr %142, align 2, !tbaa !17
  %144 = sext i16 %143 to i32
  %145 = load ptr, ptr %5, align 8, !tbaa !5
  %146 = load i32, ptr %3, align 4, !tbaa !9
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds i16, ptr %145, i64 %147
  %149 = load i16, ptr %148, align 2, !tbaa !17
  %150 = sext i16 %149 to i32
  %151 = mul nsw i32 %144, %150
  %152 = trunc i32 %151 to i16
  %153 = load ptr, ptr %4, align 8, !tbaa !5
  %154 = load i32, ptr %3, align 4, !tbaa !9
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds [64 x i32], ptr @_ZN4jpgdL5g_ZAGE, i64 0, i64 %155
  %157 = load i32, ptr %156, align 4, !tbaa !9
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds i16, ptr %153, i64 %158
  store i16 %152, ptr %159, align 2, !tbaa !17
  br label %160

160:                                              ; preds = %135, %125
  br label %161

161:                                              ; preds = %160
  %162 = load i32, ptr %3, align 4, !tbaa !9
  %163 = add nsw i32 %162, -1
  store i32 %163, ptr %3, align 4, !tbaa !9
  br label %122, !llvm.loop !21

164:                                              ; preds = %122
  %165 = load i32, ptr %8, align 4, !tbaa !9
  %166 = add nsw i32 %165, 1
  store i32 %166, ptr %8, align 4, !tbaa !9
  %167 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 19
  %168 = load i32, ptr %167, align 8, !tbaa !22
  %169 = icmp eq i32 %168, 1
  br i1 %169, label %170, label %176

170:                                              ; preds = %164
  %171 = load i32, ptr %10, align 4, !tbaa !9
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds [4 x i32], ptr %11, i64 0, i64 %172
  %174 = load i32, ptr %173, align 4, !tbaa !9
  %175 = add nsw i32 %174, 1
  store i32 %175, ptr %173, align 4, !tbaa !9
  br label %207

176:                                              ; preds = %164
  %177 = load i32, ptr %12, align 4, !tbaa !9
  %178 = add nsw i32 %177, 1
  store i32 %178, ptr %12, align 4, !tbaa !9
  %179 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 13
  %180 = load i32, ptr %10, align 4, !tbaa !9
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds [4 x i32], ptr %179, i64 0, i64 %181
  %183 = load i32, ptr %182, align 4, !tbaa !9
  %184 = icmp eq i32 %178, %183
  br i1 %184, label %185, label %206

185:                                              ; preds = %176
  store i32 0, ptr %12, align 4, !tbaa !9
  %186 = load i32, ptr %13, align 4, !tbaa !9
  %187 = add nsw i32 %186, 1
  store i32 %187, ptr %13, align 4, !tbaa !9
  %188 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 14
  %189 = load i32, ptr %10, align 4, !tbaa !9
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds [4 x i32], ptr %188, i64 0, i64 %190
  %192 = load i32, ptr %191, align 4, !tbaa !9
  %193 = icmp eq i32 %187, %192
  br i1 %193, label %194, label %205

194:                                              ; preds = %185
  store i32 0, ptr %13, align 4, !tbaa !9
  %195 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 13
  %196 = load i32, ptr %10, align 4, !tbaa !9
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds [4 x i32], ptr %195, i64 0, i64 %197
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = load i32, ptr %10, align 4, !tbaa !9
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds [4 x i32], ptr %11, i64 0, i64 %201
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = add nsw i32 %203, %199
  store i32 %204, ptr %202, align 4, !tbaa !9
  br label %205

205:                                              ; preds = %194, %185
  br label %206

206:                                              ; preds = %205, %176
  br label %207

207:                                              ; preds = %206, %170
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  br label %208

208:                                              ; preds = %207
  %209 = load i32, ptr %7, align 4, !tbaa !9
  %210 = add nsw i32 %209, 1
  store i32 %210, ptr %7, align 4, !tbaa !9
  br label %24, !llvm.loop !23

211:                                              ; preds = %24
  %212 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 63
  %213 = load i8, ptr %212, align 4, !tbaa !24, !range !25, !noundef !26
  %214 = trunc i8 %213 to i1
  br i1 %214, label %215, label %217

215:                                              ; preds = %211
  %216 = load i32, ptr %6, align 4, !tbaa !9
  call void @_ZN4jpgd12jpeg_decoder20transform_mcu_expandEi(ptr noundef nonnull align 8 dereferenceable(13652) %16, i32 noundef %216)
  br label %219

217:                                              ; preds = %211
  %218 = load i32, ptr %6, align 4, !tbaa !9
  call void @_ZN4jpgd12jpeg_decoder13transform_mcuEi(ptr noundef nonnull align 8 dereferenceable(13652) %16, i32 noundef %218)
  br label %219

219:                                              ; preds = %217, %215
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  br label %220

220:                                              ; preds = %219
  %221 = load i32, ptr %6, align 4, !tbaa !9
  %222 = add nsw i32 %221, 1
  store i32 %222, ptr %6, align 4, !tbaa !9
  br label %18, !llvm.loop !27

223:                                              ; preds = %18
  %224 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 19
  %225 = load i32, ptr %224, align 8, !tbaa !22
  %226 = icmp eq i32 %225, 1
  br i1 %226, label %227, label %236

227:                                              ; preds = %223
  %228 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 43
  %229 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 20
  %230 = getelementptr inbounds [4 x i32], ptr %229, i64 0, i64 0
  %231 = load i32, ptr %230, align 4, !tbaa !9
  %232 = sext i32 %231 to i64
  %233 = getelementptr inbounds [4 x i32], ptr %228, i64 0, i64 %232
  %234 = load i32, ptr %233, align 4, !tbaa !9
  %235 = add nsw i32 %234, 1
  store i32 %235, ptr %233, align 4, !tbaa !9
  br label %263

236:                                              ; preds = %223
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %237

237:                                              ; preds = %259, %236
  %238 = load i32, ptr %9, align 4, !tbaa !9
  %239 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 19
  %240 = load i32, ptr %239, align 8, !tbaa !22
  %241 = icmp slt i32 %238, %240
  br i1 %241, label %242, label %262

242:                                              ; preds = %237
  %243 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 20
  %244 = load i32, ptr %9, align 4, !tbaa !9
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds [4 x i32], ptr %243, i64 0, i64 %245
  %247 = load i32, ptr %246, align 4, !tbaa !9
  store i32 %247, ptr %10, align 4, !tbaa !9
  %248 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 14
  %249 = load i32, ptr %10, align 4, !tbaa !9
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds [4 x i32], ptr %248, i64 0, i64 %250
  %252 = load i32, ptr %251, align 4, !tbaa !9
  %253 = getelementptr inbounds %"class.jpgd::jpeg_decoder", ptr %16, i32 0, i32 43
  %254 = load i32, ptr %10, align 4, !tbaa !9
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds [4 x i32], ptr %253, i64 0, i64 %255
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = add nsw i32 %257, %252
  store i32 %258, ptr %256, align 4, !tbaa !9
  br label %259

259:                                              ; preds = %242
  %260 = load i32, ptr %9, align 4, !tbaa !9
  %261 = add nsw i32 %260, 1
  store i32 %261, ptr %9, align 4, !tbaa !9
  br label %237, !llvm.loop !28

262:                                              ; preds = %237
  br label %263

263:                                              ; preds = %262, %227
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #5
  ret void
}

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = { 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 #5 = { 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 588}
!12 = !{!"_ZTSN4jpgd12jpeg_decoderE", !7, i64 0, !6, i64 200, !10, i64 208, !10, i64 212, !6, i64 216, !10, i64 224, !7, i64 228, !7, i64 240, !7, i64 304, !7, i64 368, !10, i64 400, !10, i64 404, !7, i64 408, !7, i64 424, !7, i64 440, !7, i64 456, !7, i64 472, !7, i64 488, !10, i64 504, !7, i64 508, !7, i64 524, !7, i64 540, !10, i64 556, !10, i64 560, !10, i64 564, !10, i64 568, !10, i64 572, !10, i64 576, !10, i64 580, !10, i64 584, !10, i64 588, !10, i64 592, !7, i64 596, !10, i64 636, !10, i64 640, !10, i64 644, !10, i64 648, !10, i64 652, !7, i64 656, !7, i64 720, !7, i64 752, !10, i64 784, !7, i64 788, !6, i64 808, !10, i64 816, !10, i64 820, !13, i64 824, !7, i64 825, !7, i64 953, !7, i64 9273, !10, i64 9404, !10, i64 9408, !10, i64 9412, !10, i64 9416, !10, i64 9420, !10, i64 9424, !10, i64 9428, !10, i64 9432, !10, i64 9436, !10, i64 9440, !13, i64 9444, !10, i64 9448, !7, i64 9452, !6, i64 9472, !7, i64 9480, !6, i64 9520, !7, i64 9528, !7, i64 10552, !7, i64 11576, !7, i64 12600, !6, i64 13624, !6, i64 13632, !14, i64 13640, !13, i64 13644, !10, i64 13648}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTSN4jpgd11jpgd_statusE", !7, i64 0}
!15 = !{!12, !10, i64 580}
!16 = !{!12, !6, i64 9472}
!17 = !{!18, !18, i64 0}
!18 = !{!"short", !7, i64 0}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = !{!12, !10, i64 504}
!23 = distinct !{!23, !20}
!24 = !{!12, !13, i64 9444}
!25 = !{i8 0, i8 2}
!26 = !{}
!27 = distinct !{!27, !20}
!28 = distinct !{!28, !20}


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

@_ZN4jpgdL5g_ZAGE = external hidden local_unnamed_addr global [64 x i32], align 16

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

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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4jpgd12jpeg_decoder13transform_mcuEi(ptr noundef nonnull align 8 dereferenceable(13652), i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4jpgd12jpeg_decoder20transform_mcu_expandEi(ptr noundef nonnull align 8 dereferenceable(13652), i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4jpgd12jpeg_decoder13load_next_rowEv(ptr noundef nonnull align 8 dereferenceable(13652) %0) local_unnamed_addr #3 align 2 {
  %2 = alloca [4 x i32], align 16
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #5
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %2, i8 0, i64 16, i1 false)
  %3 = getelementptr inbounds i8, ptr %0, i64 588
  %4 = load i32, ptr %3, align 4, !tbaa !5
  %5 = icmp sgt i32 %4, 0
  br i1 %5, label %.preheader66.lr.ph, label %._crit_edge77

.preheader66.lr.ph:                               ; preds = %1
  %6 = getelementptr inbounds i8, ptr %0, i64 580
  %7 = getelementptr inbounds i8, ptr %0, i64 596
  %8 = getelementptr inbounds i8, ptr %0, i64 368
  %9 = getelementptr inbounds i8, ptr %0, i64 440
  %10 = getelementptr inbounds i8, ptr %0, i64 9472
  %11 = getelementptr inbounds i8, ptr %0, i64 752
  %12 = getelementptr inbounds i8, ptr %0, i64 788
  %13 = getelementptr inbounds i8, ptr %0, i64 720
  %14 = getelementptr inbounds i8, ptr %0, i64 9480
  %15 = getelementptr inbounds i8, ptr %0, i64 504
  %16 = getelementptr inbounds i8, ptr %0, i64 408
  %17 = getelementptr inbounds i8, ptr %0, i64 424
  %18 = getelementptr inbounds i8, ptr %0, i64 9444
  br label %.preheader66

.preheader66:                                     ; preds = %.preheader66.lr.ph, %135
  %.05276 = phi i32 [ 0, %.preheader66.lr.ph ], [ %136, %135 ]
  %19 = load i32, ptr %6, align 4, !tbaa !13
  %20 = icmp sgt i32 %19, 0
  br i1 %20, label %.lr.ph73, label %._crit_edge74

.lr.ph73:                                         ; preds = %.preheader66, %127
  %indvars.iv81 = phi i64 [ %indvars.iv.next82, %127 ], [ 0, %.preheader66 ]
  %.05372 = phi i32 [ %.154, %127 ], [ 0, %.preheader66 ]
  %.05571 = phi i32 [ %.156, %127 ], [ 0, %.preheader66 ]
  %21 = getelementptr inbounds [10 x i32], ptr %7, i64 0, i64 %indvars.iv81
  %22 = load i32, ptr %21, align 4, !tbaa !14
  %23 = sext i32 %22 to i64
  %24 = getelementptr inbounds [4 x i32], ptr %9, i64 0, i64 %23
  %25 = load i32, ptr %24, align 4, !tbaa !14
  %26 = sext i32 %25 to i64
  %27 = getelementptr inbounds [4 x ptr], ptr %8, i64 0, i64 %26
  %28 = load ptr, ptr %27, align 8, !tbaa !15
  %29 = load ptr, ptr %10, align 8, !tbaa !16
  %.idx = shl nsw i64 %indvars.iv81, 7
  %30 = getelementptr inbounds i8, ptr %29, i64 %.idx
  %31 = getelementptr inbounds [4 x ptr], ptr %11, i64 0, i64 %23
  %32 = load ptr, ptr %31, align 8, !tbaa !15
  %33 = getelementptr inbounds [4 x i32], ptr %2, i64 0, i64 %23
  %34 = load i32, ptr %33, align 4, !tbaa !14
  %35 = add nsw i32 %34, %.05571
  %36 = getelementptr inbounds [4 x i32], ptr %12, i64 0, i64 %23
  %37 = load i32, ptr %36, align 4, !tbaa !14
  %38 = add nsw i32 %37, %.05372
  %39 = tail call noundef ptr @_ZN4jpgd12jpeg_decoder14coeff_buf_getpEPNS0_9coeff_bufEii(ptr noundef nonnull align 8 dereferenceable(13652) %0, ptr noundef %32, i32 noundef %35, i32 noundef %38)
  %40 = getelementptr inbounds [4 x ptr], ptr %13, i64 0, i64 %23
  %41 = load ptr, ptr %40, align 8, !tbaa !15
  %42 = load i32, ptr %36, align 4, !tbaa !14
  %43 = add nsw i32 %42, %.05372
  %44 = tail call noundef ptr @_ZN4jpgd12jpeg_decoder14coeff_buf_getpEPNS0_9coeff_bufEii(ptr noundef nonnull align 8 dereferenceable(13652) %0, ptr noundef %41, i32 noundef %35, i32 noundef %43)
  %45 = load i16, ptr %44, align 2, !tbaa !17
  store i16 %45, ptr %30, align 2, !tbaa !17
  %46 = getelementptr inbounds i8, ptr %30, i64 2
  %47 = getelementptr inbounds i8, ptr %39, i64 2
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(126) %46, ptr noundef nonnull align 2 dereferenceable(126) %47, i64 126, i1 false)
  br label %48

48:                                               ; preds = %71, %.lr.ph73
  %.067 = phi i32 [ 63, %.lr.ph73 ], [ %72, %71 ]
  %49 = zext nneg i32 %.067 to i64
  %50 = getelementptr inbounds [64 x i32], ptr @_ZN4jpgdL5g_ZAGE, i64 0, i64 %49
  %51 = load i32, ptr %50, align 4, !tbaa !14
  %52 = sext i32 %51 to i64
  %53 = getelementptr inbounds i16, ptr %30, i64 %52
  %54 = load i16, ptr %53, align 2, !tbaa !17
  %.not = icmp eq i16 %54, 0
  br i1 %.not, label %55, label %75

55:                                               ; preds = %48
  %56 = add nsw i32 %.067, -1
  %57 = zext nneg i32 %56 to i64
  %58 = getelementptr inbounds [64 x i32], ptr @_ZN4jpgdL5g_ZAGE, i64 0, i64 %57
  %59 = load i32, ptr %58, align 4, !tbaa !14
  %60 = sext i32 %59 to i64
  %61 = getelementptr inbounds i16, ptr %30, i64 %60
  %62 = load i16, ptr %61, align 2, !tbaa !17
  %.not.1 = icmp eq i16 %62, 0
  br i1 %.not.1, label %63, label %75

63:                                               ; preds = %55
  %64 = add nsw i32 %.067, -2
  %65 = zext nneg i32 %64 to i64
  %66 = getelementptr inbounds [64 x i32], ptr @_ZN4jpgdL5g_ZAGE, i64 0, i64 %65
  %67 = load i32, ptr %66, align 4, !tbaa !14
  %68 = sext i32 %67 to i64
  %69 = getelementptr inbounds i16, ptr %30, i64 %68
  %70 = load i16, ptr %69, align 2, !tbaa !17
  %.not.2 = icmp eq i16 %70, 0
  br i1 %.not.2, label %71, label %75

71:                                               ; preds = %63
  %72 = add nsw i32 %.067, -3
  %73 = icmp ugt i32 %64, 1
  br i1 %73, label %48, label %.thread, !llvm.loop !19

.thread:                                          ; preds = %71
  %74 = getelementptr inbounds [10 x i32], ptr %14, i64 0, i64 %indvars.iv81
  store i32 1, ptr %74, align 4, !tbaa !14
  br label %.lr.ph.preheader

75:                                               ; preds = %63, %55, %48
  %.067.lcssa = phi i32 [ %.067, %48 ], [ %56, %55 ], [ %64, %63 ]
  %76 = add nuw nsw i32 %.067.lcssa, 1
  %77 = getelementptr inbounds [10 x i32], ptr %14, i64 0, i64 %indvars.iv81
  store i32 %76, ptr %77, align 4, !tbaa !14
  %78 = icmp sgt i32 %.067.lcssa, -1
  br i1 %78, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.thread, %75
  %.0.lcssa88 = phi i32 [ 0, %.thread ], [ %.067.lcssa, %75 ]
  %79 = zext nneg i32 %.0.lcssa88 to i64
  %80 = and i64 %79, 1
  %lcmp.mod.not.not = icmp eq i64 %80, 0
  br i1 %lcmp.mod.not.not, label %.lr.ph.prol, label %.lr.ph.prol.loopexit

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader
  %81 = getelementptr inbounds [64 x i32], ptr @_ZN4jpgdL5g_ZAGE, i64 0, i64 %79
  %82 = load i32, ptr %81, align 4, !tbaa !14
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds i16, ptr %30, i64 %83
  %85 = load i16, ptr %84, align 2, !tbaa !17
  %.not65.prol = icmp eq i16 %85, 0
  br i1 %.not65.prol, label %.lr.ph.prol.loopexit.unr-lcssa, label %86

86:                                               ; preds = %.lr.ph.prol
  %87 = getelementptr inbounds i16, ptr %28, i64 %79
  %88 = load i16, ptr %87, align 2, !tbaa !17
  %89 = mul i16 %88, %85
  store i16 %89, ptr %84, align 2, !tbaa !17
  br label %.lr.ph.prol.loopexit.unr-lcssa

.lr.ph.prol.loopexit.unr-lcssa:                   ; preds = %86, %.lr.ph.prol
  %indvars.iv.next.prol = add nsw i64 %79, -1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol.loopexit.unr-lcssa, %.lr.ph.preheader
  %indvars.iv.unr = phi i64 [ %79, %.lr.ph.preheader ], [ %indvars.iv.next.prol, %.lr.ph.prol.loopexit.unr-lcssa ]
  %90 = icmp eq i32 %.0.lcssa88, 0
  br i1 %90, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %109
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %109 ], [ %indvars.iv.unr, %.lr.ph.prol.loopexit ]
  %91 = getelementptr inbounds [64 x i32], ptr @_ZN4jpgdL5g_ZAGE, i64 0, i64 %indvars.iv
  %92 = load i32, ptr %91, align 4, !tbaa !14
  %93 = sext i32 %92 to i64
  %94 = getelementptr inbounds i16, ptr %30, i64 %93
  %95 = load i16, ptr %94, align 2, !tbaa !17
  %.not65 = icmp eq i16 %95, 0
  br i1 %.not65, label %.lr.ph.1, label %96

96:                                               ; preds = %.lr.ph
  %97 = getelementptr inbounds i16, ptr %28, i64 %indvars.iv
  %98 = load i16, ptr %97, align 2, !tbaa !17
  %99 = mul i16 %98, %95
  store i16 %99, ptr %94, align 2, !tbaa !17
  br label %.lr.ph.1

.lr.ph.1:                                         ; preds = %.lr.ph, %96
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %100 = getelementptr inbounds [64 x i32], ptr @_ZN4jpgdL5g_ZAGE, i64 0, i64 %indvars.iv.next
  %101 = load i32, ptr %100, align 4, !tbaa !14
  %102 = sext i32 %101 to i64
  %103 = getelementptr inbounds i16, ptr %30, i64 %102
  %104 = load i16, ptr %103, align 2, !tbaa !17
  %.not65.1 = icmp eq i16 %104, 0
  br i1 %.not65.1, label %109, label %105

105:                                              ; preds = %.lr.ph.1
  %106 = getelementptr inbounds i16, ptr %28, i64 %indvars.iv.next
  %107 = load i16, ptr %106, align 2, !tbaa !17
  %108 = mul i16 %107, %104
  store i16 %108, ptr %103, align 2, !tbaa !17
  br label %109

109:                                              ; preds = %105, %.lr.ph.1
  %indvars.iv.next.1 = add nsw i64 %indvars.iv, -2
  %110 = icmp sgt i64 %indvars.iv, 1
  br i1 %110, label %.lr.ph, label %._crit_edge, !llvm.loop !21

._crit_edge:                                      ; preds = %.lr.ph.prol.loopexit, %109, %75
  %111 = load i32, ptr %15, align 8, !tbaa !22
  %112 = icmp eq i32 %111, 1
  br i1 %112, label %113, label %115

113:                                              ; preds = %._crit_edge
  %114 = add nsw i32 %34, 1
  br label %.sink.split

115:                                              ; preds = %._crit_edge
  %116 = add nsw i32 %.05571, 1
  %117 = getelementptr inbounds [4 x i32], ptr %16, i64 0, i64 %23
  %118 = load i32, ptr %117, align 4, !tbaa !14
  %119 = icmp eq i32 %116, %118
  br i1 %119, label %120, label %127

120:                                              ; preds = %115
  %121 = add nsw i32 %.05372, 1
  %122 = getelementptr inbounds [4 x i32], ptr %17, i64 0, i64 %23
  %123 = load i32, ptr %122, align 4, !tbaa !14
  %124 = icmp eq i32 %121, %123
  br i1 %124, label %125, label %127

125:                                              ; preds = %120
  %126 = add nsw i32 %116, %34
  br label %.sink.split

.sink.split:                                      ; preds = %113, %125
  %.sink = phi i32 [ %126, %125 ], [ %114, %113 ]
  %.156.ph = phi i32 [ 0, %125 ], [ %.05571, %113 ]
  %.154.ph = phi i32 [ 0, %125 ], [ %.05372, %113 ]
  store i32 %.sink, ptr %33, align 4, !tbaa !14
  br label %127

127:                                              ; preds = %.sink.split, %115, %120
  %.156 = phi i32 [ 0, %120 ], [ %116, %115 ], [ %.156.ph, %.sink.split ]
  %.154 = phi i32 [ %121, %120 ], [ %.05372, %115 ], [ %.154.ph, %.sink.split ]
  %indvars.iv.next82 = add nuw nsw i64 %indvars.iv81, 1
  %128 = load i32, ptr %6, align 4, !tbaa !13
  %129 = sext i32 %128 to i64
  %130 = icmp slt i64 %indvars.iv.next82, %129
  br i1 %130, label %.lr.ph73, label %._crit_edge74, !llvm.loop !23

._crit_edge74:                                    ; preds = %127, %.preheader66
  %131 = load i8, ptr %18, align 4, !tbaa !24, !range !25, !noundef !26
  %132 = trunc nuw i8 %131 to i1
  br i1 %132, label %133, label %134

133:                                              ; preds = %._crit_edge74
  tail call void @_ZN4jpgd12jpeg_decoder20transform_mcu_expandEi(ptr noundef nonnull align 8 dereferenceable(13652) %0, i32 noundef %.05276)
  br label %135

134:                                              ; preds = %._crit_edge74
  tail call void @_ZN4jpgd12jpeg_decoder13transform_mcuEi(ptr noundef nonnull align 8 dereferenceable(13652) %0, i32 noundef %.05276)
  br label %135

135:                                              ; preds = %134, %133
  %136 = add nuw nsw i32 %.05276, 1
  %137 = load i32, ptr %3, align 4, !tbaa !5
  %138 = icmp slt i32 %136, %137
  br i1 %138, label %.preheader66, label %._crit_edge77, !llvm.loop !27

._crit_edge77:                                    ; preds = %135, %1
  %139 = getelementptr inbounds i8, ptr %0, i64 504
  %140 = load i32, ptr %139, align 8, !tbaa !22
  %141 = icmp eq i32 %140, 1
  br i1 %141, label %146, label %.preheader

.preheader:                                       ; preds = %._crit_edge77
  %142 = icmp sgt i32 %140, 0
  br i1 %142, label %.lr.ph79, label %.loopexit

.lr.ph79:                                         ; preds = %.preheader
  %143 = getelementptr inbounds i8, ptr %0, i64 508
  %144 = getelementptr inbounds i8, ptr %0, i64 424
  %145 = getelementptr inbounds i8, ptr %0, i64 788
  br label %154

146:                                              ; preds = %._crit_edge77
  %147 = getelementptr inbounds i8, ptr %0, i64 788
  %148 = getelementptr inbounds i8, ptr %0, i64 508
  %149 = load i32, ptr %148, align 4, !tbaa !14
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds [4 x i32], ptr %147, i64 0, i64 %150
  %152 = load i32, ptr %151, align 4, !tbaa !14
  %153 = add nsw i32 %152, 1
  store i32 %153, ptr %151, align 4, !tbaa !14
  br label %.loopexit

154:                                              ; preds = %.lr.ph79, %154
  %indvars.iv84 = phi i64 [ 0, %.lr.ph79 ], [ %indvars.iv.next85, %154 ]
  %155 = getelementptr inbounds [4 x i32], ptr %143, i64 0, i64 %indvars.iv84
  %156 = load i32, ptr %155, align 4, !tbaa !14
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds [4 x i32], ptr %144, i64 0, i64 %157
  %159 = load i32, ptr %158, align 4, !tbaa !14
  %160 = getelementptr inbounds [4 x i32], ptr %145, i64 0, i64 %157
  %161 = load i32, ptr %160, align 4, !tbaa !14
  %162 = add nsw i32 %161, %159
  store i32 %162, ptr %160, align 4, !tbaa !14
  %indvars.iv.next85 = add nuw nsw i64 %indvars.iv84, 1
  %163 = load i32, ptr %139, align 8, !tbaa !22
  %164 = sext i32 %163 to i64
  %165 = icmp slt i64 %indvars.iv.next85, %164
  br i1 %165, label %154, label %.loopexit, !llvm.loop !28

.loopexit:                                        ; preds = %154, %.preheader, %146
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #5
  ret void
}

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = { 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 #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 588}
!6 = !{!"_ZTSN4jpgd12jpeg_decoderE", !7, i64 0, !9, i64 200, !10, i64 208, !10, i64 212, !9, i64 216, !10, i64 224, !7, i64 228, !7, i64 240, !7, i64 304, !7, i64 368, !10, i64 400, !10, i64 404, !7, i64 408, !7, i64 424, !7, i64 440, !7, i64 456, !7, i64 472, !7, i64 488, !10, i64 504, !7, i64 508, !7, i64 524, !7, i64 540, !10, i64 556, !10, i64 560, !10, i64 564, !10, i64 568, !10, i64 572, !10, i64 576, !10, i64 580, !10, i64 584, !10, i64 588, !10, i64 592, !7, i64 596, !10, i64 636, !10, i64 640, !10, i64 644, !10, i64 648, !10, i64 652, !7, i64 656, !7, i64 720, !7, i64 752, !10, i64 784, !7, i64 788, !9, i64 808, !10, i64 816, !10, i64 820, !11, i64 824, !7, i64 825, !7, i64 953, !7, i64 9273, !10, i64 9404, !10, i64 9408, !10, i64 9412, !10, i64 9416, !10, i64 9420, !10, i64 9424, !10, i64 9428, !10, i64 9432, !10, i64 9436, !10, i64 9440, !11, i64 9444, !10, i64 9448, !7, i64 9452, !9, i64 9472, !7, i64 9480, !9, i64 9520, !7, i64 9528, !7, i64 10552, !7, i64 11576, !7, i64 12600, !9, i64 13624, !9, i64 13632, !12, i64 13640, !11, i64 13644, !10, i64 13648}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!"any pointer", !7, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTSN4jpgd11jpgd_statusE", !7, i64 0}
!13 = !{!6, !10, i64 580}
!14 = !{!10, !10, i64 0}
!15 = !{!9, !9, i64 0}
!16 = !{!6, !9, i64 9472}
!17 = !{!18, !18, i64 0}
!18 = !{!"short", !7, i64 0}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = !{!6, !10, i64 504}
!23 = distinct !{!23, !20}
!24 = !{!6, !11, i64 9444}
!25 = !{i8 0, i8 2}
!26 = !{}
!27 = distinct !{!27, !20}
!28 = distinct !{!28, !20}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass