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

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

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_n1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [9 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4
@c_b21 = external hidden global float, align 4
@c_b22 = external hidden global float, align 4
@c__33 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @cpbtrf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca %struct.complex, align 4
  %22 = alloca [1056 x %struct.complex], align 16
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  store ptr %5, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 8448, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  %32 = load ptr, ptr %11, align 8, !tbaa !5
  %33 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %33, ptr %13, align 4, !tbaa !9
  %34 = load i32, ptr %13, align 4, !tbaa !9
  %35 = mul nsw i32 %34, 1
  %36 = add nsw i32 1, %35
  store i32 %36, ptr %14, align 4, !tbaa !9
  %37 = load i32, ptr %14, align 4, !tbaa !9
  %38 = load ptr, ptr %10, align 8, !tbaa !5
  %39 = sext i32 %37 to i64
  %40 = sub i64 0, %39
  %41 = getelementptr inbounds %struct.complex, ptr %38, i64 %40
  store ptr %41, ptr %10, align 8, !tbaa !5
  %42 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 0, ptr %42, align 4, !tbaa !9
  %43 = load ptr, ptr %7, align 8, !tbaa !5
  %44 = call i32 @lsame_(ptr noundef %43, ptr noundef @.str)
  %45 = icmp ne i32 %44, 0
  br i1 %45, label %52, label %46

46:                                               ; preds = %6
  %47 = load ptr, ptr %7, align 8, !tbaa !5
  %48 = call i32 @lsame_(ptr noundef %47, ptr noundef @.str.1)
  %49 = icmp ne i32 %48, 0
  br i1 %49, label %52, label %50

50:                                               ; preds = %46
  %51 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 -1, ptr %51, align 4, !tbaa !9
  br label %76

52:                                               ; preds = %46, %6
  %53 = load ptr, ptr %8, align 8, !tbaa !5
  %54 = load i32, ptr %53, align 4, !tbaa !9
  %55 = icmp slt i32 %54, 0
  br i1 %55, label %56, label %58

56:                                               ; preds = %52
  %57 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 -2, ptr %57, align 4, !tbaa !9
  br label %75

58:                                               ; preds = %52
  %59 = load ptr, ptr %9, align 8, !tbaa !5
  %60 = load i32, ptr %59, align 4, !tbaa !9
  %61 = icmp slt i32 %60, 0
  br i1 %61, label %62, label %64

62:                                               ; preds = %58
  %63 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 -3, ptr %63, align 4, !tbaa !9
  br label %74

64:                                               ; preds = %58
  %65 = load ptr, ptr %11, align 8, !tbaa !5
  %66 = load i32, ptr %65, align 4, !tbaa !9
  %67 = load ptr, ptr %9, align 8, !tbaa !5
  %68 = load i32, ptr %67, align 4, !tbaa !9
  %69 = add nsw i32 %68, 1
  %70 = icmp slt i32 %66, %69
  br i1 %70, label %71, label %73

71:                                               ; preds = %64
  %72 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 -5, ptr %72, align 4, !tbaa !9
  br label %73

73:                                               ; preds = %71, %64
  br label %74

74:                                               ; preds = %73, %62
  br label %75

75:                                               ; preds = %74, %56
  br label %76

76:                                               ; preds = %75, %50
  %77 = load ptr, ptr %12, align 8, !tbaa !5
  %78 = load i32, ptr %77, align 4, !tbaa !9
  %79 = icmp ne i32 %78, 0
  br i1 %79, label %80, label %85

80:                                               ; preds = %76
  %81 = load ptr, ptr %12, align 8, !tbaa !5
  %82 = load i32, ptr %81, align 4, !tbaa !9
  %83 = sub nsw i32 0, %82
  store i32 %83, ptr %15, align 4, !tbaa !9
  %84 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %15, i32 noundef 6)
  store i32 1, ptr %31, align 4
  br label %923

85:                                               ; preds = %76
  %86 = load ptr, ptr %8, align 8, !tbaa !5
  %87 = load i32, ptr %86, align 4, !tbaa !9
  %88 = icmp eq i32 %87, 0
  br i1 %88, label %89, label %90

89:                                               ; preds = %85
  store i32 1, ptr %31, align 4
  br label %923

90:                                               ; preds = %85
  %91 = load ptr, ptr %7, align 8, !tbaa !5
  %92 = load ptr, ptr %8, align 8, !tbaa !5
  %93 = load ptr, ptr %9, align 8, !tbaa !5
  %94 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.2, ptr noundef %91, ptr noundef %92, ptr noundef %93, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %94, ptr %28, align 4, !tbaa !9
  %95 = load i32, ptr %28, align 4, !tbaa !9
  %96 = icmp sle i32 %95, 32
  br i1 %96, label %97, label %99

97:                                               ; preds = %90
  %98 = load i32, ptr %28, align 4, !tbaa !9
  br label %100

99:                                               ; preds = %90
  br label %100

100:                                              ; preds = %99, %97
  %101 = phi i32 [ %98, %97 ], [ 32, %99 ]
  store i32 %101, ptr %28, align 4, !tbaa !9
  %102 = load i32, ptr %28, align 4, !tbaa !9
  %103 = icmp sle i32 %102, 1
  br i1 %103, label %109, label %104

104:                                              ; preds = %100
  %105 = load i32, ptr %28, align 4, !tbaa !9
  %106 = load ptr, ptr %9, align 8, !tbaa !5
  %107 = load i32, ptr %106, align 4, !tbaa !9
  %108 = icmp sgt i32 %105, %107
  br i1 %108, label %109, label %119

109:                                              ; preds = %104, %100
  %110 = load ptr, ptr %7, align 8, !tbaa !5
  %111 = load ptr, ptr %8, align 8, !tbaa !5
  %112 = load ptr, ptr %9, align 8, !tbaa !5
  %113 = load ptr, ptr %10, align 8, !tbaa !5
  %114 = load i32, ptr %14, align 4, !tbaa !9
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds %struct.complex, ptr %113, i64 %115
  %117 = load ptr, ptr %11, align 8, !tbaa !5
  %118 = load ptr, ptr %12, align 8, !tbaa !5
  call void @cpbtf2_(ptr noundef %110, ptr noundef %111, ptr noundef %112, ptr noundef %116, ptr noundef %117, ptr noundef %118)
  br label %921

119:                                              ; preds = %104
  %120 = load ptr, ptr %7, align 8, !tbaa !5
  %121 = call i32 @lsame_(ptr noundef %120, ptr noundef @.str)
  %122 = icmp ne i32 %121, 0
  br i1 %122, label %123, label %528

123:                                              ; preds = %119
  %124 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %124, ptr %15, align 4, !tbaa !9
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %125

125:                                              ; preds = %154, %123
  %126 = load i32, ptr %24, align 4, !tbaa !9
  %127 = load i32, ptr %15, align 4, !tbaa !9
  %128 = icmp sle i32 %126, %127
  br i1 %128, label %129, label %157

129:                                              ; preds = %125
  %130 = load i32, ptr %24, align 4, !tbaa !9
  %131 = sub nsw i32 %130, 1
  store i32 %131, ptr %16, align 4, !tbaa !9
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %132

132:                                              ; preds = %150, %129
  %133 = load i32, ptr %23, align 4, !tbaa !9
  %134 = load i32, ptr %16, align 4, !tbaa !9
  %135 = icmp sle i32 %133, %134
  br i1 %135, label %136, label %153

136:                                              ; preds = %132
  %137 = load i32, ptr %23, align 4, !tbaa !9
  %138 = load i32, ptr %24, align 4, !tbaa !9
  %139 = mul nsw i32 %138, 33
  %140 = add nsw i32 %137, %139
  %141 = sub nsw i32 %140, 34
  store i32 %141, ptr %17, align 4, !tbaa !9
  %142 = load i32, ptr %17, align 4, !tbaa !9
  %143 = sext i32 %142 to i64
  %144 = getelementptr inbounds [1056 x %struct.complex], ptr %22, i64 0, i64 %143
  %145 = getelementptr inbounds %struct.complex, ptr %144, i32 0, i32 0
  store float 0.000000e+00, ptr %145, align 8, !tbaa !11
  %146 = load i32, ptr %17, align 4, !tbaa !9
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds [1056 x %struct.complex], ptr %22, i64 0, i64 %147
  %149 = getelementptr inbounds %struct.complex, ptr %148, i32 0, i32 1
  store float 0.000000e+00, ptr %149, align 4, !tbaa !14
  br label %150

150:                                              ; preds = %136
  %151 = load i32, ptr %23, align 4, !tbaa !9
  %152 = add nsw i32 %151, 1
  store i32 %152, ptr %23, align 4, !tbaa !9
  br label %132, !llvm.loop !15

153:                                              ; preds = %132
  br label %154

154:                                              ; preds = %153
  %155 = load i32, ptr %24, align 4, !tbaa !9
  %156 = add nsw i32 %155, 1
  store i32 %156, ptr %24, align 4, !tbaa !9
  br label %125, !llvm.loop !17

157:                                              ; preds = %125
  %158 = load ptr, ptr %8, align 8, !tbaa !5
  %159 = load i32, ptr %158, align 4, !tbaa !9
  store i32 %159, ptr %15, align 4, !tbaa !9
  %160 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %160, ptr %16, align 4, !tbaa !9
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %161

161:                                              ; preds = %523, %157
  %162 = load i32, ptr %16, align 4, !tbaa !9
  %163 = icmp slt i32 %162, 0
  br i1 %163, label %164, label %169

164:                                              ; preds = %161
  %165 = load i32, ptr %23, align 4, !tbaa !9
  %166 = load i32, ptr %15, align 4, !tbaa !9
  %167 = icmp sge i32 %165, %166
  %168 = zext i1 %167 to i32
  br label %174

169:                                              ; preds = %161
  %170 = load i32, ptr %23, align 4, !tbaa !9
  %171 = load i32, ptr %15, align 4, !tbaa !9
  %172 = icmp sle i32 %170, %171
  %173 = zext i1 %172 to i32
  br label %174

174:                                              ; preds = %169, %164
  %175 = phi i32 [ %168, %164 ], [ %173, %169 ]
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %177, label %527

177:                                              ; preds = %174
  %178 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %178, ptr %17, align 4, !tbaa !9
  %179 = load ptr, ptr %8, align 8, !tbaa !5
  %180 = load i32, ptr %179, align 4, !tbaa !9
  %181 = load i32, ptr %23, align 4, !tbaa !9
  %182 = sub nsw i32 %180, %181
  %183 = add nsw i32 %182, 1
  store i32 %183, ptr %18, align 4, !tbaa !9
  %184 = load i32, ptr %17, align 4, !tbaa !9
  %185 = load i32, ptr %18, align 4, !tbaa !9
  %186 = icmp sle i32 %184, %185
  br i1 %186, label %187, label %189

187:                                              ; preds = %177
  %188 = load i32, ptr %17, align 4, !tbaa !9
  br label %191

189:                                              ; preds = %177
  %190 = load i32, ptr %18, align 4, !tbaa !9
  br label %191

191:                                              ; preds = %189, %187
  %192 = phi i32 [ %188, %187 ], [ %190, %189 ]
  store i32 %192, ptr %27, align 4, !tbaa !9
  %193 = load ptr, ptr %11, align 8, !tbaa !5
  %194 = load i32, ptr %193, align 4, !tbaa !9
  %195 = sub nsw i32 %194, 1
  store i32 %195, ptr %17, align 4, !tbaa !9
  %196 = load ptr, ptr %7, align 8, !tbaa !5
  %197 = load ptr, ptr %10, align 8, !tbaa !5
  %198 = load ptr, ptr %9, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = add nsw i32 %199, 1
  %201 = load i32, ptr %23, align 4, !tbaa !9
  %202 = load i32, ptr %13, align 4, !tbaa !9
  %203 = mul nsw i32 %201, %202
  %204 = add nsw i32 %200, %203
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds %struct.complex, ptr %197, i64 %205
  %207 = call i32 @cpotf2_(ptr noundef %196, ptr noundef %27, ptr noundef %206, ptr noundef %17, ptr noundef %29)
  %208 = load i32, ptr %29, align 4, !tbaa !9
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %210, label %216

210:                                              ; preds = %191
  %211 = load i32, ptr %23, align 4, !tbaa !9
  %212 = load i32, ptr %29, align 4, !tbaa !9
  %213 = add nsw i32 %211, %212
  %214 = sub nsw i32 %213, 1
  %215 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 %214, ptr %215, align 4, !tbaa !9
  br label %922

216:                                              ; preds = %191
  %217 = load i32, ptr %23, align 4, !tbaa !9
  %218 = load i32, ptr %27, align 4, !tbaa !9
  %219 = add nsw i32 %217, %218
  %220 = load ptr, ptr %8, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  %222 = icmp sle i32 %219, %221
  br i1 %222, label %223, label %522

223:                                              ; preds = %216
  %224 = load ptr, ptr %9, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = load i32, ptr %27, align 4, !tbaa !9
  %227 = sub nsw i32 %225, %226
  store i32 %227, ptr %17, align 4, !tbaa !9
  %228 = load ptr, ptr %8, align 8, !tbaa !5
  %229 = load i32, ptr %228, align 4, !tbaa !9
  %230 = load i32, ptr %23, align 4, !tbaa !9
  %231 = sub nsw i32 %229, %230
  %232 = load i32, ptr %27, align 4, !tbaa !9
  %233 = sub nsw i32 %231, %232
  %234 = add nsw i32 %233, 1
  store i32 %234, ptr %18, align 4, !tbaa !9
  %235 = load i32, ptr %17, align 4, !tbaa !9
  %236 = load i32, ptr %18, align 4, !tbaa !9
  %237 = icmp sle i32 %235, %236
  br i1 %237, label %238, label %240

238:                                              ; preds = %223
  %239 = load i32, ptr %17, align 4, !tbaa !9
  br label %242

240:                                              ; preds = %223
  %241 = load i32, ptr %18, align 4, !tbaa !9
  br label %242

242:                                              ; preds = %240, %238
  %243 = phi i32 [ %239, %238 ], [ %241, %240 ]
  store i32 %243, ptr %25, align 4, !tbaa !9
  %244 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %244, ptr %17, align 4, !tbaa !9
  %245 = load ptr, ptr %8, align 8, !tbaa !5
  %246 = load i32, ptr %245, align 4, !tbaa !9
  %247 = load i32, ptr %23, align 4, !tbaa !9
  %248 = sub nsw i32 %246, %247
  %249 = load ptr, ptr %9, align 8, !tbaa !5
  %250 = load i32, ptr %249, align 4, !tbaa !9
  %251 = sub nsw i32 %248, %250
  %252 = add nsw i32 %251, 1
  store i32 %252, ptr %18, align 4, !tbaa !9
  %253 = load i32, ptr %17, align 4, !tbaa !9
  %254 = load i32, ptr %18, align 4, !tbaa !9
  %255 = icmp sle i32 %253, %254
  br i1 %255, label %256, label %258

