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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b1 = external hidden global %struct.complex, align 4
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@c_b10 = external hidden global float, align 4
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b35 = external hidden global float, align 4
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1

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

110:                                              ; preds = %14
  %111 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -3, ptr %111, align 8, !tbaa !9
  br label %132

112:                                              ; preds = %14
  %113 = load ptr, ptr %19, align 8, !tbaa !5
  %114 = load i64, ptr %113, align 8, !tbaa !9
  %115 = icmp slt i64 %114, 1
  br i1 %115, label %116, label %118

116:                                              ; preds = %112
  %117 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -4, ptr %117, align 8, !tbaa !9
  br label %131

118:                                              ; preds = %112
  %119 = load ptr, ptr %23, align 8, !tbaa !5
  %120 = load i64, ptr %119, align 8, !tbaa !9
  %121 = icmp slt i64 %120, 1
  br i1 %121, label %128, label %122

122:                                              ; preds = %118
  %123 = load ptr, ptr %23, align 8, !tbaa !5
  %124 = load i64, ptr %123, align 8, !tbaa !9
  %125 = load ptr, ptr %18, align 8, !tbaa !5
  %126 = load i64, ptr %125, align 8, !tbaa !9
  %127 = icmp slt i64 %124, %126
  br i1 %127, label %128, label %130

128:                                              ; preds = %122, %118
  %129 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -8, ptr %129, align 8, !tbaa !9
  br label %130

130:                                              ; preds = %128, %122
  br label %131

131:                                              ; preds = %130, %116
  br label %132

132:                                              ; preds = %131, %110
  %133 = load ptr, ptr %29, align 8, !tbaa !5
  %134 = load i64, ptr %133, align 8, !tbaa !9
  %135 = icmp ne i64 %134, 0
  br i1 %135, label %136, label %141

136:                                              ; preds = %132
  %137 = load ptr, ptr %29, align 8, !tbaa !5
  %138 = load i64, ptr %137, align 8, !tbaa !9
  %139 = sub nsw i64 0, %138
  store i64 %139, ptr %32, align 8, !tbaa !9
  %140 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %32)
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2030

141:                                              ; preds = %132
  %142 = call double @slamch_(ptr noundef @.str.1)
  %143 = fptrunc double %142 to float
  store float %143, ptr %55, align 4, !tbaa !11
  %144 = load ptr, ptr %24, align 8, !tbaa !5
  %145 = load float, ptr %144, align 4, !tbaa !11
  %146 = fcmp ole float %145, 0.000000e+00
  br i1 %146, label %151, label %147

147:                                              ; preds = %141
  %148 = load ptr, ptr %24, align 8, !tbaa !5
  %149 = load float, ptr %148, align 4, !tbaa !11
  %150 = fcmp oge float %149, 1.000000e+00
  br i1 %150, label %151, label %153

151:                                              ; preds = %147, %141
  %152 = load float, ptr %55, align 4, !tbaa !11
  store float %152, ptr %60, align 4, !tbaa !11
  br label %156

153:                                              ; preds = %147
  %154 = load ptr, ptr %24, align 8, !tbaa !5
  %155 = load float, ptr %154, align 4, !tbaa !11
  store float %155, ptr %60, align 4, !tbaa !11
  br label %156

156:                                              ; preds = %153, %151
  %157 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 0, ptr %157, align 8, !tbaa !9
  %158 = load ptr, ptr %18, align 8, !tbaa !5
  %159 = load i64, ptr %158, align 8, !tbaa !9
  %160 = icmp eq i64 %159, 0
  br i1 %160, label %161, label %162

161:                                              ; preds = %156
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2030

162:                                              ; preds = %156
  %163 = load ptr, ptr %18, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = icmp eq i64 %164, 1
  br i1 %165, label %166, label %209

166:                                              ; preds = %162
  %167 = load ptr, ptr %20, align 8, !tbaa !5
  %168 = getelementptr inbounds float, ptr %167, i64 1
  %169 = load float, ptr %168, align 4, !tbaa !11
  %170 = fcmp oeq float %169, 0.000000e+00
  br i1 %170, label %171, label %178

171:                                              ; preds = %166
  %172 = load ptr, ptr %19, align 8, !tbaa !5
  %173 = load ptr, ptr %22, align 8, !tbaa !5
  %174 = load i64, ptr %31, align 8, !tbaa !9
  %175 = getelementptr inbounds %struct.complex, ptr %173, i64 %174
  %176 = load ptr, ptr %23, align 8, !tbaa !5
  %177 = call i32 @claset_(ptr noundef @.str.2, ptr noundef @c__1, ptr noundef %172, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %175, ptr noundef %176)
  br label %208

178:                                              ; preds = %166
  %179 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 1, ptr %179, align 8, !tbaa !9
  %180 = load ptr, ptr %20, align 8, !tbaa !5
  %181 = getelementptr inbounds float, ptr %180, i64 1
  %182 = load ptr, ptr %19, align 8, !tbaa !5
  %183 = load ptr, ptr %22, align 8, !tbaa !5
  %184 = load i64, ptr %31, align 8, !tbaa !9
  %185 = getelementptr inbounds %struct.complex, ptr %183, i64 %184
  %186 = load ptr, ptr %23, align 8, !tbaa !5
  %187 = load ptr, ptr %29, align 8, !tbaa !5
  %188 = call i32 @clascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %181, ptr noundef @c_b10, ptr noundef @c__1, ptr noundef %182, ptr noundef %185, ptr noundef %186, ptr noundef %187)
  %189 = load ptr, ptr %20, align 8, !tbaa !5
  %190 = getelementptr inbounds float, ptr %189, i64 1
  %191 = load float, ptr %190, align 4, !tbaa !11
  %192 = fcmp oge float %191, 0.000000e+00
  br i1 %192, label %193, label %197

193:                                              ; preds = %178
  %194 = load ptr, ptr %20, align 8, !tbaa !5
  %195 = getelementptr inbounds float, ptr %194, i64 1
  %196 = load float, ptr %195, align 4, !tbaa !11
  br label %202

197:                                              ; preds = %178
  %198 = load ptr, ptr %20, align 8, !tbaa !5
  %199 = getelementptr inbounds float, ptr %198, i64 1
  %200 = load float, ptr %199, align 4, !tbaa !11
  %201 = fneg float %200
  br label %202

202:                                              ; preds = %197, %193
  %203 = phi float [ %196, %193 ], [ %201, %197 ]
  %204 = fpext float %203 to double
  %205 = fptrunc double %204 to float
  %206 = load ptr, ptr %20, align 8, !tbaa !5
  %207 = getelementptr inbounds float, ptr %206, i64 1
  store float %205, ptr %207, align 4, !tbaa !11
  br label %208

208:                                              ; preds = %202, %171
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2030

209:                                              ; preds = %162
  br label %210

210:                                              ; preds = %209
  %211 = load ptr, ptr %16, align 8, !tbaa !5
  %212 = load i8, ptr %211, align 1, !tbaa !13
  %213 = zext i8 %212 to i32
  %214 = icmp eq i32 %213, 76
  br i1 %214, label %215, label %344

215:                                              ; preds = %210
  %216 = load ptr, ptr %18, align 8, !tbaa !5
  %217 = load i64, ptr %216, align 8, !tbaa !9
  %218 = sub nsw i64 %217, 1
  store i64 %218, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %219

219:                                              ; preds = %285, %215
  %220 = load i64, ptr %41, align 8, !tbaa !9
  %221 = load i64, ptr %32, align 8, !tbaa !9
  %222 = icmp sle i64 %220, %221
  br i1 %222, label %223, label %288

223:                                              ; preds = %219
  %224 = load ptr, ptr %20, align 8, !tbaa !5
  %225 = load i64, ptr %41, align 8, !tbaa !9
  %226 = getelementptr inbounds float, ptr %224, i64 %225
  %227 = load ptr, ptr %21, align 8, !tbaa !5
  %228 = load i64, ptr %41, align 8, !tbaa !9
  %229 = getelementptr inbounds float, ptr %227, i64 %228
  %230 = call i32 @slartg_(ptr noundef %226, ptr noundef %229, ptr noundef %48, ptr noundef %50, ptr noundef %44)
  %231 = load float, ptr %44, align 4, !tbaa !11
  %232 = load ptr, ptr %20, align 8, !tbaa !5
  %233 = load i64, ptr %41, align 8, !tbaa !9
  %234 = getelementptr inbounds float, ptr %232, i64 %233
  store float %231, ptr %234, align 4, !tbaa !11
  %235 = load float, ptr %50, align 4, !tbaa !11
  %236 = load ptr, ptr %20, align 8, !tbaa !5
  %237 = load i64, ptr %41, align 8, !tbaa !9
  %238 = add nsw i64 %237, 1
  %239 = getelementptr inbounds float, ptr %236, i64 %238
  %240 = load float, ptr %239, align 4, !tbaa !11
  %241 = fmul float %235, %240
  %242 = load ptr, ptr %21, align 8, !tbaa !5
  %243 = load i64, ptr %41, align 8, !tbaa !9
  %244 = getelementptr inbounds float, ptr %242, i64 %243
  store float %241, ptr %244, align 4, !tbaa !11
  %245 = load float, ptr %48, align 4, !tbaa !11
  %246 = load ptr, ptr %20, align 8, !tbaa !5
  %247 = load i64, ptr %41, align 8, !tbaa !9
  %248 = add nsw i64 %247, 1
  %249 = getelementptr inbounds float, ptr %246, i64 %248
  %250 = load float, ptr %249, align 4, !tbaa !11
  %251 = fmul float %245, %250
  %252 = load ptr, ptr %20, align 8, !tbaa !5
  %253 = load i64, ptr %41, align 8, !tbaa !9
  %254 = add nsw i64 %253, 1
  %255 = getelementptr inbounds float, ptr %252, i64 %254
  store float %251, ptr %255, align 4, !tbaa !11
  %256 = load ptr, ptr %19, align 8, !tbaa !5
  %257 = load i64, ptr %256, align 8, !tbaa !9
  %258 = icmp eq i64 %257, 1
  br i1 %258, label %259, label %272

259:                                              ; preds = %223
  %260 = load ptr, ptr %22, align 8, !tbaa !5
  %261 = load i64, ptr %41, align 8, !tbaa !9
  %262 = load i64, ptr %30, align 8, !tbaa !9
  %263 = add nsw i64 %261, %262
  %264 = getelementptr inbounds %struct.complex, ptr %260, i64 %263
  %265 = load ptr, ptr %22, align 8, !tbaa !5
  %266 = load i64, ptr %41, align 8, !tbaa !9
  %267 = add nsw i64 %266, 1
  %268 = load i64, ptr %30, align 8, !tbaa !9
  %269 = add nsw i64 %267, %268
  %270 = getelementptr inbounds %struct.complex, ptr %265, i64 %269
  %271 = call i32 @f2c_csrot(ptr noundef @c__1, ptr noundef %264, ptr noundef @c__1, ptr noundef %270, ptr noundef @c__1, ptr noundef %48, ptr noundef %50)
  br label %284

272:                                              ; preds = %223
  %273 = load float, ptr %48, align 4, !tbaa !11
  %274 = load ptr, ptr %27, align 8, !tbaa !5
  %275 = load i64, ptr %41, align 8, !tbaa !9
  %276 = shl i64 %275, 1
  %277 = sub nsw i64 %276, 1
  %278 = getelementptr inbounds float, ptr %274, i64 %277
  store float %273, ptr %278, align 4, !tbaa !11
  %279 = load float, ptr %50, align 4, !tbaa !11
  %280 = load ptr, ptr %27, align 8, !tbaa !5
  %281 = load i64, ptr %41, align 8, !tbaa !9
  %282 = mul nsw i64 %281, 2
  %283 = getelementptr inbounds float, ptr %280, i64 %282
  store float %279, ptr %283, align 4, !tbaa !11
  br label %284

284:                                              ; preds = %272, %259
  br label %285

285:                                              ; preds = %284
  %286 = load i64, ptr %41, align 8, !tbaa !9
  %287 = add nsw i64 %286, 1
  store i64 %287, ptr %41, align 8, !tbaa !9
  br label %219, !llvm.loop !14

288:                                              ; preds = %219
  %289 = load ptr, ptr %19, align 8, !tbaa !5
  %290 = load i64, ptr %289, align 8, !tbaa !9
  %291 = icmp sgt i64 %290, 1
  br i1 %291, label %292, label %343

292:                                              ; preds = %288
  %293 = load ptr, ptr %19, align 8, !tbaa !5
  %294 = load i64, ptr %293, align 8, !tbaa !9
  store i64 %294, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %295

295:                                              ; preds = %339, %292
  %296 = load i64, ptr %41, align 8, !tbaa !9
  %297 = load i64, ptr %32, align 8, !tbaa !9
  %298 = icmp sle i64 %296, %297
  br i1 %298, label %299, label %342

299:                                              ; preds = %295
  %300 = load ptr, ptr %18, align 8, !tbaa !5
  %301 = load i64, ptr %300, align 8, !tbaa !9
  %302 = sub nsw i64 %301, 1
  store i64 %302, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %303

303:                                              ; preds = %335, %299
  %304 = load i64, ptr %42, align 8, !tbaa !9
  %305 = load i64, ptr %33, align 8, !tbaa !9
  %306 = icmp sle i64 %304, %305
  br i1 %306, label %307, label %338

307:                                              ; preds = %303
  %308 = load ptr, ptr %27, align 8, !tbaa !5
  %309 = load i64, ptr %42, align 8, !tbaa !9
  %310 = shl i64 %309, 1
  %311 = sub nsw i64 %310, 1
  %312 = getelementptr inbounds float, ptr %308, i64 %311
  %313 = load float, ptr %312, align 4, !tbaa !11
  store float %313, ptr %48, align 4, !tbaa !11
  %314 = load ptr, ptr %27, align 8, !tbaa !5
  %315 = load i64, ptr %42, align 8, !tbaa !9
  %316 = mul nsw i64 %315, 2
  %317 = getelementptr inbounds float, ptr %314, i64 %316
  %318 = load float, ptr %317, align 4, !tbaa !11
  store float %318, ptr %50, align 4, !tbaa !11
  %319 = load ptr, ptr %22, align 8, !tbaa !5
  %320 = load i64, ptr %42, align 8, !tbaa !9
  %321 = load i64, ptr %41, align 8, !tbaa !9
  %322 = load i64, ptr %30, align 8, !tbaa !9
  %323 = mul nsw i64 %321, %322
  %324 = add nsw i64 %320, %323
  %325 = getelementptr inbounds %struct.complex, ptr %319, i64 %324
  %326 = load ptr, ptr %22, align 8, !tbaa !5
  %327 = load i64, ptr %42, align 8, !tbaa !9
  %328 = add nsw i64 %327, 1
  %329 = load i64, ptr %41, align 8, !tbaa !9
  %330 = load i64, ptr %30, align 8, !tbaa !9
  %331 = mul nsw i64 %329, %330
  %332 = add nsw i64 %328, %331
  %333 = getelementptr inbounds %struct.complex, ptr %326, i64 %332
  %334 = call i32 @f2c_csrot(ptr noundef @c__1, ptr noundef %325, ptr noundef @c__1, ptr noundef %333, ptr noundef @c__1, ptr noundef %48, ptr noundef %50)
  br label %335

335:                                              ; preds = %307
  %336 = load i64, ptr %42, align 8, !tbaa !9
  %337 = add nsw i64 %336, 1
  store i64 %337, ptr %42, align 8, !tbaa !9
  br label %303, !llvm.loop !16

338:                                              ; preds = %303
  br label %339

339:                                              ; preds = %338
  %340 = load i64, ptr %41, align 8, !tbaa !9
  %341 = add nsw i64 %340, 1
  store i64 %341, ptr %41, align 8, !tbaa !9
  br label %295, !llvm.loop !17

342:                                              ; preds = %295
  br label %343

343:                                              ; preds = %342, %288
  br label %344

344:                                              ; preds = %343, %210
  %345 = load ptr, ptr %18, align 8, !tbaa !5
  %346 = load i64, ptr %345, align 8, !tbaa !9
  %347 = sub nsw i64 %346, 1
  store i64 %347, ptr %53, align 8, !tbaa !9
  %348 = load ptr, ptr %18, align 8, !tbaa !5
  %349 = load ptr, ptr %20, align 8, !tbaa !5
  %350 = getelementptr inbounds float, ptr %349, i64 1
  %351 = load ptr, ptr %21, align 8, !tbaa !5
  %352 = getelementptr inbounds float, ptr %351, i64 1
  %353 = call double @slanst_(ptr noundef @.str.4, ptr noundef %348, ptr noundef %350, ptr noundef %352)
  %354 = fptrunc double %353 to float
  store float %354, ptr %81, align 4, !tbaa !11
  %355 = load float, ptr %81, align 4, !tbaa !11
  %356 = fcmp oeq float %355, 0.000000e+00
  br i1 %356, label %357, label %365

357:                                              ; preds = %344
  %358 = load ptr, ptr %18, align 8, !tbaa !5
  %359 = load ptr, ptr %19, align 8, !tbaa !5
  %360 = load ptr, ptr %22, align 8, !tbaa !5
  %361 = load i64, ptr %31, align 8, !tbaa !9
  %362 = getelementptr inbounds %struct.complex, ptr %360, i64 %361
  %363 = load ptr, ptr %23, align 8, !tbaa !5
  %364 = call i32 @claset_(ptr noundef @.str.2, ptr noundef %358, ptr noundef %359, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %362, ptr noundef %363)
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2030

365:                                              ; preds = %344
  %366 = load ptr, ptr %18, align 8, !tbaa !5
  %367 = load ptr, ptr %20, align 8, !tbaa !5
  %368 = getelementptr inbounds float, ptr %367, i64 1
  %369 = load ptr, ptr %18, align 8, !tbaa !5
  %370 = load ptr, ptr %29, align 8, !tbaa !5
  %371 = call i32 @slascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %81, ptr noundef @c_b10, ptr noundef %366, ptr noundef @c__1, ptr noundef %368, ptr noundef %369, ptr noundef %370)
  %372 = load ptr, ptr %21, align 8, !tbaa !5
  %373 = getelementptr inbounds float, ptr %372, i64 1
  %374 = load ptr, ptr %29, align 8, !tbaa !5
  %375 = call i32 @slascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %81, ptr noundef @c_b10, ptr noundef %53, ptr noundef @c__1, ptr noundef %373, ptr noundef %53, ptr noundef %374)
  %376 = load ptr, ptr %18, align 8, !tbaa !5
  %377 = load i64, ptr %376, align 8, !tbaa !9
  %378 = load ptr, ptr %17, align 8, !tbaa !5
  %379 = load i64, ptr %378, align 8, !tbaa !9
  %380 = icmp sle i64 %377, %379
  br i1 %380, label %381, label %872

381:                                              ; preds = %365
  store i64 1, ptr %69, align 8, !tbaa !9
  %382 = load i64, ptr %69, align 8, !tbaa !9
  %383 = load ptr, ptr %18, align 8, !tbaa !5
  %384 = load i64, ptr %383, align 8, !tbaa !9
  %385 = load ptr, ptr %18, align 8, !tbaa !5
  %386 = load i64, ptr %385, align 8, !tbaa !9
  %387 = mul nsw i64 %384, %386
  %388 = add nsw i64 %382, %387
  store i64 %388, ptr %77, align 8, !tbaa !9
  %389 = load i64, ptr %77, align 8, !tbaa !9
  %390 = load ptr, ptr %18, align 8, !tbaa !5
  %391 = load i64, ptr %390, align 8, !tbaa !9
  %392 = load ptr, ptr %18, align 8, !tbaa !5
  %393 = load i64, ptr %392, align 8, !tbaa !9
  %394 = mul nsw i64 %391, %393
  %395 = add nsw i64 %389, %394
  store i64 %395, ptr %85, align 8, !tbaa !9
  %396 = load i64, ptr %85, align 8, !tbaa !9
  store i64 %396, ptr %75, align 8, !tbaa !9
  %397 = load i64, ptr %75, align 8, !tbaa !9
  %398 = load ptr, ptr %18, align 8, !tbaa !5
  %399 = load i64, ptr %398, align 8, !tbaa !9
  %400 = load ptr, ptr %19, align 8, !tbaa !5
  %401 = load i64, ptr %400, align 8, !tbaa !9
  %402 = mul nsw i64 %399, %401
  %403 = add nsw i64 %397, %402
  store i64 %403, ptr %72, align 8, !tbaa !9
  %404 = load i64, ptr %72, align 8, !tbaa !9
  %405 = load ptr, ptr %18, align 8, !tbaa !5
  %406 = load i64, ptr %405, align 8, !tbaa !9
  %407 = load ptr, ptr %19, align 8, !tbaa !5
  %408 = load i64, ptr %407, align 8, !tbaa !9
  %409 = mul nsw i64 %406, %408
  %410 = add nsw i64 %404, %409
  store i64 %410, ptr %62, align 8, !tbaa !9
  %411 = load ptr, ptr %18, align 8, !tbaa !5
  %412 = load ptr, ptr %18, align 8, !tbaa !5
  %413 = load ptr, ptr %27, align 8, !tbaa !5
  %414 = load i64, ptr %69, align 8, !tbaa !9
  %415 = getelementptr inbounds float, ptr %413, i64 %414
  %416 = load ptr, ptr %18, align 8, !tbaa !5
  %417 = call i32 @slaset_(ptr noundef @.str.2, ptr noundef %411, ptr noundef %412, ptr noundef @c_b35, ptr noundef @c_b10, ptr noundef %415, ptr noundef %416)
  %418 = load ptr, ptr %18, align 8, !tbaa !5
  %419 = load ptr, ptr %18, align 8, !tbaa !5
  %420 = load ptr, ptr %27, align 8, !tbaa !5
  %421 = load i64, ptr %77, align 8, !tbaa !9
  %422 = getelementptr inbounds float, ptr %420, i64 %421
  %423 = load ptr, ptr %18, align 8, !tbaa !5
  %424 = call i32 @slaset_(ptr noundef @.str.2, ptr noundef %418, ptr noundef %419, ptr noundef @c_b35, ptr noundef @c_b10, ptr noundef %422, ptr noundef %423)
  %425 = load ptr, ptr %18, align 8, !tbaa !5
  %426 = load ptr, ptr %18, align 8, !tbaa !5
  %427 = load ptr, ptr %18, align 8, !tbaa !5
  %428 = load ptr, ptr %20, align 8, !tbaa !5
  %429 = getelementptr inbounds float, ptr %428, i64 1
  %430 = load ptr, ptr %21, align 8, !tbaa !5
  %431 = getelementptr inbounds float, ptr %430, i64 1
  %432 = load ptr, ptr %27, align 8, !tbaa !5
  %433 = load i64, ptr %77, align 8, !tbaa !9
  %434 = getelementptr inbounds float, ptr %432, i64 %433
  %435 = load ptr, ptr %18, align 8, !tbaa !5
  %436 = load ptr, ptr %27, align 8, !tbaa !5
  %437 = load i64, ptr %69, align 8, !tbaa !9
  %438 = getelementptr inbounds float, ptr %436, i64 %437
  %439 = load ptr, ptr %18, align 8, !tbaa !5
  %440 = load ptr, ptr %27, align 8, !tbaa !5
  %441 = load i64, ptr %85, align 8, !tbaa !9
  %442 = getelementptr inbounds float, ptr %440, i64 %441
  %443 = load ptr, ptr %27, align 8, !tbaa !5
  %444 = load i64, ptr %85, align 8, !tbaa !9
  %445 = getelementptr inbounds float, ptr %443, i64 %444
  %446 = load ptr, ptr %29, align 8, !tbaa !5
  %447 = call i32 @slasdq_(ptr noundef @.str.5, ptr noundef @c__0, ptr noundef %425, ptr noundef %426, ptr noundef %427, ptr noundef @c__0, ptr noundef %429, ptr noundef %431, ptr noundef %434, ptr noundef %435, ptr noundef %438, ptr noundef %439, ptr noundef %442, ptr noundef @c__1, ptr noundef %445, ptr noundef %446)
  %448 = load ptr, ptr %29, align 8, !tbaa !5
  %449 = load i64, ptr %448, align 8, !tbaa !9
  %450 = icmp ne i64 %449, 0
  br i1 %450, label %451, label %452

451:                                              ; preds = %381
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2030

452:                                              ; preds = %381
  %453 = load i64, ptr %62, align 8, !tbaa !9
  %454 = sub nsw i64 %453, 1
  store i64 %454, ptr %42, align 8, !tbaa !9
  %455 = load ptr, ptr %19, align 8, !tbaa !5
  %456 = load i64, ptr %455, align 8, !tbaa !9
  store i64 %456, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %457

457:                                              ; preds = %488, %452
  %458 = load i64, ptr %61, align 8, !tbaa !9
  %459 = load i64, ptr %32, align 8, !tbaa !9
  %460 = icmp sle i64 %458, %459
  br i1 %460, label %461, label %491

461:                                              ; preds = %457
  %462 = load ptr, ptr %18, align 8, !tbaa !5
  %463 = load i64, ptr %462, align 8, !tbaa !9
  store i64 %463, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %464

464:                                              ; preds = %484, %461
  %465 = load i64, ptr %68, align 8, !tbaa !9
  %466 = load i64, ptr %33, align 8, !tbaa !9
  %467 = icmp sle i64 %465, %466
  br i1 %467, label %468, label %487

468:                                              ; preds = %464
  %469 = load i64, ptr %42, align 8, !tbaa !9
  %470 = add nsw i64 %469, 1
  store i64 %470, ptr %42, align 8, !tbaa !9
  %471 = load i64, ptr %68, align 8, !tbaa !9
  %472 = load i64, ptr %61, align 8, !tbaa !9
  %473 = load i64, ptr %30, align 8, !tbaa !9
  %474 = mul nsw i64 %472, %473
  %475 = add nsw i64 %471, %474
  store i64 %475, ptr %34, align 8, !tbaa !9
  %476 = load ptr, ptr %22, align 8, !tbaa !5
  %477 = load i64, ptr %34, align 8, !tbaa !9
  %478 = getelementptr inbounds %struct.complex, ptr %476, i64 %477
  %479 = getelementptr inbounds %struct.complex, ptr %478, i32 0, i32 0
  %480 = load float, ptr %479, align 4, !tbaa !18
  %481 = load ptr, ptr %27, align 8, !tbaa !5
  %482 = load i64, ptr %42, align 8, !tbaa !9
  %483 = getelementptr inbounds float, ptr %481, i64 %482
  store float %480, ptr %483, align 4, !tbaa !11
  br label %484

484:                                              ; preds = %468
  %485 = load i64, ptr %68, align 8, !tbaa !9
  %486 = add nsw i64 %485, 1
  store i64 %486, ptr %68, align 8, !tbaa !9
  br label %464, !llvm.loop !20

487:                                              ; preds = %464
  br label %488

488:                                              ; preds = %487
  %489 = load i64, ptr %61, align 8, !tbaa !9
  %490 = add nsw i64 %489, 1
  store i64 %490, ptr %61, align 8, !tbaa !9
  br label %457, !llvm.loop !21

491:                                              ; preds = %457
  %492 = load ptr, ptr %18, align 8, !tbaa !5
  %493 = load ptr, ptr %19, align 8, !tbaa !5
  %494 = load ptr, ptr %18, align 8, !tbaa !5
  %495 = load ptr, ptr %27, align 8, !tbaa !5
  %496 = load i64, ptr %69, align 8, !tbaa !9
  %497 = getelementptr inbounds float, ptr %495, i64 %496
  %498 = load ptr, ptr %18, align 8, !tbaa !5
  %499 = load ptr, ptr %27, align 8, !tbaa !5
  %500 = load i64, ptr %62, align 8, !tbaa !9
  %501 = getelementptr inbounds float, ptr %499, i64 %500
  %502 = load ptr, ptr %18, align 8, !tbaa !5
  %503 = load ptr, ptr %27, align 8, !tbaa !5
  %504 = load i64, ptr %75, align 8, !tbaa !9
  %505 = getelementptr inbounds float, ptr %503, i64 %504
  %506 = load ptr, ptr %18, align 8, !tbaa !5
  %507 = call i32 @f2c_sgemm(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %492, ptr noundef %493, ptr noundef %494, ptr noundef @c_b10, ptr noundef %497, ptr noundef %498, ptr noundef %501, ptr noundef %502, ptr noundef @c_b35, ptr noundef %505, ptr noundef %506)
  %508 = load i64, ptr %62, align 8, !tbaa !9
  %509 = sub nsw i64 %508, 1
  store i64 %509, ptr %42, align 8, !tbaa !9
  %510 = load ptr, ptr %19, align 8, !tbaa !5
  %511 = load i64, ptr %510, align 8, !tbaa !9
  store i64 %511, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %512

512:                                              ; preds = %542, %491
  %513 = load i64, ptr %61, align 8, !tbaa !9
  %514 = load i64, ptr %32, align 8, !tbaa !9
  %515 = icmp sle i64 %513, %514
  br i1 %515, label %516, label %545

516:                                              ; preds = %512
  %517 = load ptr, ptr %18, align 8, !tbaa !5
  %518 = load i64, ptr %517, align 8, !tbaa !9
  store i64 %518, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %519

519:                                              ; preds = %538, %516
  %520 = load i64, ptr %68, align 8, !tbaa !9
  %521 = load i64, ptr %33, align 8, !tbaa !9
  %522 = icmp sle i64 %520, %521
  br i1 %522, label %523, label %541

523:                                              ; preds = %519
  %524 = load i64, ptr %42, align 8, !tbaa !9
  %525 = add nsw i64 %524, 1
  store i64 %525, ptr %42, align 8, !tbaa !9
  %526 = load ptr, ptr %22, align 8, !tbaa !5
  %527 = load i64, ptr %68, align 8, !tbaa !9
  %528 = load i64, ptr %61, align 8, !tbaa !9
  %529 = load i64, ptr %30, align 8, !tbaa !9
  %530 = mul nsw i64 %528, %529
  %531 = add nsw i64 %527, %530
  %532 = getelementptr inbounds %struct.complex, ptr %526, i64 %531
  %533 = call double @r_imag(ptr noundef %532)
  %534 = fptrunc double %533 to float
  %535 = load ptr, ptr %27, align 8, !tbaa !5
  %536 = load i64, ptr %42, align 8, !tbaa !9
  %537 = getelementptr inbounds float, ptr %535, i64 %536
  store float %534, ptr %537, align 4, !tbaa !11
  br label %538

538:                                              ; preds = %523
  %539 = load i64, ptr %68, align 8, !tbaa !9
  %540 = add nsw i64 %539, 1
  store i64 %540, ptr %68, align 8, !tbaa !9
  br label %519, !llvm.loop !22

541:                                              ; preds = %519
  br label %542

542:                                              ; preds = %541
  %543 = load i64, ptr %61, align 8, !tbaa !9
  %544 = add nsw i64 %543, 1
  store i64 %544, ptr %61, align 8, !tbaa !9
  br label %512, !llvm.loop !23

545:                                              ; preds = %512
  %546 = load ptr, ptr %18, align 8, !tbaa !5
  %547 = load ptr, ptr %19, align 8, !tbaa !5
  %548 = load ptr, ptr %18, align 8, !tbaa !5
  %549 = load ptr, ptr %27, align 8, !tbaa !5
  %550 = load i64, ptr %69, align 8, !tbaa !9
  %551 = getelementptr inbounds float, ptr %549, i64 %550
  %552 = load ptr, ptr %18, align 8, !tbaa !5
  %553 = load ptr, ptr %27, align 8, !tbaa !5
  %554 = load i64, ptr %62, align 8, !tbaa !9
  %555 = getelementptr inbounds float, ptr %553, i64 %554
  %556 = load ptr, ptr %18, align 8, !tbaa !5
  %557 = load ptr, ptr %27, align 8, !tbaa !5
  %558 = load i64, ptr %72, align 8, !tbaa !9
  %559 = getelementptr inbounds float, ptr %557, i64 %558
  %560 = load ptr, ptr %18, align 8, !tbaa !5
  %561 = call i32 @f2c_sgemm(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %546, ptr noundef %547, ptr noundef %548, ptr noundef @c_b10, ptr noundef %551, ptr noundef %552, ptr noundef %555, ptr noundef %556, ptr noundef @c_b35, ptr noundef %559, ptr noundef %560)
  %562 = load i64, ptr %75, align 8, !tbaa !9
  %563 = sub nsw i64 %562, 1
  store i64 %563, ptr %71, align 8, !tbaa !9
  %564 = load i64, ptr %72, align 8, !tbaa !9
  %565 = sub nsw i64 %564, 1
  store i64 %565, ptr %70, align 8, !tbaa !9
  %566 = load ptr, ptr %19, align 8, !tbaa !5
  %567 = load i64, ptr %566, align 8, !tbaa !9
  store i64 %567, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %568

568:                                              ; preds = %617, %545
  %569 = load i64, ptr %61, align 8, !tbaa !9
  %570 = load i64, ptr %32, align 8, !tbaa !9
  %571 = icmp sle i64 %569, %570
  br i1 %571, label %572, label %620

572:                                              ; preds = %568
  %573 = load ptr, ptr %18, align 8, !tbaa !5
  %574 = load i64, ptr %573, align 8, !tbaa !9
  store i64 %574, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %575

575:                                              ; preds = %613, %572
  %576 = load i64, ptr %68, align 8, !tbaa !9
  %577 = load i64, ptr %33, align 8, !tbaa !9
  %578 = icmp sle i64 %576, %577
  br i1 %578, label %579, label %616

579:                                              ; preds = %575
  %580 = load i64, ptr %71, align 8, !tbaa !9
  %581 = add nsw i64 %580, 1
  store i64 %581, ptr %71, align 8, !tbaa !9
  %582 = load i64, ptr %70, align 8, !tbaa !9
  %583 = add nsw i64 %582, 1
  store i64 %583, ptr %70, align 8, !tbaa !9
  %584 = load i64, ptr %68, align 8, !tbaa !9
  %585 = load i64, ptr %61, align 8, !tbaa !9
  %586 = load i64, ptr %30, align 8, !tbaa !9
  %587 = mul nsw i64 %585, %586
  %588 = add nsw i64 %584, %587
  store i64 %588, ptr %34, align 8, !tbaa !9
  %589 = load i64, ptr %71, align 8, !tbaa !9
  store i64 %589, ptr %35, align 8, !tbaa !9
  %590 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %590, ptr %36, align 8, !tbaa !9
  %591 = load ptr, ptr %27, align 8, !tbaa !5
  %592 = load i64, ptr %35, align 8, !tbaa !9
  %593 = getelementptr inbounds float, ptr %591, i64 %592
  %594 = load float, ptr %593, align 4, !tbaa !11
  %595 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  store float %594, ptr %595, align 4, !tbaa !18
  %596 = load ptr, ptr %27, align 8, !tbaa !5
  %597 = load i64, ptr %36, align 8, !tbaa !9
  %598 = getelementptr inbounds float, ptr %596, i64 %597
  %599 = load float, ptr %598, align 4, !tbaa !11
  %600 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  store float %599, ptr %600, align 4, !tbaa !24
  %601 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  %602 = load float, ptr %601, align 4, !tbaa !18
  %603 = load ptr, ptr %22, align 8, !tbaa !5
  %604 = load i64, ptr %34, align 8, !tbaa !9
  %605 = getelementptr inbounds %struct.complex, ptr %603, i64 %604
  %606 = getelementptr inbounds %struct.complex, ptr %605, i32 0, i32 0
  store float %602, ptr %606, align 4, !tbaa !18
  %607 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  %608 = load float, ptr %607, align 4, !tbaa !24
  %609 = load ptr, ptr %22, align 8, !tbaa !5
  %610 = load i64, ptr %34, align 8, !tbaa !9
  %611 = getelementptr inbounds %struct.complex, ptr %609, i64 %610
  %612 = getelementptr inbounds %struct.complex, ptr %611, i32 0, i32 1
  store float %608, ptr %612, align 4, !tbaa !24
  br label %613

613:                                              ; preds = %579
  %614 = load i64, ptr %68, align 8, !tbaa !9
  %615 = add nsw i64 %614, 1
  store i64 %615, ptr %68, align 8, !tbaa !9
  br label %575, !llvm.loop !25

616:                                              ; preds = %575
  br label %617

617:                                              ; preds = %616
  %618 = load i64, ptr %61, align 8, !tbaa !9
  %619 = add nsw i64 %618, 1
  store i64 %619, ptr %61, align 8, !tbaa !9
  br label %568, !llvm.loop !26

620:                                              ; preds = %568
  %621 = load float, ptr %60, align 4, !tbaa !11
  %622 = fpext float %621 to double
  %623 = load ptr, ptr %20, align 8, !tbaa !5
  %624 = load ptr, ptr %18, align 8, !tbaa !5
  %625 = load ptr, ptr %20, align 8, !tbaa !5
  %626 = getelementptr inbounds float, ptr %625, i64 1
  %627 = call i64 @f2c_isamax(ptr noundef %624, ptr noundef %626, ptr noundef @c__1)
  %628 = getelementptr inbounds float, ptr %623, i64 %627
  %629 = load float, ptr %628, align 4, !tbaa !11
  store float %629, ptr %38, align 4, !tbaa !11
  %630 = load float, ptr %38, align 4, !tbaa !11
  %631 = fcmp oge float %630, 0.000000e+00
  br i1 %631, label %632, label %634

632:                                              ; preds = %620
  %633 = load float, ptr %38, align 4, !tbaa !11
  br label %637

634:                                              ; preds = %620
  %635 = load float, ptr %38, align 4, !tbaa !11
  %636 = fneg float %635
  br label %637

637:                                              ; preds = %634, %632
  %638 = phi float [ %633, %632 ], [ %636, %634 ]
  %639 = fpext float %638 to double
  %640 = fmul double %622, %639
  %641 = fptrunc double %640 to float
  store float %641, ptr %57, align 4, !tbaa !11
  %642 = load ptr, ptr %18, align 8, !tbaa !5
  %643 = load i64, ptr %642, align 8, !tbaa !9
  store i64 %643, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %644

644:                                              ; preds = %681, %637
  %645 = load i64, ptr %41, align 8, !tbaa !9
  %646 = load i64, ptr %32, align 8, !tbaa !9
  %647 = icmp sle i64 %645, %646
  br i1 %647, label %648, label %684

648:                                              ; preds = %644
  %649 = load ptr, ptr %20, align 8, !tbaa !5
  %650 = load i64, ptr %41, align 8, !tbaa !9
  %651 = getelementptr inbounds float, ptr %649, i64 %650
  %652 = load float, ptr %651, align 4, !tbaa !11
  %653 = load float, ptr %57, align 4, !tbaa !11
  %654 = fcmp ole float %652, %653
  br i1 %654, label %655, label %664

655:                                              ; preds = %648
  %656 = load ptr, ptr %19, align 8, !tbaa !5
  %657 = load ptr, ptr %22, align 8, !tbaa !5
  %658 = load i64, ptr %41, align 8, !tbaa !9
  %659 = load i64, ptr %30, align 8, !tbaa !9
  %660 = add nsw i64 %658, %659
  %661 = getelementptr inbounds %struct.complex, ptr %657, i64 %660
  %662 = load ptr, ptr %23, align 8, !tbaa !5
  %663 = call i32 @claset_(ptr noundef @.str.2, ptr noundef @c__1, ptr noundef %656, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %661, ptr noundef %662)
  br label %680

664:                                              ; preds = %648
  %665 = load ptr, ptr %20, align 8, !tbaa !5
  %666 = load i64, ptr %41, align 8, !tbaa !9
  %667 = getelementptr inbounds float, ptr %665, i64 %666
  %668 = load ptr, ptr %19, align 8, !tbaa !5
  %669 = load ptr, ptr %22, align 8, !tbaa !5
  %670 = load i64, ptr %41, align 8, !tbaa !9
  %671 = load i64, ptr %30, align 8, !tbaa !9
  %672 = add nsw i64 %670, %671
  %673 = getelementptr inbounds %struct.complex, ptr %669, i64 %672
  %674 = load ptr, ptr %23, align 8, !tbaa !5
  %675 = load ptr, ptr %29, align 8, !tbaa !5
  %676 = call i32 @clascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %667, ptr noundef @c_b10, ptr noundef @c__1, ptr noundef %668, ptr noundef %673, ptr noundef %674, ptr noundef %675)
  %677 = load ptr, ptr %25, align 8, !tbaa !5
  %678 = load i64, ptr %677, align 8, !tbaa !9
  %679 = add nsw i64 %678, 1
  store i64 %679, ptr %677, align 8, !tbaa !9
  br label %680

680:                                              ; preds = %664, %655
  br label %681

681:                                              ; preds = %680
  %682 = load i64, ptr %41, align 8, !tbaa !9
  %683 = add nsw i64 %682, 1
  store i64 %683, ptr %41, align 8, !tbaa !9
  br label %644, !llvm.loop !27

684:                                              ; preds = %644
  %685 = load i64, ptr %62, align 8, !tbaa !9
  %686 = sub nsw i64 %685, 1
  store i64 %686, ptr %42, align 8, !tbaa !9
  %687 = load ptr, ptr %19, align 8, !tbaa !5
  %688 = load i64, ptr %687, align 8, !tbaa !9
  store i64 %688, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %689

689:                                              ; preds = %720, %684
  %690 = load i64, ptr %61, align 8, !tbaa !9
  %691 = load i64, ptr %32, align 8, !tbaa !9
  %692 = icmp sle i64 %690, %691
  br i1 %692, label %693, label %723

693:                                              ; preds = %689
  %694 = load ptr, ptr %18, align 8, !tbaa !5
  %695 = load i64, ptr %694, align 8, !tbaa !9
  store i64 %695, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %696

696:                                              ; preds = %716, %693
  %697 = load i64, ptr %68, align 8, !tbaa !9
  %698 = load i64, ptr %33, align 8, !tbaa !9
  %699 = icmp sle i64 %697, %698
  br i1 %699, label %700, label %719

700:                                              ; preds = %696
  %701 = load i64, ptr %42, align 8, !tbaa !9
  %702 = add nsw i64 %701, 1
  store i64 %702, ptr %42, align 8, !tbaa !9
  %703 = load i64, ptr %68, align 8, !tbaa !9
  %704 = load i64, ptr %61, align 8, !tbaa !9
  %705 = load i64, ptr %30, align 8, !tbaa !9
  %706 = mul nsw i64 %704, %705
  %707 = add nsw i64 %703, %706
  store i64 %707, ptr %34, align 8, !tbaa !9
  %708 = load ptr, ptr %22, align 8, !tbaa !5
  %709 = load i64, ptr %34, align 8, !tbaa !9
  %710 = getelementptr inbounds %struct.complex, ptr %708, i64 %709
  %711 = getelementptr inbounds %struct.complex, ptr %710, i32 0, i32 0
  %712 = load float, ptr %711, align 4, !tbaa !18
  %713 = load ptr, ptr %27, align 8, !tbaa !5
  %714 = load i64, ptr %42, align 8, !tbaa !9
  %715 = getelementptr inbounds float, ptr %713, i64 %714
  store float %712, ptr %715, align 4, !tbaa !11
  br label %716

716:                                              ; preds = %700
  %717 = load i64, ptr %68, align 8, !tbaa !9
  %718 = add nsw i64 %717, 1
  store i64 %718, ptr %68, align 8, !tbaa !9
  br label %696, !llvm.loop !28

719:                                              ; preds = %696
  br label %720

720:                                              ; preds = %719
  %721 = load i64, ptr %61, align 8, !tbaa !9
  %722 = add nsw i64 %721, 1
  store i64 %722, ptr %61, align 8, !tbaa !9
  br label %689, !llvm.loop !29

723:                                              ; preds = %689
  %724 = load ptr, ptr %18, align 8, !tbaa !5
  %725 = load ptr, ptr %19, align 8, !tbaa !5
  %726 = load ptr, ptr %18, align 8, !tbaa !5
  %727 = load ptr, ptr %27, align 8, !tbaa !5
  %728 = load i64, ptr %77, align 8, !tbaa !9
  %729 = getelementptr inbounds float, ptr %727, i64 %728
  %730 = load ptr, ptr %18, align 8, !tbaa !5
  %731 = load ptr, ptr %27, align 8, !tbaa !5
  %732 = load i64, ptr %62, align 8, !tbaa !9
  %733 = getelementptr inbounds float, ptr %731, i64 %732
  %734 = load ptr, ptr %18, align 8, !tbaa !5
  %735 = load ptr, ptr %27, align 8, !tbaa !5
  %736 = load i64, ptr %75, align 8, !tbaa !9
  %737 = getelementptr inbounds float, ptr %735, i64 %736
  %738 = load ptr, ptr %18, align 8, !tbaa !5
  %739 = call i32 @f2c_sgemm(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %724, ptr noundef %725, ptr noundef %726, ptr noundef @c_b10, ptr noundef %729, ptr noundef %730, ptr noundef %733, ptr noundef %734, ptr noundef @c_b35, ptr noundef %737, ptr noundef %738)
  %740 = load i64, ptr %62, align 8, !tbaa !9
  %741 = sub nsw i64 %740, 1
  store i64 %741, ptr %42, align 8, !tbaa !9
  %742 = load ptr, ptr %19, align 8, !tbaa !5
  %743 = load i64, ptr %742, align 8, !tbaa !9
  store i64 %743, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %744

744:                                              ; preds = %774, %723
  %745 = load i64, ptr %61, align 8, !tbaa !9
  %746 = load i64, ptr %32, align 8, !tbaa !9
  %747 = icmp sle i64 %745, %746
  br i1 %747, label %748, label %777

748:                                              ; preds = %744
  %749 = load ptr, ptr %18, align 8, !tbaa !5
  %750 = load i64, ptr %749, align 8, !tbaa !9
  store i64 %750, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %751

751:                                              ; preds = %770, %748
  %752 = load i64, ptr %68, align 8, !tbaa !9
  %753 = load i64, ptr %33, align 8, !tbaa !9
  %754 = icmp sle i64 %752, %753
  br i1 %754, label %755, label %773

755:                                              ; preds = %751
  %756 = load i64, ptr %42, align 8, !tbaa !9
  %757 = add nsw i64 %756, 1
  store i64 %757, ptr %42, align 8, !tbaa !9
  %758 = load ptr, ptr %22, align 8, !tbaa !5
  %759 = load i64, ptr %68, align 8, !tbaa !9
  %760 = load i64, ptr %61, align 8, !tbaa !9
  %761 = load i64, ptr %30, align 8, !tbaa !9
  %762 = mul nsw i64 %760, %761
  %763 = add nsw i64 %759, %762
  %764 = getelementptr inbounds %struct.complex, ptr %758, i64 %763
  %765 = call double @r_imag(ptr noundef %764)
  %766 = fptrunc double %765 to float
  %767 = load ptr, ptr %27, align 8, !tbaa !5
  %768 = load i64, ptr %42, align 8, !tbaa !9
  %769 = getelementptr inbounds float, ptr %767, i64 %768
  store float %766, ptr %769, align 4, !tbaa !11
  br label %770

770:                                              ; preds = %755
  %771 = load i64, ptr %68, align 8, !tbaa !9
  %772 = add nsw i64 %771, 1
  store i64 %772, ptr %68, align 8, !tbaa !9
  br label %751, !llvm.loop !30

773:                                              ; preds = %751
  br label %774

774:                                              ; preds = %773
  %775 = load i64, ptr %61, align 8, !tbaa !9
  %776 = add nsw i64 %775, 1
  store i64 %776, ptr %61, align 8, !tbaa !9
  br label %744, !llvm.loop !31

777:                                              ; preds = %744
  %778 = load ptr, ptr %18, align 8, !tbaa !5
  %779 = load ptr, ptr %19, align 8, !tbaa !5
  %780 = load ptr, ptr %18, align 8, !tbaa !5
  %781 = load ptr, ptr %27, align 8, !tbaa !5
  %782 = load i64, ptr %77, align 8, !tbaa !9
  %783 = getelementptr inbounds float, ptr %781, i64 %782
  %784 = load ptr, ptr %18, align 8, !tbaa !5
  %785 = load ptr, ptr %27, align 8, !tbaa !5
  %786 = load i64, ptr %62, align 8, !tbaa !9
  %787 = getelementptr inbounds float, ptr %785, i64 %786
  %788 = load ptr, ptr %18, align 8, !tbaa !5
  %789 = load ptr, ptr %27, align 8, !tbaa !5
  %790 = load i64, ptr %72, align 8, !tbaa !9
  %791 = getelementptr inbounds float, ptr %789, i64 %790
  %792 = load ptr, ptr %18, align 8, !tbaa !5
  %793 = call i32 @f2c_sgemm(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %778, ptr noundef %779, ptr noundef %780, ptr noundef @c_b10, ptr noundef %783, ptr noundef %784, ptr noundef %787, ptr noundef %788, ptr noundef @c_b35, ptr noundef %791, ptr noundef %792)
  %794 = load i64, ptr %75, align 8, !tbaa !9
  %795 = sub nsw i64 %794, 1
  store i64 %795, ptr %71, align 8, !tbaa !9
  %796 = load i64, ptr %72, align 8, !tbaa !9
  %797 = sub nsw i64 %796, 1
  store i64 %797, ptr %70, align 8, !tbaa !9
  %798 = load ptr, ptr %19, align 8, !tbaa !5
  %799 = load i64, ptr %798, align 8, !tbaa !9
  store i64 %799, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %800

800:                                              ; preds = %849, %777
  %801 = load i64, ptr %61, align 8, !tbaa !9
  %802 = load i64, ptr %32, align 8, !tbaa !9
  %803 = icmp sle i64 %801, %802
  br i1 %803, label %804, label %852

804:                                              ; preds = %800
  %805 = load ptr, ptr %18, align 8, !tbaa !5
  %806 = load i64, ptr %805, align 8, !tbaa !9
  store i64 %806, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %807

807:                                              ; preds = %845, %804
  %808 = load i64, ptr %68, align 8, !tbaa !9
  %809 = load i64, ptr %33, align 8, !tbaa !9
  %810 = icmp sle i64 %808, %809
  br i1 %810, label %811, label %848

811:                                              ; preds = %807
  %812 = load i64, ptr %71, align 8, !tbaa !9
  %813 = add nsw i64 %812, 1
  store i64 %813, ptr %71, align 8, !tbaa !9
  %814 = load i64, ptr %70, align 8, !tbaa !9
  %815 = add nsw i64 %814, 1
  store i64 %815, ptr %70, align 8, !tbaa !9
  %816 = load i64, ptr %68, align 8, !tbaa !9
  %817 = load i64, ptr %61, align 8, !tbaa !9
  %818 = load i64, ptr %30, align 8, !tbaa !9
  %819 = mul nsw i64 %817, %818
  %820 = add nsw i64 %816, %819
  store i64 %820, ptr %34, align 8, !tbaa !9
  %821 = load i64, ptr %71, align 8, !tbaa !9
  store i64 %821, ptr %35, align 8, !tbaa !9
  %822 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %822, ptr %36, align 8, !tbaa !9
  %823 = load ptr, ptr %27, align 8, !tbaa !5
  %824 = load i64, ptr %35, align 8, !tbaa !9
  %825 = getelementptr inbounds float, ptr %823, i64 %824
  %826 = load float, ptr %825, align 4, !tbaa !11
  %827 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  store float %826, ptr %827, align 4, !tbaa !18
  %828 = load ptr, ptr %27, align 8, !tbaa !5
  %829 = load i64, ptr %36, align 8, !tbaa !9
  %830 = getelementptr inbounds float, ptr %828, i64 %829
  %831 = load float, ptr %830, align 4, !tbaa !11
  %832 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  store float %831, ptr %832, align 4, !tbaa !24
  %833 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  %834 = load float, ptr %833, align 4, !tbaa !18
  %835 = load ptr, ptr %22, align 8, !tbaa !5
  %836 = load i64, ptr %34, align 8, !tbaa !9
  %837 = getelementptr inbounds %struct.complex, ptr %835, i64 %836
  %838 = getelementptr inbounds %struct.complex, ptr %837, i32 0, i32 0
  store float %834, ptr %838, align 4, !tbaa !18
  %839 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  %840 = load float, ptr %839, align 4, !tbaa !24
  %841 = load ptr, ptr %22, align 8, !tbaa !5
  %842 = load i64, ptr %34, align 8, !tbaa !9
  %843 = getelementptr inbounds %struct.complex, ptr %841, i64 %842
  %844 = getelementptr inbounds %struct.complex, ptr %843, i32 0, i32 1
  store float %840, ptr %844, align 4, !tbaa !24
  br label %845

845:                                              ; preds = %811
  %846 = load i64, ptr %68, align 8, !tbaa !9
  %847 = add nsw i64 %846, 1
  store i64 %847, ptr %68, align 8, !tbaa !9
  br label %807, !llvm.loop !32

848:                                              ; preds = %807
  br label %849

849:                                              ; preds = %848
  %850 = load i64, ptr %61, align 8, !tbaa !9
  %851 = add nsw i64 %850, 1
  store i64 %851, ptr %61, align 8, !tbaa !9
  br label %800, !llvm.loop !33

852:                                              ; preds = %800
  %853 = load ptr, ptr %18, align 8, !tbaa !5
  %854 = load ptr, ptr %20, align 8, !tbaa !5
  %855 = getelementptr inbounds float, ptr %854, i64 1
  %856 = load ptr, ptr %18, align 8, !tbaa !5
  %857 = load ptr, ptr %29, align 8, !tbaa !5
  %858 = call i32 @slascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b10, ptr noundef %81, ptr noundef %853, ptr noundef @c__1, ptr noundef %855, ptr noundef %856, ptr noundef %857)
  %859 = load ptr, ptr %18, align 8, !tbaa !5
  %860 = load ptr, ptr %20, align 8, !tbaa !5
  %861 = getelementptr inbounds float, ptr %860, i64 1
  %862 = load ptr, ptr %29, align 8, !tbaa !5
  %863 = call i32 @slasrt_(ptr noundef @.str.8, ptr noundef %859, ptr noundef %861, ptr noundef %862)
  %864 = load ptr, ptr %18, align 8, !tbaa !5
  %865 = load ptr, ptr %19, align 8, !tbaa !5
  %866 = load ptr, ptr %22, align 8, !tbaa !5
  %867 = load i64, ptr %31, align 8, !tbaa !9
  %868 = getelementptr inbounds %struct.complex, ptr %866, i64 %867
  %869 = load ptr, ptr %23, align 8, !tbaa !5
  %870 = load ptr, ptr %29, align 8, !tbaa !5
  %871 = call i32 @clascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %81, ptr noundef @c_b10, ptr noundef %864, ptr noundef %865, ptr noundef %868, ptr noundef %869, ptr noundef %870)
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2030

872:                                              ; preds = %365
  %873 = load ptr, ptr %18, align 8, !tbaa !5
  %874 = load i64, ptr %873, align 8, !tbaa !9
  %875 = sitofp i64 %874 to float
  %876 = load ptr, ptr %17, align 8, !tbaa !5
  %877 = load i64, ptr %876, align 8, !tbaa !9
  %878 = add nsw i64 %877, 1
  %879 = sitofp i64 %878 to float
  %880 = fdiv float %875, %879
  %881 = fpext float %880 to double
  %882 = call double @log(double noundef %881) #4
  %883 = call double @log(double noundef 2.000000e+00) #4
  %884 = fdiv double %882, %883
  %885 = fptosi double %884 to i64
  %886 = add nsw i64 %885, 1
  store i64 %886, ptr %65, align 8, !tbaa !9
  %887 = load ptr, ptr %17, align 8, !tbaa !5
  %888 = load i64, ptr %887, align 8, !tbaa !9
  %889 = add nsw i64 %888, 1
  store i64 %889, ptr %86, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  %890 = load ptr, ptr %17, align 8, !tbaa !5
  %891 = load i64, ptr %890, align 8, !tbaa !9
  %892 = load ptr, ptr %18, align 8, !tbaa !5
  %893 = load i64, ptr %892, align 8, !tbaa !9
  %894 = mul nsw i64 %891, %893
  %895 = add nsw i64 %894, 1
  store i64 %895, ptr %52, align 8, !tbaa !9
  %896 = load i64, ptr %52, align 8, !tbaa !9
  %897 = load i64, ptr %86, align 8, !tbaa !9
  %898 = load ptr, ptr %18, align 8, !tbaa !5
  %899 = load i64, ptr %898, align 8, !tbaa !9
  %900 = mul nsw i64 %897, %899
  %901 = add nsw i64 %896, %900
  store i64 %901, ptr %58, align 8, !tbaa !9
  %902 = load i64, ptr %58, align 8, !tbaa !9
  %903 = load i64, ptr %65, align 8, !tbaa !9
  %904 = load ptr, ptr %18, align 8, !tbaa !5
  %905 = load i64, ptr %904, align 8, !tbaa !9
  %906 = mul nsw i64 %903, %905
  %907 = add nsw i64 %902, %906
  store i64 %907, ptr %59, align 8, !tbaa !9
  %908 = load i64, ptr %59, align 8, !tbaa !9
  %909 = load i64, ptr %65, align 8, !tbaa !9
  %910 = load ptr, ptr %18, align 8, !tbaa !5
  %911 = load i64, ptr %910, align 8, !tbaa !9
  %912 = mul nsw i64 %909, %911
  %913 = shl i64 %912, 1
  %914 = add nsw i64 %908, %913
  store i64 %914, ptr %47, align 8, !tbaa !9
  %915 = load i64, ptr %47, align 8, !tbaa !9
  %916 = load i64, ptr %65, align 8, !tbaa !9
  %917 = load ptr, ptr %18, align 8, !tbaa !5
  %918 = load i64, ptr %917, align 8, !tbaa !9
  %919 = mul nsw i64 %916, %918
  %920 = add nsw i64 %915, %919
  store i64 %920, ptr %40, align 8, !tbaa !9
  %921 = load i64, ptr %40, align 8, !tbaa !9
  %922 = load ptr, ptr %18, align 8, !tbaa !5
  %923 = load i64, ptr %922, align 8, !tbaa !9
  %924 = add nsw i64 %921, %923
  store i64 %924, ptr %45, align 8, !tbaa !9
  %925 = load i64, ptr %45, align 8, !tbaa !9
  %926 = load ptr, ptr %18, align 8, !tbaa !5
  %927 = load i64, ptr %926, align 8, !tbaa !9
  %928 = add nsw i64 %925, %927
  store i64 %928, ptr %73, align 8, !tbaa !9
  %929 = load i64, ptr %73, align 8, !tbaa !9
  %930 = load i64, ptr %65, align 8, !tbaa !9
  %931 = shl i64 %930, 1
  %932 = load ptr, ptr %18, align 8, !tbaa !5
  %933 = load i64, ptr %932, align 8, !tbaa !9
  %934 = mul nsw i64 %931, %933
  %935 = add nsw i64 %929, %934
  store i64 %935, ptr %82, align 8, !tbaa !9
  %936 = load i64, ptr %82, align 8, !tbaa !9
  %937 = load i64, ptr %65, align 8, !tbaa !9
  %938 = shl i64 %937, 1
  %939 = load ptr, ptr %18, align 8, !tbaa !5
  %940 = load i64, ptr %939, align 8, !tbaa !9
  %941 = mul nsw i64 %938, %940
  %942 = add nsw i64 %936, %941
  store i64 %942, ptr %84, align 8, !tbaa !9
  store i64 1, ptr %49, align 8, !tbaa !9
  %943 = load i64, ptr %84, align 8, !tbaa !9
  store i64 %943, ptr %75, align 8, !tbaa !9
  %944 = load i64, ptr %75, align 8, !tbaa !9
  %945 = load ptr, ptr %17, align 8, !tbaa !5
  %946 = load i64, ptr %945, align 8, !tbaa !9
  %947 = load ptr, ptr %19, align 8, !tbaa !5
  %948 = load i64, ptr %947, align 8, !tbaa !9
  %949 = mul nsw i64 %946, %948
  %950 = add nsw i64 %944, %949
  store i64 %950, ptr %72, align 8, !tbaa !9
  %951 = load i64, ptr %72, align 8, !tbaa !9
  %952 = load ptr, ptr %17, align 8, !tbaa !5
  %953 = load i64, ptr %952, align 8, !tbaa !9
  %954 = load ptr, ptr %19, align 8, !tbaa !5
  %955 = load i64, ptr %954, align 8, !tbaa !9
  %956 = mul nsw i64 %953, %955
  %957 = add nsw i64 %951, %956
  store i64 %957, ptr %62, align 8, !tbaa !9
  %958 = load ptr, ptr %18, align 8, !tbaa !5
  %959 = load i64, ptr %958, align 8, !tbaa !9
  %960 = add nsw i64 %959, 1
  store i64 %960, ptr %74, align 8, !tbaa !9
  %961 = load i64, ptr %74, align 8, !tbaa !9
  %962 = load ptr, ptr %18, align 8, !tbaa !5
  %963 = load i64, ptr %962, align 8, !tbaa !9
  %964 = add nsw i64 %961, %963
  store i64 %964, ptr %43, align 8, !tbaa !9
  %965 = load i64, ptr %43, align 8, !tbaa !9
  %966 = load ptr, ptr %18, align 8, !tbaa !5
  %967 = load i64, ptr %966, align 8, !tbaa !9
  %968 = add nsw i64 %965, %967
  store i64 %968, ptr %83, align 8, !tbaa !9
  %969 = load i64, ptr %83, align 8, !tbaa !9
  %970 = load ptr, ptr %18, align 8, !tbaa !5
  %971 = load i64, ptr %970, align 8, !tbaa !9
  %972 = add nsw i64 %969, %971
  store i64 %972, ptr %63, align 8, !tbaa !9
  %973 = load i64, ptr %63, align 8, !tbaa !9
  %974 = load i64, ptr %65, align 8, !tbaa !9
  %975 = load ptr, ptr %18, align 8, !tbaa !5
  %976 = load i64, ptr %975, align 8, !tbaa !9
  %977 = mul nsw i64 %974, %976
  %978 = add nsw i64 %973, %977
  store i64 %978, ptr %80, align 8, !tbaa !9
  %979 = load i64, ptr %80, align 8, !tbaa !9
  %980 = load i64, ptr %65, align 8, !tbaa !9
  %981 = load ptr, ptr %18, align 8, !tbaa !5
  %982 = load i64, ptr %981, align 8, !tbaa !9
  %983 = mul nsw i64 %980, %982
  %984 = shl i64 %983, 1
  %985 = add nsw i64 %979, %984
  store i64 %985, ptr %56, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  store i64 0, ptr %66, align 8, !tbaa !9
  store i64 1, ptr %78, align 8, !tbaa !9
  store i64 0, ptr %79, align 8, !tbaa !9
  store i64 0, ptr %64, align 8, !tbaa !9
  %986 = load ptr, ptr %18, align 8, !tbaa !5
  %987 = load i64, ptr %986, align 8, !tbaa !9
  store i64 %987, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %988

988:                                              ; preds = %1020, %872
  %989 = load i64, ptr %41, align 8, !tbaa !9
  %990 = load i64, ptr %32, align 8, !tbaa !9
  %991 = icmp sle i64 %989, %990
  br i1 %991, label %992, label %1023

992:                                              ; preds = %988
  %993 = load ptr, ptr %20, align 8, !tbaa !5
  %994 = load i64, ptr %41, align 8, !tbaa !9
  %995 = getelementptr inbounds float, ptr %993, i64 %994
  %996 = load float, ptr %995, align 4, !tbaa !11
  store float %996, ptr %38, align 4, !tbaa !11
  %997 = load float, ptr %38, align 4, !tbaa !11
  %998 = fcmp oge float %997, 0.000000e+00
  br i1 %998, label %999, label %1001

999:                                              ; preds = %992
  %1000 = load float, ptr %38, align 4, !tbaa !11
  br label %1004

1001:                                             ; preds = %992
  %1002 = load float, ptr %38, align 4, !tbaa !11
  %1003 = fneg float %1002
  br label %1004

1004:                                             ; preds = %1001, %999
  %1005 = phi float [ %1000, %999 ], [ %1003, %1001 ]
  %1006 = fpext float %1005 to double
  %1007 = load float, ptr %55, align 4, !tbaa !11
  %1008 = fpext float %1007 to double
  %1009 = fcmp olt double %1006, %1008
  br i1 %1009, label %1010, label %1019

1010:                                             ; preds = %1004
  %1011 = load ptr, ptr %20, align 8, !tbaa !5
  %1012 = load i64, ptr %41, align 8, !tbaa !9
  %1013 = getelementptr inbounds float, ptr %1011, i64 %1012
  %1014 = call double @r_sign(ptr noundef %55, ptr noundef %1013)
  %1015 = fptrunc double %1014 to float
  %1016 = load ptr, ptr %20, align 8, !tbaa !5
  %1017 = load i64, ptr %41, align 8, !tbaa !9
  %1018 = getelementptr inbounds float, ptr %1016, i64 %1017
  store float %1015, ptr %1018, align 4, !tbaa !11
  br label %1019

1019:                                             ; preds = %1010, %1004
  br label %1020

1020:                                             ; preds = %1019
  %1021 = load i64, ptr %41, align 8, !tbaa !9
  %1022 = add nsw i64 %1021, 1
  store i64 %1022, ptr %41, align 8, !tbaa !9
  br label %988, !llvm.loop !34

1023:                                             ; preds = %988
  %1024 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %1024, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %1025

1025:                                             ; preds = %1591, %1023
  %1026 = load i64, ptr %41, align 8, !tbaa !9
  %1027 = load i64, ptr %32, align 8, !tbaa !9
  %1028 = icmp sle i64 %1026, %1027
  br i1 %1028, label %1029, label %1594

1029:                                             ; preds = %1025
  %1030 = load ptr, ptr %21, align 8, !tbaa !5
  %1031 = load i64, ptr %41, align 8, !tbaa !9
  %1032 = getelementptr inbounds float, ptr %1030, i64 %1031
  %1033 = load float, ptr %1032, align 4, !tbaa !11
  store float %1033, ptr %38, align 4, !tbaa !11
  %1034 = load float, ptr %38, align 4, !tbaa !11
  %1035 = fcmp oge float %1034, 0.000000e+00
  br i1 %1035, label %1036, label %1038

1036:                                             ; preds = %1029
  %1037 = load float, ptr %38, align 4, !tbaa !11
  br label %1041

1038:                                             ; preds = %1029
  %1039 = load float, ptr %38, align 4, !tbaa !11
  %1040 = fneg float %1039
  br label %1041

1041:                                             ; preds = %1038, %1036
  %1042 = phi float [ %1037, %1036 ], [ %1040, %1038 ]
  %1043 = fpext float %1042 to double
  %1044 = load float, ptr %55, align 4, !tbaa !11
  %1045 = fpext float %1044 to double
  %1046 = fcmp olt double %1043, %1045
  br i1 %1046, label %1051, label %1047

1047:                                             ; preds = %1041
  %1048 = load i64, ptr %41, align 8, !tbaa !9
  %1049 = load i64, ptr %53, align 8, !tbaa !9
  %1050 = icmp eq i64 %1048, %1049
  br i1 %1050, label %1051, label %1590

1051:                                             ; preds = %1047, %1041
  %1052 = load i64, ptr %64, align 8, !tbaa !9
  %1053 = add nsw i64 %1052, 1
  store i64 %1053, ptr %64, align 8, !tbaa !9
  %1054 = load i64, ptr %51, align 8, !tbaa !9
  %1055 = load ptr, ptr %28, align 8, !tbaa !5
  %1056 = load i64, ptr %64, align 8, !tbaa !9
  %1057 = getelementptr inbounds i64, ptr %1055, i64 %1056
  store i64 %1054, ptr %1057, align 8, !tbaa !9
  %1058 = load i64, ptr %41, align 8, !tbaa !9
  %1059 = load i64, ptr %53, align 8, !tbaa !9
  %1060 = icmp slt i64 %1058, %1059
  br i1 %1060, label %1061, label %1073

1061:                                             ; preds = %1051
  %1062 = load i64, ptr %41, align 8, !tbaa !9
  %1063 = load i64, ptr %51, align 8, !tbaa !9
  %1064 = sub nsw i64 %1062, %1063
  %1065 = add nsw i64 %1064, 1
  store i64 %1065, ptr %76, align 8, !tbaa !9
  %1066 = load i64, ptr %76, align 8, !tbaa !9
  %1067 = load ptr, ptr %28, align 8, !tbaa !5
  %1068 = load i64, ptr %74, align 8, !tbaa !9
  %1069 = load i64, ptr %64, align 8, !tbaa !9
  %1070 = add nsw i64 %1068, %1069
  %1071 = sub nsw i64 %1070, 1
  %1072 = getelementptr inbounds i64, ptr %1067, i64 %1071
  store i64 %1066, ptr %1072, align 8, !tbaa !9
  br label %1145

1073:                                             ; preds = %1051
  %1074 = load ptr, ptr %21, align 8, !tbaa !5
  %1075 = load i64, ptr %41, align 8, !tbaa !9
  %1076 = getelementptr inbounds float, ptr %1074, i64 %1075
  %1077 = load float, ptr %1076, align 4, !tbaa !11
  store float %1077, ptr %38, align 4, !tbaa !11
  %1078 = load float, ptr %38, align 4, !tbaa !11
  %1079 = fcmp oge float %1078, 0.000000e+00
  br i1 %1079, label %1080, label %1082

1080:                                             ; preds = %1073
  %1081 = load float, ptr %38, align 4, !tbaa !11
  br label %1085

1082:                                             ; preds = %1073
  %1083 = load float, ptr %38, align 4, !tbaa !11
  %1084 = fneg float %1083
  br label %1085

1085:                                             ; preds = %1082, %1080
  %1086 = phi float [ %1081, %1080 ], [ %1084, %1082 ]
  %1087 = fpext float %1086 to double
  %1088 = load float, ptr %55, align 4, !tbaa !11
  %1089 = fpext float %1088 to double
  %1090 = fcmp oge double %1087, %1089
  br i1 %1090, label %1091, label %1104

1091:                                             ; preds = %1085
  %1092 = load ptr, ptr %18, align 8, !tbaa !5
  %1093 = load i64, ptr %1092, align 8, !tbaa !9
  %1094 = load i64, ptr %51, align 8, !tbaa !9
  %1095 = sub nsw i64 %1093, %1094
  %1096 = add nsw i64 %1095, 1
  store i64 %1096, ptr %76, align 8, !tbaa !9
  %1097 = load i64, ptr %76, align 8, !tbaa !9
  %1098 = load ptr, ptr %28, align 8, !tbaa !5
  %1099 = load i64, ptr %74, align 8, !tbaa !9
  %1100 = load i64, ptr %64, align 8, !tbaa !9
  %1101 = add nsw i64 %1099, %1100
  %1102 = sub nsw i64 %1101, 1
  %1103 = getelementptr inbounds i64, ptr %1098, i64 %1102
  store i64 %1097, ptr %1103, align 8, !tbaa !9
  br label %1144

1104:                                             ; preds = %1085
  %1105 = load i64, ptr %41, align 8, !tbaa !9
  %1106 = load i64, ptr %51, align 8, !tbaa !9
  %1107 = sub nsw i64 %1105, %1106
  %1108 = add nsw i64 %1107, 1
  store i64 %1108, ptr %76, align 8, !tbaa !9
  %1109 = load i64, ptr %76, align 8, !tbaa !9
  %1110 = load ptr, ptr %28, align 8, !tbaa !5
  %1111 = load i64, ptr %74, align 8, !tbaa !9
  %1112 = load i64, ptr %64, align 8, !tbaa !9
  %1113 = add nsw i64 %1111, %1112
  %1114 = sub nsw i64 %1113, 1
  %1115 = getelementptr inbounds i64, ptr %1110, i64 %1114
  store i64 %1109, ptr %1115, align 8, !tbaa !9
  %1116 = load i64, ptr %64, align 8, !tbaa !9
  %1117 = add nsw i64 %1116, 1
  store i64 %1117, ptr %64, align 8, !tbaa !9
  %1118 = load ptr, ptr %18, align 8, !tbaa !5
  %1119 = load i64, ptr %1118, align 8, !tbaa !9
  %1120 = load ptr, ptr %28, align 8, !tbaa !5
  %1121 = load i64, ptr %64, align 8, !tbaa !9
  %1122 = getelementptr inbounds i64, ptr %1120, i64 %1121
  store i64 %1119, ptr %1122, align 8, !tbaa !9
  %1123 = load ptr, ptr %28, align 8, !tbaa !5
  %1124 = load i64, ptr %74, align 8, !tbaa !9
  %1125 = load i64, ptr %64, align 8, !tbaa !9
  %1126 = add nsw i64 %1124, %1125
  %1127 = sub nsw i64 %1126, 1
  %1128 = getelementptr inbounds i64, ptr %1123, i64 %1127
  store i64 1, ptr %1128, align 8, !tbaa !9
  %1129 = load ptr, ptr %19, align 8, !tbaa !5
  %1130 = load ptr, ptr %22, align 8, !tbaa !5
  %1131 = load ptr, ptr %18, align 8, !tbaa !5
  %1132 = load i64, ptr %1131, align 8, !tbaa !9
  %1133 = load i64, ptr %30, align 8, !tbaa !9
  %1134 = add nsw i64 %1132, %1133
  %1135 = getelementptr inbounds %struct.complex, ptr %1130, i64 %1134
  %1136 = load ptr, ptr %23, align 8, !tbaa !5
  %1137 = load ptr, ptr %26, align 8, !tbaa !5
  %1138 = load i64, ptr %49, align 8, !tbaa !9
  %1139 = load i64, ptr %53, align 8, !tbaa !9
  %1140 = add nsw i64 %1138, %1139
  %1141 = getelementptr inbounds %struct.complex, ptr %1137, i64 %1140
  %1142 = load ptr, ptr %18, align 8, !tbaa !5
  %1143 = call i32 @f2c_ccopy(ptr noundef %1129, ptr noundef %1135, ptr noundef %1136, ptr noundef %1141, ptr noundef %1142)
  br label %1144

1144:                                             ; preds = %1104, %1091
  br label %1145

1145:                                             ; preds = %1144, %1061
  %1146 = load i64, ptr %51, align 8, !tbaa !9
  %1147 = sub nsw i64 %1146, 1
  store i64 %1147, ptr %54, align 8, !tbaa !9
  %1148 = load i64, ptr %76, align 8, !tbaa !9
  %1149 = icmp eq i64 %1148, 1
  br i1 %1149, label %1150, label %1165

1150:                                             ; preds = %1145
  %1151 = load ptr, ptr %19, align 8, !tbaa !5
  %1152 = load ptr, ptr %22, align 8, !tbaa !5
  %1153 = load i64, ptr %51, align 8, !tbaa !9
  %1154 = load i64, ptr %30, align 8, !tbaa !9
  %1155 = add nsw i64 %1153, %1154
  %1156 = getelementptr inbounds %struct.complex, ptr %1152, i64 %1155
  %1157 = load ptr, ptr %23, align 8, !tbaa !5
  %1158 = load ptr, ptr %26, align 8, !tbaa !5
  %1159 = load i64, ptr %49, align 8, !tbaa !9
  %1160 = load i64, ptr %54, align 8, !tbaa !9
  %1161 = add nsw i64 %1159, %1160
  %1162 = getelementptr inbounds %struct.complex, ptr %1158, i64 %1161
  %1163 = load ptr, ptr %18, align 8, !tbaa !5
  %1164 = call i32 @f2c_ccopy(ptr noundef %1151, ptr noundef %1156, ptr noundef %1157, ptr noundef %1162, ptr noundef %1163)
  br label %1587

1165:                                             ; preds = %1145
  %1166 = load i64, ptr %76, align 8, !tbaa !9
  %1167 = load ptr, ptr %17, align 8, !tbaa !5
  %1168 = load i64, ptr %1167, align 8, !tbaa !9
  %1169 = icmp sle i64 %1166, %1168
  br i1 %1169, label %1170, label %1403

1170:                                             ; preds = %1165
  %1171 = load ptr, ptr %27, align 8, !tbaa !5
  %1172 = load i64, ptr %52, align 8, !tbaa !9
  %1173 = load i64, ptr %54, align 8, !tbaa !9
  %1174 = add nsw i64 %1172, %1173
  %1175 = getelementptr inbounds float, ptr %1171, i64 %1174
  %1176 = load ptr, ptr %18, align 8, !tbaa !5
  %1177 = call i32 @slaset_(ptr noundef @.str.2, ptr noundef %76, ptr noundef %76, ptr noundef @c_b35, ptr noundef @c_b10, ptr noundef %1175, ptr noundef %1176)
  %1178 = load ptr, ptr %27, align 8, !tbaa !5
  %1179 = load i64, ptr %46, align 8, !tbaa !9
  %1180 = load i64, ptr %54, align 8, !tbaa !9
  %1181 = add nsw i64 %1179, %1180
  %1182 = getelementptr inbounds float, ptr %1178, i64 %1181
  %1183 = load ptr, ptr %18, align 8, !tbaa !5
  %1184 = call i32 @slaset_(ptr noundef @.str.2, ptr noundef %76, ptr noundef %76, ptr noundef @c_b35, ptr noundef @c_b10, ptr noundef %1182, ptr noundef %1183)
  %1185 = load ptr, ptr %20, align 8, !tbaa !5
  %1186 = load i64, ptr %51, align 8, !tbaa !9
  %1187 = getelementptr inbounds float, ptr %1185, i64 %1186
  %1188 = load ptr, ptr %21, align 8, !tbaa !5
  %1189 = load i64, ptr %51, align 8, !tbaa !9
  %1190 = getelementptr inbounds float, ptr %1188, i64 %1189
  %1191 = load ptr, ptr %27, align 8, !tbaa !5
  %1192 = load i64, ptr %52, align 8, !tbaa !9
  %1193 = load i64, ptr %54, align 8, !tbaa !9
  %1194 = add nsw i64 %1192, %1193
  %1195 = getelementptr inbounds float, ptr %1191, i64 %1194
  %1196 = load ptr, ptr %18, align 8, !tbaa !5
  %1197 = load ptr, ptr %27, align 8, !tbaa !5
  %1198 = load i64, ptr %46, align 8, !tbaa !9
  %1199 = load i64, ptr %54, align 8, !tbaa !9
  %1200 = add nsw i64 %1198, %1199
  %1201 = getelementptr inbounds float, ptr %1197, i64 %1200
  %1202 = load ptr, ptr %18, align 8, !tbaa !5
  %1203 = load ptr, ptr %27, align 8, !tbaa !5
  %1204 = load i64, ptr %84, align 8, !tbaa !9
  %1205 = getelementptr inbounds float, ptr %1203, i64 %1204
  %1206 = load ptr, ptr %27, align 8, !tbaa !5
  %1207 = load i64, ptr %84, align 8, !tbaa !9
  %1208 = getelementptr inbounds float, ptr %1206, i64 %1207
  %1209 = load ptr, ptr %29, align 8, !tbaa !5
  %1210 = call i32 @slasdq_(ptr noundef @.str.5, ptr noundef @c__0, ptr noundef %76, ptr noundef %76, ptr noundef %76, ptr noundef @c__0, ptr noundef %1187, ptr noundef %1190, ptr noundef %1195, ptr noundef %1196, ptr noundef %1201, ptr noundef %1202, ptr noundef %1205, ptr noundef @c__1, ptr noundef %1208, ptr noundef %1209)
  %1211 = load ptr, ptr %29, align 8, !tbaa !5
  %1212 = load i64, ptr %1211, align 8, !tbaa !9
  %1213 = icmp ne i64 %1212, 0
  br i1 %1213, label %1214, label %1215

1214:                                             ; preds = %1170
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2030

1215:                                             ; preds = %1170
  %1216 = load i64, ptr %62, align 8, !tbaa !9
  %1217 = sub nsw i64 %1216, 1
  store i64 %1217, ptr %42, align 8, !tbaa !9
  %1218 = load ptr, ptr %19, align 8, !tbaa !5
  %1219 = load i64, ptr %1218, align 8, !tbaa !9
  store i64 %1219, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %1220

1220:                                             ; preds = %1254, %1215
  %1221 = load i64, ptr %61, align 8, !tbaa !9
  %1222 = load i64, ptr %33, align 8, !tbaa !9
  %1223 = icmp sle i64 %1221, %1222
  br i1 %1223, label %1224, label %1257

1224:                                             ; preds = %1220
  %1225 = load i64, ptr %51, align 8, !tbaa !9
  %1226 = load i64, ptr %76, align 8, !tbaa !9
  %1227 = add nsw i64 %1225, %1226
  %1228 = sub nsw i64 %1227, 1
  store i64 %1228, ptr %34, align 8, !tbaa !9
  %1229 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %1229, ptr %68, align 8, !tbaa !9
  br label %1230

1230:                                             ; preds = %1250, %1224
  %1231 = load i64, ptr %68, align 8, !tbaa !9
  %1232 = load i64, ptr %34, align 8, !tbaa !9
  %1233 = icmp sle i64 %1231, %1232
  br i1 %1233, label %1234, label %1253

1234:                                             ; preds = %1230
  %1235 = load i64, ptr %42, align 8, !tbaa !9
  %1236 = add nsw i64 %1235, 1
  store i64 %1236, ptr %42, align 8, !tbaa !9
  %1237 = load i64, ptr %68, align 8, !tbaa !9
  %1238 = load i64, ptr %61, align 8, !tbaa !9
  %1239 = load i64, ptr %30, align 8, !tbaa !9
  %1240 = mul nsw i64 %1238, %1239
  %1241 = add nsw i64 %1237, %1240
  store i64 %1241, ptr %35, align 8, !tbaa !9
  %1242 = load ptr, ptr %22, align 8, !tbaa !5
  %1243 = load i64, ptr %35, align 8, !tbaa !9
  %1244 = getelementptr inbounds %struct.complex, ptr %1242, i64 %1243
  %1245 = getelementptr inbounds %struct.complex, ptr %1244, i32 0, i32 0
  %1246 = load float, ptr %1245, align 4, !tbaa !18
  %1247 = load ptr, ptr %27, align 8, !tbaa !5
  %1248 = load i64, ptr %42, align 8, !tbaa !9
  %1249 = getelementptr inbounds float, ptr %1247, i64 %1248
  store float %1246, ptr %1249, align 4, !tbaa !11
  br label %1250

1250:                                             ; preds = %1234
  %1251 = load i64, ptr %68, align 8, !tbaa !9
  %1252 = add nsw i64 %1251, 1
  store i64 %1252, ptr %68, align 8, !tbaa !9
  br label %1230, !llvm.loop !35

1253:                                             ; preds = %1230
  br label %1254

1254:                                             ; preds = %1253
  %1255 = load i64, ptr %61, align 8, !tbaa !9
  %1256 = add nsw i64 %1255, 1
  store i64 %1256, ptr %61, align 8, !tbaa !9
  br label %1220, !llvm.loop !36

1257:                                             ; preds = %1220
  %1258 = load ptr, ptr %19, align 8, !tbaa !5
  %1259 = load ptr, ptr %27, align 8, !tbaa !5
  %1260 = load i64, ptr %46, align 8, !tbaa !9
  %1261 = load i64, ptr %54, align 8, !tbaa !9
  %1262 = add nsw i64 %1260, %1261
  %1263 = getelementptr inbounds float, ptr %1259, i64 %1262
  %1264 = load ptr, ptr %18, align 8, !tbaa !5
  %1265 = load ptr, ptr %27, align 8, !tbaa !5
  %1266 = load i64, ptr %62, align 8, !tbaa !9
  %1267 = getelementptr inbounds float, ptr %1265, i64 %1266
  %1268 = load ptr, ptr %27, align 8, !tbaa !5
  %1269 = load i64, ptr %75, align 8, !tbaa !9
  %1270 = getelementptr inbounds float, ptr %1268, i64 %1269
  %1271 = call i32 @f2c_sgemm(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %76, ptr noundef %1258, ptr noundef %76, ptr noundef @c_b10, ptr noundef %1263, ptr noundef %1264, ptr noundef %1267, ptr noundef %76, ptr noundef @c_b35, ptr noundef %1270, ptr noundef %76)
  %1272 = load i64, ptr %62, align 8, !tbaa !9
  %1273 = sub nsw i64 %1272, 1
  store i64 %1273, ptr %42, align 8, !tbaa !9
  %1274 = load ptr, ptr %19, align 8, !tbaa !5
  %1275 = load i64, ptr %1274, align 8, !tbaa !9
  store i64 %1275, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %1276

1276:                                             ; preds = %1309, %1257
  %1277 = load i64, ptr %61, align 8, !tbaa !9
  %1278 = load i64, ptr %33, align 8, !tbaa !9
  %1279 = icmp sle i64 %1277, %1278
  br i1 %1279, label %1280, label %1312

1280:                                             ; preds = %1276
  %1281 = load i64, ptr %51, align 8, !tbaa !9
  %1282 = load i64, ptr %76, align 8, !tbaa !9
  %1283 = add nsw i64 %1281, %1282
  %1284 = sub nsw i64 %1283, 1
  store i64 %1284, ptr %34, align 8, !tbaa !9
  %1285 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %1285, ptr %68, align 8, !tbaa !9
  br label %1286

1286:                                             ; preds = %1305, %1280
  %1287 = load i64, ptr %68, align 8, !tbaa !9
  %1288 = load i64, ptr %34, align 8, !tbaa !9
  %1289 = icmp sle i64 %1287, %1288
  br i1 %1289, label %1290, label %1308

1290:                                             ; preds = %1286
  %1291 = load i64, ptr %42, align 8, !tbaa !9
  %1292 = add nsw i64 %1291, 1
  store i64 %1292, ptr %42, align 8, !tbaa !9
  %1293 = load ptr, ptr %22, align 8, !tbaa !5
  %1294 = load i64, ptr %68, align 8, !tbaa !9
  %1295 = load i64, ptr %61, align 8, !tbaa !9
  %1296 = load i64, ptr %30, align 8, !tbaa !9
  %1297 = mul nsw i64 %1295, %1296
  %1298 = add nsw i64 %1294, %1297
  %1299 = getelementptr inbounds %struct.complex, ptr %1293, i64 %1298
  %1300 = call double @r_imag(ptr noundef %1299)
  %1301 = fptrunc double %1300 to float
  %1302 = load ptr, ptr %27, align 8, !tbaa !5
  %1303 = load i64, ptr %42, align 8, !tbaa !9
  %1304 = getelementptr inbounds float, ptr %1302, i64 %1303
  store float %1301, ptr %1304, align 4, !tbaa !11
  br label %1305

1305:                                             ; preds = %1290
  %1306 = load i64, ptr %68, align 8, !tbaa !9
  %1307 = add nsw i64 %1306, 1
  store i64 %1307, ptr %68, align 8, !tbaa !9
  br label %1286, !llvm.loop !37

1308:                                             ; preds = %1286
  br label %1309

1309:                                             ; preds = %1308
  %1310 = load i64, ptr %61, align 8, !tbaa !9
  %1311 = add nsw i64 %1310, 1
  store i64 %1311, ptr %61, align 8, !tbaa !9
  br label %1276, !llvm.loop !38

1312:                                             ; preds = %1276
  %1313 = load ptr, ptr %19, align 8, !tbaa !5
  %1314 = load ptr, ptr %27, align 8, !tbaa !5
  %1315 = load i64, ptr %46, align 8, !tbaa !9
  %1316 = load i64, ptr %54, align 8, !tbaa !9
  %1317 = add nsw i64 %1315, %1316
  %1318 = getelementptr inbounds float, ptr %1314, i64 %1317
  %1319 = load ptr, ptr %18, align 8, !tbaa !5
  %1320 = load ptr, ptr %27, align 8, !tbaa !5
  %1321 = load i64, ptr %62, align 8, !tbaa !9
  %1322 = getelementptr inbounds float, ptr %1320, i64 %1321
  %1323 = load ptr, ptr %27, align 8, !tbaa !5
  %1324 = load i64, ptr %72, align 8, !tbaa !9
  %1325 = getelementptr inbounds float, ptr %1323, i64 %1324
  %1326 = call i32 @f2c_sgemm(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %76, ptr noundef %1313, ptr noundef %76, ptr noundef @c_b10, ptr noundef %1318, ptr noundef %1319, ptr noundef %1322, ptr noundef %76, ptr noundef @c_b35, ptr noundef %1325, ptr noundef %76)
  %1327 = load i64, ptr %75, align 8, !tbaa !9
  %1328 = sub nsw i64 %1327, 1
  store i64 %1328, ptr %71, align 8, !tbaa !9
  %1329 = load i64, ptr %72, align 8, !tbaa !9
  %1330 = sub nsw i64 %1329, 1
  store i64 %1330, ptr %70, align 8, !tbaa !9
  %1331 = load ptr, ptr %19, align 8, !tbaa !5
  %1332 = load i64, ptr %1331, align 8, !tbaa !9
  store i64 %1332, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %1333

1333:                                             ; preds = %1385, %1312
  %1334 = load i64, ptr %61, align 8, !tbaa !9
  %1335 = load i64, ptr %33, align 8, !tbaa !9
  %1336 = icmp sle i64 %1334, %1335
  br i1 %1336, label %1337, label %1388

1337:                                             ; preds = %1333
  %1338 = load i64, ptr %51, align 8, !tbaa !9
  %1339 = load i64, ptr %76, align 8, !tbaa !9
  %1340 = add nsw i64 %1338, %1339
  %1341 = sub nsw i64 %1340, 1
  store i64 %1341, ptr %34, align 8, !tbaa !9
  %1342 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %1342, ptr %68, align 8, !tbaa !9
  br label %1343

1343:                                             ; preds = %1381, %1337
  %1344 = load i64, ptr %68, align 8, !tbaa !9
  %1345 = load i64, ptr %34, align 8, !tbaa !9
  %1346 = icmp sle i64 %1344, %1345
  br i1 %1346, label %1347, label %1384

1347:                                             ; preds = %1343
  %1348 = load i64, ptr %71, align 8, !tbaa !9
  %1349 = add nsw i64 %1348, 1
  store i64 %1349, ptr %71, align 8, !tbaa !9
  %1350 = load i64, ptr %70, align 8, !tbaa !9
  %1351 = add nsw i64 %1350, 1
  store i64 %1351, ptr %70, align 8, !tbaa !9
  %1352 = load i64, ptr %68, align 8, !tbaa !9
  %1353 = load i64, ptr %61, align 8, !tbaa !9
  %1354 = load i64, ptr %30, align 8, !tbaa !9
  %1355 = mul nsw i64 %1353, %1354
  %1356 = add nsw i64 %1352, %1355
  store i64 %1356, ptr %35, align 8, !tbaa !9
  %1357 = load i64, ptr %71, align 8, !tbaa !9
  store i64 %1357, ptr %36, align 8, !tbaa !9
  %1358 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %1358, ptr %37, align 8, !tbaa !9
  %1359 = load ptr, ptr %27, align 8, !tbaa !5
  %1360 = load i64, ptr %36, align 8, !tbaa !9
  %1361 = getelementptr inbounds float, ptr %1359, i64 %1360
  %1362 = load float, ptr %1361, align 4, !tbaa !11
  %1363 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  store float %1362, ptr %1363, align 4, !tbaa !18
  %1364 = load ptr, ptr %27, align 8, !tbaa !5
  %1365 = load i64, ptr %37, align 8, !tbaa !9
  %1366 = getelementptr inbounds float, ptr %1364, i64 %1365
  %1367 = load float, ptr %1366, align 4, !tbaa !11
  %1368 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  store float %1367, ptr %1368, align 4, !tbaa !24
  %1369 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  %1370 = load float, ptr %1369, align 4, !tbaa !18
  %1371 = load ptr, ptr %22, align 8, !tbaa !5
  %1372 = load i64, ptr %35, align 8, !tbaa !9
  %1373 = getelementptr inbounds %struct.complex, ptr %1371, i64 %1372
  %1374 = getelementptr inbounds %struct.complex, ptr %1373, i32 0, i32 0
  store float %1370, ptr %1374, align 4, !tbaa !18
  %1375 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  %1376 = load float, ptr %1375, align 4, !tbaa !24
  %1377 = load ptr, ptr %22, align 8, !tbaa !5
  %1378 = load i64, ptr %35, align 8, !tbaa !9
  %1379 = getelementptr inbounds %struct.complex, ptr %1377, i64 %1378
  %1380 = getelementptr inbounds %struct.complex, ptr %1379, i32 0, i32 1
  store float %1376, ptr %1380, align 4, !tbaa !24
  br label %1381

1381:                                             ; preds = %1347
  %1382 = load i64, ptr %68, align 8, !tbaa !9
  %1383 = add nsw i64 %1382, 1
  store i64 %1383, ptr %68, align 8, !tbaa !9
  br label %1343, !llvm.loop !39

1384:                                             ; preds = %1343
  br label %1385

1385:                                             ; preds = %1384
  %1386 = load i64, ptr %61, align 8, !tbaa !9
  %1387 = add nsw i64 %1386, 1
  store i64 %1387, ptr %61, align 8, !tbaa !9
  br label %1333, !llvm.loop !40

1388:                                             ; preds = %1333
  %1389 = load ptr, ptr %19, align 8, !tbaa !5
  %1390 = load ptr, ptr %22, align 8, !tbaa !5
  %1391 = load i64, ptr %51, align 8, !tbaa !9
  %1392 = load i64, ptr %30, align 8, !tbaa !9
  %1393 = add nsw i64 %1391, %1392
  %1394 = getelementptr inbounds %struct.complex, ptr %1390, i64 %1393
  %1395 = load ptr, ptr %23, align 8, !tbaa !5
  %1396 = load ptr, ptr %26, align 8, !tbaa !5
  %1397 = load i64, ptr %49, align 8, !tbaa !9
  %1398 = load i64, ptr %54, align 8, !tbaa !9
  %1399 = add nsw i64 %1397, %1398
  %1400 = getelementptr inbounds %struct.complex, ptr %1396, i64 %1399
  %1401 = load ptr, ptr %18, align 8, !tbaa !5
  %1402 = call i32 @clacpy_(ptr noundef @.str.2, ptr noundef %76, ptr noundef %1389, ptr noundef %1394, ptr noundef %1395, ptr noundef %1400, ptr noundef %1401)
  br label %1586

1403:                                             ; preds = %1165
  %1404 = load ptr, ptr %17, align 8, !tbaa !5
  %1405 = load ptr, ptr %20, align 8, !tbaa !5
  %1406 = load i64, ptr %51, align 8, !tbaa !9
  %1407 = getelementptr inbounds float, ptr %1405, i64 %1406
  %1408 = load ptr, ptr %21, align 8, !tbaa !5
  %1409 = load i64, ptr %51, align 8, !tbaa !9
  %1410 = getelementptr inbounds float, ptr %1408, i64 %1409
  %1411 = load ptr, ptr %27, align 8, !tbaa !5
  %1412 = load i64, ptr %46, align 8, !tbaa !9
  %1413 = load i64, ptr %54, align 8, !tbaa !9
  %1414 = add nsw i64 %1412, %1413
  %1415 = getelementptr inbounds float, ptr %1411, i64 %1414
  %1416 = load ptr, ptr %18, align 8, !tbaa !5
  %1417 = load ptr, ptr %27, align 8, !tbaa !5
  %1418 = load i64, ptr %52, align 8, !tbaa !9
  %1419 = load i64, ptr %54, align 8, !tbaa !9
  %1420 = add nsw i64 %1418, %1419
  %1421 = getelementptr inbounds float, ptr %1417, i64 %1420
  %1422 = load ptr, ptr %28, align 8, !tbaa !5
  %1423 = load i64, ptr %43, align 8, !tbaa !9
  %1424 = load i64, ptr %54, align 8, !tbaa !9
  %1425 = add nsw i64 %1423, %1424
  %1426 = getelementptr inbounds i64, ptr %1422, i64 %1425
  %1427 = load ptr, ptr %27, align 8, !tbaa !5
  %1428 = load i64, ptr %58, align 8, !tbaa !9
  %1429 = load i64, ptr %54, align 8, !tbaa !9
  %1430 = add nsw i64 %1428, %1429
  %1431 = getelementptr inbounds float, ptr %1427, i64 %1430
  %1432 = load ptr, ptr %27, align 8, !tbaa !5
  %1433 = load i64, ptr %59, align 8, !tbaa !9
  %1434 = load i64, ptr %54, align 8, !tbaa !9
  %1435 = add nsw i64 %1433, %1434
  %1436 = getelementptr inbounds float, ptr %1432, i64 %1435
  %1437 = load ptr, ptr %27, align 8, !tbaa !5
  %1438 = load i64, ptr %47, align 8, !tbaa !9
  %1439 = load i64, ptr %54, align 8, !tbaa !9
  %1440 = add nsw i64 %1438, %1439
  %1441 = getelementptr inbounds float, ptr %1437, i64 %1440
  %1442 = load ptr, ptr %27, align 8, !tbaa !5
  %1443 = load i64, ptr %73, align 8, !tbaa !9
  %1444 = load i64, ptr %54, align 8, !tbaa !9
  %1445 = add nsw i64 %1443, %1444
  %1446 = getelementptr inbounds float, ptr %1442, i64 %1445
  %1447 = load ptr, ptr %28, align 8, !tbaa !5
  %1448 = load i64, ptr %83, align 8, !tbaa !9
  %1449 = load i64, ptr %54, align 8, !tbaa !9
  %1450 = add nsw i64 %1448, %1449
  %1451 = getelementptr inbounds i64, ptr %1447, i64 %1450
  %1452 = load ptr, ptr %28, align 8, !tbaa !5
  %1453 = load i64, ptr %80, align 8, !tbaa !9
  %1454 = load i64, ptr %54, align 8, !tbaa !9
  %1455 = add nsw i64 %1453, %1454
  %1456 = getelementptr inbounds i64, ptr %1452, i64 %1455
  %1457 = load ptr, ptr %18, align 8, !tbaa !5
  %1458 = load ptr, ptr %28, align 8, !tbaa !5
  %1459 = load i64, ptr %63, align 8, !tbaa !9
  %1460 = load i64, ptr %54, align 8, !tbaa !9
  %1461 = add nsw i64 %1459, %1460
  %1462 = getelementptr inbounds i64, ptr %1458, i64 %1461
  %1463 = load ptr, ptr %27, align 8, !tbaa !5
  %1464 = load i64, ptr %82, align 8, !tbaa !9
  %1465 = load i64, ptr %54, align 8, !tbaa !9
  %1466 = add nsw i64 %1464, %1465
  %1467 = getelementptr inbounds float, ptr %1463, i64 %1466
  %1468 = load ptr, ptr %27, align 8, !tbaa !5
  %1469 = load i64, ptr %40, align 8, !tbaa !9
  %1470 = load i64, ptr %54, align 8, !tbaa !9
  %1471 = add nsw i64 %1469, %1470
  %1472 = getelementptr inbounds float, ptr %1468, i64 %1471
  %1473 = load ptr, ptr %27, align 8, !tbaa !5
  %1474 = load i64, ptr %45, align 8, !tbaa !9
  %1475 = load i64, ptr %54, align 8, !tbaa !9
  %1476 = add nsw i64 %1474, %1475
  %1477 = getelementptr inbounds float, ptr %1473, i64 %1476
  %1478 = load ptr, ptr %27, align 8, !tbaa !5
  %1479 = load i64, ptr %84, align 8, !tbaa !9
  %1480 = getelementptr inbounds float, ptr %1478, i64 %1479
  %1481 = load ptr, ptr %28, align 8, !tbaa !5
  %1482 = load i64, ptr %56, align 8, !tbaa !9
  %1483 = getelementptr inbounds i64, ptr %1481, i64 %1482
  %1484 = load ptr, ptr %29, align 8, !tbaa !5
  %1485 = call i32 @slasda_(ptr noundef %78, ptr noundef %1404, ptr noundef %76, ptr noundef %66, ptr noundef %1407, ptr noundef %1410, ptr noundef %1415, ptr noundef %1416, ptr noundef %1421, ptr noundef %1426, ptr noundef %1431, ptr noundef %1436, ptr noundef %1441, ptr noundef %1446, ptr noundef %1451, ptr noundef %1456, ptr noundef %1457, ptr noundef %1462, ptr noundef %1467, ptr noundef %1472, ptr noundef %1477, ptr noundef %1480, ptr noundef %1483, ptr noundef %1484)
  %1486 = load ptr, ptr %29, align 8, !tbaa !5
  %1487 = load i64, ptr %1486, align 8, !tbaa !9
  %1488 = icmp ne i64 %1487, 0
  br i1 %1488, label %1489, label %1490

1489:                                             ; preds = %1403
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2030

1490:                                             ; preds = %1403
  %1491 = load i64, ptr %49, align 8, !tbaa !9
  %1492 = load i64, ptr %54, align 8, !tbaa !9
  %1493 = add nsw i64 %1491, %1492
  store i64 %1493, ptr %67, align 8, !tbaa !9
  %1494 = load ptr, ptr %17, align 8, !tbaa !5
  %1495 = load ptr, ptr %19, align 8, !tbaa !5
  %1496 = load ptr, ptr %22, align 8, !tbaa !5
  %1497 = load i64, ptr %51, align 8, !tbaa !9
  %1498 = load i64, ptr %30, align 8, !tbaa !9
  %1499 = add nsw i64 %1497, %1498
  %1500 = getelementptr inbounds %struct.complex, ptr %1496, i64 %1499
  %1501 = load ptr, ptr %23, align 8, !tbaa !5
  %1502 = load ptr, ptr %26, align 8, !tbaa !5
  %1503 = load i64, ptr %67, align 8, !tbaa !9
  %1504 = getelementptr inbounds %struct.complex, ptr %1502, i64 %1503
  %1505 = load ptr, ptr %18, align 8, !tbaa !5
  %1506 = load ptr, ptr %27, align 8, !tbaa !5
  %1507 = load i64, ptr %46, align 8, !tbaa !9
  %1508 = load i64, ptr %54, align 8, !tbaa !9
  %1509 = add nsw i64 %1507, %1508
  %1510 = getelementptr inbounds float, ptr %1506, i64 %1509
  %1511 = load ptr, ptr %18, align 8, !tbaa !5
  %1512 = load ptr, ptr %27, align 8, !tbaa !5
  %1513 = load i64, ptr %52, align 8, !tbaa !9
  %1514 = load i64, ptr %54, align 8, !tbaa !9
  %1515 = add nsw i64 %1513, %1514
  %1516 = getelementptr inbounds float, ptr %1512, i64 %1515
  %1517 = load ptr, ptr %28, align 8, !tbaa !5
  %1518 = load i64, ptr %43, align 8, !tbaa !9
  %1519 = load i64, ptr %54, align 8, !tbaa !9
  %1520 = add nsw i64 %1518, %1519
  %1521 = getelementptr inbounds i64, ptr %1517, i64 %1520
  %1522 = load ptr, ptr %27, align 8, !tbaa !5
  %1523 = load i64, ptr %58, align 8, !tbaa !9
  %1524 = load i64, ptr %54, align 8, !tbaa !9
  %1525 = add nsw i64 %1523, %1524
  %1526 = getelementptr inbounds float, ptr %1522, i64 %1525
  %1527 = load ptr, ptr %27, align 8, !tbaa !5
  %1528 = load i64, ptr %59, align 8, !tbaa !9
  %1529 = load i64, ptr %54, align 8, !tbaa !9
  %1530 = add nsw i64 %1528, %1529
  %1531 = getelementptr inbounds float, ptr %1527, i64 %1530
  %1532 = load ptr, ptr %27, align 8, !tbaa !5
  %1533 = load i64, ptr %47, align 8, !tbaa !9
  %1534 = load i64, ptr %54, align 8, !tbaa !9
  %1535 = add nsw i64 %1533, %1534
  %1536 = getelementptr inbounds float, ptr %1532, i64 %1535
  %1537 = load ptr, ptr %27, align 8, !tbaa !5
  %1538 = load i64, ptr %73, align 8, !tbaa !9
  %1539 = load i64, ptr %54, align 8, !tbaa !9
  %1540 = add nsw i64 %1538, %1539
  %1541 = getelementptr inbounds float, ptr %1537, i64 %1540
  %1542 = load ptr, ptr %28, align 8, !tbaa !5
  %1543 = load i64, ptr %83, align 8, !tbaa !9
  %1544 = load i64, ptr %54, align 8, !tbaa !9
  %1545 = add nsw i64 %1543, %1544
  %1546 = getelementptr inbounds i64, ptr %1542, i64 %1545
  %1547 = load ptr, ptr %28, align 8, !tbaa !5
  %1548 = load i64, ptr %80, align 8, !tbaa !9
  %1549 = load i64, ptr %54, align 8, !tbaa !9
  %1550 = add nsw i64 %1548, %1549
  %1551 = getelementptr inbounds i64, ptr %1547, i64 %1550
  %1552 = load ptr, ptr %18, align 8, !tbaa !5
  %1553 = load ptr, ptr %28, align 8, !tbaa !5
  %1554 = load i64, ptr %63, align 8, !tbaa !9
  %1555 = load i64, ptr %54, align 8, !tbaa !9
  %1556 = add nsw i64 %1554, %1555
  %1557 = getelementptr inbounds i64, ptr %1553, i64 %1556
  %1558 = load ptr, ptr %27, align 8, !tbaa !5
  %1559 = load i64, ptr %82, align 8, !tbaa !9
  %1560 = load i64, ptr %54, align 8, !tbaa !9
  %1561 = add nsw i64 %1559, %1560
  %1562 = getelementptr inbounds float, ptr %1558, i64 %1561
  %1563 = load ptr, ptr %27, align 8, !tbaa !5
  %1564 = load i64, ptr %40, align 8, !tbaa !9
  %1565 = load i64, ptr %54, align 8, !tbaa !9
  %1566 = add nsw i64 %1564, %1565
  %1567 = getelementptr inbounds float, ptr %1563, i64 %1566
  %1568 = load ptr, ptr %27, align 8, !tbaa !5
  %1569 = load i64, ptr %45, align 8, !tbaa !9
  %1570 = load i64, ptr %54, align 8, !tbaa !9
  %1571 = add nsw i64 %1569, %1570
  %1572 = getelementptr inbounds float, ptr %1568, i64 %1571
  %1573 = load ptr, ptr %27, align 8, !tbaa !5
  %1574 = load i64, ptr %84, align 8, !tbaa !9
  %1575 = getelementptr inbounds float, ptr %1573, i64 %1574
  %1576 = load ptr, ptr %28, align 8, !tbaa !5
  %1577 = load i64, ptr %56, align 8, !tbaa !9
  %1578 = getelementptr inbounds i64, ptr %1576, i64 %1577
  %1579 = load ptr, ptr %29, align 8, !tbaa !5
  %1580 = call i32 @clalsa_(ptr noundef %79, ptr noundef %1494, ptr noundef %76, ptr noundef %1495, ptr noundef %1500, ptr noundef %1501, ptr noundef %1504, ptr noundef %1505, ptr noundef %1510, ptr noundef %1511, ptr noundef %1516, ptr noundef %1521, ptr noundef %1526, ptr noundef %1531, ptr noundef %1536, ptr noundef %1541, ptr noundef %1546, ptr noundef %1551, ptr noundef %1552, ptr noundef %1557, ptr noundef %1562, ptr noundef %1567, ptr noundef %1572, ptr noundef %1575, ptr noundef %1578, ptr noundef %1579)
  %1581 = load ptr, ptr %29, align 8, !tbaa !5
  %1582 = load i64, ptr %1581, align 8, !tbaa !9
  %1583 = icmp ne i64 %1582, 0
  br i1 %1583, label %1584, label %1585

1584:                                             ; preds = %1490
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2030

1585:                                             ; preds = %1490
  br label %1586

1586:                                             ; preds = %1585, %1388
  br label %1587

1587:                                             ; preds = %1586, %1150
  %1588 = load i64, ptr %41, align 8, !tbaa !9
  %1589 = add nsw i64 %1588, 1
  store i64 %1589, ptr %51, align 8, !tbaa !9
  br label %1590

1590:                                             ; preds = %1587, %1047
  br label %1591

1591:                                             ; preds = %1590
  %1592 = load i64, ptr %41, align 8, !tbaa !9
  %1593 = add nsw i64 %1592, 1
  store i64 %1593, ptr %41, align 8, !tbaa !9
  br label %1025, !llvm.loop !41

1594:                                             ; preds = %1025
  %1595 = load float, ptr %60, align 4, !tbaa !11
  %1596 = fpext float %1595 to double
  %1597 = load ptr, ptr %20, align 8, !tbaa !5
  %1598 = load ptr, ptr %18, align 8, !tbaa !5
  %1599 = load ptr, ptr %20, align 8, !tbaa !5
  %1600 = getelementptr inbounds float, ptr %1599, i64 1
  %1601 = call i64 @f2c_isamax(ptr noundef %1598, ptr noundef %1600, ptr noundef @c__1)
  %1602 = getelementptr inbounds float, ptr %1597, i64 %1601
  %1603 = load float, ptr %1602, align 4, !tbaa !11
  store float %1603, ptr %38, align 4, !tbaa !11
  %1604 = load float, ptr %38, align 4, !tbaa !11
  %1605 = fcmp oge float %1604, 0.000000e+00
  br i1 %1605, label %1606, label %1608

1606:                                             ; preds = %1594
  %1607 = load float, ptr %38, align 4, !tbaa !11
  br label %1611

1608:                                             ; preds = %1594
  %1609 = load float, ptr %38, align 4, !tbaa !11
  %1610 = fneg float %1609
  br label %1611

1611:                                             ; preds = %1608, %1606
  %1612 = phi float [ %1607, %1606 ], [ %1610, %1608 ]
  %1613 = fpext float %1612 to double
  %1614 = fmul double %1596, %1613
  %1615 = fptrunc double %1614 to float
  store float %1615, ptr %57, align 4, !tbaa !11
  %1616 = load ptr, ptr %18, align 8, !tbaa !5
  %1617 = load i64, ptr %1616, align 8, !tbaa !9
  store i64 %1617, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %1618

1618:                                             ; preds = %1686, %1611
  %1619 = load i64, ptr %41, align 8, !tbaa !9
  %1620 = load i64, ptr %32, align 8, !tbaa !9
  %1621 = icmp sle i64 %1619, %1620
  br i1 %1621, label %1622, label %1689

1622:                                             ; preds = %1618
  %1623 = load ptr, ptr %20, align 8, !tbaa !5
  %1624 = load i64, ptr %41, align 8, !tbaa !9
  %1625 = getelementptr inbounds float, ptr %1623, i64 %1624
  %1626 = load float, ptr %1625, align 4, !tbaa !11
  store float %1626, ptr %38, align 4, !tbaa !11
  %1627 = load float, ptr %38, align 4, !tbaa !11
  %1628 = fcmp oge float %1627, 0.000000e+00
  br i1 %1628, label %1629, label %1631

1629:                                             ; preds = %1622
  %1630 = load float, ptr %38, align 4, !tbaa !11
  br label %1634

1631:                                             ; preds = %1622
  %1632 = load float, ptr %38, align 4, !tbaa !11
  %1633 = fneg float %1632
  br label %1634

1634:                                             ; preds = %1631, %1629
  %1635 = phi float [ %1630, %1629 ], [ %1633, %1631 ]
  %1636 = fpext float %1635 to double
  %1637 = load float, ptr %57, align 4, !tbaa !11
  %1638 = fpext float %1637 to double
  %1639 = fcmp ole double %1636, %1638
  br i1 %1639, label %1640, label %1650

1640:                                             ; preds = %1634
  %1641 = load ptr, ptr %19, align 8, !tbaa !5
  %1642 = load ptr, ptr %26, align 8, !tbaa !5
  %1643 = load i64, ptr %49, align 8, !tbaa !9
  %1644 = load i64, ptr %41, align 8, !tbaa !9
  %1645 = add nsw i64 %1643, %1644
  %1646 = sub nsw i64 %1645, 1
  %1647 = getelementptr inbounds %struct.complex, ptr %1642, i64 %1646
  %1648 = load ptr, ptr %18, align 8, !tbaa !5
  %1649 = call i32 @claset_(ptr noundef @.str.2, ptr noundef @c__1, ptr noundef %1641, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %1647, ptr noundef %1648)
  br label %1667

1650:                                             ; preds = %1634
  %1651 = load ptr, ptr %25, align 8, !tbaa !5
  %1652 = load i64, ptr %1651, align 8, !tbaa !9
  %1653 = add nsw i64 %1652, 1
  store i64 %1653, ptr %1651, align 8, !tbaa !9
  %1654 = load ptr, ptr %20, align 8, !tbaa !5
  %1655 = load i64, ptr %41, align 8, !tbaa !9
  %1656 = getelementptr inbounds float, ptr %1654, i64 %1655
  %1657 = load ptr, ptr %19, align 8, !tbaa !5
  %1658 = load ptr, ptr %26, align 8, !tbaa !5
  %1659 = load i64, ptr %49, align 8, !tbaa !9
  %1660 = load i64, ptr %41, align 8, !tbaa !9
  %1661 = add nsw i64 %1659, %1660
  %1662 = sub nsw i64 %1661, 1
  %1663 = getelementptr inbounds %struct.complex, ptr %1658, i64 %1662
  %1664 = load ptr, ptr %18, align 8, !tbaa !5
  %1665 = load ptr, ptr %29, align 8, !tbaa !5
  %1666 = call i32 @clascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %1656, ptr noundef @c_b10, ptr noundef @c__1, ptr noundef %1657, ptr noundef %1663, ptr noundef %1664, ptr noundef %1665)
  br label %1667

1667:                                             ; preds = %1650, %1640
  %1668 = load ptr, ptr %20, align 8, !tbaa !5
  %1669 = load i64, ptr %41, align 8, !tbaa !9
  %1670 = getelementptr inbounds float, ptr %1668, i64 %1669
  %1671 = load float, ptr %1670, align 4, !tbaa !11
  store float %1671, ptr %38, align 4, !tbaa !11
  %1672 = load float, ptr %38, align 4, !tbaa !11
  %1673 = fcmp oge float %1672, 0.000000e+00
  br i1 %1673, label %1674, label %1676

1674:                                             ; preds = %1667
  %1675 = load float, ptr %38, align 4, !tbaa !11
  br label %1679

1676:                                             ; preds = %1667
  %1677 = load float, ptr %38, align 4, !tbaa !11
  %1678 = fneg float %1677
  br label %1679

1679:                                             ; preds = %1676, %1674
  %1680 = phi float [ %1675, %1674 ], [ %1678, %1676 ]
  %1681 = fpext float %1680 to double
  %1682 = fptrunc double %1681 to float
  %1683 = load ptr, ptr %20, align 8, !tbaa !5
  %1684 = load i64, ptr %41, align 8, !tbaa !9
  %1685 = getelementptr inbounds float, ptr %1683, i64 %1684
  store float %1682, ptr %1685, align 4, !tbaa !11
  br label %1686

1686:                                             ; preds = %1679
  %1687 = load i64, ptr %41, align 8, !tbaa !9
  %1688 = add nsw i64 %1687, 1
  store i64 %1688, ptr %41, align 8, !tbaa !9
  br label %1618, !llvm.loop !42

1689:                                             ; preds = %1618
  store i64 1, ptr %79, align 8, !tbaa !9
  %1690 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1690, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %1691

1691:                                             ; preds = %2007, %1689
  %1692 = load i64, ptr %41, align 8, !tbaa !9
  %1693 = load i64, ptr %32, align 8, !tbaa !9
  %1694 = icmp sle i64 %1692, %1693
  br i1 %1694, label %1695, label %2010

1695:                                             ; preds = %1691
  %1696 = load ptr, ptr %28, align 8, !tbaa !5
  %1697 = load i64, ptr %41, align 8, !tbaa !9
  %1698 = getelementptr inbounds i64, ptr %1696, i64 %1697
  %1699 = load i64, ptr %1698, align 8, !tbaa !9
  store i64 %1699, ptr %51, align 8, !tbaa !9
  %1700 = load i64, ptr %51, align 8, !tbaa !9
  %1701 = sub nsw i64 %1700, 1
  store i64 %1701, ptr %54, align 8, !tbaa !9
  %1702 = load ptr, ptr %28, align 8, !tbaa !5
  %1703 = load i64, ptr %74, align 8, !tbaa !9
  %1704 = load i64, ptr %41, align 8, !tbaa !9
  %1705 = add nsw i64 %1703, %1704
  %1706 = sub nsw i64 %1705, 1
  %1707 = getelementptr inbounds i64, ptr %1702, i64 %1706
  %1708 = load i64, ptr %1707, align 8, !tbaa !9
  store i64 %1708, ptr %76, align 8, !tbaa !9
  %1709 = load i64, ptr %49, align 8, !tbaa !9
  %1710 = load i64, ptr %54, align 8, !tbaa !9
  %1711 = add nsw i64 %1709, %1710
  store i64 %1711, ptr %67, align 8, !tbaa !9
  %1712 = load i64, ptr %76, align 8, !tbaa !9
  %1713 = icmp eq i64 %1712, 1
  br i1 %1713, label %1714, label %1727

1714:                                             ; preds = %1695
  %1715 = load ptr, ptr %19, align 8, !tbaa !5
  %1716 = load ptr, ptr %26, align 8, !tbaa !5
  %1717 = load i64, ptr %67, align 8, !tbaa !9
  %1718 = getelementptr inbounds %struct.complex, ptr %1716, i64 %1717
  %1719 = load ptr, ptr %18, align 8, !tbaa !5
  %1720 = load ptr, ptr %22, align 8, !tbaa !5
  %1721 = load i64, ptr %51, align 8, !tbaa !9
  %1722 = load i64, ptr %30, align 8, !tbaa !9
  %1723 = add nsw i64 %1721, %1722
  %1724 = getelementptr inbounds %struct.complex, ptr %1720, i64 %1723
  %1725 = load ptr, ptr %23, align 8, !tbaa !5
  %1726 = call i32 @f2c_ccopy(ptr noundef %1715, ptr noundef %1718, ptr noundef %1719, ptr noundef %1724, ptr noundef %1725)
  br label %2006

1727:                                             ; preds = %1695
  %1728 = load i64, ptr %76, align 8, !tbaa !9
  %1729 = load ptr, ptr %17, align 8, !tbaa !5
  %1730 = load i64, ptr %1729, align 8, !tbaa !9
  %1731 = icmp sle i64 %1728, %1730
  br i1 %1731, label %1732, label %1912

1732:                                             ; preds = %1727
  %1733 = load i64, ptr %67, align 8, !tbaa !9
  %1734 = load ptr, ptr %18, align 8, !tbaa !5
  %1735 = load i64, ptr %1734, align 8, !tbaa !9
  %1736 = sub nsw i64 %1733, %1735
  %1737 = sub nsw i64 %1736, 1
  store i64 %1737, ptr %42, align 8, !tbaa !9
  %1738 = load i64, ptr %62, align 8, !tbaa !9
  %1739 = sub nsw i64 %1738, 1
  store i64 %1739, ptr %71, align 8, !tbaa !9
  %1740 = load ptr, ptr %19, align 8, !tbaa !5
  %1741 = load i64, ptr %1740, align 8, !tbaa !9
  store i64 %1741, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %1742

1742:                                             ; preds = %1774, %1732
  %1743 = load i64, ptr %61, align 8, !tbaa !9
  %1744 = load i64, ptr %33, align 8, !tbaa !9
  %1745 = icmp sle i64 %1743, %1744
  br i1 %1745, label %1746, label %1777

1746:                                             ; preds = %1742
  %1747 = load ptr, ptr %18, align 8, !tbaa !5
  %1748 = load i64, ptr %1747, align 8, !tbaa !9
  %1749 = load i64, ptr %42, align 8, !tbaa !9
  %1750 = add nsw i64 %1749, %1748
  store i64 %1750, ptr %42, align 8, !tbaa !9
  %1751 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %1751, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %1752

1752:                                             ; preds = %1770, %1746
  %1753 = load i64, ptr %68, align 8, !tbaa !9
  %1754 = load i64, ptr %34, align 8, !tbaa !9
  %1755 = icmp sle i64 %1753, %1754
  br i1 %1755, label %1756, label %1773

1756:                                             ; preds = %1752
  %1757 = load i64, ptr %71, align 8, !tbaa !9
  %1758 = add nsw i64 %1757, 1
  store i64 %1758, ptr %71, align 8, !tbaa !9
  %1759 = load i64, ptr %42, align 8, !tbaa !9
  %1760 = load i64, ptr %68, align 8, !tbaa !9
  %1761 = add nsw i64 %1759, %1760
  store i64 %1761, ptr %35, align 8, !tbaa !9
  %1762 = load ptr, ptr %26, align 8, !tbaa !5
  %1763 = load i64, ptr %35, align 8, !tbaa !9
  %1764 = getelementptr inbounds %struct.complex, ptr %1762, i64 %1763
  %1765 = getelementptr inbounds %struct.complex, ptr %1764, i32 0, i32 0
  %1766 = load float, ptr %1765, align 4, !tbaa !18
  %1767 = load ptr, ptr %27, align 8, !tbaa !5
  %1768 = load i64, ptr %71, align 8, !tbaa !9
  %1769 = getelementptr inbounds float, ptr %1767, i64 %1768
  store float %1766, ptr %1769, align 4, !tbaa !11
  br label %1770

1770:                                             ; preds = %1756
  %1771 = load i64, ptr %68, align 8, !tbaa !9
  %1772 = add nsw i64 %1771, 1
  store i64 %1772, ptr %68, align 8, !tbaa !9
  br label %1752, !llvm.loop !43

1773:                                             ; preds = %1752
  br label %1774

1774:                                             ; preds = %1773
  %1775 = load i64, ptr %61, align 8, !tbaa !9
  %1776 = add nsw i64 %1775, 1
  store i64 %1776, ptr %61, align 8, !tbaa !9
  br label %1742, !llvm.loop !44

1777:                                             ; preds = %1742
  %1778 = load ptr, ptr %19, align 8, !tbaa !5
  %1779 = load ptr, ptr %27, align 8, !tbaa !5
  %1780 = load i64, ptr %52, align 8, !tbaa !9
  %1781 = load i64, ptr %54, align 8, !tbaa !9
  %1782 = add nsw i64 %1780, %1781
  %1783 = getelementptr inbounds float, ptr %1779, i64 %1782
  %1784 = load ptr, ptr %18, align 8, !tbaa !5
  %1785 = load ptr, ptr %27, align 8, !tbaa !5
  %1786 = load i64, ptr %62, align 8, !tbaa !9
  %1787 = getelementptr inbounds float, ptr %1785, i64 %1786
  %1788 = load ptr, ptr %27, align 8, !tbaa !5
  %1789 = load i64, ptr %75, align 8, !tbaa !9
  %1790 = getelementptr inbounds float, ptr %1788, i64 %1789
  %1791 = call i32 @f2c_sgemm(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %76, ptr noundef %1778, ptr noundef %76, ptr noundef @c_b10, ptr noundef %1783, ptr noundef %1784, ptr noundef %1787, ptr noundef %76, ptr noundef @c_b35, ptr noundef %1790, ptr noundef %76)
  %1792 = load i64, ptr %67, align 8, !tbaa !9
  %1793 = load ptr, ptr %18, align 8, !tbaa !5
  %1794 = load i64, ptr %1793, align 8, !tbaa !9
  %1795 = sub nsw i64 %1792, %1794
  %1796 = sub nsw i64 %1795, 1
  store i64 %1796, ptr %42, align 8, !tbaa !9
  %1797 = load i64, ptr %62, align 8, !tbaa !9
  %1798 = sub nsw i64 %1797, 1
  store i64 %1798, ptr %70, align 8, !tbaa !9
  %1799 = load ptr, ptr %19, align 8, !tbaa !5
  %1800 = load i64, ptr %1799, align 8, !tbaa !9
  store i64 %1800, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %1801

1801:                                             ; preds = %1832, %1777
  %1802 = load i64, ptr %61, align 8, !tbaa !9
  %1803 = load i64, ptr %33, align 8, !tbaa !9
  %1804 = icmp sle i64 %1802, %1803
  br i1 %1804, label %1805, label %1835

1805:                                             ; preds = %1801
  %1806 = load ptr, ptr %18, align 8, !tbaa !5
  %1807 = load i64, ptr %1806, align 8, !tbaa !9
  %1808 = load i64, ptr %42, align 8, !tbaa !9
  %1809 = add nsw i64 %1808, %1807
  store i64 %1809, ptr %42, align 8, !tbaa !9
  %1810 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %1810, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %1811

1811:                                             ; preds = %1828, %1805
  %1812 = load i64, ptr %68, align 8, !tbaa !9
  %1813 = load i64, ptr %34, align 8, !tbaa !9
  %1814 = icmp sle i64 %1812, %1813
  br i1 %1814, label %1815, label %1831

1815:                                             ; preds = %1811
  %1816 = load i64, ptr %70, align 8, !tbaa !9
  %1817 = add nsw i64 %1816, 1
  store i64 %1817, ptr %70, align 8, !tbaa !9
  %1818 = load ptr, ptr %26, align 8, !tbaa !5
  %1819 = load i64, ptr %42, align 8, !tbaa !9
  %1820 = load i64, ptr %68, align 8, !tbaa !9
  %1821 = add nsw i64 %1819, %1820
  %1822 = getelementptr inbounds %struct.complex, ptr %1818, i64 %1821
  %1823 = call double @r_imag(ptr noundef %1822)
  %1824 = fptrunc double %1823 to float
  %1825 = load ptr, ptr %27, align 8, !tbaa !5
  %1826 = load i64, ptr %70, align 8, !tbaa !9
  %1827 = getelementptr inbounds float, ptr %1825, i64 %1826
  store float %1824, ptr %1827, align 4, !tbaa !11
  br label %1828

1828:                                             ; preds = %1815
  %1829 = load i64, ptr %68, align 8, !tbaa !9
  %1830 = add nsw i64 %1829, 1
  store i64 %1830, ptr %68, align 8, !tbaa !9
  br label %1811, !llvm.loop !45

1831:                                             ; preds = %1811
  br label %1832

1832:                                             ; preds = %1831
  %1833 = load i64, ptr %61, align 8, !tbaa !9
  %1834 = add nsw i64 %1833, 1
  store i64 %1834, ptr %61, align 8, !tbaa !9
  br label %1801, !llvm.loop !46

1835:                                             ; preds = %1801
  %1836 = load ptr, ptr %19, align 8, !tbaa !5
  %1837 = load ptr, ptr %27, align 8, !tbaa !5
  %1838 = load i64, ptr %52, align 8, !tbaa !9
  %1839 = load i64, ptr %54, align 8, !tbaa !9
  %1840 = add nsw i64 %1838, %1839
  %1841 = getelementptr inbounds float, ptr %1837, i64 %1840
  %1842 = load ptr, ptr %18, align 8, !tbaa !5
  %1843 = load ptr, ptr %27, align 8, !tbaa !5
  %1844 = load i64, ptr %62, align 8, !tbaa !9
  %1845 = getelementptr inbounds float, ptr %1843, i64 %1844
  %1846 = load ptr, ptr %27, align 8, !tbaa !5
  %1847 = load i64, ptr %72, align 8, !tbaa !9
  %1848 = getelementptr inbounds float, ptr %1846, i64 %1847
  %1849 = call i32 @f2c_sgemm(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %76, ptr noundef %1836, ptr noundef %76, ptr noundef @c_b10, ptr noundef %1841, ptr noundef %1842, ptr noundef %1845, ptr noundef %76, ptr noundef @c_b35, ptr noundef %1848, ptr noundef %76)
  %1850 = load i64, ptr %75, align 8, !tbaa !9
  %1851 = sub nsw i64 %1850, 1
  store i64 %1851, ptr %71, align 8, !tbaa !9
  %1852 = load i64, ptr %72, align 8, !tbaa !9
  %1853 = sub nsw i64 %1852, 1
  store i64 %1853, ptr %70, align 8, !tbaa !9
  %1854 = load ptr, ptr %19, align 8, !tbaa !5
  %1855 = load i64, ptr %1854, align 8, !tbaa !9
  store i64 %1855, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %1856

1856:                                             ; preds = %1908, %1835
  %1857 = load i64, ptr %61, align 8, !tbaa !9
  %1858 = load i64, ptr %33, align 8, !tbaa !9
  %1859 = icmp sle i64 %1857, %1858
  br i1 %1859, label %1860, label %1911

1860:                                             ; preds = %1856
  %1861 = load i64, ptr %51, align 8, !tbaa !9
  %1862 = load i64, ptr %76, align 8, !tbaa !9
  %1863 = add nsw i64 %1861, %1862
  %1864 = sub nsw i64 %1863, 1
  store i64 %1864, ptr %34, align 8, !tbaa !9
  %1865 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %1865, ptr %68, align 8, !tbaa !9
  br label %1866

1866:                                             ; preds = %1904, %1860
  %1867 = load i64, ptr %68, align 8, !tbaa !9
  %1868 = load i64, ptr %34, align 8, !tbaa !9
  %1869 = icmp sle i64 %1867, %1868
  br i1 %1869, label %1870, label %1907

1870:                                             ; preds = %1866
  %1871 = load i64, ptr %71, align 8, !tbaa !9
  %1872 = add nsw i64 %1871, 1
  store i64 %1872, ptr %71, align 8, !tbaa !9
  %1873 = load i64, ptr %70, align 8, !tbaa !9
  %1874 = add nsw i64 %1873, 1
  store i64 %1874, ptr %70, align 8, !tbaa !9
  %1875 = load i64, ptr %68, align 8, !tbaa !9
  %1876 = load i64, ptr %61, align 8, !tbaa !9
  %1877 = load i64, ptr %30, align 8, !tbaa !9
  %1878 = mul nsw i64 %1876, %1877
  %1879 = add nsw i64 %1875, %1878
  store i64 %1879, ptr %35, align 8, !tbaa !9
  %1880 = load i64, ptr %71, align 8, !tbaa !9
  store i64 %1880, ptr %36, align 8, !tbaa !9
  %1881 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %1881, ptr %37, align 8, !tbaa !9
  %1882 = load ptr, ptr %27, align 8, !tbaa !5
  %1883 = load i64, ptr %36, align 8, !tbaa !9
  %1884 = getelementptr inbounds float, ptr %1882, i64 %1883
  %1885 = load float, ptr %1884, align 4, !tbaa !11
  %1886 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  store float %1885, ptr %1886, align 4, !tbaa !18
  %1887 = load ptr, ptr %27, align 8, !tbaa !5
  %1888 = load i64, ptr %37, align 8, !tbaa !9
  %1889 = getelementptr inbounds float, ptr %1887, i64 %1888
  %1890 = load float, ptr %1889, align 4, !tbaa !11
  %1891 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  store float %1890, ptr %1891, align 4, !tbaa !24
  %1892 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  %1893 = load float, ptr %1892, align 4, !tbaa !18
  %1894 = load ptr, ptr %22, align 8, !tbaa !5
  %1895 = load i64, ptr %35, align 8, !tbaa !9
  %1896 = getelementptr inbounds %struct.complex, ptr %1894, i64 %1895
  %1897 = getelementptr inbounds %struct.complex, ptr %1896, i32 0, i32 0
  store float %1893, ptr %1897, align 4, !tbaa !18
  %1898 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  %1899 = load float, ptr %1898, align 4, !tbaa !24
  %1900 = load ptr, ptr %22, align 8, !tbaa !5
  %1901 = load i64, ptr %35, align 8, !tbaa !9
  %1902 = getelementptr inbounds %struct.complex, ptr %1900, i64 %1901
  %1903 = getelementptr inbounds %struct.complex, ptr %1902, i32 0, i32 1
  store float %1899, ptr %1903, align 4, !tbaa !24
  br label %1904

1904:                                             ; preds = %1870
  %1905 = load i64, ptr %68, align 8, !tbaa !9
  %1906 = add nsw i64 %1905, 1
  store i64 %1906, ptr %68, align 8, !tbaa !9
  br label %1866, !llvm.loop !47

1907:                                             ; preds = %1866
  br label %1908

1908:                                             ; preds = %1907
  %1909 = load i64, ptr %61, align 8, !tbaa !9
  %1910 = add nsw i64 %1909, 1
  store i64 %1910, ptr %61, align 8, !tbaa !9
  br label %1856, !llvm.loop !48

1911:                                             ; preds = %1856
  br label %2005

1912:                                             ; preds = %1727
  %1913 = load ptr, ptr %17, align 8, !tbaa !5
  %1914 = load ptr, ptr %19, align 8, !tbaa !5
  %1915 = load ptr, ptr %26, align 8, !tbaa !5
  %1916 = load i64, ptr %67, align 8, !tbaa !9
  %1917 = getelementptr inbounds %struct.complex, ptr %1915, i64 %1916
  %1918 = load ptr, ptr %18, align 8, !tbaa !5
  %1919 = load ptr, ptr %22, align 8, !tbaa !5
  %1920 = load i64, ptr %51, align 8, !tbaa !9
  %1921 = load i64, ptr %30, align 8, !tbaa !9
  %1922 = add nsw i64 %1920, %1921
  %1923 = getelementptr inbounds %struct.complex, ptr %1919, i64 %1922
  %1924 = load ptr, ptr %23, align 8, !tbaa !5
  %1925 = load ptr, ptr %27, align 8, !tbaa !5
  %1926 = load i64, ptr %46, align 8, !tbaa !9
  %1927 = load i64, ptr %54, align 8, !tbaa !9
  %1928 = add nsw i64 %1926, %1927
  %1929 = getelementptr inbounds float, ptr %1925, i64 %1928
  %1930 = load ptr, ptr %18, align 8, !tbaa !5
  %1931 = load ptr, ptr %27, align 8, !tbaa !5
  %1932 = load i64, ptr %52, align 8, !tbaa !9
  %1933 = load i64, ptr %54, align 8, !tbaa !9
  %1934 = add nsw i64 %1932, %1933
  %1935 = getelementptr inbounds float, ptr %1931, i64 %1934
  %1936 = load ptr, ptr %28, align 8, !tbaa !5
  %1937 = load i64, ptr %43, align 8, !tbaa !9
  %1938 = load i64, ptr %54, align 8, !tbaa !9
  %1939 = add nsw i64 %1937, %1938
  %1940 = getelementptr inbounds i64, ptr %1936, i64 %1939
  %1941 = load ptr, ptr %27, align 8, !tbaa !5
  %1942 = load i64, ptr %58, align 8, !tbaa !9
  %1943 = load i64, ptr %54, align 8, !tbaa !9
  %1944 = add nsw i64 %1942, %1943
  %1945 = getelementptr inbounds float, ptr %1941, i64 %1944
  %1946 = load ptr, ptr %27, align 8, !tbaa !5
  %1947 = load i64, ptr %59, align 8, !tbaa !9
  %1948 = load i64, ptr %54, align 8, !tbaa !9
  %1949 = add nsw i64 %1947, %1948
  %1950 = getelementptr inbounds float, ptr %1946, i64 %1949
  %1951 = load ptr, ptr %27, align 8, !tbaa !5
  %1952 = load i64, ptr %47, align 8, !tbaa !9
  %1953 = load i64, ptr %54, align 8, !tbaa !9
  %1954 = add nsw i64 %1952, %1953
  %1955 = getelementptr inbounds float, ptr %1951, i64 %1954
  %1956 = load ptr, ptr %27, align 8, !tbaa !5
  %1957 = load i64, ptr %73, align 8, !tbaa !9
  %1958 = load i64, ptr %54, align 8, !tbaa !9
  %1959 = add nsw i64 %1957, %1958
  %1960 = getelementptr inbounds float, ptr %1956, i64 %1959
  %1961 = load ptr, ptr %28, align 8, !tbaa !5
  %1962 = load i64, ptr %83, align 8, !tbaa !9
  %1963 = load i64, ptr %54, align 8, !tbaa !9
  %1964 = add nsw i64 %1962, %1963
  %1965 = getelementptr inbounds i64, ptr %1961, i64 %1964
  %1966 = load ptr, ptr %28, align 8, !tbaa !5
  %1967 = load i64, ptr %80, align 8, !tbaa !9
  %1968 = load i64, ptr %54, align 8, !tbaa !9
  %1969 = add nsw i64 %1967, %1968
  %1970 = getelementptr inbounds i64, ptr %1966, i64 %1969
  %1971 = load ptr, ptr %18, align 8, !tbaa !5
  %1972 = load ptr, ptr %28, align 8, !tbaa !5
  %1973 = load i64, ptr %63, align 8, !tbaa !9
  %1974 = load i64, ptr %54, align 8, !tbaa !9
  %1975 = add nsw i64 %1973, %1974
  %1976 = getelementptr inbounds i64, ptr %1972, i64 %1975
  %1977 = load ptr, ptr %27, align 8, !tbaa !5
  %1978 = load i64, ptr %82, align 8, !tbaa !9
  %1979 = load i64, ptr %54, align 8, !tbaa !9
  %1980 = add nsw i64 %1978, %1979
  %1981 = getelementptr inbounds float, ptr %1977, i64 %1980
  %1982 = load ptr, ptr %27, align 8, !tbaa !5
  %1983 = load i64, ptr %40, align 8, !tbaa !9
  %1984 = load i64, ptr %54, align 8, !tbaa !9
  %1985 = add nsw i64 %1983, %1984
  %1986 = getelementptr inbounds float, ptr %1982, i64 %1985
  %1987 = load ptr, ptr %27, align 8, !tbaa !5
  %1988 = load i64, ptr %45, align 8, !tbaa !9
  %1989 = load i64, ptr %54, align 8, !tbaa !9
  %1990 = add nsw i64 %1988, %1989
  %1991 = getelementptr inbounds float, ptr %1987, i64 %1990
  %1992 = load ptr, ptr %27, align 8, !tbaa !5
  %1993 = load i64, ptr %84, align 8, !tbaa !9
  %1994 = getelementptr inbounds float, ptr %1992, i64 %1993
  %1995 = load ptr, ptr %28, align 8, !tbaa !5
  %1996 = load i64, ptr %56, align 8, !tbaa !9
  %1997 = getelementptr inbounds i64, ptr %1995, i64 %1996
  %1998 = load ptr, ptr %29, align 8, !tbaa !5
  %1999 = call i32 @clalsa_(ptr noundef %79, ptr noundef %1913, ptr noundef %76, ptr noundef %1914, ptr noundef %1917, ptr noundef %1918, ptr noundef %1923, ptr noundef %1924, ptr noundef %1929, ptr noundef %1930, ptr noundef %1935, ptr noundef %1940, ptr noundef %1945, ptr noundef %1950, ptr noundef %1955, ptr noundef %1960, ptr noundef %1965, ptr noundef %1970, ptr noundef %1971, ptr noundef %1976, ptr noundef %1981, ptr noundef %1986, ptr noundef %1991, ptr noundef %1994, ptr noundef %1997, ptr noundef %1998)
  %2000 = load ptr, ptr %29, align 8, !tbaa !5
  %2001 = load i64, ptr %2000, align 8, !tbaa !9
  %2002 = icmp ne i64 %2001, 0
  br i1 %2002, label %2003, label %2004

2003:                                             ; preds = %1912
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2030

2004:                                             ; preds = %1912
  br label %2005

2005:                                             ; preds = %2004, %1911
  br label %2006

2006:                                             ; preds = %2005, %1714
  br label %2007

2007:                                             ; preds = %2006
  %2008 = load i64, ptr %41, align 8, !tbaa !9
  %2009 = add nsw i64 %2008, 1
  store i64 %2009, ptr %41, align 8, !tbaa !9
  br label %1691, !llvm.loop !49

2010:                                             ; preds = %1691
  %2011 = load ptr, ptr %18, align 8, !tbaa !5
  %2012 = load ptr, ptr %20, align 8, !tbaa !5
  %2013 = getelementptr inbounds float, ptr %2012, i64 1
  %2014 = load ptr, ptr %18, align 8, !tbaa !5
  %2015 = load ptr, ptr %29, align 8, !tbaa !5
  %2016 = call i32 @slascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b10, ptr noundef %81, ptr noundef %2011, ptr noundef @c__1, ptr noundef %2013, ptr noundef %2014, ptr noundef %2015)
  %2017 = load ptr, ptr %18, align 8, !tbaa !5
  %2018 = load ptr, ptr %20, align 8, !tbaa !5
  %2019 = getelementptr inbounds float, ptr %2018, i64 1
  %2020 = load ptr, ptr %29, align 8, !tbaa !5
  %2021 = call i32 @slasrt_(ptr noundef @.str.8, ptr noundef %2017, ptr noundef %2019, ptr noundef %2020)
  %2022 = load ptr, ptr %18, align 8, !tbaa !5
  %2023 = load ptr, ptr %19, align 8, !tbaa !5
  %2024 = load ptr, ptr %22, align 8, !tbaa !5
  %2025 = load i64, ptr %31, align 8, !tbaa !9
  %2026 = getelementptr inbounds %struct.complex, ptr %2024, i64 %2025
  %2027 = load ptr, ptr %23, align 8, !tbaa !5
  %2028 = load ptr, ptr %29, align 8, !tbaa !5
  %2029 = call i32 @clascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %81, ptr noundef @c_b10, ptr noundef %2022, ptr noundef %2023, ptr noundef %2026, ptr noundef %2027, ptr noundef %2028)
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2030

2030:                                             ; preds = %2010, %2003, %1584, %1489, %1214, %852, %451, %357, %208, %161, %136
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  %2031 = load i32, ptr %15, align 4
  ret i32 %2031
}

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

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

declare double @slamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

declare double @r_imag(ptr noundef) #2

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

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

; Function Attrs: nounwind
declare double @log(double noundef) #3

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

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

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

declare i32 @slasda_(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, ptr noundef, ptr noundef) #2

declare i32 @clalsa_(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, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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 = !{!"float", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = !{!19, !12, i64 0}
!19 = !{!"", !12, i64 0, !12, i64 4}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = !{!19, !12, i64 4}
!25 = distinct !{!25, !15}
!26 = distinct !{!26, !15}
!27 = distinct !{!27, !15}
!28 = distinct !{!28, !15}
!29 = distinct !{!29, !15}
!30 = distinct !{!30, !15}
!31 = distinct !{!31, !15}
!32 = distinct !{!32, !15}
!33 = distinct !{!33, !15}
!34 = distinct !{!34, !15}
!35 = distinct !{!35, !15}
!36 = distinct !{!36, !15}
!37 = distinct !{!37, !15}
!38 = distinct !{!38, !15}
!39 = distinct !{!39, !15}
!40 = distinct !{!40, !15}
!41 = distinct !{!41, !15}
!42 = distinct !{!42, !15}
!43 = distinct !{!43, !15}
!44 = distinct !{!44, !15}
!45 = distinct !{!45, !15}
!46 = distinct !{!46, !15}
!47 = distinct !{!47, !15}
!48 = distinct !{!48, !15}
!49 = distinct !{!49, !15}


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

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b1 = external hidden global %struct.complex, align 4
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@c_b10 = external hidden global float, align 4
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b35 = external hidden global float, align 4
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1

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

36:                                               ; preds = %14
  %37 = load i64, ptr %3, align 8, !tbaa !5
  %38 = icmp slt i64 %37, 1
  br i1 %38, label %.thread, label %39

39:                                               ; preds = %36
  %40 = load i64, ptr %7, align 8, !tbaa !5
  %41 = icmp slt i64 %40, 1
  %42 = icmp slt i64 %40, %34
  %or.cond = or i1 %41, %42
  br i1 %or.cond, label %.thread, label %44

.thread:                                          ; preds = %39, %36, %14
  %.sink = phi i64 [ -3, %14 ], [ -4, %36 ], [ -8, %39 ]
  %.neg = phi i64 [ 3, %14 ], [ 4, %36 ], [ 8, %39 ]
  store i64 %.sink, ptr %13, align 8, !tbaa !5
  store i64 %.neg, ptr %15, align 8, !tbaa !5
  %43 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %15) #5
  br label %.loopexit1021

44:                                               ; preds = %39
  %45 = tail call double @slamch_(ptr noundef nonnull @.str.1) #5
  %46 = fptrunc double %45 to float
  store float %46, ptr %20, align 4, !tbaa !9
  %47 = load float, ptr %8, align 4, !tbaa !9
  %48 = fcmp ugt float %47, 0.000000e+00
  %49 = fcmp ult float %47, 1.000000e+00
  %or.cond1016 = and i1 %48, %49
  %.0938 = select i1 %or.cond1016, float %47, float %46
  store i64 0, ptr %9, align 8, !tbaa !5
  %50 = load i64, ptr %2, align 8, !tbaa !5
  switch i64 %50, label %62 [
    i64 0, label %.loopexit1021
    i64 1, label %51
  ]

51:                                               ; preds = %44
  %52 = load float, ptr %4, align 4, !tbaa !9
  %53 = fcmp oeq float %52, 0.000000e+00
  br i1 %53, label %54, label %56

54:                                               ; preds = %51
  %55 = tail call i32 @claset_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %6, ptr noundef nonnull %7) #5
  br label %.loopexit1021

56:                                               ; preds = %51
  store i64 1, ptr %9, align 8, !tbaa !5
  %57 = tail call i32 @clascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %4, ptr noundef nonnull @c_b10, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %13) #5
  %58 = load float, ptr %4, align 4, !tbaa !9
  %59 = fcmp ult float %58, 0.000000e+00
  %60 = fneg float %58
  %61 = select i1 %59, float %60, float %58
  store float %61, ptr %4, align 4, !tbaa !9
  br label %.loopexit1021

62:                                               ; preds = %44
  %63 = load i8, ptr %0, align 1, !tbaa !11
  %64 = icmp eq i8 %63, 76
  br i1 %64, label %65, label %.loopexit1023

65:                                               ; preds = %62
  %66 = add nsw i64 %50, -1
  %invariant.gep = getelementptr i8, ptr %6, i64 -8
  %.not9721025 = icmp slt i64 %50, 2
  br i1 %.not9721025, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %65, %87
  %.09391026 = phi i64 [ %72, %87 ], [ 1, %65 ]
  %67 = getelementptr inbounds float, ptr %26, i64 %.09391026
  %68 = getelementptr inbounds float, ptr %27, i64 %.09391026
  %69 = call i32 @slartg_(ptr noundef nonnull %67, ptr noundef nonnull %68, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %16) #5
  %70 = load float, ptr %16, align 4, !tbaa !9
  store float %70, ptr %67, align 4, !tbaa !9
  %71 = load float, ptr %18, align 4, !tbaa !9
  %72 = add nuw nsw i64 %.09391026, 1
  %73 = getelementptr float, ptr %4, i64 %.09391026
  %74 = load float, ptr %73, align 4, !tbaa !9
  %75 = fmul float %71, %74
  store float %75, ptr %68, align 4, !tbaa !9
  %76 = load float, ptr %17, align 4, !tbaa !9
  %77 = load float, ptr %73, align 4, !tbaa !9
  %78 = fmul float %76, %77
  store float %78, ptr %73, align 4, !tbaa !9
  %79 = load i64, ptr %3, align 8, !tbaa !5
  %80 = icmp eq i64 %79, 1
  br i1 %80, label %81, label %84

81:                                               ; preds = %.lr.ph
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.09391026
  %82 = getelementptr inbounds %struct.complex, ptr %6, i64 %.09391026
  %83 = call i32 @f2c_csrot(ptr noundef nonnull @c__1, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef nonnull %82, ptr noundef nonnull @c__1, ptr noundef nonnull %17, ptr noundef nonnull %18) #5
  br label %87

84:                                               ; preds = %.lr.ph
  %.idx1014 = shl i64 %.09391026, 3
  %85 = getelementptr i8, ptr %32, i64 %.idx1014
  %86 = getelementptr i8, ptr %85, i64 -4
  store float %76, ptr %86, align 4, !tbaa !9
  store float %71, ptr %85, align 4, !tbaa !9
  br label %87

87:                                               ; preds = %81, %84
  %.not972.not = icmp slt i64 %.09391026, %66
  br i1 %.not972.not, label %.lr.ph, label %._crit_edge, !llvm.loop !12

._crit_edge:                                      ; preds = %87, %65
  %88 = load i64, ptr %3, align 8, !tbaa !5
  %89 = icmp sgt i64 %88, 1
  br i1 %89, label %.lr.ph1039, label %.loopexit1023

.lr.ph1039:                                       ; preds = %._crit_edge
  store i64 %88, ptr %15, align 8, !tbaa !5
  %90 = load i64, ptr %2, align 8, !tbaa !5
  %91 = icmp sgt i64 %90, 1
  br i1 %91, label %.lr.ph1039.split, label %.loopexit1023

.lr.ph1039.splitthread-pre-split:                 ; preds = %._crit_edge1031
  %92 = add nuw nsw i64 %.19401037, 1
  %.pr = load i64, ptr %2, align 8, !tbaa !5
  br label %.lr.ph1039.split

.lr.ph1039.split:                                 ; preds = %.lr.ph1039, %.lr.ph1039.splitthread-pre-split
  %93 = phi i64 [ %.pr, %.lr.ph1039.splitthread-pre-split ], [ %90, %.lr.ph1039 ]
  %.19401037 = phi i64 [ %92, %.lr.ph1039.splitthread-pre-split ], [ 1, %.lr.ph1039 ]
  %.not1012.not1027 = icmp sgt i64 %93, 1
  br i1 %.not1012.not1027, label %.lr.ph1030, label %._crit_edge1031

.lr.ph1030:                                       ; preds = %.lr.ph1039.split
  %94 = mul nsw i64 %.19401037, %28
  %invariant.gep1032 = getelementptr %struct.complex, ptr %30, i64 %94
  br label %95

95:                                               ; preds = %.lr.ph1030, %95
  %.09481028 = phi i64 [ 1, %.lr.ph1030 ], [ %100, %95 ]
  %.idx = shl i64 %.09481028, 3
  %96 = getelementptr i8, ptr %32, i64 %.idx
  %97 = getelementptr i8, ptr %96, i64 -4
  %98 = load float, ptr %97, align 4, !tbaa !9
  store float %98, ptr %17, align 4, !tbaa !9
  %99 = load float, ptr %96, align 4, !tbaa !9
  store float %99, ptr %18, align 4, !tbaa !9
  %gep1033 = getelementptr %struct.complex, ptr %invariant.gep1032, i64 %.09481028
  %100 = add nuw nsw i64 %.09481028, 1
  %gep1035 = getelementptr %struct.complex, ptr %invariant.gep1032, i64 %100
  %101 = call i32 @f2c_csrot(ptr noundef nonnull @c__1, ptr noundef %gep1033, ptr noundef nonnull @c__1, ptr noundef %gep1035, ptr noundef nonnull @c__1, ptr noundef nonnull %17, ptr noundef nonnull %18) #5
  %exitcond.not = icmp eq i64 %100, %93
  br i1 %exitcond.not, label %._crit_edge1031, label %95, !llvm.loop !14

._crit_edge1031:                                  ; preds = %95, %.lr.ph1039.split
  %.not973.not = icmp slt i64 %.19401037, %88
  br i1 %.not973.not, label %.lr.ph1039.splitthread-pre-split, label %.loopexit1023, !llvm.loop !15

.loopexit1023:                                    ; preds = %._crit_edge1031, %.lr.ph1039, %._crit_edge, %62
  %102 = load i64, ptr %2, align 8, !tbaa !5
  %103 = add nsw i64 %102, -1
  store i64 %103, ptr %19, align 8, !tbaa !5
  %104 = call double @slanst_(ptr noundef nonnull @.str.4, ptr noundef nonnull %2, ptr noundef %4, ptr noundef %5) #5
  %105 = fptrunc double %104 to float
  store float %105, ptr %25, align 4, !tbaa !9
  %106 = fcmp oeq float %105, 0.000000e+00
  br i1 %106, label %107, label %109

107:                                              ; preds = %.loopexit1023
  %108 = call i32 @claset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %6, ptr noundef nonnull %7) #5
  br label %.loopexit1021

109:                                              ; preds = %.loopexit1023
  %110 = call i32 @slascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %25, ptr noundef nonnull @c_b10, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %2, ptr noundef nonnull %13) #5
  %111 = call i32 @slascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %25, ptr noundef nonnull @c_b10, ptr noundef nonnull %19, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull %19, ptr noundef nonnull %13) #5
  %112 = load i64, ptr %2, align 8, !tbaa !5
  %113 = load i64, ptr %1, align 8, !tbaa !5
  %.not974 = icmp sgt i64 %112, %113
  br i1 %.not974, label %408, label %114

114:                                              ; preds = %109
  %115 = mul nsw i64 %112, %112
  %reass.add997 = shl nuw i64 %115, 1
  %116 = or disjoint i64 %reass.add997, 1
  %117 = load i64, ptr %3, align 8, !tbaa !5
  %118 = mul nsw i64 %117, %112
  %119 = add nsw i64 %118, %116
  %120 = add nsw i64 %119, %118
  %121 = call i32 @slaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b35, ptr noundef nonnull @c_b10, ptr noundef %11, ptr noundef nonnull %2) #5
  %122 = getelementptr float, ptr %11, i64 %115
  %123 = call i32 @slaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b35, ptr noundef nonnull @c_b10, ptr noundef %122, ptr noundef nonnull %2) #5
  %124 = getelementptr float, ptr %11, i64 %reass.add997
  %125 = call i32 @slasdq_(ptr noundef nonnull @.str.5, ptr noundef nonnull @c__0, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c__0, ptr noundef %4, ptr noundef %5, ptr noundef %122, ptr noundef nonnull %2, ptr noundef %11, ptr noundef nonnull %2, ptr noundef %124, ptr noundef nonnull @c__1, ptr noundef %124, ptr noundef nonnull %13) #5
  %126 = load i64, ptr %13, align 8, !tbaa !5
  %.not998 = icmp eq i64 %126, 0
  br i1 %.not998, label %127, label %.loopexit1021

127:                                              ; preds = %114
  %128 = add nsw i64 %120, -1
  %129 = load i64, ptr %3, align 8, !tbaa !5
  %.not9991048 = icmp slt i64 %129, 1
  br i1 %.not9991048, label %._crit_edge1053, label %.lr.ph1052

.lr.ph1052:                                       ; preds = %127
  %130 = load i64, ptr %2, align 8, !tbaa !5
  %.not10111040 = icmp slt i64 %130, 1
  br i1 %.not10111040, label %._crit_edge1053, label %.lr.ph1044.preheader

.lr.ph1044.preheader:                             ; preds = %.lr.ph1052
  %131 = shl i64 %130, 2
  %scevgep1354 = getelementptr i8, ptr %11, i64 %131
  %132 = add nuw i64 %129, 2305843009213693951
  %133 = mul i64 %28, %132
  %134 = add i64 %133, %130
  %135 = shl i64 %134, 3
  %136 = getelementptr i8, ptr %6, i64 %135
  %scevgep1356 = getelementptr i8, ptr %136, i64 -4
  %137 = add nuw i64 %130, 1
  %min.iters.check = icmp ult i64 %130, 8
  %.mask = and i64 %28, 1152921504606846976
  %stride.check = icmp ne i64 %.mask, 0
  %n.vec = and i64 %130, 9223372036854775800
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %130, %n.vec
  %invariant.gep1716 = getelementptr i8, ptr %11, i64 4
  %invariant.gep1720 = getelementptr i8, ptr %11, i64 8
  %invariant.gep1722 = getelementptr i8, ptr %11, i64 12
  br label %.lr.ph1044

.lr.ph1044:                                       ; preds = %.lr.ph1044.preheader, %._crit_edge1045
  %.09261050 = phi i64 [ %189, %._crit_edge1045 ], [ 1, %.lr.ph1044.preheader ]
  %.19491049 = phi i64 [ %.lcssa1353, %._crit_edge1045 ], [ %128, %.lr.ph1044.preheader ]
  %138 = mul nsw i64 %.09261050, %28
  %invariant.gep1046 = getelementptr %struct.complex, ptr %30, i64 %138
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph1044
  %139 = shl i64 %.19491049, 2
  %scevgep = getelementptr i8, ptr %11, i64 %139
  %scevgep1355 = getelementptr i8, ptr %scevgep1354, i64 %139
  %bound0 = icmp ult ptr %scevgep, %scevgep1356
  %bound1 = icmp ugt ptr %scevgep1355, %6
  %found.conflict = and i1 %bound0, %bound1
  %140 = or i1 %found.conflict, %stride.check
  br i1 %140, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %ind.end1357 = add i64 %.19491049, %n.vec
  %invariant.gep1712 = getelementptr i8, ptr %invariant.gep1046, i64 64
  %141 = getelementptr float, ptr %11, i64 %.19491049
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %142 = or disjoint i64 %index, 2
  %143 = or disjoint i64 %index, 3
  %144 = or disjoint i64 %index, 4
  %145 = or disjoint i64 %index, 5
  %146 = or disjoint i64 %index, 6
  %147 = or disjoint i64 %index, 7
  %148 = getelementptr %struct.complex, ptr %invariant.gep1046, i64 %offset.idx
  %149 = getelementptr %struct.complex, ptr %invariant.gep1046, i64 %142
  %150 = getelementptr %struct.complex, ptr %invariant.gep1046, i64 %143
  %151 = getelementptr %struct.complex, ptr %invariant.gep1046, i64 %144
  %152 = getelementptr %struct.complex, ptr %invariant.gep1046, i64 %145
  %153 = getelementptr %struct.complex, ptr %invariant.gep1046, i64 %146
  %154 = getelementptr %struct.complex, ptr %invariant.gep1046, i64 %147
  %gep1713 = getelementptr %struct.complex, ptr %invariant.gep1712, i64 %index
  %155 = load float, ptr %148, align 4, !tbaa !17, !alias.scope !19
  %156 = load float, ptr %149, align 4, !tbaa !17, !alias.scope !19
  %157 = load float, ptr %150, align 4, !tbaa !17, !alias.scope !19
  %158 = load float, ptr %151, align 4, !tbaa !17, !alias.scope !19
  %159 = insertelement <4 x float> poison, float %155, i64 0
  %160 = insertelement <4 x float> %159, float %156, i64 1
  %161 = insertelement <4 x float> %160, float %157, i64 2
  %162 = insertelement <4 x float> %161, float %158, i64 3
  %163 = load float, ptr %152, align 4, !tbaa !17, !alias.scope !19
  %164 = load float, ptr %153, align 4, !tbaa !17, !alias.scope !19
  %165 = load float, ptr %154, align 4, !tbaa !17, !alias.scope !19
  %166 = load float, ptr %gep1713, align 4, !tbaa !17, !alias.scope !19
  %167 = insertelement <4 x float> poison, float %163, i64 0
  %168 = insertelement <4 x float> %167, float %164, i64 1
  %169 = insertelement <4 x float> %168, float %165, i64 2
  %170 = insertelement <4 x float> %169, float %166, i64 3
  %171 = getelementptr float, ptr %141, i64 %index
  %172 = getelementptr i8, ptr %171, i64 16
  store <4 x float> %162, ptr %171, align 4, !tbaa !9, !alias.scope !22, !noalias !19
  store <4 x float> %170, ptr %172, align 4, !tbaa !9, !alias.scope !22, !noalias !19
  %index.next = add nuw i64 %index, 8
  %173 = icmp eq i64 %index.next, %n.vec
  br i1 %173, label %middle.block, label %vector.body, !llvm.loop !24

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge1045, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph1044
  %.09131042.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph1044 ], [ %ind.end, %middle.block ]
  %.29501041.ph = phi i64 [ %.19491049, %vector.memcheck ], [ %.19491049, %.lr.ph1044 ], [ %ind.end1357, %middle.block ]
  %174 = sub i64 %137, %.09131042.ph
  %175 = sub i64 %130, %.09131042.ph
  %xtraiter = and i64 %174, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.09131042.prol = phi i64 [ %179, %scalar.ph.prol ], [ %.09131042.ph, %scalar.ph.preheader ]
  %.29501041.prol = phi i64 [ %176, %scalar.ph.prol ], [ %.29501041.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %176 = add nsw i64 %.29501041.prol, 1
  %gep1047.prol = getelementptr %struct.complex, ptr %invariant.gep1046, i64 %.09131042.prol
  %177 = load float, ptr %gep1047.prol, align 4, !tbaa !17
  %178 = getelementptr float, ptr %11, i64 %.29501041.prol
  store float %177, ptr %178, align 4, !tbaa !9
  %179 = add nuw i64 %.09131042.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !27

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.lcssa1677.unr = phi i64 [ poison, %scalar.ph.preheader ], [ %176, %scalar.ph.prol ]
  %.09131042.unr = phi i64 [ %.09131042.ph, %scalar.ph.preheader ], [ %179, %scalar.ph.prol ]
  %.29501041.unr = phi i64 [ %.29501041.ph, %scalar.ph.preheader ], [ %176, %scalar.ph.prol ]
  %180 = icmp ult i64 %175, 3
  br i1 %180, label %._crit_edge1045, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %invariant.gep1714 = getelementptr i8, ptr %invariant.gep1046, i64 8
  %invariant.gep1718 = getelementptr i8, ptr %invariant.gep1046, i64 16
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %.09131042 = phi i64 [ %.09131042.unr, %scalar.ph.preheader.new ], [ %188, %scalar.ph ]
  %.29501041 = phi i64 [ %.29501041.unr, %scalar.ph.preheader.new ], [ %186, %scalar.ph ]
  %gep1047 = getelementptr %struct.complex, ptr %invariant.gep1046, i64 %.09131042
  %181 = load float, ptr %gep1047, align 4, !tbaa !17
  %182 = getelementptr float, ptr %11, i64 %.29501041
  store float %181, ptr %182, align 4, !tbaa !9
  %gep1715 = getelementptr %struct.complex, ptr %invariant.gep1714, i64 %.09131042
  %183 = load float, ptr %gep1715, align 4, !tbaa !17
  %gep1717 = getelementptr float, ptr %invariant.gep1716, i64 %.29501041
  store float %183, ptr %gep1717, align 4, !tbaa !9
  %gep1719 = getelementptr %struct.complex, ptr %invariant.gep1718, i64 %.09131042
  %184 = load float, ptr %gep1719, align 4, !tbaa !17
  %gep1721 = getelementptr float, ptr %invariant.gep1720, i64 %.29501041
  store float %184, ptr %gep1721, align 4, !tbaa !9
  %185 = add nuw i64 %.09131042, 3
  %186 = add nsw i64 %.29501041, 4
  %gep1047.3 = getelementptr %struct.complex, ptr %invariant.gep1046, i64 %185
  %187 = load float, ptr %gep1047.3, align 4, !tbaa !17
  %gep1723 = getelementptr float, ptr %invariant.gep1722, i64 %.29501041
  store float %187, ptr %gep1723, align 4, !tbaa !9
  %188 = add nuw i64 %.09131042, 4
  %exitcond1299.not.3 = icmp eq i64 %185, %130
  br i1 %exitcond1299.not.3, label %._crit_edge1045, label %scalar.ph, !llvm.loop !29

._crit_edge1045:                                  ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %.lcssa1353 = phi i64 [ %ind.end1357, %middle.block ], [ %.lcssa1677.unr, %scalar.ph.prol.loopexit ], [ %186, %scalar.ph ]
  %189 = add nuw i64 %.09261050, 1
  %exitcond1300.not = icmp eq i64 %.09261050, %129
  br i1 %exitcond1300.not, label %._crit_edge1053, label %.lr.ph1044, !llvm.loop !30

._crit_edge1053:                                  ; preds = %._crit_edge1045, %.lr.ph1052, %127
  %190 = getelementptr inbounds float, ptr %32, i64 %120
  %191 = call i32 @f2c_sgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %2, ptr noundef nonnull @c_b10, ptr noundef %11, ptr noundef nonnull %2, ptr noundef nonnull %190, ptr noundef nonnull %2, ptr noundef nonnull @c_b35, ptr noundef %124, ptr noundef nonnull %2) #5
  %192 = load i64, ptr %3, align 8, !tbaa !5
  %.not10001063 = icmp slt i64 %192, 1
  br i1 %.not10001063, label %._crit_edge1068, label %.lr.ph1067

.lr.ph1067:                                       ; preds = %._crit_edge1053
  %193 = load i64, ptr %2, align 8, !tbaa !5
  %194 = icmp slt i64 %193, 1
  br i1 %194, label %._crit_edge1068, label %.lr.ph1067.split

.lr.ph1067.splitthread-pre-split:                 ; preds = %._crit_edge1059
  %195 = add nuw nsw i64 %.19271065, 1
  %.pr1318 = load i64, ptr %2, align 8, !tbaa !5
  br label %.lr.ph1067.split

.lr.ph1067.split:                                 ; preds = %.lr.ph1067, %.lr.ph1067.splitthread-pre-split
  %196 = phi i64 [ %.pr1318, %.lr.ph1067.splitthread-pre-split ], [ %193, %.lr.ph1067 ]
  %.19271065 = phi i64 [ %195, %.lr.ph1067.splitthread-pre-split ], [ 1, %.lr.ph1067 ]
  %.39511064 = phi i64 [ %.4952.lcssa, %.lr.ph1067.splitthread-pre-split ], [ %128, %.lr.ph1067 ]
  %.not10101054 = icmp slt i64 %196, 1
  br i1 %.not10101054, label %._crit_edge1059, label %.lr.ph1058

.lr.ph1058:                                       ; preds = %.lr.ph1067.split
  %197 = mul nsw i64 %.19271065, %28
  %invariant.gep1061 = getelementptr %struct.complex, ptr %30, i64 %197
  br label %198

198:                                              ; preds = %.lr.ph1058, %198
  %.19141056 = phi i64 [ 1, %.lr.ph1058 ], [ %203, %198 ]
  %.49521055 = phi i64 [ %.39511064, %.lr.ph1058 ], [ %199, %198 ]
  %199 = add nsw i64 %.49521055, 1
  %gep1062 = getelementptr %struct.complex, ptr %invariant.gep1061, i64 %.19141056
  %200 = call double @r_imag(ptr noundef %gep1062) #5
  %201 = fptrunc double %200 to float
  %202 = getelementptr float, ptr %11, i64 %.49521055
  store float %201, ptr %202, align 4, !tbaa !9
  %203 = add nuw i64 %.19141056, 1
  %exitcond1301.not = icmp eq i64 %.19141056, %196
  br i1 %exitcond1301.not, label %._crit_edge1059, label %198, !llvm.loop !31

._crit_edge1059:                                  ; preds = %198, %.lr.ph1067.split
  %.4952.lcssa = phi i64 [ %.39511064, %.lr.ph1067.split ], [ %199, %198 ]
  %.not1000.not = icmp slt i64 %.19271065, %192
  br i1 %.not1000.not, label %.lr.ph1067.splitthread-pre-split, label %._crit_edge1068, !llvm.loop !32

._crit_edge1068:                                  ; preds = %._crit_edge1059, %.lr.ph1067, %._crit_edge1053
  %204 = getelementptr inbounds float, ptr %32, i64 %119
  %205 = call i32 @f2c_sgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %2, ptr noundef nonnull @c_b10, ptr noundef %11, ptr noundef nonnull %2, ptr noundef nonnull %190, ptr noundef nonnull %2, ptr noundef nonnull @c_b35, ptr noundef nonnull %204, ptr noundef nonnull %2) #5
  %206 = add nsw i64 %119, -1
  %207 = load i64, ptr %3, align 8, !tbaa !5
  %.not10011080 = icmp slt i64 %207, 1
  br i1 %.not10011080, label %._crit_edge1086, label %.lr.ph1085

.lr.ph1085:                                       ; preds = %._crit_edge1068
  %208 = load i64, ptr %2, align 8, !tbaa !5
  %.not10091069 = icmp slt i64 %208, 1
  br i1 %.not10091069, label %._crit_edge1086, label %.lr.ph1074.preheader

.lr.ph1074.preheader:                             ; preds = %.lr.ph1085
  %209 = add nsw i64 %208, -1
  %210 = shl i64 %28, 3
  %211 = add nuw i64 %207, 2305843009213693951
  %212 = mul i64 %28, %211
  %213 = add i64 %212, %208
  %214 = shl i64 %213, 3
  %scevgep1366 = getelementptr i8, ptr %6, i64 %214
  %215 = shl i64 %208, 2
  %scevgep1368 = getelementptr i8, ptr %11, i64 %215
  %scevgep1371 = getelementptr i8, ptr %11, i64 %215
  %min.iters.check1383 = icmp ult i64 %208, 22
  %mul.result = shl i64 %209, 3
  %mul.result1363 = shl i64 %209, 3
  %mul.overflow1364 = icmp ugt i64 %209, 2305843009213693951
  %.mask1657 = and i64 %28, 1152921504606846976
  %stride.check1380 = icmp ne i64 %.mask1657, 0
  %n.vec1386 = and i64 %208, 4611686018427387900
  %ind.end1391 = or disjoint i64 %n.vec1386, 1
  %cmp.n1403 = icmp eq i64 %208, %n.vec1386
  %xtraiter1678 = and i64 %208, 1
  %lcmp.mod1679.not = icmp eq i64 %xtraiter1678, 0
  %invariant.gep1724 = getelementptr i8, ptr %11, i64 4
  %invariant.gep1726 = getelementptr i8, ptr %11, i64 4
  br label %.lr.ph1074

.lr.ph1074:                                       ; preds = %.lr.ph1074.preheader, %._crit_edge1075
  %indvar = phi i64 [ 0, %.lr.ph1074.preheader ], [ %indvar.next, %._crit_edge1075 ]
  %.09021083 = phi i64 [ %reass.add997, %.lr.ph1074.preheader ], [ %.lcssa1351, %._crit_edge1075 ]
  %.09031082 = phi i64 [ %206, %.lr.ph1074.preheader ], [ %.lcssa1350, %._crit_edge1075 ]
  %.29281081 = phi i64 [ 1, %.lr.ph1074.preheader ], [ %259, %._crit_edge1075 ]
  %216 = mul nsw i64 %.29281081, %28
  %invariant.gep1078 = getelementptr %struct.complex, ptr %30, i64 %216
  br i1 %min.iters.check1383, label %scalar.ph1382.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph1074
  %217 = mul i64 %210, %indvar
  %218 = or disjoint i64 %217, 4
  %scevgep1361 = getelementptr i8, ptr %6, i64 %218
  %scevgep1360 = getelementptr i8, ptr %6, i64 %217
  %219 = getelementptr i8, ptr %scevgep1360, i64 %mul.result
  %220 = icmp ult ptr %219, %scevgep1360
  %221 = getelementptr i8, ptr %scevgep1361, i64 %mul.result1363
  %222 = icmp ult ptr %221, %scevgep1361
  %223 = or i1 %222, %mul.overflow1364
  %224 = or i1 %220, %223
  br i1 %224, label %scalar.ph1382.preheader, label %vector.memcheck1365

vector.memcheck1365:                              ; preds = %vector.scevcheck
  %225 = shl i64 %.09031082, 2
  %scevgep1367 = getelementptr i8, ptr %11, i64 %225
  %scevgep1369 = getelementptr i8, ptr %scevgep1368, i64 %225
  %226 = shl i64 %.09021083, 2
  %scevgep1370 = getelementptr i8, ptr %11, i64 %226
  %scevgep1372 = getelementptr i8, ptr %scevgep1371, i64 %226
  %bound01373 = icmp ugt ptr %scevgep1369, %6
  %bound11374 = icmp ult ptr %scevgep1367, %scevgep1366
  %found.conflict1375 = and i1 %bound01373, %bound11374
  %bound01377 = icmp ugt ptr %scevgep1372, %6
  %bound11378 = icmp ult ptr %scevgep1370, %scevgep1366
  %found.conflict1379 = and i1 %bound01377, %bound11378
  %227 = or i1 %found.conflict1379, %stride.check1380
  %conflict.rdx = or i1 %found.conflict1375, %227
  br i1 %conflict.rdx, label %scalar.ph1382.preheader, label %vector.ph1384

vector.ph1384:                                    ; preds = %vector.memcheck1365
  %ind.end1387 = add i64 %.09021083, %n.vec1386
  %ind.end1389 = add i64 %.09031082, %n.vec1386
  %228 = getelementptr float, ptr %11, i64 %.09021083
  %229 = getelementptr float, ptr %11, i64 %.09031082
  br label %vector.body1393

vector.body1393:                                  ; preds = %vector.body1393, %vector.ph1384
  %index1394 = phi i64 [ 0, %vector.ph1384 ], [ %index.next1402, %vector.body1393 ]
  %offset.idx1397 = or disjoint i64 %index1394, 1
  %230 = or disjoint i64 %index1394, 3
  %231 = getelementptr float, ptr %228, i64 %index1394
  %232 = getelementptr i8, ptr %231, i64 8
  %wide.load = load <2 x float>, ptr %231, align 4, !tbaa !9, !alias.scope !33
  %wide.load1398 = load <2 x float>, ptr %232, align 4, !tbaa !9, !alias.scope !33
  %233 = getelementptr float, ptr %229, i64 %index1394
  %234 = getelementptr i8, ptr %233, i64 8
  %wide.load1399 = load <2 x float>, ptr %233, align 4, !tbaa !9, !alias.scope !36
  %wide.load1400 = load <2 x float>, ptr %234, align 4, !tbaa !9, !alias.scope !36
  %235 = getelementptr %struct.complex, ptr %invariant.gep1078, i64 %offset.idx1397
  %236 = getelementptr %struct.complex, ptr %invariant.gep1078, i64 %230
  %interleaved.vec = shufflevector <2 x float> %wide.load, <2 x float> %wide.load1399, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec, ptr %235, align 4, !tbaa !9
  %interleaved.vec1401 = shufflevector <2 x float> %wide.load1398, <2 x float> %wide.load1400, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec1401, ptr %236, align 4, !tbaa !9
  %index.next1402 = add nuw i64 %index1394, 4
  %237 = icmp eq i64 %index.next1402, %n.vec1386
  br i1 %237, label %middle.block1381, label %vector.body1393, !llvm.loop !38

middle.block1381:                                 ; preds = %vector.body1393
  br i1 %cmp.n1403, label %._crit_edge1075, label %scalar.ph1382.preheader

scalar.ph1382.preheader:                          ; preds = %middle.block1381, %vector.memcheck1365, %vector.scevcheck, %.lr.ph1074
  %.11072.ph = phi i64 [ %.09021083, %vector.memcheck1365 ], [ %.09021083, %vector.scevcheck ], [ %.09021083, %.lr.ph1074 ], [ %ind.end1387, %middle.block1381 ]
  %.19041071.ph = phi i64 [ %.09031082, %vector.memcheck1365 ], [ %.09031082, %vector.scevcheck ], [ %.09031082, %.lr.ph1074 ], [ %ind.end1389, %middle.block1381 ]
  %.29151070.ph = phi i64 [ 1, %vector.memcheck1365 ], [ 1, %vector.scevcheck ], [ 1, %.lr.ph1074 ], [ %ind.end1391, %middle.block1381 ]
  br i1 %lcmp.mod1679.not, label %scalar.ph1382.prol.loopexit, label %scalar.ph1382.prol

scalar.ph1382.prol:                               ; preds = %scalar.ph1382.preheader
  %238 = add nsw i64 %.11072.ph, 1
  %239 = add nsw i64 %.19041071.ph, 1
  %240 = getelementptr float, ptr %11, i64 %.11072.ph
  %241 = load float, ptr %240, align 4, !tbaa !9
  %242 = getelementptr float, ptr %11, i64 %.19041071.ph
  %243 = load float, ptr %242, align 4, !tbaa !9
  %gep1079.prol = getelementptr %struct.complex, ptr %invariant.gep1078, i64 %.29151070.ph
  store float %241, ptr %gep1079.prol, align 4, !tbaa !17
  %244 = getelementptr inbounds i8, ptr %gep1079.prol, i64 4
  store float %243, ptr %244, align 4, !tbaa !39
  %245 = add nuw nsw i64 %.29151070.ph, 1
  br label %scalar.ph1382.prol.loopexit

scalar.ph1382.prol.loopexit:                      ; preds = %scalar.ph1382.prol, %scalar.ph1382.preheader
  %.lcssa1675.unr = phi i64 [ poison, %scalar.ph1382.preheader ], [ %238, %scalar.ph1382.prol ]
  %.lcssa1674.unr = phi i64 [ poison, %scalar.ph1382.preheader ], [ %239, %scalar.ph1382.prol ]
  %.11072.unr = phi i64 [ %.11072.ph, %scalar.ph1382.preheader ], [ %238, %scalar.ph1382.prol ]
  %.19041071.unr = phi i64 [ %.19041071.ph, %scalar.ph1382.preheader ], [ %239, %scalar.ph1382.prol ]
  %.29151070.unr = phi i64 [ %.29151070.ph, %scalar.ph1382.preheader ], [ %245, %scalar.ph1382.prol ]
  %246 = icmp eq i64 %208, %.29151070.ph
  br i1 %246, label %._crit_edge1075, label %scalar.ph1382

scalar.ph1382:                                    ; preds = %scalar.ph1382.prol.loopexit, %scalar.ph1382
  %.11072 = phi i64 [ %253, %scalar.ph1382 ], [ %.11072.unr, %scalar.ph1382.prol.loopexit ]
  %.19041071 = phi i64 [ %254, %scalar.ph1382 ], [ %.19041071.unr, %scalar.ph1382.prol.loopexit ]
  %.29151070 = phi i64 [ %258, %scalar.ph1382 ], [ %.29151070.unr, %scalar.ph1382.prol.loopexit ]
  %247 = getelementptr float, ptr %11, i64 %.11072
  %248 = load float, ptr %247, align 4, !tbaa !9
  %249 = getelementptr float, ptr %11, i64 %.19041071
  %250 = load float, ptr %249, align 4, !tbaa !9
  %gep1079 = getelementptr %struct.complex, ptr %invariant.gep1078, i64 %.29151070
  store float %248, ptr %gep1079, align 4, !tbaa !17
  %251 = getelementptr inbounds i8, ptr %gep1079, i64 4
  store float %250, ptr %251, align 4, !tbaa !39
  %252 = add nuw i64 %.29151070, 1
  %253 = add nsw i64 %.11072, 2
  %254 = add nsw i64 %.19041071, 2
  %gep1725 = getelementptr float, ptr %invariant.gep1724, i64 %.11072
  %255 = load float, ptr %gep1725, align 4, !tbaa !9
  %gep1727 = getelementptr float, ptr %invariant.gep1726, i64 %.19041071
  %256 = load float, ptr %gep1727, align 4, !tbaa !9
  %gep1079.1 = getelementptr %struct.complex, ptr %invariant.gep1078, i64 %252
  store float %255, ptr %gep1079.1, align 4, !tbaa !17
  %257 = getelementptr inbounds i8, ptr %gep1079.1, i64 4
  store float %256, ptr %257, align 4, !tbaa !39
  %258 = add nuw i64 %.29151070, 2
  %exitcond1302.not.1 = icmp eq i64 %252, %208
  br i1 %exitcond1302.not.1, label %._crit_edge1075, label %scalar.ph1382, !llvm.loop !40

._crit_edge1075:                                  ; preds = %scalar.ph1382.prol.loopexit, %scalar.ph1382, %middle.block1381
  %.lcssa1351 = phi i64 [ %ind.end1387, %middle.block1381 ], [ %.lcssa1675.unr, %scalar.ph1382.prol.loopexit ], [ %253, %scalar.ph1382 ]
  %.lcssa1350 = phi i64 [ %ind.end1389, %middle.block1381 ], [ %.lcssa1674.unr, %scalar.ph1382.prol.loopexit ], [ %254, %scalar.ph1382 ]
  %259 = add nuw i64 %.29281081, 1
  %exitcond1303.not = icmp eq i64 %.29281081, %207
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond1303.not, label %._crit_edge1086, label %.lr.ph1074, !llvm.loop !41

._crit_edge1086:                                  ; preds = %._crit_edge1075, %.lr.ph1085, %._crit_edge1068
  %260 = call i64 @f2c_isamax(ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull @c__1) #5
  %261 = getelementptr inbounds float, ptr %26, i64 %260
  %262 = load float, ptr %261, align 4, !tbaa !9
  %263 = fcmp oge float %262, 0.000000e+00
  %264 = fneg float %262
  %265 = select i1 %263, float %262, float %264
  %266 = fmul float %.0938, %265
  %267 = load i64, ptr %2, align 8, !tbaa !5
  %invariant.gep1087 = getelementptr i8, ptr %6, i64 -8
  %.not10021091 = icmp slt i64 %267, 1
  br i1 %.not10021091, label %._crit_edge1095, label %.lr.ph1094

.lr.ph1094:                                       ; preds = %._crit_edge1086, %277
  %.29411092 = phi i64 [ %278, %277 ], [ 1, %._crit_edge1086 ]
  %268 = getelementptr inbounds float, ptr %26, i64 %.29411092
  %269 = load float, ptr %268, align 4, !tbaa !9
  %270 = fcmp ugt float %269, %266
  %gep1090 = getelementptr %struct.complex, ptr %invariant.gep1087, i64 %.29411092
  br i1 %270, label %273, label %271

271:                                              ; preds = %.lr.ph1094
  %272 = call i32 @claset_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %gep1090, ptr noundef nonnull %7) #5
  br label %277

273:                                              ; preds = %.lr.ph1094
  %274 = call i32 @clascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %268, ptr noundef nonnull @c_b10, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef %gep1090, ptr noundef nonnull %7, ptr noundef nonnull %13) #5
  %275 = load i64, ptr %9, align 8, !tbaa !5
  %276 = add nsw i64 %275, 1
  store i64 %276, ptr %9, align 8, !tbaa !5
  br label %277

277:                                              ; preds = %271, %273
  %278 = add nuw nsw i64 %.29411092, 1
  %.not1002.not = icmp slt i64 %.29411092, %267
  br i1 %.not1002.not, label %.lr.ph1094, label %._crit_edge1095, !llvm.loop !42

._crit_edge1095:                                  ; preds = %277, %._crit_edge1086
  %279 = load i64, ptr %3, align 8, !tbaa !5
  %.not10031105 = icmp slt i64 %279, 1
  br i1 %.not10031105, label %._crit_edge1110, label %.lr.ph1109

.lr.ph1109:                                       ; preds = %._crit_edge1095
  %280 = load i64, ptr %2, align 8, !tbaa !5
  %.not10081096 = icmp slt i64 %280, 1
  br i1 %.not10081096, label %._crit_edge1110, label %.lr.ph1100.preheader

.lr.ph1100.preheader:                             ; preds = %.lr.ph1109
  %281 = shl i64 %280, 2
  %scevgep1406 = getelementptr i8, ptr %11, i64 %281
  %282 = add nuw i64 %279, 2305843009213693951
  %283 = mul i64 %28, %282
  %284 = add i64 %283, %280
  %285 = shl i64 %284, 3
  %286 = getelementptr i8, ptr %6, i64 %285
  %scevgep1408 = getelementptr i8, ptr %286, i64 -4
  %287 = add nuw i64 %280, 1
  %min.iters.check1415 = icmp ult i64 %280, 8
  %.mask1658 = and i64 %28, 1152921504606846976
  %stride.check1412 = icmp ne i64 %.mask1658, 0
  %n.vec1418 = and i64 %280, 9223372036854775800
  %ind.end1419 = or disjoint i64 %n.vec1418, 1
  %cmp.n1428 = icmp eq i64 %280, %n.vec1418
  %invariant.gep1732 = getelementptr i8, ptr %11, i64 4
  %invariant.gep1736 = getelementptr i8, ptr %11, i64 8
  %invariant.gep1738 = getelementptr i8, ptr %11, i64 12
  br label %.lr.ph1100

.lr.ph1100:                                       ; preds = %.lr.ph1100.preheader, %._crit_edge1101
  %.39291107 = phi i64 [ %339, %._crit_edge1101 ], [ 1, %.lr.ph1100.preheader ]
  %.59531106 = phi i64 [ %.lcssa1349, %._crit_edge1101 ], [ %128, %.lr.ph1100.preheader ]
  %288 = mul nsw i64 %.39291107, %28
  %invariant.gep1103 = getelementptr %struct.complex, ptr %30, i64 %288
  br i1 %min.iters.check1415, label %scalar.ph1414.preheader, label %vector.memcheck1404

vector.memcheck1404:                              ; preds = %.lr.ph1100
  %289 = shl i64 %.59531106, 2
  %scevgep1405 = getelementptr i8, ptr %11, i64 %289
  %scevgep1407 = getelementptr i8, ptr %scevgep1406, i64 %289
  %bound01409 = icmp ult ptr %scevgep1405, %scevgep1408
  %bound11410 = icmp ugt ptr %scevgep1407, %6
  %found.conflict1411 = and i1 %bound01409, %bound11410
  %290 = or i1 %found.conflict1411, %stride.check1412
  br i1 %290, label %scalar.ph1414.preheader, label %vector.ph1416

vector.ph1416:                                    ; preds = %vector.memcheck1404
  %ind.end1421 = add i64 %.59531106, %n.vec1418
  %invariant.gep1728 = getelementptr i8, ptr %invariant.gep1103, i64 64
  %291 = getelementptr float, ptr %11, i64 %.59531106
  br label %vector.body1423

vector.body1423:                                  ; preds = %vector.body1423, %vector.ph1416
  %index1424 = phi i64 [ 0, %vector.ph1416 ], [ %index.next1427, %vector.body1423 ]
  %offset.idx1425 = or disjoint i64 %index1424, 1
  %292 = or disjoint i64 %index1424, 2
  %293 = or disjoint i64 %index1424, 3
  %294 = or disjoint i64 %index1424, 4
  %295 = or disjoint i64 %index1424, 5
  %296 = or disjoint i64 %index1424, 6
  %297 = or disjoint i64 %index1424, 7
  %298 = getelementptr %struct.complex, ptr %invariant.gep1103, i64 %offset.idx1425
  %299 = getelementptr %struct.complex, ptr %invariant.gep1103, i64 %292
  %300 = getelementptr %struct.complex, ptr %invariant.gep1103, i64 %293
  %301 = getelementptr %struct.complex, ptr %invariant.gep1103, i64 %294
  %302 = getelementptr %struct.complex, ptr %invariant.gep1103, i64 %295
  %303 = getelementptr %struct.complex, ptr %invariant.gep1103, i64 %296
  %304 = getelementptr %struct.complex, ptr %invariant.gep1103, i64 %297
  %gep1729 = getelementptr %struct.complex, ptr %invariant.gep1728, i64 %index1424
  %305 = load float, ptr %298, align 4, !tbaa !17, !alias.scope !43
  %306 = load float, ptr %299, align 4, !tbaa !17, !alias.scope !43
  %307 = load float, ptr %300, align 4, !tbaa !17, !alias.scope !43
  %308 = load float, ptr %301, align 4, !tbaa !17, !alias.scope !43
  %309 = insertelement <4 x float> poison, float %305, i64 0
  %310 = insertelement <4 x float> %309, float %306, i64 1
  %311 = insertelement <4 x float> %310, float %307, i64 2
  %312 = insertelement <4 x float> %311, float %308, i64 3
  %313 = load float, ptr %302, align 4, !tbaa !17, !alias.scope !43
  %314 = load float, ptr %303, align 4, !tbaa !17, !alias.scope !43
  %315 = load float, ptr %304, align 4, !tbaa !17, !alias.scope !43
  %316 = load float, ptr %gep1729, align 4, !tbaa !17, !alias.scope !43
  %317 = insertelement <4 x float> poison, float %313, i64 0
  %318 = insertelement <4 x float> %317, float %314, i64 1
  %319 = insertelement <4 x float> %318, float %315, i64 2
  %320 = insertelement <4 x float> %319, float %316, i64 3
  %321 = getelementptr float, ptr %291, i64 %index1424
  %322 = getelementptr i8, ptr %321, i64 16
  store <4 x float> %312, ptr %321, align 4, !tbaa !9, !alias.scope !46, !noalias !43
  store <4 x float> %320, ptr %322, align 4, !tbaa !9, !alias.scope !46, !noalias !43
  %index.next1427 = add nuw i64 %index1424, 8
  %323 = icmp eq i64 %index.next1427, %n.vec1418
  br i1 %323, label %middle.block1413, label %vector.body1423, !llvm.loop !48

middle.block1413:                                 ; preds = %vector.body1423
  br i1 %cmp.n1428, label %._crit_edge1101, label %scalar.ph1414.preheader

scalar.ph1414.preheader:                          ; preds = %middle.block1413, %vector.memcheck1404, %.lr.ph1100
  %.39161098.ph = phi i64 [ 1, %vector.memcheck1404 ], [ 1, %.lr.ph1100 ], [ %ind.end1419, %middle.block1413 ]
  %.69541097.ph = phi i64 [ %.59531106, %vector.memcheck1404 ], [ %.59531106, %.lr.ph1100 ], [ %ind.end1421, %middle.block1413 ]
  %324 = sub i64 %287, %.39161098.ph
  %325 = sub i64 %280, %.39161098.ph
  %xtraiter1681 = and i64 %324, 3
  %lcmp.mod1682.not = icmp eq i64 %xtraiter1681, 0
  br i1 %lcmp.mod1682.not, label %scalar.ph1414.prol.loopexit, label %scalar.ph1414.prol

scalar.ph1414.prol:                               ; preds = %scalar.ph1414.preheader, %scalar.ph1414.prol
  %.39161098.prol = phi i64 [ %329, %scalar.ph1414.prol ], [ %.39161098.ph, %scalar.ph1414.preheader ]
  %.69541097.prol = phi i64 [ %326, %scalar.ph1414.prol ], [ %.69541097.ph, %scalar.ph1414.preheader ]
  %prol.iter1683 = phi i64 [ %prol.iter1683.next, %scalar.ph1414.prol ], [ 0, %scalar.ph1414.preheader ]
  %326 = add nsw i64 %.69541097.prol, 1
  %gep1104.prol = getelementptr %struct.complex, ptr %invariant.gep1103, i64 %.39161098.prol
  %327 = load float, ptr %gep1104.prol, align 4, !tbaa !17
  %328 = getelementptr float, ptr %11, i64 %.69541097.prol
  store float %327, ptr %328, align 4, !tbaa !9
  %329 = add nuw i64 %.39161098.prol, 1
  %prol.iter1683.next = add i64 %prol.iter1683, 1
  %prol.iter1683.cmp.not = icmp eq i64 %prol.iter1683.next, %xtraiter1681
  br i1 %prol.iter1683.cmp.not, label %scalar.ph1414.prol.loopexit, label %scalar.ph1414.prol, !llvm.loop !49

scalar.ph1414.prol.loopexit:                      ; preds = %scalar.ph1414.prol, %scalar.ph1414.preheader
  %.lcssa1673.unr = phi i64 [ poison, %scalar.ph1414.preheader ], [ %326, %scalar.ph1414.prol ]
  %.39161098.unr = phi i64 [ %.39161098.ph, %scalar.ph1414.preheader ], [ %329, %scalar.ph1414.prol ]
  %.69541097.unr = phi i64 [ %.69541097.ph, %scalar.ph1414.preheader ], [ %326, %scalar.ph1414.prol ]
  %330 = icmp ult i64 %325, 3
  br i1 %330, label %._crit_edge1101, label %scalar.ph1414.preheader.new

scalar.ph1414.preheader.new:                      ; preds = %scalar.ph1414.prol.loopexit
  %invariant.gep1730 = getelementptr i8, ptr %invariant.gep1103, i64 8
  %invariant.gep1734 = getelementptr i8, ptr %invariant.gep1103, i64 16
  br label %scalar.ph1414

scalar.ph1414:                                    ; preds = %scalar.ph1414, %scalar.ph1414.preheader.new
  %.39161098 = phi i64 [ %.39161098.unr, %scalar.ph1414.preheader.new ], [ %338, %scalar.ph1414 ]
  %.69541097 = phi i64 [ %.69541097.unr, %scalar.ph1414.preheader.new ], [ %336, %scalar.ph1414 ]
  %gep1104 = getelementptr %struct.complex, ptr %invariant.gep1103, i64 %.39161098
  %331 = load float, ptr %gep1104, align 4, !tbaa !17
  %332 = getelementptr float, ptr %11, i64 %.69541097
  store float %331, ptr %332, align 4, !tbaa !9
  %gep1731 = getelementptr %struct.complex, ptr %invariant.gep1730, i64 %.39161098
  %333 = load float, ptr %gep1731, align 4, !tbaa !17
  %gep1733 = getelementptr float, ptr %invariant.gep1732, i64 %.69541097
  store float %333, ptr %gep1733, align 4, !tbaa !9
  %gep1735 = getelementptr %struct.complex, ptr %invariant.gep1734, i64 %.39161098
  %334 = load float, ptr %gep1735, align 4, !tbaa !17
  %gep1737 = getelementptr float, ptr %invariant.gep1736, i64 %.69541097
  store float %334, ptr %gep1737, align 4, !tbaa !9
  %335 = add nuw i64 %.39161098, 3
  %336 = add nsw i64 %.69541097, 4
  %gep1104.3 = getelementptr %struct.complex, ptr %invariant.gep1103, i64 %335
  %337 = load float, ptr %gep1104.3, align 4, !tbaa !17
  %gep1739 = getelementptr float, ptr %invariant.gep1738, i64 %.69541097
  store float %337, ptr %gep1739, align 4, !tbaa !9
  %338 = add nuw i64 %.39161098, 4
  %exitcond1304.not.3 = icmp eq i64 %335, %280
  br i1 %exitcond1304.not.3, label %._crit_edge1101, label %scalar.ph1414, !llvm.loop !50

._crit_edge1101:                                  ; preds = %scalar.ph1414.prol.loopexit, %scalar.ph1414, %middle.block1413
  %.lcssa1349 = phi i64 [ %ind.end1421, %middle.block1413 ], [ %.lcssa1673.unr, %scalar.ph1414.prol.loopexit ], [ %336, %scalar.ph1414 ]
  %339 = add nuw i64 %.39291107, 1
  %exitcond1305.not = icmp eq i64 %.39291107, %279
  br i1 %exitcond1305.not, label %._crit_edge1110, label %.lr.ph1100, !llvm.loop !51

._crit_edge1110:                                  ; preds = %._crit_edge1101, %.lr.ph1109, %._crit_edge1095
  %340 = call i32 @f2c_sgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %2, ptr noundef nonnull @c_b10, ptr noundef %122, ptr noundef nonnull %2, ptr noundef nonnull %190, ptr noundef nonnull %2, ptr noundef nonnull @c_b35, ptr noundef %124, ptr noundef nonnull %2) #5
  %341 = load i64, ptr %3, align 8, !tbaa !5
  %.not10041120 = icmp slt i64 %341, 1
  br i1 %.not10041120, label %._crit_edge1125, label %.lr.ph1124

.lr.ph1124:                                       ; preds = %._crit_edge1110, %._crit_edge1116
  %.49301122 = phi i64 [ %350, %._crit_edge1116 ], [ 1, %._crit_edge1110 ]
  %.79551121 = phi i64 [ %.8956.lcssa, %._crit_edge1116 ], [ %128, %._crit_edge1110 ]
  %342 = load i64, ptr %2, align 8, !tbaa !5
  %.not10071111 = icmp slt i64 %342, 1
  br i1 %.not10071111, label %._crit_edge1116, label %.lr.ph1115

.lr.ph1115:                                       ; preds = %.lr.ph1124
  %343 = mul nsw i64 %.49301122, %28
  %invariant.gep1118 = getelementptr %struct.complex, ptr %30, i64 %343
  br label %344

344:                                              ; preds = %.lr.ph1115, %344
  %.49171113 = phi i64 [ 1, %.lr.ph1115 ], [ %349, %344 ]
  %.89561112 = phi i64 [ %.79551121, %.lr.ph1115 ], [ %345, %344 ]
  %345 = add nsw i64 %.89561112, 1
  %gep1119 = getelementptr %struct.complex, ptr %invariant.gep1118, i64 %.49171113
  %346 = call double @r_imag(ptr noundef %gep1119) #5
  %347 = fptrunc double %346 to float
  %348 = getelementptr float, ptr %11, i64 %.89561112
  store float %347, ptr %348, align 4, !tbaa !9
  %349 = add nuw i64 %.49171113, 1
  %exitcond1306.not = icmp eq i64 %.49171113, %342
  br i1 %exitcond1306.not, label %._crit_edge1116, label %344, !llvm.loop !52

._crit_edge1116:                                  ; preds = %344, %.lr.ph1124
  %.8956.lcssa = phi i64 [ %.79551121, %.lr.ph1124 ], [ %345, %344 ]
  %350 = add nuw nsw i64 %.49301122, 1
  %.not1004.not = icmp slt i64 %.49301122, %341
  br i1 %.not1004.not, label %.lr.ph1124, label %._crit_edge1125, !llvm.loop !53

._crit_edge1125:                                  ; preds = %._crit_edge1116, %._crit_edge1110
  %351 = call i32 @f2c_sgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %2, ptr noundef nonnull @c_b10, ptr noundef %122, ptr noundef nonnull %2, ptr noundef nonnull %190, ptr noundef nonnull %2, ptr noundef nonnull @c_b35, ptr noundef nonnull %204, ptr noundef nonnull %2) #5
  %352 = load i64, ptr %3, align 8, !tbaa !5
  %.not10051137 = icmp slt i64 %352, 1
  br i1 %.not10051137, label %._crit_edge1143, label %.lr.ph1142

.lr.ph1142:                                       ; preds = %._crit_edge1125
  %353 = load i64, ptr %2, align 8, !tbaa !5
  %.not10061126 = icmp slt i64 %353, 1
  br i1 %.not10061126, label %._crit_edge1143, label %.lr.ph1131.preheader

.lr.ph1131.preheader:                             ; preds = %.lr.ph1142
  %354 = add nsw i64 %353, -1
  %355 = shl i64 %28, 3
  %356 = add nuw i64 %352, 2305843009213693951
  %357 = mul i64 %28, %356
  %358 = add i64 %357, %353
  %359 = shl i64 %358, 3
  %scevgep1441 = getelementptr i8, ptr %6, i64 %359
  %360 = shl i64 %353, 2
  %scevgep1443 = getelementptr i8, ptr %11, i64 %360
  %scevgep1446 = getelementptr i8, ptr %11, i64 %360
  %min.iters.check1459 = icmp ult i64 %353, 22
  %mul.result1434 = shl i64 %354, 3
  %mul.result1438 = shl i64 %354, 3
  %mul.overflow1439 = icmp ugt i64 %354, 2305843009213693951
  %.mask1659 = and i64 %28, 1152921504606846976
  %stride.check1455 = icmp ne i64 %.mask1659, 0
  %n.vec1462 = and i64 %353, 4611686018427387900
  %ind.end1467 = or disjoint i64 %n.vec1462, 1
  %cmp.n1481 = icmp eq i64 %353, %n.vec1462
  %xtraiter1684 = and i64 %353, 1
  %lcmp.mod1685.not = icmp eq i64 %xtraiter1684, 0
  %invariant.gep1740 = getelementptr i8, ptr %11, i64 4
  %invariant.gep1742 = getelementptr i8, ptr %11, i64 4
  br label %.lr.ph1131

.lr.ph1131:                                       ; preds = %.lr.ph1131.preheader, %._crit_edge1132
  %indvar1430 = phi i64 [ 0, %.lr.ph1131.preheader ], [ %indvar.next1431, %._crit_edge1132 ]
  %.21140 = phi i64 [ %reass.add997, %.lr.ph1131.preheader ], [ %.lcssa1347, %._crit_edge1132 ]
  %.29051139 = phi i64 [ %206, %.lr.ph1131.preheader ], [ %.lcssa1346, %._crit_edge1132 ]
  %.59311138 = phi i64 [ 1, %.lr.ph1131.preheader ], [ %404, %._crit_edge1132 ]
  %361 = mul nsw i64 %.59311138, %28
  %invariant.gep1135 = getelementptr %struct.complex, ptr %30, i64 %361
  br i1 %min.iters.check1459, label %scalar.ph1458.preheader, label %vector.scevcheck1429

vector.scevcheck1429:                             ; preds = %.lr.ph1131
  %362 = mul i64 %355, %indvar1430
  %363 = or disjoint i64 %362, 4
  %scevgep1436 = getelementptr i8, ptr %6, i64 %363
  %scevgep1432 = getelementptr i8, ptr %6, i64 %362
  %364 = getelementptr i8, ptr %scevgep1432, i64 %mul.result1434
  %365 = icmp ult ptr %364, %scevgep1432
  %366 = getelementptr i8, ptr %scevgep1436, i64 %mul.result1438
  %367 = icmp ult ptr %366, %scevgep1436
  %368 = or i1 %367, %mul.overflow1439
  %369 = or i1 %365, %368
  br i1 %369, label %scalar.ph1458.preheader, label %vector.memcheck1440

vector.memcheck1440:                              ; preds = %vector.scevcheck1429
  %370 = shl i64 %.29051139, 2
  %scevgep1442 = getelementptr i8, ptr %11, i64 %370
  %scevgep1444 = getelementptr i8, ptr %scevgep1443, i64 %370
  %371 = shl i64 %.21140, 2
  %scevgep1445 = getelementptr i8, ptr %11, i64 %371
  %scevgep1447 = getelementptr i8, ptr %scevgep1446, i64 %371
  %bound01448 = icmp ugt ptr %scevgep1444, %6
  %bound11449 = icmp ult ptr %scevgep1442, %scevgep1441
  %found.conflict1450 = and i1 %bound01448, %bound11449
  %bound01452 = icmp ugt ptr %scevgep1447, %6
  %bound11453 = icmp ult ptr %scevgep1445, %scevgep1441
  %found.conflict1454 = and i1 %bound01452, %bound11453
  %372 = or i1 %found.conflict1454, %stride.check1455
  %conflict.rdx1456 = or i1 %found.conflict1450, %372
  br i1 %conflict.rdx1456, label %scalar.ph1458.preheader, label %vector.ph1460

vector.ph1460:                                    ; preds = %vector.memcheck1440
  %ind.end1463 = add i64 %.21140, %n.vec1462
  %ind.end1465 = add i64 %.29051139, %n.vec1462
  %373 = getelementptr float, ptr %11, i64 %.21140
  %374 = getelementptr float, ptr %11, i64 %.29051139
  br label %vector.body1469

vector.body1469:                                  ; preds = %vector.body1469, %vector.ph1460
  %index1470 = phi i64 [ 0, %vector.ph1460 ], [ %index.next1480, %vector.body1469 ]
  %offset.idx1473 = or disjoint i64 %index1470, 1
  %375 = or disjoint i64 %index1470, 3
  %376 = getelementptr float, ptr %373, i64 %index1470
  %377 = getelementptr i8, ptr %376, i64 8
  %wide.load1474 = load <2 x float>, ptr %376, align 4, !tbaa !9, !alias.scope !54
  %wide.load1475 = load <2 x float>, ptr %377, align 4, !tbaa !9, !alias.scope !54
  %378 = getelementptr float, ptr %374, i64 %index1470
  %379 = getelementptr i8, ptr %378, i64 8
  %wide.load1476 = load <2 x float>, ptr %378, align 4, !tbaa !9, !alias.scope !57
  %wide.load1477 = load <2 x float>, ptr %379, align 4, !tbaa !9, !alias.scope !57
  %380 = getelementptr %struct.complex, ptr %invariant.gep1135, i64 %offset.idx1473
  %381 = getelementptr %struct.complex, ptr %invariant.gep1135, i64 %375
  %interleaved.vec1478 = shufflevector <2 x float> %wide.load1474, <2 x float> %wide.load1476, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec1478, ptr %380, align 4, !tbaa !9
  %interleaved.vec1479 = shufflevector <2 x float> %wide.load1475, <2 x float> %wide.load1477, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec1479, ptr %381, align 4, !tbaa !9
  %index.next1480 = add nuw i64 %index1470, 4
  %382 = icmp eq i64 %index.next1480, %n.vec1462
  br i1 %382, label %middle.block1457, label %vector.body1469, !llvm.loop !59

middle.block1457:                                 ; preds = %vector.body1469
  br i1 %cmp.n1481, label %._crit_edge1132, label %scalar.ph1458.preheader

scalar.ph1458.preheader:                          ; preds = %middle.block1457, %vector.memcheck1440, %vector.scevcheck1429, %.lr.ph1131
  %.31129.ph = phi i64 [ %.21140, %vector.memcheck1440 ], [ %.21140, %vector.scevcheck1429 ], [ %.21140, %.lr.ph1131 ], [ %ind.end1463, %middle.block1457 ]
  %.39061128.ph = phi i64 [ %.29051139, %vector.memcheck1440 ], [ %.29051139, %vector.scevcheck1429 ], [ %.29051139, %.lr.ph1131 ], [ %ind.end1465, %middle.block1457 ]
  %.59181127.ph = phi i64 [ 1, %vector.memcheck1440 ], [ 1, %vector.scevcheck1429 ], [ 1, %.lr.ph1131 ], [ %ind.end1467, %middle.block1457 ]
  br i1 %lcmp.mod1685.not, label %scalar.ph1458.prol.loopexit, label %scalar.ph1458.prol

scalar.ph1458.prol:                               ; preds = %scalar.ph1458.preheader
  %383 = add nsw i64 %.31129.ph, 1
  %384 = add nsw i64 %.39061128.ph, 1
  %385 = getelementptr float, ptr %11, i64 %.31129.ph
  %386 = load float, ptr %385, align 4, !tbaa !9
  %387 = getelementptr float, ptr %11, i64 %.39061128.ph
  %388 = load float, ptr %387, align 4, !tbaa !9
  %gep1136.prol = getelementptr %struct.complex, ptr %invariant.gep1135, i64 %.59181127.ph
  store float %386, ptr %gep1136.prol, align 4, !tbaa !17
  %389 = getelementptr inbounds i8, ptr %gep1136.prol, i64 4
  store float %388, ptr %389, align 4, !tbaa !39
  %390 = add nuw nsw i64 %.59181127.ph, 1
  br label %scalar.ph1458.prol.loopexit

scalar.ph1458.prol.loopexit:                      ; preds = %scalar.ph1458.prol, %scalar.ph1458.preheader
  %.lcssa1671.unr = phi i64 [ poison, %scalar.ph1458.preheader ], [ %383, %scalar.ph1458.prol ]
  %.lcssa1670.unr = phi i64 [ poison, %scalar.ph1458.preheader ], [ %384, %scalar.ph1458.prol ]
  %.31129.unr = phi i64 [ %.31129.ph, %scalar.ph1458.preheader ], [ %383, %scalar.ph1458.prol ]
  %.39061128.unr = phi i64 [ %.39061128.ph, %scalar.ph1458.preheader ], [ %384, %scalar.ph1458.prol ]
  %.59181127.unr = phi i64 [ %.59181127.ph, %scalar.ph1458.preheader ], [ %390, %scalar.ph1458.prol ]
  %391 = icmp eq i64 %353, %.59181127.ph
  br i1 %391, label %._crit_edge1132, label %scalar.ph1458

scalar.ph1458:                                    ; preds = %scalar.ph1458.prol.loopexit, %scalar.ph1458
  %.31129 = phi i64 [ %398, %scalar.ph1458 ], [ %.31129.unr, %scalar.ph1458.prol.loopexit ]
  %.39061128 = phi i64 [ %399, %scalar.ph1458 ], [ %.39061128.unr, %scalar.ph1458.prol.loopexit ]
  %.59181127 = phi i64 [ %403, %scalar.ph1458 ], [ %.59181127.unr, %scalar.ph1458.prol.loopexit ]
  %392 = getelementptr float, ptr %11, i64 %.31129
  %393 = load float, ptr %392, align 4, !tbaa !9
  %394 = getelementptr float, ptr %11, i64 %.39061128
  %395 = load float, ptr %394, align 4, !tbaa !9
  %gep1136 = getelementptr %struct.complex, ptr %invariant.gep1135, i64 %.59181127
  store float %393, ptr %gep1136, align 4, !tbaa !17
  %396 = getelementptr inbounds i8, ptr %gep1136, i64 4
  store float %395, ptr %396, align 4, !tbaa !39
  %397 = add nuw i64 %.59181127, 1
  %398 = add nsw i64 %.31129, 2
  %399 = add nsw i64 %.39061128, 2
  %gep1741 = getelementptr float, ptr %invariant.gep1740, i64 %.31129
  %400 = load float, ptr %gep1741, align 4, !tbaa !9
  %gep1743 = getelementptr float, ptr %invariant.gep1742, i64 %.39061128
  %401 = load float, ptr %gep1743, align 4, !tbaa !9
  %gep1136.1 = getelementptr %struct.complex, ptr %invariant.gep1135, i64 %397
  store float %400, ptr %gep1136.1, align 4, !tbaa !17
  %402 = getelementptr inbounds i8, ptr %gep1136.1, i64 4
  store float %401, ptr %402, align 4, !tbaa !39
  %403 = add nuw i64 %.59181127, 2
  %exitcond1307.not.1 = icmp eq i64 %397, %353
  br i1 %exitcond1307.not.1, label %._crit_edge1132, label %scalar.ph1458, !llvm.loop !60

._crit_edge1132:                                  ; preds = %scalar.ph1458.prol.loopexit, %scalar.ph1458, %middle.block1457
  %.lcssa1347 = phi i64 [ %ind.end1463, %middle.block1457 ], [ %.lcssa1671.unr, %scalar.ph1458.prol.loopexit ], [ %398, %scalar.ph1458 ]
  %.lcssa1346 = phi i64 [ %ind.end1465, %middle.block1457 ], [ %.lcssa1670.unr, %scalar.ph1458.prol.loopexit ], [ %399, %scalar.ph1458 ]
  %404 = add nuw i64 %.59311138, 1
  %exitcond1308.not = icmp eq i64 %.59311138, %352
  %indvar.next1431 = add i64 %indvar1430, 1
  br i1 %exitcond1308.not, label %._crit_edge1143, label %.lr.ph1131, !llvm.loop !61

._crit_edge1143:                                  ; preds = %._crit_edge1132, %.lr.ph1142, %._crit_edge1125
  %405 = call i32 @slascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b10, ptr noundef nonnull %25, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %2, ptr noundef nonnull %13) #5
  %406 = call i32 @slasrt_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %13) #5
  %407 = call i32 @clascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %25, ptr noundef nonnull @c_b10, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %13) #5
  br label %.loopexit1021

408:                                              ; preds = %109
  %409 = sitofp i64 %112 to float
  %410 = add nsw i64 %113, 1
  %411 = sitofp i64 %410 to float
  %412 = fdiv float %409, %411
  %413 = fpext float %412 to double
  %414 = call double @log(double noundef %413) #5
  %415 = fdiv double %414, 0x3FE62E42FEFA39EF
  %416 = fptosi double %415 to i64
  %417 = add nsw i64 %416, 1
  %418 = load i64, ptr %1, align 8, !tbaa !5
  %419 = add nsw i64 %418, 1
  %420 = load i64, ptr %2, align 8, !tbaa !5
  %421 = mul nsw i64 %420, %418
  %422 = add nsw i64 %421, 1
  %423 = mul nsw i64 %419, %420
  %424 = add nsw i64 %422, %423
  %425 = mul nsw i64 %417, %420
  %426 = add nsw i64 %424, %425
  %427 = shl i64 %425, 1
  %428 = add nsw i64 %426, %427
  %429 = add nsw i64 %428, %425
  %430 = add nsw i64 %429, %420
  %431 = add nsw i64 %430, %420
  %432 = shl i64 %417, 1
  %433 = mul nsw i64 %432, %420
  %434 = add nsw i64 %431, %433
  %435 = add nsw i64 %434, %433
  %436 = load i64, ptr %3, align 8, !tbaa !5
  %437 = mul nsw i64 %436, %418
  %438 = add nsw i64 %435, %437
  %439 = add nsw i64 %438, %437
  %reass.add = shl i64 %420, 1
  %440 = or disjoint i64 %reass.add, 1
  %441 = add nsw i64 %440, %420
  %442 = add nsw i64 %441, %420
  %443 = add nsw i64 %442, %425
  %444 = add nsw i64 %443, %427
  store i64 0, ptr %21, align 8, !tbaa !5
  store i64 1, ptr %23, align 8, !tbaa !5
  store i64 0, ptr %24, align 8, !tbaa !5
  %.not9751144 = icmp slt i64 %420, 1
  br i1 %.not9751144, label %._crit_edge1148, label %.lr.ph1147

.lr.ph1147:                                       ; preds = %408, %455
  %.39421145 = phi i64 [ %456, %455 ], [ 1, %408 ]
  %445 = getelementptr inbounds float, ptr %26, i64 %.39421145
  %446 = load float, ptr %445, align 4, !tbaa !9
  %447 = fcmp oge float %446, 0.000000e+00
  %448 = fneg float %446
  %449 = select i1 %447, float %446, float %448
  %450 = load float, ptr %20, align 4, !tbaa !9
  %451 = fcmp olt float %449, %450
  br i1 %451, label %452, label %455

452:                                              ; preds = %.lr.ph1147
  %453 = call double @r_sign(ptr noundef nonnull %20, ptr noundef nonnull %445) #5
  %454 = fptrunc double %453 to float
  store float %454, ptr %445, align 4, !tbaa !9
  br label %455

455:                                              ; preds = %.lr.ph1147, %452
  %456 = add nuw nsw i64 %.39421145, 1
  %.not975.not = icmp slt i64 %.39421145, %420
  br i1 %.not975.not, label %.lr.ph1147, label %._crit_edge1148, !llvm.loop !62

._crit_edge1148:                                  ; preds = %455, %408
  %457 = load i64, ptr %19, align 8, !tbaa !5
  %invariant.gep1197 = getelementptr i8, ptr %6, i64 -8
  %.not9761205 = icmp slt i64 %457, 1
  br i1 %.not9761205, label %._crit_edge1211, label %.lr.ph1210

.lr.ph1210:                                       ; preds = %._crit_edge1148
  %458 = getelementptr i64, ptr %12, i64 %420
  %459 = getelementptr i64, ptr %33, i64 %420
  %460 = getelementptr float, ptr %32, i64 %421
  %461 = getelementptr inbounds float, ptr %32, i64 %435
  %462 = add nsw i64 %439, -1
  %463 = getelementptr inbounds float, ptr %32, i64 %439
  %464 = getelementptr inbounds float, ptr %32, i64 %438
  %465 = add nsw i64 %435, -1
  %466 = add nsw i64 %438, -1
  %467 = getelementptr i64, ptr %12, i64 %reass.add
  %468 = getelementptr float, ptr %32, i64 %424
  %469 = getelementptr float, ptr %32, i64 %426
  %470 = getelementptr float, ptr %32, i64 %428
  %471 = getelementptr float, ptr %32, i64 %431
  %472 = getelementptr i64, ptr %33, i64 %441
  %473 = getelementptr i64, ptr %33, i64 %443
  %474 = getelementptr i64, ptr %33, i64 %442
  %475 = getelementptr float, ptr %32, i64 %434
  %476 = getelementptr float, ptr %32, i64 %429
  %477 = getelementptr float, ptr %32, i64 %430
  %478 = getelementptr inbounds i64, ptr %33, i64 %444
  %479 = shl i64 %28, 3
  %scevgep1494 = getelementptr i8, ptr %6, i64 -8
  %scevgep1496 = getelementptr i8, ptr %6, i64 -8
  %480 = shl i64 %28, 3
  %scevgep1545 = getelementptr i8, ptr %6, i64 -8
  %scevgep1547 = getelementptr i8, ptr %6, i64 -12
  %481 = shl i64 %28, 3
  %stride.check1552 = icmp slt i64 %481, 0
  %invariant.gep1760 = getelementptr i8, ptr %6, i64 -4
  %invariant.gep1762 = getelementptr i8, ptr %6, i64 -8
  %stride.check1512 = icmp slt i64 %480, 0
  br label %482

482:                                              ; preds = %.lr.ph1210, %665
  %.09231208 = phi i64 [ 0, %.lr.ph1210 ], [ %.2925, %665 ]
  %.49431207 = phi i64 [ 1, %.lr.ph1210 ], [ %.pre-phi, %665 ]
  %.09461206 = phi i64 [ 1, %.lr.ph1210 ], [ %.1947, %665 ]
  %483 = getelementptr inbounds float, ptr %27, i64 %.49431207
  %484 = load float, ptr %483, align 4, !tbaa !9
  %485 = fcmp oge float %484, 0.000000e+00
  %486 = fneg float %484
  %487 = select i1 %485, float %484, float %486
  %488 = load float, ptr %20, align 4, !tbaa !9
  %489 = fcmp olt float %487, %488
  %490 = load i64, ptr %19, align 8
  %491 = icmp eq i64 %.49431207, %490
  %or.cond1018 = select i1 %489, i1 true, i1 %491
  br i1 %or.cond1018, label %492, label %._crit_edge1317

._crit_edge1317:                                  ; preds = %482
  %.pre = add nuw nsw i64 %.49431207, 1
  br label %665

492:                                              ; preds = %482
  %493 = add nsw i64 %.09231208, 1
  %494 = getelementptr i64, ptr %12, i64 %.09231208
  store i64 %.09461206, ptr %494, align 8, !tbaa !5
  %495 = icmp slt i64 %.49431207, %490
  br i1 %495, label %496, label %500

496:                                              ; preds = %492
  %497 = sub nsw i64 %.49431207, %.09461206
  %498 = add nsw i64 %497, 1
  store i64 %498, ptr %22, align 8, !tbaa !5
  %499 = getelementptr i64, ptr %458, i64 %.09231208
  store i64 %498, ptr %499, align 8, !tbaa !5
  br label %518

500:                                              ; preds = %492
  %501 = fcmp ult float %487, %488
  br i1 %501, label %507, label %502

502:                                              ; preds = %500
  %503 = load i64, ptr %2, align 8, !tbaa !5
  %504 = sub nsw i64 %503, %.09461206
  %505 = add nsw i64 %504, 1
  store i64 %505, ptr %22, align 8, !tbaa !5
  %506 = getelementptr i64, ptr %458, i64 %.09231208
  store i64 %505, ptr %506, align 8, !tbaa !5
  br label %518

507:                                              ; preds = %500
  %508 = sub nsw i64 %.49431207, %.09461206
  %509 = add nsw i64 %508, 1
  store i64 %509, ptr %22, align 8, !tbaa !5
  %510 = getelementptr i64, ptr %458, i64 %.09231208
  store i64 %509, ptr %510, align 8, !tbaa !5
  %511 = add nsw i64 %.09231208, 2
  %512 = load i64, ptr %2, align 8, !tbaa !5
  %513 = getelementptr inbounds i64, ptr %33, i64 %511
  store i64 %512, ptr %513, align 8, !tbaa !5
  %514 = getelementptr i64, ptr %459, i64 %511
  store i64 1, ptr %514, align 8, !tbaa !5
  %515 = load i64, ptr %2, align 8, !tbaa !5
  %gep1198 = getelementptr %struct.complex, ptr %invariant.gep1197, i64 %515
  %516 = getelementptr %struct.complex, ptr %10, i64 %490
  %517 = call i32 @f2c_ccopy(ptr noundef nonnull %3, ptr noundef %gep1198, ptr noundef nonnull %7, ptr noundef %516, ptr noundef nonnull %2) #5
  %.pr1020 = load i64, ptr %22, align 8, !tbaa !5
  br label %518

518:                                              ; preds = %502, %507, %496
  %519 = phi i64 [ %505, %502 ], [ %.pr1020, %507 ], [ %498, %496 ]
  %.1924 = phi i64 [ %493, %502 ], [ %511, %507 ], [ %493, %496 ]
  %520 = add nsw i64 %.09461206, -1
  %521 = icmp eq i64 %519, 1
  br i1 %521, label %522, label %525

522:                                              ; preds = %518
  %gep1204 = getelementptr %struct.complex, ptr %invariant.gep1197, i64 %.09461206
  %523 = getelementptr inbounds %struct.complex, ptr %31, i64 %.09461206
  %524 = call i32 @f2c_ccopy(ptr noundef nonnull %3, ptr noundef %gep1204, ptr noundef nonnull %7, ptr noundef nonnull %523, ptr noundef nonnull %2) #5
  br label %663

525:                                              ; preds = %518
  %526 = load i64, ptr %1, align 8, !tbaa !5
  %.not987 = icmp sgt i64 %519, %526
  %527 = getelementptr inbounds float, ptr %32, i64 %.09461206
  br i1 %.not987, label %642, label %528

528:                                              ; preds = %525
  %529 = getelementptr float, ptr %460, i64 %.09461206
  %530 = call i32 @slaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %22, ptr noundef nonnull %22, ptr noundef nonnull @c_b35, ptr noundef nonnull @c_b10, ptr noundef %529, ptr noundef nonnull %2) #5
  %531 = call i32 @slaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %22, ptr noundef nonnull %22, ptr noundef nonnull @c_b35, ptr noundef nonnull @c_b10, ptr noundef nonnull %527, ptr noundef nonnull %2) #5
  %532 = getelementptr inbounds float, ptr %26, i64 %.09461206
  %533 = getelementptr inbounds float, ptr %27, i64 %.09461206
  %534 = call i32 @slasdq_(ptr noundef nonnull @.str.5, ptr noundef nonnull @c__0, ptr noundef nonnull %22, ptr noundef nonnull %22, ptr noundef nonnull %22, ptr noundef nonnull @c__0, ptr noundef nonnull %532, ptr noundef nonnull %533, ptr noundef %529, ptr noundef nonnull %2, ptr noundef nonnull %527, ptr noundef nonnull %2, ptr noundef nonnull %461, ptr noundef nonnull @c__1, ptr noundef nonnull %461, ptr noundef nonnull %13) #5
  %535 = load i64, ptr %13, align 8, !tbaa !5
  %.not990 = icmp eq i64 %535, 0
  br i1 %.not990, label %536, label %.loopexit1021

536:                                              ; preds = %528
  %537 = load i64, ptr %3, align 8, !tbaa !5
  %.not9911158 = icmp slt i64 %537, 1
  br i1 %.not9911158, label %._crit_edge1163, label %.lr.ph1162

.lr.ph1162:                                       ; preds = %536
  %538 = load i64, ptr %22, align 8, !tbaa !5
  %539 = add i64 %538, %.09461206
  %.not996.not1149 = icmp sgt i64 %538, 0
  br i1 %.not996.not1149, label %.lr.ph1153.us.preheader, label %._crit_edge1163

.lr.ph1153.us.preheader:                          ; preds = %.lr.ph1162
  %540 = mul i64 %.09461206, -4
  %scevgep1542 = getelementptr i8, ptr %11, i64 %540
  %541 = add i64 %.09461206, 1
  %smax1543 = call i64 @llvm.smax.i64(i64 %539, i64 %541)
  %542 = shl i64 %.09461206, 3
  %scevgep1546 = getelementptr i8, ptr %scevgep1545, i64 %542
  %543 = add nsw i64 %537, -1
  %544 = mul i64 %481, %543
  %545 = shl i64 %smax1543, 3
  %546 = getelementptr i8, ptr %scevgep1547, i64 %544
  %scevgep1548 = getelementptr i8, ptr %546, i64 %545
  %547 = add i64 %.09461206, 1
  %smax1553 = call i64 @llvm.smax.i64(i64 %539, i64 %547)
  %548 = sub i64 %smax1553, %.09461206
  %min.iters.check1556 = icmp ult i64 %548, 8
  %n.vec1559 = and i64 %548, -8
  %ind.end1560 = add i64 %.09461206, %n.vec1559
  %cmp.n1569 = icmp eq i64 %548, %n.vec1559
  br label %.lr.ph1153.us

.lr.ph1153.us:                                    ; preds = %.lr.ph1153.us.preheader, %._crit_edge1154.us
  %.69321160.us = phi i64 [ %579, %._crit_edge1154.us ], [ 1, %.lr.ph1153.us.preheader ]
  %.99571159.us = phi i64 [ %.lcssa1342, %._crit_edge1154.us ], [ %462, %.lr.ph1153.us.preheader ]
  %549 = mul nsw i64 %.69321160.us, %28
  %invariant.gep1156.us = getelementptr %struct.complex, ptr %30, i64 %549
  br i1 %min.iters.check1556, label %scalar.ph1555.preheader, label %vector.memcheck1540

vector.memcheck1540:                              ; preds = %.lr.ph1153.us
  %550 = shl i64 %.99571159.us, 2
  %scevgep1541 = getelementptr i8, ptr %11, i64 %550
  %551 = add i64 %smax1543, %.99571159.us
  %552 = shl i64 %551, 2
  %scevgep1544 = getelementptr i8, ptr %scevgep1542, i64 %552
  %bound01549 = icmp ult ptr %scevgep1541, %scevgep1548
  %bound11550 = icmp ult ptr %scevgep1546, %scevgep1544
  %found.conflict1551 = and i1 %bound01549, %bound11550
  %553 = or i1 %found.conflict1551, %stride.check1552
  br i1 %553, label %scalar.ph1555.preheader, label %vector.ph1557

vector.ph1557:                                    ; preds = %vector.memcheck1540
  %ind.end1562 = add i64 %.99571159.us, %n.vec1559
  %invariant.gep1744 = getelementptr i8, ptr %invariant.gep1156.us, i64 8
  %invariant.gep1746 = getelementptr i8, ptr %invariant.gep1156.us, i64 16
  %invariant.gep1748 = getelementptr i8, ptr %invariant.gep1156.us, i64 24
  %invariant.gep1750 = getelementptr i8, ptr %invariant.gep1156.us, i64 32
  %invariant.gep1752 = getelementptr i8, ptr %invariant.gep1156.us, i64 40
  %invariant.gep1754 = getelementptr i8, ptr %invariant.gep1156.us, i64 48
  %invariant.gep1756 = getelementptr i8, ptr %invariant.gep1156.us, i64 56
  %554 = getelementptr float, ptr %11, i64 %.99571159.us
  br label %vector.body1564

vector.body1564:                                  ; preds = %vector.body1564, %vector.ph1557
  %index1565 = phi i64 [ 0, %vector.ph1557 ], [ %index.next1568, %vector.body1564 ]
  %offset.idx1566 = add i64 %.09461206, %index1565
  %555 = getelementptr %struct.complex, ptr %invariant.gep1156.us, i64 %offset.idx1566
  %gep1745 = getelementptr %struct.complex, ptr %invariant.gep1744, i64 %offset.idx1566
  %gep1747 = getelementptr %struct.complex, ptr %invariant.gep1746, i64 %offset.idx1566
  %gep1749 = getelementptr %struct.complex, ptr %invariant.gep1748, i64 %offset.idx1566
  %gep1751 = getelementptr %struct.complex, ptr %invariant.gep1750, i64 %offset.idx1566
  %gep1753 = getelementptr %struct.complex, ptr %invariant.gep1752, i64 %offset.idx1566
  %gep1755 = getelementptr %struct.complex, ptr %invariant.gep1754, i64 %offset.idx1566
  %gep1757 = getelementptr %struct.complex, ptr %invariant.gep1756, i64 %offset.idx1566
  %556 = load float, ptr %555, align 4, !tbaa !17, !alias.scope !63
  %557 = load float, ptr %gep1745, align 4, !tbaa !17, !alias.scope !63
  %558 = load float, ptr %gep1747, align 4, !tbaa !17, !alias.scope !63
  %559 = load float, ptr %gep1749, align 4, !tbaa !17, !alias.scope !63
  %560 = insertelement <4 x float> poison, float %556, i64 0
  %561 = insertelement <4 x float> %560, float %557, i64 1
  %562 = insertelement <4 x float> %561, float %558, i64 2
  %563 = insertelement <4 x float> %562, float %559, i64 3
  %564 = load float, ptr %gep1751, align 4, !tbaa !17, !alias.scope !63
  %565 = load float, ptr %gep1753, align 4, !tbaa !17, !alias.scope !63
  %566 = load float, ptr %gep1755, align 4, !tbaa !17, !alias.scope !63
  %567 = load float, ptr %gep1757, align 4, !tbaa !17, !alias.scope !63
  %568 = insertelement <4 x float> poison, float %564, i64 0
  %569 = insertelement <4 x float> %568, float %565, i64 1
  %570 = insertelement <4 x float> %569, float %566, i64 2
  %571 = insertelement <4 x float> %570, float %567, i64 3
  %572 = getelementptr float, ptr %554, i64 %index1565
  %573 = getelementptr i8, ptr %572, i64 16
  store <4 x float> %563, ptr %572, align 4, !tbaa !9, !alias.scope !66, !noalias !63
  store <4 x float> %571, ptr %573, align 4, !tbaa !9, !alias.scope !66, !noalias !63
  %index.next1568 = add nuw i64 %index1565, 8
  %574 = icmp eq i64 %index.next1568, %n.vec1559
  br i1 %574, label %middle.block1554, label %vector.body1564, !llvm.loop !68

middle.block1554:                                 ; preds = %vector.body1564
  br i1 %cmp.n1569, label %._crit_edge1154.us, label %scalar.ph1555.preheader

scalar.ph1555.preheader:                          ; preds = %middle.block1554, %vector.memcheck1540, %.lr.ph1153.us
  %.69191151.us.ph = phi i64 [ %.09461206, %vector.memcheck1540 ], [ %.09461206, %.lr.ph1153.us ], [ %ind.end1560, %middle.block1554 ]
  %.109581150.us.ph = phi i64 [ %.99571159.us, %vector.memcheck1540 ], [ %.99571159.us, %.lr.ph1153.us ], [ %ind.end1562, %middle.block1554 ]
  br label %scalar.ph1555

scalar.ph1555:                                    ; preds = %scalar.ph1555.preheader, %scalar.ph1555
  %.69191151.us = phi i64 [ %578, %scalar.ph1555 ], [ %.69191151.us.ph, %scalar.ph1555.preheader ]
  %.109581150.us = phi i64 [ %575, %scalar.ph1555 ], [ %.109581150.us.ph, %scalar.ph1555.preheader ]
  %575 = add nsw i64 %.109581150.us, 1
  %gep1157.us = getelementptr %struct.complex, ptr %invariant.gep1156.us, i64 %.69191151.us
  %576 = load float, ptr %gep1157.us, align 4, !tbaa !17
  %577 = getelementptr float, ptr %11, i64 %.109581150.us
  store float %576, ptr %577, align 4, !tbaa !9
  %578 = add nsw i64 %.69191151.us, 1
  %.not996.not.us = icmp slt i64 %578, %539
  br i1 %.not996.not.us, label %scalar.ph1555, label %._crit_edge1154.us, !llvm.loop !69

._crit_edge1154.us:                               ; preds = %scalar.ph1555, %middle.block1554
  %.lcssa1342 = phi i64 [ %ind.end1562, %middle.block1554 ], [ %575, %scalar.ph1555 ]
  %579 = add nuw i64 %.69321160.us, 1
  %exitcond1309.not = icmp eq i64 %.69321160.us, %537
  br i1 %exitcond1309.not, label %._crit_edge1163, label %.lr.ph1153.us, !llvm.loop !70

._crit_edge1163:                                  ; preds = %._crit_edge1154.us, %.lr.ph1162, %536
  %580 = call i32 @f2c_sgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef nonnull @c_b10, ptr noundef nonnull %527, ptr noundef nonnull %2, ptr noundef nonnull %463, ptr noundef nonnull %22, ptr noundef nonnull @c_b35, ptr noundef nonnull %461, ptr noundef nonnull %22) #5
  %581 = load i64, ptr %3, align 8, !tbaa !5
  %.not9921173 = icmp slt i64 %581, 1
  br i1 %.not9921173, label %._crit_edge1178, label %.lr.ph1177

.lr.ph1177:                                       ; preds = %._crit_edge1163, %._crit_edge1169
  %.79331175 = phi i64 [ %591, %._crit_edge1169 ], [ 1, %._crit_edge1163 ]
  %.119591174 = phi i64 [ %.12.lcssa, %._crit_edge1169 ], [ %462, %._crit_edge1163 ]
  %582 = load i64, ptr %22, align 8, !tbaa !5
  %583 = add nsw i64 %582, %.09461206
  %.not995.not1164 = icmp sgt i64 %582, 0
  br i1 %.not995.not1164, label %.lr.ph1168, label %._crit_edge1169

.lr.ph1168:                                       ; preds = %.lr.ph1177
  %584 = mul nsw i64 %.79331175, %28
  %invariant.gep1171 = getelementptr %struct.complex, ptr %30, i64 %584
  br label %585

585:                                              ; preds = %.lr.ph1168, %585
  %.79201166 = phi i64 [ %.09461206, %.lr.ph1168 ], [ %590, %585 ]
  %.121165 = phi i64 [ %.119591174, %.lr.ph1168 ], [ %586, %585 ]
  %586 = add nsw i64 %.121165, 1
  %gep1172 = getelementptr %struct.complex, ptr %invariant.gep1171, i64 %.79201166
  %587 = call double @r_imag(ptr noundef %gep1172) #5
  %588 = fptrunc double %587 to float
  %589 = getelementptr float, ptr %11, i64 %.121165
  store float %588, ptr %589, align 4, !tbaa !9
  %590 = add nsw i64 %.79201166, 1
  %.not995.not = icmp slt i64 %590, %583
  br i1 %.not995.not, label %585, label %._crit_edge1169, !llvm.loop !71

._crit_edge1169:                                  ; preds = %585, %.lr.ph1177
  %.12.lcssa = phi i64 [ %.119591174, %.lr.ph1177 ], [ %586, %585 ]
  %591 = add nuw i64 %.79331175, 1
  %exitcond1310.not = icmp eq i64 %.79331175, %581
  br i1 %exitcond1310.not, label %._crit_edge1178, label %.lr.ph1177, !llvm.loop !72

._crit_edge1178:                                  ; preds = %._crit_edge1169, %._crit_edge1163
  %592 = call i32 @f2c_sgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef nonnull @c_b10, ptr noundef nonnull %527, ptr noundef nonnull %2, ptr noundef nonnull %463, ptr noundef nonnull %22, ptr noundef nonnull @c_b35, ptr noundef nonnull %464, ptr noundef nonnull %22) #5
  %593 = load i64, ptr %3, align 8, !tbaa !5
  %.not9931190 = icmp slt i64 %593, 1
  br i1 %.not9931190, label %._crit_edge1196, label %.lr.ph1195

.lr.ph1195:                                       ; preds = %._crit_edge1178
  %594 = load i64, ptr %22, align 8, !tbaa !5
  %595 = add i64 %594, %.09461206
  %.not994.not1179 = icmp sgt i64 %594, 0
  br i1 %.not994.not1179, label %.lr.ph1184.us.preheader, label %._crit_edge1196

.lr.ph1184.us.preheader:                          ; preds = %.lr.ph1195
  %596 = add i64 %.09461206, 1
  %smax = call i64 @llvm.smax.i64(i64 %595, i64 %596)
  %597 = xor i64 %.09461206, -1
  %598 = add i64 %smax, %597
  %599 = shl i64 %.09461206, 3
  %scevgep1495 = getelementptr i8, ptr %scevgep1494, i64 %599
  %600 = add nsw i64 %593, -1
  %601 = mul i64 %480, %600
  %602 = add i64 %.09461206, 1
  %smax1497 = call i64 @llvm.smax.i64(i64 %595, i64 %602)
  %603 = shl i64 %smax1497, 3
  %604 = getelementptr i8, ptr %scevgep1496, i64 %601
  %scevgep1498 = getelementptr i8, ptr %604, i64 %603
  %605 = mul i64 %.09461206, -4
  %scevgep1500 = getelementptr i8, ptr %11, i64 %605
  %scevgep1503 = getelementptr i8, ptr %11, i64 %605
  %606 = add i64 %.09461206, 1
  %smax1514 = call i64 @llvm.smax.i64(i64 %595, i64 %606)
  %607 = sub i64 %smax1514, %.09461206
  %min.iters.check1517 = icmp ult i64 %607, 24
  %gep1761 = getelementptr i8, ptr %invariant.gep1760, i64 %599
  %gep1763 = getelementptr i8, ptr %invariant.gep1762, i64 %599
  %mul.result1487 = shl i64 %598, 3
  %mul.result1491 = shl i64 %598, 3
  %mul.overflow1492 = icmp ugt i64 %598, 2305843009213693951
  %n.vec1520 = and i64 %607, -4
  %ind.end1525 = add i64 %.09461206, %n.vec1520
  %cmp.n1539 = icmp eq i64 %607, %n.vec1520
  br label %.lr.ph1184.us

.lr.ph1184.us:                                    ; preds = %.lr.ph1184.us.preheader, %._crit_edge1185.us
  %indvar1483 = phi i64 [ 0, %.lr.ph1184.us.preheader ], [ %indvar.next1484, %._crit_edge1185.us ]
  %.41193.us = phi i64 [ %465, %.lr.ph1184.us.preheader ], [ %.lcssa1345, %._crit_edge1185.us ]
  %.49071192.us = phi i64 [ %466, %.lr.ph1184.us.preheader ], [ %.lcssa1344, %._crit_edge1185.us ]
  %.89341191.us = phi i64 [ 1, %.lr.ph1184.us.preheader ], [ %639, %._crit_edge1185.us ]
  %608 = mul nsw i64 %.89341191.us, %28
  %invariant.gep1188.us = getelementptr %struct.complex, ptr %30, i64 %608
  br i1 %min.iters.check1517, label %scalar.ph1516.preheader, label %vector.scevcheck1482

vector.scevcheck1482:                             ; preds = %.lr.ph1184.us
  %609 = mul i64 %479, %indvar1483
  %scevgep1489 = getelementptr i8, ptr %gep1761, i64 %609
  %scevgep1485 = getelementptr i8, ptr %gep1763, i64 %609
  %610 = getelementptr i8, ptr %scevgep1485, i64 %mul.result1487
  %611 = icmp ult ptr %610, %scevgep1485
  %612 = getelementptr i8, ptr %scevgep1489, i64 %mul.result1491
  %613 = icmp ult ptr %612, %scevgep1489
  %614 = or i1 %613, %mul.overflow1492
  %615 = or i1 %611, %614
  br i1 %615, label %scalar.ph1516.preheader, label %vector.memcheck1493

vector.memcheck1493:                              ; preds = %vector.scevcheck1482
  %616 = shl i64 %.49071192.us, 2
  %scevgep1499 = getelementptr i8, ptr %11, i64 %616
  %617 = add i64 %smax1497, %.49071192.us
  %618 = shl i64 %617, 2
  %scevgep1501 = getelementptr i8, ptr %scevgep1500, i64 %618
  %619 = shl i64 %.41193.us, 2
  %scevgep1502 = getelementptr i8, ptr %11, i64 %619
  %620 = add i64 %smax1497, %.41193.us
  %621 = shl i64 %620, 2
  %scevgep1504 = getelementptr i8, ptr %scevgep1503, i64 %621
  %bound01505 = icmp ult ptr %scevgep1495, %scevgep1501
  %bound11506 = icmp ult ptr %scevgep1499, %scevgep1498
  %found.conflict1507 = and i1 %bound01505, %bound11506
  %bound01509 = icmp ult ptr %scevgep1495, %scevgep1504
  %bound11510 = icmp ult ptr %scevgep1502, %scevgep1498
  %found.conflict1511 = and i1 %bound01509, %bound11510
  %622 = or i1 %found.conflict1511, %stride.check1512
  %conflict.rdx1513 = or i1 %found.conflict1507, %622
  br i1 %conflict.rdx1513, label %scalar.ph1516.preheader, label %vector.ph1518

vector.ph1518:                                    ; preds = %vector.memcheck1493
  %ind.end1521 = add i64 %.41193.us, %n.vec1520
  %ind.end1523 = add i64 %.49071192.us, %n.vec1520
  %623 = getelementptr float, ptr %11, i64 %.41193.us
  %624 = getelementptr float, ptr %11, i64 %.49071192.us
  %invariant.gep1758 = getelementptr i8, ptr %invariant.gep1188.us, i64 16
  br label %vector.body1527

vector.body1527:                                  ; preds = %vector.body1527, %vector.ph1518
  %index1528 = phi i64 [ 0, %vector.ph1518 ], [ %index.next1538, %vector.body1527 ]
  %offset.idx1531 = add i64 %.09461206, %index1528
  %625 = getelementptr float, ptr %623, i64 %index1528
  %626 = getelementptr i8, ptr %625, i64 8
  %wide.load1532 = load <2 x float>, ptr %625, align 4, !tbaa !9, !alias.scope !73
  %wide.load1533 = load <2 x float>, ptr %626, align 4, !tbaa !9, !alias.scope !73
  %627 = getelementptr float, ptr %624, i64 %index1528
  %628 = getelementptr i8, ptr %627, i64 8
  %wide.load1534 = load <2 x float>, ptr %627, align 4, !tbaa !9, !alias.scope !76
  %wide.load1535 = load <2 x float>, ptr %628, align 4, !tbaa !9, !alias.scope !76
  %629 = getelementptr %struct.complex, ptr %invariant.gep1188.us, i64 %offset.idx1531
  %gep1759 = getelementptr %struct.complex, ptr %invariant.gep1758, i64 %offset.idx1531
  %interleaved.vec1536 = shufflevector <2 x float> %wide.load1532, <2 x float> %wide.load1534, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec1536, ptr %629, align 4, !tbaa !9
  %interleaved.vec1537 = shufflevector <2 x float> %wide.load1533, <2 x float> %wide.load1535, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec1537, ptr %gep1759, align 4, !tbaa !9
  %index.next1538 = add nuw i64 %index1528, 4
  %630 = icmp eq i64 %index.next1538, %n.vec1520
  br i1 %630, label %middle.block1515, label %vector.body1527, !llvm.loop !78

middle.block1515:                                 ; preds = %vector.body1527
  br i1 %cmp.n1539, label %._crit_edge1185.us, label %scalar.ph1516.preheader

scalar.ph1516.preheader:                          ; preds = %middle.block1515, %vector.memcheck1493, %vector.scevcheck1482, %.lr.ph1184.us
  %.51182.us.ph = phi i64 [ %.41193.us, %vector.memcheck1493 ], [ %.41193.us, %vector.scevcheck1482 ], [ %.41193.us, %.lr.ph1184.us ], [ %ind.end1521, %middle.block1515 ]
  %.59081181.us.ph = phi i64 [ %.49071192.us, %vector.memcheck1493 ], [ %.49071192.us, %vector.scevcheck1482 ], [ %.49071192.us, %.lr.ph1184.us ], [ %ind.end1523, %middle.block1515 ]
  %.89211180.us.ph = phi i64 [ %.09461206, %vector.memcheck1493 ], [ %.09461206, %vector.scevcheck1482 ], [ %.09461206, %.lr.ph1184.us ], [ %ind.end1525, %middle.block1515 ]
  br label %scalar.ph1516

scalar.ph1516:                                    ; preds = %scalar.ph1516.preheader, %scalar.ph1516
  %.51182.us = phi i64 [ %631, %scalar.ph1516 ], [ %.51182.us.ph, %scalar.ph1516.preheader ]
  %.59081181.us = phi i64 [ %632, %scalar.ph1516 ], [ %.59081181.us.ph, %scalar.ph1516.preheader ]
  %.89211180.us = phi i64 [ %638, %scalar.ph1516 ], [ %.89211180.us.ph, %scalar.ph1516.preheader ]
  %631 = add nsw i64 %.51182.us, 1
  %632 = add nsw i64 %.59081181.us, 1
  %633 = getelementptr float, ptr %11, i64 %.51182.us
  %634 = load float, ptr %633, align 4, !tbaa !9
  %635 = getelementptr float, ptr %11, i64 %.59081181.us
  %636 = load float, ptr %635, align 4, !tbaa !9
  %gep1189.us = getelementptr %struct.complex, ptr %invariant.gep1188.us, i64 %.89211180.us
  store float %634, ptr %gep1189.us, align 4, !tbaa !17
  %637 = getelementptr inbounds i8, ptr %gep1189.us, i64 4
  store float %636, ptr %637, align 4, !tbaa !39
  %638 = add nsw i64 %.89211180.us, 1
  %.not994.not.us = icmp slt i64 %638, %595
  br i1 %.not994.not.us, label %scalar.ph1516, label %._crit_edge1185.us, !llvm.loop !79

._crit_edge1185.us:                               ; preds = %scalar.ph1516, %middle.block1515
  %.lcssa1345 = phi i64 [ %ind.end1521, %middle.block1515 ], [ %631, %scalar.ph1516 ]
  %.lcssa1344 = phi i64 [ %ind.end1523, %middle.block1515 ], [ %632, %scalar.ph1516 ]
  %639 = add nuw i64 %.89341191.us, 1
  %exitcond1311.not = icmp eq i64 %.89341191.us, %593
  %indvar.next1484 = add i64 %indvar1483, 1
  br i1 %exitcond1311.not, label %._crit_edge1196, label %.lr.ph1184.us, !llvm.loop !80

._crit_edge1196:                                  ; preds = %._crit_edge1185.us, %.lr.ph1195, %._crit_edge1178
  %gep1200 = getelementptr %struct.complex, ptr %invariant.gep1197, i64 %.09461206
  %640 = getelementptr inbounds %struct.complex, ptr %31, i64 %.09461206
  %641 = call i32 @clacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef %gep1200, ptr noundef nonnull %7, ptr noundef nonnull %640, ptr noundef nonnull %2) #5
  br label %663

642:                                              ; preds = %525
  %643 = getelementptr inbounds float, ptr %26, i64 %.09461206
  %644 = getelementptr inbounds float, ptr %27, i64 %.09461206
  %645 = getelementptr float, ptr %460, i64 %.09461206
  %646 = getelementptr i64, ptr %467, i64 %520
  %647 = getelementptr float, ptr %468, i64 %520
  %648 = getelementptr float, ptr %469, i64 %520
  %649 = getelementptr float, ptr %470, i64 %520
  %650 = getelementptr float, ptr %471, i64 %520
  %651 = getelementptr i64, ptr %472, i64 %520
  %652 = getelementptr i64, ptr %473, i64 %520
  %653 = getelementptr i64, ptr %474, i64 %520
  %654 = getelementptr float, ptr %475, i64 %520
  %655 = getelementptr float, ptr %476, i64 %520
  %656 = getelementptr float, ptr %477, i64 %520
  %657 = call i32 @slasda_(ptr noundef nonnull %23, ptr noundef nonnull %1, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %643, ptr noundef nonnull %644, ptr noundef nonnull %527, ptr noundef nonnull %2, ptr noundef %645, ptr noundef %646, ptr noundef %647, ptr noundef %648, ptr noundef %649, ptr noundef %650, ptr noundef %651, ptr noundef %652, ptr noundef nonnull %2, ptr noundef %653, ptr noundef %654, ptr noundef %655, ptr noundef %656, ptr noundef nonnull %461, ptr noundef nonnull %478, ptr noundef nonnull %13) #5
  %658 = load i64, ptr %13, align 8, !tbaa !5
  %.not988 = icmp eq i64 %658, 0
  br i1 %.not988, label %659, label %.loopexit1021

659:                                              ; preds = %642
  %gep1202 = getelementptr %struct.complex, ptr %invariant.gep1197, i64 %.09461206
  %660 = getelementptr inbounds %struct.complex, ptr %31, i64 %.09461206
  %661 = call i32 @clalsa_(ptr noundef nonnull %24, ptr noundef nonnull %1, ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef %gep1202, ptr noundef nonnull %7, ptr noundef nonnull %660, ptr noundef nonnull %2, ptr noundef nonnull %527, ptr noundef nonnull %2, ptr noundef %645, ptr noundef %646, ptr noundef %647, ptr noundef %648, ptr noundef %649, ptr noundef %650, ptr noundef %651, ptr noundef %652, ptr noundef nonnull %2, ptr noundef %653, ptr noundef %654, ptr noundef %655, ptr noundef %656, ptr noundef nonnull %461, ptr noundef nonnull %478, ptr noundef nonnull %13) #5
  %662 = load i64, ptr %13, align 8, !tbaa !5
  %.not989 = icmp eq i64 %662, 0
  br i1 %.not989, label %663, label %.loopexit1021

663:                                              ; preds = %._crit_edge1196, %659, %522
  %664 = add nuw nsw i64 %.49431207, 1
  br label %665

665:                                              ; preds = %._crit_edge1317, %663
  %.pre-phi = phi i64 [ %.pre, %._crit_edge1317 ], [ %664, %663 ]
  %.1947 = phi i64 [ %.09461206, %._crit_edge1317 ], [ %664, %663 ]
  %.2925 = phi i64 [ %.09231208, %._crit_edge1317 ], [ %.1924, %663 ]
  %.not976.not = icmp slt i64 %.49431207, %457
  br i1 %.not976.not, label %482, label %._crit_edge1211, !llvm.loop !81

._crit_edge1211:                                  ; preds = %665, %._crit_edge1148
  %666 = phi i64 [ 0, %._crit_edge1148 ], [ %.2925, %665 ]
  %667 = call i64 @f2c_isamax(ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull @c__1) #5
  %668 = getelementptr inbounds float, ptr %26, i64 %667
  %669 = load float, ptr %668, align 4, !tbaa !9
  %670 = fcmp oge float %669, 0.000000e+00
  %671 = fneg float %669
  %672 = select i1 %670, float %669, float %671
  %673 = fmul float %.0938, %672
  %674 = load i64, ptr %2, align 8, !tbaa !5
  %.not9771213 = icmp slt i64 %674, 1
  br i1 %.not9771213, label %._crit_edge1217, label %.lr.ph1216

.lr.ph1216:                                       ; preds = %._crit_edge1211, %689
  %.59441214 = phi i64 [ %694, %689 ], [ 1, %._crit_edge1211 ]
  %675 = getelementptr inbounds float, ptr %26, i64 %.59441214
  %676 = load float, ptr %675, align 4, !tbaa !9
  %677 = fcmp oge float %676, 0.000000e+00
  %678 = fneg float %676
  %679 = select i1 %677, float %676, float %678
  %680 = fcmp ugt float %679, %673
  br i1 %680, label %684, label %681

681:                                              ; preds = %.lr.ph1216
  %682 = getelementptr inbounds %struct.complex, ptr %31, i64 %.59441214
  %683 = call i32 @claset_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef nonnull %682, ptr noundef nonnull %2) #5
  br label %689

684:                                              ; preds = %.lr.ph1216
  %685 = load i64, ptr %9, align 8, !tbaa !5
  %686 = add nsw i64 %685, 1
  store i64 %686, ptr %9, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.complex, ptr %31, i64 %.59441214
  %688 = call i32 @clascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %675, ptr noundef nonnull @c_b10, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull %687, ptr noundef nonnull %2, ptr noundef nonnull %13) #5
  br label %689

689:                                              ; preds = %684, %681
  %690 = load float, ptr %675, align 4, !tbaa !9
  %691 = fcmp oge float %690, 0.000000e+00
  %692 = fneg float %690
  %693 = select i1 %691, float %690, float %692
  store float %693, ptr %675, align 4, !tbaa !9
  %694 = add nuw nsw i64 %.59441214, 1
  %.not977.not = icmp slt i64 %.59441214, %674
  br i1 %.not977.not, label %.lr.ph1216, label %._crit_edge1217, !llvm.loop !82

._crit_edge1217:                                  ; preds = %689, %._crit_edge1211
  store i64 1, ptr %24, align 8, !tbaa !5
  %.not9781267 = icmp slt i64 %666, 1
  br i1 %.not9781267, label %._crit_edge1271, label %.lr.ph1270

.lr.ph1270:                                       ; preds = %._crit_edge1217
  %695 = getelementptr i64, ptr %33, i64 %420
  %696 = add nsw i64 %439, -1
  %697 = getelementptr float, ptr %32, i64 %421
  %698 = getelementptr inbounds float, ptr %32, i64 %439
  %699 = getelementptr inbounds float, ptr %32, i64 %435
  %700 = getelementptr inbounds float, ptr %32, i64 %438
  %701 = add nsw i64 %435, -1
  %702 = add nsw i64 %438, -1
  %703 = getelementptr i64, ptr %12, i64 %reass.add
  %704 = getelementptr float, ptr %32, i64 %424
  %705 = getelementptr float, ptr %32, i64 %426
  %706 = getelementptr float, ptr %32, i64 %428
  %707 = getelementptr float, ptr %32, i64 %431
  %708 = getelementptr i64, ptr %33, i64 %441
  %709 = getelementptr i64, ptr %33, i64 %443
  %710 = getelementptr i64, ptr %33, i64 %442
  %711 = getelementptr float, ptr %32, i64 %434
  %712 = getelementptr float, ptr %32, i64 %429
  %713 = getelementptr float, ptr %32, i64 %430
  %714 = getelementptr inbounds i64, ptr %33, i64 %444
  %715 = shl i64 %28, 3
  %scevgep1583 = getelementptr i8, ptr %6, i64 -8
  %scevgep1585 = getelementptr i8, ptr %6, i64 -8
  %716 = shl i64 %28, 3
  %scevgep1633 = getelementptr i8, ptr %10, i64 -8
  %scevgep1635 = getelementptr i8, ptr %10, i64 -12
  %invariant.gep1768 = getelementptr i8, ptr %11, i64 4
  %invariant.gep1772 = getelementptr i8, ptr %11, i64 8
  %invariant.gep1774 = getelementptr i8, ptr %11, i64 12
  %invariant.gep1778 = getelementptr i8, ptr %6, i64 -4
  %invariant.gep1780 = getelementptr i8, ptr %6, i64 -8
  %stride.check1601 = icmp slt i64 %716, 0
  br label %717

717:                                              ; preds = %.lr.ph1270, %.loopexit
  %.69451268 = phi i64 [ 1, %.lr.ph1270 ], [ %884, %.loopexit ]
  %718 = getelementptr inbounds i64, ptr %33, i64 %.69451268
  %719 = load i64, ptr %718, align 8, !tbaa !5
  %720 = add nsw i64 %719, -1
  %721 = getelementptr i64, ptr %695, i64 %.69451268
  %722 = load i64, ptr %721, align 8, !tbaa !5
  store i64 %722, ptr %22, align 8, !tbaa !5
  %723 = icmp eq i64 %722, 1
  br i1 %723, label %724, label %727

724:                                              ; preds = %717
  %725 = getelementptr inbounds %struct.complex, ptr %31, i64 %719
  %gep1266 = getelementptr %struct.complex, ptr %invariant.gep1197, i64 %719
  %726 = call i32 @f2c_ccopy(ptr noundef nonnull %3, ptr noundef nonnull %725, ptr noundef nonnull %2, ptr noundef %gep1266, ptr noundef nonnull %7) #5
  br label %.loopexit

727:                                              ; preds = %717
  %728 = load i64, ptr %1, align 8, !tbaa !5
  %.not979 = icmp sgt i64 %722, %728
  br i1 %.not979, label %867, label %729

729:                                              ; preds = %727
  %730 = load i64, ptr %2, align 8, !tbaa !5
  %731 = load i64, ptr %3, align 8, !tbaa !5
  %.not9811225 = icmp slt i64 %731, 1
  %.not9861218 = icmp slt i64 %722, 1
  %or.cond1335 = or i1 %.not9811225, %.not9861218
  br i1 %or.cond1335, label %._crit_edge1231, label %.lr.ph1222.preheader

.lr.ph1222.preheader:                             ; preds = %729
  %732 = xor i64 %730, -1
  %733 = add i64 %719, %732
  %734 = shl i64 %722, 2
  %scevgep1631 = getelementptr i8, ptr %11, i64 %734
  %735 = shl i64 %719, 3
  %scevgep1634 = getelementptr i8, ptr %scevgep1633, i64 %735
  %736 = shl i64 %730, 3
  %737 = add nsw i64 %731, -1
  %738 = mul i64 %736, %737
  %739 = shl i64 %722, 3
  %740 = getelementptr i8, ptr %scevgep1635, i64 %738
  %741 = getelementptr i8, ptr %740, i64 %739
  %scevgep1636 = getelementptr i8, ptr %741, i64 %735
  %742 = add nuw i64 %722, 1
  %min.iters.check1643 = icmp ult i64 %722, 8
  %.mask1660 = and i64 %730, 1152921504606846976
  %stride.check1640 = icmp ne i64 %.mask1660, 0
  %n.vec1646 = and i64 %722, 9223372036854775800
  %ind.end1649 = or disjoint i64 %n.vec1646, 1
  %cmp.n1656 = icmp eq i64 %722, %n.vec1646
  br label %.lr.ph1222

.lr.ph1222:                                       ; preds = %.lr.ph1222.preheader, %._crit_edge1223
  %.61228 = phi i64 [ %.lcssa, %._crit_edge1223 ], [ %696, %.lr.ph1222.preheader ]
  %.99351227 = phi i64 [ %798, %._crit_edge1223 ], [ 1, %.lr.ph1222.preheader ]
  %.131226 = phi i64 [ %743, %._crit_edge1223 ], [ %733, %.lr.ph1222.preheader ]
  %743 = add nsw i64 %.131226, %730
  %744 = getelementptr %struct.complex, ptr %31, i64 %743
  br i1 %min.iters.check1643, label %scalar.ph1642.preheader, label %vector.memcheck1629

vector.memcheck1629:                              ; preds = %.lr.ph1222
  %745 = shl i64 %.61228, 2
  %scevgep1630 = getelementptr i8, ptr %11, i64 %745
  %scevgep1632 = getelementptr i8, ptr %scevgep1631, i64 %745
  %bound01637 = icmp ult ptr %scevgep1630, %scevgep1636
  %bound11638 = icmp ult ptr %scevgep1634, %scevgep1632
  %found.conflict1639 = and i1 %bound01637, %bound11638
  %746 = or i1 %found.conflict1639, %stride.check1640
  br i1 %746, label %scalar.ph1642.preheader, label %vector.ph1644

vector.ph1644:                                    ; preds = %vector.memcheck1629
  %ind.end1647 = add i64 %.61228, %n.vec1646
  %invariant.gep1764 = getelementptr i8, ptr %744, i64 64
  %747 = getelementptr float, ptr %11, i64 %.61228
  br label %vector.body1651

vector.body1651:                                  ; preds = %vector.body1651, %vector.ph1644
  %index1652 = phi i64 [ 0, %vector.ph1644 ], [ %index.next1655, %vector.body1651 ]
  %offset.idx1654 = or disjoint i64 %index1652, 1
  %748 = or disjoint i64 %index1652, 2
  %749 = or disjoint i64 %index1652, 3
  %750 = or disjoint i64 %index1652, 4
  %751 = or disjoint i64 %index1652, 5
  %752 = or disjoint i64 %index1652, 6
  %753 = or disjoint i64 %index1652, 7
  %754 = getelementptr %struct.complex, ptr %744, i64 %offset.idx1654
  %755 = getelementptr %struct.complex, ptr %744, i64 %748
  %756 = getelementptr %struct.complex, ptr %744, i64 %749
  %757 = getelementptr %struct.complex, ptr %744, i64 %750
  %758 = getelementptr %struct.complex, ptr %744, i64 %751
  %759 = getelementptr %struct.complex, ptr %744, i64 %752
  %760 = getelementptr %struct.complex, ptr %744, i64 %753
  %gep1765 = getelementptr %struct.complex, ptr %invariant.gep1764, i64 %index1652
  %761 = load float, ptr %754, align 4, !tbaa !17, !alias.scope !83
  %762 = load float, ptr %755, align 4, !tbaa !17, !alias.scope !83
  %763 = load float, ptr %756, align 4, !tbaa !17, !alias.scope !83
  %764 = load float, ptr %757, align 4, !tbaa !17, !alias.scope !83
  %765 = insertelement <4 x float> poison, float %761, i64 0
  %766 = insertelement <4 x float> %765, float %762, i64 1
  %767 = insertelement <4 x float> %766, float %763, i64 2
  %768 = insertelement <4 x float> %767, float %764, i64 3
  %769 = load float, ptr %758, align 4, !tbaa !17, !alias.scope !83
  %770 = load float, ptr %759, align 4, !tbaa !17, !alias.scope !83
  %771 = load float, ptr %760, align 4, !tbaa !17, !alias.scope !83
  %772 = load float, ptr %gep1765, align 4, !tbaa !17, !alias.scope !83
  %773 = insertelement <4 x float> poison, float %769, i64 0
  %774 = insertelement <4 x float> %773, float %770, i64 1
  %775 = insertelement <4 x float> %774, float %771, i64 2
  %776 = insertelement <4 x float> %775, float %772, i64 3
  %777 = getelementptr float, ptr %747, i64 %index1652
  %778 = getelementptr i8, ptr %777, i64 16
  store <4 x float> %768, ptr %777, align 4, !tbaa !9, !alias.scope !86, !noalias !83
  store <4 x float> %776, ptr %778, align 4, !tbaa !9, !alias.scope !86, !noalias !83
  %index.next1655 = add nuw i64 %index1652, 8
  %779 = icmp eq i64 %index.next1655, %n.vec1646
  br i1 %779, label %middle.block1641, label %vector.body1651, !llvm.loop !88

middle.block1641:                                 ; preds = %vector.body1651
  br i1 %cmp.n1656, label %._crit_edge1223, label %scalar.ph1642.preheader

scalar.ph1642.preheader:                          ; preds = %middle.block1641, %vector.memcheck1629, %.lr.ph1222
  %.71220.ph = phi i64 [ %.61228, %vector.memcheck1629 ], [ %.61228, %.lr.ph1222 ], [ %ind.end1647, %middle.block1641 ]
  %.99221219.ph = phi i64 [ 1, %vector.memcheck1629 ], [ 1, %.lr.ph1222 ], [ %ind.end1649, %middle.block1641 ]
  %780 = sub i64 %742, %.99221219.ph
  %781 = sub i64 %722, %.99221219.ph
  %xtraiter1687 = and i64 %780, 3
  %lcmp.mod1688.not = icmp eq i64 %xtraiter1687, 0
  br i1 %lcmp.mod1688.not, label %scalar.ph1642.prol.loopexit, label %scalar.ph1642.prol

scalar.ph1642.prol:                               ; preds = %scalar.ph1642.preheader, %scalar.ph1642.prol
  %.71220.prol = phi i64 [ %782, %scalar.ph1642.prol ], [ %.71220.ph, %scalar.ph1642.preheader ]
  %.99221219.prol = phi i64 [ %786, %scalar.ph1642.prol ], [ %.99221219.ph, %scalar.ph1642.preheader ]
  %prol.iter1689 = phi i64 [ %prol.iter1689.next, %scalar.ph1642.prol ], [ 0, %scalar.ph1642.preheader ]
  %782 = add nsw i64 %.71220.prol, 1
  %783 = getelementptr %struct.complex, ptr %744, i64 %.99221219.prol
  %784 = load float, ptr %783, align 4, !tbaa !17
  %785 = getelementptr float, ptr %11, i64 %.71220.prol
  store float %784, ptr %785, align 4, !tbaa !9
  %786 = add nuw i64 %.99221219.prol, 1
  %prol.iter1689.next = add i64 %prol.iter1689, 1
  %prol.iter1689.cmp.not = icmp eq i64 %prol.iter1689.next, %xtraiter1687
  br i1 %prol.iter1689.cmp.not, label %scalar.ph1642.prol.loopexit, label %scalar.ph1642.prol, !llvm.loop !89

scalar.ph1642.prol.loopexit:                      ; preds = %scalar.ph1642.prol, %scalar.ph1642.preheader
  %.lcssa1661.unr = phi i64 [ poison, %scalar.ph1642.preheader ], [ %782, %scalar.ph1642.prol ]
  %.71220.unr = phi i64 [ %.71220.ph, %scalar.ph1642.preheader ], [ %782, %scalar.ph1642.prol ]
  %.99221219.unr = phi i64 [ %.99221219.ph, %scalar.ph1642.preheader ], [ %786, %scalar.ph1642.prol ]
  %787 = icmp ult i64 %781, 3
  br i1 %787, label %._crit_edge1223, label %scalar.ph1642.preheader.new

scalar.ph1642.preheader.new:                      ; preds = %scalar.ph1642.prol.loopexit
  %invariant.gep1766 = getelementptr i8, ptr %744, i64 8
  %invariant.gep1770 = getelementptr i8, ptr %744, i64 16
  br label %scalar.ph1642

scalar.ph1642:                                    ; preds = %scalar.ph1642, %scalar.ph1642.preheader.new
  %.71220 = phi i64 [ %.71220.unr, %scalar.ph1642.preheader.new ], [ %794, %scalar.ph1642 ]
  %.99221219 = phi i64 [ %.99221219.unr, %scalar.ph1642.preheader.new ], [ %797, %scalar.ph1642 ]
  %788 = getelementptr %struct.complex, ptr %744, i64 %.99221219
  %789 = load float, ptr %788, align 4, !tbaa !17
  %790 = getelementptr float, ptr %11, i64 %.71220
  store float %789, ptr %790, align 4, !tbaa !9
  %gep1767 = getelementptr %struct.complex, ptr %invariant.gep1766, i64 %.99221219
  %791 = load float, ptr %gep1767, align 4, !tbaa !17
  %gep1769 = getelementptr float, ptr %invariant.gep1768, i64 %.71220
  store float %791, ptr %gep1769, align 4, !tbaa !9
  %gep1771 = getelementptr %struct.complex, ptr %invariant.gep1770, i64 %.99221219
  %792 = load float, ptr %gep1771, align 4, !tbaa !17
  %gep1773 = getelementptr float, ptr %invariant.gep1772, i64 %.71220
  store float %792, ptr %gep1773, align 4, !tbaa !9
  %793 = add nuw i64 %.99221219, 3
  %794 = add nsw i64 %.71220, 4
  %795 = getelementptr %struct.complex, ptr %744, i64 %793
  %796 = load float, ptr %795, align 4, !tbaa !17
  %gep1775 = getelementptr float, ptr %invariant.gep1774, i64 %.71220
  store float %796, ptr %gep1775, align 4, !tbaa !9
  %797 = add nuw i64 %.99221219, 4
  %exitcond1312.not.3 = icmp eq i64 %793, %722
  br i1 %exitcond1312.not.3, label %._crit_edge1223, label %scalar.ph1642, !llvm.loop !90

._crit_edge1223:                                  ; preds = %scalar.ph1642.prol.loopexit, %scalar.ph1642, %middle.block1641
  %.lcssa = phi i64 [ %ind.end1647, %middle.block1641 ], [ %.lcssa1661.unr, %scalar.ph1642.prol.loopexit ], [ %794, %scalar.ph1642 ]
  %798 = add nuw i64 %.99351227, 1
  %exitcond1313.not = icmp eq i64 %.99351227, %731
  br i1 %exitcond1313.not, label %._crit_edge1231, label %.lr.ph1222, !llvm.loop !91

._crit_edge1231:                                  ; preds = %._crit_edge1223, %729
  %799 = getelementptr float, ptr %697, i64 %719
  %800 = call i32 @f2c_sgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef nonnull @c_b10, ptr noundef %799, ptr noundef nonnull %2, ptr noundef nonnull %698, ptr noundef nonnull %22, ptr noundef nonnull @c_b35, ptr noundef nonnull %699, ptr noundef nonnull %22) #5
  %801 = load i64, ptr %3, align 8, !tbaa !5
  %.not9821239 = icmp slt i64 %801, 1
  %802 = load i64, ptr %22, align 8
  %803 = icmp slt i64 %802, 1
  %or.cond1337 = select i1 %.not9821239, i1 true, i1 %803
  br i1 %or.cond1337, label %._crit_edge1245, label %.lr.ph1244.split.preheader

.lr.ph1244.split.preheader:                       ; preds = %._crit_edge1231
  %804 = load i64, ptr %2, align 8, !tbaa !5
  %805 = xor i64 %804, -1
  %806 = add i64 %719, %805
  br label %.lr.ph1244.split

.lr.ph1244.split:                                 ; preds = %.lr.ph1244.split.preheader, %._crit_edge1237
  %.69091242 = phi i64 [ %.7910.lcssa, %._crit_edge1237 ], [ %696, %.lr.ph1244.split.preheader ]
  %.109361241 = phi i64 [ %818, %._crit_edge1237 ], [ 1, %.lr.ph1244.split.preheader ]
  %.141240 = phi i64 [ %808, %._crit_edge1237 ], [ %806, %.lr.ph1244.split.preheader ]
  %807 = load i64, ptr %2, align 8, !tbaa !5
  %808 = add nsw i64 %807, %.141240
  %809 = load i64, ptr %22, align 8, !tbaa !5
  %.not9851232 = icmp slt i64 %809, 1
  br i1 %.not9851232, label %._crit_edge1237, label %.lr.ph1236

.lr.ph1236:                                       ; preds = %.lr.ph1244.split
  %810 = getelementptr %struct.complex, ptr %31, i64 %808
  br label %811

811:                                              ; preds = %.lr.ph1236, %811
  %.79101234 = phi i64 [ %.69091242, %.lr.ph1236 ], [ %812, %811 ]
  %.101233 = phi i64 [ 1, %.lr.ph1236 ], [ %817, %811 ]
  %812 = add nsw i64 %.79101234, 1
  %813 = getelementptr %struct.complex, ptr %810, i64 %.101233
  %814 = call double @r_imag(ptr noundef %813) #5
  %815 = fptrunc double %814 to float
  %816 = getelementptr float, ptr %11, i64 %.79101234
  store float %815, ptr %816, align 4, !tbaa !9
  %817 = add nuw i64 %.101233, 1
  %exitcond1314.not = icmp eq i64 %.101233, %809
  br i1 %exitcond1314.not, label %._crit_edge1237, label %811, !llvm.loop !92

._crit_edge1237:                                  ; preds = %811, %.lr.ph1244.split
  %.7910.lcssa = phi i64 [ %.69091242, %.lr.ph1244.split ], [ %812, %811 ]
  %818 = add nuw i64 %.109361241, 1
  %exitcond1315.not = icmp eq i64 %.109361241, %801
  br i1 %exitcond1315.not, label %._crit_edge1245, label %.lr.ph1244.split, !llvm.loop !93

._crit_edge1245:                                  ; preds = %._crit_edge1237, %._crit_edge1231
  %819 = call i32 @f2c_sgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef nonnull @c_b10, ptr noundef %799, ptr noundef nonnull %2, ptr noundef nonnull %698, ptr noundef nonnull %22, ptr noundef nonnull @c_b35, ptr noundef nonnull %700, ptr noundef nonnull %22) #5
  %820 = load i64, ptr %3, align 8, !tbaa !5
  %.not9831257 = icmp slt i64 %820, 1
  br i1 %.not9831257, label %.loopexit, label %.lr.ph1262

.lr.ph1262:                                       ; preds = %._crit_edge1245
  %821 = load i64, ptr %22, align 8, !tbaa !5
  %822 = add i64 %821, %719
  %.not984.not1246 = icmp sgt i64 %821, 0
  br i1 %.not984.not1246, label %.lr.ph1251.us.preheader, label %.loopexit

.lr.ph1251.us.preheader:                          ; preds = %.lr.ph1262
  %823 = add i64 %719, 1
  %smax1571 = call i64 @llvm.smax.i64(i64 %822, i64 %823)
  %824 = xor i64 %719, -1
  %825 = add i64 %smax1571, %824
  %826 = shl i64 %719, 3
  %scevgep1584 = getelementptr i8, ptr %scevgep1583, i64 %826
  %827 = add nsw i64 %820, -1
  %828 = mul i64 %716, %827
  %829 = add i64 %719, 1
  %smax1586 = call i64 @llvm.smax.i64(i64 %822, i64 %829)
  %830 = shl i64 %smax1586, 3
  %831 = getelementptr i8, ptr %scevgep1585, i64 %828
  %scevgep1587 = getelementptr i8, ptr %831, i64 %830
  %832 = mul i64 %719, -4
  %scevgep1589 = getelementptr i8, ptr %11, i64 %832
  %scevgep1592 = getelementptr i8, ptr %11, i64 %832
  %833 = add i64 %719, 1
  %smax1603 = call i64 @llvm.smax.i64(i64 %822, i64 %833)
  %834 = sub i64 %smax1603, %719
  %min.iters.check1606 = icmp ult i64 %834, 24
  %gep1779 = getelementptr i8, ptr %invariant.gep1778, i64 %826
  %gep1781 = getelementptr i8, ptr %invariant.gep1780, i64 %826
  %mul.result1576 = shl i64 %825, 3
  %mul.result1580 = shl i64 %825, 3
  %mul.overflow1581 = icmp ugt i64 %825, 2305843009213693951
  %n.vec1609 = and i64 %834, -4
  %ind.end1614 = add i64 %719, %n.vec1609
  %cmp.n1628 = icmp eq i64 %834, %n.vec1609
  br label %.lr.ph1251.us

.lr.ph1251.us:                                    ; preds = %.lr.ph1251.us.preheader, %._crit_edge1252.us
  %indvar1572 = phi i64 [ 0, %.lr.ph1251.us.preheader ], [ %indvar.next1573, %._crit_edge1252.us ]
  %.81260.us = phi i64 [ %701, %.lr.ph1251.us.preheader ], [ %.lcssa1341, %._crit_edge1252.us ]
  %.89111259.us = phi i64 [ %702, %.lr.ph1251.us.preheader ], [ %.lcssa1340, %._crit_edge1252.us ]
  %.119371258.us = phi i64 [ 1, %.lr.ph1251.us.preheader ], [ %866, %._crit_edge1252.us ]
  %835 = mul nsw i64 %.119371258.us, %28
  %invariant.gep1255.us = getelementptr %struct.complex, ptr %30, i64 %835
  br i1 %min.iters.check1606, label %scalar.ph1605.preheader, label %vector.scevcheck1570

vector.scevcheck1570:                             ; preds = %.lr.ph1251.us
  %836 = mul i64 %715, %indvar1572
  %scevgep1578 = getelementptr i8, ptr %gep1779, i64 %836
  %scevgep1574 = getelementptr i8, ptr %gep1781, i64 %836
  %837 = getelementptr i8, ptr %scevgep1574, i64 %mul.result1576
  %838 = icmp ult ptr %837, %scevgep1574
  %839 = getelementptr i8, ptr %scevgep1578, i64 %mul.result1580
  %840 = icmp ult ptr %839, %scevgep1578
  %841 = or i1 %840, %mul.overflow1581
  %842 = or i1 %838, %841
  br i1 %842, label %scalar.ph1605.preheader, label %vector.memcheck1582

vector.memcheck1582:                              ; preds = %vector.scevcheck1570
  %843 = shl i64 %.89111259.us, 2
  %scevgep1588 = getelementptr i8, ptr %11, i64 %843
  %844 = add i64 %smax1586, %.89111259.us
  %845 = shl i64 %844, 2
  %scevgep1590 = getelementptr i8, ptr %scevgep1589, i64 %845
  %846 = shl i64 %.81260.us, 2
  %scevgep1591 = getelementptr i8, ptr %11, i64 %846
  %847 = add i64 %smax1586, %.81260.us
  %848 = shl i64 %847, 2
  %scevgep1593 = getelementptr i8, ptr %scevgep1592, i64 %848
  %bound01594 = icmp ult ptr %scevgep1584, %scevgep1590
  %bound11595 = icmp ult ptr %scevgep1588, %scevgep1587
  %found.conflict1596 = and i1 %bound01594, %bound11595
  %bound01598 = icmp ult ptr %scevgep1584, %scevgep1593
  %bound11599 = icmp ult ptr %scevgep1591, %scevgep1587
  %found.conflict1600 = and i1 %bound01598, %bound11599
  %849 = or i1 %found.conflict1600, %stride.check1601
  %conflict.rdx1602 = or i1 %found.conflict1596, %849
  br i1 %conflict.rdx1602, label %scalar.ph1605.preheader, label %vector.ph1607

vector.ph1607:                                    ; preds = %vector.memcheck1582
  %ind.end1610 = add i64 %.81260.us, %n.vec1609
  %ind.end1612 = add i64 %.89111259.us, %n.vec1609
  %850 = getelementptr float, ptr %11, i64 %.81260.us
  %851 = getelementptr float, ptr %11, i64 %.89111259.us
  %invariant.gep1776 = getelementptr i8, ptr %invariant.gep1255.us, i64 16
  br label %vector.body1616

vector.body1616:                                  ; preds = %vector.body1616, %vector.ph1607
  %index1617 = phi i64 [ 0, %vector.ph1607 ], [ %index.next1627, %vector.body1616 ]
  %offset.idx1620 = add i64 %719, %index1617
  %852 = getelementptr float, ptr %850, i64 %index1617
  %853 = getelementptr i8, ptr %852, i64 8
  %wide.load1621 = load <2 x float>, ptr %852, align 4, !tbaa !9, !alias.scope !94
  %wide.load1622 = load <2 x float>, ptr %853, align 4, !tbaa !9, !alias.scope !94
  %854 = getelementptr float, ptr %851, i64 %index1617
  %855 = getelementptr i8, ptr %854, i64 8
  %wide.load1623 = load <2 x float>, ptr %854, align 4, !tbaa !9, !alias.scope !97
  %wide.load1624 = load <2 x float>, ptr %855, align 4, !tbaa !9, !alias.scope !97
  %856 = getelementptr %struct.complex, ptr %invariant.gep1255.us, i64 %offset.idx1620
  %gep1777 = getelementptr %struct.complex, ptr %invariant.gep1776, i64 %offset.idx1620
  %interleaved.vec1625 = shufflevector <2 x float> %wide.load1621, <2 x float> %wide.load1623, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec1625, ptr %856, align 4, !tbaa !9
  %interleaved.vec1626 = shufflevector <2 x float> %wide.load1622, <2 x float> %wide.load1624, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec1626, ptr %gep1777, align 4, !tbaa !9
  %index.next1627 = add nuw i64 %index1617, 4
  %857 = icmp eq i64 %index.next1627, %n.vec1609
  br i1 %857, label %middle.block1604, label %vector.body1616, !llvm.loop !99

middle.block1604:                                 ; preds = %vector.body1616
  br i1 %cmp.n1628, label %._crit_edge1252.us, label %scalar.ph1605.preheader

scalar.ph1605.preheader:                          ; preds = %middle.block1604, %vector.memcheck1582, %vector.scevcheck1570, %.lr.ph1251.us
  %.91249.us.ph = phi i64 [ %.81260.us, %vector.memcheck1582 ], [ %.81260.us, %vector.scevcheck1570 ], [ %.81260.us, %.lr.ph1251.us ], [ %ind.end1610, %middle.block1604 ]
  %.99121248.us.ph = phi i64 [ %.89111259.us, %vector.memcheck1582 ], [ %.89111259.us, %vector.scevcheck1570 ], [ %.89111259.us, %.lr.ph1251.us ], [ %ind.end1612, %middle.block1604 ]
  %.111247.us.ph = phi i64 [ %719, %vector.memcheck1582 ], [ %719, %vector.scevcheck1570 ], [ %719, %.lr.ph1251.us ], [ %ind.end1614, %middle.block1604 ]
  br label %scalar.ph1605

scalar.ph1605:                                    ; preds = %scalar.ph1605.preheader, %scalar.ph1605
  %.91249.us = phi i64 [ %858, %scalar.ph1605 ], [ %.91249.us.ph, %scalar.ph1605.preheader ]
  %.99121248.us = phi i64 [ %859, %scalar.ph1605 ], [ %.99121248.us.ph, %scalar.ph1605.preheader ]
  %.111247.us = phi i64 [ %865, %scalar.ph1605 ], [ %.111247.us.ph, %scalar.ph1605.preheader ]
  %858 = add nsw i64 %.91249.us, 1
  %859 = add nsw i64 %.99121248.us, 1
  %860 = getelementptr float, ptr %11, i64 %.91249.us
  %861 = load float, ptr %860, align 4, !tbaa !9
  %862 = getelementptr float, ptr %11, i64 %.99121248.us
  %863 = load float, ptr %862, align 4, !tbaa !9
  %gep1256.us = getelementptr %struct.complex, ptr %invariant.gep1255.us, i64 %.111247.us
  store float %861, ptr %gep1256.us, align 4, !tbaa !17
  %864 = getelementptr inbounds i8, ptr %gep1256.us, i64 4
  store float %863, ptr %864, align 4, !tbaa !39
  %865 = add nsw i64 %.111247.us, 1
  %.not984.not.us = icmp slt i64 %865, %822
  br i1 %.not984.not.us, label %scalar.ph1605, label %._crit_edge1252.us, !llvm.loop !100

._crit_edge1252.us:                               ; preds = %scalar.ph1605, %middle.block1604
  %.lcssa1341 = phi i64 [ %ind.end1610, %middle.block1604 ], [ %858, %scalar.ph1605 ]
  %.lcssa1340 = phi i64 [ %ind.end1612, %middle.block1604 ], [ %859, %scalar.ph1605 ]
  %866 = add nuw i64 %.119371258.us, 1
  %exitcond1316.not = icmp eq i64 %.119371258.us, %820
  %indvar.next1573 = add i64 %indvar1572, 1
  br i1 %exitcond1316.not, label %.loopexit, label %.lr.ph1251.us, !llvm.loop !101

867:                                              ; preds = %727
  %868 = getelementptr inbounds %struct.complex, ptr %31, i64 %719
  %gep1264 = getelementptr %struct.complex, ptr %invariant.gep1197, i64 %719
  %869 = getelementptr inbounds float, ptr %32, i64 %719
  %870 = getelementptr float, ptr %697, i64 %719
  %871 = getelementptr i64, ptr %703, i64 %720
  %872 = getelementptr float, ptr %704, i64 %720
  %873 = getelementptr float, ptr %705, i64 %720
  %874 = getelementptr float, ptr %706, i64 %720
  %875 = getelementptr float, ptr %707, i64 %720
  %876 = getelementptr i64, ptr %708, i64 %720
  %877 = getelementptr i64, ptr %709, i64 %720
  %878 = getelementptr i64, ptr %710, i64 %720
  %879 = getelementptr float, ptr %711, i64 %720
  %880 = getelementptr float, ptr %712, i64 %720
  %881 = getelementptr float, ptr %713, i64 %720
  %882 = call i32 @clalsa_(ptr noundef nonnull %24, ptr noundef nonnull %1, ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef nonnull %868, ptr noundef nonnull %2, ptr noundef %gep1264, ptr noundef nonnull %7, ptr noundef nonnull %869, ptr noundef nonnull %2, ptr noundef %870, ptr noundef %871, ptr noundef %872, ptr noundef %873, ptr noundef %874, ptr noundef %875, ptr noundef %876, ptr noundef %877, ptr noundef nonnull %2, ptr noundef %878, ptr noundef %879, ptr noundef %880, ptr noundef %881, ptr noundef nonnull %699, ptr noundef nonnull %714, ptr noundef nonnull %13) #5
  %883 = load i64, ptr %13, align 8, !tbaa !5
  %.not980 = icmp eq i64 %883, 0
  br i1 %.not980, label %.loopexit, label %.loopexit1021

.loopexit:                                        ; preds = %._crit_edge1252.us, %.lr.ph1262, %._crit_edge1245, %724, %867
  %884 = add nuw nsw i64 %.69451268, 1
  %.not978.not = icmp slt i64 %.69451268, %666
  br i1 %.not978.not, label %717, label %._crit_edge1271, !llvm.loop !102

._crit_edge1271:                                  ; preds = %.loopexit, %._crit_edge1217
  %885 = call i32 @slascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b10, ptr noundef nonnull %25, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %2, ptr noundef nonnull %13) #5
  %886 = call i32 @slasrt_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %13) #5
  %887 = call i32 @clascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %25, ptr noundef nonnull @c_b10, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %13) #5
  br label %.loopexit1021

.loopexit1021:                                    ; preds = %659, %642, %528, %867, %114, %54, %56, %44, %._crit_edge1271, %._crit_edge1143, %107, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  ret i32 0
}

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

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

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

declare double @r_imag(ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @log(double noundef) local_unnamed_addr #3

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

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

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

declare i32 @slasda_(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, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @clalsa_(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, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn memory(write) "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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 = !{!"float", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13, !16}
!16 = !{!"llvm.loop.unswitch.partial.disable"}
!17 = !{!18, !10, i64 0}
!18 = !{!"", !10, i64 0, !10, i64 4}
!19 = !{!20}
!20 = distinct !{!20, !21}
!21 = distinct !{!21, !"LVerDomain"}
!22 = !{!23}
!23 = distinct !{!23, !21}
!24 = distinct !{!24, !13, !25, !26}
!25 = !{!"llvm.loop.isvectorized", i32 1}
!26 = !{!"llvm.loop.unroll.runtime.disable"}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.unroll.disable"}
!29 = distinct !{!29, !13, !25}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !13}
!32 = distinct !{!32, !13, !16}
!33 = !{!34}
!34 = distinct !{!34, !35}
!35 = distinct !{!35, !"LVerDomain"}
!36 = !{!37}
!37 = distinct !{!37, !35}
!38 = distinct !{!38, !13, !25, !26}
!39 = !{!18, !10, i64 4}
!40 = distinct !{!40, !13, !25}
!41 = distinct !{!41, !13}
!42 = distinct !{!42, !13}
!43 = !{!44}
!44 = distinct !{!44, !45}
!45 = distinct !{!45, !"LVerDomain"}
!46 = !{!47}
!47 = distinct !{!47, !45}
!48 = distinct !{!48, !13, !25, !26}
!49 = distinct !{!49, !28}
!50 = distinct !{!50, !13, !25}
!51 = distinct !{!51, !13}
!52 = distinct !{!52, !13}
!53 = distinct !{!53, !13}
!54 = !{!55}
!55 = distinct !{!55, !56}
!56 = distinct !{!56, !"LVerDomain"}
!57 = !{!58}
!58 = distinct !{!58, !56}
!59 = distinct !{!59, !13, !25, !26}
!60 = distinct !{!60, !13, !25}
!61 = distinct !{!61, !13}
!62 = distinct !{!62, !13}
!63 = !{!64}
!64 = distinct !{!64, !65}
!65 = distinct !{!65, !"LVerDomain"}
!66 = !{!67}
!67 = distinct !{!67, !65}
!68 = distinct !{!68, !13, !25, !26}
!69 = distinct !{!69, !13, !25}
!70 = distinct !{!70, !13}
!71 = distinct !{!71, !13}
!72 = distinct !{!72, !13}
!73 = !{!74}
!74 = distinct !{!74, !75}
!75 = distinct !{!75, !"LVerDomain"}
!76 = !{!77}
!77 = distinct !{!77, !75}
!78 = distinct !{!78, !13, !25, !26}
!79 = distinct !{!79, !13, !25}
!80 = distinct !{!80, !13}
!81 = distinct !{!81, !13}
!82 = distinct !{!82, !13}
!83 = !{!84}
!84 = distinct !{!84, !85}
!85 = distinct !{!85, !"LVerDomain"}
!86 = !{!87}
!87 = distinct !{!87, !85}
!88 = distinct !{!88, !13, !25, !26}
!89 = distinct !{!89, !28}
!90 = distinct !{!90, !13, !25}
!91 = distinct !{!91, !13}
!92 = distinct !{!92, !13}
!93 = distinct !{!93, !13, !16}
!94 = !{!95}
!95 = distinct !{!95, !96}
!96 = distinct !{!96, !"LVerDomain"}
!97 = !{!98}
!98 = distinct !{!98, !96}
!99 = distinct !{!99, !13, !25, !26}
!100 = distinct !{!100, !13, !25}
!101 = distinct !{!101, !13}
!102 = distinct !{!102, !13}


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