; LLVM IR from cornell-zhang/rosetta :: BNN/cpp/minizip (minizip)

; 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.zip_fileinfo = type { %struct.tm_zip_s, i64, i64, i64 }
%struct.tm_zip_s = type { i32, i32, i32, i32, i32, i32 }

@.str.1 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [26 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local i64 @filetime(ptr noundef, ptr noundef, ptr noundef) #0

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

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

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #3

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @check_file_exists(ptr noundef) #0

declare noalias ptr @fopen64(ptr noundef, ptr noundef) #4

declare i32 @fclose(ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @is_large_file(ptr noundef) #0

declare i32 @printf(ptr noundef, ...) #4

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

declare i64 @fread(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #4

; Function Attrs: nounwind
declare i32 @feof(ptr noundef) #5

; Function Attrs: nounwind uwtable
declare dso_local void @do_banner() #0

; Function Attrs: nounwind uwtable
declare dso_local void @do_help() #0

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca i8, align 1
  %21 = alloca i8, align 1
  %22 = alloca [128 x i8], align 16
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca %struct.zip_fileinfo, align 8
  %28 = alloca i64, align 8
  %29 = alloca i32, align 4
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #8
  store ptr null, ptr %6, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #8
  store ptr null, ptr %7, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  store ptr null, ptr %8, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  store ptr null, ptr %9, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #8
  store i32 16384, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #8
  store i32 0, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  store i32 0, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  store i32 0, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  store i32 0, ptr %14, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  store i32 0, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  store i32 -1, ptr %16, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  store i32 0, ptr %17, align 4, !tbaa !5
  call void @do_banner()
  %32 = load i32, ptr %4, align 4, !tbaa !5
  %33 = icmp eq i32 %32, 1
  br i1 %33, label %34, label %35

34:                                               ; preds = %2
  call void @do_help()
  store i32 0, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %543

35:                                               ; preds = %2
  store i32 1, ptr %14, align 4, !tbaa !5
  br label %36

36:                                               ; preds = %134, %35
  %37 = load i32, ptr %14, align 4, !tbaa !5
  %38 = load i32, ptr %4, align 4, !tbaa !5
  %39 = icmp slt i32 %37, %38
  br i1 %39, label %40, label %137

40:                                               ; preds = %36
  %41 = load ptr, ptr %5, align 8, !tbaa !9
  %42 = load i32, ptr %14, align 4, !tbaa !5
  %43 = sext i32 %42 to i64
  %44 = getelementptr inbounds ptr, ptr %41, i64 %43
  %45 = load ptr, ptr %44, align 8, !tbaa !9
  %46 = load i8, ptr %45, align 1, !tbaa !11
  %47 = sext i8 %46 to i32
  %48 = icmp eq i32 %47, 45
  br i1 %48, label %49, label %127

49:                                               ; preds = %40
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  %50 = load ptr, ptr %5, align 8, !tbaa !9
  %51 = load i32, ptr %14, align 4, !tbaa !5
  %52 = sext i32 %51 to i64
  %53 = getelementptr inbounds ptr, ptr %50, i64 %52
  %54 = load ptr, ptr %53, align 8, !tbaa !9
  %55 = getelementptr inbounds i8, ptr %54, i64 1
  store ptr %55, ptr %19, align 8, !tbaa !9
  br label %56

56:                                               ; preds = %125, %49
  %57 = load ptr, ptr %19, align 8, !tbaa !9
  %58 = load i8, ptr %57, align 1, !tbaa !11
  %59 = sext i8 %58 to i32
  %60 = icmp ne i32 %59, 0
  br i1 %60, label %61, label %126

61:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #8
  %62 = load ptr, ptr %19, align 8, !tbaa !9
  %63 = getelementptr inbounds i8, ptr %62, i32 1
  store ptr %63, ptr %19, align 8, !tbaa !9
  %64 = load i8, ptr %62, align 1, !tbaa !11
  store i8 %64, ptr %20, align 1, !tbaa !11
  %65 = load i8, ptr %20, align 1, !tbaa !11
  %66 = sext i8 %65 to i32
  %67 = icmp eq i32 %66, 111
  br i1 %67, label %72, label %68

68:                                               ; preds = %61
  %69 = load i8, ptr %20, align 1, !tbaa !11
  %70 = sext i8 %69 to i32
  %71 = icmp eq i32 %70, 79
  br i1 %71, label %72, label %73

72:                                               ; preds = %68, %61
  store i32 1, ptr %15, align 4, !tbaa !5
  br label %73

73:                                               ; preds = %72, %68
  %74 = load i8, ptr %20, align 1, !tbaa !11
  %75 = sext i8 %74 to i32
  %76 = icmp eq i32 %75, 97
  br i1 %76, label %81, label %77

77:                                               ; preds = %73
  %78 = load i8, ptr %20, align 1, !tbaa !11
  %79 = sext i8 %78 to i32
  %80 = icmp eq i32 %79, 65
  br i1 %80, label %81, label %82

81:                                               ; preds = %77, %73
  store i32 2, ptr %15, align 4, !tbaa !5
  br label %82

82:                                               ; preds = %81, %77
  %83 = load i8, ptr %20, align 1, !tbaa !11
  %84 = sext i8 %83 to i32
  %85 = icmp sge i32 %84, 48
  br i1 %85, label %86, label %94

86:                                               ; preds = %82
  %87 = load i8, ptr %20, align 1, !tbaa !11
  %88 = sext i8 %87 to i32
  %89 = icmp sle i32 %88, 57
  br i1 %89, label %90, label %94

90:                                               ; preds = %86
  %91 = load i8, ptr %20, align 1, !tbaa !11
  %92 = sext i8 %91 to i32
  %93 = sub nsw i32 %92, 48
  store i32 %93, ptr %16, align 4, !tbaa !5
  br label %94

94:                                               ; preds = %90, %86, %82
  %95 = load i8, ptr %20, align 1, !tbaa !11
  %96 = sext i8 %95 to i32
  %97 = icmp eq i32 %96, 106
  br i1 %97, label %102, label %98

98:                                               ; preds = %94
  %99 = load i8, ptr %20, align 1, !tbaa !11
  %100 = sext i8 %99 to i32
  %101 = icmp eq i32 %100, 74
  br i1 %101, label %102, label %103

102:                                              ; preds = %98, %94
  store i32 1, ptr %17, align 4, !tbaa !5
  br label %103

103:                                              ; preds = %102, %98
  %104 = load i8, ptr %20, align 1, !tbaa !11
  %105 = sext i8 %104 to i32
  %106 = icmp eq i32 %105, 112
  br i1 %106, label %111, label %107

107:                                              ; preds = %103
  %108 = load i8, ptr %20, align 1, !tbaa !11
  %109 = sext i8 %108 to i32
  %110 = icmp eq i32 %109, 80
  br i1 %110, label %111, label %125

111:                                              ; preds = %107, %103
  %112 = load i32, ptr %14, align 4, !tbaa !5
  %113 = add nsw i32 %112, 1
  %114 = load i32, ptr %4, align 4, !tbaa !5
  %115 = icmp slt i32 %113, %114
  br i1 %115, label %116, label %125

116:                                              ; preds = %111
  %117 = load ptr, ptr %5, align 8, !tbaa !9
  %118 = load i32, ptr %14, align 4, !tbaa !5
  %119 = add nsw i32 %118, 1
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds ptr, ptr %117, i64 %120
  %122 = load ptr, ptr %121, align 8, !tbaa !9
  store ptr %122, ptr %8, align 8, !tbaa !9
  %123 = load i32, ptr %14, align 4, !tbaa !5
  %124 = add nsw i32 %123, 1
  store i32 %124, ptr %14, align 4, !tbaa !5
  br label %125

125:                                              ; preds = %116, %111, %107
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #8
  br label %56, !llvm.loop !12

126:                                              ; preds = %56
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  br label %133

127:                                              ; preds = %40
  %128 = load i32, ptr %11, align 4, !tbaa !5
  %129 = icmp eq i32 %128, 0
  br i1 %129, label %130, label %132

130:                                              ; preds = %127
  %131 = load i32, ptr %14, align 4, !tbaa !5
  store i32 %131, ptr %11, align 4, !tbaa !5
  br label %132

132:                                              ; preds = %130, %127
  br label %133

133:                                              ; preds = %132, %126
  br label %134

134:                                              ; preds = %133
  %135 = load i32, ptr %14, align 4, !tbaa !5
  %136 = add nsw i32 %135, 1
  store i32 %136, ptr %14, align 4, !tbaa !5
  br label %36, !llvm.loop !14

137:                                              ; preds = %36
  %138 = load i32, ptr %11, align 4, !tbaa !5
  %139 = icmp eq i32 %138, 0
  br i1 %139, label %140, label %141

140:                                              ; preds = %137
  call void @do_help()
  store i32 0, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %543

141:                                              ; preds = %137
  %142 = load ptr, ptr %5, align 8, !tbaa !9
  %143 = load i32, ptr %11, align 4, !tbaa !5
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds ptr, ptr %142, i64 %144
  %146 = load ptr, ptr %145, align 8, !tbaa !9
  store ptr %146, ptr %7, align 8, !tbaa !9
  %147 = load i32, ptr %10, align 4, !tbaa !5
  %148 = sext i32 %147 to i64
  %149 = call noalias ptr @malloc(i64 noundef %148) #9
  store ptr %149, ptr %9, align 8, !tbaa !9
  %150 = load ptr, ptr %9, align 8, !tbaa !9
  %151 = icmp eq ptr %150, null
  br i1 %151, label %152, label %154

152:                                              ; preds = %141
  %153 = call i32 (ptr, ...) @printf(ptr noundef @.str.8)
  store i32 -104, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %543

154:                                              ; preds = %141
  %155 = load i32, ptr %15, align 4, !tbaa !5
  %156 = icmp eq i32 %155, 2
  br i1 %156, label %157, label %163

157:                                              ; preds = %154
  %158 = load ptr, ptr %7, align 8, !tbaa !9
  %159 = call i32 @check_file_exists(ptr noundef %158)
  %160 = icmp eq i32 %159, 0
  br i1 %160, label %161, label %162

161:                                              ; preds = %157
  store i32 1, ptr %15, align 4, !tbaa !5
  br label %162

162:                                              ; preds = %161, %157
  br label %226

163:                                              ; preds = %154
  %164 = load i32, ptr %15, align 4, !tbaa !5
  %165 = icmp eq i32 %164, 0
  br i1 %165, label %166, label %225

166:                                              ; preds = %163
  %167 = load ptr, ptr %7, align 8, !tbaa !9
  %168 = call i32 @check_file_exists(ptr noundef %167)
  %169 = icmp ne i32 %168, 0
  br i1 %169, label %170, label %224

170:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #8
  store i8 0, ptr %21, align 1, !tbaa !11
  br label %171

171:                                              ; preds = %206, %170
  call void @llvm.lifetime.start.p0(i64 128, ptr %22) #8
  %172 = load ptr, ptr %7, align 8, !tbaa !9
  %173 = call i32 (ptr, ...) @printf(ptr noundef @.str.9, ptr noundef %172)
  %174 = getelementptr inbounds [128 x i8], ptr %22, i64 0, i64 0
  %175 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str.10, ptr noundef %174)
  %176 = icmp ne i32 %175, 1
  br i1 %176, label %177, label %178

177:                                              ; preds = %171
  call void @exit(i32 noundef 1) #10
  unreachable

178:                                              ; preds = %171
  %179 = getelementptr inbounds [128 x i8], ptr %22, i64 0, i64 0
  %180 = load i8, ptr %179, align 16, !tbaa !11
  store i8 %180, ptr %21, align 1, !tbaa !11
  %181 = load i8, ptr %21, align 1, !tbaa !11
  %182 = sext i8 %181 to i32
  %183 = icmp sge i32 %182, 97
  br i1 %183, label %184, label %193

184:                                              ; preds = %178
  %185 = load i8, ptr %21, align 1, !tbaa !11
  %186 = sext i8 %185 to i32
  %187 = icmp sle i32 %186, 122
  br i1 %187, label %188, label %193

188:                                              ; preds = %184
  %189 = load i8, ptr %21, align 1, !tbaa !11
  %190 = sext i8 %189 to i32
  %191 = sub nsw i32 %190, 32
  %192 = trunc i32 %191 to i8
  store i8 %192, ptr %21, align 1, !tbaa !11
  br label %193

193:                                              ; preds = %188, %184, %178
  call void @llvm.lifetime.end.p0(i64 128, ptr %22) #8
  br label %194

194:                                              ; preds = %193
  %195 = load i8, ptr %21, align 1, !tbaa !11
  %196 = sext i8 %195 to i32
  %197 = icmp ne i32 %196, 89
  br i1 %197, label %198, label %206

198:                                              ; preds = %194
  %199 = load i8, ptr %21, align 1, !tbaa !11
  %200 = sext i8 %199 to i32
  %201 = icmp ne i32 %200, 78
  br i1 %201, label %202, label %206

202:                                              ; preds = %198
  %203 = load i8, ptr %21, align 1, !tbaa !11
  %204 = sext i8 %203 to i32
  %205 = icmp ne i32 %204, 65
  br label %206

206:                                              ; preds = %202, %198, %194
  %207 = phi i1 [ false, %198 ], [ false, %194 ], [ %205, %202 ]
  br i1 %207, label %171, label %208, !llvm.loop !15

208:                                              ; preds = %206
  %209 = load i8, ptr %21, align 1, !tbaa !11
  %210 = sext i8 %209 to i32
  %211 = icmp eq i32 %210, 65
  br i1 %211, label %212, label %213

212:                                              ; preds = %208
  store i32 2, ptr %15, align 4, !tbaa !5
  br label %220

213:                                              ; preds = %208
  %214 = load i8, ptr %21, align 1, !tbaa !11
  %215 = sext i8 %214 to i32
  %216 = icmp eq i32 %215, 78
  br i1 %216, label %217, label %219

217:                                              ; preds = %213
  call void @do_help()
  %218 = load ptr, ptr %9, align 8, !tbaa !9
  call void @free(ptr noundef %218) #8
  store i32 0, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %221

219:                                              ; preds = %213
  br label %220

220:                                              ; preds = %219, %212
  store i32 0, ptr %18, align 4
  br label %221

221:                                              ; preds = %220, %217
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #8
  %222 = load i32, ptr %18, align 4
  switch i32 %222, label %543 [
    i32 0, label %223
  ]

223:                                              ; preds = %221
  br label %224

224:                                              ; preds = %223, %166
  br label %225

225:                                              ; preds = %224, %163
  br label %226

226:                                              ; preds = %225, %162
  %227 = load ptr, ptr %7, align 8, !tbaa !9
  %228 = load i32, ptr %15, align 4, !tbaa !5
  %229 = call ptr @zipOpen64(ptr noundef %227, i32 noundef %228)
  store ptr %229, ptr %6, align 8, !tbaa !9
  %230 = load ptr, ptr %6, align 8, !tbaa !9
  %231 = icmp eq ptr %230, null
  br i1 %231, label %232, label %235

232:                                              ; preds = %226
  %233 = load ptr, ptr %7, align 8, !tbaa !9
  %234 = call i32 (ptr, ...) @printf(ptr noundef @.str.11, ptr noundef %233)
  store i32 -1, ptr %13, align 4, !tbaa !5
  br label %238

235:                                              ; preds = %226
  %236 = load ptr, ptr %7, align 8, !tbaa !9
  %237 = call i32 (ptr, ...) @printf(ptr noundef @.str.12, ptr noundef %236)
  br label %238

238:                                              ; preds = %235, %232
  %239 = load i32, ptr %11, align 4, !tbaa !5
  %240 = add nsw i32 %239, 1
  store i32 %240, ptr %14, align 4, !tbaa !5
  br label %241

241:                                              ; preds = %528, %238
  %242 = load i32, ptr %14, align 4, !tbaa !5
  %243 = load i32, ptr %4, align 4, !tbaa !5
  %244 = icmp slt i32 %242, %243
  br i1 %244, label %245, label %248

245:                                              ; preds = %241
  %246 = load i32, ptr %13, align 4, !tbaa !5
  %247 = icmp eq i32 %246, 0
  br label %248

248:                                              ; preds = %245, %241
  %249 = phi i1 [ false, %241 ], [ %247, %245 ]
  br i1 %249, label %250, label %531

250:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  store ptr null, ptr %23, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  store i32 0, ptr %24, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %251 = load ptr, ptr %5, align 8, !tbaa !9
  %252 = load i32, ptr %14, align 4, !tbaa !5
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds ptr, ptr %251, i64 %253
  %255 = load ptr, ptr %254, align 8, !tbaa !9
  store ptr %255, ptr %25, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 48, ptr %27) #8
  call void @llvm.memset.p0.i64(ptr align 8 %27, i8 0, i64 48, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  store i64 0, ptr %28, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #8
  store i32 0, ptr %29, align 4, !tbaa !5
  %256 = load ptr, ptr %5, align 8, !tbaa !9
  %257 = load i32, ptr %14, align 4, !tbaa !5
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds ptr, ptr %256, i64 %258
  %260 = load ptr, ptr %259, align 8, !tbaa !9
  %261 = load i8, ptr %260, align 1, !tbaa !11
  %262 = sext i8 %261 to i32
  %263 = icmp eq i32 %262, 45
  br i1 %263, label %273, label %264

264:                                              ; preds = %250
  %265 = load ptr, ptr %5, align 8, !tbaa !9
  %266 = load i32, ptr %14, align 4, !tbaa !5
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds ptr, ptr %265, i64 %267
  %269 = load ptr, ptr %268, align 8, !tbaa !9
  %270 = load i8, ptr %269, align 1, !tbaa !11
  %271 = sext i8 %270 to i32
  %272 = icmp eq i32 %271, 47
  br i1 %272, label %273, label %362

273:                                              ; preds = %264, %250
  %274 = load ptr, ptr %5, align 8, !tbaa !9
  %275 = load i32, ptr %14, align 4, !tbaa !5
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds ptr, ptr %274, i64 %276
  %278 = load ptr, ptr %277, align 8, !tbaa !9
  %279 = call i64 @strlen(ptr noundef %278) #11
  %280 = icmp eq i64 %279, 2
  br i1 %280, label %281, label %362

281:                                              ; preds = %273
  %282 = load ptr, ptr %5, align 8, !tbaa !9
  %283 = load i32, ptr %14, align 4, !tbaa !5
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds ptr, ptr %282, i64 %284
  %286 = load ptr, ptr %285, align 8, !tbaa !9
  %287 = getelementptr inbounds i8, ptr %286, i64 1
  %288 = load i8, ptr %287, align 1, !tbaa !11
  %289 = sext i8 %288 to i32
  %290 = icmp eq i32 %289, 111
  br i1 %290, label %361, label %291

291:                                              ; preds = %281
  %292 = load ptr, ptr %5, align 8, !tbaa !9
  %293 = load i32, ptr %14, align 4, !tbaa !5
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds ptr, ptr %292, i64 %294
  %296 = load ptr, ptr %295, align 8, !tbaa !9
  %297 = getelementptr inbounds i8, ptr %296, i64 1
  %298 = load i8, ptr %297, align 1, !tbaa !11
  %299 = sext i8 %298 to i32
  %300 = icmp eq i32 %299, 79
  br i1 %300, label %361, label %301

301:                                              ; preds = %291
  %302 = load ptr, ptr %5, align 8, !tbaa !9
  %303 = load i32, ptr %14, align 4, !tbaa !5
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds ptr, ptr %302, i64 %304
  %306 = load ptr, ptr %305, align 8, !tbaa !9
  %307 = getelementptr inbounds i8, ptr %306, i64 1
  %308 = load i8, ptr %307, align 1, !tbaa !11
  %309 = sext i8 %308 to i32
  %310 = icmp eq i32 %309, 97
  br i1 %310, label %361, label %311

311:                                              ; preds = %301
  %312 = load ptr, ptr %5, align 8, !tbaa !9
  %313 = load i32, ptr %14, align 4, !tbaa !5
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds ptr, ptr %312, i64 %314
  %316 = load ptr, ptr %315, align 8, !tbaa !9
  %317 = getelementptr inbounds i8, ptr %316, i64 1
  %318 = load i8, ptr %317, align 1, !tbaa !11
  %319 = sext i8 %318 to i32
  %320 = icmp eq i32 %319, 65
  br i1 %320, label %361, label %321

321:                                              ; preds = %311
  %322 = load ptr, ptr %5, align 8, !tbaa !9
  %323 = load i32, ptr %14, align 4, !tbaa !5
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds ptr, ptr %322, i64 %324
  %326 = load ptr, ptr %325, align 8, !tbaa !9
  %327 = getelementptr inbounds i8, ptr %326, i64 1
  %328 = load i8, ptr %327, align 1, !tbaa !11
  %329 = sext i8 %328 to i32
  %330 = icmp eq i32 %329, 112
  br i1 %330, label %361, label %331

331:                                              ; preds = %321
  %332 = load ptr, ptr %5, align 8, !tbaa !9
  %333 = load i32, ptr %14, align 4, !tbaa !5
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds ptr, ptr %332, i64 %334
  %336 = load ptr, ptr %335, align 8, !tbaa !9
  %337 = getelementptr inbounds i8, ptr %336, i64 1
  %338 = load i8, ptr %337, align 1, !tbaa !11
  %339 = sext i8 %338 to i32
  %340 = icmp eq i32 %339, 80
  br i1 %340, label %361, label %341

341:                                              ; preds = %331
  %342 = load ptr, ptr %5, align 8, !tbaa !9
  %343 = load i32, ptr %14, align 4, !tbaa !5
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds ptr, ptr %342, i64 %344
  %346 = load ptr, ptr %345, align 8, !tbaa !9
  %347 = getelementptr inbounds i8, ptr %346, i64 1
  %348 = load i8, ptr %347, align 1, !tbaa !11
  %349 = sext i8 %348 to i32
  %350 = icmp sge i32 %349, 48
  br i1 %350, label %351, label %362

351:                                              ; preds = %341
  %352 = load ptr, ptr %5, align 8, !tbaa !9
  %353 = load i32, ptr %14, align 4, !tbaa !5
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds ptr, ptr %352, i64 %354
  %356 = load ptr, ptr %355, align 8, !tbaa !9
  %357 = getelementptr inbounds i8, ptr %356, i64 1
  %358 = load i8, ptr %357, align 1, !tbaa !11
  %359 = sext i8 %358 to i32
  %360 = icmp sle i32 %359, 57
  br i1 %360, label %361, label %362

361:                                              ; preds = %351, %331, %321, %311, %301, %291, %281
  store i32 11, ptr %18, align 4
  br label %525

362:                                              ; preds = %351, %341, %273, %264
  %363 = load ptr, ptr %25, align 8, !tbaa !9
  %364 = getelementptr inbounds %struct.zip_fileinfo, ptr %27, i32 0, i32 0
  %365 = getelementptr inbounds %struct.zip_fileinfo, ptr %27, i32 0, i32 1
  %366 = call i64 @filetime(ptr noundef %363, ptr noundef %364, ptr noundef %365)
  %367 = load ptr, ptr %8, align 8, !tbaa !9
  %368 = icmp ne ptr %367, null
  br i1 %368, label %369, label %378

369:                                              ; preds = %362
  %370 = load i32, ptr %13, align 4, !tbaa !5
  %371 = icmp eq i32 %370, 0
  br i1 %371, label %372, label %378

372:                                              ; preds = %369
  %373 = load ptr, ptr %25, align 8, !tbaa !9
  %374 = load ptr, ptr %9, align 8, !tbaa !9
  %375 = load i32, ptr %10, align 4, !tbaa !5
  %376 = sext i32 %375 to i64
  %377 = call i32 @get_file_crc(ptr noundef %373, ptr noundef %374, i64 noundef %376, ptr noundef %28)
  store i32 %377, ptr %13, align 4, !tbaa !5
  br label %378

378:                                              ; preds = %372, %369, %362
  %379 = load ptr, ptr %25, align 8, !tbaa !9
  %380 = call i32 @is_large_file(ptr noundef %379)
  store i32 %380, ptr %29, align 4, !tbaa !5
  %381 = load ptr, ptr %25, align 8, !tbaa !9
  store ptr %381, ptr %26, align 8, !tbaa !9
  br label %382

382:                                              ; preds = %396, %378
  %383 = load ptr, ptr %26, align 8, !tbaa !9
  %384 = getelementptr inbounds i8, ptr %383, i64 0
  %385 = load i8, ptr %384, align 1, !tbaa !11
  %386 = sext i8 %385 to i32
  %387 = icmp eq i32 %386, 92
  br i1 %387, label %394, label %388

388:                                              ; preds = %382
  %389 = load ptr, ptr %26, align 8, !tbaa !9
  %390 = getelementptr inbounds i8, ptr %389, i64 0
  %391 = load i8, ptr %390, align 1, !tbaa !11
  %392 = sext i8 %391 to i32
  %393 = icmp eq i32 %392, 47
  br label %394

394:                                              ; preds = %388, %382
  %395 = phi i1 [ true, %382 ], [ %393, %388 ]
  br i1 %395, label %396, label %399

396:                                              ; preds = %394
  %397 = load ptr, ptr %26, align 8, !tbaa !9
  %398 = getelementptr inbounds i8, ptr %397, i32 1
  store ptr %398, ptr %26, align 8, !tbaa !9
  br label %382, !llvm.loop !18

399:                                              ; preds = %394
  %400 = load i32, ptr %17, align 4, !tbaa !5
  %401 = icmp ne i32 %400, 0
  br i1 %401, label %402, label %431

402:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  store ptr null, ptr %30, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  store ptr null, ptr %31, align 8, !tbaa !9
  %403 = load ptr, ptr %26, align 8, !tbaa !9
  store ptr %403, ptr %30, align 8, !tbaa !9
  br label %404

404:                                              ; preds = %421, %402
  %405 = load ptr, ptr %30, align 8, !tbaa !9
  %406 = load i8, ptr %405, align 1, !tbaa !11
  %407 = icmp ne i8 %406, 0
  br i1 %407, label %408, label %424

408:                                              ; preds = %404
  %409 = load ptr, ptr %30, align 8, !tbaa !9
  %410 = load i8, ptr %409, align 1, !tbaa !11
  %411 = sext i8 %410 to i32
  %412 = icmp eq i32 %411, 92
  br i1 %412, label %418, label %413

413:                                              ; preds = %408
  %414 = load ptr, ptr %30, align 8, !tbaa !9
  %415 = load i8, ptr %414, align 1, !tbaa !11
  %416 = sext i8 %415 to i32
  %417 = icmp eq i32 %416, 47
  br i1 %417, label %418, label %420

418:                                              ; preds = %413, %408
  %419 = load ptr, ptr %30, align 8, !tbaa !9
  store ptr %419, ptr %31, align 8, !tbaa !9
  br label %420

420:                                              ; preds = %418, %413
  br label %421

421:                                              ; preds = %420
  %422 = load ptr, ptr %30, align 8, !tbaa !9
  %423 = getelementptr inbounds i8, ptr %422, i32 1
  store ptr %423, ptr %30, align 8, !tbaa !9
  br label %404, !llvm.loop !19

424:                                              ; preds = %404
  %425 = load ptr, ptr %31, align 8, !tbaa !9
  %426 = icmp ne ptr %425, null
  br i1 %426, label %427, label %430

427:                                              ; preds = %424
  %428 = load ptr, ptr %31, align 8, !tbaa !9
  %429 = getelementptr inbounds i8, ptr %428, i64 1
  store ptr %429, ptr %26, align 8, !tbaa !9
  br label %430

430:                                              ; preds = %427, %424
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  br label %431

431:                                              ; preds = %430, %399
  %432 = load ptr, ptr %6, align 8, !tbaa !9
  %433 = load ptr, ptr %26, align 8, !tbaa !9
  %434 = load i32, ptr %16, align 4, !tbaa !5
  %435 = icmp ne i32 %434, 0
  %436 = zext i1 %435 to i64
  %437 = select i1 %435, i32 8, i32 0
  %438 = load i32, ptr %16, align 4, !tbaa !5
  %439 = load ptr, ptr %8, align 8, !tbaa !9
  %440 = load i64, ptr %28, align 8, !tbaa !16
  %441 = load i32, ptr %29, align 4, !tbaa !5
  %442 = call i32 @zipOpenNewFileInZip3_64(ptr noundef %432, ptr noundef %433, ptr noundef %27, ptr noundef null, i32 noundef 0, ptr noundef null, i32 noundef 0, ptr noundef null, i32 noundef %437, i32 noundef %438, i32 noundef 0, i32 noundef -15, i32 noundef 8, i32 noundef 0, ptr noundef %439, i64 noundef %440, i32 noundef %441)
  store i32 %442, ptr %13, align 4, !tbaa !5
  %443 = load i32, ptr %13, align 4, !tbaa !5
  %444 = icmp ne i32 %443, 0
  br i1 %444, label %445, label %449

445:                                              ; preds = %431
  %446 = load ptr, ptr %25, align 8, !tbaa !9
  %447 = load i32, ptr %13, align 4, !tbaa !5
  %448 = call i32 (ptr, ...) @printf(ptr noundef @.str.13, ptr noundef %446, i32 noundef %447)
  br label %458

449:                                              ; preds = %431
  %450 = load ptr, ptr %25, align 8, !tbaa !9
  %451 = call noalias ptr @fopen64(ptr noundef %450, ptr noundef @.str.1)
  store ptr %451, ptr %23, align 8, !tbaa !9
  %452 = load ptr, ptr %23, align 8, !tbaa !9
  %453 = icmp eq ptr %452, null
  br i1 %453, label %454, label %457

454:                                              ; preds = %449
  store i32 -1, ptr %13, align 4, !tbaa !5
  %455 = load ptr, ptr %25, align 8, !tbaa !9
  %456 = call i32 (ptr, ...) @printf(ptr noundef @.str.14, ptr noundef %455)
  br label %457

457:                                              ; preds = %454, %449
  br label %458

458:                                              ; preds = %457, %445
  %459 = load i32, ptr %13, align 4, !tbaa !5
  %460 = icmp eq i32 %459, 0
  br i1 %460, label %461, label %504

461:                                              ; preds = %458
  br label %462

462:                                              ; preds = %501, %461
  %463 = load ptr, ptr %9, align 8, !tbaa !9
  %464 = load i32, ptr %10, align 4, !tbaa !5
  %465 = sext i32 %464 to i64
  %466 = load ptr, ptr %23, align 8, !tbaa !9
  %467 = call i64 @fread(ptr noundef %463, i64 noundef 1, i64 noundef %465, ptr noundef %466)
  %468 = trunc i64 %467 to i32
  store i32 %468, ptr %24, align 4, !tbaa !5
  %469 = load i32, ptr %24, align 4, !tbaa !5
  %470 = load i32, ptr %10, align 4, !tbaa !5
  %471 = icmp slt i32 %469, %470
  br i1 %471, label %472, label %479

472:                                              ; preds = %462
  %473 = load ptr, ptr %23, align 8, !tbaa !9
  %474 = call i32 @feof(ptr noundef %473) #8
  %475 = icmp eq i32 %474, 0
  br i1 %475, label %476, label %479

476:                                              ; preds = %472
  %477 = load ptr, ptr %25, align 8, !tbaa !9
  %478 = call i32 (ptr, ...) @printf(ptr noundef @.str.3, ptr noundef %477)
  store i32 -1, ptr %13, align 4, !tbaa !5
  br label %479

479:                                              ; preds = %476, %472, %462
  %480 = load i32, ptr %24, align 4, !tbaa !5
  %481 = icmp sgt i32 %480, 0
  br i1 %481, label %482, label %494

482:                                              ; preds = %479
  %483 = load ptr, ptr %6, align 8, !tbaa !9
  %484 = load ptr, ptr %9, align 8, !tbaa !9
  %485 = load i32, ptr %24, align 4, !tbaa !5
  %486 = call i32 @zipWriteInFileInZip(ptr noundef %483, ptr noundef %484, i32 noundef %485)
  store i32 %486, ptr %13, align 4, !tbaa !5
  %487 = load i32, ptr %13, align 4, !tbaa !5
  %488 = icmp slt i32 %487, 0
  br i1 %488, label %489, label %493

489:                                              ; preds = %482
  %490 = load ptr, ptr %25, align 8, !tbaa !9
  %491 = load i32, ptr %13, align 4, !tbaa !5
  %492 = call i32 (ptr, ...) @printf(ptr noundef @.str.15, ptr noundef %490, i32 noundef %491)
  br label %493

493:                                              ; preds = %489, %482
  br label %494

494:                                              ; preds = %493, %479
  br label %495

495:                                              ; preds = %494
  %496 = load i32, ptr %13, align 4, !tbaa !5
  %497 = icmp eq i32 %496, 0
  br i1 %497, label %498, label %501

498:                                              ; preds = %495
  %499 = load i32, ptr %24, align 4, !tbaa !5
  %500 = icmp sgt i32 %499, 0
  br label %501

501:                                              ; preds = %498, %495
  %502 = phi i1 [ false, %495 ], [ %500, %498 ]
  br i1 %502, label %462, label %503, !llvm.loop !20

503:                                              ; preds = %501
  br label %504

504:                                              ; preds = %503, %458
  %505 = load ptr, ptr %23, align 8, !tbaa !9
  %506 = icmp ne ptr %505, null
  br i1 %506, label %507, label %510

507:                                              ; preds = %504
  %508 = load ptr, ptr %23, align 8, !tbaa !9
  %509 = call i32 @fclose(ptr noundef %508)
  br label %510

510:                                              ; preds = %507, %504
  %511 = load i32, ptr %13, align 4, !tbaa !5
  %512 = icmp slt i32 %511, 0
  br i1 %512, label %513, label %514

513:                                              ; preds = %510
  store i32 -1, ptr %13, align 4, !tbaa !5
  br label %524

514:                                              ; preds = %510
  %515 = load ptr, ptr %6, align 8, !tbaa !9
  %516 = call i32 @zipCloseFileInZip(ptr noundef %515)
  store i32 %516, ptr %13, align 4, !tbaa !5
  %517 = load i32, ptr %13, align 4, !tbaa !5
  %518 = icmp ne i32 %517, 0
  br i1 %518, label %519, label %523

519:                                              ; preds = %514
  %520 = load ptr, ptr %25, align 8, !tbaa !9
  %521 = load i32, ptr %13, align 4, !tbaa !5
  %522 = call i32 (ptr, ...) @printf(ptr noundef @.str.16, ptr noundef %520, i32 noundef %521)
  br label %523

523:                                              ; preds = %519, %514
  br label %524

524:                                              ; preds = %523, %513
  store i32 0, ptr %18, align 4
  br label %525

525:                                              ; preds = %524, %361
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  %526 = load i32, ptr %18, align 4
  switch i32 %526, label %545 [
    i32 0, label %527
    i32 11, label %528
  ]

527:                                              ; preds = %525
  br label %528

528:                                              ; preds = %527, %525
  %529 = load i32, ptr %14, align 4, !tbaa !5
  %530 = add nsw i32 %529, 1
  store i32 %530, ptr %14, align 4, !tbaa !5
  br label %241, !llvm.loop !21

531:                                              ; preds = %248
  %532 = load ptr, ptr %6, align 8, !tbaa !9
  %533 = call i32 @zipClose(ptr noundef %532, ptr noundef null)
  store i32 %533, ptr %12, align 4, !tbaa !5
  %534 = load i32, ptr %12, align 4, !tbaa !5
  %535 = icmp ne i32 %534, 0
  br i1 %535, label %536, label %540

536:                                              ; preds = %531
  %537 = load ptr, ptr %7, align 8, !tbaa !9
  %538 = load i32, ptr %12, align 4, !tbaa !5
  %539 = call i32 (ptr, ...) @printf(ptr noundef @.str.17, ptr noundef %537, i32 noundef %538)
  br label %540

540:                                              ; preds = %536, %531
  %541 = load ptr, ptr %9, align 8, !tbaa !9
  call void @free(ptr noundef %541) #8
  %542 = load i32, ptr %13, align 4, !tbaa !5
  store i32 %542, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %543

543:                                              ; preds = %540, %221, %152, %140, %34
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  %544 = load i32, ptr %3, align 4
  ret i32 %544

545:                                              ; preds = %525
  unreachable
}

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

declare i32 @__isoc99_scanf(ptr noundef, ...) #4

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

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

declare ptr @zipOpen64(ptr noundef, i32 noundef) #4

declare i32 @zipOpenNewFileInZip3_64(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, i64 noundef, i32 noundef) #4

declare i32 @zipWriteInFileInZip(ptr noundef, ptr noundef, i32 noundef) #4

declare i32 @zipCloseFileInZip(ptr noundef) #4

declare i32 @zipClose(ptr noundef, ptr noundef) #4

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

!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 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13}
!16 = !{!17, !17, i64 0}
!17 = !{!"long", !7, i64 0}
!18 = distinct !{!18, !13}
!19 = distinct !{!19, !13}
!20 = distinct !{!20, !13}
!21 = distinct !{!21, !13}


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