256:                                              ; preds = %242
  %257 = load i32, ptr %17, align 4, !tbaa !9
  br label %260

258:                                              ; preds = %242
  %259 = load i32, ptr %18, align 4, !tbaa !9
  br label %260

260:                                              ; preds = %258, %256
  %261 = phi i32 [ %257, %256 ], [ %259, %258 ]
  store i32 %261, ptr %26, align 4, !tbaa !9
  %262 = load i32, ptr %25, align 4, !tbaa !9
  %263 = icmp sgt i32 %262, 0
  br i1 %263, label %264, label %327

264:                                              ; preds = %260
  %265 = load ptr, ptr %11, align 8, !tbaa !5
  %266 = load i32, ptr %265, align 4, !tbaa !9
  %267 = sub nsw i32 %266, 1
  store i32 %267, ptr %17, align 4, !tbaa !9
  %268 = load ptr, ptr %11, align 8, !tbaa !5
  %269 = load i32, ptr %268, align 4, !tbaa !9
  %270 = sub nsw i32 %269, 1
  store i32 %270, ptr %18, align 4, !tbaa !9
  %271 = load ptr, ptr %10, align 8, !tbaa !5
  %272 = load ptr, ptr %9, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = add nsw i32 %273, 1
  %275 = load i32, ptr %23, align 4, !tbaa !9
  %276 = load i32, ptr %13, align 4, !tbaa !9
  %277 = mul nsw i32 %275, %276
  %278 = add nsw i32 %274, %277
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds %struct.complex, ptr %271, i64 %279
  %281 = load ptr, ptr %10, align 8, !tbaa !5
  %282 = load ptr, ptr %9, align 8, !tbaa !5
  %283 = load i32, ptr %282, align 4, !tbaa !9
  %284 = add nsw i32 %283, 1
  %285 = load i32, ptr %27, align 4, !tbaa !9
  %286 = sub nsw i32 %284, %285
  %287 = load i32, ptr %23, align 4, !tbaa !9
  %288 = load i32, ptr %27, align 4, !tbaa !9
  %289 = add nsw i32 %287, %288
  %290 = load i32, ptr %13, align 4, !tbaa !9
  %291 = mul nsw i32 %289, %290
  %292 = add nsw i32 %286, %291
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds %struct.complex, ptr %281, i64 %293
  call void @ctrsm_(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %27, ptr noundef %25, ptr noundef @c_b1, ptr noundef %280, ptr noundef %17, ptr noundef %294, ptr noundef %18)
  %295 = load ptr, ptr %11, align 8, !tbaa !5
  %296 = load i32, ptr %295, align 4, !tbaa !9
  %297 = sub nsw i32 %296, 1
  store i32 %297, ptr %17, align 4, !tbaa !9
  %298 = load ptr, ptr %11, align 8, !tbaa !5
  %299 = load i32, ptr %298, align 4, !tbaa !9
  %300 = sub nsw i32 %299, 1
  store i32 %300, ptr %18, align 4, !tbaa !9
  %301 = load ptr, ptr %10, align 8, !tbaa !5
  %302 = load ptr, ptr %9, align 8, !tbaa !5
  %303 = load i32, ptr %302, align 4, !tbaa !9
  %304 = add nsw i32 %303, 1
  %305 = load i32, ptr %27, align 4, !tbaa !9
  %306 = sub nsw i32 %304, %305
  %307 = load i32, ptr %23, align 4, !tbaa !9
  %308 = load i32, ptr %27, align 4, !tbaa !9
  %309 = add nsw i32 %307, %308
  %310 = load i32, ptr %13, align 4, !tbaa !9
  %311 = mul nsw i32 %309, %310
  %312 = add nsw i32 %306, %311
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds %struct.complex, ptr %301, i64 %313
  %315 = load ptr, ptr %10, align 8, !tbaa !5
  %316 = load ptr, ptr %9, align 8, !tbaa !5
  %317 = load i32, ptr %316, align 4, !tbaa !9
  %318 = add nsw i32 %317, 1
  %319 = load i32, ptr %23, align 4, !tbaa !9
  %320 = load i32, ptr %27, align 4, !tbaa !9
  %321 = add nsw i32 %319, %320
  %322 = load i32, ptr %13, align 4, !tbaa !9
  %323 = mul nsw i32 %321, %322
  %324 = add nsw i32 %318, %323
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds %struct.complex, ptr %315, i64 %325
  call void @cherk_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %25, ptr noundef %27, ptr noundef @c_b21, ptr noundef %314, ptr noundef %17, ptr noundef @c_b22, ptr noundef %326, ptr noundef %18)
  br label %327

327:                                              ; preds = %264, %260
  %328 = load i32, ptr %26, align 4, !tbaa !9
  %329 = icmp sgt i32 %328, 0
  br i1 %329, label %330, label %521

330:                                              ; preds = %327
  %331 = load i32, ptr %26, align 4, !tbaa !9
  store i32 %331, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %332

332:                                              ; preds = %387, %330
  %333 = load i32, ptr %30, align 4, !tbaa !9
  %334 = load i32, ptr %17, align 4, !tbaa !9
  %335 = icmp sle i32 %333, %334
  br i1 %335, label %336, label %390

336:                                              ; preds = %332
  %337 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %337, ptr %18, align 4, !tbaa !9
  %338 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %338, ptr %29, align 4, !tbaa !9
  br label %339

339:                                              ; preds = %383, %336
  %340 = load i32, ptr %29, align 4, !tbaa !9
  %341 = load i32, ptr %18, align 4, !tbaa !9
  %342 = icmp sle i32 %340, %341
  br i1 %342, label %343, label %386

343:                                              ; preds = %339
  %344 = load i32, ptr %29, align 4, !tbaa !9
  %345 = load i32, ptr %30, align 4, !tbaa !9
  %346 = mul nsw i32 %345, 33
  %347 = add nsw i32 %344, %346
  %348 = sub nsw i32 %347, 34
  store i32 %348, ptr %19, align 4, !tbaa !9
  %349 = load i32, ptr %29, align 4, !tbaa !9
  %350 = load i32, ptr %30, align 4, !tbaa !9
  %351 = sub nsw i32 %349, %350
  %352 = add nsw i32 %351, 1
  %353 = load i32, ptr %30, align 4, !tbaa !9
  %354 = load i32, ptr %23, align 4, !tbaa !9
  %355 = add nsw i32 %353, %354
  %356 = load ptr, ptr %9, align 8, !tbaa !5
  %357 = load i32, ptr %356, align 4, !tbaa !9
  %358 = add nsw i32 %355, %357
  %359 = sub nsw i32 %358, 1
  %360 = load i32, ptr %13, align 4, !tbaa !9
  %361 = mul nsw i32 %359, %360
  %362 = add nsw i32 %352, %361
  store i32 %362, ptr %20, align 4, !tbaa !9
  %363 = load ptr, ptr %10, align 8, !tbaa !5
  %364 = load i32, ptr %20, align 4, !tbaa !9
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds %struct.complex, ptr %363, i64 %365
  %367 = getelementptr inbounds %struct.complex, ptr %366, i32 0, i32 0
  %368 = load float, ptr %367, align 4, !tbaa !11
  %369 = load i32, ptr %19, align 4, !tbaa !9
  %370 = sext i32 %369 to i64
  %371 = getelementptr inbounds [1056 x %struct.complex], ptr %22, i64 0, i64 %370
  %372 = getelementptr inbounds %struct.complex, ptr %371, i32 0, i32 0
  store float %368, ptr %372, align 8, !tbaa !11
  %373 = load ptr, ptr %10, align 8, !tbaa !5
  %374 = load i32, ptr %20, align 4, !tbaa !9
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds %struct.complex, ptr %373, i64 %375
  %377 = getelementptr inbounds %struct.complex, ptr %376, i32 0, i32 1
  %378 = load float, ptr %377, align 4, !tbaa !14
  %379 = load i32, ptr %19, align 4, !tbaa !9
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds [1056 x %struct.complex], ptr %22, i64 0, i64 %380
  %382 = getelementptr inbounds %struct.complex, ptr %381, i32 0, i32 1
  store float %378, ptr %382, align 4, !tbaa !14
  br label %383

383:                                              ; preds = %343
  %384 = load i32, ptr %29, align 4, !tbaa !9
  %385 = add nsw i32 %384, 1
  store i32 %385, ptr %29, align 4, !tbaa !9
  br label %339, !llvm.loop !18

386:                                              ; preds = %339
  br label %387

387:                                              ; preds = %386
  %388 = load i32, ptr %30, align 4, !tbaa !9
  %389 = add nsw i32 %388, 1
  store i32 %389, ptr %30, align 4, !tbaa !9
  br label %332, !llvm.loop !19

390:                                              ; preds = %332
  %391 = load ptr, ptr %11, align 8, !tbaa !5
  %392 = load i32, ptr %391, align 4, !tbaa !9
  %393 = sub nsw i32 %392, 1
  store i32 %393, ptr %17, align 4, !tbaa !9
  %394 = load ptr, ptr %10, align 8, !tbaa !5
  %395 = load ptr, ptr %9, align 8, !tbaa !5
  %396 = load i32, ptr %395, align 4, !tbaa !9
  %397 = add nsw i32 %396, 1
  %398 = load i32, ptr %23, align 4, !tbaa !9
  %399 = load i32, ptr %13, align 4, !tbaa !9
  %400 = mul nsw i32 %398, %399
  %401 = add nsw i32 %397, %400
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds %struct.complex, ptr %394, i64 %402
  %404 = getelementptr inbounds [1056 x %struct.complex], ptr %22, i64 0, i64 0
  call void @ctrsm_(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %27, ptr noundef %26, ptr noundef @c_b1, ptr noundef %403, ptr noundef %17, ptr noundef %404, ptr noundef @c__33)
  %405 = load i32, ptr %25, align 4, !tbaa !9
  %406 = icmp sgt i32 %405, 0
  br i1 %406, label %407, label %443

407:                                              ; preds = %390
  %408 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  store float -1.000000e+00, ptr %408, align 4, !tbaa !11
  %409 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  store float 0.000000e+00, ptr %409, align 4, !tbaa !14
  %410 = load ptr, ptr %11, align 8, !tbaa !5
  %411 = load i32, ptr %410, align 4, !tbaa !9
  %412 = sub nsw i32 %411, 1
  store i32 %412, ptr %17, align 4, !tbaa !9
  %413 = load ptr, ptr %11, align 8, !tbaa !5
  %414 = load i32, ptr %413, align 4, !tbaa !9
  %415 = sub nsw i32 %414, 1
  store i32 %415, ptr %18, align 4, !tbaa !9
  %416 = load ptr, ptr %10, align 8, !tbaa !5
  %417 = load ptr, ptr %9, align 8, !tbaa !5
  %418 = load i32, ptr %417, align 4, !tbaa !9
  %419 = add nsw i32 %418, 1
  %420 = load i32, ptr %27, align 4, !tbaa !9
  %421 = sub nsw i32 %419, %420
  %422 = load i32, ptr %23, align 4, !tbaa !9
  %423 = load i32, ptr %27, align 4, !tbaa !9
  %424 = add nsw i32 %422, %423
  %425 = load i32, ptr %13, align 4, !tbaa !9
  %426 = mul nsw i32 %424, %425
  %427 = add nsw i32 %421, %426
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds %struct.complex, ptr %416, i64 %428
  %430 = getelementptr inbounds [1056 x %struct.complex], ptr %22, i64 0, i64 0
  %431 = load ptr, ptr %10, align 8, !tbaa !5
  %432 = load i32, ptr %27, align 4, !tbaa !9
  %433 = add nsw i32 %432, 1
  %434 = load i32, ptr %23, align 4, !tbaa !9
  %435 = load ptr, ptr %9, align 8, !tbaa !5
  %436 = load i32, ptr %435, align 4, !tbaa !9
  %437 = add nsw i32 %434, %436
  %438 = load i32, ptr %13, align 4, !tbaa !9
  %439 = mul nsw i32 %437, %438
  %440 = add nsw i32 %433, %439
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds %struct.complex, ptr %431, i64 %441
  call void @cgemm_(ptr noundef @.str.5, ptr noundef @.str.7, ptr noundef %25, ptr noundef %26, ptr noundef %27, ptr noundef %21, ptr noundef %429, ptr noundef %17, ptr noundef %430, ptr noundef @c__33, ptr noundef @c_b1, ptr noundef %442, ptr noundef %18)
  br label %443

443:                                              ; preds = %407, %390
  %444 = load ptr, ptr %11, align 8, !tbaa !5
  %445 = load i32, ptr %444, align 4, !tbaa !9
  %446 = sub nsw i32 %445, 1
  store i32 %446, ptr %17, align 4, !tbaa !9
  %447 = getelementptr inbounds [1056 x %struct.complex], ptr %22, i64 0, i64 0
  %448 = load ptr, ptr %10, align 8, !tbaa !5
  %449 = load ptr, ptr %9, align 8, !tbaa !5
  %450 = load i32, ptr %449, align 4, !tbaa !9
  %451 = add nsw i32 %450, 1
  %452 = load i32, ptr %23, align 4, !tbaa !9
  %453 = load ptr, ptr %9, align 8, !tbaa !5
  %454 = load i32, ptr %453, align 4, !tbaa !9
  %455 = add nsw i32 %452, %454
  %456 = load i32, ptr %13, align 4, !tbaa !9
  %457 = mul nsw i32 %455, %456
  %458 = add nsw i32 %451, %457
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds %struct.complex, ptr %448, i64 %459
  call void @cherk_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %26, ptr noundef %27, ptr noundef @c_b21, ptr noundef %447, ptr noundef @c__33, ptr noundef @c_b22, ptr noundef %460, ptr noundef %17)
  %461 = load i32, ptr %26, align 4, !tbaa !9
  store i32 %461, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %462

462:                                              ; preds = %517, %443
  %463 = load i32, ptr %30, align 4, !tbaa !9
  %464 = load i32, ptr %17, align 4, !tbaa !9
  %465 = icmp sle i32 %463, %464
  br i1 %465, label %466, label %520

466:                                              ; preds = %462
  %467 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %467, ptr %18, align 4, !tbaa !9
  %468 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %468, ptr %29, align 4, !tbaa !9
  br label %469

469:                                              ; preds = %513, %466
  %470 = load i32, ptr %29, align 4, !tbaa !9
  %471 = load i32, ptr %18, align 4, !tbaa !9
  %472 = icmp sle i32 %470, %471
  br i1 %472, label %473, label %516

