; LLVM IR from mkazhdan/DMG :: Util/TIFF (tif_dirread)

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

%struct.tiff = type { ptr, i32, i32, i32, i32, i32, ptr, i16, %struct.TIFFDirectory, %struct.TIFFHeader, ptr, ptr, i32, i16, i32, i32, i32, i16, i32, i32, i32, i32, i32, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, i32, ptr, i32, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i64, ptr, %struct.TIFFTagMethods, ptr }
%struct.TIFFDirectory = type { [4 x i64], i32, i32, i32, i32, i32, i32, i32, i16, i16, i16, i16, i16, i16, i16, i16, i32, i16, i16, double, double, float, float, i16, i16, float, float, [2 x i16], [3 x ptr], [2 x i16], i16, ptr, i32, i32, ptr, ptr, i32, i16, ptr, [2 x i16], i16, [3 x ptr], i32, ptr, i32, ptr }
%struct.TIFFHeader = type { i16, i16, i32 }
%struct.TIFFTagMethods = type { ptr, ptr, ptr }
%struct.TIFFDirEntry = type { i16, i16, i32, i32 }
%struct.TIFFFieldInfo = type { i32, i16, i16, i32, i16, i8, i8, ptr }

@TIFFReadDirectory.module = external hidden constant [18 x i8], align 16
@.str = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [34 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @TIFFReadDirectory(ptr noundef %0) #0 {
  %2 = alloca i32, align 4
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i16, align 2
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i64, align 8
  %12 = alloca i16, align 2
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca double, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #3
  store ptr null, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %8) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 2, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  store i32 0, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #3
  %23 = load ptr, ptr %3, align 8, !tbaa !5
  %24 = getelementptr inbounds %struct.tiff, ptr %23, i32 0, i32 5
  %25 = load i32, ptr %24, align 8, !tbaa !11
  %26 = load ptr, ptr %3, align 8, !tbaa !5
  %27 = getelementptr inbounds %struct.tiff, ptr %26, i32 0, i32 4
  store i32 %25, ptr %27, align 4, !tbaa !20
  %28 = load ptr, ptr %3, align 8, !tbaa !5
  %29 = getelementptr inbounds %struct.tiff, ptr %28, i32 0, i32 4
  %30 = load i32, ptr %29, align 4, !tbaa !20
  %31 = icmp eq i32 %30, 0
  br i1 %31, label %32, label %33

32:                                               ; preds = %1
  store i32 0, ptr %2, align 4
  store i32 1, ptr %16, align 4
  br label %1613

33:                                               ; preds = %1
  store i32 0, ptr %4, align 4, !tbaa !9
  br label %34

34:                                               ; preds = %55, %33
  %35 = load i32, ptr %4, align 4, !tbaa !9
  %36 = load ptr, ptr %3, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.tiff, ptr %36, i32 0, i32 7
  %38 = load i16, ptr %37, align 8, !tbaa !21
  %39 = zext i16 %38 to i32
  %40 = icmp slt i32 %35, %39
  br i1 %40, label %41, label %58

41:                                               ; preds = %34
  %42 = load ptr, ptr %3, align 8, !tbaa !5
  %43 = getelementptr inbounds %struct.tiff, ptr %42, i32 0, i32 6
  %44 = load ptr, ptr %43, align 8, !tbaa !22
  %45 = load i32, ptr %4, align 4, !tbaa !9
  %46 = sext i32 %45 to i64
  %47 = getelementptr inbounds i32, ptr %44, i64 %46
  %48 = load i32, ptr %47, align 4, !tbaa !9
  %49 = load ptr, ptr %3, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.tiff, ptr %49, i32 0, i32 4
  %51 = load i32, ptr %50, align 4, !tbaa !20
  %52 = icmp eq i32 %48, %51
  br i1 %52, label %53, label %54

53:                                               ; preds = %41
  store i32 0, ptr %2, align 4
  store i32 1, ptr %16, align 4
  br label %1613

54:                                               ; preds = %41
  br label %55

55:                                               ; preds = %54
  %56 = load i32, ptr %4, align 4, !tbaa !9
  %57 = add nsw i32 %56, 1
  store i32 %57, ptr %4, align 4, !tbaa !9
  br label %34, !llvm.loop !23

58:                                               ; preds = %34
  %59 = load ptr, ptr %3, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.tiff, ptr %59, i32 0, i32 7
  %61 = load i16, ptr %60, align 8, !tbaa !21
  %62 = add i16 %61, 1
  store i16 %62, ptr %60, align 8, !tbaa !21
  %63 = load ptr, ptr %3, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.tiff, ptr %63, i32 0, i32 6
  %65 = load ptr, ptr %64, align 8, !tbaa !22
  %66 = load ptr, ptr %3, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.tiff, ptr %66, i32 0, i32 7
  %68 = load i16, ptr %67, align 8, !tbaa !21
  %69 = zext i16 %68 to i64
  %70 = mul i64 %69, 4
  %71 = trunc i64 %70 to i32
  %72 = call ptr @_TIFFrealloc(ptr noundef %65, i32 noundef %71)
  store ptr %72, ptr %15, align 8, !tbaa !5
  %73 = load ptr, ptr %15, align 8, !tbaa !5
  %74 = icmp ne ptr %73, null
  br i1 %74, label %82, label %75

75:                                               ; preds = %58
  %76 = load ptr, ptr %3, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.tiff, ptr %76, i32 0, i32 51
  %78 = load ptr, ptr %77, align 8, !tbaa !25
  %79 = load ptr, ptr %3, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.tiff, ptr %79, i32 0, i32 0
  %81 = load ptr, ptr %80, align 8, !tbaa !26
  call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %78, ptr noundef @TIFFReadDirectory.module, ptr noundef @.str, ptr noundef %81)
  store i32 0, ptr %2, align 4
  store i32 1, ptr %16, align 4
  br label %1613

82:                                               ; preds = %58
  %83 = load ptr, ptr %15, align 8, !tbaa !5
  %84 = load ptr, ptr %3, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.tiff, ptr %84, i32 0, i32 6
  store ptr %83, ptr %85, align 8, !tbaa !22
  %86 = load ptr, ptr %3, align 8, !tbaa !5
  %87 = getelementptr inbounds %struct.tiff, ptr %86, i32 0, i32 4
  %88 = load i32, ptr %87, align 4, !tbaa !20
  %89 = load ptr, ptr %3, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.tiff, ptr %89, i32 0, i32 6
  %91 = load ptr, ptr %90, align 8, !tbaa !22
  %92 = load ptr, ptr %3, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.tiff, ptr %92, i32 0, i32 7
  %94 = load i16, ptr %93, align 8, !tbaa !21
  %95 = zext i16 %94 to i32
  %96 = sub nsw i32 %95, 1
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds i32, ptr %91, i64 %97
  store i32 %88, ptr %98, align 4, !tbaa !9
  %99 = load ptr, ptr %3, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct.tiff, ptr %99, i32 0, i32 37
  %101 = load ptr, ptr %100, align 8, !tbaa !27
  %102 = load ptr, ptr %3, align 8, !tbaa !5
  call void %101(ptr noundef %102)
  %103 = load ptr, ptr %3, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.tiff, ptr %103, i32 0, i32 13
  %105 = load i16, ptr %104, align 4, !tbaa !28
  %106 = add i16 %105, 1
  store i16 %106, ptr %104, align 4, !tbaa !28
  store i32 0, ptr %13, align 4, !tbaa !9
  %107 = load ptr, ptr %3, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.tiff, ptr %107, i32 0, i32 3
  %109 = load i32, ptr %108, align 8, !tbaa !29
  %110 = and i32 %109, 2048
  %111 = icmp ne i32 %110, 0
  br i1 %111, label %200, label %112

112:                                              ; preds = %82
  %113 = load ptr, ptr %3, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.tiff, ptr %113, i32 0, i32 54
  %115 = load ptr, ptr %114, align 8, !tbaa !30
  %116 = load ptr, ptr %3, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.tiff, ptr %116, i32 0, i32 51
  %118 = load ptr, ptr %117, align 8, !tbaa !25
  %119 = load ptr, ptr %3, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.tiff, ptr %119, i32 0, i32 4
  %121 = load i32, ptr %120, align 4, !tbaa !20
  %122 = call i32 %115(ptr noundef %118, i32 noundef %121, i32 noundef 0)
  %123 = load ptr, ptr %3, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.tiff, ptr %123, i32 0, i32 4
  %125 = load i32, ptr %124, align 4, !tbaa !20
  %126 = icmp eq i32 %122, %125
  br i1 %126, label %134, label %127

127:                                              ; preds = %112
  %128 = load ptr, ptr %3, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.tiff, ptr %128, i32 0, i32 51
  %130 = load ptr, ptr %129, align 8, !tbaa !25
  %131 = load ptr, ptr %3, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.tiff, ptr %131, i32 0, i32 0
  %133 = load ptr, ptr %132, align 8, !tbaa !26
  call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %130, ptr noundef @TIFFReadDirectory.module, ptr noundef @.str.1, ptr noundef %133)
  store i32 0, ptr %2, align 4
  store i32 1, ptr %16, align 4
  br label %1613

134:                                              ; preds = %112
  %135 = load ptr, ptr %3, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.tiff, ptr %135, i32 0, i32 52
  %137 = load ptr, ptr %136, align 8, !tbaa !31
  %138 = load ptr, ptr %3, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.tiff, ptr %138, i32 0, i32 51
  %140 = load ptr, ptr %139, align 8, !tbaa !25
  %141 = call i32 %137(ptr noundef %140, ptr noundef %12, i32 noundef 2)
  %142 = icmp eq i32 %141, 2
  br i1 %142, label %150, label %143

143:                                              ; preds = %134
  %144 = load ptr, ptr %3, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.tiff, ptr %144, i32 0, i32 51
  %146 = load ptr, ptr %145, align 8, !tbaa !25
  %147 = load ptr, ptr %3, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.tiff, ptr %147, i32 0, i32 0
  %149 = load ptr, ptr %148, align 8, !tbaa !26
  call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %146, ptr noundef @TIFFReadDirectory.module, ptr noundef @.str.2, ptr noundef %149)
  store i32 0, ptr %2, align 4
  store i32 1, ptr %16, align 4
  br label %1613

150:                                              ; preds = %134
  %151 = load ptr, ptr %3, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.tiff, ptr %151, i32 0, i32 3
  %153 = load i32, ptr %152, align 8, !tbaa !29
  %154 = and i32 %153, 128
  %155 = icmp ne i32 %154, 0
  br i1 %155, label %156, label %157

156:                                              ; preds = %150
  call void @TIFFSwabShort(ptr noundef %12)
  br label %157

157:                                              ; preds = %156, %150
  %158 = load ptr, ptr %3, align 8, !tbaa !5
  %159 = load i16, ptr %12, align 2, !tbaa !32
  %160 = zext i16 %159 to i64
  %161 = call ptr @_TIFFCheckMalloc(ptr noundef %158, i64 noundef %160, i64 noundef 12, ptr noundef @.str.3)
  store ptr %161, ptr %7, align 8, !tbaa !5
  %162 = load ptr, ptr %7, align 8, !tbaa !5
  %163 = icmp eq ptr %162, null
  br i1 %163, label %164, label %165

164:                                              ; preds = %157
  store i32 0, ptr %2, align 4
  store i32 1, ptr %16, align 4
  br label %1613

165:                                              ; preds = %157
  %166 = load ptr, ptr %3, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.tiff, ptr %166, i32 0, i32 52
  %168 = load ptr, ptr %167, align 8, !tbaa !31
  %169 = load ptr, ptr %3, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.tiff, ptr %169, i32 0, i32 51
  %171 = load ptr, ptr %170, align 8, !tbaa !25
  %172 = load ptr, ptr %7, align 8, !tbaa !5
  %173 = load i16, ptr %12, align 2, !tbaa !32
  %174 = zext i16 %173 to i64
  %175 = mul i64 %174, 12
  %176 = trunc i64 %175 to i32
  %177 = call i32 %168(ptr noundef %171, ptr noundef %172, i32 noundef %176)
  %178 = load i16, ptr %12, align 2, !tbaa !32
  %179 = zext i16 %178 to i64
  %180 = mul i64 %179, 12
  %181 = trunc i64 %180 to i32
  %182 = icmp eq i32 %177, %181
  br i1 %182, label %190, label %183

183:                                              ; preds = %165
  %184 = load ptr, ptr %3, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.tiff, ptr %184, i32 0, i32 51
  %186 = load ptr, ptr %185, align 8, !tbaa !25
  %187 = load ptr, ptr %3, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.tiff, ptr %187, i32 0, i32 0
  %189 = load ptr, ptr %188, align 8, !tbaa !26
  call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %186, ptr noundef @TIFFReadDirectory.module, ptr noundef @.str.4, ptr noundef %189)
  br label %1607

190:                                              ; preds = %165
  %191 = load ptr, ptr %3, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.tiff, ptr %191, i32 0, i32 52
  %193 = load ptr, ptr %192, align 8, !tbaa !31
  %194 = load ptr, ptr %3, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.tiff, ptr %194, i32 0, i32 51
  %196 = load ptr, ptr %195, align 8, !tbaa !25
  %197 = call i32 %193(ptr noundef %196, ptr noundef %13, i32 noundef 4)
  %198 = icmp eq i32 %197, 4
  %199 = zext i1 %198 to i32
  br label %303

200:                                              ; preds = %82
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  %201 = load ptr, ptr %3, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.tiff, ptr %201, i32 0, i32 4
  %203 = load i32, ptr %202, align 4, !tbaa !20
  store i32 %203, ptr %17, align 4, !tbaa !9
  %204 = load i32, ptr %17, align 4, !tbaa !9
  %205 = zext i32 %204 to i64
  %206 = add i64 %205, 2
  %207 = load ptr, ptr %3, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.tiff, ptr %207, i32 0, i32 48
  %209 = load i32, ptr %208, align 8, !tbaa !33
  %210 = zext i32 %209 to i64
  %211 = icmp ugt i64 %206, %210
  br i1 %211, label %212, label %219

212:                                              ; preds = %200
  %213 = load ptr, ptr %3, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.tiff, ptr %213, i32 0, i32 51
  %215 = load ptr, ptr %214, align 8, !tbaa !25
  %216 = load ptr, ptr %3, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.tiff, ptr %216, i32 0, i32 0
  %218 = load ptr, ptr %217, align 8, !tbaa !26
  call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %215, ptr noundef @TIFFReadDirectory.module, ptr noundef @.str.2, ptr noundef %218)
  store i32 0, ptr %2, align 4
  store i32 1, ptr %16, align 4
  br label %300

219:                                              ; preds = %200
  %220 = load ptr, ptr %3, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.tiff, ptr %220, i32 0, i32 47
  %222 = load ptr, ptr %221, align 8, !tbaa !34
  %223 = load i32, ptr %17, align 4, !tbaa !9
  %224 = zext i32 %223 to i64
  %225 = getelementptr inbounds i8, ptr %222, i64 %224
  call void @_TIFFmemcpy(ptr noundef %12, ptr noundef %225, i32 noundef 2)
  br label %226

226:                                              ; preds = %219
  %227 = load i32, ptr %17, align 4, !tbaa !9
  %228 = zext i32 %227 to i64
  %229 = add i64 %228, 2
  %230 = trunc i64 %229 to i32
  store i32 %230, ptr %17, align 4, !tbaa !9
  %231 = load ptr, ptr %3, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.tiff, ptr %231, i32 0, i32 3
  %233 = load i32, ptr %232, align 8, !tbaa !29
  %234 = and i32 %233, 128
  %235 = icmp ne i32 %234, 0
  br i1 %235, label %236, label %237

236:                                              ; preds = %226
  call void @TIFFSwabShort(ptr noundef %12)
  br label %237

237:                                              ; preds = %236, %226
  %238 = load ptr, ptr %3, align 8, !tbaa !5
  %239 = load i16, ptr %12, align 2, !tbaa !32
  %240 = zext i16 %239 to i64
  %241 = call ptr @_TIFFCheckMalloc(ptr noundef %238, i64 noundef %240, i64 noundef 12, ptr noundef @.str.3)
  store ptr %241, ptr %7, align 8, !tbaa !5
  %242 = load ptr, ptr %7, align 8, !tbaa !5
  %243 = icmp eq ptr %242, null
  br i1 %243, label %244, label %245

244:                                              ; preds = %237
  store i32 0, ptr %2, align 4
  store i32 1, ptr %16, align 4
  br label %300

245:                                              ; preds = %237
  %246 = load i32, ptr %17, align 4, !tbaa !9
  %247 = zext i32 %246 to i64
  %248 = load i16, ptr %12, align 2, !tbaa !32
  %249 = zext i16 %248 to i64
  %250 = mul i64 %249, 12
  %251 = add i64 %247, %250
  %252 = load ptr, ptr %3, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.tiff, ptr %252, i32 0, i32 48
  %254 = load i32, ptr %253, align 8, !tbaa !33
  %255 = zext i32 %254 to i64
  %256 = icmp ugt i64 %251, %255
  br i1 %256, label %257, label %264

257:                                              ; preds = %245
  %258 = load ptr, ptr %3, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.tiff, ptr %258, i32 0, i32 51
  %260 = load ptr, ptr %259, align 8, !tbaa !25
  %261 = load ptr, ptr %3, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.tiff, ptr %261, i32 0, i32 0
  %263 = load ptr, ptr %262, align 8, !tbaa !26
  call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %260, ptr noundef @TIFFReadDirectory.module, ptr noundef @.str.5, ptr noundef %263)
  store i32 5, ptr %16, align 4
  br label %300

264:                                              ; preds = %245
  %265 = load ptr, ptr %7, align 8, !tbaa !5
  %266 = load ptr, ptr %3, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.tiff, ptr %266, i32 0, i32 47
  %268 = load ptr, ptr %267, align 8, !tbaa !34
  %269 = load i32, ptr %17, align 4, !tbaa !9
  %270 = zext i32 %269 to i64
  %271 = getelementptr inbounds i8, ptr %268, i64 %270
  %272 = load i16, ptr %12, align 2, !tbaa !32
  %273 = zext i16 %272 to i64
  %274 = mul i64 %273, 12
  %275 = trunc i64 %274 to i32
  call void @_TIFFmemcpy(ptr noundef %265, ptr noundef %271, i32 noundef %275)
  br label %276

276:                                              ; preds = %264
  %277 = load i16, ptr %12, align 2, !tbaa !32
  %278 = zext i16 %277 to i64
  %279 = mul i64 %278, 12
  %280 = load i32, ptr %17, align 4, !tbaa !9
  %281 = zext i32 %280 to i64
  %282 = add i64 %281, %279
  %283 = trunc i64 %282 to i32
  store i32 %283, ptr %17, align 4, !tbaa !9
  %284 = load i32, ptr %17, align 4, !tbaa !9
  %285 = zext i32 %284 to i64
  %286 = add i64 %285, 4
  %287 = load ptr, ptr %3, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.tiff, ptr %287, i32 0, i32 48
  %289 = load i32, ptr %288, align 8, !tbaa !33
  %290 = zext i32 %289 to i64
  %291 = icmp ule i64 %286, %290
  br i1 %291, label %292, label %299

292:                                              ; preds = %276
  %293 = load ptr, ptr %3, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.tiff, ptr %293, i32 0, i32 47
  %295 = load ptr, ptr %294, align 8, !tbaa !34
  %296 = load i32, ptr %17, align 4, !tbaa !9
  %297 = zext i32 %296 to i64
  %298 = getelementptr inbounds i8, ptr %295, i64 %297
  call void @_TIFFmemcpy(ptr noundef %13, ptr noundef %298, i32 noundef 4)
  br label %299

299:                                              ; preds = %292, %276
  store i32 0, ptr %16, align 4
  br label %300

300:                                              ; preds = %299, %257, %244, %212
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  %301 = load i32, ptr %16, align 4
  switch i32 %301, label %1613 [
    i32 0, label %302
    i32 5, label %1607
  ]

302:                                              ; preds = %300
  br label %303

303:                                              ; preds = %302, %190
  %304 = load ptr, ptr %3, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.tiff, ptr %304, i32 0, i32 3
  %306 = load i32, ptr %305, align 8, !tbaa !29
  %307 = and i32 %306, 128
  %308 = icmp ne i32 %307, 0
  br i1 %308, label %309, label %310

309:                                              ; preds = %303
  call void @TIFFSwabLong(ptr noundef %13)
  br label %310

310:                                              ; preds = %309, %303
  %311 = load i32, ptr %13, align 4, !tbaa !9
  %312 = load ptr, ptr %3, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.tiff, ptr %312, i32 0, i32 5
  store i32 %311, ptr %313, align 8, !tbaa !11
  %314 = load ptr, ptr %3, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.tiff, ptr %314, i32 0, i32 3
  %316 = load i32, ptr %315, align 8, !tbaa !29
  %317 = and i32 %316, -65
  store i32 %317, ptr %315, align 8, !tbaa !29
  %318 = load ptr, ptr %3, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.tiff, ptr %318, i32 0, i32 8
  store ptr %319, ptr %5, align 8, !tbaa !5
  %320 = load ptr, ptr %3, align 8, !tbaa !5
  call void @TIFFFreeDirectory(ptr noundef %320)
  %321 = load ptr, ptr %3, align 8, !tbaa !5
  %322 = call i32 @TIFFDefaultDirectory(ptr noundef %321)
  %323 = load ptr, ptr %3, align 8, !tbaa !5
  %324 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef %323, i32 noundef 284, i32 noundef 1)
  %325 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %325, ptr %6, align 8, !tbaa !5
  %326 = load i16, ptr %12, align 2, !tbaa !32
  %327 = zext i16 %326 to i32
  store i32 %327, ptr %4, align 4, !tbaa !9
  br label %328

328:                                              ; preds = %358, %310
  %329 = load i32, ptr %4, align 4, !tbaa !9
  %330 = icmp sgt i32 %329, 0
  br i1 %330, label %331, label %363

331:                                              ; preds = %328
  %332 = load ptr, ptr %3, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.tiff, ptr %332, i32 0, i32 3
  %334 = load i32, ptr %333, align 8, !tbaa !29
  %335 = and i32 %334, 128
  %336 = icmp ne i32 %335, 0
  br i1 %336, label %337, label %342

337:                                              ; preds = %331
  %338 = load ptr, ptr %6, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.TIFFDirEntry, ptr %338, i32 0, i32 0
  call void @TIFFSwabArrayOfShort(ptr noundef %339, i64 noundef 2)
  %340 = load ptr, ptr %6, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.TIFFDirEntry, ptr %340, i32 0, i32 2
  call void @TIFFSwabArrayOfLong(ptr noundef %341, i64 noundef 2)
  br label %342

342:                                              ; preds = %337, %331
  %343 = load ptr, ptr %6, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.TIFFDirEntry, ptr %343, i32 0, i32 0
  %345 = load i16, ptr %344, align 4, !tbaa !35
  %346 = zext i16 %345 to i32
  %347 = icmp eq i32 %346, 277
  br i1 %347, label %348, label %357

348:                                              ; preds = %342
  %349 = load ptr, ptr %3, align 8, !tbaa !5
  %350 = load ptr, ptr %6, align 8, !tbaa !5
  %351 = call i32 @TIFFFetchNormalTag(ptr noundef %349, ptr noundef %350)
  %352 = icmp ne i32 %351, 0
  br i1 %352, label %354, label %353

353:                                              ; preds = %348
  br label %1607

354:                                              ; preds = %348
  %355 = load ptr, ptr %6, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.TIFFDirEntry, ptr %355, i32 0, i32 0
  store i16 0, ptr %356, align 4, !tbaa !35
  br label %357

357:                                              ; preds = %354, %342
  br label %358

358:                                              ; preds = %357
  %359 = load i32, ptr %4, align 4, !tbaa !9
  %360 = add nsw i32 %359, -1
  store i32 %360, ptr %4, align 4, !tbaa !9
  %361 = load ptr, ptr %6, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.TIFFDirEntry, ptr %361, i32 1
  store ptr %362, ptr %6, align 8, !tbaa !5
  br label %328, !llvm.loop !37

363:                                              ; preds = %328
  store i64 0, ptr %11, align 8, !tbaa !38
  %364 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %364, ptr %6, align 8, !tbaa !5
  %365 = load i16, ptr %12, align 2, !tbaa !32
  %366 = zext i16 %365 to i32
  store i32 %366, ptr %4, align 4, !tbaa !9
  br label %367

