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

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

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b9 = external hidden global float, align 4
@c_b10 = external hidden global float, align 4
@c__2 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local i32 @clalsa_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr noundef %25) #0 {
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca i64, align 8
  %55 = alloca i64, align 8
  %56 = alloca i64, align 8
  %57 = alloca i64, align 8
  %58 = alloca i64, align 8
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca i64, align 8
  %68 = alloca i64, align 8
  %69 = alloca i64, align 8
  %70 = alloca i64, align 8
  %71 = alloca i64, align 8
  %72 = alloca i64, align 8
  %73 = alloca i64, align 8
  %74 = alloca i64, align 8
  %75 = alloca i64, align 8
  %76 = alloca i64, align 8
  %77 = alloca i64, align 8
  %78 = alloca i64, align 8
  %79 = alloca i64, align 8
  %80 = alloca i64, align 8
  %81 = alloca i64, align 8
  %82 = alloca %struct.complex, align 4
  %83 = alloca i64, align 8
  %84 = alloca i64, align 8
  %85 = alloca i64, align 8
  %86 = alloca i64, align 8
  %87 = alloca i64, align 8
  %88 = alloca i64, align 8
  %89 = alloca i64, align 8
  %90 = alloca i64, align 8
  %91 = alloca i64, align 8
  %92 = alloca i64, align 8
  %93 = alloca i64, align 8
  %94 = alloca i64, align 8
  %95 = alloca i64, align 8
  %96 = alloca i64, align 8
  %97 = alloca i64, align 8
  %98 = alloca i64, align 8
  %99 = alloca i64, align 8
  %100 = alloca i64, align 8
  %101 = alloca i64, align 8
  %102 = alloca i64, align 8
  %103 = alloca i64, align 8
  %104 = alloca i64, align 8
  %105 = alloca i64, align 8
  %106 = alloca i64, align 8
  %107 = alloca i64, align 8
  %108 = alloca i64, align 8
  %109 = alloca i32, align 4
  store ptr %0, ptr %28, align 8, !tbaa !5
  store ptr %1, ptr %29, align 8, !tbaa !5
  store ptr %2, ptr %30, align 8, !tbaa !5
  store ptr %3, ptr %31, align 8, !tbaa !5
  store ptr %4, ptr %32, align 8, !tbaa !5
  store ptr %5, ptr %33, align 8, !tbaa !5
  store ptr %6, ptr %34, align 8, !tbaa !5
  store ptr %7, ptr %35, align 8, !tbaa !5
  store ptr %8, ptr %36, align 8, !tbaa !5
  store ptr %9, ptr %37, align 8, !tbaa !5
  store ptr %10, ptr %38, align 8, !tbaa !5
  store ptr %11, ptr %39, align 8, !tbaa !5
  store ptr %12, ptr %40, align 8, !tbaa !5
  store ptr %13, ptr %41, align 8, !tbaa !5
  store ptr %14, ptr %42, align 8, !tbaa !5
  store ptr %15, ptr %43, align 8, !tbaa !5
  store ptr %16, ptr %44, align 8, !tbaa !5
  store ptr %17, ptr %45, align 8, !tbaa !5
  store ptr %18, ptr %46, align 8, !tbaa !5
  store ptr %19, ptr %47, align 8, !tbaa !5
  store ptr %20, ptr %48, align 8, !tbaa !5
  store ptr %21, ptr %49, align 8, !tbaa !5
  store ptr %22, ptr %50, align 8, !tbaa !5
  store ptr %23, ptr %51, align 8, !tbaa !5
  store ptr %24, ptr %52, align 8, !tbaa !5
  store ptr %25, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #3
  %110 = load ptr, ptr %33, align 8, !tbaa !5
  %111 = load i64, ptr %110, align 8, !tbaa !9
  store i64 %111, ptr %72, align 8, !tbaa !9
  %112 = load i64, ptr %72, align 8, !tbaa !9
  %113 = add nsw i64 1, %112
  store i64 %113, ptr %73, align 8, !tbaa !9
  %114 = load i64, ptr %73, align 8, !tbaa !9
  %115 = load ptr, ptr %32, align 8, !tbaa !5
  %116 = sub i64 0, %114
  %117 = getelementptr inbounds %struct.complex, ptr %115, i64 %116
  store ptr %117, ptr %32, align 8, !tbaa !5
  %118 = load ptr, ptr %35, align 8, !tbaa !5
  %119 = load i64, ptr %118, align 8, !tbaa !9
  store i64 %119, ptr %74, align 8, !tbaa !9
  %120 = load i64, ptr %74, align 8, !tbaa !9
  %121 = add nsw i64 1, %120
  store i64 %121, ptr %75, align 8, !tbaa !9
  %122 = load i64, ptr %75, align 8, !tbaa !9
  %123 = load ptr, ptr %34, align 8, !tbaa !5
  %124 = sub i64 0, %122
  %125 = getelementptr inbounds %struct.complex, ptr %123, i64 %124
  store ptr %125, ptr %34, align 8, !tbaa !5
  %126 = load ptr, ptr %37, align 8, !tbaa !5
  %127 = load i64, ptr %126, align 8, !tbaa !9
  store i64 %127, ptr %62, align 8, !tbaa !9
  %128 = load i64, ptr %62, align 8, !tbaa !9
  %129 = add nsw i64 1, %128
  store i64 %129, ptr %63, align 8, !tbaa !9
  %130 = load i64, ptr %63, align 8, !tbaa !9
  %131 = load ptr, ptr %48, align 8, !tbaa !5
  %132 = sub i64 0, %130
  %133 = getelementptr inbounds float, ptr %131, i64 %132
  store ptr %133, ptr %48, align 8, !tbaa !5
  %134 = load ptr, ptr %37, align 8, !tbaa !5
  %135 = load i64, ptr %134, align 8, !tbaa !9
  store i64 %135, ptr %64, align 8, !tbaa !9
  %136 = load i64, ptr %64, align 8, !tbaa !9
  %137 = add nsw i64 1, %136
  store i64 %137, ptr %65, align 8, !tbaa !9
  %138 = load i64, ptr %65, align 8, !tbaa !9
  %139 = load ptr, ptr %43, align 8, !tbaa !5
  %140 = sub i64 0, %138
  %141 = getelementptr inbounds float, ptr %139, i64 %140
  store ptr %141, ptr %43, align 8, !tbaa !5
  %142 = load ptr, ptr %37, align 8, !tbaa !5
  %143 = load i64, ptr %142, align 8, !tbaa !9
  store i64 %143, ptr %70, align 8, !tbaa !9
  %144 = load i64, ptr %70, align 8, !tbaa !9
  %145 = add nsw i64 1, %144
  store i64 %145, ptr %71, align 8, !tbaa !9
  %146 = load i64, ptr %71, align 8, !tbaa !9
  %147 = load ptr, ptr %42, align 8, !tbaa !5
  %148 = sub i64 0, %146
  %149 = getelementptr inbounds float, ptr %147, i64 %148
  store ptr %149, ptr %42, align 8, !tbaa !5
  %150 = load ptr, ptr %37, align 8, !tbaa !5
  %151 = load i64, ptr %150, align 8, !tbaa !9
  store i64 %151, ptr %60, align 8, !tbaa !9
  %152 = load i64, ptr %60, align 8, !tbaa !9
  %153 = add nsw i64 1, %152
  store i64 %153, ptr %61, align 8, !tbaa !9
  %154 = load i64, ptr %61, align 8, !tbaa !9
  %155 = load ptr, ptr %41, align 8, !tbaa !5
  %156 = sub i64 0, %154
  %157 = getelementptr inbounds float, ptr %155, i64 %156
  store ptr %157, ptr %41, align 8, !tbaa !5
  %158 = load ptr, ptr %37, align 8, !tbaa !5
  %159 = load i64, ptr %158, align 8, !tbaa !9
  store i64 %159, ptr %58, align 8, !tbaa !9
  %160 = load i64, ptr %58, align 8, !tbaa !9
  %161 = add nsw i64 1, %160
  store i64 %161, ptr %59, align 8, !tbaa !9
  %162 = load i64, ptr %59, align 8, !tbaa !9
  %163 = load ptr, ptr %40, align 8, !tbaa !5
  %164 = sub i64 0, %162
  %165 = getelementptr inbounds float, ptr %163, i64 %164
  store ptr %165, ptr %40, align 8, !tbaa !5
  %166 = load ptr, ptr %37, align 8, !tbaa !5
  %167 = load i64, ptr %166, align 8, !tbaa !9
  store i64 %167, ptr %68, align 8, !tbaa !9
  %168 = load i64, ptr %68, align 8, !tbaa !9
  %169 = add nsw i64 1, %168
  store i64 %169, ptr %69, align 8, !tbaa !9
  %170 = load i64, ptr %69, align 8, !tbaa !9
  %171 = load ptr, ptr %38, align 8, !tbaa !5
  %172 = sub i64 0, %170
  %173 = getelementptr inbounds float, ptr %171, i64 %172
  store ptr %173, ptr %38, align 8, !tbaa !5
  %174 = load ptr, ptr %37, align 8, !tbaa !5
  %175 = load i64, ptr %174, align 8, !tbaa !9
  store i64 %175, ptr %66, align 8, !tbaa !9
  %176 = load i64, ptr %66, align 8, !tbaa !9
  %177 = add nsw i64 1, %176
  store i64 %177, ptr %67, align 8, !tbaa !9
  %178 = load i64, ptr %67, align 8, !tbaa !9
  %179 = load ptr, ptr %36, align 8, !tbaa !5
  %180 = sub i64 0, %178
  %181 = getelementptr inbounds float, ptr %179, i64 %180
  store ptr %181, ptr %36, align 8, !tbaa !5
  %182 = load ptr, ptr %39, align 8, !tbaa !5
  %183 = getelementptr inbounds i64, ptr %182, i32 -1
  store ptr %183, ptr %39, align 8, !tbaa !5
  %184 = load ptr, ptr %44, align 8, !tbaa !5
  %185 = getelementptr inbounds i64, ptr %184, i32 -1
  store ptr %185, ptr %44, align 8, !tbaa !5
  %186 = load ptr, ptr %46, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  store i64 %187, ptr %56, align 8, !tbaa !9
  %188 = load i64, ptr %56, align 8, !tbaa !9
  %189 = add nsw i64 1, %188
  store i64 %189, ptr %57, align 8, !tbaa !9
  %190 = load i64, ptr %57, align 8, !tbaa !9
  %191 = load ptr, ptr %47, align 8, !tbaa !5
  %192 = sub i64 0, %190
  %193 = getelementptr inbounds i64, ptr %191, i64 %192
  store ptr %193, ptr %47, align 8, !tbaa !5
  %194 = load ptr, ptr %46, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  store i64 %195, ptr %54, align 8, !tbaa !9
  %196 = load i64, ptr %54, align 8, !tbaa !9
  %197 = add nsw i64 1, %196
  store i64 %197, ptr %55, align 8, !tbaa !9
  %198 = load i64, ptr %55, align 8, !tbaa !9
  %199 = load ptr, ptr %45, align 8, !tbaa !5
  %200 = sub i64 0, %198
  %201 = getelementptr inbounds i64, ptr %199, i64 %200
  store ptr %201, ptr %45, align 8, !tbaa !5
  %202 = load ptr, ptr %49, align 8, !tbaa !5
  %203 = getelementptr inbounds float, ptr %202, i32 -1
  store ptr %203, ptr %49, align 8, !tbaa !5
  %204 = load ptr, ptr %50, align 8, !tbaa !5
  %205 = getelementptr inbounds float, ptr %204, i32 -1
  store ptr %205, ptr %50, align 8, !tbaa !5
  %206 = load ptr, ptr %51, align 8, !tbaa !5
  %207 = getelementptr inbounds float, ptr %206, i32 -1
  store ptr %207, ptr %51, align 8, !tbaa !5
  %208 = load ptr, ptr %52, align 8, !tbaa !5
  %209 = getelementptr inbounds i64, ptr %208, i32 -1
  store ptr %209, ptr %52, align 8, !tbaa !5
  %210 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 0, ptr %210, align 8, !tbaa !9
  %211 = load ptr, ptr %28, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  %213 = icmp slt i64 %212, 0
  br i1 %213, label %218, label %214

214:                                              ; preds = %26
  %215 = load ptr, ptr %28, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  %217 = icmp sgt i64 %216, 1
  br i1 %217, label %218, label %220

218:                                              ; preds = %214, %26
  %219 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -1, ptr %219, align 8, !tbaa !9
  br label %279

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

224:                                              ; preds = %220
  %225 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -2, ptr %225, align 8, !tbaa !9
  br label %278

226:                                              ; preds = %220
  %227 = load ptr, ptr %30, align 8, !tbaa !5
  %228 = load i64, ptr %227, align 8, !tbaa !9
  %229 = load ptr, ptr %29, align 8, !tbaa !5
  %230 = load i64, ptr %229, align 8, !tbaa !9
  %231 = icmp slt i64 %228, %230
  br i1 %231, label %232, label %234

232:                                              ; preds = %226
  %233 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -3, ptr %233, align 8, !tbaa !9
  br label %277

234:                                              ; preds = %226
  %235 = load ptr, ptr %31, align 8, !tbaa !5
  %236 = load i64, ptr %235, align 8, !tbaa !9
  %237 = icmp slt i64 %236, 1
  br i1 %237, label %238, label %240

238:                                              ; preds = %234
  %239 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -4, ptr %239, align 8, !tbaa !9
  br label %276

240:                                              ; preds = %234
  %241 = load ptr, ptr %33, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  %243 = load ptr, ptr %30, align 8, !tbaa !5
  %244 = load i64, ptr %243, align 8, !tbaa !9
  %245 = icmp slt i64 %242, %244
  br i1 %245, label %246, label %248

246:                                              ; preds = %240
  %247 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -6, ptr %247, align 8, !tbaa !9
  br label %275

248:                                              ; preds = %240
  %249 = load ptr, ptr %35, align 8, !tbaa !5
  %250 = load i64, ptr %249, align 8, !tbaa !9
  %251 = load ptr, ptr %30, align 8, !tbaa !5
  %252 = load i64, ptr %251, align 8, !tbaa !9
  %253 = icmp slt i64 %250, %252
  br i1 %253, label %254, label %256

254:                                              ; preds = %248
  %255 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -8, ptr %255, align 8, !tbaa !9
  br label %274

256:                                              ; preds = %248
  %257 = load ptr, ptr %37, align 8, !tbaa !5
  %258 = load i64, ptr %257, align 8, !tbaa !9
  %259 = load ptr, ptr %30, align 8, !tbaa !5
  %260 = load i64, ptr %259, align 8, !tbaa !9
  %261 = icmp slt i64 %258, %260
  br i1 %261, label %262, label %264

262:                                              ; preds = %256
  %263 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -10, ptr %263, align 8, !tbaa !9
  br label %273

264:                                              ; preds = %256
  %265 = load ptr, ptr %46, align 8, !tbaa !5
  %266 = load i64, ptr %265, align 8, !tbaa !9
  %267 = load ptr, ptr %30, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  %269 = icmp slt i64 %266, %268
  br i1 %269, label %270, label %272

270:                                              ; preds = %264
  %271 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -19, ptr %271, align 8, !tbaa !9
  br label %272

272:                                              ; preds = %270, %264
  br label %273

273:                                              ; preds = %272, %262
  br label %274

274:                                              ; preds = %273, %254
  br label %275

275:                                              ; preds = %274, %246
  br label %276

276:                                              ; preds = %275, %238
  br label %277

277:                                              ; preds = %276, %232
  br label %278

278:                                              ; preds = %277, %224
  br label %279

279:                                              ; preds = %278, %218
  %280 = load ptr, ptr %53, align 8, !tbaa !5
  %281 = load i64, ptr %280, align 8, !tbaa !9
  %282 = icmp ne i64 %281, 0
  br i1 %282, label %283, label %288

283:                                              ; preds = %279
  %284 = load ptr, ptr %53, align 8, !tbaa !5
  %285 = load i64, ptr %284, align 8, !tbaa !9
  %286 = sub nsw i64 0, %285
  store i64 %286, ptr %76, align 8, !tbaa !9
  %287 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %76)
  store i32 0, ptr %27, align 4
  store i32 1, ptr %109, align 4
  br label %1496

288:                                              ; preds = %279
  store i64 1, ptr %106, align 8, !tbaa !9
  %289 = load i64, ptr %106, align 8, !tbaa !9
  %290 = load ptr, ptr %30, align 8, !tbaa !5
  %291 = load i64, ptr %290, align 8, !tbaa !9
  %292 = add nsw i64 %289, %291
  store i64 %292, ptr %107, align 8, !tbaa !9
  %293 = load i64, ptr %107, align 8, !tbaa !9
  %294 = load ptr, ptr %30, align 8, !tbaa !5
  %295 = load i64, ptr %294, align 8, !tbaa !9
  %296 = add nsw i64 %293, %295
  store i64 %296, ptr %108, align 8, !tbaa !9
  %297 = load ptr, ptr %30, align 8, !tbaa !5
  %298 = load ptr, ptr %52, align 8, !tbaa !5
  %299 = load i64, ptr %106, align 8, !tbaa !9
  %300 = getelementptr inbounds i64, ptr %298, i64 %299
  %301 = load ptr, ptr %52, align 8, !tbaa !5
  %302 = load i64, ptr %107, align 8, !tbaa !9
  %303 = getelementptr inbounds i64, ptr %301, i64 %302
  %304 = load ptr, ptr %52, align 8, !tbaa !5
  %305 = load i64, ptr %108, align 8, !tbaa !9
  %306 = getelementptr inbounds i64, ptr %304, i64 %305
  %307 = load ptr, ptr %29, align 8, !tbaa !5
  %308 = call i32 @slasdt_(ptr noundef %297, ptr noundef %101, ptr noundef %88, ptr noundef %300, ptr noundef %303, ptr noundef %306, ptr noundef %307)
  %309 = load ptr, ptr %28, align 8, !tbaa !5
  %310 = load i64, ptr %309, align 8, !tbaa !9
  %311 = icmp eq i64 %310, 1
  br i1 %311, label %312, label %313

312:                                              ; preds = %288
  br label %911

313:                                              ; preds = %288
  %314 = load i64, ptr %88, align 8, !tbaa !9
  %315 = add nsw i64 %314, 1
  %316 = sdiv i64 %315, 2
  store i64 %316, ptr %96, align 8, !tbaa !9
  %317 = load i64, ptr %88, align 8, !tbaa !9
  store i64 %317, ptr %76, align 8, !tbaa !9
  %318 = load i64, ptr %96, align 8, !tbaa !9
  store i64 %318, ptr %83, align 8, !tbaa !9
  br label %319

319:                                              ; preds = %733, %313
  %320 = load i64, ptr %83, align 8, !tbaa !9
  %321 = load i64, ptr %76, align 8, !tbaa !9
  %322 = icmp sle i64 %320, %321
  br i1 %322, label %323, label %736

323:                                              ; preds = %319
  %324 = load i64, ptr %83, align 8, !tbaa !9
  %325 = sub nsw i64 %324, 1
  store i64 %325, ptr %85, align 8, !tbaa !9
  %326 = load ptr, ptr %52, align 8, !tbaa !5
  %327 = load i64, ptr %106, align 8, !tbaa !9
  %328 = load i64, ptr %85, align 8, !tbaa !9
  %329 = add nsw i64 %327, %328
  %330 = getelementptr inbounds i64, ptr %326, i64 %329
  %331 = load i64, ptr %330, align 8, !tbaa !9
  store i64 %331, ptr %86, align 8, !tbaa !9
  %332 = load ptr, ptr %52, align 8, !tbaa !5
  %333 = load i64, ptr %107, align 8, !tbaa !9
  %334 = load i64, ptr %85, align 8, !tbaa !9
  %335 = add nsw i64 %333, %334
  %336 = getelementptr inbounds i64, ptr %332, i64 %335
  %337 = load i64, ptr %336, align 8, !tbaa !9
  store i64 %337, ptr %90, align 8, !tbaa !9
  %338 = load ptr, ptr %52, align 8, !tbaa !5
  %339 = load i64, ptr %108, align 8, !tbaa !9
  %340 = load i64, ptr %85, align 8, !tbaa !9
  %341 = add nsw i64 %339, %340
  %342 = getelementptr inbounds i64, ptr %338, i64 %341
  %343 = load i64, ptr %342, align 8, !tbaa !9
  store i64 %343, ptr %91, align 8, !tbaa !9
  %344 = load i64, ptr %86, align 8, !tbaa !9
  %345 = load i64, ptr %90, align 8, !tbaa !9
  %346 = sub nsw i64 %344, %345
  store i64 %346, ptr %93, align 8, !tbaa !9
  %347 = load i64, ptr %86, align 8, !tbaa !9
  %348 = add nsw i64 %347, 1
  store i64 %348, ptr %94, align 8, !tbaa !9
  %349 = load i64, ptr %90, align 8, !tbaa !9
  %350 = load ptr, ptr %31, align 8, !tbaa !5
  %351 = load i64, ptr %350, align 8, !tbaa !9
  %352 = mul nsw i64 %349, %351
  %353 = shl i64 %352, 1
  store i64 %353, ptr %84, align 8, !tbaa !9
  %354 = load ptr, ptr %31, align 8, !tbaa !5
  %355 = load i64, ptr %354, align 8, !tbaa !9
  store i64 %355, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %100, align 8, !tbaa !9
  br label %356

356:                                              ; preds = %390, %323
  %357 = load i64, ptr %100, align 8, !tbaa !9
  %358 = load i64, ptr %77, align 8, !tbaa !9
  %359 = icmp sle i64 %357, %358
  br i1 %359, label %360, label %393

360:                                              ; preds = %356
  %361 = load i64, ptr %93, align 8, !tbaa !9
  %362 = load i64, ptr %90, align 8, !tbaa !9
  %363 = add nsw i64 %361, %362
  %364 = sub nsw i64 %363, 1
  store i64 %364, ptr %78, align 8, !tbaa !9
  %365 = load i64, ptr %93, align 8, !tbaa !9
  store i64 %365, ptr %103, align 8, !tbaa !9
  br label %366

366:                                              ; preds = %386, %360
  %367 = load i64, ptr %103, align 8, !tbaa !9
  %368 = load i64, ptr %78, align 8, !tbaa !9
  %369 = icmp sle i64 %367, %368
  br i1 %369, label %370, label %389

370:                                              ; preds = %366
  %371 = load i64, ptr %84, align 8, !tbaa !9
  %372 = add nsw i64 %371, 1
  store i64 %372, ptr %84, align 8, !tbaa !9
  %373 = load i64, ptr %103, align 8, !tbaa !9
  %374 = load i64, ptr %100, align 8, !tbaa !9
  %375 = load i64, ptr %72, align 8, !tbaa !9
  %376 = mul nsw i64 %374, %375
  %377 = add nsw i64 %373, %376
  store i64 %377, ptr %79, align 8, !tbaa !9
  %378 = load ptr, ptr %32, align 8, !tbaa !5
  %379 = load i64, ptr %79, align 8, !tbaa !9
  %380 = getelementptr inbounds %struct.complex, ptr %378, i64 %379
  %381 = getelementptr inbounds %struct.complex, ptr %380, i32 0, i32 0
  %382 = load float, ptr %381, align 4, !tbaa !11
  %383 = load ptr, ptr %51, align 8, !tbaa !5
  %384 = load i64, ptr %84, align 8, !tbaa !9
  %385 = getelementptr inbounds float, ptr %383, i64 %384
  store float %382, ptr %385, align 4, !tbaa !14
  br label %386

386:                                              ; preds = %370
  %387 = load i64, ptr %103, align 8, !tbaa !9
  %388 = add nsw i64 %387, 1
  store i64 %388, ptr %103, align 8, !tbaa !9
  br label %366, !llvm.loop !15

389:                                              ; preds = %366
  br label %390

390:                                              ; preds = %389
  %391 = load i64, ptr %100, align 8, !tbaa !9
  %392 = add nsw i64 %391, 1
  store i64 %392, ptr %100, align 8, !tbaa !9
  br label %356, !llvm.loop !17

393:                                              ; preds = %356
  %394 = load ptr, ptr %31, align 8, !tbaa !5
  %395 = load ptr, ptr %36, align 8, !tbaa !5
  %396 = load i64, ptr %93, align 8, !tbaa !9
  %397 = load i64, ptr %66, align 8, !tbaa !9
  %398 = add nsw i64 %396, %397
  %399 = getelementptr inbounds float, ptr %395, i64 %398
  %400 = load ptr, ptr %37, align 8, !tbaa !5
  %401 = load ptr, ptr %51, align 8, !tbaa !5
  %402 = load i64, ptr %90, align 8, !tbaa !9
  %403 = load ptr, ptr %31, align 8, !tbaa !5
  %404 = load i64, ptr %403, align 8, !tbaa !9
  %405 = mul nsw i64 %402, %404
  %406 = shl i64 %405, 1
  %407 = add nsw i64 %406, 1
  %408 = getelementptr inbounds float, ptr %401, i64 %407
  %409 = load ptr, ptr %51, align 8, !tbaa !5
  %410 = getelementptr inbounds float, ptr %409, i64 1
  %411 = call i32 @f2c_sgemm(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %90, ptr noundef %394, ptr noundef %90, ptr noundef @c_b9, ptr noundef %399, ptr noundef %400, ptr noundef %408, ptr noundef %90, ptr noundef @c_b10, ptr noundef %410, ptr noundef %90)
  %412 = load i64, ptr %90, align 8, !tbaa !9
  %413 = load ptr, ptr %31, align 8, !tbaa !5
  %414 = load i64, ptr %413, align 8, !tbaa !9
  %415 = mul nsw i64 %412, %414
  %416 = shl i64 %415, 1
  store i64 %416, ptr %84, align 8, !tbaa !9
  %417 = load ptr, ptr %31, align 8, !tbaa !5
  %418 = load i64, ptr %417, align 8, !tbaa !9
  store i64 %418, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %100, align 8, !tbaa !9
  br label %419

419:                                              ; preds = %452, %393
  %420 = load i64, ptr %100, align 8, !tbaa !9
  %421 = load i64, ptr %77, align 8, !tbaa !9
  %422 = icmp sle i64 %420, %421
  br i1 %422, label %423, label %455

423:                                              ; preds = %419
  %424 = load i64, ptr %93, align 8, !tbaa !9
  %425 = load i64, ptr %90, align 8, !tbaa !9
  %426 = add nsw i64 %424, %425
  %427 = sub nsw i64 %426, 1
  store i64 %427, ptr %78, align 8, !tbaa !9
  %428 = load i64, ptr %93, align 8, !tbaa !9
  store i64 %428, ptr %103, align 8, !tbaa !9
  br label %429

429:                                              ; preds = %448, %423
  %430 = load i64, ptr %103, align 8, !tbaa !9
  %431 = load i64, ptr %78, align 8, !tbaa !9
  %432 = icmp sle i64 %430, %431
  br i1 %432, label %433, label %451

433:                                              ; preds = %429
  %434 = load i64, ptr %84, align 8, !tbaa !9
  %435 = add nsw i64 %434, 1
  store i64 %435, ptr %84, align 8, !tbaa !9
  %436 = load ptr, ptr %32, align 8, !tbaa !5
  %437 = load i64, ptr %103, align 8, !tbaa !9
  %438 = load i64, ptr %100, align 8, !tbaa !9
  %439 = load i64, ptr %72, align 8, !tbaa !9
  %440 = mul nsw i64 %438, %439
  %441 = add nsw i64 %437, %440
  %442 = getelementptr inbounds %struct.complex, ptr %436, i64 %441
  %443 = call double @r_imag(ptr noundef %442)
  %444 = fptrunc double %443 to float
  %445 = load ptr, ptr %51, align 8, !tbaa !5
  %446 = load i64, ptr %84, align 8, !tbaa !9
  %447 = getelementptr inbounds float, ptr %445, i64 %446
  store float %444, ptr %447, align 4, !tbaa !14
  br label %448

448:                                              ; preds = %433
  %449 = load i64, ptr %103, align 8, !tbaa !9
  %450 = add nsw i64 %449, 1
  store i64 %450, ptr %103, align 8, !tbaa !9
  br label %429, !llvm.loop !18

451:                                              ; preds = %429
  br label %452

452:                                              ; preds = %451
  %453 = load i64, ptr %100, align 8, !tbaa !9
  %454 = add nsw i64 %453, 1
  store i64 %454, ptr %100, align 8, !tbaa !9
  br label %419, !llvm.loop !19

455:                                              ; preds = %419
  %456 = load ptr, ptr %31, align 8, !tbaa !5
  %457 = load ptr, ptr %36, align 8, !tbaa !5
  %458 = load i64, ptr %93, align 8, !tbaa !9
  %459 = load i64, ptr %66, align 8, !tbaa !9
  %460 = add nsw i64 %458, %459
  %461 = getelementptr inbounds float, ptr %457, i64 %460
  %462 = load ptr, ptr %37, align 8, !tbaa !5
  %463 = load ptr, ptr %51, align 8, !tbaa !5
  %464 = load i64, ptr %90, align 8, !tbaa !9
  %465 = load ptr, ptr %31, align 8, !tbaa !5
  %466 = load i64, ptr %465, align 8, !tbaa !9
  %467 = mul nsw i64 %464, %466
  %468 = shl i64 %467, 1
  %469 = add nsw i64 %468, 1
  %470 = getelementptr inbounds float, ptr %463, i64 %469
  %471 = load ptr, ptr %51, align 8, !tbaa !5
  %472 = load i64, ptr %90, align 8, !tbaa !9
  %473 = load ptr, ptr %31, align 8, !tbaa !5
  %474 = load i64, ptr %473, align 8, !tbaa !9
  %475 = mul nsw i64 %472, %474
  %476 = add nsw i64 %475, 1
  %477 = getelementptr inbounds float, ptr %471, i64 %476
  %478 = call i32 @f2c_sgemm(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %90, ptr noundef %456, ptr noundef %90, ptr noundef @c_b9, ptr noundef %461, ptr noundef %462, ptr noundef %470, ptr noundef %90, ptr noundef @c_b10, ptr noundef %477, ptr noundef %90)
  store i64 0, ptr %105, align 8, !tbaa !9
  %479 = load i64, ptr %90, align 8, !tbaa !9
  %480 = load ptr, ptr %31, align 8, !tbaa !5
  %481 = load i64, ptr %480, align 8, !tbaa !9
  %482 = mul nsw i64 %479, %481
  store i64 %482, ptr %104, align 8, !tbaa !9
  %483 = load ptr, ptr %31, align 8, !tbaa !5
  %484 = load i64, ptr %483, align 8, !tbaa !9
  store i64 %484, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %100, align 8, !tbaa !9
  br label %485