473:                                              ; preds = %469
  %474 = load i32, ptr %29, align 4, !tbaa !9
  %475 = load i32, ptr %30, align 4, !tbaa !9
  %476 = sub nsw i32 %474, %475
  %477 = add nsw i32 %476, 1
  %478 = load i32, ptr %30, align 4, !tbaa !9
  %479 = load i32, ptr %23, align 4, !tbaa !9
  %480 = add nsw i32 %478, %479
  %481 = load ptr, ptr %9, align 8, !tbaa !5
  %482 = load i32, ptr %481, align 4, !tbaa !9
  %483 = add nsw i32 %480, %482
  %484 = sub nsw i32 %483, 1
  %485 = load i32, ptr %13, align 4, !tbaa !9
  %486 = mul nsw i32 %484, %485
  %487 = add nsw i32 %477, %486
  store i32 %487, ptr %19, align 4, !tbaa !9
  %488 = load i32, ptr %29, align 4, !tbaa !9
  %489 = load i32, ptr %30, align 4, !tbaa !9
  %490 = mul nsw i32 %489, 33
  %491 = add nsw i32 %488, %490
  %492 = sub nsw i32 %491, 34
  store i32 %492, ptr %20, align 4, !tbaa !9
  %493 = load i32, ptr %20, align 4, !tbaa !9
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds [1056 x %struct.complex], ptr %22, i64 0, i64 %494
  %496 = getelementptr inbounds %struct.complex, ptr %495, i32 0, i32 0
  %497 = load float, ptr %496, align 8, !tbaa !11
  %498 = load ptr, ptr %10, align 8, !tbaa !5
  %499 = load i32, ptr %19, align 4, !tbaa !9
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds %struct.complex, ptr %498, i64 %500
  %502 = getelementptr inbounds %struct.complex, ptr %501, i32 0, i32 0
  store float %497, ptr %502, align 4, !tbaa !11
  %503 = load i32, ptr %20, align 4, !tbaa !9
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds [1056 x %struct.complex], ptr %22, i64 0, i64 %504
  %506 = getelementptr inbounds %struct.complex, ptr %505, i32 0, i32 1
  %507 = load float, ptr %506, align 4, !tbaa !14
  %508 = load ptr, ptr %10, align 8, !tbaa !5
  %509 = load i32, ptr %19, align 4, !tbaa !9
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds %struct.complex, ptr %508, i64 %510
  %512 = getelementptr inbounds %struct.complex, ptr %511, i32 0, i32 1
  store float %507, ptr %512, align 4, !tbaa !14
  br label %513

513:                                              ; preds = %473
  %514 = load i32, ptr %29, align 4, !tbaa !9
  %515 = add nsw i32 %514, 1
  store i32 %515, ptr %29, align 4, !tbaa !9
  br label %469, !llvm.loop !20

516:                                              ; preds = %469
  br label %517

517:                                              ; preds = %516
  %518 = load i32, ptr %30, align 4, !tbaa !9
  %519 = add nsw i32 %518, 1
  store i32 %519, ptr %30, align 4, !tbaa !9
  br label %462, !llvm.loop !21

520:                                              ; preds = %462
  br label %521

521:                                              ; preds = %520, %327
  br label %522

522:                                              ; preds = %521, %216
  br label %523

523:                                              ; preds = %522
  %524 = load i32, ptr %16, align 4, !tbaa !9
  %525 = load i32, ptr %23, align 4, !tbaa !9
  %526 = add nsw i32 %525, %524
  store i32 %526, ptr %23, align 4, !tbaa !9
  br label %161, !llvm.loop !22

527:                                              ; preds = %174
  br label %920

528:                                              ; preds = %119
  %529 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %529, ptr %16, align 4, !tbaa !9
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %530

530:                                              ; preds = %560, %528
  %531 = load i32, ptr %24, align 4, !tbaa !9
  %532 = load i32, ptr %16, align 4, !tbaa !9
  %533 = icmp sle i32 %531, %532
  br i1 %533, label %534, label %563

534:                                              ; preds = %530
  %535 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %535, ptr %15, align 4, !tbaa !9
  %536 = load i32, ptr %24, align 4, !tbaa !9
  %537 = add nsw i32 %536, 1
  store i32 %537, ptr %23, align 4, !tbaa !9
  br label %538

538:                                              ; preds = %556, %534
  %539 = load i32, ptr %23, align 4, !tbaa !9
  %540 = load i32, ptr %15, align 4, !tbaa !9
  %541 = icmp sle i32 %539, %540
  br i1 %541, label %542, label %559

542:                                              ; preds = %538
  %543 = load i32, ptr %23, align 4, !tbaa !9
  %544 = load i32, ptr %24, align 4, !tbaa !9
  %545 = mul nsw i32 %544, 33
  %546 = add nsw i32 %543, %545
  %547 = sub nsw i32 %546, 34
  store i32 %547, ptr %17, align 4, !tbaa !9
  %548 = load i32, ptr %17, align 4, !tbaa !9
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds [1056 x %struct.complex], ptr %22, i64 0, i64 %549
  %551 = getelementptr inbounds %struct.complex, ptr %550, i32 0, i32 0
  store float 0.000000e+00, ptr %551, align 8, !tbaa !11
  %552 = load i32, ptr %17, align 4, !tbaa !9
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds [1056 x %struct.complex], ptr %22, i64 0, i64 %553
  %555 = getelementptr inbounds %struct.complex, ptr %554, i32 0, i32 1
  store float 0.000000e+00, ptr %555, align 4, !tbaa !14
  br label %556

556:                                              ; preds = %542
  %557 = load i32, ptr %23, align 4, !tbaa !9
  %558 = add nsw i32 %557, 1
  store i32 %558, ptr %23, align 4, !tbaa !9
  br label %538, !llvm.loop !23

559:                                              ; preds = %538
  br label %560

560:                                              ; preds = %559
  %561 = load i32, ptr %24, align 4, !tbaa !9
  %562 = add nsw i32 %561, 1
  store i32 %562, ptr %24, align 4, !tbaa !9
  br label %530, !llvm.loop !24

563:                                              ; preds = %530
  %564 = load ptr, ptr %8, align 8, !tbaa !5
  %565 = load i32, ptr %564, align 4, !tbaa !9
  store i32 %565, ptr %16, align 4, !tbaa !9
  %566 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %566, ptr %15, align 4, !tbaa !9
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %567

567:                                              ; preds = %915, %563
  %568 = load i32, ptr %15, align 4, !tbaa !9
  %569 = icmp slt i32 %568, 0
  br i1 %569, label %570, label %575

570:                                              ; preds = %567
  %571 = load i32, ptr %23, align 4, !tbaa !9
  %572 = load i32, ptr %16, align 4, !tbaa !9
  %573 = icmp sge i32 %571, %572
  %574 = zext i1 %573 to i32
  br label %580

575:                                              ; preds = %567
  %576 = load i32, ptr %23, align 4, !tbaa !9
  %577 = load i32, ptr %16, align 4, !tbaa !9
  %578 = icmp sle i32 %576, %577
  %579 = zext i1 %578 to i32
  br label %580

580:                                              ; preds = %575, %570
  %581 = phi i32 [ %574, %570 ], [ %579, %575 ]
  %582 = icmp ne i32 %581, 0
  br i1 %582, label %583, label %919

583:                                              ; preds = %580
  %584 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %584, ptr %17, align 4, !tbaa !9
  %585 = load ptr, ptr %8, align 8, !tbaa !5
  %586 = load i32, ptr %585, align 4, !tbaa !9
  %587 = load i32, ptr %23, align 4, !tbaa !9
  %588 = sub nsw i32 %586, %587
  %589 = add nsw i32 %588, 1
  store i32 %589, ptr %18, align 4, !tbaa !9
  %590 = load i32, ptr %17, align 4, !tbaa !9
  %591 = load i32, ptr %18, align 4, !tbaa !9
  %592 = icmp sle i32 %590, %591
  br i1 %592, label %593, label %595

593:                                              ; preds = %583
  %594 = load i32, ptr %17, align 4, !tbaa !9
  br label %597

595:                                              ; preds = %583
  %596 = load i32, ptr %18, align 4, !tbaa !9
  br label %597

597:                                              ; preds = %595, %593
  %598 = phi i32 [ %594, %593 ], [ %596, %595 ]
  store i32 %598, ptr %27, align 4, !tbaa !9
  %599 = load ptr, ptr %11, align 8, !tbaa !5
  %600 = load i32, ptr %599, align 4, !tbaa !9
  %601 = sub nsw i32 %600, 1
  store i32 %601, ptr %17, align 4, !tbaa !9
  %602 = load ptr, ptr %7, align 8, !tbaa !5
  %603 = load ptr, ptr %10, align 8, !tbaa !5
  %604 = load i32, ptr %23, align 4, !tbaa !9
  %605 = load i32, ptr %13, align 4, !tbaa !9
  %606 = mul nsw i32 %604, %605
  %607 = add nsw i32 %606, 1
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds %struct.complex, ptr %603, i64 %608
  %610 = call i32 @cpotf2_(ptr noundef %602, ptr noundef %27, ptr noundef %609, ptr noundef %17, ptr noundef %29)
  %611 = load i32, ptr %29, align 4, !tbaa !9
  %612 = icmp ne i32 %611, 0
  br i1 %612, label %613, label %619

613:                                              ; preds = %597
  %614 = load i32, ptr %23, align 4, !tbaa !9
  %615 = load i32, ptr %29, align 4, !tbaa !9
  %616 = add nsw i32 %614, %615
  %617 = sub nsw i32 %616, 1
  %618 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 %617, ptr %618, align 4, !tbaa !9
  br label %922

619:                                              ; preds = %597
  %620 = load i32, ptr %23, align 4, !tbaa !9
  %621 = load i32, ptr %27, align 4, !tbaa !9
  %622 = add nsw i32 %620, %621
  %623 = load ptr, ptr %8, align 8, !tbaa !5
  %624 = load i32, ptr %623, align 4, !tbaa !9
  %625 = icmp sle i32 %622, %624
  br i1 %625, label %626, label %914

626:                                              ; preds = %619
  %627 = load ptr, ptr %9, align 8, !tbaa !5
  %628 = load i32, ptr %627, align 4, !tbaa !9
  %629 = load i32, ptr %27, align 4, !tbaa !9
  %630 = sub nsw i32 %628, %629
  store i32 %630, ptr %17, align 4, !tbaa !9
  %631 = load ptr, ptr %8, align 8, !tbaa !5
  %632 = load i32, ptr %631, align 4, !tbaa !9
  %633 = load i32, ptr %23, align 4, !tbaa !9
  %634 = sub nsw i32 %632, %633
  %635 = load i32, ptr %27, align 4, !tbaa !9
  %636 = sub nsw i32 %634, %635
  %637 = add nsw i32 %636, 1
  store i32 %637, ptr %18, align 4, !tbaa !9
  %638 = load i32, ptr %17, align 4, !tbaa !9
  %639 = load i32, ptr %18, align 4, !tbaa !9
  %640 = icmp sle i32 %638, %639
  br i1 %640, label %641, label %643

641:                                              ; preds = %626
  %642 = load i32, ptr %17, align 4, !tbaa !9
  br label %645

643:                                              ; preds = %626
  %644 = load i32, ptr %18, align 4, !tbaa !9
  br label %645

645:                                              ; preds = %643, %641
  %646 = phi i32 [ %642, %641 ], [ %644, %643 ]
  store i32 %646, ptr %25, align 4, !tbaa !9
  %647 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %647, ptr %17, align 4, !tbaa !9
  %648 = load ptr, ptr %8, align 8, !tbaa !5
  %649 = load i32, ptr %648, align 4, !tbaa !9
  %650 = load i32, ptr %23, align 4, !tbaa !9
  %651 = sub nsw i32 %649, %650
  %652 = load ptr, ptr %9, align 8, !tbaa !5
  %653 = load i32, ptr %652, align 4, !tbaa !9
  %654 = sub nsw i32 %651, %653
  %655 = add nsw i32 %654, 1
  store i32 %655, ptr %18, align 4, !tbaa !9
  %656 = load i32, ptr %17, align 4, !tbaa !9
  %657 = load i32, ptr %18, align 4, !tbaa !9
  %658 = icmp sle i32 %656, %657
  br i1 %658, label %659, label %661

659:                                              ; preds = %645
  %660 = load i32, ptr %17, align 4, !tbaa !9
  br label %663

661:                                              ; preds = %645
  %662 = load i32, ptr %18, align 4, !tbaa !9
  br label %663

663:                                              ; preds = %661, %659
  %664 = phi i32 [ %660, %659 ], [ %662, %661 ]
  store i32 %664, ptr %26, align 4, !tbaa !9
  %665 = load i32, ptr %25, align 4, !tbaa !9
  %666 = icmp sgt i32 %665, 0
  br i1 %666, label %667, label %714

