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

; 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.doublecomplex = type { double, double }

@.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 [9 x i8], align 1
@c__0 = external hidden global i32, align 4

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

99:                                               ; preds = %16
  %100 = load ptr, ptr %20, align 8, !tbaa !5
  %101 = load i32, ptr %100, align 4, !tbaa !9
  %102 = load ptr, ptr %22, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  %104 = mul nsw i32 %101, %103
  store i32 %104, ptr %48, align 4, !tbaa !9
  br label %111

105:                                              ; preds = %16
  %106 = load ptr, ptr %19, align 8, !tbaa !5
  %107 = load i32, ptr %106, align 4, !tbaa !9
  %108 = load ptr, ptr %22, align 8, !tbaa !5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  %110 = mul nsw i32 %107, %109
  store i32 %110, ptr %48, align 4, !tbaa !9
  br label %111

111:                                              ; preds = %105, %99
  %112 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 0, ptr %112, align 4, !tbaa !9
  %113 = load i32, ptr %42, align 4, !tbaa !9
  %114 = icmp ne i32 %113, 0
  br i1 %114, label %120, label %115

115:                                              ; preds = %111
  %116 = load i32, ptr %45, align 4, !tbaa !9
  %117 = icmp ne i32 %116, 0
  br i1 %117, label %120, label %118

118:                                              ; preds = %115
  %119 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -1, ptr %119, align 4, !tbaa !9
  br label %215

120:                                              ; preds = %115, %111
  %121 = load i32, ptr %43, align 4, !tbaa !9
  %122 = icmp ne i32 %121, 0
  br i1 %122, label %128, label %123

123:                                              ; preds = %120
  %124 = load i32, ptr %49, align 4, !tbaa !9
  %125 = icmp ne i32 %124, 0
  br i1 %125, label %128, label %126

126:                                              ; preds = %123
  %127 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -2, ptr %127, align 4, !tbaa !9
  br label %214

128:                                              ; preds = %123, %120
  %129 = load ptr, ptr %19, align 8, !tbaa !5
  %130 = load i32, ptr %129, align 4, !tbaa !9
  %131 = icmp slt i32 %130, 0
  br i1 %131, label %132, label %134

132:                                              ; preds = %128
  %133 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -3, ptr %133, align 4, !tbaa !9
  br label %213

134:                                              ; preds = %128
  %135 = load ptr, ptr %20, align 8, !tbaa !5
  %136 = load i32, ptr %135, align 4, !tbaa !9
  %137 = icmp slt i32 %136, 0
  br i1 %137, label %138, label %140

138:                                              ; preds = %134
  %139 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -4, ptr %139, align 4, !tbaa !9
  br label %212

140:                                              ; preds = %134
  %141 = load ptr, ptr %21, align 8, !tbaa !5
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = icmp slt i32 %142, 0
  br i1 %143, label %144, label %146

144:                                              ; preds = %140
  %145 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -5, ptr %145, align 4, !tbaa !9
  br label %211

146:                                              ; preds = %140
  %147 = load ptr, ptr %25, align 8, !tbaa !5
  %148 = load i32, ptr %147, align 4, !tbaa !9
  %149 = load ptr, ptr %21, align 8, !tbaa !5
  %150 = load i32, ptr %149, align 4, !tbaa !9
  %151 = icmp sge i32 1, %150
  br i1 %151, label %152, label %153

152:                                              ; preds = %146
  br label %156

153:                                              ; preds = %146
  %154 = load ptr, ptr %21, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !9
  br label %156

156:                                              ; preds = %153, %152
  %157 = phi i32 [ 1, %152 ], [ %155, %153 ]
  %158 = icmp slt i32 %148, %157
  br i1 %158, label %159, label %161

159:                                              ; preds = %156
  %160 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -9, ptr %160, align 4, !tbaa !9
  br label %210

161:                                              ; preds = %156
  %162 = load ptr, ptr %27, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  %164 = load ptr, ptr %22, align 8, !tbaa !5
  %165 = load i32, ptr %164, align 4, !tbaa !9
  %166 = icmp sge i32 1, %165
  br i1 %166, label %167, label %168

167:                                              ; preds = %161
  br label %171

168:                                              ; preds = %161
  %169 = load ptr, ptr %22, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  br label %171

171:                                              ; preds = %168, %167
  %172 = phi i32 [ 1, %167 ], [ %170, %168 ]
  %173 = icmp slt i32 %163, %172
  br i1 %173, label %174, label %176

174:                                              ; preds = %171
  %175 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -11, ptr %175, align 4, !tbaa !9
  br label %209

176:                                              ; preds = %171
  %177 = load ptr, ptr %29, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = load ptr, ptr %19, align 8, !tbaa !5
  %180 = load i32, ptr %179, align 4, !tbaa !9
  %181 = icmp sge i32 1, %180
  br i1 %181, label %182, label %183

182:                                              ; preds = %176
  br label %186

183:                                              ; preds = %176
  %184 = load ptr, ptr %19, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  br label %186

186:                                              ; preds = %183, %182
  %187 = phi i32 [ 1, %182 ], [ %185, %183 ]
  %188 = icmp slt i32 %178, %187
  br i1 %188, label %189, label %191

189:                                              ; preds = %186
  %190 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -13, ptr %190, align 4, !tbaa !9
  br label %208

191:                                              ; preds = %186
  %192 = load ptr, ptr %31, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  %194 = load i32, ptr %48, align 4, !tbaa !9
  %195 = icmp sge i32 1, %194
  br i1 %195, label %196, label %197

196:                                              ; preds = %191
  br label %199

197:                                              ; preds = %191
  %198 = load i32, ptr %48, align 4, !tbaa !9
  br label %199

199:                                              ; preds = %197, %196
  %200 = phi i32 [ 1, %196 ], [ %198, %197 ]
  %201 = icmp slt i32 %193, %200
  br i1 %201, label %202, label %207

202:                                              ; preds = %199
  %203 = load i32, ptr %50, align 4, !tbaa !9
  %204 = icmp ne i32 %203, 0
  br i1 %204, label %207, label %205

205:                                              ; preds = %202
  %206 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -15, ptr %206, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %205, %202, %199
  br label %208

208:                                              ; preds = %207, %189
  br label %209

209:                                              ; preds = %208, %174
  br label %210

210:                                              ; preds = %209, %159
  br label %211

211:                                              ; preds = %210, %144
  br label %212

212:                                              ; preds = %211, %138
  br label %213

213:                                              ; preds = %212, %132
  br label %214

214:                                              ; preds = %213, %126
  br label %215

215:                                              ; preds = %214, %118
  %216 = load ptr, ptr %32, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = icmp ne i32 %217, 0
  br i1 %218, label %219, label %232

219:                                              ; preds = %215
  %220 = load ptr, ptr %32, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  %222 = sub nsw i32 0, %221
  store i32 %222, ptr %39, align 4, !tbaa !9
  %223 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %39, i32 noundef 8)
  %224 = load i32, ptr %48, align 4, !tbaa !9
  %225 = sitofp i32 %224 to double
  %226 = load ptr, ptr %30, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.doublecomplex, ptr %226, i64 1
  %228 = getelementptr inbounds %struct.doublecomplex, ptr %227, i32 0, i32 0
  store double %225, ptr %228, align 8, !tbaa !11
  %229 = load ptr, ptr %30, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.doublecomplex, ptr %229, i64 1
  %231 = getelementptr inbounds %struct.doublecomplex, ptr %230, i32 0, i32 1
  store double 0.000000e+00, ptr %231, align 8, !tbaa !14
  store i32 1, ptr %52, align 4
  br label %1075

232:                                              ; preds = %215
  %233 = load i32, ptr %50, align 4, !tbaa !9
  %234 = icmp ne i32 %233, 0
  br i1 %234, label %235, label %244

235:                                              ; preds = %232
  %236 = load i32, ptr %48, align 4, !tbaa !9
  %237 = sitofp i32 %236 to double
  %238 = load ptr, ptr %30, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.doublecomplex, ptr %238, i64 1
  %240 = getelementptr inbounds %struct.doublecomplex, ptr %239, i32 0, i32 0
  store double %237, ptr %240, align 8, !tbaa !11
  %241 = load ptr, ptr %30, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.doublecomplex, ptr %241, i64 1
  %243 = getelementptr inbounds %struct.doublecomplex, ptr %242, i32 0, i32 1
  store double 0.000000e+00, ptr %243, align 8, !tbaa !14
  store i32 1, ptr %52, align 4
  br label %1075

244:                                              ; preds = %232
  br label %245

245:                                              ; preds = %244
  %246 = load ptr, ptr %19, align 8, !tbaa !5
  %247 = load i32, ptr %246, align 4, !tbaa !9
  %248 = load ptr, ptr %20, align 8, !tbaa !5
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = icmp sle i32 %247, %249
  br i1 %250, label %251, label %254

251:                                              ; preds = %245
  %252 = load ptr, ptr %19, align 8, !tbaa !5
  %253 = load i32, ptr %252, align 4, !tbaa !9
  br label %257

254:                                              ; preds = %245
  %255 = load ptr, ptr %20, align 8, !tbaa !5
  %256 = load i32, ptr %255, align 4, !tbaa !9
  br label %257

257:                                              ; preds = %254, %251
  %258 = phi i32 [ %253, %251 ], [ %256, %254 ]
  store i32 %258, ptr %39, align 4, !tbaa !9
  %259 = load i32, ptr %39, align 4, !tbaa !9
  %260 = load ptr, ptr %21, align 8, !tbaa !5
  %261 = load i32, ptr %260, align 4, !tbaa !9
  %262 = icmp sle i32 %259, %261
  br i1 %262, label %263, label %265

263:                                              ; preds = %257
  %264 = load i32, ptr %39, align 4, !tbaa !9
  br label %268

265:                                              ; preds = %257
  %266 = load ptr, ptr %21, align 8, !tbaa !5
  %267 = load i32, ptr %266, align 4, !tbaa !9
  br label %268

268:                                              ; preds = %265, %263
  %269 = phi i32 [ %264, %263 ], [ %267, %265 ]
  %270 = icmp eq i32 %269, 0
  br i1 %270, label %271, label %272

271:                                              ; preds = %268
  store i32 1, ptr %52, align 4
  br label %1075

272:                                              ; preds = %268
  %273 = load ptr, ptr %19, align 8, !tbaa !5
  %274 = load i32, ptr %273, align 4, !tbaa !9
  %275 = load ptr, ptr %20, align 8, !tbaa !5
  %276 = load i32, ptr %275, align 4, !tbaa !9
  %277 = icmp sge i32 %274, %276
  br i1 %277, label %278, label %281

278:                                              ; preds = %272
  %279 = load ptr, ptr %19, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  br label %284

281:                                              ; preds = %272
  %282 = load ptr, ptr %20, align 8, !tbaa !5
  %283 = load i32, ptr %282, align 4, !tbaa !9
  br label %284

284:                                              ; preds = %281, %278
  %285 = phi i32 [ %280, %278 ], [ %283, %281 ]
  store i32 %285, ptr %39, align 4, !tbaa !9
  %286 = load ptr, ptr %23, align 8, !tbaa !5
  %287 = load i32, ptr %286, align 4, !tbaa !9
  %288 = load ptr, ptr %21, align 8, !tbaa !5
  %289 = load i32, ptr %288, align 4, !tbaa !9
  %290 = icmp sle i32 %287, %289
  br i1 %290, label %306, label %291