485:                                              ; preds = %537, %455
  %486 = load i64, ptr %100, align 8, !tbaa !9
  %487 = load i64, ptr %77, align 8, !tbaa !9
  %488 = icmp sle i64 %486, %487
  br i1 %488, label %489, label %540

489:                                              ; preds = %485
  %490 = load i64, ptr %93, align 8, !tbaa !9
  %491 = load i64, ptr %90, align 8, !tbaa !9
  %492 = add nsw i64 %490, %491
  %493 = sub nsw i64 %492, 1
  store i64 %493, ptr %78, align 8, !tbaa !9
  %494 = load i64, ptr %93, align 8, !tbaa !9
  store i64 %494, ptr %103, align 8, !tbaa !9
  br label %495

495:                                              ; preds = %533, %489
  %496 = load i64, ptr %103, align 8, !tbaa !9
  %497 = load i64, ptr %78, align 8, !tbaa !9
  %498 = icmp sle i64 %496, %497
  br i1 %498, label %499, label %536

499:                                              ; preds = %495
  %500 = load i64, ptr %105, align 8, !tbaa !9
  %501 = add nsw i64 %500, 1
  store i64 %501, ptr %105, align 8, !tbaa !9
  %502 = load i64, ptr %104, align 8, !tbaa !9
  %503 = add nsw i64 %502, 1
  store i64 %503, ptr %104, align 8, !tbaa !9
  %504 = load i64, ptr %103, align 8, !tbaa !9
  %505 = load i64, ptr %100, align 8, !tbaa !9
  %506 = load i64, ptr %74, align 8, !tbaa !9
  %507 = mul nsw i64 %505, %506
  %508 = add nsw i64 %504, %507
  store i64 %508, ptr %79, align 8, !tbaa !9
  %509 = load i64, ptr %105, align 8, !tbaa !9
  store i64 %509, ptr %80, align 8, !tbaa !9
  %510 = load i64, ptr %104, align 8, !tbaa !9
  store i64 %510, ptr %81, align 8, !tbaa !9
  %511 = load ptr, ptr %51, align 8, !tbaa !5
  %512 = load i64, ptr %80, align 8, !tbaa !9
  %513 = getelementptr inbounds float, ptr %511, i64 %512
  %514 = load float, ptr %513, align 4, !tbaa !14
  %515 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  store float %514, ptr %515, align 4, !tbaa !11
  %516 = load ptr, ptr %51, align 8, !tbaa !5
  %517 = load i64, ptr %81, align 8, !tbaa !9
  %518 = getelementptr inbounds float, ptr %516, i64 %517
  %519 = load float, ptr %518, align 4, !tbaa !14
  %520 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  store float %519, ptr %520, align 4, !tbaa !20
  %521 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  %522 = load float, ptr %521, align 4, !tbaa !11
  %523 = load ptr, ptr %34, align 8, !tbaa !5
  %524 = load i64, ptr %79, align 8, !tbaa !9
  %525 = getelementptr inbounds %struct.complex, ptr %523, i64 %524
  %526 = getelementptr inbounds %struct.complex, ptr %525, i32 0, i32 0
  store float %522, ptr %526, align 4, !tbaa !11
  %527 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  %528 = load float, ptr %527, align 4, !tbaa !20
  %529 = load ptr, ptr %34, align 8, !tbaa !5
  %530 = load i64, ptr %79, align 8, !tbaa !9
  %531 = getelementptr inbounds %struct.complex, ptr %529, i64 %530
  %532 = getelementptr inbounds %struct.complex, ptr %531, i32 0, i32 1
  store float %528, ptr %532, align 4, !tbaa !20
  br label %533

533:                                              ; preds = %499
  %534 = load i64, ptr %103, align 8, !tbaa !9
  %535 = add nsw i64 %534, 1
  store i64 %535, ptr %103, align 8, !tbaa !9
  br label %495, !llvm.loop !21

536:                                              ; preds = %495
  br label %537

537:                                              ; preds = %536
  %538 = load i64, ptr %100, align 8, !tbaa !9
  %539 = add nsw i64 %538, 1
  store i64 %539, ptr %100, align 8, !tbaa !9
  br label %485, !llvm.loop !22

540:                                              ; preds = %485
  %541 = load i64, ptr %91, align 8, !tbaa !9
  %542 = load ptr, ptr %31, align 8, !tbaa !5
  %543 = load i64, ptr %542, align 8, !tbaa !9
  %544 = mul nsw i64 %541, %543
  %545 = shl i64 %544, 1
  store i64 %545, ptr %84, align 8, !tbaa !9
  %546 = load ptr, ptr %31, align 8, !tbaa !5
  %547 = load i64, ptr %546, align 8, !tbaa !9
  store i64 %547, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %100, align 8, !tbaa !9
  br label %548

548:                                              ; preds = %582, %540
  %549 = load i64, ptr %100, align 8, !tbaa !9
  %550 = load i64, ptr %77, align 8, !tbaa !9
  %551 = icmp sle i64 %549, %550
  br i1 %551, label %552, label %585

552:                                              ; preds = %548
  %553 = load i64, ptr %94, align 8, !tbaa !9
  %554 = load i64, ptr %91, align 8, !tbaa !9
  %555 = add nsw i64 %553, %554
  %556 = sub nsw i64 %555, 1
  store i64 %556, ptr %78, align 8, !tbaa !9
  %557 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %557, ptr %103, align 8, !tbaa !9
  br label %558

558:                                              ; preds = %578, %552
  %559 = load i64, ptr %103, align 8, !tbaa !9
  %560 = load i64, ptr %78, align 8, !tbaa !9
  %561 = icmp sle i64 %559, %560
  br i1 %561, label %562, label %581

562:                                              ; preds = %558
  %563 = load i64, ptr %84, align 8, !tbaa !9
  %564 = add nsw i64 %563, 1
  store i64 %564, ptr %84, align 8, !tbaa !9
  %565 = load i64, ptr %103, align 8, !tbaa !9
  %566 = load i64, ptr %100, align 8, !tbaa !9
  %567 = load i64, ptr %72, align 8, !tbaa !9
  %568 = mul nsw i64 %566, %567
  %569 = add nsw i64 %565, %568
  store i64 %569, ptr %79, align 8, !tbaa !9
  %570 = load ptr, ptr %32, align 8, !tbaa !5
  %571 = load i64, ptr %79, align 8, !tbaa !9
  %572 = getelementptr inbounds %struct.complex, ptr %570, i64 %571
  %573 = getelementptr inbounds %struct.complex, ptr %572, i32 0, i32 0
  %574 = load float, ptr %573, align 4, !tbaa !11
  %575 = load ptr, ptr %51, align 8, !tbaa !5
  %576 = load i64, ptr %84, align 8, !tbaa !9
  %577 = getelementptr inbounds float, ptr %575, i64 %576
  store float %574, ptr %577, align 4, !tbaa !14
  br label %578

578:                                              ; preds = %562
  %579 = load i64, ptr %103, align 8, !tbaa !9
  %580 = add nsw i64 %579, 1
  store i64 %580, ptr %103, align 8, !tbaa !9
  br label %558, !llvm.loop !23

581:                                              ; preds = %558
  br label %582

582:                                              ; preds = %581
  %583 = load i64, ptr %100, align 8, !tbaa !9
  %584 = add nsw i64 %583, 1
  store i64 %584, ptr %100, align 8, !tbaa !9
  br label %548, !llvm.loop !24

585:                                              ; preds = %548
  %586 = load ptr, ptr %31, align 8, !tbaa !5
  %587 = load ptr, ptr %36, align 8, !tbaa !5
  %588 = load i64, ptr %94, align 8, !tbaa !9
  %589 = load i64, ptr %66, align 8, !tbaa !9
  %590 = add nsw i64 %588, %589
  %591 = getelementptr inbounds float, ptr %587, i64 %590
  %592 = load ptr, ptr %37, align 8, !tbaa !5
  %593 = load ptr, ptr %51, align 8, !tbaa !5
  %594 = load i64, ptr %91, align 8, !tbaa !9
  %595 = load ptr, ptr %31, align 8, !tbaa !5
  %596 = load i64, ptr %595, align 8, !tbaa !9
  %597 = mul nsw i64 %594, %596
  %598 = shl i64 %597, 1
  %599 = add nsw i64 %598, 1
  %600 = getelementptr inbounds float, ptr %593, i64 %599
  %601 = load ptr, ptr %51, align 8, !tbaa !5
  %602 = getelementptr inbounds float, ptr %601, i64 1
  %603 = call i32 @f2c_sgemm(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %91, ptr noundef %586, ptr noundef %91, ptr noundef @c_b9, ptr noundef %591, ptr noundef %592, ptr noundef %600, ptr noundef %91, ptr noundef @c_b10, ptr noundef %602, ptr noundef %91)
  %604 = load i64, ptr %91, align 8, !tbaa !9
  %605 = load ptr, ptr %31, align 8, !tbaa !5
  %606 = load i64, ptr %605, align 8, !tbaa !9
  %607 = mul nsw i64 %604, %606
  %608 = shl i64 %607, 1
  store i64 %608, ptr %84, align 8, !tbaa !9
  %609 = load ptr, ptr %31, align 8, !tbaa !5
  %610 = load i64, ptr %609, align 8, !tbaa !9
  store i64 %610, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %100, align 8, !tbaa !9
  br label %611

611:                                              ; preds = %644, %585
  %612 = load i64, ptr %100, align 8, !tbaa !9
  %613 = load i64, ptr %77, align 8, !tbaa !9
  %614 = icmp sle i64 %612, %613
  br i1 %614, label %615, label %647

615:                                              ; preds = %611
  %616 = load i64, ptr %94, align 8, !tbaa !9
  %617 = load i64, ptr %91, align 8, !tbaa !9
  %618 = add nsw i64 %616, %617
  %619 = sub nsw i64 %618, 1
  store i64 %619, ptr %78, align 8, !tbaa !9
  %620 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %620, ptr %103, align 8, !tbaa !9
  br label %621

621:                                              ; preds = %640, %615
  %622 = load i64, ptr %103, align 8, !tbaa !9
  %623 = load i64, ptr %78, align 8, !tbaa !9
  %624 = icmp sle i64 %622, %623
  br i1 %624, label %625, label %643

625:                                              ; preds = %621
  %626 = load i64, ptr %84, align 8, !tbaa !9
  %627 = add nsw i64 %626, 1
  store i64 %627, ptr %84, align 8, !tbaa !9
  %628 = load ptr, ptr %32, align 8, !tbaa !5
  %629 = load i64, ptr %103, align 8, !tbaa !9
  %630 = load i64, ptr %100, align 8, !tbaa !9
  %631 = load i64, ptr %72, align 8, !tbaa !9
  %632 = mul nsw i64 %630, %631
  %633 = add nsw i64 %629, %632
  %634 = getelementptr inbounds %struct.complex, ptr %628, i64 %633
  %635 = call double @r_imag(ptr noundef %634)
  %636 = fptrunc double %635 to float
  %637 = load ptr, ptr %51, align 8, !tbaa !5
  %638 = load i64, ptr %84, align 8, !tbaa !9
  %639 = getelementptr inbounds float, ptr %637, i64 %638
  store float %636, ptr %639, align 4, !tbaa !14
  br label %640

640:                                              ; preds = %625
  %641 = load i64, ptr %103, align 8, !tbaa !9
  %642 = add nsw i64 %641, 1
  store i64 %642, ptr %103, align 8, !tbaa !9
  br label %621, !llvm.loop !25

643:                                              ; preds = %621
  br label %644

644:                                              ; preds = %643
  %645 = load i64, ptr %100, align 8, !tbaa !9
  %646 = add nsw i64 %645, 1
  store i64 %646, ptr %100, align 8, !tbaa !9
  br label %611, !llvm.loop !26

647:                                              ; preds = %611
  %648 = load ptr, ptr %31, align 8, !tbaa !5
  %649 = load ptr, ptr %36, align 8, !tbaa !5
  %650 = load i64, ptr %94, align 8, !tbaa !9
  %651 = load i64, ptr %66, align 8, !tbaa !9
  %652 = add nsw i64 %650, %651
  %653 = getelementptr inbounds float, ptr %649, i64 %652
  %654 = load ptr, ptr %37, align 8, !tbaa !5
  %655 = load ptr, ptr %51, align 8, !tbaa !5
  %656 = load i64, ptr %91, align 8, !tbaa !9
  %657 = load ptr, ptr %31, align 8, !tbaa !5
  %658 = load i64, ptr %657, align 8, !tbaa !9
  %659 = mul nsw i64 %656, %658
  %660 = shl i64 %659, 1
  %661 = add nsw i64 %660, 1
  %662 = getelementptr inbounds float, ptr %655, i64 %661
  %663 = load ptr, ptr %51, align 8, !tbaa !5
  %664 = load i64, ptr %91, align 8, !tbaa !9
  %665 = load ptr, ptr %31, align 8, !tbaa !5
  %666 = load i64, ptr %665, align 8, !tbaa !9
  %667 = mul nsw i64 %664, %666
  %668 = add nsw i64 %667, 1
  %669 = getelementptr inbounds float, ptr %663, i64 %668
  %670 = call i32 @f2c_sgemm(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %91, ptr noundef %648, ptr noundef %91, ptr noundef @c_b9, ptr noundef %653, ptr noundef %654, ptr noundef %662, ptr noundef %91, ptr noundef @c_b10, ptr noundef %669, ptr noundef %91)
  store i64 0, ptr %105, align 8, !tbaa !9
  %671 = load i64, ptr %91, align 8, !tbaa !9
  %672 = load ptr, ptr %31, align 8, !tbaa !5
  %673 = load i64, ptr %672, align 8, !tbaa !9
  %674 = mul nsw i64 %671, %673
  store i64 %674, ptr %104, align 8, !tbaa !9
  %675 = load ptr, ptr %31, align 8, !tbaa !5
  %676 = load i64, ptr %675, align 8, !tbaa !9
  store i64 %676, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %100, align 8, !tbaa !9
  br label %677

677:                                              ; preds = %729, %647
  %678 = load i64, ptr %100, align 8, !tbaa !9
  %679 = load i64, ptr %77, align 8, !tbaa !9
  %680 = icmp sle i64 %678, %679
  br i1 %680, label %681, label %732

681:                                              ; preds = %677
  %682 = load i64, ptr %94, align 8, !tbaa !9
  %683 = load i64, ptr %91, align 8, !tbaa !9
  %684 = add nsw i64 %682, %683
  %685 = sub nsw i64 %684, 1
  store i64 %685, ptr %78, align 8, !tbaa !9
  %686 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %686, ptr %103, align 8, !tbaa !9
  br label %687

687:                                              ; preds = %725, %681
  %688 = load i64, ptr %103, align 8, !tbaa !9
  %689 = load i64, ptr %78, align 8, !tbaa !9
  %690 = icmp sle i64 %688, %689
  br i1 %690, label %691, label %728

691:                                              ; preds = %687
  %692 = load i64, ptr %105, align 8, !tbaa !9
  %693 = add nsw i64 %692, 1
  store i64 %693, ptr %105, align 8, !tbaa !9
  %694 = load i64, ptr %104, align 8, !tbaa !9
  %695 = add nsw i64 %694, 1
  store i64 %695, ptr %104, align 8, !tbaa !9
  %696 = load i64, ptr %103, align 8, !tbaa !9
  %697 = load i64, ptr %100, align 8, !tbaa !9
  %698 = load i64, ptr %74, align 8, !tbaa !9
  %699 = mul nsw i64 %697, %698
  %700 = add nsw i64 %696, %699
  store i64 %700, ptr %79, align 8, !tbaa !9
  %701 = load i64, ptr %105, align 8, !tbaa !9
  store i64 %701, ptr %80, align 8, !tbaa !9
  %702 = load i64, ptr %104, align 8, !tbaa !9
  store i64 %702, ptr %81, align 8, !tbaa !9
  %703 = load ptr, ptr %51, align 8, !tbaa !5
  %704 = load i64, ptr %80, align 8, !tbaa !9
  %705 = getelementptr inbounds float, ptr %703, i64 %704
  %706 = load float, ptr %705, align 4, !tbaa !14
  %707 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  store float %706, ptr %707, align 4, !tbaa !11
  %708 = load ptr, ptr %51, align 8, !tbaa !5
  %709 = load i64, ptr %81, align 8, !tbaa !9
  %710 = getelementptr inbounds float, ptr %708, i64 %709
  %711 = load float, ptr %710, align 4, !tbaa !14
  %712 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  store float %711, ptr %712, align 4, !tbaa !20
  %713 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  %714 = load float, ptr %713, align 4, !tbaa !11
  %715 = load ptr, ptr %34, align 8, !tbaa !5
  %716 = load i64, ptr %79, align 8, !tbaa !9
  %717 = getelementptr inbounds %struct.complex, ptr %715, i64 %716
  %718 = getelementptr inbounds %struct.complex, ptr %717, i32 0, i32 0
  store float %714, ptr %718, align 4, !tbaa !11
  %719 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  %720 = load float, ptr %719, align 4, !tbaa !20
  %721 = load ptr, ptr %34, align 8, !tbaa !5
  %722 = load i64, ptr %79, align 8, !tbaa !9
  %723 = getelementptr inbounds %struct.complex, ptr %721, i64 %722
  %724 = getelementptr inbounds %struct.complex, ptr %723, i32 0, i32 1
  store float %720, ptr %724, align 4, !tbaa !20
  br label %725

725:                                              ; preds = %691
  %726 = load i64, ptr %103, align 8, !tbaa !9
  %727 = add nsw i64 %726, 1
  store i64 %727, ptr %103, align 8, !tbaa !9
  br label %687, !llvm.loop !27

728:                                              ; preds = %687
  br label %729

729:                                              ; preds = %728
  %730 = load i64, ptr %100, align 8, !tbaa !9
  %731 = add nsw i64 %730, 1
  store i64 %731, ptr %100, align 8, !tbaa !9
  br label %677, !llvm.loop !28

732:                                              ; preds = %677
  br label %733

733:                                              ; preds = %732
  %734 = load i64, ptr %83, align 8, !tbaa !9
  %735 = add nsw i64 %734, 1
  store i64 %735, ptr %83, align 8, !tbaa !9
  br label %319, !llvm.loop !29

736:                                              ; preds = %319
  %737 = load i64, ptr %88, align 8, !tbaa !9
  store i64 %737, ptr %76, align 8, !tbaa !9
  store i64 1, ptr %83, align 8, !tbaa !9
  br label %738

738:                                              ; preds = %764, %736
  %739 = load i64, ptr %83, align 8, !tbaa !9
  %740 = load i64, ptr %76, align 8, !tbaa !9
  %741 = icmp sle i64 %739, %740
  br i1 %741, label %742, label %767

742:                                              ; preds = %738
  %743 = load ptr, ptr %52, align 8, !tbaa !5
  %744 = load i64, ptr %106, align 8, !tbaa !9
  %745 = load i64, ptr %83, align 8, !tbaa !9
  %746 = add nsw i64 %744, %745
  %747 = sub nsw i64 %746, 1
  %748 = getelementptr inbounds i64, ptr %743, i64 %747
  %749 = load i64, ptr %748, align 8, !tbaa !9
  store i64 %749, ptr %86, align 8, !tbaa !9
  %750 = load ptr, ptr %31, align 8, !tbaa !5
  %751 = load ptr, ptr %32, align 8, !tbaa !5
  %752 = load i64, ptr %86, align 8, !tbaa !9
  %753 = load i64, ptr %72, align 8, !tbaa !9
  %754 = add nsw i64 %752, %753
  %755 = getelementptr inbounds %struct.complex, ptr %751, i64 %754
  %756 = load ptr, ptr %33, align 8, !tbaa !5
  %757 = load ptr, ptr %34, align 8, !tbaa !5
  %758 = load i64, ptr %86, align 8, !tbaa !9
  %759 = load i64, ptr %74, align 8, !tbaa !9
  %760 = add nsw i64 %758, %759
  %761 = getelementptr inbounds %struct.complex, ptr %757, i64 %760
  %762 = load ptr, ptr %35, align 8, !tbaa !5
  %763 = call i32 @f2c_ccopy(ptr noundef %750, ptr noundef %755, ptr noundef %756, ptr noundef %761, ptr noundef %762)
  br label %764

764:                                              ; preds = %742
  %765 = load i64, ptr %83, align 8, !tbaa !9
  %766 = add nsw i64 %765, 1
  store i64 %766, ptr %83, align 8, !tbaa !9
  br label %738, !llvm.loop !30

767:                                              ; preds = %738
  %768 = call i64 @pow_ii(ptr noundef @c__2, ptr noundef %101)
  store i64 %768, ptr %84, align 8, !tbaa !9
  store i64 0, ptr %102, align 8, !tbaa !9
  %769 = load i64, ptr %101, align 8, !tbaa !9
  store i64 %769, ptr %95, align 8, !tbaa !9
  br label %770

770:                                              ; preds = %907, %767
  %771 = load i64, ptr %95, align 8, !tbaa !9
  %772 = icmp sge i64 %771, 1
  br i1 %772, label %773, label %910

773:                                              ; preds = %770
  %774 = load i64, ptr %95, align 8, !tbaa !9
  %775 = shl i64 %774, 1
  %776 = sub nsw i64 %775, 1
  store i64 %776, ptr %98, align 8, !tbaa !9
  %777 = load i64, ptr %95, align 8, !tbaa !9
  %778 = icmp eq i64 %777, 1
  br i1 %778, label %779, label %780

779:                                              ; preds = %773
  store i64 1, ptr %87, align 8, !tbaa !9
  store i64 1, ptr %89, align 8, !tbaa !9
  br label %787

780:                                              ; preds = %773
  %781 = load i64, ptr %95, align 8, !tbaa !9
  %782 = sub nsw i64 %781, 1
  store i64 %782, ptr %76, align 8, !tbaa !9
  %783 = call i64 @pow_ii(ptr noundef @c__2, ptr noundef %76)
  store i64 %783, ptr %87, align 8, !tbaa !9
  %784 = load i64, ptr %87, align 8, !tbaa !9
  %785 = shl i64 %784, 1
  %786 = sub nsw i64 %785, 1
  store i64 %786, ptr %89, align 8, !tbaa !9
  br label %787

787:                                              ; preds = %780, %779
  %788 = load i64, ptr %89, align 8, !tbaa !9
  store i64 %788, ptr %76, align 8, !tbaa !9
  %789 = load i64, ptr %87, align 8, !tbaa !9
  store i64 %789, ptr %83, align 8, !tbaa !9
  br label %790

790:                                              ; preds = %903, %787
  %791 = load i64, ptr %83, align 8, !tbaa !9
  %792 = load i64, ptr %76, align 8, !tbaa !9
  %793 = icmp sle i64 %791, %792
  br i1 %793, label %794, label %906

794:                                              ; preds = %790
  %795 = load i64, ptr %83, align 8, !tbaa !9
  %796 = sub nsw i64 %795, 1
  store i64 %796, ptr %92, align 8, !tbaa !9
  %797 = load ptr, ptr %52, align 8, !tbaa !5
  %798 = load i64, ptr %106, align 8, !tbaa !9
  %799 = load i64, ptr %92, align 8, !tbaa !9
  %800 = add nsw i64 %798, %799
  %801 = getelementptr inbounds i64, ptr %797, i64 %800
  %802 = load i64, ptr %801, align 8, !tbaa !9
  store i64 %802, ptr %86, align 8, !tbaa !9
  %803 = load ptr, ptr %52, align 8, !tbaa !5
  %804 = load i64, ptr %107, align 8, !tbaa !9
  %805 = load i64, ptr %92, align 8, !tbaa !9
  %806 = add nsw i64 %804, %805
  %807 = getelementptr inbounds i64, ptr %803, i64 %806
  %808 = load i64, ptr %807, align 8, !tbaa !9
  store i64 %808, ptr %90, align 8, !tbaa !9
  %809 = load ptr, ptr %52, align 8, !tbaa !5
  %810 = load i64, ptr %108, align 8, !tbaa !9
  %811 = load i64, ptr %92, align 8, !tbaa !9
  %812 = add nsw i64 %810, %811
  %813 = getelementptr inbounds i64, ptr %809, i64 %812
  %814 = load i64, ptr %813, align 8, !tbaa !9
  store i64 %814, ptr %91, align 8, !tbaa !9
  %815 = load i64, ptr %86, align 8, !tbaa !9
  %816 = load i64, ptr %90, align 8, !tbaa !9
  %817 = sub nsw i64 %815, %816
  store i64 %817, ptr %93, align 8, !tbaa !9
  %818 = load i64, ptr %86, align 8, !tbaa !9
  %819 = add nsw i64 %818, 1
  store i64 %819, ptr %94, align 8, !tbaa !9
  %820 = load i64, ptr %84, align 8, !tbaa !9
  %821 = add nsw i64 %820, -1
  store i64 %821, ptr %84, align 8, !tbaa !9
  %822 = load ptr, ptr %28, align 8, !tbaa !5
  %823 = load ptr, ptr %31, align 8, !tbaa !5
  %824 = load ptr, ptr %34, align 8, !tbaa !5
  %825 = load i64, ptr %93, align 8, !tbaa !9
  %826 = load i64, ptr %74, align 8, !tbaa !9
  %827 = add nsw i64 %825, %826
  %828 = getelementptr inbounds %struct.complex, ptr %824, i64 %827
  %829 = load ptr, ptr %35, align 8, !tbaa !5
  %830 = load ptr, ptr %32, align 8, !tbaa !5
  %831 = load i64, ptr %93, align 8, !tbaa !9
  %832 = load i64, ptr %72, align 8, !tbaa !9
  %833 = add nsw i64 %831, %832
  %834 = getelementptr inbounds %struct.complex, ptr %830, i64 %833
  %835 = load ptr, ptr %33, align 8, !tbaa !5
  %836 = load ptr, ptr %47, align 8, !tbaa !5
  %837 = load i64, ptr %93, align 8, !tbaa !9
  %838 = load i64, ptr %95, align 8, !tbaa !9
  %839 = load i64, ptr %56, align 8, !tbaa !9
  %840 = mul nsw i64 %838, %839
  %841 = add nsw i64 %837, %840
  %842 = getelementptr inbounds i64, ptr %836, i64 %841
  %843 = load ptr, ptr %44, align 8, !tbaa !5
  %844 = load i64, ptr %84, align 8, !tbaa !9
  %845 = getelementptr inbounds i64, ptr %843, i64 %844
  %846 = load ptr, ptr %45, align 8, !tbaa !5
  %847 = load i64, ptr %93, align 8, !tbaa !9
  %848 = load i64, ptr %98, align 8, !tbaa !9
  %849 = load i64, ptr %54, align 8, !tbaa !9
  %850 = mul nsw i64 %848, %849
  %851 = add nsw i64 %847, %850
  %852 = getelementptr inbounds i64, ptr %846, i64 %851
  %853 = load ptr, ptr %46, align 8, !tbaa !5
  %854 = load ptr, ptr %48, align 8, !tbaa !5
  %855 = load i64, ptr %93, align 8, !tbaa !9
  %856 = load i64, ptr %98, align 8, !tbaa !9
  %857 = load i64, ptr %62, align 8, !tbaa !9
  %858 = mul nsw i64 %856, %857
  %859 = add nsw i64 %855, %858
  %860 = getelementptr inbounds float, ptr %854, i64 %859
  %861 = load ptr, ptr %37, align 8, !tbaa !5
  %862 = load ptr, ptr %43, align 8, !tbaa !5
  %863 = load i64, ptr %93, align 8, !tbaa !9
  %864 = load i64, ptr %98, align 8, !tbaa !9
  %865 = load i64, ptr %64, align 8, !tbaa !9
  %866 = mul nsw i64 %864, %865
  %867 = add nsw i64 %863, %866
  %868 = getelementptr inbounds float, ptr %862, i64 %867
  %869 = load ptr, ptr %40, align 8, !tbaa !5
  %870 = load i64, ptr %93, align 8, !tbaa !9
  %871 = load i64, ptr %95, align 8, !tbaa !9
  %872 = load i64, ptr %58, align 8, !tbaa !9
  %873 = mul nsw i64 %871, %872
  %874 = add nsw i64 %870, %873
  %875 = getelementptr inbounds float, ptr %869, i64 %874
  %876 = load ptr, ptr %41, align 8, !tbaa !5
  %877 = load i64, ptr %93, align 8, !tbaa !9
  %878 = load i64, ptr %98, align 8, !tbaa !9
  %879 = load i64, ptr %60, align 8, !tbaa !9
  %880 = mul nsw i64 %878, %879
  %881 = add nsw i64 %877, %880
  %882 = getelementptr inbounds float, ptr %876, i64 %881
  %883 = load ptr, ptr %42, align 8, !tbaa !5
  %884 = load i64, ptr %93, align 8, !tbaa !9
  %885 = load i64, ptr %95, align 8, !tbaa !9
  %886 = load i64, ptr %70, align 8, !tbaa !9
  %887 = mul nsw i64 %885, %886
  %888 = add nsw i64 %884, %887
  %889 = getelementptr inbounds float, ptr %883, i64 %888
  %890 = load ptr, ptr %39, align 8, !tbaa !5
  %891 = load i64, ptr %84, align 8, !tbaa !9
  %892 = getelementptr inbounds i64, ptr %890, i64 %891
  %893 = load ptr, ptr %49, align 8, !tbaa !5
  %894 = load i64, ptr %84, align 8, !tbaa !9
  %895 = getelementptr inbounds float, ptr %893, i64 %894
  %896 = load ptr, ptr %50, align 8, !tbaa !5
  %897 = load i64, ptr %84, align 8, !tbaa !9
  %898 = getelementptr inbounds float, ptr %896, i64 %897
  %899 = load ptr, ptr %51, align 8, !tbaa !5
  %900 = getelementptr inbounds float, ptr %899, i64 1
  %901 = load ptr, ptr %53, align 8, !tbaa !5
  %902 = call i32 @clals0_(ptr noundef %822, ptr noundef %90, ptr noundef %91, ptr noundef %102, ptr noundef %823, ptr noundef %828, ptr noundef %829, ptr noundef %834, ptr noundef %835, ptr noundef %842, ptr noundef %845, ptr noundef %852, ptr noundef %853, ptr noundef %860, ptr noundef %861, ptr noundef %868, ptr noundef %875, ptr noundef %882, ptr noundef %889, ptr noundef %892, ptr noundef %895, ptr noundef %898, ptr noundef %900, ptr noundef %901)
  br label %903