%struct.zip_fileinfo = type { %struct.tm_zip_s, i64, i64, i64 }
%struct.tm_zip_s = type { i32, i32, i32, i32, i32, i32 }

@.str.1 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [26 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local i64 @filetime(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #3

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @check_file_exists(ptr noundef) local_unnamed_addr #0

; Function Attrs: nofree nounwind
declare noalias noundef ptr @fopen64(ptr nocapture noundef readonly, ptr nocapture noundef readonly) local_unnamed_addr #4

; Function Attrs: nofree nounwind
declare noundef i32 @fclose(ptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @is_large_file(ptr noundef) local_unnamed_addr #0

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #4

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

; Function Attrs: nofree nounwind
declare noundef i64 @fread(ptr nocapture noundef, i64 noundef, i64 noundef, ptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: nofree nounwind
declare noundef i32 @feof(ptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local void @do_banner() local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @do_help() local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #0 {
  %3 = alloca [128 x i8], align 16
  %4 = alloca %struct.zip_fileinfo, align 8
  %5 = alloca i64, align 8
  tail call void @do_banner()
  %6 = icmp eq i32 %0, 1
  br i1 %6, label %8, label %.preheader272

.preheader272:                                    ; preds = %2
  %7 = icmp sgt i32 %0, 1
  br i1 %7, label %.lr.ph292, label %._crit_edge.thread

8:                                                ; preds = %2
  tail call void @do_help()
  br label %133

.lr.ph292:                                        ; preds = %.preheader272, %.loopexit
  %.0180291 = phi i32 [ %.3, %.loopexit ], [ 0, %.preheader272 ]
  %.0183290 = phi i32 [ %.3186, %.loopexit ], [ -1, %.preheader272 ]
  %.0187289 = phi i32 [ %.4, %.loopexit ], [ 0, %.preheader272 ]
  %.0191288 = phi i32 [ %30, %.loopexit ], [ 1, %.preheader272 ]
  %.0204287 = phi i32 [ %.1205, %.loopexit ], [ 0, %.preheader272 ]
  %.0206286 = phi ptr [ %.3209, %.loopexit ], [ null, %.preheader272 ]
  %9 = sext i32 %.0191288 to i64
  %10 = getelementptr inbounds ptr, ptr %1, i64 %9
  %11 = load ptr, ptr %10, align 8, !tbaa !5
  %12 = load i8, ptr %11, align 1, !tbaa !9
  %13 = icmp eq i8 %12, 45
  br i1 %13, label %.preheader271, label %28

.preheader271:                                    ; preds = %.lr.ph292
  %.0178274 = getelementptr inbounds i8, ptr %11, i64 1
  %14 = load i8, ptr %.0178274, align 1, !tbaa !9
  %.not241275 = icmp eq i8 %14, 0
  br i1 %.not241275, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader271, %26
  %15 = phi i8 [ %27, %26 ], [ %14, %.preheader271 ]
  %.0178281 = phi ptr [ %.0178, %26 ], [ %.0178274, %.preheader271 ]
  %.1181280 = phi i32 [ %.2182, %26 ], [ %.0180291, %.preheader271 ]
  %.1184279 = phi i32 [ %.2185, %26 ], [ %.0183290, %.preheader271 ]
  %.1188278 = phi i32 [ %.3190, %26 ], [ %.0187289, %.preheader271 ]
  %.1192277 = phi i32 [ %.2193, %26 ], [ %.0191288, %.preheader271 ]
  %.1207276 = phi ptr [ %.2208, %26 ], [ %.0206286, %.preheader271 ]
  %16 = and i8 %15, -33
  %or.cond = icmp eq i8 %16, 79
  %spec.select = select i1 %or.cond, i32 1, i32 %.1188278
  %or.cond5 = icmp eq i8 %16, 65
  %.3190 = select i1 %or.cond5, i32 2, i32 %spec.select
  %17 = add i8 %15, -48
  %or.cond8 = icmp ult i8 %17, 10
  %18 = zext nneg i8 %17 to i32
  %.2185 = select i1 %or.cond8, i32 %18, i32 %.1184279
  %or.cond11 = icmp eq i8 %16, 74
  %.2182 = select i1 %or.cond11, i32 1, i32 %.1181280
  %or.cond14 = icmp eq i8 %16, 80
  br i1 %or.cond14, label %19, label %26

19:                                               ; preds = %.lr.ph
  %20 = add nsw i32 %.1192277, 1
  %21 = icmp slt i32 %20, %0
  br i1 %21, label %22, label %26

22:                                               ; preds = %19
  %23 = sext i32 %20 to i64
  %24 = getelementptr inbounds ptr, ptr %1, i64 %23
  %25 = load ptr, ptr %24, align 8, !tbaa !5
  br label %26

26:                                               ; preds = %.lr.ph, %22, %19
  %.2208 = phi ptr [ %25, %22 ], [ %.1207276, %19 ], [ %.1207276, %.lr.ph ]
  %.2193 = phi i32 [ %20, %22 ], [ %.1192277, %19 ], [ %.1192277, %.lr.ph ]
  %.0178 = getelementptr inbounds i8, ptr %.0178281, i64 1
  %27 = load i8, ptr %.0178, align 1, !tbaa !9
  %.not241 = icmp eq i8 %27, 0
  br i1 %.not241, label %.loopexit, label %.lr.ph, !llvm.loop !10

28:                                               ; preds = %.lr.ph292
  %29 = icmp eq i32 %.0204287, 0
  %spec.select242 = select i1 %29, i32 %.0191288, i32 %.0204287
  br label %.loopexit

.loopexit:                                        ; preds = %26, %.preheader271, %28
  %.3209 = phi ptr [ %.0206286, %28 ], [ %.0206286, %.preheader271 ], [ %.2208, %26 ]
  %.1205 = phi i32 [ %spec.select242, %28 ], [ %.0204287, %.preheader271 ], [ %.0204287, %26 ]
  %.3194 = phi i32 [ %.0191288, %28 ], [ %.0191288, %.preheader271 ], [ %.2193, %26 ]
  %.4 = phi i32 [ %.0187289, %28 ], [ %.0187289, %.preheader271 ], [ %.3190, %26 ]
  %.3186 = phi i32 [ %.0183290, %28 ], [ %.0183290, %.preheader271 ], [ %.2185, %26 ]
  %.3 = phi i32 [ %.0180291, %28 ], [ %.0180291, %.preheader271 ], [ %.2182, %26 ]
  %30 = add nsw i32 %.3194, 1
  %31 = icmp slt i32 %30, %0
  br i1 %31, label %.lr.ph292, label %._crit_edge, !llvm.loop !12

._crit_edge:                                      ; preds = %.loopexit
  %32 = icmp eq i32 %.3, 0
  %33 = icmp eq i32 %.1205, 0
  br i1 %33, label %._crit_edge.thread, label %34

._crit_edge.thread:                               ; preds = %.preheader272, %._crit_edge
  tail call void @do_help()
  br label %133

34:                                               ; preds = %._crit_edge
  %35 = sext i32 %.1205 to i64
  %36 = getelementptr inbounds ptr, ptr %1, i64 %35
  %37 = load ptr, ptr %36, align 8, !tbaa !5
  %38 = tail call noalias dereferenceable_or_null(16384) ptr @malloc(i64 noundef 16384) #9
  %39 = icmp eq ptr %38, null
  br i1 %39, label %40, label %42

40:                                               ; preds = %34
  %41 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8)
  br label %133

42:                                               ; preds = %34
  switch i32 %.4, label %.thread [
    i32 2, label %43
    i32 0, label %46
  ]

43:                                               ; preds = %42
  %44 = tail call i32 @check_file_exists(ptr noundef %37)
  %45 = icmp eq i32 %44, 0
  %spec.select243 = select i1 %45, i32 1, i32 2
  br label %.thread

46:                                               ; preds = %42
  %47 = tail call i32 @check_file_exists(ptr noundef %37)
  %.not = icmp eq i32 %47, 0
  br i1 %.not, label %.thread, label %.preheader270

.preheader270:                                    ; preds = %46, %51
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %3) #10
  %48 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.9, ptr noundef %37)
  %49 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str.10, ptr noundef nonnull %3)
  %.not231 = icmp eq i32 %49, 1
  br i1 %.not231, label %51, label %50

50:                                               ; preds = %.preheader270
  call void @exit(i32 noundef 1) #11
  unreachable

51:                                               ; preds = %.preheader270
  %52 = load i8, ptr %3, align 16, !tbaa !9
  %53 = add i8 %52, -97
  %or.cond17 = icmp ult i8 %53, 26
  %54 = add nsw i8 %52, -32
  %spec.select244 = select i1 %or.cond17, i8 %54, i8 %52
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %3) #10
  switch i8 %spec.select244, label %.preheader270 [
    i8 65, label %.thread.loopexit
    i8 78, label %55
    i8 89, label %.thread
  ]

