; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/BLAS/TESTING (zblat3)

; 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"

%union.anon = type { %struct.anon }
%struct.anon = type { i64, i64, i64, i64 }
%struct.doublecomplex = type { double, double }
%struct.cilist = type { i64, i64, i64, ptr, i64 }
%struct.alist = type { i64, i64 }

@c__1 = external hidden global i64, align 8
@infoc_ = external dso_local global %union.anon, align 8
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__2 = external hidden global i64, align 8
@c_b1 = external hidden global %struct.doublecomplex, align 8
@c_true = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@zchk2_.ichs = external hidden global [2 x i8], align 1
@zchk2_.ichu = external hidden global [2 x i8], align 1
@zchk2_.io___172 = external hidden global %struct.cilist, align 8
@zchk2_.io___173 = external hidden global %struct.cilist, align 8
@zchk2_.io___176 = external hidden global %struct.cilist, align 8
@zchk2_.io___178 = external hidden global %struct.cilist, align 8
@zchk2_.io___179 = external hidden global %struct.cilist, align 8
@zchk2_.io___180 = external hidden global %struct.cilist, align 8
@zchk2_.io___181 = external hidden global %struct.cilist, align 8
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1

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

declare i64 @s_wsfe(ptr noundef) #1

declare i64 @do_fio(ptr noundef, ptr noundef, i64 noundef) #1

declare i64 @e_wsfe() #1

declare i64 @s_cmp(ptr noundef, ptr noundef, i64 noundef, i64 noundef) #1

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @zchk2_(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, ptr noundef %24, ptr noundef %25, i64 noundef %26) #2 {
  %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 ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca ptr, 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 i64, align 8
  %68 = alloca %struct.alist, align 8
  %69 = alloca i64, align 8
  %70 = alloca i64, align 8
  %71 = alloca i64, align 8
  %72 = alloca i64, align 8
  %73 = alloca i64, align 8
  %74 = alloca i64, align 8
  %75 = alloca i64, align 8
  %76 = alloca i64, align 8
  %77 = alloca i64, align 8
  %78 = alloca i64, align 8
  %79 = alloca i64, align 8
  %80 = alloca i64, align 8
  %81 = alloca i64, align 8
  %82 = alloca i64, align 8
  %83 = alloca i64, align 8
  %84 = alloca i64, align 8
  %85 = alloca i64, align 8
  %86 = alloca i64, align 8
  %87 = alloca %struct.doublecomplex, align 8
  %88 = alloca %struct.doublecomplex, align 8
  %89 = alloca i64, align 8
  %90 = alloca double, align 8
  %91 = alloca %struct.doublecomplex, align 8
  %92 = alloca i64, align 8
  %93 = alloca i64, align 8
  %94 = alloca i64, align 8
  %95 = alloca i64, align 8
  %96 = alloca [1 x i8], align 1
  %97 = alloca i64, align 8
  %98 = alloca i64, align 8
  %99 = alloca i64, align 8
  %100 = alloca [1 x i8], align 1
  %101 = alloca %struct.doublecomplex, align 8
  %102 = alloca [13 x i64], align 16
  %103 = alloca [1 x i8], align 1
  %104 = alloca i64, align 8
  %105 = alloca i64, align 8
  %106 = alloca [1 x i8], align 1
  %107 = alloca double, align 8
  store ptr %0, ptr %28, align 8, !tbaa !5
  store ptr %1, ptr %29, align 8, !tbaa !5
  store ptr %2, ptr %30, align 8, !tbaa !5
  store ptr %3, ptr %31, align 8, !tbaa !5
  store ptr %4, ptr %32, align 8, !tbaa !5
  store ptr %5, ptr %33, align 8, !tbaa !5
  store ptr %6, ptr %34, align 8, !tbaa !5
  store ptr %7, ptr %35, align 8, !tbaa !5
  store ptr %8, ptr %36, align 8, !tbaa !5
  store ptr %9, ptr %37, align 8, !tbaa !5
  store ptr %10, ptr %38, align 8, !tbaa !5
  store ptr %11, ptr %39, align 8, !tbaa !5
  store ptr %12, ptr %40, align 8, !tbaa !5
  store ptr %13, ptr %41, align 8, !tbaa !5
  store ptr %14, ptr %42, align 8, !tbaa !5
  store ptr %15, ptr %43, align 8, !tbaa !5
  store ptr %16, ptr %44, align 8, !tbaa !5
  store ptr %17, ptr %45, align 8, !tbaa !5
  store ptr %18, ptr %46, align 8, !tbaa !5
  store ptr %19, ptr %47, align 8, !tbaa !5
  store ptr %20, ptr %48, align 8, !tbaa !5
  store ptr %21, ptr %49, align 8, !tbaa !5
  store ptr %22, ptr %50, align 8, !tbaa !5
  store ptr %23, ptr %51, align 8, !tbaa !5
  store ptr %24, ptr %52, align 8, !tbaa !5
  store ptr %25, ptr %53, align 8, !tbaa !5
  store i64 %26, ptr %54, align 8, !tbaa !9
  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
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %87) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %88) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %91) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %101) #3
  call void @llvm.lifetime.start.p0(i64 104, ptr %102) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %103) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %106) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #3
  %108 = load ptr, ptr %37, align 8, !tbaa !5
  %109 = getelementptr inbounds i64, ptr %108, i32 -1
  store ptr %109, ptr %37, align 8, !tbaa !5
  %110 = load ptr, ptr %39, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.doublecomplex, ptr %110, i32 -1
  store ptr %111, ptr %39, align 8, !tbaa !5
  %112 = load ptr, ptr %41, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.doublecomplex, ptr %112, i32 -1
  store ptr %113, ptr %41, align 8, !tbaa !5
  %114 = load ptr, ptr %53, align 8, !tbaa !5
  %115 = getelementptr inbounds double, ptr %114, i32 -1
  store ptr %115, ptr %53, align 8, !tbaa !5
  %116 = load ptr, ptr %52, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.doublecomplex, ptr %116, i32 -1
  store ptr %117, ptr %52, align 8, !tbaa !5
  %118 = load ptr, ptr %51, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.doublecomplex, ptr %118, i32 -1
  store ptr %119, ptr %51, align 8, !tbaa !5
  %120 = load ptr, ptr %50, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.doublecomplex, ptr %120, i32 -1
  store ptr %121, ptr %50, align 8, !tbaa !5
  %122 = load ptr, ptr %42, align 8, !tbaa !5
  %123 = load i64, ptr %122, align 8, !tbaa !9
  store i64 %123, ptr %59, align 8, !tbaa !9
  %124 = load i64, ptr %59, align 8, !tbaa !9
  %125 = add nsw i64 1, %124
  store i64 %125, ptr %60, align 8, !tbaa !9
  %126 = load i64, ptr %60, align 8, !tbaa !9
  %127 = load ptr, ptr %49, align 8, !tbaa !5
  %128 = sub i64 0, %126
  %129 = getelementptr inbounds %struct.doublecomplex, ptr %127, i64 %128
  store ptr %129, ptr %49, align 8, !tbaa !5
  %130 = load ptr, ptr %48, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.doublecomplex, ptr %130, i32 -1
  store ptr %131, ptr %48, align 8, !tbaa !5
  %132 = load ptr, ptr %47, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.doublecomplex, ptr %132, i32 -1
  store ptr %133, ptr %47, align 8, !tbaa !5
  %134 = load ptr, ptr %42, align 8, !tbaa !5
  %135 = load i64, ptr %134, align 8, !tbaa !9
  store i64 %135, ptr %57, align 8, !tbaa !9
  %136 = load i64, ptr %57, align 8, !tbaa !9
  %137 = add nsw i64 1, %136
  store i64 %137, ptr %58, align 8, !tbaa !9
  %138 = load i64, ptr %58, align 8, !tbaa !9
  %139 = load ptr, ptr %46, align 8, !tbaa !5
  %140 = sub i64 0, %138
  %141 = getelementptr inbounds %struct.doublecomplex, ptr %139, i64 %140
  store ptr %141, ptr %46, align 8, !tbaa !5
  %142 = load ptr, ptr %45, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.doublecomplex, ptr %142, i32 -1
  store ptr %143, ptr %45, align 8, !tbaa !5
  %144 = load ptr, ptr %44, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.doublecomplex, ptr %144, i32 -1
  store ptr %145, ptr %44, align 8, !tbaa !5
  %146 = load ptr, ptr %42, align 8, !tbaa !5
  %147 = load i64, ptr %146, align 8, !tbaa !9
  store i64 %147, ptr %55, align 8, !tbaa !9
  %148 = load i64, ptr %55, align 8, !tbaa !9
  %149 = add nsw i64 1, %148
  store i64 %149, ptr %56, align 8, !tbaa !9
  %150 = load i64, ptr %56, align 8, !tbaa !9
  %151 = load ptr, ptr %43, align 8, !tbaa !5
  %152 = sub i64 0, %150
  %153 = getelementptr inbounds %struct.doublecomplex, ptr %151, i64 %152
  store ptr %153, ptr %43, align 8, !tbaa !5
  %154 = load ptr, ptr %28, align 8, !tbaa !5
  %155 = getelementptr inbounds i8, ptr %154, i64 1
  %156 = call i64 @s_cmp(ptr noundef %155, ptr noundef @.str.7, i64 noundef 2, i64 noundef 2)
  %157 = icmp eq i64 %156, 0
  %158 = zext i1 %157 to i32
  %159 = sext i32 %158 to i64
  store i64 %159, ptr %97, align 8, !tbaa !9
  store i64 12, ptr %104, align 8, !tbaa !9
  store i64 0, ptr %75, align 8, !tbaa !9
  store i64 1, ptr %105, align 8, !tbaa !9
  store double 0.000000e+00, ptr %107, align 8, !tbaa !11
  %160 = load ptr, ptr %36, align 8, !tbaa !5
  %161 = load i64, ptr %160, align 8, !tbaa !9
  store i64 %161, ptr %61, align 8, !tbaa !9
  store i64 1, ptr %76, align 8, !tbaa !9
  br label %162

162:                                              ; preds = %759, %27
  %163 = load i64, ptr %76, align 8, !tbaa !9
  %164 = load i64, ptr %61, align 8, !tbaa !9
  %165 = icmp sle i64 %163, %164
  br i1 %165, label %166, label %762

166:                                              ; preds = %162
  %167 = load ptr, ptr %37, align 8, !tbaa !5
  %168 = load i64, ptr %76, align 8, !tbaa !9
  %169 = getelementptr inbounds i64, ptr %167, i64 %168
  %170 = load i64, ptr %169, align 8, !tbaa !9
  store i64 %170, ptr %70, align 8, !tbaa !9
  %171 = load ptr, ptr %36, align 8, !tbaa !5
  %172 = load i64, ptr %171, align 8, !tbaa !9
  store i64 %172, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %173

173:                                              ; preds = %755, %166
  %174 = load i64, ptr %77, align 8, !tbaa !9
  %175 = load i64, ptr %62, align 8, !tbaa !9
  %176 = icmp sle i64 %174, %175
  br i1 %176, label %177, label %758

177:                                              ; preds = %173
  %178 = load ptr, ptr %37, align 8, !tbaa !5
  %179 = load i64, ptr %77, align 8, !tbaa !9
  %180 = getelementptr inbounds i64, ptr %178, i64 %179
  %181 = load i64, ptr %180, align 8, !tbaa !9
  store i64 %181, ptr %71, align 8, !tbaa !9
  %182 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %182, ptr %85, align 8, !tbaa !9
  %183 = load i64, ptr %85, align 8, !tbaa !9
  %184 = load ptr, ptr %42, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = icmp slt i64 %183, %185
  br i1 %186, label %187, label %190

187:                                              ; preds = %177
  %188 = load i64, ptr %85, align 8, !tbaa !9
  %189 = add nsw i64 %188, 1
  store i64 %189, ptr %85, align 8, !tbaa !9
  br label %190

190:                                              ; preds = %187, %177
  %191 = load i64, ptr %85, align 8, !tbaa !9
  %192 = load ptr, ptr %42, align 8, !tbaa !5
  %193 = load i64, ptr %192, align 8, !tbaa !9
  %194 = icmp sgt i64 %191, %193
  br i1 %194, label %195, label %196

195:                                              ; preds = %190
  br label %754

196:                                              ; preds = %190
  %197 = load i64, ptr %85, align 8, !tbaa !9
  %198 = load i64, ptr %71, align 8, !tbaa !9
  %199 = mul nsw i64 %197, %198
  store i64 %199, ptr %83, align 8, !tbaa !9
  %200 = load i64, ptr %71, align 8, !tbaa !9
  %201 = icmp sle i64 %200, 0
  br i1 %201, label %205, label %202