667:                                              ; preds = %663
  %668 = load ptr, ptr %11, align 8, !tbaa !5
  %669 = load i32, ptr %668, align 4, !tbaa !9
  %670 = sub nsw i32 %669, 1
  store i32 %670, ptr %17, align 4, !tbaa !9
  %671 = load ptr, ptr %11, align 8, !tbaa !5
  %672 = load i32, ptr %671, align 4, !tbaa !9
  %673 = sub nsw i32 %672, 1
  store i32 %673, ptr %18, align 4, !tbaa !9
  %674 = load ptr, ptr %10, align 8, !tbaa !5
  %675 = load i32, ptr %23, align 4, !tbaa !9
  %676 = load i32, ptr %13, align 4, !tbaa !9
  %677 = mul nsw i32 %675, %676
  %678 = add nsw i32 %677, 1
  %679 = sext i32 %678 to i64
  %680 = getelementptr inbounds %struct.complex, ptr %674, i64 %679
  %681 = load ptr, ptr %10, align 8, !tbaa !5
  %682 = load i32, ptr %27, align 4, !tbaa !9
  %683 = add nsw i32 %682, 1
  %684 = load i32, ptr %23, align 4, !tbaa !9
  %685 = load i32, ptr %13, align 4, !tbaa !9
  %686 = mul nsw i32 %684, %685
  %687 = add nsw i32 %683, %686
  %688 = sext i32 %687 to i64
  %689 = getelementptr inbounds %struct.complex, ptr %681, i64 %688
  call void @ctrsm_(ptr noundef @.str.8, ptr noundef @.str.9, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %25, ptr noundef %27, ptr noundef @c_b1, ptr noundef %680, ptr noundef %17, ptr noundef %689, ptr noundef %18)
  %690 = load ptr, ptr %11, align 8, !tbaa !5
  %691 = load i32, ptr %690, align 4, !tbaa !9
  %692 = sub nsw i32 %691, 1
  store i32 %692, ptr %17, align 4, !tbaa !9
  %693 = load ptr, ptr %11, align 8, !tbaa !5
  %694 = load i32, ptr %693, align 4, !tbaa !9
  %695 = sub nsw i32 %694, 1
  store i32 %695, ptr %18, align 4, !tbaa !9
  %696 = load ptr, ptr %10, align 8, !tbaa !5
  %697 = load i32, ptr %27, align 4, !tbaa !9
  %698 = add nsw i32 %697, 1
  %699 = load i32, ptr %23, align 4, !tbaa !9
  %700 = load i32, ptr %13, align 4, !tbaa !9
  %701 = mul nsw i32 %699, %700
  %702 = add nsw i32 %698, %701
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds %struct.complex, ptr %696, i64 %703
  %705 = load ptr, ptr %10, align 8, !tbaa !5
  %706 = load i32, ptr %23, align 4, !tbaa !9
  %707 = load i32, ptr %27, align 4, !tbaa !9
  %708 = add nsw i32 %706, %707
  %709 = load i32, ptr %13, align 4, !tbaa !9
  %710 = mul nsw i32 %708, %709
  %711 = add nsw i32 %710, 1
  %712 = sext i32 %711 to i64
  %713 = getelementptr inbounds %struct.complex, ptr %705, i64 %712
  call void @cherk_(ptr noundef @.str.9, ptr noundef @.str.7, ptr noundef %25, ptr noundef %27, ptr noundef @c_b21, ptr noundef %704, ptr noundef %17, ptr noundef @c_b22, ptr noundef %713, ptr noundef %18)
  br label %714

714:                                              ; preds = %667, %663
  %715 = load i32, ptr %26, align 4, !tbaa !9
  %716 = icmp sgt i32 %715, 0
  br i1 %716, label %717, label %913

717:                                              ; preds = %714
  %718 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %718, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %719

719:                                              ; preds = %781, %717
  %720 = load i32, ptr %30, align 4, !tbaa !9
  %721 = load i32, ptr %17, align 4, !tbaa !9
  %722 = icmp sle i32 %720, %721
  br i1 %722, label %723, label %784

723:                                              ; preds = %719
  %724 = load i32, ptr %30, align 4, !tbaa !9
  %725 = load i32, ptr %26, align 4, !tbaa !9
  %726 = icmp sle i32 %724, %725
  br i1 %726, label %727, label %729

727:                                              ; preds = %723
  %728 = load i32, ptr %30, align 4, !tbaa !9
  br label %731

729:                                              ; preds = %723
  %730 = load i32, ptr %26, align 4, !tbaa !9
  br label %731

731:                                              ; preds = %729, %727
  %732 = phi i32 [ %728, %727 ], [ %730, %729 ]
  store i32 %732, ptr %18, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %733

733:                                              ; preds = %777, %731
  %734 = load i32, ptr %29, align 4, !tbaa !9
  %735 = load i32, ptr %18, align 4, !tbaa !9
  %736 = icmp sle i32 %734, %735
  br i1 %736, label %737, label %780

737:                                              ; preds = %733
  %738 = load i32, ptr %29, align 4, !tbaa !9
  %739 = load i32, ptr %30, align 4, !tbaa !9
  %740 = mul nsw i32 %739, 33
  %741 = add nsw i32 %738, %740
  %742 = sub nsw i32 %741, 34
  store i32 %742, ptr %19, align 4, !tbaa !9
  %743 = load ptr, ptr %9, align 8, !tbaa !5
  %744 = load i32, ptr %743, align 4, !tbaa !9
  %745 = add nsw i32 %744, 1
  %746 = load i32, ptr %30, align 4, !tbaa !9
  %747 = sub nsw i32 %745, %746
  %748 = load i32, ptr %29, align 4, !tbaa !9
  %749 = add nsw i32 %747, %748
  %750 = load i32, ptr %30, align 4, !tbaa !9
  %751 = load i32, ptr %23, align 4, !tbaa !9
  %752 = add nsw i32 %750, %751
  %753 = sub nsw i32 %752, 1
  %754 = load i32, ptr %13, align 4, !tbaa !9
  %755 = mul nsw i32 %753, %754
  %756 = add nsw i32 %749, %755
  store i32 %756, ptr %20, align 4, !tbaa !9
  %757 = load ptr, ptr %10, align 8, !tbaa !5
  %758 = load i32, ptr %20, align 4, !tbaa !9
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds %struct.complex, ptr %757, i64 %759
  %761 = getelementptr inbounds %struct.complex, ptr %760, i32 0, i32 0
  %762 = load float, ptr %761, align 4, !tbaa !11
  %763 = load i32, ptr %19, align 4, !tbaa !9
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds [1056 x %struct.complex], ptr %22, i64 0, i64 %764
  %766 = getelementptr inbounds %struct.complex, ptr %765, i32 0, i32 0
  store float %762, ptr %766, align 8, !tbaa !11
  %767 = load ptr, ptr %10, align 8, !tbaa !5
  %768 = load i32, ptr %20, align 4, !tbaa !9
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds %struct.complex, ptr %767, i64 %769
  %771 = getelementptr inbounds %struct.complex, ptr %770, i32 0, i32 1
  %772 = load float, ptr %771, align 4, !tbaa !14
  %773 = load i32, ptr %19, align 4, !tbaa !9
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds [1056 x %struct.complex], ptr %22, i64 0, i64 %774
  %776 = getelementptr inbounds %struct.complex, ptr %775, i32 0, i32 1
  store float %772, ptr %776, align 4, !tbaa !14
  br label %777

777:                                              ; preds = %737
  %778 = load i32, ptr %29, align 4, !tbaa !9
  %779 = add nsw i32 %778, 1
  store i32 %779, ptr %29, align 4, !tbaa !9
  br label %733, !llvm.loop !25

780:                                              ; preds = %733
  br label %781

781:                                              ; preds = %780
  %782 = load i32, ptr %30, align 4, !tbaa !9
  %783 = add nsw i32 %782, 1
  store i32 %783, ptr %30, align 4, !tbaa !9
  br label %719, !llvm.loop !26

784:                                              ; preds = %719
  %785 = load ptr, ptr %11, align 8, !tbaa !5
  %786 = load i32, ptr %785, align 4, !tbaa !9
  %787 = sub nsw i32 %786, 1
  store i32 %787, ptr %17, align 4, !tbaa !9
  %788 = load ptr, ptr %10, align 8, !tbaa !5
  %789 = load i32, ptr %23, align 4, !tbaa !9
  %790 = load i32, ptr %13, align 4, !tbaa !9
  %791 = mul nsw i32 %789, %790
  %792 = add nsw i32 %791, 1
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds %struct.complex, ptr %788, i64 %793
  %795 = getelementptr inbounds [1056 x %struct.complex], ptr %22, i64 0, i64 0
  call void @ctrsm_(ptr noundef @.str.8, ptr noundef @.str.9, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %26, ptr noundef %27, ptr noundef @c_b1, ptr noundef %794, ptr noundef %17, ptr noundef %795, ptr noundef @c__33)
  %796 = load i32, ptr %25, align 4, !tbaa !9
  %797 = icmp sgt i32 %796, 0
  br i1 %797, label %798, label %831

798:                                              ; preds = %784
  %799 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  store float -1.000000e+00, ptr %799, align 4, !tbaa !11
  %800 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  store float 0.000000e+00, ptr %800, align 4, !tbaa !14
  %801 = load ptr, ptr %11, align 8, !tbaa !5
  %802 = load i32, ptr %801, align 4, !tbaa !9
  %803 = sub nsw i32 %802, 1
  store i32 %803, ptr %17, align 4, !tbaa !9
  %804 = load ptr, ptr %11, align 8, !tbaa !5
  %805 = load i32, ptr %804, align 4, !tbaa !9
  %806 = sub nsw i32 %805, 1
  store i32 %806, ptr %18, align 4, !tbaa !9
  %807 = getelementptr inbounds [1056 x %struct.complex], ptr %22, i64 0, i64 0
  %808 = load ptr, ptr %10, align 8, !tbaa !5
  %809 = load i32, ptr %27, align 4, !tbaa !9
  %810 = add nsw i32 %809, 1
  %811 = load i32, ptr %23, align 4, !tbaa !9
  %812 = load i32, ptr %13, align 4, !tbaa !9
  %813 = mul nsw i32 %811, %812
  %814 = add nsw i32 %810, %813
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds %struct.complex, ptr %808, i64 %815
  %817 = load ptr, ptr %10, align 8, !tbaa !5
  %818 = load ptr, ptr %9, align 8, !tbaa !5
  %819 = load i32, ptr %818, align 4, !tbaa !9
  %820 = add nsw i32 %819, 1
  %821 = load i32, ptr %27, align 4, !tbaa !9
  %822 = sub nsw i32 %820, %821
  %823 = load i32, ptr %23, align 4, !tbaa !9
  %824 = load i32, ptr %27, align 4, !tbaa !9
  %825 = add nsw i32 %823, %824
  %826 = load i32, ptr %13, align 4, !tbaa !9
  %827 = mul nsw i32 %825, %826
  %828 = add nsw i32 %822, %827
  %829 = sext i32 %828 to i64
  %830 = getelementptr inbounds %struct.complex, ptr %817, i64 %829
  call void @cgemm_(ptr noundef @.str.7, ptr noundef @.str.5, ptr noundef %26, ptr noundef %25, ptr noundef %27, ptr noundef %21, ptr noundef %807, ptr noundef @c__33, ptr noundef %816, ptr noundef %17, ptr noundef @c_b1, ptr noundef %830, ptr noundef %18)
  br label %831

831:                                              ; preds = %798, %784
  %832 = load ptr, ptr %11, align 8, !tbaa !5
  %833 = load i32, ptr %832, align 4, !tbaa !9
  %834 = sub nsw i32 %833, 1
  store i32 %834, ptr %17, align 4, !tbaa !9
  %835 = getelementptr inbounds [1056 x %struct.complex], ptr %22, i64 0, i64 0
  %836 = load ptr, ptr %10, align 8, !tbaa !5
  %837 = load i32, ptr %23, align 4, !tbaa !9
  %838 = load ptr, ptr %9, align 8, !tbaa !5
  %839 = load i32, ptr %838, align 4, !tbaa !9
  %840 = add nsw i32 %837, %839
  %841 = load i32, ptr %13, align 4, !tbaa !9
  %842 = mul nsw i32 %840, %841
  %843 = add nsw i32 %842, 1
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds %struct.complex, ptr %836, i64 %844
  call void @cherk_(ptr noundef @.str.9, ptr noundef @.str.7, ptr noundef %26, ptr noundef %27, ptr noundef @c_b21, ptr noundef %835, ptr noundef @c__33, ptr noundef @c_b22, ptr noundef %845, ptr noundef %17)
  %846 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %846, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %847

847:                                              ; preds = %909, %831
  %848 = load i32, ptr %30, align 4, !tbaa !9
  %849 = load i32, ptr %17, align 4, !tbaa !9
  %850 = icmp sle i32 %848, %849
  br i1 %850, label %851, label %912

851:                                              ; preds = %847
  %852 = load i32, ptr %30, align 4, !tbaa !9
  %853 = load i32, ptr %26, align 4, !tbaa !9
  %854 = icmp sle i32 %852, %853
  br i1 %854, label %855, label %857

855:                                              ; preds = %851
  %856 = load i32, ptr %30, align 4, !tbaa !9
  br label %859

857:                                              ; preds = %851
  %858 = load i32, ptr %26, align 4, !tbaa !9
  br label %859

859:                                              ; preds = %857, %855
  %860 = phi i32 [ %856, %855 ], [ %858, %857 ]
  store i32 %860, ptr %18, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %861

861:                                              ; preds = %905, %859
  %862 = load i32, ptr %29, align 4, !tbaa !9
  %863 = load i32, ptr %18, align 4, !tbaa !9
  %864 = icmp sle i32 %862, %863
  br i1 %864, label %865, label %908

865:                                              ; preds = %861
  %866 = load ptr, ptr %9, align 8, !tbaa !5
  %867 = load i32, ptr %866, align 4, !tbaa !9
  %868 = add nsw i32 %867, 1
  %869 = load i32, ptr %30, align 4, !tbaa !9
  %870 = sub nsw i32 %868, %869
  %871 = load i32, ptr %29, align 4, !tbaa !9
  %872 = add nsw i32 %870, %871
  %873 = load i32, ptr %30, align 4, !tbaa !9
  %874 = load i32, ptr %23, align 4, !tbaa !9
  %875 = add nsw i32 %873, %874
  %876 = sub nsw i32 %875, 1
  %877 = load i32, ptr %13, align 4, !tbaa !9
  %878 = mul nsw i32 %876, %877
  %879 = add nsw i32 %872, %878
  store i32 %879, ptr %19, align 4, !tbaa !9
  %880 = load i32, ptr %29, align 4, !tbaa !9
  %881 = load i32, ptr %30, align 4, !tbaa !9
  %882 = mul nsw i32 %881, 33
  %883 = add nsw i32 %880, %882
  %884 = sub nsw i32 %883, 34
  store i32 %884, ptr %20, align 4, !tbaa !9
  %885 = load i32, ptr %20, align 4, !tbaa !9
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds [1056 x %struct.complex], ptr %22, i64 0, i64 %886
  %888 = getelementptr inbounds %struct.complex, ptr %887, i32 0, i32 0
  %889 = load float, ptr %888, align 8, !tbaa !11
  %890 = load ptr, ptr %10, align 8, !tbaa !5
  %891 = load i32, ptr %19, align 4, !tbaa !9
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds %struct.complex, ptr %890, i64 %892
  %894 = getelementptr inbounds %struct.complex, ptr %893, i32 0, i32 0
  store float %889, ptr %894, align 4, !tbaa !11
  %895 = load i32, ptr %20, align 4, !tbaa !9
  %896 = sext i32 %895 to i64
  %897 = getelementptr inbounds [1056 x %struct.complex], ptr %22, i64 0, i64 %896
  %898 = getelementptr inbounds %struct.complex, ptr %897, i32 0, i32 1
  %899 = load float, ptr %898, align 4, !tbaa !14
  %900 = load ptr, ptr %10, align 8, !tbaa !5
  %901 = load i32, ptr %19, align 4, !tbaa !9
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds %struct.complex, ptr %900, i64 %902
  %904 = getelementptr inbounds %struct.complex, ptr %903, i32 0, i32 1
  store float %899, ptr %904, align 4, !tbaa !14
  br label %905