903:                                              ; preds = %794
  %904 = load i64, ptr %83, align 8, !tbaa !9
  %905 = add nsw i64 %904, 1
  store i64 %905, ptr %83, align 8, !tbaa !9
  br label %790, !llvm.loop !31

906:                                              ; preds = %790
  br label %907

907:                                              ; preds = %906
  %908 = load i64, ptr %95, align 8, !tbaa !9
  %909 = add nsw i64 %908, -1
  store i64 %909, ptr %95, align 8, !tbaa !9
  br label %770, !llvm.loop !32

910:                                              ; preds = %770
  br label %1495

911:                                              ; preds = %312
  store i64 0, ptr %84, align 8, !tbaa !9
  %912 = load i64, ptr %101, align 8, !tbaa !9
  store i64 %912, ptr %76, align 8, !tbaa !9
  store i64 1, ptr %95, align 8, !tbaa !9
  br label %913

913:                                              ; preds = %1057, %911
  %914 = load i64, ptr %95, align 8, !tbaa !9
  %915 = load i64, ptr %76, align 8, !tbaa !9
  %916 = icmp sle i64 %914, %915
  br i1 %916, label %917, label %1060

917:                                              ; preds = %913
  %918 = load i64, ptr %95, align 8, !tbaa !9
  %919 = shl i64 %918, 1
  %920 = sub nsw i64 %919, 1
  store i64 %920, ptr %98, align 8, !tbaa !9
  %921 = load i64, ptr %95, align 8, !tbaa !9
  %922 = icmp eq i64 %921, 1
  br i1 %922, label %923, label %924

923:                                              ; preds = %917
  store i64 1, ptr %87, align 8, !tbaa !9
  store i64 1, ptr %89, align 8, !tbaa !9
  br label %931

924:                                              ; preds = %917
  %925 = load i64, ptr %95, align 8, !tbaa !9
  %926 = sub nsw i64 %925, 1
  store i64 %926, ptr %77, align 8, !tbaa !9
  %927 = call i64 @pow_ii(ptr noundef @c__2, ptr noundef %77)
  store i64 %927, ptr %87, align 8, !tbaa !9
  %928 = load i64, ptr %87, align 8, !tbaa !9
  %929 = shl i64 %928, 1
  %930 = sub nsw i64 %929, 1
  store i64 %930, ptr %89, align 8, !tbaa !9
  br label %931

931:                                              ; preds = %924, %923
  %932 = load i64, ptr %87, align 8, !tbaa !9
  store i64 %932, ptr %77, align 8, !tbaa !9
  %933 = load i64, ptr %89, align 8, !tbaa !9
  store i64 %933, ptr %83, align 8, !tbaa !9
  br label %934

934:                                              ; preds = %1053, %931
  %935 = load i64, ptr %83, align 8, !tbaa !9
  %936 = load i64, ptr %77, align 8, !tbaa !9
  %937 = icmp sge i64 %935, %936
  br i1 %937, label %938, label %1056

938:                                              ; preds = %934
  %939 = load i64, ptr %83, align 8, !tbaa !9
  %940 = sub nsw i64 %939, 1
  store i64 %940, ptr %92, align 8, !tbaa !9
  %941 = load ptr, ptr %52, align 8, !tbaa !5
  %942 = load i64, ptr %106, align 8, !tbaa !9
  %943 = load i64, ptr %92, align 8, !tbaa !9
  %944 = add nsw i64 %942, %943
  %945 = getelementptr inbounds i64, ptr %941, i64 %944
  %946 = load i64, ptr %945, align 8, !tbaa !9
  store i64 %946, ptr %86, align 8, !tbaa !9
  %947 = load ptr, ptr %52, align 8, !tbaa !5
  %948 = load i64, ptr %107, align 8, !tbaa !9
  %949 = load i64, ptr %92, align 8, !tbaa !9
  %950 = add nsw i64 %948, %949
  %951 = getelementptr inbounds i64, ptr %947, i64 %950
  %952 = load i64, ptr %951, align 8, !tbaa !9
  store i64 %952, ptr %90, align 8, !tbaa !9
  %953 = load ptr, ptr %52, align 8, !tbaa !5
  %954 = load i64, ptr %108, align 8, !tbaa !9
  %955 = load i64, ptr %92, align 8, !tbaa !9
  %956 = add nsw i64 %954, %955
  %957 = getelementptr inbounds i64, ptr %953, i64 %956
  %958 = load i64, ptr %957, align 8, !tbaa !9
  store i64 %958, ptr %91, align 8, !tbaa !9
  %959 = load i64, ptr %86, align 8, !tbaa !9
  %960 = load i64, ptr %90, align 8, !tbaa !9
  %961 = sub nsw i64 %959, %960
  store i64 %961, ptr %93, align 8, !tbaa !9
  %962 = load i64, ptr %86, align 8, !tbaa !9
  %963 = add nsw i64 %962, 1
  store i64 %963, ptr %94, align 8, !tbaa !9
  %964 = load i64, ptr %83, align 8, !tbaa !9
  %965 = load i64, ptr %89, align 8, !tbaa !9
  %966 = icmp eq i64 %964, %965
  br i1 %966, label %967, label %968

967:                                              ; preds = %938
  store i64 0, ptr %102, align 8, !tbaa !9
  br label %969

968:                                              ; preds = %938
  store i64 1, ptr %102, align 8, !tbaa !9
  br label %969

969:                                              ; preds = %968, %967
  %970 = load i64, ptr %84, align 8, !tbaa !9
  %971 = add nsw i64 %970, 1
  store i64 %971, ptr %84, align 8, !tbaa !9
  %972 = load ptr, ptr %28, align 8, !tbaa !5
  %973 = load ptr, ptr %31, align 8, !tbaa !5
  %974 = load ptr, ptr %32, align 8, !tbaa !5
  %975 = load i64, ptr %93, align 8, !tbaa !9
  %976 = load i64, ptr %72, align 8, !tbaa !9
  %977 = add nsw i64 %975, %976
  %978 = getelementptr inbounds %struct.complex, ptr %974, i64 %977
  %979 = load ptr, ptr %33, align 8, !tbaa !5
  %980 = load ptr, ptr %34, align 8, !tbaa !5
  %981 = load i64, ptr %93, align 8, !tbaa !9
  %982 = load i64, ptr %74, align 8, !tbaa !9
  %983 = add nsw i64 %981, %982
  %984 = getelementptr inbounds %struct.complex, ptr %980, i64 %983
  %985 = load ptr, ptr %35, align 8, !tbaa !5
  %986 = load ptr, ptr %47, align 8, !tbaa !5
  %987 = load i64, ptr %93, align 8, !tbaa !9
  %988 = load i64, ptr %95, align 8, !tbaa !9
  %989 = load i64, ptr %56, align 8, !tbaa !9
  %990 = mul nsw i64 %988, %989
  %991 = add nsw i64 %987, %990
  %992 = getelementptr inbounds i64, ptr %986, i64 %991
  %993 = load ptr, ptr %44, align 8, !tbaa !5
  %994 = load i64, ptr %84, align 8, !tbaa !9
  %995 = getelementptr inbounds i64, ptr %993, i64 %994
  %996 = load ptr, ptr %45, align 8, !tbaa !5
  %997 = load i64, ptr %93, align 8, !tbaa !9
  %998 = load i64, ptr %98, align 8, !tbaa !9
  %999 = load i64, ptr %54, align 8, !tbaa !9
  %1000 = mul nsw i64 %998, %999
  %1001 = add nsw i64 %997, %1000
  %1002 = getelementptr inbounds i64, ptr %996, i64 %1001
  %1003 = load ptr, ptr %46, align 8, !tbaa !5
  %1004 = load ptr, ptr %48, align 8, !tbaa !5
  %1005 = load i64, ptr %93, align 8, !tbaa !9
  %1006 = load i64, ptr %98, align 8, !tbaa !9
  %1007 = load i64, ptr %62, align 8, !tbaa !9
  %1008 = mul nsw i64 %1006, %1007
  %1009 = add nsw i64 %1005, %1008
  %1010 = getelementptr inbounds float, ptr %1004, i64 %1009
  %1011 = load ptr, ptr %37, align 8, !tbaa !5
  %1012 = load ptr, ptr %43, align 8, !tbaa !5
  %1013 = load i64, ptr %93, align 8, !tbaa !9
  %1014 = load i64, ptr %98, align 8, !tbaa !9
  %1015 = load i64, ptr %64, align 8, !tbaa !9
  %1016 = mul nsw i64 %1014, %1015
  %1017 = add nsw i64 %1013, %1016
  %1018 = getelementptr inbounds float, ptr %1012, i64 %1017
  %1019 = load ptr, ptr %40, align 8, !tbaa !5
  %1020 = load i64, ptr %93, align 8, !tbaa !9
  %1021 = load i64, ptr %95, align 8, !tbaa !9
  %1022 = load i64, ptr %58, align 8, !tbaa !9
  %1023 = mul nsw i64 %1021, %1022
  %1024 = add nsw i64 %1020, %1023
  %1025 = getelementptr inbounds float, ptr %1019, i64 %1024
  %1026 = load ptr, ptr %41, align 8, !tbaa !5
  %1027 = load i64, ptr %93, align 8, !tbaa !9
  %1028 = load i64, ptr %98, align 8, !tbaa !9
  %1029 = load i64, ptr %60, align 8, !tbaa !9
  %1030 = mul nsw i64 %1028, %1029
  %1031 = add nsw i64 %1027, %1030
  %1032 = getelementptr inbounds float, ptr %1026, i64 %1031
  %1033 = load ptr, ptr %42, align 8, !tbaa !5
  %1034 = load i64, ptr %93, align 8, !tbaa !9
  %1035 = load i64, ptr %95, align 8, !tbaa !9
  %1036 = load i64, ptr %70, align 8, !tbaa !9
  %1037 = mul nsw i64 %1035, %1036
  %1038 = add nsw i64 %1034, %1037
  %1039 = getelementptr inbounds float, ptr %1033, i64 %1038
  %1040 = load ptr, ptr %39, align 8, !tbaa !5
  %1041 = load i64, ptr %84, align 8, !tbaa !9
  %1042 = getelementptr inbounds i64, ptr %1040, i64 %1041
  %1043 = load ptr, ptr %49, align 8, !tbaa !5
  %1044 = load i64, ptr %84, align 8, !tbaa !9
  %1045 = getelementptr inbounds float, ptr %1043, i64 %1044
  %1046 = load ptr, ptr %50, align 8, !tbaa !5
  %1047 = load i64, ptr %84, align 8, !tbaa !9
  %1048 = getelementptr inbounds float, ptr %1046, i64 %1047
  %1049 = load ptr, ptr %51, align 8, !tbaa !5
  %1050 = getelementptr inbounds float, ptr %1049, i64 1
  %1051 = load ptr, ptr %53, align 8, !tbaa !5
  %1052 = call i32 @clals0_(ptr noundef %972, ptr noundef %90, ptr noundef %91, ptr noundef %102, ptr noundef %973, ptr noundef %978, ptr noundef %979, ptr noundef %984, ptr noundef %985, ptr noundef %992, ptr noundef %995, ptr noundef %1002, ptr noundef %1003, ptr noundef %1010, ptr noundef %1011, ptr noundef %1018, ptr noundef %1025, ptr noundef %1032, ptr noundef %1039, ptr noundef %1042, ptr noundef %1045, ptr noundef %1048, ptr noundef %1050, ptr noundef %1051)
  br label %1053

1053:                                             ; preds = %969
  %1054 = load i64, ptr %83, align 8, !tbaa !9
  %1055 = add nsw i64 %1054, -1
  store i64 %1055, ptr %83, align 8, !tbaa !9
  br label %934, !llvm.loop !33

1056:                                             ; preds = %934
  br label %1057

1057:                                             ; preds = %1056
  %1058 = load i64, ptr %95, align 8, !tbaa !9
  %1059 = add nsw i64 %1058, 1
  store i64 %1059, ptr %95, align 8, !tbaa !9
  br label %913, !llvm.loop !34

1060:                                             ; preds = %913
  %1061 = load i64, ptr %88, align 8, !tbaa !9
  %1062 = add nsw i64 %1061, 1
  %1063 = sdiv i64 %1062, 2
  store i64 %1063, ptr %96, align 8, !tbaa !9
  %1064 = load i64, ptr %88, align 8, !tbaa !9
  store i64 %1064, ptr %76, align 8, !tbaa !9
  %1065 = load i64, ptr %96, align 8, !tbaa !9
  store i64 %1065, ptr %83, align 8, !tbaa !9
  br label %1066

1066:                                             ; preds = %1491, %1060
  %1067 = load i64, ptr %83, align 8, !tbaa !9
  %1068 = load i64, ptr %76, align 8, !tbaa !9
  %1069 = icmp sle i64 %1067, %1068
  br i1 %1069, label %1070, label %1494

1070:                                             ; preds = %1066
  %1071 = load i64, ptr %83, align 8, !tbaa !9
  %1072 = sub nsw i64 %1071, 1
  store i64 %1072, ptr %85, align 8, !tbaa !9
  %1073 = load ptr, ptr %52, align 8, !tbaa !5
  %1074 = load i64, ptr %106, align 8, !tbaa !9
  %1075 = load i64, ptr %85, align 8, !tbaa !9
  %1076 = add nsw i64 %1074, %1075
  %1077 = getelementptr inbounds i64, ptr %1073, i64 %1076
  %1078 = load i64, ptr %1077, align 8, !tbaa !9
  store i64 %1078, ptr %86, align 8, !tbaa !9
  %1079 = load ptr, ptr %52, align 8, !tbaa !5
  %1080 = load i64, ptr %107, align 8, !tbaa !9
  %1081 = load i64, ptr %85, align 8, !tbaa !9
  %1082 = add nsw i64 %1080, %1081
  %1083 = getelementptr inbounds i64, ptr %1079, i64 %1082
  %1084 = load i64, ptr %1083, align 8, !tbaa !9
  store i64 %1084, ptr %90, align 8, !tbaa !9
  %1085 = load ptr, ptr %52, align 8, !tbaa !5
  %1086 = load i64, ptr %108, align 8, !tbaa !9
  %1087 = load i64, ptr %85, align 8, !tbaa !9
  %1088 = add nsw i64 %1086, %1087
  %1089 = getelementptr inbounds i64, ptr %1085, i64 %1088
  %1090 = load i64, ptr %1089, align 8, !tbaa !9
  store i64 %1090, ptr %91, align 8, !tbaa !9
  %1091 = load i64, ptr %90, align 8, !tbaa !9
  %1092 = add nsw i64 %1091, 1
  store i64 %1092, ptr %97, align 8, !tbaa !9
  %1093 = load i64, ptr %83, align 8, !tbaa !9
  %1094 = load i64, ptr %88, align 8, !tbaa !9
  %1095 = icmp eq i64 %1093, %1094
  br i1 %1095, label %1096, label %1098

1096:                                             ; preds = %1070
  %1097 = load i64, ptr %91, align 8, !tbaa !9
  store i64 %1097, ptr %99, align 8, !tbaa !9
  br label %1101

1098:                                             ; preds = %1070
  %1099 = load i64, ptr %91, align 8, !tbaa !9
  %1100 = add nsw i64 %1099, 1
  store i64 %1100, ptr %99, align 8, !tbaa !9
  br label %1101

1101:                                             ; preds = %1098, %1096
  %1102 = load i64, ptr %86, align 8, !tbaa !9
  %1103 = load i64, ptr %90, align 8, !tbaa !9
  %1104 = sub nsw i64 %1102, %1103
  store i64 %1104, ptr %93, align 8, !tbaa !9
  %1105 = load i64, ptr %86, align 8, !tbaa !9
  %1106 = add nsw i64 %1105, 1
  store i64 %1106, ptr %94, align 8, !tbaa !9
  %1107 = load i64, ptr %97, align 8, !tbaa !9
  %1108 = load ptr, ptr %31, align 8, !tbaa !5
  %1109 = load i64, ptr %1108, align 8, !tbaa !9
  %1110 = mul nsw i64 %1107, %1109
  %1111 = shl i64 %1110, 1
  store i64 %1111, ptr %84, align 8, !tbaa !9
  %1112 = load ptr, ptr %31, align 8, !tbaa !5
  %1113 = load i64, ptr %1112, align 8, !tbaa !9
  store i64 %1113, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %100, align 8, !tbaa !9
  br label %1114

1114:                                             ; preds = %1148, %1101
  %1115 = load i64, ptr %100, align 8, !tbaa !9
  %1116 = load i64, ptr %77, align 8, !tbaa !9
  %1117 = icmp sle i64 %1115, %1116
  br i1 %1117, label %1118, label %1151

1118:                                             ; preds = %1114
  %1119 = load i64, ptr %93, align 8, !tbaa !9
  %1120 = load i64, ptr %97, align 8, !tbaa !9
  %1121 = add nsw i64 %1119, %1120
  %1122 = sub nsw i64 %1121, 1
  store i64 %1122, ptr %78, align 8, !tbaa !9
  %1123 = load i64, ptr %93, align 8, !tbaa !9
  store i64 %1123, ptr %103, align 8, !tbaa !9
  br label %1124

1124:                                             ; preds = %1144, %1118
  %1125 = load i64, ptr %103, align 8, !tbaa !9
  %1126 = load i64, ptr %78, align 8, !tbaa !9
  %1127 = icmp sle i64 %1125, %1126
  br i1 %1127, label %1128, label %1147

1128:                                             ; preds = %1124
  %1129 = load i64, ptr %84, align 8, !tbaa !9
  %1130 = add nsw i64 %1129, 1
  store i64 %1130, ptr %84, align 8, !tbaa !9
  %1131 = load i64, ptr %103, align 8, !tbaa !9
  %1132 = load i64, ptr %100, align 8, !tbaa !9
  %1133 = load i64, ptr %72, align 8, !tbaa !9
  %1134 = mul nsw i64 %1132, %1133
  %1135 = add nsw i64 %1131, %1134
  store i64 %1135, ptr %79, align 8, !tbaa !9
  %1136 = load ptr, ptr %32, align 8, !tbaa !5
  %1137 = load i64, ptr %79, align 8, !tbaa !9
  %1138 = getelementptr inbounds %struct.complex, ptr %1136, i64 %1137
  %1139 = getelementptr inbounds %struct.complex, ptr %1138, i32 0, i32 0
  %1140 = load float, ptr %1139, align 4, !tbaa !11
  %1141 = load ptr, ptr %51, align 8, !tbaa !5
  %1142 = load i64, ptr %84, align 8, !tbaa !9
  %1143 = getelementptr inbounds float, ptr %1141, i64 %1142
  store float %1140, ptr %1143, align 4, !tbaa !14
  br label %1144

1144:                                             ; preds = %1128
  %1145 = load i64, ptr %103, align 8, !tbaa !9
  %1146 = add nsw i64 %1145, 1
  store i64 %1146, ptr %103, align 8, !tbaa !9
  br label %1124, !llvm.loop !35

1147:                                             ; preds = %1124
  br label %1148

1148:                                             ; preds = %1147
  %1149 = load i64, ptr %100, align 8, !tbaa !9
  %1150 = add nsw i64 %1149, 1
  store i64 %1150, ptr %100, align 8, !tbaa !9
  br label %1114, !llvm.loop !36

1151:                                             ; preds = %1114
  %1152 = load ptr, ptr %31, align 8, !tbaa !5
  %1153 = load ptr, ptr %38, align 8, !tbaa !5
  %1154 = load i64, ptr %93, align 8, !tbaa !9
  %1155 = load i64, ptr %68, align 8, !tbaa !9
  %1156 = add nsw i64 %1154, %1155
  %1157 = getelementptr inbounds float, ptr %1153, i64 %1156
  %1158 = load ptr, ptr %37, align 8, !tbaa !5
  %1159 = load ptr, ptr %51, align 8, !tbaa !5
  %1160 = load i64, ptr %97, align 8, !tbaa !9
  %1161 = load ptr, ptr %31, align 8, !tbaa !5
  %1162 = load i64, ptr %1161, align 8, !tbaa !9
  %1163 = mul nsw i64 %1160, %1162
  %1164 = shl i64 %1163, 1
  %1165 = add nsw i64 %1164, 1
  %1166 = getelementptr inbounds float, ptr %1159, i64 %1165
  %1167 = load ptr, ptr %51, align 8, !tbaa !5
  %1168 = getelementptr inbounds float, ptr %1167, i64 1
  %1169 = call i32 @f2c_sgemm(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %97, ptr noundef %1152, ptr noundef %97, ptr noundef @c_b9, ptr noundef %1157, ptr noundef %1158, ptr noundef %1166, ptr noundef %97, ptr noundef @c_b10, ptr noundef %1168, ptr noundef %97)
  %1170 = load i64, ptr %97, align 8, !tbaa !9
  %1171 = load ptr, ptr %31, align 8, !tbaa !5
  %1172 = load i64, ptr %1171, align 8, !tbaa !9
  %1173 = mul nsw i64 %1170, %1172
  %1174 = shl i64 %1173, 1
  store i64 %1174, ptr %84, align 8, !tbaa !9
  %1175 = load ptr, ptr %31, align 8, !tbaa !5
  %1176 = load i64, ptr %1175, align 8, !tbaa !9
  store i64 %1176, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %100, align 8, !tbaa !9
  br label %1177

1177:                                             ; preds = %1210, %1151
  %1178 = load i64, ptr %100, align 8, !tbaa !9
  %1179 = load i64, ptr %77, align 8, !tbaa !9
  %1180 = icmp sle i64 %1178, %1179
  br i1 %1180, label %1181, label %1213

1181:                                             ; preds = %1177
  %1182 = load i64, ptr %93, align 8, !tbaa !9
  %1183 = load i64, ptr %97, align 8, !tbaa !9
  %1184 = add nsw i64 %1182, %1183
  %1185 = sub nsw i64 %1184, 1
  store i64 %1185, ptr %78, align 8, !tbaa !9
  %1186 = load i64, ptr %93, align 8, !tbaa !9
  store i64 %1186, ptr %103, align 8, !tbaa !9
  br label %1187

1187:                                             ; preds = %1206, %1181
  %1188 = load i64, ptr %103, align 8, !tbaa !9
  %1189 = load i64, ptr %78, align 8, !tbaa !9
  %1190 = icmp sle i64 %1188, %1189
  br i1 %1190, label %1191, label %1209

1191:                                             ; preds = %1187
  %1192 = load i64, ptr %84, align 8, !tbaa !9
  %1193 = add nsw i64 %1192, 1
  store i64 %1193, ptr %84, align 8, !tbaa !9
  %1194 = load ptr, ptr %32, align 8, !tbaa !5
  %1195 = load i64, ptr %103, align 8, !tbaa !9
  %1196 = load i64, ptr %100, align 8, !tbaa !9
  %1197 = load i64, ptr %72, align 8, !tbaa !9
  %1198 = mul nsw i64 %1196, %1197
  %1199 = add nsw i64 %1195, %1198
  %1200 = getelementptr inbounds %struct.complex, ptr %1194, i64 %1199
  %1201 = call double @r_imag(ptr noundef %1200)
  %1202 = fptrunc double %1201 to float
  %1203 = load ptr, ptr %51, align 8, !tbaa !5
  %1204 = load i64, ptr %84, align 8, !tbaa !9
  %1205 = getelementptr inbounds float, ptr %1203, i64 %1204
  store float %1202, ptr %1205, align 4, !tbaa !14
  br label %1206

1206:                                             ; preds = %1191
  %1207 = load i64, ptr %103, align 8, !tbaa !9
  %1208 = add nsw i64 %1207, 1
  store i64 %1208, ptr %103, align 8, !tbaa !9
  br label %1187, !llvm.loop !37

1209:                                             ; preds = %1187
  br label %1210

1210:                                             ; preds = %1209
  %1211 = load i64, ptr %100, align 8, !tbaa !9
  %1212 = add nsw i64 %1211, 1
  store i64 %1212, ptr %100, align 8, !tbaa !9
  br label %1177, !llvm.loop !38

1213:                                             ; preds = %1177
  %1214 = load ptr, ptr %31, align 8, !tbaa !5
  %1215 = load ptr, ptr %38, align 8, !tbaa !5
  %1216 = load i64, ptr %93, align 8, !tbaa !9
  %1217 = load i64, ptr %68, align 8, !tbaa !9
  %1218 = add nsw i64 %1216, %1217
  %1219 = getelementptr inbounds float, ptr %1215, i64 %1218
  %1220 = load ptr, ptr %37, align 8, !tbaa !5
  %1221 = load ptr, ptr %51, align 8, !tbaa !5
  %1222 = load i64, ptr %97, align 8, !tbaa !9
  %1223 = load ptr, ptr %31, align 8, !tbaa !5
  %1224 = load i64, ptr %1223, align 8, !tbaa !9
  %1225 = mul nsw i64 %1222, %1224
  %1226 = shl i64 %1225, 1
  %1227 = add nsw i64 %1226, 1
  %1228 = getelementptr inbounds float, ptr %1221, i64 %1227
  %1229 = load ptr, ptr %51, align 8, !tbaa !5
  %1230 = load i64, ptr %97, align 8, !tbaa !9
  %1231 = load ptr, ptr %31, align 8, !tbaa !5
  %1232 = load i64, ptr %1231, align 8, !tbaa !9
  %1233 = mul nsw i64 %1230, %1232
  %1234 = add nsw i64 %1233, 1
  %1235 = getelementptr inbounds float, ptr %1229, i64 %1234
  %1236 = call i32 @f2c_sgemm(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %97, ptr noundef %1214, ptr noundef %97, ptr noundef @c_b9, ptr noundef %1219, ptr noundef %1220, ptr noundef %1228, ptr noundef %97, ptr noundef @c_b10, ptr noundef %1235, ptr noundef %97)
  store i64 0, ptr %105, align 8, !tbaa !9
  %1237 = load i64, ptr %97, align 8, !tbaa !9
  %1238 = load ptr, ptr %31, align 8, !tbaa !5
  %1239 = load i64, ptr %1238, align 8, !tbaa !9
  %1240 = mul nsw i64 %1237, %1239
  store i64 %1240, ptr %104, align 8, !tbaa !9
  %1241 = load ptr, ptr %31, align 8, !tbaa !5
  %1242 = load i64, ptr %1241, align 8, !tbaa !9
  store i64 %1242, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %100, align 8, !tbaa !9
  br label %1243

1243:                                             ; preds = %1295, %1213
  %1244 = load i64, ptr %100, align 8, !tbaa !9
  %1245 = load i64, ptr %77, align 8, !tbaa !9
  %1246 = icmp sle i64 %1244, %1245
  br i1 %1246, label %1247, label %1298

1247:                                             ; preds = %1243
  %1248 = load i64, ptr %93, align 8, !tbaa !9
  %1249 = load i64, ptr %97, align 8, !tbaa !9
  %1250 = add nsw i64 %1248, %1249
  %1251 = sub nsw i64 %1250, 1
  store i64 %1251, ptr %78, align 8, !tbaa !9
  %1252 = load i64, ptr %93, align 8, !tbaa !9
  store i64 %1252, ptr %103, align 8, !tbaa !9
  br label %1253

1253:                                             ; preds = %1291, %1247
  %1254 = load i64, ptr %103, align 8, !tbaa !9
  %1255 = load i64, ptr %78, align 8, !tbaa !9
  %1256 = icmp sle i64 %1254, %1255
  br i1 %1256, label %1257, label %1294