55:                                               ; preds = %51
  call void @do_help()
  call void @free(ptr noundef %38) #10
  br label %133

.thread.loopexit:                                 ; preds = %51
  br label %.thread

.thread:                                          ; preds = %51, %.thread.loopexit, %43, %42, %46
  %.7 = phi i32 [ 0, %46 ], [ %spec.select243, %43 ], [ %.4, %42 ], [ 2, %.thread.loopexit ], [ 0, %51 ]
  %56 = call ptr @zipOpen64(ptr noundef %37, i32 noundef %.7) #10
  %57 = icmp ne ptr %56, null
  br i1 %57, label %59, label %.thread312

.thread312:                                       ; preds = %.thread
  %58 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.11, ptr noundef %37)
  br label %._crit_edge302

59:                                               ; preds = %.thread
  %60 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.12, ptr noundef %37)
  %.4195298 = add nsw i32 %.1205, 1
  %61 = icmp slt i32 %.4195298, %0
  %62 = and i1 %57, %61
  br i1 %62, label %.lr.ph301, label %._crit_edge302

.lr.ph301:                                        ; preds = %59
  %63 = getelementptr inbounds i8, ptr %4, i64 24
  %.not233 = icmp eq ptr %.3209, null
  %.not237 = icmp eq i32 %.3186, 0
  %64 = select i1 %.not237, i32 0, i32 8
  %65 = sext i32 %.4195298 to i64
  %66 = zext nneg i32 %0 to i64
  br label %67