905:                                              ; preds = %865
  %906 = load i32, ptr %29, align 4, !tbaa !9
  %907 = add nsw i32 %906, 1
  store i32 %907, ptr %29, align 4, !tbaa !9
  br label %861, !llvm.loop !27

908:                                              ; preds = %861
  br label %909

909:                                              ; preds = %908
  %910 = load i32, ptr %30, align 4, !tbaa !9
  %911 = add nsw i32 %910, 1
  store i32 %911, ptr %30, align 4, !tbaa !9
  br label %847, !llvm.loop !28

912:                                              ; preds = %847
  br label %913

913:                                              ; preds = %912, %714
  br label %914

914:                                              ; preds = %913, %619
  br label %915

915:                                              ; preds = %914
  %916 = load i32, ptr %15, align 4, !tbaa !9
  %917 = load i32, ptr %23, align 4, !tbaa !9
  %918 = add nsw i32 %917, %916
  store i32 %918, ptr %23, align 4, !tbaa !9
  br label %567, !llvm.loop !29

919:                                              ; preds = %580
  br label %920

920:                                              ; preds = %919, %527
  br label %921

921:                                              ; preds = %920, %109
  store i32 1, ptr %31, align 4
  br label %923

922:                                              ; preds = %613, %210
  store i32 1, ptr %31, align 4
  br label %923

923:                                              ; preds = %922, %921, %89, %80
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8448, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  ret void
}

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

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

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

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

declare void @cpbtf2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare void @ctrsm_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @cherk_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @cgemm_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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


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

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_n1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [9 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4
@c_b21 = external hidden global float, align 4
@c_b22 = external hidden global float, align 4
@c__33 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @cpbtrf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) local_unnamed_addr #0 {
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca %struct.complex, align 8
  %11 = alloca [1056 x %struct.complex], align 16
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 8448, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #5
  %16 = load i32, ptr %4, align 4, !tbaa !5
  %narrow = xor i32 %16, -1
  %17 = sext i32 %narrow to i64
  %18 = getelementptr inbounds %struct.complex, ptr %3, i64 %17
  store i32 0, ptr %5, align 4, !tbaa !5
  %19 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not = icmp eq i32 %19, 0
  br i1 %.not, label %20, label %22

20:                                               ; preds = %6
  %21 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not256 = icmp eq i32 %21, 0
  br i1 %.not256, label %.thread.sink.split, label %22

22:                                               ; preds = %20, %6
  %23 = load i32, ptr %1, align 4, !tbaa !5
  %24 = icmp slt i32 %23, 0
  br i1 %24, label %.thread.sink.split, label %25

25:                                               ; preds = %22
  %26 = load i32, ptr %2, align 4, !tbaa !5
  %27 = icmp slt i32 %26, 0
  br i1 %27, label %.thread.sink.split, label %28

28:                                               ; preds = %25
  %29 = load i32, ptr %4, align 4, !tbaa !5
  %.not257 = icmp sgt i32 %29, %26
  br i1 %.not257, label %30, label %.thread.sink.split

30:                                               ; preds = %28
  %.pr = load i32, ptr %5, align 4, !tbaa !5
  %.not258 = icmp eq i32 %.pr, 0
  br i1 %.not258, label %34, label %.thread

.thread.sink.split:                               ; preds = %28, %25, %22, %20
  %.sink = phi i32 [ -1, %20 ], [ -2, %22 ], [ -3, %25 ], [ -5, %28 ]
  store i32 %.sink, ptr %5, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %30
  %31 = phi i32 [ %.pr, %30 ], [ %.sink, %.thread.sink.split ]
  %32 = sub nsw i32 0, %31
  store i32 %32, ptr %7, align 4, !tbaa !5
  %33 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %7, i32 noundef 6) #5
  br label %.loopexit299

34:                                               ; preds = %30
  %35 = icmp eq i32 %23, 0
  br i1 %35, label %.loopexit299, label %36

36:                                               ; preds = %34
  %37 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %38 = tail call i32 @llvm.smin.i32(i32 %37, i32 32)
  %39 = icmp slt i32 %37, 2
  br i1 %39, label %43, label %40

40:                                               ; preds = %36
  %41 = load i32, ptr %2, align 4, !tbaa !5
  %42 = icmp sgt i32 %38, %41
  br i1 %42, label %43, label %44

43:                                               ; preds = %40, %36
  tail call void @cpbtf2_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %5) #5
  br label %.loopexit299

44:                                               ; preds = %40
  %45 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not259 = icmp eq i32 %45, 0
  br i1 %.not259, label %.lr.ph351.preheader, label %.preheader303.preheader

.lr.ph351.preheader:                              ; preds = %44
  %46 = add nsw i32 %38, -2
  %47 = zext nneg i32 %38 to i64
  %wide.trip.count445 = zext nneg i32 %38 to i64
  %xtraiter565 = and i64 %wide.trip.count445, 1
  %unroll_iter = and i64 %wide.trip.count445, 62
  br label %.lr.ph351

.preheader303.preheader:                          ; preds = %44
  %wide.trip.count409 = zext nneg i32 %38 to i64
  br label %.preheader303

.preheader303:                                    ; preds = %.preheader303.preheader, %.preheader303
  %indvar = phi i64 [ 1, %.preheader303.preheader ], [ %indvar.next, %.preheader303 ]
  %48 = shl nuw nsw i64 %indvar, 3
  %49 = mul nuw nsw i64 %indvar, 264
  %scevgep = getelementptr i8, ptr %11, i64 %49
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep, i8 0, i64 %48, i1 false), !tbaa !9
  %indvar.next = add nuw nsw i64 %indvar, 1
  %exitcond410.not = icmp eq i64 %indvar.next, %wide.trip.count409
  br i1 %exitcond410.not, label %._crit_edge315, label %.preheader303, !llvm.loop !11

._crit_edge315:                                   ; preds = %.preheader303
  %50 = load i32, ptr %1, align 4, !tbaa !5
  %.not276334 = icmp slt i32 %50, 1
  br i1 %.not276334, label %.loopexit299, label %.lr.ph337

.lr.ph337:                                        ; preds = %._crit_edge315
  %invariant.gep471 = getelementptr i8, ptr %18, i64 8
  %invariant.gep475 = getelementptr i8, ptr %18, i64 8
  br label %51

51:                                               ; preds = %.lr.ph337, %.loopexit301
  %.1243335 = phi i32 [ 1, %.lr.ph337 ], [ %248, %.loopexit301 ]
  %52 = load i32, ptr %1, align 4, !tbaa !5
  %53 = sub nsw i32 %52, %.1243335
  %54 = add nsw i32 %53, 1
  store i32 %54, ptr %9, align 4, !tbaa !5
  %55 = call i32 @llvm.smin.i32(i32 %38, i32 %54)
  store i32 %55, ptr %14, align 4, !tbaa !5
  %56 = load i32, ptr %4, align 4, !tbaa !5
  %57 = add nsw i32 %56, -1
  store i32 %57, ptr %8, align 4, !tbaa !5
  %58 = load i32, ptr %2, align 4, !tbaa !5
  %59 = mul nsw i32 %.1243335, %16
  %60 = add i32 %59, 1
  %61 = add i32 %60, %58
  %62 = sext i32 %61 to i64
  %63 = getelementptr inbounds %struct.complex, ptr %18, i64 %62
  %64 = call i32 @cpotf2_(ptr noundef %0, ptr noundef nonnull %14, ptr noundef %63, ptr noundef nonnull %8, ptr noundef nonnull %15) #5
  %65 = load i32, ptr %15, align 4, !tbaa !5
  %.not278 = icmp eq i32 %65, 0
  br i1 %.not278, label %68, label %66

66:                                               ; preds = %51
  %67 = add nsw i32 %65, %.1243335
  br label %502

68:                                               ; preds = %51
  %69 = load i32, ptr %14, align 4, !tbaa !5
  %70 = add nsw i32 %69, %.1243335
  %71 = load i32, ptr %1, align 4, !tbaa !5
  %.not279 = icmp sgt i32 %70, %71
  br i1 %.not279, label %.loopexit301, label %72

72:                                               ; preds = %68
  %73 = load i32, ptr %2, align 4, !tbaa !5
  %74 = sub nsw i32 %73, %69
  %75 = sub i32 %71, %70
  %76 = add nsw i32 %75, 1
  %77 = call i32 @llvm.smin.i32(i32 %74, i32 %76)
  store i32 %77, ptr %12, align 4, !tbaa !5
  store i32 %69, ptr %8, align 4, !tbaa !5
  %78 = add i32 %71, 1
  %79 = add i32 %.1243335, %73
  %80 = sub i32 %78, %79
  store i32 %80, ptr %9, align 4, !tbaa !5
  %81 = call i32 @llvm.smin.i32(i32 %69, i32 %80)
  store i32 %81, ptr %13, align 4, !tbaa !5
  %82 = icmp sgt i32 %77, 0
  br i1 %82, label %83, label %109

83:                                               ; preds = %72
  %84 = load i32, ptr %4, align 4, !tbaa !5
  %85 = add nsw i32 %84, -1
  store i32 %85, ptr %8, align 4, !tbaa !5
  store i32 %85, ptr %9, align 4, !tbaa !5
  %86 = add nsw i32 %73, 1
  %87 = add nsw i32 %86, %59
  %88 = sext i32 %87 to i64
  %89 = getelementptr inbounds %struct.complex, ptr %18, i64 %88
  %90 = mul nsw i32 %70, %16
  %91 = sub i32 %90, %69
  %92 = add i32 %91, %86
  %93 = sext i32 %92 to i64
  %94 = getelementptr inbounds %struct.complex, ptr %18, i64 %93
  call void @ctrsm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %14, ptr noundef nonnull %12, ptr noundef nonnull @c_b1, ptr noundef %89, ptr noundef nonnull %8, ptr noundef %94, ptr noundef nonnull %9) #5
  %95 = load i32, ptr %4, align 4, !tbaa !5
  %96 = add nsw i32 %95, -1
  store i32 %96, ptr %8, align 4, !tbaa !5
  store i32 %96, ptr %9, align 4, !tbaa !5
  %97 = load i32, ptr %2, align 4, !tbaa !5
  %98 = add nsw i32 %97, 1
  %99 = load i32, ptr %14, align 4, !tbaa !5
  %100 = sub i32 %98, %99
  %101 = add nsw i32 %99, %.1243335
  %102 = mul nsw i32 %101, %16
  %103 = add nsw i32 %100, %102
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds %struct.complex, ptr %18, i64 %104
  %106 = add nsw i32 %102, %98
  %107 = sext i32 %106 to i64
  %108 = getelementptr inbounds %struct.complex, ptr %18, i64 %107
  call void @cherk_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef nonnull @c_b21, ptr noundef %105, ptr noundef nonnull %8, ptr noundef nonnull @c_b22, ptr noundef %108, ptr noundef nonnull %9) #5
  %.pr290 = load i32, ptr %13, align 4, !tbaa !5
  br label %109

109:                                              ; preds = %83, %72
  %110 = phi i32 [ %.pr290, %83 ], [ %81, %72 ]
  %111 = icmp sgt i32 %110, 0
  br i1 %111, label %112, label %.loopexit301

112:                                              ; preds = %109
  %113 = load i32, ptr %14, align 4, !tbaa !5
  store i32 %113, ptr %9, align 4, !tbaa !5
  %114 = add nsw i32 %.1243335, -1
  %115 = add i32 %113, 1
  %116 = sext i32 %113 to i64
  %117 = add nuw i32 %110, 1
  %wide.trip.count419 = zext i32 %117 to i64
  %wide.trip.count = zext i32 %115 to i64
  %118 = add nsw i64 %wide.trip.count, -2
  %119 = add nsw i64 %wide.trip.count, -1
  br label %120

120:                                              ; preds = %112, %._crit_edge321
  %indvar490 = phi i64 [ 0, %112 ], [ %indvar.next491, %._crit_edge321 ]
  %indvars.iv411 = phi i64 [ 1, %112 ], [ %indvars.iv.next412, %._crit_edge321 ]
  %121 = xor i64 %indvar490, -1
  %122 = add i64 %121, %wide.trip.count
  %123 = sub i64 %118, %indvar490
  %124 = trunc i64 %indvar490 to i32
  %125 = mul i32 %124, 34
  %.not287317 = icmp sgt i64 %indvars.iv411, %116
  %126 = trunc nuw nsw i64 %indvars.iv411 to i32
  br i1 %.not287317, label %._crit_edge321, label %.lr.ph320

.lr.ph320:                                        ; preds = %120
  %127 = load i32, ptr %2, align 4, !tbaa !5
  %128 = add i32 %114, %126
  %129 = add i32 %128, %127
  %130 = mul nsw i32 %129, %16
  %131 = sext i32 %130 to i64
  %132 = mul i64 %indvars.iv411, 33
  %133 = add i64 %132, 4294967262
  %invariant.gep473 = getelementptr %struct.complex, ptr %invariant.gep471, i64 %131
  %min.iters.check494 = icmp ult i64 %122, 4
  br i1 %min.iters.check494, label %scalar.ph493.preheader, label %vector.scevcheck489

vector.scevcheck489:                              ; preds = %.lr.ph320
  %134 = trunc i64 %123 to i32
  %135 = add i32 %125, %134
  %136 = icmp slt i32 %135, %125
  %137 = icmp ugt i64 %123, 4294967295
  %138 = or i1 %136, %137
  br i1 %138, label %scalar.ph493.preheader, label %vector.ph495

vector.ph495:                                     ; preds = %vector.scevcheck489
  %n.vec497 = and i64 %122, -2
  %ind.end498 = add i64 %indvars.iv411, %n.vec497
  br label %vector.body500

vector.body500:                                   ; preds = %vector.body500, %vector.ph495
  %index501 = phi i64 [ 0, %vector.ph495 ], [ %index.next507, %vector.body500 ]
  %offset.idx502 = add i64 %indvars.iv411, %index501
  %139 = add i64 %133, %offset.idx502
  %140 = getelementptr %struct.complex, ptr %invariant.gep473, i64 %index501
  %wide.vec503 = load <4 x float>, ptr %140, align 4, !tbaa !9
  %141 = shl i64 %139, 32
  %142 = ashr exact i64 %141, 32
  %143 = getelementptr inbounds [1056 x %struct.complex], ptr %11, i64 0, i64 %142
  store <4 x float> %wide.vec503, ptr %143, align 8, !tbaa !9
  %index.next507 = add nuw i64 %index501, 2
  %144 = icmp eq i64 %index.next507, %n.vec497
  br i1 %144, label %middle.block492, label %vector.body500, !llvm.loop !14