291:                                              ; preds = %284
  %292 = load ptr, ptr %23, align 8, !tbaa !5
  %293 = load i32, ptr %292, align 4, !tbaa !9
  %294 = load i32, ptr %39, align 4, !tbaa !9
  %295 = load ptr, ptr %21, align 8, !tbaa !5
  %296 = load i32, ptr %295, align 4, !tbaa !9
  %297 = icmp sge i32 %294, %296
  br i1 %297, label %298, label %300

298:                                              ; preds = %291
  %299 = load i32, ptr %39, align 4, !tbaa !9
  br label %303

300:                                              ; preds = %291
  %301 = load ptr, ptr %21, align 8, !tbaa !5
  %302 = load i32, ptr %301, align 4, !tbaa !9
  br label %303

303:                                              ; preds = %300, %298
  %304 = phi i32 [ %299, %298 ], [ %302, %300 ]
  %305 = icmp sge i32 %293, %304
  br i1 %305, label %306, label %331

306:                                              ; preds = %303, %284
  %307 = load ptr, ptr %17, align 8, !tbaa !5
  %308 = load ptr, ptr %18, align 8, !tbaa !5
  %309 = load ptr, ptr %19, align 8, !tbaa !5
  %310 = load ptr, ptr %20, align 8, !tbaa !5
  %311 = load ptr, ptr %21, align 8, !tbaa !5
  %312 = load ptr, ptr %22, align 8, !tbaa !5
  %313 = load ptr, ptr %24, align 8, !tbaa !5
  %314 = load i32, ptr %34, align 4, !tbaa !9
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds %struct.doublecomplex, ptr %313, i64 %315
  %317 = load ptr, ptr %25, align 8, !tbaa !5
  %318 = load ptr, ptr %26, align 8, !tbaa !5
  %319 = load i32, ptr %38, align 4, !tbaa !9
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds %struct.doublecomplex, ptr %318, i64 %320
  %322 = load ptr, ptr %27, align 8, !tbaa !5
  %323 = load ptr, ptr %28, align 8, !tbaa !5
  %324 = load i32, ptr %36, align 4, !tbaa !9
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds %struct.doublecomplex, ptr %323, i64 %325
  %327 = load ptr, ptr %29, align 8, !tbaa !5
  %328 = load ptr, ptr %30, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct.doublecomplex, ptr %328, i64 1
  %330 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zgemlqt_(ptr noundef %307, ptr noundef %308, ptr noundef %309, ptr noundef %310, ptr noundef %311, ptr noundef %312, ptr noundef %316, ptr noundef %317, ptr noundef %321, ptr noundef %322, ptr noundef %326, ptr noundef %327, ptr noundef %329, ptr noundef %330)
  store i32 1, ptr %52, align 4
  br label %1075

331:                                              ; preds = %303
  %332 = load i32, ptr %42, align 4, !tbaa !9
  %333 = icmp ne i32 %332, 0
  br i1 %333, label %334, label %520

334:                                              ; preds = %331
  %335 = load i32, ptr %43, align 4, !tbaa !9
  %336 = icmp ne i32 %335, 0
  br i1 %336, label %337, label %520

337:                                              ; preds = %334
  %338 = load ptr, ptr %19, align 8, !tbaa !5
  %339 = load i32, ptr %338, align 4, !tbaa !9
  %340 = load ptr, ptr %21, align 8, !tbaa !5
  %341 = load i32, ptr %340, align 4, !tbaa !9
  %342 = sub nsw i32 %339, %341
  %343 = load ptr, ptr %23, align 8, !tbaa !5
  %344 = load i32, ptr %343, align 4, !tbaa !9
  %345 = load ptr, ptr %21, align 8, !tbaa !5
  %346 = load i32, ptr %345, align 4, !tbaa !9
  %347 = sub nsw i32 %344, %346
  %348 = srem i32 %342, %347
  store i32 %348, ptr %47, align 4, !tbaa !9
  %349 = load ptr, ptr %19, align 8, !tbaa !5
  %350 = load i32, ptr %349, align 4, !tbaa !9
  %351 = load ptr, ptr %21, align 8, !tbaa !5
  %352 = load i32, ptr %351, align 4, !tbaa !9
  %353 = sub nsw i32 %350, %352
  %354 = load ptr, ptr %23, align 8, !tbaa !5
  %355 = load i32, ptr %354, align 4, !tbaa !9
  %356 = load ptr, ptr %21, align 8, !tbaa !5
  %357 = load i32, ptr %356, align 4, !tbaa !9
  %358 = sub nsw i32 %355, %357
  %359 = sdiv i32 %353, %358
  store i32 %359, ptr %51, align 4, !tbaa !9
  %360 = load i32, ptr %47, align 4, !tbaa !9
  %361 = icmp sgt i32 %360, 0
  br i1 %361, label %362, label %407

362:                                              ; preds = %337
  %363 = load ptr, ptr %19, align 8, !tbaa !5
  %364 = load i32, ptr %363, align 4, !tbaa !9
  %365 = load i32, ptr %47, align 4, !tbaa !9
  %366 = sub nsw i32 %364, %365
  %367 = add nsw i32 %366, 1
  store i32 %367, ptr %46, align 4, !tbaa !9
  %368 = load ptr, ptr %20, align 8, !tbaa !5
  %369 = load ptr, ptr %21, align 8, !tbaa !5
  %370 = load ptr, ptr %22, align 8, !tbaa !5
  %371 = load ptr, ptr %24, align 8, !tbaa !5
  %372 = load i32, ptr %46, align 4, !tbaa !9
  %373 = load i32, ptr %33, align 4, !tbaa !9
  %374 = mul nsw i32 %372, %373
  %375 = add nsw i32 %374, 1
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds %struct.doublecomplex, ptr %371, i64 %376
  %378 = load ptr, ptr %25, align 8, !tbaa !5
  %379 = load ptr, ptr %26, align 8, !tbaa !5
  %380 = load i32, ptr %51, align 4, !tbaa !9
  %381 = load ptr, ptr %21, align 8, !tbaa !5
  %382 = load i32, ptr %381, align 4, !tbaa !9
  %383 = mul nsw i32 %380, %382
  %384 = add nsw i32 %383, 1
  %385 = load i32, ptr %37, align 4, !tbaa !9
  %386 = mul nsw i32 %384, %385
  %387 = add nsw i32 %386, 1
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds %struct.doublecomplex, ptr %379, i64 %388
  %390 = load ptr, ptr %27, align 8, !tbaa !5
  %391 = load ptr, ptr %28, align 8, !tbaa !5
  %392 = load i32, ptr %35, align 4, !tbaa !9
  %393 = add nsw i32 %392, 1
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds %struct.doublecomplex, ptr %391, i64 %394
  %396 = load ptr, ptr %29, align 8, !tbaa !5
  %397 = load ptr, ptr %28, align 8, !tbaa !5
  %398 = load i32, ptr %46, align 4, !tbaa !9
  %399 = load i32, ptr %35, align 4, !tbaa !9
  %400 = add nsw i32 %398, %399
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds %struct.doublecomplex, ptr %397, i64 %401
  %403 = load ptr, ptr %29, align 8, !tbaa !5
  %404 = load ptr, ptr %30, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.doublecomplex, ptr %404, i64 1
  %406 = load ptr, ptr %32, align 8, !tbaa !5
  call void @ztpmlqt_(ptr noundef @.str.2, ptr noundef @.str.1, ptr noundef %47, ptr noundef %368, ptr noundef %369, ptr noundef @c__0, ptr noundef %370, ptr noundef %377, ptr noundef %378, ptr noundef %389, ptr noundef %390, ptr noundef %395, ptr noundef %396, ptr noundef %402, ptr noundef %403, ptr noundef %405, ptr noundef %406)
  br label %411

407:                                              ; preds = %337
  %408 = load ptr, ptr %19, align 8, !tbaa !5
  %409 = load i32, ptr %408, align 4, !tbaa !9
  %410 = add nsw i32 %409, 1
  store i32 %410, ptr %46, align 4, !tbaa !9
  br label %411

411:                                              ; preds = %407, %362
  %412 = load ptr, ptr %23, align 8, !tbaa !5
  %413 = load i32, ptr %412, align 4, !tbaa !9
  %414 = add nsw i32 %413, 1
  store i32 %414, ptr %39, align 4, !tbaa !9
  %415 = load ptr, ptr %23, align 8, !tbaa !5
  %416 = load i32, ptr %415, align 4, !tbaa !9
  %417 = load ptr, ptr %21, align 8, !tbaa !5
  %418 = load i32, ptr %417, align 4, !tbaa !9
  %419 = sub nsw i32 %416, %418
  %420 = sub nsw i32 0, %419
  store i32 %420, ptr %40, align 4, !tbaa !9
  %421 = load i32, ptr %46, align 4, !tbaa !9
  %422 = load ptr, ptr %23, align 8, !tbaa !5
  %423 = load i32, ptr %422, align 4, !tbaa !9
  %424 = load ptr, ptr %21, align 8, !tbaa !5
  %425 = load i32, ptr %424, align 4, !tbaa !9
  %426 = sub nsw i32 %423, %425
  %427 = sub nsw i32 %421, %426
  store i32 %427, ptr %44, align 4, !tbaa !9
  br label %428

428:                                              ; preds = %491, %411
  %429 = load i32, ptr %40, align 4, !tbaa !9
  %430 = icmp slt i32 %429, 0
  br i1 %430, label %431, label %436

431:                                              ; preds = %428
  %432 = load i32, ptr %44, align 4, !tbaa !9
  %433 = load i32, ptr %39, align 4, !tbaa !9
  %434 = icmp sge i32 %432, %433
  %435 = zext i1 %434 to i32
  br label %441

436:                                              ; preds = %428
  %437 = load i32, ptr %44, align 4, !tbaa !9
  %438 = load i32, ptr %39, align 4, !tbaa !9
  %439 = icmp sle i32 %437, %438
  %440 = zext i1 %439 to i32
  br label %441

441:                                              ; preds = %436, %431
  %442 = phi i32 [ %435, %431 ], [ %440, %436 ]
  %443 = icmp ne i32 %442, 0
  br i1 %443, label %444, label %495