367:                                              ; preds = %787, %363
  %368 = load i32, ptr %4, align 4, !tbaa !9
  %369 = icmp sgt i32 %368, 0
  br i1 %369, label %370, label %792

370:                                              ; preds = %367
  %371 = load i64, ptr %11, align 8, !tbaa !38
  %372 = load ptr, ptr %3, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.tiff, ptr %372, i32 0, i32 59
  %374 = load i64, ptr %373, align 8, !tbaa !39
  %375 = icmp uge i64 %371, %374
  br i1 %375, label %382, label %376

376:                                              ; preds = %370
  %377 = load ptr, ptr %6, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.TIFFDirEntry, ptr %377, i32 0, i32 0
  %379 = load i16, ptr %378, align 4, !tbaa !35
  %380 = zext i16 %379 to i32
  %381 = icmp eq i32 %380, 0
  br i1 %381, label %382, label %383

382:                                              ; preds = %376, %370
  br label %787

383:                                              ; preds = %376
  %384 = load ptr, ptr %6, align 8, !tbaa !5
  %385 = getelementptr inbounds %struct.TIFFDirEntry, ptr %384, i32 0, i32 0
  %386 = load i16, ptr %385, align 4, !tbaa !35
  %387 = zext i16 %386 to i32
  %388 = load ptr, ptr %3, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.tiff, ptr %388, i32 0, i32 58
  %390 = load ptr, ptr %389, align 8, !tbaa !40
  %391 = load i64, ptr %11, align 8, !tbaa !38
  %392 = getelementptr inbounds ptr, ptr %390, i64 %391
  %393 = load ptr, ptr %392, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.TIFFFieldInfo, ptr %393, i32 0, i32 0
  %395 = load i32, ptr %394, align 8, !tbaa !41
  %396 = icmp ult i32 %387, %395
  br i1 %396, label %397, label %408

397:                                              ; preds = %383
  %398 = load i32, ptr %14, align 4, !tbaa !9
  %399 = icmp ne i32 %398, 0
  br i1 %399, label %407, label %400

400:                                              ; preds = %397
  %401 = load ptr, ptr %3, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.tiff, ptr %401, i32 0, i32 51
  %403 = load ptr, ptr %402, align 8, !tbaa !25
  %404 = load ptr, ptr %3, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.tiff, ptr %404, i32 0, i32 0
  %406 = load ptr, ptr %405, align 8, !tbaa !26
  call void (ptr, ptr, ptr, ...) @TIFFWarningExt(ptr noundef %403, ptr noundef @TIFFReadDirectory.module, ptr noundef @.str.6, ptr noundef %406)
  store i32 1, ptr %14, align 4, !tbaa !9
  br label %407

407:                                              ; preds = %400, %397
  store i64 0, ptr %11, align 8, !tbaa !38
  br label %408

408:                                              ; preds = %407, %383
  br label %409

409:                                              ; preds = %431, %408
  %410 = load i64, ptr %11, align 8, !tbaa !38
  %411 = load ptr, ptr %3, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.tiff, ptr %411, i32 0, i32 59
  %413 = load i64, ptr %412, align 8, !tbaa !39
  %414 = icmp ult i64 %410, %413
  br i1 %414, label %415, label %429

415:                                              ; preds = %409
  %416 = load ptr, ptr %3, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.tiff, ptr %416, i32 0, i32 58
  %418 = load ptr, ptr %417, align 8, !tbaa !40
  %419 = load i64, ptr %11, align 8, !tbaa !38
  %420 = getelementptr inbounds ptr, ptr %418, i64 %419
  %421 = load ptr, ptr %420, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.TIFFFieldInfo, ptr %421, i32 0, i32 0
  %423 = load i32, ptr %422, align 8, !tbaa !41
  %424 = load ptr, ptr %6, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.TIFFDirEntry, ptr %424, i32 0, i32 0
  %426 = load i16, ptr %425, align 4, !tbaa !35
  %427 = zext i16 %426 to i32
  %428 = icmp ult i32 %423, %427
  br label %429

429:                                              ; preds = %415, %409
  %430 = phi i1 [ false, %409 ], [ %428, %415 ]
  br i1 %430, label %431, label %434

431:                                              ; preds = %429
  %432 = load i64, ptr %11, align 8, !tbaa !38
  %433 = add i64 %432, 1
  store i64 %433, ptr %11, align 8, !tbaa !38
  br label %409, !llvm.loop !43

434:                                              ; preds = %429
  %435 = load i64, ptr %11, align 8, !tbaa !38
  %436 = load ptr, ptr %3, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.tiff, ptr %436, i32 0, i32 59
  %438 = load i64, ptr %437, align 8, !tbaa !39
  %439 = icmp uge i64 %435, %438
  br i1 %439, label %454, label %440

440:                                              ; preds = %434
  %441 = load ptr, ptr %3, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.tiff, ptr %441, i32 0, i32 58
  %443 = load ptr, ptr %442, align 8, !tbaa !40
  %444 = load i64, ptr %11, align 8, !tbaa !38
  %445 = getelementptr inbounds ptr, ptr %443, i64 %444
  %446 = load ptr, ptr %445, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.TIFFFieldInfo, ptr %446, i32 0, i32 0
  %448 = load i32, ptr %447, align 8, !tbaa !41
  %449 = load ptr, ptr %6, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.TIFFDirEntry, ptr %449, i32 0, i32 0
  %451 = load i16, ptr %450, align 4, !tbaa !35
  %452 = zext i16 %451 to i32
  %453 = icmp ne i32 %448, %452
  br i1 %453, label %454, label %510

454:                                              ; preds = %440, %434
  %455 = load ptr, ptr %3, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.tiff, ptr %455, i32 0, i32 51
  %457 = load ptr, ptr %456, align 8, !tbaa !25
  %458 = load ptr, ptr %3, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.tiff, ptr %458, i32 0, i32 0
  %460 = load ptr, ptr %459, align 8, !tbaa !26
  %461 = load ptr, ptr %6, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.TIFFDirEntry, ptr %461, i32 0, i32 0
  %463 = load i16, ptr %462, align 4, !tbaa !35
  %464 = zext i16 %463 to i32
  %465 = load ptr, ptr %6, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.TIFFDirEntry, ptr %465, i32 0, i32 0
  %467 = load i16, ptr %466, align 4, !tbaa !35
  %468 = zext i16 %467 to i32
  %469 = load ptr, ptr %6, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.TIFFDirEntry, ptr %469, i32 0, i32 1
  %471 = load i16, ptr %470, align 2, !tbaa !44
  %472 = zext i16 %471 to i32
  call void (ptr, ptr, ptr, ...) @TIFFWarningExt(ptr noundef %457, ptr noundef @TIFFReadDirectory.module, ptr noundef @.str.7, ptr noundef %460, i32 noundef %464, i32 noundef %468, i32 noundef %472)
  %473 = load ptr, ptr %3, align 8, !tbaa !5
  %474 = load ptr, ptr %3, align 8, !tbaa !5
  %475 = load ptr, ptr %6, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.TIFFDirEntry, ptr %475, i32 0, i32 0
  %477 = load i16, ptr %476, align 4, !tbaa !35
  %478 = zext i16 %477 to i32
  %479 = load ptr, ptr %6, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.TIFFDirEntry, ptr %479, i32 0, i32 1
  %481 = load i16, ptr %480, align 2, !tbaa !44
  %482 = zext i16 %481 to i32
  %483 = call ptr @_TIFFCreateAnonFieldInfo(ptr noundef %474, i32 noundef %478, i32 noundef %482)
  call void @TIFFMergeFieldInfo(ptr noundef %473, ptr noundef %483, i32 noundef 1)
  store i64 0, ptr %11, align 8, !tbaa !38
  br label %484

484:                                              ; preds = %506, %454
  %485 = load i64, ptr %11, align 8, !tbaa !38
  %486 = load ptr, ptr %3, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.tiff, ptr %486, i32 0, i32 59
  %488 = load i64, ptr %487, align 8, !tbaa !39
  %489 = icmp ult i64 %485, %488
  br i1 %489, label %490, label %504

490:                                              ; preds = %484
  %491 = load ptr, ptr %3, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.tiff, ptr %491, i32 0, i32 58
  %493 = load ptr, ptr %492, align 8, !tbaa !40
  %494 = load i64, ptr %11, align 8, !tbaa !38
  %495 = getelementptr inbounds ptr, ptr %493, i64 %494
  %496 = load ptr, ptr %495, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.TIFFFieldInfo, ptr %496, i32 0, i32 0
  %498 = load i32, ptr %497, align 8, !tbaa !41
  %499 = load ptr, ptr %6, align 8, !tbaa !5
  %500 = getelementptr inbounds %struct.TIFFDirEntry, ptr %499, i32 0, i32 0
  %501 = load i16, ptr %500, align 4, !tbaa !35
  %502 = zext i16 %501 to i32
  %503 = icmp ult i32 %498, %502
  br label %504

504:                                              ; preds = %490, %484
  %505 = phi i1 [ false, %484 ], [ %503, %490 ]
  br i1 %505, label %506, label %509

506:                                              ; preds = %504
  %507 = load i64, ptr %11, align 8, !tbaa !38
  %508 = add i64 %507, 1
  store i64 %508, ptr %11, align 8, !tbaa !38
  br label %484, !llvm.loop !45

509:                                              ; preds = %504
  br label %510

510:                                              ; preds = %509, %440
  %511 = load ptr, ptr %3, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.tiff, ptr %511, i32 0, i32 58
  %513 = load ptr, ptr %512, align 8, !tbaa !40
  %514 = load i64, ptr %11, align 8, !tbaa !38
  %515 = getelementptr inbounds ptr, ptr %513, i64 %514
  %516 = load ptr, ptr %515, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.TIFFFieldInfo, ptr %516, i32 0, i32 4
  %518 = load i16, ptr %517, align 4, !tbaa !46
  %519 = zext i16 %518 to i32
  %520 = icmp eq i32 %519, 0
  br i1 %520, label %521, label %525

521:                                              ; preds = %510
  br label %522

522:                                              ; preds = %637, %579, %521
  %523 = load ptr, ptr %6, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.TIFFDirEntry, ptr %523, i32 0, i32 0
  store i16 0, ptr %524, align 4, !tbaa !35
  br label %787

525:                                              ; preds = %510
  %526 = load ptr, ptr %3, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.tiff, ptr %526, i32 0, i32 58
  %528 = load ptr, ptr %527, align 8, !tbaa !40
  %529 = load i64, ptr %11, align 8, !tbaa !38
  %530 = getelementptr inbounds ptr, ptr %528, i64 %529
  %531 = load ptr, ptr %530, align 8, !tbaa !5
  store ptr %531, ptr %10, align 8, !tbaa !5
  br label %532

532:                                              ; preds = %599, %525
  %533 = load ptr, ptr %6, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.TIFFDirEntry, ptr %533, i32 0, i32 1
  %535 = load i16, ptr %534, align 2, !tbaa !44
  %536 = zext i16 %535 to i32
  %537 = load ptr, ptr %10, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.TIFFFieldInfo, ptr %537, i32 0, i32 3
  %539 = load i32, ptr %538, align 8, !tbaa !47
  %540 = trunc i32 %539 to i16
  %541 = zext i16 %540 to i32
  %542 = icmp ne i32 %536, %541
  br i1 %542, label %543, label %549

543:                                              ; preds = %532
  %544 = load i64, ptr %11, align 8, !tbaa !38
  %545 = load ptr, ptr %3, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.tiff, ptr %545, i32 0, i32 59
  %547 = load i64, ptr %546, align 8, !tbaa !39
  %548 = icmp ult i64 %544, %547
  br label %549

549:                                              ; preds = %543, %532
  %550 = phi i1 [ false, %532 ], [ %548, %543 ]
  br i1 %550, label %551, label %600

551:                                              ; preds = %549
  %552 = load ptr, ptr %10, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.TIFFFieldInfo, ptr %552, i32 0, i32 3
  %554 = load i32, ptr %553, align 8, !tbaa !47
  %555 = icmp eq i32 %554, 0
  br i1 %555, label %556, label %557

556:                                              ; preds = %551
  br label %600

557:                                              ; preds = %551
  %558 = load ptr, ptr %3, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.tiff, ptr %558, i32 0, i32 58
  %560 = load ptr, ptr %559, align 8, !tbaa !40
  %561 = load i64, ptr %11, align 8, !tbaa !38
  %562 = add i64 %561, 1
  store i64 %562, ptr %11, align 8, !tbaa !38
  %563 = getelementptr inbounds ptr, ptr %560, i64 %562
  %564 = load ptr, ptr %563, align 8, !tbaa !5
  store ptr %564, ptr %10, align 8, !tbaa !5
  %565 = load i64, ptr %11, align 8, !tbaa !38
  %566 = load ptr, ptr %3, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.tiff, ptr %566, i32 0, i32 59
  %568 = load i64, ptr %567, align 8, !tbaa !39
  %569 = icmp uge i64 %565, %568
  br i1 %569, label %579, label %570

570:                                              ; preds = %557
  %571 = load ptr, ptr %10, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.TIFFFieldInfo, ptr %571, i32 0, i32 0
  %573 = load i32, ptr %572, align 8, !tbaa !41
  %574 = load ptr, ptr %6, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.TIFFDirEntry, ptr %574, i32 0, i32 0
  %576 = load i16, ptr %575, align 4, !tbaa !35
  %577 = zext i16 %576 to i32
  %578 = icmp ne i32 %573, %577
  br i1 %578, label %579, label %599

579:                                              ; preds = %570, %557
  %580 = load ptr, ptr %3, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.tiff, ptr %580, i32 0, i32 51
  %582 = load ptr, ptr %581, align 8, !tbaa !25
  %583 = load ptr, ptr %3, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.tiff, ptr %583, i32 0, i32 0
  %585 = load ptr, ptr %584, align 8, !tbaa !26
  %586 = load ptr, ptr %6, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.TIFFDirEntry, ptr %586, i32 0, i32 1
  %588 = load i16, ptr %587, align 2, !tbaa !44
  %589 = zext i16 %588 to i32
  %590 = load ptr, ptr %3, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.tiff, ptr %590, i32 0, i32 58
  %592 = load ptr, ptr %591, align 8, !tbaa !40
  %593 = load i64, ptr %11, align 8, !tbaa !38
  %594 = sub i64 %593, 1
  %595 = getelementptr inbounds ptr, ptr %592, i64 %594
  %596 = load ptr, ptr %595, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.TIFFFieldInfo, ptr %596, i32 0, i32 7
  %598 = load ptr, ptr %597, align 8, !tbaa !48
  call void (ptr, ptr, ptr, ...) @TIFFWarningExt(ptr noundef %582, ptr noundef @TIFFReadDirectory.module, ptr noundef @.str.8, ptr noundef %585, i32 noundef %589, ptr noundef %598)
  br label %522

599:                                              ; preds = %570
  br label %532, !llvm.loop !49

600:                                              ; preds = %556, %549
  %601 = load ptr, ptr %10, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.TIFFFieldInfo, ptr %601, i32 0, i32 1
  %603 = load i16, ptr %602, align 4, !tbaa !50
  %604 = sext i16 %603 to i32
  %605 = icmp ne i32 %604, -1
  br i1 %605, label %606, label %640

606:                                              ; preds = %600
  %607 = load ptr, ptr %10, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.TIFFFieldInfo, ptr %607, i32 0, i32 1
  %609 = load i16, ptr %608, align 4, !tbaa !50
  %610 = sext i16 %609 to i32
  %611 = icmp ne i32 %610, -3
  br i1 %611, label %612, label %640

612:                                              ; preds = %606
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  %613 = load ptr, ptr %10, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.TIFFFieldInfo, ptr %613, i32 0, i32 1
  %615 = load i16, ptr %614, align 4, !tbaa !50
  %616 = sext i16 %615 to i32
  %617 = icmp eq i32 %616, -2
  br i1 %617, label %618, label %623

618:                                              ; preds = %612
  %619 = load ptr, ptr %5, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.TIFFDirectory, ptr %619, i32 0, i32 15
  %621 = load i16, ptr %620, align 2, !tbaa !51
  %622 = zext i16 %621 to i32
  br label %628

623:                                              ; preds = %612
  %624 = load ptr, ptr %10, align 8, !tbaa !5
  %625 = getelementptr inbounds %struct.TIFFFieldInfo, ptr %624, i32 0, i32 1
  %626 = load i16, ptr %625, align 4, !tbaa !50
  %627 = sext i16 %626 to i32
  br label %628

628:                                              ; preds = %623, %618
  %629 = phi i32 [ %622, %618 ], [ %627, %623 ]
  store i32 %629, ptr %18, align 4, !tbaa !9
  %630 = load ptr, ptr %3, align 8, !tbaa !5
  %631 = load ptr, ptr %6, align 8, !tbaa !5
  %632 = load i32, ptr %18, align 4, !tbaa !9
  %633 = call i32 @CheckDirCount(ptr noundef %630, ptr noundef %631, i32 noundef %632)
  %634 = icmp ne i32 %633, 0
  br i1 %634, label %636, label %635

635:                                              ; preds = %628
  store i32 16, ptr %16, align 4
  br label %637

636:                                              ; preds = %628
  store i32 0, ptr %16, align 4
  br label %637

637:                                              ; preds = %636, %635
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  %638 = load i32, ptr %16, align 4
  switch i32 %638, label %1615 [
    i32 0, label %639
    i32 16, label %522
  ]

639:                                              ; preds = %637
  br label %640

640:                                              ; preds = %639, %606, %600
  %641 = load ptr, ptr %6, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.TIFFDirEntry, ptr %641, i32 0, i32 0
  %643 = load i16, ptr %642, align 4, !tbaa !35
  %644 = zext i16 %643 to i32
  switch i32 %644, label %786 [
    i32 259, label %645
    i32 273, label %757
    i32 279, label %757
    i32 324, label %757
    i32 325, label %757
    i32 256, label %777
    i32 257, label %777
    i32 32997, label %777
    i32 323, label %777
    i32 322, label %777
    i32 32998, label %777
    i32 284, label %777
    i32 278, label %777
    i32 338, label %777
  ]

645:                                              ; preds = %640
  %646 = load ptr, ptr %6, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.TIFFDirEntry, ptr %646, i32 0, i32 2
  %648 = load i32, ptr %647, align 4, !tbaa !52
  %649 = icmp eq i32 %648, 1
  br i1 %649, label %650, label %712

650:                                              ; preds = %645
  %651 = load ptr, ptr %3, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.tiff, ptr %651, i32 0, i32 9
  %653 = getelementptr inbounds %struct.TIFFHeader, ptr %652, i32 0, i32 0
  %654 = load i16, ptr %653, align 8, !tbaa !53
  %655 = zext i16 %654 to i32
  %656 = icmp eq i32 %655, 19789
  br i1 %656, label %657, label %682

657:                                              ; preds = %650
  %658 = load ptr, ptr %6, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.TIFFDirEntry, ptr %658, i32 0, i32 3
  %660 = load i32, ptr %659, align 4, !tbaa !54
  %661 = load ptr, ptr %3, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.tiff, ptr %661, i32 0, i32 10
  %663 = load ptr, ptr %662, align 8, !tbaa !55
  %664 = load ptr, ptr %6, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.TIFFDirEntry, ptr %664, i32 0, i32 1
  %666 = load i16, ptr %665, align 2, !tbaa !44
  %667 = zext i16 %666 to i64
  %668 = getelementptr inbounds i32, ptr %663, i64 %667
  %669 = load i32, ptr %668, align 4, !tbaa !9
  %670 = lshr i32 %660, %669
  %671 = zext i32 %670 to i64
  %672 = load ptr, ptr %3, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.tiff, ptr %672, i32 0, i32 11
  %674 = load ptr, ptr %673, align 8, !tbaa !56
  %675 = load ptr, ptr %6, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.TIFFDirEntry, ptr %675, i32 0, i32 1
  %677 = load i16, ptr %676, align 2, !tbaa !44
  %678 = zext i16 %677 to i64
  %679 = getelementptr inbounds i64, ptr %674, i64 %678
  %680 = load i64, ptr %679, align 8, !tbaa !38
  %681 = and i64 %671, %680
  br label %697

682:                                              ; preds = %650
  %683 = load ptr, ptr %6, align 8, !tbaa !5
  %684 = getelementptr inbounds %struct.TIFFDirEntry, ptr %683, i32 0, i32 3
  %685 = load i32, ptr %684, align 4, !tbaa !54
  %686 = zext i32 %685 to i64
  %687 = load ptr, ptr %3, align 8, !tbaa !5
  %688 = getelementptr inbounds %struct.tiff, ptr %687, i32 0, i32 11
  %689 = load ptr, ptr %688, align 8, !tbaa !56
  %690 = load ptr, ptr %6, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.TIFFDirEntry, ptr %690, i32 0, i32 1
  %692 = load i16, ptr %691, align 2, !tbaa !44
  %693 = zext i16 %692 to i64
  %694 = getelementptr inbounds i64, ptr %689, i64 %693
  %695 = load i64, ptr %694, align 8, !tbaa !38
  %696 = and i64 %686, %695
  br label %697

697:                                              ; preds = %682, %657
  %698 = phi i64 [ %681, %657 ], [ %696, %682 ]
  %699 = trunc i64 %698 to i32
  store i32 %699, ptr %9, align 4, !tbaa !9
  %700 = load ptr, ptr %3, align 8, !tbaa !5
  %701 = load ptr, ptr %6, align 8, !tbaa !5
  %702 = getelementptr inbounds %struct.TIFFDirEntry, ptr %701, i32 0, i32 0
  %703 = load i16, ptr %702, align 4, !tbaa !35
  %704 = zext i16 %703 to i32
  %705 = load i32, ptr %9, align 4, !tbaa !9
  %706 = trunc i32 %705 to i16
  %707 = zext i16 %706 to i32
  %708 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef %700, i32 noundef %704, i32 noundef %707)
  %709 = icmp ne i32 %708, 0
  br i1 %709, label %711, label %710

710:                                              ; preds = %697
  br label %1607

711:                                              ; preds = %697
  br label %786

712:                                              ; preds = %645
  %713 = load ptr, ptr %6, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.TIFFDirEntry, ptr %713, i32 0, i32 1
  %715 = load i16, ptr %714, align 2, !tbaa !44
  %716 = zext i16 %715 to i32
  %717 = icmp eq i32 %716, 4
  br i1 %717, label %718, label %736

718:                                              ; preds = %712
  %719 = load ptr, ptr %3, align 8, !tbaa !5
  %720 = load ptr, ptr %6, align 8, !tbaa !5
  %721 = call i32 @TIFFFetchPerSampleLongs(ptr noundef %719, ptr noundef %720, ptr noundef %9)
  %722 = icmp ne i32 %721, 0
  br i1 %722, label %723, label %734

723:                                              ; preds = %718
  %724 = load ptr, ptr %3, align 8, !tbaa !5
  %725 = load ptr, ptr %6, align 8, !tbaa !5
  %726 = getelementptr inbounds %struct.TIFFDirEntry, ptr %725, i32 0, i32 0
  %727 = load i16, ptr %726, align 4, !tbaa !35
  %728 = zext i16 %727 to i32
  %729 = load i32, ptr %9, align 4, !tbaa !9
  %730 = trunc i32 %729 to i16
  %731 = zext i16 %730 to i32
  %732 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef %724, i32 noundef %728, i32 noundef %731)
  %733 = icmp ne i32 %732, 0
  br i1 %733, label %735, label %734

734:                                              ; preds = %723, %718
  br label %1607

735:                                              ; preds = %723
  br label %753

736:                                              ; preds = %712
  %737 = load ptr, ptr %3, align 8, !tbaa !5
  %738 = load ptr, ptr %6, align 8, !tbaa !5
  %739 = call i32 @TIFFFetchPerSampleShorts(ptr noundef %737, ptr noundef %738, ptr noundef %8)
  %740 = icmp ne i32 %739, 0
  br i1 %740, label %741, label %751

741:                                              ; preds = %736
  %742 = load ptr, ptr %3, align 8, !tbaa !5
  %743 = load ptr, ptr %6, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.TIFFDirEntry, ptr %743, i32 0, i32 0
  %745 = load i16, ptr %744, align 4, !tbaa !35
  %746 = zext i16 %745 to i32
  %747 = load i16, ptr %8, align 2, !tbaa !32
  %748 = zext i16 %747 to i32
  %749 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef %742, i32 noundef %746, i32 noundef %748)
  %750 = icmp ne i32 %749, 0
  br i1 %750, label %752, label %751