middle.block492:                                  ; preds = %vector.body500
  %cmp.n508 = icmp eq i64 %122, %n.vec497
  br i1 %cmp.n508, label %._crit_edge321, label %scalar.ph493.preheader

scalar.ph493.preheader:                           ; preds = %middle.block492, %vector.scevcheck489, %.lr.ph320
  %indvars.iv413.ph = phi i64 [ %indvars.iv411, %vector.scevcheck489 ], [ %indvars.iv411, %.lr.ph320 ], [ %ind.end498, %middle.block492 ]
  %145 = sub i64 %wide.trip.count, %indvars.iv413.ph
  %xtraiter = and i64 %145, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph493.prol.loopexit, label %scalar.ph493.prol

scalar.ph493.prol:                                ; preds = %scalar.ph493.preheader
  %146 = add i64 %133, %indvars.iv413.ph
  %147 = sub nuw nsw i64 %indvars.iv413.ph, %indvars.iv411
  %gep474.prol = getelementptr %struct.complex, ptr %invariant.gep473, i64 %147
  %sext.prol = shl i64 %146, 32
  %148 = ashr exact i64 %sext.prol, 32
  %149 = getelementptr inbounds [1056 x %struct.complex], ptr %11, i64 0, i64 %148
  %150 = load <2 x float>, ptr %gep474.prol, align 4, !tbaa !9
  store <2 x float> %150, ptr %149, align 8, !tbaa !9
  %indvars.iv.next414.prol = add nuw nsw i64 %indvars.iv413.ph, 1
  br label %scalar.ph493.prol.loopexit

scalar.ph493.prol.loopexit:                       ; preds = %scalar.ph493.prol, %scalar.ph493.preheader
  %indvars.iv413.unr = phi i64 [ %indvars.iv413.ph, %scalar.ph493.preheader ], [ %indvars.iv.next414.prol, %scalar.ph493.prol ]
  %151 = icmp eq i64 %indvars.iv413.ph, %119
  br i1 %151, label %._crit_edge321, label %scalar.ph493

scalar.ph493:                                     ; preds = %scalar.ph493.prol.loopexit, %scalar.ph493
  %indvars.iv413 = phi i64 [ %indvars.iv.next414.1, %scalar.ph493 ], [ %indvars.iv413.unr, %scalar.ph493.prol.loopexit ]
  %152 = add i64 %133, %indvars.iv413
  %153 = sub nuw nsw i64 %indvars.iv413, %indvars.iv411
  %gep474 = getelementptr %struct.complex, ptr %invariant.gep473, i64 %153
  %sext = shl i64 %152, 32
  %154 = ashr exact i64 %sext, 32
  %155 = getelementptr inbounds [1056 x %struct.complex], ptr %11, i64 0, i64 %154
  %156 = load <2 x float>, ptr %gep474, align 4, !tbaa !9
  store <2 x float> %156, ptr %155, align 8, !tbaa !9
  %indvars.iv.next414 = add nuw nsw i64 %indvars.iv413, 1
  %157 = add i64 %133, %indvars.iv.next414
  %158 = sub nuw nsw i64 %indvars.iv.next414, %indvars.iv411
  %gep474.1 = getelementptr %struct.complex, ptr %invariant.gep473, i64 %158
  %sext.1 = shl i64 %157, 32
  %159 = ashr exact i64 %sext.1, 32
  %160 = getelementptr inbounds [1056 x %struct.complex], ptr %11, i64 0, i64 %159
  %161 = load <2 x float>, ptr %gep474.1, align 4, !tbaa !9
  store <2 x float> %161, ptr %160, align 8, !tbaa !9
  %indvars.iv.next414.1 = add nuw nsw i64 %indvars.iv413, 2
  %exitcond417.not.1 = icmp eq i64 %indvars.iv.next414.1, %wide.trip.count
  br i1 %exitcond417.not.1, label %._crit_edge321, label %scalar.ph493, !llvm.loop !17

._crit_edge321:                                   ; preds = %scalar.ph493.prol.loopexit, %scalar.ph493, %middle.block492, %120
  %storemerge286.lcssa = phi i32 [ %126, %120 ], [ %115, %middle.block492 ], [ %115, %scalar.ph493 ], [ %115, %scalar.ph493.prol.loopexit ]
  %indvars.iv.next412 = add nuw nsw i64 %indvars.iv411, 1
  %exitcond420.not = icmp eq i64 %indvars.iv.next412, %wide.trip.count419
  %indvar.next491 = add i64 %indvar490, 1
  br i1 %exitcond420.not, label %162, label %120, !llvm.loop !18

162:                                              ; preds = %._crit_edge321
  store i32 %storemerge286.lcssa, ptr %15, align 4, !tbaa !5
  %163 = load i32, ptr %4, align 4, !tbaa !5
  %164 = add nsw i32 %163, -1
  store i32 %164, ptr %8, align 4, !tbaa !5
  %165 = load i32, ptr %2, align 4, !tbaa !5
  %166 = add i32 %60, %165
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds %struct.complex, ptr %18, i64 %167
  call void @ctrsm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %14, ptr noundef nonnull %13, ptr noundef nonnull @c_b1, ptr noundef %168, ptr noundef nonnull %8, ptr noundef nonnull %11, ptr noundef nonnull @c__33) #5
  %169 = load i32, ptr %12, align 4, !tbaa !5
  %170 = icmp sgt i32 %169, 0
  br i1 %170, label %171, label %189

171:                                              ; preds = %162
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %10, align 8, !tbaa !9
  %172 = load i32, ptr %4, align 4, !tbaa !5
  %173 = add nsw i32 %172, -1
  store i32 %173, ptr %8, align 4, !tbaa !5
  store i32 %173, ptr %9, align 4, !tbaa !5
  %174 = load i32, ptr %2, align 4, !tbaa !5
  %175 = add nsw i32 %174, 1
  %176 = load i32, ptr %14, align 4, !tbaa !5
  %177 = sub i32 %175, %176
  %178 = add nsw i32 %176, %.1243335
  %179 = mul nsw i32 %178, %16
  %180 = add nsw i32 %177, %179
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds %struct.complex, ptr %18, i64 %181
  %183 = add nsw i32 %176, 1
  %184 = add nsw i32 %174, %.1243335
  %185 = mul nsw i32 %184, %16
  %186 = add nsw i32 %183, %185
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds %struct.complex, ptr %18, i64 %187
  call void @cgemm_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.7, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %10, ptr noundef %182, ptr noundef nonnull %8, ptr noundef nonnull %11, ptr noundef nonnull @c__33, ptr noundef nonnull @c_b1, ptr noundef %188, ptr noundef nonnull %9) #5
  br label %189

189:                                              ; preds = %171, %162
  %190 = load i32, ptr %4, align 4, !tbaa !5
  %191 = add nsw i32 %190, -1
  store i32 %191, ptr %8, align 4, !tbaa !5
  %192 = load i32, ptr %2, align 4, !tbaa !5
  %193 = add nsw i32 %192, 1
  %194 = add nsw i32 %192, %.1243335
  %195 = mul nsw i32 %194, %16
  %196 = add nsw i32 %193, %195
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds %struct.complex, ptr %18, i64 %197
  call void @cherk_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull @c_b21, ptr noundef nonnull %11, ptr noundef nonnull @c__33, ptr noundef nonnull @c_b22, ptr noundef %198, ptr noundef nonnull %8) #5
  %199 = load i32, ptr %13, align 4, !tbaa !5
  store i32 %199, ptr %8, align 4, !tbaa !5
  %.not283330 = icmp slt i32 %199, 1
  br i1 %.not283330, label %.loopexit301, label %.lr.ph333

.lr.ph333:                                        ; preds = %189
  %200 = load i32, ptr %14, align 4, !tbaa !5
  store i32 %200, ptr %9, align 4, !tbaa !5
  %201 = add i32 %200, 1
  %202 = sext i32 %200 to i64
  %203 = add nuw i32 %199, 1
  %wide.trip.count430 = zext i32 %203 to i64
  %wide.trip.count427 = zext i32 %201 to i64
  %204 = add nsw i64 %wide.trip.count427, -2
  %205 = add nsw i64 %wide.trip.count427, -1
  br label %206

206:                                              ; preds = %.lr.ph333, %._crit_edge328
  %indvar486 = phi i64 [ 0, %.lr.ph333 ], [ %indvar.next487, %._crit_edge328 ]
  %indvars.iv421 = phi i64 [ 1, %.lr.ph333 ], [ %indvars.iv.next422, %._crit_edge328 ]
  %207 = xor i64 %indvar486, -1
  %208 = add i64 %207, %wide.trip.count427
  %209 = sub i64 %204, %indvar486
  %210 = trunc i64 %indvar486 to i32
  %211 = mul i32 %210, 34
  %.not285324 = icmp sgt i64 %indvars.iv421, %202
  %212 = trunc nuw nsw i64 %indvars.iv421 to i32
  br i1 %.not285324, label %._crit_edge328, label %.lr.ph327

.lr.ph327:                                        ; preds = %206
  %213 = load i32, ptr %2, align 4, !tbaa !5
  %214 = add i32 %114, %212
  %215 = add i32 %214, %213
  %216 = mul nsw i32 %215, %16
  %217 = sext i32 %216 to i64
  %218 = mul i64 %indvars.iv421, 33
  %219 = add i64 %218, 4294967262
  %invariant.gep477 = getelementptr %struct.complex, ptr %invariant.gep475, i64 %217
  %min.iters.check = icmp ult i64 %208, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph327
  %220 = trunc i64 %209 to i32
  %221 = add i32 %211, %220
  %222 = icmp slt i32 %221, %211
  %223 = icmp ugt i64 %209, 4294967295
  %224 = or i1 %222, %223
  br i1 %224, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.scevcheck
  %n.vec = and i64 %208, -2
  %ind.end = add i64 %indvars.iv421, %n.vec
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = add i64 %indvars.iv421, %index
  %225 = add i64 %219, %offset.idx
  %226 = shl i64 %225, 32
  %227 = ashr exact i64 %226, 32
  %228 = getelementptr inbounds [1056 x %struct.complex], ptr %11, i64 0, i64 %227
  %wide.vec = load <4 x float>, ptr %228, align 8, !tbaa !9
  %229 = getelementptr %struct.complex, ptr %invariant.gep477, i64 %index
  store <4 x float> %wide.vec, ptr %229, align 4, !tbaa !9
  %index.next = add nuw i64 %index, 2
  %230 = icmp eq i64 %index.next, %n.vec
  br i1 %230, label %middle.block, label %vector.body, !llvm.loop !19

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

scalar.ph.preheader:                              ; preds = %middle.block, %vector.scevcheck, %.lr.ph327
  %indvars.iv423.ph = phi i64 [ %indvars.iv421, %vector.scevcheck ], [ %indvars.iv421, %.lr.ph327 ], [ %ind.end, %middle.block ]
  %231 = sub i64 %wide.trip.count427, %indvars.iv423.ph
  %xtraiter563 = and i64 %231, 1
  %lcmp.mod564.not = icmp eq i64 %xtraiter563, 0
  br i1 %lcmp.mod564.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %232 = sub nuw nsw i64 %indvars.iv423.ph, %indvars.iv421
  %233 = add i64 %219, %indvars.iv423.ph
  %sext462.prol = shl i64 %233, 32
  %234 = ashr exact i64 %sext462.prol, 32
  %235 = getelementptr inbounds [1056 x %struct.complex], ptr %11, i64 0, i64 %234
  %gep478.prol = getelementptr %struct.complex, ptr %invariant.gep477, i64 %232
  %236 = load <2 x float>, ptr %235, align 8, !tbaa !9
  store <2 x float> %236, ptr %gep478.prol, align 4, !tbaa !9
  %indvars.iv.next424.prol = add nuw nsw i64 %indvars.iv423.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv423.unr = phi i64 [ %indvars.iv423.ph, %scalar.ph.preheader ], [ %indvars.iv.next424.prol, %scalar.ph.prol ]
  %237 = icmp eq i64 %indvars.iv423.ph, %205
  br i1 %237, label %._crit_edge328, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv423 = phi i64 [ %indvars.iv.next424.1, %scalar.ph ], [ %indvars.iv423.unr, %scalar.ph.prol.loopexit ]
  %238 = sub nuw nsw i64 %indvars.iv423, %indvars.iv421
  %239 = add i64 %219, %indvars.iv423
  %sext462 = shl i64 %239, 32
  %240 = ashr exact i64 %sext462, 32
  %241 = getelementptr inbounds [1056 x %struct.complex], ptr %11, i64 0, i64 %240
  %gep478 = getelementptr %struct.complex, ptr %invariant.gep477, i64 %238
  %242 = load <2 x float>, ptr %241, align 8, !tbaa !9
  store <2 x float> %242, ptr %gep478, align 4, !tbaa !9
  %indvars.iv.next424 = add nuw nsw i64 %indvars.iv423, 1
  %243 = sub nuw nsw i64 %indvars.iv.next424, %indvars.iv421
  %244 = add i64 %219, %indvars.iv.next424
  %sext462.1 = shl i64 %244, 32
  %245 = ashr exact i64 %sext462.1, 32
  %246 = getelementptr inbounds [1056 x %struct.complex], ptr %11, i64 0, i64 %245
  %gep478.1 = getelementptr %struct.complex, ptr %invariant.gep477, i64 %243
  %247 = load <2 x float>, ptr %246, align 8, !tbaa !9
  store <2 x float> %247, ptr %gep478.1, align 4, !tbaa !9
  %indvars.iv.next424.1 = add nuw nsw i64 %indvars.iv423, 2
  %exitcond428.not.1 = icmp eq i64 %indvars.iv.next424.1, %wide.trip.count427
  br i1 %exitcond428.not.1, label %._crit_edge328, label %scalar.ph, !llvm.loop !20

._crit_edge328:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %206
  %storemerge284.lcssa = phi i32 [ %212, %206 ], [ %201, %middle.block ], [ %201, %scalar.ph ], [ %201, %scalar.ph.prol.loopexit ]
  %indvars.iv.next422 = add nuw nsw i64 %indvars.iv421, 1
  %exitcond431.not = icmp eq i64 %indvars.iv.next422, %wide.trip.count430
  %indvar.next487 = add i64 %indvar486, 1
  br i1 %exitcond431.not, label %..loopexit301_crit_edge, label %206, !llvm.loop !21

..loopexit301_crit_edge:                          ; preds = %._crit_edge328
  store i32 %storemerge284.lcssa, ptr %15, align 4, !tbaa !5
  br label %.loopexit301

.loopexit301:                                     ; preds = %189, %..loopexit301_crit_edge, %68, %109
  %248 = add nuw nsw i32 %.1243335, %38
  %.not276 = icmp sgt i32 %248, %50
  br i1 %.not276, label %.loopexit299, label %51, !llvm.loop !22