444:                                              ; preds = %441
  %445 = load i32, ptr %51, align 4, !tbaa !9
  %446 = add nsw i32 %445, -1
  store i32 %446, ptr %51, align 4, !tbaa !9
  %447 = load ptr, ptr %23, align 8, !tbaa !5
  %448 = load i32, ptr %447, align 4, !tbaa !9
  %449 = load ptr, ptr %21, align 8, !tbaa !5
  %450 = load i32, ptr %449, align 4, !tbaa !9
  %451 = sub nsw i32 %448, %450
  store i32 %451, ptr %41, align 4, !tbaa !9
  %452 = load ptr, ptr %20, align 8, !tbaa !5
  %453 = load ptr, ptr %21, align 8, !tbaa !5
  %454 = load ptr, ptr %22, align 8, !tbaa !5
  %455 = load ptr, ptr %24, align 8, !tbaa !5
  %456 = load i32, ptr %44, align 4, !tbaa !9
  %457 = load i32, ptr %33, align 4, !tbaa !9
  %458 = mul nsw i32 %456, %457
  %459 = add nsw i32 %458, 1
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds %struct.doublecomplex, ptr %455, i64 %460
  %462 = load ptr, ptr %25, align 8, !tbaa !5
  %463 = load ptr, ptr %26, align 8, !tbaa !5
  %464 = load i32, ptr %51, align 4, !tbaa !9
  %465 = load ptr, ptr %21, align 8, !tbaa !5
  %466 = load i32, ptr %465, align 4, !tbaa !9
  %467 = mul nsw i32 %464, %466
  %468 = add nsw i32 %467, 1
  %469 = load i32, ptr %37, align 4, !tbaa !9
  %470 = mul nsw i32 %468, %469
  %471 = add nsw i32 %470, 1
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds %struct.doublecomplex, ptr %463, i64 %472
  %474 = load ptr, ptr %27, align 8, !tbaa !5
  %475 = load ptr, ptr %28, align 8, !tbaa !5
  %476 = load i32, ptr %35, align 4, !tbaa !9
  %477 = add nsw i32 %476, 1
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds %struct.doublecomplex, ptr %475, i64 %478
  %480 = load ptr, ptr %29, align 8, !tbaa !5
  %481 = load ptr, ptr %28, align 8, !tbaa !5
  %482 = load i32, ptr %44, align 4, !tbaa !9
  %483 = load i32, ptr %35, align 4, !tbaa !9
  %484 = add nsw i32 %482, %483
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds %struct.doublecomplex, ptr %481, i64 %485
  %487 = load ptr, ptr %29, align 8, !tbaa !5
  %488 = load ptr, ptr %30, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct.doublecomplex, ptr %488, i64 1
  %490 = load ptr, ptr %32, align 8, !tbaa !5
  call void @ztpmlqt_(ptr noundef @.str.2, ptr noundef @.str.1, ptr noundef %41, ptr noundef %452, ptr noundef %453, ptr noundef @c__0, ptr noundef %454, ptr noundef %461, ptr noundef %462, ptr noundef %473, ptr noundef %474, ptr noundef %479, ptr noundef %480, ptr noundef %486, ptr noundef %487, ptr noundef %489, ptr noundef %490)
  br label %491

491:                                              ; preds = %444
  %492 = load i32, ptr %40, align 4, !tbaa !9
  %493 = load i32, ptr %44, align 4, !tbaa !9
  %494 = add nsw i32 %493, %492
  store i32 %494, ptr %44, align 4, !tbaa !9
  br label %428, !llvm.loop !15

495:                                              ; preds = %441
  %496 = load ptr, ptr %23, align 8, !tbaa !5
  %497 = load ptr, ptr %20, align 8, !tbaa !5
  %498 = load ptr, ptr %21, align 8, !tbaa !5
  %499 = load ptr, ptr %22, align 8, !tbaa !5
  %500 = load ptr, ptr %24, align 8, !tbaa !5
  %501 = load i32, ptr %33, align 4, !tbaa !9
  %502 = add nsw i32 %501, 1
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds %struct.doublecomplex, ptr %500, i64 %503
  %505 = load ptr, ptr %25, align 8, !tbaa !5
  %506 = load ptr, ptr %26, align 8, !tbaa !5
  %507 = load i32, ptr %38, align 4, !tbaa !9
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds %struct.doublecomplex, ptr %506, i64 %508
  %510 = load ptr, ptr %27, align 8, !tbaa !5
  %511 = load ptr, ptr %28, align 8, !tbaa !5
  %512 = load i32, ptr %35, align 4, !tbaa !9
  %513 = add nsw i32 %512, 1
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds %struct.doublecomplex, ptr %511, i64 %514
  %516 = load ptr, ptr %29, align 8, !tbaa !5
  %517 = load ptr, ptr %30, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.doublecomplex, ptr %517, i64 1
  %519 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zgemlqt_(ptr noundef @.str.2, ptr noundef @.str.1, ptr noundef %496, ptr noundef %497, ptr noundef %498, ptr noundef %499, ptr noundef %504, ptr noundef %505, ptr noundef %509, ptr noundef %510, ptr noundef %515, ptr noundef %516, ptr noundef %518, ptr noundef %519)
  br label %1066

520:                                              ; preds = %334, %331
  %521 = load i32, ptr %42, align 4, !tbaa !9
  %522 = icmp ne i32 %521, 0
  br i1 %522, label %523, label %695

523:                                              ; preds = %520
  %524 = load i32, ptr %49, align 4, !tbaa !9
  %525 = icmp ne i32 %524, 0
  br i1 %525, label %526, label %695

526:                                              ; preds = %523
  %527 = load ptr, ptr %19, align 8, !tbaa !5
  %528 = load i32, ptr %527, align 4, !tbaa !9
  %529 = load ptr, ptr %21, align 8, !tbaa !5
  %530 = load i32, ptr %529, align 4, !tbaa !9
  %531 = sub nsw i32 %528, %530
  %532 = load ptr, ptr %23, align 8, !tbaa !5
  %533 = load i32, ptr %532, align 4, !tbaa !9
  %534 = load ptr, ptr %21, align 8, !tbaa !5
  %535 = load i32, ptr %534, align 4, !tbaa !9
  %536 = sub nsw i32 %533, %535
  %537 = srem i32 %531, %536
  store i32 %537, ptr %47, align 4, !tbaa !9
  %538 = load ptr, ptr %19, align 8, !tbaa !5
  %539 = load i32, ptr %538, align 4, !tbaa !9
  %540 = load i32, ptr %47, align 4, !tbaa !9
  %541 = sub nsw i32 %539, %540
  %542 = add nsw i32 %541, 1
  store i32 %542, ptr %46, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  %543 = load ptr, ptr %23, align 8, !tbaa !5
  %544 = load ptr, ptr %20, align 8, !tbaa !5
  %545 = load ptr, ptr %21, align 8, !tbaa !5
  %546 = load ptr, ptr %22, align 8, !tbaa !5
  %547 = load ptr, ptr %24, align 8, !tbaa !5
  %548 = load i32, ptr %33, align 4, !tbaa !9
  %549 = add nsw i32 %548, 1
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds %struct.doublecomplex, ptr %547, i64 %550
  %552 = load ptr, ptr %25, align 8, !tbaa !5
  %553 = load ptr, ptr %26, align 8, !tbaa !5
  %554 = load i32, ptr %38, align 4, !tbaa !9
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds %struct.doublecomplex, ptr %553, i64 %555
  %557 = load ptr, ptr %27, align 8, !tbaa !5
  %558 = load ptr, ptr %28, align 8, !tbaa !5
  %559 = load i32, ptr %35, align 4, !tbaa !9
  %560 = add nsw i32 %559, 1
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds %struct.doublecomplex, ptr %558, i64 %561
  %563 = load ptr, ptr %29, align 8, !tbaa !5
  %564 = load ptr, ptr %30, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.doublecomplex, ptr %564, i64 1
  %566 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zgemlqt_(ptr noundef @.str.2, ptr noundef @.str, ptr noundef %543, ptr noundef %544, ptr noundef %545, ptr noundef %546, ptr noundef %551, ptr noundef %552, ptr noundef %556, ptr noundef %557, ptr noundef %562, ptr noundef %563, ptr noundef %565, ptr noundef %566)
  %567 = load i32, ptr %46, align 4, !tbaa !9
  %568 = load ptr, ptr %23, align 8, !tbaa !5
  %569 = load i32, ptr %568, align 4, !tbaa !9
  %570 = sub nsw i32 %567, %569
  %571 = load ptr, ptr %21, align 8, !tbaa !5
  %572 = load i32, ptr %571, align 4, !tbaa !9
  %573 = add nsw i32 %570, %572
  store i32 %573, ptr %40, align 4, !tbaa !9
  %574 = load ptr, ptr %23, align 8, !tbaa !5
  %575 = load i32, ptr %574, align 4, !tbaa !9
  %576 = load ptr, ptr %21, align 8, !tbaa !5
  %577 = load i32, ptr %576, align 4, !tbaa !9
  %578 = sub nsw i32 %575, %577
  store i32 %578, ptr %39, align 4, !tbaa !9
  %579 = load ptr, ptr %23, align 8, !tbaa !5
  %580 = load i32, ptr %579, align 4, !tbaa !9
  %581 = add nsw i32 %580, 1
  store i32 %581, ptr %44, align 4, !tbaa !9
  br label %582

582:                                              ; preds = %645, %526
  %583 = load i32, ptr %39, align 4, !tbaa !9
  %584 = icmp slt i32 %583, 0
  br i1 %584, label %585, label %590

585:                                              ; preds = %582
  %586 = load i32, ptr %44, align 4, !tbaa !9
  %587 = load i32, ptr %40, align 4, !tbaa !9
  %588 = icmp sge i32 %586, %587
  %589 = zext i1 %588 to i32
  br label %595

590:                                              ; preds = %582
  %591 = load i32, ptr %44, align 4, !tbaa !9
  %592 = load i32, ptr %40, align 4, !tbaa !9
  %593 = icmp sle i32 %591, %592
  %594 = zext i1 %593 to i32
  br label %595

595:                                              ; preds = %590, %585
  %596 = phi i32 [ %589, %585 ], [ %594, %590 ]
  %597 = icmp ne i32 %596, 0
  br i1 %597, label %598, label %649

598:                                              ; preds = %595
  %599 = load ptr, ptr %23, align 8, !tbaa !5
  %600 = load i32, ptr %599, align 4, !tbaa !9
  %601 = load ptr, ptr %21, align 8, !tbaa !5
  %602 = load i32, ptr %601, align 4, !tbaa !9
  %603 = sub nsw i32 %600, %602
  store i32 %603, ptr %41, align 4, !tbaa !9
  %604 = load ptr, ptr %20, align 8, !tbaa !5
  %605 = load ptr, ptr %21, align 8, !tbaa !5
  %606 = load ptr, ptr %22, align 8, !tbaa !5
  %607 = load ptr, ptr %24, align 8, !tbaa !5
  %608 = load i32, ptr %44, align 4, !tbaa !9
  %609 = load i32, ptr %33, align 4, !tbaa !9
  %610 = mul nsw i32 %608, %609
  %611 = add nsw i32 %610, 1
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds %struct.doublecomplex, ptr %607, i64 %612
  %614 = load ptr, ptr %25, align 8, !tbaa !5
  %615 = load ptr, ptr %26, align 8, !tbaa !5
  %616 = load i32, ptr %51, align 4, !tbaa !9
  %617 = load ptr, ptr %21, align 8, !tbaa !5
  %618 = load i32, ptr %617, align 4, !tbaa !9
  %619 = mul nsw i32 %616, %618
  %620 = add nsw i32 %619, 1
  %621 = load i32, ptr %37, align 4, !tbaa !9
  %622 = mul nsw i32 %620, %621
  %623 = add nsw i32 %622, 1
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds %struct.doublecomplex, ptr %615, i64 %624
  %626 = load ptr, ptr %27, align 8, !tbaa !5
  %627 = load ptr, ptr %28, align 8, !tbaa !5
  %628 = load i32, ptr %35, align 4, !tbaa !9
  %629 = add nsw i32 %628, 1
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds %struct.doublecomplex, ptr %627, i64 %630
  %632 = load ptr, ptr %29, align 8, !tbaa !5
  %633 = load ptr, ptr %28, align 8, !tbaa !5
  %634 = load i32, ptr %44, align 4, !tbaa !9
  %635 = load i32, ptr %35, align 4, !tbaa !9
  %636 = add nsw i32 %634, %635
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds %struct.doublecomplex, ptr %633, i64 %637
  %639 = load ptr, ptr %29, align 8, !tbaa !5
  %640 = load ptr, ptr %30, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.doublecomplex, ptr %640, i64 1
  %642 = load ptr, ptr %32, align 8, !tbaa !5
  call void @ztpmlqt_(ptr noundef @.str.2, ptr noundef @.str, ptr noundef %41, ptr noundef %604, ptr noundef %605, ptr noundef @c__0, ptr noundef %606, ptr noundef %613, ptr noundef %614, ptr noundef %625, ptr noundef %626, ptr noundef %631, ptr noundef %632, ptr noundef %638, ptr noundef %639, ptr noundef %641, ptr noundef %642)
  %643 = load i32, ptr %51, align 4, !tbaa !9
  %644 = add nsw i32 %643, 1
  store i32 %644, ptr %51, align 4, !tbaa !9
  br label %645