751:                                              ; preds = %741, %736
  br label %1607

752:                                              ; preds = %741
  br label %753

753:                                              ; preds = %752, %735
  br label %754

754:                                              ; preds = %753
  %755 = load ptr, ptr %6, align 8, !tbaa !5
  %756 = getelementptr inbounds %struct.TIFFDirEntry, ptr %755, i32 0, i32 0
  store i16 0, ptr %756, align 4, !tbaa !35
  br label %786

757:                                              ; preds = %640, %640, %640, %640
  %758 = load ptr, ptr %10, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.TIFFFieldInfo, ptr %758, i32 0, i32 4
  %760 = load i16, ptr %759, align 4, !tbaa !46
  %761 = zext i16 %760 to i32
  %762 = and i32 %761, 31
  %763 = zext i32 %762 to i64
  %764 = shl i64 1, %763
  %765 = load ptr, ptr %3, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.tiff, ptr %765, i32 0, i32 8
  %767 = getelementptr inbounds %struct.TIFFDirectory, ptr %766, i32 0, i32 0
  %768 = load ptr, ptr %10, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.TIFFFieldInfo, ptr %768, i32 0, i32 4
  %770 = load i16, ptr %769, align 4, !tbaa !46
  %771 = zext i16 %770 to i32
  %772 = sdiv i32 %771, 32
  %773 = sext i32 %772 to i64
  %774 = getelementptr inbounds [4 x i64], ptr %767, i64 0, i64 %773
  %775 = load i64, ptr %774, align 8, !tbaa !38
  %776 = or i64 %775, %764
  store i64 %776, ptr %774, align 8, !tbaa !38
  br label %786

777:                                              ; preds = %640, %640, %640, %640, %640, %640, %640, %640, %640
  %778 = load ptr, ptr %3, align 8, !tbaa !5
  %779 = load ptr, ptr %6, align 8, !tbaa !5
  %780 = call i32 @TIFFFetchNormalTag(ptr noundef %778, ptr noundef %779)
  %781 = icmp ne i32 %780, 0
  br i1 %781, label %783, label %782

782:                                              ; preds = %777
  br label %1607

783:                                              ; preds = %777
  %784 = load ptr, ptr %6, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.TIFFDirEntry, ptr %784, i32 0, i32 0
  store i16 0, ptr %785, align 4, !tbaa !35
  br label %786

786:                                              ; preds = %783, %757, %754, %711, %640
  br label %787

787:                                              ; preds = %786, %522, %382
  %788 = load i32, ptr %4, align 4, !tbaa !9
  %789 = add nsw i32 %788, -1
  store i32 %789, ptr %4, align 4, !tbaa !9
  %790 = load ptr, ptr %6, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct.TIFFDirEntry, ptr %790, i32 1
  store ptr %791, ptr %6, align 8, !tbaa !5
  br label %367, !llvm.loop !57

792:                                              ; preds = %367
  %793 = load ptr, ptr %3, align 8, !tbaa !5
  %794 = getelementptr inbounds %struct.tiff, ptr %793, i32 0, i32 8
  %795 = getelementptr inbounds %struct.TIFFDirectory, ptr %794, i32 0, i32 0
  %796 = getelementptr inbounds [4 x i64], ptr %795, i64 0, i64 0
  %797 = load i64, ptr %796, align 8, !tbaa !38
  %798 = and i64 %797, 2
  %799 = icmp ne i64 %798, 0
  br i1 %799, label %802, label %800

800:                                              ; preds = %792
  %801 = load ptr, ptr %3, align 8, !tbaa !5
  call void @MissingRequired(ptr noundef %801, ptr noundef @.str.9)
  br label %1607

802:                                              ; preds = %792
  %803 = load ptr, ptr %3, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.tiff, ptr %803, i32 0, i32 8
  %805 = getelementptr inbounds %struct.TIFFDirectory, ptr %804, i32 0, i32 0
  %806 = getelementptr inbounds [4 x i64], ptr %805, i64 0, i64 0
  %807 = load i64, ptr %806, align 8, !tbaa !38
  %808 = and i64 %807, 4
  %809 = icmp ne i64 %808, 0
  br i1 %809, label %834, label %810

810:                                              ; preds = %802
  %811 = load ptr, ptr %3, align 8, !tbaa !5
  %812 = call i32 @TIFFNumberOfStrips(ptr noundef %811)
  %813 = load ptr, ptr %5, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.TIFFDirectory, ptr %813, i32 0, i32 33
  store i32 %812, ptr %814, align 4, !tbaa !58
  %815 = load ptr, ptr %5, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.TIFFDirectory, ptr %815, i32 0, i32 1
  %817 = load i32, ptr %816, align 8, !tbaa !59
  %818 = load ptr, ptr %5, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.TIFFDirectory, ptr %818, i32 0, i32 4
  store i32 %817, ptr %819, align 4, !tbaa !60
  %820 = load ptr, ptr %5, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.TIFFDirectory, ptr %820, i32 0, i32 16
  %822 = load i32, ptr %821, align 4, !tbaa !61
  %823 = load ptr, ptr %5, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.TIFFDirectory, ptr %823, i32 0, i32 5
  store i32 %822, ptr %824, align 8, !tbaa !62
  %825 = load ptr, ptr %5, align 8, !tbaa !5
  %826 = getelementptr inbounds %struct.TIFFDirectory, ptr %825, i32 0, i32 3
  %827 = load i32, ptr %826, align 8, !tbaa !63
  %828 = load ptr, ptr %5, align 8, !tbaa !5
  %829 = getelementptr inbounds %struct.TIFFDirectory, ptr %828, i32 0, i32 6
  store i32 %827, ptr %829, align 4, !tbaa !64
  %830 = load ptr, ptr %3, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.tiff, ptr %830, i32 0, i32 3
  %832 = load i32, ptr %831, align 8, !tbaa !29
  %833 = and i32 %832, -1025
  store i32 %833, ptr %831, align 8, !tbaa !29
  br label %843

834:                                              ; preds = %802
  %835 = load ptr, ptr %3, align 8, !tbaa !5
  %836 = call i32 @TIFFNumberOfTiles(ptr noundef %835)
  %837 = load ptr, ptr %5, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct.TIFFDirectory, ptr %837, i32 0, i32 33
  store i32 %836, ptr %838, align 4, !tbaa !58
  %839 = load ptr, ptr %3, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.tiff, ptr %839, i32 0, i32 3
  %841 = load i32, ptr %840, align 8, !tbaa !29
  %842 = or i32 %841, 1024
  store i32 %842, ptr %840, align 8, !tbaa !29
  br label %843

843:                                              ; preds = %834, %810
  %844 = load ptr, ptr %5, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.TIFFDirectory, ptr %844, i32 0, i32 33
  %846 = load i32, ptr %845, align 4, !tbaa !58
  %847 = icmp ne i32 %846, 0
  br i1 %847, label %862, label %848

848:                                              ; preds = %843
  %849 = load ptr, ptr %3, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.tiff, ptr %849, i32 0, i32 51
  %851 = load ptr, ptr %850, align 8, !tbaa !25
  %852 = load ptr, ptr %3, align 8, !tbaa !5
  %853 = getelementptr inbounds %struct.tiff, ptr %852, i32 0, i32 0
  %854 = load ptr, ptr %853, align 8, !tbaa !26
  %855 = load ptr, ptr %3, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.tiff, ptr %855, i32 0, i32 3
  %857 = load i32, ptr %856, align 8, !tbaa !29
  %858 = and i32 %857, 1024
  %859 = icmp ne i32 %858, 0
  %860 = zext i1 %859 to i64
  %861 = select i1 %859, ptr @.str.11, ptr @.str.12
  call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %851, ptr noundef @TIFFReadDirectory.module, ptr noundef @.str.10, ptr noundef %854, ptr noundef %861)
  br label %1607

862:                                              ; preds = %843
  %863 = load ptr, ptr %5, align 8, !tbaa !5
  %864 = getelementptr inbounds %struct.TIFFDirectory, ptr %863, i32 0, i32 33
  %865 = load i32, ptr %864, align 4, !tbaa !58
  %866 = load ptr, ptr %5, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.TIFFDirectory, ptr %866, i32 0, i32 32
  store i32 %865, ptr %867, align 8, !tbaa !65
  %868 = load ptr, ptr %5, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.TIFFDirectory, ptr %868, i32 0, i32 24
  %870 = load i16, ptr %869, align 2, !tbaa !66
  %871 = zext i16 %870 to i32
  %872 = icmp eq i32 %871, 2
  br i1 %872, label %873, label %882

873:                                              ; preds = %862
  %874 = load ptr, ptr %5, align 8, !tbaa !5
  %875 = getelementptr inbounds %struct.TIFFDirectory, ptr %874, i32 0, i32 15
  %876 = load i16, ptr %875, align 2, !tbaa !51
  %877 = zext i16 %876 to i32
  %878 = load ptr, ptr %5, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.TIFFDirectory, ptr %878, i32 0, i32 32
  %880 = load i32, ptr %879, align 8, !tbaa !65
  %881 = udiv i32 %880, %877
  store i32 %881, ptr %879, align 8, !tbaa !65
  br label %882

882:                                              ; preds = %873, %862
  %883 = load ptr, ptr %3, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.tiff, ptr %883, i32 0, i32 8
  %885 = getelementptr inbounds %struct.TIFFDirectory, ptr %884, i32 0, i32 0
  %886 = getelementptr inbounds [4 x i64], ptr %885, i64 0, i64 0
  %887 = load i64, ptr %886, align 8, !tbaa !38
  %888 = and i64 %887, 33554432
  %889 = icmp ne i64 %888, 0
  br i1 %889, label %899, label %890

890:                                              ; preds = %882
  %891 = load ptr, ptr %3, align 8, !tbaa !5
  %892 = load ptr, ptr %3, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.tiff, ptr %892, i32 0, i32 3
  %894 = load i32, ptr %893, align 8, !tbaa !29
  %895 = and i32 %894, 1024
  %896 = icmp ne i32 %895, 0
  %897 = zext i1 %896 to i64
  %898 = select i1 %896, ptr @.str.13, ptr @.str.14
  call void @MissingRequired(ptr noundef %891, ptr noundef %898)
  br label %1607

899:                                              ; preds = %882
  %900 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %900, ptr %6, align 8, !tbaa !5
  %901 = load i16, ptr %12, align 2, !tbaa !32
  %902 = zext i16 %901 to i32
  store i32 %902, ptr %4, align 4, !tbaa !9
  br label %903

903:                                              ; preds = %1234, %899
  %904 = load i32, ptr %4, align 4, !tbaa !9
  %905 = icmp sgt i32 %904, 0
  br i1 %905, label %906, label %1239

906:                                              ; preds = %903
  %907 = load ptr, ptr %6, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.TIFFDirEntry, ptr %907, i32 0, i32 0
  %909 = load i16, ptr %908, align 4, !tbaa !35
  %910 = zext i16 %909 to i32
  %911 = icmp eq i32 %910, 0
  br i1 %911, label %912, label %913

912:                                              ; preds = %906
  br label %1234

913:                                              ; preds = %906
  %914 = load ptr, ptr %6, align 8, !tbaa !5
  %915 = getelementptr inbounds %struct.TIFFDirEntry, ptr %914, i32 0, i32 0
  %916 = load i16, ptr %915, align 4, !tbaa !35
  %917 = zext i16 %916 to i32
  switch i32 %917, label %1229 [
    i32 280, label %918
    i32 281, label %918
    i32 258, label %918
    i32 32996, label %918
    i32 339, label %918
    i32 340, label %1034
    i32 341, label %1034
    i32 273, label %1053
    i32 324, label %1053
    i32 279, label %1066
    i32 325, label %1066
    i32 320, label %1079
    i32 301, label %1079
    i32 297, label %1161
    i32 321, label %1161
    i32 530, label %1161
    i32 336, label %1161
    i32 532, label %1165
    i32 255, label %1169
  ]

918:                                              ; preds = %913, %913, %913, %913, %913
  %919 = load ptr, ptr %6, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.TIFFDirEntry, ptr %919, i32 0, i32 2
  %921 = load i32, ptr %920, align 4, !tbaa !52
  %922 = icmp eq i32 %921, 1
  br i1 %922, label %923, label %985

923:                                              ; preds = %918
  %924 = load ptr, ptr %3, align 8, !tbaa !5
  %925 = getelementptr inbounds %struct.tiff, ptr %924, i32 0, i32 9
  %926 = getelementptr inbounds %struct.TIFFHeader, ptr %925, i32 0, i32 0
  %927 = load i16, ptr %926, align 8, !tbaa !53
  %928 = zext i16 %927 to i32
  %929 = icmp eq i32 %928, 19789
  br i1 %929, label %930, label %955

930:                                              ; preds = %923
  %931 = load ptr, ptr %6, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.TIFFDirEntry, ptr %931, i32 0, i32 3
  %933 = load i32, ptr %932, align 4, !tbaa !54
  %934 = load ptr, ptr %3, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.tiff, ptr %934, i32 0, i32 10
  %936 = load ptr, ptr %935, align 8, !tbaa !55
  %937 = load ptr, ptr %6, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.TIFFDirEntry, ptr %937, i32 0, i32 1
  %939 = load i16, ptr %938, align 2, !tbaa !44
  %940 = zext i16 %939 to i64
  %941 = getelementptr inbounds i32, ptr %936, i64 %940
  %942 = load i32, ptr %941, align 4, !tbaa !9
  %943 = lshr i32 %933, %942
  %944 = zext i32 %943 to i64
  %945 = load ptr, ptr %3, align 8, !tbaa !5
  %946 = getelementptr inbounds %struct.tiff, ptr %945, i32 0, i32 11
  %947 = load ptr, ptr %946, align 8, !tbaa !56
  %948 = load ptr, ptr %6, align 8, !tbaa !5
  %949 = getelementptr inbounds %struct.TIFFDirEntry, ptr %948, i32 0, i32 1
  %950 = load i16, ptr %949, align 2, !tbaa !44
  %951 = zext i16 %950 to i64
  %952 = getelementptr inbounds i64, ptr %947, i64 %951
  %953 = load i64, ptr %952, align 8, !tbaa !38
  %954 = and i64 %944, %953
  br label %970

955:                                              ; preds = %923
  %956 = load ptr, ptr %6, align 8, !tbaa !5
  %957 = getelementptr inbounds %struct.TIFFDirEntry, ptr %956, i32 0, i32 3
  %958 = load i32, ptr %957, align 4, !tbaa !54
  %959 = zext i32 %958 to i64
  %960 = load ptr, ptr %3, align 8, !tbaa !5
  %961 = getelementptr inbounds %struct.tiff, ptr %960, i32 0, i32 11
  %962 = load ptr, ptr %961, align 8, !tbaa !56
  %963 = load ptr, ptr %6, align 8, !tbaa !5
  %964 = getelementptr inbounds %struct.TIFFDirEntry, ptr %963, i32 0, i32 1
  %965 = load i16, ptr %964, align 2, !tbaa !44
  %966 = zext i16 %965 to i64
  %967 = getelementptr inbounds i64, ptr %962, i64 %966
  %968 = load i64, ptr %967, align 8, !tbaa !38
  %969 = and i64 %959, %968
  br label %970

970:                                              ; preds = %955, %930
  %971 = phi i64 [ %954, %930 ], [ %969, %955 ]
  %972 = trunc i64 %971 to i32
  store i32 %972, ptr %9, align 4, !tbaa !9
  %973 = load ptr, ptr %3, align 8, !tbaa !5
  %974 = load ptr, ptr %6, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.TIFFDirEntry, ptr %974, i32 0, i32 0
  %976 = load i16, ptr %975, align 4, !tbaa !35
  %977 = zext i16 %976 to i32
  %978 = load i32, ptr %9, align 4, !tbaa !9
  %979 = trunc i32 %978 to i16
  %980 = zext i16 %979 to i32
  %981 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef %973, i32 noundef %977, i32 noundef %980)
  %982 = icmp ne i32 %981, 0
  br i1 %982, label %984, label %983

983:                                              ; preds = %970
  br label %1607

984:                                              ; preds = %970
  br label %1033

985:                                              ; preds = %918
  %986 = load ptr, ptr %6, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.TIFFDirEntry, ptr %986, i32 0, i32 0
  %988 = load i16, ptr %987, align 4, !tbaa !35
  %989 = zext i16 %988 to i32
  %990 = icmp eq i32 %989, 258
  br i1 %990, label %991, label %1015

991:                                              ; preds = %985
  %992 = load ptr, ptr %6, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.TIFFDirEntry, ptr %992, i32 0, i32 1
  %994 = load i16, ptr %993, align 2, !tbaa !44
  %995 = zext i16 %994 to i32
  %996 = icmp eq i32 %995, 4
  br i1 %996, label %997, label %1015

997:                                              ; preds = %991
  %998 = load ptr, ptr %3, align 8, !tbaa !5
  %999 = load ptr, ptr %6, align 8, !tbaa !5
  %1000 = call i32 @TIFFFetchPerSampleLongs(ptr noundef %998, ptr noundef %999, ptr noundef %9)
  %1001 = icmp ne i32 %1000, 0
  br i1 %1001, label %1002, label %1013

1002:                                             ; preds = %997
  %1003 = load ptr, ptr %3, align 8, !tbaa !5
  %1004 = load ptr, ptr %6, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.TIFFDirEntry, ptr %1004, i32 0, i32 0
  %1006 = load i16, ptr %1005, align 4, !tbaa !35
  %1007 = zext i16 %1006 to i32
  %1008 = load i32, ptr %9, align 4, !tbaa !9
  %1009 = trunc i32 %1008 to i16
  %1010 = zext i16 %1009 to i32
  %1011 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef %1003, i32 noundef %1007, i32 noundef %1010)
  %1012 = icmp ne i32 %1011, 0
  br i1 %1012, label %1014, label %1013

1013:                                             ; preds = %1002, %997
  br label %1607

1014:                                             ; preds = %1002
  br label %1032

1015:                                             ; preds = %991, %985
  %1016 = load ptr, ptr %3, align 8, !tbaa !5
  %1017 = load ptr, ptr %6, align 8, !tbaa !5
  %1018 = call i32 @TIFFFetchPerSampleShorts(ptr noundef %1016, ptr noundef %1017, ptr noundef %8)
  %1019 = icmp ne i32 %1018, 0
  br i1 %1019, label %1020, label %1030

1020:                                             ; preds = %1015
  %1021 = load ptr, ptr %3, align 8, !tbaa !5
  %1022 = load ptr, ptr %6, align 8, !tbaa !5
  %1023 = getelementptr inbounds %struct.TIFFDirEntry, ptr %1022, i32 0, i32 0
  %1024 = load i16, ptr %1023, align 4, !tbaa !35
  %1025 = zext i16 %1024 to i32
  %1026 = load i16, ptr %8, align 2, !tbaa !32
  %1027 = zext i16 %1026 to i32
  %1028 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef %1021, i32 noundef %1025, i32 noundef %1027)
  %1029 = icmp ne i32 %1028, 0
  br i1 %1029, label %1031, label %1030

1030:                                             ; preds = %1020, %1015
  br label %1607

1031:                                             ; preds = %1020
  br label %1032

1032:                                             ; preds = %1031, %1014
  br label %1033

1033:                                             ; preds = %1032, %984
  br label %1233

1034:                                             ; preds = %913, %913
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #3
  store double 0.000000e+00, ptr %19, align 8, !tbaa !67
  %1035 = load ptr, ptr %3, align 8, !tbaa !5
  %1036 = load ptr, ptr %6, align 8, !tbaa !5
  %1037 = call i32 @TIFFFetchPerSampleAnys(ptr noundef %1035, ptr noundef %1036, ptr noundef %19)
  %1038 = icmp ne i32 %1037, 0
  br i1 %1038, label %1039, label %1048

1039:                                             ; preds = %1034
  %1040 = load ptr, ptr %3, align 8, !tbaa !5
  %1041 = load ptr, ptr %6, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct.TIFFDirEntry, ptr %1041, i32 0, i32 0
  %1043 = load i16, ptr %1042, align 4, !tbaa !35
  %1044 = zext i16 %1043 to i32
  %1045 = load double, ptr %19, align 8, !tbaa !67
  %1046 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef %1040, i32 noundef %1044, double noundef %1045)
  %1047 = icmp ne i32 %1046, 0
  br i1 %1047, label %1049, label %1048

1048:                                             ; preds = %1039, %1034
  store i32 5, ptr %16, align 4
  br label %1050

1049:                                             ; preds = %1039
  store i32 0, ptr %16, align 4
  br label %1050

1050:                                             ; preds = %1049, %1048
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  %1051 = load i32, ptr %16, align 4
  switch i32 %1051, label %1613 [
    i32 0, label %1052
    i32 5, label %1607
  ]

1052:                                             ; preds = %1050
  br label %1233

1053:                                             ; preds = %913, %913
  %1054 = load ptr, ptr %3, align 8, !tbaa !5
  %1055 = load ptr, ptr %6, align 8, !tbaa !5
  %1056 = load ptr, ptr %5, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.TIFFDirectory, ptr %1056, i32 0, i32 33
  %1058 = load i32, ptr %1057, align 4, !tbaa !58
  %1059 = zext i32 %1058 to i64
  %1060 = load ptr, ptr %5, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.TIFFDirectory, ptr %1060, i32 0, i32 34
  %1062 = call i32 @TIFFFetchStripThing(ptr noundef %1054, ptr noundef %1055, i64 noundef %1059, ptr noundef %1061)
  %1063 = icmp ne i32 %1062, 0
  br i1 %1063, label %1065, label %1064

1064:                                             ; preds = %1053
  br label %1607

1065:                                             ; preds = %1053
  br label %1233

1066:                                             ; preds = %913, %913
  %1067 = load ptr, ptr %3, align 8, !tbaa !5
  %1068 = load ptr, ptr %6, align 8, !tbaa !5
  %1069 = load ptr, ptr %5, align 8, !tbaa !5
  %1070 = getelementptr inbounds %struct.TIFFDirectory, ptr %1069, i32 0, i32 33
  %1071 = load i32, ptr %1070, align 4, !tbaa !58
  %1072 = zext i32 %1071 to i64
  %1073 = load ptr, ptr %5, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.TIFFDirectory, ptr %1073, i32 0, i32 35
  %1075 = call i32 @TIFFFetchStripThing(ptr noundef %1067, ptr noundef %1068, i64 noundef %1072, ptr noundef %1074)
  %1076 = icmp ne i32 %1075, 0
  br i1 %1076, label %1078, label %1077

1077:                                             ; preds = %1066
  br label %1607

1078:                                             ; preds = %1066
  br label %1233

1079:                                             ; preds = %913, %913
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  %1080 = load ptr, ptr %5, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.TIFFDirectory, ptr %1080, i32 0, i32 8
  %1082 = load i16, ptr %1081, align 4, !tbaa !68
  %1083 = zext i16 %1082 to i32
  %1084 = zext i32 %1083 to i64
  %1085 = shl i64 1, %1084
  %1086 = trunc i64 %1085 to i32
  store i32 %1086, ptr %9, align 4, !tbaa !9
  %1087 = load ptr, ptr %6, align 8, !tbaa !5
  %1088 = getelementptr inbounds %struct.TIFFDirEntry, ptr %1087, i32 0, i32 0
  %1089 = load i16, ptr %1088, align 4, !tbaa !35
  %1090 = zext i16 %1089 to i32
  %1091 = icmp eq i32 %1090, 320
  br i1 %1091, label %1098, label %1092

1092:                                             ; preds = %1079
  %1093 = load ptr, ptr %6, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.TIFFDirEntry, ptr %1093, i32 0, i32 2
  %1095 = load i32, ptr %1094, align 4, !tbaa !52
  %1096 = load i32, ptr %9, align 4, !tbaa !9
  %1097 = icmp ne i32 %1095, %1096
  br i1 %1097, label %1098, label %1107

1098:                                             ; preds = %1092, %1079
  %1099 = load ptr, ptr %3, align 8, !tbaa !5
  %1100 = load ptr, ptr %6, align 8, !tbaa !5
  %1101 = load i32, ptr %9, align 4, !tbaa !9
  %1102 = mul i32 3, %1101
  %1103 = call i32 @CheckDirCount(ptr noundef %1099, ptr noundef %1100, i32 noundef %1102)
  %1104 = icmp ne i32 %1103, 0
  br i1 %1104, label %1106, label %1105

1105:                                             ; preds = %1098
  store i32 23, ptr %16, align 4
  br label %1160