202:                                              ; preds = %196
  %203 = load i64, ptr %70, align 8, !tbaa !9
  %204 = icmp sle i64 %203, 0
  br label %205

205:                                              ; preds = %202, %196
  %206 = phi i1 [ true, %196 ], [ %204, %202 ]
  %207 = zext i1 %206 to i32
  %208 = sext i32 %207 to i64
  store i64 %208, ptr %99, align 8, !tbaa !9
  %209 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %209, ptr %84, align 8, !tbaa !9
  %210 = load i64, ptr %84, align 8, !tbaa !9
  %211 = load ptr, ptr %42, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  %213 = icmp slt i64 %210, %212
  br i1 %213, label %214, label %217

214:                                              ; preds = %205
  %215 = load i64, ptr %84, align 8, !tbaa !9
  %216 = add nsw i64 %215, 1
  store i64 %216, ptr %84, align 8, !tbaa !9
  br label %217

217:                                              ; preds = %214, %205
  %218 = load i64, ptr %84, align 8, !tbaa !9
  %219 = load ptr, ptr %42, align 8, !tbaa !5
  %220 = load i64, ptr %219, align 8, !tbaa !9
  %221 = icmp sgt i64 %218, %220
  br i1 %221, label %222, label %223

222:                                              ; preds = %217
  br label %754

223:                                              ; preds = %217
  %224 = load i64, ptr %84, align 8, !tbaa !9
  %225 = load i64, ptr %71, align 8, !tbaa !9
  %226 = mul nsw i64 %224, %225
  store i64 %226, ptr %81, align 8, !tbaa !9
  %227 = load ptr, ptr %46, align 8, !tbaa !5
  %228 = load i64, ptr %58, align 8, !tbaa !9
  %229 = getelementptr inbounds %struct.doublecomplex, ptr %227, i64 %228
  %230 = load ptr, ptr %42, align 8, !tbaa !5
  %231 = load ptr, ptr %47, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.doublecomplex, ptr %231, i64 1
  %233 = call i32 @zmake_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %70, ptr noundef %71, ptr noundef %229, ptr noundef %230, ptr noundef %232, ptr noundef %84, ptr noundef %105, ptr noundef @c_b1, i64 noundef 2, i64 noundef 1, i64 noundef 1)
  store i64 1, ptr %86, align 8, !tbaa !9
  br label %234

234:                                              ; preds = %750, %223
  %235 = load i64, ptr %86, align 8, !tbaa !9
  %236 = icmp sle i64 %235, 2
  br i1 %236, label %237, label %753

237:                                              ; preds = %234
  %238 = load i64, ptr %86, align 8, !tbaa !9
  %239 = sub nsw i64 %238, 1
  %240 = getelementptr inbounds [2 x i8], ptr @zchk2_.ichs, i64 0, i64 %239
  %241 = load i8, ptr %240, align 1, !tbaa !13
  %242 = getelementptr inbounds [1 x i8], ptr %96, i64 0, i64 0
  store i8 %241, ptr %242, align 1, !tbaa !13
  %243 = getelementptr inbounds [1 x i8], ptr %96, i64 0, i64 0
  %244 = load i8, ptr %243, align 1, !tbaa !13
  %245 = zext i8 %244 to i32
  %246 = icmp eq i32 %245, 76
  %247 = zext i1 %246 to i32
  %248 = sext i32 %247 to i64
  store i64 %248, ptr %98, align 8, !tbaa !9
  %249 = load i64, ptr %98, align 8, !tbaa !9
  %250 = icmp ne i64 %249, 0
  br i1 %250, label %251, label %253

251:                                              ; preds = %237
  %252 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %252, ptr %74, align 8, !tbaa !9
  br label %255

253:                                              ; preds = %237
  %254 = load i64, ptr %71, align 8, !tbaa !9
  store i64 %254, ptr %74, align 8, !tbaa !9
  br label %255

255:                                              ; preds = %253, %251
  %256 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %256, ptr %82, align 8, !tbaa !9
  %257 = load i64, ptr %82, align 8, !tbaa !9
  %258 = load ptr, ptr %42, align 8, !tbaa !5
  %259 = load i64, ptr %258, align 8, !tbaa !9
  %260 = icmp slt i64 %257, %259
  br i1 %260, label %261, label %264

261:                                              ; preds = %255
  %262 = load i64, ptr %82, align 8, !tbaa !9
  %263 = add nsw i64 %262, 1
  store i64 %263, ptr %82, align 8, !tbaa !9
  br label %264

264:                                              ; preds = %261, %255
  %265 = load i64, ptr %82, align 8, !tbaa !9
  %266 = load ptr, ptr %42, align 8, !tbaa !5
  %267 = load i64, ptr %266, align 8, !tbaa !9
  %268 = icmp sgt i64 %265, %267
  br i1 %268, label %269, label %270

269:                                              ; preds = %264
  br label %749

270:                                              ; preds = %264
  %271 = load i64, ptr %82, align 8, !tbaa !9
  %272 = load i64, ptr %74, align 8, !tbaa !9
  %273 = mul nsw i64 %271, %272
  store i64 %273, ptr %80, align 8, !tbaa !9
  store i64 1, ptr %89, align 8, !tbaa !9
  br label %274

274:                                              ; preds = %745, %270
  %275 = load i64, ptr %89, align 8, !tbaa !9
  %276 = icmp sle i64 %275, 2
  br i1 %276, label %277, label %748

277:                                              ; preds = %274
  %278 = load i64, ptr %89, align 8, !tbaa !9
  %279 = sub nsw i64 %278, 1
  %280 = getelementptr inbounds [2 x i8], ptr @zchk2_.ichu, i64 0, i64 %279
  %281 = load i8, ptr %280, align 1, !tbaa !13
  %282 = getelementptr inbounds [1 x i8], ptr %100, i64 0, i64 0
  store i8 %281, ptr %282, align 1, !tbaa !13
  %283 = load ptr, ptr %28, align 8, !tbaa !5
  %284 = getelementptr inbounds i8, ptr %283, i64 1
  %285 = getelementptr inbounds [1 x i8], ptr %100, i64 0, i64 0
  %286 = load ptr, ptr %43, align 8, !tbaa !5
  %287 = load i64, ptr %56, align 8, !tbaa !9
  %288 = getelementptr inbounds %struct.doublecomplex, ptr %286, i64 %287
  %289 = load ptr, ptr %42, align 8, !tbaa !5
  %290 = load ptr, ptr %44, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.doublecomplex, ptr %290, i64 1
  %292 = call i32 @zmake_(ptr noundef %284, ptr noundef %285, ptr noundef @.str.6, ptr noundef %74, ptr noundef %74, ptr noundef %288, ptr noundef %289, ptr noundef %291, ptr noundef %82, ptr noundef %105, ptr noundef @c_b1, i64 noundef 2, i64 noundef 1, i64 noundef 1)
  %293 = load ptr, ptr %38, align 8, !tbaa !5
  %294 = load i64, ptr %293, align 8, !tbaa !9
  store i64 %294, ptr %63, align 8, !tbaa !9
  store i64 1, ptr %72, align 8, !tbaa !9
  br label %295

295:                                              ; preds = %741, %277
  %296 = load i64, ptr %72, align 8, !tbaa !9
  %297 = load i64, ptr %63, align 8, !tbaa !9
  %298 = icmp sle i64 %296, %297
  br i1 %298, label %299, label %744

299:                                              ; preds = %295
  %300 = load i64, ptr %72, align 8, !tbaa !9
  store i64 %300, ptr %64, align 8, !tbaa !9
  %301 = load ptr, ptr %39, align 8, !tbaa !5
  %302 = load i64, ptr %64, align 8, !tbaa !9
  %303 = getelementptr inbounds %struct.doublecomplex, ptr %301, i64 %302
  %304 = getelementptr inbounds %struct.doublecomplex, ptr %303, i32 0, i32 0
  %305 = load double, ptr %304, align 8, !tbaa !14
  %306 = getelementptr inbounds %struct.doublecomplex, ptr %101, i32 0, i32 0
  store double %305, ptr %306, align 8, !tbaa !14
  %307 = load ptr, ptr %39, align 8, !tbaa !5
  %308 = load i64, ptr %64, align 8, !tbaa !9
  %309 = getelementptr inbounds %struct.doublecomplex, ptr %307, i64 %308
  %310 = getelementptr inbounds %struct.doublecomplex, ptr %309, i32 0, i32 1
  %311 = load double, ptr %310, align 8, !tbaa !16
  %312 = getelementptr inbounds %struct.doublecomplex, ptr %101, i32 0, i32 1
  store double %311, ptr %312, align 8, !tbaa !16
  %313 = load ptr, ptr %40, align 8, !tbaa !5
  %314 = load i64, ptr %313, align 8, !tbaa !9
  store i64 %314, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %73, align 8, !tbaa !9
  br label %315

315:                                              ; preds = %737, %299
  %316 = load i64, ptr %73, align 8, !tbaa !9
  %317 = load i64, ptr %64, align 8, !tbaa !9
  %318 = icmp sle i64 %316, %317
  br i1 %318, label %319, label %740

319:                                              ; preds = %315
  %320 = load i64, ptr %73, align 8, !tbaa !9
  store i64 %320, ptr %65, align 8, !tbaa !9
  %321 = load ptr, ptr %41, align 8, !tbaa !5
  %322 = load i64, ptr %65, align 8, !tbaa !9
  %323 = getelementptr inbounds %struct.doublecomplex, ptr %321, i64 %322
  %324 = getelementptr inbounds %struct.doublecomplex, ptr %323, i32 0, i32 0
  %325 = load double, ptr %324, align 8, !tbaa !14
  %326 = getelementptr inbounds %struct.doublecomplex, ptr %91, i32 0, i32 0
  store double %325, ptr %326, align 8, !tbaa !14
  %327 = load ptr, ptr %41, align 8, !tbaa !5
  %328 = load i64, ptr %65, align 8, !tbaa !9
  %329 = getelementptr inbounds %struct.doublecomplex, ptr %327, i64 %328
  %330 = getelementptr inbounds %struct.doublecomplex, ptr %329, i32 0, i32 1
  %331 = load double, ptr %330, align 8, !tbaa !16
  %332 = getelementptr inbounds %struct.doublecomplex, ptr %91, i32 0, i32 1
  store double %331, ptr %332, align 8, !tbaa !16
  %333 = load ptr, ptr %49, align 8, !tbaa !5
  %334 = load i64, ptr %60, align 8, !tbaa !9
  %335 = getelementptr inbounds %struct.doublecomplex, ptr %333, i64 %334
  %336 = load ptr, ptr %42, align 8, !tbaa !5
  %337 = load ptr, ptr %50, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.doublecomplex, ptr %337, i64 1
  %339 = call i32 @zmake_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %70, ptr noundef %71, ptr noundef %335, ptr noundef %336, ptr noundef %338, ptr noundef %85, ptr noundef %105, ptr noundef @c_b1, i64 noundef 2, i64 noundef 1, i64 noundef 1)
  %340 = load i64, ptr %75, align 8, !tbaa !9
  %341 = add nsw i64 %340, 1
  store i64 %341, ptr %75, align 8, !tbaa !9
  %342 = getelementptr inbounds [1 x i8], ptr %96, i64 0, i64 0
  %343 = load i8, ptr %342, align 1, !tbaa !13
  %344 = getelementptr inbounds [1 x i8], ptr %103, i64 0, i64 0
  store i8 %343, ptr %344, align 1, !tbaa !13
  %345 = getelementptr inbounds [1 x i8], ptr %100, i64 0, i64 0
  %346 = load i8, ptr %345, align 1, !tbaa !13
  %347 = getelementptr inbounds [1 x i8], ptr %106, i64 0, i64 0
  store i8 %346, ptr %347, align 1, !tbaa !13
  %348 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %348, ptr %78, align 8, !tbaa !9
  %349 = load i64, ptr %71, align 8, !tbaa !9
  store i64 %349, ptr %79, align 8, !tbaa !9
  %350 = getelementptr inbounds %struct.doublecomplex, ptr %101, i32 0, i32 0
  %351 = load double, ptr %350, align 8, !tbaa !14
  %352 = getelementptr inbounds %struct.doublecomplex, ptr %87, i32 0, i32 0
  store double %351, ptr %352, align 8, !tbaa !14
  %353 = getelementptr inbounds %struct.doublecomplex, ptr %101, i32 0, i32 1
  %354 = load double, ptr %353, align 8, !tbaa !16
  %355 = getelementptr inbounds %struct.doublecomplex, ptr %87, i32 0, i32 1
  store double %354, ptr %355, align 8, !tbaa !16
  %356 = load i64, ptr %80, align 8, !tbaa !9
  store i64 %356, ptr %65, align 8, !tbaa !9
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %357