645:                                              ; preds = %598
  %646 = load i32, ptr %39, align 4, !tbaa !9
  %647 = load i32, ptr %44, align 4, !tbaa !9
  %648 = add nsw i32 %647, %646
  store i32 %648, ptr %44, align 4, !tbaa !9
  br label %582, !llvm.loop !17

649:                                              ; preds = %595
  %650 = load i32, ptr %46, align 4, !tbaa !9
  %651 = load ptr, ptr %19, align 8, !tbaa !5
  %652 = load i32, ptr %651, align 4, !tbaa !9
  %653 = icmp sle i32 %650, %652
  br i1 %653, label %654, label %694

654:                                              ; preds = %649
  %655 = load ptr, ptr %20, align 8, !tbaa !5
  %656 = load ptr, ptr %21, align 8, !tbaa !5
  %657 = load ptr, ptr %22, align 8, !tbaa !5
  %658 = load ptr, ptr %24, align 8, !tbaa !5
  %659 = load i32, ptr %46, align 4, !tbaa !9
  %660 = load i32, ptr %33, align 4, !tbaa !9
  %661 = mul nsw i32 %659, %660
  %662 = add nsw i32 %661, 1
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds %struct.doublecomplex, ptr %658, i64 %663
  %665 = load ptr, ptr %25, align 8, !tbaa !5
  %666 = load ptr, ptr %26, align 8, !tbaa !5
  %667 = load i32, ptr %51, align 4, !tbaa !9
  %668 = load ptr, ptr %21, align 8, !tbaa !5
  %669 = load i32, ptr %668, align 4, !tbaa !9
  %670 = mul nsw i32 %667, %669
  %671 = add nsw i32 %670, 1
  %672 = load i32, ptr %37, align 4, !tbaa !9
  %673 = mul nsw i32 %671, %672
  %674 = add nsw i32 %673, 1
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds %struct.doublecomplex, ptr %666, i64 %675
  %677 = load ptr, ptr %27, align 8, !tbaa !5
  %678 = load ptr, ptr %28, align 8, !tbaa !5
  %679 = load i32, ptr %35, align 4, !tbaa !9
  %680 = add nsw i32 %679, 1
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds %struct.doublecomplex, ptr %678, i64 %681
  %683 = load ptr, ptr %29, align 8, !tbaa !5
  %684 = load ptr, ptr %28, align 8, !tbaa !5
  %685 = load i32, ptr %46, align 4, !tbaa !9
  %686 = load i32, ptr %35, align 4, !tbaa !9
  %687 = add nsw i32 %685, %686
  %688 = sext i32 %687 to i64
  %689 = getelementptr inbounds %struct.doublecomplex, ptr %684, i64 %688
  %690 = load ptr, ptr %29, align 8, !tbaa !5
  %691 = load ptr, ptr %30, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.doublecomplex, ptr %691, i64 1
  %693 = load ptr, ptr %32, align 8, !tbaa !5
  call void @ztpmlqt_(ptr noundef @.str.2, ptr noundef @.str, ptr noundef %47, ptr noundef %655, ptr noundef %656, ptr noundef @c__0, ptr noundef %657, ptr noundef %664, ptr noundef %665, ptr noundef %676, ptr noundef %677, ptr noundef %682, ptr noundef %683, ptr noundef %689, ptr noundef %690, ptr noundef %692, ptr noundef %693)
  br label %694

694:                                              ; preds = %654, %649
  br label %1065

695:                                              ; preds = %523, %520
  %696 = load i32, ptr %45, align 4, !tbaa !9
  %697 = icmp ne i32 %696, 0
  br i1 %697, label %698, label %886

698:                                              ; preds = %695
  %699 = load i32, ptr %49, align 4, !tbaa !9
  %700 = icmp ne i32 %699, 0
  br i1 %700, label %701, label %886

701:                                              ; preds = %698
  %702 = load ptr, ptr %20, align 8, !tbaa !5
  %703 = load i32, ptr %702, align 4, !tbaa !9
  %704 = load ptr, ptr %21, align 8, !tbaa !5
  %705 = load i32, ptr %704, align 4, !tbaa !9
  %706 = sub nsw i32 %703, %705
  %707 = load ptr, ptr %23, align 8, !tbaa !5
  %708 = load i32, ptr %707, align 4, !tbaa !9
  %709 = load ptr, ptr %21, align 8, !tbaa !5
  %710 = load i32, ptr %709, align 4, !tbaa !9
  %711 = sub nsw i32 %708, %710
  %712 = srem i32 %706, %711
  store i32 %712, ptr %47, align 4, !tbaa !9
  %713 = load ptr, ptr %20, align 8, !tbaa !5
  %714 = load i32, ptr %713, align 4, !tbaa !9
  %715 = load ptr, ptr %21, align 8, !tbaa !5
  %716 = load i32, ptr %715, align 4, !tbaa !9
  %717 = sub nsw i32 %714, %716
  %718 = load ptr, ptr %23, align 8, !tbaa !5
  %719 = load i32, ptr %718, align 4, !tbaa !9
  %720 = load ptr, ptr %21, align 8, !tbaa !5
  %721 = load i32, ptr %720, align 4, !tbaa !9
  %722 = sub nsw i32 %719, %721
  %723 = sdiv i32 %717, %722
  store i32 %723, ptr %51, align 4, !tbaa !9
  %724 = load i32, ptr %47, align 4, !tbaa !9
  %725 = icmp sgt i32 %724, 0
  br i1 %725, label %726, label %772

726:                                              ; preds = %701
  %727 = load ptr, ptr %20, align 8, !tbaa !5
  %728 = load i32, ptr %727, align 4, !tbaa !9
  %729 = load i32, ptr %47, align 4, !tbaa !9
  %730 = sub nsw i32 %728, %729
  %731 = add nsw i32 %730, 1
  store i32 %731, ptr %46, align 4, !tbaa !9
  %732 = load ptr, ptr %19, align 8, !tbaa !5
  %733 = load ptr, ptr %21, align 8, !tbaa !5
  %734 = load ptr, ptr %22, align 8, !tbaa !5
  %735 = load ptr, ptr %24, align 8, !tbaa !5
  %736 = load i32, ptr %46, align 4, !tbaa !9
  %737 = load i32, ptr %33, align 4, !tbaa !9
  %738 = mul nsw i32 %736, %737
  %739 = add nsw i32 %738, 1
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds %struct.doublecomplex, ptr %735, i64 %740
  %742 = load ptr, ptr %25, align 8, !tbaa !5
  %743 = load ptr, ptr %26, align 8, !tbaa !5
  %744 = load i32, ptr %51, align 4, !tbaa !9
  %745 = load ptr, ptr %21, align 8, !tbaa !5
  %746 = load i32, ptr %745, align 4, !tbaa !9
  %747 = mul nsw i32 %744, %746
  %748 = add nsw i32 %747, 1
  %749 = load i32, ptr %37, align 4, !tbaa !9
  %750 = mul nsw i32 %748, %749
  %751 = add nsw i32 %750, 1
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds %struct.doublecomplex, ptr %743, i64 %752
  %754 = load ptr, ptr %27, align 8, !tbaa !5
  %755 = load ptr, ptr %28, align 8, !tbaa !5
  %756 = load i32, ptr %35, align 4, !tbaa !9
  %757 = add nsw i32 %756, 1
  %758 = sext i32 %757 to i64
  %759 = getelementptr inbounds %struct.doublecomplex, ptr %755, i64 %758
  %760 = load ptr, ptr %29, align 8, !tbaa !5
  %761 = load ptr, ptr %28, align 8, !tbaa !5
  %762 = load i32, ptr %46, align 4, !tbaa !9
  %763 = load i32, ptr %35, align 4, !tbaa !9
  %764 = mul nsw i32 %762, %763
  %765 = add nsw i32 %764, 1
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds %struct.doublecomplex, ptr %761, i64 %766
  %768 = load ptr, ptr %29, align 8, !tbaa !5
  %769 = load ptr, ptr %30, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.doublecomplex, ptr %769, i64 1
  %771 = load ptr, ptr %32, align 8, !tbaa !5
  call void @ztpmlqt_(ptr noundef @.str.3, ptr noundef @.str, ptr noundef %732, ptr noundef %47, ptr noundef %733, ptr noundef @c__0, ptr noundef %734, ptr noundef %741, ptr noundef %742, ptr noundef %753, ptr noundef %754, ptr noundef %759, ptr noundef %760, ptr noundef %767, ptr noundef %768, ptr noundef %770, ptr noundef %771)
  br label %776

772:                                              ; preds = %701
  %773 = load ptr, ptr %20, align 8, !tbaa !5
  %774 = load i32, ptr %773, align 4, !tbaa !9
  %775 = add nsw i32 %774, 1
  store i32 %775, ptr %46, align 4, !tbaa !9
  br label %776

776:                                              ; preds = %772, %726
  %777 = load ptr, ptr %23, align 8, !tbaa !5
  %778 = load i32, ptr %777, align 4, !tbaa !9
  %779 = add nsw i32 %778, 1
  store i32 %779, ptr %39, align 4, !tbaa !9
  %780 = load ptr, ptr %23, align 8, !tbaa !5
  %781 = load i32, ptr %780, align 4, !tbaa !9
  %782 = load ptr, ptr %21, align 8, !tbaa !5
  %783 = load i32, ptr %782, align 4, !tbaa !9
  %784 = sub nsw i32 %781, %783
  %785 = sub nsw i32 0, %784
  store i32 %785, ptr %40, align 4, !tbaa !9
  %786 = load i32, ptr %46, align 4, !tbaa !9
  %787 = load ptr, ptr %23, align 8, !tbaa !5
  %788 = load i32, ptr %787, align 4, !tbaa !9
  %789 = load ptr, ptr %21, align 8, !tbaa !5
  %790 = load i32, ptr %789, align 4, !tbaa !9
  %791 = sub nsw i32 %788, %790
  %792 = sub nsw i32 %786, %791
  store i32 %792, ptr %44, align 4, !tbaa !9
  br label %793

793:                                              ; preds = %857, %776
  %794 = load i32, ptr %40, align 4, !tbaa !9
  %795 = icmp slt i32 %794, 0
  br i1 %795, label %796, label %801

796:                                              ; preds = %793
  %797 = load i32, ptr %44, align 4, !tbaa !9
  %798 = load i32, ptr %39, align 4, !tbaa !9
  %799 = icmp sge i32 %797, %798
  %800 = zext i1 %799 to i32
  br label %806

801:                                              ; preds = %793
  %802 = load i32, ptr %44, align 4, !tbaa !9
  %803 = load i32, ptr %39, align 4, !tbaa !9
  %804 = icmp sle i32 %802, %803
  %805 = zext i1 %804 to i32
  br label %806

806:                                              ; preds = %801, %796
  %807 = phi i32 [ %800, %796 ], [ %805, %801 ]
  %808 = icmp ne i32 %807, 0
  br i1 %808, label %809, label %861

809:                                              ; preds = %806
  %810 = load i32, ptr %51, align 4, !tbaa !9
  %811 = add nsw i32 %810, -1
  store i32 %811, ptr %51, align 4, !tbaa !9
  %812 = load ptr, ptr %23, align 8, !tbaa !5
  %813 = load i32, ptr %812, align 4, !tbaa !9
  %814 = load ptr, ptr %21, align 8, !tbaa !5
  %815 = load i32, ptr %814, align 4, !tbaa !9
  %816 = sub nsw i32 %813, %815
  store i32 %816, ptr %41, align 4, !tbaa !9
  %817 = load ptr, ptr %19, align 8, !tbaa !5
  %818 = load ptr, ptr %21, align 8, !tbaa !5
  %819 = load ptr, ptr %22, align 8, !tbaa !5
  %820 = load ptr, ptr %24, align 8, !tbaa !5
  %821 = load i32, ptr %44, align 4, !tbaa !9
  %822 = load i32, ptr %33, align 4, !tbaa !9
  %823 = mul nsw i32 %821, %822
  %824 = add nsw i32 %823, 1
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds %struct.doublecomplex, ptr %820, i64 %825
  %827 = load ptr, ptr %25, align 8, !tbaa !5
  %828 = load ptr, ptr %26, align 8, !tbaa !5
  %829 = load i32, ptr %51, align 4, !tbaa !9
  %830 = load ptr, ptr %21, align 8, !tbaa !5
  %831 = load i32, ptr %830, align 4, !tbaa !9
  %832 = mul nsw i32 %829, %831
  %833 = add nsw i32 %832, 1
  %834 = load i32, ptr %37, align 4, !tbaa !9
  %835 = mul nsw i32 %833, %834
  %836 = add nsw i32 %835, 1
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds %struct.doublecomplex, ptr %828, i64 %837
  %839 = load ptr, ptr %27, align 8, !tbaa !5
  %840 = load ptr, ptr %28, align 8, !tbaa !5
  %841 = load i32, ptr %35, align 4, !tbaa !9
  %842 = add nsw i32 %841, 1
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds %struct.doublecomplex, ptr %840, i64 %843
  %845 = load ptr, ptr %29, align 8, !tbaa !5
  %846 = load ptr, ptr %28, align 8, !tbaa !5
  %847 = load i32, ptr %44, align 4, !tbaa !9
  %848 = load i32, ptr %35, align 4, !tbaa !9
  %849 = mul nsw i32 %847, %848
  %850 = add nsw i32 %849, 1
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds %struct.doublecomplex, ptr %846, i64 %851
  %853 = load ptr, ptr %29, align 8, !tbaa !5
  %854 = load ptr, ptr %30, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.doublecomplex, ptr %854, i64 1
  %856 = load ptr, ptr %32, align 8, !tbaa !5
  call void @ztpmlqt_(ptr noundef @.str.3, ptr noundef @.str, ptr noundef %817, ptr noundef %41, ptr noundef %818, ptr noundef @c__0, ptr noundef %819, ptr noundef %826, ptr noundef %827, ptr noundef %838, ptr noundef %839, ptr noundef %844, ptr noundef %845, ptr noundef %852, ptr noundef %853, ptr noundef %855, ptr noundef %856)
  br label %857

857:                                              ; preds = %809
  %858 = load i32, ptr %40, align 4, !tbaa !9
  %859 = load i32, ptr %44, align 4, !tbaa !9
  %860 = add nsw i32 %859, %858
  store i32 %860, ptr %44, align 4, !tbaa !9
  br label %793, !llvm.loop !18

861:                                              ; preds = %806
  %862 = load ptr, ptr %19, align 8, !tbaa !5
  %863 = load ptr, ptr %23, align 8, !tbaa !5
  %864 = load ptr, ptr %21, align 8, !tbaa !5
  %865 = load ptr, ptr %22, align 8, !tbaa !5
  %866 = load ptr, ptr %24, align 8, !tbaa !5
  %867 = load i32, ptr %33, align 4, !tbaa !9
  %868 = add nsw i32 %867, 1
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds %struct.doublecomplex, ptr %866, i64 %869
  %871 = load ptr, ptr %25, align 8, !tbaa !5
  %872 = load ptr, ptr %26, align 8, !tbaa !5
  %873 = load i32, ptr %38, align 4, !tbaa !9
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds %struct.doublecomplex, ptr %872, i64 %874
  %876 = load ptr, ptr %27, align 8, !tbaa !5
  %877 = load ptr, ptr %28, align 8, !tbaa !5
  %878 = load i32, ptr %35, align 4, !tbaa !9
  %879 = add nsw i32 %878, 1
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds %struct.doublecomplex, ptr %877, i64 %880
  %882 = load ptr, ptr %29, align 8, !tbaa !5
  %883 = load ptr, ptr %30, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.doublecomplex, ptr %883, i64 1
  %885 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zgemlqt_(ptr noundef @.str.3, ptr noundef @.str, ptr noundef %862, ptr noundef %863, ptr noundef %864, ptr noundef %865, ptr noundef %870, ptr noundef %871, ptr noundef %875, ptr noundef %876, ptr noundef %881, ptr noundef %882, ptr noundef %884, ptr noundef %885)
  br label %1064

886:                                              ; preds = %698, %695
  %887 = load i32, ptr %45, align 4, !tbaa !9
  %888 = icmp ne i32 %887, 0
  br i1 %888, label %889, label %1063

889:                                              ; preds = %886
  %890 = load i32, ptr %43, align 4, !tbaa !9
  %891 = icmp ne i32 %890, 0
  br i1 %891, label %892, label %1063

892:                                              ; preds = %889
  %893 = load ptr, ptr %20, align 8, !tbaa !5
  %894 = load i32, ptr %893, align 4, !tbaa !9
  %895 = load ptr, ptr %21, align 8, !tbaa !5
  %896 = load i32, ptr %895, align 4, !tbaa !9
  %897 = sub nsw i32 %894, %896
  %898 = load ptr, ptr %23, align 8, !tbaa !5
  %899 = load i32, ptr %898, align 4, !tbaa !9
  %900 = load ptr, ptr %21, align 8, !tbaa !5
  %901 = load i32, ptr %900, align 4, !tbaa !9
  %902 = sub nsw i32 %899, %901
  %903 = srem i32 %897, %902
  store i32 %903, ptr %47, align 4, !tbaa !9
  %904 = load ptr, ptr %20, align 8, !tbaa !5
  %905 = load i32, ptr %904, align 4, !tbaa !9
  %906 = load i32, ptr %47, align 4, !tbaa !9
  %907 = sub nsw i32 %905, %906
  %908 = add nsw i32 %907, 1
  store i32 %908, ptr %46, align 4, !tbaa !9
  %909 = load ptr, ptr %19, align 8, !tbaa !5
  %910 = load ptr, ptr %23, align 8, !tbaa !5
  %911 = load ptr, ptr %21, align 8, !tbaa !5
  %912 = load ptr, ptr %22, align 8, !tbaa !5
  %913 = load ptr, ptr %24, align 8, !tbaa !5
  %914 = load i32, ptr %33, align 4, !tbaa !9
  %915 = add nsw i32 %914, 1
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds %struct.doublecomplex, ptr %913, i64 %916
  %918 = load ptr, ptr %25, align 8, !tbaa !5
  %919 = load ptr, ptr %26, align 8, !tbaa !5
  %920 = load i32, ptr %38, align 4, !tbaa !9
  %921 = sext i32 %920 to i64
  %922 = getelementptr inbounds %struct.doublecomplex, ptr %919, i64 %921
  %923 = load ptr, ptr %27, align 8, !tbaa !5
  %924 = load ptr, ptr %28, align 8, !tbaa !5
  %925 = load i32, ptr %35, align 4, !tbaa !9
  %926 = add nsw i32 %925, 1
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds %struct.doublecomplex, ptr %924, i64 %927
  %929 = load ptr, ptr %29, align 8, !tbaa !5
  %930 = load ptr, ptr %30, align 8, !tbaa !5
  %931 = getelementptr inbounds %struct.doublecomplex, ptr %930, i64 1
  %932 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zgemlqt_(ptr noundef @.str.3, ptr noundef @.str.1, ptr noundef %909, ptr noundef %910, ptr noundef %911, ptr noundef %912, ptr noundef %917, ptr noundef %918, ptr noundef %922, ptr noundef %923, ptr noundef %928, ptr noundef %929, ptr noundef %931, ptr noundef %932)
  store i32 1, ptr %51, align 4, !tbaa !9
  %933 = load i32, ptr %46, align 4, !tbaa !9
  %934 = load ptr, ptr %23, align 8, !tbaa !5
  %935 = load i32, ptr %934, align 4, !tbaa !9
  %936 = sub nsw i32 %933, %935
  %937 = load ptr, ptr %21, align 8, !tbaa !5
  %938 = load i32, ptr %937, align 4, !tbaa !9
  %939 = add nsw i32 %936, %938
  store i32 %939, ptr %40, align 4, !tbaa !9
  %940 = load ptr, ptr %23, align 8, !tbaa !5
  %941 = load i32, ptr %940, align 4, !tbaa !9
  %942 = load ptr, ptr %21, align 8, !tbaa !5
  %943 = load i32, ptr %942, align 4, !tbaa !9
  %944 = sub nsw i32 %941, %943
  store i32 %944, ptr %39, align 4, !tbaa !9
  %945 = load ptr, ptr %23, align 8, !tbaa !5
  %946 = load i32, ptr %945, align 4, !tbaa !9
  %947 = add nsw i32 %946, 1
  store i32 %947, ptr %44, align 4, !tbaa !9
  br label %948

948:                                              ; preds = %1012, %892
  %949 = load i32, ptr %39, align 4, !tbaa !9
  %950 = icmp slt i32 %949, 0
  br i1 %950, label %951, label %956

951:                                              ; preds = %948
  %952 = load i32, ptr %44, align 4, !tbaa !9
  %953 = load i32, ptr %40, align 4, !tbaa !9
  %954 = icmp sge i32 %952, %953
  %955 = zext i1 %954 to i32
  br label %961

956:                                              ; preds = %948
  %957 = load i32, ptr %44, align 4, !tbaa !9
  %958 = load i32, ptr %40, align 4, !tbaa !9
  %959 = icmp sle i32 %957, %958
  %960 = zext i1 %959 to i32
  br label %961

961:                                              ; preds = %956, %951
  %962 = phi i32 [ %955, %951 ], [ %960, %956 ]
  %963 = icmp ne i32 %962, 0
  br i1 %963, label %964, label %1016

964:                                              ; preds = %961
  %965 = load ptr, ptr %23, align 8, !tbaa !5
  %966 = load i32, ptr %965, align 4, !tbaa !9
  %967 = load ptr, ptr %21, align 8, !tbaa !5
  %968 = load i32, ptr %967, align 4, !tbaa !9
  %969 = sub nsw i32 %966, %968
  store i32 %969, ptr %41, align 4, !tbaa !9
  %970 = load ptr, ptr %19, align 8, !tbaa !5
  %971 = load ptr, ptr %21, align 8, !tbaa !5
  %972 = load ptr, ptr %22, align 8, !tbaa !5
  %973 = load ptr, ptr %24, align 8, !tbaa !5
  %974 = load i32, ptr %44, align 4, !tbaa !9
  %975 = load i32, ptr %33, align 4, !tbaa !9
  %976 = mul nsw i32 %974, %975
  %977 = add nsw i32 %976, 1
  %978 = sext i32 %977 to i64
  %979 = getelementptr inbounds %struct.doublecomplex, ptr %973, i64 %978
  %980 = load ptr, ptr %25, align 8, !tbaa !5
  %981 = load ptr, ptr %26, align 8, !tbaa !5
  %982 = load i32, ptr %51, align 4, !tbaa !9
  %983 = load ptr, ptr %21, align 8, !tbaa !5
  %984 = load i32, ptr %983, align 4, !tbaa !9
  %985 = mul nsw i32 %982, %984
  %986 = add nsw i32 %985, 1
  %987 = load i32, ptr %37, align 4, !tbaa !9
  %988 = mul nsw i32 %986, %987
  %989 = add nsw i32 %988, 1
  %990 = sext i32 %989 to i64
  %991 = getelementptr inbounds %struct.doublecomplex, ptr %981, i64 %990
  %992 = load ptr, ptr %27, align 8, !tbaa !5
  %993 = load ptr, ptr %28, align 8, !tbaa !5
  %994 = load i32, ptr %35, align 4, !tbaa !9
  %995 = add nsw i32 %994, 1
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds %struct.doublecomplex, ptr %993, i64 %996
  %998 = load ptr, ptr %29, align 8, !tbaa !5
  %999 = load ptr, ptr %28, align 8, !tbaa !5
  %1000 = load i32, ptr %44, align 4, !tbaa !9
  %1001 = load i32, ptr %35, align 4, !tbaa !9
  %1002 = mul nsw i32 %1000, %1001
  %1003 = add nsw i32 %1002, 1
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds %struct.doublecomplex, ptr %999, i64 %1004
  %1006 = load ptr, ptr %29, align 8, !tbaa !5
  %1007 = load ptr, ptr %30, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.doublecomplex, ptr %1007, i64 1
  %1009 = load ptr, ptr %32, align 8, !tbaa !5
  call void @ztpmlqt_(ptr noundef @.str.3, ptr noundef @.str.1, ptr noundef %970, ptr noundef %41, ptr noundef %971, ptr noundef @c__0, ptr noundef %972, ptr noundef %979, ptr noundef %980, ptr noundef %991, ptr noundef %992, ptr noundef %997, ptr noundef %998, ptr noundef %1005, ptr noundef %1006, ptr noundef %1008, ptr noundef %1009)
  %1010 = load i32, ptr %51, align 4, !tbaa !9
  %1011 = add nsw i32 %1010, 1
  store i32 %1011, ptr %51, align 4, !tbaa !9
  br label %1012

1012:                                             ; preds = %964
  %1013 = load i32, ptr %39, align 4, !tbaa !9
  %1014 = load i32, ptr %44, align 4, !tbaa !9
  %1015 = add nsw i32 %1014, %1013
  store i32 %1015, ptr %44, align 4, !tbaa !9
  br label %948, !llvm.loop !19

1016:                                             ; preds = %961
  %1017 = load i32, ptr %46, align 4, !tbaa !9
  %1018 = load ptr, ptr %20, align 8, !tbaa !5
  %1019 = load i32, ptr %1018, align 4, !tbaa !9
  %1020 = icmp sle i32 %1017, %1019
  br i1 %1020, label %1021, label %1062

1021:                                             ; preds = %1016
  %1022 = load ptr, ptr %19, align 8, !tbaa !5
  %1023 = load ptr, ptr %21, align 8, !tbaa !5
  %1024 = load ptr, ptr %22, align 8, !tbaa !5
  %1025 = load ptr, ptr %24, align 8, !tbaa !5
  %1026 = load i32, ptr %46, align 4, !tbaa !9
  %1027 = load i32, ptr %33, align 4, !tbaa !9
  %1028 = mul nsw i32 %1026, %1027
  %1029 = add nsw i32 %1028, 1
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds %struct.doublecomplex, ptr %1025, i64 %1030
  %1032 = load ptr, ptr %25, align 8, !tbaa !5
  %1033 = load ptr, ptr %26, align 8, !tbaa !5
  %1034 = load i32, ptr %51, align 4, !tbaa !9
  %1035 = load ptr, ptr %21, align 8, !tbaa !5
  %1036 = load i32, ptr %1035, align 4, !tbaa !9
  %1037 = mul nsw i32 %1034, %1036
  %1038 = add nsw i32 %1037, 1
  %1039 = load i32, ptr %37, align 4, !tbaa !9
  %1040 = mul nsw i32 %1038, %1039
  %1041 = add nsw i32 %1040, 1
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds %struct.doublecomplex, ptr %1033, i64 %1042
  %1044 = load ptr, ptr %27, align 8, !tbaa !5
  %1045 = load ptr, ptr %28, align 8, !tbaa !5
  %1046 = load i32, ptr %35, align 4, !tbaa !9
  %1047 = add nsw i32 %1046, 1
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds %struct.doublecomplex, ptr %1045, i64 %1048
  %1050 = load ptr, ptr %29, align 8, !tbaa !5
  %1051 = load ptr, ptr %28, align 8, !tbaa !5
  %1052 = load i32, ptr %46, align 4, !tbaa !9
  %1053 = load i32, ptr %35, align 4, !tbaa !9
  %1054 = mul nsw i32 %1052, %1053
  %1055 = add nsw i32 %1054, 1
  %1056 = sext i32 %1055 to i64
  %1057 = getelementptr inbounds %struct.doublecomplex, ptr %1051, i64 %1056
  %1058 = load ptr, ptr %29, align 8, !tbaa !5
  %1059 = load ptr, ptr %30, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.doublecomplex, ptr %1059, i64 1
  %1061 = load ptr, ptr %32, align 8, !tbaa !5
  call void @ztpmlqt_(ptr noundef @.str.3, ptr noundef @.str.1, ptr noundef %1022, ptr noundef %47, ptr noundef %1023, ptr noundef @c__0, ptr noundef %1024, ptr noundef %1031, ptr noundef %1032, ptr noundef %1043, ptr noundef %1044, ptr noundef %1049, ptr noundef %1050, ptr noundef %1057, ptr noundef %1058, ptr noundef %1060, ptr noundef %1061)
  br label %1062

1062:                                             ; preds = %1021, %1016
  br label %1063

1063:                                             ; preds = %1062, %889, %886
  br label %1064

1064:                                             ; preds = %1063, %861
  br label %1065

1065:                                             ; preds = %1064, %694
  br label %1066

1066:                                             ; preds = %1065, %495
  %1067 = load i32, ptr %48, align 4, !tbaa !9
  %1068 = sitofp i32 %1067 to double
  %1069 = load ptr, ptr %30, align 8, !tbaa !5
  %1070 = getelementptr inbounds %struct.doublecomplex, ptr %1069, i64 1
  %1071 = getelementptr inbounds %struct.doublecomplex, ptr %1070, i32 0, i32 0
  store double %1068, ptr %1071, align 8, !tbaa !11
  %1072 = load ptr, ptr %30, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.doublecomplex, ptr %1072, i64 1
  %1074 = getelementptr inbounds %struct.doublecomplex, ptr %1073, i32 0, i32 1
  store double 0.000000e+00, ptr %1074, align 8, !tbaa !14
  store i32 1, ptr %52, align 4
  br label %1075

1075:                                             ; preds = %1066, %306, %271, %235, %219
  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
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #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 @zgemlqt_(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

declare void @ztpmlqt_(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 = !{!12, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 8}
!13 = !{!"double", !7, i64 0}
!14 = !{!12, !13, i64 8}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}


; 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.doublecomplex = type { double, double }

@.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 [9 x i8], align 1
@c__0 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @zlamswlq_(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 nocapture noundef readonly %14, ptr noundef %15) local_unnamed_addr #0 {
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #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
  %20 = load i32, ptr %8, align 4, !tbaa !5
  %narrow = xor i32 %20, -1
  %21 = sext i32 %narrow to i64
  %22 = getelementptr inbounds %struct.doublecomplex, ptr %7, i64 %21
  %23 = load i32, ptr %10, align 4, !tbaa !5
  %narrow470 = xor i32 %23, -1
  %24 = sext i32 %narrow470 to i64
  %25 = getelementptr inbounds %struct.doublecomplex, ptr %9, i64 %24
  %26 = load i32, ptr %12, align 4, !tbaa !5
  %narrow471 = xor i32 %26, -1
  %27 = sext i32 %narrow471 to i64
  %28 = getelementptr inbounds %struct.doublecomplex, ptr %11, i64 %27
  %29 = load i32, ptr %14, align 4, !tbaa !5
  %30 = icmp slt i32 %29, 0
  %31 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %32 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #4
  %33 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #4
  %34 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #4
  %35 = icmp ne i32 %33, 0
  %36 = load i32, ptr %5, align 4, !tbaa !5
  br i1 %35, label %.thread, label %40

.thread:                                          ; preds = %16
  %37 = load i32, ptr %3, align 4, !tbaa !5
  %38 = mul nsw i32 %36, %37
  store i32 0, ptr %15, align 4, !tbaa !5
  %39 = icmp ne i32 %34, 0
  br label %43

40:                                               ; preds = %16
  %41 = load i32, ptr %2, align 4, !tbaa !5
  %42 = mul nsw i32 %36, %41
  store i32 0, ptr %15, align 4, !tbaa !5
  %.not = icmp eq i32 %34, 0
  br i1 %.not, label %.thread480, label %43