1106:                                             ; preds = %1098
  br label %1107

1107:                                             ; preds = %1106, %1092
  %1108 = load i32, ptr %9, align 4, !tbaa !9
  %1109 = zext i32 %1108 to i64
  %1110 = mul i64 %1109, 2
  %1111 = trunc i64 %1110 to i32
  store i32 %1111, ptr %9, align 4, !tbaa !9
  %1112 = load ptr, ptr %3, align 8, !tbaa !5
  %1113 = load ptr, ptr %6, align 8, !tbaa !5
  %1114 = getelementptr inbounds %struct.TIFFDirEntry, ptr %1113, i32 0, i32 2
  %1115 = load i32, ptr %1114, align 4, !tbaa !52
  %1116 = zext i32 %1115 to i64
  %1117 = call ptr @_TIFFCheckMalloc(ptr noundef %1112, i64 noundef %1116, i64 noundef 2, ptr noundef @.str.15)
  store ptr %1117, ptr %20, align 8, !tbaa !5
  %1118 = load ptr, ptr %20, align 8, !tbaa !5
  %1119 = icmp ne ptr %1118, null
  br i1 %1119, label %1120, label %1159

1120:                                             ; preds = %1107
  %1121 = load ptr, ptr %3, align 8, !tbaa !5
  %1122 = load ptr, ptr %6, align 8, !tbaa !5
  %1123 = load ptr, ptr %20, align 8, !tbaa !5
  %1124 = call i32 @TIFFFetchData(ptr noundef %1121, ptr noundef %1122, ptr noundef %1123)
  %1125 = icmp ne i32 %1124, 0
  br i1 %1125, label %1126, label %1157

1126:                                             ; preds = %1120
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  %1127 = load ptr, ptr %5, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.TIFFDirectory, ptr %1127, i32 0, i32 8
  %1129 = load i16, ptr %1128, align 4, !tbaa !68
  %1130 = zext i16 %1129 to i32
  %1131 = zext i32 %1130 to i64
  %1132 = shl i64 1, %1131
  %1133 = trunc i64 %1132 to i32
  store i32 %1133, ptr %21, align 4, !tbaa !9
  %1134 = load ptr, ptr %6, align 8, !tbaa !5
  %1135 = getelementptr inbounds %struct.TIFFDirEntry, ptr %1134, i32 0, i32 2
  %1136 = load i32, ptr %1135, align 4, !tbaa !52
  %1137 = load i32, ptr %21, align 4, !tbaa !9
  %1138 = icmp eq i32 %1136, %1137
  br i1 %1138, label %1139, label %1140

1139:                                             ; preds = %1126
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %1140

1140:                                             ; preds = %1139, %1126
  %1141 = load ptr, ptr %3, align 8, !tbaa !5
  %1142 = load ptr, ptr %6, align 8, !tbaa !5
  %1143 = getelementptr inbounds %struct.TIFFDirEntry, ptr %1142, i32 0, i32 0
  %1144 = load i16, ptr %1143, align 4, !tbaa !35
  %1145 = zext i16 %1144 to i32
  %1146 = load ptr, ptr %20, align 8, !tbaa !5
  %1147 = load ptr, ptr %20, align 8, !tbaa !5
  %1148 = load i32, ptr %9, align 4, !tbaa !9
  %1149 = zext i32 %1148 to i64
  %1150 = getelementptr inbounds i8, ptr %1147, i64 %1149
  %1151 = load ptr, ptr %20, align 8, !tbaa !5
  %1152 = load i32, ptr %9, align 4, !tbaa !9
  %1153 = mul i32 2, %1152
  %1154 = zext i32 %1153 to i64
  %1155 = getelementptr inbounds i8, ptr %1151, i64 %1154
  %1156 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef %1141, i32 noundef %1145, ptr noundef %1146, ptr noundef %1150, ptr noundef %1155)
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  br label %1157

1157:                                             ; preds = %1140, %1120
  %1158 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_TIFFfree(ptr noundef %1158)
  br label %1159

1159:                                             ; preds = %1157, %1107
  store i32 23, ptr %16, align 4
  br label %1160

1160:                                             ; preds = %1159, %1105
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  br label %1233

1161:                                             ; preds = %913, %913, %913, %913
  %1162 = load ptr, ptr %3, align 8, !tbaa !5
  %1163 = load ptr, ptr %6, align 8, !tbaa !5
  %1164 = call i32 @TIFFFetchShortPair(ptr noundef %1162, ptr noundef %1163)
  br label %1233

1165:                                             ; preds = %913
  %1166 = load ptr, ptr %3, align 8, !tbaa !5
  %1167 = load ptr, ptr %6, align 8, !tbaa !5
  %1168 = call i32 @TIFFFetchRefBlackWhite(ptr noundef %1166, ptr noundef %1167)
  br label %1233

1169:                                             ; preds = %913
  store i32 0, ptr %9, align 4, !tbaa !9
  %1170 = load ptr, ptr %3, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.tiff, ptr %1170, i32 0, i32 9
  %1172 = getelementptr inbounds %struct.TIFFHeader, ptr %1171, i32 0, i32 0
  %1173 = load i16, ptr %1172, align 8, !tbaa !53
  %1174 = zext i16 %1173 to i32
  %1175 = icmp eq i32 %1174, 19789
  br i1 %1175, label %1176, label %1201

1176:                                             ; preds = %1169
  %1177 = load ptr, ptr %6, align 8, !tbaa !5
  %1178 = getelementptr inbounds %struct.TIFFDirEntry, ptr %1177, i32 0, i32 3
  %1179 = load i32, ptr %1178, align 4, !tbaa !54
  %1180 = load ptr, ptr %3, align 8, !tbaa !5
  %1181 = getelementptr inbounds %struct.tiff, ptr %1180, i32 0, i32 10
  %1182 = load ptr, ptr %1181, align 8, !tbaa !55
  %1183 = load ptr, ptr %6, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.TIFFDirEntry, ptr %1183, i32 0, i32 1
  %1185 = load i16, ptr %1184, align 2, !tbaa !44
  %1186 = zext i16 %1185 to i64
  %1187 = getelementptr inbounds i32, ptr %1182, i64 %1186
  %1188 = load i32, ptr %1187, align 4, !tbaa !9
  %1189 = lshr i32 %1179, %1188
  %1190 = zext i32 %1189 to i64
  %1191 = load ptr, ptr %3, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.tiff, ptr %1191, i32 0, i32 11
  %1193 = load ptr, ptr %1192, align 8, !tbaa !56
  %1194 = load ptr, ptr %6, align 8, !tbaa !5
  %1195 = getelementptr inbounds %struct.TIFFDirEntry, ptr %1194, i32 0, i32 1
  %1196 = load i16, ptr %1195, align 2, !tbaa !44
  %1197 = zext i16 %1196 to i64
  %1198 = getelementptr inbounds i64, ptr %1193, i64 %1197
  %1199 = load i64, ptr %1198, align 8, !tbaa !38
  %1200 = and i64 %1190, %1199
  br label %1216

1201:                                             ; preds = %1169
  %1202 = load ptr, ptr %6, align 8, !tbaa !5
  %1203 = getelementptr inbounds %struct.TIFFDirEntry, ptr %1202, i32 0, i32 3
  %1204 = load i32, ptr %1203, align 4, !tbaa !54
  %1205 = zext i32 %1204 to i64
  %1206 = load ptr, ptr %3, align 8, !tbaa !5
  %1207 = getelementptr inbounds %struct.tiff, ptr %1206, i32 0, i32 11
  %1208 = load ptr, ptr %1207, align 8, !tbaa !56
  %1209 = load ptr, ptr %6, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.TIFFDirEntry, ptr %1209, i32 0, i32 1
  %1211 = load i16, ptr %1210, align 2, !tbaa !44
  %1212 = zext i16 %1211 to i64
  %1213 = getelementptr inbounds i64, ptr %1208, i64 %1212
  %1214 = load i64, ptr %1213, align 8, !tbaa !38
  %1215 = and i64 %1205, %1214
  br label %1216

1216:                                             ; preds = %1201, %1176
  %1217 = phi i64 [ %1200, %1176 ], [ %1215, %1201 ]
  %1218 = trunc i64 %1217 to i32
  switch i32 %1218, label %1221 [
    i32 2, label %1219
    i32 3, label %1220
  ]

1219:                                             ; preds = %1216
  store i32 1, ptr %9, align 4, !tbaa !9
  br label %1221

1220:                                             ; preds = %1216
  store i32 2, ptr %9, align 4, !tbaa !9
  br label %1221

1221:                                             ; preds = %1220, %1219, %1216
  %1222 = load i32, ptr %9, align 4, !tbaa !9
  %1223 = icmp ne i32 %1222, 0
  br i1 %1223, label %1224, label %1228

1224:                                             ; preds = %1221
  %1225 = load ptr, ptr %3, align 8, !tbaa !5
  %1226 = load i32, ptr %9, align 4, !tbaa !9
  %1227 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef %1225, i32 noundef 254, i32 noundef %1226)
  br label %1228

1228:                                             ; preds = %1224, %1221
  br label %1233

1229:                                             ; preds = %913
  %1230 = load ptr, ptr %3, align 8, !tbaa !5
  %1231 = load ptr, ptr %6, align 8, !tbaa !5
  %1232 = call i32 @TIFFFetchNormalTag(ptr noundef %1230, ptr noundef %1231)
  br label %1233

1233:                                             ; preds = %1229, %1228, %1165, %1161, %1160, %1078, %1065, %1052, %1033
  br label %1234

1234:                                             ; preds = %1233, %912
  %1235 = load i32, ptr %4, align 4, !tbaa !9
  %1236 = add nsw i32 %1235, -1
  store i32 %1236, ptr %4, align 4, !tbaa !9
  %1237 = load ptr, ptr %6, align 8, !tbaa !5
  %1238 = getelementptr inbounds %struct.TIFFDirEntry, ptr %1237, i32 1
  store ptr %1238, ptr %6, align 8, !tbaa !5
  br label %903, !llvm.loop !69

1239:                                             ; preds = %903
  %1240 = load ptr, ptr %5, align 8, !tbaa !5
  %1241 = getelementptr inbounds %struct.TIFFDirectory, ptr %1240, i32 0, i32 11
  %1242 = load i16, ptr %1241, align 2, !tbaa !70
  %1243 = zext i16 %1242 to i32
  %1244 = icmp eq i32 %1243, 3
  br i1 %1244, label %1245, label %1255

1245:                                             ; preds = %1239
  %1246 = load ptr, ptr %3, align 8, !tbaa !5
  %1247 = getelementptr inbounds %struct.tiff, ptr %1246, i32 0, i32 8
  %1248 = getelementptr inbounds %struct.TIFFDirectory, ptr %1247, i32 0, i32 0
  %1249 = getelementptr inbounds [4 x i64], ptr %1248, i64 0, i64 0
  %1250 = load i64, ptr %1249, align 8, !tbaa !38
  %1251 = and i64 %1250, 67108864
  %1252 = icmp ne i64 %1251, 0
  br i1 %1252, label %1255, label %1253

1253:                                             ; preds = %1245
  %1254 = load ptr, ptr %3, align 8, !tbaa !5
  call void @MissingRequired(ptr noundef %1254, ptr noundef @.str.16)
  br label %1607

1255:                                             ; preds = %1245, %1239
  %1256 = load ptr, ptr %3, align 8, !tbaa !5
  %1257 = getelementptr inbounds %struct.tiff, ptr %1256, i32 0, i32 8
  %1258 = getelementptr inbounds %struct.TIFFDirectory, ptr %1257, i32 0, i32 0
  %1259 = getelementptr inbounds [4 x i64], ptr %1258, i64 0, i64 0
  %1260 = load i64, ptr %1259, align 8, !tbaa !38
  %1261 = and i64 %1260, 16777216
  %1262 = icmp ne i64 %1261, 0
  br i1 %1262, label %1309, label %1263

1263:                                             ; preds = %1255
  %1264 = load ptr, ptr %5, align 8, !tbaa !5
  %1265 = getelementptr inbounds %struct.TIFFDirectory, ptr %1264, i32 0, i32 24
  %1266 = load i16, ptr %1265, align 2, !tbaa !66
  %1267 = zext i16 %1266 to i32
  %1268 = icmp eq i32 %1267, 1
  br i1 %1268, label %1269, label %1274

1269:                                             ; preds = %1263
  %1270 = load ptr, ptr %5, align 8, !tbaa !5
  %1271 = getelementptr inbounds %struct.TIFFDirectory, ptr %1270, i32 0, i32 33
  %1272 = load i32, ptr %1271, align 4, !tbaa !58
  %1273 = icmp ugt i32 %1272, 1
  br i1 %1273, label %1289, label %1274

1274:                                             ; preds = %1269, %1263
  %1275 = load ptr, ptr %5, align 8, !tbaa !5
  %1276 = getelementptr inbounds %struct.TIFFDirectory, ptr %1275, i32 0, i32 24
  %1277 = load i16, ptr %1276, align 2, !tbaa !66
  %1278 = zext i16 %1277 to i32
  %1279 = icmp eq i32 %1278, 2
  br i1 %1279, label %1280, label %1291

1280:                                             ; preds = %1274
  %1281 = load ptr, ptr %5, align 8, !tbaa !5
  %1282 = getelementptr inbounds %struct.TIFFDirectory, ptr %1281, i32 0, i32 33
  %1283 = load i32, ptr %1282, align 4, !tbaa !58
  %1284 = load ptr, ptr %5, align 8, !tbaa !5
  %1285 = getelementptr inbounds %struct.TIFFDirectory, ptr %1284, i32 0, i32 15
  %1286 = load i16, ptr %1285, align 2, !tbaa !51
  %1287 = zext i16 %1286 to i32
  %1288 = icmp ne i32 %1283, %1287
  br i1 %1288, label %1289, label %1291

1289:                                             ; preds = %1280, %1269
  %1290 = load ptr, ptr %3, align 8, !tbaa !5
  call void @MissingRequired(ptr noundef %1290, ptr noundef @.str.17)
  br label %1607

1291:                                             ; preds = %1280, %1274
  %1292 = load ptr, ptr %3, align 8, !tbaa !5
  %1293 = getelementptr inbounds %struct.tiff, ptr %1292, i32 0, i32 51
  %1294 = load ptr, ptr %1293, align 8, !tbaa !25
  %1295 = load ptr, ptr %3, align 8, !tbaa !5
  %1296 = getelementptr inbounds %struct.tiff, ptr %1295, i32 0, i32 0
  %1297 = load ptr, ptr %1296, align 8, !tbaa !26
  %1298 = load ptr, ptr %3, align 8, !tbaa !5
  %1299 = call ptr @TIFFFieldWithTag(ptr noundef %1298, i32 noundef 279)
  %1300 = getelementptr inbounds %struct.TIFFFieldInfo, ptr %1299, i32 0, i32 7
  %1301 = load ptr, ptr %1300, align 8, !tbaa !48
  call void (ptr, ptr, ptr, ...) @TIFFWarningExt(ptr noundef %1294, ptr noundef @TIFFReadDirectory.module, ptr noundef @.str.18, ptr noundef %1297, ptr noundef %1301)
  %1302 = load ptr, ptr %3, align 8, !tbaa !5
  %1303 = load ptr, ptr %7, align 8, !tbaa !5
  %1304 = load i16, ptr %12, align 2, !tbaa !32
  %1305 = call i32 @EstimateStripByteCounts(ptr noundef %1302, ptr noundef %1303, i16 noundef zeroext %1304)
  %1306 = icmp slt i32 %1305, 0
  br i1 %1306, label %1307, label %1308

1307:                                             ; preds = %1291
  br label %1607

1308:                                             ; preds = %1291
  br label %1452

1309:                                             ; preds = %1255
  %1310 = load ptr, ptr %5, align 8, !tbaa !5
  %1311 = getelementptr inbounds %struct.TIFFDirectory, ptr %1310, i32 0, i32 33
  %1312 = load i32, ptr %1311, align 4, !tbaa !58
  %1313 = icmp eq i32 %1312, 1
  br i1 %1313, label %1314, label %1403

1314:                                             ; preds = %1309
  %1315 = load ptr, ptr %5, align 8, !tbaa !5
  %1316 = getelementptr inbounds %struct.TIFFDirectory, ptr %1315, i32 0, i32 34
  %1317 = load ptr, ptr %1316, align 8, !tbaa !71
  %1318 = getelementptr inbounds i32, ptr %1317, i64 0
  %1319 = load i32, ptr %1318, align 4, !tbaa !9
  %1320 = icmp ne i32 %1319, 0
  br i1 %1320, label %1321, label %1403

1321:                                             ; preds = %1314
  %1322 = load ptr, ptr %5, align 8, !tbaa !5
  %1323 = getelementptr inbounds %struct.TIFFDirectory, ptr %1322, i32 0, i32 35
  %1324 = load ptr, ptr %1323, align 8, !tbaa !72
  %1325 = getelementptr inbounds i32, ptr %1324, i64 0
  %1326 = load i32, ptr %1325, align 4, !tbaa !9
  %1327 = icmp eq i32 %1326, 0
  br i1 %1327, label %1328, label %1335

1328:                                             ; preds = %1321
  %1329 = load ptr, ptr %5, align 8, !tbaa !5
  %1330 = getelementptr inbounds %struct.TIFFDirectory, ptr %1329, i32 0, i32 34
  %1331 = load ptr, ptr %1330, align 8, !tbaa !71
  %1332 = getelementptr inbounds i32, ptr %1331, i64 0
  %1333 = load i32, ptr %1332, align 4, !tbaa !9
  %1334 = icmp ne i32 %1333, 0
  br i1 %1334, label %1385, label %1335

1335:                                             ; preds = %1328, %1321
  %1336 = load ptr, ptr %5, align 8, !tbaa !5
  %1337 = getelementptr inbounds %struct.TIFFDirectory, ptr %1336, i32 0, i32 10
  %1338 = load i16, ptr %1337, align 8, !tbaa !73
  %1339 = zext i16 %1338 to i32
  %1340 = icmp eq i32 %1339, 1
  br i1 %1340, label %1341, label %1361

1341:                                             ; preds = %1335
  %1342 = load ptr, ptr %5, align 8, !tbaa !5
  %1343 = getelementptr inbounds %struct.TIFFDirectory, ptr %1342, i32 0, i32 35
  %1344 = load ptr, ptr %1343, align 8, !tbaa !72
  %1345 = getelementptr inbounds i32, ptr %1344, i64 0
  %1346 = load i32, ptr %1345, align 4, !tbaa !9
  %1347 = load ptr, ptr %3, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.tiff, ptr %1347, i32 0, i32 56
  %1349 = load ptr, ptr %1348, align 8, !tbaa !74
  %1350 = load ptr, ptr %3, align 8, !tbaa !5
  %1351 = getelementptr inbounds %struct.tiff, ptr %1350, i32 0, i32 51
  %1352 = load ptr, ptr %1351, align 8, !tbaa !25
  %1353 = call i32 %1349(ptr noundef %1352)
  %1354 = load ptr, ptr %5, align 8, !tbaa !5
  %1355 = getelementptr inbounds %struct.TIFFDirectory, ptr %1354, i32 0, i32 34
  %1356 = load ptr, ptr %1355, align 8, !tbaa !71
  %1357 = getelementptr inbounds i32, ptr %1356, i64 0
  %1358 = load i32, ptr %1357, align 4, !tbaa !9
  %1359 = sub i32 %1353, %1358
  %1360 = icmp ugt i32 %1346, %1359
  br i1 %1360, label %1385, label %1361

1361:                                             ; preds = %1341, %1335
  %1362 = load ptr, ptr %3, align 8, !tbaa !5
  %1363 = getelementptr inbounds %struct.tiff, ptr %1362, i32 0, i32 2
  %1364 = load i32, ptr %1363, align 4, !tbaa !75
  %1365 = icmp eq i32 %1364, 0
  br i1 %1365, label %1366, label %1403

1366:                                             ; preds = %1361
  %1367 = load ptr, ptr %5, align 8, !tbaa !5
  %1368 = getelementptr inbounds %struct.TIFFDirectory, ptr %1367, i32 0, i32 10
  %1369 = load i16, ptr %1368, align 8, !tbaa !73
  %1370 = zext i16 %1369 to i32
  %1371 = icmp eq i32 %1370, 1
  br i1 %1371, label %1372, label %1403

1372:                                             ; preds = %1366
  %1373 = load ptr, ptr %5, align 8, !tbaa !5
  %1374 = getelementptr inbounds %struct.TIFFDirectory, ptr %1373, i32 0, i32 35
  %1375 = load ptr, ptr %1374, align 8, !tbaa !72
  %1376 = getelementptr inbounds i32, ptr %1375, i64 0
  %1377 = load i32, ptr %1376, align 4, !tbaa !9
  %1378 = load ptr, ptr %3, align 8, !tbaa !5
  %1379 = call i32 @TIFFScanlineSize(ptr noundef %1378)
  %1380 = load ptr, ptr %5, align 8, !tbaa !5
  %1381 = getelementptr inbounds %struct.TIFFDirectory, ptr %1380, i32 0, i32 2
  %1382 = load i32, ptr %1381, align 4, !tbaa !76
  %1383 = mul i32 %1379, %1382
  %1384 = icmp ult i32 %1377, %1383
  br i1 %1384, label %1385, label %1403

1385:                                             ; preds = %1372, %1341, %1328
  %1386 = load ptr, ptr %3, align 8, !tbaa !5
  %1387 = getelementptr inbounds %struct.tiff, ptr %1386, i32 0, i32 51
  %1388 = load ptr, ptr %1387, align 8, !tbaa !25
  %1389 = load ptr, ptr %3, align 8, !tbaa !5
  %1390 = getelementptr inbounds %struct.tiff, ptr %1389, i32 0, i32 0
  %1391 = load ptr, ptr %1390, align 8, !tbaa !26
  %1392 = load ptr, ptr %3, align 8, !tbaa !5
  %1393 = call ptr @TIFFFieldWithTag(ptr noundef %1392, i32 noundef 279)
  %1394 = getelementptr inbounds %struct.TIFFFieldInfo, ptr %1393, i32 0, i32 7
  %1395 = load ptr, ptr %1394, align 8, !tbaa !48
  call void (ptr, ptr, ptr, ...) @TIFFWarningExt(ptr noundef %1388, ptr noundef @TIFFReadDirectory.module, ptr noundef @.str.19, ptr noundef %1391, ptr noundef %1395)
  %1396 = load ptr, ptr %3, align 8, !tbaa !5
  %1397 = load ptr, ptr %7, align 8, !tbaa !5
  %1398 = load i16, ptr %12, align 2, !tbaa !32
  %1399 = call i32 @EstimateStripByteCounts(ptr noundef %1396, ptr noundef %1397, i16 noundef zeroext %1398)
  %1400 = icmp slt i32 %1399, 0
  br i1 %1400, label %1401, label %1402

1401:                                             ; preds = %1385
  br label %1607

1402:                                             ; preds = %1385
  br label %1451

1403:                                             ; preds = %1372, %1366, %1361, %1314, %1309
  %1404 = load ptr, ptr %5, align 8, !tbaa !5
  %1405 = getelementptr inbounds %struct.TIFFDirectory, ptr %1404, i32 0, i32 24
  %1406 = load i16, ptr %1405, align 2, !tbaa !66
  %1407 = zext i16 %1406 to i32
  %1408 = icmp eq i32 %1407, 1
  br i1 %1408, label %1409, label %1450

1409:                                             ; preds = %1403
  %1410 = load ptr, ptr %5, align 8, !tbaa !5
  %1411 = getelementptr inbounds %struct.TIFFDirectory, ptr %1410, i32 0, i32 33
  %1412 = load i32, ptr %1411, align 4, !tbaa !58
  %1413 = icmp ugt i32 %1412, 2
  br i1 %1413, label %1414, label %1450

1414:                                             ; preds = %1409
  %1415 = load ptr, ptr %5, align 8, !tbaa !5
  %1416 = getelementptr inbounds %struct.TIFFDirectory, ptr %1415, i32 0, i32 10
  %1417 = load i16, ptr %1416, align 8, !tbaa !73
  %1418 = zext i16 %1417 to i32
  %1419 = icmp eq i32 %1418, 1
  br i1 %1419, label %1420, label %1450