67:                                               ; preds = %.lr.ph301, %127
  %indvars.iv = phi i64 [ %65, %.lr.ph301 ], [ %indvars.iv.next, %127 ]
  %68 = getelementptr inbounds ptr, ptr %1, i64 %indvars.iv
  %69 = load ptr, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %4, i8 0, i64 48, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #10
  store i64 0, ptr %5, align 8, !tbaa !13
  %70 = load i8, ptr %69, align 1, !tbaa !9
  switch i8 %70, label %79 [
    i8 45, label %71
    i8 47, label %71
  ]

71:                                               ; preds = %67, %67
  %72 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %69) #12
  %73 = icmp eq i64 %72, 2
  br i1 %73, label %74, label %79

74:                                               ; preds = %71
  %75 = getelementptr inbounds i8, ptr %69, i64 1
  %76 = load i8, ptr %75, align 1, !tbaa !9
  switch i8 %76, label %77 [
    i8 111, label %127
    i8 79, label %127
    i8 97, label %127
    i8 65, label %127
    i8 112, label %127
    i8 80, label %127
  ]

77:                                               ; preds = %74
  %78 = add i8 %76, -48
  %or.cond245 = icmp ult i8 %78, 10
  br i1 %or.cond245, label %127, label %79

79:                                               ; preds = %67, %77, %71
  %80 = call i64 @filetime(ptr noundef nonnull %69, ptr noundef nonnull %4, ptr noundef nonnull %63)
  br i1 %.not233, label %83, label %81