.loopexit300:                                     ; preds = %.lr.ph342, %.lr.ph351
  %indvars.iv.next443.1 = add nuw nsw i64 %indvars.iv442, 2
  %.not274339.not.1 = icmp ult i64 %indvars.iv.next443, %47
  br i1 %.not274339.not.1, label %.lr.ph342.1, label %.loopexit300.1

.lr.ph342.1:                                      ; preds = %.loopexit300
  %indvar.next433 = or disjoint i64 %indvar432, 1
  %249 = trunc i64 %indvar.next433 to i32
  %250 = sub i32 %46, %249
  %251 = zext i32 %250 to i64
  %252 = shl nuw nsw i64 %251, 3
  %253 = add nuw nsw i64 %252, 8
  %254 = mul nuw nsw i64 %indvar.next433, 272
  %255 = or disjoint i64 %254, 8
  %scevgep434.1 = getelementptr i8, ptr %11, i64 %255
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep434.1, i8 0, i64 %253, i1 false), !tbaa !9
  br label %.loopexit300.1

.loopexit300.1:                                   ; preds = %.lr.ph342.1, %.loopexit300
  %indvar.next433.1 = add nuw nsw i64 %indvar432, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge352.unr-lcssa, label %.lr.ph351, !llvm.loop !23

.lr.ph351:                                        ; preds = %.loopexit300.1, %.lr.ph351.preheader
  %indvars.iv442 = phi i64 [ 1, %.lr.ph351.preheader ], [ %indvars.iv.next443.1, %.loopexit300.1 ]
  %indvar432 = phi i64 [ 0, %.lr.ph351.preheader ], [ %indvar.next433.1, %.loopexit300.1 ]
  %niter = phi i64 [ 0, %.lr.ph351.preheader ], [ %niter.next.1, %.loopexit300.1 ]
  %indvars.iv.next443 = add nuw nsw i64 %indvars.iv442, 1
  %.not274339.not = icmp ult i64 %indvars.iv442, %47
  br i1 %.not274339.not, label %.lr.ph342, label %.loopexit300

.lr.ph342:                                        ; preds = %.lr.ph351
  %256 = trunc i64 %indvar432 to i32
  %257 = sub i32 %46, %256
  %258 = zext i32 %257 to i64
  %259 = shl nuw nsw i64 %258, 3
  %260 = add nuw nsw i64 %259, 8
  %261 = mul nuw nsw i64 %indvar432, 272
  %262 = or disjoint i64 %261, 8
  %scevgep434 = getelementptr i8, ptr %11, i64 %262
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep434, i8 0, i64 %260, i1 false), !tbaa !9
  br label %.loopexit300

._crit_edge352.unr-lcssa:                         ; preds = %.loopexit300.1
  %lcmp.mod566.not = icmp ne i64 %xtraiter565, 0
  %.not274339.not.epil = icmp ult i64 %indvars.iv.next443.1, %47
  %or.cond = select i1 %lcmp.mod566.not, i1 %.not274339.not.epil, i1 false
  br i1 %or.cond, label %.lr.ph342.epil, label %._crit_edge352

.lr.ph342.epil:                                   ; preds = %._crit_edge352.unr-lcssa
  %263 = trunc i64 %indvar.next433.1 to i32
  %264 = sub i32 %46, %263
  %265 = zext i32 %264 to i64
  %266 = shl nuw nsw i64 %265, 3
  %267 = add nuw nsw i64 %266, 8
  %268 = mul nuw nsw i64 %indvar.next433.1, 272
  %269 = or disjoint i64 %268, 8
  %scevgep434.epil = getelementptr i8, ptr %11, i64 %269
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep434.epil, i8 0, i64 %267, i1 false), !tbaa !9
  br label %._crit_edge352

._crit_edge352:                                   ; preds = %.lr.ph342.epil, %._crit_edge352.unr-lcssa
  %270 = load i32, ptr %1, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %18, i64 8
  %271 = icmp sgt i32 %270, 0
  br i1 %271, label %.lr.ph385, label %.loopexit299

.lr.ph385:                                        ; preds = %._crit_edge352
  %272 = add i32 %16, 1
  %273 = mul i32 %16, %38
  %274 = add i32 %16, -1
  %275 = mul i32 %16, %38
  br label %276

276:                                              ; preds = %.lr.ph385, %.loopexit
  %indvar513 = phi i32 [ 0, %.lr.ph385 ], [ %indvar.next514, %.loopexit ]
  %.3245383 = phi i32 [ 1, %.lr.ph385 ], [ %501, %.loopexit ]
  %277 = mul i32 %275, %indvar513
  %278 = add i32 %272, %277
  %279 = mul i32 %273, %indvar513
  %280 = add i32 %272, %279
  %281 = load i32, ptr %1, align 4, !tbaa !5
  %282 = sub nsw i32 %281, %.3245383
  %283 = add nsw i32 %282, 1
  store i32 %283, ptr %9, align 4, !tbaa !5
  %284 = call i32 @llvm.smin.i32(i32 %38, i32 %283)
  store i32 %284, ptr %14, align 4, !tbaa !5
  %285 = load i32, ptr %4, align 4, !tbaa !5
  %286 = add nsw i32 %285, -1
  store i32 %286, ptr %8, align 4, !tbaa !5
  %287 = mul nsw i32 %.3245383, %16
  %288 = sext i32 %287 to i64
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %288
  %289 = call i32 @cpotf2_(ptr noundef %0, ptr noundef nonnull %14, ptr noundef %gep, ptr noundef nonnull %8, ptr noundef nonnull %15) #5
  %290 = load i32, ptr %15, align 4, !tbaa !5
  %.not262 = icmp eq i32 %290, 0
  br i1 %.not262, label %293, label %291

291:                                              ; preds = %276
  %292 = add nsw i32 %290, %.3245383
  br label %502

293:                                              ; preds = %276
  %294 = load i32, ptr %14, align 4, !tbaa !5
  %295 = add nsw i32 %294, %.3245383
  %296 = load i32, ptr %1, align 4, !tbaa !5
  %.not263 = icmp sgt i32 %295, %296
  br i1 %.not263, label %.loopexit, label %297

297:                                              ; preds = %293
  %298 = load i32, ptr %2, align 4, !tbaa !5
  %299 = sub nsw i32 %298, %294
  %300 = sub i32 %296, %295
  %301 = add nsw i32 %300, 1
  %302 = call i32 @llvm.smin.i32(i32 %299, i32 %301)
  store i32 %302, ptr %12, align 4, !tbaa !5
  store i32 %294, ptr %8, align 4, !tbaa !5
  %303 = add i32 %296, 1
  %304 = add i32 %.3245383, %298
  %305 = sub i32 %303, %304
  store i32 %305, ptr %9, align 4, !tbaa !5
  %306 = call i32 @llvm.smin.i32(i32 %294, i32 %305)
  store i32 %306, ptr %13, align 4, !tbaa !5
  %307 = icmp sgt i32 %302, 0
  br i1 %307, label %308, label %324

308:                                              ; preds = %297
  %309 = load i32, ptr %4, align 4, !tbaa !5
  %310 = add nsw i32 %309, -1
  store i32 %310, ptr %8, align 4, !tbaa !5
  store i32 %310, ptr %9, align 4, !tbaa !5
  %311 = add i32 %287, 1
  %312 = add i32 %311, %294
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds %struct.complex, ptr %18, i64 %313
  call void @ctrsm_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef nonnull @c_b1, ptr noundef %gep, ptr noundef nonnull %8, ptr noundef %314, ptr noundef nonnull %9) #5
  %315 = load i32, ptr %4, align 4, !tbaa !5
  %316 = add nsw i32 %315, -1
  store i32 %316, ptr %8, align 4, !tbaa !5
  store i32 %316, ptr %9, align 4, !tbaa !5
  %317 = load i32, ptr %14, align 4, !tbaa !5
  %318 = add i32 %311, %317
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds %struct.complex, ptr %18, i64 %319
  %321 = add nsw i32 %317, %.3245383
  %322 = mul nsw i32 %321, %16
  %323 = sext i32 %322 to i64
  %gep379 = getelementptr %struct.complex, ptr %invariant.gep, i64 %323
  call void @cherk_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.7, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef nonnull @c_b21, ptr noundef %320, ptr noundef nonnull %8, ptr noundef nonnull @c_b22, ptr noundef %gep379, ptr noundef nonnull %9) #5
  %.pr291 = load i32, ptr %13, align 4
  br label %324

324:                                              ; preds = %308, %297
  %325 = phi i32 [ %.pr291, %308 ], [ %306, %297 ]
  %326 = icmp sgt i32 %325, 0
  br i1 %326, label %327, label %.loopexit

327:                                              ; preds = %324
  %328 = load i32, ptr %14, align 4, !tbaa !5
  %.not266361 = icmp slt i32 %328, 1
  br i1 %.not266361, label %400, label %.lr.ph364

.lr.ph364:                                        ; preds = %327
  %329 = add nsw i32 %.3245383, -1
  %330 = load i32, ptr %2, align 4, !tbaa !5
  %331 = add i32 %330, %278
  br label %.lr.ph358

.lr.ph358:                                        ; preds = %._crit_edge359, %.lr.ph364
  %indvar535 = phi i32 [ %indvar.next536, %._crit_edge359 ], [ 0, %.lr.ph364 ]
  %.2362 = phi i32 [ %399, %._crit_edge359 ], [ 1, %.lr.ph364 ]
  %smin567 = call i32 @llvm.smin.i32(i32 %325, i32 %.2362)
  %332 = add i32 %smin567, 1
  %333 = zext i32 %332 to i64
  %smin537 = call i32 @llvm.smin.i32(i32 %325, i32 %.2362)
  %334 = add i32 %smin537, 1
  %335 = zext i32 %334 to i64
  %336 = add nsw i64 %335, -1
  %smin = call i32 @llvm.smin.i32(i32 %325, i32 %.2362)
  %337 = add i32 %smin, 1
  %338 = mul nuw nsw i32 %.2362, 33
  %339 = add nsw i32 %338, -34
  %340 = add i32 %329, %.2362
  %341 = mul nsw i32 %340, %16
  %reass.sub388 = sub i32 %341, %.2362
  %342 = add i32 %reass.sub388, 1
  %wide.trip.count450 = zext i32 %337 to i64
  %min.iters.check540 = icmp ult i64 %336, 10
  br i1 %min.iters.check540, label %scalar.ph539.preheader, label %vector.scevcheck533

vector.scevcheck533:                              ; preds = %.lr.ph358
  %343 = mul i32 %indvar535, 33
  %344 = mul i32 %274, %indvar535
  %345 = add i32 %331, %344
  %smin534 = call i32 @llvm.smin.i32(i32 %325, i32 %.2362)
  %346 = add i32 %smin534, 1
  %347 = zext i32 %346 to i64
  %348 = add nsw i64 %347, -2
  %349 = trunc i64 %348 to i32
  %350 = add i32 %345, %349
  %351 = icmp slt i32 %350, %345
  %352 = trunc i64 %348 to i32
  %353 = add i32 %343, %352
  %354 = icmp slt i32 %353, %343
  %355 = icmp ugt i64 %348, 4294967295
  %356 = or i1 %354, %355
  %357 = or i1 %351, %356
  br i1 %357, label %scalar.ph539.preheader, label %vector.ph541

vector.ph541:                                     ; preds = %vector.scevcheck533
  %n.vec543 = and i64 %336, -2
  %ind.end544 = or i64 %336, 1
  br label %vector.body546

vector.body546:                                   ; preds = %vector.body546, %vector.ph541
  %index547 = phi i64 [ 0, %vector.ph541 ], [ %index.next553, %vector.body546 ]
  %358 = trunc i64 %index547 to i32
  %359 = or disjoint i32 %358, 1
  %360 = add i32 %339, %359
  %361 = add i32 %342, %359
  %362 = add i32 %361, %330
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds %struct.complex, ptr %18, i64 %363
  %wide.vec549 = load <4 x float>, ptr %364, align 4, !tbaa !9
  %365 = sext i32 %360 to i64
  %366 = getelementptr inbounds [1056 x %struct.complex], ptr %11, i64 0, i64 %365
  store <4 x float> %wide.vec549, ptr %366, align 8, !tbaa !9
  %index.next553 = add nuw i64 %index547, 2
  %367 = icmp eq i64 %index.next553, %n.vec543
  br i1 %367, label %middle.block538, label %vector.body546, !llvm.loop !24

middle.block538:                                  ; preds = %vector.body546
  %cmp.n554 = icmp eq i64 %336, %n.vec543
  br i1 %cmp.n554, label %._crit_edge359, label %scalar.ph539.preheader

scalar.ph539.preheader:                           ; preds = %middle.block538, %vector.scevcheck533, %.lr.ph358
  %indvars.iv447.ph = phi i64 [ 1, %vector.scevcheck533 ], [ 1, %.lr.ph358 ], [ %ind.end544, %middle.block538 ]
  %368 = and i64 %333, 1
  %lcmp.mod569.not.not = icmp eq i64 %368, 0
  br i1 %lcmp.mod569.not.not, label %scalar.ph539.prol, label %scalar.ph539.prol.loopexit

scalar.ph539.prol:                                ; preds = %scalar.ph539.preheader
  %369 = trunc nuw nsw i64 %indvars.iv447.ph to i32
  %370 = add i32 %339, %369
  %371 = add i32 %342, %369
  %372 = add i32 %371, %330
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds %struct.complex, ptr %18, i64 %373
  %375 = sext i32 %370 to i64
  %376 = getelementptr inbounds [1056 x %struct.complex], ptr %11, i64 0, i64 %375
  %377 = load <2 x float>, ptr %374, align 4, !tbaa !9
  store <2 x float> %377, ptr %376, align 8, !tbaa !9
  %indvars.iv.next448.prol = add nuw nsw i64 %indvars.iv447.ph, 1
  br label %scalar.ph539.prol.loopexit

scalar.ph539.prol.loopexit:                       ; preds = %scalar.ph539.prol, %scalar.ph539.preheader
  %indvars.iv447.unr = phi i64 [ %indvars.iv447.ph, %scalar.ph539.preheader ], [ %indvars.iv.next448.prol, %scalar.ph539.prol ]
  %378 = add nsw i64 %333, -1
  %379 = icmp eq i64 %indvars.iv447.ph, %378
  br i1 %379, label %._crit_edge359, label %scalar.ph539