1257:                                             ; preds = %1253
  %1258 = load i64, ptr %105, align 8, !tbaa !9
  %1259 = add nsw i64 %1258, 1
  store i64 %1259, ptr %105, align 8, !tbaa !9
  %1260 = load i64, ptr %104, align 8, !tbaa !9
  %1261 = add nsw i64 %1260, 1
  store i64 %1261, ptr %104, align 8, !tbaa !9
  %1262 = load i64, ptr %103, align 8, !tbaa !9
  %1263 = load i64, ptr %100, align 8, !tbaa !9
  %1264 = load i64, ptr %74, align 8, !tbaa !9
  %1265 = mul nsw i64 %1263, %1264
  %1266 = add nsw i64 %1262, %1265
  store i64 %1266, ptr %79, align 8, !tbaa !9
  %1267 = load i64, ptr %105, align 8, !tbaa !9
  store i64 %1267, ptr %80, align 8, !tbaa !9
  %1268 = load i64, ptr %104, align 8, !tbaa !9
  store i64 %1268, ptr %81, align 8, !tbaa !9
  %1269 = load ptr, ptr %51, align 8, !tbaa !5
  %1270 = load i64, ptr %80, align 8, !tbaa !9
  %1271 = getelementptr inbounds float, ptr %1269, i64 %1270
  %1272 = load float, ptr %1271, align 4, !tbaa !14
  %1273 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  store float %1272, ptr %1273, align 4, !tbaa !11
  %1274 = load ptr, ptr %51, align 8, !tbaa !5
  %1275 = load i64, ptr %81, align 8, !tbaa !9
  %1276 = getelementptr inbounds float, ptr %1274, i64 %1275
  %1277 = load float, ptr %1276, align 4, !tbaa !14
  %1278 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  store float %1277, ptr %1278, align 4, !tbaa !20
  %1279 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  %1280 = load float, ptr %1279, align 4, !tbaa !11
  %1281 = load ptr, ptr %34, align 8, !tbaa !5
  %1282 = load i64, ptr %79, align 8, !tbaa !9
  %1283 = getelementptr inbounds %struct.complex, ptr %1281, i64 %1282
  %1284 = getelementptr inbounds %struct.complex, ptr %1283, i32 0, i32 0
  store float %1280, ptr %1284, align 4, !tbaa !11
  %1285 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  %1286 = load float, ptr %1285, align 4, !tbaa !20
  %1287 = load ptr, ptr %34, align 8, !tbaa !5
  %1288 = load i64, ptr %79, align 8, !tbaa !9
  %1289 = getelementptr inbounds %struct.complex, ptr %1287, i64 %1288
  %1290 = getelementptr inbounds %struct.complex, ptr %1289, i32 0, i32 1
  store float %1286, ptr %1290, align 4, !tbaa !20
  br label %1291

1291:                                             ; preds = %1257
  %1292 = load i64, ptr %103, align 8, !tbaa !9
  %1293 = add nsw i64 %1292, 1
  store i64 %1293, ptr %103, align 8, !tbaa !9
  br label %1253, !llvm.loop !39

1294:                                             ; preds = %1253
  br label %1295

1295:                                             ; preds = %1294
  %1296 = load i64, ptr %100, align 8, !tbaa !9
  %1297 = add nsw i64 %1296, 1
  store i64 %1297, ptr %100, align 8, !tbaa !9
  br label %1243, !llvm.loop !40

1298:                                             ; preds = %1243
  %1299 = load i64, ptr %99, align 8, !tbaa !9
  %1300 = load ptr, ptr %31, align 8, !tbaa !5
  %1301 = load i64, ptr %1300, align 8, !tbaa !9
  %1302 = mul nsw i64 %1299, %1301
  %1303 = shl i64 %1302, 1
  store i64 %1303, ptr %84, align 8, !tbaa !9
  %1304 = load ptr, ptr %31, align 8, !tbaa !5
  %1305 = load i64, ptr %1304, align 8, !tbaa !9
  store i64 %1305, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %100, align 8, !tbaa !9
  br label %1306

1306:                                             ; preds = %1340, %1298
  %1307 = load i64, ptr %100, align 8, !tbaa !9
  %1308 = load i64, ptr %77, align 8, !tbaa !9
  %1309 = icmp sle i64 %1307, %1308
  br i1 %1309, label %1310, label %1343

1310:                                             ; preds = %1306
  %1311 = load i64, ptr %94, align 8, !tbaa !9
  %1312 = load i64, ptr %99, align 8, !tbaa !9
  %1313 = add nsw i64 %1311, %1312
  %1314 = sub nsw i64 %1313, 1
  store i64 %1314, ptr %78, align 8, !tbaa !9
  %1315 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %1315, ptr %103, align 8, !tbaa !9
  br label %1316

1316:                                             ; preds = %1336, %1310
  %1317 = load i64, ptr %103, align 8, !tbaa !9
  %1318 = load i64, ptr %78, align 8, !tbaa !9
  %1319 = icmp sle i64 %1317, %1318
  br i1 %1319, label %1320, label %1339

1320:                                             ; preds = %1316
  %1321 = load i64, ptr %84, align 8, !tbaa !9
  %1322 = add nsw i64 %1321, 1
  store i64 %1322, ptr %84, align 8, !tbaa !9
  %1323 = load i64, ptr %103, align 8, !tbaa !9
  %1324 = load i64, ptr %100, align 8, !tbaa !9
  %1325 = load i64, ptr %72, align 8, !tbaa !9
  %1326 = mul nsw i64 %1324, %1325
  %1327 = add nsw i64 %1323, %1326
  store i64 %1327, ptr %79, align 8, !tbaa !9
  %1328 = load ptr, ptr %32, align 8, !tbaa !5
  %1329 = load i64, ptr %79, align 8, !tbaa !9
  %1330 = getelementptr inbounds %struct.complex, ptr %1328, i64 %1329
  %1331 = getelementptr inbounds %struct.complex, ptr %1330, i32 0, i32 0
  %1332 = load float, ptr %1331, align 4, !tbaa !11
  %1333 = load ptr, ptr %51, align 8, !tbaa !5
  %1334 = load i64, ptr %84, align 8, !tbaa !9
  %1335 = getelementptr inbounds float, ptr %1333, i64 %1334
  store float %1332, ptr %1335, align 4, !tbaa !14
  br label %1336

1336:                                             ; preds = %1320
  %1337 = load i64, ptr %103, align 8, !tbaa !9
  %1338 = add nsw i64 %1337, 1
  store i64 %1338, ptr %103, align 8, !tbaa !9
  br label %1316, !llvm.loop !41

1339:                                             ; preds = %1316
  br label %1340

1340:                                             ; preds = %1339
  %1341 = load i64, ptr %100, align 8, !tbaa !9
  %1342 = add nsw i64 %1341, 1
  store i64 %1342, ptr %100, align 8, !tbaa !9
  br label %1306, !llvm.loop !42

1343:                                             ; preds = %1306
  %1344 = load ptr, ptr %31, align 8, !tbaa !5
  %1345 = load ptr, ptr %38, align 8, !tbaa !5
  %1346 = load i64, ptr %94, align 8, !tbaa !9
  %1347 = load i64, ptr %68, align 8, !tbaa !9
  %1348 = add nsw i64 %1346, %1347
  %1349 = getelementptr inbounds float, ptr %1345, i64 %1348
  %1350 = load ptr, ptr %37, align 8, !tbaa !5
  %1351 = load ptr, ptr %51, align 8, !tbaa !5
  %1352 = load i64, ptr %99, align 8, !tbaa !9
  %1353 = load ptr, ptr %31, align 8, !tbaa !5
  %1354 = load i64, ptr %1353, align 8, !tbaa !9
  %1355 = mul nsw i64 %1352, %1354
  %1356 = shl i64 %1355, 1
  %1357 = add nsw i64 %1356, 1
  %1358 = getelementptr inbounds float, ptr %1351, i64 %1357
  %1359 = load ptr, ptr %51, align 8, !tbaa !5
  %1360 = getelementptr inbounds float, ptr %1359, i64 1
  %1361 = call i32 @f2c_sgemm(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %99, ptr noundef %1344, ptr noundef %99, ptr noundef @c_b9, ptr noundef %1349, ptr noundef %1350, ptr noundef %1358, ptr noundef %99, ptr noundef @c_b10, ptr noundef %1360, ptr noundef %99)
  %1362 = load i64, ptr %99, align 8, !tbaa !9
  %1363 = load ptr, ptr %31, align 8, !tbaa !5
  %1364 = load i64, ptr %1363, align 8, !tbaa !9
  %1365 = mul nsw i64 %1362, %1364
  %1366 = shl i64 %1365, 1
  store i64 %1366, ptr %84, align 8, !tbaa !9
  %1367 = load ptr, ptr %31, align 8, !tbaa !5
  %1368 = load i64, ptr %1367, align 8, !tbaa !9
  store i64 %1368, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %100, align 8, !tbaa !9
  br label %1369

1369:                                             ; preds = %1402, %1343
  %1370 = load i64, ptr %100, align 8, !tbaa !9
  %1371 = load i64, ptr %77, align 8, !tbaa !9
  %1372 = icmp sle i64 %1370, %1371
  br i1 %1372, label %1373, label %1405

1373:                                             ; preds = %1369
  %1374 = load i64, ptr %94, align 8, !tbaa !9
  %1375 = load i64, ptr %99, align 8, !tbaa !9
  %1376 = add nsw i64 %1374, %1375
  %1377 = sub nsw i64 %1376, 1
  store i64 %1377, ptr %78, align 8, !tbaa !9
  %1378 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %1378, ptr %103, align 8, !tbaa !9
  br label %1379

1379:                                             ; preds = %1398, %1373
  %1380 = load i64, ptr %103, align 8, !tbaa !9
  %1381 = load i64, ptr %78, align 8, !tbaa !9
  %1382 = icmp sle i64 %1380, %1381
  br i1 %1382, label %1383, label %1401

1383:                                             ; preds = %1379
  %1384 = load i64, ptr %84, align 8, !tbaa !9
  %1385 = add nsw i64 %1384, 1
  store i64 %1385, ptr %84, align 8, !tbaa !9
  %1386 = load ptr, ptr %32, align 8, !tbaa !5
  %1387 = load i64, ptr %103, align 8, !tbaa !9
  %1388 = load i64, ptr %100, align 8, !tbaa !9
  %1389 = load i64, ptr %72, align 8, !tbaa !9
  %1390 = mul nsw i64 %1388, %1389
  %1391 = add nsw i64 %1387, %1390
  %1392 = getelementptr inbounds %struct.complex, ptr %1386, i64 %1391
  %1393 = call double @r_imag(ptr noundef %1392)
  %1394 = fptrunc double %1393 to float
  %1395 = load ptr, ptr %51, align 8, !tbaa !5
  %1396 = load i64, ptr %84, align 8, !tbaa !9
  %1397 = getelementptr inbounds float, ptr %1395, i64 %1396
  store float %1394, ptr %1397, align 4, !tbaa !14
  br label %1398

1398:                                             ; preds = %1383
  %1399 = load i64, ptr %103, align 8, !tbaa !9
  %1400 = add nsw i64 %1399, 1
  store i64 %1400, ptr %103, align 8, !tbaa !9
  br label %1379, !llvm.loop !43

1401:                                             ; preds = %1379
  br label %1402

1402:                                             ; preds = %1401
  %1403 = load i64, ptr %100, align 8, !tbaa !9
  %1404 = add nsw i64 %1403, 1
  store i64 %1404, ptr %100, align 8, !tbaa !9
  br label %1369, !llvm.loop !44

1405:                                             ; preds = %1369
  %1406 = load ptr, ptr %31, align 8, !tbaa !5
  %1407 = load ptr, ptr %38, align 8, !tbaa !5
  %1408 = load i64, ptr %94, align 8, !tbaa !9
  %1409 = load i64, ptr %68, align 8, !tbaa !9
  %1410 = add nsw i64 %1408, %1409
  %1411 = getelementptr inbounds float, ptr %1407, i64 %1410
  %1412 = load ptr, ptr %37, align 8, !tbaa !5
  %1413 = load ptr, ptr %51, align 8, !tbaa !5
  %1414 = load i64, ptr %99, align 8, !tbaa !9
  %1415 = load ptr, ptr %31, align 8, !tbaa !5
  %1416 = load i64, ptr %1415, align 8, !tbaa !9
  %1417 = mul nsw i64 %1414, %1416
  %1418 = shl i64 %1417, 1
  %1419 = add nsw i64 %1418, 1
  %1420 = getelementptr inbounds float, ptr %1413, i64 %1419
  %1421 = load ptr, ptr %51, align 8, !tbaa !5
  %1422 = load i64, ptr %99, align 8, !tbaa !9
  %1423 = load ptr, ptr %31, align 8, !tbaa !5
  %1424 = load i64, ptr %1423, align 8, !tbaa !9
  %1425 = mul nsw i64 %1422, %1424
  %1426 = add nsw i64 %1425, 1
  %1427 = getelementptr inbounds float, ptr %1421, i64 %1426
  %1428 = call i32 @f2c_sgemm(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %99, ptr noundef %1406, ptr noundef %99, ptr noundef @c_b9, ptr noundef %1411, ptr noundef %1412, ptr noundef %1420, ptr noundef %99, ptr noundef @c_b10, ptr noundef %1427, ptr noundef %99)
  store i64 0, ptr %105, align 8, !tbaa !9
  %1429 = load i64, ptr %99, align 8, !tbaa !9
  %1430 = load ptr, ptr %31, align 8, !tbaa !5
  %1431 = load i64, ptr %1430, align 8, !tbaa !9
  %1432 = mul nsw i64 %1429, %1431
  store i64 %1432, ptr %104, align 8, !tbaa !9
  %1433 = load ptr, ptr %31, align 8, !tbaa !5
  %1434 = load i64, ptr %1433, align 8, !tbaa !9
  store i64 %1434, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %100, align 8, !tbaa !9
  br label %1435

1435:                                             ; preds = %1487, %1405
  %1436 = load i64, ptr %100, align 8, !tbaa !9
  %1437 = load i64, ptr %77, align 8, !tbaa !9
  %1438 = icmp sle i64 %1436, %1437
  br i1 %1438, label %1439, label %1490

1439:                                             ; preds = %1435
  %1440 = load i64, ptr %94, align 8, !tbaa !9
  %1441 = load i64, ptr %99, align 8, !tbaa !9
  %1442 = add nsw i64 %1440, %1441
  %1443 = sub nsw i64 %1442, 1
  store i64 %1443, ptr %78, align 8, !tbaa !9
  %1444 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %1444, ptr %103, align 8, !tbaa !9
  br label %1445

1445:                                             ; preds = %1483, %1439
  %1446 = load i64, ptr %103, align 8, !tbaa !9
  %1447 = load i64, ptr %78, align 8, !tbaa !9
  %1448 = icmp sle i64 %1446, %1447
  br i1 %1448, label %1449, label %1486

1449:                                             ; preds = %1445
  %1450 = load i64, ptr %105, align 8, !tbaa !9
  %1451 = add nsw i64 %1450, 1
  store i64 %1451, ptr %105, align 8, !tbaa !9
  %1452 = load i64, ptr %104, align 8, !tbaa !9
  %1453 = add nsw i64 %1452, 1
  store i64 %1453, ptr %104, align 8, !tbaa !9
  %1454 = load i64, ptr %103, align 8, !tbaa !9
  %1455 = load i64, ptr %100, align 8, !tbaa !9
  %1456 = load i64, ptr %74, align 8, !tbaa !9
  %1457 = mul nsw i64 %1455, %1456
  %1458 = add nsw i64 %1454, %1457
  store i64 %1458, ptr %79, align 8, !tbaa !9
  %1459 = load i64, ptr %105, align 8, !tbaa !9
  store i64 %1459, ptr %80, align 8, !tbaa !9
  %1460 = load i64, ptr %104, align 8, !tbaa !9
  store i64 %1460, ptr %81, align 8, !tbaa !9
  %1461 = load ptr, ptr %51, align 8, !tbaa !5
  %1462 = load i64, ptr %80, align 8, !tbaa !9
  %1463 = getelementptr inbounds float, ptr %1461, i64 %1462
  %1464 = load float, ptr %1463, align 4, !tbaa !14
  %1465 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  store float %1464, ptr %1465, align 4, !tbaa !11
  %1466 = load ptr, ptr %51, align 8, !tbaa !5
  %1467 = load i64, ptr %81, align 8, !tbaa !9
  %1468 = getelementptr inbounds float, ptr %1466, i64 %1467
  %1469 = load float, ptr %1468, align 4, !tbaa !14
  %1470 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  store float %1469, ptr %1470, align 4, !tbaa !20
  %1471 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  %1472 = load float, ptr %1471, align 4, !tbaa !11
  %1473 = load ptr, ptr %34, align 8, !tbaa !5
  %1474 = load i64, ptr %79, align 8, !tbaa !9
  %1475 = getelementptr inbounds %struct.complex, ptr %1473, i64 %1474
  %1476 = getelementptr inbounds %struct.complex, ptr %1475, i32 0, i32 0
  store float %1472, ptr %1476, align 4, !tbaa !11
  %1477 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  %1478 = load float, ptr %1477, align 4, !tbaa !20
  %1479 = load ptr, ptr %34, align 8, !tbaa !5
  %1480 = load i64, ptr %79, align 8, !tbaa !9
  %1481 = getelementptr inbounds %struct.complex, ptr %1479, i64 %1480
  %1482 = getelementptr inbounds %struct.complex, ptr %1481, i32 0, i32 1
  store float %1478, ptr %1482, align 4, !tbaa !20
  br label %1483

1483:                                             ; preds = %1449
  %1484 = load i64, ptr %103, align 8, !tbaa !9
  %1485 = add nsw i64 %1484, 1
  store i64 %1485, ptr %103, align 8, !tbaa !9
  br label %1445, !llvm.loop !45

1486:                                             ; preds = %1445
  br label %1487

1487:                                             ; preds = %1486
  %1488 = load i64, ptr %100, align 8, !tbaa !9
  %1489 = add nsw i64 %1488, 1
  store i64 %1489, ptr %100, align 8, !tbaa !9
  br label %1435, !llvm.loop !46

1490:                                             ; preds = %1435
  br label %1491

1491:                                             ; preds = %1490
  %1492 = load i64, ptr %83, align 8, !tbaa !9
  %1493 = add nsw i64 %1492, 1
  store i64 %1493, ptr %83, align 8, !tbaa !9
  br label %1066, !llvm.loop !47

1494:                                             ; preds = %1066
  br label %1495

1495:                                             ; preds = %1494, %910
  store i32 0, ptr %27, align 4
  store i32 1, ptr %109, align 4
  br label %1496

1496:                                             ; preds = %1495, %283
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  %1497 = load i32, ptr %27, align 4
  ret i32 %1497
}

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

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

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

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

declare double @r_imag(ptr noundef) #2

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 4}
!13 = !{!"float", !7, i64 0}
!14 = !{!13, !13, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}
!20 = !{!12, !13, i64 4}
!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}
!30 = distinct !{!30, !16}
!31 = distinct !{!31, !16}
!32 = distinct !{!32, !16}
!33 = distinct !{!33, !16}
!34 = distinct !{!34, !16}
!35 = distinct !{!35, !16}
!36 = distinct !{!36, !16}
!37 = distinct !{!37, !16}
!38 = distinct !{!38, !16}
!39 = distinct !{!39, !16}
!40 = distinct !{!40, !16}
!41 = distinct !{!41, !16}
!42 = distinct !{!42, !16}
!43 = distinct !{!43, !16}
!44 = distinct !{!44, !16}
!45 = distinct !{!45, !16}
!46 = distinct !{!46, !16}
!47 = distinct !{!47, !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 [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b9 = external hidden global float, align 4
@c_b10 = external hidden global float, align 4
@c__2 = external hidden global i64, align 8

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

59:                                               ; preds = %26
  %60 = load i64, ptr %1, align 8, !tbaa !5
  %61 = icmp slt i64 %60, 3
  br i1 %61, label %.thread, label %62

62:                                               ; preds = %59
  %63 = load i64, ptr %2, align 8, !tbaa !5
  %64 = icmp slt i64 %63, %60
  br i1 %64, label %.thread, label %65

65:                                               ; preds = %62
  %66 = load i64, ptr %3, align 8, !tbaa !5
  %67 = icmp slt i64 %66, 1
  br i1 %67, label %.thread, label %68

68:                                               ; preds = %65
  %69 = load i64, ptr %5, align 8, !tbaa !5
  %70 = icmp slt i64 %69, %63
  br i1 %70, label %.thread, label %71

71:                                               ; preds = %68
  %72 = load i64, ptr %7, align 8, !tbaa !5
  %73 = icmp slt i64 %72, %63
  br i1 %73, label %.thread, label %74

74:                                               ; preds = %71
  %75 = load i64, ptr %9, align 8, !tbaa !5
  %76 = icmp slt i64 %75, %63
  br i1 %76, label %.thread, label %77

77:                                               ; preds = %74
  %78 = load i64, ptr %18, align 8, !tbaa !5
  %79 = icmp slt i64 %78, %63
  br i1 %79, label %.thread, label %81

.thread:                                          ; preds = %77, %74, %71, %68, %65, %62, %59, %26
  %.sink = phi i64 [ -1, %26 ], [ -2, %59 ], [ -3, %62 ], [ -4, %65 ], [ -6, %68 ], [ -8, %71 ], [ -10, %74 ], [ -19, %77 ]
  %.neg = phi i64 [ 1, %26 ], [ 2, %59 ], [ 3, %62 ], [ 4, %65 ], [ 6, %68 ], [ 8, %71 ], [ 10, %74 ], [ 19, %77 ]
  store i64 %.sink, ptr %25, align 8, !tbaa !5
  store i64 %.neg, ptr %27, align 8, !tbaa !5
  %80 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %27) #4
  br label %.loopexit

81:                                               ; preds = %77
  %82 = getelementptr i64, ptr %24, i64 %63
  %.idx677 = shl i64 %63, 4
  %83 = getelementptr i8, ptr %24, i64 %.idx677
  %84 = call i32 @slasdt_(ptr noundef nonnull %2, ptr noundef nonnull %34, ptr noundef nonnull %29, ptr noundef %24, ptr noundef %82, ptr noundef nonnull %83, ptr noundef nonnull %1) #4
  %85 = load i64, ptr %0, align 8, !tbaa !5
  %86 = icmp eq i64 %85, 1
  br i1 %86, label %427, label %87

87:                                               ; preds = %81
  %88 = load i64, ptr %29, align 8, !tbaa !5
  %89 = add nsw i64 %88, 1
  %90 = sdiv i64 %89, 2
  store i64 %88, ptr %27, align 8, !tbaa !5
  %invariant.gep761 = getelementptr i8, ptr %83, i64 -8
  %invariant.gep763 = getelementptr i8, ptr %8, i64 -4
  %.not638765 = icmp sgt i64 %90, %88
  br i1 %.not638765, label %._crit_edge769, label %.lr.ph768

.lr.ph768:                                        ; preds = %87
  %91 = getelementptr i64, ptr %57, i64 %63
  %.pre = load i64, ptr %3, align 8, !tbaa !5
  %92 = shl i64 %39, 3
  %93 = shl i64 %39, 3
  %scevgep1059 = getelementptr i8, ptr %4, i64 -4
  %94 = shl i64 %36, 3
  %95 = shl i64 %39, 3
  %scevgep1093 = getelementptr i8, ptr %6, i64 -8
  %scevgep1095 = getelementptr i8, ptr %6, i64 -8
  %96 = shl i64 %39, 3
  %scevgep1144 = getelementptr i8, ptr %4, i64 -8
  %scevgep1146 = getelementptr i8, ptr %4, i64 -12
  %97 = shl i64 %36, 3
  %stride.check1151 = icmp slt i64 %97, 0
  %stride.check1111 = icmp slt i64 %96, 0
  %stride.check1064 = icmp slt i64 %94, 0
  %stride.check = icmp slt i64 %93, 0
  %invariant.gep1409 = getelementptr i8, ptr %23, i64 4
  %invariant.gep1411 = getelementptr i8, ptr %23, i64 4
  br label %98

98:                                               ; preds = %.lr.ph768, %._crit_edge760
  %99 = phi i64 [ %.pre, %.lr.ph768 ], [ %316, %._crit_edge760 ]
  %.0630766 = phi i64 [ %90, %.lr.ph768 ], [ %378, %._crit_edge760 ]
  %100 = getelementptr inbounds i64, ptr %57, i64 %.0630766
  %101 = load i64, ptr %100, align 8, !tbaa !5
  %102 = getelementptr i64, ptr %91, i64 %.0630766
  %103 = load i64, ptr %102, align 8, !tbaa !5
  store i64 %103, ptr %30, align 8, !tbaa !5
  %gep762 = getelementptr i64, ptr %invariant.gep761, i64 %.0630766
  %104 = load i64, ptr %gep762, align 8, !tbaa !5
  store i64 %104, ptr %31, align 8, !tbaa !5
  %105 = sub i64 %101, %103
  %106 = add i64 %101, 1
  %107 = mul nsw i64 %99, %103
  %.not641682 = icmp sgt i64 %99, 0
  %.not655.not679 = icmp sgt i64 %103, 0
  %or.cond1009 = select i1 %.not641682, i1 %.not655.not679, i1 false
  br i1 %or.cond1009, label %.preheader.us.preheader, label %._crit_edge685

.preheader.us.preheader:                          ; preds = %98
  %108 = shl nuw i64 %107, 1
  %109 = mul i64 %101, -4
  %scevgep1141 = getelementptr i8, ptr %23, i64 %109
  %110 = add i64 %101, 1
  %111 = sub i64 %110, %103
  %smax1142 = call i64 @llvm.smax.i64(i64 %101, i64 %111)
  %112 = add i64 %103, %smax1142
  %113 = sub i64 %101, %103
  %114 = shl i64 %113, 3
  %scevgep1145 = getelementptr i8, ptr %scevgep1144, i64 %114
  %115 = add nsw i64 %99, -1
  %116 = mul i64 %97, %115
  %117 = shl i64 %smax1142, 3
  %118 = getelementptr i8, ptr %scevgep1146, i64 %116
  %scevgep1147 = getelementptr i8, ptr %118, i64 %117
  %119 = add i64 %101, 1
  %120 = sub i64 %119, %103
  %smax1152 = call i64 @llvm.smax.i64(i64 %101, i64 %120)
  %121 = add i64 %103, %smax1152
  %122 = sub i64 %121, %101
  %min.iters.check1155 = icmp ult i64 %122, 8
  %n.vec1158 = and i64 %122, -8
  %ind.end1159 = add i64 %105, %n.vec1158
  %cmp.n1168 = icmp eq i64 %122, %n.vec1158
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.preheader, %._crit_edge.us
  %.0600684.us = phi i64 [ %153, %._crit_edge.us ], [ 1, %.preheader.us.preheader ]
  %.0618683.us = phi i64 [ %.lcssa1022, %._crit_edge.us ], [ %108, %.preheader.us.preheader ]
  %123 = mul nsw i64 %.0600684.us, %36
  %invariant.gep.us = getelementptr %struct.complex, ptr %38, i64 %123
  br i1 %min.iters.check1155, label %scalar.ph1154.preheader, label %vector.memcheck1139

vector.memcheck1139:                              ; preds = %.preheader.us
  %124 = shl i64 %.0618683.us, 2
  %scevgep1140 = getelementptr i8, ptr %23, i64 %124
  %125 = add i64 %112, %.0618683.us
  %126 = shl i64 %125, 2
  %scevgep1143 = getelementptr i8, ptr %scevgep1141, i64 %126
  %bound01148 = icmp ult ptr %scevgep1140, %scevgep1147
  %bound11149 = icmp ult ptr %scevgep1145, %scevgep1143
  %found.conflict1150 = and i1 %bound01148, %bound11149
  %127 = or i1 %found.conflict1150, %stride.check1151
  br i1 %127, label %scalar.ph1154.preheader, label %vector.ph1156

vector.ph1156:                                    ; preds = %vector.memcheck1139
  %ind.end1161 = add i64 %.0618683.us, %n.vec1158
  %invariant.gep1377 = getelementptr i8, ptr %invariant.gep.us, i64 8
  %invariant.gep1379 = getelementptr i8, ptr %invariant.gep.us, i64 16
  %invariant.gep1381 = getelementptr i8, ptr %invariant.gep.us, i64 24
  %invariant.gep1383 = getelementptr i8, ptr %invariant.gep.us, i64 32
  %invariant.gep1385 = getelementptr i8, ptr %invariant.gep.us, i64 40
  %invariant.gep1387 = getelementptr i8, ptr %invariant.gep.us, i64 48
  %invariant.gep1389 = getelementptr i8, ptr %invariant.gep.us, i64 56
  %128 = getelementptr float, ptr %23, i64 %.0618683.us
  br label %vector.body1163

vector.body1163:                                  ; preds = %vector.body1163, %vector.ph1156
  %index1164 = phi i64 [ 0, %vector.ph1156 ], [ %index.next1167, %vector.body1163 ]
  %offset.idx1165 = add i64 %105, %index1164
  %129 = getelementptr %struct.complex, ptr %invariant.gep.us, i64 %offset.idx1165
  %gep1378 = getelementptr %struct.complex, ptr %invariant.gep1377, i64 %offset.idx1165
  %gep1380 = getelementptr %struct.complex, ptr %invariant.gep1379, i64 %offset.idx1165
  %gep1382 = getelementptr %struct.complex, ptr %invariant.gep1381, i64 %offset.idx1165
  %gep1384 = getelementptr %struct.complex, ptr %invariant.gep1383, i64 %offset.idx1165
  %gep1386 = getelementptr %struct.complex, ptr %invariant.gep1385, i64 %offset.idx1165
  %gep1388 = getelementptr %struct.complex, ptr %invariant.gep1387, i64 %offset.idx1165
  %gep1390 = getelementptr %struct.complex, ptr %invariant.gep1389, i64 %offset.idx1165
  %130 = load float, ptr %129, align 4, !tbaa !9, !alias.scope !12
  %131 = load float, ptr %gep1378, align 4, !tbaa !9, !alias.scope !12
  %132 = load float, ptr %gep1380, align 4, !tbaa !9, !alias.scope !12
  %133 = load float, ptr %gep1382, align 4, !tbaa !9, !alias.scope !12
  %134 = insertelement <4 x float> poison, float %130, i64 0
  %135 = insertelement <4 x float> %134, float %131, i64 1
  %136 = insertelement <4 x float> %135, float %132, i64 2
  %137 = insertelement <4 x float> %136, float %133, i64 3
  %138 = load float, ptr %gep1384, align 4, !tbaa !9, !alias.scope !12
  %139 = load float, ptr %gep1386, align 4, !tbaa !9, !alias.scope !12
  %140 = load float, ptr %gep1388, align 4, !tbaa !9, !alias.scope !12
  %141 = load float, ptr %gep1390, align 4, !tbaa !9, !alias.scope !12
  %142 = insertelement <4 x float> poison, float %138, i64 0
  %143 = insertelement <4 x float> %142, float %139, i64 1
  %144 = insertelement <4 x float> %143, float %140, i64 2
  %145 = insertelement <4 x float> %144, float %141, i64 3
  %146 = getelementptr float, ptr %128, i64 %index1164
  %147 = getelementptr i8, ptr %146, i64 16
  store <4 x float> %137, ptr %146, align 4, !tbaa !15, !alias.scope !16, !noalias !12
  store <4 x float> %145, ptr %147, align 4, !tbaa !15, !alias.scope !16, !noalias !12
  %index.next1167 = add nuw i64 %index1164, 8
  %148 = icmp eq i64 %index.next1167, %n.vec1158
  br i1 %148, label %middle.block1153, label %vector.body1163, !llvm.loop !18

middle.block1153:                                 ; preds = %vector.body1163
  br i1 %cmp.n1168, label %._crit_edge.us, label %scalar.ph1154.preheader

scalar.ph1154.preheader:                          ; preds = %middle.block1153, %vector.memcheck1139, %.preheader.us
  %.0592681.us.ph = phi i64 [ %105, %vector.memcheck1139 ], [ %105, %.preheader.us ], [ %ind.end1159, %middle.block1153 ]
  %.1619680.us.ph = phi i64 [ %.0618683.us, %vector.memcheck1139 ], [ %.0618683.us, %.preheader.us ], [ %ind.end1161, %middle.block1153 ]
  br label %scalar.ph1154

scalar.ph1154:                                    ; preds = %scalar.ph1154.preheader, %scalar.ph1154
  %.0592681.us = phi i64 [ %152, %scalar.ph1154 ], [ %.0592681.us.ph, %scalar.ph1154.preheader ]
  %.1619680.us = phi i64 [ %149, %scalar.ph1154 ], [ %.1619680.us.ph, %scalar.ph1154.preheader ]
  %149 = add nsw i64 %.1619680.us, 1
  %gep.us = getelementptr %struct.complex, ptr %invariant.gep.us, i64 %.0592681.us
  %150 = load float, ptr %gep.us, align 4, !tbaa !9
  %151 = getelementptr float, ptr %23, i64 %.1619680.us
  store float %150, ptr %151, align 4, !tbaa !15
  %152 = add nsw i64 %.0592681.us, 1
  %.not655.not.us = icmp slt i64 %152, %101
  br i1 %.not655.not.us, label %scalar.ph1154, label %._crit_edge.us, !llvm.loop !22

._crit_edge.us:                                   ; preds = %scalar.ph1154, %middle.block1153
  %.lcssa1022 = phi i64 [ %ind.end1161, %middle.block1153 ], [ %149, %scalar.ph1154 ]
  %153 = add nuw i64 %.0600684.us, 1
  %exitcond.not = icmp eq i64 %.0600684.us, %99
  br i1 %exitcond.not, label %._crit_edge685, label %.preheader.us, !llvm.loop !23

._crit_edge685:                                   ; preds = %._crit_edge.us, %98
  %gep764 = getelementptr float, ptr %invariant.gep763, i64 %105
  %.idx = shl i64 %107, 3
  %154 = getelementptr i8, ptr %23, i64 %.idx
  %155 = call i32 @f2c_sgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %30, ptr noundef nonnull %3, ptr noundef nonnull %30, ptr noundef nonnull @c_b9, ptr noundef %gep764, ptr noundef nonnull %9, ptr noundef %154, ptr noundef nonnull %30, ptr noundef nonnull @c_b10, ptr noundef %23, ptr noundef nonnull %30) #4
  %156 = load i64, ptr %30, align 8, !tbaa !5
  %157 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %157, ptr %28, align 8, !tbaa !5
  %.not642689 = icmp slt i64 %157, 1
  br i1 %.not642689, label %._crit_edge694, label %.lr.ph693.preheader

.lr.ph693.preheader:                              ; preds = %._crit_edge685
  %158 = shl i64 %156, 1
  %159 = mul i64 %158, %157
  br label %.lr.ph693

.lr.ph693:                                        ; preds = %.lr.ph693.preheader, %._crit_edge
  %160 = phi i64 [ %170, %._crit_edge ], [ %157, %.lr.ph693.preheader ]
  %.1601691 = phi i64 [ %171, %._crit_edge ], [ 1, %.lr.ph693.preheader ]
  %.2620690 = phi i64 [ %.3621.lcssa, %._crit_edge ], [ %159, %.lr.ph693.preheader ]
  %161 = load i64, ptr %30, align 8, !tbaa !5
  %162 = add nsw i64 %161, %105
  %.not654.not686 = icmp sgt i64 %161, 0
  br i1 %.not654.not686, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.lr.ph693
  %163 = mul nsw i64 %.1601691, %36
  %invariant.gep = getelementptr %struct.complex, ptr %38, i64 %163
  br label %164

164:                                              ; preds = %.lr.ph, %164
  %.1593688 = phi i64 [ %105, %.lr.ph ], [ %169, %164 ]
  %.3621687 = phi i64 [ %.2620690, %.lr.ph ], [ %165, %164 ]
  %165 = add nsw i64 %.3621687, 1
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.1593688
  %166 = call double @r_imag(ptr noundef %gep) #4
  %167 = fptrunc double %166 to float
  %168 = getelementptr float, ptr %23, i64 %.3621687
  store float %167, ptr %168, align 4, !tbaa !15
  %169 = add nsw i64 %.1593688, 1
  %.not654.not = icmp slt i64 %169, %162
  br i1 %.not654.not, label %164, label %._crit_edge.loopexit, !llvm.loop !24

._crit_edge.loopexit:                             ; preds = %164
  %.pre967 = load i64, ptr %28, align 8, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.lr.ph693
  %170 = phi i64 [ %160, %.lr.ph693 ], [ %.pre967, %._crit_edge.loopexit ]
  %.3621.lcssa = phi i64 [ %.2620690, %.lr.ph693 ], [ %165, %._crit_edge.loopexit ]
  %171 = add nuw nsw i64 %.1601691, 1
  %.not642.not = icmp slt i64 %.1601691, %170
  br i1 %.not642.not, label %.lr.ph693, label %._crit_edge694.loopexit, !llvm.loop !25

._crit_edge694.loopexit:                          ; preds = %._crit_edge
  %.pre968 = load i64, ptr %30, align 8, !tbaa !5
  %.pre969 = load i64, ptr %3, align 8, !tbaa !5
  br label %._crit_edge694

._crit_edge694:                                   ; preds = %._crit_edge694.loopexit, %._crit_edge685
  %172 = phi i64 [ %.pre969, %._crit_edge694.loopexit ], [ %157, %._crit_edge685 ]
  %173 = phi i64 [ %.pre968, %._crit_edge694.loopexit ], [ %156, %._crit_edge685 ]
  %174 = mul nsw i64 %172, %173
  %.idx643 = shl i64 %174, 3
  %175 = getelementptr i8, ptr %23, i64 %.idx643
  %176 = getelementptr float, ptr %23, i64 %174
  %177 = call i32 @f2c_sgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %30, ptr noundef nonnull %3, ptr noundef nonnull %30, ptr noundef nonnull @c_b9, ptr noundef %gep764, ptr noundef nonnull %9, ptr noundef %175, ptr noundef nonnull %30, ptr noundef nonnull @c_b10, ptr noundef %176, ptr noundef nonnull %30) #4
  %178 = load i64, ptr %30, align 8, !tbaa !5
  %179 = load i64, ptr %3, align 8, !tbaa !5
  %.not644706 = icmp slt i64 %179, 1
  br i1 %.not644706, label %._crit_edge712.thread, label %.lr.ph711

._crit_edge712.thread:                            ; preds = %._crit_edge694
  %180 = load i64, ptr %31, align 8, !tbaa !5
  %181 = mul nsw i64 %180, %179
  br label %._crit_edge727

.lr.ph711:                                        ; preds = %._crit_edge694
  %182 = add i64 %178, %105
  %.not653.not695 = icmp sgt i64 %178, 0
  br i1 %.not653.not695, label %.lr.ph700.us.preheader, label %._crit_edge712.thread981

._crit_edge712.thread981:                         ; preds = %.lr.ph711
  %183 = load i64, ptr %31, align 8, !tbaa !5
  %184 = mul nsw i64 %183, %179
  br label %.lr.ph726

.lr.ph700.us.preheader:                           ; preds = %.lr.ph711
  %185 = mul nuw nsw i64 %179, %178
  %186 = add i64 %103, -1
  %187 = add i64 %101, 1
  %188 = sub i64 %187, %103
  %smax = call i64 @llvm.smax.i64(i64 %182, i64 %188)
  %189 = add i64 %186, %smax
  %190 = sub i64 %189, %101
  %191 = shl i64 %101, 3
  %192 = add i64 %191, -8
  %193 = shl i64 %103, 3
  %194 = sub i64 %192, %193
  %195 = add i64 %191, -4
  %196 = sub i64 %195, %193
  %197 = sub i64 %191, %193
  %scevgep1094 = getelementptr i8, ptr %scevgep1093, i64 %197
  %198 = add nsw i64 %179, -1
  %199 = mul i64 %96, %198
  %200 = add i64 %101, 1
  %201 = sub i64 %200, %103
  %smax1096 = call i64 @llvm.smax.i64(i64 %182, i64 %201)
  %202 = shl i64 %smax1096, 3
  %203 = getelementptr i8, ptr %scevgep1095, i64 %199
  %scevgep1097 = getelementptr i8, ptr %203, i64 %202
  %204 = mul i64 %101, -4
  %scevgep1099 = getelementptr i8, ptr %23, i64 %204
  %205 = add i64 %103, %smax1096
  %scevgep1102 = getelementptr i8, ptr %23, i64 %204
  %206 = add i64 %103, %smax1096
  %207 = add i64 %101, 1
  %208 = sub i64 %207, %103
  %smax1113 = call i64 @llvm.smax.i64(i64 %182, i64 %208)
  %209 = add i64 %103, %smax1113
  %210 = sub i64 %209, %101
  %min.iters.check1116 = icmp ult i64 %210, 24
  %211 = getelementptr i8, ptr %6, i64 %196
  %212 = getelementptr i8, ptr %6, i64 %194
  %mul.result1086 = shl i64 %190, 3
  %mul.result1090 = shl i64 %190, 3
  %mul.overflow1091 = icmp ugt i64 %190, 2305843009213693951
  %n.vec1119 = and i64 %210, -4
  %ind.end1124 = add i64 %105, %n.vec1119
  %cmp.n1138 = icmp eq i64 %210, %n.vec1119
  br label %.lr.ph700.us

.lr.ph700.us:                                     ; preds = %.lr.ph700.us.preheader, %._crit_edge701.us
  %indvar1082 = phi i64 [ 0, %.lr.ph700.us.preheader ], [ %indvar.next1083, %._crit_edge701.us ]
  %.0583709.us = phi i64 [ 0, %.lr.ph700.us.preheader ], [ %.lcssa1025, %._crit_edge701.us ]
  %.0584708.us = phi i64 [ %185, %.lr.ph700.us.preheader ], [ %.lcssa1024, %._crit_edge701.us ]
  %.2602707.us = phi i64 [ 1, %.lr.ph700.us.preheader ], [ %244, %._crit_edge701.us ]
  %213 = mul nsw i64 %.2602707.us, %39
  %invariant.gep704.us = getelementptr %struct.complex, ptr %41, i64 %213
  br i1 %min.iters.check1116, label %scalar.ph1115.preheader, label %vector.scevcheck1081

vector.scevcheck1081:                             ; preds = %.lr.ph700.us
  %214 = mul i64 %95, %indvar1082
  %scevgep1088 = getelementptr i8, ptr %211, i64 %214
  %scevgep1084 = getelementptr i8, ptr %212, i64 %214
  %215 = getelementptr i8, ptr %scevgep1084, i64 %mul.result1086
  %216 = icmp ult ptr %215, %scevgep1084
  %217 = getelementptr i8, ptr %scevgep1088, i64 %mul.result1090
  %218 = icmp ult ptr %217, %scevgep1088
  %219 = or i1 %218, %mul.overflow1091
  %220 = or i1 %216, %219
  br i1 %220, label %scalar.ph1115.preheader, label %vector.memcheck1092

vector.memcheck1092:                              ; preds = %vector.scevcheck1081
  %221 = shl i64 %.0584708.us, 2
  %scevgep1098 = getelementptr i8, ptr %23, i64 %221
  %222 = add i64 %205, %.0584708.us
  %223 = shl i64 %222, 2
  %scevgep1100 = getelementptr i8, ptr %scevgep1099, i64 %223
  %224 = shl i64 %.0583709.us, 2
  %scevgep1101 = getelementptr i8, ptr %23, i64 %224
  %225 = add i64 %206, %.0583709.us
  %226 = shl i64 %225, 2
  %scevgep1103 = getelementptr i8, ptr %scevgep1102, i64 %226
  %bound01104 = icmp ult ptr %scevgep1094, %scevgep1100
  %bound11105 = icmp ult ptr %scevgep1098, %scevgep1097
  %found.conflict1106 = and i1 %bound01104, %bound11105
  %bound01108 = icmp ult ptr %scevgep1094, %scevgep1103
  %bound11109 = icmp ult ptr %scevgep1101, %scevgep1097
  %found.conflict1110 = and i1 %bound01108, %bound11109
  %227 = or i1 %found.conflict1110, %stride.check1111
  %conflict.rdx1112 = or i1 %found.conflict1106, %227
  br i1 %conflict.rdx1112, label %scalar.ph1115.preheader, label %vector.ph1117

vector.ph1117:                                    ; preds = %vector.memcheck1092
  %ind.end1120 = add i64 %.0583709.us, %n.vec1119
  %ind.end1122 = add i64 %.0584708.us, %n.vec1119
  %228 = getelementptr float, ptr %23, i64 %.0583709.us
  %229 = getelementptr float, ptr %23, i64 %.0584708.us
  %invariant.gep1391 = getelementptr i8, ptr %invariant.gep704.us, i64 16
  br label %vector.body1126

vector.body1126:                                  ; preds = %vector.body1126, %vector.ph1117
  %index1127 = phi i64 [ 0, %vector.ph1117 ], [ %index.next1137, %vector.body1126 ]
  %offset.idx1130 = add i64 %105, %index1127
  %230 = getelementptr float, ptr %228, i64 %index1127
  %231 = getelementptr i8, ptr %230, i64 8
  %wide.load1131 = load <2 x float>, ptr %230, align 4, !tbaa !15, !alias.scope !26
  %wide.load1132 = load <2 x float>, ptr %231, align 4, !tbaa !15, !alias.scope !26
  %232 = getelementptr float, ptr %229, i64 %index1127
  %233 = getelementptr i8, ptr %232, i64 8
  %wide.load1133 = load <2 x float>, ptr %232, align 4, !tbaa !15, !alias.scope !29
  %wide.load1134 = load <2 x float>, ptr %233, align 4, !tbaa !15, !alias.scope !29
  %234 = getelementptr %struct.complex, ptr %invariant.gep704.us, i64 %offset.idx1130
  %gep1392 = getelementptr %struct.complex, ptr %invariant.gep1391, i64 %offset.idx1130
  %interleaved.vec1135 = shufflevector <2 x float> %wide.load1131, <2 x float> %wide.load1133, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec1135, ptr %234, align 4, !tbaa !15
  %interleaved.vec1136 = shufflevector <2 x float> %wide.load1132, <2 x float> %wide.load1134, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec1136, ptr %gep1392, align 4, !tbaa !15
  %index.next1137 = add nuw i64 %index1127, 4
  %235 = icmp eq i64 %index.next1137, %n.vec1119
  br i1 %235, label %middle.block1114, label %vector.body1126, !llvm.loop !31

middle.block1114:                                 ; preds = %vector.body1126
  br i1 %cmp.n1138, label %._crit_edge701.us, label %scalar.ph1115.preheader

scalar.ph1115.preheader:                          ; preds = %middle.block1114, %vector.memcheck1092, %vector.scevcheck1081, %.lr.ph700.us
  %.1698.us.ph = phi i64 [ %.0583709.us, %vector.memcheck1092 ], [ %.0583709.us, %vector.scevcheck1081 ], [ %.0583709.us, %.lr.ph700.us ], [ %ind.end1120, %middle.block1114 ]
  %.1585697.us.ph = phi i64 [ %.0584708.us, %vector.memcheck1092 ], [ %.0584708.us, %vector.scevcheck1081 ], [ %.0584708.us, %.lr.ph700.us ], [ %ind.end1122, %middle.block1114 ]
  %.2594696.us.ph = phi i64 [ %105, %vector.memcheck1092 ], [ %105, %vector.scevcheck1081 ], [ %105, %.lr.ph700.us ], [ %ind.end1124, %middle.block1114 ]
  br label %scalar.ph1115

scalar.ph1115:                                    ; preds = %scalar.ph1115.preheader, %scalar.ph1115
  %.1698.us = phi i64 [ %236, %scalar.ph1115 ], [ %.1698.us.ph, %scalar.ph1115.preheader ]
  %.1585697.us = phi i64 [ %237, %scalar.ph1115 ], [ %.1585697.us.ph, %scalar.ph1115.preheader ]
  %.2594696.us = phi i64 [ %243, %scalar.ph1115 ], [ %.2594696.us.ph, %scalar.ph1115.preheader ]
  %236 = add nsw i64 %.1698.us, 1
  %237 = add nsw i64 %.1585697.us, 1
  %238 = getelementptr float, ptr %23, i64 %.1698.us
  %239 = load float, ptr %238, align 4, !tbaa !15
  %240 = getelementptr float, ptr %23, i64 %.1585697.us
  %241 = load float, ptr %240, align 4, !tbaa !15
  %gep705.us = getelementptr %struct.complex, ptr %invariant.gep704.us, i64 %.2594696.us
  store float %239, ptr %gep705.us, align 4, !tbaa !9
  %242 = getelementptr inbounds i8, ptr %gep705.us, i64 4
  store float %241, ptr %242, align 4, !tbaa !32
  %243 = add nsw i64 %.2594696.us, 1
  %.not653.not.us = icmp slt i64 %243, %182
  br i1 %.not653.not.us, label %scalar.ph1115, label %._crit_edge701.us, !llvm.loop !33

._crit_edge701.us:                                ; preds = %scalar.ph1115, %middle.block1114
  %.lcssa1025 = phi i64 [ %ind.end1120, %middle.block1114 ], [ %236, %scalar.ph1115 ]
  %.lcssa1024 = phi i64 [ %ind.end1122, %middle.block1114 ], [ %237, %scalar.ph1115 ]
  %244 = add nuw i64 %.2602707.us, 1
  %exitcond953.not = icmp eq i64 %.2602707.us, %179
  %indvar.next1083 = add i64 %indvar1082, 1
  br i1 %exitcond953.not, label %._crit_edge712, label %.lr.ph700.us, !llvm.loop !34

._crit_edge712:                                   ; preds = %._crit_edge701.us
  %245 = load i64, ptr %31, align 8, !tbaa !5
  %246 = mul nsw i64 %245, %179
  br i1 %.not644706, label %._crit_edge727, label %.lr.ph726

.lr.ph726:                                        ; preds = %._crit_edge712.thread981, %._crit_edge712
  %247 = phi i64 [ %184, %._crit_edge712.thread981 ], [ %246, %._crit_edge712 ]
  %248 = phi i64 [ %183, %._crit_edge712.thread981 ], [ %245, %._crit_edge712 ]
  %249 = add i64 %248, %101
  %.not652713.not = icmp slt i64 %101, %249
  br i1 %.not652713.not, label %.lr.ph717.preheader, label %._crit_edge727

.lr.ph717.preheader:                              ; preds = %.lr.ph726
  %250 = shl i64 %247, 1
  %251 = add i64 %106, %248
  %252 = shl i64 %248, 2
  %scevgep1056 = getelementptr i8, ptr %23, i64 %252
  %253 = shl i64 %101, 3
  %scevgep1058 = getelementptr i8, ptr %4, i64 %253
  %254 = add nsw i64 %179, -1
  %255 = mul i64 %94, %254
  %256 = shl i64 %248, 3
  %257 = getelementptr i8, ptr %scevgep1059, i64 %255
  %258 = getelementptr i8, ptr %257, i64 %256
  %scevgep1060 = getelementptr i8, ptr %258, i64 %253
  %min.iters.check1067 = icmp ult i64 %248, 8
  %n.vec1070 = and i64 %248, -8
  %ind.end1071 = add i64 %106, %n.vec1070
  %cmp.n1080 = icmp eq i64 %248, %n.vec1070
  br label %.lr.ph717

.lr.ph717:                                        ; preds = %.lr.ph717.preheader, %._crit_edge718
  %.3603724 = phi i64 [ %287, %._crit_edge718 ], [ 1, %.lr.ph717.preheader ]
  %.4622723 = phi i64 [ %.lcssa1026, %._crit_edge718 ], [ %250, %.lr.ph717.preheader ]
  %259 = mul nsw i64 %.3603724, %36
  %invariant.gep720 = getelementptr %struct.complex, ptr %38, i64 %259
  br i1 %min.iters.check1067, label %scalar.ph1066.preheader, label %vector.memcheck1054

vector.memcheck1054:                              ; preds = %.lr.ph717
  %260 = shl i64 %.4622723, 2
  %scevgep1055 = getelementptr i8, ptr %23, i64 %260
  %scevgep1057 = getelementptr i8, ptr %scevgep1056, i64 %260
  %bound01061 = icmp ult ptr %scevgep1055, %scevgep1060
  %bound11062 = icmp ult ptr %scevgep1058, %scevgep1057
  %found.conflict1063 = and i1 %bound01061, %bound11062
  %261 = or i1 %found.conflict1063, %stride.check1064
  br i1 %261, label %scalar.ph1066.preheader, label %vector.ph1068

vector.ph1068:                                    ; preds = %vector.memcheck1054
  %ind.end1073 = add i64 %.4622723, %n.vec1070
  %invariant.gep1393 = getelementptr i8, ptr %invariant.gep720, i64 8
  %invariant.gep1395 = getelementptr i8, ptr %invariant.gep720, i64 16
  %invariant.gep1397 = getelementptr i8, ptr %invariant.gep720, i64 24
  %invariant.gep1399 = getelementptr i8, ptr %invariant.gep720, i64 32
  %invariant.gep1401 = getelementptr i8, ptr %invariant.gep720, i64 40
  %invariant.gep1403 = getelementptr i8, ptr %invariant.gep720, i64 48
  %invariant.gep1405 = getelementptr i8, ptr %invariant.gep720, i64 56
  %262 = getelementptr float, ptr %23, i64 %.4622723
  br label %vector.body1075

vector.body1075:                                  ; preds = %vector.body1075, %vector.ph1068
  %index1076 = phi i64 [ 0, %vector.ph1068 ], [ %index.next1079, %vector.body1075 ]
  %offset.idx1077 = add i64 %106, %index1076
  %263 = getelementptr %struct.complex, ptr %invariant.gep720, i64 %offset.idx1077
  %gep1394 = getelementptr %struct.complex, ptr %invariant.gep1393, i64 %offset.idx1077
  %gep1396 = getelementptr %struct.complex, ptr %invariant.gep1395, i64 %offset.idx1077
  %gep1398 = getelementptr %struct.complex, ptr %invariant.gep1397, i64 %offset.idx1077
  %gep1400 = getelementptr %struct.complex, ptr %invariant.gep1399, i64 %offset.idx1077
  %gep1402 = getelementptr %struct.complex, ptr %invariant.gep1401, i64 %offset.idx1077
  %gep1404 = getelementptr %struct.complex, ptr %invariant.gep1403, i64 %offset.idx1077
  %gep1406 = getelementptr %struct.complex, ptr %invariant.gep1405, i64 %offset.idx1077
  %264 = load float, ptr %263, align 4, !tbaa !9, !alias.scope !35
  %265 = load float, ptr %gep1394, align 4, !tbaa !9, !alias.scope !35
  %266 = load float, ptr %gep1396, align 4, !tbaa !9, !alias.scope !35
  %267 = load float, ptr %gep1398, align 4, !tbaa !9, !alias.scope !35
  %268 = insertelement <4 x float> poison, float %264, i64 0
  %269 = insertelement <4 x float> %268, float %265, i64 1
  %270 = insertelement <4 x float> %269, float %266, i64 2
  %271 = insertelement <4 x float> %270, float %267, i64 3
  %272 = load float, ptr %gep1400, align 4, !tbaa !9, !alias.scope !35
  %273 = load float, ptr %gep1402, align 4, !tbaa !9, !alias.scope !35
  %274 = load float, ptr %gep1404, align 4, !tbaa !9, !alias.scope !35
  %275 = load float, ptr %gep1406, align 4, !tbaa !9, !alias.scope !35
  %276 = insertelement <4 x float> poison, float %272, i64 0
  %277 = insertelement <4 x float> %276, float %273, i64 1
  %278 = insertelement <4 x float> %277, float %274, i64 2
  %279 = insertelement <4 x float> %278, float %275, i64 3
  %280 = getelementptr float, ptr %262, i64 %index1076
  %281 = getelementptr i8, ptr %280, i64 16
  store <4 x float> %271, ptr %280, align 4, !tbaa !15, !alias.scope !38, !noalias !35
  store <4 x float> %279, ptr %281, align 4, !tbaa !15, !alias.scope !38, !noalias !35
  %index.next1079 = add nuw i64 %index1076, 8
  %282 = icmp eq i64 %index.next1079, %n.vec1070
  br i1 %282, label %middle.block1065, label %vector.body1075, !llvm.loop !40

middle.block1065:                                 ; preds = %vector.body1075
  br i1 %cmp.n1080, label %._crit_edge718, label %scalar.ph1066.preheader

scalar.ph1066.preheader:                          ; preds = %middle.block1065, %vector.memcheck1054, %.lr.ph717
  %.3595715.ph = phi i64 [ %106, %vector.memcheck1054 ], [ %106, %.lr.ph717 ], [ %ind.end1071, %middle.block1065 ]
  %.5623714.ph = phi i64 [ %.4622723, %vector.memcheck1054 ], [ %.4622723, %.lr.ph717 ], [ %ind.end1073, %middle.block1065 ]
  br label %scalar.ph1066

scalar.ph1066:                                    ; preds = %scalar.ph1066.preheader, %scalar.ph1066
  %.3595715 = phi i64 [ %286, %scalar.ph1066 ], [ %.3595715.ph, %scalar.ph1066.preheader ]
  %.5623714 = phi i64 [ %283, %scalar.ph1066 ], [ %.5623714.ph, %scalar.ph1066.preheader ]
  %283 = add nsw i64 %.5623714, 1
  %gep721 = getelementptr %struct.complex, ptr %invariant.gep720, i64 %.3595715
  %284 = load float, ptr %gep721, align 4, !tbaa !9
  %285 = getelementptr float, ptr %23, i64 %.5623714
  store float %284, ptr %285, align 4, !tbaa !15
  %286 = add i64 %.3595715, 1
  %exitcond954.not = icmp eq i64 %286, %251
  br i1 %exitcond954.not, label %._crit_edge718, label %scalar.ph1066, !llvm.loop !41

._crit_edge718:                                   ; preds = %scalar.ph1066, %middle.block1065
  %.lcssa1026 = phi i64 [ %ind.end1073, %middle.block1065 ], [ %283, %scalar.ph1066 ]
  %287 = add nuw i64 %.3603724, 1
  %exitcond955.not = icmp eq i64 %.3603724, %179
  br i1 %exitcond955.not, label %._crit_edge727, label %.lr.ph717, !llvm.loop !42

._crit_edge727:                                   ; preds = %._crit_edge718, %.lr.ph726, %._crit_edge712.thread, %._crit_edge712
  %288 = phi i64 [ %181, %._crit_edge712.thread ], [ %246, %._crit_edge712 ], [ %247, %.lr.ph726 ], [ %247, %._crit_edge718 ]
  %289 = getelementptr inbounds float, ptr %8, i64 %101
  %.idx646 = shl i64 %288, 3
  %290 = getelementptr i8, ptr %23, i64 %.idx646
  %291 = call i32 @f2c_sgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %31, ptr noundef nonnull %3, ptr noundef nonnull %31, ptr noundef nonnull @c_b9, ptr noundef %289, ptr noundef nonnull %9, ptr noundef %290, ptr noundef nonnull %31, ptr noundef nonnull @c_b10, ptr noundef %23, ptr noundef nonnull %31) #4
  %292 = load i64, ptr %31, align 8, !tbaa !5
  %293 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %293, ptr %28, align 8, !tbaa !5
  %.not647737 = icmp slt i64 %293, 1
  br i1 %.not647737, label %._crit_edge742, label %.lr.ph741.preheader

.lr.ph741.preheader:                              ; preds = %._crit_edge727
  %294 = shl i64 %292, 1
  %295 = mul i64 %294, %293
  br label %.lr.ph741

.lr.ph741:                                        ; preds = %.lr.ph741.preheader, %._crit_edge733
  %296 = phi i64 [ %307, %._crit_edge733 ], [ %293, %.lr.ph741.preheader ]
  %.4604739 = phi i64 [ %308, %._crit_edge733 ], [ 1, %.lr.ph741.preheader ]
  %.6624738 = phi i64 [ %.7625.lcssa, %._crit_edge733 ], [ %295, %.lr.ph741.preheader ]
  %297 = load i64, ptr %31, align 8, !tbaa !5
  %298 = add i64 %297, %101
  %.not651728.not = icmp slt i64 %101, %298
  br i1 %.not651728.not, label %.lr.ph732, label %._crit_edge733

.lr.ph732:                                        ; preds = %.lr.ph741
  %299 = mul nsw i64 %.4604739, %36
  %invariant.gep735 = getelementptr %struct.complex, ptr %38, i64 %299
  %300 = add i64 %106, %297
  br label %301

301:                                              ; preds = %.lr.ph732, %301
  %.4596730 = phi i64 [ %106, %.lr.ph732 ], [ %306, %301 ]
  %.7625729 = phi i64 [ %.6624738, %.lr.ph732 ], [ %302, %301 ]
  %302 = add nsw i64 %.7625729, 1
  %gep736 = getelementptr %struct.complex, ptr %invariant.gep735, i64 %.4596730
  %303 = call double @r_imag(ptr noundef %gep736) #4
  %304 = fptrunc double %303 to float
  %305 = getelementptr float, ptr %23, i64 %.7625729
  store float %304, ptr %305, align 4, !tbaa !15
  %306 = add i64 %.4596730, 1
  %exitcond956.not = icmp eq i64 %306, %300
  br i1 %exitcond956.not, label %._crit_edge733.loopexit, label %301, !llvm.loop !43

._crit_edge733.loopexit:                          ; preds = %301
  %.pre970 = load i64, ptr %28, align 8, !tbaa !5
  br label %._crit_edge733

._crit_edge733:                                   ; preds = %._crit_edge733.loopexit, %.lr.ph741
  %307 = phi i64 [ %296, %.lr.ph741 ], [ %.pre970, %._crit_edge733.loopexit ]
  %.7625.lcssa = phi i64 [ %.6624738, %.lr.ph741 ], [ %302, %._crit_edge733.loopexit ]
  %308 = add nuw nsw i64 %.4604739, 1
  %.not647.not = icmp slt i64 %.4604739, %307
  br i1 %.not647.not, label %.lr.ph741, label %._crit_edge742.loopexit, !llvm.loop !44

._crit_edge742.loopexit:                          ; preds = %._crit_edge733
  %.pre971 = load i64, ptr %31, align 8, !tbaa !5
  %.pre972 = load i64, ptr %3, align 8, !tbaa !5
  br label %._crit_edge742

._crit_edge742:                                   ; preds = %._crit_edge742.loopexit, %._crit_edge727
  %309 = phi i64 [ %.pre972, %._crit_edge742.loopexit ], [ %293, %._crit_edge727 ]
  %310 = phi i64 [ %.pre971, %._crit_edge742.loopexit ], [ %292, %._crit_edge727 ]
  %311 = mul nsw i64 %309, %310
  %.idx648 = shl i64 %311, 3
  %312 = getelementptr i8, ptr %23, i64 %.idx648
  %313 = getelementptr float, ptr %23, i64 %311
  %314 = call i32 @f2c_sgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %31, ptr noundef nonnull %3, ptr noundef nonnull %31, ptr noundef nonnull @c_b9, ptr noundef %289, ptr noundef nonnull %9, ptr noundef %312, ptr noundef nonnull %31, ptr noundef nonnull @c_b10, ptr noundef %313, ptr noundef nonnull %31) #4
  %315 = load i64, ptr %31, align 8, !tbaa !5
  %316 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %316, ptr %28, align 8, !tbaa !5
  %.not649754 = icmp sgt i64 %316, 0
  %317 = add i64 %315, %101
  %.not650743.not = icmp slt i64 %101, %317
  %or.cond1010 = select i1 %.not649754, i1 %.not650743.not, i1 false
  br i1 %or.cond1010, label %.lr.ph748.preheader, label %._crit_edge760

.lr.ph748.preheader:                              ; preds = %._crit_edge742
  %318 = mul nsw i64 %316, %315
  %319 = add i64 %315, -1
  %320 = shl i64 %101, 3
  %321 = or disjoint i64 %320, 4
  %scevgep1033 = getelementptr i8, ptr %6, i64 %320
  %322 = add nsw i64 %316, -1
  %323 = mul i64 %93, %322
  %324 = shl i64 %315, 3
  %325 = getelementptr i8, ptr %6, i64 %323
  %326 = getelementptr i8, ptr %325, i64 %324
  %scevgep1034 = getelementptr i8, ptr %326, i64 %320
  %327 = shl i64 %315, 2
  %scevgep1036 = getelementptr i8, ptr %23, i64 %327
  %328 = mul i64 %327, %316
  %scevgep1038 = getelementptr i8, ptr %23, i64 %328
  %min.iters.check = icmp ult i64 %315, 24
  %329 = getelementptr i8, ptr %6, i64 %321
  %330 = getelementptr i8, ptr %6, i64 %320
  %mul.result = shl i64 %319, 3
  %mul.result1031 = shl i64 %319, 3
  %mul.overflow1032 = icmp ugt i64 %319, 2305843009213693951
  %bound01039 = icmp ult ptr %scevgep1033, %scevgep1038
  %bound11040 = icmp ugt ptr %scevgep1034, %23
  %found.conflict1041 = and i1 %bound01039, %bound11040
  %331 = or i64 %93, %327
  %332 = icmp slt i64 %331, 0
  %333 = or i1 %found.conflict1041, %332
  %n.vec = and i64 %315, 4611686018427387900
  %ind.end1046 = add i64 %106, %n.vec
  %cmp.n = icmp eq i64 %315, %n.vec
  br label %.lr.ph748

.lr.ph748:                                        ; preds = %.lr.ph748.preheader, %._crit_edge749
  %indvar = phi i64 [ 0, %.lr.ph748.preheader ], [ %indvar.next, %._crit_edge749 ]
  %.2757 = phi i64 [ 0, %.lr.ph748.preheader ], [ %337, %._crit_edge749 ]
  %.2586756 = phi i64 [ %318, %.lr.ph748.preheader ], [ %.lcssa1028, %._crit_edge749 ]
  %.5605755 = phi i64 [ 1, %.lr.ph748.preheader ], [ %377, %._crit_edge749 ]
  %334 = add i64 %315, %.2757
  %335 = add i64 %319, %.2757
  %336 = mul nsw i64 %.5605755, %39
  %invariant.gep752 = getelementptr %struct.complex, ptr %41, i64 %336
  %337 = add i64 %315, %.2757
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph748
  %338 = mul i64 %92, %indvar
  %scevgep1029 = getelementptr i8, ptr %329, i64 %338
  %scevgep = getelementptr i8, ptr %330, i64 %338
  %339 = getelementptr i8, ptr %scevgep, i64 %mul.result
  %340 = icmp ult ptr %339, %scevgep
  %341 = getelementptr i8, ptr %scevgep1029, i64 %mul.result1031
  %342 = icmp ult ptr %341, %scevgep1029
  %343 = or i1 %342, %mul.overflow1032
  %344 = or i1 %340, %343
  br i1 %344, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %vector.scevcheck
  %345 = shl i64 %.2586756, 2
  %scevgep1035 = getelementptr i8, ptr %23, i64 %345
  %scevgep1037 = getelementptr i8, ptr %scevgep1036, i64 %345
  %bound0 = icmp ult ptr %scevgep1033, %scevgep1037
  %bound1 = icmp ult ptr %scevgep1035, %scevgep1034
  %found.conflict = and i1 %bound0, %bound1
  %346 = or i1 %found.conflict, %stride.check
  %conflict.rdx = or i1 %346, %333
  br i1 %conflict.rdx, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %ind.end = add i64 %.2757, %n.vec
  %ind.end1044 = add i64 %.2586756, %n.vec
  %347 = getelementptr float, ptr %23, i64 %.2757
  %348 = getelementptr float, ptr %23, i64 %.2586756
  %invariant.gep1407 = getelementptr i8, ptr %invariant.gep752, i64 16
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx1049 = add i64 %106, %index
  %349 = getelementptr float, ptr %347, i64 %index
  %350 = getelementptr i8, ptr %349, i64 8
  %wide.load = load <2 x float>, ptr %349, align 4, !tbaa !15, !alias.scope !45
  %wide.load1050 = load <2 x float>, ptr %350, align 4, !tbaa !15, !alias.scope !45
  %351 = getelementptr float, ptr %348, i64 %index
  %352 = getelementptr i8, ptr %351, i64 8
  %wide.load1051 = load <2 x float>, ptr %351, align 4, !tbaa !15, !alias.scope !48
  %wide.load1052 = load <2 x float>, ptr %352, align 4, !tbaa !15, !alias.scope !48
  %353 = getelementptr %struct.complex, ptr %invariant.gep752, i64 %offset.idx1049
  %gep1408 = getelementptr %struct.complex, ptr %invariant.gep1407, i64 %offset.idx1049
  %interleaved.vec = shufflevector <2 x float> %wide.load, <2 x float> %wide.load1051, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec, ptr %353, align 4, !tbaa !15
  %interleaved.vec1053 = shufflevector <2 x float> %wide.load1050, <2 x float> %wide.load1052, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec1053, ptr %gep1408, align 4, !tbaa !15
  %index.next = add nuw i64 %index, 4
  %354 = icmp eq i64 %index.next, %n.vec
  br i1 %354, label %middle.block, label %vector.body, !llvm.loop !50

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

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %vector.scevcheck, %.lr.ph748
  %.3746.ph = phi i64 [ %.2757, %vector.memcheck ], [ %.2757, %vector.scevcheck ], [ %.2757, %.lr.ph748 ], [ %ind.end, %middle.block ]
  %.3587745.ph = phi i64 [ %.2586756, %vector.memcheck ], [ %.2586756, %vector.scevcheck ], [ %.2586756, %.lr.ph748 ], [ %ind.end1044, %middle.block ]
  %.5597744.ph = phi i64 [ %106, %vector.memcheck ], [ %106, %vector.scevcheck ], [ %106, %.lr.ph748 ], [ %ind.end1046, %middle.block ]
  %355 = sub i64 %334, %.3746.ph
  %xtraiter = and i64 %355, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %356 = add i64 %.3746.ph, 1
  %357 = add nsw i64 %.3587745.ph, 1
  %358 = getelementptr float, ptr %23, i64 %.3746.ph
  %359 = load float, ptr %358, align 4, !tbaa !15
  %360 = getelementptr float, ptr %23, i64 %.3587745.ph
  %361 = load float, ptr %360, align 4, !tbaa !15
  %gep753.prol = getelementptr %struct.complex, ptr %invariant.gep752, i64 %.5597744.ph
  store float %359, ptr %gep753.prol, align 4, !tbaa !9
  %362 = getelementptr inbounds i8, ptr %gep753.prol, i64 4
  store float %361, ptr %362, align 4, !tbaa !32
  %363 = add nsw i64 %.5597744.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.lcssa1353.unr = phi i64 [ poison, %scalar.ph.preheader ], [ %357, %scalar.ph.prol ]
  %.3746.unr = phi i64 [ %.3746.ph, %scalar.ph.preheader ], [ %356, %scalar.ph.prol ]
  %.3587745.unr = phi i64 [ %.3587745.ph, %scalar.ph.preheader ], [ %357, %scalar.ph.prol ]
  %.5597744.unr = phi i64 [ %.5597744.ph, %scalar.ph.preheader ], [ %363, %scalar.ph.prol ]
  %364 = icmp eq i64 %335, %.3746.ph
  br i1 %364, label %._crit_edge749, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.3746 = phi i64 [ %370, %scalar.ph ], [ %.3746.unr, %scalar.ph.prol.loopexit ]
  %.3587745 = phi i64 [ %371, %scalar.ph ], [ %.3587745.unr, %scalar.ph.prol.loopexit ]
  %.5597744 = phi i64 [ %376, %scalar.ph ], [ %.5597744.unr, %scalar.ph.prol.loopexit ]
  %365 = getelementptr float, ptr %23, i64 %.3746
  %366 = load float, ptr %365, align 4, !tbaa !15
  %367 = getelementptr float, ptr %23, i64 %.3587745
  %368 = load float, ptr %367, align 4, !tbaa !15
  %gep753 = getelementptr %struct.complex, ptr %invariant.gep752, i64 %.5597744
  store float %366, ptr %gep753, align 4, !tbaa !9
  %369 = getelementptr inbounds i8, ptr %gep753, i64 4
  store float %368, ptr %369, align 4, !tbaa !32
  %370 = add i64 %.3746, 2
  %371 = add nsw i64 %.3587745, 2
  %gep1410 = getelementptr float, ptr %invariant.gep1409, i64 %.3746
  %372 = load float, ptr %gep1410, align 4, !tbaa !15
  %gep1412 = getelementptr float, ptr %invariant.gep1411, i64 %.3587745
  %373 = load float, ptr %gep1412, align 4, !tbaa !15
  %374 = getelementptr %struct.complex, ptr %invariant.gep752, i64 %.5597744
  %gep753.1 = getelementptr i8, ptr %374, i64 8
  store float %372, ptr %gep753.1, align 4, !tbaa !9
  %375 = getelementptr i8, ptr %374, i64 12
  store float %373, ptr %375, align 4, !tbaa !32
  %376 = add nsw i64 %.5597744, 2
  %exitcond957.not.1 = icmp eq i64 %370, %337
  br i1 %exitcond957.not.1, label %._crit_edge749, label %scalar.ph, !llvm.loop !51

._crit_edge749:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %.lcssa1028 = phi i64 [ %ind.end1044, %middle.block ], [ %.lcssa1353.unr, %scalar.ph.prol.loopexit ], [ %371, %scalar.ph ]
  %377 = add nuw i64 %.5605755, 1
  %exitcond958.not = icmp eq i64 %.5605755, %316
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond958.not, label %._crit_edge760, label %.lr.ph748, !llvm.loop !52

._crit_edge760:                                   ; preds = %._crit_edge749, %._crit_edge742
  %378 = add nsw i64 %.0630766, 1
  %379 = load i64, ptr %27, align 8, !tbaa !5
  %.not638.not = icmp slt i64 %.0630766, %379
  br i1 %.not638.not, label %98, label %._crit_edge769.loopexit, !llvm.loop !53

._crit_edge769.loopexit:                          ; preds = %._crit_edge760
  %.pre973 = load i64, ptr %29, align 8, !tbaa !5
  br label %._crit_edge769

._crit_edge769:                                   ; preds = %._crit_edge769.loopexit, %87
  %380 = phi i64 [ %.pre973, %._crit_edge769.loopexit ], [ %88, %87 ]
  store i64 %380, ptr %27, align 8, !tbaa !5
  %invariant.gep770 = getelementptr i8, ptr %4, i64 -8
  %invariant.gep772 = getelementptr i8, ptr %6, i64 -8
  %.not639774 = icmp slt i64 %380, 1
  br i1 %.not639774, label %._crit_edge778, label %.lr.ph777

.lr.ph777:                                        ; preds = %._crit_edge769, %.lr.ph777
  %.1631775 = phi i64 [ %381, %.lr.ph777 ], [ 1, %._crit_edge769 ]
  %381 = add nuw nsw i64 %.1631775, 1
  %382 = getelementptr inbounds i64, ptr %57, i64 %.1631775
  %383 = load i64, ptr %382, align 8, !tbaa !5
  %gep771 = getelementptr %struct.complex, ptr %invariant.gep770, i64 %383
  %gep773 = getelementptr %struct.complex, ptr %invariant.gep772, i64 %383
  %384 = call i32 @f2c_ccopy(ptr noundef nonnull %3, ptr noundef %gep771, ptr noundef nonnull %5, ptr noundef %gep773, ptr noundef nonnull %7) #4
  %385 = load i64, ptr %27, align 8, !tbaa !5
  %.not639.not = icmp slt i64 %.1631775, %385
  br i1 %.not639.not, label %.lr.ph777, label %._crit_edge778, !llvm.loop !54

._crit_edge778:                                   ; preds = %.lr.ph777, %._crit_edge769
  %386 = call i64 @pow_ii(ptr noundef nonnull @c__2, ptr noundef nonnull %34) #4
  store i64 0, ptr %35, align 8, !tbaa !5
  %387 = load i64, ptr %34, align 8, !tbaa !5
  %388 = icmp sgt i64 %387, 0
  br i1 %388, label %.lr.ph799, label %.loopexit

.lr.ph799:                                        ; preds = %._crit_edge778
  %389 = getelementptr i64, ptr %57, i64 %63
  br label %390

390:                                              ; preds = %.lr.ph799, %._crit_edge790
  %.0612797 = phi i64 [ %387, %.lr.ph799 ], [ %425, %._crit_edge790 ]
  %.8626796 = phi i64 [ %386, %.lr.ph799 ], [ %.9627.lcssa, %._crit_edge790 ]
  %391 = shl nuw i64 %.0612797, 1
  %392 = add nsw i64 %391, -1
  %393 = icmp eq i64 %.0612797, 1
  br i1 %393, label %.thread982, label %394

.thread982:                                       ; preds = %390
  store i64 1, ptr %27, align 8, !tbaa !5
  br label %.lr.ph789

394:                                              ; preds = %390
  %395 = add nsw i64 %.0612797, -1
  store i64 %395, ptr %27, align 8, !tbaa !5
  %396 = call i64 @pow_ii(ptr noundef nonnull @c__2, ptr noundef nonnull %27) #4
  %397 = shl i64 %396, 1
  %398 = add nsw i64 %397, -1
  store i64 %398, ptr %27, align 8, !tbaa !5
  %.not640785.not = icmp slt i64 %396, %397
  br i1 %.not640785.not, label %.lr.ph789, label %._crit_edge790

.lr.ph789:                                        ; preds = %.thread982, %394
  %.0616986 = phi i64 [ 1, %.thread982 ], [ %396, %394 ]
  %399 = mul nsw i64 %.0612797, %51
  %invariant.gep792 = getelementptr i64, ptr %53, i64 %399
  %400 = mul nsw i64 %392, %51
  %invariant.gep794 = getelementptr i64, ptr %54, i64 %400
  %401 = mul nsw i64 %392, %42
  %402 = mul nsw i64 %.0612797, %42
  br label %403

403:                                              ; preds = %.lr.ph789, %403
  %.9627787 = phi i64 [ %.8626796, %.lr.ph789 ], [ %410, %403 ]
  %.2632786 = phi i64 [ %.0616986, %.lr.ph789 ], [ %423, %403 ]
  %404 = getelementptr inbounds i64, ptr %57, i64 %.2632786
  %405 = load i64, ptr %404, align 8, !tbaa !5
  %406 = getelementptr i64, ptr %389, i64 %.2632786
  %407 = load i64, ptr %406, align 8, !tbaa !5
  store i64 %407, ptr %30, align 8, !tbaa !5
  %gep780 = getelementptr i64, ptr %invariant.gep761, i64 %.2632786
  %408 = load i64, ptr %gep780, align 8, !tbaa !5
  store i64 %408, ptr %31, align 8, !tbaa !5
  %409 = sub nsw i64 %405, %407
  %410 = add nsw i64 %.9627787, -1
  %gep782 = getelementptr %struct.complex, ptr %invariant.gep772, i64 %409
  %gep784 = getelementptr %struct.complex, ptr %invariant.gep770, i64 %409
  %gep793 = getelementptr i64, ptr %invariant.gep792, i64 %409
  %411 = getelementptr inbounds i64, ptr %50, i64 %410
  %gep795 = getelementptr i64, ptr %invariant.gep794, i64 %409
  %412 = add nsw i64 %409, %401
  %413 = getelementptr inbounds float, ptr %44, i64 %412
  %414 = getelementptr inbounds float, ptr %45, i64 %412
  %415 = add nsw i64 %409, %402
  %416 = getelementptr inbounds float, ptr %48, i64 %415
  %417 = getelementptr inbounds float, ptr %47, i64 %412
  %418 = getelementptr inbounds float, ptr %46, i64 %415
  %419 = getelementptr inbounds i64, ptr %49, i64 %410
  %420 = getelementptr inbounds float, ptr %55, i64 %410
  %421 = getelementptr inbounds float, ptr %56, i64 %410
  %422 = call i32 @clals0_(ptr noundef nonnull %0, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %35, ptr noundef nonnull %3, ptr noundef %gep782, ptr noundef nonnull %7, ptr noundef %gep784, ptr noundef nonnull %5, ptr noundef %gep793, ptr noundef nonnull %411, ptr noundef %gep795, ptr noundef nonnull %18, ptr noundef %413, ptr noundef nonnull %9, ptr noundef %414, ptr noundef %416, ptr noundef %417, ptr noundef %418, ptr noundef nonnull %419, ptr noundef nonnull %420, ptr noundef nonnull %421, ptr noundef %23, ptr noundef nonnull %25) #4
  %423 = add nsw i64 %.2632786, 1
  %424 = load i64, ptr %27, align 8, !tbaa !5
  %.not640.not = icmp slt i64 %.2632786, %424
  br i1 %.not640.not, label %403, label %._crit_edge790, !llvm.loop !55

._crit_edge790:                                   ; preds = %403, %394
  %.9627.lcssa = phi i64 [ %.8626796, %394 ], [ %410, %403 ]
  %425 = add nsw i64 %.0612797, -1
  %426 = icmp sgt i64 %.0612797, 1
  br i1 %426, label %390, label %.loopexit, !llvm.loop !56

427:                                              ; preds = %81
  %428 = load i64, ptr %34, align 8, !tbaa !5
  store i64 %428, ptr %27, align 8, !tbaa !5
  %.not656817 = icmp slt i64 %428, 1
  br i1 %.not656817, label %._crit_edge822, label %.lr.ph821

.lr.ph821:                                        ; preds = %427
  %invariant.gep800 = getelementptr i8, ptr %83, i64 -8
  %invariant.gep802 = getelementptr i8, ptr %4, i64 -8
  %invariant.gep804 = getelementptr i8, ptr %6, i64 -8
  %429 = getelementptr i64, ptr %57, i64 %63
  br label %430

430:                                              ; preds = %.lr.ph821, %._crit_edge811
  %.1613819 = phi i64 [ 1, %.lr.ph821 ], [ %466, %._crit_edge811 ]
  %.10628818 = phi i64 [ 0, %.lr.ph821 ], [ %.11629.lcssa, %._crit_edge811 ]
  %431 = shl nuw i64 %.1613819, 1
  %432 = add nsw i64 %431, -1
  %433 = icmp eq i64 %.1613819, 1
  br i1 %433, label %.thread987, label %434

.thread987:                                       ; preds = %430
  store i64 1, ptr %28, align 8, !tbaa !5
  br label %.lr.ph810

434:                                              ; preds = %430
  %435 = add nsw i64 %.1613819, -1
  store i64 %435, ptr %28, align 8, !tbaa !5
  %436 = call i64 @pow_ii(ptr noundef nonnull @c__2, ptr noundef nonnull %28) #4
  %437 = shl i64 %436, 1
  %438 = add nsw i64 %437, -1
  store i64 %436, ptr %28, align 8, !tbaa !5
  %.not674806.not = icmp sgt i64 %437, %436
  br i1 %.not674806.not, label %.lr.ph810, label %._crit_edge811

.lr.ph810:                                        ; preds = %.thread987, %434
  %.1615991 = phi i64 [ 1, %.thread987 ], [ %438, %434 ]
  %439 = mul nsw i64 %.1613819, %51
  %invariant.gep813 = getelementptr i64, ptr %53, i64 %439
  %440 = mul nsw i64 %432, %51
  %invariant.gep815 = getelementptr i64, ptr %54, i64 %440
  %441 = mul nsw i64 %432, %42
  %442 = mul nsw i64 %.1613819, %42
  br label %443

443:                                              ; preds = %.lr.ph810, %443
  %.11629808 = phi i64 [ %.10628818, %.lr.ph810 ], [ %451, %443 ]
  %.3633807 = phi i64 [ %.1615991, %.lr.ph810 ], [ %464, %443 ]
  %444 = getelementptr inbounds i64, ptr %57, i64 %.3633807
  %445 = load i64, ptr %444, align 8, !tbaa !5
  %446 = getelementptr i64, ptr %429, i64 %.3633807
  %447 = load i64, ptr %446, align 8, !tbaa !5
  store i64 %447, ptr %30, align 8, !tbaa !5
  %gep801 = getelementptr i64, ptr %invariant.gep800, i64 %.3633807
  %448 = load i64, ptr %gep801, align 8, !tbaa !5
  store i64 %448, ptr %31, align 8, !tbaa !5
  %449 = sub nsw i64 %445, %447
  %450 = icmp ne i64 %.3633807, %.1615991
  %. = zext i1 %450 to i64
  store i64 %., ptr %35, align 8, !tbaa !5
  %451 = add nsw i64 %.11629808, 1
  %gep803 = getelementptr %struct.complex, ptr %invariant.gep802, i64 %449
  %gep805 = getelementptr %struct.complex, ptr %invariant.gep804, i64 %449
  %gep814 = getelementptr i64, ptr %invariant.gep813, i64 %449
  %452 = getelementptr i64, ptr %16, i64 %.11629808
  %gep816 = getelementptr i64, ptr %invariant.gep815, i64 %449
  %453 = add nsw i64 %449, %441
  %454 = getelementptr inbounds float, ptr %44, i64 %453
  %455 = getelementptr inbounds float, ptr %45, i64 %453
  %456 = add nsw i64 %449, %442
  %457 = getelementptr inbounds float, ptr %48, i64 %456
  %458 = getelementptr inbounds float, ptr %47, i64 %453
  %459 = getelementptr inbounds float, ptr %46, i64 %456
  %460 = getelementptr i64, ptr %11, i64 %.11629808
  %461 = getelementptr float, ptr %21, i64 %.11629808
  %462 = getelementptr float, ptr %22, i64 %.11629808
  %463 = call i32 @clals0_(ptr noundef nonnull %0, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %35, ptr noundef nonnull %3, ptr noundef %gep803, ptr noundef nonnull %5, ptr noundef %gep805, ptr noundef nonnull %7, ptr noundef %gep814, ptr noundef %452, ptr noundef %gep816, ptr noundef nonnull %18, ptr noundef %454, ptr noundef nonnull %9, ptr noundef %455, ptr noundef %457, ptr noundef %458, ptr noundef %459, ptr noundef %460, ptr noundef %461, ptr noundef %462, ptr noundef %23, ptr noundef nonnull %25) #4
  %464 = add nsw i64 %.3633807, -1
  %465 = load i64, ptr %28, align 8, !tbaa !5
  %.not674.not = icmp sgt i64 %.3633807, %465
  br i1 %.not674.not, label %443, label %._crit_edge811, !llvm.loop !57

._crit_edge811:                                   ; preds = %443, %434
  %.11629.lcssa = phi i64 [ %.10628818, %434 ], [ %451, %443 ]
  %466 = add nuw nsw i64 %.1613819, 1
  %467 = load i64, ptr %27, align 8, !tbaa !5
  %.not656.not = icmp slt i64 %.1613819, %467
  br i1 %.not656.not, label %430, label %._crit_edge822, !llvm.loop !58

._crit_edge822:                                   ; preds = %._crit_edge811, %427
  %468 = load i64, ptr %29, align 8, !tbaa !5
  %469 = add nsw i64 %468, 1
  %470 = sdiv i64 %469, 2
  store i64 %468, ptr %27, align 8, !tbaa !5
  %invariant.gep919 = getelementptr i8, ptr %83, i64 -8
  %invariant.gep921 = getelementptr i8, ptr %10, i64 -4
  %.not657923 = icmp sgt i64 %470, %468
  br i1 %.not657923, label %.loopexit, label %.lr.ph926

.lr.ph926:                                        ; preds = %._crit_edge822
  %471 = getelementptr i64, ptr %57, i64 %63
  %.pre974 = load i64, ptr %3, align 8, !tbaa !5
  %472 = shl i64 %39, 3
  %473 = shl i64 %39, 3
  %scevgep1227 = getelementptr i8, ptr %4, i64 -4
  %474 = shl i64 %36, 3
  %475 = shl i64 %39, 3
  %scevgep1262 = getelementptr i8, ptr %6, i64 -8
  %scevgep1264 = getelementptr i8, ptr %6, i64 -8
  %476 = shl i64 %39, 3
  %scevgep1310 = getelementptr i8, ptr %23, i64 4
  %scevgep1313 = getelementptr i8, ptr %4, i64 -8
  %scevgep1315 = getelementptr i8, ptr %4, i64 -4
  %477 = shl i64 %36, 3
  %stride.check1320 = icmp slt i64 %477, 0
  %invariant.gep1429 = getelementptr i8, ptr %23, i64 4
  %invariant.gep1433 = getelementptr i8, ptr %23, i64 8
  %invariant.gep1435 = getelementptr i8, ptr %23, i64 12
  %stride.check1280 = icmp slt i64 %476, 0
  %stride.check1232 = icmp slt i64 %474, 0
  %stride.check1190 = icmp slt i64 %473, 0
  %invariant.gep1455 = getelementptr i8, ptr %23, i64 4
  %invariant.gep1457 = getelementptr i8, ptr %23, i64 4
  br label %478