1420:                                             ; preds = %1414
  %1421 = load ptr, ptr %5, align 8, !tbaa !5
  %1422 = getelementptr inbounds %struct.TIFFDirectory, ptr %1421, i32 0, i32 35
  %1423 = load ptr, ptr %1422, align 8, !tbaa !72
  %1424 = getelementptr inbounds i32, ptr %1423, i64 0
  %1425 = load i32, ptr %1424, align 4, !tbaa !9
  %1426 = load ptr, ptr %5, align 8, !tbaa !5
  %1427 = getelementptr inbounds %struct.TIFFDirectory, ptr %1426, i32 0, i32 35
  %1428 = load ptr, ptr %1427, align 8, !tbaa !72
  %1429 = getelementptr inbounds i32, ptr %1428, i64 1
  %1430 = load i32, ptr %1429, align 4, !tbaa !9
  %1431 = icmp ne i32 %1425, %1430
  br i1 %1431, label %1432, label %1450

1432:                                             ; preds = %1420
  %1433 = load ptr, ptr %3, align 8, !tbaa !5
  %1434 = getelementptr inbounds %struct.tiff, ptr %1433, i32 0, i32 51
  %1435 = load ptr, ptr %1434, align 8, !tbaa !25
  %1436 = load ptr, ptr %3, align 8, !tbaa !5
  %1437 = getelementptr inbounds %struct.tiff, ptr %1436, i32 0, i32 0
  %1438 = load ptr, ptr %1437, align 8, !tbaa !26
  %1439 = load ptr, ptr %3, align 8, !tbaa !5
  %1440 = call ptr @TIFFFieldWithTag(ptr noundef %1439, i32 noundef 279)
  %1441 = getelementptr inbounds %struct.TIFFFieldInfo, ptr %1440, i32 0, i32 7
  %1442 = load ptr, ptr %1441, align 8, !tbaa !48
  call void (ptr, ptr, ptr, ...) @TIFFWarningExt(ptr noundef %1435, ptr noundef @TIFFReadDirectory.module, ptr noundef @.str.20, ptr noundef %1438, ptr noundef %1442)
  %1443 = load ptr, ptr %3, align 8, !tbaa !5
  %1444 = load ptr, ptr %7, align 8, !tbaa !5
  %1445 = load i16, ptr %12, align 2, !tbaa !32
  %1446 = call i32 @EstimateStripByteCounts(ptr noundef %1443, ptr noundef %1444, i16 noundef zeroext %1445)
  %1447 = icmp slt i32 %1446, 0
  br i1 %1447, label %1448, label %1449

1448:                                             ; preds = %1432
  br label %1607

1449:                                             ; preds = %1432
  br label %1450

1450:                                             ; preds = %1449, %1420, %1414, %1409, %1403
  br label %1451

1451:                                             ; preds = %1450, %1402
  br label %1452

1452:                                             ; preds = %1451, %1308
  %1453 = load ptr, ptr %7, align 8, !tbaa !5
  %1454 = icmp ne ptr %1453, null
  br i1 %1454, label %1455, label %1457

1455:                                             ; preds = %1452
  %1456 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_TIFFfree(ptr noundef %1456)
  store ptr null, ptr %7, align 8, !tbaa !5
  br label %1457

1457:                                             ; preds = %1455, %1452
  %1458 = load ptr, ptr %3, align 8, !tbaa !5
  %1459 = getelementptr inbounds %struct.tiff, ptr %1458, i32 0, i32 8
  %1460 = getelementptr inbounds %struct.TIFFDirectory, ptr %1459, i32 0, i32 0
  %1461 = getelementptr inbounds [4 x i64], ptr %1460, i64 0, i64 0
  %1462 = load i64, ptr %1461, align 8, !tbaa !38
  %1463 = and i64 %1462, 524288
  %1464 = icmp ne i64 %1463, 0
  br i1 %1464, label %1476, label %1465

1465:                                             ; preds = %1457
  %1466 = load ptr, ptr %5, align 8, !tbaa !5
  %1467 = getelementptr inbounds %struct.TIFFDirectory, ptr %1466, i32 0, i32 8
  %1468 = load i16, ptr %1467, align 4, !tbaa !68
  %1469 = zext i16 %1468 to i32
  %1470 = zext i32 %1469 to i64
  %1471 = shl i64 1, %1470
  %1472 = sub nsw i64 %1471, 1
  %1473 = trunc i64 %1472 to i16
  %1474 = load ptr, ptr %5, align 8, !tbaa !5
  %1475 = getelementptr inbounds %struct.TIFFDirectory, ptr %1474, i32 0, i32 18
  store i16 %1473, ptr %1475, align 2, !tbaa !77
  br label %1476

1476:                                             ; preds = %1465, %1457
  %1477 = load ptr, ptr %5, align 8, !tbaa !5
  %1478 = getelementptr inbounds %struct.TIFFDirectory, ptr %1477, i32 0, i32 33
  %1479 = load i32, ptr %1478, align 4, !tbaa !58
  %1480 = icmp ugt i32 %1479, 1
  br i1 %1480, label %1481, label %1515

1481:                                             ; preds = %1476
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  %1482 = load ptr, ptr %5, align 8, !tbaa !5
  %1483 = getelementptr inbounds %struct.TIFFDirectory, ptr %1482, i32 0, i32 36
  store i32 1, ptr %1483, align 8, !tbaa !78
  store i32 1, ptr %22, align 4, !tbaa !9
  br label %1484

1484:                                             ; preds = %1511, %1481
  %1485 = load i32, ptr %22, align 4, !tbaa !9
  %1486 = load ptr, ptr %5, align 8, !tbaa !5
  %1487 = getelementptr inbounds %struct.TIFFDirectory, ptr %1486, i32 0, i32 33
  %1488 = load i32, ptr %1487, align 4, !tbaa !58
  %1489 = icmp ult i32 %1485, %1488
  br i1 %1489, label %1490, label %1514

1490:                                             ; preds = %1484
  %1491 = load ptr, ptr %5, align 8, !tbaa !5
  %1492 = getelementptr inbounds %struct.TIFFDirectory, ptr %1491, i32 0, i32 34
  %1493 = load ptr, ptr %1492, align 8, !tbaa !71
  %1494 = load i32, ptr %22, align 4, !tbaa !9
  %1495 = sub i32 %1494, 1
  %1496 = zext i32 %1495 to i64
  %1497 = getelementptr inbounds i32, ptr %1493, i64 %1496
  %1498 = load i32, ptr %1497, align 4, !tbaa !9
  %1499 = load ptr, ptr %5, align 8, !tbaa !5
  %1500 = getelementptr inbounds %struct.TIFFDirectory, ptr %1499, i32 0, i32 34
  %1501 = load ptr, ptr %1500, align 8, !tbaa !71
  %1502 = load i32, ptr %22, align 4, !tbaa !9
  %1503 = zext i32 %1502 to i64
  %1504 = getelementptr inbounds i32, ptr %1501, i64 %1503
  %1505 = load i32, ptr %1504, align 4, !tbaa !9
  %1506 = icmp ugt i32 %1498, %1505
  br i1 %1506, label %1507, label %1510

1507:                                             ; preds = %1490
  %1508 = load ptr, ptr %5, align 8, !tbaa !5
  %1509 = getelementptr inbounds %struct.TIFFDirectory, ptr %1508, i32 0, i32 36
  store i32 0, ptr %1509, align 8, !tbaa !78
  br label %1514

1510:                                             ; preds = %1490
  br label %1511

1511:                                             ; preds = %1510
  %1512 = load i32, ptr %22, align 4, !tbaa !9
  %1513 = add i32 %1512, 1
  store i32 %1513, ptr %22, align 4, !tbaa !9
  br label %1484, !llvm.loop !79

1514:                                             ; preds = %1507, %1484
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  br label %1515

1515:                                             ; preds = %1514, %1476
  %1516 = load ptr, ptr %3, align 8, !tbaa !5
  %1517 = getelementptr inbounds %struct.tiff, ptr %1516, i32 0, i32 8
  %1518 = getelementptr inbounds %struct.TIFFDirectory, ptr %1517, i32 0, i32 0
  %1519 = getelementptr inbounds [4 x i64], ptr %1518, i64 0, i64 0
  %1520 = load i64, ptr %1519, align 8, !tbaa !38
  %1521 = and i64 %1520, 128
  %1522 = icmp ne i64 %1521, 0
  br i1 %1522, label %1526, label %1523

1523:                                             ; preds = %1515
  %1524 = load ptr, ptr %3, align 8, !tbaa !5
  %1525 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef %1524, i32 noundef 259, i32 noundef 1)
  br label %1526

1526:                                             ; preds = %1523, %1515
  %1527 = load ptr, ptr %5, align 8, !tbaa !5
  %1528 = getelementptr inbounds %struct.TIFFDirectory, ptr %1527, i32 0, i32 33
  %1529 = load i32, ptr %1528, align 4, !tbaa !58
  %1530 = icmp eq i32 %1529, 1
  br i1 %1530, label %1531, label %1545

1531:                                             ; preds = %1526
  %1532 = load ptr, ptr %5, align 8, !tbaa !5
  %1533 = getelementptr inbounds %struct.TIFFDirectory, ptr %1532, i32 0, i32 10
  %1534 = load i16, ptr %1533, align 8, !tbaa !73
  %1535 = zext i16 %1534 to i32
  %1536 = icmp eq i32 %1535, 1
  br i1 %1536, label %1537, label %1545

1537:                                             ; preds = %1531
  %1538 = load ptr, ptr %3, align 8, !tbaa !5
  %1539 = getelementptr inbounds %struct.tiff, ptr %1538, i32 0, i32 3
  %1540 = load i32, ptr %1539, align 8, !tbaa !29
  %1541 = and i32 %1540, 33792
  %1542 = icmp eq i32 %1541, 32768
  br i1 %1542, label %1543, label %1545

1543:                                             ; preds = %1537
  %1544 = load ptr, ptr %3, align 8, !tbaa !5
  call void @ChopUpSingleUncompressedStrip(ptr noundef %1544)
  br label %1545

1545:                                             ; preds = %1543, %1537, %1531, %1526
  %1546 = load ptr, ptr %3, align 8, !tbaa !5
  %1547 = getelementptr inbounds %struct.tiff, ptr %1546, i32 0, i32 12
  store i32 -1, ptr %1547, align 8, !tbaa !80
  %1548 = load ptr, ptr %3, align 8, !tbaa !5
  %1549 = getelementptr inbounds %struct.tiff, ptr %1548, i32 0, i32 14
  store i32 -1, ptr %1549, align 8, !tbaa !81
  %1550 = load ptr, ptr %3, align 8, !tbaa !5
  %1551 = getelementptr inbounds %struct.tiff, ptr %1550, i32 0, i32 19
  store i32 -1, ptr %1551, align 4, !tbaa !82
  %1552 = load ptr, ptr %3, align 8, !tbaa !5
  %1553 = getelementptr inbounds %struct.tiff, ptr %1552, i32 0, i32 20
  store i32 -1, ptr %1553, align 8, !tbaa !83
  %1554 = load ptr, ptr %3, align 8, !tbaa !5
  %1555 = getelementptr inbounds %struct.tiff, ptr %1554, i32 0, i32 21
  store i32 -1, ptr %1555, align 4, !tbaa !84
  %1556 = load ptr, ptr %3, align 8, !tbaa !5
  %1557 = call i32 @TIFFScanlineSize(ptr noundef %1556)
  %1558 = load ptr, ptr %3, align 8, !tbaa !5
  %1559 = getelementptr inbounds %struct.tiff, ptr %1558, i32 0, i32 41
  store i32 %1557, ptr %1559, align 8, !tbaa !85
  %1560 = load ptr, ptr %3, align 8, !tbaa !5
  %1561 = getelementptr inbounds %struct.tiff, ptr %1560, i32 0, i32 41
  %1562 = load i32, ptr %1561, align 8, !tbaa !85
  %1563 = icmp ne i32 %1562, 0
  br i1 %1563, label %1571, label %1564

1564:                                             ; preds = %1545
  %1565 = load ptr, ptr %3, align 8, !tbaa !5
  %1566 = getelementptr inbounds %struct.tiff, ptr %1565, i32 0, i32 51
  %1567 = load ptr, ptr %1566, align 8, !tbaa !25
  %1568 = load ptr, ptr %3, align 8, !tbaa !5
  %1569 = getelementptr inbounds %struct.tiff, ptr %1568, i32 0, i32 0
  %1570 = load ptr, ptr %1569, align 8, !tbaa !26
  call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %1567, ptr noundef @TIFFReadDirectory.module, ptr noundef @.str.21, ptr noundef %1570)
  store i32 0, ptr %2, align 4
  store i32 1, ptr %16, align 4
  br label %1613

1571:                                             ; preds = %1545
  %1572 = load ptr, ptr %3, align 8, !tbaa !5
  %1573 = getelementptr inbounds %struct.tiff, ptr %1572, i32 0, i32 3
  %1574 = load i32, ptr %1573, align 8, !tbaa !29
  %1575 = and i32 %1574, 1024
  %1576 = icmp ne i32 %1575, 0
  br i1 %1576, label %1577, label %1594

1577:                                             ; preds = %1571
  %1578 = load ptr, ptr %3, align 8, !tbaa !5
  %1579 = call i32 @TIFFTileSize(ptr noundef %1578)
  %1580 = load ptr, ptr %3, align 8, !tbaa !5
  %1581 = getelementptr inbounds %struct.tiff, ptr %1580, i32 0, i32 21
  store i32 %1579, ptr %1581, align 4, !tbaa !84
  %1582 = load ptr, ptr %3, align 8, !tbaa !5
  %1583 = getelementptr inbounds %struct.tiff, ptr %1582, i32 0, i32 21
  %1584 = load i32, ptr %1583, align 4, !tbaa !84
  %1585 = icmp ne i32 %1584, 0
  br i1 %1585, label %1593, label %1586

1586:                                             ; preds = %1577
  %1587 = load ptr, ptr %3, align 8, !tbaa !5
  %1588 = getelementptr inbounds %struct.tiff, ptr %1587, i32 0, i32 51
  %1589 = load ptr, ptr %1588, align 8, !tbaa !25
  %1590 = load ptr, ptr %3, align 8, !tbaa !5
  %1591 = getelementptr inbounds %struct.tiff, ptr %1590, i32 0, i32 0
  %1592 = load ptr, ptr %1591, align 8, !tbaa !26
  call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %1589, ptr noundef @TIFFReadDirectory.module, ptr noundef @.str.22, ptr noundef %1592)
  store i32 0, ptr %2, align 4
  store i32 1, ptr %16, align 4
  br label %1613

1593:                                             ; preds = %1577
  br label %1606

1594:                                             ; preds = %1571
  %1595 = load ptr, ptr %3, align 8, !tbaa !5
  %1596 = call i32 @TIFFStripSize(ptr noundef %1595)
  %1597 = icmp ne i32 %1596, 0
  br i1 %1597, label %1605, label %1598

1598:                                             ; preds = %1594
  %1599 = load ptr, ptr %3, align 8, !tbaa !5
  %1600 = getelementptr inbounds %struct.tiff, ptr %1599, i32 0, i32 51
  %1601 = load ptr, ptr %1600, align 8, !tbaa !25
  %1602 = load ptr, ptr %3, align 8, !tbaa !5
  %1603 = getelementptr inbounds %struct.tiff, ptr %1602, i32 0, i32 0
  %1604 = load ptr, ptr %1603, align 8, !tbaa !26
  call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %1601, ptr noundef @TIFFReadDirectory.module, ptr noundef @.str.23, ptr noundef %1604)
  store i32 0, ptr %2, align 4
  store i32 1, ptr %16, align 4
  br label %1613

1605:                                             ; preds = %1594
  br label %1606

1606:                                             ; preds = %1605, %1593
  store i32 1, ptr %2, align 4
  store i32 1, ptr %16, align 4
  br label %1613

1607:                                             ; preds = %1448, %1401, %1307, %1289, %1253, %1077, %1064, %1050, %1030, %1013, %983, %890, %848, %800, %782, %751, %734, %710, %353, %300, %183
  %1608 = load ptr, ptr %7, align 8, !tbaa !5
  %1609 = icmp ne ptr %1608, null
  br i1 %1609, label %1610, label %1612

1610:                                             ; preds = %1607
  %1611 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_TIFFfree(ptr noundef %1611)
  br label %1612

1612:                                             ; preds = %1610, %1607
  store i32 0, ptr %2, align 4
  store i32 1, ptr %16, align 4
  br label %1613

1613:                                             ; preds = %1612, %1606, %1598, %1586, %1564, %1050, %300, %164, %143, %127, %75, %53, %32
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #3
  %1614 = load i32, ptr %2, align 4
  ret i32 %1614

1615:                                             ; preds = %637
  unreachable
}

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

declare ptr @_TIFFrealloc(ptr noundef, i32 noundef) #2

declare void @TIFFErrorExt(ptr noundef, ptr noundef, ptr noundef, ...) #2

declare void @TIFFSwabShort(ptr noundef) #2

declare ptr @_TIFFCheckMalloc(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #2

declare void @_TIFFmemcpy(ptr noundef, ptr noundef, i32 noundef) #2

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

declare void @TIFFSwabLong(ptr noundef) #2

declare void @TIFFFreeDirectory(ptr noundef) #2

declare i32 @TIFFDefaultDirectory(ptr noundef) #2

declare i32 @TIFFSetField(ptr noundef, i32 noundef, ...) #2

declare void @TIFFSwabArrayOfShort(ptr noundef, i64 noundef) #2

declare void @TIFFSwabArrayOfLong(ptr noundef, i64 noundef) #2

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

declare void @TIFFWarningExt(ptr noundef, ptr noundef, ptr noundef, ...) #2

declare void @TIFFMergeFieldInfo(ptr noundef, ptr noundef, i32 noundef) #2

declare ptr @_TIFFCreateAnonFieldInfo(ptr noundef, i32 noundef, i32 noundef) #2

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

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

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

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

declare i32 @TIFFNumberOfStrips(ptr noundef) #2

declare i32 @TIFFNumberOfTiles(ptr noundef) #2

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

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

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

declare void @_TIFFfree(ptr noundef) #2

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

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

declare ptr @TIFFFieldWithTag(ptr noundef, i32 noundef) #2

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

declare i32 @TIFFScanlineSize(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden void @ChopUpSingleUncompressedStrip(ptr noundef) #0

declare i32 @TIFFTileSize(ptr noundef) #2

declare i32 @TIFFStripSize(ptr noundef) #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 24}
!12 = !{!"tiff", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !6, i64 32, !13, i64 40, !14, i64 48, !17, i64 320, !6, i64 328, !6, i64 336, !10, i64 344, !13, i64 348, !10, i64 352, !10, i64 356, !10, i64 360, !13, i64 364, !10, i64 368, !10, i64 372, !10, i64 376, !10, i64 380, !10, i64 384, !6, i64 392, !6, i64 400, !6, i64 408, !10, i64 416, !6, i64 424, !6, i64 432, !6, i64 440, !6, i64 448, !6, i64 456, !6, i64 464, !6, i64 472, !6, i64 480, !6, i64 488, !6, i64 496, !6, i64 504, !6, i64 512, !6, i64 520, !6, i64 528, !10, i64 536, !10, i64 540, !6, i64 544, !10, i64 552, !6, i64 560, !10, i64 568, !6, i64 576, !10, i64 584, !6, i64 592, !6, i64 600, !6, i64 608, !6, i64 616, !6, i64 624, !6, i64 632, !6, i64 640, !6, i64 648, !6, i64 656, !6, i64 664, !18, i64 672, !6, i64 680, !19, i64 688, !6, i64 712}
!13 = !{!"short", !7, i64 0}
!14 = !{!"", !7, i64 0, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !13, i64 60, !13, i64 62, !13, i64 64, !13, i64 66, !13, i64 68, !13, i64 70, !13, i64 72, !13, i64 74, !10, i64 76, !13, i64 80, !13, i64 82, !15, i64 88, !15, i64 96, !16, i64 104, !16, i64 108, !13, i64 112, !13, i64 114, !16, i64 116, !16, i64 120, !7, i64 124, !7, i64 128, !7, i64 152, !13, i64 156, !6, i64 160, !10, i64 168, !10, i64 172, !6, i64 176, !6, i64 184, !10, i64 192, !13, i64 196, !6, i64 200, !7, i64 208, !13, i64 212, !7, i64 216, !10, i64 240, !6, i64 248, !10, i64 256, !6, i64 264}
!15 = !{!"double", !7, i64 0}
!16 = !{!"float", !7, i64 0}
!17 = !{!"", !13, i64 0, !13, i64 2, !10, i64 4}
!18 = !{!"long", !7, i64 0}
!19 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!12, !10, i64 20}
!21 = !{!12, !13, i64 40}
!22 = !{!12, !6, i64 32}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!12, !6, i64 608}
!26 = !{!12, !6, i64 0}
!27 = !{!12, !6, i64 504}
!28 = !{!12, !13, i64 348}
!29 = !{!12, !10, i64 16}
!30 = !{!12, !6, i64 632}
!31 = !{!12, !6, i64 616}
!32 = !{!13, !13, i64 0}
!33 = !{!12, !10, i64 584}
!34 = !{!12, !6, i64 576}
!35 = !{!36, !13, i64 0}
!36 = !{!"", !13, i64 0, !13, i64 2, !10, i64 4, !10, i64 8}
!37 = distinct !{!37, !24}
!38 = !{!18, !18, i64 0}
!39 = !{!12, !18, i64 672}
!40 = !{!12, !6, i64 664}
!41 = !{!42, !10, i64 0}
!42 = !{!"", !10, i64 0, !13, i64 4, !13, i64 6, !10, i64 8, !13, i64 12, !7, i64 14, !7, i64 15, !6, i64 16}
!43 = distinct !{!43, !24}
!44 = !{!36, !13, i64 2}
!45 = distinct !{!45, !24}
!46 = !{!42, !13, i64 12}
!47 = !{!42, !10, i64 8}
!48 = !{!42, !6, i64 16}
!49 = distinct !{!49, !24}
!50 = !{!42, !13, i64 4}
!51 = !{!14, !13, i64 74}
!52 = !{!36, !10, i64 4}
!53 = !{!12, !13, i64 320}
!54 = !{!36, !10, i64 8}
!55 = !{!12, !6, i64 328}
!56 = !{!12, !6, i64 336}
!57 = distinct !{!57, !24}
!58 = !{!14, !10, i64 172}
!59 = !{!14, !10, i64 32}
!60 = !{!14, !10, i64 44}
!61 = !{!14, !10, i64 76}
!62 = !{!14, !10, i64 48}
!63 = !{!14, !10, i64 40}
!64 = !{!14, !10, i64 52}
!65 = !{!14, !10, i64 168}
!66 = !{!14, !13, i64 114}
!67 = !{!15, !15, i64 0}
!68 = !{!14, !13, i64 60}
!69 = distinct !{!69, !24}
!70 = !{!14, !13, i64 66}
!71 = !{!14, !6, i64 176}
!72 = !{!14, !6, i64 184}
!73 = !{!14, !13, i64 64}
!74 = !{!12, !6, i64 648}
!75 = !{!12, !10, i64 12}
!76 = !{!14, !10, i64 36}
!77 = !{!14, !13, i64 82}
!78 = !{!14, !10, i64 192}
!79 = distinct !{!79, !24}
!80 = !{!12, !10, i64 344}
!81 = !{!12, !10, i64 352}
!82 = !{!12, !10, i64 372}
!83 = !{!12, !10, i64 376}
!84 = !{!12, !10, i64 380}
!85 = !{!12, !10, i64 536}


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

@TIFFReadDirectory.module = external hidden constant [18 x i8], align 16
@.str = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [34 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 2) i32 @TIFFReadDirectory(ptr noundef %0) local_unnamed_addr #0 {
  %2 = alloca i16, align 2
  %3 = alloca i32, align 4
  %4 = alloca i16, align 2
  %5 = alloca i32, align 4
  %6 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %2) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #3
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %4) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #3
  %7 = getelementptr inbounds i8, ptr %0, i64 24
  %8 = load i32, ptr %7, align 8, !tbaa !5
  %9 = getelementptr inbounds i8, ptr %0, i64 20
  store i32 %8, ptr %9, align 4, !tbaa !18
  %10 = icmp eq i32 %8, 0
  br i1 %10, label %.thread, label %.preheader488

.preheader488:                                    ; preds = %1
  %11 = getelementptr inbounds i8, ptr %0, i64 40
  %12 = load i16, ptr %11, align 8, !tbaa !19
  %.not528 = icmp eq i16 %12, 0
  %.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 32
  %.pre = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !20
  br i1 %.not528, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader488
  %wide.trip.count = zext i16 %12 to i64
  br label %14

13:                                               ; preds = %14
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %14, !llvm.loop !21

14:                                               ; preds = %.lr.ph, %13
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %13 ]
  %15 = getelementptr inbounds i32, ptr %.pre, i64 %indvars.iv
  %16 = load i32, ptr %15, align 4, !tbaa !23
  %17 = icmp eq i32 %16, %8
  br i1 %17, label %.thread, label %13

._crit_edge:                                      ; preds = %13, %.preheader488
  %18 = add i16 %12, 1
  store i16 %18, ptr %11, align 8, !tbaa !19
  %19 = zext i16 %18 to i32
  %20 = shl nuw nsw i32 %19, 2
  %21 = tail call ptr @_TIFFrealloc(ptr noundef %.pre, i32 noundef %20) #3
  %.not = icmp eq ptr %21, null
  br i1 %.not, label %22, label %26

22:                                               ; preds = %._crit_edge
  %23 = getelementptr inbounds i8, ptr %0, i64 608
  %24 = load ptr, ptr %23, align 8, !tbaa !24
  %25 = load ptr, ptr %0, align 8, !tbaa !25
  tail call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %24, ptr noundef nonnull @TIFFReadDirectory.module, ptr noundef nonnull @.str, ptr noundef %25) #3
  br label %.thread

26:                                               ; preds = %._crit_edge
  %27 = getelementptr inbounds i8, ptr %0, i64 32
  store ptr %21, ptr %27, align 8, !tbaa !20
  %28 = load i32, ptr %9, align 4, !tbaa !18
  %29 = load i16, ptr %11, align 8, !tbaa !19
  %30 = zext i16 %29 to i64
  %31 = getelementptr i32, ptr %21, i64 %30
  %32 = getelementptr i8, ptr %31, i64 -4
  store i32 %28, ptr %32, align 4, !tbaa !23
  %33 = getelementptr inbounds i8, ptr %0, i64 504
  %34 = load ptr, ptr %33, align 8, !tbaa !26
  tail call void %34(ptr noundef nonnull %0) #3
  %35 = getelementptr inbounds i8, ptr %0, i64 348
  %36 = load i16, ptr %35, align 4, !tbaa !27
  %37 = add i16 %36, 1
  store i16 %37, ptr %35, align 4, !tbaa !27
  store i32 0, ptr %5, align 4, !tbaa !23
  %38 = getelementptr inbounds i8, ptr %0, i64 16
  %39 = load i32, ptr %38, align 8, !tbaa !28
  %40 = and i32 %39, 2048
  %.not412 = icmp eq i32 %40, 0
  br i1 %.not412, label %41, label %89

41:                                               ; preds = %26
  %42 = getelementptr inbounds i8, ptr %0, i64 632
  %43 = load ptr, ptr %42, align 8, !tbaa !29
  %44 = getelementptr inbounds i8, ptr %0, i64 608
  %45 = load ptr, ptr %44, align 8, !tbaa !24
  %46 = load i32, ptr %9, align 4, !tbaa !18
  %47 = tail call i32 %43(ptr noundef %45, i32 noundef %46, i32 noundef 0) #3
  %48 = load i32, ptr %9, align 4, !tbaa !18
  %49 = icmp eq i32 %47, %48
  br i1 %49, label %53, label %50

50:                                               ; preds = %41
  %51 = load ptr, ptr %44, align 8, !tbaa !24
  %52 = load ptr, ptr %0, align 8, !tbaa !25
  tail call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %51, ptr noundef nonnull @TIFFReadDirectory.module, ptr noundef nonnull @.str.1, ptr noundef %52) #3
  br label %.thread

53:                                               ; preds = %41
  %54 = getelementptr inbounds i8, ptr %0, i64 616
  %55 = load ptr, ptr %54, align 8, !tbaa !30
  %56 = load ptr, ptr %44, align 8, !tbaa !24
  %57 = call i32 %55(ptr noundef %56, ptr noundef nonnull %4, i32 noundef 2) #3
  %58 = icmp eq i32 %57, 2
  br i1 %58, label %62, label %59

59:                                               ; preds = %53
  %60 = load ptr, ptr %44, align 8, !tbaa !24
  %61 = load ptr, ptr %0, align 8, !tbaa !25
  call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %60, ptr noundef nonnull @TIFFReadDirectory.module, ptr noundef nonnull @.str.2, ptr noundef %61) #3
  br label %.thread

62:                                               ; preds = %53
  %63 = load i32, ptr %38, align 8, !tbaa !28
  %64 = and i32 %63, 128
  %.not413 = icmp eq i32 %64, 0
  br i1 %.not413, label %66, label %65

65:                                               ; preds = %62
  call void @TIFFSwabShort(ptr noundef nonnull %4) #3
  br label %66

66:                                               ; preds = %65, %62
  %67 = load i16, ptr %4, align 2, !tbaa !31
  %68 = zext i16 %67 to i64
  %69 = call ptr @_TIFFCheckMalloc(ptr noundef nonnull %0, i64 noundef %68, i64 noundef 12, ptr noundef nonnull @.str.3) #3
  %70 = icmp eq ptr %69, null
  br i1 %70, label %.thread, label %71

71:                                               ; preds = %66
  %72 = load ptr, ptr %54, align 8, !tbaa !30
  %73 = load ptr, ptr %44, align 8, !tbaa !24
  %74 = load i16, ptr %4, align 2, !tbaa !31
  %75 = zext i16 %74 to i32
  %76 = mul nuw nsw i32 %75, 12
  %77 = call i32 %72(ptr noundef %73, ptr noundef nonnull %69, i32 noundef %76) #3
  %78 = load i16, ptr %4, align 2, !tbaa !31
  %79 = zext i16 %78 to i32
  %80 = mul nuw nsw i32 %79, 12
  %81 = icmp eq i32 %77, %80
  br i1 %81, label %85, label %82

82:                                               ; preds = %71
  %83 = load ptr, ptr %44, align 8, !tbaa !24
  %84 = load ptr, ptr %0, align 8, !tbaa !25
  call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %83, ptr noundef nonnull @TIFFReadDirectory.module, ptr noundef nonnull @.str.4, ptr noundef %84) #3
  br label %.thread482

85:                                               ; preds = %71
  %86 = load ptr, ptr %54, align 8, !tbaa !30
  %87 = load ptr, ptr %44, align 8, !tbaa !24
  %88 = call i32 %86(ptr noundef %87, ptr noundef nonnull %5, i32 noundef 4) #3
  br label %.thread471

89:                                               ; preds = %26
  %90 = load i32, ptr %9, align 4, !tbaa !18
  %91 = zext i32 %90 to i64
  %92 = add nuw nsw i64 %91, 2
  %93 = getelementptr inbounds i8, ptr %0, i64 584
  %94 = load i32, ptr %93, align 8, !tbaa !32
  %95 = zext i32 %94 to i64
  %96 = icmp ugt i64 %92, %95
  br i1 %96, label %97, label %101

97:                                               ; preds = %89
  %98 = getelementptr inbounds i8, ptr %0, i64 608
  %99 = load ptr, ptr %98, align 8, !tbaa !24
  %100 = load ptr, ptr %0, align 8, !tbaa !25
  tail call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %99, ptr noundef nonnull @TIFFReadDirectory.module, ptr noundef nonnull @.str.2, ptr noundef %100) #3
  br label %.thread

101:                                              ; preds = %89
  %102 = getelementptr inbounds i8, ptr %0, i64 576
  %103 = load ptr, ptr %102, align 8, !tbaa !33
  %104 = getelementptr inbounds i8, ptr %103, i64 %91
  call void @_TIFFmemcpy(ptr noundef nonnull %4, ptr noundef %104, i32 noundef 2) #3
  %105 = load i32, ptr %38, align 8, !tbaa !28
  %106 = and i32 %105, 128
  %.not414 = icmp eq i32 %106, 0
  br i1 %.not414, label %108, label %107

107:                                              ; preds = %101
  call void @TIFFSwabShort(ptr noundef nonnull %4) #3
  br label %108

108:                                              ; preds = %107, %101
  %109 = load i16, ptr %4, align 2, !tbaa !31
  %110 = zext i16 %109 to i64
  %111 = call ptr @_TIFFCheckMalloc(ptr noundef nonnull %0, i64 noundef %110, i64 noundef 12, ptr noundef nonnull @.str.3) #3
  %112 = icmp eq ptr %111, null
  br i1 %112, label %.thread, label %113

113:                                              ; preds = %108
  %114 = load i16, ptr %4, align 2, !tbaa !31
  %115 = zext i16 %114 to i64
  %116 = mul nuw nsw i64 %115, 12
  %117 = add nuw nsw i64 %116, %92
  %118 = load i32, ptr %93, align 8, !tbaa !32
  %119 = zext i32 %118 to i64
  %120 = icmp ugt i64 %117, %119
  br i1 %120, label %136, label %121

121:                                              ; preds = %113
  %122 = load ptr, ptr %102, align 8, !tbaa !33
  %123 = getelementptr inbounds i8, ptr %122, i64 %92
  %124 = trunc nuw nsw i64 %116 to i32
  call void @_TIFFmemcpy(ptr noundef nonnull %111, ptr noundef nonnull %123, i32 noundef %124) #3
  %125 = load i16, ptr %4, align 2, !tbaa !31
  %126 = zext i16 %125 to i64
  %127 = mul nuw nsw i64 %126, 12
  %128 = add nuw nsw i64 %127, %92
  %129 = and i64 %128, 4294967295
  %130 = add nuw nsw i64 %129, 4
  %131 = load i32, ptr %93, align 8, !tbaa !32
  %132 = zext i32 %131 to i64
  %.not415 = icmp ugt i64 %130, %132
  br i1 %.not415, label %.thread471, label %133

133:                                              ; preds = %121
  %134 = load ptr, ptr %102, align 8, !tbaa !33
  %135 = getelementptr inbounds i8, ptr %134, i64 %129
  call void @_TIFFmemcpy(ptr noundef nonnull %5, ptr noundef %135, i32 noundef 4) #3
  br label %.thread471

136:                                              ; preds = %113
  %137 = getelementptr inbounds i8, ptr %0, i64 608
  %138 = load ptr, ptr %137, align 8, !tbaa !24
  %139 = load ptr, ptr %0, align 8, !tbaa !25
  call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %138, ptr noundef nonnull @TIFFReadDirectory.module, ptr noundef nonnull @.str.5, ptr noundef %139) #3
  br label %.thread482

.thread471:                                       ; preds = %121, %133, %85
  %.1389 = phi ptr [ %69, %85 ], [ %111, %133 ], [ %111, %121 ]
  %140 = load i32, ptr %38, align 8, !tbaa !28
  %141 = and i32 %140, 128
  %.not416 = icmp eq i32 %141, 0
  br i1 %.not416, label %143, label %142

142:                                              ; preds = %.thread471
  call void @TIFFSwabLong(ptr noundef nonnull %5) #3
  %.pre546 = load i32, ptr %38, align 8, !tbaa !28
  br label %143

143:                                              ; preds = %142, %.thread471
  %144 = phi i32 [ %.pre546, %142 ], [ %140, %.thread471 ]
  %145 = load i32, ptr %5, align 4, !tbaa !23
  store i32 %145, ptr %7, align 8, !tbaa !5
  %146 = and i32 %144, -65
  store i32 %146, ptr %38, align 8, !tbaa !28
  %147 = getelementptr inbounds i8, ptr %0, i64 48
  call void @TIFFFreeDirectory(ptr noundef nonnull %0) #3
  %148 = call i32 @TIFFDefaultDirectory(ptr noundef nonnull %0) #3
  %149 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef nonnull %0, i32 noundef 284, i32 noundef 1) #3
  %150 = load i16, ptr %4, align 2, !tbaa !31
  %.not529 = icmp eq i16 %150, 0
  br i1 %.not529, label %._crit_edge521, label %.lr.ph503.preheader

.lr.ph503.preheader:                              ; preds = %143
  %151 = zext i16 %150 to i32
  br label %.lr.ph503

.lr.ph503:                                        ; preds = %.lr.ph503.preheader, %162
  %.1380501 = phi i32 [ %163, %162 ], [ %151, %.lr.ph503.preheader ]
  %.0382500 = phi ptr [ %164, %162 ], [ %.1389, %.lr.ph503.preheader ]
  %152 = load i32, ptr %38, align 8, !tbaa !28
  %153 = and i32 %152, 128
  %.not465 = icmp eq i32 %153, 0
  br i1 %.not465, label %156, label %154

154:                                              ; preds = %.lr.ph503
  call void @TIFFSwabArrayOfShort(ptr noundef nonnull %.0382500, i64 noundef 2) #3
  %155 = getelementptr inbounds i8, ptr %.0382500, i64 4
  call void @TIFFSwabArrayOfLong(ptr noundef nonnull %155, i64 noundef 2) #3
  br label %156

156:                                              ; preds = %154, %.lr.ph503
  %157 = load i16, ptr %.0382500, align 4, !tbaa !34
  %158 = icmp eq i16 %157, 277
  br i1 %158, label %159, label %162

159:                                              ; preds = %156
  %160 = call i32 @TIFFFetchNormalTag(ptr noundef nonnull %0, ptr noundef nonnull %.0382500)
  %.not466 = icmp eq i32 %160, 0
  br i1 %.not466, label %.thread482, label %161

161:                                              ; preds = %159
  store i16 0, ptr %.0382500, align 4, !tbaa !34
  br label %162

162:                                              ; preds = %156, %161
  %163 = add nsw i32 %.1380501, -1
  %164 = getelementptr inbounds i8, ptr %.0382500, i64 12
  %165 = icmp sgt i32 %.1380501, 1
  br i1 %165, label %.lr.ph503, label %._crit_edge504, !llvm.loop !36

._crit_edge504:                                   ; preds = %162
  %.pre547 = load i16, ptr %4, align 2, !tbaa !31
  %.not530 = icmp eq i16 %.pre547, 0
  br i1 %.not530, label %._crit_edge521, label %.lr.ph520

.lr.ph520:                                        ; preds = %._crit_edge504
  %166 = zext i16 %.pre547 to i32
  %167 = getelementptr inbounds i8, ptr %0, i64 672
  %168 = getelementptr inbounds i8, ptr %0, i64 664
  %169 = getelementptr inbounds i8, ptr %0, i64 608
  %170 = getelementptr inbounds i8, ptr %0, i64 122
  %171 = getelementptr inbounds i8, ptr %0, i64 320
  %172 = getelementptr inbounds i8, ptr %0, i64 336
  %173 = getelementptr inbounds i8, ptr %0, i64 328
  br label %174

174:                                              ; preds = %.lr.ph520, %326
  %.2381518 = phi i32 [ %166, %.lr.ph520 ], [ %327, %326 ]
  %.1383515 = phi ptr [ %.1389, %.lr.ph520 ], [ %328, %326 ]
  %.0391514 = phi i32 [ 0, %.lr.ph520 ], [ %.3394, %326 ]
  %.0395513 = phi i64 [ 0, %.lr.ph520 ], [ %.7, %326 ]
  %175 = load i64, ptr %167, align 8, !tbaa !37
  %.not449 = icmp ult i64 %.0395513, %175
  br i1 %.not449, label %176, label %326

176:                                              ; preds = %174
  %177 = load i16, ptr %.1383515, align 4, !tbaa !34
  %178 = icmp eq i16 %177, 0
  br i1 %178, label %326, label %179

179:                                              ; preds = %176
  %180 = zext i16 %177 to i32
  %181 = load ptr, ptr %168, align 8, !tbaa !38
  %182 = getelementptr inbounds ptr, ptr %181, i64 %.0395513
  %183 = load ptr, ptr %182, align 8, !tbaa !39
  %184 = load i32, ptr %183, align 8, !tbaa !40
  %185 = icmp ugt i32 %184, %180
  br i1 %185, label %186, label %190

186:                                              ; preds = %179
  %.not450 = icmp eq i32 %.0391514, 0
  br i1 %.not450, label %187, label %190

187:                                              ; preds = %186
  %188 = load ptr, ptr %169, align 8, !tbaa !24
  %189 = load ptr, ptr %0, align 8, !tbaa !25
  call void (ptr, ptr, ptr, ...) @TIFFWarningExt(ptr noundef %188, ptr noundef nonnull @TIFFReadDirectory.module, ptr noundef nonnull @.str.6, ptr noundef %189) #3
  %.pre548 = load i64, ptr %167, align 8, !tbaa !37
  %.pre549.pre = load i16, ptr %.1383515, align 4, !tbaa !34
  br label %190

190:                                              ; preds = %186, %187, %179
  %.pre549 = phi i16 [ %177, %179 ], [ %.pre549.pre, %187 ], [ %177, %186 ]
  %191 = phi i64 [ %175, %179 ], [ %.pre548, %187 ], [ %175, %186 ]
  %.1396 = phi i64 [ %.0395513, %179 ], [ 0, %187 ], [ 0, %186 ]
  %.2393 = phi i32 [ %.0391514, %179 ], [ 1, %187 ], [ 1, %186 ]
  %192 = icmp ult i64 %.1396, %191
  br i1 %192, label %.lr.ph507, label %..critedge_crit_edge

..critedge_crit_edge:                             ; preds = %190
  %.pre562 = zext i16 %.pre549 to i32
  br label %.critedge

.lr.ph507:                                        ; preds = %190
  %193 = load ptr, ptr %168, align 8, !tbaa !38
  %194 = zext i16 %.pre549 to i32
  br label %195

195:                                              ; preds = %.lr.ph507, %200
  %.2397505 = phi i64 [ %.1396, %.lr.ph507 ], [ %201, %200 ]
  %196 = getelementptr inbounds ptr, ptr %193, i64 %.2397505
  %197 = load ptr, ptr %196, align 8, !tbaa !39
  %198 = load i32, ptr %197, align 8, !tbaa !40
  %199 = icmp ult i32 %198, %194
  br i1 %199, label %200, label %202

200:                                              ; preds = %195
  %201 = add i64 %.2397505, 1
  %exitcond539.not = icmp eq i64 %201, %191
  br i1 %exitcond539.not, label %.critedge, label %195, !llvm.loop !42

202:                                              ; preds = %195
  %.not452 = icmp eq i32 %198, %194
  br i1 %.not452, label %.critedge2, label %.critedge

.critedge:                                        ; preds = %200, %..critedge_crit_edge, %202
  %.pre-phi = phi i32 [ %.pre562, %..critedge_crit_edge ], [ %194, %202 ], [ %194, %200 ]
  %203 = load ptr, ptr %169, align 8, !tbaa !24
  %204 = load ptr, ptr %0, align 8, !tbaa !25
  %205 = getelementptr inbounds i8, ptr %.1383515, i64 2
  %206 = load i16, ptr %205, align 2, !tbaa !43
  %207 = zext i16 %206 to i32
  call void (ptr, ptr, ptr, ...) @TIFFWarningExt(ptr noundef %203, ptr noundef nonnull @TIFFReadDirectory.module, ptr noundef nonnull @.str.7, ptr noundef %204, i32 noundef %.pre-phi, i32 noundef %.pre-phi, i32 noundef %207) #3
  %208 = load i16, ptr %.1383515, align 4, !tbaa !34
  %209 = zext i16 %208 to i32
  %210 = load i16, ptr %205, align 2, !tbaa !43
  %211 = zext i16 %210 to i32
  %212 = call ptr @_TIFFCreateAnonFieldInfo(ptr noundef nonnull %0, i32 noundef %209, i32 noundef %211) #3
  call void @TIFFMergeFieldInfo(ptr noundef nonnull %0, ptr noundef %212, i32 noundef 1) #3
  %213 = load i64, ptr %167, align 8, !tbaa !37
  %.not531 = icmp eq i64 %213, 0
  %.pre550 = load ptr, ptr %168, align 8, !tbaa !38
  br i1 %.not531, label %.critedge2, label %.lr.ph509

.lr.ph509:                                        ; preds = %.critedge
  %214 = load i16, ptr %.1383515, align 4, !tbaa !34
  %215 = zext i16 %214 to i32
  br label %216

216:                                              ; preds = %.lr.ph509, %221
  %.3398508 = phi i64 [ 0, %.lr.ph509 ], [ %222, %221 ]
  %217 = getelementptr inbounds ptr, ptr %.pre550, i64 %.3398508
  %218 = load ptr, ptr %217, align 8, !tbaa !39
  %219 = load i32, ptr %218, align 8, !tbaa !40
  %220 = icmp ult i32 %219, %215
  br i1 %220, label %221, label %.critedge2

221:                                              ; preds = %216
  %222 = add nuw i64 %.3398508, 1
  %exitcond540.not = icmp eq i64 %222, %213
  br i1 %exitcond540.not, label %.critedge2, label %216, !llvm.loop !44

.critedge2:                                       ; preds = %221, %216, %.critedge, %202
  %223 = phi i64 [ %191, %202 ], [ 0, %.critedge ], [ %213, %216 ], [ %213, %221 ]
  %224 = phi ptr [ %193, %202 ], [ %.pre550, %.critedge ], [ %.pre550, %216 ], [ %.pre550, %221 ]
  %.4 = phi i64 [ %.2397505, %202 ], [ 0, %.critedge ], [ %213, %221 ], [ %.3398508, %216 ]
  %225 = getelementptr inbounds ptr, ptr %224, i64 %.4
  %226 = load ptr, ptr %225, align 8, !tbaa !39
  %227 = getelementptr inbounds i8, ptr %226, i64 12
  %228 = load i16, ptr %227, align 4, !tbaa !45
  %229 = icmp eq i16 %228, 0
  br i1 %229, label %232, label %.preheader

.preheader:                                       ; preds = %.critedge2
  %230 = getelementptr inbounds i8, ptr %.1383515, i64 2
  %231 = load i16, ptr %230, align 2, !tbaa !43
  br label %233

232:                                              ; preds = %262, %.critedge2, %248
  %.5 = phi i64 [ %.4, %.critedge2 ], [ %.6, %262 ], [ %241, %248 ]
  store i16 0, ptr %.1383515, align 4, !tbaa !34
  br label %326

233:                                              ; preds = %.preheader, %242
  %.0399 = phi ptr [ %244, %242 ], [ %226, %.preheader ]
  %.6 = phi i64 [ %241, %242 ], [ %.4, %.preheader ]
  %234 = getelementptr inbounds i8, ptr %.0399, i64 8
  %235 = load i32, ptr %234, align 8, !tbaa !46
  %236 = trunc i32 %235 to i16
  %.not453 = icmp eq i16 %231, %236
  br i1 %.not453, label %.critedge4, label %237

237:                                              ; preds = %233
  %238 = icmp uge i64 %.6, %223
  %239 = icmp eq i32 %235, 0
  %or.cond = or i1 %239, %238
  br i1 %or.cond, label %.critedge4, label %240

240:                                              ; preds = %237
  %241 = add nuw i64 %.6, 1
  %.not454 = icmp ult i64 %241, %223
  br i1 %.not454, label %242, label %248

242:                                              ; preds = %240
  %243 = getelementptr inbounds ptr, ptr %224, i64 %241
  %244 = load ptr, ptr %243, align 8, !tbaa !39
  %245 = load i32, ptr %244, align 8, !tbaa !40
  %246 = load i16, ptr %.1383515, align 4, !tbaa !34
  %247 = zext i16 %246 to i32
  %.not455 = icmp eq i32 %245, %247
  br i1 %.not455, label %233, label %248, !llvm.loop !47

248:                                              ; preds = %242, %240
  %249 = load ptr, ptr %169, align 8, !tbaa !24
  %250 = load ptr, ptr %0, align 8, !tbaa !25
  %251 = zext i16 %231 to i32
  %252 = getelementptr inbounds ptr, ptr %224, i64 %.6
  %253 = load ptr, ptr %252, align 8, !tbaa !39
  %254 = getelementptr inbounds i8, ptr %253, i64 16
  %255 = load ptr, ptr %254, align 8, !tbaa !48
  call void (ptr, ptr, ptr, ...) @TIFFWarningExt(ptr noundef %249, ptr noundef nonnull @TIFFReadDirectory.module, ptr noundef nonnull @.str.8, ptr noundef %250, i32 noundef %251, ptr noundef %255) #3
  br label %232

.critedge4:                                       ; preds = %233, %237
  %256 = getelementptr inbounds i8, ptr %.0399, i64 4
  %257 = load i16, ptr %256, align 4, !tbaa !49
  %258 = sext i16 %257 to i32
  switch i16 %257, label %262 [
    i16 -1, label %265
    i16 -3, label %265
    i16 -2, label %259
  ]

259:                                              ; preds = %.critedge4
  %260 = load i16, ptr %170, align 2, !tbaa !50
  %261 = zext i16 %260 to i32
  br label %262

262:                                              ; preds = %.critedge4, %259
  %263 = phi i32 [ %261, %259 ], [ %258, %.critedge4 ]
  %264 = call i32 @CheckDirCount(ptr noundef nonnull %0, ptr noundef nonnull %.1383515, i32 noundef %263)
  %.not458 = icmp eq i32 %264, 0
  br i1 %.not458, label %232, label %265

265:                                              ; preds = %262, %.critedge4, %.critedge4
  %266 = load i16, ptr %.1383515, align 4, !tbaa !34
  switch i16 %266, label %326 [
    i16 259, label %267
    i16 273, label %311
    i16 279, label %311
    i16 324, label %311
    i16 325, label %311
    i16 256, label %323
    i16 257, label %323
    i16 -32539, label %323
    i16 323, label %323
    i16 322, label %323
    i16 -32538, label %323
    i16 284, label %323
    i16 278, label %323
    i16 338, label %323
  ]

267:                                              ; preds = %265
  %268 = getelementptr inbounds i8, ptr %.1383515, i64 4
  %269 = load i32, ptr %268, align 4, !tbaa !51
  %270 = icmp eq i32 %269, 1
  br i1 %270, label %271, label %291

271:                                              ; preds = %267
  %272 = load i16, ptr %171, align 8, !tbaa !52
  %273 = icmp eq i16 %272, 19789
  %274 = getelementptr inbounds i8, ptr %.1383515, i64 8
  %275 = load i32, ptr %274, align 4, !tbaa !53
  %276 = load i16, ptr %230, align 2, !tbaa !43
  %277 = zext i16 %276 to i64
  br i1 %273, label %278, label %283

278:                                              ; preds = %271
  %279 = load ptr, ptr %173, align 8, !tbaa !54
  %280 = getelementptr inbounds i32, ptr %279, i64 %277
  %281 = load i32, ptr %280, align 4, !tbaa !23
  %282 = lshr i32 %275, %281
  br label %283

283:                                              ; preds = %271, %278
  %.sink573.in = phi i32 [ %282, %278 ], [ %275, %271 ]
  %284 = load ptr, ptr %172, align 8, !tbaa !55
  %285 = getelementptr inbounds i64, ptr %284, i64 %277
  %286 = load i64, ptr %285, align 8, !tbaa !56
  %287 = trunc i64 %286 to i32
  %288 = and i32 %.sink573.in, %287
  store i32 %288, ptr %3, align 4, !tbaa !23
  %289 = and i32 %288, 65535
  %290 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef nonnull %0, i32 noundef 259, i32 noundef %289) #3
  %.not464 = icmp eq i32 %290, 0
  br i1 %.not464, label %.thread482, label %326

291:                                              ; preds = %267
  %292 = load i16, ptr %230, align 2, !tbaa !43
  %293 = icmp eq i16 %292, 4
  br i1 %293, label %294, label %302

294:                                              ; preds = %291
  %295 = call i32 @TIFFFetchPerSampleLongs(ptr noundef nonnull %0, ptr noundef nonnull %.1383515, ptr noundef nonnull %3)
  %.not462 = icmp eq i32 %295, 0
  br i1 %.not462, label %.thread482, label %296

296:                                              ; preds = %294
  %297 = load i16, ptr %.1383515, align 4, !tbaa !34
  %298 = zext i16 %297 to i32
  %299 = load i32, ptr %3, align 4, !tbaa !23
  %300 = and i32 %299, 65535
  %301 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef nonnull %0, i32 noundef %298, i32 noundef %300) #3
  %.not463 = icmp eq i32 %301, 0
  br i1 %.not463, label %.thread482, label %310

302:                                              ; preds = %291
  %303 = call i32 @TIFFFetchPerSampleShorts(ptr noundef nonnull %0, ptr noundef nonnull %.1383515, ptr noundef nonnull %2)
  %.not460 = icmp eq i32 %303, 0
  br i1 %.not460, label %.thread482, label %304

304:                                              ; preds = %302
  %305 = load i16, ptr %.1383515, align 4, !tbaa !34
  %306 = zext i16 %305 to i32
  %307 = load i16, ptr %2, align 2, !tbaa !31
  %308 = zext i16 %307 to i32
  %309 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef nonnull %0, i32 noundef %306, i32 noundef %308) #3
  %.not461 = icmp eq i32 %309, 0
  br i1 %.not461, label %.thread482, label %310

310:                                              ; preds = %296, %304
  store i16 0, ptr %.1383515, align 4, !tbaa !34
  br label %326

311:                                              ; preds = %265, %265, %265, %265
  %312 = getelementptr inbounds i8, ptr %.0399, i64 12
  %313 = load i16, ptr %312, align 4, !tbaa !45
  %314 = zext i16 %313 to i32
  %315 = and i32 %314, 31
  %316 = zext nneg i32 %315 to i64
  %317 = shl nuw nsw i64 1, %316
  %318 = lshr i32 %314, 5
  %319 = zext nneg i32 %318 to i64
  %320 = getelementptr inbounds [4 x i64], ptr %147, i64 0, i64 %319
  %321 = load i64, ptr %320, align 8, !tbaa !56
  %322 = or i64 %317, %321
  store i64 %322, ptr %320, align 8, !tbaa !56
  br label %326

323:                                              ; preds = %265, %265, %265, %265, %265, %265, %265, %265, %265
  %324 = call i32 @TIFFFetchNormalTag(ptr noundef nonnull %0, ptr noundef nonnull %.1383515)
  %.not459 = icmp eq i32 %324, 0
  br i1 %.not459, label %.thread482, label %325

325:                                              ; preds = %323
  store i16 0, ptr %.1383515, align 4, !tbaa !34
  br label %326

326:                                              ; preds = %265, %310, %311, %325, %283, %174, %176, %232
  %.7 = phi i64 [ %.0395513, %174 ], [ %.0395513, %176 ], [ %.5, %232 ], [ %.6, %265 ], [ %.6, %325 ], [ %.6, %311 ], [ %.6, %283 ], [ %.6, %310 ]
  %.3394 = phi i32 [ %.0391514, %174 ], [ %.0391514, %176 ], [ %.2393, %232 ], [ %.2393, %265 ], [ %.2393, %325 ], [ %.2393, %311 ], [ %.2393, %283 ], [ %.2393, %310 ]
  %327 = add nsw i32 %.2381518, -1
  %328 = getelementptr inbounds i8, ptr %.1383515, i64 12
  %329 = icmp sgt i32 %.2381518, 1
  br i1 %329, label %174, label %._crit_edge521, !llvm.loop !57

._crit_edge521:                                   ; preds = %326, %143, %._crit_edge504
  %330 = load i64, ptr %147, align 8, !tbaa !56
  %331 = and i64 %330, 2
  %.not417 = icmp eq i64 %331, 0
  br i1 %.not417, label %332, label %333

332:                                              ; preds = %._crit_edge521
  call void @MissingRequired(ptr noundef nonnull %0, ptr noundef nonnull @.str.9)
  br label %.thread482

333:                                              ; preds = %._crit_edge521
  %334 = and i64 %330, 4
  %.not418 = icmp eq i64 %334, 0
  br i1 %.not418, label %335, label %348

335:                                              ; preds = %333
  %336 = call i32 @TIFFNumberOfStrips(ptr noundef nonnull %0) #3
  %337 = getelementptr inbounds i8, ptr %0, i64 80
  %338 = load i32, ptr %337, align 8, !tbaa !58
  %339 = getelementptr inbounds i8, ptr %0, i64 92
  store i32 %338, ptr %339, align 4, !tbaa !59
  %340 = getelementptr inbounds i8, ptr %0, i64 124
  %341 = load i32, ptr %340, align 4, !tbaa !60
  %342 = getelementptr inbounds i8, ptr %0, i64 96
  store i32 %341, ptr %342, align 8, !tbaa !61
  %343 = getelementptr inbounds i8, ptr %0, i64 88
  %344 = load i32, ptr %343, align 8, !tbaa !62
  %345 = getelementptr inbounds i8, ptr %0, i64 100
  store i32 %344, ptr %345, align 4, !tbaa !63
  %346 = load i32, ptr %38, align 8, !tbaa !28
  %347 = and i32 %346, -1025
  br label %352

348:                                              ; preds = %333
  %349 = call i32 @TIFFNumberOfTiles(ptr noundef nonnull %0) #3
  %350 = load i32, ptr %38, align 8, !tbaa !28
  %351 = or i32 %350, 1024
  br label %352

352:                                              ; preds = %348, %335
  %.sink = phi i32 [ %336, %335 ], [ %349, %348 ]
  %storemerge = phi i32 [ %347, %335 ], [ %351, %348 ]
  %353 = getelementptr inbounds i8, ptr %0, i64 220
  store i32 %.sink, ptr %353, align 4
  store i32 %storemerge, ptr %38, align 8, !tbaa !28
  %.not419 = icmp eq i32 %.sink, 0
  br i1 %.not419, label %354, label %360

354:                                              ; preds = %352
  %355 = getelementptr inbounds i8, ptr %0, i64 608
  %356 = load ptr, ptr %355, align 8, !tbaa !24
  %357 = load ptr, ptr %0, align 8, !tbaa !25
  %358 = and i32 %storemerge, 1024
  %.not420 = icmp eq i32 %358, 0
  %359 = select i1 %.not420, ptr @.str.12, ptr @.str.11
  call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %356, ptr noundef nonnull @TIFFReadDirectory.module, ptr noundef nonnull @.str.10, ptr noundef %357, ptr noundef nonnull %359) #3
  br label %.thread482

360:                                              ; preds = %352
  %361 = getelementptr inbounds i8, ptr %0, i64 216
  store i32 %.sink, ptr %361, align 8, !tbaa !64
  %362 = getelementptr inbounds i8, ptr %0, i64 162
  %363 = load i16, ptr %362, align 2, !tbaa !65
  %364 = icmp eq i16 %363, 2
  br i1 %364, label %365, label %370

365:                                              ; preds = %360
  %366 = getelementptr inbounds i8, ptr %0, i64 122
  %367 = load i16, ptr %366, align 2, !tbaa !50
  %368 = zext i16 %367 to i32
  %369 = udiv i32 %.sink, %368
  store i32 %369, ptr %361, align 8, !tbaa !64
  br label %370

370:                                              ; preds = %365, %360
  %371 = load i64, ptr %147, align 8, !tbaa !56
  %372 = and i64 %371, 33554432
  %.not421 = icmp eq i64 %372, 0
  br i1 %.not421, label %373, label %376

373:                                              ; preds = %370
  %374 = and i32 %storemerge, 1024
  %.not422 = icmp eq i32 %374, 0
  %375 = select i1 %.not422, ptr @.str.14, ptr @.str.13
  call void @MissingRequired(ptr noundef nonnull %0, ptr noundef nonnull %375)
  br label %.thread482

376:                                              ; preds = %370
  %377 = load i16, ptr %4, align 2, !tbaa !31
  %.not532 = icmp eq i16 %377, 0
  br i1 %.not532, label %._crit_edge526, label %.lr.ph525

.lr.ph525:                                        ; preds = %376
  %378 = zext i16 %377 to i32
  %379 = getelementptr inbounds i8, ptr %0, i64 320
  %380 = getelementptr inbounds i8, ptr %0, i64 336
  %381 = getelementptr inbounds i8, ptr %0, i64 328
  %382 = getelementptr inbounds i8, ptr %0, i64 108
  %383 = getelementptr inbounds i8, ptr %0, i64 232
  %384 = getelementptr inbounds i8, ptr %0, i64 224
  br label %385

385:                                              ; preds = %.lr.ph525, %518
  %.3523 = phi i32 [ %378, %.lr.ph525 ], [ %519, %518 ]
  %.2384522 = phi ptr [ %.1389, %.lr.ph525 ], [ %520, %518 ]
  %386 = load i16, ptr %.2384522, align 4, !tbaa !34
  switch i16 %386, label %516 [
    i16 0, label %518
    i16 280, label %387
    i16 281, label %387
    i16 258, label %387
    i16 -32540, label %387
    i16 339, label %387
    i16 340, label %435
    i16 341, label %435
    i16 273, label %443
    i16 324, label %443
    i16 279, label %447
    i16 325, label %447
    i16 320, label %451
    i16 301, label %451
    i16 297, label %491
    i16 321, label %491
    i16 530, label %491
    i16 336, label %491
    i16 532, label %493
    i16 255, label %495
  ]

387:                                              ; preds = %385, %385, %385, %385, %385
  %388 = getelementptr inbounds i8, ptr %.2384522, i64 4
  %389 = load i32, ptr %388, align 4, !tbaa !51
  %390 = icmp eq i32 %389, 1
  br i1 %390, label %391, label %413

391:                                              ; preds = %387
  %392 = load i16, ptr %379, align 8, !tbaa !52
  %393 = icmp eq i16 %392, 19789
  %394 = getelementptr inbounds i8, ptr %.2384522, i64 8
  %395 = load i32, ptr %394, align 4, !tbaa !53
  %396 = getelementptr inbounds i8, ptr %.2384522, i64 2
  %397 = load i16, ptr %396, align 2, !tbaa !43
  %398 = zext i16 %397 to i64
  br i1 %393, label %399, label %404

399:                                              ; preds = %391
  %400 = load ptr, ptr %381, align 8, !tbaa !54
  %401 = getelementptr inbounds i32, ptr %400, i64 %398
  %402 = load i32, ptr %401, align 4, !tbaa !23
  %403 = lshr i32 %395, %402
  br label %404

404:                                              ; preds = %391, %399
  %.sink576.in = phi i32 [ %403, %399 ], [ %395, %391 ]
  %405 = load ptr, ptr %380, align 8, !tbaa !55
  %406 = getelementptr inbounds i64, ptr %405, i64 %398
  %407 = load i64, ptr %406, align 8, !tbaa !56
  %408 = trunc i64 %407 to i32
  %409 = and i32 %.sink576.in, %408
  store i32 %409, ptr %3, align 4, !tbaa !23
  %410 = zext i16 %386 to i32
  %411 = and i32 %409, 65535
  %412 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef nonnull %0, i32 noundef %410, i32 noundef %411) #3
  %.not448 = icmp eq i32 %412, 0
  br i1 %.not448, label %.thread482, label %518

413:                                              ; preds = %387
  %414 = icmp eq i16 %386, 258
  br i1 %414, label %415, label %427

415:                                              ; preds = %413
  %416 = getelementptr inbounds i8, ptr %.2384522, i64 2
  %417 = load i16, ptr %416, align 2, !tbaa !43
  %418 = icmp eq i16 %417, 4
  br i1 %418, label %419, label %427

419:                                              ; preds = %415
  %420 = call i32 @TIFFFetchPerSampleLongs(ptr noundef %0, ptr noundef nonnull %.2384522, ptr noundef nonnull %3)
  %.not446 = icmp eq i32 %420, 0
  br i1 %.not446, label %.thread482, label %421

421:                                              ; preds = %419
  %422 = load i16, ptr %.2384522, align 4, !tbaa !34
  %423 = zext i16 %422 to i32
  %424 = load i32, ptr %3, align 4, !tbaa !23
  %425 = and i32 %424, 65535
  %426 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef %0, i32 noundef %423, i32 noundef %425) #3
  %.not447 = icmp eq i32 %426, 0
  br i1 %.not447, label %.thread482, label %518

427:                                              ; preds = %415, %413
  %428 = call i32 @TIFFFetchPerSampleShorts(ptr noundef %0, ptr noundef nonnull %.2384522, ptr noundef nonnull %2)
  %.not444 = icmp eq i32 %428, 0
  br i1 %.not444, label %.thread482, label %429

429:                                              ; preds = %427
  %430 = load i16, ptr %.2384522, align 4, !tbaa !34
  %431 = zext i16 %430 to i32
  %432 = load i16, ptr %2, align 2, !tbaa !31
  %433 = zext i16 %432 to i32
  %434 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef %0, i32 noundef %431, i32 noundef %433) #3
  %.not445 = icmp eq i32 %434, 0
  br i1 %.not445, label %.thread482, label %518

435:                                              ; preds = %385, %385
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #3
  store double 0.000000e+00, ptr %6, align 8, !tbaa !66
  %436 = call i32 @TIFFFetchPerSampleAnys(ptr noundef %0, ptr noundef nonnull %.2384522, ptr noundef nonnull %6)
  %.not442 = icmp eq i32 %436, 0
  br i1 %.not442, label %.thread475, label %437

437:                                              ; preds = %435
  %438 = load i16, ptr %.2384522, align 4, !tbaa !34
  %439 = zext i16 %438 to i32
  %440 = load double, ptr %6, align 8, !tbaa !66
  %441 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef %0, i32 noundef %439, double noundef %440) #3
  %.not443 = icmp eq i32 %441, 0
  br i1 %.not443, label %.thread475, label %442

.thread475:                                       ; preds = %435, %437
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #3
  br label %.thread482

442:                                              ; preds = %437
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #3
  br label %518

443:                                              ; preds = %385, %385
  %444 = load i32, ptr %353, align 4, !tbaa !67
  %445 = zext i32 %444 to i64
  %446 = call i32 @TIFFFetchStripThing(ptr noundef %0, ptr noundef nonnull %.2384522, i64 noundef %445, ptr noundef nonnull %384)
  %.not441 = icmp eq i32 %446, 0
  br i1 %.not441, label %.thread482, label %518

447:                                              ; preds = %385, %385
  %448 = load i32, ptr %353, align 4, !tbaa !67
  %449 = zext i32 %448 to i64
  %450 = call i32 @TIFFFetchStripThing(ptr noundef %0, ptr noundef nonnull %.2384522, i64 noundef %449, ptr noundef nonnull %383)
  %.not440 = icmp eq i32 %450, 0
  br i1 %.not440, label %.thread482, label %518

451:                                              ; preds = %385, %385
  %452 = load i16, ptr %382, align 4, !tbaa !68
  %453 = zext nneg i16 %452 to i64
  %454 = shl nuw i64 1, %453
  %455 = trunc i64 %454 to i32
  store i32 %455, ptr %3, align 4, !tbaa !23
  %456 = icmp eq i16 %386, 320
  br i1 %456, label %460, label %457

457:                                              ; preds = %451
  %458 = getelementptr inbounds i8, ptr %.2384522, i64 4
  %459 = load i32, ptr %458, align 4, !tbaa !51
  %.not436 = icmp eq i32 %459, %455
  br i1 %.not436, label %463, label %460

460:                                              ; preds = %457, %451
  %461 = mul i32 %455, 3
  %462 = call i32 @CheckDirCount(ptr noundef nonnull %0, ptr noundef nonnull %.2384522, i32 noundef %461)
  %.not437 = icmp eq i32 %462, 0
  br i1 %.not437, label %518, label %._crit_edge551

._crit_edge551:                                   ; preds = %460
  %.pre552 = load i32, ptr %3, align 4, !tbaa !23
  %.phi.trans.insert553 = getelementptr inbounds i8, ptr %.2384522, i64 4
  %.pre554 = load i32, ptr %.phi.trans.insert553, align 4, !tbaa !51
  br label %463

463:                                              ; preds = %._crit_edge551, %457
  %464 = phi i32 [ %.pre554, %._crit_edge551 ], [ %455, %457 ]
  %465 = phi i32 [ %.pre552, %._crit_edge551 ], [ %455, %457 ]
  %466 = shl i32 %465, 1
  store i32 %466, ptr %3, align 4, !tbaa !23
  %467 = getelementptr inbounds i8, ptr %.2384522, i64 4
  %468 = zext i32 %464 to i64
  %469 = call ptr @_TIFFCheckMalloc(ptr noundef nonnull %0, i64 noundef %468, i64 noundef 2, ptr noundef nonnull @.str.15) #3
  %.not438 = icmp eq ptr %469, null
  br i1 %.not438, label %518, label %470

470:                                              ; preds = %463
  %471 = call i32 @TIFFFetchData(ptr noundef nonnull %0, ptr noundef nonnull %.2384522, ptr noundef nonnull %469)
  %.not439 = icmp eq i32 %471, 0
  br i1 %.not439, label %490, label %472

472:                                              ; preds = %470
  %473 = load i16, ptr %382, align 4, !tbaa !68
  %474 = zext nneg i16 %473 to i64
  %475 = shl nuw i64 1, %474
  %476 = trunc i64 %475 to i32
  %477 = load i32, ptr %467, align 4, !tbaa !51
  %478 = icmp eq i32 %477, %476
  br i1 %478, label %479, label %._crit_edge555

._crit_edge555:                                   ; preds = %472
  %.pre556 = load i32, ptr %3, align 4, !tbaa !23
  br label %480

479:                                              ; preds = %472
  store i32 0, ptr %3, align 4, !tbaa !23
  br label %480

480:                                              ; preds = %._crit_edge555, %479
  %481 = phi i32 [ %.pre556, %._crit_edge555 ], [ 0, %479 ]
  %482 = load i16, ptr %.2384522, align 4, !tbaa !34
  %483 = zext i16 %482 to i32
  %484 = zext i32 %481 to i64
  %485 = getelementptr inbounds i8, ptr %469, i64 %484
  %486 = shl i32 %481, 1
  %487 = zext i32 %486 to i64
  %488 = getelementptr inbounds i8, ptr %469, i64 %487
  %489 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef nonnull %0, i32 noundef %483, ptr noundef nonnull %469, ptr noundef nonnull %485, ptr noundef nonnull %488) #3
  br label %490

490:                                              ; preds = %480, %470
  call void @_TIFFfree(ptr noundef nonnull %469) #3
  br label %518

491:                                              ; preds = %385, %385, %385, %385
  %492 = call i32 @TIFFFetchShortPair(ptr noundef %0, ptr noundef nonnull %.2384522)
  br label %518

493:                                              ; preds = %385
  %494 = call i32 @TIFFFetchRefBlackWhite(ptr noundef %0, ptr noundef nonnull %.2384522)
  br label %518

495:                                              ; preds = %385
  store i32 0, ptr %3, align 4, !tbaa !23
  %496 = load i16, ptr %379, align 8, !tbaa !52
  %497 = icmp eq i16 %496, 19789
  %498 = getelementptr inbounds i8, ptr %.2384522, i64 8
  %499 = load i32, ptr %498, align 4, !tbaa !53
  %500 = getelementptr inbounds i8, ptr %.2384522, i64 2
  %501 = load i16, ptr %500, align 2, !tbaa !43
  %502 = zext i16 %501 to i64
  br i1 %497, label %503, label %508

503:                                              ; preds = %495
  %504 = load ptr, ptr %381, align 8, !tbaa !54
  %505 = getelementptr inbounds i32, ptr %504, i64 %502
  %506 = load i32, ptr %505, align 4, !tbaa !23
  %507 = lshr i32 %499, %506
  br label %508

508:                                              ; preds = %495, %503
  %.sink579.in = phi i32 [ %507, %503 ], [ %499, %495 ]
  %509 = load ptr, ptr %380, align 8, !tbaa !55
  %510 = getelementptr inbounds i64, ptr %509, i64 %502
  %511 = load i64, ptr %510, align 8, !tbaa !56
  %512 = trunc i64 %511 to i32
  %513 = and i32 %.sink579.in, %512
  switch i32 %513, label %518 [
    i32 2, label %.thread478
    i32 3, label %514
  ]

514:                                              ; preds = %508
  br label %.thread478

.thread478:                                       ; preds = %508, %514
  %storemerge563 = phi i32 [ 2, %514 ], [ 1, %508 ]
  store i32 %storemerge563, ptr %3, align 4, !tbaa !23
  %515 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef nonnull %0, i32 noundef 254, i32 noundef %storemerge563) #3
  br label %518

516:                                              ; preds = %385
  %517 = call i32 @TIFFFetchNormalTag(ptr noundef %0, ptr noundef nonnull %.2384522)
  br label %518

518:                                              ; preds = %508, %442, %460, %490, %463, %385, %491, %493, %516, %421, %429, %404, %443, %447, %.thread478
  %519 = add nsw i32 %.3523, -1
  %520 = getelementptr inbounds i8, ptr %.2384522, i64 12
  %521 = icmp sgt i32 %.3523, 1
  br i1 %521, label %385, label %._crit_edge526.loopexit, !llvm.loop !69

._crit_edge526.loopexit:                          ; preds = %518
  %.pre557.pre = load i64, ptr %147, align 8, !tbaa !56
  br label %._crit_edge526

._crit_edge526:                                   ; preds = %._crit_edge526.loopexit, %376
  %.pre557 = phi i64 [ %.pre557.pre, %._crit_edge526.loopexit ], [ %371, %376 ]
  %522 = getelementptr inbounds i8, ptr %0, i64 114
  %523 = load i16, ptr %522, align 2, !tbaa !70
  %524 = icmp eq i16 %523, 3
  %525 = and i64 %.pre557, 67108864
  %.not423 = icmp eq i64 %525, 0
  %or.cond581 = select i1 %524, i1 %.not423, i1 false
  br i1 %or.cond581, label %526, label %527

526:                                              ; preds = %._crit_edge526
  call void @MissingRequired(ptr noundef nonnull %0, ptr noundef nonnull @.str.16)
  br label %.thread482

527:                                              ; preds = %._crit_edge526
  %528 = and i64 %.pre557, 16777216
  %.not424 = icmp eq i64 %528, 0
  br i1 %.not424, label %529, label %549

529:                                              ; preds = %527
  %530 = load i16, ptr %362, align 2, !tbaa !65
  switch i16 %530, label %.thread480 [
    i16 1, label %531
    i16 2, label %534
  ]

531:                                              ; preds = %529
  %532 = load i32, ptr %353, align 4, !tbaa !67
  %533 = icmp ugt i32 %532, 1
  br i1 %533, label %539, label %.thread480

534:                                              ; preds = %529
  %535 = load i32, ptr %353, align 4, !tbaa !67
  %536 = getelementptr inbounds i8, ptr %0, i64 122
  %537 = load i16, ptr %536, align 2, !tbaa !50
  %538 = zext i16 %537 to i32
  %.not425 = icmp eq i32 %535, %538
  br i1 %.not425, label %.thread480, label %539

539:                                              ; preds = %534, %531
  call void @MissingRequired(ptr noundef nonnull %0, ptr noundef nonnull @.str.17)
  br label %.thread482

.thread480:                                       ; preds = %529, %531, %534
  %540 = getelementptr inbounds i8, ptr %0, i64 608
  %541 = load ptr, ptr %540, align 8, !tbaa !24
  %542 = load ptr, ptr %0, align 8, !tbaa !25
  %543 = call ptr @TIFFFieldWithTag(ptr noundef nonnull %0, i32 noundef 279) #3
  %544 = getelementptr inbounds i8, ptr %543, i64 16
  %545 = load ptr, ptr %544, align 8, !tbaa !48
  call void (ptr, ptr, ptr, ...) @TIFFWarningExt(ptr noundef %541, ptr noundef nonnull @TIFFReadDirectory.module, ptr noundef nonnull @.str.18, ptr noundef %542, ptr noundef %545) #3
  %546 = load i16, ptr %4, align 2, !tbaa !31
  %547 = call i32 @EstimateStripByteCounts(ptr noundef nonnull %0, ptr noundef nonnull %.1389, i16 noundef zeroext %546)
  %548 = icmp slt i32 %547, 0
  br i1 %548, label %.thread482, label %626

549:                                              ; preds = %527
  %550 = load i32, ptr %353, align 4, !tbaa !67
  %551 = icmp eq i32 %550, 1
  br i1 %551, label %552, label %600

552:                                              ; preds = %549
  %553 = getelementptr inbounds i8, ptr %0, i64 224
  %554 = load ptr, ptr %553, align 8, !tbaa !71
  %555 = load i32, ptr %554, align 4, !tbaa !23
  %.not426 = icmp eq i32 %555, 0
  br i1 %.not426, label %600, label %556

556:                                              ; preds = %552
  %557 = getelementptr inbounds i8, ptr %0, i64 232
  %558 = load ptr, ptr %557, align 8, !tbaa !72
  %559 = load i32, ptr %558, align 4, !tbaa !23
  %560 = icmp eq i32 %559, 0
  br i1 %560, label %590, label %561

561:                                              ; preds = %556
  %562 = getelementptr inbounds i8, ptr %0, i64 112
  %563 = load i16, ptr %562, align 8, !tbaa !73
  %564 = icmp eq i16 %563, 1
  br i1 %564, label %565, label %575

565:                                              ; preds = %561
  %566 = getelementptr inbounds i8, ptr %0, i64 648
  %567 = load ptr, ptr %566, align 8, !tbaa !74
  %568 = getelementptr inbounds i8, ptr %0, i64 608
  %569 = load ptr, ptr %568, align 8, !tbaa !24
  %570 = call i32 %567(ptr noundef %569) #3
  %571 = load ptr, ptr %553, align 8, !tbaa !71
  %572 = load i32, ptr %571, align 4, !tbaa !23
  %573 = sub i32 %570, %572
  %574 = icmp ugt i32 %559, %573
  br i1 %574, label %590, label %575

575:                                              ; preds = %565, %561
  %576 = getelementptr inbounds i8, ptr %0, i64 12
  %577 = load i32, ptr %576, align 4, !tbaa !75
  %578 = icmp eq i32 %577, 0
  br i1 %578, label %579, label %600

579:                                              ; preds = %575
  %580 = load i16, ptr %562, align 8, !tbaa !73
  %581 = icmp eq i16 %580, 1
  br i1 %581, label %582, label %600

582:                                              ; preds = %579
  %583 = load ptr, ptr %557, align 8, !tbaa !72
  %584 = load i32, ptr %583, align 4, !tbaa !23
  %585 = call i32 @TIFFScanlineSize(ptr noundef nonnull %0) #3
  %586 = getelementptr inbounds i8, ptr %0, i64 84
  %587 = load i32, ptr %586, align 4, !tbaa !76
  %588 = mul i32 %587, %585
  %589 = icmp ult i32 %584, %588
  br i1 %589, label %590, label %600

590:                                              ; preds = %556, %582, %565
  %591 = getelementptr inbounds i8, ptr %0, i64 608
  %592 = load ptr, ptr %591, align 8, !tbaa !24
  %593 = load ptr, ptr %0, align 8, !tbaa !25
  %594 = call ptr @TIFFFieldWithTag(ptr noundef nonnull %0, i32 noundef 279) #3
  %595 = getelementptr inbounds i8, ptr %594, i64 16
  %596 = load ptr, ptr %595, align 8, !tbaa !48
  call void (ptr, ptr, ptr, ...) @TIFFWarningExt(ptr noundef %592, ptr noundef nonnull @TIFFReadDirectory.module, ptr noundef nonnull @.str.19, ptr noundef %593, ptr noundef %596) #3
  %597 = load i16, ptr %4, align 2, !tbaa !31
  %598 = call i32 @EstimateStripByteCounts(ptr noundef nonnull %0, ptr noundef nonnull %.1389, i16 noundef zeroext %597)
  %599 = icmp slt i32 %598, 0
  br i1 %599, label %.thread482, label %626

600:                                              ; preds = %582, %579, %575, %552, %549
  %601 = load i16, ptr %362, align 2, !tbaa !65
  %602 = icmp eq i16 %601, 1
  br i1 %602, label %603, label %626

603:                                              ; preds = %600
  %604 = load i32, ptr %353, align 4, !tbaa !67
  %605 = icmp ugt i32 %604, 2
  br i1 %605, label %606, label %626

606:                                              ; preds = %603
  %607 = getelementptr inbounds i8, ptr %0, i64 112
  %608 = load i16, ptr %607, align 8, !tbaa !73
  %609 = icmp eq i16 %608, 1
  br i1 %609, label %610, label %626

610:                                              ; preds = %606
  %611 = getelementptr inbounds i8, ptr %0, i64 232
  %612 = load ptr, ptr %611, align 8, !tbaa !72
  %613 = load i32, ptr %612, align 4, !tbaa !23
  %614 = getelementptr inbounds i8, ptr %612, i64 4
  %615 = load i32, ptr %614, align 4, !tbaa !23
  %.not427 = icmp eq i32 %613, %615
  br i1 %.not427, label %626, label %616

616:                                              ; preds = %610
  %617 = getelementptr inbounds i8, ptr %0, i64 608
  %618 = load ptr, ptr %617, align 8, !tbaa !24
  %619 = load ptr, ptr %0, align 8, !tbaa !25
  %620 = call ptr @TIFFFieldWithTag(ptr noundef nonnull %0, i32 noundef 279) #3
  %621 = getelementptr inbounds i8, ptr %620, i64 16
  %622 = load ptr, ptr %621, align 8, !tbaa !48
  call void (ptr, ptr, ptr, ...) @TIFFWarningExt(ptr noundef %618, ptr noundef nonnull @TIFFReadDirectory.module, ptr noundef nonnull @.str.20, ptr noundef %619, ptr noundef %622) #3
  %623 = load i16, ptr %4, align 2, !tbaa !31
  %624 = call i32 @EstimateStripByteCounts(ptr noundef nonnull %0, ptr noundef nonnull %.1389, i16 noundef zeroext %623)
  %625 = icmp slt i32 %624, 0
  br i1 %625, label %.thread482, label %626

626:                                              ; preds = %.thread480, %600, %603, %606, %610, %616, %590
  call void @_TIFFfree(ptr noundef nonnull %.1389) #3
  %627 = load i64, ptr %147, align 8, !tbaa !56
  %628 = and i64 %627, 524288
  %.not429 = icmp eq i64 %628, 0
  br i1 %.not429, label %629, label %636

629:                                              ; preds = %626
  %630 = getelementptr inbounds i8, ptr %0, i64 108
  %631 = load i16, ptr %630, align 4, !tbaa !68
  %632 = zext nneg i16 %631 to i64
  %notmask = shl nsw i64 -1, %632
  %633 = trunc i64 %notmask to i16
  %634 = xor i16 %633, -1
  %635 = getelementptr inbounds i8, ptr %0, i64 130
  store i16 %634, ptr %635, align 2, !tbaa !77
  br label %636

636:                                              ; preds = %629, %626
  %637 = load i32, ptr %353, align 4, !tbaa !67
  %638 = icmp ugt i32 %637, 1
  br i1 %638, label %639, label %.loopexit

639:                                              ; preds = %636
  %640 = getelementptr inbounds i8, ptr %0, i64 240
  store i32 1, ptr %640, align 8, !tbaa !78
  %641 = getelementptr inbounds i8, ptr %0, i64 224
  %642 = load ptr, ptr %641, align 8, !tbaa !71
  %wide.trip.count544 = zext i32 %637 to i64
  %.pre558 = load i32, ptr %642, align 4, !tbaa !23
  br label %644

643:                                              ; preds = %644
  %indvars.iv.next542 = add nuw nsw i64 %indvars.iv541, 1
  %exitcond545.not = icmp eq i64 %indvars.iv.next542, %wide.trip.count544
  br i1 %exitcond545.not, label %.loopexit, label %644, !llvm.loop !79

644:                                              ; preds = %639, %643
  %645 = phi i32 [ %.pre558, %639 ], [ %647, %643 ]
  %indvars.iv541 = phi i64 [ 1, %639 ], [ %indvars.iv.next542, %643 ]
  %646 = getelementptr inbounds i32, ptr %642, i64 %indvars.iv541
  %647 = load i32, ptr %646, align 4, !tbaa !23
  %648 = icmp ugt i32 %645, %647
  br i1 %648, label %649, label %643

649:                                              ; preds = %644
  store i32 0, ptr %640, align 8, !tbaa !78
  br label %.loopexit

.loopexit:                                        ; preds = %643, %649, %636
  %650 = and i64 %627, 128
  %.not430 = icmp eq i64 %650, 0
  br i1 %.not430, label %651, label %653

651:                                              ; preds = %.loopexit
  %652 = call i32 (ptr, i32, ...) @TIFFSetField(ptr noundef nonnull %0, i32 noundef 259, i32 noundef 1) #3
  %.pre559 = load i32, ptr %353, align 4, !tbaa !67
  br label %653

653:                                              ; preds = %651, %.loopexit
  %654 = phi i32 [ %.pre559, %651 ], [ %637, %.loopexit ]
  %655 = icmp eq i32 %654, 1
  br i1 %655, label %656, label %665

656:                                              ; preds = %653
  %657 = getelementptr inbounds i8, ptr %0, i64 112
  %658 = load i16, ptr %657, align 8, !tbaa !73
  %659 = icmp eq i16 %658, 1
  br i1 %659, label %660, label %665

660:                                              ; preds = %656
  %661 = load i32, ptr %38, align 8, !tbaa !28
  %662 = and i32 %661, 33792
  %663 = icmp eq i32 %662, 32768
  br i1 %663, label %664, label %665

664:                                              ; preds = %660
  call void @ChopUpSingleUncompressedStrip(ptr noundef nonnull %0)
  br label %665

665:                                              ; preds = %664, %660, %656, %653
  %666 = getelementptr inbounds i8, ptr %0, i64 344
  store i32 -1, ptr %666, align 8, !tbaa !80
  %667 = getelementptr inbounds i8, ptr %0, i64 352
  store i32 -1, ptr %667, align 8, !tbaa !81
  %668 = getelementptr inbounds i8, ptr %0, i64 372
  store i32 -1, ptr %668, align 4, !tbaa !82
  %669 = getelementptr inbounds i8, ptr %0, i64 376
  store i32 -1, ptr %669, align 8, !tbaa !83
  %670 = getelementptr inbounds i8, ptr %0, i64 380
  store i32 -1, ptr %670, align 4, !tbaa !84
  %671 = call i32 @TIFFScanlineSize(ptr noundef nonnull %0) #3
  %672 = getelementptr inbounds i8, ptr %0, i64 536
  store i32 %671, ptr %672, align 8, !tbaa !85
  %.not431 = icmp eq i32 %671, 0
  br i1 %.not431, label %673, label %677

673:                                              ; preds = %665
  %674 = getelementptr inbounds i8, ptr %0, i64 608
  %675 = load ptr, ptr %674, align 8, !tbaa !24
  %676 = load ptr, ptr %0, align 8, !tbaa !25
  call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %675, ptr noundef nonnull @TIFFReadDirectory.module, ptr noundef nonnull @.str.21, ptr noundef %676) #3
  br label %.thread

677:                                              ; preds = %665
  %678 = load i32, ptr %38, align 8, !tbaa !28
  %679 = and i32 %678, 1024
  %.not432 = icmp eq i32 %679, 0
  br i1 %.not432, label %686, label %680

680:                                              ; preds = %677
  %681 = call i32 @TIFFTileSize(ptr noundef nonnull %0) #3
  store i32 %681, ptr %670, align 4, !tbaa !84
  %.not434 = icmp eq i32 %681, 0
  br i1 %.not434, label %682, label %.thread

682:                                              ; preds = %680
  %683 = getelementptr inbounds i8, ptr %0, i64 608
  %684 = load ptr, ptr %683, align 8, !tbaa !24
  %685 = load ptr, ptr %0, align 8, !tbaa !25
  call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %684, ptr noundef nonnull @TIFFReadDirectory.module, ptr noundef nonnull @.str.22, ptr noundef %685) #3
  br label %.thread

686:                                              ; preds = %677
  %687 = call i32 @TIFFStripSize(ptr noundef nonnull %0) #3
  %.not433 = icmp eq i32 %687, 0
  br i1 %.not433, label %688, label %.thread

688:                                              ; preds = %686
  %689 = getelementptr inbounds i8, ptr %0, i64 608
  %690 = load ptr, ptr %689, align 8, !tbaa !24
  %691 = load ptr, ptr %0, align 8, !tbaa !25
  call void (ptr, ptr, ptr, ...) @TIFFErrorExt(ptr noundef %690, ptr noundef nonnull @TIFFReadDirectory.module, ptr noundef nonnull @.str.23, ptr noundef %691) #3
  br label %.thread

.thread482:                                       ; preds = %159, %283, %296, %294, %304, %302, %323, %404, %421, %419, %429, %427, %443, %447, %332, %354, %373, %526, %539, %.thread480, %590, %616, %.thread475, %82, %136
  %.2390485 = phi ptr [ %69, %82 ], [ %111, %136 ], [ %.1389, %.thread475 ], [ %.1389, %616 ], [ %.1389, %590 ], [ %.1389, %.thread480 ], [ %.1389, %539 ], [ %.1389, %526 ], [ %.1389, %373 ], [ %.1389, %354 ], [ %.1389, %332 ], [ %.1389, %447 ], [ %.1389, %443 ], [ %.1389, %427 ], [ %.1389, %429 ], [ %.1389, %419 ], [ %.1389, %421 ], [ %.1389, %404 ], [ %.1389, %323 ], [ %.1389, %302 ], [ %.1389, %304 ], [ %.1389, %294 ], [ %.1389, %296 ], [ %.1389, %283 ], [ %.1389, %159 ]
  call void @_TIFFfree(ptr noundef nonnull %.2390485) #3
  br label %.thread

.thread:                                          ; preds = %14, %108, %97, %.thread482, %680, %686, %66, %1, %688, %682, %673, %59, %50, %22
  %.2 = phi i32 [ 0, %682 ], [ 0, %688 ], [ 0, %673 ], [ 0, %59 ], [ 0, %50 ], [ 0, %22 ], [ 0, %1 ], [ 0, %66 ], [ 1, %686 ], [ 1, %680 ], [ 0, %.thread482 ], [ 0, %97 ], [ 0, %108 ], [ 0, %14 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %4) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %2) #3
  ret i32 %.2
}

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

declare ptr @_TIFFrealloc(ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @TIFFErrorExt(ptr noundef, ptr noundef, ptr noundef, ...) local_unnamed_addr #2

declare void @TIFFSwabShort(ptr noundef) local_unnamed_addr #2

declare ptr @_TIFFCheckMalloc(ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

declare void @_TIFFmemcpy(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

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

declare void @TIFFSwabLong(ptr noundef) local_unnamed_addr #2

declare void @TIFFFreeDirectory(ptr noundef) local_unnamed_addr #2

declare i32 @TIFFDefaultDirectory(ptr noundef) local_unnamed_addr #2

declare i32 @TIFFSetField(ptr noundef, i32 noundef, ...) local_unnamed_addr #2

declare void @TIFFSwabArrayOfShort(ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @TIFFSwabArrayOfLong(ptr noundef, i64 noundef) local_unnamed_addr #2

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

declare void @TIFFWarningExt(ptr noundef, ptr noundef, ptr noundef, ...) local_unnamed_addr #2

declare void @TIFFMergeFieldInfo(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare ptr @_TIFFCreateAnonFieldInfo(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

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

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

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

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

declare i32 @TIFFNumberOfStrips(ptr noundef) local_unnamed_addr #2

declare i32 @TIFFNumberOfTiles(ptr noundef) local_unnamed_addr #2

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

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

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

declare void @_TIFFfree(ptr noundef) local_unnamed_addr #2

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

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

declare ptr @TIFFFieldWithTag(ptr noundef, i32 noundef) local_unnamed_addr #2

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

declare i32 @TIFFScanlineSize(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden void @ChopUpSingleUncompressedStrip(ptr noundef) local_unnamed_addr #0

declare i32 @TIFFTileSize(ptr noundef) local_unnamed_addr #2

declare i32 @TIFFStripSize(ptr noundef) local_unnamed_addr #2

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

!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 24}
!6 = !{!"tiff", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !7, i64 32, !11, i64 40, !12, i64 48, !15, i64 320, !7, i64 328, !7, i64 336, !10, i64 344, !11, i64 348, !10, i64 352, !10, i64 356, !10, i64 360, !11, i64 364, !10, i64 368, !10, i64 372, !10, i64 376, !10, i64 380, !10, i64 384, !7, i64 392, !7, i64 400, !7, i64 408, !10, i64 416, !7, i64 424, !7, i64 432, !7, i64 440, !7, i64 448, !7, i64 456, !7, i64 464, !7, i64 472, !7, i64 480, !7, i64 488, !7, i64 496, !7, i64 504, !7, i64 512, !7, i64 520, !7, i64 528, !10, i64 536, !10, i64 540, !7, i64 544, !10, i64 552, !7, i64 560, !10, i64 568, !7, i64 576, !10, i64 584, !7, i64 592, !7, i64 600, !7, i64 608, !7, i64 616, !7, i64 624, !7, i64 632, !7, i64 640, !7, i64 648, !7, i64 656, !7, i64 664, !16, i64 672, !7, i64 680, !17, i64 688, !7, i64 712}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"short", !8, i64 0}
!12 = !{!"", !8, i64 0, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !11, i64 60, !11, i64 62, !11, i64 64, !11, i64 66, !11, i64 68, !11, i64 70, !11, i64 72, !11, i64 74, !10, i64 76, !11, i64 80, !11, i64 82, !13, i64 88, !13, i64 96, !14, i64 104, !14, i64 108, !11, i64 112, !11, i64 114, !14, i64 116, !14, i64 120, !8, i64 124, !8, i64 128, !8, i64 152, !11, i64 156, !7, i64 160, !10, i64 168, !10, i64 172, !7, i64 176, !7, i64 184, !10, i64 192, !11, i64 196, !7, i64 200, !8, i64 208, !11, i64 212, !8, i64 216, !10, i64 240, !7, i64 248, !10, i64 256, !7, i64 264}
!13 = !{!"double", !8, i64 0}
!14 = !{!"float", !8, i64 0}
!15 = !{!"", !11, i64 0, !11, i64 2, !10, i64 4}
!16 = !{!"long", !8, i64 0}
!17 = !{!"", !7, i64 0, !7, i64 8, !7, i64 16}
!18 = !{!6, !10, i64 20}
!19 = !{!6, !11, i64 40}
!20 = !{!6, !7, i64 32}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = !{!10, !10, i64 0}
!24 = !{!6, !7, i64 608}
!25 = !{!6, !7, i64 0}
!26 = !{!6, !7, i64 504}
!27 = !{!6, !11, i64 348}
!28 = !{!6, !10, i64 16}
!29 = !{!6, !7, i64 632}
!30 = !{!6, !7, i64 616}
!31 = !{!11, !11, i64 0}
!32 = !{!6, !10, i64 584}
!33 = !{!6, !7, i64 576}
!34 = !{!35, !11, i64 0}
!35 = !{!"", !11, i64 0, !11, i64 2, !10, i64 4, !10, i64 8}
!36 = distinct !{!36, !22}
!37 = !{!6, !16, i64 672}
!38 = !{!6, !7, i64 664}
!39 = !{!7, !7, i64 0}
!40 = !{!41, !10, i64 0}
!41 = !{!"", !10, i64 0, !11, i64 4, !11, i64 6, !10, i64 8, !11, i64 12, !8, i64 14, !8, i64 15, !7, i64 16}
!42 = distinct !{!42, !22}
!43 = !{!35, !11, i64 2}
!44 = distinct !{!44, !22}
!45 = !{!41, !11, i64 12}
!46 = !{!41, !10, i64 8}
!47 = distinct !{!47, !22}
!48 = !{!41, !7, i64 16}
!49 = !{!41, !11, i64 4}
!50 = !{!12, !11, i64 74}
!51 = !{!35, !10, i64 4}
!52 = !{!6, !11, i64 320}
!53 = !{!35, !10, i64 8}
!54 = !{!6, !7, i64 328}
!55 = !{!6, !7, i64 336}
!56 = !{!16, !16, i64 0}
!57 = distinct !{!57, !22}
!58 = !{!12, !10, i64 32}
!59 = !{!12, !10, i64 44}
!60 = !{!12, !10, i64 76}
!61 = !{!12, !10, i64 48}
!62 = !{!12, !10, i64 40}
!63 = !{!12, !10, i64 52}
!64 = !{!12, !10, i64 168}
!65 = !{!12, !11, i64 114}
!66 = !{!13, !13, i64 0}
!67 = !{!12, !10, i64 172}
!68 = !{!12, !11, i64 60}
!69 = distinct !{!69, !22}
!70 = !{!12, !11, i64 66}
!71 = !{!12, !7, i64 176}
!72 = !{!12, !7, i64 184}
!73 = !{!12, !11, i64 64}
!74 = !{!6, !7, i64 648}
!75 = !{!6, !10, i64 12}
!76 = !{!12, !10, i64 36}
!77 = !{!12, !11, i64 82}
!78 = !{!12, !10, i64 192}
!79 = distinct !{!79, !22}
!80 = !{!6, !10, i64 344}
!81 = !{!6, !10, i64 352}
!82 = !{!6, !10, i64 372}
!83 = !{!6, !10, i64 376}
!84 = !{!6, !10, i64 380}
!85 = !{!6, !10, i64 536}


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