; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (cunmrz)

; 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.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__2 = external hidden global i64, align 8
@c__1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@c__65 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local i32 @cunmrz_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13) #0 {
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca [2 x ptr], align 16
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca [2 x i64], align 16
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca [2 x i8], align 1
  %41 = alloca i64, align 8
  %42 = alloca [4160 x %struct.complex], align 16
  %43 = alloca i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca i64, align 8
  %48 = alloca i64, align 8
  %49 = alloca i64, align 8
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  %55 = alloca i64, align 8
  %56 = alloca i64, align 8
  %57 = alloca i64, align 8
  %58 = alloca i64, align 8
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca [1 x i8], align 1
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca i32, align 4
  store ptr %0, ptr %16, align 8, !tbaa !5
  store ptr %1, ptr %17, align 8, !tbaa !5
  store ptr %2, ptr %18, align 8, !tbaa !5
  store ptr %3, ptr %19, align 8, !tbaa !5
  store ptr %4, ptr %20, align 8, !tbaa !5
  store ptr %5, ptr %21, align 8, !tbaa !5
  store ptr %6, ptr %22, align 8, !tbaa !5
  store ptr %7, ptr %23, align 8, !tbaa !5
  store ptr %8, ptr %24, align 8, !tbaa !5
  store ptr %9, ptr %25, align 8, !tbaa !5
  store ptr %10, ptr %26, align 8, !tbaa !5
  store ptr %11, ptr %27, align 8, !tbaa !5
  store ptr %12, ptr %28, align 8, !tbaa !5
  store ptr %13, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 2, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 33280, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #3
  %65 = load ptr, ptr %23, align 8, !tbaa !5
  %66 = load i64, ptr %65, align 8, !tbaa !9
  store i64 %66, ptr %31, align 8, !tbaa !9
  %67 = load i64, ptr %31, align 8, !tbaa !9
  %68 = add nsw i64 1, %67
  store i64 %68, ptr %32, align 8, !tbaa !9
  %69 = load i64, ptr %32, align 8, !tbaa !9
  %70 = load ptr, ptr %22, align 8, !tbaa !5
  %71 = sub i64 0, %69
  %72 = getelementptr inbounds %struct.complex, ptr %70, i64 %71
  store ptr %72, ptr %22, align 8, !tbaa !5
  %73 = load ptr, ptr %24, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.complex, ptr %73, i32 -1
  store ptr %74, ptr %24, align 8, !tbaa !5
  %75 = load ptr, ptr %26, align 8, !tbaa !5
  %76 = load i64, ptr %75, align 8, !tbaa !9
  store i64 %76, ptr %33, align 8, !tbaa !9
  %77 = load i64, ptr %33, align 8, !tbaa !9
  %78 = add nsw i64 1, %77
  store i64 %78, ptr %34, align 8, !tbaa !9
  %79 = load i64, ptr %34, align 8, !tbaa !9
  %80 = load ptr, ptr %25, align 8, !tbaa !5
  %81 = sub i64 0, %79
  %82 = getelementptr inbounds %struct.complex, ptr %80, i64 %81
  store ptr %82, ptr %25, align 8, !tbaa !5
  %83 = load ptr, ptr %27, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.complex, ptr %83, i32 -1
  store ptr %84, ptr %27, align 8, !tbaa !5
  %85 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 0, ptr %85, align 8, !tbaa !9
  %86 = load ptr, ptr %16, align 8, !tbaa !5
  %87 = call i64 @lsame_(ptr noundef %86, ptr noundef @.str)
  store i64 %87, ptr %56, align 8, !tbaa !9
  %88 = load ptr, ptr %17, align 8, !tbaa !5
  %89 = call i64 @lsame_(ptr noundef %88, ptr noundef @.str.1)
  store i64 %89, ptr %59, align 8, !tbaa !9
  %90 = load ptr, ptr %28, align 8, !tbaa !5
  %91 = load i64, ptr %90, align 8, !tbaa !9
  %92 = icmp eq i64 %91, -1
  %93 = zext i1 %92 to i32
  %94 = sext i32 %93 to i64
  store i64 %94, ptr %63, align 8, !tbaa !9
  %95 = load i64, ptr %56, align 8, !tbaa !9
  %96 = icmp ne i64 %95, 0
  br i1 %96, label %97, label %109

97:                                               ; preds = %14
  %98 = load ptr, ptr %18, align 8, !tbaa !5
  %99 = load i64, ptr %98, align 8, !tbaa !9
  store i64 %99, ptr %53, align 8, !tbaa !9
  %100 = load ptr, ptr %19, align 8, !tbaa !5
  %101 = load i64, ptr %100, align 8, !tbaa !9
  %102 = icmp sge i64 1, %101
  br i1 %102, label %103, label %104

103:                                              ; preds = %97
  br label %107

104:                                              ; preds = %97
  %105 = load ptr, ptr %19, align 8, !tbaa !5
  %106 = load i64, ptr %105, align 8, !tbaa !9
  br label %107

107:                                              ; preds = %104, %103
  %108 = phi i64 [ 1, %103 ], [ %106, %104 ]
  store i64 %108, ptr %54, align 8, !tbaa !9
  br label %121

109:                                              ; preds = %14
  %110 = load ptr, ptr %19, align 8, !tbaa !5
  %111 = load i64, ptr %110, align 8, !tbaa !9
  store i64 %111, ptr %53, align 8, !tbaa !9
  %112 = load ptr, ptr %18, align 8, !tbaa !5
  %113 = load i64, ptr %112, align 8, !tbaa !9
  %114 = icmp sge i64 1, %113
  br i1 %114, label %115, label %116

115:                                              ; preds = %109
  br label %119

116:                                              ; preds = %109
  %117 = load ptr, ptr %18, align 8, !tbaa !5
  %118 = load i64, ptr %117, align 8, !tbaa !9
  br label %119

119:                                              ; preds = %116, %115
  %120 = phi i64 [ 1, %115 ], [ %118, %116 ]
  store i64 %120, ptr %54, align 8, !tbaa !9
  br label %121

121:                                              ; preds = %119, %107
  %122 = load i64, ptr %56, align 8, !tbaa !9
  %123 = icmp ne i64 %122, 0
  br i1 %123, label %130, label %124

124:                                              ; preds = %121
  %125 = load ptr, ptr %16, align 8, !tbaa !5
  %126 = call i64 @lsame_(ptr noundef %125, ptr noundef @.str.2)
  %127 = icmp ne i64 %126, 0
  br i1 %127, label %130, label %128

128:                                              ; preds = %124
  %129 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -1, ptr %129, align 8, !tbaa !9
  br label %223

130:                                              ; preds = %124, %121
  %131 = load i64, ptr %59, align 8, !tbaa !9
  %132 = icmp ne i64 %131, 0
  br i1 %132, label %139, label %133

133:                                              ; preds = %130
  %134 = load ptr, ptr %17, align 8, !tbaa !5
  %135 = call i64 @lsame_(ptr noundef %134, ptr noundef @.str.3)
  %136 = icmp ne i64 %135, 0
  br i1 %136, label %139, label %137

137:                                              ; preds = %133
  %138 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -2, ptr %138, align 8, !tbaa !9
  br label %222

139:                                              ; preds = %133, %130
  %140 = load ptr, ptr %18, align 8, !tbaa !5
  %141 = load i64, ptr %140, align 8, !tbaa !9
  %142 = icmp slt i64 %141, 0
  br i1 %142, label %143, label %145

143:                                              ; preds = %139
  %144 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -3, ptr %144, align 8, !tbaa !9
  br label %221

145:                                              ; preds = %139
  %146 = load ptr, ptr %19, align 8, !tbaa !5
  %147 = load i64, ptr %146, align 8, !tbaa !9
  %148 = icmp slt i64 %147, 0
  br i1 %148, label %149, label %151

149:                                              ; preds = %145
  %150 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -4, ptr %150, align 8, !tbaa !9
  br label %220

151:                                              ; preds = %145
  %152 = load ptr, ptr %20, align 8, !tbaa !5
  %153 = load i64, ptr %152, align 8, !tbaa !9
  %154 = icmp slt i64 %153, 0
  br i1 %154, label %160, label %155

155:                                              ; preds = %151
  %156 = load ptr, ptr %20, align 8, !tbaa !5
  %157 = load i64, ptr %156, align 8, !tbaa !9
  %158 = load i64, ptr %53, align 8, !tbaa !9
  %159 = icmp sgt i64 %157, %158
  br i1 %159, label %160, label %162

160:                                              ; preds = %155, %151
  %161 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -5, ptr %161, align 8, !tbaa !9
  br label %219

162:                                              ; preds = %155
  %163 = load ptr, ptr %21, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = icmp slt i64 %164, 0
  br i1 %165, label %184, label %166

166:                                              ; preds = %162
  %167 = load i64, ptr %56, align 8, !tbaa !9
  %168 = icmp ne i64 %167, 0
  br i1 %168, label %169, label %175

169:                                              ; preds = %166
  %170 = load ptr, ptr %21, align 8, !tbaa !5
  %171 = load i64, ptr %170, align 8, !tbaa !9
  %172 = load ptr, ptr %18, align 8, !tbaa !5
  %173 = load i64, ptr %172, align 8, !tbaa !9
  %174 = icmp sgt i64 %171, %173
  br i1 %174, label %184, label %175

175:                                              ; preds = %169, %166
  %176 = load i64, ptr %56, align 8, !tbaa !9
  %177 = icmp ne i64 %176, 0
  br i1 %177, label %186, label %178

178:                                              ; preds = %175
  %179 = load ptr, ptr %21, align 8, !tbaa !5
  %180 = load i64, ptr %179, align 8, !tbaa !9
  %181 = load ptr, ptr %19, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  %183 = icmp sgt i64 %180, %182
  br i1 %183, label %184, label %186

184:                                              ; preds = %178, %169, %162
  %185 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -6, ptr %185, align 8, !tbaa !9
  br label %218

186:                                              ; preds = %178, %175
  %187 = load ptr, ptr %23, align 8, !tbaa !5
  %188 = load i64, ptr %187, align 8, !tbaa !9
  %189 = load ptr, ptr %20, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = icmp sge i64 1, %190
  br i1 %191, label %192, label %193

192:                                              ; preds = %186
  br label %196

193:                                              ; preds = %186
  %194 = load ptr, ptr %20, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  br label %196

196:                                              ; preds = %193, %192
  %197 = phi i64 [ 1, %192 ], [ %195, %193 ]
  %198 = icmp slt i64 %188, %197
  br i1 %198, label %199, label %201

199:                                              ; preds = %196
  %200 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -8, ptr %200, align 8, !tbaa !9
  br label %217

201:                                              ; preds = %196
  %202 = load ptr, ptr %26, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  %204 = load ptr, ptr %18, align 8, !tbaa !5
  %205 = load i64, ptr %204, align 8, !tbaa !9
  %206 = icmp sge i64 1, %205
  br i1 %206, label %207, label %208

207:                                              ; preds = %201
  br label %211

208:                                              ; preds = %201
  %209 = load ptr, ptr %18, align 8, !tbaa !5
  %210 = load i64, ptr %209, align 8, !tbaa !9
  br label %211

211:                                              ; preds = %208, %207
  %212 = phi i64 [ 1, %207 ], [ %210, %208 ]
  %213 = icmp slt i64 %203, %212
  br i1 %213, label %214, label %216

214:                                              ; preds = %211
  %215 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -11, ptr %215, align 8, !tbaa !9
  br label %216

216:                                              ; preds = %214, %211
  br label %217

217:                                              ; preds = %216, %199
  br label %218

218:                                              ; preds = %217, %184
  br label %219

219:                                              ; preds = %218, %160
  br label %220

220:                                              ; preds = %219, %149
  br label %221

221:                                              ; preds = %220, %143
  br label %222

222:                                              ; preds = %221, %137
  br label %223

223:                                              ; preds = %222, %128
  %224 = load ptr, ptr %29, align 8, !tbaa !5
  %225 = load i64, ptr %224, align 8, !tbaa !9
  %226 = icmp eq i64 %225, 0
  br i1 %226, label %227, label %289

227:                                              ; preds = %223
  %228 = load ptr, ptr %18, align 8, !tbaa !5
  %229 = load i64, ptr %228, align 8, !tbaa !9
  %230 = icmp eq i64 %229, 0
  br i1 %230, label %235, label %231

231:                                              ; preds = %227
  %232 = load ptr, ptr %19, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  %234 = icmp eq i64 %233, 0
  br i1 %234, label %235, label %236

235:                                              ; preds = %231, %227
  store i64 1, ptr %62, align 8, !tbaa !9
  br label %264

236:                                              ; preds = %231
  %237 = getelementptr inbounds [2 x i64], ptr %37, i64 0, i64 0
  store i64 1, ptr %237, align 16, !tbaa !9
  %238 = load ptr, ptr %16, align 8, !tbaa !5
  %239 = getelementptr inbounds [2 x ptr], ptr %30, i64 0, i64 0
  store ptr %238, ptr %239, align 16, !tbaa !5
  %240 = getelementptr inbounds [2 x i64], ptr %37, i64 0, i64 1
  store i64 1, ptr %240, align 8, !tbaa !9
  %241 = load ptr, ptr %17, align 8, !tbaa !5
  %242 = getelementptr inbounds [2 x ptr], ptr %30, i64 0, i64 1
  store ptr %241, ptr %242, align 8, !tbaa !5
  %243 = getelementptr inbounds [2 x i8], ptr %40, i64 0, i64 0
  %244 = getelementptr inbounds [2 x ptr], ptr %30, i64 0, i64 0
  %245 = getelementptr inbounds [2 x i64], ptr %37, i64 0, i64 0
  %246 = call i32 @s_cat(ptr noundef %243, ptr noundef %244, ptr noundef %245, ptr noundef @c__2, i64 noundef 2)
  store i64 64, ptr %35, align 8, !tbaa !9
  %247 = getelementptr inbounds [2 x i8], ptr %40, i64 0, i64 0
  %248 = load ptr, ptr %18, align 8, !tbaa !5
  %249 = load ptr, ptr %19, align 8, !tbaa !5
  %250 = load ptr, ptr %20, align 8, !tbaa !5
  %251 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef %247, ptr noundef %248, ptr noundef %249, ptr noundef %250, ptr noundef @c_n1)
  store i64 %251, ptr %36, align 8, !tbaa !9
  %252 = load i64, ptr %35, align 8, !tbaa !9
  %253 = load i64, ptr %36, align 8, !tbaa !9
  %254 = icmp sle i64 %252, %253
  br i1 %254, label %255, label %257

255:                                              ; preds = %236
  %256 = load i64, ptr %35, align 8, !tbaa !9
  br label %259

257:                                              ; preds = %236
  %258 = load i64, ptr %36, align 8, !tbaa !9
  br label %259

259:                                              ; preds = %257, %255
  %260 = phi i64 [ %256, %255 ], [ %258, %257 ]
  store i64 %260, ptr %50, align 8, !tbaa !9
  %261 = load i64, ptr %54, align 8, !tbaa !9
  %262 = load i64, ptr %50, align 8, !tbaa !9
  %263 = mul nsw i64 %261, %262
  store i64 %263, ptr %62, align 8, !tbaa !9
  br label %264

264:                                              ; preds = %259, %235
  %265 = load i64, ptr %62, align 8, !tbaa !9
  %266 = sitofp i64 %265 to float
  %267 = load ptr, ptr %27, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.complex, ptr %267, i64 1
  %269 = getelementptr inbounds %struct.complex, ptr %268, i32 0, i32 0
  store float %266, ptr %269, align 4, !tbaa !11
  %270 = load ptr, ptr %27, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.complex, ptr %270, i64 1
  %272 = getelementptr inbounds %struct.complex, ptr %271, i32 0, i32 1
  store float 0.000000e+00, ptr %272, align 4, !tbaa !14
  %273 = load ptr, ptr %28, align 8, !tbaa !5
  %274 = load i64, ptr %273, align 8, !tbaa !9
  %275 = load i64, ptr %54, align 8, !tbaa !9
  %276 = icmp sge i64 1, %275
  br i1 %276, label %277, label %278

277:                                              ; preds = %264
  br label %280

278:                                              ; preds = %264
  %279 = load i64, ptr %54, align 8, !tbaa !9
  br label %280

280:                                              ; preds = %278, %277
  %281 = phi i64 [ 1, %277 ], [ %279, %278 ]
  %282 = icmp slt i64 %274, %281
  br i1 %282, label %283, label %288

283:                                              ; preds = %280
  %284 = load i64, ptr %63, align 8, !tbaa !9
  %285 = icmp ne i64 %284, 0
  br i1 %285, label %288, label %286

286:                                              ; preds = %283
  %287 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -13, ptr %287, align 8, !tbaa !9
  br label %288

288:                                              ; preds = %286, %283, %280
  br label %289

289:                                              ; preds = %288, %223
  %290 = load ptr, ptr %29, align 8, !tbaa !5
  %291 = load i64, ptr %290, align 8, !tbaa !9
  %292 = icmp ne i64 %291, 0
  br i1 %292, label %293, label %298

293:                                              ; preds = %289
  %294 = load ptr, ptr %29, align 8, !tbaa !5
  %295 = load i64, ptr %294, align 8, !tbaa !9
  %296 = sub nsw i64 0, %295
  store i64 %296, ptr %35, align 8, !tbaa !9
  %297 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %35)
  store i32 0, ptr %15, align 4
  store i32 1, ptr %64, align 4
  br label %573

298:                                              ; preds = %289
  %299 = load i64, ptr %63, align 8, !tbaa !9
  %300 = icmp ne i64 %299, 0
  br i1 %300, label %301, label %302

301:                                              ; preds = %298
  store i32 0, ptr %15, align 4
  store i32 1, ptr %64, align 4
  br label %573

302:                                              ; preds = %298
  br label %303

303:                                              ; preds = %302
  %304 = load ptr, ptr %18, align 8, !tbaa !5
  %305 = load i64, ptr %304, align 8, !tbaa !9
  %306 = icmp eq i64 %305, 0
  br i1 %306, label %311, label %307

307:                                              ; preds = %303
  %308 = load ptr, ptr %19, align 8, !tbaa !5
  %309 = load i64, ptr %308, align 8, !tbaa !9
  %310 = icmp eq i64 %309, 0
  br i1 %310, label %311, label %312

311:                                              ; preds = %307, %303
  store i32 0, ptr %15, align 4
  store i32 1, ptr %64, align 4
  br label %573

312:                                              ; preds = %307
  %313 = getelementptr inbounds [2 x i64], ptr %37, i64 0, i64 0
  store i64 1, ptr %313, align 16, !tbaa !9
  %314 = load ptr, ptr %16, align 8, !tbaa !5
  %315 = getelementptr inbounds [2 x ptr], ptr %30, i64 0, i64 0
  store ptr %314, ptr %315, align 16, !tbaa !5
  %316 = getelementptr inbounds [2 x i64], ptr %37, i64 0, i64 1
  store i64 1, ptr %316, align 8, !tbaa !9
  %317 = load ptr, ptr %17, align 8, !tbaa !5
  %318 = getelementptr inbounds [2 x ptr], ptr %30, i64 0, i64 1
  store ptr %317, ptr %318, align 8, !tbaa !5
  %319 = getelementptr inbounds [2 x i8], ptr %40, i64 0, i64 0
  %320 = getelementptr inbounds [2 x ptr], ptr %30, i64 0, i64 0
  %321 = getelementptr inbounds [2 x i64], ptr %37, i64 0, i64 0
  %322 = call i32 @s_cat(ptr noundef %319, ptr noundef %320, ptr noundef %321, ptr noundef @c__2, i64 noundef 2)
  store i64 64, ptr %35, align 8, !tbaa !9
  %323 = getelementptr inbounds [2 x i8], ptr %40, i64 0, i64 0
  %324 = load ptr, ptr %18, align 8, !tbaa !5
  %325 = load ptr, ptr %19, align 8, !tbaa !5
  %326 = load ptr, ptr %20, align 8, !tbaa !5
  %327 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef %323, ptr noundef %324, ptr noundef %325, ptr noundef %326, ptr noundef @c_n1)
  store i64 %327, ptr %36, align 8, !tbaa !9
  %328 = load i64, ptr %35, align 8, !tbaa !9
  %329 = load i64, ptr %36, align 8, !tbaa !9
  %330 = icmp sle i64 %328, %329
  br i1 %330, label %331, label %333

331:                                              ; preds = %312
  %332 = load i64, ptr %35, align 8, !tbaa !9
  br label %335

333:                                              ; preds = %312
  %334 = load i64, ptr %36, align 8, !tbaa !9
  br label %335

335:                                              ; preds = %333, %331
  %336 = phi i64 [ %332, %331 ], [ %334, %333 ]
  store i64 %336, ptr %50, align 8, !tbaa !9
  store i64 2, ptr %57, align 8, !tbaa !9
  %337 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %337, ptr %60, align 8, !tbaa !9
  %338 = load i64, ptr %50, align 8, !tbaa !9
  %339 = icmp sgt i64 %338, 1
  br i1 %339, label %340, label %383

340:                                              ; preds = %335
  %341 = load i64, ptr %50, align 8, !tbaa !9
  %342 = load ptr, ptr %20, align 8, !tbaa !5
  %343 = load i64, ptr %342, align 8, !tbaa !9
  %344 = icmp slt i64 %341, %343
  br i1 %344, label %345, label %383

345:                                              ; preds = %340
  %346 = load i64, ptr %54, align 8, !tbaa !9
  %347 = load i64, ptr %50, align 8, !tbaa !9
  %348 = mul nsw i64 %346, %347
  store i64 %348, ptr %55, align 8, !tbaa !9
  %349 = load ptr, ptr %28, align 8, !tbaa !5
  %350 = load i64, ptr %349, align 8, !tbaa !9
  %351 = load i64, ptr %55, align 8, !tbaa !9
  %352 = icmp slt i64 %350, %351
  br i1 %352, label %353, label %382

353:                                              ; preds = %345
  %354 = load ptr, ptr %28, align 8, !tbaa !5
  %355 = load i64, ptr %354, align 8, !tbaa !9
  %356 = load i64, ptr %60, align 8, !tbaa !9
  %357 = sdiv i64 %355, %356
  store i64 %357, ptr %50, align 8, !tbaa !9
  %358 = getelementptr inbounds [2 x i64], ptr %37, i64 0, i64 0
  store i64 1, ptr %358, align 16, !tbaa !9
  %359 = load ptr, ptr %16, align 8, !tbaa !5
  %360 = getelementptr inbounds [2 x ptr], ptr %30, i64 0, i64 0
  store ptr %359, ptr %360, align 16, !tbaa !5
  %361 = getelementptr inbounds [2 x i64], ptr %37, i64 0, i64 1
  store i64 1, ptr %361, align 8, !tbaa !9
  %362 = load ptr, ptr %17, align 8, !tbaa !5
  %363 = getelementptr inbounds [2 x ptr], ptr %30, i64 0, i64 1
  store ptr %362, ptr %363, align 8, !tbaa !5
  %364 = getelementptr inbounds [2 x i8], ptr %40, i64 0, i64 0
  %365 = getelementptr inbounds [2 x ptr], ptr %30, i64 0, i64 0
  %366 = getelementptr inbounds [2 x i64], ptr %37, i64 0, i64 0
  %367 = call i32 @s_cat(ptr noundef %364, ptr noundef %365, ptr noundef %366, ptr noundef @c__2, i64 noundef 2)
  store i64 2, ptr %35, align 8, !tbaa !9
  %368 = getelementptr inbounds [2 x i8], ptr %40, i64 0, i64 0
  %369 = load ptr, ptr %18, align 8, !tbaa !5
  %370 = load ptr, ptr %19, align 8, !tbaa !5
  %371 = load ptr, ptr %20, align 8, !tbaa !5
  %372 = call i64 @ilaenv_(ptr noundef @c__2, ptr noundef @.str.4, ptr noundef %368, ptr noundef %369, ptr noundef %370, ptr noundef %371, ptr noundef @c_n1)
  store i64 %372, ptr %36, align 8, !tbaa !9
  %373 = load i64, ptr %35, align 8, !tbaa !9
  %374 = load i64, ptr %36, align 8, !tbaa !9
  %375 = icmp sge i64 %373, %374
  br i1 %375, label %376, label %378

376:                                              ; preds = %353
  %377 = load i64, ptr %35, align 8, !tbaa !9
  br label %380

378:                                              ; preds = %353
  %379 = load i64, ptr %36, align 8, !tbaa !9
  br label %380

380:                                              ; preds = %378, %376
  %381 = phi i64 [ %377, %376 ], [ %379, %378 ]
  store i64 %381, ptr %57, align 8, !tbaa !9
  br label %382

382:                                              ; preds = %380, %345
  br label %385

383:                                              ; preds = %340, %335
  %384 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %384, ptr %55, align 8, !tbaa !9
  br label %385

385:                                              ; preds = %383, %382
  %386 = load i64, ptr %50, align 8, !tbaa !9
  %387 = load i64, ptr %57, align 8, !tbaa !9
  %388 = icmp slt i64 %386, %387
  br i1 %388, label %394, label %389

389:                                              ; preds = %385
  %390 = load i64, ptr %50, align 8, !tbaa !9
  %391 = load ptr, ptr %20, align 8, !tbaa !5
  %392 = load i64, ptr %391, align 8, !tbaa !9
  %393 = icmp sge i64 %390, %392
  br i1 %393, label %394, label %414

394:                                              ; preds = %389, %385
  %395 = load ptr, ptr %16, align 8, !tbaa !5
  %396 = load ptr, ptr %17, align 8, !tbaa !5
  %397 = load ptr, ptr %18, align 8, !tbaa !5
  %398 = load ptr, ptr %19, align 8, !tbaa !5
  %399 = load ptr, ptr %20, align 8, !tbaa !5
  %400 = load ptr, ptr %21, align 8, !tbaa !5
  %401 = load ptr, ptr %22, align 8, !tbaa !5
  %402 = load i64, ptr %32, align 8, !tbaa !9
  %403 = getelementptr inbounds %struct.complex, ptr %401, i64 %402
  %404 = load ptr, ptr %23, align 8, !tbaa !5
  %405 = load ptr, ptr %24, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.complex, ptr %405, i64 1
  %407 = load ptr, ptr %25, align 8, !tbaa !5
  %408 = load i64, ptr %34, align 8, !tbaa !9
  %409 = getelementptr inbounds %struct.complex, ptr %407, i64 %408
  %410 = load ptr, ptr %26, align 8, !tbaa !5
  %411 = load ptr, ptr %27, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.complex, ptr %411, i64 1
  %413 = call i32 @cunmr3_(ptr noundef %395, ptr noundef %396, ptr noundef %397, ptr noundef %398, ptr noundef %399, ptr noundef %400, ptr noundef %403, ptr noundef %404, ptr noundef %406, ptr noundef %409, ptr noundef %410, ptr noundef %412, ptr noundef %58)
  br label %564

414:                                              ; preds = %389
  %415 = load i64, ptr %56, align 8, !tbaa !9
  %416 = icmp ne i64 %415, 0
  br i1 %416, label %417, label %420

417:                                              ; preds = %414
  %418 = load i64, ptr %59, align 8, !tbaa !9
  %419 = icmp ne i64 %418, 0
  br i1 %419, label %420, label %426

420:                                              ; preds = %417, %414
  %421 = load i64, ptr %56, align 8, !tbaa !9
  %422 = icmp ne i64 %421, 0
  br i1 %422, label %430, label %423

423:                                              ; preds = %420
  %424 = load i64, ptr %59, align 8, !tbaa !9
  %425 = icmp ne i64 %424, 0
  br i1 %425, label %426, label %430

426:                                              ; preds = %423, %417
  store i64 1, ptr %43, align 8, !tbaa !9
  %427 = load ptr, ptr %20, align 8, !tbaa !5
  %428 = load i64, ptr %427, align 8, !tbaa !9
  store i64 %428, ptr %44, align 8, !tbaa !9
  %429 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %429, ptr %45, align 8, !tbaa !9
  br label %441

430:                                              ; preds = %423, %420
  %431 = load ptr, ptr %20, align 8, !tbaa !5
  %432 = load i64, ptr %431, align 8, !tbaa !9
  %433 = sub nsw i64 %432, 1
  %434 = load i64, ptr %50, align 8, !tbaa !9
  %435 = sdiv i64 %433, %434
  %436 = load i64, ptr %50, align 8, !tbaa !9
  %437 = mul nsw i64 %435, %436
  %438 = add nsw i64 %437, 1
  store i64 %438, ptr %43, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  %439 = load i64, ptr %50, align 8, !tbaa !9
  %440 = sub nsw i64 0, %439
  store i64 %440, ptr %45, align 8, !tbaa !9
  br label %441

441:                                              ; preds = %430, %426
  %442 = load i64, ptr %56, align 8, !tbaa !9
  %443 = icmp ne i64 %442, 0
  br i1 %443, label %444, label %453

444:                                              ; preds = %441
  %445 = load ptr, ptr %19, align 8, !tbaa !5
  %446 = load i64, ptr %445, align 8, !tbaa !9
  store i64 %446, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %49, align 8, !tbaa !9
  %447 = load ptr, ptr %18, align 8, !tbaa !5
  %448 = load i64, ptr %447, align 8, !tbaa !9
  %449 = load ptr, ptr %21, align 8, !tbaa !5
  %450 = load i64, ptr %449, align 8, !tbaa !9
  %451 = sub nsw i64 %448, %450
  %452 = add nsw i64 %451, 1
  store i64 %452, ptr %48, align 8, !tbaa !9
  br label %462

453:                                              ; preds = %441
  %454 = load ptr, ptr %18, align 8, !tbaa !5
  %455 = load i64, ptr %454, align 8, !tbaa !9
  store i64 %455, ptr %51, align 8, !tbaa !9
  store i64 1, ptr %47, align 8, !tbaa !9
  %456 = load ptr, ptr %19, align 8, !tbaa !5
  %457 = load i64, ptr %456, align 8, !tbaa !9
  %458 = load ptr, ptr %21, align 8, !tbaa !5
  %459 = load i64, ptr %458, align 8, !tbaa !9
  %460 = sub nsw i64 %457, %459
  %461 = add nsw i64 %460, 1
  store i64 %461, ptr %48, align 8, !tbaa !9
  br label %462

462:                                              ; preds = %453, %444
  %463 = load i64, ptr %59, align 8, !tbaa !9
  %464 = icmp ne i64 %463, 0
  br i1 %464, label %465, label %467

465:                                              ; preds = %462
  %466 = getelementptr inbounds [1 x i8], ptr %61, i64 0, i64 0
  store i8 67, ptr %466, align 1, !tbaa !15
  br label %469

467:                                              ; preds = %462
  %468 = getelementptr inbounds [1 x i8], ptr %61, i64 0, i64 0
  store i8 78, ptr %468, align 1, !tbaa !15
  br label %469

469:                                              ; preds = %467, %465
  %470 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %470, ptr %35, align 8, !tbaa !9
  %471 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %471, ptr %36, align 8, !tbaa !9
  %472 = load i64, ptr %43, align 8, !tbaa !9
  store i64 %472, ptr %41, align 8, !tbaa !9
  br label %473

473:                                              ; preds = %559, %469
  %474 = load i64, ptr %36, align 8, !tbaa !9
  %475 = icmp slt i64 %474, 0
  br i1 %475, label %476, label %481

476:                                              ; preds = %473
  %477 = load i64, ptr %41, align 8, !tbaa !9
  %478 = load i64, ptr %35, align 8, !tbaa !9
  %479 = icmp sge i64 %477, %478
  %480 = zext i1 %479 to i32
  br label %486

481:                                              ; preds = %473
  %482 = load i64, ptr %41, align 8, !tbaa !9
  %483 = load i64, ptr %35, align 8, !tbaa !9
  %484 = icmp sle i64 %482, %483
  %485 = zext i1 %484 to i32
  br label %486

486:                                              ; preds = %481, %476
  %487 = phi i32 [ %480, %476 ], [ %485, %481 ]
  %488 = icmp ne i32 %487, 0
  br i1 %488, label %489, label %563

489:                                              ; preds = %486
  %490 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %490, ptr %38, align 8, !tbaa !9
  %491 = load ptr, ptr %20, align 8, !tbaa !5
  %492 = load i64, ptr %491, align 8, !tbaa !9
  %493 = load i64, ptr %41, align 8, !tbaa !9
  %494 = sub nsw i64 %492, %493
  %495 = add nsw i64 %494, 1
  store i64 %495, ptr %39, align 8, !tbaa !9
  %496 = load i64, ptr %38, align 8, !tbaa !9
  %497 = load i64, ptr %39, align 8, !tbaa !9
  %498 = icmp sle i64 %496, %497
  br i1 %498, label %499, label %501

499:                                              ; preds = %489
  %500 = load i64, ptr %38, align 8, !tbaa !9
  br label %503

501:                                              ; preds = %489
  %502 = load i64, ptr %39, align 8, !tbaa !9
  br label %503

503:                                              ; preds = %501, %499
  %504 = phi i64 [ %500, %499 ], [ %502, %501 ]
  store i64 %504, ptr %46, align 8, !tbaa !9
  %505 = load ptr, ptr %21, align 8, !tbaa !5
  %506 = load ptr, ptr %22, align 8, !tbaa !5
  %507 = load i64, ptr %41, align 8, !tbaa !9
  %508 = load i64, ptr %48, align 8, !tbaa !9
  %509 = load i64, ptr %31, align 8, !tbaa !9
  %510 = mul nsw i64 %508, %509
  %511 = add nsw i64 %507, %510
  %512 = getelementptr inbounds %struct.complex, ptr %506, i64 %511
  %513 = load ptr, ptr %23, align 8, !tbaa !5
  %514 = load ptr, ptr %24, align 8, !tbaa !5
  %515 = load i64, ptr %41, align 8, !tbaa !9
  %516 = getelementptr inbounds %struct.complex, ptr %514, i64 %515
  %517 = getelementptr inbounds [4160 x %struct.complex], ptr %42, i64 0, i64 0
  %518 = call i32 @clarzt_(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %505, ptr noundef %46, ptr noundef %512, ptr noundef %513, ptr noundef %516, ptr noundef %517, ptr noundef @c__65)
  %519 = load i64, ptr %56, align 8, !tbaa !9
  %520 = icmp ne i64 %519, 0
  br i1 %520, label %521, label %528

521:                                              ; preds = %503
  %522 = load ptr, ptr %18, align 8, !tbaa !5
  %523 = load i64, ptr %522, align 8, !tbaa !9
  %524 = load i64, ptr %41, align 8, !tbaa !9
  %525 = sub nsw i64 %523, %524
  %526 = add nsw i64 %525, 1
  store i64 %526, ptr %51, align 8, !tbaa !9
  %527 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %527, ptr %47, align 8, !tbaa !9
  br label %535

528:                                              ; preds = %503
  %529 = load ptr, ptr %19, align 8, !tbaa !5
  %530 = load i64, ptr %529, align 8, !tbaa !9
  %531 = load i64, ptr %41, align 8, !tbaa !9
  %532 = sub nsw i64 %530, %531
  %533 = add nsw i64 %532, 1
  store i64 %533, ptr %52, align 8, !tbaa !9
  %534 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %534, ptr %49, align 8, !tbaa !9
  br label %535

535:                                              ; preds = %528, %521
  %536 = load ptr, ptr %16, align 8, !tbaa !5
  %537 = getelementptr inbounds [1 x i8], ptr %61, i64 0, i64 0
  %538 = load ptr, ptr %21, align 8, !tbaa !5
  %539 = load ptr, ptr %22, align 8, !tbaa !5
  %540 = load i64, ptr %41, align 8, !tbaa !9
  %541 = load i64, ptr %48, align 8, !tbaa !9
  %542 = load i64, ptr %31, align 8, !tbaa !9
  %543 = mul nsw i64 %541, %542
  %544 = add nsw i64 %540, %543
  %545 = getelementptr inbounds %struct.complex, ptr %539, i64 %544
  %546 = load ptr, ptr %23, align 8, !tbaa !5
  %547 = getelementptr inbounds [4160 x %struct.complex], ptr %42, i64 0, i64 0
  %548 = load ptr, ptr %25, align 8, !tbaa !5
  %549 = load i64, ptr %47, align 8, !tbaa !9
  %550 = load i64, ptr %49, align 8, !tbaa !9
  %551 = load i64, ptr %33, align 8, !tbaa !9
  %552 = mul nsw i64 %550, %551
  %553 = add nsw i64 %549, %552
  %554 = getelementptr inbounds %struct.complex, ptr %548, i64 %553
  %555 = load ptr, ptr %26, align 8, !tbaa !5
  %556 = load ptr, ptr %27, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.complex, ptr %556, i64 1
  %558 = call i32 @clarzb_(ptr noundef %536, ptr noundef %537, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %51, ptr noundef %52, ptr noundef %46, ptr noundef %538, ptr noundef %545, ptr noundef %546, ptr noundef %547, ptr noundef @c__65, ptr noundef %554, ptr noundef %555, ptr noundef %557, ptr noundef %60)
  br label %559

559:                                              ; preds = %535
  %560 = load i64, ptr %36, align 8, !tbaa !9
  %561 = load i64, ptr %41, align 8, !tbaa !9
  %562 = add nsw i64 %561, %560
  store i64 %562, ptr %41, align 8, !tbaa !9
  br label %473, !llvm.loop !16

563:                                              ; preds = %486
  br label %564

564:                                              ; preds = %563, %394
  %565 = load i64, ptr %62, align 8, !tbaa !9
  %566 = sitofp i64 %565 to float
  %567 = load ptr, ptr %27, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.complex, ptr %567, i64 1
  %569 = getelementptr inbounds %struct.complex, ptr %568, i32 0, i32 0
  store float %566, ptr %569, align 4, !tbaa !11
  %570 = load ptr, ptr %27, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.complex, ptr %570, i64 1
  %572 = getelementptr inbounds %struct.complex, ptr %571, i32 0, i32 1
  store float 0.000000e+00, ptr %572, align 4, !tbaa !14
  store i32 0, ptr %15, align 4
  store i32 1, ptr %64, align 4
  br label %573

573:                                              ; preds = %564, %311, %301, %293
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 33280, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #3
  %574 = load i32, ptr %15, align 4
  ret i32 %574
}

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

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

declare i32 @s_cat(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #2

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 4}
!13 = !{!"float", !7, i64 0}
!14 = !{!12, !13, i64 4}
!15 = !{!7, !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}


; 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.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__2 = external hidden global i64, align 8
@c__1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@c__65 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @cunmrz_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr nocapture noundef readonly %12, ptr nocapture noundef %13) local_unnamed_addr #0 {
  %15 = alloca [2 x ptr], align 16
  %16 = alloca i64, align 8
  %17 = alloca [2 x i64], align 16
  %18 = alloca [2 x i8], align 1
  %19 = alloca [4160 x %struct.complex], align 16
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca [1 x i8], align 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 33280, ptr nonnull %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #4
  %26 = load i64, ptr %7, align 8, !tbaa !5
  %27 = xor i64 %26, -1
  %28 = getelementptr inbounds %struct.complex, ptr %6, i64 %27
  %29 = getelementptr inbounds i8, ptr %8, i64 -8
  %30 = load i64, ptr %10, align 8, !tbaa !5
  %31 = xor i64 %30, -1
  %32 = getelementptr inbounds %struct.complex, ptr %9, i64 %31
  store i64 0, ptr %13, align 8, !tbaa !5
  %33 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %34 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #4
  %35 = load i64, ptr %12, align 8, !tbaa !5
  %36 = icmp eq i64 %35, -1
  %.not = icmp ne i64 %33, 0
  br i1 %.not, label %37, label %40

37:                                               ; preds = %14
  %38 = load i64, ptr %2, align 8, !tbaa !5
  %39 = load i64, ptr %3, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.smax.i64(i64 %39, i64 1)
  br label %44

40:                                               ; preds = %14
  %41 = load i64, ptr %3, align 8, !tbaa !5
  %42 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select222 = tail call i64 @llvm.smax.i64(i64 %42, i64 1)
  %43 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #4
  %.not212 = icmp eq i64 %43, 0
  br i1 %.not212, label %.thread242.sink.split, label %44

44:                                               ; preds = %37, %40
  %.0189233 = phi i64 [ %spec.select222, %40 ], [ %spec.select, %37 ]
  %.0190230 = phi i64 [ %41, %40 ], [ %38, %37 ]
  %.not213 = icmp eq i64 %34, 0
  br i1 %.not213, label %45, label %47

45:                                               ; preds = %44
  %46 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #4
  %.not214 = icmp eq i64 %46, 0
  br i1 %.not214, label %.thread242.sink.split, label %47

47:                                               ; preds = %45, %44
  %48 = load i64, ptr %2, align 8, !tbaa !5
  %49 = icmp slt i64 %48, 0
  br i1 %49, label %.thread242.sink.split, label %50

50:                                               ; preds = %47
  %51 = load i64, ptr %3, align 8, !tbaa !5
  %52 = icmp slt i64 %51, 0
  br i1 %52, label %.thread242.sink.split, label %53

53:                                               ; preds = %50
  %54 = load i64, ptr %4, align 8, !tbaa !5
  %55 = icmp slt i64 %54, 0
  %56 = icmp sgt i64 %54, %.0190230
  %or.cond223 = select i1 %55, i1 true, i1 %56
  br i1 %or.cond223, label %.thread242.sink.split, label %57

57:                                               ; preds = %53
  %58 = load i64, ptr %5, align 8, !tbaa !5
  %59 = icmp slt i64 %58, 0
  %or.cond259.v = select i1 %.not, i64 %48, i64 %51
  %or.cond259 = icmp ugt i64 %58, %or.cond259.v
  %or.cond260 = or i1 %59, %or.cond259
  br i1 %or.cond260, label %.thread242.sink.split, label %60

60:                                               ; preds = %57
  %61 = load i64, ptr %7, align 8, !tbaa !5
  %spec.select225 = tail call i64 @llvm.umax.i64(i64 %54, i64 1)
  %62 = icmp slt i64 %61, %spec.select225
  br i1 %62, label %.thread242.sink.split, label %63

63:                                               ; preds = %60
  %64 = load i64, ptr %10, align 8, !tbaa !5
  %spec.select226 = tail call i64 @llvm.umax.i64(i64 %48, i64 1)
  %65 = icmp slt i64 %64, %spec.select226
  br i1 %65, label %.thread242.sink.split, label %66

66:                                               ; preds = %63
  %.pr = load i64, ptr %13, align 8, !tbaa !5
  %67 = icmp eq i64 %.pr, 0
  br i1 %67, label %68, label %.thread242

68:                                               ; preds = %66
  %69 = icmp eq i64 %48, 0
  %70 = icmp eq i64 %51, 0
  %or.cond271 = or i1 %69, %70
  br i1 %or.cond271, label %79, label %71

71:                                               ; preds = %68
  store i64 1, ptr %17, align 16, !tbaa !5
  store ptr %0, ptr %15, align 16, !tbaa !9
  %72 = getelementptr inbounds i8, ptr %17, i64 8
  store i64 1, ptr %72, align 8, !tbaa !5
  %73 = getelementptr inbounds i8, ptr %15, i64 8
  store ptr %1, ptr %73, align 8, !tbaa !9
  %74 = call i32 @s_cat(ptr noundef nonnull %18, ptr noundef nonnull %15, ptr noundef nonnull %17, ptr noundef nonnull @c__2, i64 noundef 2) #4
  %75 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.4, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_n1) #4
  %76 = call i64 @llvm.smin.i64(i64 %75, i64 64)
  %77 = mul nsw i64 %76, %.0189233
  %78 = sitofp i64 %77 to float
  br label %79

79:                                               ; preds = %68, %71
  %.0187 = phi float [ %78, %71 ], [ 1.000000e+00, %68 ]
  store float %.0187, ptr %11, align 4, !tbaa !11
  %80 = getelementptr inbounds i8, ptr %11, i64 4
  store float 0.000000e+00, ptr %80, align 4, !tbaa !14
  %81 = load i64, ptr %12, align 8, !tbaa !5
  %82 = icmp sge i64 %81, %.0189233
  %or.cond = select i1 %82, i1 true, i1 %36
  br i1 %or.cond, label %.thread235, label %.thread242.sink.split

.thread235:                                       ; preds = %79
  %.pr239.pr = load i64, ptr %13, align 8, !tbaa !5
  %.not216 = icmp eq i64 %.pr239.pr, 0
  br i1 %.not216, label %86, label %.thread242

.thread242.sink.split:                            ; preds = %79, %63, %60, %57, %53, %50, %47, %45, %40
  %.sink = phi i64 [ -1, %40 ], [ -2, %45 ], [ -3, %47 ], [ -4, %50 ], [ -5, %53 ], [ -6, %57 ], [ -8, %60 ], [ -11, %63 ], [ -13, %79 ]
  store i64 %.sink, ptr %13, align 8, !tbaa !5
  br label %.thread242

.thread242:                                       ; preds = %.thread242.sink.split, %66, %.thread235
  %83 = phi i64 [ %.pr239.pr, %.thread235 ], [ %.pr, %66 ], [ %.sink, %.thread242.sink.split ]
  %84 = sub nsw i64 0, %83
  store i64 %84, ptr %16, align 8, !tbaa !5
  %85 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %16) #4
  br label %165

86:                                               ; preds = %.thread235
  br i1 %36, label %165, label %87

87:                                               ; preds = %86
  %88 = load i64, ptr %2, align 8, !tbaa !5
  %89 = icmp eq i64 %88, 0
  br i1 %89, label %165, label %90

90:                                               ; preds = %87
  %91 = load i64, ptr %3, align 8, !tbaa !5
  %92 = icmp eq i64 %91, 0
  br i1 %92, label %165, label %93

93:                                               ; preds = %90
  store i64 1, ptr %17, align 16, !tbaa !5
  store ptr %0, ptr %15, align 16, !tbaa !9
  %94 = getelementptr inbounds i8, ptr %17, i64 8
  store i64 1, ptr %94, align 8, !tbaa !5
  %95 = getelementptr inbounds i8, ptr %15, i64 8
  store ptr %1, ptr %95, align 8, !tbaa !9
  %96 = call i32 @s_cat(ptr noundef nonnull %18, ptr noundef nonnull %15, ptr noundef nonnull %17, ptr noundef nonnull @c__2, i64 noundef 2) #4
  %97 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.4, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_n1) #4
  %98 = call i64 @llvm.smin.i64(i64 %97, i64 64)
  store i64 %.0189233, ptr %24, align 8, !tbaa !5
  %99 = icmp sgt i64 %97, 1
  br i1 %99, label %100, label %.thread251

100:                                              ; preds = %93
  %101 = load i64, ptr %4, align 8, !tbaa !5
  %102 = icmp slt i64 %98, %101
  br i1 %102, label %103, label %.thread247

103:                                              ; preds = %100
  %104 = mul nuw nsw i64 %98, %.0189233
  %105 = load i64, ptr %12, align 8, !tbaa !5
  %106 = icmp slt i64 %105, %104
  br i1 %106, label %107, label %.thread247

107:                                              ; preds = %103
  %108 = sdiv i64 %105, %.0189233
  store i64 1, ptr %17, align 16, !tbaa !5
  store ptr %0, ptr %15, align 16, !tbaa !9
  store i64 1, ptr %94, align 8, !tbaa !5
  store ptr %1, ptr %95, align 8, !tbaa !9
  %109 = call i32 @s_cat(ptr noundef nonnull %18, ptr noundef nonnull %15, ptr noundef nonnull %17, ptr noundef nonnull @c__2, i64 noundef 2) #4
  %110 = call i64 @ilaenv_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str.4, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_n1) #4
  %111 = call i64 @llvm.smax.i64(i64 %110, i64 2)
  %112 = icmp slt i64 %108, %111
  br i1 %112, label %.thread251, label %..thread247_crit_edge

..thread247_crit_edge:                            ; preds = %107
  %.pre = load i64, ptr %4, align 8, !tbaa !5
  br label %.thread247

.thread247:                                       ; preds = %..thread247_crit_edge, %100, %103
  %113 = phi i64 [ %.pre, %..thread247_crit_edge ], [ %101, %103 ], [ %101, %100 ]
  %.0191250 = phi i64 [ %108, %..thread247_crit_edge ], [ %98, %103 ], [ %98, %100 ]
  %.fr220 = freeze i64 %113
  %.not219 = icmp slt i64 %.0191250, %.fr220
  br i1 %.not219, label %115, label %.thread251

.thread251:                                       ; preds = %93, %.thread247, %107
  %114 = call i32 @cunmr3_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %23) #4
  br label %.loopexit

115:                                              ; preds = %.thread247
  %116 = icmp ne i64 %34, 0
  %or.cond227 = xor i1 %.not, %116
  br i1 %or.cond227, label %122, label %117

117:                                              ; preds = %115
  %118 = add nsw i64 %.fr220, -1
  %119 = srem i64 %118, %.0191250
  %120 = sub i64 %.fr220, %119
  %121 = sub nsw i64 0, %.0191250
  br label %122

122:                                              ; preds = %115, %117
  %.0200 = phi i64 [ %120, %117 ], [ 1, %115 ]
  %123 = phi i64 [ 1, %117 ], [ %.fr220, %115 ]
  %.0198 = phi i64 [ %121, %117 ], [ %.0191250, %115 ]
  br i1 %.not, label %124, label %126

124:                                              ; preds = %122
  %125 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %125, ptr %22, align 8, !tbaa !5
  br label %128

126:                                              ; preds = %122
  %127 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %127, ptr %21, align 8, !tbaa !5
  br label %128

128:                                              ; preds = %126, %124
  %.sink274 = phi ptr [ %3, %126 ], [ %2, %124 ]
  %129 = load i64, ptr %.sink274, align 8, !tbaa !5
  %130 = load i64, ptr %5, align 8, !tbaa !5
  %. = select i1 %116, i8 67, i8 78
  store i8 %., ptr %25, align 1, !tbaa !15
  %131 = icmp slt i64 %.0198, 0
  %.0201.neg261 = sub i64 0, %.0200
  %132 = icmp sge i64 %.0200, %123
  %133 = icmp sle i64 %.0200, %123
  %.in262 = select i1 %131, i1 %132, i1 %133
  br i1 %.in262, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %128
  %134 = sub nsw i64 %129, %130
  %.0194 = add nsw i64 %134, 1
  %135 = mul nsw i64 %.0194, %26
  %invariant.gep = getelementptr %struct.complex, ptr %28, i64 %135
  br i1 %.not, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph
  %invariant.gep267 = getelementptr i8, ptr %9, i64 -8
  br label %136

136:                                              ; preds = %136, %.lr.ph.split.us
  %.0201.neg266.us = phi i64 [ %.0201.neg261, %.lr.ph.split.us ], [ %.0201.neg.us, %136 ]
  %.0201263.us = phi i64 [ %.0200, %.lr.ph.split.us ], [ %146, %136 ]
  %137 = load i64, ptr %4, align 8, !tbaa !5
  %138 = add i64 %.0201.neg266.us, 1
  %139 = add i64 %138, %137
  %140 = call i64 @llvm.smin.i64(i64 %.0191250, i64 %139)
  store i64 %140, ptr %20, align 8, !tbaa !5
  %gep.us = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0201263.us
  %141 = getelementptr inbounds %struct.complex, ptr %29, i64 %.0201263.us
  %142 = call i32 @clarzt_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %5, ptr noundef nonnull %20, ptr noundef %gep.us, ptr noundef nonnull %7, ptr noundef nonnull %141, ptr noundef nonnull %19, ptr noundef nonnull @c__65) #4
  %143 = load i64, ptr %2, align 8, !tbaa !5
  %144 = add i64 %138, %143
  store i64 %144, ptr %21, align 8, !tbaa !5
  %gep268 = getelementptr %struct.complex, ptr %invariant.gep267, i64 %.0201263.us
  %145 = call i32 @clarzb_(ptr noundef %0, ptr noundef nonnull %25, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef nonnull %5, ptr noundef %gep.us, ptr noundef nonnull %7, ptr noundef nonnull %19, ptr noundef nonnull @c__65, ptr noundef %gep268, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %24) #4
  %146 = add nsw i64 %.0201263.us, %.0198
  %.0201.neg.us = sub i64 0, %146
  %147 = icmp sge i64 %146, %123
  %148 = icmp sle i64 %146, %123
  %.in.us = select i1 %131, i1 %147, i1 %148
  br i1 %.in.us, label %136, label %.loopexit, !llvm.loop !16

.lr.ph.split:                                     ; preds = %.lr.ph
  %149 = getelementptr i8, ptr %32, i64 8
  br label %150

150:                                              ; preds = %.lr.ph.split, %150
  %.0201.neg266 = phi i64 [ %.0201.neg261, %.lr.ph.split ], [ %.0201.neg, %150 ]
  %.0201263 = phi i64 [ %.0200, %.lr.ph.split ], [ %162, %150 ]
  %151 = load i64, ptr %4, align 8, !tbaa !5
  %152 = add i64 %.0201.neg266, 1
  %153 = add i64 %152, %151
  %154 = call i64 @llvm.smin.i64(i64 %.0191250, i64 %153)
  store i64 %154, ptr %20, align 8, !tbaa !5
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0201263
  %155 = getelementptr inbounds %struct.complex, ptr %29, i64 %.0201263
  %156 = call i32 @clarzt_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %5, ptr noundef nonnull %20, ptr noundef %gep, ptr noundef nonnull %7, ptr noundef nonnull %155, ptr noundef nonnull %19, ptr noundef nonnull @c__65) #4
  %157 = load i64, ptr %3, align 8, !tbaa !5
  %158 = add i64 %152, %157
  store i64 %158, ptr %22, align 8, !tbaa !5
  %159 = mul nsw i64 %.0201263, %30
  %160 = getelementptr %struct.complex, ptr %149, i64 %159
  %161 = call i32 @clarzb_(ptr noundef %0, ptr noundef nonnull %25, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef nonnull %5, ptr noundef %gep, ptr noundef nonnull %7, ptr noundef nonnull %19, ptr noundef nonnull @c__65, ptr noundef %160, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %24) #4
  %162 = add nsw i64 %.0201263, %.0198
  %.0201.neg = sub i64 0, %162
  %163 = icmp sge i64 %162, %123
  %164 = icmp sle i64 %162, %123
  %.in = select i1 %131, i1 %163, i1 %164
  br i1 %.in, label %150, label %.loopexit, !llvm.loop !16

.loopexit:                                        ; preds = %150, %136, %128, %.thread251
  store float %.0187, ptr %11, align 4, !tbaa !11
  store float 0.000000e+00, ptr %80, align 4, !tbaa !14
  br label %165

165:                                              ; preds = %87, %90, %86, %.loopexit, %.thread242
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 33280, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #4
  ret i32 0
}

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

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

declare i32 @s_cat(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !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 = !{!12, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 4}
!13 = !{!"float", !7, i64 0}
!14 = !{!12, !13, i64 4}
!15 = !{!7, !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}


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