81:                                               ; preds = %79
  %82 = call i32 @get_file_crc(ptr noundef nonnull %69, ptr noundef nonnull %38, i64 noundef 16384, ptr noundef nonnull %5)
  br label %83

83:                                               ; preds = %81, %79
  %84 = call i32 @is_large_file(ptr noundef nonnull %69)
  br label %85

85:                                               ; preds = %.critedge24, %83
  %.0172 = phi ptr [ %69, %83 ], [ %87, %.critedge24 ]
  %86 = load i8, ptr %.0172, align 1, !tbaa !9
  switch i8 %86, label %88 [
    i8 92, label %.critedge24
    i8 47, label %.critedge24
  ]

.critedge24:                                      ; preds = %85, %85
  %87 = getelementptr inbounds i8, ptr %.0172, i64 1
  br label %85, !llvm.loop !15

88:                                               ; preds = %85
  br i1 %32, label %95, label %.preheader269

.preheader269:                                    ; preds = %88, %91
  %89 = phi i8 [ %.pr, %91 ], [ %86, %88 ]
  %.0171 = phi ptr [ %92, %91 ], [ %.0172, %88 ]
  %.0 = phi ptr [ %.1, %91 ], [ null, %88 ]
  switch i8 %89, label %91 [
    i8 0, label %93
    i8 92, label %90
    i8 47, label %90
  ]