478:                                              ; preds = %.lr.ph926, %._crit_edge918
  %479 = phi i64 [ %.pre974, %.lr.ph926 ], [ %704, %._crit_edge918 ]
  %.4634924 = phi i64 [ %470, %.lr.ph926 ], [ %766, %._crit_edge918 ]
  %480 = getelementptr inbounds i64, ptr %57, i64 %.4634924
  %481 = load i64, ptr %480, align 8, !tbaa !5
  %482 = getelementptr i64, ptr %471, i64 %.4634924
  %483 = load i64, ptr %482, align 8, !tbaa !5
  store i64 %483, ptr %30, align 8, !tbaa !5
  %gep920 = getelementptr i64, ptr %invariant.gep919, i64 %.4634924
  %484 = load i64, ptr %gep920, align 8, !tbaa !5
  store i64 %484, ptr %31, align 8, !tbaa !5
  %485 = add nsw i64 %483, 1
  store i64 %485, ptr %32, align 8, !tbaa !5
  %486 = load i64, ptr %29, align 8, !tbaa !5
  %487 = icmp ne i64 %.4634924, %486
  %488 = zext i1 %487 to i64
  %storemerge = add nsw i64 %484, %488
  store i64 %storemerge, ptr %33, align 8, !tbaa !5
  %489 = sub i64 %481, %483
  %490 = add i64 %481, 1
  %491 = mul nsw i64 %479, %485
  store i64 %479, ptr %28, align 8, !tbaa !5
  %.not658832 = icmp sgt i64 %479, 0
  %.not673.not823 = icmp slt i64 %489, %490
  %or.cond1011 = select i1 %.not658832, i1 %.not673.not823, i1 false
  br i1 %or.cond1011, label %.lr.ph827.us.preheader, label %._crit_edge837

.lr.ph827.us.preheader:                           ; preds = %478
  %492 = shl i64 %491, 1
  %493 = shl i64 %483, 2
  %scevgep1311 = getelementptr i8, ptr %scevgep1310, i64 %493
  %494 = shl i64 %481, 3
  %495 = sub i64 %481, %483
  %496 = shl i64 %495, 3
  %scevgep1314 = getelementptr i8, ptr %scevgep1313, i64 %496
  %497 = add nsw i64 %479, -1
  %498 = mul i64 %477, %497
  %499 = getelementptr i8, ptr %scevgep1315, i64 %498
  %scevgep1316 = getelementptr i8, ptr %499, i64 %494
  %500 = add i64 %483, 1
  %501 = add i64 %481, 1
  %min.iters.check1323 = icmp ult i64 %500, 8
  %n.vec1326 = and i64 %500, -8
  %ind.end1327 = add i64 %489, %n.vec1326
  %cmp.n1336 = icmp eq i64 %500, %n.vec1326
  br label %.lr.ph827.us

.lr.ph827.us:                                     ; preds = %.lr.ph827.us.preheader, %._crit_edge828.us
  %.6606834.us = phi i64 [ %541, %._crit_edge828.us ], [ 1, %.lr.ph827.us.preheader ]
  %.12833.us = phi i64 [ %.lcssa, %._crit_edge828.us ], [ %492, %.lr.ph827.us.preheader ]
  %502 = mul nsw i64 %.6606834.us, %36
  %invariant.gep830.us = getelementptr %struct.complex, ptr %38, i64 %502
  br i1 %min.iters.check1323, label %scalar.ph1322.preheader, label %vector.memcheck1308

vector.memcheck1308:                              ; preds = %.lr.ph827.us
  %503 = shl i64 %.12833.us, 2
  %scevgep1309 = getelementptr i8, ptr %23, i64 %503
  %scevgep1312 = getelementptr i8, ptr %scevgep1311, i64 %503
  %bound01317 = icmp ult ptr %scevgep1309, %scevgep1316
  %bound11318 = icmp ult ptr %scevgep1314, %scevgep1312
  %found.conflict1319 = and i1 %bound01317, %bound11318
  %504 = or i1 %found.conflict1319, %stride.check1320
  br i1 %504, label %scalar.ph1322.preheader, label %vector.ph1324

vector.ph1324:                                    ; preds = %vector.memcheck1308
  %ind.end1329 = add i64 %.12833.us, %n.vec1326
  %invariant.gep1413 = getelementptr i8, ptr %invariant.gep830.us, i64 8
  %invariant.gep1415 = getelementptr i8, ptr %invariant.gep830.us, i64 16
  %invariant.gep1417 = getelementptr i8, ptr %invariant.gep830.us, i64 24
  %invariant.gep1419 = getelementptr i8, ptr %invariant.gep830.us, i64 32
  %invariant.gep1421 = getelementptr i8, ptr %invariant.gep830.us, i64 40
  %invariant.gep1423 = getelementptr i8, ptr %invariant.gep830.us, i64 48
  %invariant.gep1425 = getelementptr i8, ptr %invariant.gep830.us, i64 56
  %505 = getelementptr float, ptr %23, i64 %.12833.us
  br label %vector.body1331

vector.body1331:                                  ; preds = %vector.body1331, %vector.ph1324
  %index1332 = phi i64 [ 0, %vector.ph1324 ], [ %index.next1335, %vector.body1331 ]
  %offset.idx1333 = add i64 %489, %index1332
  %506 = getelementptr %struct.complex, ptr %invariant.gep830.us, i64 %offset.idx1333
  %gep1414 = getelementptr %struct.complex, ptr %invariant.gep1413, i64 %offset.idx1333
  %gep1416 = getelementptr %struct.complex, ptr %invariant.gep1415, i64 %offset.idx1333
  %gep1418 = getelementptr %struct.complex, ptr %invariant.gep1417, i64 %offset.idx1333
  %gep1420 = getelementptr %struct.complex, ptr %invariant.gep1419, i64 %offset.idx1333
  %gep1422 = getelementptr %struct.complex, ptr %invariant.gep1421, i64 %offset.idx1333
  %gep1424 = getelementptr %struct.complex, ptr %invariant.gep1423, i64 %offset.idx1333
  %gep1426 = getelementptr %struct.complex, ptr %invariant.gep1425, i64 %offset.idx1333
  %507 = load float, ptr %506, align 4, !tbaa !9, !alias.scope !59
  %508 = load float, ptr %gep1414, align 4, !tbaa !9, !alias.scope !59
  %509 = load float, ptr %gep1416, align 4, !tbaa !9, !alias.scope !59
  %510 = load float, ptr %gep1418, align 4, !tbaa !9, !alias.scope !59
  %511 = insertelement <4 x float> poison, float %507, i64 0
  %512 = insertelement <4 x float> %511, float %508, i64 1
  %513 = insertelement <4 x float> %512, float %509, i64 2
  %514 = insertelement <4 x float> %513, float %510, i64 3
  %515 = load float, ptr %gep1420, align 4, !tbaa !9, !alias.scope !59
  %516 = load float, ptr %gep1422, align 4, !tbaa !9, !alias.scope !59
  %517 = load float, ptr %gep1424, align 4, !tbaa !9, !alias.scope !59
  %518 = load float, ptr %gep1426, align 4, !tbaa !9, !alias.scope !59
  %519 = insertelement <4 x float> poison, float %515, i64 0
  %520 = insertelement <4 x float> %519, float %516, i64 1
  %521 = insertelement <4 x float> %520, float %517, i64 2
  %522 = insertelement <4 x float> %521, float %518, i64 3
  %523 = getelementptr float, ptr %505, i64 %index1332
  %524 = getelementptr i8, ptr %523, i64 16
  store <4 x float> %514, ptr %523, align 4, !tbaa !15, !alias.scope !62, !noalias !59
  store <4 x float> %522, ptr %524, align 4, !tbaa !15, !alias.scope !62, !noalias !59
  %index.next1335 = add nuw i64 %index1332, 8
  %525 = icmp eq i64 %index.next1335, %n.vec1326
  br i1 %525, label %middle.block1321, label %vector.body1331, !llvm.loop !64

middle.block1321:                                 ; preds = %vector.body1331
  br i1 %cmp.n1336, label %._crit_edge828.us, label %scalar.ph1322.preheader

scalar.ph1322.preheader:                          ; preds = %middle.block1321, %vector.memcheck1308, %.lr.ph827.us
  %.6598825.us.ph = phi i64 [ %489, %vector.memcheck1308 ], [ %489, %.lr.ph827.us ], [ %ind.end1327, %middle.block1321 ]
  %.13824.us.ph = phi i64 [ %.12833.us, %vector.memcheck1308 ], [ %.12833.us, %.lr.ph827.us ], [ %ind.end1329, %middle.block1321 ]
  %526 = sub i64 %501, %.6598825.us.ph
  %527 = sub i64 %481, %.6598825.us.ph
  %xtraiter1354 = and i64 %526, 3
  %lcmp.mod1355.not = icmp eq i64 %xtraiter1354, 0
  br i1 %lcmp.mod1355.not, label %scalar.ph1322.prol.loopexit, label %scalar.ph1322.prol

scalar.ph1322.prol:                               ; preds = %scalar.ph1322.preheader, %scalar.ph1322.prol
  %.6598825.us.prol = phi i64 [ %531, %scalar.ph1322.prol ], [ %.6598825.us.ph, %scalar.ph1322.preheader ]
  %.13824.us.prol = phi i64 [ %528, %scalar.ph1322.prol ], [ %.13824.us.ph, %scalar.ph1322.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph1322.prol ], [ 0, %scalar.ph1322.preheader ]
  %528 = add nsw i64 %.13824.us.prol, 1
  %gep831.us.prol = getelementptr %struct.complex, ptr %invariant.gep830.us, i64 %.6598825.us.prol
  %529 = load float, ptr %gep831.us.prol, align 4, !tbaa !9
  %530 = getelementptr float, ptr %23, i64 %.13824.us.prol
  store float %529, ptr %530, align 4, !tbaa !15
  %531 = add nsw i64 %.6598825.us.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter1354
  br i1 %prol.iter.cmp.not, label %scalar.ph1322.prol.loopexit, label %scalar.ph1322.prol, !llvm.loop !65

scalar.ph1322.prol.loopexit:                      ; preds = %scalar.ph1322.prol, %scalar.ph1322.preheader
  %.lcssa1337.unr = phi i64 [ poison, %scalar.ph1322.preheader ], [ %528, %scalar.ph1322.prol ]
  %.6598825.us.unr = phi i64 [ %.6598825.us.ph, %scalar.ph1322.preheader ], [ %531, %scalar.ph1322.prol ]
  %.13824.us.unr = phi i64 [ %.13824.us.ph, %scalar.ph1322.preheader ], [ %528, %scalar.ph1322.prol ]
  %532 = icmp ult i64 %527, 3
  br i1 %532, label %._crit_edge828.us, label %scalar.ph1322.preheader.new

scalar.ph1322.preheader.new:                      ; preds = %scalar.ph1322.prol.loopexit
  %invariant.gep1427 = getelementptr i8, ptr %invariant.gep830.us, i64 8
  %invariant.gep1431 = getelementptr i8, ptr %invariant.gep830.us, i64 16
  br label %scalar.ph1322

scalar.ph1322:                                    ; preds = %scalar.ph1322, %scalar.ph1322.preheader.new
  %.6598825.us = phi i64 [ %.6598825.us.unr, %scalar.ph1322.preheader.new ], [ %540, %scalar.ph1322 ]
  %.13824.us = phi i64 [ %.13824.us.unr, %scalar.ph1322.preheader.new ], [ %538, %scalar.ph1322 ]
  %gep831.us = getelementptr %struct.complex, ptr %invariant.gep830.us, i64 %.6598825.us
  %533 = load float, ptr %gep831.us, align 4, !tbaa !9
  %534 = getelementptr float, ptr %23, i64 %.13824.us
  store float %533, ptr %534, align 4, !tbaa !15
  %gep1428 = getelementptr %struct.complex, ptr %invariant.gep1427, i64 %.6598825.us
  %535 = load float, ptr %gep1428, align 4, !tbaa !9
  %gep1430 = getelementptr float, ptr %invariant.gep1429, i64 %.13824.us
  store float %535, ptr %gep1430, align 4, !tbaa !15
  %gep1432 = getelementptr %struct.complex, ptr %invariant.gep1431, i64 %.6598825.us
  %536 = load float, ptr %gep1432, align 4, !tbaa !9
  %gep1434 = getelementptr float, ptr %invariant.gep1433, i64 %.13824.us
  store float %536, ptr %gep1434, align 4, !tbaa !15
  %537 = add nsw i64 %.6598825.us, 3
  %538 = add nsw i64 %.13824.us, 4
  %gep831.us.3 = getelementptr %struct.complex, ptr %invariant.gep830.us, i64 %537
  %539 = load float, ptr %gep831.us.3, align 4, !tbaa !9
  %gep1436 = getelementptr float, ptr %invariant.gep1435, i64 %.13824.us
  store float %539, ptr %gep1436, align 4, !tbaa !15
  %540 = add nsw i64 %.6598825.us, 4
  %exitcond959.not.3 = icmp eq i64 %537, %481
  br i1 %exitcond959.not.3, label %._crit_edge828.us, label %scalar.ph1322, !llvm.loop !67

._crit_edge828.us:                                ; preds = %scalar.ph1322.prol.loopexit, %scalar.ph1322, %middle.block1321
  %.lcssa = phi i64 [ %ind.end1329, %middle.block1321 ], [ %.lcssa1337.unr, %scalar.ph1322.prol.loopexit ], [ %538, %scalar.ph1322 ]
  %541 = add nuw i64 %.6606834.us, 1
  %exitcond960.not = icmp eq i64 %.6606834.us, %479
  br i1 %exitcond960.not, label %._crit_edge837, label %.lr.ph827.us, !llvm.loop !68

._crit_edge837:                                   ; preds = %._crit_edge828.us, %478
  %gep922 = getelementptr float, ptr %invariant.gep921, i64 %489
  %.idx659 = shl i64 %491, 3
  %542 = getelementptr i8, ptr %23, i64 %.idx659
  %543 = call i32 @f2c_sgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %32, ptr noundef nonnull %3, ptr noundef nonnull %32, ptr noundef nonnull @c_b9, ptr noundef %gep922, ptr noundef nonnull %9, ptr noundef %542, ptr noundef nonnull %32, ptr noundef nonnull @c_b10, ptr noundef %23, ptr noundef nonnull %32) #4
  %544 = load i64, ptr %32, align 8, !tbaa !5
  %545 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %545, ptr %28, align 8, !tbaa !5
  %.not660847 = icmp slt i64 %545, 1
  br i1 %.not660847, label %._crit_edge852, label %.lr.ph851.preheader

.lr.ph851.preheader:                              ; preds = %._crit_edge837
  %546 = shl i64 %544, 1
  %547 = mul i64 %546, %545
  br label %.lr.ph851

.lr.ph851:                                        ; preds = %.lr.ph851.preheader, %._crit_edge843
  %548 = phi i64 [ %558, %._crit_edge843 ], [ %545, %.lr.ph851.preheader ]
  %.7607849 = phi i64 [ %559, %._crit_edge843 ], [ 1, %.lr.ph851.preheader ]
  %.14848 = phi i64 [ %.15.lcssa, %._crit_edge843 ], [ %547, %.lr.ph851.preheader ]
  %549 = load i64, ptr %32, align 8, !tbaa !5
  %550 = add nsw i64 %549, %489
  %.not672.not838 = icmp sgt i64 %549, 0
  br i1 %.not672.not838, label %.lr.ph842, label %._crit_edge843

.lr.ph842:                                        ; preds = %.lr.ph851
  %551 = mul nsw i64 %.7607849, %36
  %invariant.gep845 = getelementptr %struct.complex, ptr %38, i64 %551
  br label %552

552:                                              ; preds = %.lr.ph842, %552
  %.7599840 = phi i64 [ %489, %.lr.ph842 ], [ %557, %552 ]
  %.15839 = phi i64 [ %.14848, %.lr.ph842 ], [ %553, %552 ]
  %553 = add nsw i64 %.15839, 1
  %gep846 = getelementptr %struct.complex, ptr %invariant.gep845, i64 %.7599840
  %554 = call double @r_imag(ptr noundef %gep846) #4
  %555 = fptrunc double %554 to float
  %556 = getelementptr float, ptr %23, i64 %.15839
  store float %555, ptr %556, align 4, !tbaa !15
  %557 = add nsw i64 %.7599840, 1
  %.not672.not = icmp slt i64 %557, %550
  br i1 %.not672.not, label %552, label %._crit_edge843.loopexit, !llvm.loop !69

._crit_edge843.loopexit:                          ; preds = %552
  %.pre975 = load i64, ptr %28, align 8, !tbaa !5
  br label %._crit_edge843

._crit_edge843:                                   ; preds = %._crit_edge843.loopexit, %.lr.ph851
  %558 = phi i64 [ %548, %.lr.ph851 ], [ %.pre975, %._crit_edge843.loopexit ]
  %.15.lcssa = phi i64 [ %.14848, %.lr.ph851 ], [ %553, %._crit_edge843.loopexit ]
  %559 = add nuw nsw i64 %.7607849, 1
  %.not660.not = icmp slt i64 %.7607849, %558
  br i1 %.not660.not, label %.lr.ph851, label %._crit_edge852.loopexit, !llvm.loop !70

._crit_edge852.loopexit:                          ; preds = %._crit_edge843
  %.pre976 = load i64, ptr %32, align 8, !tbaa !5
  %.pre977 = load i64, ptr %3, align 8, !tbaa !5
  br label %._crit_edge852

._crit_edge852:                                   ; preds = %._crit_edge852.loopexit, %._crit_edge837
  %560 = phi i64 [ %.pre977, %._crit_edge852.loopexit ], [ %545, %._crit_edge837 ]
  %561 = phi i64 [ %.pre976, %._crit_edge852.loopexit ], [ %544, %._crit_edge837 ]
  %562 = mul nsw i64 %560, %561
  %.idx661 = shl i64 %562, 3
  %563 = getelementptr i8, ptr %23, i64 %.idx661
  %564 = getelementptr float, ptr %23, i64 %562
  %565 = call i32 @f2c_sgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %32, ptr noundef nonnull %3, ptr noundef nonnull %32, ptr noundef nonnull @c_b9, ptr noundef %gep922, ptr noundef nonnull %9, ptr noundef %563, ptr noundef nonnull %32, ptr noundef nonnull @c_b10, ptr noundef %564, ptr noundef nonnull %32) #4
  %566 = load i64, ptr %32, align 8, !tbaa !5
  %567 = load i64, ptr %3, align 8, !tbaa !5
  %.not662864 = icmp slt i64 %567, 1
  br i1 %.not662864, label %._crit_edge870.thread, label %.lr.ph869

._crit_edge870.thread:                            ; preds = %._crit_edge852
  %568 = load i64, ptr %33, align 8, !tbaa !5
  %569 = mul nsw i64 %568, %567
  store i64 %567, ptr %28, align 8, !tbaa !5
  br label %._crit_edge885

.lr.ph869:                                        ; preds = %._crit_edge852
  %570 = add i64 %566, %489
  %.not671.not853 = icmp sgt i64 %566, 0
  br i1 %.not671.not853, label %.lr.ph858.us.preheader, label %._crit_edge870.thread992

._crit_edge870.thread992:                         ; preds = %.lr.ph869
  %571 = load i64, ptr %33, align 8, !tbaa !5
  %572 = mul nsw i64 %571, %567
  store i64 %567, ptr %28, align 8, !tbaa !5
  br label %.lr.ph884

.lr.ph858.us.preheader:                           ; preds = %.lr.ph869
  %573 = mul nuw nsw i64 %567, %566
  %574 = add i64 %483, -1
  %575 = add i64 %481, 1
  %576 = sub i64 %575, %483
  %smax1250 = call i64 @llvm.smax.i64(i64 %570, i64 %576)
  %577 = add i64 %574, %smax1250
  %578 = sub i64 %577, %481
  %579 = shl i64 %481, 3
  %580 = add i64 %579, -8
  %581 = shl i64 %483, 3
  %582 = sub i64 %580, %581
  %583 = add i64 %579, -4
  %584 = sub i64 %583, %581
  %585 = sub i64 %579, %581
  %scevgep1263 = getelementptr i8, ptr %scevgep1262, i64 %585
  %586 = add nsw i64 %567, -1
  %587 = mul i64 %476, %586
  %588 = add i64 %481, 1
  %589 = sub i64 %588, %483
  %smax1265 = call i64 @llvm.smax.i64(i64 %570, i64 %589)
  %590 = shl i64 %smax1265, 3
  %591 = getelementptr i8, ptr %scevgep1264, i64 %587
  %scevgep1266 = getelementptr i8, ptr %591, i64 %590
  %592 = mul i64 %481, -4
  %scevgep1268 = getelementptr i8, ptr %23, i64 %592
  %593 = add i64 %483, %smax1265
  %scevgep1271 = getelementptr i8, ptr %23, i64 %592
  %594 = add i64 %483, %smax1265
  %595 = add i64 %481, 1
  %596 = sub i64 %595, %483
  %smax1282 = call i64 @llvm.smax.i64(i64 %570, i64 %596)
  %597 = add i64 %483, %smax1282
  %598 = sub i64 %597, %481
  %min.iters.check1285 = icmp ult i64 %598, 24
  %599 = getelementptr i8, ptr %6, i64 %584
  %600 = getelementptr i8, ptr %6, i64 %582
  %mul.result1255 = shl i64 %578, 3
  %mul.result1259 = shl i64 %578, 3
  %mul.overflow1260 = icmp ugt i64 %578, 2305843009213693951
  %n.vec1288 = and i64 %598, -4
  %ind.end1293 = add i64 %489, %n.vec1288
  %cmp.n1307 = icmp eq i64 %598, %n.vec1288
  br label %.lr.ph858.us

.lr.ph858.us:                                     ; preds = %.lr.ph858.us.preheader, %._crit_edge859.us
  %indvar1251 = phi i64 [ 0, %.lr.ph858.us.preheader ], [ %indvar.next1252, %._crit_edge859.us ]
  %.4867.us = phi i64 [ 0, %.lr.ph858.us.preheader ], [ %.lcssa1016, %._crit_edge859.us ]
  %.4588866.us = phi i64 [ %573, %.lr.ph858.us.preheader ], [ %.lcssa1015, %._crit_edge859.us ]
  %.8608865.us = phi i64 [ 1, %.lr.ph858.us.preheader ], [ %632, %._crit_edge859.us ]
  %601 = mul nsw i64 %.8608865.us, %39
  %invariant.gep862.us = getelementptr %struct.complex, ptr %41, i64 %601
  br i1 %min.iters.check1285, label %scalar.ph1284.preheader, label %vector.scevcheck1249

vector.scevcheck1249:                             ; preds = %.lr.ph858.us
  %602 = mul i64 %475, %indvar1251
  %scevgep1257 = getelementptr i8, ptr %599, i64 %602
  %scevgep1253 = getelementptr i8, ptr %600, i64 %602
  %603 = getelementptr i8, ptr %scevgep1253, i64 %mul.result1255
  %604 = icmp ult ptr %603, %scevgep1253
  %605 = getelementptr i8, ptr %scevgep1257, i64 %mul.result1259
  %606 = icmp ult ptr %605, %scevgep1257
  %607 = or i1 %606, %mul.overflow1260
  %608 = or i1 %604, %607
  br i1 %608, label %scalar.ph1284.preheader, label %vector.memcheck1261

vector.memcheck1261:                              ; preds = %vector.scevcheck1249
  %609 = shl i64 %.4588866.us, 2
  %scevgep1267 = getelementptr i8, ptr %23, i64 %609
  %610 = add i64 %593, %.4588866.us
  %611 = shl i64 %610, 2
  %scevgep1269 = getelementptr i8, ptr %scevgep1268, i64 %611
  %612 = shl i64 %.4867.us, 2
  %scevgep1270 = getelementptr i8, ptr %23, i64 %612
  %613 = add i64 %594, %.4867.us
  %614 = shl i64 %613, 2
  %scevgep1272 = getelementptr i8, ptr %scevgep1271, i64 %614
  %bound01273 = icmp ult ptr %scevgep1263, %scevgep1269
  %bound11274 = icmp ult ptr %scevgep1267, %scevgep1266
  %found.conflict1275 = and i1 %bound01273, %bound11274
  %bound01277 = icmp ult ptr %scevgep1263, %scevgep1272
  %bound11278 = icmp ult ptr %scevgep1270, %scevgep1266
  %found.conflict1279 = and i1 %bound01277, %bound11278
  %615 = or i1 %found.conflict1279, %stride.check1280
  %conflict.rdx1281 = or i1 %found.conflict1275, %615
  br i1 %conflict.rdx1281, label %scalar.ph1284.preheader, label %vector.ph1286

vector.ph1286:                                    ; preds = %vector.memcheck1261
  %ind.end1289 = add i64 %.4867.us, %n.vec1288
  %ind.end1291 = add i64 %.4588866.us, %n.vec1288
  %616 = getelementptr float, ptr %23, i64 %.4867.us
  %617 = getelementptr float, ptr %23, i64 %.4588866.us
  %invariant.gep1437 = getelementptr i8, ptr %invariant.gep862.us, i64 16
  br label %vector.body1295

vector.body1295:                                  ; preds = %vector.body1295, %vector.ph1286
  %index1296 = phi i64 [ 0, %vector.ph1286 ], [ %index.next1306, %vector.body1295 ]
  %offset.idx1299 = add i64 %489, %index1296
  %618 = getelementptr float, ptr %616, i64 %index1296
  %619 = getelementptr i8, ptr %618, i64 8
  %wide.load1300 = load <2 x float>, ptr %618, align 4, !tbaa !15, !alias.scope !71
  %wide.load1301 = load <2 x float>, ptr %619, align 4, !tbaa !15, !alias.scope !71
  %620 = getelementptr float, ptr %617, i64 %index1296
  %621 = getelementptr i8, ptr %620, i64 8
  %wide.load1302 = load <2 x float>, ptr %620, align 4, !tbaa !15, !alias.scope !74
  %wide.load1303 = load <2 x float>, ptr %621, align 4, !tbaa !15, !alias.scope !74
  %622 = getelementptr %struct.complex, ptr %invariant.gep862.us, i64 %offset.idx1299
  %gep1438 = getelementptr %struct.complex, ptr %invariant.gep1437, i64 %offset.idx1299
  %interleaved.vec1304 = shufflevector <2 x float> %wide.load1300, <2 x float> %wide.load1302, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec1304, ptr %622, align 4, !tbaa !15
  %interleaved.vec1305 = shufflevector <2 x float> %wide.load1301, <2 x float> %wide.load1303, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec1305, ptr %gep1438, align 4, !tbaa !15
  %index.next1306 = add nuw i64 %index1296, 4
  %623 = icmp eq i64 %index.next1306, %n.vec1288
  br i1 %623, label %middle.block1283, label %vector.body1295, !llvm.loop !76

middle.block1283:                                 ; preds = %vector.body1295
  br i1 %cmp.n1307, label %._crit_edge859.us, label %scalar.ph1284.preheader

scalar.ph1284.preheader:                          ; preds = %middle.block1283, %vector.memcheck1261, %vector.scevcheck1249, %.lr.ph858.us
  %.5856.us.ph = phi i64 [ %.4867.us, %vector.memcheck1261 ], [ %.4867.us, %vector.scevcheck1249 ], [ %.4867.us, %.lr.ph858.us ], [ %ind.end1289, %middle.block1283 ]
  %.5589855.us.ph = phi i64 [ %.4588866.us, %vector.memcheck1261 ], [ %.4588866.us, %vector.scevcheck1249 ], [ %.4588866.us, %.lr.ph858.us ], [ %ind.end1291, %middle.block1283 ]
  %.8854.us.ph = phi i64 [ %489, %vector.memcheck1261 ], [ %489, %vector.scevcheck1249 ], [ %489, %.lr.ph858.us ], [ %ind.end1293, %middle.block1283 ]
  br label %scalar.ph1284

scalar.ph1284:                                    ; preds = %scalar.ph1284.preheader, %scalar.ph1284
  %.5856.us = phi i64 [ %624, %scalar.ph1284 ], [ %.5856.us.ph, %scalar.ph1284.preheader ]
  %.5589855.us = phi i64 [ %625, %scalar.ph1284 ], [ %.5589855.us.ph, %scalar.ph1284.preheader ]
  %.8854.us = phi i64 [ %631, %scalar.ph1284 ], [ %.8854.us.ph, %scalar.ph1284.preheader ]
  %624 = add nsw i64 %.5856.us, 1
  %625 = add nsw i64 %.5589855.us, 1
  %626 = getelementptr float, ptr %23, i64 %.5856.us
  %627 = load float, ptr %626, align 4, !tbaa !15
  %628 = getelementptr float, ptr %23, i64 %.5589855.us
  %629 = load float, ptr %628, align 4, !tbaa !15
  %gep863.us = getelementptr %struct.complex, ptr %invariant.gep862.us, i64 %.8854.us
  store float %627, ptr %gep863.us, align 4, !tbaa !9
  %630 = getelementptr inbounds i8, ptr %gep863.us, i64 4
  store float %629, ptr %630, align 4, !tbaa !32
  %631 = add nsw i64 %.8854.us, 1
  %.not671.not.us = icmp slt i64 %631, %570
  br i1 %.not671.not.us, label %scalar.ph1284, label %._crit_edge859.us, !llvm.loop !77

._crit_edge859.us:                                ; preds = %scalar.ph1284, %middle.block1283
  %.lcssa1016 = phi i64 [ %ind.end1289, %middle.block1283 ], [ %624, %scalar.ph1284 ]
  %.lcssa1015 = phi i64 [ %ind.end1291, %middle.block1283 ], [ %625, %scalar.ph1284 ]
  %632 = add nuw i64 %.8608865.us, 1
  %exitcond961.not = icmp eq i64 %.8608865.us, %567
  %indvar.next1252 = add i64 %indvar1251, 1
  br i1 %exitcond961.not, label %._crit_edge870, label %.lr.ph858.us, !llvm.loop !78

._crit_edge870:                                   ; preds = %._crit_edge859.us
  %633 = load i64, ptr %33, align 8, !tbaa !5
  %634 = mul nsw i64 %633, %567
  store i64 %567, ptr %28, align 8, !tbaa !5
  br i1 %.not662864, label %._crit_edge885, label %.lr.ph884

