; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (ctpmqrt)

; 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
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1

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

112:                                              ; preds = %17
  %113 = load ptr, ptr %20, align 8, !tbaa !5
  %114 = load i32, ptr %113, align 4, !tbaa !9
  %115 = icmp sge i32 1, %114
  br i1 %115, label %116, label %117

116:                                              ; preds = %112
  br label %120

117:                                              ; preds = %112
  %118 = load ptr, ptr %20, align 8, !tbaa !5
  %119 = load i32, ptr %118, align 4, !tbaa !9
  br label %120

120:                                              ; preds = %117, %116
  %121 = phi i32 [ 1, %116 ], [ %119, %117 ]
  store i32 %121, ptr %50, align 4, !tbaa !9
  %122 = load ptr, ptr %22, align 8, !tbaa !5
  %123 = load i32, ptr %122, align 4, !tbaa !9
  %124 = icmp sge i32 1, %123
  br i1 %124, label %125, label %126

125:                                              ; preds = %120
  br label %129

126:                                              ; preds = %120
  %127 = load ptr, ptr %22, align 8, !tbaa !5
  %128 = load i32, ptr %127, align 4, !tbaa !9
  br label %129

129:                                              ; preds = %126, %125
  %130 = phi i32 [ 1, %125 ], [ %128, %126 ]
  store i32 %130, ptr %47, align 4, !tbaa !9
  br label %154

131:                                              ; preds = %17
  %132 = load i32, ptr %52, align 4, !tbaa !9
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %134, label %153

134:                                              ; preds = %131
  %135 = load ptr, ptr %21, align 8, !tbaa !5
  %136 = load i32, ptr %135, align 4, !tbaa !9
  %137 = icmp sge i32 1, %136
  br i1 %137, label %138, label %139

138:                                              ; preds = %134
  br label %142

139:                                              ; preds = %134
  %140 = load ptr, ptr %21, align 8, !tbaa !5
  %141 = load i32, ptr %140, align 4, !tbaa !9
  br label %142

142:                                              ; preds = %139, %138
  %143 = phi i32 [ 1, %138 ], [ %141, %139 ]
  store i32 %143, ptr %50, align 4, !tbaa !9
  %144 = load ptr, ptr %20, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  %146 = icmp sge i32 1, %145
  br i1 %146, label %147, label %148

147:                                              ; preds = %142
  br label %151

148:                                              ; preds = %142
  %149 = load ptr, ptr %20, align 8, !tbaa !5
  %150 = load i32, ptr %149, align 4, !tbaa !9
  br label %151

151:                                              ; preds = %148, %147
  %152 = phi i32 [ 1, %147 ], [ %150, %148 ]
  store i32 %152, ptr %47, align 4, !tbaa !9
  br label %153

153:                                              ; preds = %151, %131
  br label %154

154:                                              ; preds = %153, %129
  %155 = load i32, ptr %48, align 4, !tbaa !9
  %156 = icmp ne i32 %155, 0
  br i1 %156, label %162, label %157

157:                                              ; preds = %154
  %158 = load i32, ptr %52, align 4, !tbaa !9
  %159 = icmp ne i32 %158, 0
  br i1 %159, label %162, label %160

160:                                              ; preds = %157
  %161 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -1, ptr %161, align 4, !tbaa !9
  br label %263

162:                                              ; preds = %157, %154
  %163 = load i32, ptr %49, align 4, !tbaa !9
  %164 = icmp ne i32 %163, 0
  br i1 %164, label %170, label %165

165:                                              ; preds = %162
  %166 = load i32, ptr %57, align 4, !tbaa !9
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %170, label %168

168:                                              ; preds = %165
  %169 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -2, ptr %169, align 4, !tbaa !9
  br label %262

170:                                              ; preds = %165, %162
  %171 = load ptr, ptr %20, align 8, !tbaa !5
  %172 = load i32, ptr %171, align 4, !tbaa !9
  %173 = icmp slt i32 %172, 0
  br i1 %173, label %174, label %176

174:                                              ; preds = %170
  %175 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -3, ptr %175, align 4, !tbaa !9
  br label %261

176:                                              ; preds = %170
  %177 = load ptr, ptr %21, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = icmp slt i32 %178, 0
  br i1 %179, label %180, label %182

180:                                              ; preds = %176
  %181 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -4, ptr %181, align 4, !tbaa !9
  br label %260

182:                                              ; preds = %176
  %183 = load ptr, ptr %22, align 8, !tbaa !5
  %184 = load i32, ptr %183, align 4, !tbaa !9
  %185 = icmp slt i32 %184, 0
  br i1 %185, label %186, label %188

186:                                              ; preds = %182
  %187 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -5, ptr %187, align 4, !tbaa !9
  br label %259

188:                                              ; preds = %182
  %189 = load ptr, ptr %23, align 8, !tbaa !5
  %190 = load i32, ptr %189, align 4, !tbaa !9
  %191 = icmp slt i32 %190, 0
  br i1 %191, label %198, label %192

192:                                              ; preds = %188
  %193 = load ptr, ptr %23, align 8, !tbaa !5
  %194 = load i32, ptr %193, align 4, !tbaa !9
  %195 = load ptr, ptr %22, align 8, !tbaa !5
  %196 = load i32, ptr %195, align 4, !tbaa !9
  %197 = icmp sgt i32 %194, %196
  br i1 %197, label %198, label %200

198:                                              ; preds = %192, %188
  %199 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -6, ptr %199, align 4, !tbaa !9
  br label %258

200:                                              ; preds = %192
  %201 = load ptr, ptr %24, align 8, !tbaa !5
  %202 = load i32, ptr %201, align 4, !tbaa !9
  %203 = icmp slt i32 %202, 1
  br i1 %203, label %214, label %204

204:                                              ; preds = %200
  %205 = load ptr, ptr %24, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  %207 = load ptr, ptr %22, align 8, !tbaa !5
  %208 = load i32, ptr %207, align 4, !tbaa !9
  %209 = icmp sgt i32 %206, %208
  br i1 %209, label %210, label %216

210:                                              ; preds = %204
  %211 = load ptr, ptr %22, align 8, !tbaa !5
  %212 = load i32, ptr %211, align 4, !tbaa !9
  %213 = icmp sgt i32 %212, 0
  br i1 %213, label %214, label %216

214:                                              ; preds = %210, %200
  %215 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -7, ptr %215, align 4, !tbaa !9
  br label %257

216:                                              ; preds = %210, %204
  %217 = load ptr, ptr %26, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = load i32, ptr %50, align 4, !tbaa !9
  %220 = icmp slt i32 %218, %219
  br i1 %220, label %221, label %223

221:                                              ; preds = %216
  %222 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -9, ptr %222, align 4, !tbaa !9
  br label %256

223:                                              ; preds = %216
  %224 = load ptr, ptr %28, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = load ptr, ptr %24, align 8, !tbaa !5
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = icmp slt i32 %225, %227
  br i1 %228, label %229, label %231

229:                                              ; preds = %223
  %230 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -11, ptr %230, align 4, !tbaa !9
  br label %255

231:                                              ; preds = %223
  %232 = load ptr, ptr %30, align 8, !tbaa !5
  %233 = load i32, ptr %232, align 4, !tbaa !9
  %234 = load i32, ptr %47, align 4, !tbaa !9
  %235 = icmp slt i32 %233, %234
  br i1 %235, label %236, label %238

236:                                              ; preds = %231
  %237 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -13, ptr %237, align 4, !tbaa !9
  br label %254

238:                                              ; preds = %231
  %239 = load ptr, ptr %32, align 8, !tbaa !5
  %240 = load i32, ptr %239, align 4, !tbaa !9
  %241 = load ptr, ptr %20, align 8, !tbaa !5
  %242 = load i32, ptr %241, align 4, !tbaa !9
  %243 = icmp sge i32 1, %242
  br i1 %243, label %244, label %245

244:                                              ; preds = %238
  br label %248

245:                                              ; preds = %238
  %246 = load ptr, ptr %20, align 8, !tbaa !5
  %247 = load i32, ptr %246, align 4, !tbaa !9
  br label %248

248:                                              ; preds = %245, %244
  %249 = phi i32 [ 1, %244 ], [ %247, %245 ]
  %250 = icmp slt i32 %240, %249
  br i1 %250, label %251, label %253

251:                                              ; preds = %248
  %252 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -15, ptr %252, align 4, !tbaa !9
  br label %253

253:                                              ; preds = %251, %248
  br label %254

254:                                              ; preds = %253, %236
  br label %255

255:                                              ; preds = %254, %229
  br label %256

256:                                              ; preds = %255, %221
  br label %257

257:                                              ; preds = %256, %214
  br label %258

258:                                              ; preds = %257, %198
  br label %259

259:                                              ; preds = %258, %186
  br label %260

260:                                              ; preds = %259, %180
  br label %261

261:                                              ; preds = %260, %174
  br label %262

262:                                              ; preds = %261, %168
  br label %263

263:                                              ; preds = %262, %160
  %264 = load ptr, ptr %34, align 8, !tbaa !5
  %265 = load i32, ptr %264, align 4, !tbaa !9
  %266 = icmp ne i32 %265, 0
  br i1 %266, label %267, label %272

267:                                              ; preds = %263
  %268 = load ptr, ptr %34, align 8, !tbaa !5
  %269 = load i32, ptr %268, align 4, !tbaa !9
  %270 = sub nsw i32 0, %269
  store i32 %270, ptr %43, align 4, !tbaa !9
  %271 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %43, i32 noundef 7)
  store i32 1, ptr %58, align 4
  br label %781

272:                                              ; preds = %263
  %273 = load ptr, ptr %20, align 8, !tbaa !5
  %274 = load i32, ptr %273, align 4, !tbaa !9
  %275 = icmp eq i32 %274, 0
  br i1 %275, label %284, label %276

276:                                              ; preds = %272
  %277 = load ptr, ptr %21, align 8, !tbaa !5
  %278 = load i32, ptr %277, align 4, !tbaa !9
  %279 = icmp eq i32 %278, 0
  br i1 %279, label %284, label %280

280:                                              ; preds = %276
  %281 = load ptr, ptr %22, align 8, !tbaa !5
  %282 = load i32, ptr %281, align 4, !tbaa !9
  %283 = icmp eq i32 %282, 0
  br i1 %283, label %284, label %285

284:                                              ; preds = %280, %276, %272
  store i32 1, ptr %58, align 4
  br label %781

285:                                              ; preds = %280
  %286 = load i32, ptr %48, align 4, !tbaa !9
  %287 = icmp ne i32 %286, 0
  br i1 %287, label %288, label %403

288:                                              ; preds = %285
  %289 = load i32, ptr %49, align 4, !tbaa !9
  %290 = icmp ne i32 %289, 0
  br i1 %290, label %291, label %403

291:                                              ; preds = %288
  %292 = load ptr, ptr %22, align 8, !tbaa !5
  %293 = load i32, ptr %292, align 4, !tbaa !9
  store i32 %293, ptr %43, align 4, !tbaa !9
  %294 = load ptr, ptr %24, align 8, !tbaa !5
  %295 = load i32, ptr %294, align 4, !tbaa !9
  store i32 %295, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  br label %296

296:                                              ; preds = %398, %291
  %297 = load i32, ptr %44, align 4, !tbaa !9
  %298 = icmp slt i32 %297, 0
  br i1 %298, label %299, label %304

299:                                              ; preds = %296
  %300 = load i32, ptr %51, align 4, !tbaa !9
  %301 = load i32, ptr %43, align 4, !tbaa !9
  %302 = icmp sge i32 %300, %301
  %303 = zext i1 %302 to i32
  br label %309

304:                                              ; preds = %296
  %305 = load i32, ptr %51, align 4, !tbaa !9
  %306 = load i32, ptr %43, align 4, !tbaa !9
  %307 = icmp sle i32 %305, %306
  %308 = zext i1 %307 to i32
  br label %309

309:                                              ; preds = %304, %299
  %310 = phi i32 [ %303, %299 ], [ %308, %304 ]
  %311 = icmp ne i32 %310, 0
  br i1 %311, label %312, label %402

312:                                              ; preds = %309
  %313 = load ptr, ptr %24, align 8, !tbaa !5
  %314 = load i32, ptr %313, align 4, !tbaa !9
  store i32 %314, ptr %45, align 4, !tbaa !9
  %315 = load ptr, ptr %22, align 8, !tbaa !5
  %316 = load i32, ptr %315, align 4, !tbaa !9
  %317 = load i32, ptr %51, align 4, !tbaa !9
  %318 = sub nsw i32 %316, %317
  %319 = add nsw i32 %318, 1
  store i32 %319, ptr %46, align 4, !tbaa !9
  %320 = load i32, ptr %45, align 4, !tbaa !9
  %321 = load i32, ptr %46, align 4, !tbaa !9
  %322 = icmp sle i32 %320, %321
  br i1 %322, label %323, label %325

323:                                              ; preds = %312
  %324 = load i32, ptr %45, align 4, !tbaa !9
  br label %327

325:                                              ; preds = %312
  %326 = load i32, ptr %46, align 4, !tbaa !9
  br label %327

327:                                              ; preds = %325, %323
  %328 = phi i32 [ %324, %323 ], [ %326, %325 ]
  store i32 %328, ptr %53, align 4, !tbaa !9
  %329 = load ptr, ptr %20, align 8, !tbaa !5
  %330 = load i32, ptr %329, align 4, !tbaa !9
  %331 = load ptr, ptr %23, align 8, !tbaa !5
  %332 = load i32, ptr %331, align 4, !tbaa !9
  %333 = sub nsw i32 %330, %332
  %334 = load i32, ptr %51, align 4, !tbaa !9
  %335 = add nsw i32 %333, %334
  %336 = load i32, ptr %53, align 4, !tbaa !9
  %337 = add nsw i32 %335, %336
  %338 = sub nsw i32 %337, 1
  store i32 %338, ptr %45, align 4, !tbaa !9
  %339 = load i32, ptr %45, align 4, !tbaa !9
  %340 = load ptr, ptr %20, align 8, !tbaa !5
  %341 = load i32, ptr %340, align 4, !tbaa !9
  %342 = icmp sle i32 %339, %341
  br i1 %342, label %343, label %345

343:                                              ; preds = %327
  %344 = load i32, ptr %45, align 4, !tbaa !9
  br label %348

345:                                              ; preds = %327
  %346 = load ptr, ptr %20, align 8, !tbaa !5
  %347 = load i32, ptr %346, align 4, !tbaa !9
  br label %348

348:                                              ; preds = %345, %343
  %349 = phi i32 [ %344, %343 ], [ %347, %345 ]
  store i32 %349, ptr %55, align 4, !tbaa !9
  %350 = load i32, ptr %51, align 4, !tbaa !9
  %351 = load ptr, ptr %23, align 8, !tbaa !5
  %352 = load i32, ptr %351, align 4, !tbaa !9
  %353 = icmp sge i32 %350, %352
  br i1 %353, label %354, label %355

354:                                              ; preds = %348
  store i32 0, ptr %54, align 4, !tbaa !9
  br label %366

355:                                              ; preds = %348
  %356 = load i32, ptr %55, align 4, !tbaa !9
  %357 = load ptr, ptr %20, align 8, !tbaa !5
  %358 = load i32, ptr %357, align 4, !tbaa !9
  %359 = sub nsw i32 %356, %358
  %360 = load ptr, ptr %23, align 8, !tbaa !5
  %361 = load i32, ptr %360, align 4, !tbaa !9
  %362 = add nsw i32 %359, %361
  %363 = load i32, ptr %51, align 4, !tbaa !9
  %364 = sub nsw i32 %362, %363
  %365 = add nsw i32 %364, 1
  store i32 %365, ptr %54, align 4, !tbaa !9
  br label %366

366:                                              ; preds = %355, %354
  %367 = load ptr, ptr %21, align 8, !tbaa !5
  %368 = load ptr, ptr %25, align 8, !tbaa !5
  %369 = load i32, ptr %51, align 4, !tbaa !9
  %370 = load i32, ptr %35, align 4, !tbaa !9
  %371 = mul nsw i32 %369, %370
  %372 = add nsw i32 %371, 1
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds %struct.complex, ptr %368, i64 %373
  %375 = load ptr, ptr %26, align 8, !tbaa !5
  %376 = load ptr, ptr %27, align 8, !tbaa !5
  %377 = load i32, ptr %51, align 4, !tbaa !9
  %378 = load i32, ptr %41, align 4, !tbaa !9
  %379 = mul nsw i32 %377, %378
  %380 = add nsw i32 %379, 1
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds %struct.complex, ptr %376, i64 %381
  %383 = load ptr, ptr %28, align 8, !tbaa !5
  %384 = load ptr, ptr %29, align 8, !tbaa !5
  %385 = load i32, ptr %51, align 4, !tbaa !9
  %386 = load i32, ptr %37, align 4, !tbaa !9
  %387 = add nsw i32 %385, %386
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds %struct.complex, ptr %384, i64 %388
  %390 = load ptr, ptr %30, align 8, !tbaa !5
  %391 = load ptr, ptr %31, align 8, !tbaa !5
  %392 = load i32, ptr %40, align 4, !tbaa !9
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds %struct.complex, ptr %391, i64 %393
  %395 = load ptr, ptr %32, align 8, !tbaa !5
  %396 = load ptr, ptr %33, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.complex, ptr %396, i64 1
  call void @ctprfb_(ptr noundef @.str, ptr noundef @.str.2, ptr noundef @.str.5, ptr noundef @.str.2, ptr noundef %55, ptr noundef %367, ptr noundef %53, ptr noundef %54, ptr noundef %374, ptr noundef %375, ptr noundef %382, ptr noundef %383, ptr noundef %389, ptr noundef %390, ptr noundef %394, ptr noundef %395, ptr noundef %397, ptr noundef %53)
  br label %398

398:                                              ; preds = %366
  %399 = load i32, ptr %44, align 4, !tbaa !9
  %400 = load i32, ptr %51, align 4, !tbaa !9
  %401 = add nsw i32 %400, %399
  store i32 %401, ptr %51, align 4, !tbaa !9
  br label %296, !llvm.loop !11

402:                                              ; preds = %309
  br label %780

403:                                              ; preds = %288, %285
  %404 = load i32, ptr %52, align 4, !tbaa !9
  %405 = icmp ne i32 %404, 0
  br i1 %405, label %406, label %523

406:                                              ; preds = %403
  %407 = load i32, ptr %57, align 4, !tbaa !9
  %408 = icmp ne i32 %407, 0
  br i1 %408, label %409, label %523

409:                                              ; preds = %406
  %410 = load ptr, ptr %22, align 8, !tbaa !5
  %411 = load i32, ptr %410, align 4, !tbaa !9
  store i32 %411, ptr %44, align 4, !tbaa !9
  %412 = load ptr, ptr %24, align 8, !tbaa !5
  %413 = load i32, ptr %412, align 4, !tbaa !9
  store i32 %413, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  br label %414

414:                                              ; preds = %518, %409
  %415 = load i32, ptr %43, align 4, !tbaa !9
  %416 = icmp slt i32 %415, 0
  br i1 %416, label %417, label %422

417:                                              ; preds = %414
  %418 = load i32, ptr %51, align 4, !tbaa !9
  %419 = load i32, ptr %44, align 4, !tbaa !9
  %420 = icmp sge i32 %418, %419
  %421 = zext i1 %420 to i32
  br label %427

422:                                              ; preds = %414
  %423 = load i32, ptr %51, align 4, !tbaa !9
  %424 = load i32, ptr %44, align 4, !tbaa !9
  %425 = icmp sle i32 %423, %424
  %426 = zext i1 %425 to i32
  br label %427

427:                                              ; preds = %422, %417
  %428 = phi i32 [ %421, %417 ], [ %426, %422 ]
  %429 = icmp ne i32 %428, 0
  br i1 %429, label %430, label %522

430:                                              ; preds = %427
  %431 = load ptr, ptr %24, align 8, !tbaa !5
  %432 = load i32, ptr %431, align 4, !tbaa !9
  store i32 %432, ptr %45, align 4, !tbaa !9
  %433 = load ptr, ptr %22, align 8, !tbaa !5
  %434 = load i32, ptr %433, align 4, !tbaa !9
  %435 = load i32, ptr %51, align 4, !tbaa !9
  %436 = sub nsw i32 %434, %435
  %437 = add nsw i32 %436, 1
  store i32 %437, ptr %46, align 4, !tbaa !9
  %438 = load i32, ptr %45, align 4, !tbaa !9
  %439 = load i32, ptr %46, align 4, !tbaa !9
  %440 = icmp sle i32 %438, %439
  br i1 %440, label %441, label %443

441:                                              ; preds = %430
  %442 = load i32, ptr %45, align 4, !tbaa !9
  br label %445

443:                                              ; preds = %430
  %444 = load i32, ptr %46, align 4, !tbaa !9
  br label %445

445:                                              ; preds = %443, %441
  %446 = phi i32 [ %442, %441 ], [ %444, %443 ]
  store i32 %446, ptr %53, align 4, !tbaa !9
  %447 = load ptr, ptr %21, align 8, !tbaa !5
  %448 = load i32, ptr %447, align 4, !tbaa !9
  %449 = load ptr, ptr %23, align 8, !tbaa !5
  %450 = load i32, ptr %449, align 4, !tbaa !9
  %451 = sub nsw i32 %448, %450
  %452 = load i32, ptr %51, align 4, !tbaa !9
  %453 = add nsw i32 %451, %452
  %454 = load i32, ptr %53, align 4, !tbaa !9
  %455 = add nsw i32 %453, %454
  %456 = sub nsw i32 %455, 1
  store i32 %456, ptr %45, align 4, !tbaa !9
  %457 = load i32, ptr %45, align 4, !tbaa !9
  %458 = load ptr, ptr %21, align 8, !tbaa !5
  %459 = load i32, ptr %458, align 4, !tbaa !9
  %460 = icmp sle i32 %457, %459
  br i1 %460, label %461, label %463

461:                                              ; preds = %445
  %462 = load i32, ptr %45, align 4, !tbaa !9
  br label %466

463:                                              ; preds = %445
  %464 = load ptr, ptr %21, align 8, !tbaa !5
  %465 = load i32, ptr %464, align 4, !tbaa !9
  br label %466

466:                                              ; preds = %463, %461
  %467 = phi i32 [ %462, %461 ], [ %465, %463 ]
  store i32 %467, ptr %55, align 4, !tbaa !9
  %468 = load i32, ptr %51, align 4, !tbaa !9
  %469 = load ptr, ptr %23, align 8, !tbaa !5
  %470 = load i32, ptr %469, align 4, !tbaa !9
  %471 = icmp sge i32 %468, %470
  br i1 %471, label %472, label %473

472:                                              ; preds = %466
  store i32 0, ptr %54, align 4, !tbaa !9
  br label %484

473:                                              ; preds = %466
  %474 = load i32, ptr %55, align 4, !tbaa !9
  %475 = load ptr, ptr %21, align 8, !tbaa !5
  %476 = load i32, ptr %475, align 4, !tbaa !9
  %477 = sub nsw i32 %474, %476
  %478 = load ptr, ptr %23, align 8, !tbaa !5
  %479 = load i32, ptr %478, align 4, !tbaa !9
  %480 = add nsw i32 %477, %479
  %481 = load i32, ptr %51, align 4, !tbaa !9
  %482 = sub nsw i32 %480, %481
  %483 = add nsw i32 %482, 1
  store i32 %483, ptr %54, align 4, !tbaa !9
  br label %484

484:                                              ; preds = %473, %472
  %485 = load ptr, ptr %20, align 8, !tbaa !5
  %486 = load ptr, ptr %25, align 8, !tbaa !5
  %487 = load i32, ptr %51, align 4, !tbaa !9
  %488 = load i32, ptr %35, align 4, !tbaa !9
  %489 = mul nsw i32 %487, %488
  %490 = add nsw i32 %489, 1
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds %struct.complex, ptr %486, i64 %491
  %493 = load ptr, ptr %26, align 8, !tbaa !5
  %494 = load ptr, ptr %27, align 8, !tbaa !5
  %495 = load i32, ptr %51, align 4, !tbaa !9
  %496 = load i32, ptr %41, align 4, !tbaa !9
  %497 = mul nsw i32 %495, %496
  %498 = add nsw i32 %497, 1
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds %struct.complex, ptr %494, i64 %499
  %501 = load ptr, ptr %28, align 8, !tbaa !5
  %502 = load ptr, ptr %29, align 8, !tbaa !5
  %503 = load i32, ptr %51, align 4, !tbaa !9
  %504 = load i32, ptr %37, align 4, !tbaa !9
  %505 = mul nsw i32 %503, %504
  %506 = add nsw i32 %505, 1
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds %struct.complex, ptr %502, i64 %507
  %509 = load ptr, ptr %30, align 8, !tbaa !5
  %510 = load ptr, ptr %31, align 8, !tbaa !5
  %511 = load i32, ptr %40, align 4, !tbaa !9
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds %struct.complex, ptr %510, i64 %512
  %514 = load ptr, ptr %32, align 8, !tbaa !5
  %515 = load ptr, ptr %33, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.complex, ptr %515, i64 1
  %517 = load ptr, ptr %20, align 8, !tbaa !5
  call void @ctprfb_(ptr noundef @.str.1, ptr noundef @.str.3, ptr noundef @.str.5, ptr noundef @.str.2, ptr noundef %485, ptr noundef %55, ptr noundef %53, ptr noundef %54, ptr noundef %492, ptr noundef %493, ptr noundef %500, ptr noundef %501, ptr noundef %508, ptr noundef %509, ptr noundef %513, ptr noundef %514, ptr noundef %516, ptr noundef %517)
  br label %518

518:                                              ; preds = %484
  %519 = load i32, ptr %43, align 4, !tbaa !9
  %520 = load i32, ptr %51, align 4, !tbaa !9
  %521 = add nsw i32 %520, %519
  store i32 %521, ptr %51, align 4, !tbaa !9
  br label %414, !llvm.loop !13

522:                                              ; preds = %427
  br label %779

523:                                              ; preds = %406, %403
  %524 = load i32, ptr %48, align 4, !tbaa !9
  %525 = icmp ne i32 %524, 0
  br i1 %525, label %526, label %649

526:                                              ; preds = %523
  %527 = load i32, ptr %57, align 4, !tbaa !9
  %528 = icmp ne i32 %527, 0
  br i1 %528, label %529, label %649

529:                                              ; preds = %526
  %530 = load ptr, ptr %22, align 8, !tbaa !5
  %531 = load i32, ptr %530, align 4, !tbaa !9
  %532 = sub nsw i32 %531, 1
  %533 = load ptr, ptr %24, align 8, !tbaa !5
  %534 = load i32, ptr %533, align 4, !tbaa !9
  %535 = sdiv i32 %532, %534
  %536 = load ptr, ptr %24, align 8, !tbaa !5
  %537 = load i32, ptr %536, align 4, !tbaa !9
  %538 = mul nsw i32 %535, %537
  %539 = add nsw i32 %538, 1
  store i32 %539, ptr %56, align 4, !tbaa !9
  %540 = load ptr, ptr %24, align 8, !tbaa !5
  %541 = load i32, ptr %540, align 4, !tbaa !9
  %542 = sub nsw i32 0, %541
  store i32 %542, ptr %43, align 4, !tbaa !9
  %543 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %543, ptr %51, align 4, !tbaa !9
  br label %544

544:                                              ; preds = %644, %529
  %545 = load i32, ptr %43, align 4, !tbaa !9
  %546 = icmp slt i32 %545, 0
  br i1 %546, label %547, label %551

547:                                              ; preds = %544
  %548 = load i32, ptr %51, align 4, !tbaa !9
  %549 = icmp sge i32 %548, 1
  %550 = zext i1 %549 to i32
  br label %555

551:                                              ; preds = %544
  %552 = load i32, ptr %51, align 4, !tbaa !9
  %553 = icmp sle i32 %552, 1
  %554 = zext i1 %553 to i32
  br label %555

555:                                              ; preds = %551, %547
  %556 = phi i32 [ %550, %547 ], [ %554, %551 ]
  %557 = icmp ne i32 %556, 0
  br i1 %557, label %558, label %648

558:                                              ; preds = %555
  %559 = load ptr, ptr %24, align 8, !tbaa !5
  %560 = load i32, ptr %559, align 4, !tbaa !9
  store i32 %560, ptr %44, align 4, !tbaa !9
  %561 = load ptr, ptr %22, align 8, !tbaa !5
  %562 = load i32, ptr %561, align 4, !tbaa !9
  %563 = load i32, ptr %51, align 4, !tbaa !9
  %564 = sub nsw i32 %562, %563
  %565 = add nsw i32 %564, 1
  store i32 %565, ptr %45, align 4, !tbaa !9
  %566 = load i32, ptr %44, align 4, !tbaa !9
  %567 = load i32, ptr %45, align 4, !tbaa !9
  %568 = icmp sle i32 %566, %567
  br i1 %568, label %569, label %571

569:                                              ; preds = %558
  %570 = load i32, ptr %44, align 4, !tbaa !9
  br label %573

571:                                              ; preds = %558
  %572 = load i32, ptr %45, align 4, !tbaa !9
  br label %573

573:                                              ; preds = %571, %569
  %574 = phi i32 [ %570, %569 ], [ %572, %571 ]
  store i32 %574, ptr %53, align 4, !tbaa !9
  %575 = load ptr, ptr %20, align 8, !tbaa !5
  %576 = load i32, ptr %575, align 4, !tbaa !9
  %577 = load ptr, ptr %23, align 8, !tbaa !5
  %578 = load i32, ptr %577, align 4, !tbaa !9
  %579 = sub nsw i32 %576, %578
  %580 = load i32, ptr %51, align 4, !tbaa !9
  %581 = add nsw i32 %579, %580
  %582 = load i32, ptr %53, align 4, !tbaa !9
  %583 = add nsw i32 %581, %582
  %584 = sub nsw i32 %583, 1
  store i32 %584, ptr %44, align 4, !tbaa !9
  %585 = load i32, ptr %44, align 4, !tbaa !9
  %586 = load ptr, ptr %20, align 8, !tbaa !5
  %587 = load i32, ptr %586, align 4, !tbaa !9
  %588 = icmp sle i32 %585, %587
  br i1 %588, label %589, label %591

589:                                              ; preds = %573
  %590 = load i32, ptr %44, align 4, !tbaa !9
  br label %594

591:                                              ; preds = %573
  %592 = load ptr, ptr %20, align 8, !tbaa !5
  %593 = load i32, ptr %592, align 4, !tbaa !9
  br label %594

594:                                              ; preds = %591, %589
  %595 = phi i32 [ %590, %589 ], [ %593, %591 ]
  store i32 %595, ptr %55, align 4, !tbaa !9
  %596 = load i32, ptr %51, align 4, !tbaa !9
  %597 = load ptr, ptr %23, align 8, !tbaa !5
  %598 = load i32, ptr %597, align 4, !tbaa !9
  %599 = icmp sge i32 %596, %598
  br i1 %599, label %600, label %601

600:                                              ; preds = %594
  store i32 0, ptr %54, align 4, !tbaa !9
  br label %612

601:                                              ; preds = %594
  %602 = load i32, ptr %55, align 4, !tbaa !9
  %603 = load ptr, ptr %20, align 8, !tbaa !5
  %604 = load i32, ptr %603, align 4, !tbaa !9
  %605 = sub nsw i32 %602, %604
  %606 = load ptr, ptr %23, align 8, !tbaa !5
  %607 = load i32, ptr %606, align 4, !tbaa !9
  %608 = add nsw i32 %605, %607
  %609 = load i32, ptr %51, align 4, !tbaa !9
  %610 = sub nsw i32 %608, %609
  %611 = add nsw i32 %610, 1
  store i32 %611, ptr %54, align 4, !tbaa !9
  br label %612

612:                                              ; preds = %601, %600
  %613 = load ptr, ptr %21, align 8, !tbaa !5
  %614 = load ptr, ptr %25, align 8, !tbaa !5
  %615 = load i32, ptr %51, align 4, !tbaa !9
  %616 = load i32, ptr %35, align 4, !tbaa !9
  %617 = mul nsw i32 %615, %616
  %618 = add nsw i32 %617, 1
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds %struct.complex, ptr %614, i64 %619
  %621 = load ptr, ptr %26, align 8, !tbaa !5
  %622 = load ptr, ptr %27, align 8, !tbaa !5
  %623 = load i32, ptr %51, align 4, !tbaa !9
  %624 = load i32, ptr %41, align 4, !tbaa !9
  %625 = mul nsw i32 %623, %624
  %626 = add nsw i32 %625, 1
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds %struct.complex, ptr %622, i64 %627
  %629 = load ptr, ptr %28, align 8, !tbaa !5
  %630 = load ptr, ptr %29, align 8, !tbaa !5
  %631 = load i32, ptr %51, align 4, !tbaa !9
  %632 = load i32, ptr %37, align 4, !tbaa !9
  %633 = add nsw i32 %631, %632
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds %struct.complex, ptr %630, i64 %634
  %636 = load ptr, ptr %30, align 8, !tbaa !5
  %637 = load ptr, ptr %31, align 8, !tbaa !5
  %638 = load i32, ptr %40, align 4, !tbaa !9
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds %struct.complex, ptr %637, i64 %639
  %641 = load ptr, ptr %32, align 8, !tbaa !5
  %642 = load ptr, ptr %33, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.complex, ptr %642, i64 1
  call void @ctprfb_(ptr noundef @.str, ptr noundef @.str.3, ptr noundef @.str.5, ptr noundef @.str.2, ptr noundef %55, ptr noundef %613, ptr noundef %53, ptr noundef %54, ptr noundef %620, ptr noundef %621, ptr noundef %628, ptr noundef %629, ptr noundef %635, ptr noundef %636, ptr noundef %640, ptr noundef %641, ptr noundef %643, ptr noundef %53)
  br label %644

644:                                              ; preds = %612
  %645 = load i32, ptr %43, align 4, !tbaa !9
  %646 = load i32, ptr %51, align 4, !tbaa !9
  %647 = add nsw i32 %646, %645
  store i32 %647, ptr %51, align 4, !tbaa !9
  br label %544, !llvm.loop !14

648:                                              ; preds = %555
  br label %778

649:                                              ; preds = %526, %523
  %650 = load i32, ptr %52, align 4, !tbaa !9
  %651 = icmp ne i32 %650, 0
  br i1 %651, label %652, label %777

652:                                              ; preds = %649
  %653 = load i32, ptr %49, align 4, !tbaa !9
  %654 = icmp ne i32 %653, 0
  br i1 %654, label %655, label %777

655:                                              ; preds = %652
  %656 = load ptr, ptr %22, align 8, !tbaa !5
  %657 = load i32, ptr %656, align 4, !tbaa !9
  %658 = sub nsw i32 %657, 1
  %659 = load ptr, ptr %24, align 8, !tbaa !5
  %660 = load i32, ptr %659, align 4, !tbaa !9
  %661 = sdiv i32 %658, %660
  %662 = load ptr, ptr %24, align 8, !tbaa !5
  %663 = load i32, ptr %662, align 4, !tbaa !9
  %664 = mul nsw i32 %661, %663
  %665 = add nsw i32 %664, 1
  store i32 %665, ptr %56, align 4, !tbaa !9
  %666 = load ptr, ptr %24, align 8, !tbaa !5
  %667 = load i32, ptr %666, align 4, !tbaa !9
  %668 = sub nsw i32 0, %667
  store i32 %668, ptr %43, align 4, !tbaa !9
  %669 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %669, ptr %51, align 4, !tbaa !9
  br label %670

670:                                              ; preds = %772, %655
  %671 = load i32, ptr %43, align 4, !tbaa !9
  %672 = icmp slt i32 %671, 0
  br i1 %672, label %673, label %677

673:                                              ; preds = %670
  %674 = load i32, ptr %51, align 4, !tbaa !9
  %675 = icmp sge i32 %674, 1
  %676 = zext i1 %675 to i32
  br label %681

677:                                              ; preds = %670
  %678 = load i32, ptr %51, align 4, !tbaa !9
  %679 = icmp sle i32 %678, 1
  %680 = zext i1 %679 to i32
  br label %681

681:                                              ; preds = %677, %673
  %682 = phi i32 [ %676, %673 ], [ %680, %677 ]
  %683 = icmp ne i32 %682, 0
  br i1 %683, label %684, label %776

684:                                              ; preds = %681
  %685 = load ptr, ptr %24, align 8, !tbaa !5
  %686 = load i32, ptr %685, align 4, !tbaa !9
  store i32 %686, ptr %44, align 4, !tbaa !9
  %687 = load ptr, ptr %22, align 8, !tbaa !5
  %688 = load i32, ptr %687, align 4, !tbaa !9
  %689 = load i32, ptr %51, align 4, !tbaa !9
  %690 = sub nsw i32 %688, %689
  %691 = add nsw i32 %690, 1
  store i32 %691, ptr %45, align 4, !tbaa !9
  %692 = load i32, ptr %44, align 4, !tbaa !9
  %693 = load i32, ptr %45, align 4, !tbaa !9
  %694 = icmp sle i32 %692, %693
  br i1 %694, label %695, label %697

695:                                              ; preds = %684
  %696 = load i32, ptr %44, align 4, !tbaa !9
  br label %699

697:                                              ; preds = %684
  %698 = load i32, ptr %45, align 4, !tbaa !9
  br label %699

699:                                              ; preds = %697, %695
  %700 = phi i32 [ %696, %695 ], [ %698, %697 ]
  store i32 %700, ptr %53, align 4, !tbaa !9
  %701 = load ptr, ptr %21, align 8, !tbaa !5
  %702 = load i32, ptr %701, align 4, !tbaa !9
  %703 = load ptr, ptr %23, align 8, !tbaa !5
  %704 = load i32, ptr %703, align 4, !tbaa !9
  %705 = sub nsw i32 %702, %704
  %706 = load i32, ptr %51, align 4, !tbaa !9
  %707 = add nsw i32 %705, %706
  %708 = load i32, ptr %53, align 4, !tbaa !9
  %709 = add nsw i32 %707, %708
  %710 = sub nsw i32 %709, 1
  store i32 %710, ptr %44, align 4, !tbaa !9
  %711 = load i32, ptr %44, align 4, !tbaa !9
  %712 = load ptr, ptr %21, align 8, !tbaa !5
  %713 = load i32, ptr %712, align 4, !tbaa !9
  %714 = icmp sle i32 %711, %713
  br i1 %714, label %715, label %717

715:                                              ; preds = %699
  %716 = load i32, ptr %44, align 4, !tbaa !9
  br label %720

717:                                              ; preds = %699
  %718 = load ptr, ptr %21, align 8, !tbaa !5
  %719 = load i32, ptr %718, align 4, !tbaa !9
  br label %720

720:                                              ; preds = %717, %715
  %721 = phi i32 [ %716, %715 ], [ %719, %717 ]
  store i32 %721, ptr %55, align 4, !tbaa !9
  %722 = load i32, ptr %51, align 4, !tbaa !9
  %723 = load ptr, ptr %23, align 8, !tbaa !5
  %724 = load i32, ptr %723, align 4, !tbaa !9
  %725 = icmp sge i32 %722, %724
  br i1 %725, label %726, label %727

726:                                              ; preds = %720
  store i32 0, ptr %54, align 4, !tbaa !9
  br label %738

727:                                              ; preds = %720
  %728 = load i32, ptr %55, align 4, !tbaa !9
  %729 = load ptr, ptr %21, align 8, !tbaa !5
  %730 = load i32, ptr %729, align 4, !tbaa !9
  %731 = sub nsw i32 %728, %730
  %732 = load ptr, ptr %23, align 8, !tbaa !5
  %733 = load i32, ptr %732, align 4, !tbaa !9
  %734 = add nsw i32 %731, %733
  %735 = load i32, ptr %51, align 4, !tbaa !9
  %736 = sub nsw i32 %734, %735
  %737 = add nsw i32 %736, 1
  store i32 %737, ptr %54, align 4, !tbaa !9
  br label %738

738:                                              ; preds = %727, %726
  %739 = load ptr, ptr %20, align 8, !tbaa !5
  %740 = load ptr, ptr %25, align 8, !tbaa !5
  %741 = load i32, ptr %51, align 4, !tbaa !9
  %742 = load i32, ptr %35, align 4, !tbaa !9
  %743 = mul nsw i32 %741, %742
  %744 = add nsw i32 %743, 1
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds %struct.complex, ptr %740, i64 %745
  %747 = load ptr, ptr %26, align 8, !tbaa !5
  %748 = load ptr, ptr %27, align 8, !tbaa !5
  %749 = load i32, ptr %51, align 4, !tbaa !9
  %750 = load i32, ptr %41, align 4, !tbaa !9
  %751 = mul nsw i32 %749, %750
  %752 = add nsw i32 %751, 1
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds %struct.complex, ptr %748, i64 %753
  %755 = load ptr, ptr %28, align 8, !tbaa !5
  %756 = load ptr, ptr %29, align 8, !tbaa !5
  %757 = load i32, ptr %51, align 4, !tbaa !9
  %758 = load i32, ptr %37, align 4, !tbaa !9
  %759 = mul nsw i32 %757, %758
  %760 = add nsw i32 %759, 1
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds %struct.complex, ptr %756, i64 %761
  %763 = load ptr, ptr %30, align 8, !tbaa !5
  %764 = load ptr, ptr %31, align 8, !tbaa !5
  %765 = load i32, ptr %40, align 4, !tbaa !9
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds %struct.complex, ptr %764, i64 %766
  %768 = load ptr, ptr %32, align 8, !tbaa !5
  %769 = load ptr, ptr %33, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.complex, ptr %769, i64 1
  %771 = load ptr, ptr %20, align 8, !tbaa !5
  call void @ctprfb_(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef @.str.5, ptr noundef @.str.2, ptr noundef %739, ptr noundef %55, ptr noundef %53, ptr noundef %54, ptr noundef %746, ptr noundef %747, ptr noundef %754, ptr noundef %755, ptr noundef %762, ptr noundef %763, ptr noundef %767, ptr noundef %768, ptr noundef %770, ptr noundef %771)
  br label %772

772:                                              ; preds = %738
  %773 = load i32, ptr %43, align 4, !tbaa !9
  %774 = load i32, ptr %51, align 4, !tbaa !9
  %775 = add nsw i32 %774, %773
  store i32 %775, ptr %51, align 4, !tbaa !9
  br label %670, !llvm.loop !15

776:                                              ; preds = %681
  br label %777

777:                                              ; preds = %776, %652, %649
  br label %778

778:                                              ; preds = %777, %648
  br label %779

779:                                              ; preds = %778, %522
  br label %780

780:                                              ; preds = %779, %402
  store i32 1, ptr %58, align 4
  br label %781

781:                                              ; preds = %780, %284, %267
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  ret void
}

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

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

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

declare void @ctprfb_(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, 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 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}


; 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
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1

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

36:                                               ; preds = %17
  %37 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.smax.i32(i32 %37, i32 1)
  %38 = load i32, ptr %4, align 4, !tbaa !5
  br label %.thread

39:                                               ; preds = %17
  %.not = icmp eq i32 %32, 0
  br i1 %.not, label %.thread326.sink.split, label %40

40:                                               ; preds = %39
  %41 = load i32, ptr %3, align 4, !tbaa !5
  %spec.select312 = tail call i32 @llvm.smax.i32(i32 %41, i32 1)
  %42 = load i32, ptr %2, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %36, %40
  %.sink = phi i32 [ %38, %36 ], [ %42, %40 ]
  %43 = phi i32 [ %37, %36 ], [ %42, %40 ]
  %.0265.ph = phi i32 [ %spec.select, %36 ], [ %spec.select312, %40 ]
  %44 = tail call i32 @llvm.smax.i32(i32 %.sink, i32 1)
  %45 = icmp ne i32 %32, 0
  %46 = icmp ne i32 %33, 0
  %47 = icmp ne i32 %34, 0
  %or.cond3 = select i1 %46, i1 true, i1 %47
  br i1 %or.cond3, label %48, label %.thread326.sink.split

48:                                               ; preds = %.thread
  %49 = icmp slt i32 %43, 0
  br i1 %49, label %.thread326.sink.split, label %50

50:                                               ; preds = %48
  %51 = load i32, ptr %3, align 4, !tbaa !5
  %52 = icmp slt i32 %51, 0
  br i1 %52, label %.thread326.sink.split, label %53

53:                                               ; preds = %50
  %54 = load i32, ptr %4, align 4, !tbaa !5
  %.fr293 = freeze i32 %54
  %55 = icmp slt i32 %.fr293, 0
  br i1 %55, label %.thread326.sink.split, label %56

56:                                               ; preds = %53
  %57 = load i32, ptr %5, align 4, !tbaa !5
  %or.cond313 = icmp ugt i32 %57, %.fr293
  br i1 %or.cond313, label %.thread326.sink.split, label %58

58:                                               ; preds = %56
  %59 = load i32, ptr %6, align 4, !tbaa !5
  %60 = icmp slt i32 %59, 1
  br i1 %60, label %.thread326.sink.split, label %61

61:                                               ; preds = %58
  %62 = icmp ule i32 %59, %.fr293
  %.not291 = icmp eq i32 %.fr293, 0
  %or.cond314 = or i1 %.not291, %62
  br i1 %or.cond314, label %63, label %.thread326.sink.split

63:                                               ; preds = %61
  %64 = load i32, ptr %8, align 4, !tbaa !5
  %65 = icmp slt i32 %64, %.0265.ph
  br i1 %65, label %.thread326.sink.split, label %66

66:                                               ; preds = %63
  %67 = load i32, ptr %10, align 4, !tbaa !5
  %68 = icmp slt i32 %67, %59
  br i1 %68, label %.thread326.sink.split, label %69

69:                                               ; preds = %66
  %70 = load i32, ptr %12, align 4, !tbaa !5
  %71 = icmp slt i32 %70, %44
  br i1 %71, label %.thread326.sink.split, label %72

72:                                               ; preds = %69
  %73 = load i32, ptr %14, align 4, !tbaa !5
  %spec.select315 = tail call i32 @llvm.umax.i32(i32 %43, i32 1)
  %74 = icmp slt i32 %73, %spec.select315
  br i1 %74, label %.thread326.sink.split, label %75

75:                                               ; preds = %72
  %.pr = load i32, ptr %16, align 4, !tbaa !5
  %.not292 = icmp eq i32 %.pr, 0
  br i1 %.not292, label %79, label %.thread326

.thread326.sink.split:                            ; preds = %72, %69, %66, %63, %58, %61, %56, %53, %50, %48, %.thread, %39
  %.sink393 = phi i32 [ -1, %39 ], [ -2, %.thread ], [ -3, %48 ], [ -4, %50 ], [ -5, %53 ], [ -6, %56 ], [ -7, %61 ], [ -7, %58 ], [ -9, %63 ], [ -11, %66 ], [ -13, %69 ], [ -15, %72 ]
  store i32 %.sink393, ptr %16, align 4, !tbaa !5
  br label %.thread326

.thread326:                                       ; preds = %.thread326.sink.split, %75
  %76 = phi i32 [ %.pr, %75 ], [ %.sink393, %.thread326.sink.split ]
  %77 = sub nsw i32 0, %76
  store i32 %77, ptr %18, align 4, !tbaa !5
  %78 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %18, i32 noundef 7) #4
  br label %.loopexit

79:                                               ; preds = %75
  %80 = icmp eq i32 %43, 0
  %81 = icmp eq i32 %51, 0
  %or.cond = or i1 %80, %81
  %82 = icmp eq i32 %.fr293, 0
  %or.cond394 = or i1 %or.cond, %82
  br i1 %or.cond394, label %.loopexit, label %83

83:                                               ; preds = %79
  %or.cond5 = and i1 %35, %46
  br i1 %or.cond5, label %.lr.ph378.preheader, label %108

.lr.ph378.preheader:                              ; preds = %83
  %invariant.gep371 = getelementptr i8, ptr %24, i64 8
  %invariant.gep373 = getelementptr i8, ptr %27, i64 8
  %84 = zext nneg i32 %59 to i64
  %85 = sext i32 %28 to i64
  %86 = sext i32 %25 to i64
  %87 = sext i32 %22 to i64
  %invariant.gep391 = getelementptr %struct.complex, ptr %30, i64 %85
  %88 = zext nneg i32 %.fr293 to i64
  br label %.lr.ph378

.lr.ph378:                                        ; preds = %.lr.ph378.preheader, %.lr.ph378
  %indvars.iv = phi i64 [ 1, %.lr.ph378.preheader ], [ %indvars.iv.next, %.lr.ph378 ]
  %.0.neg377 = phi i32 [ -1, %.lr.ph378.preheader ], [ %.0.neg, %.lr.ph378 ]
  %89 = load i32, ptr %6, align 4, !tbaa !5
  %90 = load i32, ptr %4, align 4, !tbaa !5
  %91 = add i32 %.0.neg377, 1
  %92 = add i32 %91, %90
  %93 = call i32 @llvm.smin.i32(i32 %89, i32 %92)
  store i32 %93, ptr %19, align 4, !tbaa !5
  %94 = load i32, ptr %2, align 4, !tbaa !5
  %95 = load i32, ptr %5, align 4, !tbaa !5
  %96 = trunc nsw i64 %indvars.iv to i32
  %97 = add i32 %96, -1
  %98 = add i32 %97, %94
  %99 = add i32 %98, %93
  %100 = sub i32 %99, %95
  %. = call i32 @llvm.smin.i32(i32 %100, i32 %94)
  store i32 %., ptr %21, align 4, !tbaa !5
  %101 = sext i32 %95 to i64
  %.not310 = icmp slt i64 %indvars.iv, %101
  %102 = sub i32 %91, %94
  %103 = add i32 %102, %95
  %104 = add i32 %103, %.
  %storemerge311 = select i1 %.not310, i32 %104, i32 0
  store i32 %storemerge311, ptr %20, align 4, !tbaa !5
  %105 = mul nsw i64 %indvars.iv, %87
  %gep372 = getelementptr %struct.complex, ptr %invariant.gep371, i64 %105
  %106 = mul nsw i64 %indvars.iv, %86
  %gep374 = getelementptr %struct.complex, ptr %invariant.gep373, i64 %106
  %gep392 = getelementptr %struct.complex, ptr %invariant.gep391, i64 %indvars.iv
  call void @ctprfb_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, ptr noundef nonnull %21, ptr noundef nonnull %3, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef %gep372, ptr noundef nonnull %8, ptr noundef %gep374, ptr noundef nonnull %10, ptr noundef %gep392, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %19) #4
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, %84
  %107 = trunc nsw i64 %indvars.iv.next to i32
  %.0.neg = sub i32 0, %107
  %.not387 = icmp ugt i64 %indvars.iv.next, %88
  br i1 %.not387, label %.loopexit, label %.lr.ph378, !llvm.loop !9

108:                                              ; preds = %83
  %or.cond7 = select i1 %45, i1 %47, i1 false
  br i1 %or.cond7, label %.lr.ph370.preheader, label %130

.lr.ph370.preheader:                              ; preds = %108
  %invariant.gep361 = getelementptr i8, ptr %24, i64 8
  %invariant.gep363 = getelementptr i8, ptr %27, i64 8
  %invariant.gep365 = getelementptr i8, ptr %30, i64 8
  br label %.lr.ph370

.lr.ph370:                                        ; preds = %.lr.ph370.preheader, %.lr.ph370
  %.1.neg369 = phi i32 [ %.1.neg, %.lr.ph370 ], [ -1, %.lr.ph370.preheader ]
  %.1368 = phi i32 [ %129, %.lr.ph370 ], [ 1, %.lr.ph370.preheader ]
  %109 = load i32, ptr %6, align 4, !tbaa !5
  %110 = load i32, ptr %4, align 4, !tbaa !5
  %111 = add i32 %.1.neg369, 1
  %112 = add i32 %111, %110
  %113 = call i32 @llvm.smin.i32(i32 %109, i32 %112)
  store i32 %113, ptr %19, align 4, !tbaa !5
  %114 = load i32, ptr %3, align 4, !tbaa !5
  %115 = load i32, ptr %5, align 4, !tbaa !5
  %116 = add nsw i32 %.1368, -1
  %117 = add i32 %116, %114
  %118 = add i32 %117, %113
  %119 = sub i32 %118, %115
  %.316 = call i32 @llvm.smin.i32(i32 %119, i32 %114)
  store i32 %.316, ptr %21, align 4, !tbaa !5
  %.not305 = icmp slt i32 %.1368, %115
  %120 = sub i32 %111, %114
  %121 = add i32 %120, %115
  %122 = add i32 %121, %.316
  %storemerge306 = select i1 %.not305, i32 %122, i32 0
  store i32 %storemerge306, ptr %20, align 4, !tbaa !5
  %123 = mul nsw i32 %.1368, %22
  %124 = sext i32 %123 to i64
  %gep362 = getelementptr %struct.complex, ptr %invariant.gep361, i64 %124
  %125 = mul nsw i32 %.1368, %25
  %126 = sext i32 %125 to i64
  %gep364 = getelementptr %struct.complex, ptr %invariant.gep363, i64 %126
  %127 = mul nsw i32 %.1368, %28
  %128 = sext i32 %127 to i64
  %gep366 = getelementptr %struct.complex, ptr %invariant.gep365, i64 %128
  call void @ctprfb_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull %21, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef %gep362, ptr noundef nonnull %8, ptr noundef %gep364, ptr noundef nonnull %10, ptr noundef %gep366, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %2) #4
  %129 = add nuw nsw i32 %59, %.1368
  %.1.neg = sub nsw i32 0, %129
  %.not386 = icmp sgt i32 %129, %.fr293
  br i1 %.not386, label %.loopexit, label %.lr.ph370, !llvm.loop !11

130:                                              ; preds = %108
  %or.cond9 = select i1 %35, i1 %47, i1 false
  br i1 %or.cond9, label %131, label %158

131:                                              ; preds = %130
  %132 = add nsw i32 %.fr293, -1
  %133 = urem i32 %132, %59
  %134 = sub nsw i32 %.fr293, %133
  %invariant.gep352 = getelementptr i8, ptr %24, i64 8
  %invariant.gep354 = getelementptr i8, ptr %27, i64 8
  %135 = icmp sgt i32 %134, 0
  br i1 %135, label %.lr.ph360, label %.loopexit

.lr.ph360:                                        ; preds = %131, %.lr.ph360
  %.2358 = phi i32 [ %156, %.lr.ph360 ], [ %134, %131 ]
  %136 = load i32, ptr %6, align 4, !tbaa !5
  %137 = load i32, ptr %4, align 4, !tbaa !5
  %reass.sub380 = sub i32 %137, %.2358
  %138 = add i32 %reass.sub380, 1
  %139 = call i32 @llvm.smin.i32(i32 %136, i32 %138)
  store i32 %139, ptr %19, align 4, !tbaa !5
  %140 = load i32, ptr %2, align 4, !tbaa !5
  %141 = load i32, ptr %5, align 4, !tbaa !5
  %142 = add nsw i32 %.2358, -1
  %143 = add i32 %142, %140
  %144 = add i32 %143, %139
  %145 = sub i32 %144, %141
  %.317 = call i32 @llvm.smin.i32(i32 %145, i32 %140)
  store i32 %.317, ptr %21, align 4, !tbaa !5
  %.not300 = icmp slt i32 %.2358, %141
  %146 = add i32 %.2358, %140
  %reass.sub381 = sub i32 %141, %146
  %147 = add i32 %reass.sub381, 1
  %148 = add i32 %147, %.317
  %storemerge301 = select i1 %.not300, i32 %148, i32 0
  store i32 %storemerge301, ptr %20, align 4, !tbaa !5
  %149 = mul nsw i32 %.2358, %22
  %150 = sext i32 %149 to i64
  %gep353 = getelementptr %struct.complex, ptr %invariant.gep352, i64 %150
  %151 = mul nsw i32 %.2358, %25
  %152 = sext i32 %151 to i64
  %gep355 = getelementptr %struct.complex, ptr %invariant.gep354, i64 %152
  %153 = add nsw i32 %.2358, %28
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds %struct.complex, ptr %30, i64 %154
  call void @ctprfb_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, ptr noundef nonnull %21, ptr noundef nonnull %3, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef %gep353, ptr noundef nonnull %8, ptr noundef %gep355, ptr noundef nonnull %10, ptr noundef %155, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %19) #4
  %156 = sub i32 %.2358, %59
  %157 = icmp sgt i32 %156, 0
  br i1 %157, label %.lr.ph360, label %.loopexit, !llvm.loop !12

158:                                              ; preds = %130
  %or.cond11 = and i1 %45, %46
  br i1 %or.cond11, label %159, label %.loopexit

159:                                              ; preds = %158
  %160 = add nsw i32 %.fr293, -1
  %161 = urem i32 %160, %59
  %162 = sub nsw i32 %.fr293, %161
  %invariant.gep = getelementptr i8, ptr %24, i64 8
  %invariant.gep344 = getelementptr i8, ptr %27, i64 8
  %invariant.gep346 = getelementptr i8, ptr %30, i64 8
  %163 = icmp sgt i32 %162, 0
  br i1 %163, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %159, %.lr.ph
  %.3350 = phi i32 [ %183, %.lr.ph ], [ %162, %159 ]
  %164 = load i32, ptr %6, align 4, !tbaa !5
  %165 = load i32, ptr %4, align 4, !tbaa !5
  %reass.sub = sub i32 %165, %.3350
  %166 = add i32 %reass.sub, 1
  %167 = call i32 @llvm.smin.i32(i32 %164, i32 %166)
  store i32 %167, ptr %19, align 4, !tbaa !5
  %168 = load i32, ptr %3, align 4, !tbaa !5
  %169 = load i32, ptr %5, align 4, !tbaa !5
  %170 = add nsw i32 %.3350, -1
  %171 = add i32 %170, %168
  %172 = add i32 %171, %167
  %173 = sub i32 %172, %169
  %.318 = call i32 @llvm.smin.i32(i32 %173, i32 %168)
  store i32 %.318, ptr %21, align 4, !tbaa !5
  %.not296 = icmp slt i32 %.3350, %169
  %174 = add i32 %.3350, %168
  %reass.sub379 = sub i32 %169, %174
  %175 = add i32 %reass.sub379, 1
  %176 = add i32 %175, %.318
  %storemerge = select i1 %.not296, i32 %176, i32 0
  store i32 %storemerge, ptr %20, align 4, !tbaa !5
  %177 = mul nsw i32 %.3350, %22
  %178 = sext i32 %177 to i64
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %178
  %179 = mul nsw i32 %.3350, %25
  %180 = sext i32 %179 to i64
  %gep345 = getelementptr %struct.complex, ptr %invariant.gep344, i64 %180
  %181 = mul nsw i32 %.3350, %28
  %182 = sext i32 %181 to i64
  %gep347 = getelementptr %struct.complex, ptr %invariant.gep346, i64 %182
  call void @ctprfb_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull %21, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef %gep, ptr noundef nonnull %8, ptr noundef %gep345, ptr noundef nonnull %10, ptr noundef %gep347, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %2) #4
  %183 = sub i32 %.3350, %59
  %184 = icmp sgt i32 %183, 0
  br i1 %184, label %.lr.ph, label %.loopexit, !llvm.loop !13

.loopexit:                                        ; preds = %.lr.ph, %.lr.ph360, %.lr.ph370, %.lr.ph378, %159, %131, %158, %79, %.thread326
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #4
  ret void
}

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

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

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

declare void @ctprfb_(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, 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 i32 @llvm.smin.i32(i32, i32) #3

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.i32(i32, i32) #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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !10}


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