90:                                               ; preds = %.preheader269, %.preheader269
  br label %91

91:                                               ; preds = %.preheader269, %90
  %.1 = phi ptr [ %.0171, %90 ], [ %.0, %.preheader269 ]
  %92 = getelementptr inbounds i8, ptr %.0171, i64 1
  %.pr = load i8, ptr %92, align 1, !tbaa !9
  br label %.preheader269, !llvm.loop !16

93:                                               ; preds = %.preheader269
  %.not236 = icmp eq ptr %.0, null
  %94 = getelementptr inbounds i8, ptr %.0, i64 1
  %spec.select246 = select i1 %.not236, ptr %.0172, ptr %94
  br label %95

95:                                               ; preds = %93, %88
  %.2 = phi ptr [ %spec.select246, %93 ], [ %.0172, %88 ]
  %96 = load i64, ptr %5, align 8, !tbaa !13
  %97 = call i32 @zipOpenNewFileInZip3_64(ptr noundef nonnull %56, ptr noundef %.2, ptr noundef nonnull %4, ptr noundef null, i32 noundef 0, ptr noundef null, i32 noundef 0, ptr noundef null, i32 noundef %64, i32 noundef %.3186, i32 noundef 0, i32 noundef -15, i32 noundef 8, i32 noundef 0, ptr noundef %.3209, i64 noundef %96, i32 noundef %84) #10
  %.not238 = icmp eq i32 %97, 0
  br i1 %.not238, label %100, label %98

98:                                               ; preds = %95
  %99 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.13, ptr noundef nonnull %69, i32 noundef %97)
  br label %121

100:                                              ; preds = %95
  %101 = call noalias ptr @fopen64(ptr noundef nonnull %69, ptr noundef nonnull @.str.1)
  %102 = icmp eq ptr %101, null
  br i1 %102, label %.thread267, label %.preheader

.thread267:                                       ; preds = %100
  %103 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.14, ptr noundef nonnull %69)
  br label %.thread315

.preheader:                                       ; preds = %100, %118
  %104 = call i64 @fread(ptr noundef nonnull %38, i64 noundef 1, i64 noundef 16384, ptr noundef nonnull %101)
  %105 = trunc i64 %104 to i32
  %106 = icmp slt i32 %105, 16384
  br i1 %106, label %107, label %.thread254

107:                                              ; preds = %.preheader
  %108 = call i32 @feof(ptr noundef nonnull %101) #10
  %109 = icmp eq i32 %108, 0
  br i1 %109, label %110, label %112

110:                                              ; preds = %107
  %111 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, ptr noundef nonnull %69)
  br label %112

112:                                              ; preds = %110, %107
  %.4200 = phi i32 [ -1, %110 ], [ 0, %107 ]
  %113 = icmp sgt i32 %105, 0
  br i1 %113, label %.thread254, label %.thread257

.thread254:                                       ; preds = %.preheader, %112
  %114 = call i32 @zipWriteInFileInZip(ptr noundef nonnull %56, ptr noundef nonnull %38, i32 noundef %105) #10
  %115 = icmp slt i32 %114, 0
  br i1 %115, label %116, label %118

116:                                              ; preds = %.thread254
  %117 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.15, ptr noundef nonnull %69, i32 noundef %114)
  br label %.thread257

118:                                              ; preds = %.thread254
  %119 = icmp eq i32 %114, 0
  br i1 %119, label %.preheader, label %.thread257, !llvm.loop !17

.thread257:                                       ; preds = %112, %118, %116
  %.6202.ph = phi i32 [ %114, %116 ], [ %.4200, %112 ], [ %114, %118 ]
  %120 = call i32 @fclose(ptr noundef nonnull %101)
  br label %121

121:                                              ; preds = %98, %.thread257
  %.6202266 = phi i32 [ %.6202.ph, %.thread257 ], [ %97, %98 ]
  %122 = icmp slt i32 %.6202266, 0
  br i1 %122, label %.thread315, label %123

123:                                              ; preds = %121
  %124 = call i32 @zipCloseFileInZip(ptr noundef nonnull %56) #10
  %.not240 = icmp eq i32 %124, 0
  br i1 %.not240, label %127, label %125

125:                                              ; preds = %123
  %126 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.16, ptr noundef nonnull %69, i32 noundef %124)
  br label %.thread315

.thread315:                                       ; preds = %121, %125, %.thread267
  %.8.ph = phi i32 [ -1, %.thread267 ], [ %124, %125 ], [ -1, %121 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4) #10
  br label %._crit_edge302

127:                                              ; preds = %123, %74, %74, %74, %74, %74, %74, %77
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4) #10
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %128 = icmp slt i64 %indvars.iv.next, %66
  br i1 %128, label %67, label %._crit_edge302, !llvm.loop !18

._crit_edge302:                                   ; preds = %127, %.thread315, %.thread312, %59
  %.1197.lcssa = phi i32 [ 0, %59 ], [ -1, %.thread312 ], [ %.8.ph, %.thread315 ], [ 0, %127 ]
  %129 = call i32 @zipClose(ptr noundef %56, ptr noundef null) #10
  %.not232 = icmp eq i32 %129, 0
  br i1 %.not232, label %132, label %130

130:                                              ; preds = %._crit_edge302
  %131 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17, ptr noundef %37, i32 noundef %129)
  br label %132

132:                                              ; preds = %130, %._crit_edge302
  call void @free(ptr noundef %38) #10
  br label %133

133:                                              ; preds = %55, %132, %40, %._crit_edge.thread, %8
  %.1175 = phi i32 [ 0, %8 ], [ 0, %._crit_edge.thread ], [ -104, %40 ], [ %.1197.lcssa, %132 ], [ 0, %55 ]
  ret i32 %.1175
}

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

; Function Attrs: nofree nounwind
declare noundef i32 @__isoc99_scanf(ptr nocapture noundef readonly, ...) local_unnamed_addr #4

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

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

declare ptr @zipOpen64(ptr noundef, i32 noundef) local_unnamed_addr #8

declare i32 @zipOpenNewFileInZip3_64(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, i64 noundef, i32 noundef) local_unnamed_addr #8

declare i32 @zipWriteInFileInZip(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #8

declare i32 @zipCloseFileInZip(ptr noundef) local_unnamed_addr #8

declare i32 @zipClose(ptr noundef, ptr noundef) local_unnamed_addr #8

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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { mustprogress nofree nounwind willreturn memory(argmem: read) "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 = { nofree 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 #5 = { 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 #6 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { "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 #9 = { nounwind allocsize(0) }
attributes #10 = { nounwind }
attributes #11 = { noreturn nounwind }
attributes #12 = { nounwind willreturn memory(read) }

!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 = !{!7, !7, i64 0}
!10 = distinct !{!10, !11}
!11 = !{!"llvm.loop.mustprogress"}
!12 = distinct !{!12, !11}
!13 = !{!14, !14, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = distinct !{!15, !11}
!16 = distinct !{!16, !11}
!17 = distinct !{!17, !11}
!18 = distinct !{!18, !11}


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