; LLVM IR from NOAA-PMEL/Ferret :: xgks/src/lib (gd)

; 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.gdImageStruct = type { ptr, i32, i32, i32, [256 x i32], [256 x i32], [256 x i32], [256 x i32], i32, ptr, i32, ptr, ptr, [256 x i32], [256 x i32], i32, i32, ptr, i32, i32, i32, i32, i32 }

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

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #1

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

; Function Attrs: nounwind
declare void @free(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @gdImageColorClosest(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @gdImageColorExact(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @gdImageColorAllocate(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local void @gdImageSetPixel(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @gdImageGetPixel(ptr noundef, i32 noundef, i32 noundef) #3

; Function Attrs: nounwind uwtable
define dso_local void @gdImageCopyResized(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9) #3 {
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca [256 x i32], align 16
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca double, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  store ptr %0, ptr %11, align 8, !tbaa !5
  store ptr %1, ptr %12, align 8, !tbaa !5
  store i32 %2, ptr %13, align 4, !tbaa !9
  store i32 %3, ptr %14, align 4, !tbaa !9
  store i32 %4, ptr %15, align 4, !tbaa !9
  store i32 %5, ptr %16, align 4, !tbaa !9
  store i32 %6, ptr %17, align 4, !tbaa !9
  store i32 %7, ptr %18, align 4, !tbaa !9
  store i32 %8, ptr %19, align 4, !tbaa !9
  store i32 %9, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 1024, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  %36 = load i32, ptr %19, align 4, !tbaa !9
  %37 = sext i32 %36 to i64
  %38 = mul i64 4, %37
  %39 = call noalias ptr @malloc(i64 noundef %38) #6
  store ptr %39, ptr %29, align 8, !tbaa !5
  %40 = load i32, ptr %20, align 4, !tbaa !9
  %41 = sext i32 %40 to i64
  %42 = mul i64 4, %41
  %43 = call noalias ptr @malloc(i64 noundef %42) #6
  store ptr %43, ptr %30, align 8, !tbaa !5
  store double 0.000000e+00, ptr %31, align 8, !tbaa !11
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %44

44:                                               ; preds = %68, %10
  %45 = load i32, ptr %27, align 4, !tbaa !9
  %46 = load i32, ptr %19, align 4, !tbaa !9
  %47 = icmp slt i32 %45, %46
  br i1 %47, label %48, label %71

48:                                               ; preds = %44
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #5
  %49 = load i32, ptr %17, align 4, !tbaa !9
  %50 = sitofp i32 %49 to double
  %51 = load i32, ptr %19, align 4, !tbaa !9
  %52 = sitofp i32 %51 to double
  %53 = fdiv double %50, %52
  %54 = load double, ptr %31, align 8, !tbaa !11
  %55 = fadd double %54, %53
  store double %55, ptr %31, align 8, !tbaa !11
  %56 = load double, ptr %31, align 8, !tbaa !11
  %57 = call double @llvm.floor.f64(double %56)
  %58 = fptosi double %57 to i32
  store i32 %58, ptr %32, align 4, !tbaa !9
  %59 = load i32, ptr %32, align 4, !tbaa !9
  %60 = load ptr, ptr %29, align 8, !tbaa !5
  %61 = load i32, ptr %27, align 4, !tbaa !9
  %62 = sext i32 %61 to i64
  %63 = getelementptr inbounds i32, ptr %60, i64 %62
  store i32 %59, ptr %63, align 4, !tbaa !9
  %64 = load i32, ptr %32, align 4, !tbaa !9
  %65 = sitofp i32 %64 to double
  %66 = load double, ptr %31, align 8, !tbaa !11
  %67 = fsub double %66, %65
  store double %67, ptr %31, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  br label %68

68:                                               ; preds = %48
  %69 = load i32, ptr %27, align 4, !tbaa !9
  %70 = add nsw i32 %69, 1
  store i32 %70, ptr %27, align 4, !tbaa !9
  br label %44, !llvm.loop !13

71:                                               ; preds = %44
  store double 0.000000e+00, ptr %31, align 8, !tbaa !11
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %72

72:                                               ; preds = %96, %71
  %73 = load i32, ptr %27, align 4, !tbaa !9
  %74 = load i32, ptr %20, align 4, !tbaa !9
  %75 = icmp slt i32 %73, %74
  br i1 %75, label %76, label %99

76:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #5
  %77 = load i32, ptr %18, align 4, !tbaa !9
  %78 = sitofp i32 %77 to double
  %79 = load i32, ptr %20, align 4, !tbaa !9
  %80 = sitofp i32 %79 to double
  %81 = fdiv double %78, %80
  %82 = load double, ptr %31, align 8, !tbaa !11
  %83 = fadd double %82, %81
  store double %83, ptr %31, align 8, !tbaa !11
  %84 = load double, ptr %31, align 8, !tbaa !11
  %85 = call double @llvm.floor.f64(double %84)
  %86 = fptosi double %85 to i32
  store i32 %86, ptr %33, align 4, !tbaa !9
  %87 = load i32, ptr %33, align 4, !tbaa !9
  %88 = load ptr, ptr %30, align 8, !tbaa !5
  %89 = load i32, ptr %27, align 4, !tbaa !9
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds i32, ptr %88, i64 %90
  store i32 %87, ptr %91, align 4, !tbaa !9
  %92 = load i32, ptr %33, align 4, !tbaa !9
  %93 = sitofp i32 %92 to double
  %94 = load double, ptr %31, align 8, !tbaa !11
  %95 = fsub double %94, %93
  store double %95, ptr %31, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  br label %96

96:                                               ; preds = %76
  %97 = load i32, ptr %27, align 4, !tbaa !9
  %98 = add nsw i32 %97, 1
  store i32 %98, ptr %27, align 4, !tbaa !9
  br label %72, !llvm.loop !15

99:                                               ; preds = %72
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %100

100:                                              ; preds = %107, %99
  %101 = load i32, ptr %27, align 4, !tbaa !9
  %102 = icmp slt i32 %101, 256
  br i1 %102, label %103, label %110

103:                                              ; preds = %100
  %104 = load i32, ptr %27, align 4, !tbaa !9
  %105 = sext i32 %104 to i64
  %106 = getelementptr inbounds [256 x i32], ptr %28, i64 0, i64 %105
  store i32 -1, ptr %106, align 4, !tbaa !9
  br label %107

107:                                              ; preds = %103
  %108 = load i32, ptr %27, align 4, !tbaa !9
  %109 = add nsw i32 %108, 1
  store i32 %109, ptr %27, align 4, !tbaa !9
  br label %100, !llvm.loop !16

110:                                              ; preds = %100
  %111 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %111, ptr %25, align 4, !tbaa !9
  %112 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %112, ptr %23, align 4, !tbaa !9
  br label %113

113:                                              ; preds = %293, %110
  %114 = load i32, ptr %23, align 4, !tbaa !9
  %115 = load i32, ptr %16, align 4, !tbaa !9
  %116 = load i32, ptr %20, align 4, !tbaa !9
  %117 = add nsw i32 %115, %116
  %118 = icmp slt i32 %114, %117
  br i1 %118, label %119, label %296

119:                                              ; preds = %113
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %120

120:                                              ; preds = %289, %119
  %121 = load i32, ptr %26, align 4, !tbaa !9
  %122 = load ptr, ptr %30, align 8, !tbaa !5
  %123 = load i32, ptr %23, align 4, !tbaa !9
  %124 = load i32, ptr %16, align 4, !tbaa !9
  %125 = sub nsw i32 %123, %124
  %126 = sext i32 %125 to i64
  %127 = getelementptr inbounds i32, ptr %122, i64 %126
  %128 = load i32, ptr %127, align 4, !tbaa !9
  %129 = icmp slt i32 %121, %128
  br i1 %129, label %130, label %292

130:                                              ; preds = %120
  %131 = load i32, ptr %13, align 4, !tbaa !9
  store i32 %131, ptr %24, align 4, !tbaa !9
  %132 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %132, ptr %22, align 4, !tbaa !9
  br label %133

133:                                              ; preds = %283, %130
  %134 = load i32, ptr %22, align 4, !tbaa !9
  %135 = load i32, ptr %15, align 4, !tbaa !9
  %136 = load i32, ptr %19, align 4, !tbaa !9
  %137 = add nsw i32 %135, %136
  %138 = icmp slt i32 %134, %137
  br i1 %138, label %139, label %286

139:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  %140 = load ptr, ptr %29, align 8, !tbaa !5
  %141 = load i32, ptr %22, align 4, !tbaa !9
  %142 = load i32, ptr %15, align 4, !tbaa !9
  %143 = sub nsw i32 %141, %142
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds i32, ptr %140, i64 %144
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = icmp ne i32 %146, 0
  br i1 %147, label %149, label %148

148:                                              ; preds = %139
  store i32 19, ptr %35, align 4
  br label %280

149:                                              ; preds = %139
  %150 = load ptr, ptr %12, align 8, !tbaa !5
  %151 = load i32, ptr %22, align 4, !tbaa !9
  %152 = load i32, ptr %23, align 4, !tbaa !9
  %153 = call i32 @gdImageGetPixel(ptr noundef %150, i32 noundef %151, i32 noundef %152)
  store i32 %153, ptr %21, align 4, !tbaa !9
  %154 = load ptr, ptr %12, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.gdImageStruct, ptr %154, i32 0, i32 8
  %156 = load i32, ptr %155, align 4, !tbaa !17
  %157 = load i32, ptr %21, align 4, !tbaa !9
  %158 = icmp eq i32 %156, %157
  br i1 %158, label %159, label %169

159:                                              ; preds = %149
  %160 = load ptr, ptr %29, align 8, !tbaa !5
  %161 = load i32, ptr %22, align 4, !tbaa !9
  %162 = load i32, ptr %15, align 4, !tbaa !9
  %163 = sub nsw i32 %161, %162
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds i32, ptr %160, i64 %164
  %166 = load i32, ptr %165, align 4, !tbaa !9
  %167 = load i32, ptr %24, align 4, !tbaa !9
  %168 = add nsw i32 %167, %166
  store i32 %168, ptr %24, align 4, !tbaa !9
  store i32 19, ptr %35, align 4
  br label %280

169:                                              ; preds = %149
  %170 = load i32, ptr %21, align 4, !tbaa !9
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds [256 x i32], ptr %28, i64 0, i64 %171
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = icmp eq i32 %173, -1
  br i1 %174, label %175, label %255

175:                                              ; preds = %169
  %176 = load ptr, ptr %11, align 8, !tbaa !5
  %177 = load ptr, ptr %12, align 8, !tbaa !5
  %178 = icmp eq ptr %176, %177
  br i1 %178, label %179, label %181

179:                                              ; preds = %175
  %180 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %180, ptr %34, align 4, !tbaa !9
  br label %202

181:                                              ; preds = %175
  %182 = load ptr, ptr %11, align 8, !tbaa !5
  %183 = load ptr, ptr %12, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.gdImageStruct, ptr %183, i32 0, i32 4
  %185 = load i32, ptr %21, align 4, !tbaa !9
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds [256 x i32], ptr %184, i64 0, i64 %186
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = load ptr, ptr %12, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.gdImageStruct, ptr %189, i32 0, i32 5
  %191 = load i32, ptr %21, align 4, !tbaa !9
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds [256 x i32], ptr %190, i64 0, i64 %192
  %194 = load i32, ptr %193, align 4, !tbaa !9
  %195 = load ptr, ptr %12, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.gdImageStruct, ptr %195, i32 0, i32 6
  %197 = load i32, ptr %21, align 4, !tbaa !9
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds [256 x i32], ptr %196, i64 0, i64 %198
  %200 = load i32, ptr %199, align 4, !tbaa !9
  %201 = call i32 @gdImageColorExact(ptr noundef %182, i32 noundef %188, i32 noundef %194, i32 noundef %200)
  store i32 %201, ptr %34, align 4, !tbaa !9
  br label %202

202:                                              ; preds = %181, %179
  %203 = load i32, ptr %34, align 4, !tbaa !9
  %204 = icmp eq i32 %203, -1
  br i1 %204, label %205, label %250

205:                                              ; preds = %202
  %206 = load ptr, ptr %11, align 8, !tbaa !5
  %207 = load ptr, ptr %12, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.gdImageStruct, ptr %207, i32 0, i32 4
  %209 = load i32, ptr %21, align 4, !tbaa !9
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds [256 x i32], ptr %208, i64 0, i64 %210
  %212 = load i32, ptr %211, align 4, !tbaa !9
  %213 = load ptr, ptr %12, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.gdImageStruct, ptr %213, i32 0, i32 5
  %215 = load i32, ptr %21, align 4, !tbaa !9
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds [256 x i32], ptr %214, i64 0, i64 %216
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = load ptr, ptr %12, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.gdImageStruct, ptr %219, i32 0, i32 6
  %221 = load i32, ptr %21, align 4, !tbaa !9
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds [256 x i32], ptr %220, i64 0, i64 %222
  %224 = load i32, ptr %223, align 4, !tbaa !9
  %225 = call i32 @gdImageColorAllocate(ptr noundef %206, i32 noundef %212, i32 noundef %218, i32 noundef %224)
  store i32 %225, ptr %34, align 4, !tbaa !9
  %226 = load i32, ptr %34, align 4, !tbaa !9
  %227 = icmp eq i32 %226, -1
  br i1 %227, label %228, label %249

228:                                              ; preds = %205
  %229 = load ptr, ptr %11, align 8, !tbaa !5
  %230 = load ptr, ptr %12, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.gdImageStruct, ptr %230, i32 0, i32 4
  %232 = load i32, ptr %21, align 4, !tbaa !9
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds [256 x i32], ptr %231, i64 0, i64 %233
  %235 = load i32, ptr %234, align 4, !tbaa !9
  %236 = load ptr, ptr %12, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.gdImageStruct, ptr %236, i32 0, i32 5
  %238 = load i32, ptr %21, align 4, !tbaa !9
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds [256 x i32], ptr %237, i64 0, i64 %239
  %241 = load i32, ptr %240, align 4, !tbaa !9
  %242 = load ptr, ptr %12, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.gdImageStruct, ptr %242, i32 0, i32 6
  %244 = load i32, ptr %21, align 4, !tbaa !9
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds [256 x i32], ptr %243, i64 0, i64 %245
  %247 = load i32, ptr %246, align 4, !tbaa !9
  %248 = call i32 @gdImageColorClosest(ptr noundef %229, i32 noundef %235, i32 noundef %241, i32 noundef %247)
  store i32 %248, ptr %34, align 4, !tbaa !9
  br label %249

249:                                              ; preds = %228, %205
  br label %250

250:                                              ; preds = %249, %202
  %251 = load i32, ptr %34, align 4, !tbaa !9
  %252 = load i32, ptr %21, align 4, !tbaa !9
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds [256 x i32], ptr %28, i64 0, i64 %253
  store i32 %251, ptr %254, align 4, !tbaa !9
  br label %255

255:                                              ; preds = %250, %169
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %256

256:                                              ; preds = %276, %255
  %257 = load i32, ptr %27, align 4, !tbaa !9
  %258 = load ptr, ptr %29, align 8, !tbaa !5
  %259 = load i32, ptr %22, align 4, !tbaa !9
  %260 = load i32, ptr %15, align 4, !tbaa !9
  %261 = sub nsw i32 %259, %260
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds i32, ptr %258, i64 %262
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = icmp slt i32 %257, %264
  br i1 %265, label %266, label %279

266:                                              ; preds = %256
  %267 = load ptr, ptr %11, align 8, !tbaa !5
  %268 = load i32, ptr %24, align 4, !tbaa !9
  %269 = load i32, ptr %25, align 4, !tbaa !9
  %270 = load i32, ptr %21, align 4, !tbaa !9
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds [256 x i32], ptr %28, i64 0, i64 %271
  %273 = load i32, ptr %272, align 4, !tbaa !9
  call void @gdImageSetPixel(ptr noundef %267, i32 noundef %268, i32 noundef %269, i32 noundef %273)
  %274 = load i32, ptr %24, align 4, !tbaa !9
  %275 = add nsw i32 %274, 1
  store i32 %275, ptr %24, align 4, !tbaa !9
  br label %276

276:                                              ; preds = %266
  %277 = load i32, ptr %27, align 4, !tbaa !9
  %278 = add nsw i32 %277, 1
  store i32 %278, ptr %27, align 4, !tbaa !9
  br label %256, !llvm.loop !19

279:                                              ; preds = %256
  store i32 0, ptr %35, align 4
  br label %280

280:                                              ; preds = %279, %159, %148
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  %281 = load i32, ptr %35, align 4
  switch i32 %281, label %299 [
    i32 0, label %282
    i32 19, label %283
  ]

282:                                              ; preds = %280
  br label %283

283:                                              ; preds = %282, %280
  %284 = load i32, ptr %22, align 4, !tbaa !9
  %285 = add nsw i32 %284, 1
  store i32 %285, ptr %22, align 4, !tbaa !9
  br label %133, !llvm.loop !20

286:                                              ; preds = %133
  %287 = load i32, ptr %25, align 4, !tbaa !9
  %288 = add nsw i32 %287, 1
  store i32 %288, ptr %25, align 4, !tbaa !9
  br label %289

289:                                              ; preds = %286
  %290 = load i32, ptr %26, align 4, !tbaa !9
  %291 = add nsw i32 %290, 1
  store i32 %291, ptr %26, align 4, !tbaa !9
  br label %120, !llvm.loop !21

292:                                              ; preds = %120
  br label %293

293:                                              ; preds = %292
  %294 = load i32, ptr %23, align 4, !tbaa !9
  %295 = add nsw i32 %294, 1
  store i32 %295, ptr %23, align 4, !tbaa !9
  br label %113, !llvm.loop !22

296:                                              ; preds = %113
  %297 = load ptr, ptr %29, align 8, !tbaa !5
  call void @free(ptr noundef %297) #5
  %298 = load ptr, ptr %30, align 8, !tbaa !5
  call void @free(ptr noundef %298) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 1024, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  ret void

299:                                              ; preds = %280
  unreachable
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.floor.f64(double) #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = !{!18, !10, i64 4116}
!18 = !{!"gdImageStruct", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !7, i64 20, !7, i64 1044, !7, i64 2068, !7, i64 3092, !10, i64 4116, !6, i64 4120, !10, i64 4128, !6, i64 4136, !6, i64 4144, !7, i64 4152, !7, i64 5176, !10, i64 6200, !10, i64 6204, !6, i64 6208, !10, i64 6216, !10, i64 6220, !10, i64 6224, !10, i64 6228, !10, i64 6232}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}


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

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

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @gdImageColorClosest(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @gdImageColorExact(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @gdImageColorAllocate(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local void @gdImageSetPixel(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @gdImageGetPixel(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
define dso_local void @gdImageCopyResized(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9) local_unnamed_addr #3 {
  %11 = alloca [256 x i32], align 16
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %11) #6
  %12 = sext i32 %8 to i64
  %13 = shl nsw i64 %12, 2
  %14 = tail call noalias ptr @malloc(i64 noundef %13) #7
  %15 = sext i32 %9 to i64
  %16 = shl nsw i64 %15, 2
  %17 = tail call noalias ptr @malloc(i64 noundef %16) #7
  %18 = icmp sgt i32 %8, 0
  br i1 %18, label %.lr.ph, label %.preheader122

.lr.ph:                                           ; preds = %10
  %19 = sitofp i32 %6 to double
  %20 = uitofp nneg i32 %8 to double
  %21 = fdiv double %19, %20
  %wide.trip.count = zext nneg i32 %8 to i64
  %xtraiter = and i64 %wide.trip.count, 1
  %22 = icmp eq i32 %8, 1
  br i1 %22, label %.preheader122.loopexit.unr-lcssa, label %.lr.ph.new

.lr.ph.new:                                       ; preds = %.lr.ph
  %unroll_iter = and i64 %wide.trip.count, 2147483646
  br label %32

.preheader122.loopexit.unr-lcssa:                 ; preds = %32, %.lr.ph
  %indvars.iv.unr = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next.1, %32 ]
  %.0101124.unr = phi double [ 0.000000e+00, %.lr.ph ], [ %44, %32 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader122, label %.preheader122.loopexit.epilog-lcssa

.preheader122.loopexit.epilog-lcssa:              ; preds = %.preheader122.loopexit.unr-lcssa
  %23 = fadd double %21, %.0101124.unr
  %24 = tail call double @llvm.floor.f64(double %23)
  %25 = fptosi double %24 to i32
  %26 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv.unr
  store i32 %25, ptr %26, align 4, !tbaa !5
  br label %.preheader122

.preheader122:                                    ; preds = %.preheader122.loopexit.epilog-lcssa, %.preheader122.loopexit.unr-lcssa, %10
  %27 = icmp sgt i32 %9, 0
  br i1 %27, label %.lr.ph127, label %._crit_edge

.lr.ph127:                                        ; preds = %.preheader122
  %28 = sitofp i32 %7 to double
  %29 = uitofp nneg i32 %9 to double
  %30 = fdiv double %28, %29
  %wide.trip.count149 = zext nneg i32 %9 to i64
  %xtraiter169 = and i64 %wide.trip.count149, 1
  %31 = icmp eq i32 %9, 1
  br i1 %31, label %.preheader121.unr-lcssa, label %.lr.ph127.new

.lr.ph127.new:                                    ; preds = %.lr.ph127
  %unroll_iter171 = and i64 %wide.trip.count149, 2147483646
  br label %50

32:                                               ; preds = %32, %.lr.ph.new
  %indvars.iv = phi i64 [ 0, %.lr.ph.new ], [ %indvars.iv.next.1, %32 ]
  %.0101124 = phi double [ 0.000000e+00, %.lr.ph.new ], [ %44, %32 ]
  %niter = phi i64 [ 0, %.lr.ph.new ], [ %niter.next.1, %32 ]
  %33 = fadd double %21, %.0101124
  %34 = tail call double @llvm.floor.f64(double %33)
  %35 = fptosi double %34 to i32
  %36 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv
  store i32 %35, ptr %36, align 4, !tbaa !5
  %37 = sitofp i32 %35 to double
  %38 = fsub double %33, %37
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %39 = fadd double %21, %38
  %40 = tail call double @llvm.floor.f64(double %39)
  %41 = fptosi double %40 to i32
  %42 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv.next
  store i32 %41, ptr %42, align 4, !tbaa !5
  %43 = sitofp i32 %41 to double
  %44 = fsub double %39, %43
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.preheader122.loopexit.unr-lcssa, label %32, !llvm.loop !9

.preheader121.unr-lcssa:                          ; preds = %50, %.lr.ph127
  %indvars.iv146.unr = phi i64 [ 0, %.lr.ph127 ], [ %indvars.iv.next147.1, %50 ]
  %.1102126.unr = phi double [ 0.000000e+00, %.lr.ph127 ], [ %62, %50 ]
  %lcmp.mod170.not = icmp eq i64 %xtraiter169, 0
  br i1 %lcmp.mod170.not, label %.preheader121, label %.preheader121.epilog-lcssa

.preheader121.epilog-lcssa:                       ; preds = %.preheader121.unr-lcssa
  %45 = fadd double %30, %.1102126.unr
  %46 = tail call double @llvm.floor.f64(double %45)
  %47 = fptosi double %46 to i32
  %48 = getelementptr inbounds i32, ptr %17, i64 %indvars.iv146.unr
  store i32 %47, ptr %48, align 4, !tbaa !5
  br label %.preheader121

.preheader121:                                    ; preds = %.preheader121.unr-lcssa, %.preheader121.epilog-lcssa
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) %11, i8 -1, i64 1024, i1 false), !tbaa !5
  %49 = add nsw i32 %9, %5
  br i1 %27, label %.preheader119.lr.ph, label %._crit_edge

50:                                               ; preds = %50, %.lr.ph127.new
  %indvars.iv146 = phi i64 [ 0, %.lr.ph127.new ], [ %indvars.iv.next147.1, %50 ]
  %.1102126 = phi double [ 0.000000e+00, %.lr.ph127.new ], [ %62, %50 ]
  %niter172 = phi i64 [ 0, %.lr.ph127.new ], [ %niter172.next.1, %50 ]
  %51 = fadd double %30, %.1102126
  %52 = tail call double @llvm.floor.f64(double %51)
  %53 = fptosi double %52 to i32
  %54 = getelementptr inbounds i32, ptr %17, i64 %indvars.iv146
  store i32 %53, ptr %54, align 4, !tbaa !5
  %55 = sitofp i32 %53 to double
  %56 = fsub double %51, %55
  %indvars.iv.next147 = or disjoint i64 %indvars.iv146, 1
  %57 = fadd double %30, %56
  %58 = tail call double @llvm.floor.f64(double %57)
  %59 = fptosi double %58 to i32
  %60 = getelementptr inbounds i32, ptr %17, i64 %indvars.iv.next147
  store i32 %59, ptr %60, align 4, !tbaa !5
  %61 = sitofp i32 %59 to double
  %62 = fsub double %57, %61
  %indvars.iv.next147.1 = add nuw nsw i64 %indvars.iv146, 2
  %niter172.next.1 = add i64 %niter172, 2
  %niter172.ncmp.1 = icmp eq i64 %niter172.next.1, %unroll_iter171
  br i1 %niter172.ncmp.1, label %.preheader121.unr-lcssa, label %50, !llvm.loop !11

.preheader119.lr.ph:                              ; preds = %.preheader121
  %63 = getelementptr inbounds i8, ptr %1, i64 4116
  %64 = icmp eq ptr %0, %1
  %65 = getelementptr inbounds i8, ptr %1, i64 20
  %66 = getelementptr inbounds i8, ptr %1, i64 1044
  %67 = getelementptr inbounds i8, ptr %1, i64 2068
  br i1 %18, label %.preheader119.us.preheader, label %._crit_edge

.preheader119.us.preheader:                       ; preds = %.preheader119.lr.ph
  %68 = add nsw i32 %8, %4
  %69 = sext i32 %4 to i64
  %70 = sext i32 %68 to i64
  %71 = sext i32 %5 to i64
  %72 = sext i32 %49 to i64
  br label %.preheader119.us

.preheader119.us:                                 ; preds = %.preheader119.us.preheader, %._crit_edge137.split.us.us
  %indvars.iv162 = phi i64 [ %71, %.preheader119.us.preheader ], [ %indvars.iv.next163, %._crit_edge137.split.us.us ]
  %.0105139.us = phi i32 [ %3, %.preheader119.us.preheader ], [ %.1106.lcssa.us, %._crit_edge137.split.us.us ]
  %73 = sub nsw i64 %indvars.iv162, %71
  %74 = getelementptr inbounds i32, ptr %17, i64 %73
  %75 = load i32, ptr %74, align 4, !tbaa !5
  %76 = icmp sgt i32 %75, 0
  br i1 %76, label %.preheader.us.us.preheader, label %._crit_edge137.split.us.us

.preheader.us.us.preheader:                       ; preds = %.preheader119.us
  %77 = trunc nsw i64 %indvars.iv162 to i32
  br label %.preheader.us.us

._crit_edge137.split.us.us:                       ; preds = %._crit_edge.us.us, %.preheader119.us
  %.1106.lcssa.us = phi i32 [ %.0105139.us, %.preheader119.us ], [ %127, %._crit_edge.us.us ]
  %indvars.iv.next163 = add nsw i64 %indvars.iv162, 1
  %78 = icmp slt i64 %indvars.iv.next163, %72
  br i1 %78, label %.preheader119.us, label %._crit_edge, !llvm.loop !12

.preheader.us.us:                                 ; preds = %.preheader.us.us.preheader, %._crit_edge.us.us
  %.1106136.us.us = phi i32 [ %127, %._crit_edge.us.us ], [ %.0105139.us, %.preheader.us.us.preheader ]
  %.0110135.us.us = phi i32 [ %128, %._crit_edge.us.us ], [ 0, %.preheader.us.us.preheader ]
  br label %79

79:                                               ; preds = %.loopexit.us.us, %.preheader.us.us
  %indvars.iv158 = phi i64 [ %indvars.iv.next159, %.loopexit.us.us ], [ %69, %.preheader.us.us ]
  %.0103132.us.us = phi i32 [ %.2.us.us, %.loopexit.us.us ], [ %2, %.preheader.us.us ]
  %80 = sub nsw i64 %indvars.iv158, %69
  %81 = getelementptr inbounds i32, ptr %14, i64 %80
  %82 = load i32, ptr %81, align 4, !tbaa !5
  %.not.us.us = icmp eq i32 %82, 0
  br i1 %.not.us.us, label %.loopexit.us.us, label %83

83:                                               ; preds = %79
  %84 = trunc nsw i64 %indvars.iv158 to i32
  %85 = tail call i32 @gdImageGetPixel(ptr noundef %1, i32 noundef %84, i32 noundef %77)
  %86 = load i32, ptr %63, align 4, !tbaa !13
  %87 = icmp eq i32 %86, %85
  br i1 %87, label %124, label %88

88:                                               ; preds = %83
  %89 = sext i32 %85 to i64
  %90 = getelementptr inbounds [256 x i32], ptr %11, i64 0, i64 %89
  %91 = load i32, ptr %90, align 4, !tbaa !5
  %92 = icmp eq i32 %91, -1
  br i1 %92, label %93, label %119

93:                                               ; preds = %88
  br i1 %64, label %102, label %94

94:                                               ; preds = %93
  %95 = getelementptr inbounds [256 x i32], ptr %65, i64 0, i64 %89
  %96 = load i32, ptr %95, align 4, !tbaa !5
  %97 = getelementptr inbounds [256 x i32], ptr %66, i64 0, i64 %89
  %98 = load i32, ptr %97, align 4, !tbaa !5
  %99 = getelementptr inbounds [256 x i32], ptr %67, i64 0, i64 %89
  %100 = load i32, ptr %99, align 4, !tbaa !5
  %101 = tail call i32 @gdImageColorExact(ptr noundef %0, i32 noundef %96, i32 noundef %98, i32 noundef %100)
  br label %102

102:                                              ; preds = %94, %93
  %.0.us.us = phi i32 [ %101, %94 ], [ %85, %93 ]
  %103 = icmp eq i32 %.0.us.us, -1
  br i1 %103, label %104, label %118

104:                                              ; preds = %102
  %105 = getelementptr inbounds [256 x i32], ptr %65, i64 0, i64 %89
  %106 = load i32, ptr %105, align 4, !tbaa !5
  %107 = getelementptr inbounds [256 x i32], ptr %66, i64 0, i64 %89
  %108 = load i32, ptr %107, align 4, !tbaa !5
  %109 = getelementptr inbounds [256 x i32], ptr %67, i64 0, i64 %89
  %110 = load i32, ptr %109, align 4, !tbaa !5
  %111 = tail call i32 @gdImageColorAllocate(ptr noundef %0, i32 noundef %106, i32 noundef %108, i32 noundef %110)
  %112 = icmp eq i32 %111, -1
  br i1 %112, label %113, label %118

113:                                              ; preds = %104
  %114 = load i32, ptr %105, align 4, !tbaa !5
  %115 = load i32, ptr %107, align 4, !tbaa !5
  %116 = load i32, ptr %109, align 4, !tbaa !5
  %117 = tail call i32 @gdImageColorClosest(ptr noundef %0, i32 noundef %114, i32 noundef %115, i32 noundef %116)
  br label %118

118:                                              ; preds = %113, %104, %102
  %.1.us.us = phi i32 [ %117, %113 ], [ %111, %104 ], [ %.0.us.us, %102 ]
  store i32 %.1.us.us, ptr %90, align 4, !tbaa !5
  br label %119

119:                                              ; preds = %118, %88
  %120 = phi i32 [ %.1.us.us, %118 ], [ %91, %88 ]
  %121 = icmp sgt i32 %82, 0
  br i1 %121, label %.lr.ph131.us.us, label %.loopexit.us.us

.lr.ph131.us.us:                                  ; preds = %119, %.lr.ph131.us.us
  %.1104130.us.us = phi i32 [ %122, %.lr.ph131.us.us ], [ %.0103132.us.us, %119 ]
  %.3129.us.us = phi i32 [ %123, %.lr.ph131.us.us ], [ 0, %119 ]
  tail call void @gdImageSetPixel(ptr noundef %0, i32 noundef %.1104130.us.us, i32 noundef %.1106136.us.us, i32 noundef %120)
  %122 = add nsw i32 %.1104130.us.us, 1
  %123 = add nuw nsw i32 %.3129.us.us, 1
  %exitcond157.not = icmp eq i32 %123, %82
  br i1 %exitcond157.not, label %.loopexit.us.us, label %.lr.ph131.us.us, !llvm.loop !16

124:                                              ; preds = %83
  %125 = add nsw i32 %82, %.0103132.us.us
  br label %.loopexit.us.us

.loopexit.us.us:                                  ; preds = %.lr.ph131.us.us, %119, %124, %79
  %.2.us.us = phi i32 [ %125, %124 ], [ %.0103132.us.us, %79 ], [ %.0103132.us.us, %119 ], [ %122, %.lr.ph131.us.us ]
  %indvars.iv.next159 = add nsw i64 %indvars.iv158, 1
  %126 = icmp slt i64 %indvars.iv.next159, %70
  br i1 %126, label %79, label %._crit_edge.us.us, !llvm.loop !17

._crit_edge.us.us:                                ; preds = %.loopexit.us.us
  %127 = add nsw i32 %.1106136.us.us, 1
  %128 = add nuw nsw i32 %.0110135.us.us, 1
  %exitcond161.not = icmp eq i32 %128, %75
  br i1 %exitcond161.not, label %._crit_edge137.split.us.us, label %.preheader.us.us, !llvm.loop !18

._crit_edge:                                      ; preds = %._crit_edge137.split.us.us, %.preheader122, %.preheader119.lr.ph, %.preheader121
  tail call void @free(ptr noundef %14) #6
  tail call void @free(ptr noundef %17) #6
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %11) #6
  ret void
}

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.floor.f64(double) #4

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nounwind }
attributes #7 = { nounwind allocsize(0) }

!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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = distinct !{!12, !10}
!13 = !{!14, !6, i64 4116}
!14 = !{!"gdImageStruct", !15, i64 0, !6, i64 8, !6, i64 12, !6, i64 16, !7, i64 20, !7, i64 1044, !7, i64 2068, !7, i64 3092, !6, i64 4116, !15, i64 4120, !6, i64 4128, !15, i64 4136, !15, i64 4144, !7, i64 4152, !7, i64 5176, !6, i64 6200, !6, i64 6204, !15, i64 6208, !6, i64 6216, !6, i64 6220, !6, i64 6224, !6, i64 6228, !6, i64 6232}
!15 = !{!"any pointer", !7, i64 0}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = distinct !{!18, !10}


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