357:                                              ; preds = %382, %319
  %358 = load i64, ptr %69, align 8, !tbaa !9
  %359 = load i64, ptr %65, align 8, !tbaa !9
  %360 = icmp sle i64 %358, %359
  br i1 %360, label %361, label %385

361:                                              ; preds = %357
  %362 = load i64, ptr %69, align 8, !tbaa !9
  store i64 %362, ptr %66, align 8, !tbaa !9
  %363 = load i64, ptr %69, align 8, !tbaa !9
  store i64 %363, ptr %67, align 8, !tbaa !9
  %364 = load ptr, ptr %44, align 8, !tbaa !5
  %365 = load i64, ptr %67, align 8, !tbaa !9
  %366 = getelementptr inbounds %struct.doublecomplex, ptr %364, i64 %365
  %367 = getelementptr inbounds %struct.doublecomplex, ptr %366, i32 0, i32 0
  %368 = load double, ptr %367, align 8, !tbaa !14
  %369 = load ptr, ptr %45, align 8, !tbaa !5
  %370 = load i64, ptr %66, align 8, !tbaa !9
  %371 = getelementptr inbounds %struct.doublecomplex, ptr %369, i64 %370
  %372 = getelementptr inbounds %struct.doublecomplex, ptr %371, i32 0, i32 0
  store double %368, ptr %372, align 8, !tbaa !14
  %373 = load ptr, ptr %44, align 8, !tbaa !5
  %374 = load i64, ptr %67, align 8, !tbaa !9
  %375 = getelementptr inbounds %struct.doublecomplex, ptr %373, i64 %374
  %376 = getelementptr inbounds %struct.doublecomplex, ptr %375, i32 0, i32 1
  %377 = load double, ptr %376, align 8, !tbaa !16
  %378 = load ptr, ptr %45, align 8, !tbaa !5
  %379 = load i64, ptr %66, align 8, !tbaa !9
  %380 = getelementptr inbounds %struct.doublecomplex, ptr %378, i64 %379
  %381 = getelementptr inbounds %struct.doublecomplex, ptr %380, i32 0, i32 1
  store double %377, ptr %381, align 8, !tbaa !16
  br label %382

382:                                              ; preds = %361
  %383 = load i64, ptr %69, align 8, !tbaa !9
  %384 = add nsw i64 %383, 1
  store i64 %384, ptr %69, align 8, !tbaa !9
  br label %357, !llvm.loop !17

385:                                              ; preds = %357
  %386 = load i64, ptr %82, align 8, !tbaa !9
  store i64 %386, ptr %92, align 8, !tbaa !9
  %387 = load i64, ptr %81, align 8, !tbaa !9
  store i64 %387, ptr %65, align 8, !tbaa !9
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %388

388:                                              ; preds = %413, %385
  %389 = load i64, ptr %69, align 8, !tbaa !9
  %390 = load i64, ptr %65, align 8, !tbaa !9
  %391 = icmp sle i64 %389, %390
  br i1 %391, label %392, label %416

392:                                              ; preds = %388
  %393 = load i64, ptr %69, align 8, !tbaa !9
  store i64 %393, ptr %66, align 8, !tbaa !9
  %394 = load i64, ptr %69, align 8, !tbaa !9
  store i64 %394, ptr %67, align 8, !tbaa !9
  %395 = load ptr, ptr %47, align 8, !tbaa !5
  %396 = load i64, ptr %67, align 8, !tbaa !9
  %397 = getelementptr inbounds %struct.doublecomplex, ptr %395, i64 %396
  %398 = getelementptr inbounds %struct.doublecomplex, ptr %397, i32 0, i32 0
  %399 = load double, ptr %398, align 8, !tbaa !14
  %400 = load ptr, ptr %48, align 8, !tbaa !5
  %401 = load i64, ptr %66, align 8, !tbaa !9
  %402 = getelementptr inbounds %struct.doublecomplex, ptr %400, i64 %401
  %403 = getelementptr inbounds %struct.doublecomplex, ptr %402, i32 0, i32 0
  store double %399, ptr %403, align 8, !tbaa !14
  %404 = load ptr, ptr %47, align 8, !tbaa !5
  %405 = load i64, ptr %67, align 8, !tbaa !9
  %406 = getelementptr inbounds %struct.doublecomplex, ptr %404, i64 %405
  %407 = getelementptr inbounds %struct.doublecomplex, ptr %406, i32 0, i32 1
  %408 = load double, ptr %407, align 8, !tbaa !16
  %409 = load ptr, ptr %48, align 8, !tbaa !5
  %410 = load i64, ptr %66, align 8, !tbaa !9
  %411 = getelementptr inbounds %struct.doublecomplex, ptr %409, i64 %410
  %412 = getelementptr inbounds %struct.doublecomplex, ptr %411, i32 0, i32 1
  store double %408, ptr %412, align 8, !tbaa !16
  br label %413

413:                                              ; preds = %392
  %414 = load i64, ptr %69, align 8, !tbaa !9
  %415 = add nsw i64 %414, 1
  store i64 %415, ptr %69, align 8, !tbaa !9
  br label %388, !llvm.loop !19

416:                                              ; preds = %388
  %417 = load i64, ptr %84, align 8, !tbaa !9
  store i64 %417, ptr %93, align 8, !tbaa !9
  %418 = getelementptr inbounds %struct.doublecomplex, ptr %91, i32 0, i32 0
  %419 = load double, ptr %418, align 8, !tbaa !14
  %420 = getelementptr inbounds %struct.doublecomplex, ptr %88, i32 0, i32 0
  store double %419, ptr %420, align 8, !tbaa !14
  %421 = getelementptr inbounds %struct.doublecomplex, ptr %91, i32 0, i32 1
  %422 = load double, ptr %421, align 8, !tbaa !16
  %423 = getelementptr inbounds %struct.doublecomplex, ptr %88, i32 0, i32 1
  store double %422, ptr %423, align 8, !tbaa !16
  %424 = load i64, ptr %83, align 8, !tbaa !9
  store i64 %424, ptr %65, align 8, !tbaa !9
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %425

425:                                              ; preds = %450, %416
  %426 = load i64, ptr %69, align 8, !tbaa !9
  %427 = load i64, ptr %65, align 8, !tbaa !9
  %428 = icmp sle i64 %426, %427
  br i1 %428, label %429, label %453

429:                                              ; preds = %425
  %430 = load i64, ptr %69, align 8, !tbaa !9
  store i64 %430, ptr %66, align 8, !tbaa !9
  %431 = load i64, ptr %69, align 8, !tbaa !9
  store i64 %431, ptr %67, align 8, !tbaa !9
  %432 = load ptr, ptr %50, align 8, !tbaa !5
  %433 = load i64, ptr %67, align 8, !tbaa !9
  %434 = getelementptr inbounds %struct.doublecomplex, ptr %432, i64 %433
  %435 = getelementptr inbounds %struct.doublecomplex, ptr %434, i32 0, i32 0
  %436 = load double, ptr %435, align 8, !tbaa !14
  %437 = load ptr, ptr %51, align 8, !tbaa !5
  %438 = load i64, ptr %66, align 8, !tbaa !9
  %439 = getelementptr inbounds %struct.doublecomplex, ptr %437, i64 %438
  %440 = getelementptr inbounds %struct.doublecomplex, ptr %439, i32 0, i32 0
  store double %436, ptr %440, align 8, !tbaa !14
  %441 = load ptr, ptr %50, align 8, !tbaa !5
  %442 = load i64, ptr %67, align 8, !tbaa !9
  %443 = getelementptr inbounds %struct.doublecomplex, ptr %441, i64 %442
  %444 = getelementptr inbounds %struct.doublecomplex, ptr %443, i32 0, i32 1
  %445 = load double, ptr %444, align 8, !tbaa !16
  %446 = load ptr, ptr %51, align 8, !tbaa !5
  %447 = load i64, ptr %66, align 8, !tbaa !9
  %448 = getelementptr inbounds %struct.doublecomplex, ptr %446, i64 %447
  %449 = getelementptr inbounds %struct.doublecomplex, ptr %448, i32 0, i32 1
  store double %445, ptr %449, align 8, !tbaa !16
  br label %450

450:                                              ; preds = %429
  %451 = load i64, ptr %69, align 8, !tbaa !9
  %452 = add nsw i64 %451, 1
  store i64 %452, ptr %69, align 8, !tbaa !9
  br label %425, !llvm.loop !20

453:                                              ; preds = %425
  %454 = load i64, ptr %85, align 8, !tbaa !9
  store i64 %454, ptr %94, align 8, !tbaa !9
  %455 = load ptr, ptr %33, align 8, !tbaa !5
  %456 = load i64, ptr %455, align 8, !tbaa !9
  %457 = icmp ne i64 %456, 0
  br i1 %457, label %458, label %477

458:                                              ; preds = %453
  %459 = load ptr, ptr %32, align 8, !tbaa !5
  %460 = load i64, ptr %459, align 8, !tbaa !9
  store i64 %460, ptr getelementptr inbounds (%struct.cilist, ptr @zchk2_.io___172, i32 0, i32 1), align 8, !tbaa !21
  %461 = call i64 @s_wsfe(ptr noundef @zchk2_.io___172)
  %462 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %75, i64 noundef 8)
  %463 = load ptr, ptr %28, align 8, !tbaa !5
  %464 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %463, i64 noundef 6)
  %465 = getelementptr inbounds [1 x i8], ptr %96, i64 0, i64 0
  %466 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %465, i64 noundef 1)
  %467 = getelementptr inbounds [1 x i8], ptr %100, i64 0, i64 0
  %468 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %467, i64 noundef 1)
  %469 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %70, i64 noundef 8)
  %470 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %71, i64 noundef 8)
  %471 = call i64 @do_fio(ptr noundef @c__2, ptr noundef %101, i64 noundef 8)
  %472 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %82, i64 noundef 8)
  %473 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %84, i64 noundef 8)
  %474 = call i64 @do_fio(ptr noundef @c__2, ptr noundef %91, i64 noundef 8)
  %475 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %85, i64 noundef 8)
  %476 = call i64 @e_wsfe()
  br label %477

477:                                              ; preds = %458, %453
  %478 = load ptr, ptr %34, align 8, !tbaa !5
  %479 = load i64, ptr %478, align 8, !tbaa !9
  %480 = icmp ne i64 %479, 0
  br i1 %480, label %481, label %487

481:                                              ; preds = %477
  %482 = getelementptr inbounds %struct.alist, ptr %68, i32 0, i32 0
  store i64 0, ptr %482, align 8, !tbaa !23
  %483 = load ptr, ptr %32, align 8, !tbaa !5
  %484 = load i64, ptr %483, align 8, !tbaa !9
  %485 = getelementptr inbounds %struct.alist, ptr %68, i32 0, i32 1
  store i64 %484, ptr %485, align 8, !tbaa !25
  %486 = call i64 @f_rew(ptr noundef %68)
  br label %487

487:                                              ; preds = %481, %477
  %488 = load i64, ptr %97, align 8, !tbaa !9
  %489 = icmp ne i64 %488, 0
  br i1 %489, label %490, label %500

490:                                              ; preds = %487
  %491 = getelementptr inbounds [1 x i8], ptr %96, i64 0, i64 0
  %492 = getelementptr inbounds [1 x i8], ptr %100, i64 0, i64 0
  %493 = load ptr, ptr %44, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.doublecomplex, ptr %493, i64 1
  %495 = load ptr, ptr %47, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.doublecomplex, ptr %495, i64 1
  %497 = load ptr, ptr %50, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.doublecomplex, ptr %497, i64 1
  %499 = call i32 @f2c_zhemm(ptr noundef %491, ptr noundef %492, ptr noundef %70, ptr noundef %71, ptr noundef %101, ptr noundef %494, ptr noundef %82, ptr noundef %496, ptr noundef %84, ptr noundef %91, ptr noundef %498, ptr noundef %85)
  br label %510

500:                                              ; preds = %487
  %501 = getelementptr inbounds [1 x i8], ptr %96, i64 0, i64 0
  %502 = getelementptr inbounds [1 x i8], ptr %100, i64 0, i64 0
  %503 = load ptr, ptr %44, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.doublecomplex, ptr %503, i64 1
  %505 = load ptr, ptr %47, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.doublecomplex, ptr %505, i64 1
  %507 = load ptr, ptr %50, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.doublecomplex, ptr %507, i64 1
  %509 = call i32 @f2c_zsymm(ptr noundef %501, ptr noundef %502, ptr noundef %70, ptr noundef %71, ptr noundef %101, ptr noundef %504, ptr noundef %82, ptr noundef %506, ptr noundef %84, ptr noundef %91, ptr noundef %508, ptr noundef %85)
  br label %510

510:                                              ; preds = %500, %490
  %511 = load i64, ptr getelementptr inbounds (%struct.anon, ptr @infoc_, i32 0, i32 2), align 8, !tbaa !13
  %512 = icmp ne i64 %511, 0
  br i1 %512, label %519, label %513

513:                                              ; preds = %510
  %514 = load ptr, ptr %31, align 8, !tbaa !5
  %515 = load i64, ptr %514, align 8, !tbaa !9
  store i64 %515, ptr getelementptr inbounds (%struct.cilist, ptr @zchk2_.io___173, i32 0, i32 1), align 8, !tbaa !21
  %516 = call i64 @s_wsfe(ptr noundef @zchk2_.io___173)
  %517 = call i64 @e_wsfe()
  %518 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 1, ptr %518, align 8, !tbaa !9
  br label %785

519:                                              ; preds = %510
  %520 = getelementptr inbounds [1 x i8], ptr %103, i64 0, i64 0
  %521 = load i8, ptr %520, align 1, !tbaa !13
  %522 = zext i8 %521 to i32
  %523 = getelementptr inbounds [1 x i8], ptr %96, i64 0, i64 0
  %524 = load i8, ptr %523, align 1, !tbaa !13
  %525 = zext i8 %524 to i32
  %526 = icmp eq i32 %522, %525
  %527 = zext i1 %526 to i32
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds [13 x i64], ptr %102, i64 0, i64 0
  store i64 %528, ptr %529, align 16, !tbaa !9
  %530 = getelementptr inbounds [1 x i8], ptr %106, i64 0, i64 0
  %531 = load i8, ptr %530, align 1, !tbaa !13
  %532 = zext i8 %531 to i32
  %533 = getelementptr inbounds [1 x i8], ptr %100, i64 0, i64 0
  %534 = load i8, ptr %533, align 1, !tbaa !13
  %535 = zext i8 %534 to i32
  %536 = icmp eq i32 %532, %535
  %537 = zext i1 %536 to i32
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds [13 x i64], ptr %102, i64 0, i64 1
  store i64 %538, ptr %539, align 8, !tbaa !9
  %540 = load i64, ptr %78, align 8, !tbaa !9
  %541 = load i64, ptr %70, align 8, !tbaa !9
  %542 = icmp eq i64 %540, %541
  %543 = zext i1 %542 to i32
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds [13 x i64], ptr %102, i64 0, i64 2
  store i64 %544, ptr %545, align 16, !tbaa !9
  %546 = load i64, ptr %79, align 8, !tbaa !9
  %547 = load i64, ptr %71, align 8, !tbaa !9
  %548 = icmp eq i64 %546, %547
  %549 = zext i1 %548 to i32
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds [13 x i64], ptr %102, i64 0, i64 3
  store i64 %550, ptr %551, align 8, !tbaa !9
  %552 = getelementptr inbounds %struct.doublecomplex, ptr %87, i32 0, i32 0
  %553 = load double, ptr %552, align 8, !tbaa !14
  %554 = getelementptr inbounds %struct.doublecomplex, ptr %101, i32 0, i32 0
  %555 = load double, ptr %554, align 8, !tbaa !14
  %556 = fcmp oeq double %553, %555
  br i1 %556, label %557, label %563

557:                                              ; preds = %519
  %558 = getelementptr inbounds %struct.doublecomplex, ptr %87, i32 0, i32 1
  %559 = load double, ptr %558, align 8, !tbaa !16
  %560 = getelementptr inbounds %struct.doublecomplex, ptr %101, i32 0, i32 1
  %561 = load double, ptr %560, align 8, !tbaa !16
  %562 = fcmp oeq double %559, %561
  br label %563

563:                                              ; preds = %557, %519
  %564 = phi i1 [ false, %519 ], [ %562, %557 ]
  %565 = zext i1 %564 to i32
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds [13 x i64], ptr %102, i64 0, i64 4
  store i64 %566, ptr %567, align 16, !tbaa !9
  %568 = load ptr, ptr %45, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.doublecomplex, ptr %568, i64 1
  %570 = load ptr, ptr %44, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.doublecomplex, ptr %570, i64 1
  %572 = call i64 @lze_(ptr noundef %569, ptr noundef %571, ptr noundef %80)
  %573 = getelementptr inbounds [13 x i64], ptr %102, i64 0, i64 5
  store i64 %572, ptr %573, align 8, !tbaa !9
  %574 = load i64, ptr %92, align 8, !tbaa !9
  %575 = load i64, ptr %82, align 8, !tbaa !9
  %576 = icmp eq i64 %574, %575
  %577 = zext i1 %576 to i32
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds [13 x i64], ptr %102, i64 0, i64 6
  store i64 %578, ptr %579, align 16, !tbaa !9
  %580 = load ptr, ptr %48, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.doublecomplex, ptr %580, i64 1
  %582 = load ptr, ptr %47, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.doublecomplex, ptr %582, i64 1
  %584 = call i64 @lze_(ptr noundef %581, ptr noundef %583, ptr noundef %81)
  %585 = getelementptr inbounds [13 x i64], ptr %102, i64 0, i64 7
  store i64 %584, ptr %585, align 8, !tbaa !9
  %586 = load i64, ptr %93, align 8, !tbaa !9
  %587 = load i64, ptr %84, align 8, !tbaa !9
  %588 = icmp eq i64 %586, %587
  %589 = zext i1 %588 to i32
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds [13 x i64], ptr %102, i64 0, i64 8
  store i64 %590, ptr %591, align 16, !tbaa !9
  %592 = getelementptr inbounds %struct.doublecomplex, ptr %88, i32 0, i32 0
  %593 = load double, ptr %592, align 8, !tbaa !14
  %594 = getelementptr inbounds %struct.doublecomplex, ptr %91, i32 0, i32 0
  %595 = load double, ptr %594, align 8, !tbaa !14
  %596 = fcmp oeq double %593, %595
  br i1 %596, label %597, label %603

597:                                              ; preds = %563
  %598 = getelementptr inbounds %struct.doublecomplex, ptr %88, i32 0, i32 1
  %599 = load double, ptr %598, align 8, !tbaa !16
  %600 = getelementptr inbounds %struct.doublecomplex, ptr %91, i32 0, i32 1
  %601 = load double, ptr %600, align 8, !tbaa !16
  %602 = fcmp oeq double %599, %601
  br label %603

603:                                              ; preds = %597, %563
  %604 = phi i1 [ false, %563 ], [ %602, %597 ]
  %605 = zext i1 %604 to i32
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds [13 x i64], ptr %102, i64 0, i64 9
  store i64 %606, ptr %607, align 8, !tbaa !9
  %608 = load i64, ptr %99, align 8, !tbaa !9
  %609 = icmp ne i64 %608, 0
  br i1 %609, label %610, label %617

610:                                              ; preds = %603
  %611 = load ptr, ptr %51, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.doublecomplex, ptr %611, i64 1
  %613 = load ptr, ptr %50, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.doublecomplex, ptr %613, i64 1
  %615 = call i64 @lze_(ptr noundef %612, ptr noundef %614, ptr noundef %83)
  %616 = getelementptr inbounds [13 x i64], ptr %102, i64 0, i64 10
  store i64 %615, ptr %616, align 16, !tbaa !9
  br label %624

617:                                              ; preds = %603
  %618 = load ptr, ptr %51, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.doublecomplex, ptr %618, i64 1
  %620 = load ptr, ptr %50, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.doublecomplex, ptr %620, i64 1
  %622 = call i64 @lzeres_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %70, ptr noundef %71, ptr noundef %619, ptr noundef %621, ptr noundef %85, i64 noundef 2, i64 noundef 1)
  %623 = getelementptr inbounds [13 x i64], ptr %102, i64 0, i64 10
  store i64 %622, ptr %623, align 16, !tbaa !9
  br label %624

624:                                              ; preds = %617, %610
  %625 = load i64, ptr %94, align 8, !tbaa !9
  %626 = load i64, ptr %85, align 8, !tbaa !9
  %627 = icmp eq i64 %625, %626
  %628 = zext i1 %627 to i32
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds [13 x i64], ptr %102, i64 0, i64 11
  store i64 %629, ptr %630, align 8, !tbaa !9
  store i64 1, ptr %95, align 8, !tbaa !9
  %631 = load i64, ptr %104, align 8, !tbaa !9
  store i64 %631, ptr %65, align 8, !tbaa !9
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %632

632:                                              ; preds = %661, %624
  %633 = load i64, ptr %69, align 8, !tbaa !9
  %634 = load i64, ptr %65, align 8, !tbaa !9
  %635 = icmp sle i64 %633, %634
  br i1 %635, label %636, label %664

636:                                              ; preds = %632
  %637 = load i64, ptr %95, align 8, !tbaa !9
  %638 = icmp ne i64 %637, 0
  br i1 %638, label %639, label %645

639:                                              ; preds = %636
  %640 = load i64, ptr %69, align 8, !tbaa !9
  %641 = sub nsw i64 %640, 1
  %642 = getelementptr inbounds [13 x i64], ptr %102, i64 0, i64 %641
  %643 = load i64, ptr %642, align 8, !tbaa !9
  %644 = icmp ne i64 %643, 0
  br label %645

645:                                              ; preds = %639, %636
  %646 = phi i1 [ false, %636 ], [ %644, %639 ]
  %647 = zext i1 %646 to i32
  %648 = sext i32 %647 to i64
  store i64 %648, ptr %95, align 8, !tbaa !9
  %649 = load i64, ptr %69, align 8, !tbaa !9
  %650 = sub nsw i64 %649, 1
  %651 = getelementptr inbounds [13 x i64], ptr %102, i64 0, i64 %650
  %652 = load i64, ptr %651, align 8, !tbaa !9
  %653 = icmp ne i64 %652, 0
  br i1 %653, label %660, label %654

654:                                              ; preds = %645
  %655 = load ptr, ptr %31, align 8, !tbaa !5
  %656 = load i64, ptr %655, align 8, !tbaa !9
  store i64 %656, ptr getelementptr inbounds (%struct.cilist, ptr @zchk2_.io___176, i32 0, i32 1), align 8, !tbaa !21
  %657 = call i64 @s_wsfe(ptr noundef @zchk2_.io___176)
  %658 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %69, i64 noundef 8)
  %659 = call i64 @e_wsfe()
  br label %660

660:                                              ; preds = %654, %645
  br label %661

661:                                              ; preds = %660
  %662 = load i64, ptr %69, align 8, !tbaa !9
  %663 = add nsw i64 %662, 1
  store i64 %663, ptr %69, align 8, !tbaa !9
  br label %632, !llvm.loop !26

664:                                              ; preds = %632
  %665 = load i64, ptr %95, align 8, !tbaa !9
  %666 = icmp ne i64 %665, 0
  br i1 %666, label %669, label %667

667:                                              ; preds = %664
  %668 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 1, ptr %668, align 8, !tbaa !9
  br label %785

669:                                              ; preds = %664
  %670 = load i64, ptr %99, align 8, !tbaa !9
  %671 = icmp ne i64 %670, 0
  br i1 %671, label %736, label %672

672:                                              ; preds = %669
  %673 = load i64, ptr %98, align 8, !tbaa !9
  %674 = icmp ne i64 %673, 0
  br i1 %674, label %675, label %698

675:                                              ; preds = %672
  %676 = load ptr, ptr %43, align 8, !tbaa !5
  %677 = load i64, ptr %56, align 8, !tbaa !9
  %678 = getelementptr inbounds %struct.doublecomplex, ptr %676, i64 %677
  %679 = load ptr, ptr %42, align 8, !tbaa !5
  %680 = load ptr, ptr %46, align 8, !tbaa !5
  %681 = load i64, ptr %58, align 8, !tbaa !9
  %682 = getelementptr inbounds %struct.doublecomplex, ptr %680, i64 %681
  %683 = load ptr, ptr %42, align 8, !tbaa !5
  %684 = load ptr, ptr %49, align 8, !tbaa !5
  %685 = load i64, ptr %60, align 8, !tbaa !9
  %686 = getelementptr inbounds %struct.doublecomplex, ptr %684, i64 %685
  %687 = load ptr, ptr %42, align 8, !tbaa !5
  %688 = load ptr, ptr %52, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.doublecomplex, ptr %688, i64 1
  %690 = load ptr, ptr %53, align 8, !tbaa !5
  %691 = getelementptr inbounds double, ptr %690, i64 1
  %692 = load ptr, ptr %50, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.doublecomplex, ptr %692, i64 1
  %694 = load ptr, ptr %29, align 8, !tbaa !5
  %695 = load ptr, ptr %35, align 8, !tbaa !5
  %696 = load ptr, ptr %31, align 8, !tbaa !5
  %697 = call i32 @zmmch_(ptr noundef @.str.1, ptr noundef @.str.1, ptr noundef %70, ptr noundef %71, ptr noundef %70, ptr noundef %101, ptr noundef %678, ptr noundef %679, ptr noundef %682, ptr noundef %683, ptr noundef %91, ptr noundef %686, ptr noundef %687, ptr noundef %689, ptr noundef %691, ptr noundef %693, ptr noundef %85, ptr noundef %694, ptr noundef %90, ptr noundef %695, ptr noundef %696, ptr noundef @c_true, i64 noundef 1, i64 noundef 1)
  br label %721