.lr.ph884:                                        ; preds = %._crit_edge870.thread992, %._crit_edge870
  %635 = phi i64 [ %572, %._crit_edge870.thread992 ], [ %634, %._crit_edge870 ]
  %636 = phi i64 [ %571, %._crit_edge870.thread992 ], [ %633, %._crit_edge870 ]
  %637 = add i64 %636, %481
  %.not670871.not = icmp slt i64 %481, %637
  br i1 %.not670871.not, label %.lr.ph875.preheader, label %._crit_edge885

.lr.ph875.preheader:                              ; preds = %.lr.ph884
  %638 = shl i64 %635, 1
  %639 = add i64 %490, %636
  %640 = shl i64 %636, 2
  %scevgep1224 = getelementptr i8, ptr %23, i64 %640
  %641 = shl i64 %481, 3
  %scevgep1226 = getelementptr i8, ptr %4, i64 %641
  %642 = add nsw i64 %567, -1
  %643 = mul i64 %474, %642
  %644 = shl i64 %636, 3
  %645 = getelementptr i8, ptr %scevgep1227, i64 %643
  %646 = getelementptr i8, ptr %645, i64 %644
  %scevgep1228 = getelementptr i8, ptr %646, i64 %641
  %min.iters.check1235 = icmp ult i64 %636, 8
  %n.vec1238 = and i64 %636, -8
  %ind.end1239 = add i64 %490, %n.vec1238
  %cmp.n1248 = icmp eq i64 %636, %n.vec1238
  br label %.lr.ph875

.lr.ph875:                                        ; preds = %.lr.ph875.preheader, %._crit_edge876
  %.9609882 = phi i64 [ %675, %._crit_edge876 ], [ 1, %.lr.ph875.preheader ]
  %.16881 = phi i64 [ %.lcssa1017, %._crit_edge876 ], [ %638, %.lr.ph875.preheader ]
  %647 = mul nsw i64 %.9609882, %36
  %invariant.gep878 = getelementptr %struct.complex, ptr %38, i64 %647
  br i1 %min.iters.check1235, label %scalar.ph1234.preheader, label %vector.memcheck1222

vector.memcheck1222:                              ; preds = %.lr.ph875
  %648 = shl i64 %.16881, 2
  %scevgep1223 = getelementptr i8, ptr %23, i64 %648
  %scevgep1225 = getelementptr i8, ptr %scevgep1224, i64 %648
  %bound01229 = icmp ult ptr %scevgep1223, %scevgep1228
  %bound11230 = icmp ult ptr %scevgep1226, %scevgep1225
  %found.conflict1231 = and i1 %bound01229, %bound11230
  %649 = or i1 %found.conflict1231, %stride.check1232
  br i1 %649, label %scalar.ph1234.preheader, label %vector.ph1236

vector.ph1236:                                    ; preds = %vector.memcheck1222
  %ind.end1241 = add i64 %.16881, %n.vec1238
  %invariant.gep1439 = getelementptr i8, ptr %invariant.gep878, i64 8
  %invariant.gep1441 = getelementptr i8, ptr %invariant.gep878, i64 16
  %invariant.gep1443 = getelementptr i8, ptr %invariant.gep878, i64 24
  %invariant.gep1445 = getelementptr i8, ptr %invariant.gep878, i64 32
  %invariant.gep1447 = getelementptr i8, ptr %invariant.gep878, i64 40
  %invariant.gep1449 = getelementptr i8, ptr %invariant.gep878, i64 48
  %invariant.gep1451 = getelementptr i8, ptr %invariant.gep878, i64 56
  %650 = getelementptr float, ptr %23, i64 %.16881
  br label %vector.body1243

vector.body1243:                                  ; preds = %vector.body1243, %vector.ph1236
  %index1244 = phi i64 [ 0, %vector.ph1236 ], [ %index.next1247, %vector.body1243 ]
  %offset.idx1245 = add i64 %490, %index1244
  %651 = getelementptr %struct.complex, ptr %invariant.gep878, i64 %offset.idx1245
  %gep1440 = getelementptr %struct.complex, ptr %invariant.gep1439, i64 %offset.idx1245
  %gep1442 = getelementptr %struct.complex, ptr %invariant.gep1441, i64 %offset.idx1245
  %gep1444 = getelementptr %struct.complex, ptr %invariant.gep1443, i64 %offset.idx1245
  %gep1446 = getelementptr %struct.complex, ptr %invariant.gep1445, i64 %offset.idx1245
  %gep1448 = getelementptr %struct.complex, ptr %invariant.gep1447, i64 %offset.idx1245
  %gep1450 = getelementptr %struct.complex, ptr %invariant.gep1449, i64 %offset.idx1245
  %gep1452 = getelementptr %struct.complex, ptr %invariant.gep1451, i64 %offset.idx1245
  %652 = load float, ptr %651, align 4, !tbaa !9, !alias.scope !79
  %653 = load float, ptr %gep1440, align 4, !tbaa !9, !alias.scope !79
  %654 = load float, ptr %gep1442, align 4, !tbaa !9, !alias.scope !79
  %655 = load float, ptr %gep1444, align 4, !tbaa !9, !alias.scope !79
  %656 = insertelement <4 x float> poison, float %652, i64 0
  %657 = insertelement <4 x float> %656, float %653, i64 1
  %658 = insertelement <4 x float> %657, float %654, i64 2
  %659 = insertelement <4 x float> %658, float %655, i64 3
  %660 = load float, ptr %gep1446, align 4, !tbaa !9, !alias.scope !79
  %661 = load float, ptr %gep1448, align 4, !tbaa !9, !alias.scope !79
  %662 = load float, ptr %gep1450, align 4, !tbaa !9, !alias.scope !79
  %663 = load float, ptr %gep1452, align 4, !tbaa !9, !alias.scope !79
  %664 = insertelement <4 x float> poison, float %660, i64 0
  %665 = insertelement <4 x float> %664, float %661, i64 1
  %666 = insertelement <4 x float> %665, float %662, i64 2
  %667 = insertelement <4 x float> %666, float %663, i64 3
  %668 = getelementptr float, ptr %650, i64 %index1244
  %669 = getelementptr i8, ptr %668, i64 16
  store <4 x float> %659, ptr %668, align 4, !tbaa !15, !alias.scope !82, !noalias !79
  store <4 x float> %667, ptr %669, align 4, !tbaa !15, !alias.scope !82, !noalias !79
  %index.next1247 = add nuw i64 %index1244, 8
  %670 = icmp eq i64 %index.next1247, %n.vec1238
  br i1 %670, label %middle.block1233, label %vector.body1243, !llvm.loop !84

middle.block1233:                                 ; preds = %vector.body1243
  br i1 %cmp.n1248, label %._crit_edge876, label %scalar.ph1234.preheader

scalar.ph1234.preheader:                          ; preds = %middle.block1233, %vector.memcheck1222, %.lr.ph875
  %.9873.ph = phi i64 [ %490, %vector.memcheck1222 ], [ %490, %.lr.ph875 ], [ %ind.end1239, %middle.block1233 ]
  %.17872.ph = phi i64 [ %.16881, %vector.memcheck1222 ], [ %.16881, %.lr.ph875 ], [ %ind.end1241, %middle.block1233 ]
  br label %scalar.ph1234

scalar.ph1234:                                    ; preds = %scalar.ph1234.preheader, %scalar.ph1234
  %.9873 = phi i64 [ %674, %scalar.ph1234 ], [ %.9873.ph, %scalar.ph1234.preheader ]
  %.17872 = phi i64 [ %671, %scalar.ph1234 ], [ %.17872.ph, %scalar.ph1234.preheader ]
  %671 = add nsw i64 %.17872, 1
  %gep879 = getelementptr %struct.complex, ptr %invariant.gep878, i64 %.9873
  %672 = load float, ptr %gep879, align 4, !tbaa !9
  %673 = getelementptr float, ptr %23, i64 %.17872
  store float %672, ptr %673, align 4, !tbaa !15
  %674 = add i64 %.9873, 1
  %exitcond962.not = icmp eq i64 %674, %639
  br i1 %exitcond962.not, label %._crit_edge876, label %scalar.ph1234, !llvm.loop !85

._crit_edge876:                                   ; preds = %scalar.ph1234, %middle.block1233
  %.lcssa1017 = phi i64 [ %ind.end1241, %middle.block1233 ], [ %671, %scalar.ph1234 ]
  %675 = add nuw i64 %.9609882, 1
  %exitcond963.not = icmp eq i64 %.9609882, %567
  br i1 %exitcond963.not, label %._crit_edge885, label %.lr.ph875, !llvm.loop !86

._crit_edge885:                                   ; preds = %._crit_edge876, %.lr.ph884, %._crit_edge870.thread, %._crit_edge870
  %676 = phi i64 [ %569, %._crit_edge870.thread ], [ %634, %._crit_edge870 ], [ %635, %.lr.ph884 ], [ %635, %._crit_edge876 ]
  %677 = getelementptr inbounds float, ptr %10, i64 %481
  %.idx664 = shl i64 %676, 3
  %678 = getelementptr i8, ptr %23, i64 %.idx664
  %679 = call i32 @f2c_sgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %33, ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef nonnull @c_b9, ptr noundef %677, ptr noundef nonnull %9, ptr noundef %678, ptr noundef nonnull %33, ptr noundef nonnull @c_b10, ptr noundef %23, ptr noundef nonnull %33) #4
  %680 = load i64, ptr %33, align 8, !tbaa !5
  %681 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %681, ptr %28, align 8, !tbaa !5
  %.not665895 = icmp slt i64 %681, 1
  br i1 %.not665895, label %._crit_edge900, label %.lr.ph899.preheader

.lr.ph899.preheader:                              ; preds = %._crit_edge885
  %682 = shl i64 %680, 1
  %683 = mul i64 %682, %681
  br label %.lr.ph899

.lr.ph899:                                        ; preds = %.lr.ph899.preheader, %._crit_edge891
  %684 = phi i64 [ %695, %._crit_edge891 ], [ %681, %.lr.ph899.preheader ]
  %.10610897 = phi i64 [ %696, %._crit_edge891 ], [ 1, %.lr.ph899.preheader ]
  %.18896 = phi i64 [ %.19.lcssa, %._crit_edge891 ], [ %683, %.lr.ph899.preheader ]
  %685 = load i64, ptr %33, align 8, !tbaa !5
  %686 = add i64 %685, %481
  %.not669886.not = icmp slt i64 %481, %686
  br i1 %.not669886.not, label %.lr.ph890, label %._crit_edge891

.lr.ph890:                                        ; preds = %.lr.ph899
  %687 = mul nsw i64 %.10610897, %36
  %invariant.gep893 = getelementptr %struct.complex, ptr %38, i64 %687
  %688 = add i64 %490, %685
  br label %689

689:                                              ; preds = %.lr.ph890, %689
  %.10888 = phi i64 [ %490, %.lr.ph890 ], [ %694, %689 ]
  %.19887 = phi i64 [ %.18896, %.lr.ph890 ], [ %690, %689 ]
  %690 = add nsw i64 %.19887, 1
  %gep894 = getelementptr %struct.complex, ptr %invariant.gep893, i64 %.10888
  %691 = call double @r_imag(ptr noundef %gep894) #4
  %692 = fptrunc double %691 to float
  %693 = getelementptr float, ptr %23, i64 %.19887
  store float %692, ptr %693, align 4, !tbaa !15
  %694 = add i64 %.10888, 1
  %exitcond964.not = icmp eq i64 %694, %688
  br i1 %exitcond964.not, label %._crit_edge891.loopexit, label %689, !llvm.loop !87

._crit_edge891.loopexit:                          ; preds = %689
  %.pre978 = load i64, ptr %28, align 8, !tbaa !5
  br label %._crit_edge891

._crit_edge891:                                   ; preds = %._crit_edge891.loopexit, %.lr.ph899
  %695 = phi i64 [ %684, %.lr.ph899 ], [ %.pre978, %._crit_edge891.loopexit ]
  %.19.lcssa = phi i64 [ %.18896, %.lr.ph899 ], [ %690, %._crit_edge891.loopexit ]
  %696 = add nuw nsw i64 %.10610897, 1
  %.not665.not = icmp slt i64 %.10610897, %695
  br i1 %.not665.not, label %.lr.ph899, label %._crit_edge900.loopexit, !llvm.loop !88

._crit_edge900.loopexit:                          ; preds = %._crit_edge891
  %.pre979 = load i64, ptr %33, align 8, !tbaa !5
  %.pre980 = load i64, ptr %3, align 8, !tbaa !5
  br label %._crit_edge900

._crit_edge900:                                   ; preds = %._crit_edge900.loopexit, %._crit_edge885
  %697 = phi i64 [ %.pre980, %._crit_edge900.loopexit ], [ %681, %._crit_edge885 ]
  %698 = phi i64 [ %.pre979, %._crit_edge900.loopexit ], [ %680, %._crit_edge885 ]
  %699 = mul nsw i64 %697, %698
  %.idx666 = shl i64 %699, 3
  %700 = getelementptr i8, ptr %23, i64 %.idx666
  %701 = getelementptr float, ptr %23, i64 %699
  %702 = call i32 @f2c_sgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %33, ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef nonnull @c_b9, ptr noundef %677, ptr noundef nonnull %9, ptr noundef %700, ptr noundef nonnull %33, ptr noundef nonnull @c_b10, ptr noundef %701, ptr noundef nonnull %33) #4
  %703 = load i64, ptr %33, align 8, !tbaa !5
  %704 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %704, ptr %28, align 8, !tbaa !5
  %.not667912 = icmp sgt i64 %704, 0
  %705 = add i64 %703, %481
  %.not668901.not = icmp slt i64 %481, %705
  %or.cond1012 = select i1 %.not667912, i1 %.not668901.not, i1 false
  br i1 %or.cond1012, label %.lr.ph906.preheader, label %._crit_edge918

.lr.ph906.preheader:                              ; preds = %._crit_edge900
  %706 = mul nsw i64 %704, %703
  %707 = add i64 %703, -1
  %708 = shl i64 %481, 3
  %709 = or disjoint i64 %708, 4
  %scevgep1181 = getelementptr i8, ptr %6, i64 %708
  %710 = add nsw i64 %704, -1
  %711 = mul i64 %473, %710
  %712 = shl i64 %703, 3
  %713 = getelementptr i8, ptr %6, i64 %711
  %714 = getelementptr i8, ptr %713, i64 %712
  %scevgep1182 = getelementptr i8, ptr %714, i64 %708
  %715 = shl i64 %703, 2
  %scevgep1184 = getelementptr i8, ptr %23, i64 %715
  %716 = mul i64 %715, %704
  %scevgep1186 = getelementptr i8, ptr %23, i64 %716
  %min.iters.check1199 = icmp ult i64 %703, 24
  %717 = getelementptr i8, ptr %6, i64 %709
  %718 = getelementptr i8, ptr %6, i64 %708
  %mul.result1174 = shl i64 %707, 3
  %mul.result1178 = shl i64 %707, 3
  %mul.overflow1179 = icmp ugt i64 %707, 2305843009213693951
  %bound01191 = icmp ult ptr %scevgep1181, %scevgep1186
  %bound11192 = icmp ugt ptr %scevgep1182, %23
  %found.conflict1193 = and i1 %bound01191, %bound11192
  %719 = or i64 %473, %715
  %720 = icmp slt i64 %719, 0
  %721 = or i1 %found.conflict1193, %720
  %n.vec1202 = and i64 %703, 4611686018427387900
  %ind.end1207 = add i64 %490, %n.vec1202
  %cmp.n1221 = icmp eq i64 %703, %n.vec1202
  br label %.lr.ph906

.lr.ph906:                                        ; preds = %.lr.ph906.preheader, %._crit_edge907
  %indvar1170 = phi i64 [ 0, %.lr.ph906.preheader ], [ %indvar.next1171, %._crit_edge907 ]
  %.6915 = phi i64 [ 0, %.lr.ph906.preheader ], [ %725, %._crit_edge907 ]
  %.6590914 = phi i64 [ %706, %.lr.ph906.preheader ], [ %.lcssa1019, %._crit_edge907 ]
  %.11611913 = phi i64 [ 1, %.lr.ph906.preheader ], [ %765, %._crit_edge907 ]
  %722 = add i64 %703, %.6915
  %723 = add i64 %707, %.6915
  %724 = mul nsw i64 %.11611913, %39
  %invariant.gep910 = getelementptr %struct.complex, ptr %41, i64 %724
  %725 = add i64 %703, %.6915
  br i1 %min.iters.check1199, label %scalar.ph1198.preheader, label %vector.scevcheck1169

vector.scevcheck1169:                             ; preds = %.lr.ph906
  %726 = mul i64 %472, %indvar1170
  %scevgep1176 = getelementptr i8, ptr %717, i64 %726
  %scevgep1172 = getelementptr i8, ptr %718, i64 %726
  %727 = getelementptr i8, ptr %scevgep1172, i64 %mul.result1174
  %728 = icmp ult ptr %727, %scevgep1172
  %729 = getelementptr i8, ptr %scevgep1176, i64 %mul.result1178
  %730 = icmp ult ptr %729, %scevgep1176
  %731 = or i1 %730, %mul.overflow1179
  %732 = or i1 %728, %731
  br i1 %732, label %scalar.ph1198.preheader, label %vector.memcheck1180

vector.memcheck1180:                              ; preds = %vector.scevcheck1169
  %733 = shl i64 %.6590914, 2
  %scevgep1183 = getelementptr i8, ptr %23, i64 %733
  %scevgep1185 = getelementptr i8, ptr %scevgep1184, i64 %733
  %bound01187 = icmp ult ptr %scevgep1181, %scevgep1185
  %bound11188 = icmp ult ptr %scevgep1183, %scevgep1182
  %found.conflict1189 = and i1 %bound01187, %bound11188
  %734 = or i1 %found.conflict1189, %stride.check1190
  %conflict.rdx1196 = or i1 %734, %721
  br i1 %conflict.rdx1196, label %scalar.ph1198.preheader, label %vector.ph1200

vector.ph1200:                                    ; preds = %vector.memcheck1180
  %ind.end1203 = add i64 %.6915, %n.vec1202
  %ind.end1205 = add i64 %.6590914, %n.vec1202
  %735 = getelementptr float, ptr %23, i64 %.6915
  %736 = getelementptr float, ptr %23, i64 %.6590914
  %invariant.gep1453 = getelementptr i8, ptr %invariant.gep910, i64 16
  br label %vector.body1209

vector.body1209:                                  ; preds = %vector.body1209, %vector.ph1200
  %index1210 = phi i64 [ 0, %vector.ph1200 ], [ %index.next1220, %vector.body1209 ]
  %offset.idx1213 = add i64 %490, %index1210
  %737 = getelementptr float, ptr %735, i64 %index1210
  %738 = getelementptr i8, ptr %737, i64 8
  %wide.load1214 = load <2 x float>, ptr %737, align 4, !tbaa !15, !alias.scope !89
  %wide.load1215 = load <2 x float>, ptr %738, align 4, !tbaa !15, !alias.scope !89
  %739 = getelementptr float, ptr %736, i64 %index1210
  %740 = getelementptr i8, ptr %739, i64 8
  %wide.load1216 = load <2 x float>, ptr %739, align 4, !tbaa !15, !alias.scope !92
  %wide.load1217 = load <2 x float>, ptr %740, align 4, !tbaa !15, !alias.scope !92
  %741 = getelementptr %struct.complex, ptr %invariant.gep910, i64 %offset.idx1213
  %gep1454 = getelementptr %struct.complex, ptr %invariant.gep1453, i64 %offset.idx1213
  %interleaved.vec1218 = shufflevector <2 x float> %wide.load1214, <2 x float> %wide.load1216, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec1218, ptr %741, align 4, !tbaa !15
  %interleaved.vec1219 = shufflevector <2 x float> %wide.load1215, <2 x float> %wide.load1217, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec1219, ptr %gep1454, align 4, !tbaa !15
  %index.next1220 = add nuw i64 %index1210, 4
  %742 = icmp eq i64 %index.next1220, %n.vec1202
  br i1 %742, label %middle.block1197, label %vector.body1209, !llvm.loop !94

middle.block1197:                                 ; preds = %vector.body1209
  br i1 %cmp.n1221, label %._crit_edge907, label %scalar.ph1198.preheader

scalar.ph1198.preheader:                          ; preds = %middle.block1197, %vector.memcheck1180, %vector.scevcheck1169, %.lr.ph906
  %.7904.ph = phi i64 [ %.6915, %vector.memcheck1180 ], [ %.6915, %vector.scevcheck1169 ], [ %.6915, %.lr.ph906 ], [ %ind.end1203, %middle.block1197 ]
  %.7591903.ph = phi i64 [ %.6590914, %vector.memcheck1180 ], [ %.6590914, %vector.scevcheck1169 ], [ %.6590914, %.lr.ph906 ], [ %ind.end1205, %middle.block1197 ]
  %.11902.ph = phi i64 [ %490, %vector.memcheck1180 ], [ %490, %vector.scevcheck1169 ], [ %490, %.lr.ph906 ], [ %ind.end1207, %middle.block1197 ]
  %743 = sub i64 %722, %.7904.ph
  %xtraiter1356 = and i64 %743, 1
  %lcmp.mod1357.not = icmp eq i64 %xtraiter1356, 0
  br i1 %lcmp.mod1357.not, label %scalar.ph1198.prol.loopexit, label %scalar.ph1198.prol

scalar.ph1198.prol:                               ; preds = %scalar.ph1198.preheader
  %744 = add i64 %.7904.ph, 1
  %745 = add nsw i64 %.7591903.ph, 1
  %746 = getelementptr float, ptr %23, i64 %.7904.ph
  %747 = load float, ptr %746, align 4, !tbaa !15
  %748 = getelementptr float, ptr %23, i64 %.7591903.ph
  %749 = load float, ptr %748, align 4, !tbaa !15
  %gep911.prol = getelementptr %struct.complex, ptr %invariant.gep910, i64 %.11902.ph
  store float %747, ptr %gep911.prol, align 4, !tbaa !9
  %750 = getelementptr inbounds i8, ptr %gep911.prol, i64 4
  store float %749, ptr %750, align 4, !tbaa !32
  %751 = add nsw i64 %.11902.ph, 1
  br label %scalar.ph1198.prol.loopexit

scalar.ph1198.prol.loopexit:                      ; preds = %scalar.ph1198.prol, %scalar.ph1198.preheader
  %.lcssa1343.unr = phi i64 [ poison, %scalar.ph1198.preheader ], [ %745, %scalar.ph1198.prol ]
  %.7904.unr = phi i64 [ %.7904.ph, %scalar.ph1198.preheader ], [ %744, %scalar.ph1198.prol ]
  %.7591903.unr = phi i64 [ %.7591903.ph, %scalar.ph1198.preheader ], [ %745, %scalar.ph1198.prol ]
  %.11902.unr = phi i64 [ %.11902.ph, %scalar.ph1198.preheader ], [ %751, %scalar.ph1198.prol ]
  %752 = icmp eq i64 %723, %.7904.ph
  br i1 %752, label %._crit_edge907, label %scalar.ph1198

scalar.ph1198:                                    ; preds = %scalar.ph1198.prol.loopexit, %scalar.ph1198
  %.7904 = phi i64 [ %758, %scalar.ph1198 ], [ %.7904.unr, %scalar.ph1198.prol.loopexit ]
  %.7591903 = phi i64 [ %759, %scalar.ph1198 ], [ %.7591903.unr, %scalar.ph1198.prol.loopexit ]
  %.11902 = phi i64 [ %764, %scalar.ph1198 ], [ %.11902.unr, %scalar.ph1198.prol.loopexit ]
  %753 = getelementptr float, ptr %23, i64 %.7904
  %754 = load float, ptr %753, align 4, !tbaa !15
  %755 = getelementptr float, ptr %23, i64 %.7591903
  %756 = load float, ptr %755, align 4, !tbaa !15
  %gep911 = getelementptr %struct.complex, ptr %invariant.gep910, i64 %.11902
  store float %754, ptr %gep911, align 4, !tbaa !9
  %757 = getelementptr inbounds i8, ptr %gep911, i64 4
  store float %756, ptr %757, align 4, !tbaa !32
  %758 = add i64 %.7904, 2
  %759 = add nsw i64 %.7591903, 2
  %gep1456 = getelementptr float, ptr %invariant.gep1455, i64 %.7904
  %760 = load float, ptr %gep1456, align 4, !tbaa !15
  %gep1458 = getelementptr float, ptr %invariant.gep1457, i64 %.7591903
  %761 = load float, ptr %gep1458, align 4, !tbaa !15
  %762 = getelementptr %struct.complex, ptr %invariant.gep910, i64 %.11902
  %gep911.1 = getelementptr i8, ptr %762, i64 8
  store float %760, ptr %gep911.1, align 4, !tbaa !9
  %763 = getelementptr i8, ptr %762, i64 12
  store float %761, ptr %763, align 4, !tbaa !32
  %764 = add nsw i64 %.11902, 2
  %exitcond965.not.1 = icmp eq i64 %758, %725
  br i1 %exitcond965.not.1, label %._crit_edge907, label %scalar.ph1198, !llvm.loop !95

._crit_edge907:                                   ; preds = %scalar.ph1198.prol.loopexit, %scalar.ph1198, %middle.block1197
  %.lcssa1019 = phi i64 [ %ind.end1205, %middle.block1197 ], [ %.lcssa1343.unr, %scalar.ph1198.prol.loopexit ], [ %759, %scalar.ph1198 ]
  %765 = add nuw i64 %.11611913, 1
  %exitcond966.not = icmp eq i64 %.11611913, %704
  %indvar.next1171 = add i64 %indvar1170, 1
  br i1 %exitcond966.not, label %._crit_edge918, label %.lr.ph906, !llvm.loop !96

._crit_edge918:                                   ; preds = %._crit_edge907, %._crit_edge900
  %766 = add nsw i64 %.4634924, 1
  %767 = load i64, ptr %27, align 8, !tbaa !5
  %.not657.not = icmp slt i64 %.4634924, %767
  br i1 %.not657.not, label %478, label %.loopexit, !llvm.loop !97

.loopexit:                                        ; preds = %._crit_edge790, %._crit_edge918, %._crit_edge778, %._crit_edge822, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #4
  ret i32 0
}

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

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

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

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

declare double @r_imag(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 4}
!11 = !{!"float", !7, i64 0}
!12 = !{!13}
!13 = distinct !{!13, !14}
!14 = distinct !{!14, !"LVerDomain"}
!15 = !{!11, !11, i64 0}
!16 = !{!17}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !19, !20, !21}
!19 = !{!"llvm.loop.mustprogress"}
!20 = !{!"llvm.loop.isvectorized", i32 1}
!21 = !{!"llvm.loop.unroll.runtime.disable"}
!22 = distinct !{!22, !19, !20}
!23 = distinct !{!23, !19}
!24 = distinct !{!24, !19}
!25 = distinct !{!25, !19}
!26 = !{!27}
!27 = distinct !{!27, !28}
!28 = distinct !{!28, !"LVerDomain"}
!29 = !{!30}
!30 = distinct !{!30, !28}
!31 = distinct !{!31, !19, !20, !21}
!32 = !{!10, !11, i64 4}
!33 = distinct !{!33, !19, !20}
!34 = distinct !{!34, !19}
!35 = !{!36}
!36 = distinct !{!36, !37}
!37 = distinct !{!37, !"LVerDomain"}
!38 = !{!39}
!39 = distinct !{!39, !37}
!40 = distinct !{!40, !19, !20, !21}
!41 = distinct !{!41, !19, !20}
!42 = distinct !{!42, !19}
!43 = distinct !{!43, !19}
!44 = distinct !{!44, !19}
!45 = !{!46}
!46 = distinct !{!46, !47}
!47 = distinct !{!47, !"LVerDomain"}
!48 = !{!49}
!49 = distinct !{!49, !47}
!50 = distinct !{!50, !19, !20, !21}
!51 = distinct !{!51, !19, !20}
!52 = distinct !{!52, !19}
!53 = distinct !{!53, !19}
!54 = distinct !{!54, !19}
!55 = distinct !{!55, !19}
!56 = distinct !{!56, !19}
!57 = distinct !{!57, !19}
!58 = distinct !{!58, !19}
!59 = !{!60}
!60 = distinct !{!60, !61}
!61 = distinct !{!61, !"LVerDomain"}
!62 = !{!63}
!63 = distinct !{!63, !61}
!64 = distinct !{!64, !19, !20, !21}
!65 = distinct !{!65, !66}
!66 = !{!"llvm.loop.unroll.disable"}
!67 = distinct !{!67, !19, !20}
!68 = distinct !{!68, !19}
!69 = distinct !{!69, !19}
!70 = distinct !{!70, !19}
!71 = !{!72}
!72 = distinct !{!72, !73}
!73 = distinct !{!73, !"LVerDomain"}
!74 = !{!75}
!75 = distinct !{!75, !73}
!76 = distinct !{!76, !19, !20, !21}
!77 = distinct !{!77, !19, !20}
!78 = distinct !{!78, !19}
!79 = !{!80}
!80 = distinct !{!80, !81}
!81 = distinct !{!81, !"LVerDomain"}
!82 = !{!83}
!83 = distinct !{!83, !81}
!84 = distinct !{!84, !19, !20, !21}
!85 = distinct !{!85, !19, !20}
!86 = distinct !{!86, !19}
!87 = distinct !{!87, !19}
!88 = distinct !{!88, !19}
!89 = !{!90}
!90 = distinct !{!90, !91}
!91 = distinct !{!91, !"LVerDomain"}
!92 = !{!93}
!93 = distinct !{!93, !91}
!94 = distinct !{!94, !19, !20, !21}
!95 = distinct !{!95, !19, !20}
!96 = distinct !{!96, !19}
!97 = distinct !{!97, !19}


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