scalar.ph539:                                     ; preds = %scalar.ph539.prol.loopexit, %scalar.ph539
  %indvars.iv447 = phi i64 [ %indvars.iv.next448.1, %scalar.ph539 ], [ %indvars.iv447.unr, %scalar.ph539.prol.loopexit ]
  %380 = trunc nuw nsw i64 %indvars.iv447 to i32
  %381 = add i32 %339, %380
  %382 = add i32 %342, %380
  %383 = add i32 %382, %330
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds %struct.complex, ptr %18, i64 %384
  %386 = sext i32 %381 to i64
  %387 = getelementptr inbounds [1056 x %struct.complex], ptr %11, i64 0, i64 %386
  %388 = load <2 x float>, ptr %385, align 4, !tbaa !9
  store <2 x float> %388, ptr %387, align 8, !tbaa !9
  %389 = trunc i64 %indvars.iv447 to i32
  %390 = add i32 %389, 1
  %391 = add i32 %339, %390
  %392 = add i32 %342, %390
  %393 = add i32 %392, %330
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds %struct.complex, ptr %18, i64 %394
  %396 = sext i32 %391 to i64
  %397 = getelementptr inbounds [1056 x %struct.complex], ptr %11, i64 0, i64 %396
  %398 = load <2 x float>, ptr %395, align 4, !tbaa !9
  store <2 x float> %398, ptr %397, align 8, !tbaa !9
  %indvars.iv.next448.1 = add nuw nsw i64 %indvars.iv447, 2
  %exitcond451.not.1 = icmp eq i64 %indvars.iv.next448.1, %wide.trip.count450
  br i1 %exitcond451.not.1, label %._crit_edge359, label %scalar.ph539, !llvm.loop !25

._crit_edge359:                                   ; preds = %scalar.ph539.prol.loopexit, %scalar.ph539, %middle.block538
  %399 = add nuw i32 %.2362, 1
  %exitcond453.not = icmp eq i32 %.2362, %328
  %indvar.next536 = add i32 %indvar535, 1
  br i1 %exitcond453.not, label %._crit_edge365, label %.lr.ph358, !llvm.loop !26

._crit_edge365:                                   ; preds = %._crit_edge359
  %smin452 = call i32 @llvm.smin.i32(i32 %325, i32 %328)
  store i32 %smin452, ptr %9, align 4, !tbaa !5
  store i32 %337, ptr %15, align 4, !tbaa !5
  br label %400

400:                                              ; preds = %._crit_edge365, %327
  %401 = load i32, ptr %4, align 4, !tbaa !5
  %402 = add nsw i32 %401, -1
  store i32 %402, ptr %8, align 4, !tbaa !5
  call void @ctrsm_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull @c_b1, ptr noundef %gep, ptr noundef nonnull %8, ptr noundef nonnull %11, ptr noundef nonnull @c__33) #5
  %403 = load i32, ptr %12, align 4, !tbaa !5
  %404 = icmp sgt i32 %403, 0
  br i1 %404, label %405, label %420

405:                                              ; preds = %400
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %10, align 8, !tbaa !9
  %406 = load i32, ptr %4, align 4, !tbaa !5
  %407 = add nsw i32 %406, -1
  store i32 %407, ptr %8, align 4, !tbaa !5
  store i32 %407, ptr %9, align 4, !tbaa !5
  %408 = load i32, ptr %14, align 4, !tbaa !5
  %409 = add i32 %287, 1
  %410 = add i32 %409, %408
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds %struct.complex, ptr %18, i64 %411
  %413 = load i32, ptr %2, align 4, !tbaa !5
  %414 = add nsw i32 %408, %.3245383
  %415 = mul nsw i32 %414, %16
  %reass.sub389 = sub i32 %413, %408
  %416 = add i32 %reass.sub389, 1
  %417 = add nsw i32 %416, %415
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds %struct.complex, ptr %18, i64 %418
  call void @cgemm_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.5, ptr noundef nonnull %13, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull @c__33, ptr noundef %412, ptr noundef nonnull %8, ptr noundef nonnull @c_b1, ptr noundef %419, ptr noundef nonnull %9) #5
  br label %420

420:                                              ; preds = %405, %400
  %421 = load i32, ptr %4, align 4, !tbaa !5
  %422 = add nsw i32 %421, -1
  store i32 %422, ptr %8, align 4, !tbaa !5
  %423 = load i32, ptr %2, align 4, !tbaa !5
  %424 = add nsw i32 %423, %.3245383
  %425 = mul nsw i32 %424, %16
  %426 = sext i32 %425 to i64
  %gep381 = getelementptr %struct.complex, ptr %invariant.gep, i64 %426
  call void @cherk_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.7, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull @c_b21, ptr noundef nonnull %11, ptr noundef nonnull @c__33, ptr noundef nonnull @c_b22, ptr noundef %gep381, ptr noundef nonnull %8) #5
  %427 = load i32, ptr %14, align 4, !tbaa !5
  store i32 %427, ptr %8, align 4, !tbaa !5
  %.not267373 = icmp slt i32 %427, 1
  br i1 %.not267373, label %.loopexit, label %.lr.ph376

.lr.ph376:                                        ; preds = %420
  %428 = load i32, ptr %13, align 4
  %429 = add nsw i32 %.3245383, -1
  %.not269367 = icmp slt i32 %428, 1
  br label %430

430:                                              ; preds = %.lr.ph376, %._crit_edge371
  %indvar511 = phi i32 [ 0, %.lr.ph376 ], [ %indvar.next512, %._crit_edge371 ]
  %.3374 = phi i32 [ 1, %.lr.ph376 ], [ %500, %._crit_edge371 ]
  %smin570 = call i32 @llvm.smin.i32(i32 %428, i32 %.3374)
  %431 = add i32 %smin570, 1
  %432 = zext i32 %431 to i64
  %smin515 = call i32 @llvm.smin.i32(i32 %428, i32 %.3374)
  %433 = add i32 %smin515, 1
  %434 = zext i32 %433 to i64
  %435 = add nsw i64 %434, -1
  %smin510 = call i32 @llvm.smin.i32(i32 %428, i32 %.3374)
  %436 = add i32 %smin510, 1
  %437 = zext i32 %436 to i64
  %438 = add nsw i64 %437, -2
  %439 = mul i32 %indvar511, 33
  %440 = mul i32 %274, %indvar511
  %441 = add i32 %280, %440
  %smin457 = call i32 @llvm.smin.i32(i32 %428, i32 %.3374)
  %442 = add i32 %smin457, 1
  br i1 %.not269367, label %._crit_edge371, label %.lr.ph370

.lr.ph370:                                        ; preds = %430
  %443 = load i32, ptr %2, align 4, !tbaa !5
  %444 = add i32 %429, %.3374
  %445 = mul nsw i32 %444, %16
  %reass.sub390 = sub i32 %445, %.3374
  %446 = add i32 %reass.sub390, 1
  %447 = mul nuw nsw i32 %.3374, 33
  %448 = add nsw i32 %447, -34
  %wide.trip.count458 = zext i32 %442 to i64
  %min.iters.check518 = icmp ult i64 %435, 10
  br i1 %min.iters.check518, label %scalar.ph517.preheader, label %vector.scevcheck509

vector.scevcheck509:                              ; preds = %.lr.ph370
  %449 = trunc i64 %438 to i32
  %450 = add i32 %439, %449
  %451 = icmp slt i32 %450, %439
  %452 = add i32 %443, %441
  %453 = trunc i64 %438 to i32
  %454 = add i32 %452, %453
  %455 = icmp slt i32 %454, %452
  %456 = icmp ugt i64 %438, 4294967295
  %457 = or i1 %455, %456
  %458 = or i1 %451, %457
  br i1 %458, label %scalar.ph517.preheader, label %vector.ph519

vector.ph519:                                     ; preds = %vector.scevcheck509
  %n.vec521 = and i64 %435, -2
  %ind.end522 = or i64 %435, 1
  br label %vector.body524

vector.body524:                                   ; preds = %vector.body524, %vector.ph519
  %index525 = phi i64 [ 0, %vector.ph519 ], [ %index.next531, %vector.body524 ]
  %459 = trunc i64 %index525 to i32
  %460 = or disjoint i32 %459, 1
  %461 = add i32 %446, %460
  %462 = add i32 %461, %443
  %463 = add i32 %448, %460
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds [1056 x %struct.complex], ptr %11, i64 0, i64 %464
  %wide.vec527 = load <4 x float>, ptr %465, align 8, !tbaa !9
  %466 = sext i32 %462 to i64
  %467 = getelementptr inbounds %struct.complex, ptr %18, i64 %466
  store <4 x float> %wide.vec527, ptr %467, align 4, !tbaa !9
  %index.next531 = add nuw i64 %index525, 2
  %468 = icmp eq i64 %index.next531, %n.vec521
  br i1 %468, label %middle.block516, label %vector.body524, !llvm.loop !27

middle.block516:                                  ; preds = %vector.body524
  %cmp.n532 = icmp eq i64 %435, %n.vec521
  br i1 %cmp.n532, label %._crit_edge371, label %scalar.ph517.preheader

scalar.ph517.preheader:                           ; preds = %middle.block516, %vector.scevcheck509, %.lr.ph370
  %indvars.iv454.ph = phi i64 [ 1, %vector.scevcheck509 ], [ 1, %.lr.ph370 ], [ %ind.end522, %middle.block516 ]
  %469 = and i64 %432, 1
  %lcmp.mod572.not.not = icmp eq i64 %469, 0
  br i1 %lcmp.mod572.not.not, label %scalar.ph517.prol, label %scalar.ph517.prol.loopexit

scalar.ph517.prol:                                ; preds = %scalar.ph517.preheader
  %470 = trunc nuw nsw i64 %indvars.iv454.ph to i32
  %471 = add i32 %446, %470
  %472 = add i32 %471, %443
  %473 = add i32 %448, %470
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds [1056 x %struct.complex], ptr %11, i64 0, i64 %474
  %476 = sext i32 %472 to i64
  %477 = getelementptr inbounds %struct.complex, ptr %18, i64 %476
  %478 = load <2 x float>, ptr %475, align 8, !tbaa !9
  store <2 x float> %478, ptr %477, align 4, !tbaa !9
  %indvars.iv.next455.prol = add nuw nsw i64 %indvars.iv454.ph, 1
  br label %scalar.ph517.prol.loopexit

scalar.ph517.prol.loopexit:                       ; preds = %scalar.ph517.prol, %scalar.ph517.preheader
  %indvars.iv454.unr = phi i64 [ %indvars.iv454.ph, %scalar.ph517.preheader ], [ %indvars.iv.next455.prol, %scalar.ph517.prol ]
  %479 = add nsw i64 %432, -1
  %480 = icmp eq i64 %indvars.iv454.ph, %479
  br i1 %480, label %._crit_edge371, label %scalar.ph517

scalar.ph517:                                     ; preds = %scalar.ph517.prol.loopexit, %scalar.ph517
  %indvars.iv454 = phi i64 [ %indvars.iv.next455.1, %scalar.ph517 ], [ %indvars.iv454.unr, %scalar.ph517.prol.loopexit ]
  %481 = trunc nuw nsw i64 %indvars.iv454 to i32
  %482 = add i32 %446, %481
  %483 = add i32 %482, %443
  %484 = add i32 %448, %481
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds [1056 x %struct.complex], ptr %11, i64 0, i64 %485
  %487 = sext i32 %483 to i64
  %488 = getelementptr inbounds %struct.complex, ptr %18, i64 %487
  %489 = load <2 x float>, ptr %486, align 8, !tbaa !9
  store <2 x float> %489, ptr %488, align 4, !tbaa !9
  %490 = trunc i64 %indvars.iv454 to i32
  %491 = add i32 %490, 1
  %492 = add i32 %446, %491
  %493 = add i32 %492, %443
  %494 = add i32 %448, %491
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds [1056 x %struct.complex], ptr %11, i64 0, i64 %495
  %497 = sext i32 %493 to i64
  %498 = getelementptr inbounds %struct.complex, ptr %18, i64 %497
  %499 = load <2 x float>, ptr %496, align 8, !tbaa !9
  store <2 x float> %499, ptr %498, align 4, !tbaa !9
  %indvars.iv.next455.1 = add nuw nsw i64 %indvars.iv454, 2
  %exitcond459.not.1 = icmp eq i64 %indvars.iv.next455.1, %wide.trip.count458
  br i1 %exitcond459.not.1, label %._crit_edge371, label %scalar.ph517, !llvm.loop !28

._crit_edge371:                                   ; preds = %scalar.ph517.prol.loopexit, %scalar.ph517, %middle.block516, %430
  %storemerge.lcssa = phi i32 [ 1, %430 ], [ %442, %middle.block516 ], [ %442, %scalar.ph517 ], [ %442, %scalar.ph517.prol.loopexit ]
  %500 = add nuw i32 %.3374, 1
  %exitcond461.not = icmp eq i32 %.3374, %427
  %indvar.next512 = add i32 %indvar511, 1
  br i1 %exitcond461.not, label %..loopexit_crit_edge, label %430, !llvm.loop !29

..loopexit_crit_edge:                             ; preds = %._crit_edge371
  %smin460 = call i32 @llvm.smin.i32(i32 %428, i32 %427)
  store i32 %smin460, ptr %9, align 4, !tbaa !5
  store i32 %storemerge.lcssa, ptr %15, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %420, %..loopexit_crit_edge, %293, %324
  %501 = add nuw nsw i32 %38, %.3245383
  %.not463 = icmp sgt i32 %501, %270
  %indvar.next514 = add i32 %indvar513, 1
  br i1 %.not463, label %.loopexit299, label %276, !llvm.loop !30

502:                                              ; preds = %291, %66
  %storemerge273.in = phi i32 [ %292, %291 ], [ %67, %66 ]
  %storemerge273 = add nsw i32 %storemerge273.in, -1
  store i32 %storemerge273, ptr %5, align 4, !tbaa !5
  br label %.loopexit299

.loopexit299:                                     ; preds = %.loopexit301, %.loopexit, %._crit_edge315, %._crit_edge352, %43, %34, %502, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 8448, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #5
  ret void
}

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

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

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

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

declare void @cpbtf2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare void @ctrsm_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @cherk_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @cgemm_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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 = !{!"int", !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 = distinct !{!11, !12, !13}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.peeled.count", i32 1}
!14 = distinct !{!14, !12, !15, !16}
!15 = !{!"llvm.loop.isvectorized", i32 1}
!16 = !{!"llvm.loop.unroll.runtime.disable"}
!17 = distinct !{!17, !12, !15}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12, !15, !16}
!20 = distinct !{!20, !12, !15}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12, !15, !16}
!25 = distinct !{!25, !12, !15}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12, !15, !16}
!28 = distinct !{!28, !12, !15}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass