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

; 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 [7 x i8], align 1
@c_b5 = external hidden global double, align 8
@c__1 = external hidden global i64, align 8
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b13 = external hidden global double, align 8
@c_b15 = external hidden global double, align 8
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @zlals0_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23) #0 {
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  %55 = alloca i64, align 8
  %56 = alloca i64, align 8
  %57 = alloca i64, align 8
  %58 = alloca i64, align 8
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca double, align 8
  %68 = alloca %struct.doublecomplex, align 8
  %69 = alloca i64, align 8
  %70 = alloca i64, align 8
  %71 = alloca i64, align 8
  %72 = alloca i64, align 8
  %73 = alloca double, align 8
  %74 = alloca i64, align 8
  %75 = alloca i64, align 8
  %76 = alloca double, align 8
  %77 = alloca i64, align 8
  %78 = alloca double, align 8
  %79 = alloca double, align 8
  %80 = alloca double, align 8
  %81 = alloca double, align 8
  %82 = alloca i32, align 4
  store ptr %0, ptr %26, align 8, !tbaa !5
  store ptr %1, ptr %27, align 8, !tbaa !5
  store ptr %2, ptr %28, align 8, !tbaa !5
  store ptr %3, ptr %29, align 8, !tbaa !5
  store ptr %4, ptr %30, align 8, !tbaa !5
  store ptr %5, ptr %31, align 8, !tbaa !5
  store ptr %6, ptr %32, align 8, !tbaa !5
  store ptr %7, ptr %33, align 8, !tbaa !5
  store ptr %8, ptr %34, align 8, !tbaa !5
  store ptr %9, ptr %35, align 8, !tbaa !5
  store ptr %10, ptr %36, align 8, !tbaa !5
  store ptr %11, ptr %37, align 8, !tbaa !5
  store ptr %12, ptr %38, align 8, !tbaa !5
  store ptr %13, ptr %39, align 8, !tbaa !5
  store ptr %14, ptr %40, align 8, !tbaa !5
  store ptr %15, ptr %41, align 8, !tbaa !5
  store ptr %16, ptr %42, align 8, !tbaa !5
  store ptr %17, ptr %43, align 8, !tbaa !5
  store ptr %18, ptr %44, align 8, !tbaa !5
  store ptr %19, ptr %45, align 8, !tbaa !5
  store ptr %20, ptr %46, align 8, !tbaa !5
  store ptr %21, ptr %47, align 8, !tbaa !5
  store ptr %22, ptr %48, align 8, !tbaa !5
  store ptr %23, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %68) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #3
  %83 = load ptr, ptr %32, align 8, !tbaa !5
  %84 = load i64, ptr %83, align 8, !tbaa !9
  store i64 %84, ptr %58, align 8, !tbaa !9
  %85 = load i64, ptr %58, align 8, !tbaa !9
  %86 = add nsw i64 1, %85
  store i64 %86, ptr %59, align 8, !tbaa !9
  %87 = load i64, ptr %59, align 8, !tbaa !9
  %88 = load ptr, ptr %31, align 8, !tbaa !5
  %89 = sub i64 0, %87
  %90 = getelementptr inbounds %struct.doublecomplex, ptr %88, i64 %89
  store ptr %90, ptr %31, align 8, !tbaa !5
  %91 = load ptr, ptr %34, align 8, !tbaa !5
  %92 = load i64, ptr %91, align 8, !tbaa !9
  store i64 %92, ptr %60, align 8, !tbaa !9
  %93 = load i64, ptr %60, align 8, !tbaa !9
  %94 = add nsw i64 1, %93
  store i64 %94, ptr %61, align 8, !tbaa !9
  %95 = load i64, ptr %61, align 8, !tbaa !9
  %96 = load ptr, ptr %33, align 8, !tbaa !5
  %97 = sub i64 0, %95
  %98 = getelementptr inbounds %struct.doublecomplex, ptr %96, i64 %97
  store ptr %98, ptr %33, align 8, !tbaa !5
  %99 = load ptr, ptr %35, align 8, !tbaa !5
  %100 = getelementptr inbounds i64, ptr %99, i32 -1
  store ptr %100, ptr %35, align 8, !tbaa !5
  %101 = load ptr, ptr %38, align 8, !tbaa !5
  %102 = load i64, ptr %101, align 8, !tbaa !9
  store i64 %102, ptr %50, align 8, !tbaa !9
  %103 = load i64, ptr %50, align 8, !tbaa !9
  %104 = add nsw i64 1, %103
  store i64 %104, ptr %51, align 8, !tbaa !9
  %105 = load i64, ptr %51, align 8, !tbaa !9
  %106 = load ptr, ptr %37, align 8, !tbaa !5
  %107 = sub i64 0, %105
  %108 = getelementptr inbounds i64, ptr %106, i64 %107
  store ptr %108, ptr %37, align 8, !tbaa !5
  %109 = load ptr, ptr %40, align 8, !tbaa !5
  %110 = load i64, ptr %109, align 8, !tbaa !9
  store i64 %110, ptr %52, align 8, !tbaa !9
  %111 = load i64, ptr %52, align 8, !tbaa !9
  %112 = add nsw i64 1, %111
  store i64 %112, ptr %53, align 8, !tbaa !9
  %113 = load i64, ptr %53, align 8, !tbaa !9
  %114 = load ptr, ptr %43, align 8, !tbaa !5
  %115 = sub i64 0, %113
  %116 = getelementptr inbounds double, ptr %114, i64 %115
  store ptr %116, ptr %43, align 8, !tbaa !5
  %117 = load ptr, ptr %40, align 8, !tbaa !5
  %118 = load i64, ptr %117, align 8, !tbaa !9
  store i64 %118, ptr %56, align 8, !tbaa !9
  %119 = load i64, ptr %56, align 8, !tbaa !9
  %120 = add nsw i64 1, %119
  store i64 %120, ptr %57, align 8, !tbaa !9
  %121 = load i64, ptr %57, align 8, !tbaa !9
  %122 = load ptr, ptr %41, align 8, !tbaa !5
  %123 = sub i64 0, %121
  %124 = getelementptr inbounds double, ptr %122, i64 %123
  store ptr %124, ptr %41, align 8, !tbaa !5
  %125 = load ptr, ptr %40, align 8, !tbaa !5
  %126 = load i64, ptr %125, align 8, !tbaa !9
  store i64 %126, ptr %54, align 8, !tbaa !9
  %127 = load i64, ptr %54, align 8, !tbaa !9
  %128 = add nsw i64 1, %127
  store i64 %128, ptr %55, align 8, !tbaa !9
  %129 = load i64, ptr %55, align 8, !tbaa !9
  %130 = load ptr, ptr %39, align 8, !tbaa !5
  %131 = sub i64 0, %129
  %132 = getelementptr inbounds double, ptr %130, i64 %131
  store ptr %132, ptr %39, align 8, !tbaa !5
  %133 = load ptr, ptr %42, align 8, !tbaa !5
  %134 = getelementptr inbounds double, ptr %133, i32 -1
  store ptr %134, ptr %42, align 8, !tbaa !5
  %135 = load ptr, ptr %44, align 8, !tbaa !5
  %136 = getelementptr inbounds double, ptr %135, i32 -1
  store ptr %136, ptr %44, align 8, !tbaa !5
  %137 = load ptr, ptr %48, align 8, !tbaa !5
  %138 = getelementptr inbounds double, ptr %137, i32 -1
  store ptr %138, ptr %48, align 8, !tbaa !5
  %139 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 0, ptr %139, align 8, !tbaa !9
  %140 = load ptr, ptr %26, align 8, !tbaa !5
  %141 = load i64, ptr %140, align 8, !tbaa !9
  %142 = icmp slt i64 %141, 0
  br i1 %142, label %147, label %143

143:                                              ; preds = %24
  %144 = load ptr, ptr %26, align 8, !tbaa !5
  %145 = load i64, ptr %144, align 8, !tbaa !9
  %146 = icmp sgt i64 %145, 1
  br i1 %146, label %147, label %149

147:                                              ; preds = %143, %24
  %148 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -1, ptr %148, align 8, !tbaa !9
  br label %174

149:                                              ; preds = %143
  %150 = load ptr, ptr %27, align 8, !tbaa !5
  %151 = load i64, ptr %150, align 8, !tbaa !9
  %152 = icmp slt i64 %151, 1
  br i1 %152, label %153, label %155

153:                                              ; preds = %149
  %154 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -2, ptr %154, align 8, !tbaa !9
  br label %173

155:                                              ; preds = %149
  %156 = load ptr, ptr %28, align 8, !tbaa !5
  %157 = load i64, ptr %156, align 8, !tbaa !9
  %158 = icmp slt i64 %157, 1
  br i1 %158, label %159, label %161

159:                                              ; preds = %155
  %160 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -3, ptr %160, align 8, !tbaa !9
  br label %172

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

165:                                              ; preds = %161
  %166 = load ptr, ptr %29, align 8, !tbaa !5
  %167 = load i64, ptr %166, align 8, !tbaa !9
  %168 = icmp sgt i64 %167, 1
  br i1 %168, label %169, label %171

169:                                              ; preds = %165, %161
  %170 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -4, ptr %170, align 8, !tbaa !9
  br label %171

171:                                              ; preds = %169, %165
  br label %172

172:                                              ; preds = %171, %159
  br label %173

173:                                              ; preds = %172, %153
  br label %174

174:                                              ; preds = %173, %147
  %175 = load ptr, ptr %27, align 8, !tbaa !5
  %176 = load i64, ptr %175, align 8, !tbaa !9
  %177 = load ptr, ptr %28, align 8, !tbaa !5
  %178 = load i64, ptr %177, align 8, !tbaa !9
  %179 = add nsw i64 %176, %178
  %180 = add nsw i64 %179, 1
  store i64 %180, ptr %72, align 8, !tbaa !9
  %181 = load ptr, ptr %30, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  %183 = icmp slt i64 %182, 1
  br i1 %183, label %184, label %186

184:                                              ; preds = %174
  %185 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -5, ptr %185, align 8, !tbaa !9
  br label %232

186:                                              ; preds = %174
  %187 = load ptr, ptr %32, align 8, !tbaa !5
  %188 = load i64, ptr %187, align 8, !tbaa !9
  %189 = load i64, ptr %72, align 8, !tbaa !9
  %190 = icmp slt i64 %188, %189
  br i1 %190, label %191, label %193

191:                                              ; preds = %186
  %192 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -7, ptr %192, align 8, !tbaa !9
  br label %231

193:                                              ; preds = %186
  %194 = load ptr, ptr %34, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  %196 = load i64, ptr %72, align 8, !tbaa !9
  %197 = icmp slt i64 %195, %196
  br i1 %197, label %198, label %200

198:                                              ; preds = %193
  %199 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -9, ptr %199, align 8, !tbaa !9
  br label %230

200:                                              ; preds = %193
  %201 = load ptr, ptr %36, align 8, !tbaa !5
  %202 = load i64, ptr %201, align 8, !tbaa !9
  %203 = icmp slt i64 %202, 0
  br i1 %203, label %204, label %206

204:                                              ; preds = %200
  %205 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -11, ptr %205, align 8, !tbaa !9
  br label %229

206:                                              ; preds = %200
  %207 = load ptr, ptr %38, align 8, !tbaa !5
  %208 = load i64, ptr %207, align 8, !tbaa !9
  %209 = load i64, ptr %72, align 8, !tbaa !9
  %210 = icmp slt i64 %208, %209
  br i1 %210, label %211, label %213

211:                                              ; preds = %206
  %212 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -13, ptr %212, align 8, !tbaa !9
  br label %228

213:                                              ; preds = %206
  %214 = load ptr, ptr %40, align 8, !tbaa !5
  %215 = load i64, ptr %214, align 8, !tbaa !9
  %216 = load i64, ptr %72, align 8, !tbaa !9
  %217 = icmp slt i64 %215, %216
  br i1 %217, label %218, label %220

218:                                              ; preds = %213
  %219 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -15, ptr %219, align 8, !tbaa !9
  br label %227

220:                                              ; preds = %213
  %221 = load ptr, ptr %45, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  %223 = icmp slt i64 %222, 1
  br i1 %223, label %224, label %226

224:                                              ; preds = %220
  %225 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -20, ptr %225, align 8, !tbaa !9
  br label %226

226:                                              ; preds = %224, %220
  br label %227

227:                                              ; preds = %226, %218
  br label %228

228:                                              ; preds = %227, %211
  br label %229

229:                                              ; preds = %228, %204
  br label %230

230:                                              ; preds = %229, %198
  br label %231

231:                                              ; preds = %230, %191
  br label %232

232:                                              ; preds = %231, %184
  %233 = load ptr, ptr %49, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = icmp ne i64 %234, 0
  br i1 %235, label %236, label %241

236:                                              ; preds = %232
  %237 = load ptr, ptr %49, align 8, !tbaa !5
  %238 = load i64, ptr %237, align 8, !tbaa !9
  %239 = sub nsw i64 0, %238
  store i64 %239, ptr %62, align 8, !tbaa !9
  %240 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %62)
  store i32 0, ptr %25, align 4
  store i32 1, ptr %82, align 4
  br label %1385

241:                                              ; preds = %232
  %242 = load i64, ptr %72, align 8, !tbaa !9
  %243 = load ptr, ptr %29, align 8, !tbaa !5
  %244 = load i64, ptr %243, align 8, !tbaa !9
  %245 = add nsw i64 %242, %244
  store i64 %245, ptr %71, align 8, !tbaa !9
  %246 = load ptr, ptr %27, align 8, !tbaa !5
  %247 = load i64, ptr %246, align 8, !tbaa !9
  %248 = add nsw i64 %247, 1
  store i64 %248, ptr %74, align 8, !tbaa !9
  %249 = load ptr, ptr %26, align 8, !tbaa !5
  %250 = load i64, ptr %249, align 8, !tbaa !9
  %251 = icmp eq i64 %250, 0
  br i1 %251, label %252, label %828

252:                                              ; preds = %241
  %253 = load ptr, ptr %36, align 8, !tbaa !5
  %254 = load i64, ptr %253, align 8, !tbaa !9
  store i64 %254, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %255

255:                                              ; preds = %296, %252
  %256 = load i64, ptr %69, align 8, !tbaa !9
  %257 = load i64, ptr %62, align 8, !tbaa !9
  %258 = icmp sle i64 %256, %257
  br i1 %258, label %259, label %299

259:                                              ; preds = %255
  %260 = load ptr, ptr %30, align 8, !tbaa !5
  %261 = load ptr, ptr %31, align 8, !tbaa !5
  %262 = load ptr, ptr %37, align 8, !tbaa !5
  %263 = load i64, ptr %69, align 8, !tbaa !9
  %264 = load i64, ptr %50, align 8, !tbaa !9
  %265 = shl i64 %264, 1
  %266 = add nsw i64 %263, %265
  %267 = getelementptr inbounds i64, ptr %262, i64 %266
  %268 = load i64, ptr %267, align 8, !tbaa !9
  %269 = load i64, ptr %58, align 8, !tbaa !9
  %270 = add nsw i64 %268, %269
  %271 = getelementptr inbounds %struct.doublecomplex, ptr %261, i64 %270
  %272 = load ptr, ptr %32, align 8, !tbaa !5
  %273 = load ptr, ptr %31, align 8, !tbaa !5
  %274 = load ptr, ptr %37, align 8, !tbaa !5
  %275 = load i64, ptr %69, align 8, !tbaa !9
  %276 = load i64, ptr %50, align 8, !tbaa !9
  %277 = add nsw i64 %275, %276
  %278 = getelementptr inbounds i64, ptr %274, i64 %277
  %279 = load i64, ptr %278, align 8, !tbaa !9
  %280 = load i64, ptr %58, align 8, !tbaa !9
  %281 = add nsw i64 %279, %280
  %282 = getelementptr inbounds %struct.doublecomplex, ptr %273, i64 %281
  %283 = load ptr, ptr %32, align 8, !tbaa !5
  %284 = load ptr, ptr %39, align 8, !tbaa !5
  %285 = load i64, ptr %69, align 8, !tbaa !9
  %286 = load i64, ptr %54, align 8, !tbaa !9
  %287 = shl i64 %286, 1
  %288 = add nsw i64 %285, %287
  %289 = getelementptr inbounds double, ptr %284, i64 %288
  %290 = load ptr, ptr %39, align 8, !tbaa !5
  %291 = load i64, ptr %69, align 8, !tbaa !9
  %292 = load i64, ptr %54, align 8, !tbaa !9
  %293 = add nsw i64 %291, %292
  %294 = getelementptr inbounds double, ptr %290, i64 %293
  %295 = call i32 @f2c_zdrot(ptr noundef %260, ptr noundef %271, ptr noundef %272, ptr noundef %282, ptr noundef %283, ptr noundef %289, ptr noundef %294)
  br label %296

296:                                              ; preds = %259
  %297 = load i64, ptr %69, align 8, !tbaa !9
  %298 = add nsw i64 %297, 1
  store i64 %298, ptr %69, align 8, !tbaa !9
  br label %255, !llvm.loop !11

299:                                              ; preds = %255
  %300 = load ptr, ptr %30, align 8, !tbaa !5
  %301 = load ptr, ptr %31, align 8, !tbaa !5
  %302 = load i64, ptr %74, align 8, !tbaa !9
  %303 = load i64, ptr %58, align 8, !tbaa !9
  %304 = add nsw i64 %302, %303
  %305 = getelementptr inbounds %struct.doublecomplex, ptr %301, i64 %304
  %306 = load ptr, ptr %32, align 8, !tbaa !5
  %307 = load ptr, ptr %33, align 8, !tbaa !5
  %308 = load i64, ptr %60, align 8, !tbaa !9
  %309 = add nsw i64 %308, 1
  %310 = getelementptr inbounds %struct.doublecomplex, ptr %307, i64 %309
  %311 = load ptr, ptr %34, align 8, !tbaa !5
  %312 = call i32 @f2c_zcopy(ptr noundef %300, ptr noundef %305, ptr noundef %306, ptr noundef %310, ptr noundef %311)
  %313 = load i64, ptr %72, align 8, !tbaa !9
  store i64 %313, ptr %62, align 8, !tbaa !9
  store i64 2, ptr %69, align 8, !tbaa !9
  br label %314

314:                                              ; preds = %336, %299
  %315 = load i64, ptr %69, align 8, !tbaa !9
  %316 = load i64, ptr %62, align 8, !tbaa !9
  %317 = icmp sle i64 %315, %316
  br i1 %317, label %318, label %339

318:                                              ; preds = %314
  %319 = load ptr, ptr %30, align 8, !tbaa !5
  %320 = load ptr, ptr %31, align 8, !tbaa !5
  %321 = load ptr, ptr %35, align 8, !tbaa !5
  %322 = load i64, ptr %69, align 8, !tbaa !9
  %323 = getelementptr inbounds i64, ptr %321, i64 %322
  %324 = load i64, ptr %323, align 8, !tbaa !9
  %325 = load i64, ptr %58, align 8, !tbaa !9
  %326 = add nsw i64 %324, %325
  %327 = getelementptr inbounds %struct.doublecomplex, ptr %320, i64 %326
  %328 = load ptr, ptr %32, align 8, !tbaa !5
  %329 = load ptr, ptr %33, align 8, !tbaa !5
  %330 = load i64, ptr %69, align 8, !tbaa !9
  %331 = load i64, ptr %60, align 8, !tbaa !9
  %332 = add nsw i64 %330, %331
  %333 = getelementptr inbounds %struct.doublecomplex, ptr %329, i64 %332
  %334 = load ptr, ptr %34, align 8, !tbaa !5
  %335 = call i32 @f2c_zcopy(ptr noundef %319, ptr noundef %327, ptr noundef %328, ptr noundef %333, ptr noundef %334)
  br label %336

336:                                              ; preds = %318
  %337 = load i64, ptr %69, align 8, !tbaa !9
  %338 = add nsw i64 %337, 1
  store i64 %338, ptr %69, align 8, !tbaa !9
  br label %314, !llvm.loop !13

339:                                              ; preds = %314
  %340 = load ptr, ptr %45, align 8, !tbaa !5
  %341 = load i64, ptr %340, align 8, !tbaa !9
  %342 = icmp eq i64 %341, 1
  br i1 %342, label %343, label %366

343:                                              ; preds = %339
  %344 = load ptr, ptr %30, align 8, !tbaa !5
  %345 = load ptr, ptr %33, align 8, !tbaa !5
  %346 = load i64, ptr %61, align 8, !tbaa !9
  %347 = getelementptr inbounds %struct.doublecomplex, ptr %345, i64 %346
  %348 = load ptr, ptr %34, align 8, !tbaa !5
  %349 = load ptr, ptr %31, align 8, !tbaa !5
  %350 = load i64, ptr %59, align 8, !tbaa !9
  %351 = getelementptr inbounds %struct.doublecomplex, ptr %349, i64 %350
  %352 = load ptr, ptr %32, align 8, !tbaa !5
  %353 = call i32 @f2c_zcopy(ptr noundef %344, ptr noundef %347, ptr noundef %348, ptr noundef %351, ptr noundef %352)
  %354 = load ptr, ptr %44, align 8, !tbaa !5
  %355 = getelementptr inbounds double, ptr %354, i64 1
  %356 = load double, ptr %355, align 8, !tbaa !14
  %357 = fcmp olt double %356, 0.000000e+00
  br i1 %357, label %358, label %365

358:                                              ; preds = %343
  %359 = load ptr, ptr %30, align 8, !tbaa !5
  %360 = load ptr, ptr %31, align 8, !tbaa !5
  %361 = load i64, ptr %59, align 8, !tbaa !9
  %362 = getelementptr inbounds %struct.doublecomplex, ptr %360, i64 %361
  %363 = load ptr, ptr %32, align 8, !tbaa !5
  %364 = call i32 @f2c_zdscal(ptr noundef %359, ptr noundef @c_b5, ptr noundef %362, ptr noundef %363)
  br label %365

365:                                              ; preds = %358, %343
  br label %791

366:                                              ; preds = %339
  %367 = load ptr, ptr %45, align 8, !tbaa !5
  %368 = load i64, ptr %367, align 8, !tbaa !9
  store i64 %368, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %70, align 8, !tbaa !9
  br label %369

369:                                              ; preds = %787, %366
  %370 = load i64, ptr %70, align 8, !tbaa !9
  %371 = load i64, ptr %62, align 8, !tbaa !9
  %372 = icmp sle i64 %370, %371
  br i1 %372, label %373, label %790

373:                                              ; preds = %369
  %374 = load ptr, ptr %42, align 8, !tbaa !5
  %375 = load i64, ptr %70, align 8, !tbaa !9
  %376 = getelementptr inbounds double, ptr %374, i64 %375
  %377 = load double, ptr %376, align 8, !tbaa !14
  store double %377, ptr %78, align 8, !tbaa !14
  %378 = load ptr, ptr %41, align 8, !tbaa !5
  %379 = load i64, ptr %70, align 8, !tbaa !9
  %380 = load i64, ptr %56, align 8, !tbaa !9
  %381 = add nsw i64 %379, %380
  %382 = getelementptr inbounds double, ptr %378, i64 %381
  %383 = load double, ptr %382, align 8, !tbaa !14
  store double %383, ptr %73, align 8, !tbaa !14
  %384 = load ptr, ptr %41, align 8, !tbaa !5
  %385 = load i64, ptr %70, align 8, !tbaa !9
  %386 = load i64, ptr %56, align 8, !tbaa !9
  %387 = shl i64 %386, 1
  %388 = add nsw i64 %385, %387
  %389 = getelementptr inbounds double, ptr %384, i64 %388
  %390 = load double, ptr %389, align 8, !tbaa !14
  %391 = fneg double %390
  store double %391, ptr %80, align 8, !tbaa !14
  %392 = load i64, ptr %70, align 8, !tbaa !9
  %393 = load ptr, ptr %45, align 8, !tbaa !5
  %394 = load i64, ptr %393, align 8, !tbaa !9
  %395 = icmp slt i64 %392, %394
  br i1 %395, label %396, label %413

396:                                              ; preds = %373
  %397 = load ptr, ptr %43, align 8, !tbaa !5
  %398 = load i64, ptr %70, align 8, !tbaa !9
  %399 = load i64, ptr %52, align 8, !tbaa !9
  %400 = add nsw i64 %398, %399
  %401 = getelementptr inbounds double, ptr %397, i64 %400
  %402 = load double, ptr %401, align 8, !tbaa !14
  %403 = fneg double %402
  store double %403, ptr %79, align 8, !tbaa !14
  %404 = load ptr, ptr %41, align 8, !tbaa !5
  %405 = load i64, ptr %70, align 8, !tbaa !9
  %406 = add nsw i64 %405, 1
  %407 = load i64, ptr %56, align 8, !tbaa !9
  %408 = shl i64 %407, 1
  %409 = add nsw i64 %406, %408
  %410 = getelementptr inbounds double, ptr %404, i64 %409
  %411 = load double, ptr %410, align 8, !tbaa !14
  %412 = fneg double %411
  store double %412, ptr %81, align 8, !tbaa !14
  br label %413

413:                                              ; preds = %396, %373
  %414 = load ptr, ptr %44, align 8, !tbaa !5
  %415 = load i64, ptr %70, align 8, !tbaa !9
  %416 = getelementptr inbounds double, ptr %414, i64 %415
  %417 = load double, ptr %416, align 8, !tbaa !14
  %418 = fcmp oeq double %417, 0.000000e+00
  br i1 %418, label %428, label %419

419:                                              ; preds = %413
  %420 = load ptr, ptr %41, align 8, !tbaa !5
  %421 = load i64, ptr %70, align 8, !tbaa !9
  %422 = load i64, ptr %56, align 8, !tbaa !9
  %423 = shl i64 %422, 1
  %424 = add nsw i64 %421, %423
  %425 = getelementptr inbounds double, ptr %420, i64 %424
  %426 = load double, ptr %425, align 8, !tbaa !14
  %427 = fcmp oeq double %426, 0.000000e+00
  br i1 %427, label %428, label %432

428:                                              ; preds = %419, %413
  %429 = load ptr, ptr %48, align 8, !tbaa !5
  %430 = load i64, ptr %70, align 8, !tbaa !9
  %431 = getelementptr inbounds double, ptr %429, i64 %430
  store double 0.000000e+00, ptr %431, align 8, !tbaa !14
  br label %461

432:                                              ; preds = %419
  %433 = load ptr, ptr %41, align 8, !tbaa !5
  %434 = load i64, ptr %70, align 8, !tbaa !9
  %435 = load i64, ptr %56, align 8, !tbaa !9
  %436 = shl i64 %435, 1
  %437 = add nsw i64 %434, %436
  %438 = getelementptr inbounds double, ptr %433, i64 %437
  %439 = load double, ptr %438, align 8, !tbaa !14
  %440 = fneg double %439
  %441 = load ptr, ptr %44, align 8, !tbaa !5
  %442 = load i64, ptr %70, align 8, !tbaa !9
  %443 = getelementptr inbounds double, ptr %441, i64 %442
  %444 = load double, ptr %443, align 8, !tbaa !14
  %445 = fmul double %440, %444
  %446 = load double, ptr %78, align 8, !tbaa !14
  %447 = fdiv double %445, %446
  %448 = load ptr, ptr %41, align 8, !tbaa !5
  %449 = load i64, ptr %70, align 8, !tbaa !9
  %450 = load i64, ptr %56, align 8, !tbaa !9
  %451 = shl i64 %450, 1
  %452 = add nsw i64 %449, %451
  %453 = getelementptr inbounds double, ptr %448, i64 %452
  %454 = load double, ptr %453, align 8, !tbaa !14
  %455 = load double, ptr %73, align 8, !tbaa !14
  %456 = fadd double %454, %455
  %457 = fdiv double %447, %456
  %458 = load ptr, ptr %48, align 8, !tbaa !5
  %459 = load i64, ptr %70, align 8, !tbaa !9
  %460 = getelementptr inbounds double, ptr %458, i64 %459
  store double %457, ptr %460, align 8, !tbaa !14
  br label %461

461:                                              ; preds = %432, %428
  %462 = load i64, ptr %70, align 8, !tbaa !9
  %463 = sub nsw i64 %462, 1
  store i64 %463, ptr %63, align 8, !tbaa !9
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %464

464:                                              ; preds = %524, %461
  %465 = load i64, ptr %69, align 8, !tbaa !9
  %466 = load i64, ptr %63, align 8, !tbaa !9
  %467 = icmp sle i64 %465, %466
  br i1 %467, label %468, label %527

468:                                              ; preds = %464
  %469 = load ptr, ptr %44, align 8, !tbaa !5
  %470 = load i64, ptr %69, align 8, !tbaa !9
  %471 = getelementptr inbounds double, ptr %469, i64 %470
  %472 = load double, ptr %471, align 8, !tbaa !14
  %473 = fcmp oeq double %472, 0.000000e+00
  br i1 %473, label %483, label %474

474:                                              ; preds = %468
  %475 = load ptr, ptr %41, align 8, !tbaa !5
  %476 = load i64, ptr %69, align 8, !tbaa !9
  %477 = load i64, ptr %56, align 8, !tbaa !9
  %478 = shl i64 %477, 1
  %479 = add nsw i64 %476, %478
  %480 = getelementptr inbounds double, ptr %475, i64 %479
  %481 = load double, ptr %480, align 8, !tbaa !14
  %482 = fcmp oeq double %481, 0.000000e+00
  br i1 %482, label %483, label %487

483:                                              ; preds = %474, %468
  %484 = load ptr, ptr %48, align 8, !tbaa !5
  %485 = load i64, ptr %69, align 8, !tbaa !9
  %486 = getelementptr inbounds double, ptr %484, i64 %485
  store double 0.000000e+00, ptr %486, align 8, !tbaa !14
  br label %523

487:                                              ; preds = %474
  %488 = load ptr, ptr %41, align 8, !tbaa !5
  %489 = load i64, ptr %69, align 8, !tbaa !9
  %490 = load i64, ptr %56, align 8, !tbaa !9
  %491 = shl i64 %490, 1
  %492 = add nsw i64 %489, %491
  %493 = getelementptr inbounds double, ptr %488, i64 %492
  %494 = load double, ptr %493, align 8, !tbaa !14
  %495 = load ptr, ptr %44, align 8, !tbaa !5
  %496 = load i64, ptr %69, align 8, !tbaa !9
  %497 = getelementptr inbounds double, ptr %495, i64 %496
  %498 = load double, ptr %497, align 8, !tbaa !14
  %499 = fmul double %494, %498
  %500 = load ptr, ptr %41, align 8, !tbaa !5
  %501 = load i64, ptr %69, align 8, !tbaa !9
  %502 = load i64, ptr %56, align 8, !tbaa !9
  %503 = shl i64 %502, 1
  %504 = add nsw i64 %501, %503
  %505 = getelementptr inbounds double, ptr %500, i64 %504
  %506 = call double @dlamc3_(ptr noundef %505, ptr noundef %80)
  %507 = load double, ptr %78, align 8, !tbaa !14
  %508 = fsub double %506, %507
  %509 = fdiv double %499, %508
  %510 = load ptr, ptr %41, align 8, !tbaa !5
  %511 = load i64, ptr %69, align 8, !tbaa !9
  %512 = load i64, ptr %56, align 8, !tbaa !9
  %513 = shl i64 %512, 1
  %514 = add nsw i64 %511, %513
  %515 = getelementptr inbounds double, ptr %510, i64 %514
  %516 = load double, ptr %515, align 8, !tbaa !14
  %517 = load double, ptr %73, align 8, !tbaa !14
  %518 = fadd double %516, %517
  %519 = fdiv double %509, %518
  %520 = load ptr, ptr %48, align 8, !tbaa !5
  %521 = load i64, ptr %69, align 8, !tbaa !9
  %522 = getelementptr inbounds double, ptr %520, i64 %521
  store double %519, ptr %522, align 8, !tbaa !14
  br label %523

523:                                              ; preds = %487, %483
  br label %524

524:                                              ; preds = %523
  %525 = load i64, ptr %69, align 8, !tbaa !9
  %526 = add nsw i64 %525, 1
  store i64 %526, ptr %69, align 8, !tbaa !9
  br label %464, !llvm.loop !16

527:                                              ; preds = %464
  %528 = load ptr, ptr %45, align 8, !tbaa !5
  %529 = load i64, ptr %528, align 8, !tbaa !9
  store i64 %529, ptr %63, align 8, !tbaa !9
  %530 = load i64, ptr %70, align 8, !tbaa !9
  %531 = add nsw i64 %530, 1
  store i64 %531, ptr %69, align 8, !tbaa !9
  br label %532

532:                                              ; preds = %592, %527
  %533 = load i64, ptr %69, align 8, !tbaa !9
  %534 = load i64, ptr %63, align 8, !tbaa !9
  %535 = icmp sle i64 %533, %534
  br i1 %535, label %536, label %595

536:                                              ; preds = %532
  %537 = load ptr, ptr %44, align 8, !tbaa !5
  %538 = load i64, ptr %69, align 8, !tbaa !9
  %539 = getelementptr inbounds double, ptr %537, i64 %538
  %540 = load double, ptr %539, align 8, !tbaa !14
  %541 = fcmp oeq double %540, 0.000000e+00
  br i1 %541, label %551, label %542

542:                                              ; preds = %536
  %543 = load ptr, ptr %41, align 8, !tbaa !5
  %544 = load i64, ptr %69, align 8, !tbaa !9
  %545 = load i64, ptr %56, align 8, !tbaa !9
  %546 = shl i64 %545, 1
  %547 = add nsw i64 %544, %546
  %548 = getelementptr inbounds double, ptr %543, i64 %547
  %549 = load double, ptr %548, align 8, !tbaa !14
  %550 = fcmp oeq double %549, 0.000000e+00
  br i1 %550, label %551, label %555

551:                                              ; preds = %542, %536
  %552 = load ptr, ptr %48, align 8, !tbaa !5
  %553 = load i64, ptr %69, align 8, !tbaa !9
  %554 = getelementptr inbounds double, ptr %552, i64 %553
  store double 0.000000e+00, ptr %554, align 8, !tbaa !14
  br label %591

555:                                              ; preds = %542
  %556 = load ptr, ptr %41, align 8, !tbaa !5
  %557 = load i64, ptr %69, align 8, !tbaa !9
  %558 = load i64, ptr %56, align 8, !tbaa !9
  %559 = shl i64 %558, 1
  %560 = add nsw i64 %557, %559
  %561 = getelementptr inbounds double, ptr %556, i64 %560
  %562 = load double, ptr %561, align 8, !tbaa !14
  %563 = load ptr, ptr %44, align 8, !tbaa !5
  %564 = load i64, ptr %69, align 8, !tbaa !9
  %565 = getelementptr inbounds double, ptr %563, i64 %564
  %566 = load double, ptr %565, align 8, !tbaa !14
  %567 = fmul double %562, %566
  %568 = load ptr, ptr %41, align 8, !tbaa !5
  %569 = load i64, ptr %69, align 8, !tbaa !9
  %570 = load i64, ptr %56, align 8, !tbaa !9
  %571 = shl i64 %570, 1
  %572 = add nsw i64 %569, %571
  %573 = getelementptr inbounds double, ptr %568, i64 %572
  %574 = call double @dlamc3_(ptr noundef %573, ptr noundef %81)
  %575 = load double, ptr %79, align 8, !tbaa !14
  %576 = fadd double %574, %575
  %577 = fdiv double %567, %576
  %578 = load ptr, ptr %41, align 8, !tbaa !5
  %579 = load i64, ptr %69, align 8, !tbaa !9
  %580 = load i64, ptr %56, align 8, !tbaa !9
  %581 = shl i64 %580, 1
  %582 = add nsw i64 %579, %581
  %583 = getelementptr inbounds double, ptr %578, i64 %582
  %584 = load double, ptr %583, align 8, !tbaa !14
  %585 = load double, ptr %73, align 8, !tbaa !14
  %586 = fadd double %584, %585
  %587 = fdiv double %577, %586
  %588 = load ptr, ptr %48, align 8, !tbaa !5
  %589 = load i64, ptr %69, align 8, !tbaa !9
  %590 = getelementptr inbounds double, ptr %588, i64 %589
  store double %587, ptr %590, align 8, !tbaa !14
  br label %591

591:                                              ; preds = %555, %551
  br label %592

592:                                              ; preds = %591
  %593 = load i64, ptr %69, align 8, !tbaa !9
  %594 = add nsw i64 %593, 1
  store i64 %594, ptr %69, align 8, !tbaa !9
  br label %532, !llvm.loop !17

595:                                              ; preds = %532
  %596 = load ptr, ptr %48, align 8, !tbaa !5
  %597 = getelementptr inbounds double, ptr %596, i64 1
  store double -1.000000e+00, ptr %597, align 8, !tbaa !14
  %598 = load ptr, ptr %45, align 8, !tbaa !5
  %599 = load ptr, ptr %48, align 8, !tbaa !5
  %600 = getelementptr inbounds double, ptr %599, i64 1
  %601 = call double @f2c_dnrm2(ptr noundef %598, ptr noundef %600, ptr noundef @c__1)
  store double %601, ptr %76, align 8, !tbaa !14
  %602 = load ptr, ptr %45, align 8, !tbaa !5
  %603 = load i64, ptr %602, align 8, !tbaa !9
  %604 = load ptr, ptr %30, align 8, !tbaa !5
  %605 = load i64, ptr %604, align 8, !tbaa !9
  %606 = shl i64 %605, 1
  %607 = add nsw i64 %603, %606
  store i64 %607, ptr %69, align 8, !tbaa !9
  %608 = load ptr, ptr %30, align 8, !tbaa !5
  %609 = load i64, ptr %608, align 8, !tbaa !9
  store i64 %609, ptr %63, align 8, !tbaa !9
  store i64 1, ptr %75, align 8, !tbaa !9
  br label %610

610:                                              ; preds = %641, %595
  %611 = load i64, ptr %75, align 8, !tbaa !9
  %612 = load i64, ptr %63, align 8, !tbaa !9
  %613 = icmp sle i64 %611, %612
  br i1 %613, label %614, label %644

614:                                              ; preds = %610
  %615 = load ptr, ptr %45, align 8, !tbaa !5
  %616 = load i64, ptr %615, align 8, !tbaa !9
  store i64 %616, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %617

617:                                              ; preds = %637, %614
  %618 = load i64, ptr %77, align 8, !tbaa !9
  %619 = load i64, ptr %64, align 8, !tbaa !9
  %620 = icmp sle i64 %618, %619
  br i1 %620, label %621, label %640

621:                                              ; preds = %617
  %622 = load i64, ptr %69, align 8, !tbaa !9
  %623 = add nsw i64 %622, 1
  store i64 %623, ptr %69, align 8, !tbaa !9
  %624 = load i64, ptr %77, align 8, !tbaa !9
  %625 = load i64, ptr %75, align 8, !tbaa !9
  %626 = load i64, ptr %60, align 8, !tbaa !9
  %627 = mul nsw i64 %625, %626
  %628 = add nsw i64 %624, %627
  store i64 %628, ptr %65, align 8, !tbaa !9
  %629 = load ptr, ptr %33, align 8, !tbaa !5
  %630 = load i64, ptr %65, align 8, !tbaa !9
  %631 = getelementptr inbounds %struct.doublecomplex, ptr %629, i64 %630
  %632 = getelementptr inbounds %struct.doublecomplex, ptr %631, i32 0, i32 0
  %633 = load double, ptr %632, align 8, !tbaa !18
  %634 = load ptr, ptr %48, align 8, !tbaa !5
  %635 = load i64, ptr %69, align 8, !tbaa !9
  %636 = getelementptr inbounds double, ptr %634, i64 %635
  store double %633, ptr %636, align 8, !tbaa !14
  br label %637

637:                                              ; preds = %621
  %638 = load i64, ptr %77, align 8, !tbaa !9
  %639 = add nsw i64 %638, 1
  store i64 %639, ptr %77, align 8, !tbaa !9
  br label %617, !llvm.loop !20

640:                                              ; preds = %617
  br label %641

641:                                              ; preds = %640
  %642 = load i64, ptr %75, align 8, !tbaa !9
  %643 = add nsw i64 %642, 1
  store i64 %643, ptr %75, align 8, !tbaa !9
  br label %610, !llvm.loop !21

644:                                              ; preds = %610
  %645 = load ptr, ptr %45, align 8, !tbaa !5
  %646 = load ptr, ptr %30, align 8, !tbaa !5
  %647 = load ptr, ptr %48, align 8, !tbaa !5
  %648 = load ptr, ptr %45, align 8, !tbaa !5
  %649 = load i64, ptr %648, align 8, !tbaa !9
  %650 = add nsw i64 %649, 1
  %651 = load ptr, ptr %30, align 8, !tbaa !5
  %652 = load i64, ptr %651, align 8, !tbaa !9
  %653 = shl i64 %652, 1
  %654 = add nsw i64 %650, %653
  %655 = getelementptr inbounds double, ptr %647, i64 %654
  %656 = load ptr, ptr %45, align 8, !tbaa !5
  %657 = load ptr, ptr %48, align 8, !tbaa !5
  %658 = getelementptr inbounds double, ptr %657, i64 1
  %659 = load ptr, ptr %48, align 8, !tbaa !5
  %660 = load ptr, ptr %45, align 8, !tbaa !5
  %661 = load i64, ptr %660, align 8, !tbaa !9
  %662 = add nsw i64 %661, 1
  %663 = getelementptr inbounds double, ptr %659, i64 %662
  %664 = call i32 @f2c_dgemv(ptr noundef @.str.1, ptr noundef %645, ptr noundef %646, ptr noundef @c_b13, ptr noundef %655, ptr noundef %656, ptr noundef %658, ptr noundef @c__1, ptr noundef @c_b15, ptr noundef %663, ptr noundef @c__1)
  %665 = load ptr, ptr %45, align 8, !tbaa !5
  %666 = load i64, ptr %665, align 8, !tbaa !9
  %667 = load ptr, ptr %30, align 8, !tbaa !5
  %668 = load i64, ptr %667, align 8, !tbaa !9
  %669 = shl i64 %668, 1
  %670 = add nsw i64 %666, %669
  store i64 %670, ptr %69, align 8, !tbaa !9
  %671 = load ptr, ptr %30, align 8, !tbaa !5
  %672 = load i64, ptr %671, align 8, !tbaa !9
  store i64 %672, ptr %63, align 8, !tbaa !9
  store i64 1, ptr %75, align 8, !tbaa !9
  br label %673

673:                                              ; preds = %702, %644
  %674 = load i64, ptr %75, align 8, !tbaa !9
  %675 = load i64, ptr %63, align 8, !tbaa !9
  %676 = icmp sle i64 %674, %675
  br i1 %676, label %677, label %705

677:                                              ; preds = %673
  %678 = load ptr, ptr %45, align 8, !tbaa !5
  %679 = load i64, ptr %678, align 8, !tbaa !9
  store i64 %679, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %680

680:                                              ; preds = %698, %677
  %681 = load i64, ptr %77, align 8, !tbaa !9
  %682 = load i64, ptr %64, align 8, !tbaa !9
  %683 = icmp sle i64 %681, %682
  br i1 %683, label %684, label %701

684:                                              ; preds = %680
  %685 = load i64, ptr %69, align 8, !tbaa !9
  %686 = add nsw i64 %685, 1
  store i64 %686, ptr %69, align 8, !tbaa !9
  %687 = load ptr, ptr %33, align 8, !tbaa !5
  %688 = load i64, ptr %77, align 8, !tbaa !9
  %689 = load i64, ptr %75, align 8, !tbaa !9
  %690 = load i64, ptr %60, align 8, !tbaa !9
  %691 = mul nsw i64 %689, %690
  %692 = add nsw i64 %688, %691
  %693 = getelementptr inbounds %struct.doublecomplex, ptr %687, i64 %692
  %694 = call double @d_imag(ptr noundef %693)
  %695 = load ptr, ptr %48, align 8, !tbaa !5
  %696 = load i64, ptr %69, align 8, !tbaa !9
  %697 = getelementptr inbounds double, ptr %695, i64 %696
  store double %694, ptr %697, align 8, !tbaa !14
  br label %698

698:                                              ; preds = %684
  %699 = load i64, ptr %77, align 8, !tbaa !9
  %700 = add nsw i64 %699, 1
  store i64 %700, ptr %77, align 8, !tbaa !9
  br label %680, !llvm.loop !22

701:                                              ; preds = %680
  br label %702

702:                                              ; preds = %701
  %703 = load i64, ptr %75, align 8, !tbaa !9
  %704 = add nsw i64 %703, 1
  store i64 %704, ptr %75, align 8, !tbaa !9
  br label %673, !llvm.loop !23

705:                                              ; preds = %673
  %706 = load ptr, ptr %45, align 8, !tbaa !5
  %707 = load ptr, ptr %30, align 8, !tbaa !5
  %708 = load ptr, ptr %48, align 8, !tbaa !5
  %709 = load ptr, ptr %45, align 8, !tbaa !5
  %710 = load i64, ptr %709, align 8, !tbaa !9
  %711 = add nsw i64 %710, 1
  %712 = load ptr, ptr %30, align 8, !tbaa !5
  %713 = load i64, ptr %712, align 8, !tbaa !9
  %714 = shl i64 %713, 1
  %715 = add nsw i64 %711, %714
  %716 = getelementptr inbounds double, ptr %708, i64 %715
  %717 = load ptr, ptr %45, align 8, !tbaa !5
  %718 = load ptr, ptr %48, align 8, !tbaa !5
  %719 = getelementptr inbounds double, ptr %718, i64 1
  %720 = load ptr, ptr %48, align 8, !tbaa !5
  %721 = load ptr, ptr %45, align 8, !tbaa !5
  %722 = load i64, ptr %721, align 8, !tbaa !9
  %723 = add nsw i64 %722, 1
  %724 = load ptr, ptr %30, align 8, !tbaa !5
  %725 = load i64, ptr %724, align 8, !tbaa !9
  %726 = add nsw i64 %723, %725
  %727 = getelementptr inbounds double, ptr %720, i64 %726
  %728 = call i32 @f2c_dgemv(ptr noundef @.str.1, ptr noundef %706, ptr noundef %707, ptr noundef @c_b13, ptr noundef %716, ptr noundef %717, ptr noundef %719, ptr noundef @c__1, ptr noundef @c_b15, ptr noundef %727, ptr noundef @c__1)
  %729 = load ptr, ptr %30, align 8, !tbaa !5
  %730 = load i64, ptr %729, align 8, !tbaa !9
  store i64 %730, ptr %63, align 8, !tbaa !9
  store i64 1, ptr %75, align 8, !tbaa !9
  br label %731

731:                                              ; preds = %774, %705
  %732 = load i64, ptr %75, align 8, !tbaa !9
  %733 = load i64, ptr %63, align 8, !tbaa !9
  %734 = icmp sle i64 %732, %733
  br i1 %734, label %735, label %777

735:                                              ; preds = %731
  %736 = load i64, ptr %70, align 8, !tbaa !9
  %737 = load i64, ptr %75, align 8, !tbaa !9
  %738 = load i64, ptr %58, align 8, !tbaa !9
  %739 = mul nsw i64 %737, %738
  %740 = add nsw i64 %736, %739
  store i64 %740, ptr %64, align 8, !tbaa !9
  %741 = load i64, ptr %75, align 8, !tbaa !9
  %742 = load ptr, ptr %45, align 8, !tbaa !5
  %743 = load i64, ptr %742, align 8, !tbaa !9
  %744 = add nsw i64 %741, %743
  store i64 %744, ptr %65, align 8, !tbaa !9
  %745 = load i64, ptr %75, align 8, !tbaa !9
  %746 = load ptr, ptr %45, align 8, !tbaa !5
  %747 = load i64, ptr %746, align 8, !tbaa !9
  %748 = add nsw i64 %745, %747
  %749 = load ptr, ptr %30, align 8, !tbaa !5
  %750 = load i64, ptr %749, align 8, !tbaa !9
  %751 = add nsw i64 %748, %750
  store i64 %751, ptr %66, align 8, !tbaa !9
  %752 = load ptr, ptr %48, align 8, !tbaa !5
  %753 = load i64, ptr %65, align 8, !tbaa !9
  %754 = getelementptr inbounds double, ptr %752, i64 %753
  %755 = load double, ptr %754, align 8, !tbaa !14
  %756 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 0
  store double %755, ptr %756, align 8, !tbaa !18
  %757 = load ptr, ptr %48, align 8, !tbaa !5
  %758 = load i64, ptr %66, align 8, !tbaa !9
  %759 = getelementptr inbounds double, ptr %757, i64 %758
  %760 = load double, ptr %759, align 8, !tbaa !14
  %761 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 1
  store double %760, ptr %761, align 8, !tbaa !24
  %762 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 0
  %763 = load double, ptr %762, align 8, !tbaa !18
  %764 = load ptr, ptr %31, align 8, !tbaa !5
  %765 = load i64, ptr %64, align 8, !tbaa !9
  %766 = getelementptr inbounds %struct.doublecomplex, ptr %764, i64 %765
  %767 = getelementptr inbounds %struct.doublecomplex, ptr %766, i32 0, i32 0
  store double %763, ptr %767, align 8, !tbaa !18
  %768 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 1
  %769 = load double, ptr %768, align 8, !tbaa !24
  %770 = load ptr, ptr %31, align 8, !tbaa !5
  %771 = load i64, ptr %64, align 8, !tbaa !9
  %772 = getelementptr inbounds %struct.doublecomplex, ptr %770, i64 %771
  %773 = getelementptr inbounds %struct.doublecomplex, ptr %772, i32 0, i32 1
  store double %769, ptr %773, align 8, !tbaa !24
  br label %774

774:                                              ; preds = %735
  %775 = load i64, ptr %75, align 8, !tbaa !9
  %776 = add nsw i64 %775, 1
  store i64 %776, ptr %75, align 8, !tbaa !9
  br label %731, !llvm.loop !25

777:                                              ; preds = %731
  %778 = load ptr, ptr %30, align 8, !tbaa !5
  %779 = load ptr, ptr %31, align 8, !tbaa !5
  %780 = load i64, ptr %70, align 8, !tbaa !9
  %781 = load i64, ptr %58, align 8, !tbaa !9
  %782 = add nsw i64 %780, %781
  %783 = getelementptr inbounds %struct.doublecomplex, ptr %779, i64 %782
  %784 = load ptr, ptr %32, align 8, !tbaa !5
  %785 = load ptr, ptr %49, align 8, !tbaa !5
  %786 = call i32 @zlascl_(ptr noundef @.str.2, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %76, ptr noundef @c_b13, ptr noundef @c__1, ptr noundef %778, ptr noundef %783, ptr noundef %784, ptr noundef %785)
  br label %787

787:                                              ; preds = %777
  %788 = load i64, ptr %70, align 8, !tbaa !9
  %789 = add nsw i64 %788, 1
  store i64 %789, ptr %70, align 8, !tbaa !9
  br label %369, !llvm.loop !26

790:                                              ; preds = %369
  br label %791

791:                                              ; preds = %790, %365
  %792 = load ptr, ptr %45, align 8, !tbaa !5
  %793 = load i64, ptr %792, align 8, !tbaa !9
  %794 = load i64, ptr %71, align 8, !tbaa !9
  %795 = load i64, ptr %72, align 8, !tbaa !9
  %796 = icmp sge i64 %794, %795
  br i1 %796, label %797, label %799

797:                                              ; preds = %791
  %798 = load i64, ptr %71, align 8, !tbaa !9
  br label %801

799:                                              ; preds = %791
  %800 = load i64, ptr %72, align 8, !tbaa !9
  br label %801

801:                                              ; preds = %799, %797
  %802 = phi i64 [ %798, %797 ], [ %800, %799 ]
  %803 = icmp slt i64 %793, %802
  br i1 %803, label %804, label %827

804:                                              ; preds = %801
  %805 = load i64, ptr %72, align 8, !tbaa !9
  %806 = load ptr, ptr %45, align 8, !tbaa !5
  %807 = load i64, ptr %806, align 8, !tbaa !9
  %808 = sub nsw i64 %805, %807
  store i64 %808, ptr %62, align 8, !tbaa !9
  %809 = load ptr, ptr %30, align 8, !tbaa !5
  %810 = load ptr, ptr %33, align 8, !tbaa !5
  %811 = load ptr, ptr %45, align 8, !tbaa !5
  %812 = load i64, ptr %811, align 8, !tbaa !9
  %813 = add nsw i64 %812, 1
  %814 = load i64, ptr %60, align 8, !tbaa !9
  %815 = add nsw i64 %813, %814
  %816 = getelementptr inbounds %struct.doublecomplex, ptr %810, i64 %815
  %817 = load ptr, ptr %34, align 8, !tbaa !5
  %818 = load ptr, ptr %31, align 8, !tbaa !5
  %819 = load ptr, ptr %45, align 8, !tbaa !5
  %820 = load i64, ptr %819, align 8, !tbaa !9
  %821 = add nsw i64 %820, 1
  %822 = load i64, ptr %58, align 8, !tbaa !9
  %823 = add nsw i64 %821, %822
  %824 = getelementptr inbounds %struct.doublecomplex, ptr %818, i64 %823
  %825 = load ptr, ptr %32, align 8, !tbaa !5
  %826 = call i32 @zlacpy_(ptr noundef @.str.3, ptr noundef %62, ptr noundef %809, ptr noundef %816, ptr noundef %817, ptr noundef %824, ptr noundef %825)
  br label %827

827:                                              ; preds = %804, %801
  br label %1384

828:                                              ; preds = %241
  %829 = load ptr, ptr %45, align 8, !tbaa !5
  %830 = load i64, ptr %829, align 8, !tbaa !9
  %831 = icmp eq i64 %830, 1
  br i1 %831, label %832, label %843

832:                                              ; preds = %828
  %833 = load ptr, ptr %30, align 8, !tbaa !5
  %834 = load ptr, ptr %31, align 8, !tbaa !5
  %835 = load i64, ptr %59, align 8, !tbaa !9
  %836 = getelementptr inbounds %struct.doublecomplex, ptr %834, i64 %835
  %837 = load ptr, ptr %32, align 8, !tbaa !5
  %838 = load ptr, ptr %33, align 8, !tbaa !5
  %839 = load i64, ptr %61, align 8, !tbaa !9
  %840 = getelementptr inbounds %struct.doublecomplex, ptr %838, i64 %839
  %841 = load ptr, ptr %34, align 8, !tbaa !5
  %842 = call i32 @f2c_zcopy(ptr noundef %833, ptr noundef %836, ptr noundef %837, ptr noundef %840, ptr noundef %841)
  br label %1206

843:                                              ; preds = %828
  %844 = load ptr, ptr %45, align 8, !tbaa !5
  %845 = load i64, ptr %844, align 8, !tbaa !9
  store i64 %845, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %70, align 8, !tbaa !9
  br label %846

846:                                              ; preds = %1202, %843
  %847 = load i64, ptr %70, align 8, !tbaa !9
  %848 = load i64, ptr %62, align 8, !tbaa !9
  %849 = icmp sle i64 %847, %848
  br i1 %849, label %850, label %1205

850:                                              ; preds = %846
  %851 = load ptr, ptr %41, align 8, !tbaa !5
  %852 = load i64, ptr %70, align 8, !tbaa !9
  %853 = load i64, ptr %56, align 8, !tbaa !9
  %854 = shl i64 %853, 1
  %855 = add nsw i64 %852, %854
  %856 = getelementptr inbounds double, ptr %851, i64 %855
  %857 = load double, ptr %856, align 8, !tbaa !14
  store double %857, ptr %80, align 8, !tbaa !14
  %858 = load ptr, ptr %44, align 8, !tbaa !5
  %859 = load i64, ptr %70, align 8, !tbaa !9
  %860 = getelementptr inbounds double, ptr %858, i64 %859
  %861 = load double, ptr %860, align 8, !tbaa !14
  %862 = fcmp oeq double %861, 0.000000e+00
  br i1 %862, label %863, label %867

863:                                              ; preds = %850
  %864 = load ptr, ptr %48, align 8, !tbaa !5
  %865 = load i64, ptr %70, align 8, !tbaa !9
  %866 = getelementptr inbounds double, ptr %864, i64 %865
  store double 0.000000e+00, ptr %866, align 8, !tbaa !14
  br label %898

867:                                              ; preds = %850
  %868 = load ptr, ptr %44, align 8, !tbaa !5
  %869 = load i64, ptr %70, align 8, !tbaa !9
  %870 = getelementptr inbounds double, ptr %868, i64 %869
  %871 = load double, ptr %870, align 8, !tbaa !14
  %872 = fneg double %871
  %873 = load ptr, ptr %42, align 8, !tbaa !5
  %874 = load i64, ptr %70, align 8, !tbaa !9
  %875 = getelementptr inbounds double, ptr %873, i64 %874
  %876 = load double, ptr %875, align 8, !tbaa !14
  %877 = fdiv double %872, %876
  %878 = load double, ptr %80, align 8, !tbaa !14
  %879 = load ptr, ptr %41, align 8, !tbaa !5
  %880 = load i64, ptr %70, align 8, !tbaa !9
  %881 = load i64, ptr %56, align 8, !tbaa !9
  %882 = add nsw i64 %880, %881
  %883 = getelementptr inbounds double, ptr %879, i64 %882
  %884 = load double, ptr %883, align 8, !tbaa !14
  %885 = fadd double %878, %884
  %886 = fdiv double %877, %885
  %887 = load ptr, ptr %43, align 8, !tbaa !5
  %888 = load i64, ptr %70, align 8, !tbaa !9
  %889 = load i64, ptr %52, align 8, !tbaa !9
  %890 = shl i64 %889, 1
  %891 = add nsw i64 %888, %890
  %892 = getelementptr inbounds double, ptr %887, i64 %891
  %893 = load double, ptr %892, align 8, !tbaa !14
  %894 = fdiv double %886, %893
  %895 = load ptr, ptr %48, align 8, !tbaa !5
  %896 = load i64, ptr %70, align 8, !tbaa !9
  %897 = getelementptr inbounds double, ptr %895, i64 %896
  store double %894, ptr %897, align 8, !tbaa !14
  br label %898

898:                                              ; preds = %867, %863
  %899 = load i64, ptr %70, align 8, !tbaa !9
  %900 = sub nsw i64 %899, 1
  store i64 %900, ptr %63, align 8, !tbaa !9
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %901

901:                                              ; preds = %959, %898
  %902 = load i64, ptr %69, align 8, !tbaa !9
  %903 = load i64, ptr %63, align 8, !tbaa !9
  %904 = icmp sle i64 %902, %903
  br i1 %904, label %905, label %962

905:                                              ; preds = %901
  %906 = load ptr, ptr %44, align 8, !tbaa !5
  %907 = load i64, ptr %70, align 8, !tbaa !9
  %908 = getelementptr inbounds double, ptr %906, i64 %907
  %909 = load double, ptr %908, align 8, !tbaa !14
  %910 = fcmp oeq double %909, 0.000000e+00
  br i1 %910, label %911, label %915

911:                                              ; preds = %905
  %912 = load ptr, ptr %48, align 8, !tbaa !5
  %913 = load i64, ptr %69, align 8, !tbaa !9
  %914 = getelementptr inbounds double, ptr %912, i64 %913
  store double 0.000000e+00, ptr %914, align 8, !tbaa !14
  br label %958

915:                                              ; preds = %905
  %916 = load ptr, ptr %41, align 8, !tbaa !5
  %917 = load i64, ptr %69, align 8, !tbaa !9
  %918 = add nsw i64 %917, 1
  %919 = load i64, ptr %56, align 8, !tbaa !9
  %920 = shl i64 %919, 1
  %921 = add nsw i64 %918, %920
  %922 = getelementptr inbounds double, ptr %916, i64 %921
  %923 = load double, ptr %922, align 8, !tbaa !14
  %924 = fneg double %923
  store double %924, ptr %67, align 8, !tbaa !14
  %925 = load ptr, ptr %44, align 8, !tbaa !5
  %926 = load i64, ptr %70, align 8, !tbaa !9
  %927 = getelementptr inbounds double, ptr %925, i64 %926
  %928 = load double, ptr %927, align 8, !tbaa !14
  %929 = call double @dlamc3_(ptr noundef %80, ptr noundef %67)
  %930 = load ptr, ptr %43, align 8, !tbaa !5
  %931 = load i64, ptr %69, align 8, !tbaa !9
  %932 = load i64, ptr %52, align 8, !tbaa !9
  %933 = add nsw i64 %931, %932
  %934 = getelementptr inbounds double, ptr %930, i64 %933
  %935 = load double, ptr %934, align 8, !tbaa !14
  %936 = fsub double %929, %935
  %937 = fdiv double %928, %936
  %938 = load double, ptr %80, align 8, !tbaa !14
  %939 = load ptr, ptr %41, align 8, !tbaa !5
  %940 = load i64, ptr %69, align 8, !tbaa !9
  %941 = load i64, ptr %56, align 8, !tbaa !9
  %942 = add nsw i64 %940, %941
  %943 = getelementptr inbounds double, ptr %939, i64 %942
  %944 = load double, ptr %943, align 8, !tbaa !14
  %945 = fadd double %938, %944
  %946 = fdiv double %937, %945
  %947 = load ptr, ptr %43, align 8, !tbaa !5
  %948 = load i64, ptr %69, align 8, !tbaa !9
  %949 = load i64, ptr %52, align 8, !tbaa !9
  %950 = shl i64 %949, 1
  %951 = add nsw i64 %948, %950
  %952 = getelementptr inbounds double, ptr %947, i64 %951
  %953 = load double, ptr %952, align 8, !tbaa !14
  %954 = fdiv double %946, %953
  %955 = load ptr, ptr %48, align 8, !tbaa !5
  %956 = load i64, ptr %69, align 8, !tbaa !9
  %957 = getelementptr inbounds double, ptr %955, i64 %956
  store double %954, ptr %957, align 8, !tbaa !14
  br label %958

958:                                              ; preds = %915, %911
  br label %959

959:                                              ; preds = %958
  %960 = load i64, ptr %69, align 8, !tbaa !9
  %961 = add nsw i64 %960, 1
  store i64 %961, ptr %69, align 8, !tbaa !9
  br label %901, !llvm.loop !27

962:                                              ; preds = %901
  %963 = load ptr, ptr %45, align 8, !tbaa !5
  %964 = load i64, ptr %963, align 8, !tbaa !9
  store i64 %964, ptr %63, align 8, !tbaa !9
  %965 = load i64, ptr %70, align 8, !tbaa !9
  %966 = add nsw i64 %965, 1
  store i64 %966, ptr %69, align 8, !tbaa !9
  br label %967

967:                                              ; preds = %1022, %962
  %968 = load i64, ptr %69, align 8, !tbaa !9
  %969 = load i64, ptr %63, align 8, !tbaa !9
  %970 = icmp sle i64 %968, %969
  br i1 %970, label %971, label %1025

971:                                              ; preds = %967
  %972 = load ptr, ptr %44, align 8, !tbaa !5
  %973 = load i64, ptr %70, align 8, !tbaa !9
  %974 = getelementptr inbounds double, ptr %972, i64 %973
  %975 = load double, ptr %974, align 8, !tbaa !14
  %976 = fcmp oeq double %975, 0.000000e+00
  br i1 %976, label %977, label %981

977:                                              ; preds = %971
  %978 = load ptr, ptr %48, align 8, !tbaa !5
  %979 = load i64, ptr %69, align 8, !tbaa !9
  %980 = getelementptr inbounds double, ptr %978, i64 %979
  store double 0.000000e+00, ptr %980, align 8, !tbaa !14
  br label %1021

981:                                              ; preds = %971
  %982 = load ptr, ptr %41, align 8, !tbaa !5
  %983 = load i64, ptr %69, align 8, !tbaa !9
  %984 = load i64, ptr %56, align 8, !tbaa !9
  %985 = shl i64 %984, 1
  %986 = add nsw i64 %983, %985
  %987 = getelementptr inbounds double, ptr %982, i64 %986
  %988 = load double, ptr %987, align 8, !tbaa !14
  %989 = fneg double %988
  store double %989, ptr %67, align 8, !tbaa !14
  %990 = load ptr, ptr %44, align 8, !tbaa !5
  %991 = load i64, ptr %70, align 8, !tbaa !9
  %992 = getelementptr inbounds double, ptr %990, i64 %991
  %993 = load double, ptr %992, align 8, !tbaa !14
  %994 = call double @dlamc3_(ptr noundef %80, ptr noundef %67)
  %995 = load ptr, ptr %42, align 8, !tbaa !5
  %996 = load i64, ptr %69, align 8, !tbaa !9
  %997 = getelementptr inbounds double, ptr %995, i64 %996
  %998 = load double, ptr %997, align 8, !tbaa !14
  %999 = fsub double %994, %998
  %1000 = fdiv double %993, %999
  %1001 = load double, ptr %80, align 8, !tbaa !14
  %1002 = load ptr, ptr %41, align 8, !tbaa !5
  %1003 = load i64, ptr %69, align 8, !tbaa !9
  %1004 = load i64, ptr %56, align 8, !tbaa !9
  %1005 = add nsw i64 %1003, %1004
  %1006 = getelementptr inbounds double, ptr %1002, i64 %1005
  %1007 = load double, ptr %1006, align 8, !tbaa !14
  %1008 = fadd double %1001, %1007
  %1009 = fdiv double %1000, %1008
  %1010 = load ptr, ptr %43, align 8, !tbaa !5
  %1011 = load i64, ptr %69, align 8, !tbaa !9
  %1012 = load i64, ptr %52, align 8, !tbaa !9
  %1013 = shl i64 %1012, 1
  %1014 = add nsw i64 %1011, %1013
  %1015 = getelementptr inbounds double, ptr %1010, i64 %1014
  %1016 = load double, ptr %1015, align 8, !tbaa !14
  %1017 = fdiv double %1009, %1016
  %1018 = load ptr, ptr %48, align 8, !tbaa !5
  %1019 = load i64, ptr %69, align 8, !tbaa !9
  %1020 = getelementptr inbounds double, ptr %1018, i64 %1019
  store double %1017, ptr %1020, align 8, !tbaa !14
  br label %1021

1021:                                             ; preds = %981, %977
  br label %1022

1022:                                             ; preds = %1021
  %1023 = load i64, ptr %69, align 8, !tbaa !9
  %1024 = add nsw i64 %1023, 1
  store i64 %1024, ptr %69, align 8, !tbaa !9
  br label %967, !llvm.loop !28

1025:                                             ; preds = %967
  %1026 = load ptr, ptr %45, align 8, !tbaa !5
  %1027 = load i64, ptr %1026, align 8, !tbaa !9
  %1028 = load ptr, ptr %30, align 8, !tbaa !5
  %1029 = load i64, ptr %1028, align 8, !tbaa !9
  %1030 = shl i64 %1029, 1
  %1031 = add nsw i64 %1027, %1030
  store i64 %1031, ptr %69, align 8, !tbaa !9
  %1032 = load ptr, ptr %30, align 8, !tbaa !5
  %1033 = load i64, ptr %1032, align 8, !tbaa !9
  store i64 %1033, ptr %63, align 8, !tbaa !9
  store i64 1, ptr %75, align 8, !tbaa !9
  br label %1034

1034:                                             ; preds = %1065, %1025
  %1035 = load i64, ptr %75, align 8, !tbaa !9
  %1036 = load i64, ptr %63, align 8, !tbaa !9
  %1037 = icmp sle i64 %1035, %1036
  br i1 %1037, label %1038, label %1068

1038:                                             ; preds = %1034
  %1039 = load ptr, ptr %45, align 8, !tbaa !5
  %1040 = load i64, ptr %1039, align 8, !tbaa !9
  store i64 %1040, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %1041

1041:                                             ; preds = %1061, %1038
  %1042 = load i64, ptr %77, align 8, !tbaa !9
  %1043 = load i64, ptr %64, align 8, !tbaa !9
  %1044 = icmp sle i64 %1042, %1043
  br i1 %1044, label %1045, label %1064

1045:                                             ; preds = %1041
  %1046 = load i64, ptr %69, align 8, !tbaa !9
  %1047 = add nsw i64 %1046, 1
  store i64 %1047, ptr %69, align 8, !tbaa !9
  %1048 = load i64, ptr %77, align 8, !tbaa !9
  %1049 = load i64, ptr %75, align 8, !tbaa !9
  %1050 = load i64, ptr %58, align 8, !tbaa !9
  %1051 = mul nsw i64 %1049, %1050
  %1052 = add nsw i64 %1048, %1051
  store i64 %1052, ptr %65, align 8, !tbaa !9
  %1053 = load ptr, ptr %31, align 8, !tbaa !5
  %1054 = load i64, ptr %65, align 8, !tbaa !9
  %1055 = getelementptr inbounds %struct.doublecomplex, ptr %1053, i64 %1054
  %1056 = getelementptr inbounds %struct.doublecomplex, ptr %1055, i32 0, i32 0
  %1057 = load double, ptr %1056, align 8, !tbaa !18
  %1058 = load ptr, ptr %48, align 8, !tbaa !5
  %1059 = load i64, ptr %69, align 8, !tbaa !9
  %1060 = getelementptr inbounds double, ptr %1058, i64 %1059
  store double %1057, ptr %1060, align 8, !tbaa !14
  br label %1061

1061:                                             ; preds = %1045
  %1062 = load i64, ptr %77, align 8, !tbaa !9
  %1063 = add nsw i64 %1062, 1
  store i64 %1063, ptr %77, align 8, !tbaa !9
  br label %1041, !llvm.loop !29

1064:                                             ; preds = %1041
  br label %1065

1065:                                             ; preds = %1064
  %1066 = load i64, ptr %75, align 8, !tbaa !9
  %1067 = add nsw i64 %1066, 1
  store i64 %1067, ptr %75, align 8, !tbaa !9
  br label %1034, !llvm.loop !30

1068:                                             ; preds = %1034
  %1069 = load ptr, ptr %45, align 8, !tbaa !5
  %1070 = load ptr, ptr %30, align 8, !tbaa !5
  %1071 = load ptr, ptr %48, align 8, !tbaa !5
  %1072 = load ptr, ptr %45, align 8, !tbaa !5
  %1073 = load i64, ptr %1072, align 8, !tbaa !9
  %1074 = add nsw i64 %1073, 1
  %1075 = load ptr, ptr %30, align 8, !tbaa !5
  %1076 = load i64, ptr %1075, align 8, !tbaa !9
  %1077 = shl i64 %1076, 1
  %1078 = add nsw i64 %1074, %1077
  %1079 = getelementptr inbounds double, ptr %1071, i64 %1078
  %1080 = load ptr, ptr %45, align 8, !tbaa !5
  %1081 = load ptr, ptr %48, align 8, !tbaa !5
  %1082 = getelementptr inbounds double, ptr %1081, i64 1
  %1083 = load ptr, ptr %48, align 8, !tbaa !5
  %1084 = load ptr, ptr %45, align 8, !tbaa !5
  %1085 = load i64, ptr %1084, align 8, !tbaa !9
  %1086 = add nsw i64 %1085, 1
  %1087 = getelementptr inbounds double, ptr %1083, i64 %1086
  %1088 = call i32 @f2c_dgemv(ptr noundef @.str.1, ptr noundef %1069, ptr noundef %1070, ptr noundef @c_b13, ptr noundef %1079, ptr noundef %1080, ptr noundef %1082, ptr noundef @c__1, ptr noundef @c_b15, ptr noundef %1087, ptr noundef @c__1)
  %1089 = load ptr, ptr %45, align 8, !tbaa !5
  %1090 = load i64, ptr %1089, align 8, !tbaa !9
  %1091 = load ptr, ptr %30, align 8, !tbaa !5
  %1092 = load i64, ptr %1091, align 8, !tbaa !9
  %1093 = shl i64 %1092, 1
  %1094 = add nsw i64 %1090, %1093
  store i64 %1094, ptr %69, align 8, !tbaa !9
  %1095 = load ptr, ptr %30, align 8, !tbaa !5
  %1096 = load i64, ptr %1095, align 8, !tbaa !9
  store i64 %1096, ptr %63, align 8, !tbaa !9
  store i64 1, ptr %75, align 8, !tbaa !9
  br label %1097

1097:                                             ; preds = %1126, %1068
  %1098 = load i64, ptr %75, align 8, !tbaa !9
  %1099 = load i64, ptr %63, align 8, !tbaa !9
  %1100 = icmp sle i64 %1098, %1099
  br i1 %1100, label %1101, label %1129

1101:                                             ; preds = %1097
  %1102 = load ptr, ptr %45, align 8, !tbaa !5
  %1103 = load i64, ptr %1102, align 8, !tbaa !9
  store i64 %1103, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %1104

1104:                                             ; preds = %1122, %1101
  %1105 = load i64, ptr %77, align 8, !tbaa !9
  %1106 = load i64, ptr %64, align 8, !tbaa !9
  %1107 = icmp sle i64 %1105, %1106
  br i1 %1107, label %1108, label %1125

1108:                                             ; preds = %1104
  %1109 = load i64, ptr %69, align 8, !tbaa !9
  %1110 = add nsw i64 %1109, 1
  store i64 %1110, ptr %69, align 8, !tbaa !9
  %1111 = load ptr, ptr %31, align 8, !tbaa !5
  %1112 = load i64, ptr %77, align 8, !tbaa !9
  %1113 = load i64, ptr %75, align 8, !tbaa !9
  %1114 = load i64, ptr %58, align 8, !tbaa !9
  %1115 = mul nsw i64 %1113, %1114
  %1116 = add nsw i64 %1112, %1115
  %1117 = getelementptr inbounds %struct.doublecomplex, ptr %1111, i64 %1116
  %1118 = call double @d_imag(ptr noundef %1117)
  %1119 = load ptr, ptr %48, align 8, !tbaa !5
  %1120 = load i64, ptr %69, align 8, !tbaa !9
  %1121 = getelementptr inbounds double, ptr %1119, i64 %1120
  store double %1118, ptr %1121, align 8, !tbaa !14
  br label %1122

1122:                                             ; preds = %1108
  %1123 = load i64, ptr %77, align 8, !tbaa !9
  %1124 = add nsw i64 %1123, 1
  store i64 %1124, ptr %77, align 8, !tbaa !9
  br label %1104, !llvm.loop !31

1125:                                             ; preds = %1104
  br label %1126

1126:                                             ; preds = %1125
  %1127 = load i64, ptr %75, align 8, !tbaa !9
  %1128 = add nsw i64 %1127, 1
  store i64 %1128, ptr %75, align 8, !tbaa !9
  br label %1097, !llvm.loop !32

1129:                                             ; preds = %1097
  %1130 = load ptr, ptr %45, align 8, !tbaa !5
  %1131 = load ptr, ptr %30, align 8, !tbaa !5
  %1132 = load ptr, ptr %48, align 8, !tbaa !5
  %1133 = load ptr, ptr %45, align 8, !tbaa !5
  %1134 = load i64, ptr %1133, align 8, !tbaa !9
  %1135 = add nsw i64 %1134, 1
  %1136 = load ptr, ptr %30, align 8, !tbaa !5
  %1137 = load i64, ptr %1136, align 8, !tbaa !9
  %1138 = shl i64 %1137, 1
  %1139 = add nsw i64 %1135, %1138
  %1140 = getelementptr inbounds double, ptr %1132, i64 %1139
  %1141 = load ptr, ptr %45, align 8, !tbaa !5
  %1142 = load ptr, ptr %48, align 8, !tbaa !5
  %1143 = getelementptr inbounds double, ptr %1142, i64 1
  %1144 = load ptr, ptr %48, align 8, !tbaa !5
  %1145 = load ptr, ptr %45, align 8, !tbaa !5
  %1146 = load i64, ptr %1145, align 8, !tbaa !9
  %1147 = add nsw i64 %1146, 1
  %1148 = load ptr, ptr %30, align 8, !tbaa !5
  %1149 = load i64, ptr %1148, align 8, !tbaa !9
  %1150 = add nsw i64 %1147, %1149
  %1151 = getelementptr inbounds double, ptr %1144, i64 %1150
  %1152 = call i32 @f2c_dgemv(ptr noundef @.str.1, ptr noundef %1130, ptr noundef %1131, ptr noundef @c_b13, ptr noundef %1140, ptr noundef %1141, ptr noundef %1143, ptr noundef @c__1, ptr noundef @c_b15, ptr noundef %1151, ptr noundef @c__1)
  %1153 = load ptr, ptr %30, align 8, !tbaa !5
  %1154 = load i64, ptr %1153, align 8, !tbaa !9
  store i64 %1154, ptr %63, align 8, !tbaa !9
  store i64 1, ptr %75, align 8, !tbaa !9
  br label %1155

1155:                                             ; preds = %1198, %1129
  %1156 = load i64, ptr %75, align 8, !tbaa !9
  %1157 = load i64, ptr %63, align 8, !tbaa !9
  %1158 = icmp sle i64 %1156, %1157
  br i1 %1158, label %1159, label %1201

1159:                                             ; preds = %1155
  %1160 = load i64, ptr %70, align 8, !tbaa !9
  %1161 = load i64, ptr %75, align 8, !tbaa !9
  %1162 = load i64, ptr %60, align 8, !tbaa !9
  %1163 = mul nsw i64 %1161, %1162
  %1164 = add nsw i64 %1160, %1163
  store i64 %1164, ptr %64, align 8, !tbaa !9
  %1165 = load i64, ptr %75, align 8, !tbaa !9
  %1166 = load ptr, ptr %45, align 8, !tbaa !5
  %1167 = load i64, ptr %1166, align 8, !tbaa !9
  %1168 = add nsw i64 %1165, %1167
  store i64 %1168, ptr %65, align 8, !tbaa !9
  %1169 = load i64, ptr %75, align 8, !tbaa !9
  %1170 = load ptr, ptr %45, align 8, !tbaa !5
  %1171 = load i64, ptr %1170, align 8, !tbaa !9
  %1172 = add nsw i64 %1169, %1171
  %1173 = load ptr, ptr %30, align 8, !tbaa !5
  %1174 = load i64, ptr %1173, align 8, !tbaa !9
  %1175 = add nsw i64 %1172, %1174
  store i64 %1175, ptr %66, align 8, !tbaa !9
  %1176 = load ptr, ptr %48, align 8, !tbaa !5
  %1177 = load i64, ptr %65, align 8, !tbaa !9
  %1178 = getelementptr inbounds double, ptr %1176, i64 %1177
  %1179 = load double, ptr %1178, align 8, !tbaa !14
  %1180 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 0
  store double %1179, ptr %1180, align 8, !tbaa !18
  %1181 = load ptr, ptr %48, align 8, !tbaa !5
  %1182 = load i64, ptr %66, align 8, !tbaa !9
  %1183 = getelementptr inbounds double, ptr %1181, i64 %1182
  %1184 = load double, ptr %1183, align 8, !tbaa !14
  %1185 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 1
  store double %1184, ptr %1185, align 8, !tbaa !24
  %1186 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 0
  %1187 = load double, ptr %1186, align 8, !tbaa !18
  %1188 = load ptr, ptr %33, align 8, !tbaa !5
  %1189 = load i64, ptr %64, align 8, !tbaa !9
  %1190 = getelementptr inbounds %struct.doublecomplex, ptr %1188, i64 %1189
  %1191 = getelementptr inbounds %struct.doublecomplex, ptr %1190, i32 0, i32 0
  store double %1187, ptr %1191, align 8, !tbaa !18
  %1192 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 1
  %1193 = load double, ptr %1192, align 8, !tbaa !24
  %1194 = load ptr, ptr %33, align 8, !tbaa !5
  %1195 = load i64, ptr %64, align 8, !tbaa !9
  %1196 = getelementptr inbounds %struct.doublecomplex, ptr %1194, i64 %1195
  %1197 = getelementptr inbounds %struct.doublecomplex, ptr %1196, i32 0, i32 1
  store double %1193, ptr %1197, align 8, !tbaa !24
  br label %1198

1198:                                             ; preds = %1159
  %1199 = load i64, ptr %75, align 8, !tbaa !9
  %1200 = add nsw i64 %1199, 1
  store i64 %1200, ptr %75, align 8, !tbaa !9
  br label %1155, !llvm.loop !33

1201:                                             ; preds = %1155
  br label %1202

1202:                                             ; preds = %1201
  %1203 = load i64, ptr %70, align 8, !tbaa !9
  %1204 = add nsw i64 %1203, 1
  store i64 %1204, ptr %70, align 8, !tbaa !9
  br label %846, !llvm.loop !34

1205:                                             ; preds = %846
  br label %1206

1206:                                             ; preds = %1205, %832
  %1207 = load ptr, ptr %29, align 8, !tbaa !5
  %1208 = load i64, ptr %1207, align 8, !tbaa !9
  %1209 = icmp eq i64 %1208, 1
  br i1 %1209, label %1210, label %1240

1210:                                             ; preds = %1206
  %1211 = load ptr, ptr %30, align 8, !tbaa !5
  %1212 = load ptr, ptr %31, align 8, !tbaa !5
  %1213 = load i64, ptr %71, align 8, !tbaa !9
  %1214 = load i64, ptr %58, align 8, !tbaa !9
  %1215 = add nsw i64 %1213, %1214
  %1216 = getelementptr inbounds %struct.doublecomplex, ptr %1212, i64 %1215
  %1217 = load ptr, ptr %32, align 8, !tbaa !5
  %1218 = load ptr, ptr %33, align 8, !tbaa !5
  %1219 = load i64, ptr %71, align 8, !tbaa !9
  %1220 = load i64, ptr %60, align 8, !tbaa !9
  %1221 = add nsw i64 %1219, %1220
  %1222 = getelementptr inbounds %struct.doublecomplex, ptr %1218, i64 %1221
  %1223 = load ptr, ptr %34, align 8, !tbaa !5
  %1224 = call i32 @f2c_zcopy(ptr noundef %1211, ptr noundef %1216, ptr noundef %1217, ptr noundef %1222, ptr noundef %1223)
  %1225 = load ptr, ptr %30, align 8, !tbaa !5
  %1226 = load ptr, ptr %33, align 8, !tbaa !5
  %1227 = load i64, ptr %60, align 8, !tbaa !9
  %1228 = add nsw i64 %1227, 1
  %1229 = getelementptr inbounds %struct.doublecomplex, ptr %1226, i64 %1228
  %1230 = load ptr, ptr %34, align 8, !tbaa !5
  %1231 = load ptr, ptr %33, align 8, !tbaa !5
  %1232 = load i64, ptr %71, align 8, !tbaa !9
  %1233 = load i64, ptr %60, align 8, !tbaa !9
  %1234 = add nsw i64 %1232, %1233
  %1235 = getelementptr inbounds %struct.doublecomplex, ptr %1231, i64 %1234
  %1236 = load ptr, ptr %34, align 8, !tbaa !5
  %1237 = load ptr, ptr %46, align 8, !tbaa !5
  %1238 = load ptr, ptr %47, align 8, !tbaa !5
  %1239 = call i32 @f2c_zdrot(ptr noundef %1225, ptr noundef %1229, ptr noundef %1230, ptr noundef %1235, ptr noundef %1236, ptr noundef %1237, ptr noundef %1238)
  br label %1240

1240:                                             ; preds = %1210, %1206
  %1241 = load ptr, ptr %45, align 8, !tbaa !5
  %1242 = load i64, ptr %1241, align 8, !tbaa !9
  %1243 = load i64, ptr %71, align 8, !tbaa !9
  %1244 = load i64, ptr %72, align 8, !tbaa !9
  %1245 = icmp sge i64 %1243, %1244
  br i1 %1245, label %1246, label %1248

1246:                                             ; preds = %1240
  %1247 = load i64, ptr %71, align 8, !tbaa !9
  br label %1250

1248:                                             ; preds = %1240
  %1249 = load i64, ptr %72, align 8, !tbaa !9
  br label %1250

1250:                                             ; preds = %1248, %1246
  %1251 = phi i64 [ %1247, %1246 ], [ %1249, %1248 ]
  %1252 = icmp slt i64 %1242, %1251
  br i1 %1252, label %1253, label %1276

1253:                                             ; preds = %1250
  %1254 = load i64, ptr %72, align 8, !tbaa !9
  %1255 = load ptr, ptr %45, align 8, !tbaa !5
  %1256 = load i64, ptr %1255, align 8, !tbaa !9
  %1257 = sub nsw i64 %1254, %1256
  store i64 %1257, ptr %62, align 8, !tbaa !9
  %1258 = load ptr, ptr %30, align 8, !tbaa !5
  %1259 = load ptr, ptr %31, align 8, !tbaa !5
  %1260 = load ptr, ptr %45, align 8, !tbaa !5
  %1261 = load i64, ptr %1260, align 8, !tbaa !9
  %1262 = add nsw i64 %1261, 1
  %1263 = load i64, ptr %58, align 8, !tbaa !9
  %1264 = add nsw i64 %1262, %1263
  %1265 = getelementptr inbounds %struct.doublecomplex, ptr %1259, i64 %1264
  %1266 = load ptr, ptr %32, align 8, !tbaa !5
  %1267 = load ptr, ptr %33, align 8, !tbaa !5
  %1268 = load ptr, ptr %45, align 8, !tbaa !5
  %1269 = load i64, ptr %1268, align 8, !tbaa !9
  %1270 = add nsw i64 %1269, 1
  %1271 = load i64, ptr %60, align 8, !tbaa !9
  %1272 = add nsw i64 %1270, %1271
  %1273 = getelementptr inbounds %struct.doublecomplex, ptr %1267, i64 %1272
  %1274 = load ptr, ptr %34, align 8, !tbaa !5
  %1275 = call i32 @zlacpy_(ptr noundef @.str.3, ptr noundef %62, ptr noundef %1258, ptr noundef %1265, ptr noundef %1266, ptr noundef %1273, ptr noundef %1274)
  br label %1276

1276:                                             ; preds = %1253, %1250
  %1277 = load ptr, ptr %30, align 8, !tbaa !5
  %1278 = load ptr, ptr %33, align 8, !tbaa !5
  %1279 = load i64, ptr %60, align 8, !tbaa !9
  %1280 = add nsw i64 %1279, 1
  %1281 = getelementptr inbounds %struct.doublecomplex, ptr %1278, i64 %1280
  %1282 = load ptr, ptr %34, align 8, !tbaa !5
  %1283 = load ptr, ptr %31, align 8, !tbaa !5
  %1284 = load i64, ptr %74, align 8, !tbaa !9
  %1285 = load i64, ptr %58, align 8, !tbaa !9
  %1286 = add nsw i64 %1284, %1285
  %1287 = getelementptr inbounds %struct.doublecomplex, ptr %1283, i64 %1286
  %1288 = load ptr, ptr %32, align 8, !tbaa !5
  %1289 = call i32 @f2c_zcopy(ptr noundef %1277, ptr noundef %1281, ptr noundef %1282, ptr noundef %1287, ptr noundef %1288)
  %1290 = load ptr, ptr %29, align 8, !tbaa !5
  %1291 = load i64, ptr %1290, align 8, !tbaa !9
  %1292 = icmp eq i64 %1291, 1
  br i1 %1292, label %1293, label %1308

1293:                                             ; preds = %1276
  %1294 = load ptr, ptr %30, align 8, !tbaa !5
  %1295 = load ptr, ptr %33, align 8, !tbaa !5
  %1296 = load i64, ptr %71, align 8, !tbaa !9
  %1297 = load i64, ptr %60, align 8, !tbaa !9
  %1298 = add nsw i64 %1296, %1297
  %1299 = getelementptr inbounds %struct.doublecomplex, ptr %1295, i64 %1298
  %1300 = load ptr, ptr %34, align 8, !tbaa !5
  %1301 = load ptr, ptr %31, align 8, !tbaa !5
  %1302 = load i64, ptr %71, align 8, !tbaa !9
  %1303 = load i64, ptr %58, align 8, !tbaa !9
  %1304 = add nsw i64 %1302, %1303
  %1305 = getelementptr inbounds %struct.doublecomplex, ptr %1301, i64 %1304
  %1306 = load ptr, ptr %32, align 8, !tbaa !5
  %1307 = call i32 @f2c_zcopy(ptr noundef %1294, ptr noundef %1299, ptr noundef %1300, ptr noundef %1305, ptr noundef %1306)
  br label %1308

1308:                                             ; preds = %1293, %1276
  %1309 = load i64, ptr %72, align 8, !tbaa !9
  store i64 %1309, ptr %62, align 8, !tbaa !9
  store i64 2, ptr %69, align 8, !tbaa !9
  br label %1310

1310:                                             ; preds = %1332, %1308
  %1311 = load i64, ptr %69, align 8, !tbaa !9
  %1312 = load i64, ptr %62, align 8, !tbaa !9
  %1313 = icmp sle i64 %1311, %1312
  br i1 %1313, label %1314, label %1335

1314:                                             ; preds = %1310
  %1315 = load ptr, ptr %30, align 8, !tbaa !5
  %1316 = load ptr, ptr %33, align 8, !tbaa !5
  %1317 = load i64, ptr %69, align 8, !tbaa !9
  %1318 = load i64, ptr %60, align 8, !tbaa !9
  %1319 = add nsw i64 %1317, %1318
  %1320 = getelementptr inbounds %struct.doublecomplex, ptr %1316, i64 %1319
  %1321 = load ptr, ptr %34, align 8, !tbaa !5
  %1322 = load ptr, ptr %31, align 8, !tbaa !5
  %1323 = load ptr, ptr %35, align 8, !tbaa !5
  %1324 = load i64, ptr %69, align 8, !tbaa !9
  %1325 = getelementptr inbounds i64, ptr %1323, i64 %1324
  %1326 = load i64, ptr %1325, align 8, !tbaa !9
  %1327 = load i64, ptr %58, align 8, !tbaa !9
  %1328 = add nsw i64 %1326, %1327
  %1329 = getelementptr inbounds %struct.doublecomplex, ptr %1322, i64 %1328
  %1330 = load ptr, ptr %32, align 8, !tbaa !5
  %1331 = call i32 @f2c_zcopy(ptr noundef %1315, ptr noundef %1320, ptr noundef %1321, ptr noundef %1329, ptr noundef %1330)
  br label %1332

1332:                                             ; preds = %1314
  %1333 = load i64, ptr %69, align 8, !tbaa !9
  %1334 = add nsw i64 %1333, 1
  store i64 %1334, ptr %69, align 8, !tbaa !9
  br label %1310, !llvm.loop !35

1335:                                             ; preds = %1310
  %1336 = load ptr, ptr %36, align 8, !tbaa !5
  %1337 = load i64, ptr %1336, align 8, !tbaa !9
  store i64 %1337, ptr %69, align 8, !tbaa !9
  br label %1338

1338:                                             ; preds = %1380, %1335
  %1339 = load i64, ptr %69, align 8, !tbaa !9
  %1340 = icmp sge i64 %1339, 1
  br i1 %1340, label %1341, label %1383

1341:                                             ; preds = %1338
  %1342 = load ptr, ptr %39, align 8, !tbaa !5
  %1343 = load i64, ptr %69, align 8, !tbaa !9
  %1344 = load i64, ptr %54, align 8, !tbaa !9
  %1345 = add nsw i64 %1343, %1344
  %1346 = getelementptr inbounds double, ptr %1342, i64 %1345
  %1347 = load double, ptr %1346, align 8, !tbaa !14
  %1348 = fneg double %1347
  store double %1348, ptr %67, align 8, !tbaa !14
  %1349 = load ptr, ptr %30, align 8, !tbaa !5
  %1350 = load ptr, ptr %31, align 8, !tbaa !5
  %1351 = load ptr, ptr %37, align 8, !tbaa !5
  %1352 = load i64, ptr %69, align 8, !tbaa !9
  %1353 = load i64, ptr %50, align 8, !tbaa !9
  %1354 = shl i64 %1353, 1
  %1355 = add nsw i64 %1352, %1354
  %1356 = getelementptr inbounds i64, ptr %1351, i64 %1355
  %1357 = load i64, ptr %1356, align 8, !tbaa !9
  %1358 = load i64, ptr %58, align 8, !tbaa !9
  %1359 = add nsw i64 %1357, %1358
  %1360 = getelementptr inbounds %struct.doublecomplex, ptr %1350, i64 %1359
  %1361 = load ptr, ptr %32, align 8, !tbaa !5
  %1362 = load ptr, ptr %31, align 8, !tbaa !5
  %1363 = load ptr, ptr %37, align 8, !tbaa !5
  %1364 = load i64, ptr %69, align 8, !tbaa !9
  %1365 = load i64, ptr %50, align 8, !tbaa !9
  %1366 = add nsw i64 %1364, %1365
  %1367 = getelementptr inbounds i64, ptr %1363, i64 %1366
  %1368 = load i64, ptr %1367, align 8, !tbaa !9
  %1369 = load i64, ptr %58, align 8, !tbaa !9
  %1370 = add nsw i64 %1368, %1369
  %1371 = getelementptr inbounds %struct.doublecomplex, ptr %1362, i64 %1370
  %1372 = load ptr, ptr %32, align 8, !tbaa !5
  %1373 = load ptr, ptr %39, align 8, !tbaa !5
  %1374 = load i64, ptr %69, align 8, !tbaa !9
  %1375 = load i64, ptr %54, align 8, !tbaa !9
  %1376 = shl i64 %1375, 1
  %1377 = add nsw i64 %1374, %1376
  %1378 = getelementptr inbounds double, ptr %1373, i64 %1377
  %1379 = call i32 @f2c_zdrot(ptr noundef %1349, ptr noundef %1360, ptr noundef %1361, ptr noundef %1371, ptr noundef %1372, ptr noundef %1378, ptr noundef %67)
  br label %1380

1380:                                             ; preds = %1341
  %1381 = load i64, ptr %69, align 8, !tbaa !9
  %1382 = add nsw i64 %1381, -1
  store i64 %1382, ptr %69, align 8, !tbaa !9
  br label %1338, !llvm.loop !36

1383:                                             ; preds = %1338
  br label %1384

1384:                                             ; preds = %1383, %827
  store i32 0, ptr %25, align 4
  store i32 1, ptr %82, align 4
  br label %1385

1385:                                             ; preds = %1384, %236
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  %1386 = load i32, ptr %25, align 4
  ret i32 %1386
}

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

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

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

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

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

declare double @dlamc3_(ptr noundef, ptr noundef) #2

declare double @f2c_dnrm2(ptr noundef, ptr noundef, ptr noundef) #2

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

declare double @d_imag(ptr noundef) #2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = !{!15, !15, i64 0}
!15 = !{!"double", !7, i64 0}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = !{!19, !15, i64 0}
!19 = !{!"", !15, i64 0, !15, i64 8}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = !{!19, !15, i64 8}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12}
!33 = distinct !{!33, !12}
!34 = distinct !{!34, !12}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12}


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

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@c_b5 = external hidden global double, align 8
@c__1 = external hidden global i64, align 8
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b13 = external hidden global double, align 8
@c_b15 = external hidden global double, align 8
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zlals0_(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr nocapture noundef readonly %9, ptr nocapture noundef readonly %10, ptr nocapture noundef readonly %11, ptr nocapture noundef readonly %12, ptr noundef %13, ptr nocapture noundef readonly %14, ptr noundef %15, ptr nocapture noundef readonly %16, ptr nocapture noundef readonly %17, ptr nocapture noundef readonly %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23) local_unnamed_addr #0 {
  %25 = alloca i64, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #4
  %30 = load i64, ptr %6, align 8, !tbaa !5
  %31 = xor i64 %30, -1
  %32 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %31
  %33 = load i64, ptr %8, align 8, !tbaa !5
  %34 = xor i64 %33, -1
  %35 = getelementptr inbounds %struct.doublecomplex, ptr %7, i64 %34
  %36 = getelementptr inbounds i8, ptr %9, i64 -8
  %37 = load i64, ptr %12, align 8, !tbaa !5
  %38 = xor i64 %37, -1
  %39 = getelementptr inbounds i64, ptr %11, i64 %38
  %40 = load i64, ptr %14, align 8, !tbaa !5
  %41 = xor i64 %40, -1
  %42 = getelementptr inbounds double, ptr %17, i64 %41
  %43 = getelementptr inbounds double, ptr %15, i64 %41
  %44 = getelementptr inbounds double, ptr %13, i64 %41
  %45 = getelementptr inbounds i8, ptr %16, i64 -8
  %46 = getelementptr inbounds i8, ptr %18, i64 -8
  %47 = getelementptr inbounds i8, ptr %22, i64 -8
  store i64 0, ptr %23, align 8, !tbaa !5
  %48 = load i64, ptr %0, align 8, !tbaa !5
  %or.cond = icmp ugt i64 %48, 1
  br i1 %or.cond, label %.sink.split, label %49

49:                                               ; preds = %24
  %50 = load i64, ptr %1, align 8, !tbaa !5
  %51 = icmp slt i64 %50, 1
  br i1 %51, label %.sink.split, label %52

52:                                               ; preds = %49
  %53 = load i64, ptr %2, align 8, !tbaa !5
  %54 = icmp slt i64 %53, 1
  br i1 %54, label %.sink.split, label %55

55:                                               ; preds = %52
  %56 = load i64, ptr %3, align 8, !tbaa !5
  %or.cond616 = icmp ugt i64 %56, 1
  br i1 %or.cond616, label %.sink.split, label %57

.sink.split:                                      ; preds = %55, %52, %49, %24
  %.sink795 = phi i64 [ -1, %24 ], [ -2, %49 ], [ -3, %52 ], [ -4, %55 ]
  %.pr.neg.ph = phi i64 [ 1, %24 ], [ 2, %49 ], [ 3, %52 ], [ 4, %55 ]
  store i64 %.sink795, ptr %23, align 8, !tbaa !5
  br label %57

57:                                               ; preds = %.sink.split, %55
  %.not587 = phi i1 [ true, %55 ], [ false, %.sink.split ]
  %.pr.neg = phi i64 [ 0, %55 ], [ %.pr.neg.ph, %.sink.split ]
  %58 = load i64, ptr %1, align 8, !tbaa !5
  %59 = load i64, ptr %2, align 8, !tbaa !5
  %60 = add i64 %59, %58
  %61 = add nsw i64 %60, 1
  %62 = load i64, ptr %4, align 8, !tbaa !5
  %63 = icmp slt i64 %62, 1
  br i1 %63, label %.thread.sink.split, label %64

64:                                               ; preds = %57
  %65 = load i64, ptr %6, align 8, !tbaa !5
  %.not = icmp sgt i64 %65, %60
  br i1 %.not, label %66, label %.thread.sink.split

66:                                               ; preds = %64
  %67 = load i64, ptr %8, align 8, !tbaa !5
  %.not584 = icmp sgt i64 %67, %60
  br i1 %.not584, label %68, label %.thread.sink.split

68:                                               ; preds = %66
  %69 = load i64, ptr %10, align 8, !tbaa !5
  %70 = icmp slt i64 %69, 0
  br i1 %70, label %.thread.sink.split, label %71

71:                                               ; preds = %68
  %72 = load i64, ptr %12, align 8, !tbaa !5
  %.not585 = icmp sgt i64 %72, %60
  br i1 %.not585, label %73, label %.thread.sink.split

73:                                               ; preds = %71
  %74 = load i64, ptr %14, align 8, !tbaa !5
  %.not586 = icmp sgt i64 %74, %60
  br i1 %.not586, label %75, label %.thread.sink.split

75:                                               ; preds = %73
  %76 = load i64, ptr %19, align 8, !tbaa !5
  %77 = icmp slt i64 %76, 1
  br i1 %77, label %.thread.sink.split, label %78

78:                                               ; preds = %75
  br i1 %.not587, label %80, label %.thread

.thread.sink.split:                               ; preds = %75, %73, %71, %68, %66, %64, %57
  %.sink796 = phi i64 [ -5, %57 ], [ -7, %64 ], [ -9, %66 ], [ -11, %68 ], [ -13, %71 ], [ -15, %73 ], [ -20, %75 ]
  %.neg.ph = phi i64 [ 5, %57 ], [ 7, %64 ], [ 9, %66 ], [ 11, %68 ], [ 13, %71 ], [ 15, %73 ], [ 20, %75 ]
  store i64 %.sink796, ptr %23, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %78
  %.neg = phi i64 [ %.pr.neg, %78 ], [ %.neg.ph, %.thread.sink.split ]
  store i64 %.neg, ptr %25, align 8, !tbaa !5
  %79 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %25) #4
  br label %.loopexit619

80:                                               ; preds = %78
  %81 = load i64, ptr %3, align 8, !tbaa !5
  %82 = add nsw i64 %81, %61
  %83 = load i64, ptr %0, align 8, !tbaa !5
  %84 = icmp eq i64 %83, 0
  br i1 %84, label %85, label %308

85:                                               ; preds = %80
  %invariant.gep689 = getelementptr i8, ptr %5, i64 -16
  %.not601693 = icmp eq i64 %69, 0
  br i1 %.not601693, label %._crit_edge697, label %.lr.ph696

.lr.ph696:                                        ; preds = %85
  %.idx614 = shl i64 %37, 4
  %.idx615 = shl i64 %40, 4
  br label %86

86:                                               ; preds = %.lr.ph696, %86
  %.0563694 = phi i64 [ 1, %.lr.ph696 ], [ %96, %86 ]
  %87 = getelementptr i64, ptr %39, i64 %.0563694
  %88 = getelementptr i8, ptr %87, i64 %.idx614
  %89 = load i64, ptr %88, align 8, !tbaa !5
  %gep690 = getelementptr %struct.doublecomplex, ptr %invariant.gep689, i64 %89
  %90 = getelementptr i64, ptr %87, i64 %37
  %91 = load i64, ptr %90, align 8, !tbaa !5
  %gep692 = getelementptr %struct.doublecomplex, ptr %invariant.gep689, i64 %91
  %92 = getelementptr double, ptr %44, i64 %.0563694
  %93 = getelementptr i8, ptr %92, i64 %.idx615
  %94 = getelementptr double, ptr %92, i64 %40
  %95 = tail call i32 @f2c_zdrot(ptr noundef nonnull %4, ptr noundef %gep690, ptr noundef nonnull %6, ptr noundef %gep692, ptr noundef nonnull %6, ptr noundef %93, ptr noundef %94) #4
  %96 = add nuw i64 %.0563694, 1
  %exitcond774.not = icmp eq i64 %.0563694, %69
  br i1 %exitcond774.not, label %._crit_edge697, label %86, !llvm.loop !9

._crit_edge697:                                   ; preds = %86, %85
  %97 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %58
  %98 = tail call i32 @f2c_zcopy(ptr noundef nonnull %4, ptr noundef %97, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8) #4
  %invariant.gep700 = getelementptr i8, ptr %7, i64 -16
  %.not602702 = icmp slt i64 %60, 1
  br i1 %.not602702, label %._crit_edge706, label %.lr.ph705.preheader

.lr.ph705.preheader:                              ; preds = %._crit_edge697
  %99 = add nuw i64 %60, 1
  br label %.lr.ph705

.lr.ph705:                                        ; preds = %.lr.ph705.preheader, %.lr.ph705
  %.1564703 = phi i64 [ %103, %.lr.ph705 ], [ 2, %.lr.ph705.preheader ]
  %100 = getelementptr inbounds i64, ptr %36, i64 %.1564703
  %101 = load i64, ptr %100, align 8, !tbaa !5
  %gep699 = getelementptr %struct.doublecomplex, ptr %invariant.gep689, i64 %101
  %gep701 = getelementptr %struct.doublecomplex, ptr %invariant.gep700, i64 %.1564703
  %102 = tail call i32 @f2c_zcopy(ptr noundef nonnull %4, ptr noundef %gep699, ptr noundef nonnull %6, ptr noundef %gep701, ptr noundef nonnull %8) #4
  %103 = add nuw i64 %.1564703, 1
  %exitcond775 = icmp eq i64 %.1564703, %99
  br i1 %exitcond775, label %._crit_edge706, label %.lr.ph705, !llvm.loop !11

._crit_edge706:                                   ; preds = %.lr.ph705, %._crit_edge697
  %104 = load i64, ptr %19, align 8, !tbaa !5
  %105 = icmp eq i64 %104, 1
  br i1 %105, label %106, label %112

106:                                              ; preds = %._crit_edge706
  %107 = tail call i32 @f2c_zcopy(ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %5, ptr noundef nonnull %6) #4
  %108 = load double, ptr %18, align 8, !tbaa !12
  %109 = fcmp olt double %108, 0.000000e+00
  br i1 %109, label %110, label %.loopexit

110:                                              ; preds = %106
  %111 = tail call i32 @f2c_zdscal(ptr noundef nonnull %4, ptr noundef nonnull @c_b5, ptr noundef %5, ptr noundef nonnull %6) #4
  br label %.loopexit

112:                                              ; preds = %._crit_edge706
  store i64 %104, ptr %25, align 8, !tbaa !5
  %.not603757 = icmp slt i64 %104, 1
  br i1 %.not603757, label %.loopexit, label %.lr.ph761

.lr.ph761:                                        ; preds = %112
  %113 = shl i64 %40, 1
  %invariant.gep707 = getelementptr double, ptr %43, i64 %113
  %scevgep897 = getelementptr i8, ptr %7, i64 -8
  %114 = shl i64 %33, 4
  %stride.check902 = icmp slt i64 %114, 0
  %invariant.gep956 = getelementptr i8, ptr %22, i64 8
  %invariant.gep960 = getelementptr i8, ptr %22, i64 16
  %invariant.gep962 = getelementptr i8, ptr %22, i64 24
  %ident.check850 = icmp ne i64 %30, 1
  br label %115

115:                                              ; preds = %.lr.ph761, %._crit_edge752
  %indvar851 = phi i64 [ 0, %.lr.ph761 ], [ %indvar.next852, %._crit_edge752 ]
  %.0759 = phi double [ undef, %.lr.ph761 ], [ %.1, %._crit_edge752 ]
  %.0561758 = phi i64 [ 1, %.lr.ph761 ], [ %166, %._crit_edge752 ]
  %116 = shl i64 %indvar851, 4
  %scevgep862 = getelementptr i8, ptr %5, i64 %116
  %117 = shl i64 %indvar851, 4
  %scevgep853 = getelementptr i8, ptr %5, i64 %117
  %118 = or disjoint i64 %117, 8
  %scevgep857 = getelementptr i8, ptr %5, i64 %118
  %119 = getelementptr inbounds double, ptr %45, i64 %.0561758
  %120 = load double, ptr %119, align 8, !tbaa !12
  %121 = add nsw i64 %.0561758, %40
  %122 = getelementptr inbounds double, ptr %43, i64 %121
  %123 = load double, ptr %122, align 8, !tbaa !12
  %124 = getelementptr double, ptr %43, i64 %.0561758
  %125 = getelementptr double, ptr %124, i64 %113
  %126 = load double, ptr %125, align 8, !tbaa !12
  %127 = fneg double %126
  store double %127, ptr %28, align 8, !tbaa !12
  %128 = load i64, ptr %19, align 8, !tbaa !5
  %129 = icmp slt i64 %.0561758, %128
  br i1 %129, label %130, label %138

130:                                              ; preds = %115
  %131 = getelementptr inbounds double, ptr %42, i64 %121
  %132 = load double, ptr %131, align 8, !tbaa !12
  %133 = fneg double %132
  %134 = getelementptr i8, ptr %124, i64 8
  %135 = getelementptr double, ptr %134, i64 %113
  %136 = load double, ptr %135, align 8, !tbaa !12
  %137 = fneg double %136
  store double %137, ptr %29, align 8, !tbaa !12
  br label %138

138:                                              ; preds = %130, %115
  %.1 = phi double [ %133, %130 ], [ %.0759, %115 ]
  %139 = getelementptr inbounds double, ptr %46, i64 %.0561758
  %140 = load double, ptr %139, align 8, !tbaa !12
  %141 = fcmp oeq double %140, 0.000000e+00
  %142 = fcmp oeq double %126, 0.000000e+00
  %or.cond618 = select i1 %141, i1 true, i1 %142
  %143 = fmul double %140, %127
  %144 = fdiv double %143, %120
  %145 = fadd double %123, %126
  %146 = fdiv double %144, %145
  %.sink = select i1 %or.cond618, double 0.000000e+00, double %146
  %147 = getelementptr inbounds double, ptr %47, i64 %.0561758
  store double %.sink, ptr %147, align 8
  %.not604.not709 = icmp ugt i64 %.0561758, 1
  br i1 %.not604.not709, label %.lr.ph712, label %._crit_edge713

.lr.ph712:                                        ; preds = %138, %162
  %.2565710 = phi i64 [ %164, %162 ], [ 1, %138 ]
  %148 = getelementptr inbounds double, ptr %46, i64 %.2565710
  %149 = load double, ptr %148, align 8, !tbaa !12
  %150 = fcmp oeq double %149, 0.000000e+00
  br i1 %150, label %162, label %151

151:                                              ; preds = %.lr.ph712
  %gep708 = getelementptr double, ptr %invariant.gep707, i64 %.2565710
  %152 = load double, ptr %gep708, align 8, !tbaa !12
  %153 = fcmp oeq double %152, 0.000000e+00
  br i1 %153, label %162, label %154

154:                                              ; preds = %151
  %155 = fmul double %149, %152
  %156 = call double @dlamc3_(ptr noundef nonnull %gep708, ptr noundef nonnull %28) #4
  %157 = fsub double %156, %120
  %158 = fdiv double %155, %157
  %159 = load double, ptr %gep708, align 8, !tbaa !12
  %160 = fadd double %123, %159
  %161 = fdiv double %158, %160
  br label %162

162:                                              ; preds = %.lr.ph712, %151, %154
  %.sink797 = phi double [ %161, %154 ], [ 0.000000e+00, %151 ], [ 0.000000e+00, %.lr.ph712 ]
  %163 = getelementptr inbounds double, ptr %47, i64 %.2565710
  store double %.sink797, ptr %163, align 8, !tbaa !12
  %164 = add nuw nsw i64 %.2565710, 1
  %exitcond776.not = icmp eq i64 %164, %.0561758
  br i1 %exitcond776.not, label %._crit_edge713, label %.lr.ph712, !llvm.loop !14

._crit_edge713:                                   ; preds = %162, %138
  %165 = load i64, ptr %19, align 8, !tbaa !5
  %166 = add nuw nsw i64 %.0561758, 1
  %.not605716.not = icmp slt i64 %.0561758, %165
  br i1 %.not605716.not, label %.lr.ph719, label %._crit_edge720

.lr.ph719:                                        ; preds = %._crit_edge713, %181
  %.3566717 = phi i64 [ %183, %181 ], [ %166, %._crit_edge713 ]
  %167 = getelementptr inbounds double, ptr %46, i64 %.3566717
  %168 = load double, ptr %167, align 8, !tbaa !12
  %169 = fcmp oeq double %168, 0.000000e+00
  br i1 %169, label %181, label %170

170:                                              ; preds = %.lr.ph719
  %gep715 = getelementptr double, ptr %invariant.gep707, i64 %.3566717
  %171 = load double, ptr %gep715, align 8, !tbaa !12
  %172 = fcmp oeq double %171, 0.000000e+00
  br i1 %172, label %181, label %173

173:                                              ; preds = %170
  %174 = fmul double %168, %171
  %175 = call double @dlamc3_(ptr noundef nonnull %gep715, ptr noundef nonnull %29) #4
  %176 = fadd double %.1, %175
  %177 = fdiv double %174, %176
  %178 = load double, ptr %gep715, align 8, !tbaa !12
  %179 = fadd double %123, %178
  %180 = fdiv double %177, %179
  br label %181

181:                                              ; preds = %.lr.ph719, %170, %173
  %.sink799 = phi double [ %180, %173 ], [ 0.000000e+00, %170 ], [ 0.000000e+00, %.lr.ph719 ]
  %182 = getelementptr inbounds double, ptr %47, i64 %.3566717
  store double %.sink799, ptr %182, align 8, !tbaa !12
  %183 = add nuw nsw i64 %.3566717, 1
  %.not605.not = icmp slt i64 %.3566717, %165
  br i1 %.not605.not, label %.lr.ph719, label %._crit_edge720, !llvm.loop !15

._crit_edge720:                                   ; preds = %181, %._crit_edge713
  store double -1.000000e+00, ptr %22, align 8, !tbaa !12
  %184 = call double @f2c_dnrm2(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef nonnull @c__1) #4
  store double %184, ptr %27, align 8, !tbaa !12
  %185 = load i64, ptr %19, align 8, !tbaa !5
  %186 = load i64, ptr %4, align 8, !tbaa !5
  %.not606729 = icmp slt i64 %186, 1
  %.not612721 = icmp slt i64 %185, 1
  %or.cond801 = select i1 %.not606729, i1 true, i1 %.not612721
  br i1 %or.cond801, label %._crit_edge732, label %.preheader.preheader

.preheader.preheader:                             ; preds = %._crit_edge720
  %187 = shl nuw i64 %186, 1
  %188 = add nsw i64 %187, %185
  %189 = shl i64 %185, 3
  %scevgep895 = getelementptr i8, ptr %22, i64 %189
  %190 = add nsw i64 %186, -1
  %191 = mul i64 %114, %190
  %192 = shl i64 %185, 4
  %193 = getelementptr i8, ptr %scevgep897, i64 %191
  %scevgep898 = getelementptr i8, ptr %193, i64 %192
  %194 = add nuw i64 %185, 1
  %min.iters.check905 = icmp ult i64 %185, 6
  %n.vec908 = and i64 %185, 9223372036854775804
  %ind.end909 = or disjoint i64 %n.vec908, 1
  %cmp.n918 = icmp eq i64 %185, %n.vec908
  br label %.preheader

.preheader:                                       ; preds = %.preheader.preheader, %._crit_edge725
  %.0557731 = phi i64 [ %230, %._crit_edge725 ], [ 1, %.preheader.preheader ]
  %.4567730 = phi i64 [ %.lcssa, %._crit_edge725 ], [ %188, %.preheader.preheader ]
  %195 = mul nsw i64 %.0557731, %33
  %invariant.gep727 = getelementptr %struct.doublecomplex, ptr %35, i64 %195
  br i1 %min.iters.check905, label %scalar.ph904.preheader, label %vector.memcheck893

vector.memcheck893:                               ; preds = %.preheader
  %196 = shl i64 %.4567730, 3
  %scevgep894 = getelementptr i8, ptr %22, i64 %196
  %scevgep896 = getelementptr i8, ptr %scevgep895, i64 %196
  %bound0899 = icmp ult ptr %scevgep894, %scevgep898
  %bound1900 = icmp ugt ptr %scevgep896, %7
  %found.conflict901 = and i1 %bound0899, %bound1900
  %197 = or i1 %found.conflict901, %stride.check902
  br i1 %197, label %scalar.ph904.preheader, label %vector.ph906

vector.ph906:                                     ; preds = %vector.memcheck893
  %ind.end911 = add i64 %.4567730, %n.vec908
  %invariant.gep952 = getelementptr i8, ptr %invariant.gep727, i64 64
  %198 = getelementptr double, ptr %22, i64 %.4567730
  br label %vector.body913

vector.body913:                                   ; preds = %vector.body913, %vector.ph906
  %index914 = phi i64 [ 0, %vector.ph906 ], [ %index.next917, %vector.body913 ]
  %offset.idx915 = or disjoint i64 %index914, 1
  %199 = or disjoint i64 %index914, 2
  %200 = or disjoint i64 %index914, 3
  %201 = getelementptr %struct.doublecomplex, ptr %invariant.gep727, i64 %offset.idx915
  %202 = getelementptr %struct.doublecomplex, ptr %invariant.gep727, i64 %199
  %203 = getelementptr %struct.doublecomplex, ptr %invariant.gep727, i64 %200
  %gep953 = getelementptr %struct.doublecomplex, ptr %invariant.gep952, i64 %index914
  %204 = load double, ptr %201, align 8, !tbaa !16, !alias.scope !18
  %205 = load double, ptr %202, align 8, !tbaa !16, !alias.scope !18
  %206 = insertelement <2 x double> poison, double %204, i64 0
  %207 = insertelement <2 x double> %206, double %205, i64 1
  %208 = load double, ptr %203, align 8, !tbaa !16, !alias.scope !18
  %209 = load double, ptr %gep953, align 8, !tbaa !16, !alias.scope !18
  %210 = insertelement <2 x double> poison, double %208, i64 0
  %211 = insertelement <2 x double> %210, double %209, i64 1
  %212 = getelementptr double, ptr %198, i64 %index914
  %213 = getelementptr i8, ptr %212, i64 16
  store <2 x double> %207, ptr %212, align 8, !tbaa !12, !alias.scope !21, !noalias !18
  store <2 x double> %211, ptr %213, align 8, !tbaa !12, !alias.scope !21, !noalias !18
  %index.next917 = add nuw i64 %index914, 4
  %214 = icmp eq i64 %index.next917, %n.vec908
  br i1 %214, label %middle.block903, label %vector.body913, !llvm.loop !23

middle.block903:                                  ; preds = %vector.body913
  br i1 %cmp.n918, label %._crit_edge725, label %scalar.ph904.preheader

scalar.ph904.preheader:                           ; preds = %middle.block903, %vector.memcheck893, %.preheader
  %.0555723.ph = phi i64 [ 1, %vector.memcheck893 ], [ 1, %.preheader ], [ %ind.end909, %middle.block903 ]
  %.5568722.ph = phi i64 [ %.4567730, %vector.memcheck893 ], [ %.4567730, %.preheader ], [ %ind.end911, %middle.block903 ]
  %215 = sub i64 %194, %.0555723.ph
  %216 = sub i64 %185, %.0555723.ph
  %xtraiter926 = and i64 %215, 3
  %lcmp.mod927.not = icmp eq i64 %xtraiter926, 0
  br i1 %lcmp.mod927.not, label %scalar.ph904.prol.loopexit, label %scalar.ph904.prol

scalar.ph904.prol:                                ; preds = %scalar.ph904.preheader, %scalar.ph904.prol
  %.0555723.prol = phi i64 [ %220, %scalar.ph904.prol ], [ %.0555723.ph, %scalar.ph904.preheader ]
  %.5568722.prol = phi i64 [ %217, %scalar.ph904.prol ], [ %.5568722.ph, %scalar.ph904.preheader ]
  %prol.iter928 = phi i64 [ %prol.iter928.next, %scalar.ph904.prol ], [ 0, %scalar.ph904.preheader ]
  %217 = add nsw i64 %.5568722.prol, 1
  %gep728.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep727, i64 %.0555723.prol
  %218 = load double, ptr %gep728.prol, align 8, !tbaa !16
  %219 = getelementptr double, ptr %22, i64 %.5568722.prol
  store double %218, ptr %219, align 8, !tbaa !12
  %220 = add nuw i64 %.0555723.prol, 1
  %prol.iter928.next = add i64 %prol.iter928, 1
  %prol.iter928.cmp.not = icmp eq i64 %prol.iter928.next, %xtraiter926
  br i1 %prol.iter928.cmp.not, label %scalar.ph904.prol.loopexit, label %scalar.ph904.prol, !llvm.loop !26

scalar.ph904.prol.loopexit:                       ; preds = %scalar.ph904.prol, %scalar.ph904.preheader
  %.lcssa919.unr = phi i64 [ poison, %scalar.ph904.preheader ], [ %217, %scalar.ph904.prol ]
  %.0555723.unr = phi i64 [ %.0555723.ph, %scalar.ph904.preheader ], [ %220, %scalar.ph904.prol ]
  %.5568722.unr = phi i64 [ %.5568722.ph, %scalar.ph904.preheader ], [ %217, %scalar.ph904.prol ]
  %221 = icmp ult i64 %216, 3
  br i1 %221, label %._crit_edge725, label %scalar.ph904.preheader.new

scalar.ph904.preheader.new:                       ; preds = %scalar.ph904.prol.loopexit
  %invariant.gep954 = getelementptr i8, ptr %invariant.gep727, i64 16
  %invariant.gep958 = getelementptr i8, ptr %invariant.gep727, i64 32
  br label %scalar.ph904

scalar.ph904:                                     ; preds = %scalar.ph904, %scalar.ph904.preheader.new
  %.0555723 = phi i64 [ %.0555723.unr, %scalar.ph904.preheader.new ], [ %229, %scalar.ph904 ]
  %.5568722 = phi i64 [ %.5568722.unr, %scalar.ph904.preheader.new ], [ %227, %scalar.ph904 ]
  %gep728 = getelementptr %struct.doublecomplex, ptr %invariant.gep727, i64 %.0555723
  %222 = load double, ptr %gep728, align 8, !tbaa !16
  %223 = getelementptr double, ptr %22, i64 %.5568722
  store double %222, ptr %223, align 8, !tbaa !12
  %gep955 = getelementptr %struct.doublecomplex, ptr %invariant.gep954, i64 %.0555723
  %224 = load double, ptr %gep955, align 8, !tbaa !16
  %gep957 = getelementptr double, ptr %invariant.gep956, i64 %.5568722
  store double %224, ptr %gep957, align 8, !tbaa !12
  %gep959 = getelementptr %struct.doublecomplex, ptr %invariant.gep958, i64 %.0555723
  %225 = load double, ptr %gep959, align 8, !tbaa !16
  %gep961 = getelementptr double, ptr %invariant.gep960, i64 %.5568722
  store double %225, ptr %gep961, align 8, !tbaa !12
  %226 = add nuw i64 %.0555723, 3
  %227 = add nsw i64 %.5568722, 4
  %gep728.3 = getelementptr %struct.doublecomplex, ptr %invariant.gep727, i64 %226
  %228 = load double, ptr %gep728.3, align 8, !tbaa !16
  %gep963 = getelementptr double, ptr %invariant.gep962, i64 %.5568722
  store double %228, ptr %gep963, align 8, !tbaa !12
  %229 = add nuw i64 %.0555723, 4
  %exitcond777.not.3 = icmp eq i64 %226, %185
  br i1 %exitcond777.not.3, label %._crit_edge725, label %scalar.ph904, !llvm.loop !28

._crit_edge725:                                   ; preds = %scalar.ph904.prol.loopexit, %scalar.ph904, %middle.block903
  %.lcssa = phi i64 [ %ind.end911, %middle.block903 ], [ %.lcssa919.unr, %scalar.ph904.prol.loopexit ], [ %227, %scalar.ph904 ]
  %230 = add nuw i64 %.0557731, 1
  %exitcond778.not = icmp eq i64 %.0557731, %186
  br i1 %exitcond778.not, label %._crit_edge732, label %.preheader, !llvm.loop !29

._crit_edge732:                                   ; preds = %._crit_edge725, %._crit_edge720
  %231 = getelementptr double, ptr %22, i64 %185
  %.idx607 = shl i64 %186, 4
  %232 = getelementptr i8, ptr %231, i64 %.idx607
  %233 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.1, ptr noundef nonnull %19, ptr noundef nonnull %4, ptr noundef nonnull @c_b13, ptr noundef %232, ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b15, ptr noundef %231, ptr noundef nonnull @c__1) #4
  %234 = load i64, ptr %4, align 8, !tbaa !5
  %.not608742 = icmp slt i64 %234, 1
  %.pre790 = load i64, ptr %19, align 8, !tbaa !5
  %235 = icmp slt i64 %.pre790, 1
  %or.cond802 = select i1 %.not608742, i1 true, i1 %235
  br i1 %or.cond802, label %._crit_edge747, label %.lr.ph746.split.preheader

.lr.ph746.split.preheader:                        ; preds = %._crit_edge732
  %236 = shl nuw i64 %234, 1
  %237 = add nsw i64 %236, %.pre790
  br label %.lr.ph746.split

.lr.ph746.split:                                  ; preds = %.lr.ph746.split.preheader, %._crit_edge738
  %.1558744 = phi i64 [ %245, %._crit_edge738 ], [ 1, %.lr.ph746.split.preheader ]
  %.6743 = phi i64 [ %.7.lcssa, %._crit_edge738 ], [ %237, %.lr.ph746.split.preheader ]
  %238 = load i64, ptr %19, align 8, !tbaa !5
  %.not611733 = icmp slt i64 %238, 1
  br i1 %.not611733, label %._crit_edge738, label %.lr.ph737

.lr.ph737:                                        ; preds = %.lr.ph746.split
  %239 = mul nsw i64 %.1558744, %33
  %invariant.gep740 = getelementptr %struct.doublecomplex, ptr %35, i64 %239
  br label %240

240:                                              ; preds = %.lr.ph737, %240
  %.1556735 = phi i64 [ 1, %.lr.ph737 ], [ %244, %240 ]
  %.7734 = phi i64 [ %.6743, %.lr.ph737 ], [ %241, %240 ]
  %241 = add nsw i64 %.7734, 1
  %gep741 = getelementptr %struct.doublecomplex, ptr %invariant.gep740, i64 %.1556735
  %242 = call double @d_imag(ptr noundef %gep741) #4
  %243 = getelementptr double, ptr %22, i64 %.7734
  store double %242, ptr %243, align 8, !tbaa !12
  %244 = add nuw i64 %.1556735, 1
  %exitcond779.not = icmp eq i64 %.1556735, %238
  br i1 %exitcond779.not, label %._crit_edge738, label %240, !llvm.loop !30

._crit_edge738:                                   ; preds = %240, %.lr.ph746.split
  %.7.lcssa = phi i64 [ %.6743, %.lr.ph746.split ], [ %241, %240 ]
  %245 = add nuw i64 %.1558744, 1
  %exitcond780.not = icmp eq i64 %.1558744, %234
  br i1 %exitcond780.not, label %._crit_edge747.loopexit762, label %.lr.ph746.split, !llvm.loop !31

._crit_edge747.loopexit762:                       ; preds = %._crit_edge738
  %.pre789 = load i64, ptr %19, align 8, !tbaa !5
  %.pre791 = load i64, ptr %4, align 8, !tbaa !5
  br label %._crit_edge747

._crit_edge747:                                   ; preds = %._crit_edge747.loopexit762, %._crit_edge732
  %246 = phi i64 [ %.pre791, %._crit_edge747.loopexit762 ], [ %234, %._crit_edge732 ]
  %247 = phi i64 [ %.pre789, %._crit_edge747.loopexit762 ], [ %.pre790, %._crit_edge732 ]
  %248 = getelementptr double, ptr %22, i64 %247
  %.idx609 = shl i64 %246, 4
  %249 = getelementptr i8, ptr %248, i64 %.idx609
  %250 = getelementptr double, ptr %248, i64 %246
  %251 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.1, ptr noundef nonnull %19, ptr noundef nonnull %4, ptr noundef nonnull @c_b13, ptr noundef %249, ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b15, ptr noundef %250, ptr noundef nonnull @c__1) #4
  %252 = load i64, ptr %4, align 8, !tbaa !5
  %.not610748 = icmp slt i64 %252, 1
  br i1 %.not610748, label %._crit_edge752, label %.lr.ph751

.lr.ph751:                                        ; preds = %._crit_edge747
  %253 = load i64, ptr %19, align 8, !tbaa !5
  %invariant.gep753 = getelementptr double, ptr %47, i64 %253
  %254 = getelementptr %struct.doublecomplex, ptr %32, i64 %.0561758
  %min.iters.check876 = icmp ult i64 %252, 34
  br i1 %min.iters.check876, label %scalar.ph875.preheader, label %vector.scevcheck849

vector.scevcheck849:                              ; preds = %.lr.ph751
  %255 = add nsw i64 %252, -1
  %mul.result855 = shl i64 %255, 4
  %mul.overflow856 = icmp ugt i64 %255, 1152921504606846975
  %256 = getelementptr i8, ptr %scevgep853, i64 %mul.result855
  %257 = icmp ult ptr %256, %scevgep853
  %258 = or i1 %257, %mul.overflow856
  %mul.result859 = shl i64 %255, 4
  %259 = getelementptr i8, ptr %scevgep857, i64 %mul.result859
  %260 = icmp ult ptr %259, %scevgep857
  %261 = or i1 %ident.check850, %258
  %262 = or i1 %260, %261
  br i1 %262, label %scalar.ph875.preheader, label %vector.memcheck861

vector.memcheck861:                               ; preds = %vector.scevcheck849
  %263 = shl i64 %252, 4
  %scevgep863 = getelementptr i8, ptr %scevgep862, i64 %263
  %264 = shl i64 %253, 3
  %265 = add i64 %252, %253
  %266 = shl i64 %265, 3
  %scevgep864 = getelementptr i8, ptr %22, i64 %266
  %267 = getelementptr i8, ptr %22, i64 %263
  %scevgep865 = getelementptr i8, ptr %267, i64 %264
  %scevgep866 = getelementptr i8, ptr %22, i64 %264
  %bound0867 = icmp ult ptr %scevgep862, %scevgep865
  %bound1868 = icmp ult ptr %scevgep864, %scevgep863
  %found.conflict869 = and i1 %bound0867, %bound1868
  %bound0870 = icmp ult ptr %scevgep862, %scevgep864
  %bound1871 = icmp ult ptr %scevgep866, %scevgep863
  %found.conflict872 = and i1 %bound0870, %bound1871
  %conflict.rdx873 = or i1 %found.conflict869, %found.conflict872
  br i1 %conflict.rdx873, label %scalar.ph875.preheader, label %vector.ph877

vector.ph877:                                     ; preds = %vector.memcheck861
  %n.vec879 = and i64 %252, 2305843009213693948
  %ind.end880 = or disjoint i64 %n.vec879, 1
  br label %vector.body882

vector.body882:                                   ; preds = %vector.body882, %vector.ph877
  %index883 = phi i64 [ 0, %vector.ph877 ], [ %index.next891, %vector.body882 ]
  %offset.idx884 = or disjoint i64 %index883, 1
  %268 = or disjoint i64 %index883, 3
  %269 = getelementptr double, ptr %invariant.gep753, i64 %offset.idx884
  %270 = getelementptr i8, ptr %269, i64 16
  %wide.load885 = load <2 x double>, ptr %269, align 8, !tbaa !12, !alias.scope !33
  %wide.load886 = load <2 x double>, ptr %270, align 8, !tbaa !12, !alias.scope !33
  %271 = getelementptr double, ptr %269, i64 %252
  %272 = getelementptr i8, ptr %271, i64 16
  %wide.load887 = load <2 x double>, ptr %271, align 8, !tbaa !12, !alias.scope !36
  %wide.load888 = load <2 x double>, ptr %272, align 8, !tbaa !12, !alias.scope !36
  %273 = getelementptr %struct.doublecomplex, ptr %254, i64 %offset.idx884
  %274 = getelementptr %struct.doublecomplex, ptr %254, i64 %268
  %interleaved.vec889 = shufflevector <2 x double> %wide.load885, <2 x double> %wide.load887, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec889, ptr %273, align 8, !tbaa !12
  %interleaved.vec890 = shufflevector <2 x double> %wide.load886, <2 x double> %wide.load888, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec890, ptr %274, align 8, !tbaa !12
  %index.next891 = add nuw i64 %index883, 4
  %275 = icmp eq i64 %index.next891, %n.vec879
  br i1 %275, label %middle.block874, label %vector.body882, !llvm.loop !38

middle.block874:                                  ; preds = %vector.body882
  %cmp.n892 = icmp eq i64 %252, %n.vec879
  br i1 %cmp.n892, label %._crit_edge752, label %scalar.ph875.preheader

scalar.ph875.preheader:                           ; preds = %middle.block874, %vector.memcheck861, %vector.scevcheck849, %.lr.ph751
  %.2559749.ph = phi i64 [ 1, %vector.memcheck861 ], [ 1, %vector.scevcheck849 ], [ 1, %.lr.ph751 ], [ %ind.end880, %middle.block874 ]
  %xtraiter929 = and i64 %252, 1
  %lcmp.mod930.not = icmp eq i64 %xtraiter929, 0
  br i1 %lcmp.mod930.not, label %scalar.ph875.prol.loopexit, label %scalar.ph875.prol

scalar.ph875.prol:                                ; preds = %scalar.ph875.preheader
  %276 = mul nsw i64 %.2559749.ph, %30
  %gep754.prol = getelementptr double, ptr %invariant.gep753, i64 %.2559749.ph
  %277 = load double, ptr %gep754.prol, align 8, !tbaa !12
  %278 = getelementptr double, ptr %gep754.prol, i64 %252
  %279 = load double, ptr %278, align 8, !tbaa !12
  %280 = getelementptr %struct.doublecomplex, ptr %254, i64 %276
  store double %277, ptr %280, align 8, !tbaa !16
  %281 = getelementptr inbounds i8, ptr %280, i64 8
  store double %279, ptr %281, align 8, !tbaa !39
  %282 = add nuw nsw i64 %.2559749.ph, 1
  br label %scalar.ph875.prol.loopexit

scalar.ph875.prol.loopexit:                       ; preds = %scalar.ph875.prol, %scalar.ph875.preheader
  %.2559749.unr = phi i64 [ %.2559749.ph, %scalar.ph875.preheader ], [ %282, %scalar.ph875.prol ]
  %283 = icmp eq i64 %252, %.2559749.ph
  br i1 %283, label %._crit_edge752, label %scalar.ph875

scalar.ph875:                                     ; preds = %scalar.ph875.prol.loopexit, %scalar.ph875
  %.2559749 = phi i64 [ %297, %scalar.ph875 ], [ %.2559749.unr, %scalar.ph875.prol.loopexit ]
  %284 = mul nsw i64 %.2559749, %30
  %gep754 = getelementptr double, ptr %invariant.gep753, i64 %.2559749
  %285 = load double, ptr %gep754, align 8, !tbaa !12
  %286 = getelementptr double, ptr %gep754, i64 %252
  %287 = load double, ptr %286, align 8, !tbaa !12
  %288 = getelementptr %struct.doublecomplex, ptr %254, i64 %284
  store double %285, ptr %288, align 8, !tbaa !16
  %289 = getelementptr inbounds i8, ptr %288, i64 8
  store double %287, ptr %289, align 8, !tbaa !39
  %290 = add nuw i64 %.2559749, 1
  %291 = mul nsw i64 %290, %30
  %gep754.1 = getelementptr double, ptr %invariant.gep753, i64 %290
  %292 = load double, ptr %gep754.1, align 8, !tbaa !12
  %293 = getelementptr double, ptr %gep754.1, i64 %252
  %294 = load double, ptr %293, align 8, !tbaa !12
  %295 = getelementptr %struct.doublecomplex, ptr %254, i64 %291
  store double %292, ptr %295, align 8, !tbaa !16
  %296 = getelementptr inbounds i8, ptr %295, i64 8
  store double %294, ptr %296, align 8, !tbaa !39
  %297 = add nuw i64 %.2559749, 2
  %exitcond781.not.1 = icmp eq i64 %290, %252
  br i1 %exitcond781.not.1, label %._crit_edge752, label %scalar.ph875, !llvm.loop !40

._crit_edge752:                                   ; preds = %scalar.ph875.prol.loopexit, %scalar.ph875, %middle.block874, %._crit_edge747
  %gep756 = getelementptr %struct.doublecomplex, ptr %invariant.gep689, i64 %.0561758
  %298 = call i32 @zlascl_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %27, ptr noundef nonnull @c_b13, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef %gep756, ptr noundef nonnull %6, ptr noundef nonnull %23) #4
  %299 = load i64, ptr %25, align 8, !tbaa !5
  %.not603.not = icmp slt i64 %.0561758, %299
  %indvar.next852 = add i64 %indvar851, 1
  br i1 %.not603.not, label %115, label %.loopexit, !llvm.loop !41

.loopexit:                                        ; preds = %._crit_edge752, %112, %106, %110
  %300 = load i64, ptr %19, align 8, !tbaa !5
  %301 = call i64 @llvm.smax.i64(i64 %82, i64 %61)
  %302 = icmp slt i64 %300, %301
  br i1 %302, label %303, label %.loopexit619

303:                                              ; preds = %.loopexit
  %304 = sub nsw i64 %61, %300
  store i64 %304, ptr %25, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.doublecomplex, ptr %7, i64 %300
  %306 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %300
  %307 = call i32 @zlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %25, ptr noundef nonnull %4, ptr noundef %305, ptr noundef nonnull %8, ptr noundef %306, ptr noundef nonnull %6) #4
  br label %.loopexit619

308:                                              ; preds = %80
  %309 = icmp eq i64 %76, 1
  br i1 %309, label %310, label %.lr.ph672

310:                                              ; preds = %308
  %311 = tail call i32 @f2c_zcopy(ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8) #4
  br label %.loopexit622

.lr.ph672:                                        ; preds = %308
  store i64 %76, ptr %25, align 8, !tbaa !5
  %invariant.gep667 = getelementptr i8, ptr %15, i64 -8
  %312 = shl i64 %40, 1
  %invariant.gep = getelementptr i8, ptr %43, i64 8
  %invariant.gep623 = getelementptr double, ptr %invariant.gep, i64 %312
  %invariant.gep625 = getelementptr double, ptr %42, i64 %312
  %scevgep828 = getelementptr i8, ptr %5, i64 -8
  %313 = shl i64 %30, 4
  %stride.check = icmp slt i64 %313, 0
  %invariant.gep944 = getelementptr i8, ptr %22, i64 8
  %invariant.gep948 = getelementptr i8, ptr %22, i64 16
  %invariant.gep950 = getelementptr i8, ptr %22, i64 24
  %ident.check = icmp ne i64 %33, 1
  br label %315

.loopexit621:                                     ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %._crit_edge660
  %314 = load i64, ptr %25, align 8, !tbaa !5
  %.not588.not = icmp slt i64 %.1562670, %314
  %indvar.next = add i64 %indvar, 1
  br i1 %.not588.not, label %315, label %.loopexit622, !llvm.loop !42

315:                                              ; preds = %.lr.ph672, %.loopexit621
  %indvar = phi i64 [ 0, %.lr.ph672 ], [ %indvar.next, %.loopexit621 ]
  %.1562670 = phi i64 [ 1, %.lr.ph672 ], [ %360, %.loopexit621 ]
  %316 = shl i64 %indvar, 4
  %scevgep812 = getelementptr i8, ptr %7, i64 %316
  %317 = shl i64 %indvar, 4
  %scevgep = getelementptr i8, ptr %7, i64 %317
  %318 = or disjoint i64 %317, 8
  %scevgep808 = getelementptr i8, ptr %7, i64 %318
  %319 = add nsw i64 %.1562670, %312
  %320 = getelementptr inbounds double, ptr %43, i64 %319
  %321 = load double, ptr %320, align 8, !tbaa !12
  store double %321, ptr %28, align 8, !tbaa !12
  %322 = getelementptr inbounds double, ptr %46, i64 %.1562670
  %323 = load double, ptr %322, align 8, !tbaa !12
  %324 = fcmp oeq double %323, 0.000000e+00
  br i1 %324, label %336, label %325

325:                                              ; preds = %315
  %326 = fneg double %323
  %327 = getelementptr inbounds double, ptr %45, i64 %.1562670
  %328 = load double, ptr %327, align 8, !tbaa !12
  %329 = fdiv double %326, %328
  %gep668 = getelementptr double, ptr %invariant.gep667, i64 %.1562670
  %330 = load double, ptr %gep668, align 8, !tbaa !12
  %331 = fadd double %321, %330
  %332 = fdiv double %329, %331
  %333 = getelementptr inbounds double, ptr %42, i64 %319
  %334 = load double, ptr %333, align 8, !tbaa !12
  %335 = fdiv double %332, %334
  br label %336

336:                                              ; preds = %315, %325
  %.sink782 = phi double [ %335, %325 ], [ 0.000000e+00, %315 ]
  %337 = getelementptr inbounds double, ptr %47, i64 %.1562670
  store double %.sink782, ptr %337, align 8
  %.not589.not626 = icmp ugt i64 %.1562670, 1
  br i1 %.not589.not626, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %336, %356
  %.8627 = phi i64 [ %358, %356 ], [ 1, %336 ]
  %338 = load double, ptr %322, align 8, !tbaa !12
  %339 = fcmp oeq double %338, 0.000000e+00
  br i1 %339, label %356, label %340

340:                                              ; preds = %.lr.ph
  %gep624 = getelementptr double, ptr %invariant.gep623, i64 %.8627
  %341 = load double, ptr %gep624, align 8, !tbaa !12
  %342 = fneg double %341
  store double %342, ptr %26, align 8, !tbaa !12
  %343 = call double @dlamc3_(ptr noundef nonnull %28, ptr noundef nonnull %26) #4
  %344 = add nsw i64 %.8627, %40
  %345 = getelementptr inbounds double, ptr %42, i64 %344
  %346 = load double, ptr %345, align 8, !tbaa !12
  %347 = fsub double %343, %346
  %348 = fdiv double %338, %347
  %349 = load double, ptr %28, align 8, !tbaa !12
  %350 = getelementptr inbounds double, ptr %43, i64 %344
  %351 = load double, ptr %350, align 8, !tbaa !12
  %352 = fadd double %349, %351
  %353 = fdiv double %348, %352
  %gep = getelementptr double, ptr %invariant.gep625, i64 %.8627
  %354 = load double, ptr %gep, align 8, !tbaa !12
  %355 = fdiv double %353, %354
  br label %356

356:                                              ; preds = %.lr.ph, %340
  %.sink783 = phi double [ %355, %340 ], [ 0.000000e+00, %.lr.ph ]
  %357 = getelementptr inbounds double, ptr %47, i64 %.8627
  store double %.sink783, ptr %357, align 8
  %358 = add nuw nsw i64 %.8627, 1
  %exitcond.not = icmp eq i64 %358, %.1562670
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !43

._crit_edge:                                      ; preds = %356, %336
  %359 = load i64, ptr %19, align 8, !tbaa !5
  %360 = add nuw nsw i64 %.1562670, 1
  %.not590630.not = icmp slt i64 %.1562670, %359
  br i1 %.not590630.not, label %.lr.ph633, label %._crit_edge634

.lr.ph633:                                        ; preds = %._crit_edge, %380
  %.9631 = phi i64 [ %382, %380 ], [ %360, %._crit_edge ]
  %361 = load double, ptr %322, align 8, !tbaa !12
  %362 = fcmp oeq double %361, 0.000000e+00
  br i1 %362, label %380, label %363

363:                                              ; preds = %.lr.ph633
  %364 = add nsw i64 %.9631, %312
  %365 = getelementptr inbounds double, ptr %43, i64 %364
  %366 = load double, ptr %365, align 8, !tbaa !12
  %367 = fneg double %366
  store double %367, ptr %26, align 8, !tbaa !12
  %368 = call double @dlamc3_(ptr noundef nonnull %28, ptr noundef nonnull %26) #4
  %369 = getelementptr inbounds double, ptr %45, i64 %.9631
  %370 = load double, ptr %369, align 8, !tbaa !12
  %371 = fsub double %368, %370
  %372 = fdiv double %361, %371
  %373 = load double, ptr %28, align 8, !tbaa !12
  %gep629 = getelementptr double, ptr %invariant.gep667, i64 %.9631
  %374 = load double, ptr %gep629, align 8, !tbaa !12
  %375 = fadd double %373, %374
  %376 = fdiv double %372, %375
  %377 = getelementptr inbounds double, ptr %42, i64 %364
  %378 = load double, ptr %377, align 8, !tbaa !12
  %379 = fdiv double %376, %378
  br label %380

380:                                              ; preds = %.lr.ph633, %363
  %.sink784 = phi double [ %379, %363 ], [ 0.000000e+00, %.lr.ph633 ]
  %381 = getelementptr inbounds double, ptr %47, i64 %.9631
  store double %.sink784, ptr %381, align 8
  %382 = add nuw nsw i64 %.9631, 1
  %.not590.not = icmp slt i64 %.9631, %359
  br i1 %.not590.not, label %.lr.ph633, label %._crit_edge634.loopexit, !llvm.loop !44

._crit_edge634.loopexit:                          ; preds = %380
  %.pre = load i64, ptr %19, align 8, !tbaa !5
  br label %._crit_edge634

._crit_edge634:                                   ; preds = %._crit_edge634.loopexit, %._crit_edge
  %383 = phi i64 [ %.pre, %._crit_edge634.loopexit ], [ %359, %._crit_edge ]
  %384 = load i64, ptr %4, align 8, !tbaa !5
  %.not591642 = icmp slt i64 %384, 1
  %.not596635 = icmp slt i64 %383, 1
  %or.cond803 = select i1 %.not591642, i1 true, i1 %.not596635
  br i1 %or.cond803, label %._crit_edge645, label %.preheader620.preheader

.preheader620.preheader:                          ; preds = %._crit_edge634
  %385 = shl nuw i64 %384, 1
  %386 = add nsw i64 %385, %383
  %387 = shl i64 %383, 3
  %scevgep826 = getelementptr i8, ptr %22, i64 %387
  %388 = add nsw i64 %384, -1
  %389 = mul i64 %313, %388
  %390 = shl i64 %383, 4
  %391 = getelementptr i8, ptr %scevgep828, i64 %389
  %scevgep829 = getelementptr i8, ptr %391, i64 %390
  %392 = add nuw i64 %383, 1
  %min.iters.check835 = icmp ult i64 %383, 6
  %n.vec838 = and i64 %383, 9223372036854775804
  %ind.end839 = or disjoint i64 %n.vec838, 1
  %cmp.n848 = icmp eq i64 %383, %n.vec838
  br label %.preheader620

.preheader620:                                    ; preds = %.preheader620.preheader, %._crit_edge639
  %.3560644 = phi i64 [ %428, %._crit_edge639 ], [ 1, %.preheader620.preheader ]
  %.10643 = phi i64 [ %.lcssa806, %._crit_edge639 ], [ %386, %.preheader620.preheader ]
  %393 = mul nsw i64 %.3560644, %30
  %invariant.gep640 = getelementptr %struct.doublecomplex, ptr %32, i64 %393
  br i1 %min.iters.check835, label %scalar.ph834.preheader, label %vector.memcheck824

vector.memcheck824:                               ; preds = %.preheader620
  %394 = shl i64 %.10643, 3
  %scevgep825 = getelementptr i8, ptr %22, i64 %394
  %scevgep827 = getelementptr i8, ptr %scevgep826, i64 %394
  %bound0830 = icmp ult ptr %scevgep825, %scevgep829
  %bound1831 = icmp ugt ptr %scevgep827, %5
  %found.conflict832 = and i1 %bound0830, %bound1831
  %395 = or i1 %found.conflict832, %stride.check
  br i1 %395, label %scalar.ph834.preheader, label %vector.ph836

vector.ph836:                                     ; preds = %vector.memcheck824
  %ind.end841 = add i64 %.10643, %n.vec838
  %invariant.gep940 = getelementptr i8, ptr %invariant.gep640, i64 64
  %396 = getelementptr double, ptr %22, i64 %.10643
  br label %vector.body843

vector.body843:                                   ; preds = %vector.body843, %vector.ph836
  %index844 = phi i64 [ 0, %vector.ph836 ], [ %index.next847, %vector.body843 ]
  %offset.idx845 = or disjoint i64 %index844, 1
  %397 = or disjoint i64 %index844, 2
  %398 = or disjoint i64 %index844, 3
  %399 = getelementptr %struct.doublecomplex, ptr %invariant.gep640, i64 %offset.idx845
  %400 = getelementptr %struct.doublecomplex, ptr %invariant.gep640, i64 %397
  %401 = getelementptr %struct.doublecomplex, ptr %invariant.gep640, i64 %398
  %gep941 = getelementptr %struct.doublecomplex, ptr %invariant.gep940, i64 %index844
  %402 = load double, ptr %399, align 8, !tbaa !16, !alias.scope !45
  %403 = load double, ptr %400, align 8, !tbaa !16, !alias.scope !45
  %404 = insertelement <2 x double> poison, double %402, i64 0
  %405 = insertelement <2 x double> %404, double %403, i64 1
  %406 = load double, ptr %401, align 8, !tbaa !16, !alias.scope !45
  %407 = load double, ptr %gep941, align 8, !tbaa !16, !alias.scope !45
  %408 = insertelement <2 x double> poison, double %406, i64 0
  %409 = insertelement <2 x double> %408, double %407, i64 1
  %410 = getelementptr double, ptr %396, i64 %index844
  %411 = getelementptr i8, ptr %410, i64 16
  store <2 x double> %405, ptr %410, align 8, !tbaa !12, !alias.scope !48, !noalias !45
  store <2 x double> %409, ptr %411, align 8, !tbaa !12, !alias.scope !48, !noalias !45
  %index.next847 = add nuw i64 %index844, 4
  %412 = icmp eq i64 %index.next847, %n.vec838
  br i1 %412, label %middle.block833, label %vector.body843, !llvm.loop !50

middle.block833:                                  ; preds = %vector.body843
  br i1 %cmp.n848, label %._crit_edge639, label %scalar.ph834.preheader

scalar.ph834.preheader:                           ; preds = %middle.block833, %vector.memcheck824, %.preheader620
  %.2637.ph = phi i64 [ 1, %vector.memcheck824 ], [ 1, %.preheader620 ], [ %ind.end839, %middle.block833 ]
  %.11636.ph = phi i64 [ %.10643, %vector.memcheck824 ], [ %.10643, %.preheader620 ], [ %ind.end841, %middle.block833 ]
  %413 = sub i64 %392, %.2637.ph
  %414 = sub i64 %383, %.2637.ph
  %xtraiter = and i64 %413, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph834.prol.loopexit, label %scalar.ph834.prol

scalar.ph834.prol:                                ; preds = %scalar.ph834.preheader, %scalar.ph834.prol
  %.2637.prol = phi i64 [ %418, %scalar.ph834.prol ], [ %.2637.ph, %scalar.ph834.preheader ]
  %.11636.prol = phi i64 [ %415, %scalar.ph834.prol ], [ %.11636.ph, %scalar.ph834.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph834.prol ], [ 0, %scalar.ph834.preheader ]
  %415 = add nsw i64 %.11636.prol, 1
  %gep641.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep640, i64 %.2637.prol
  %416 = load double, ptr %gep641.prol, align 8, !tbaa !16
  %417 = getelementptr double, ptr %22, i64 %.11636.prol
  store double %416, ptr %417, align 8, !tbaa !12
  %418 = add nuw i64 %.2637.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %scalar.ph834.prol.loopexit, label %scalar.ph834.prol, !llvm.loop !51

scalar.ph834.prol.loopexit:                       ; preds = %scalar.ph834.prol, %scalar.ph834.preheader
  %.lcssa921.unr = phi i64 [ poison, %scalar.ph834.preheader ], [ %415, %scalar.ph834.prol ]
  %.2637.unr = phi i64 [ %.2637.ph, %scalar.ph834.preheader ], [ %418, %scalar.ph834.prol ]
  %.11636.unr = phi i64 [ %.11636.ph, %scalar.ph834.preheader ], [ %415, %scalar.ph834.prol ]
  %419 = icmp ult i64 %414, 3
  br i1 %419, label %._crit_edge639, label %scalar.ph834.preheader.new

scalar.ph834.preheader.new:                       ; preds = %scalar.ph834.prol.loopexit
  %invariant.gep942 = getelementptr i8, ptr %invariant.gep640, i64 16
  %invariant.gep946 = getelementptr i8, ptr %invariant.gep640, i64 32
  br label %scalar.ph834

scalar.ph834:                                     ; preds = %scalar.ph834, %scalar.ph834.preheader.new
  %.2637 = phi i64 [ %.2637.unr, %scalar.ph834.preheader.new ], [ %427, %scalar.ph834 ]
  %.11636 = phi i64 [ %.11636.unr, %scalar.ph834.preheader.new ], [ %425, %scalar.ph834 ]
  %gep641 = getelementptr %struct.doublecomplex, ptr %invariant.gep640, i64 %.2637
  %420 = load double, ptr %gep641, align 8, !tbaa !16
  %421 = getelementptr double, ptr %22, i64 %.11636
  store double %420, ptr %421, align 8, !tbaa !12
  %gep943 = getelementptr %struct.doublecomplex, ptr %invariant.gep942, i64 %.2637
  %422 = load double, ptr %gep943, align 8, !tbaa !16
  %gep945 = getelementptr double, ptr %invariant.gep944, i64 %.11636
  store double %422, ptr %gep945, align 8, !tbaa !12
  %gep947 = getelementptr %struct.doublecomplex, ptr %invariant.gep946, i64 %.2637
  %423 = load double, ptr %gep947, align 8, !tbaa !16
  %gep949 = getelementptr double, ptr %invariant.gep948, i64 %.11636
  store double %423, ptr %gep949, align 8, !tbaa !12
  %424 = add nuw i64 %.2637, 3
  %425 = add nsw i64 %.11636, 4
  %gep641.3 = getelementptr %struct.doublecomplex, ptr %invariant.gep640, i64 %424
  %426 = load double, ptr %gep641.3, align 8, !tbaa !16
  %gep951 = getelementptr double, ptr %invariant.gep950, i64 %.11636
  store double %426, ptr %gep951, align 8, !tbaa !12
  %427 = add nuw i64 %.2637, 4
  %exitcond769.not.3 = icmp eq i64 %424, %383
  br i1 %exitcond769.not.3, label %._crit_edge639, label %scalar.ph834, !llvm.loop !52

._crit_edge639:                                   ; preds = %scalar.ph834.prol.loopexit, %scalar.ph834, %middle.block833
  %.lcssa806 = phi i64 [ %ind.end841, %middle.block833 ], [ %.lcssa921.unr, %scalar.ph834.prol.loopexit ], [ %425, %scalar.ph834 ]
  %428 = add nuw i64 %.3560644, 1
  %exitcond770.not = icmp eq i64 %.3560644, %384
  br i1 %exitcond770.not, label %._crit_edge645, label %.preheader620, !llvm.loop !53

._crit_edge645:                                   ; preds = %._crit_edge639, %._crit_edge634
  %429 = getelementptr double, ptr %22, i64 %383
  %.idx = shl i64 %384, 4
  %430 = getelementptr i8, ptr %429, i64 %.idx
  %431 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.1, ptr noundef nonnull %19, ptr noundef nonnull %4, ptr noundef nonnull @c_b13, ptr noundef %430, ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b15, ptr noundef %429, ptr noundef nonnull @c__1) #4
  %432 = load i64, ptr %4, align 8, !tbaa !5
  %.not592655 = icmp slt i64 %432, 1
  %.pre787 = load i64, ptr %19, align 8, !tbaa !5
  %433 = icmp slt i64 %.pre787, 1
  %or.cond804 = select i1 %.not592655, i1 true, i1 %433
  br i1 %or.cond804, label %._crit_edge660, label %.lr.ph659.split.preheader

.lr.ph659.split.preheader:                        ; preds = %._crit_edge645
  %434 = shl nuw i64 %432, 1
  %435 = add nsw i64 %434, %.pre787
  br label %.lr.ph659.split

.lr.ph659.split:                                  ; preds = %.lr.ph659.split.preheader, %._crit_edge651
  %.4657 = phi i64 [ %443, %._crit_edge651 ], [ 1, %.lr.ph659.split.preheader ]
  %.12656 = phi i64 [ %.13.lcssa, %._crit_edge651 ], [ %435, %.lr.ph659.split.preheader ]
  %436 = load i64, ptr %19, align 8, !tbaa !5
  %.not595646 = icmp slt i64 %436, 1
  br i1 %.not595646, label %._crit_edge651, label %.lr.ph650

.lr.ph650:                                        ; preds = %.lr.ph659.split
  %437 = mul nsw i64 %.4657, %30
  %invariant.gep653 = getelementptr %struct.doublecomplex, ptr %32, i64 %437
  br label %438

438:                                              ; preds = %.lr.ph650, %438
  %.3648 = phi i64 [ 1, %.lr.ph650 ], [ %442, %438 ]
  %.13647 = phi i64 [ %.12656, %.lr.ph650 ], [ %439, %438 ]
  %439 = add nsw i64 %.13647, 1
  %gep654 = getelementptr %struct.doublecomplex, ptr %invariant.gep653, i64 %.3648
  %440 = call double @d_imag(ptr noundef %gep654) #4
  %441 = getelementptr double, ptr %22, i64 %.13647
  store double %440, ptr %441, align 8, !tbaa !12
  %442 = add nuw i64 %.3648, 1
  %exitcond771.not = icmp eq i64 %.3648, %436
  br i1 %exitcond771.not, label %._crit_edge651, label %438, !llvm.loop !54

._crit_edge651:                                   ; preds = %438, %.lr.ph659.split
  %.13.lcssa = phi i64 [ %.12656, %.lr.ph659.split ], [ %439, %438 ]
  %443 = add nuw i64 %.4657, 1
  %exitcond772.not = icmp eq i64 %.4657, %432
  br i1 %exitcond772.not, label %._crit_edge660.loopexit764, label %.lr.ph659.split, !llvm.loop !55

._crit_edge660.loopexit764:                       ; preds = %._crit_edge651
  %.pre786 = load i64, ptr %19, align 8, !tbaa !5
  %.pre788 = load i64, ptr %4, align 8, !tbaa !5
  br label %._crit_edge660

._crit_edge660:                                   ; preds = %._crit_edge660.loopexit764, %._crit_edge645
  %444 = phi i64 [ %.pre788, %._crit_edge660.loopexit764 ], [ %432, %._crit_edge645 ]
  %445 = phi i64 [ %.pre786, %._crit_edge660.loopexit764 ], [ %.pre787, %._crit_edge645 ]
  %446 = getelementptr double, ptr %22, i64 %445
  %.idx593 = shl i64 %444, 4
  %447 = getelementptr i8, ptr %446, i64 %.idx593
  %448 = getelementptr double, ptr %446, i64 %444
  %449 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.1, ptr noundef nonnull %19, ptr noundef nonnull %4, ptr noundef nonnull @c_b13, ptr noundef %447, ptr noundef nonnull %19, ptr noundef %22, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b15, ptr noundef %448, ptr noundef nonnull @c__1) #4
  %450 = load i64, ptr %4, align 8, !tbaa !5
  %.not594661 = icmp slt i64 %450, 1
  br i1 %.not594661, label %.loopexit621, label %.lr.ph664

.lr.ph664:                                        ; preds = %._crit_edge660
  %451 = load i64, ptr %19, align 8, !tbaa !5
  %invariant.gep665 = getelementptr double, ptr %47, i64 %451
  %452 = getelementptr %struct.doublecomplex, ptr %35, i64 %.1562670
  %min.iters.check = icmp ult i64 %450, 34
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph664
  %453 = add nsw i64 %450, -1
  %mul.result = shl i64 %453, 4
  %mul.overflow = icmp ugt i64 %453, 1152921504606846975
  %454 = getelementptr i8, ptr %scevgep, i64 %mul.result
  %455 = icmp ult ptr %454, %scevgep
  %456 = or i1 %455, %mul.overflow
  %mul.result810 = shl i64 %453, 4
  %457 = getelementptr i8, ptr %scevgep808, i64 %mul.result810
  %458 = icmp ult ptr %457, %scevgep808
  %459 = or i1 %ident.check, %456
  %460 = or i1 %458, %459
  br i1 %460, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %vector.scevcheck
  %461 = shl i64 %450, 4
  %scevgep813 = getelementptr i8, ptr %scevgep812, i64 %461
  %462 = shl i64 %451, 3
  %463 = add i64 %450, %451
  %464 = shl i64 %463, 3
  %scevgep814 = getelementptr i8, ptr %22, i64 %464
  %465 = getelementptr i8, ptr %22, i64 %461
  %scevgep815 = getelementptr i8, ptr %465, i64 %462
  %scevgep816 = getelementptr i8, ptr %22, i64 %462
  %bound0 = icmp ult ptr %scevgep812, %scevgep815
  %bound1 = icmp ult ptr %scevgep814, %scevgep813
  %found.conflict = and i1 %bound0, %bound1
  %bound0817 = icmp ult ptr %scevgep812, %scevgep814
  %bound1818 = icmp ult ptr %scevgep816, %scevgep813
  %found.conflict819 = and i1 %bound0817, %bound1818
  %conflict.rdx = or i1 %found.conflict, %found.conflict819
  br i1 %conflict.rdx, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %450, 2305843009213693948
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %466 = or disjoint i64 %index, 3
  %467 = getelementptr double, ptr %invariant.gep665, i64 %offset.idx
  %468 = getelementptr i8, ptr %467, i64 16
  %wide.load = load <2 x double>, ptr %467, align 8, !tbaa !12, !alias.scope !56
  %wide.load820 = load <2 x double>, ptr %468, align 8, !tbaa !12, !alias.scope !56
  %469 = getelementptr double, ptr %467, i64 %450
  %470 = getelementptr i8, ptr %469, i64 16
  %wide.load821 = load <2 x double>, ptr %469, align 8, !tbaa !12, !alias.scope !59
  %wide.load822 = load <2 x double>, ptr %470, align 8, !tbaa !12, !alias.scope !59
  %471 = getelementptr %struct.doublecomplex, ptr %452, i64 %offset.idx
  %472 = getelementptr %struct.doublecomplex, ptr %452, i64 %466
  %interleaved.vec = shufflevector <2 x double> %wide.load, <2 x double> %wide.load821, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec, ptr %471, align 8, !tbaa !12
  %interleaved.vec823 = shufflevector <2 x double> %wide.load820, <2 x double> %wide.load822, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec823, ptr %472, align 8, !tbaa !12
  %index.next = add nuw i64 %index, 4
  %473 = icmp eq i64 %index.next, %n.vec
  br i1 %473, label %middle.block, label %vector.body, !llvm.loop !61

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %450, %n.vec
  br i1 %cmp.n, label %.loopexit621, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %vector.scevcheck, %.lr.ph664
  %.5662.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %vector.scevcheck ], [ 1, %.lr.ph664 ], [ %ind.end, %middle.block ]
  %xtraiter923 = and i64 %450, 1
  %lcmp.mod924.not = icmp eq i64 %xtraiter923, 0
  br i1 %lcmp.mod924.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %474 = mul nsw i64 %.5662.ph, %33
  %gep666.prol = getelementptr double, ptr %invariant.gep665, i64 %.5662.ph
  %475 = load double, ptr %gep666.prol, align 8, !tbaa !12
  %476 = getelementptr double, ptr %gep666.prol, i64 %450
  %477 = load double, ptr %476, align 8, !tbaa !12
  %478 = getelementptr %struct.doublecomplex, ptr %452, i64 %474
  store double %475, ptr %478, align 8, !tbaa !16
  %479 = getelementptr inbounds i8, ptr %478, i64 8
  store double %477, ptr %479, align 8, !tbaa !39
  %480 = add nuw nsw i64 %.5662.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.5662.unr = phi i64 [ %.5662.ph, %scalar.ph.preheader ], [ %480, %scalar.ph.prol ]
  %481 = icmp eq i64 %450, %.5662.ph
  br i1 %481, label %.loopexit621, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.5662 = phi i64 [ %495, %scalar.ph ], [ %.5662.unr, %scalar.ph.prol.loopexit ]
  %482 = mul nsw i64 %.5662, %33
  %gep666 = getelementptr double, ptr %invariant.gep665, i64 %.5662
  %483 = load double, ptr %gep666, align 8, !tbaa !12
  %484 = getelementptr double, ptr %gep666, i64 %450
  %485 = load double, ptr %484, align 8, !tbaa !12
  %486 = getelementptr %struct.doublecomplex, ptr %452, i64 %482
  store double %483, ptr %486, align 8, !tbaa !16
  %487 = getelementptr inbounds i8, ptr %486, i64 8
  store double %485, ptr %487, align 8, !tbaa !39
  %488 = add nuw i64 %.5662, 1
  %489 = mul nsw i64 %488, %33
  %gep666.1 = getelementptr double, ptr %invariant.gep665, i64 %488
  %490 = load double, ptr %gep666.1, align 8, !tbaa !12
  %491 = getelementptr double, ptr %gep666.1, i64 %450
  %492 = load double, ptr %491, align 8, !tbaa !12
  %493 = getelementptr %struct.doublecomplex, ptr %452, i64 %489
  store double %490, ptr %493, align 8, !tbaa !16
  %494 = getelementptr inbounds i8, ptr %493, i64 8
  store double %492, ptr %494, align 8, !tbaa !39
  %495 = add nuw i64 %.5662, 2
  %exitcond773.not.1 = icmp eq i64 %488, %450
  br i1 %exitcond773.not.1, label %.loopexit621, label %scalar.ph, !llvm.loop !62

.loopexit622:                                     ; preds = %.loopexit621, %310
  %496 = load i64, ptr %3, align 8, !tbaa !5
  %497 = icmp eq i64 %496, 1
  br i1 %497, label %498, label %505

498:                                              ; preds = %.loopexit622
  %499 = getelementptr %struct.doublecomplex, ptr %32, i64 %82
  %500 = getelementptr %struct.doublecomplex, ptr %499, i64 %30
  %501 = getelementptr %struct.doublecomplex, ptr %35, i64 %82
  %502 = getelementptr %struct.doublecomplex, ptr %501, i64 %33
  %503 = call i32 @f2c_zcopy(ptr noundef nonnull %4, ptr noundef %500, ptr noundef nonnull %6, ptr noundef %502, ptr noundef nonnull %8) #4
  %504 = call i32 @f2c_zdrot(ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %502, ptr noundef nonnull %8, ptr noundef %20, ptr noundef %21) #4
  br label %505

505:                                              ; preds = %498, %.loopexit622
  %506 = load i64, ptr %19, align 8, !tbaa !5
  %507 = call i64 @llvm.smax.i64(i64 %82, i64 %61)
  %508 = icmp slt i64 %506, %507
  br i1 %508, label %509, label %514

509:                                              ; preds = %505
  %510 = sub nsw i64 %61, %506
  store i64 %510, ptr %25, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %506
  %512 = getelementptr inbounds %struct.doublecomplex, ptr %7, i64 %506
  %513 = call i32 @zlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %25, ptr noundef nonnull %4, ptr noundef %511, ptr noundef nonnull %6, ptr noundef %512, ptr noundef nonnull %8) #4
  br label %514

514:                                              ; preds = %509, %505
  %515 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %58
  %516 = call i32 @f2c_zcopy(ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %515, ptr noundef nonnull %6) #4
  %517 = load i64, ptr %3, align 8, !tbaa !5
  %518 = icmp eq i64 %517, 1
  br i1 %518, label %519, label %525

519:                                              ; preds = %514
  %520 = getelementptr %struct.doublecomplex, ptr %35, i64 %82
  %521 = getelementptr %struct.doublecomplex, ptr %520, i64 %33
  %522 = getelementptr %struct.doublecomplex, ptr %32, i64 %82
  %523 = getelementptr %struct.doublecomplex, ptr %522, i64 %30
  %524 = call i32 @f2c_zcopy(ptr noundef nonnull %4, ptr noundef %521, ptr noundef nonnull %8, ptr noundef %523, ptr noundef nonnull %6) #4
  br label %525

525:                                              ; preds = %519, %514
  store i64 %61, ptr %25, align 8, !tbaa !5
  %invariant.gep673 = getelementptr i8, ptr %7, i64 -16
  %invariant.gep675 = getelementptr i8, ptr %5, i64 -16
  %.not598677 = icmp slt i64 %60, 1
  br i1 %.not598677, label %._crit_edge681, label %.lr.ph680

.lr.ph680:                                        ; preds = %525, %.lr.ph680
  %.14678 = phi i64 [ %529, %.lr.ph680 ], [ 2, %525 ]
  %gep674 = getelementptr %struct.doublecomplex, ptr %invariant.gep673, i64 %.14678
  %526 = getelementptr inbounds i64, ptr %36, i64 %.14678
  %527 = load i64, ptr %526, align 8, !tbaa !5
  %gep676 = getelementptr %struct.doublecomplex, ptr %invariant.gep675, i64 %527
  %528 = call i32 @f2c_zcopy(ptr noundef nonnull %4, ptr noundef %gep674, ptr noundef nonnull %8, ptr noundef %gep676, ptr noundef nonnull %6) #4
  %529 = add nuw nsw i64 %.14678, 1
  %530 = load i64, ptr %25, align 8, !tbaa !5
  %.not598.not = icmp slt i64 %.14678, %530
  br i1 %.not598.not, label %.lr.ph680, label %._crit_edge681, !llvm.loop !63

._crit_edge681:                                   ; preds = %.lr.ph680, %525
  %531 = load i64, ptr %10, align 8, !tbaa !5
  %532 = icmp sgt i64 %531, 0
  br i1 %532, label %.lr.ph688, label %.loopexit619

.lr.ph688:                                        ; preds = %._crit_edge681
  %.idx599 = shl i64 %37, 4
  %.idx600 = shl i64 %40, 4
  br label %533

533:                                              ; preds = %.lr.ph688, %533
  %.15686 = phi i64 [ %531, %.lr.ph688 ], [ %545, %533 ]
  %534 = getelementptr double, ptr %44, i64 %.15686
  %535 = getelementptr double, ptr %534, i64 %40
  %536 = load double, ptr %535, align 8, !tbaa !12
  %537 = fneg double %536
  store double %537, ptr %26, align 8, !tbaa !12
  %538 = getelementptr i64, ptr %39, i64 %.15686
  %539 = getelementptr i8, ptr %538, i64 %.idx599
  %540 = load i64, ptr %539, align 8, !tbaa !5
  %gep683 = getelementptr %struct.doublecomplex, ptr %invariant.gep675, i64 %540
  %541 = getelementptr i64, ptr %538, i64 %37
  %542 = load i64, ptr %541, align 8, !tbaa !5
  %gep685 = getelementptr %struct.doublecomplex, ptr %invariant.gep675, i64 %542
  %543 = getelementptr i8, ptr %534, i64 %.idx600
  %544 = call i32 @f2c_zdrot(ptr noundef nonnull %4, ptr noundef %gep683, ptr noundef nonnull %6, ptr noundef %gep685, ptr noundef nonnull %6, ptr noundef %543, ptr noundef nonnull %26) #4
  %545 = add nsw i64 %.15686, -1
  %546 = icmp ugt i64 %.15686, 1
  br i1 %546, label %533, label %.loopexit619, !llvm.loop !64

.loopexit619:                                     ; preds = %533, %._crit_edge681, %303, %.loopexit, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  ret i32 0
}

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

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

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

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

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

declare double @dlamc3_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @f2c_dnrm2(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @f2c_dgemv(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 double @d_imag(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = !{!13, !13, i64 0}
!13 = !{!"double", !7, i64 0}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = !{!17, !13, i64 0}
!17 = !{!"", !13, i64 0, !13, i64 8}
!18 = !{!19}
!19 = distinct !{!19, !20}
!20 = distinct !{!20, !"LVerDomain"}
!21 = !{!22}
!22 = distinct !{!22, !20}
!23 = distinct !{!23, !10, !24, !25}
!24 = !{!"llvm.loop.isvectorized", i32 1}
!25 = !{!"llvm.loop.unroll.runtime.disable"}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.unroll.disable"}
!28 = distinct !{!28, !10, !24}
!29 = distinct !{!29, !10}
!30 = distinct !{!30, !10}
!31 = distinct !{!31, !10, !32}
!32 = !{!"llvm.loop.unswitch.partial.disable"}
!33 = !{!34}
!34 = distinct !{!34, !35}
!35 = distinct !{!35, !"LVerDomain"}
!36 = !{!37}
!37 = distinct !{!37, !35}
!38 = distinct !{!38, !10, !24, !25}
!39 = !{!17, !13, i64 8}
!40 = distinct !{!40, !10, !24}
!41 = distinct !{!41, !10}
!42 = distinct !{!42, !10}
!43 = distinct !{!43, !10}
!44 = distinct !{!44, !10}
!45 = !{!46}
!46 = distinct !{!46, !47}
!47 = distinct !{!47, !"LVerDomain"}
!48 = !{!49}
!49 = distinct !{!49, !47}
!50 = distinct !{!50, !10, !24, !25}
!51 = distinct !{!51, !27}
!52 = distinct !{!52, !10, !24}
!53 = distinct !{!53, !10}
!54 = distinct !{!54, !10}
!55 = distinct !{!55, !10, !32}
!56 = !{!57}
!57 = distinct !{!57, !58}
!58 = distinct !{!58, !"LVerDomain"}
!59 = !{!60}
!60 = distinct !{!60, !58}
!61 = distinct !{!61, !10, !24, !25}
!62 = distinct !{!62, !10, !24}
!63 = distinct !{!63, !10}
!64 = distinct !{!64, !10}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass,TailCallElimPass