43:                                               ; preds = %.thread, %40
  %44 = phi i1 [ %39, %.thread ], [ true, %40 ]
  %.0435478 = phi i32 [ %38, %.thread ], [ %42, %40 ]
  %45 = icmp ne i32 %32, 0
  %46 = icmp ne i32 %31, 0
  %or.cond3 = select i1 %45, i1 true, i1 %46
  br i1 %or.cond3, label %47, label %.thread480

47:                                               ; preds = %43
  %48 = load i32, ptr %2, align 4, !tbaa !5
  %49 = icmp slt i32 %48, 0
  br i1 %49, label %.thread480, label %50

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

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

56:                                               ; preds = %53
  %57 = load i32, ptr %8, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %54, i32 1)
  %58 = icmp slt i32 %57, %spec.select
  br i1 %58, label %.thread480, label %59

59:                                               ; preds = %56
  %60 = load i32, ptr %10, align 4, !tbaa !5
  %61 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select472 = tail call i32 @llvm.smax.i32(i32 %61, i32 1)
  %62 = icmp slt i32 %60, %spec.select472
  br i1 %62, label %.thread480, label %63

63:                                               ; preds = %59
  %64 = load i32, ptr %12, align 4, !tbaa !5
  %spec.select473 = tail call i32 @llvm.umax.i32(i32 %48, i32 1)
  %65 = icmp slt i32 %64, %spec.select473
  br i1 %65, label %.thread480, label %66

66:                                               ; preds = %63
  %67 = load i32, ptr %14, align 4, !tbaa !5
  %68 = tail call i32 @llvm.smax.i32(i32 %.0435478, i32 1)
  %69 = icmp sge i32 %67, %68
  %or.cond5 = select i1 %69, i1 true, i1 %30
  br i1 %or.cond5, label %73, label %.thread480

.thread480:                                       ; preds = %66, %63, %59, %56, %53, %50, %47, %43, %40
  %.sink = phi i32 [ -1, %40 ], [ -2, %43 ], [ -3, %47 ], [ -4, %50 ], [ -5, %53 ], [ -9, %56 ], [ -11, %59 ], [ -13, %63 ], [ -15, %66 ]
  %.0435477483 = phi i32 [ %42, %40 ], [ %.0435478, %43 ], [ %.0435478, %47 ], [ %.0435478, %50 ], [ %.0435478, %53 ], [ %.0435478, %56 ], [ %.0435478, %59 ], [ %.0435478, %63 ], [ %.0435478, %66 ]
  %.neg = phi i32 [ 1, %40 ], [ 2, %43 ], [ 3, %47 ], [ 4, %50 ], [ 5, %53 ], [ 9, %56 ], [ 11, %59 ], [ 13, %63 ], [ 15, %66 ]
  store i32 %.sink, ptr %15, align 4, !tbaa !5
  store i32 %.neg, ptr %17, align 4, !tbaa !5
  %70 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %17, i32 noundef 8) #4
  %71 = sitofp i32 %.0435477483 to double
  store double %71, ptr %13, align 8, !tbaa !9
  %72 = getelementptr inbounds i8, ptr %13, i64 8
  store double 0.000000e+00, ptr %72, align 8, !tbaa !12
  br label %276

73:                                               ; preds = %66
  br i1 %30, label %74, label %77

74:                                               ; preds = %73
  %75 = sitofp i32 %.0435478 to double
  store double %75, ptr %13, align 8, !tbaa !9
  %76 = getelementptr inbounds i8, ptr %13, i64 8
  store double 0.000000e+00, ptr %76, align 8, !tbaa !12
  br label %276

77:                                               ; preds = %73
  %78 = tail call i32 @llvm.umin.i32(i32 %48, i32 %51)
  %79 = tail call i32 @llvm.umin.i32(i32 %78, i32 %54)
  %80 = icmp eq i32 %79, 0
  br i1 %80, label %276, label %81

81:                                               ; preds = %77
  %82 = tail call i32 @llvm.umax.i32(i32 %48, i32 %51)
  %83 = load i32, ptr %6, align 4, !tbaa !5
  %.not462 = icmp sgt i32 %83, %54
  %.not464 = icmp sgt i32 %82, %83
  %or.cond = and i1 %.not462, %.not464
  br i1 %or.cond, label %85, label %84

84:                                               ; preds = %81
  tail call void @zgemlqt_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  br label %276

85:                                               ; preds = %81
  %or.cond7 = and i1 %35, %45
  br i1 %or.cond7, label %86, label %131

86:                                               ; preds = %85
  %87 = sub nsw i32 %48, %54
  %88 = sub nsw i32 %83, %54
  %89 = srem i32 %87, %88
  store i32 %89, ptr %19, align 4, !tbaa !5
  %90 = sdiv i32 %87, %88
  %91 = icmp sgt i32 %89, 0
  br i1 %91, label %92, label %108

92:                                               ; preds = %86
  %93 = sub nsw i32 %48, %89
  %94 = add nsw i32 %93, 1
  %95 = mul nsw i32 %94, %20
  %96 = sext i32 %95 to i64
  %97 = getelementptr %struct.doublecomplex, ptr %22, i64 %96
  %98 = getelementptr i8, ptr %97, i64 16
  %99 = mul nsw i32 %90, %54
  %100 = add nsw i32 %99, 1
  %101 = mul nsw i32 %100, %23
  %102 = sext i32 %101 to i64
  %103 = getelementptr %struct.doublecomplex, ptr %25, i64 %102
  %104 = getelementptr i8, ptr %103, i64 16
  %105 = add nsw i32 %94, %26
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %106
  call void @ztpmlqt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, ptr noundef nonnull %19, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %5, ptr noundef %98, ptr noundef nonnull %8, ptr noundef %104, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %107, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  %.pre528 = load i32, ptr %6, align 4, !tbaa !5
  %.pre529 = load i32, ptr %4, align 4, !tbaa !5
  %.pre530 = sub nsw i32 %.pre528, %.pre529
  br label %110

108:                                              ; preds = %86
  %109 = add nuw nsw i32 %48, 1
  br label %110

110:                                              ; preds = %108, %92
  %.pre-phi = phi i32 [ %88, %108 ], [ %.pre530, %92 ]
  %111 = phi i32 [ %83, %108 ], [ %.pre528, %92 ]
  %.0436 = phi i32 [ %109, %108 ], [ %94, %92 ]
  %112 = add nsw i32 %111, 1
  %113 = icmp sgt i32 %.pre-phi, 0
  %invariant.gep515 = getelementptr i8, ptr %22, i64 16
  %invariant.gep517 = getelementptr i8, ptr %25, i64 16
  %.0438519 = sub i32 %.0436, %.pre-phi
  %114 = icmp sgt i32 %.0438519, %111
  %115 = icmp sle i32 %.0438519, %112
  %.in469520 = select i1 %113, i1 %114, i1 %115
  br i1 %.in469520, label %.lr.ph524, label %._crit_edge525

.lr.ph524:                                        ; preds = %110, %.lr.ph524
  %.0438522 = phi i32 [ %.0438, %.lr.ph524 ], [ %.0438519, %110 ]
  %.0521 = phi i32 [ %116, %.lr.ph524 ], [ %90, %110 ]
  %116 = add nsw i32 %.0521, -1
  %117 = load i32, ptr %6, align 4, !tbaa !5
  %118 = load i32, ptr %4, align 4, !tbaa !5
  %119 = sub nsw i32 %117, %118
  store i32 %119, ptr %18, align 4, !tbaa !5
  %120 = mul nsw i32 %.0438522, %20
  %121 = sext i32 %120 to i64
  %gep516 = getelementptr %struct.doublecomplex, ptr %invariant.gep515, i64 %121
  %122 = mul nsw i32 %118, %116
  %123 = add nsw i32 %122, 1
  %124 = mul nsw i32 %123, %23
  %125 = sext i32 %124 to i64
  %gep518 = getelementptr %struct.doublecomplex, ptr %invariant.gep517, i64 %125
  %126 = add nsw i32 %.0438522, %26
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %127
  call void @ztpmlqt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, ptr noundef nonnull %18, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %5, ptr noundef %gep516, ptr noundef nonnull %8, ptr noundef %gep518, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %128, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  %.0438 = sub i32 %.0438522, %.pre-phi
  %129 = icmp sgt i32 %.0438, %111
  %130 = icmp sle i32 %.0438, %112
  %.in469 = select i1 %113, i1 %129, i1 %130
  br i1 %.in469, label %.lr.ph524, label %._crit_edge525, !llvm.loop !13

._crit_edge525:                                   ; preds = %.lr.ph524, %110
  call void @zgemlqt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, ptr noundef nonnull %6, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  br label %273

131:                                              ; preds = %85
  %or.cond9 = select i1 %35, i1 %46, i1 false
  br i1 %or.cond9, label %132, label %179

132:                                              ; preds = %131
  %133 = sub nsw i32 %48, %54
  %134 = sub nsw i32 %83, %54
  %135 = srem i32 %133, %134
  store i32 %135, ptr %19, align 4, !tbaa !5
  %136 = sub nsw i32 %48, %135
  %137 = add nsw i32 %136, 1
  tail call void @zgemlqt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, ptr noundef nonnull %6, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  %138 = load i32, ptr %6, align 4, !tbaa !5
  %139 = sub nsw i32 %137, %138
  %140 = load i32, ptr %4, align 4, !tbaa !5
  %141 = add nsw i32 %139, %140
  %142 = sub nsw i32 %138, %140
  %143 = add nsw i32 %138, 1
  %invariant.gep504 = getelementptr i8, ptr %22, i64 16
  %invariant.gep506 = getelementptr i8, ptr %25, i64 16
  %144 = icmp slt i32 %142, 0
  %145 = icmp sge i32 %143, %141
  %146 = icmp slt i32 %138, %141
  %.in467508 = select i1 %144, i1 %145, i1 %146
  br i1 %.in467508, label %.lr.ph512, label %._crit_edge513

.lr.ph512:                                        ; preds = %132, %.lr.ph512
  %.1510 = phi i32 [ %159, %.lr.ph512 ], [ 1, %132 ]
  %.1439509 = phi i32 [ %160, %.lr.ph512 ], [ %143, %132 ]
  %147 = load i32, ptr %6, align 4, !tbaa !5
  %148 = load i32, ptr %4, align 4, !tbaa !5
  %149 = sub nsw i32 %147, %148
  store i32 %149, ptr %18, align 4, !tbaa !5
  %150 = mul nsw i32 %.1439509, %20
  %151 = sext i32 %150 to i64
  %gep505 = getelementptr %struct.doublecomplex, ptr %invariant.gep504, i64 %151
  %152 = mul nsw i32 %148, %.1510
  %153 = add nsw i32 %152, 1
  %154 = mul nsw i32 %153, %23
  %155 = sext i32 %154 to i64
  %gep507 = getelementptr %struct.doublecomplex, ptr %invariant.gep506, i64 %155
  %156 = add nsw i32 %.1439509, %26
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %157
  call void @ztpmlqt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, ptr noundef nonnull %18, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %5, ptr noundef %gep505, ptr noundef nonnull %8, ptr noundef %gep507, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %158, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  %159 = add nuw nsw i32 %.1510, 1
  %160 = add nsw i32 %142, %.1439509
  %161 = icmp sge i32 %160, %141
  %162 = icmp sle i32 %160, %141
  %.in467 = select i1 %144, i1 %161, i1 %162
  br i1 %.in467, label %.lr.ph512, label %._crit_edge513, !llvm.loop !15