698:                                              ; preds = %672
  %699 = load ptr, ptr %46, align 8, !tbaa !5
  %700 = load i64, ptr %58, align 8, !tbaa !9
  %701 = getelementptr inbounds %struct.doublecomplex, ptr %699, i64 %700
  %702 = load ptr, ptr %42, align 8, !tbaa !5
  %703 = load ptr, ptr %43, align 8, !tbaa !5
  %704 = load i64, ptr %56, align 8, !tbaa !9
  %705 = getelementptr inbounds %struct.doublecomplex, ptr %703, i64 %704
  %706 = load ptr, ptr %42, align 8, !tbaa !5
  %707 = load ptr, ptr %49, align 8, !tbaa !5
  %708 = load i64, ptr %60, align 8, !tbaa !9
  %709 = getelementptr inbounds %struct.doublecomplex, ptr %707, i64 %708
  %710 = load ptr, ptr %42, align 8, !tbaa !5
  %711 = load ptr, ptr %52, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.doublecomplex, ptr %711, i64 1
  %713 = load ptr, ptr %53, align 8, !tbaa !5
  %714 = getelementptr inbounds double, ptr %713, i64 1
  %715 = load ptr, ptr %50, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.doublecomplex, ptr %715, i64 1
  %717 = load ptr, ptr %29, align 8, !tbaa !5
  %718 = load ptr, ptr %35, align 8, !tbaa !5
  %719 = load ptr, ptr %31, align 8, !tbaa !5
  %720 = call i32 @zmmch_(ptr noundef @.str.1, ptr noundef @.str.1, ptr noundef %70, ptr noundef %71, ptr noundef %71, ptr noundef %101, ptr noundef %701, ptr noundef %702, ptr noundef %705, ptr noundef %706, ptr noundef %91, ptr noundef %709, ptr noundef %710, ptr noundef %712, ptr noundef %714, ptr noundef %716, ptr noundef %85, ptr noundef %717, ptr noundef %90, ptr noundef %718, ptr noundef %719, ptr noundef @c_true, i64 noundef 1, i64 noundef 1)
  br label %721

721:                                              ; preds = %698, %675
  %722 = load double, ptr %107, align 8, !tbaa !11
  %723 = load double, ptr %90, align 8, !tbaa !11
  %724 = fcmp oge double %722, %723
  br i1 %724, label %725, label %727

725:                                              ; preds = %721
  %726 = load double, ptr %107, align 8, !tbaa !11
  br label %729

727:                                              ; preds = %721
  %728 = load double, ptr %90, align 8, !tbaa !11
  br label %729

729:                                              ; preds = %727, %725
  %730 = phi double [ %726, %725 ], [ %728, %727 ]
  store double %730, ptr %107, align 8, !tbaa !11
  %731 = load ptr, ptr %35, align 8, !tbaa !5
  %732 = load i64, ptr %731, align 8, !tbaa !9
  %733 = icmp ne i64 %732, 0
  br i1 %733, label %734, label %735

734:                                              ; preds = %729
  br label %785

735:                                              ; preds = %729
  br label %736

736:                                              ; preds = %735, %669
  br label %737

737:                                              ; preds = %736
  %738 = load i64, ptr %73, align 8, !tbaa !9
  %739 = add nsw i64 %738, 1
  store i64 %739, ptr %73, align 8, !tbaa !9
  br label %315, !llvm.loop !27

740:                                              ; preds = %315
  br label %741

741:                                              ; preds = %740
  %742 = load i64, ptr %72, align 8, !tbaa !9
  %743 = add nsw i64 %742, 1
  store i64 %743, ptr %72, align 8, !tbaa !9
  br label %295, !llvm.loop !28

744:                                              ; preds = %295
  br label %745

745:                                              ; preds = %744
  %746 = load i64, ptr %89, align 8, !tbaa !9
  %747 = add nsw i64 %746, 1
  store i64 %747, ptr %89, align 8, !tbaa !9
  br label %274, !llvm.loop !29

748:                                              ; preds = %274
  br label %749

749:                                              ; preds = %748, %269
  br label %750

750:                                              ; preds = %749
  %751 = load i64, ptr %86, align 8, !tbaa !9
  %752 = add nsw i64 %751, 1
  store i64 %752, ptr %86, align 8, !tbaa !9
  br label %234, !llvm.loop !30

753:                                              ; preds = %234
  br label %754

754:                                              ; preds = %753, %222, %195
  br label %755

755:                                              ; preds = %754
  %756 = load i64, ptr %77, align 8, !tbaa !9
  %757 = add nsw i64 %756, 1
  store i64 %757, ptr %77, align 8, !tbaa !9
  br label %173, !llvm.loop !31

758:                                              ; preds = %173
  br label %759

759:                                              ; preds = %758
  %760 = load i64, ptr %76, align 8, !tbaa !9
  %761 = add nsw i64 %760, 1
  store i64 %761, ptr %76, align 8, !tbaa !9
  br label %162, !llvm.loop !32

762:                                              ; preds = %162
  %763 = load double, ptr %107, align 8, !tbaa !11
  %764 = load ptr, ptr %30, align 8, !tbaa !5
  %765 = load double, ptr %764, align 8, !tbaa !11
  %766 = fcmp olt double %763, %765
  br i1 %766, label %767, label %775

767:                                              ; preds = %762
  %768 = load ptr, ptr %31, align 8, !tbaa !5
  %769 = load i64, ptr %768, align 8, !tbaa !9
  store i64 %769, ptr getelementptr inbounds (%struct.cilist, ptr @zchk2_.io___178, i32 0, i32 1), align 8, !tbaa !21
  %770 = call i64 @s_wsfe(ptr noundef @zchk2_.io___178)
  %771 = load ptr, ptr %28, align 8, !tbaa !5
  %772 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %771, i64 noundef 6)
  %773 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %75, i64 noundef 8)
  %774 = call i64 @e_wsfe()
  br label %784

775:                                              ; preds = %762
  %776 = load ptr, ptr %31, align 8, !tbaa !5
  %777 = load i64, ptr %776, align 8, !tbaa !9
  store i64 %777, ptr getelementptr inbounds (%struct.cilist, ptr @zchk2_.io___179, i32 0, i32 1), align 8, !tbaa !21
  %778 = call i64 @s_wsfe(ptr noundef @zchk2_.io___179)
  %779 = load ptr, ptr %28, align 8, !tbaa !5
  %780 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %779, i64 noundef 6)
  %781 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %75, i64 noundef 8)
  %782 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %107, i64 noundef 8)
  %783 = call i64 @e_wsfe()
  br label %784

784:                                              ; preds = %775, %767
  br label %810

785:                                              ; preds = %734, %667, %513
  %786 = load ptr, ptr %31, align 8, !tbaa !5
  %787 = load i64, ptr %786, align 8, !tbaa !9
  store i64 %787, ptr getelementptr inbounds (%struct.cilist, ptr @zchk2_.io___180, i32 0, i32 1), align 8, !tbaa !21
  %788 = call i64 @s_wsfe(ptr noundef @zchk2_.io___180)
  %789 = load ptr, ptr %28, align 8, !tbaa !5
  %790 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %789, i64 noundef 6)
  %791 = call i64 @e_wsfe()
  %792 = load ptr, ptr %31, align 8, !tbaa !5
  %793 = load i64, ptr %792, align 8, !tbaa !9
  store i64 %793, ptr getelementptr inbounds (%struct.cilist, ptr @zchk2_.io___181, i32 0, i32 1), align 8, !tbaa !21
  %794 = call i64 @s_wsfe(ptr noundef @zchk2_.io___181)
  %795 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %75, i64 noundef 8)
  %796 = load ptr, ptr %28, align 8, !tbaa !5
  %797 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %796, i64 noundef 6)
  %798 = getelementptr inbounds [1 x i8], ptr %96, i64 0, i64 0
  %799 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %798, i64 noundef 1)
  %800 = getelementptr inbounds [1 x i8], ptr %100, i64 0, i64 0
  %801 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %800, i64 noundef 1)
  %802 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %70, i64 noundef 8)
  %803 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %71, i64 noundef 8)
  %804 = call i64 @do_fio(ptr noundef @c__2, ptr noundef %101, i64 noundef 8)
  %805 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %82, i64 noundef 8)
  %806 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %84, i64 noundef 8)
  %807 = call i64 @do_fio(ptr noundef @c__2, ptr noundef %91, i64 noundef 8)
  %808 = call i64 @do_fio(ptr noundef @c__1, ptr noundef %85, i64 noundef 8)
  %809 = call i64 @e_wsfe()
  br label %810

810:                                              ; preds = %785, %784
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #3
  call void @llvm.lifetime.end.p0(i64 104, ptr %102) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %87) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #3
  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
  ret i32 0
}

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

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

declare i64 @f_rew(ptr noundef) #1

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

declare i32 @f2c_zhemm(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

declare i32 @f2c_zsymm(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 #2 = { 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 #3 = { nounwind }

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

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


; 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"

%union.anon = type { %struct.anon }
%struct.anon = type { i64, i64, i64, i64 }
%struct.doublecomplex = type { double, double }
%struct.cilist = type { i64, i64, i64, ptr, i64 }
%struct.alist = type { i64, i64 }

@c__1 = external hidden global i64, align 8
@infoc_ = external dso_local local_unnamed_addr global %union.anon, align 8
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__2 = external hidden global i64, align 8
@c_b1 = external hidden global %struct.doublecomplex, align 8
@c_true = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@zchk2_.ichs = external hidden local_unnamed_addr global [2 x i8], align 1
@zchk2_.ichu = external hidden local_unnamed_addr global [2 x i8], align 1
@zchk2_.io___172 = external hidden global %struct.cilist, align 8
@zchk2_.io___173 = external hidden global %struct.cilist, align 8
@zchk2_.io___176 = external hidden global %struct.cilist, align 8
@zchk2_.io___178 = external hidden global %struct.cilist, align 8
@zchk2_.io___179 = external hidden global %struct.cilist, align 8
@zchk2_.io___180 = external hidden global %struct.cilist, align 8
@zchk2_.io___181 = external hidden global %struct.cilist, align 8
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1

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

declare i64 @s_wsfe(ptr noundef) local_unnamed_addr #1

declare i64 @do_fio(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #1

declare i64 @e_wsfe() local_unnamed_addr #1

declare i64 @s_cmp(ptr noundef, ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #1

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

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zchk2_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6, ptr noundef %7, ptr nocapture noundef readonly %8, ptr nocapture noundef readonly %9, ptr nocapture noundef readonly %10, ptr nocapture noundef readonly %11, ptr nocapture noundef readonly %12, ptr nocapture noundef readonly %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, ptr noundef %24, ptr noundef %25, i64 noundef %26) local_unnamed_addr #2 {
  %28 = alloca %struct.alist, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca double, align 8
  %41 = alloca %struct.doublecomplex, align 16
  %42 = alloca [1 x i8], align 1
  %43 = alloca [1 x i8], align 1
  %44 = alloca %struct.doublecomplex, align 16
  %45 = alloca [13 x i64], align 16
  %46 = alloca i64, align 8
  %47 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %42) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %43) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #3
  call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %45) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #3
  %48 = getelementptr inbounds i8, ptr %9, i64 -8
  %49 = getelementptr inbounds i8, ptr %11, i64 -16
  %50 = getelementptr inbounds i8, ptr %13, i64 -16
  %51 = getelementptr inbounds i8, ptr %23, i64 -16
  %52 = getelementptr inbounds i8, ptr %22, i64 -16
  %53 = getelementptr inbounds i8, ptr %20, i64 -16
  %54 = getelementptr inbounds i8, ptr %19, i64 -16
  %55 = getelementptr inbounds i8, ptr %17, i64 -16
  %56 = getelementptr inbounds i8, ptr %16, i64 -16
  %57 = getelementptr inbounds i8, ptr %0, i64 1
  %58 = tail call i64 @s_cmp(ptr noundef nonnull %57, ptr noundef nonnull @.str.7, i64 noundef 2, i64 noundef 2) #3
  %59 = icmp eq i64 %58, 0
  store i64 0, ptr %33, align 8, !tbaa !5
  store i64 1, ptr %46, align 8, !tbaa !5
  store double 0.000000e+00, ptr %47, align 8, !tbaa !9
  %60 = load i64, ptr %8, align 8, !tbaa !5
  %.not260 = icmp slt i64 %60, 1
  br i1 %.not260, label %._crit_edge264, label %.lr.ph263.split.preheader

.lr.ph263.split.preheader:                        ; preds = %27
  %61 = getelementptr inbounds i8, ptr %44, i64 8
  %62 = getelementptr inbounds i8, ptr %41, i64 8
  %63 = getelementptr inbounds i8, ptr %28, i64 8
  %64 = getelementptr inbounds i8, ptr %45, i64 8
  %65 = getelementptr inbounds i8, ptr %45, i64 16
  %66 = getelementptr inbounds i8, ptr %45, i64 24
  %67 = getelementptr inbounds i8, ptr %45, i64 32
  %68 = getelementptr inbounds i8, ptr %45, i64 40
  %69 = getelementptr inbounds i8, ptr %45, i64 48
  %70 = getelementptr inbounds i8, ptr %45, i64 56
  %71 = getelementptr inbounds i8, ptr %45, i64 64
  %72 = getelementptr inbounds i8, ptr %45, i64 72
  %73 = getelementptr inbounds i8, ptr %45, i64 80
  %74 = getelementptr inbounds i8, ptr %45, i64 88
  br label %.lr.ph263.split

.lr.ph263.split:                                  ; preds = %.lr.ph263.split.preheader, %._crit_edge259
  %75 = phi double [ %319, %._crit_edge259 ], [ 0.000000e+00, %.lr.ph263.split.preheader ]
  %.0189261 = phi i64 [ %320, %._crit_edge259 ], [ 1, %.lr.ph263.split.preheader ]
  %76 = getelementptr inbounds i64, ptr %48, i64 %.0189261
  %77 = load i64, ptr %76, align 8, !tbaa !5
  store i64 %77, ptr %30, align 8, !tbaa !5
  %78 = load i64, ptr %8, align 8, !tbaa !5
  %.not202255 = icmp slt i64 %78, 1
  br i1 %.not202255, label %._crit_edge259, label %.lr.ph258

.lr.ph258:                                        ; preds = %.lr.ph263.split, %.loopexit222
  %79 = phi double [ %317, %.loopexit222 ], [ %75, %.lr.ph263.split ]
  %.0188256 = phi i64 [ %318, %.loopexit222 ], [ 1, %.lr.ph263.split ]
  %80 = getelementptr inbounds i64, ptr %48, i64 %.0188256
  %81 = load i64, ptr %80, align 8, !tbaa !5
  store i64 %81, ptr %31, align 8, !tbaa !5
  %82 = load i64, ptr %30, align 8
  store i64 %82, ptr %39, align 8, !tbaa !5
  %83 = load i64, ptr %14, align 8, !tbaa !5
  %84 = icmp slt i64 %82, %83
  br i1 %84, label %85, label %87

85:                                               ; preds = %.lr.ph258
  %86 = add nsw i64 %82, 1
  store i64 %86, ptr %39, align 8, !tbaa !5
  br label %87

87:                                               ; preds = %85, %.lr.ph258
  %88 = phi i64 [ %86, %85 ], [ %82, %.lr.ph258 ]
  %89 = icmp sgt i64 %88, %83
  br i1 %89, label %.loopexit222, label %90

90:                                               ; preds = %87
  %91 = mul nsw i64 %88, %81
  store i64 %91, ptr %37, align 8, !tbaa !5
  %92 = icmp slt i64 %81, 1
  %93 = icmp slt i64 %82, 1
  %94 = or i1 %92, %93
  %95 = zext i1 %84 to i64
  %spec.select = add nsw i64 %82, %95
  store i64 %spec.select, ptr %38, align 8, !tbaa !5
  %96 = icmp sgt i64 %spec.select, %83
  br i1 %96, label %.loopexit222, label %97

97:                                               ; preds = %90
  %98 = mul nsw i64 %spec.select, %81
  store i64 %98, ptr %35, align 8, !tbaa !5
  %99 = call i32 @zmake_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %18, ptr noundef nonnull %14, ptr noundef %19, ptr noundef nonnull %38, ptr noundef nonnull %46, ptr noundef nonnull @c_b1, i64 noundef 2, i64 noundef 1, i64 noundef 1)
  br label %100

100:                                              ; preds = %97, %.loopexit221
  %101 = phi double [ %79, %97 ], [ %315, %.loopexit221 ]
  %.0187254 = phi i64 [ 1, %97 ], [ %316, %.loopexit221 ]
  %102 = add nsw i64 %.0187254, -1
  %103 = getelementptr inbounds [2 x i8], ptr @zchk2_.ichs, i64 0, i64 %102
  %104 = load i8, ptr %103, align 1, !tbaa !11
  store i8 %104, ptr %42, align 1, !tbaa !11
  %105 = icmp eq i8 %104, 76
  %.val = load i64, ptr %30, align 8
  %.val220 = load i64, ptr %31, align 8
  %storemerge = select i1 %105, i64 %.val, i64 %.val220
  store i64 %storemerge, ptr %32, align 8, !tbaa !5
  store i64 %storemerge, ptr %36, align 8, !tbaa !5
  %106 = load i64, ptr %14, align 8, !tbaa !5
  %107 = icmp slt i64 %storemerge, %106
  br i1 %107, label %108, label %110

108:                                              ; preds = %100
  %109 = add nsw i64 %storemerge, 1
  store i64 %109, ptr %36, align 8, !tbaa !5
  br label %110

110:                                              ; preds = %108, %100
  %111 = phi i64 [ %109, %108 ], [ %storemerge, %100 ]
  %112 = icmp sgt i64 %111, %106
  br i1 %112, label %.loopexit221, label %113

113:                                              ; preds = %110
  %114 = mul nsw i64 %111, %storemerge
  store i64 %114, ptr %34, align 8, !tbaa !5
  br label %115

115:                                              ; preds = %113, %._crit_edge248
  %116 = phi double [ %101, %113 ], [ %313, %._crit_edge248 ]
  %.0186253 = phi i64 [ 1, %113 ], [ %314, %._crit_edge248 ]
  %117 = add nsw i64 %.0186253, -1
  %118 = getelementptr inbounds [2 x i8], ptr @zchk2_.ichu, i64 0, i64 %117
  %119 = load i8, ptr %118, align 1, !tbaa !11
  store i8 %119, ptr %43, align 1, !tbaa !11
  %120 = call i32 @zmake_(ptr noundef nonnull %57, ptr noundef nonnull %43, ptr noundef nonnull @.str.6, ptr noundef nonnull %32, ptr noundef nonnull %32, ptr noundef %15, ptr noundef nonnull %14, ptr noundef %16, ptr noundef nonnull %36, ptr noundef nonnull %46, ptr noundef nonnull @c_b1, i64 noundef 2, i64 noundef 1, i64 noundef 1)
  %121 = load i64, ptr %10, align 8, !tbaa !5
  %.not203244 = icmp slt i64 %121, 1
  br i1 %.not203244, label %._crit_edge248, label %.lr.ph247

.lr.ph247:                                        ; preds = %115
  %122 = load i64, ptr %12, align 8, !tbaa !5
  %123 = icmp slt i64 %122, 1
  br i1 %123, label %.lr.ph247.split.us.preheader, label %.lr.ph247.split

.lr.ph247.split.us.preheader:                     ; preds = %.lr.ph247
  %124 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %121
  %125 = load <2 x double>, ptr %124, align 8, !tbaa !9
  store <2 x double> %125, ptr %44, align 16, !tbaa !9
  br label %._crit_edge248

.lr.ph247.split:                                  ; preds = %.lr.ph247, %._crit_edge243
  %126 = phi double [ %311, %._crit_edge243 ], [ %116, %.lr.ph247 ]
  %.0191245 = phi i64 [ %312, %._crit_edge243 ], [ 1, %.lr.ph247 ]
  %127 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %.0191245
  %128 = load <2 x double>, ptr %127, align 8, !tbaa !9
  store <2 x double> %128, ptr %44, align 16, !tbaa !9
  %129 = load i64, ptr %12, align 8, !tbaa !5
  %.not204239 = icmp slt i64 %129, 1
  br i1 %.not204239, label %._crit_edge243, label %.lr.ph242

.lr.ph242:                                        ; preds = %.lr.ph247.split, %308
  %130 = phi double [ %309, %308 ], [ %126, %.lr.ph247.split ]
  %.0190240 = phi i64 [ %310, %308 ], [ 1, %.lr.ph247.split ]
  %131 = getelementptr inbounds %struct.doublecomplex, ptr %50, i64 %.0190240
  %132 = load <2 x double>, ptr %131, align 8, !tbaa !9
  store <2 x double> %132, ptr %41, align 16, !tbaa !9
  %133 = call i32 @zmake_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %21, ptr noundef nonnull %14, ptr noundef %22, ptr noundef nonnull %39, ptr noundef nonnull %46, ptr noundef nonnull @c_b1, i64 noundef 2, i64 noundef 1, i64 noundef 1)
  %134 = load i64, ptr %33, align 8, !tbaa !5
  %135 = add nsw i64 %134, 1
  store i64 %135, ptr %33, align 8, !tbaa !5
  %136 = load i8, ptr %42, align 1, !tbaa !11
  %137 = load i8, ptr %43, align 1, !tbaa !11
  %138 = load i64, ptr %30, align 8, !tbaa !5
  %139 = load i64, ptr %31, align 8, !tbaa !5
  %140 = load double, ptr %44, align 16, !tbaa !12
  %141 = load double, ptr %61, align 8, !tbaa !14
  %142 = load i64, ptr %34, align 8, !tbaa !5
  %.not206223 = icmp slt i64 %142, 1
  br i1 %.not206223, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %.lr.ph242
  %xtraiter = and i64 %142, 3
  %143 = icmp ult i64 %142, 4
  br i1 %143, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %142, 9223372036854775804
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %storemerge205224 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %158, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.3, %.lr.ph ]
  %144 = getelementptr inbounds %struct.doublecomplex, ptr %56, i64 %storemerge205224
  %145 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %storemerge205224
  %146 = load <2 x double>, ptr %144, align 8, !tbaa !9
  store <2 x double> %146, ptr %145, align 8, !tbaa !9
  %147 = getelementptr %struct.doublecomplex, ptr %16, i64 %storemerge205224
  %148 = getelementptr %struct.doublecomplex, ptr %17, i64 %storemerge205224
  %149 = load <2 x double>, ptr %147, align 8, !tbaa !9
  store <2 x double> %149, ptr %148, align 8, !tbaa !9
  %150 = add nuw nsw i64 %storemerge205224, 2
  %151 = getelementptr inbounds %struct.doublecomplex, ptr %56, i64 %150
  %152 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %150
  %153 = load <2 x double>, ptr %151, align 8, !tbaa !9
  store <2 x double> %153, ptr %152, align 8, !tbaa !9
  %154 = add nuw i64 %storemerge205224, 3
  %155 = getelementptr inbounds %struct.doublecomplex, ptr %56, i64 %154
  %156 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %154
  %157 = load <2 x double>, ptr %155, align 8, !tbaa !9
  store <2 x double> %157, ptr %156, align 8, !tbaa !9
  %158 = add nuw i64 %storemerge205224, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !15

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %storemerge205224.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %158, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph.epil
  %storemerge205224.epil = phi i64 [ %162, %.lr.ph.epil ], [ %storemerge205224.unr, %._crit_edge.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph.epil ], [ 0, %._crit_edge.loopexit.unr-lcssa ]
  %159 = getelementptr inbounds %struct.doublecomplex, ptr %56, i64 %storemerge205224.epil
  %160 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %storemerge205224.epil
  %161 = load <2 x double>, ptr %159, align 8, !tbaa !9
  store <2 x double> %161, ptr %160, align 8, !tbaa !9
  %162 = add nuw i64 %storemerge205224.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge, label %.lr.ph.epil, !llvm.loop !17

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph.epil, %.lr.ph242
  %163 = load i64, ptr %36, align 8, !tbaa !5
  %164 = load i64, ptr %35, align 8, !tbaa !5
  %.not208225 = icmp slt i64 %164, 1
  br i1 %.not208225, label %._crit_edge229, label %.lr.ph228.preheader

.lr.ph228.preheader:                              ; preds = %._crit_edge
  %xtraiter298 = and i64 %164, 3
  %165 = icmp ult i64 %164, 4
  br i1 %165, label %._crit_edge229.loopexit.unr-lcssa, label %.lr.ph228.preheader.new

.lr.ph228.preheader.new:                          ; preds = %.lr.ph228.preheader
  %unroll_iter301 = and i64 %164, 9223372036854775804
  br label %.lr.ph228

.lr.ph228:                                        ; preds = %.lr.ph228, %.lr.ph228.preheader.new
  %storemerge207226 = phi i64 [ 1, %.lr.ph228.preheader.new ], [ %180, %.lr.ph228 ]
  %niter302 = phi i64 [ 0, %.lr.ph228.preheader.new ], [ %niter302.next.3, %.lr.ph228 ]
  %166 = getelementptr inbounds %struct.doublecomplex, ptr %54, i64 %storemerge207226
  %167 = getelementptr inbounds %struct.doublecomplex, ptr %53, i64 %storemerge207226
  %168 = load <2 x double>, ptr %166, align 8, !tbaa !9
  store <2 x double> %168, ptr %167, align 8, !tbaa !9
  %169 = getelementptr %struct.doublecomplex, ptr %19, i64 %storemerge207226
  %170 = getelementptr %struct.doublecomplex, ptr %20, i64 %storemerge207226
  %171 = load <2 x double>, ptr %169, align 8, !tbaa !9
  store <2 x double> %171, ptr %170, align 8, !tbaa !9
  %172 = add nuw nsw i64 %storemerge207226, 2
  %173 = getelementptr inbounds %struct.doublecomplex, ptr %54, i64 %172
  %174 = getelementptr inbounds %struct.doublecomplex, ptr %53, i64 %172
  %175 = load <2 x double>, ptr %173, align 8, !tbaa !9
  store <2 x double> %175, ptr %174, align 8, !tbaa !9
  %176 = add nuw i64 %storemerge207226, 3
  %177 = getelementptr inbounds %struct.doublecomplex, ptr %54, i64 %176
  %178 = getelementptr inbounds %struct.doublecomplex, ptr %53, i64 %176
  %179 = load <2 x double>, ptr %177, align 8, !tbaa !9
  store <2 x double> %179, ptr %178, align 8, !tbaa !9
  %180 = add nuw i64 %storemerge207226, 4
  %niter302.next.3 = add i64 %niter302, 4
  %niter302.ncmp.3 = icmp eq i64 %niter302.next.3, %unroll_iter301
  br i1 %niter302.ncmp.3, label %._crit_edge229.loopexit.unr-lcssa, label %.lr.ph228, !llvm.loop !19

._crit_edge229.loopexit.unr-lcssa:                ; preds = %.lr.ph228, %.lr.ph228.preheader
  %storemerge207226.unr = phi i64 [ 1, %.lr.ph228.preheader ], [ %180, %.lr.ph228 ]
  %lcmp.mod300.not = icmp eq i64 %xtraiter298, 0
  br i1 %lcmp.mod300.not, label %._crit_edge229, label %.lr.ph228.epil

.lr.ph228.epil:                                   ; preds = %._crit_edge229.loopexit.unr-lcssa, %.lr.ph228.epil
  %storemerge207226.epil = phi i64 [ %184, %.lr.ph228.epil ], [ %storemerge207226.unr, %._crit_edge229.loopexit.unr-lcssa ]
  %epil.iter299 = phi i64 [ %epil.iter299.next, %.lr.ph228.epil ], [ 0, %._crit_edge229.loopexit.unr-lcssa ]
  %181 = getelementptr inbounds %struct.doublecomplex, ptr %54, i64 %storemerge207226.epil
  %182 = getelementptr inbounds %struct.doublecomplex, ptr %53, i64 %storemerge207226.epil
  %183 = load <2 x double>, ptr %181, align 8, !tbaa !9
  store <2 x double> %183, ptr %182, align 8, !tbaa !9
  %184 = add nuw i64 %storemerge207226.epil, 1
  %epil.iter299.next = add i64 %epil.iter299, 1
  %epil.iter299.cmp.not = icmp eq i64 %epil.iter299.next, %xtraiter298
  br i1 %epil.iter299.cmp.not, label %._crit_edge229, label %.lr.ph228.epil, !llvm.loop !20

._crit_edge229:                                   ; preds = %._crit_edge229.loopexit.unr-lcssa, %.lr.ph228.epil, %._crit_edge
  %185 = load i64, ptr %38, align 8, !tbaa !5
  %186 = load double, ptr %41, align 16, !tbaa !12
  %187 = load double, ptr %62, align 8, !tbaa !14
  %188 = load i64, ptr %37, align 8, !tbaa !5
  %.not210231 = icmp slt i64 %188, 1
  br i1 %.not210231, label %._crit_edge235, label %.lr.ph234.preheader

.lr.ph234.preheader:                              ; preds = %._crit_edge229
  %189 = add nuw i64 %188, 1
  %xtraiter303 = and i64 %188, 3
  %190 = icmp ult i64 %188, 4
  br i1 %190, label %._crit_edge235.loopexit.unr-lcssa, label %.lr.ph234.preheader.new

.lr.ph234.preheader.new:                          ; preds = %.lr.ph234.preheader
  %unroll_iter306 = and i64 %188, 9223372036854775804
  br label %.lr.ph234

.lr.ph234:                                        ; preds = %.lr.ph234, %.lr.ph234.preheader.new
  %storemerge209232 = phi i64 [ 1, %.lr.ph234.preheader.new ], [ %205, %.lr.ph234 ]
  %niter307 = phi i64 [ 0, %.lr.ph234.preheader.new ], [ %niter307.next.3, %.lr.ph234 ]
  %191 = getelementptr inbounds %struct.doublecomplex, ptr %52, i64 %storemerge209232
  %192 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %storemerge209232
  %193 = load <2 x double>, ptr %191, align 8, !tbaa !9
  store <2 x double> %193, ptr %192, align 8, !tbaa !9
  %194 = getelementptr %struct.doublecomplex, ptr %22, i64 %storemerge209232
  %195 = getelementptr %struct.doublecomplex, ptr %23, i64 %storemerge209232
  %196 = load <2 x double>, ptr %194, align 8, !tbaa !9
  store <2 x double> %196, ptr %195, align 8, !tbaa !9
  %197 = add nuw nsw i64 %storemerge209232, 2
  %198 = getelementptr inbounds %struct.doublecomplex, ptr %52, i64 %197
  %199 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %197
  %200 = load <2 x double>, ptr %198, align 8, !tbaa !9
  store <2 x double> %200, ptr %199, align 8, !tbaa !9
  %201 = add nuw i64 %storemerge209232, 3
  %202 = getelementptr inbounds %struct.doublecomplex, ptr %52, i64 %201
  %203 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %201
  %204 = load <2 x double>, ptr %202, align 8, !tbaa !9
  store <2 x double> %204, ptr %203, align 8, !tbaa !9
  %205 = add nuw i64 %storemerge209232, 4
  %niter307.next.3 = add i64 %niter307, 4
  %niter307.ncmp.3 = icmp eq i64 %niter307.next.3, %unroll_iter306
  br i1 %niter307.ncmp.3, label %._crit_edge235.loopexit.unr-lcssa, label %.lr.ph234, !llvm.loop !21

._crit_edge235.loopexit.unr-lcssa:                ; preds = %.lr.ph234, %.lr.ph234.preheader
  %storemerge209232.unr = phi i64 [ 1, %.lr.ph234.preheader ], [ %205, %.lr.ph234 ]
  %lcmp.mod305.not = icmp eq i64 %xtraiter303, 0
  br i1 %lcmp.mod305.not, label %._crit_edge235, label %.lr.ph234.epil

.lr.ph234.epil:                                   ; preds = %._crit_edge235.loopexit.unr-lcssa, %.lr.ph234.epil
  %storemerge209232.epil = phi i64 [ %209, %.lr.ph234.epil ], [ %storemerge209232.unr, %._crit_edge235.loopexit.unr-lcssa ]
  %epil.iter304 = phi i64 [ %epil.iter304.next, %.lr.ph234.epil ], [ 0, %._crit_edge235.loopexit.unr-lcssa ]
  %206 = getelementptr inbounds %struct.doublecomplex, ptr %52, i64 %storemerge209232.epil
  %207 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %storemerge209232.epil
  %208 = load <2 x double>, ptr %206, align 8, !tbaa !9
  store <2 x double> %208, ptr %207, align 8, !tbaa !9
  %209 = add nuw i64 %storemerge209232.epil, 1
  %epil.iter304.next = add i64 %epil.iter304, 1
  %epil.iter304.cmp.not = icmp eq i64 %epil.iter304.next, %xtraiter303
  br i1 %epil.iter304.cmp.not, label %._crit_edge235, label %.lr.ph234.epil, !llvm.loop !22

._crit_edge235:                                   ; preds = %._crit_edge235.loopexit.unr-lcssa, %.lr.ph234.epil, %._crit_edge229
  %storemerge209.lcssa = phi i64 [ 1, %._crit_edge229 ], [ %189, %.lr.ph234.epil ], [ %189, %._crit_edge235.loopexit.unr-lcssa ]
  store i64 %storemerge209.lcssa, ptr %29, align 8, !tbaa !5
  %210 = load i64, ptr %39, align 8, !tbaa !5
  %211 = load i64, ptr %5, align 8, !tbaa !5
  %.not211 = icmp eq i64 %211, 0
  br i1 %.not211, label %227, label %212

212:                                              ; preds = %._crit_edge235
  %213 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %213, ptr getelementptr inbounds (i8, ptr @zchk2_.io___172, i64 8), align 8, !tbaa !23
  %214 = call i64 @s_wsfe(ptr noundef nonnull @zchk2_.io___172) #3
  %215 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %33, i64 noundef 8) #3
  %216 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef %0, i64 noundef 6) #3
  %217 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %42, i64 noundef 1) #3
  %218 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %43, i64 noundef 1) #3
  %219 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %30, i64 noundef 8) #3
  %220 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %31, i64 noundef 8) #3
  %221 = call i64 @do_fio(ptr noundef nonnull @c__2, ptr noundef nonnull %44, i64 noundef 8) #3
  %222 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %36, i64 noundef 8) #3
  %223 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %38, i64 noundef 8) #3
  %224 = call i64 @do_fio(ptr noundef nonnull @c__2, ptr noundef nonnull %41, i64 noundef 8) #3
  %225 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %39, i64 noundef 8) #3
  %226 = call i64 @e_wsfe() #3
  br label %227

227:                                              ; preds = %212, %._crit_edge235
  %228 = load i64, ptr %6, align 8, !tbaa !5
  %.not212 = icmp eq i64 %228, 0
  br i1 %.not212, label %232, label %229

229:                                              ; preds = %227
  store i64 0, ptr %28, align 8, !tbaa !26
  %230 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %230, ptr %63, align 8, !tbaa !28
  %231 = call i64 @f_rew(ptr noundef nonnull %28) #3
  br label %232

232:                                              ; preds = %229, %227
  br i1 %59, label %233, label %235

233:                                              ; preds = %232
  %234 = call i32 @f2c_zhemm(ptr noundef nonnull %42, ptr noundef nonnull %43, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %44, ptr noundef %16, ptr noundef nonnull %36, ptr noundef %19, ptr noundef nonnull %38, ptr noundef nonnull %41, ptr noundef %22, ptr noundef nonnull %39) #3
  br label %237

235:                                              ; preds = %232
  %236 = call i32 @f2c_zsymm(ptr noundef nonnull %42, ptr noundef nonnull %43, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %44, ptr noundef %16, ptr noundef nonnull %36, ptr noundef %19, ptr noundef nonnull %38, ptr noundef nonnull %41, ptr noundef %22, ptr noundef nonnull %39) #3
  br label %237

237:                                              ; preds = %235, %233
  %238 = load i64, ptr getelementptr inbounds (i8, ptr @infoc_, i64 16), align 8, !tbaa !11
  %.not213 = icmp eq i64 %238, 0
  br i1 %.not213, label %239, label %243

239:                                              ; preds = %237
  %240 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %240, ptr getelementptr inbounds (i8, ptr @zchk2_.io___173, i64 8), align 8, !tbaa !23
  %241 = call i64 @s_wsfe(ptr noundef nonnull @zchk2_.io___173) #3
  %242 = call i64 @e_wsfe() #3
  br label %.loopexit.sink.split

243:                                              ; preds = %237
  %244 = load i8, ptr %42, align 1, !tbaa !11
  %245 = icmp eq i8 %136, %244
  %246 = zext i1 %245 to i64
  store i64 %246, ptr %45, align 16, !tbaa !5
  %247 = load i8, ptr %43, align 1, !tbaa !11
  %248 = icmp eq i8 %137, %247
  %249 = zext i1 %248 to i64
  store i64 %249, ptr %64, align 8, !tbaa !5
  %250 = load i64, ptr %30, align 8, !tbaa !5
  %251 = icmp eq i64 %138, %250
  %252 = zext i1 %251 to i64
  store i64 %252, ptr %65, align 16, !tbaa !5
  %253 = load i64, ptr %31, align 8, !tbaa !5
  %254 = icmp eq i64 %139, %253
  %255 = zext i1 %254 to i64
  store i64 %255, ptr %66, align 8, !tbaa !5
  %256 = load double, ptr %44, align 16, !tbaa !12
  %257 = fcmp oeq double %140, %256
  %258 = load double, ptr %61, align 8
  %259 = fcmp oeq double %141, %258
  %260 = select i1 %257, i1 %259, i1 false
  %261 = zext i1 %260 to i64
  store i64 %261, ptr %67, align 16, !tbaa !5
  %262 = call i64 @lze_(ptr noundef %17, ptr noundef %16, ptr noundef nonnull %34)
  store i64 %262, ptr %68, align 8, !tbaa !5
  %263 = load i64, ptr %36, align 8, !tbaa !5
  %264 = icmp eq i64 %163, %263
  %265 = zext i1 %264 to i64
  store i64 %265, ptr %69, align 16, !tbaa !5
  %266 = call i64 @lze_(ptr noundef %20, ptr noundef %19, ptr noundef nonnull %35)
  store i64 %266, ptr %70, align 8, !tbaa !5
  %267 = load i64, ptr %38, align 8, !tbaa !5
  %268 = icmp eq i64 %185, %267
  %269 = zext i1 %268 to i64
  store i64 %269, ptr %71, align 16, !tbaa !5
  %270 = load double, ptr %41, align 16, !tbaa !12
  %271 = fcmp oeq double %186, %270
  %272 = load double, ptr %62, align 8
  %273 = fcmp oeq double %187, %272
  %274 = select i1 %271, i1 %273, i1 false
  %275 = zext i1 %274 to i64
  store i64 %275, ptr %72, align 8, !tbaa !5
  br i1 %94, label %276, label %278

276:                                              ; preds = %243
  %277 = call i64 @lze_(ptr noundef %23, ptr noundef %22, ptr noundef nonnull %37)
  br label %280

278:                                              ; preds = %243
  %279 = call i64 @lzeres_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %23, ptr noundef %22, ptr noundef nonnull %39, i64 noundef 2, i64 noundef 1)
  br label %280

280:                                              ; preds = %278, %276
  %storemerge279 = phi i64 [ %279, %278 ], [ %277, %276 ]
  store i64 %storemerge279, ptr %73, align 16, !tbaa !5
  %281 = load i64, ptr %39, align 8, !tbaa !5
  %282 = icmp eq i64 %210, %281
  %283 = zext i1 %282 to i64
  store i64 %283, ptr %74, align 8, !tbaa !5
  store i64 1, ptr %29, align 8, !tbaa !5
  br label %._crit_edge277

._crit_edge277:                                   ; preds = %280, %292
  %284 = phi i64 [ 1, %280 ], [ %294, %292 ]
  %.0238 = phi i1 [ true, %280 ], [ %286, %292 ]
  %storemerge214237 = phi i64 [ 0, %280 ], [ %293, %292 ]
  %.phi.trans.insert = getelementptr inbounds [13 x i64], ptr %45, i64 0, i64 %storemerge214237
  %.pre = load i64, ptr %.phi.trans.insert, align 8, !tbaa !5
  %285 = icmp ne i64 %.pre, 0
  %286 = and i1 %.0238, %285
  %.not218 = icmp eq i64 %.pre, 0
  br i1 %.not218, label %287, label %292

287:                                              ; preds = %._crit_edge277
  %288 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %288, ptr getelementptr inbounds (i8, ptr @zchk2_.io___176, i64 8), align 8, !tbaa !23
  %289 = call i64 @s_wsfe(ptr noundef nonnull @zchk2_.io___176) #3
  %290 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %29, i64 noundef 8) #3
  %291 = call i64 @e_wsfe() #3
  %.pre278 = load i64, ptr %29, align 8, !tbaa !5
  br label %292

292:                                              ; preds = %._crit_edge277, %287
  %293 = phi i64 [ %284, %._crit_edge277 ], [ %.pre278, %287 ]
  %294 = add nsw i64 %293, 1
  store i64 %294, ptr %29, align 8, !tbaa !5
  %295 = icmp slt i64 %293, 12
  br i1 %295, label %._crit_edge277, label %296, !llvm.loop !29

296:                                              ; preds = %292
  br i1 %286, label %297, label %.loopexit.sink.split

297:                                              ; preds = %296
  br i1 %94, label %308, label %298

298:                                              ; preds = %297
  br i1 %105, label %299, label %301

299:                                              ; preds = %298
  %300 = call i32 @zmmch_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef nonnull %44, ptr noundef %15, ptr noundef nonnull %14, ptr noundef %18, ptr noundef nonnull %14, ptr noundef nonnull %41, ptr noundef %21, ptr noundef nonnull %14, ptr noundef %24, ptr noundef %25, ptr noundef %22, ptr noundef nonnull %39, ptr noundef %1, ptr noundef nonnull %40, ptr noundef %7, ptr noundef %3, ptr noundef nonnull @c_true, i64 noundef 1, i64 noundef 1)
  br label %303

301:                                              ; preds = %298
  %302 = call i32 @zmmch_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %31, ptr noundef nonnull %44, ptr noundef %18, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %14, ptr noundef nonnull %41, ptr noundef %21, ptr noundef nonnull %14, ptr noundef %24, ptr noundef %25, ptr noundef %22, ptr noundef nonnull %39, ptr noundef %1, ptr noundef nonnull %40, ptr noundef %7, ptr noundef %3, ptr noundef nonnull @c_true, i64 noundef 1, i64 noundef 1)
  br label %303

303:                                              ; preds = %301, %299
  %304 = load double, ptr %40, align 8
  %305 = fcmp oge double %130, %304
  %306 = select i1 %305, double %130, double %304
  store double %306, ptr %47, align 8, !tbaa !9
  %307 = load i64, ptr %7, align 8, !tbaa !5
  %.not216 = icmp eq i64 %307, 0
  br i1 %.not216, label %308, label %.loopexit

308:                                              ; preds = %297, %303
  %309 = phi double [ %130, %297 ], [ %306, %303 ]
  %310 = add nuw i64 %.0190240, 1
  %exitcond271.not = icmp eq i64 %.0190240, %129
  br i1 %exitcond271.not, label %._crit_edge243, label %.lr.ph242, !llvm.loop !30

._crit_edge243:                                   ; preds = %308, %.lr.ph247.split
  %311 = phi double [ %126, %.lr.ph247.split ], [ %309, %308 ]
  %312 = add nuw i64 %.0191245, 1
  %exitcond272.not = icmp eq i64 %.0191245, %121
  br i1 %exitcond272.not, label %._crit_edge248, label %.lr.ph247.split, !llvm.loop !31

._crit_edge248:                                   ; preds = %._crit_edge243, %.lr.ph247.split.us.preheader, %115
  %313 = phi double [ %116, %.lr.ph247.split.us.preheader ], [ %116, %115 ], [ %311, %._crit_edge243 ]
  %314 = add nuw nsw i64 %.0186253, 1
  %exitcond273.not = icmp eq i64 %314, 3
  br i1 %exitcond273.not, label %.loopexit221, label %115, !llvm.loop !33

.loopexit221:                                     ; preds = %._crit_edge248, %110
  %315 = phi double [ %101, %110 ], [ %313, %._crit_edge248 ]
  %316 = add nuw nsw i64 %.0187254, 1
  %exitcond274.not = icmp eq i64 %316, 3
  br i1 %exitcond274.not, label %.loopexit222, label %100, !llvm.loop !34

.loopexit222:                                     ; preds = %.loopexit221, %87, %90
  %317 = phi double [ %79, %87 ], [ %79, %90 ], [ %315, %.loopexit221 ]
  %318 = add nuw i64 %.0188256, 1
  %exitcond275.not = icmp eq i64 %.0188256, %78
  br i1 %exitcond275.not, label %._crit_edge259, label %.lr.ph258, !llvm.loop !35

._crit_edge259:                                   ; preds = %.loopexit222, %.lr.ph263.split
  %319 = phi double [ %75, %.lr.ph263.split ], [ %317, %.loopexit222 ]
  %320 = add nuw i64 %.0189261, 1
  %exitcond276.not = icmp eq i64 %.0189261, %60
  br i1 %exitcond276.not, label %._crit_edge264, label %.lr.ph263.split, !llvm.loop !36

._crit_edge264:                                   ; preds = %._crit_edge259, %27
  %321 = phi double [ 0.000000e+00, %27 ], [ %319, %._crit_edge259 ]
  %322 = load double, ptr %2, align 8, !tbaa !9
  %323 = fcmp olt double %321, %322
  %324 = load i64, ptr %3, align 8, !tbaa !5
  br i1 %323, label %325, label %328

325:                                              ; preds = %._crit_edge264
  store i64 %324, ptr getelementptr inbounds (i8, ptr @zchk2_.io___178, i64 8), align 8, !tbaa !23
  %326 = call i64 @s_wsfe(ptr noundef nonnull @zchk2_.io___178) #3
  %327 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef %0, i64 noundef 6) #3
  br label %348

328:                                              ; preds = %._crit_edge264
  store i64 %324, ptr getelementptr inbounds (i8, ptr @zchk2_.io___179, i64 8), align 8, !tbaa !23
  %329 = call i64 @s_wsfe(ptr noundef nonnull @zchk2_.io___179) #3
  %330 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef %0, i64 noundef 6) #3
  %331 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %33, i64 noundef 8) #3
  br label %348

.loopexit.sink.split:                             ; preds = %296, %239
  store i64 1, ptr %7, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %303, %.loopexit.sink.split
  %332 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %332, ptr getelementptr inbounds (i8, ptr @zchk2_.io___180, i64 8), align 8, !tbaa !23
  %333 = call i64 @s_wsfe(ptr noundef nonnull @zchk2_.io___180) #3
  %334 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef %0, i64 noundef 6) #3
  %335 = call i64 @e_wsfe() #3
  %336 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %336, ptr getelementptr inbounds (i8, ptr @zchk2_.io___181, i64 8), align 8, !tbaa !23
  %337 = call i64 @s_wsfe(ptr noundef nonnull @zchk2_.io___181) #3
  %338 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %33, i64 noundef 8) #3
  %339 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef %0, i64 noundef 6) #3
  %340 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %42, i64 noundef 1) #3
  %341 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %43, i64 noundef 1) #3
  %342 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %30, i64 noundef 8) #3
  %343 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %31, i64 noundef 8) #3
  %344 = call i64 @do_fio(ptr noundef nonnull @c__2, ptr noundef nonnull %44, i64 noundef 8) #3
  %345 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %36, i64 noundef 8) #3
  %346 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %38, i64 noundef 8) #3
  %347 = call i64 @do_fio(ptr noundef nonnull @c__2, ptr noundef nonnull %41, i64 noundef 8) #3
  br label %348

348:                                              ; preds = %325, %328, %.loopexit
  %.sink = phi ptr [ %33, %325 ], [ %47, %328 ], [ %39, %.loopexit ]
  %349 = call i64 @do_fio(ptr noundef nonnull @c__1, ptr noundef nonnull %.sink, i64 noundef 8) #3
  %350 = call i64 @e_wsfe() #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #3
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %45) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #3
  ret i32 0
}

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

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

declare i64 @f_rew(ptr noundef) local_unnamed_addr #1

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

declare i32 @f2c_zhemm(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare i32 @f2c_zsymm(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 #2 = { 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 #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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !10, i64 0}
!13 = !{!"", !10, i64 0, !10, i64 8}
!14 = !{!13, !10, i64 8}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.unroll.disable"}
!19 = distinct !{!19, !16}
!20 = distinct !{!20, !18}
!21 = distinct !{!21, !16}
!22 = distinct !{!22, !18}
!23 = !{!24, !6, i64 8}
!24 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16, !25, i64 24, !6, i64 32}
!25 = !{!"any pointer", !7, i64 0}
!26 = !{!27, !6, i64 0}
!27 = !{!"", !6, i64 0, !6, i64 8}
!28 = !{!27, !6, i64 8}
!29 = distinct !{!29, !16}
!30 = distinct !{!30, !16}
!31 = distinct !{!31, !16, !32}
!32 = !{!"llvm.loop.unswitch.partial.disable"}
!33 = distinct !{!33, !16}
!34 = distinct !{!34, !16}
!35 = distinct !{!35, !16}
!36 = distinct !{!36, !16, !32}


; Effective O3 passes: BDCEPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SCCPPass,SLPVectorizerPass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass,TailCallElimPass