._crit_edge513:                                   ; preds = %.lr.ph512, %132
  %.1.lcssa = phi i32 [ 1, %132 ], [ %159, %.lr.ph512 ]
  %163 = load i32, ptr %2, align 4, !tbaa !5
  %.not468.not = icmp slt i32 %136, %163
  br i1 %.not468.not, label %164, label %273

164:                                              ; preds = %._crit_edge513
  %165 = mul nsw i32 %137, %20
  %166 = sext i32 %165 to i64
  %167 = getelementptr %struct.doublecomplex, ptr %22, i64 %166
  %168 = getelementptr i8, ptr %167, i64 16
  %169 = load i32, ptr %4, align 4, !tbaa !5
  %170 = mul nsw i32 %169, %.1.lcssa
  %171 = add nsw i32 %170, 1
  %172 = mul nsw i32 %171, %23
  %173 = sext i32 %172 to i64
  %174 = getelementptr %struct.doublecomplex, ptr %25, i64 %173
  %175 = getelementptr i8, ptr %174, i64 16
  %176 = add nsw i32 %137, %26
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %177
  call void @ztpmlqt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, ptr noundef nonnull %19, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %5, ptr noundef %168, ptr noundef nonnull %8, ptr noundef %175, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %178, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  br label %273

179:                                              ; preds = %131
  %or.cond11 = select i1 %44, i1 %46, i1 false
  br i1 %or.cond11, label %180, label %225

180:                                              ; preds = %179
  %181 = sub nsw i32 %51, %54
  %182 = sub nsw i32 %83, %54
  %183 = srem i32 %181, %182
  store i32 %183, ptr %19, align 4, !tbaa !5
  %184 = sdiv i32 %181, %182
  %185 = icmp sgt i32 %183, 0
  br i1 %185, label %186, label %203

186:                                              ; preds = %180
  %187 = sub nsw i32 %51, %183
  %188 = add nsw i32 %187, 1
  %189 = mul nsw i32 %188, %20
  %190 = sext i32 %189 to i64
  %191 = getelementptr %struct.doublecomplex, ptr %22, i64 %190
  %192 = getelementptr i8, ptr %191, i64 16
  %193 = mul nsw i32 %184, %54
  %194 = add nsw i32 %193, 1
  %195 = mul nsw i32 %194, %23
  %196 = sext i32 %195 to i64
  %197 = getelementptr %struct.doublecomplex, ptr %25, i64 %196
  %198 = getelementptr i8, ptr %197, i64 16
  %199 = mul nsw i32 %188, %26
  %200 = sext i32 %199 to i64
  %201 = getelementptr %struct.doublecomplex, ptr %28, i64 %200
  %202 = getelementptr i8, ptr %201, i64 16
  call void @ztpmlqt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %19, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %5, ptr noundef %192, ptr noundef nonnull %8, ptr noundef %198, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %202, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  %.pre = load i32, ptr %6, align 4, !tbaa !5
  %.pre527 = load i32, ptr %4, align 4, !tbaa !5
  %.pre531 = sub nsw i32 %.pre, %.pre527
  br label %205

203:                                              ; preds = %180
  %204 = add nuw nsw i32 %51, 1
  br label %205

205:                                              ; preds = %203, %186
  %.pre-phi532 = phi i32 [ %182, %203 ], [ %.pre531, %186 ]
  %206 = phi i32 [ %83, %203 ], [ %.pre, %186 ]
  %.1437 = phi i32 [ %204, %203 ], [ %188, %186 ]
  %207 = add nsw i32 %206, 1
  %208 = icmp sgt i32 %.pre-phi532, 0
  %invariant.gep491 = getelementptr i8, ptr %22, i64 16
  %invariant.gep493 = getelementptr i8, ptr %25, i64 16
  %invariant.gep495 = getelementptr i8, ptr %28, i64 16
  %.2440497 = sub i32 %.1437, %.pre-phi532
  %209 = icmp sgt i32 %.2440497, %206
  %210 = icmp sle i32 %.2440497, %207
  %.in466498 = select i1 %208, i1 %209, i1 %210
  br i1 %.in466498, label %.lr.ph502, label %._crit_edge503

.lr.ph502:                                        ; preds = %205, %.lr.ph502
  %.2440500 = phi i32 [ %.2440, %.lr.ph502 ], [ %.2440497, %205 ]
  %.2499 = phi i32 [ %211, %.lr.ph502 ], [ %184, %205 ]
  %211 = add nsw i32 %.2499, -1
  %212 = load i32, ptr %6, align 4, !tbaa !5
  %213 = load i32, ptr %4, align 4, !tbaa !5
  %214 = sub nsw i32 %212, %213
  store i32 %214, ptr %18, align 4, !tbaa !5
  %215 = mul nsw i32 %.2440500, %20
  %216 = sext i32 %215 to i64
  %gep492 = getelementptr %struct.doublecomplex, ptr %invariant.gep491, i64 %216
  %217 = mul nsw i32 %213, %211
  %218 = add nsw i32 %217, 1
  %219 = mul nsw i32 %218, %23
  %220 = sext i32 %219 to i64
  %gep494 = getelementptr %struct.doublecomplex, ptr %invariant.gep493, i64 %220
  %221 = mul nsw i32 %.2440500, %26
  %222 = sext i32 %221 to i64
  %gep496 = getelementptr %struct.doublecomplex, ptr %invariant.gep495, i64 %222
  call void @ztpmlqt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %18, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %5, ptr noundef %gep492, ptr noundef nonnull %8, ptr noundef %gep494, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %gep496, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  %.2440 = sub i32 %.2440500, %.pre-phi532
  %223 = icmp sgt i32 %.2440, %206
  %224 = icmp sle i32 %.2440, %207
  %.in466 = select i1 %208, i1 %223, i1 %224
  br i1 %.in466, label %.lr.ph502, label %._crit_edge503, !llvm.loop !16

._crit_edge503:                                   ; preds = %.lr.ph502, %205
  call void @zgemlqt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %6, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  br label %273

225:                                              ; preds = %179
  %or.cond13 = and i1 %44, %45
  br i1 %or.cond13, label %226, label %273

226:                                              ; preds = %225
  %227 = sub nsw i32 %51, %54
  %228 = sub nsw i32 %83, %54
  %229 = srem i32 %227, %228
  store i32 %229, ptr %19, align 4, !tbaa !5
  %230 = sub nsw i32 %51, %229
  %231 = add nsw i32 %230, 1
  tail call void @zgemlqt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, ptr noundef nonnull %2, ptr noundef nonnull %6, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  %232 = load i32, ptr %6, align 4, !tbaa !5
  %233 = sub nsw i32 %231, %232
  %234 = load i32, ptr %4, align 4, !tbaa !5
  %235 = add nsw i32 %233, %234
  %236 = sub nsw i32 %232, %234
  %237 = add nsw i32 %232, 1
  %invariant.gep = getelementptr i8, ptr %22, i64 16
  %invariant.gep484 = getelementptr i8, ptr %25, i64 16
  %invariant.gep486 = getelementptr i8, ptr %28, i64 16
  %238 = icmp slt i32 %236, 0
  %239 = icmp sge i32 %237, %235
  %240 = icmp slt i32 %232, %235
  %.in488 = select i1 %238, i1 %239, i1 %240
  br i1 %.in488, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %226, %.lr.ph
  %.3490 = phi i32 [ %252, %.lr.ph ], [ 1, %226 ]
  %.3441489 = phi i32 [ %253, %.lr.ph ], [ %237, %226 ]
  %241 = load i32, ptr %6, align 4, !tbaa !5
  %242 = load i32, ptr %4, align 4, !tbaa !5
  %243 = sub nsw i32 %241, %242
  store i32 %243, ptr %18, align 4, !tbaa !5
  %244 = mul nsw i32 %.3441489, %20
  %245 = sext i32 %244 to i64
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %245
  %246 = mul nsw i32 %242, %.3490
  %247 = add nsw i32 %246, 1
  %248 = mul nsw i32 %247, %23
  %249 = sext i32 %248 to i64
  %gep485 = getelementptr %struct.doublecomplex, ptr %invariant.gep484, i64 %249
  %250 = mul nsw i32 %.3441489, %26
  %251 = sext i32 %250 to i64
  %gep487 = getelementptr %struct.doublecomplex, ptr %invariant.gep486, i64 %251
  call void @ztpmlqt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, ptr noundef nonnull %2, ptr noundef nonnull %18, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %5, ptr noundef %gep, ptr noundef nonnull %8, ptr noundef %gep485, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %gep487, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  %252 = add nuw nsw i32 %.3490, 1
  %253 = add nsw i32 %236, %.3441489
  %254 = icmp sge i32 %253, %235
  %255 = icmp sle i32 %253, %235
  %.in = select i1 %238, i1 %254, i1 %255
  br i1 %.in, label %.lr.ph, label %._crit_edge, !llvm.loop !17

._crit_edge:                                      ; preds = %.lr.ph, %226
  %.3.lcssa = phi i32 [ 1, %226 ], [ %252, %.lr.ph ]
  %256 = load i32, ptr %3, align 4, !tbaa !5
  %.not465.not = icmp slt i32 %230, %256
  br i1 %.not465.not, label %257, label %273

257:                                              ; preds = %._crit_edge
  %258 = mul nsw i32 %231, %20
  %259 = sext i32 %258 to i64
  %260 = getelementptr %struct.doublecomplex, ptr %22, i64 %259
  %261 = getelementptr i8, ptr %260, i64 16
  %262 = load i32, ptr %4, align 4, !tbaa !5
  %263 = mul nsw i32 %262, %.3.lcssa
  %264 = add nsw i32 %263, 1
  %265 = mul nsw i32 %264, %23
  %266 = sext i32 %265 to i64
  %267 = getelementptr %struct.doublecomplex, ptr %25, i64 %266
  %268 = getelementptr i8, ptr %267, i64 16
  %269 = mul nsw i32 %231, %26
  %270 = sext i32 %269 to i64
  %271 = getelementptr %struct.doublecomplex, ptr %28, i64 %270
  %272 = getelementptr i8, ptr %271, i64 16
  call void @ztpmlqt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, ptr noundef nonnull %2, ptr noundef nonnull %19, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %5, ptr noundef %261, ptr noundef nonnull %8, ptr noundef %268, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %272, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  br label %273

273:                                              ; preds = %164, %._crit_edge513, %225, %257, %._crit_edge, %._crit_edge503, %._crit_edge525
  %274 = sitofp i32 %.0435478 to double
  store double %274, ptr %13, align 8, !tbaa !9
  %275 = getelementptr inbounds i8, ptr %13, i64 8
  store double 0.000000e+00, ptr %275, align 8, !tbaa !12
  br label %276

276:                                              ; preds = %77, %273, %84, %74, %.thread480
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #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 @zgemlqt_(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

declare void @ztpmlqt_(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.smax.i32(i32, i32) #3

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umin.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 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 8}
!11 = !{!"double", !7, i64 0}
!12 = !{!10, !11, i64 8}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}


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