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

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

@c__1 = external hidden global i64, align 8
@c_n1 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_true = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4
@c_b2 = external hidden global %struct.complex, align 4
@c__12 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1

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

156:                                              ; preds = %25
  %157 = load i64, ptr %62, align 8, !tbaa !9
  br label %160

158:                                              ; preds = %25
  %159 = load i64, ptr %63, align 8, !tbaa !9
  br label %160

160:                                              ; preds = %158, %156
  %161 = phi i64 [ %157, %156 ], [ %159, %158 ]
  store i64 %161, ptr %77, align 8, !tbaa !9
  %162 = load i64, ptr %77, align 8, !tbaa !9
  %163 = icmp sle i64 %162, 2
  br i1 %163, label %164, label %165

164:                                              ; preds = %160
  store i64 1, ptr %99, align 8, !tbaa !9
  br label %240

165:                                              ; preds = %160
  %166 = load i64, ptr %77, align 8, !tbaa !9
  %167 = sub nsw i64 %166, 1
  store i64 %167, ptr %62, align 8, !tbaa !9
  %168 = load ptr, ptr %45, align 8, !tbaa !5
  %169 = load i64, ptr %55, align 8, !tbaa !9
  %170 = getelementptr inbounds %struct.complex, ptr %168, i64 %169
  %171 = load ptr, ptr %46, align 8, !tbaa !5
  %172 = load ptr, ptr %50, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.complex, ptr %172, i64 1
  %174 = load ptr, ptr %50, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.complex, ptr %174, i64 1
  %176 = call i32 @cgehrd_(ptr noundef %77, ptr noundef @c__1, ptr noundef %62, ptr noundef %170, ptr noundef %171, ptr noundef %173, ptr noundef %175, ptr noundef @c_n1, ptr noundef %88)
  %177 = load ptr, ptr %50, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct.complex, ptr %177, i64 1
  %179 = getelementptr inbounds %struct.complex, ptr %178, i32 0, i32 0
  %180 = load float, ptr %179, align 4, !tbaa !11
  %181 = fptosi float %180 to i64
  store i64 %181, ptr %83, align 8, !tbaa !9
  %182 = load i64, ptr %77, align 8, !tbaa !9
  %183 = sub nsw i64 %182, 1
  store i64 %183, ptr %62, align 8, !tbaa !9
  %184 = load ptr, ptr %45, align 8, !tbaa !5
  %185 = load i64, ptr %55, align 8, !tbaa !9
  %186 = getelementptr inbounds %struct.complex, ptr %184, i64 %185
  %187 = load ptr, ptr %46, align 8, !tbaa !5
  %188 = load ptr, ptr %50, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.complex, ptr %188, i64 1
  %190 = load ptr, ptr %42, align 8, !tbaa !5
  %191 = load i64, ptr %57, align 8, !tbaa !9
  %192 = getelementptr inbounds %struct.complex, ptr %190, i64 %191
  %193 = load ptr, ptr %43, align 8, !tbaa !5
  %194 = load ptr, ptr %50, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.complex, ptr %194, i64 1
  %196 = call i32 @cunmhr_(ptr noundef @.str, ptr noundef @.str.1, ptr noundef %77, ptr noundef %77, ptr noundef @c__1, ptr noundef %62, ptr noundef %186, ptr noundef %187, ptr noundef %189, ptr noundef %192, ptr noundef %193, ptr noundef %195, ptr noundef @c_n1, ptr noundef %88)
  %197 = load ptr, ptr %50, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.complex, ptr %197, i64 1
  %199 = getelementptr inbounds %struct.complex, ptr %198, i32 0, i32 0
  %200 = load float, ptr %199, align 4, !tbaa !11
  %201 = fptosi float %200 to i64
  store i64 %201, ptr %84, align 8, !tbaa !9
  %202 = load ptr, ptr %45, align 8, !tbaa !5
  %203 = load i64, ptr %55, align 8, !tbaa !9
  %204 = getelementptr inbounds %struct.complex, ptr %202, i64 %203
  %205 = load ptr, ptr %46, align 8, !tbaa !5
  %206 = load ptr, ptr %41, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.complex, ptr %206, i64 1
  %208 = load ptr, ptr %42, align 8, !tbaa !5
  %209 = load i64, ptr %57, align 8, !tbaa !9
  %210 = getelementptr inbounds %struct.complex, ptr %208, i64 %209
  %211 = load ptr, ptr %43, align 8, !tbaa !5
  %212 = load ptr, ptr %50, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.complex, ptr %212, i64 1
  %214 = call i32 @claqr4_(ptr noundef @c_true, ptr noundef @c_true, ptr noundef %77, ptr noundef @c__1, ptr noundef %77, ptr noundef %204, ptr noundef %205, ptr noundef %207, ptr noundef @c__1, ptr noundef %77, ptr noundef %210, ptr noundef %211, ptr noundef %213, ptr noundef @c_n1, ptr noundef %94)
  %215 = load ptr, ptr %50, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.complex, ptr %215, i64 1
  %217 = getelementptr inbounds %struct.complex, ptr %216, i32 0, i32 0
  %218 = load float, ptr %217, align 4, !tbaa !11
  %219 = fptosi float %218 to i64
  store i64 %219, ptr %85, align 8, !tbaa !9
  %220 = load i64, ptr %77, align 8, !tbaa !9
  %221 = load i64, ptr %83, align 8, !tbaa !9
  %222 = load i64, ptr %84, align 8, !tbaa !9
  %223 = icmp sge i64 %221, %222
  br i1 %223, label %224, label %226

224:                                              ; preds = %165
  %225 = load i64, ptr %83, align 8, !tbaa !9
  br label %228

226:                                              ; preds = %165
  %227 = load i64, ptr %84, align 8, !tbaa !9
  br label %228

228:                                              ; preds = %226, %224
  %229 = phi i64 [ %225, %224 ], [ %227, %226 ]
  %230 = add nsw i64 %220, %229
  store i64 %230, ptr %62, align 8, !tbaa !9
  %231 = load i64, ptr %62, align 8, !tbaa !9
  %232 = load i64, ptr %85, align 8, !tbaa !9
  %233 = icmp sge i64 %231, %232
  br i1 %233, label %234, label %236

234:                                              ; preds = %228
  %235 = load i64, ptr %62, align 8, !tbaa !9
  br label %238

236:                                              ; preds = %228
  %237 = load i64, ptr %85, align 8, !tbaa !9
  br label %238

238:                                              ; preds = %236, %234
  %239 = phi i64 [ %235, %234 ], [ %237, %236 ]
  store i64 %239, ptr %99, align 8, !tbaa !9
  br label %240

240:                                              ; preds = %238, %164
  %241 = load ptr, ptr %51, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  %243 = icmp eq i64 %242, -1
  br i1 %243, label %244, label %260

244:                                              ; preds = %240
  %245 = load i64, ptr %99, align 8, !tbaa !9
  %246 = sitofp i64 %245 to float
  store float %246, ptr %66, align 4, !tbaa !14
  %247 = load float, ptr %66, align 4, !tbaa !14
  %248 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 0
  store float %247, ptr %248, align 4, !tbaa !11
  %249 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 1
  store float 0.000000e+00, ptr %249, align 4, !tbaa !15
  %250 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 0
  %251 = load float, ptr %250, align 4, !tbaa !11
  %252 = load ptr, ptr %50, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.complex, ptr %252, i64 1
  %254 = getelementptr inbounds %struct.complex, ptr %253, i32 0, i32 0
  store float %251, ptr %254, align 4, !tbaa !11
  %255 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 1
  %256 = load float, ptr %255, align 4, !tbaa !15
  %257 = load ptr, ptr %50, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.complex, ptr %257, i64 1
  %259 = getelementptr inbounds %struct.complex, ptr %258, i32 0, i32 1
  store float %256, ptr %259, align 4, !tbaa !15
  store i32 0, ptr %26, align 4
  store i32 1, ptr %100, align 4
  br label %1454

260:                                              ; preds = %240
  %261 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 0, ptr %261, align 8, !tbaa !9
  %262 = load ptr, ptr %40, align 8, !tbaa !5
  store i64 0, ptr %262, align 8, !tbaa !9
  %263 = load ptr, ptr %50, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.complex, ptr %263, i64 1
  %265 = getelementptr inbounds %struct.complex, ptr %264, i32 0, i32 0
  store float 1.000000e+00, ptr %265, align 4, !tbaa !11
  %266 = load ptr, ptr %50, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.complex, ptr %266, i64 1
  %268 = getelementptr inbounds %struct.complex, ptr %267, i32 0, i32 1
  store float 0.000000e+00, ptr %268, align 4, !tbaa !15
  %269 = load ptr, ptr %30, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !9
  %271 = load ptr, ptr %31, align 8, !tbaa !5
  %272 = load i64, ptr %271, align 8, !tbaa !9
  %273 = icmp sgt i64 %270, %272
  br i1 %273, label %274, label %275

274:                                              ; preds = %260
  store i32 0, ptr %26, align 4
  store i32 1, ptr %100, align 4
  br label %1454

275:                                              ; preds = %260
  %276 = load ptr, ptr %32, align 8, !tbaa !5
  %277 = load i64, ptr %276, align 8, !tbaa !9
  %278 = icmp slt i64 %277, 1
  br i1 %278, label %279, label %280

279:                                              ; preds = %275
  store i32 0, ptr %26, align 4
  store i32 1, ptr %100, align 4
  br label %1454

280:                                              ; preds = %275
  %281 = call double @slamch_(ptr noundef @.str.2)
  %282 = fptrunc double %281 to float
  store float %282, ptr %96, align 4, !tbaa !14
  %283 = load float, ptr %96, align 4, !tbaa !14
  %284 = fdiv float 1.000000e+00, %283
  store float %284, ptr %97, align 4, !tbaa !14
  %285 = call i32 @slabad_(ptr noundef %96, ptr noundef %97)
  %286 = call double @slamch_(ptr noundef @.str.3)
  %287 = fptrunc double %286 to float
  store float %287, ptr %82, align 4, !tbaa !14
  %288 = load float, ptr %96, align 4, !tbaa !14
  %289 = load ptr, ptr %29, align 8, !tbaa !5
  %290 = load i64, ptr %289, align 8, !tbaa !9
  %291 = sitofp i64 %290 to float
  %292 = load float, ptr %82, align 4, !tbaa !14
  %293 = fdiv float %291, %292
  %294 = fmul float %288, %293
  store float %294, ptr %98, align 4, !tbaa !14
  %295 = load ptr, ptr %32, align 8, !tbaa !5
  %296 = load i64, ptr %295, align 8, !tbaa !9
  store i64 %296, ptr %62, align 8, !tbaa !9
  %297 = load ptr, ptr %31, align 8, !tbaa !5
  %298 = load i64, ptr %297, align 8, !tbaa !9
  %299 = load ptr, ptr %30, align 8, !tbaa !5
  %300 = load i64, ptr %299, align 8, !tbaa !9
  %301 = sub nsw i64 %298, %300
  %302 = add nsw i64 %301, 1
  store i64 %302, ptr %63, align 8, !tbaa !9
  %303 = load i64, ptr %62, align 8, !tbaa !9
  %304 = load i64, ptr %63, align 8, !tbaa !9
  %305 = icmp sle i64 %303, %304
  br i1 %305, label %306, label %308

306:                                              ; preds = %280
  %307 = load i64, ptr %62, align 8, !tbaa !9
  br label %310

308:                                              ; preds = %280
  %309 = load i64, ptr %63, align 8, !tbaa !9
  br label %310

310:                                              ; preds = %308, %306
  %311 = phi i64 [ %307, %306 ], [ %309, %308 ]
  store i64 %311, ptr %77, align 8, !tbaa !9
  %312 = load ptr, ptr %31, align 8, !tbaa !5
  %313 = load i64, ptr %312, align 8, !tbaa !9
  %314 = load i64, ptr %77, align 8, !tbaa !9
  %315 = sub nsw i64 %313, %314
  %316 = add nsw i64 %315, 1
  store i64 %316, ptr %95, align 8, !tbaa !9
  %317 = load i64, ptr %95, align 8, !tbaa !9
  %318 = load ptr, ptr %30, align 8, !tbaa !5
  %319 = load i64, ptr %318, align 8, !tbaa !9
  %320 = icmp eq i64 %317, %319
  br i1 %320, label %321, label %324

321:                                              ; preds = %310
  %322 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 0
  store float 0.000000e+00, ptr %322, align 4, !tbaa !11
  %323 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 1
  store float 0.000000e+00, ptr %323, align 4, !tbaa !15
  br label %343

324:                                              ; preds = %310
  %325 = load i64, ptr %95, align 8, !tbaa !9
  %326 = load i64, ptr %95, align 8, !tbaa !9
  %327 = sub nsw i64 %326, 1
  %328 = load i64, ptr %52, align 8, !tbaa !9
  %329 = mul nsw i64 %327, %328
  %330 = add nsw i64 %325, %329
  store i64 %330, ptr %62, align 8, !tbaa !9
  %331 = load ptr, ptr %33, align 8, !tbaa !5
  %332 = load i64, ptr %62, align 8, !tbaa !9
  %333 = getelementptr inbounds %struct.complex, ptr %331, i64 %332
  %334 = getelementptr inbounds %struct.complex, ptr %333, i32 0, i32 0
  %335 = load float, ptr %334, align 4, !tbaa !11
  %336 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 0
  store float %335, ptr %336, align 4, !tbaa !11
  %337 = load ptr, ptr %33, align 8, !tbaa !5
  %338 = load i64, ptr %62, align 8, !tbaa !9
  %339 = getelementptr inbounds %struct.complex, ptr %337, i64 %338
  %340 = getelementptr inbounds %struct.complex, ptr %339, i32 0, i32 1
  %341 = load float, ptr %340, align 4, !tbaa !15
  %342 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 1
  store float %341, ptr %342, align 4, !tbaa !15
  br label %343

343:                                              ; preds = %324, %321
  %344 = load ptr, ptr %31, align 8, !tbaa !5
  %345 = load i64, ptr %344, align 8, !tbaa !9
  %346 = load i64, ptr %95, align 8, !tbaa !9
  %347 = icmp eq i64 %345, %346
  br i1 %347, label %348, label %486

348:                                              ; preds = %343
  %349 = load i64, ptr %95, align 8, !tbaa !9
  store i64 %349, ptr %62, align 8, !tbaa !9
  %350 = load i64, ptr %95, align 8, !tbaa !9
  %351 = load i64, ptr %95, align 8, !tbaa !9
  %352 = load i64, ptr %52, align 8, !tbaa !9
  %353 = mul nsw i64 %351, %352
  %354 = add nsw i64 %350, %353
  store i64 %354, ptr %63, align 8, !tbaa !9
  %355 = load ptr, ptr %33, align 8, !tbaa !5
  %356 = load i64, ptr %63, align 8, !tbaa !9
  %357 = getelementptr inbounds %struct.complex, ptr %355, i64 %356
  %358 = getelementptr inbounds %struct.complex, ptr %357, i32 0, i32 0
  %359 = load float, ptr %358, align 4, !tbaa !11
  %360 = load ptr, ptr %41, align 8, !tbaa !5
  %361 = load i64, ptr %62, align 8, !tbaa !9
  %362 = getelementptr inbounds %struct.complex, ptr %360, i64 %361
  %363 = getelementptr inbounds %struct.complex, ptr %362, i32 0, i32 0
  store float %359, ptr %363, align 4, !tbaa !11
  %364 = load ptr, ptr %33, align 8, !tbaa !5
  %365 = load i64, ptr %63, align 8, !tbaa !9
  %366 = getelementptr inbounds %struct.complex, ptr %364, i64 %365
  %367 = getelementptr inbounds %struct.complex, ptr %366, i32 0, i32 1
  %368 = load float, ptr %367, align 4, !tbaa !15
  %369 = load ptr, ptr %41, align 8, !tbaa !5
  %370 = load i64, ptr %62, align 8, !tbaa !9
  %371 = getelementptr inbounds %struct.complex, ptr %369, i64 %370
  %372 = getelementptr inbounds %struct.complex, ptr %371, i32 0, i32 1
  store float %368, ptr %372, align 4, !tbaa !15
  %373 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 1, ptr %373, align 8, !tbaa !9
  %374 = load ptr, ptr %40, align 8, !tbaa !5
  store i64 0, ptr %374, align 8, !tbaa !9
  %375 = load i64, ptr %95, align 8, !tbaa !9
  %376 = load i64, ptr %95, align 8, !tbaa !9
  %377 = load i64, ptr %52, align 8, !tbaa !9
  %378 = mul nsw i64 %376, %377
  %379 = add nsw i64 %375, %378
  store i64 %379, ptr %62, align 8, !tbaa !9
  %380 = load float, ptr %98, align 4, !tbaa !14
  store float %380, ptr %70, align 4, !tbaa !14
  %381 = load float, ptr %82, align 4, !tbaa !14
  %382 = fpext float %381 to double
  %383 = load ptr, ptr %33, align 8, !tbaa !5
  %384 = load i64, ptr %62, align 8, !tbaa !9
  %385 = getelementptr inbounds %struct.complex, ptr %383, i64 %384
  %386 = getelementptr inbounds %struct.complex, ptr %385, i32 0, i32 0
  %387 = load float, ptr %386, align 4, !tbaa !11
  store float %387, ptr %66, align 4, !tbaa !14
  %388 = load float, ptr %66, align 4, !tbaa !14
  %389 = fcmp oge float %388, 0.000000e+00
  br i1 %389, label %390, label %392

390:                                              ; preds = %348
  %391 = load float, ptr %66, align 4, !tbaa !14
  br label %395

392:                                              ; preds = %348
  %393 = load float, ptr %66, align 4, !tbaa !14
  %394 = fneg float %393
  br label %395

395:                                              ; preds = %392, %390
  %396 = phi float [ %391, %390 ], [ %394, %392 ]
  %397 = fpext float %396 to double
  %398 = load ptr, ptr %33, align 8, !tbaa !5
  %399 = load i64, ptr %95, align 8, !tbaa !9
  %400 = load i64, ptr %95, align 8, !tbaa !9
  %401 = load i64, ptr %52, align 8, !tbaa !9
  %402 = mul nsw i64 %400, %401
  %403 = add nsw i64 %399, %402
  %404 = getelementptr inbounds %struct.complex, ptr %398, i64 %403
  %405 = call double @r_imag(ptr noundef %404)
  %406 = fptrunc double %405 to float
  store float %406, ptr %67, align 4, !tbaa !14
  %407 = load float, ptr %67, align 4, !tbaa !14
  %408 = fcmp oge float %407, 0.000000e+00
  br i1 %408, label %409, label %411

409:                                              ; preds = %395
  %410 = load float, ptr %67, align 4, !tbaa !14
  br label %414

411:                                              ; preds = %395
  %412 = load float, ptr %67, align 4, !tbaa !14
  %413 = fneg float %412
  br label %414

414:                                              ; preds = %411, %409
  %415 = phi float [ %410, %409 ], [ %413, %411 ]
  %416 = fpext float %415 to double
  %417 = fadd double %397, %416
  %418 = fmul double %382, %417
  %419 = fptrunc double %418 to float
  store float %419, ptr %71, align 4, !tbaa !14
  %420 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 0
  %421 = load float, ptr %420, align 4, !tbaa !11
  store float %421, ptr %68, align 4, !tbaa !14
  %422 = load float, ptr %68, align 4, !tbaa !14
  %423 = fcmp oge float %422, 0.000000e+00
  br i1 %423, label %424, label %426

424:                                              ; preds = %414
  %425 = load float, ptr %68, align 4, !tbaa !14
  br label %429

426:                                              ; preds = %414
  %427 = load float, ptr %68, align 4, !tbaa !14
  %428 = fneg float %427
  br label %429

429:                                              ; preds = %426, %424
  %430 = phi float [ %425, %424 ], [ %428, %426 ]
  %431 = fpext float %430 to double
  %432 = call double @r_imag(ptr noundef %76)
  %433 = fptrunc double %432 to float
  store float %433, ptr %69, align 4, !tbaa !14
  %434 = load float, ptr %69, align 4, !tbaa !14
  %435 = fcmp oge float %434, 0.000000e+00
  br i1 %435, label %436, label %438

436:                                              ; preds = %429
  %437 = load float, ptr %69, align 4, !tbaa !14
  br label %441

438:                                              ; preds = %429
  %439 = load float, ptr %69, align 4, !tbaa !14
  %440 = fneg float %439
  br label %441

441:                                              ; preds = %438, %436
  %442 = phi float [ %437, %436 ], [ %440, %438 ]
  %443 = fpext float %442 to double
  %444 = fadd double %431, %443
  %445 = load float, ptr %70, align 4, !tbaa !14
  %446 = load float, ptr %71, align 4, !tbaa !14
  %447 = fcmp oge float %445, %446
  br i1 %447, label %448, label %450

448:                                              ; preds = %441
  %449 = load float, ptr %70, align 4, !tbaa !14
  br label %452

450:                                              ; preds = %441
  %451 = load float, ptr %71, align 4, !tbaa !14
  br label %452

452:                                              ; preds = %450, %448
  %453 = phi float [ %449, %448 ], [ %451, %450 ]
  %454 = fpext float %453 to double
  %455 = fcmp ole double %444, %454
  br i1 %455, label %456, label %479

456:                                              ; preds = %452
  %457 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 0, ptr %457, align 8, !tbaa !9
  %458 = load ptr, ptr %40, align 8, !tbaa !5
  store i64 1, ptr %458, align 8, !tbaa !9
  %459 = load i64, ptr %95, align 8, !tbaa !9
  %460 = load ptr, ptr %30, align 8, !tbaa !5
  %461 = load i64, ptr %460, align 8, !tbaa !9
  %462 = icmp sgt i64 %459, %461
  br i1 %462, label %463, label %478

463:                                              ; preds = %456
  %464 = load i64, ptr %95, align 8, !tbaa !9
  %465 = load i64, ptr %95, align 8, !tbaa !9
  %466 = sub nsw i64 %465, 1
  %467 = load i64, ptr %52, align 8, !tbaa !9
  %468 = mul nsw i64 %466, %467
  %469 = add nsw i64 %464, %468
  store i64 %469, ptr %62, align 8, !tbaa !9
  %470 = load ptr, ptr %33, align 8, !tbaa !5
  %471 = load i64, ptr %62, align 8, !tbaa !9
  %472 = getelementptr inbounds %struct.complex, ptr %470, i64 %471
  %473 = getelementptr inbounds %struct.complex, ptr %472, i32 0, i32 0
  store float 0.000000e+00, ptr %473, align 4, !tbaa !11
  %474 = load ptr, ptr %33, align 8, !tbaa !5
  %475 = load i64, ptr %62, align 8, !tbaa !9
  %476 = getelementptr inbounds %struct.complex, ptr %474, i64 %475
  %477 = getelementptr inbounds %struct.complex, ptr %476, i32 0, i32 1
  store float 0.000000e+00, ptr %477, align 4, !tbaa !15
  br label %478

478:                                              ; preds = %463, %456
  br label %479

479:                                              ; preds = %478, %452
  %480 = load ptr, ptr %50, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.complex, ptr %480, i64 1
  %482 = getelementptr inbounds %struct.complex, ptr %481, i32 0, i32 0
  store float 1.000000e+00, ptr %482, align 4, !tbaa !11
  %483 = load ptr, ptr %50, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.complex, ptr %483, i64 1
  %485 = getelementptr inbounds %struct.complex, ptr %484, i32 0, i32 1
  store float 0.000000e+00, ptr %485, align 4, !tbaa !15
  store i32 0, ptr %26, align 4
  store i32 1, ptr %100, align 4
  br label %1454

486:                                              ; preds = %343
  %487 = load ptr, ptr %33, align 8, !tbaa !5
  %488 = load i64, ptr %95, align 8, !tbaa !9
  %489 = load i64, ptr %95, align 8, !tbaa !9
  %490 = load i64, ptr %52, align 8, !tbaa !9
  %491 = mul nsw i64 %489, %490
  %492 = add nsw i64 %488, %491
  %493 = getelementptr inbounds %struct.complex, ptr %487, i64 %492
  %494 = load ptr, ptr %34, align 8, !tbaa !5
  %495 = load ptr, ptr %45, align 8, !tbaa !5
  %496 = load i64, ptr %55, align 8, !tbaa !9
  %497 = getelementptr inbounds %struct.complex, ptr %495, i64 %496
  %498 = load ptr, ptr %46, align 8, !tbaa !5
  %499 = call i32 @clacpy_(ptr noundef @.str.4, ptr noundef %77, ptr noundef %77, ptr noundef %493, ptr noundef %494, ptr noundef %497, ptr noundef %498)
  %500 = load i64, ptr %77, align 8, !tbaa !9
  %501 = sub nsw i64 %500, 1
  store i64 %501, ptr %62, align 8, !tbaa !9
  %502 = load ptr, ptr %34, align 8, !tbaa !5
  %503 = load i64, ptr %502, align 8, !tbaa !9
  %504 = add nsw i64 %503, 1
  store i64 %504, ptr %63, align 8, !tbaa !9
  %505 = load ptr, ptr %46, align 8, !tbaa !5
  %506 = load i64, ptr %505, align 8, !tbaa !9
  %507 = add nsw i64 %506, 1
  store i64 %507, ptr %64, align 8, !tbaa !9
  %508 = load ptr, ptr %33, align 8, !tbaa !5
  %509 = load i64, ptr %95, align 8, !tbaa !9
  %510 = add nsw i64 %509, 1
  %511 = load i64, ptr %95, align 8, !tbaa !9
  %512 = load i64, ptr %52, align 8, !tbaa !9
  %513 = mul nsw i64 %511, %512
  %514 = add nsw i64 %510, %513
  %515 = getelementptr inbounds %struct.complex, ptr %508, i64 %514
  %516 = load ptr, ptr %45, align 8, !tbaa !5
  %517 = load i64, ptr %54, align 8, !tbaa !9
  %518 = add nsw i64 %517, 2
  %519 = getelementptr inbounds %struct.complex, ptr %516, i64 %518
  %520 = call i32 @f2c_ccopy(ptr noundef %62, ptr noundef %515, ptr noundef %63, ptr noundef %519, ptr noundef %64)
  %521 = load ptr, ptr %42, align 8, !tbaa !5
  %522 = load i64, ptr %57, align 8, !tbaa !9
  %523 = getelementptr inbounds %struct.complex, ptr %521, i64 %522
  %524 = load ptr, ptr %43, align 8, !tbaa !5
  %525 = call i32 @claset_(ptr noundef @.str.5, ptr noundef %77, ptr noundef %77, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %523, ptr noundef %524)
  %526 = load ptr, ptr %51, align 8, !tbaa !5
  %527 = call i64 @ilaenv_(ptr noundef @c__12, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %77, ptr noundef @c__1, ptr noundef %77, ptr noundef %526)
  store i64 %527, ptr %89, align 8, !tbaa !9
  %528 = load i64, ptr %77, align 8, !tbaa !9
  %529 = load i64, ptr %89, align 8, !tbaa !9
  %530 = icmp sgt i64 %528, %529
  br i1 %530, label %531, label %547

531:                                              ; preds = %486
  %532 = load ptr, ptr %45, align 8, !tbaa !5
  %533 = load i64, ptr %55, align 8, !tbaa !9
  %534 = getelementptr inbounds %struct.complex, ptr %532, i64 %533
  %535 = load ptr, ptr %46, align 8, !tbaa !5
  %536 = load ptr, ptr %41, align 8, !tbaa !5
  %537 = load i64, ptr %95, align 8, !tbaa !9
  %538 = getelementptr inbounds %struct.complex, ptr %536, i64 %537
  %539 = load ptr, ptr %42, align 8, !tbaa !5
  %540 = load i64, ptr %57, align 8, !tbaa !9
  %541 = getelementptr inbounds %struct.complex, ptr %539, i64 %540
  %542 = load ptr, ptr %43, align 8, !tbaa !5
  %543 = load ptr, ptr %50, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.complex, ptr %543, i64 1
  %545 = load ptr, ptr %51, align 8, !tbaa !5
  %546 = call i32 @claqr4_(ptr noundef @c_true, ptr noundef @c_true, ptr noundef %77, ptr noundef @c__1, ptr noundef %77, ptr noundef %534, ptr noundef %535, ptr noundef %538, ptr noundef @c__1, ptr noundef %77, ptr noundef %541, ptr noundef %542, ptr noundef %544, ptr noundef %545, ptr noundef %94)
  br label %560

547:                                              ; preds = %486
  %548 = load ptr, ptr %45, align 8, !tbaa !5
  %549 = load i64, ptr %55, align 8, !tbaa !9
  %550 = getelementptr inbounds %struct.complex, ptr %548, i64 %549
  %551 = load ptr, ptr %46, align 8, !tbaa !5
  %552 = load ptr, ptr %41, align 8, !tbaa !5
  %553 = load i64, ptr %95, align 8, !tbaa !9
  %554 = getelementptr inbounds %struct.complex, ptr %552, i64 %553
  %555 = load ptr, ptr %42, align 8, !tbaa !5
  %556 = load i64, ptr %57, align 8, !tbaa !9
  %557 = getelementptr inbounds %struct.complex, ptr %555, i64 %556
  %558 = load ptr, ptr %43, align 8, !tbaa !5
  %559 = call i32 @clahqr_(ptr noundef @c_true, ptr noundef @c_true, ptr noundef %77, ptr noundef @c__1, ptr noundef %77, ptr noundef %550, ptr noundef %551, ptr noundef %554, ptr noundef @c__1, ptr noundef %77, ptr noundef %557, ptr noundef %558, ptr noundef %94)
  br label %560

560:                                              ; preds = %547, %531
  %561 = load i64, ptr %77, align 8, !tbaa !9
  %562 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 %561, ptr %562, align 8, !tbaa !9
  %563 = load i64, ptr %94, align 8, !tbaa !9
  %564 = add nsw i64 %563, 1
  store i64 %564, ptr %91, align 8, !tbaa !9
  %565 = load i64, ptr %77, align 8, !tbaa !9
  store i64 %565, ptr %62, align 8, !tbaa !9
  %566 = load i64, ptr %94, align 8, !tbaa !9
  %567 = add nsw i64 %566, 1
  store i64 %567, ptr %81, align 8, !tbaa !9
  br label %568

568:                                              ; preds = %748, %560
  %569 = load i64, ptr %81, align 8, !tbaa !9
  %570 = load i64, ptr %62, align 8, !tbaa !9
  %571 = icmp sle i64 %569, %570
  br i1 %571, label %572, label %751

572:                                              ; preds = %568
  %573 = load ptr, ptr %39, align 8, !tbaa !5
  %574 = load i64, ptr %573, align 8, !tbaa !9
  %575 = load ptr, ptr %39, align 8, !tbaa !5
  %576 = load i64, ptr %575, align 8, !tbaa !9
  %577 = load i64, ptr %54, align 8, !tbaa !9
  %578 = mul nsw i64 %576, %577
  %579 = add nsw i64 %574, %578
  store i64 %579, ptr %63, align 8, !tbaa !9
  %580 = load ptr, ptr %45, align 8, !tbaa !5
  %581 = load i64, ptr %63, align 8, !tbaa !9
  %582 = getelementptr inbounds %struct.complex, ptr %580, i64 %581
  %583 = getelementptr inbounds %struct.complex, ptr %582, i32 0, i32 0
  %584 = load float, ptr %583, align 4, !tbaa !11
  store float %584, ptr %66, align 4, !tbaa !14
  %585 = load float, ptr %66, align 4, !tbaa !14
  %586 = fcmp oge float %585, 0.000000e+00
  br i1 %586, label %587, label %589

587:                                              ; preds = %572
  %588 = load float, ptr %66, align 4, !tbaa !14
  br label %592

589:                                              ; preds = %572
  %590 = load float, ptr %66, align 4, !tbaa !14
  %591 = fneg float %590
  br label %592

592:                                              ; preds = %589, %587
  %593 = phi float [ %588, %587 ], [ %591, %589 ]
  %594 = fpext float %593 to double
  %595 = load ptr, ptr %45, align 8, !tbaa !5
  %596 = load ptr, ptr %39, align 8, !tbaa !5
  %597 = load i64, ptr %596, align 8, !tbaa !9
  %598 = load ptr, ptr %39, align 8, !tbaa !5
  %599 = load i64, ptr %598, align 8, !tbaa !9
  %600 = load i64, ptr %54, align 8, !tbaa !9
  %601 = mul nsw i64 %599, %600
  %602 = add nsw i64 %597, %601
  %603 = getelementptr inbounds %struct.complex, ptr %595, i64 %602
  %604 = call double @r_imag(ptr noundef %603)
  %605 = fptrunc double %604 to float
  store float %605, ptr %67, align 4, !tbaa !14
  %606 = load float, ptr %67, align 4, !tbaa !14
  %607 = fcmp oge float %606, 0.000000e+00
  br i1 %607, label %608, label %610

608:                                              ; preds = %592
  %609 = load float, ptr %67, align 4, !tbaa !14
  br label %613

610:                                              ; preds = %592
  %611 = load float, ptr %67, align 4, !tbaa !14
  %612 = fneg float %611
  br label %613

613:                                              ; preds = %610, %608
  %614 = phi float [ %609, %608 ], [ %612, %610 ]
  %615 = fpext float %614 to double
  %616 = fadd double %594, %615
  %617 = fptrunc double %616 to float
  store float %617, ptr %78, align 4, !tbaa !14
  %618 = load float, ptr %78, align 4, !tbaa !14
  %619 = fcmp oeq float %618, 0.000000e+00
  br i1 %619, label %620, label %647

620:                                              ; preds = %613
  %621 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 0
  %622 = load float, ptr %621, align 4, !tbaa !11
  store float %622, ptr %66, align 4, !tbaa !14
  %623 = load float, ptr %66, align 4, !tbaa !14
  %624 = fcmp oge float %623, 0.000000e+00
  br i1 %624, label %625, label %627

625:                                              ; preds = %620
  %626 = load float, ptr %66, align 4, !tbaa !14
  br label %630

627:                                              ; preds = %620
  %628 = load float, ptr %66, align 4, !tbaa !14
  %629 = fneg float %628
  br label %630

630:                                              ; preds = %627, %625
  %631 = phi float [ %626, %625 ], [ %629, %627 ]
  %632 = fpext float %631 to double
  %633 = call double @r_imag(ptr noundef %76)
  %634 = fptrunc double %633 to float
  store float %634, ptr %67, align 4, !tbaa !14
  %635 = load float, ptr %67, align 4, !tbaa !14
  %636 = fcmp oge float %635, 0.000000e+00
  br i1 %636, label %637, label %639

637:                                              ; preds = %630
  %638 = load float, ptr %67, align 4, !tbaa !14
  br label %642

639:                                              ; preds = %630
  %640 = load float, ptr %67, align 4, !tbaa !14
  %641 = fneg float %640
  br label %642

642:                                              ; preds = %639, %637
  %643 = phi float [ %638, %637 ], [ %641, %639 ]
  %644 = fpext float %643 to double
  %645 = fadd double %632, %644
  %646 = fptrunc double %645 to float
  store float %646, ptr %78, align 4, !tbaa !14
  br label %647

647:                                              ; preds = %642, %613
  %648 = load ptr, ptr %39, align 8, !tbaa !5
  %649 = load i64, ptr %648, align 8, !tbaa !9
  %650 = load i64, ptr %56, align 8, !tbaa !9
  %651 = mul nsw i64 %649, %650
  %652 = add nsw i64 %651, 1
  store i64 %652, ptr %63, align 8, !tbaa !9
  %653 = load float, ptr %98, align 4, !tbaa !14
  store float %653, ptr %70, align 4, !tbaa !14
  %654 = load float, ptr %82, align 4, !tbaa !14
  %655 = load float, ptr %78, align 4, !tbaa !14
  %656 = fmul float %654, %655
  store float %656, ptr %71, align 4, !tbaa !14
  %657 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 0
  %658 = load float, ptr %657, align 4, !tbaa !11
  store float %658, ptr %66, align 4, !tbaa !14
  %659 = load float, ptr %66, align 4, !tbaa !14
  %660 = fcmp oge float %659, 0.000000e+00
  br i1 %660, label %661, label %663

661:                                              ; preds = %647
  %662 = load float, ptr %66, align 4, !tbaa !14
  br label %666

663:                                              ; preds = %647
  %664 = load float, ptr %66, align 4, !tbaa !14
  %665 = fneg float %664
  br label %666

666:                                              ; preds = %663, %661
  %667 = phi float [ %662, %661 ], [ %665, %663 ]
  %668 = fpext float %667 to double
  %669 = call double @r_imag(ptr noundef %76)
  %670 = fptrunc double %669 to float
  store float %670, ptr %67, align 4, !tbaa !14
  %671 = load float, ptr %67, align 4, !tbaa !14
  %672 = fcmp oge float %671, 0.000000e+00
  br i1 %672, label %673, label %675

673:                                              ; preds = %666
  %674 = load float, ptr %67, align 4, !tbaa !14
  br label %678

675:                                              ; preds = %666
  %676 = load float, ptr %67, align 4, !tbaa !14
  %677 = fneg float %676
  br label %678

678:                                              ; preds = %675, %673
  %679 = phi float [ %674, %673 ], [ %677, %675 ]
  %680 = fpext float %679 to double
  %681 = fadd double %668, %680
  %682 = load ptr, ptr %42, align 8, !tbaa !5
  %683 = load i64, ptr %63, align 8, !tbaa !9
  %684 = getelementptr inbounds %struct.complex, ptr %682, i64 %683
  %685 = getelementptr inbounds %struct.complex, ptr %684, i32 0, i32 0
  %686 = load float, ptr %685, align 4, !tbaa !11
  store float %686, ptr %68, align 4, !tbaa !14
  %687 = load float, ptr %68, align 4, !tbaa !14
  %688 = fcmp oge float %687, 0.000000e+00
  br i1 %688, label %689, label %691

689:                                              ; preds = %678
  %690 = load float, ptr %68, align 4, !tbaa !14
  br label %694

691:                                              ; preds = %678
  %692 = load float, ptr %68, align 4, !tbaa !14
  %693 = fneg float %692
  br label %694

694:                                              ; preds = %691, %689
  %695 = phi float [ %690, %689 ], [ %693, %691 ]
  %696 = fpext float %695 to double
  %697 = load ptr, ptr %42, align 8, !tbaa !5
  %698 = load ptr, ptr %39, align 8, !tbaa !5
  %699 = load i64, ptr %698, align 8, !tbaa !9
  %700 = load i64, ptr %56, align 8, !tbaa !9
  %701 = mul nsw i64 %699, %700
  %702 = add nsw i64 %701, 1
  %703 = getelementptr inbounds %struct.complex, ptr %697, i64 %702
  %704 = call double @r_imag(ptr noundef %703)
  %705 = fptrunc double %704 to float
  store float %705, ptr %69, align 4, !tbaa !14
  %706 = load float, ptr %69, align 4, !tbaa !14
  %707 = fcmp oge float %706, 0.000000e+00
  br i1 %707, label %708, label %710

708:                                              ; preds = %694
  %709 = load float, ptr %69, align 4, !tbaa !14
  br label %713

710:                                              ; preds = %694
  %711 = load float, ptr %69, align 4, !tbaa !14
  %712 = fneg float %711
  br label %713

713:                                              ; preds = %710, %708
  %714 = phi float [ %709, %708 ], [ %712, %710 ]
  %715 = fpext float %714 to double
  %716 = fadd double %696, %715
  %717 = fmul double %681, %716
  %718 = load float, ptr %70, align 4, !tbaa !14
  %719 = load float, ptr %71, align 4, !tbaa !14
  %720 = fcmp oge float %718, %719
  br i1 %720, label %721, label %723

721:                                              ; preds = %713
  %722 = load float, ptr %70, align 4, !tbaa !14
  br label %725

723:                                              ; preds = %713
  %724 = load float, ptr %71, align 4, !tbaa !14
  br label %725

725:                                              ; preds = %723, %721
  %726 = phi float [ %722, %721 ], [ %724, %723 ]
  %727 = fpext float %726 to double
  %728 = fcmp ole double %717, %727
  br i1 %728, label %729, label %733

729:                                              ; preds = %725
  %730 = load ptr, ptr %39, align 8, !tbaa !5
  %731 = load i64, ptr %730, align 8, !tbaa !9
  %732 = add nsw i64 %731, -1
  store i64 %732, ptr %730, align 8, !tbaa !9
  br label %747

733:                                              ; preds = %725
  %734 = load ptr, ptr %39, align 8, !tbaa !5
  %735 = load i64, ptr %734, align 8, !tbaa !9
  store i64 %735, ptr %90, align 8, !tbaa !9
  %736 = load ptr, ptr %45, align 8, !tbaa !5
  %737 = load i64, ptr %55, align 8, !tbaa !9
  %738 = getelementptr inbounds %struct.complex, ptr %736, i64 %737
  %739 = load ptr, ptr %46, align 8, !tbaa !5
  %740 = load ptr, ptr %42, align 8, !tbaa !5
  %741 = load i64, ptr %57, align 8, !tbaa !9
  %742 = getelementptr inbounds %struct.complex, ptr %740, i64 %741
  %743 = load ptr, ptr %43, align 8, !tbaa !5
  %744 = call i32 @ctrexc_(ptr noundef @.str.8, ptr noundef %77, ptr noundef %738, ptr noundef %739, ptr noundef %742, ptr noundef %743, ptr noundef %90, ptr noundef %91, ptr noundef %88)
  %745 = load i64, ptr %91, align 8, !tbaa !9
  %746 = add nsw i64 %745, 1
  store i64 %746, ptr %91, align 8, !tbaa !9
  br label %747

747:                                              ; preds = %733, %729
  br label %748

748:                                              ; preds = %747
  %749 = load i64, ptr %81, align 8, !tbaa !9
  %750 = add nsw i64 %749, 1
  store i64 %750, ptr %81, align 8, !tbaa !9
  br label %568, !llvm.loop !16

751:                                              ; preds = %568
  %752 = load ptr, ptr %39, align 8, !tbaa !5
  %753 = load i64, ptr %752, align 8, !tbaa !9
  %754 = icmp eq i64 %753, 0
  br i1 %754, label %755, label %758

755:                                              ; preds = %751
  %756 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 0
  store float 0.000000e+00, ptr %756, align 4, !tbaa !11
  %757 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 1
  store float 0.000000e+00, ptr %757, align 4, !tbaa !15
  br label %758

758:                                              ; preds = %755, %751
  %759 = load ptr, ptr %39, align 8, !tbaa !5
  %760 = load i64, ptr %759, align 8, !tbaa !9
  %761 = load i64, ptr %77, align 8, !tbaa !9
  %762 = icmp slt i64 %760, %761
  br i1 %762, label %763, label %890

763:                                              ; preds = %758
  %764 = load ptr, ptr %39, align 8, !tbaa !5
  %765 = load i64, ptr %764, align 8, !tbaa !9
  store i64 %765, ptr %62, align 8, !tbaa !9
  %766 = load i64, ptr %94, align 8, !tbaa !9
  %767 = add nsw i64 %766, 1
  store i64 %767, ptr %74, align 8, !tbaa !9
  br label %768

768:                                              ; preds = %886, %763
  %769 = load i64, ptr %74, align 8, !tbaa !9
  %770 = load i64, ptr %62, align 8, !tbaa !9
  %771 = icmp sle i64 %769, %770
  br i1 %771, label %772, label %889

772:                                              ; preds = %768
  %773 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %773, ptr %90, align 8, !tbaa !9
  %774 = load ptr, ptr %39, align 8, !tbaa !5
  %775 = load i64, ptr %774, align 8, !tbaa !9
  store i64 %775, ptr %63, align 8, !tbaa !9
  %776 = load i64, ptr %74, align 8, !tbaa !9
  %777 = add nsw i64 %776, 1
  store i64 %777, ptr %75, align 8, !tbaa !9
  br label %778

778:                                              ; preds = %867, %772
  %779 = load i64, ptr %75, align 8, !tbaa !9
  %780 = load i64, ptr %63, align 8, !tbaa !9
  %781 = icmp sle i64 %779, %780
  br i1 %781, label %782, label %870

782:                                              ; preds = %778
  %783 = load i64, ptr %75, align 8, !tbaa !9
  %784 = load i64, ptr %75, align 8, !tbaa !9
  %785 = load i64, ptr %54, align 8, !tbaa !9
  %786 = mul nsw i64 %784, %785
  %787 = add nsw i64 %783, %786
  store i64 %787, ptr %64, align 8, !tbaa !9
  %788 = load i64, ptr %90, align 8, !tbaa !9
  %789 = load i64, ptr %90, align 8, !tbaa !9
  %790 = load i64, ptr %54, align 8, !tbaa !9
  %791 = mul nsw i64 %789, %790
  %792 = add nsw i64 %788, %791
  store i64 %792, ptr %65, align 8, !tbaa !9
  %793 = load ptr, ptr %45, align 8, !tbaa !5
  %794 = load i64, ptr %64, align 8, !tbaa !9
  %795 = getelementptr inbounds %struct.complex, ptr %793, i64 %794
  %796 = getelementptr inbounds %struct.complex, ptr %795, i32 0, i32 0
  %797 = load float, ptr %796, align 4, !tbaa !11
  store float %797, ptr %66, align 4, !tbaa !14
  %798 = load float, ptr %66, align 4, !tbaa !14
  %799 = fcmp oge float %798, 0.000000e+00
  br i1 %799, label %800, label %802

800:                                              ; preds = %782
  %801 = load float, ptr %66, align 4, !tbaa !14
  br label %805

802:                                              ; preds = %782
  %803 = load float, ptr %66, align 4, !tbaa !14
  %804 = fneg float %803
  br label %805

805:                                              ; preds = %802, %800
  %806 = phi float [ %801, %800 ], [ %804, %802 ]
  %807 = fpext float %806 to double
  %808 = load ptr, ptr %45, align 8, !tbaa !5
  %809 = load i64, ptr %75, align 8, !tbaa !9
  %810 = load i64, ptr %75, align 8, !tbaa !9
  %811 = load i64, ptr %54, align 8, !tbaa !9
  %812 = mul nsw i64 %810, %811
  %813 = add nsw i64 %809, %812
  %814 = getelementptr inbounds %struct.complex, ptr %808, i64 %813
  %815 = call double @r_imag(ptr noundef %814)
  %816 = fptrunc double %815 to float
  store float %816, ptr %67, align 4, !tbaa !14
  %817 = load float, ptr %67, align 4, !tbaa !14
  %818 = fcmp oge float %817, 0.000000e+00
  br i1 %818, label %819, label %821

819:                                              ; preds = %805
  %820 = load float, ptr %67, align 4, !tbaa !14
  br label %824

821:                                              ; preds = %805
  %822 = load float, ptr %67, align 4, !tbaa !14
  %823 = fneg float %822
  br label %824

824:                                              ; preds = %821, %819
  %825 = phi float [ %820, %819 ], [ %823, %821 ]
  %826 = fpext float %825 to double
  %827 = fadd double %807, %826
  %828 = load ptr, ptr %45, align 8, !tbaa !5
  %829 = load i64, ptr %65, align 8, !tbaa !9
  %830 = getelementptr inbounds %struct.complex, ptr %828, i64 %829
  %831 = getelementptr inbounds %struct.complex, ptr %830, i32 0, i32 0
  %832 = load float, ptr %831, align 4, !tbaa !11
  store float %832, ptr %68, align 4, !tbaa !14
  %833 = load float, ptr %68, align 4, !tbaa !14
  %834 = fcmp oge float %833, 0.000000e+00
  br i1 %834, label %835, label %837

835:                                              ; preds = %824
  %836 = load float, ptr %68, align 4, !tbaa !14
  br label %840

837:                                              ; preds = %824
  %838 = load float, ptr %68, align 4, !tbaa !14
  %839 = fneg float %838
  br label %840

840:                                              ; preds = %837, %835
  %841 = phi float [ %836, %835 ], [ %839, %837 ]
  %842 = fpext float %841 to double
  %843 = load ptr, ptr %45, align 8, !tbaa !5
  %844 = load i64, ptr %90, align 8, !tbaa !9
  %845 = load i64, ptr %90, align 8, !tbaa !9
  %846 = load i64, ptr %54, align 8, !tbaa !9
  %847 = mul nsw i64 %845, %846
  %848 = add nsw i64 %844, %847
  %849 = getelementptr inbounds %struct.complex, ptr %843, i64 %848
  %850 = call double @r_imag(ptr noundef %849)
  %851 = fptrunc double %850 to float
  store float %851, ptr %69, align 4, !tbaa !14
  %852 = load float, ptr %69, align 4, !tbaa !14
  %853 = fcmp oge float %852, 0.000000e+00
  br i1 %853, label %854, label %856

854:                                              ; preds = %840
  %855 = load float, ptr %69, align 4, !tbaa !14
  br label %859

856:                                              ; preds = %840
  %857 = load float, ptr %69, align 4, !tbaa !14
  %858 = fneg float %857
  br label %859

859:                                              ; preds = %856, %854
  %860 = phi float [ %855, %854 ], [ %858, %856 ]
  %861 = fpext float %860 to double
  %862 = fadd double %842, %861
  %863 = fcmp ogt double %827, %862
  br i1 %863, label %864, label %866

864:                                              ; preds = %859
  %865 = load i64, ptr %75, align 8, !tbaa !9
  store i64 %865, ptr %90, align 8, !tbaa !9
  br label %866

866:                                              ; preds = %864, %859
  br label %867

867:                                              ; preds = %866
  %868 = load i64, ptr %75, align 8, !tbaa !9
  %869 = add nsw i64 %868, 1
  store i64 %869, ptr %75, align 8, !tbaa !9
  br label %778, !llvm.loop !18

870:                                              ; preds = %778
  %871 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %871, ptr %91, align 8, !tbaa !9
  %872 = load i64, ptr %90, align 8, !tbaa !9
  %873 = load i64, ptr %91, align 8, !tbaa !9
  %874 = icmp ne i64 %872, %873
  br i1 %874, label %875, label %885

875:                                              ; preds = %870
  %876 = load ptr, ptr %45, align 8, !tbaa !5
  %877 = load i64, ptr %55, align 8, !tbaa !9
  %878 = getelementptr inbounds %struct.complex, ptr %876, i64 %877
  %879 = load ptr, ptr %46, align 8, !tbaa !5
  %880 = load ptr, ptr %42, align 8, !tbaa !5
  %881 = load i64, ptr %57, align 8, !tbaa !9
  %882 = getelementptr inbounds %struct.complex, ptr %880, i64 %881
  %883 = load ptr, ptr %43, align 8, !tbaa !5
  %884 = call i32 @ctrexc_(ptr noundef @.str.8, ptr noundef %77, ptr noundef %878, ptr noundef %879, ptr noundef %882, ptr noundef %883, ptr noundef %90, ptr noundef %91, ptr noundef %88)
  br label %885

885:                                              ; preds = %875, %870
  br label %886

886:                                              ; preds = %885
  %887 = load i64, ptr %74, align 8, !tbaa !9
  %888 = add nsw i64 %887, 1
  store i64 %888, ptr %74, align 8, !tbaa !9
  br label %768, !llvm.loop !19

889:                                              ; preds = %768
  br label %890

890:                                              ; preds = %889, %758
  %891 = load i64, ptr %77, align 8, !tbaa !9
  store i64 %891, ptr %62, align 8, !tbaa !9
  %892 = load i64, ptr %94, align 8, !tbaa !9
  %893 = add nsw i64 %892, 1
  store i64 %893, ptr %74, align 8, !tbaa !9
  br label %894

894:                                              ; preds = %926, %890
  %895 = load i64, ptr %74, align 8, !tbaa !9
  %896 = load i64, ptr %62, align 8, !tbaa !9
  %897 = icmp sle i64 %895, %896
  br i1 %897, label %898, label %929

898:                                              ; preds = %894
  %899 = load i64, ptr %95, align 8, !tbaa !9
  %900 = load i64, ptr %74, align 8, !tbaa !9
  %901 = add nsw i64 %899, %900
  %902 = sub nsw i64 %901, 1
  store i64 %902, ptr %63, align 8, !tbaa !9
  %903 = load i64, ptr %74, align 8, !tbaa !9
  %904 = load i64, ptr %74, align 8, !tbaa !9
  %905 = load i64, ptr %54, align 8, !tbaa !9
  %906 = mul nsw i64 %904, %905
  %907 = add nsw i64 %903, %906
  store i64 %907, ptr %64, align 8, !tbaa !9
  %908 = load ptr, ptr %45, align 8, !tbaa !5
  %909 = load i64, ptr %64, align 8, !tbaa !9
  %910 = getelementptr inbounds %struct.complex, ptr %908, i64 %909
  %911 = getelementptr inbounds %struct.complex, ptr %910, i32 0, i32 0
  %912 = load float, ptr %911, align 4, !tbaa !11
  %913 = load ptr, ptr %41, align 8, !tbaa !5
  %914 = load i64, ptr %63, align 8, !tbaa !9
  %915 = getelementptr inbounds %struct.complex, ptr %913, i64 %914
  %916 = getelementptr inbounds %struct.complex, ptr %915, i32 0, i32 0
  store float %912, ptr %916, align 4, !tbaa !11
  %917 = load ptr, ptr %45, align 8, !tbaa !5
  %918 = load i64, ptr %64, align 8, !tbaa !9
  %919 = getelementptr inbounds %struct.complex, ptr %917, i64 %918
  %920 = getelementptr inbounds %struct.complex, ptr %919, i32 0, i32 1
  %921 = load float, ptr %920, align 4, !tbaa !15
  %922 = load ptr, ptr %41, align 8, !tbaa !5
  %923 = load i64, ptr %63, align 8, !tbaa !9
  %924 = getelementptr inbounds %struct.complex, ptr %922, i64 %923
  %925 = getelementptr inbounds %struct.complex, ptr %924, i32 0, i32 1
  store float %921, ptr %925, align 4, !tbaa !15
  br label %926

926:                                              ; preds = %898
  %927 = load i64, ptr %74, align 8, !tbaa !9
  %928 = add nsw i64 %927, 1
  store i64 %928, ptr %74, align 8, !tbaa !9
  br label %894, !llvm.loop !20

929:                                              ; preds = %894
  %930 = load ptr, ptr %39, align 8, !tbaa !5
  %931 = load i64, ptr %930, align 8, !tbaa !9
  %932 = load i64, ptr %77, align 8, !tbaa !9
  %933 = icmp slt i64 %931, %932
  br i1 %933, label %942, label %934

934:                                              ; preds = %929
  %935 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 0
  %936 = load float, ptr %935, align 4, !tbaa !11
  %937 = fcmp oeq float %936, 0.000000e+00
  br i1 %937, label %938, label %1429

938:                                              ; preds = %934
  %939 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 1
  %940 = load float, ptr %939, align 4, !tbaa !15
  %941 = fcmp oeq float %940, 0.000000e+00
  br i1 %941, label %942, label %1429

942:                                              ; preds = %938, %929
  %943 = load ptr, ptr %39, align 8, !tbaa !5
  %944 = load i64, ptr %943, align 8, !tbaa !9
  %945 = icmp sgt i64 %944, 1
  br i1 %945, label %946, label %1073

946:                                              ; preds = %942
  %947 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 0
  %948 = load float, ptr %947, align 4, !tbaa !11
  %949 = fcmp une float %948, 0.000000e+00
  br i1 %949, label %954, label %950

950:                                              ; preds = %946
  %951 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 1
  %952 = load float, ptr %951, align 4, !tbaa !15
  %953 = fcmp une float %952, 0.000000e+00
  br i1 %953, label %954, label %1073

954:                                              ; preds = %950, %946
  %955 = load ptr, ptr %39, align 8, !tbaa !5
  %956 = load ptr, ptr %42, align 8, !tbaa !5
  %957 = load i64, ptr %57, align 8, !tbaa !9
  %958 = getelementptr inbounds %struct.complex, ptr %956, i64 %957
  %959 = load ptr, ptr %43, align 8, !tbaa !5
  %960 = load ptr, ptr %50, align 8, !tbaa !5
  %961 = getelementptr inbounds %struct.complex, ptr %960, i64 1
  %962 = call i32 @f2c_ccopy(ptr noundef %955, ptr noundef %958, ptr noundef %959, ptr noundef %961, ptr noundef @c__1)
  %963 = load ptr, ptr %39, align 8, !tbaa !5
  %964 = load i64, ptr %963, align 8, !tbaa !9
  store i64 %964, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %74, align 8, !tbaa !9
  br label %965

965:                                              ; preds = %986, %954
  %966 = load i64, ptr %74, align 8, !tbaa !9
  %967 = load i64, ptr %62, align 8, !tbaa !9
  %968 = icmp sle i64 %966, %967
  br i1 %968, label %969, label %989

969:                                              ; preds = %965
  %970 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %970, ptr %63, align 8, !tbaa !9
  %971 = load ptr, ptr %50, align 8, !tbaa !5
  %972 = load i64, ptr %74, align 8, !tbaa !9
  %973 = getelementptr inbounds %struct.complex, ptr %971, i64 %972
  call void @r_cnjg(ptr noundef %72, ptr noundef %973)
  %974 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 0
  %975 = load float, ptr %974, align 4, !tbaa !11
  %976 = load ptr, ptr %50, align 8, !tbaa !5
  %977 = load i64, ptr %63, align 8, !tbaa !9
  %978 = getelementptr inbounds %struct.complex, ptr %976, i64 %977
  %979 = getelementptr inbounds %struct.complex, ptr %978, i32 0, i32 0
  store float %975, ptr %979, align 4, !tbaa !11
  %980 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 1
  %981 = load float, ptr %980, align 4, !tbaa !15
  %982 = load ptr, ptr %50, align 8, !tbaa !5
  %983 = load i64, ptr %63, align 8, !tbaa !9
  %984 = getelementptr inbounds %struct.complex, ptr %982, i64 %983
  %985 = getelementptr inbounds %struct.complex, ptr %984, i32 0, i32 1
  store float %981, ptr %985, align 4, !tbaa !15
  br label %986

986:                                              ; preds = %969
  %987 = load i64, ptr %74, align 8, !tbaa !9
  %988 = add nsw i64 %987, 1
  store i64 %988, ptr %74, align 8, !tbaa !9
  br label %965, !llvm.loop !21

989:                                              ; preds = %965
  %990 = load ptr, ptr %50, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.complex, ptr %990, i64 1
  %992 = getelementptr inbounds %struct.complex, ptr %991, i32 0, i32 0
  %993 = load float, ptr %992, align 4, !tbaa !11
  %994 = getelementptr inbounds %struct.complex, ptr %86, i32 0, i32 0
  store float %993, ptr %994, align 4, !tbaa !11
  %995 = load ptr, ptr %50, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.complex, ptr %995, i64 1
  %997 = getelementptr inbounds %struct.complex, ptr %996, i32 0, i32 1
  %998 = load float, ptr %997, align 4, !tbaa !15
  %999 = getelementptr inbounds %struct.complex, ptr %86, i32 0, i32 1
  store float %998, ptr %999, align 4, !tbaa !15
  %1000 = load ptr, ptr %39, align 8, !tbaa !5
  %1001 = load ptr, ptr %50, align 8, !tbaa !5
  %1002 = getelementptr inbounds %struct.complex, ptr %1001, i64 2
  %1003 = call i32 @clarfg_(ptr noundef %1000, ptr noundef %86, ptr noundef %1002, ptr noundef @c__1, ptr noundef %80)
  %1004 = load ptr, ptr %50, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.complex, ptr %1004, i64 1
  %1006 = getelementptr inbounds %struct.complex, ptr %1005, i32 0, i32 0
  store float 1.000000e+00, ptr %1006, align 4, !tbaa !11
  %1007 = load ptr, ptr %50, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.complex, ptr %1007, i64 1
  %1009 = getelementptr inbounds %struct.complex, ptr %1008, i32 0, i32 1
  store float 0.000000e+00, ptr %1009, align 4, !tbaa !15
  %1010 = load i64, ptr %77, align 8, !tbaa !9
  %1011 = sub nsw i64 %1010, 2
  store i64 %1011, ptr %62, align 8, !tbaa !9
  %1012 = load i64, ptr %77, align 8, !tbaa !9
  %1013 = sub nsw i64 %1012, 2
  store i64 %1013, ptr %63, align 8, !tbaa !9
  %1014 = load ptr, ptr %45, align 8, !tbaa !5
  %1015 = load i64, ptr %54, align 8, !tbaa !9
  %1016 = add nsw i64 %1015, 3
  %1017 = getelementptr inbounds %struct.complex, ptr %1014, i64 %1016
  %1018 = load ptr, ptr %46, align 8, !tbaa !5
  %1019 = call i32 @claset_(ptr noundef @.str.9, ptr noundef %62, ptr noundef %63, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %1017, ptr noundef %1018)
  call void @r_cnjg(ptr noundef %72, ptr noundef %80)
  %1020 = load ptr, ptr %39, align 8, !tbaa !5
  %1021 = load ptr, ptr %50, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.complex, ptr %1021, i64 1
  %1023 = load ptr, ptr %45, align 8, !tbaa !5
  %1024 = load i64, ptr %55, align 8, !tbaa !9
  %1025 = getelementptr inbounds %struct.complex, ptr %1023, i64 %1024
  %1026 = load ptr, ptr %46, align 8, !tbaa !5
  %1027 = load ptr, ptr %50, align 8, !tbaa !5
  %1028 = load i64, ptr %77, align 8, !tbaa !9
  %1029 = add nsw i64 %1028, 1
  %1030 = getelementptr inbounds %struct.complex, ptr %1027, i64 %1029
  %1031 = call i32 @clarf_(ptr noundef @.str.9, ptr noundef %1020, ptr noundef %77, ptr noundef %1022, ptr noundef @c__1, ptr noundef %72, ptr noundef %1025, ptr noundef %1026, ptr noundef %1030)
  %1032 = load ptr, ptr %39, align 8, !tbaa !5
  %1033 = load ptr, ptr %39, align 8, !tbaa !5
  %1034 = load ptr, ptr %50, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.complex, ptr %1034, i64 1
  %1036 = load ptr, ptr %45, align 8, !tbaa !5
  %1037 = load i64, ptr %55, align 8, !tbaa !9
  %1038 = getelementptr inbounds %struct.complex, ptr %1036, i64 %1037
  %1039 = load ptr, ptr %46, align 8, !tbaa !5
  %1040 = load ptr, ptr %50, align 8, !tbaa !5
  %1041 = load i64, ptr %77, align 8, !tbaa !9
  %1042 = add nsw i64 %1041, 1
  %1043 = getelementptr inbounds %struct.complex, ptr %1040, i64 %1042
  %1044 = call i32 @clarf_(ptr noundef @.str, ptr noundef %1032, ptr noundef %1033, ptr noundef %1035, ptr noundef @c__1, ptr noundef %80, ptr noundef %1038, ptr noundef %1039, ptr noundef %1043)
  %1045 = load ptr, ptr %39, align 8, !tbaa !5
  %1046 = load ptr, ptr %50, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.complex, ptr %1046, i64 1
  %1048 = load ptr, ptr %42, align 8, !tbaa !5
  %1049 = load i64, ptr %57, align 8, !tbaa !9
  %1050 = getelementptr inbounds %struct.complex, ptr %1048, i64 %1049
  %1051 = load ptr, ptr %43, align 8, !tbaa !5
  %1052 = load ptr, ptr %50, align 8, !tbaa !5
  %1053 = load i64, ptr %77, align 8, !tbaa !9
  %1054 = add nsw i64 %1053, 1
  %1055 = getelementptr inbounds %struct.complex, ptr %1052, i64 %1054
  %1056 = call i32 @clarf_(ptr noundef @.str, ptr noundef %77, ptr noundef %1045, ptr noundef %1047, ptr noundef @c__1, ptr noundef %80, ptr noundef %1050, ptr noundef %1051, ptr noundef %1055)
  %1057 = load ptr, ptr %51, align 8, !tbaa !5
  %1058 = load i64, ptr %1057, align 8, !tbaa !9
  %1059 = load i64, ptr %77, align 8, !tbaa !9
  %1060 = sub nsw i64 %1058, %1059
  store i64 %1060, ptr %62, align 8, !tbaa !9
  %1061 = load ptr, ptr %39, align 8, !tbaa !5
  %1062 = load ptr, ptr %45, align 8, !tbaa !5
  %1063 = load i64, ptr %55, align 8, !tbaa !9
  %1064 = getelementptr inbounds %struct.complex, ptr %1062, i64 %1063
  %1065 = load ptr, ptr %46, align 8, !tbaa !5
  %1066 = load ptr, ptr %50, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.complex, ptr %1066, i64 1
  %1068 = load ptr, ptr %50, align 8, !tbaa !5
  %1069 = load i64, ptr %77, align 8, !tbaa !9
  %1070 = add nsw i64 %1069, 1
  %1071 = getelementptr inbounds %struct.complex, ptr %1068, i64 %1070
  %1072 = call i32 @cgehrd_(ptr noundef %77, ptr noundef @c__1, ptr noundef %1061, ptr noundef %1064, ptr noundef %1065, ptr noundef %1067, ptr noundef %1071, ptr noundef %62, ptr noundef %88)
  br label %1073

1073:                                             ; preds = %989, %950, %942
  %1074 = load i64, ptr %95, align 8, !tbaa !9
  %1075 = icmp sgt i64 %1074, 1
  br i1 %1075, label %1076, label %1122

1076:                                             ; preds = %1073
  %1077 = load i64, ptr %95, align 8, !tbaa !9
  %1078 = load i64, ptr %95, align 8, !tbaa !9
  %1079 = sub nsw i64 %1078, 1
  %1080 = load i64, ptr %52, align 8, !tbaa !9
  %1081 = mul nsw i64 %1079, %1080
  %1082 = add nsw i64 %1077, %1081
  store i64 %1082, ptr %62, align 8, !tbaa !9
  %1083 = load ptr, ptr %42, align 8, !tbaa !5
  %1084 = load i64, ptr %56, align 8, !tbaa !9
  %1085 = add nsw i64 %1084, 1
  %1086 = getelementptr inbounds %struct.complex, ptr %1083, i64 %1085
  call void @r_cnjg(ptr noundef %73, ptr noundef %1086)
  %1087 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 0
  %1088 = load float, ptr %1087, align 4, !tbaa !11
  %1089 = getelementptr inbounds %struct.complex, ptr %73, i32 0, i32 0
  %1090 = load float, ptr %1089, align 4, !tbaa !11
  %1091 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 1
  %1092 = load float, ptr %1091, align 4, !tbaa !15
  %1093 = getelementptr inbounds %struct.complex, ptr %73, i32 0, i32 1
  %1094 = load float, ptr %1093, align 4, !tbaa !15
  %1095 = fmul float %1092, %1094
  %1096 = fneg float %1095
  %1097 = call float @llvm.fmuladd.f32(float %1088, float %1090, float %1096)
  %1098 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 0
  store float %1097, ptr %1098, align 4, !tbaa !11
  %1099 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 0
  %1100 = load float, ptr %1099, align 4, !tbaa !11
  %1101 = getelementptr inbounds %struct.complex, ptr %73, i32 0, i32 1
  %1102 = load float, ptr %1101, align 4, !tbaa !15
  %1103 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 1
  %1104 = load float, ptr %1103, align 4, !tbaa !15
  %1105 = getelementptr inbounds %struct.complex, ptr %73, i32 0, i32 0
  %1106 = load float, ptr %1105, align 4, !tbaa !11
  %1107 = fmul float %1104, %1106
  %1108 = call float @llvm.fmuladd.f32(float %1100, float %1102, float %1107)
  %1109 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 1
  store float %1108, ptr %1109, align 4, !tbaa !15
  %1110 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 0
  %1111 = load float, ptr %1110, align 4, !tbaa !11
  %1112 = load ptr, ptr %33, align 8, !tbaa !5
  %1113 = load i64, ptr %62, align 8, !tbaa !9
  %1114 = getelementptr inbounds %struct.complex, ptr %1112, i64 %1113
  %1115 = getelementptr inbounds %struct.complex, ptr %1114, i32 0, i32 0
  store float %1111, ptr %1115, align 4, !tbaa !11
  %1116 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 1
  %1117 = load float, ptr %1116, align 4, !tbaa !15
  %1118 = load ptr, ptr %33, align 8, !tbaa !5
  %1119 = load i64, ptr %62, align 8, !tbaa !9
  %1120 = getelementptr inbounds %struct.complex, ptr %1118, i64 %1119
  %1121 = getelementptr inbounds %struct.complex, ptr %1120, i32 0, i32 1
  store float %1117, ptr %1121, align 4, !tbaa !15
  br label %1122

1122:                                             ; preds = %1076, %1073
  %1123 = load ptr, ptr %45, align 8, !tbaa !5
  %1124 = load i64, ptr %55, align 8, !tbaa !9
  %1125 = getelementptr inbounds %struct.complex, ptr %1123, i64 %1124
  %1126 = load ptr, ptr %46, align 8, !tbaa !5
  %1127 = load ptr, ptr %33, align 8, !tbaa !5
  %1128 = load i64, ptr %95, align 8, !tbaa !9
  %1129 = load i64, ptr %95, align 8, !tbaa !9
  %1130 = load i64, ptr %52, align 8, !tbaa !9
  %1131 = mul nsw i64 %1129, %1130
  %1132 = add nsw i64 %1128, %1131
  %1133 = getelementptr inbounds %struct.complex, ptr %1127, i64 %1132
  %1134 = load ptr, ptr %34, align 8, !tbaa !5
  %1135 = call i32 @clacpy_(ptr noundef @.str.4, ptr noundef %77, ptr noundef %77, ptr noundef %1125, ptr noundef %1126, ptr noundef %1133, ptr noundef %1134)
  %1136 = load i64, ptr %77, align 8, !tbaa !9
  %1137 = sub nsw i64 %1136, 1
  store i64 %1137, ptr %62, align 8, !tbaa !9
  %1138 = load ptr, ptr %46, align 8, !tbaa !5
  %1139 = load i64, ptr %1138, align 8, !tbaa !9
  %1140 = add nsw i64 %1139, 1
  store i64 %1140, ptr %63, align 8, !tbaa !9
  %1141 = load ptr, ptr %34, align 8, !tbaa !5
  %1142 = load i64, ptr %1141, align 8, !tbaa !9
  %1143 = add nsw i64 %1142, 1
  store i64 %1143, ptr %64, align 8, !tbaa !9
  %1144 = load ptr, ptr %45, align 8, !tbaa !5
  %1145 = load i64, ptr %54, align 8, !tbaa !9
  %1146 = add nsw i64 %1145, 2
  %1147 = getelementptr inbounds %struct.complex, ptr %1144, i64 %1146
  %1148 = load ptr, ptr %33, align 8, !tbaa !5
  %1149 = load i64, ptr %95, align 8, !tbaa !9
  %1150 = add nsw i64 %1149, 1
  %1151 = load i64, ptr %95, align 8, !tbaa !9
  %1152 = load i64, ptr %52, align 8, !tbaa !9
  %1153 = mul nsw i64 %1151, %1152
  %1154 = add nsw i64 %1150, %1153
  %1155 = getelementptr inbounds %struct.complex, ptr %1148, i64 %1154
  %1156 = call i32 @f2c_ccopy(ptr noundef %62, ptr noundef %1147, ptr noundef %63, ptr noundef %1155, ptr noundef %64)
  %1157 = load ptr, ptr %39, align 8, !tbaa !5
  %1158 = load i64, ptr %1157, align 8, !tbaa !9
  %1159 = icmp sgt i64 %1158, 1
  br i1 %1159, label %1160, label %1190

1160:                                             ; preds = %1122
  %1161 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 0
  %1162 = load float, ptr %1161, align 4, !tbaa !11
  %1163 = fcmp une float %1162, 0.000000e+00
  br i1 %1163, label %1168, label %1164

1164:                                             ; preds = %1160
  %1165 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 1
  %1166 = load float, ptr %1165, align 4, !tbaa !15
  %1167 = fcmp une float %1166, 0.000000e+00
  br i1 %1167, label %1168, label %1190

1168:                                             ; preds = %1164, %1160
  %1169 = load ptr, ptr %51, align 8, !tbaa !5
  %1170 = load i64, ptr %1169, align 8, !tbaa !9
  %1171 = load i64, ptr %77, align 8, !tbaa !9
  %1172 = sub nsw i64 %1170, %1171
  store i64 %1172, ptr %62, align 8, !tbaa !9
  %1173 = load ptr, ptr %39, align 8, !tbaa !5
  %1174 = load ptr, ptr %39, align 8, !tbaa !5
  %1175 = load ptr, ptr %45, align 8, !tbaa !5
  %1176 = load i64, ptr %55, align 8, !tbaa !9
  %1177 = getelementptr inbounds %struct.complex, ptr %1175, i64 %1176
  %1178 = load ptr, ptr %46, align 8, !tbaa !5
  %1179 = load ptr, ptr %50, align 8, !tbaa !5
  %1180 = getelementptr inbounds %struct.complex, ptr %1179, i64 1
  %1181 = load ptr, ptr %42, align 8, !tbaa !5
  %1182 = load i64, ptr %57, align 8, !tbaa !9
  %1183 = getelementptr inbounds %struct.complex, ptr %1181, i64 %1182
  %1184 = load ptr, ptr %43, align 8, !tbaa !5
  %1185 = load ptr, ptr %50, align 8, !tbaa !5
  %1186 = load i64, ptr %77, align 8, !tbaa !9
  %1187 = add nsw i64 %1186, 1
  %1188 = getelementptr inbounds %struct.complex, ptr %1185, i64 %1187
  %1189 = call i32 @cunmhr_(ptr noundef @.str, ptr noundef @.str.1, ptr noundef %77, ptr noundef %1173, ptr noundef @c__1, ptr noundef %1174, ptr noundef %1177, ptr noundef %1178, ptr noundef %1180, ptr noundef %1183, ptr noundef %1184, ptr noundef %1188, ptr noundef %62, ptr noundef %88)
  br label %1190

1190:                                             ; preds = %1168, %1164, %1122
  %1191 = load ptr, ptr %27, align 8, !tbaa !5
  %1192 = load i64, ptr %1191, align 8, !tbaa !9
  %1193 = icmp ne i64 %1192, 0
  br i1 %1193, label %1194, label %1195

1194:                                             ; preds = %1190
  store i64 1, ptr %92, align 8, !tbaa !9
  br label %1198

1195:                                             ; preds = %1190
  %1196 = load ptr, ptr %30, align 8, !tbaa !5
  %1197 = load i64, ptr %1196, align 8, !tbaa !9
  store i64 %1197, ptr %92, align 8, !tbaa !9
  br label %1198

1198:                                             ; preds = %1195, %1194
  %1199 = load i64, ptr %95, align 8, !tbaa !9
  %1200 = sub nsw i64 %1199, 1
  store i64 %1200, ptr %62, align 8, !tbaa !9
  %1201 = load ptr, ptr %47, align 8, !tbaa !5
  %1202 = load i64, ptr %1201, align 8, !tbaa !9
  store i64 %1202, ptr %63, align 8, !tbaa !9
  %1203 = load i64, ptr %92, align 8, !tbaa !9
  store i64 %1203, ptr %93, align 8, !tbaa !9
  br label %1204

1204:                                             ; preds = %1265, %1198
  %1205 = load i64, ptr %63, align 8, !tbaa !9
  %1206 = icmp slt i64 %1205, 0
  br i1 %1206, label %1207, label %1212

1207:                                             ; preds = %1204
  %1208 = load i64, ptr %93, align 8, !tbaa !9
  %1209 = load i64, ptr %62, align 8, !tbaa !9
  %1210 = icmp sge i64 %1208, %1209
  %1211 = zext i1 %1210 to i32
  br label %1217

1212:                                             ; preds = %1204
  %1213 = load i64, ptr %93, align 8, !tbaa !9
  %1214 = load i64, ptr %62, align 8, !tbaa !9
  %1215 = icmp sle i64 %1213, %1214
  %1216 = zext i1 %1215 to i32
  br label %1217

1217:                                             ; preds = %1212, %1207
  %1218 = phi i32 [ %1211, %1207 ], [ %1216, %1212 ]
  %1219 = icmp ne i32 %1218, 0
  br i1 %1219, label %1220, label %1269

1220:                                             ; preds = %1217
  %1221 = load ptr, ptr %47, align 8, !tbaa !5
  %1222 = load i64, ptr %1221, align 8, !tbaa !9
  store i64 %1222, ptr %64, align 8, !tbaa !9
  %1223 = load i64, ptr %95, align 8, !tbaa !9
  %1224 = load i64, ptr %93, align 8, !tbaa !9
  %1225 = sub nsw i64 %1223, %1224
  store i64 %1225, ptr %65, align 8, !tbaa !9
  %1226 = load i64, ptr %64, align 8, !tbaa !9
  %1227 = load i64, ptr %65, align 8, !tbaa !9
  %1228 = icmp sle i64 %1226, %1227
  br i1 %1228, label %1229, label %1231

1229:                                             ; preds = %1220
  %1230 = load i64, ptr %64, align 8, !tbaa !9
  br label %1233

1231:                                             ; preds = %1220
  %1232 = load i64, ptr %65, align 8, !tbaa !9
  br label %1233

1233:                                             ; preds = %1231, %1229
  %1234 = phi i64 [ %1230, %1229 ], [ %1232, %1231 ]
  store i64 %1234, ptr %79, align 8, !tbaa !9
  %1235 = load ptr, ptr %33, align 8, !tbaa !5
  %1236 = load i64, ptr %93, align 8, !tbaa !9
  %1237 = load i64, ptr %95, align 8, !tbaa !9
  %1238 = load i64, ptr %52, align 8, !tbaa !9
  %1239 = mul nsw i64 %1237, %1238
  %1240 = add nsw i64 %1236, %1239
  %1241 = getelementptr inbounds %struct.complex, ptr %1235, i64 %1240
  %1242 = load ptr, ptr %34, align 8, !tbaa !5
  %1243 = load ptr, ptr %42, align 8, !tbaa !5
  %1244 = load i64, ptr %57, align 8, !tbaa !9
  %1245 = getelementptr inbounds %struct.complex, ptr %1243, i64 %1244
  %1246 = load ptr, ptr %43, align 8, !tbaa !5
  %1247 = load ptr, ptr %48, align 8, !tbaa !5
  %1248 = load i64, ptr %59, align 8, !tbaa !9
  %1249 = getelementptr inbounds %struct.complex, ptr %1247, i64 %1248
  %1250 = load ptr, ptr %49, align 8, !tbaa !5
  %1251 = call i32 @f2c_cgemm(ptr noundef @.str.1, ptr noundef @.str.1, ptr noundef %79, ptr noundef %77, ptr noundef %77, ptr noundef @c_b2, ptr noundef %1241, ptr noundef %1242, ptr noundef %1245, ptr noundef %1246, ptr noundef @c_b1, ptr noundef %1249, ptr noundef %1250)
  %1252 = load ptr, ptr %48, align 8, !tbaa !5
  %1253 = load i64, ptr %59, align 8, !tbaa !9
  %1254 = getelementptr inbounds %struct.complex, ptr %1252, i64 %1253
  %1255 = load ptr, ptr %49, align 8, !tbaa !5
  %1256 = load ptr, ptr %33, align 8, !tbaa !5
  %1257 = load i64, ptr %93, align 8, !tbaa !9
  %1258 = load i64, ptr %95, align 8, !tbaa !9
  %1259 = load i64, ptr %52, align 8, !tbaa !9
  %1260 = mul nsw i64 %1258, %1259
  %1261 = add nsw i64 %1257, %1260
  %1262 = getelementptr inbounds %struct.complex, ptr %1256, i64 %1261
  %1263 = load ptr, ptr %34, align 8, !tbaa !5
  %1264 = call i32 @clacpy_(ptr noundef @.str.5, ptr noundef %79, ptr noundef %77, ptr noundef %1254, ptr noundef %1255, ptr noundef %1262, ptr noundef %1263)
  br label %1265

1265:                                             ; preds = %1233
  %1266 = load i64, ptr %63, align 8, !tbaa !9
  %1267 = load i64, ptr %93, align 8, !tbaa !9
  %1268 = add nsw i64 %1267, %1266
  store i64 %1268, ptr %93, align 8, !tbaa !9
  br label %1204, !llvm.loop !22

1269:                                             ; preds = %1217
  %1270 = load ptr, ptr %27, align 8, !tbaa !5
  %1271 = load i64, ptr %1270, align 8, !tbaa !9
  %1272 = icmp ne i64 %1271, 0
  br i1 %1272, label %1273, label %1349

1273:                                             ; preds = %1269
  %1274 = load ptr, ptr %29, align 8, !tbaa !5
  %1275 = load i64, ptr %1274, align 8, !tbaa !9
  store i64 %1275, ptr %63, align 8, !tbaa !9
  %1276 = load ptr, ptr %44, align 8, !tbaa !5
  %1277 = load i64, ptr %1276, align 8, !tbaa !9
  store i64 %1277, ptr %62, align 8, !tbaa !9
  %1278 = load ptr, ptr %31, align 8, !tbaa !5
  %1279 = load i64, ptr %1278, align 8, !tbaa !9
  %1280 = add nsw i64 %1279, 1
  store i64 %1280, ptr %87, align 8, !tbaa !9
  br label %1281

1281:                                             ; preds = %1344, %1273
  %1282 = load i64, ptr %62, align 8, !tbaa !9
  %1283 = icmp slt i64 %1282, 0
  br i1 %1283, label %1284, label %1289

1284:                                             ; preds = %1281
  %1285 = load i64, ptr %87, align 8, !tbaa !9
  %1286 = load i64, ptr %63, align 8, !tbaa !9
  %1287 = icmp sge i64 %1285, %1286
  %1288 = zext i1 %1287 to i32
  br label %1294

1289:                                             ; preds = %1281
  %1290 = load i64, ptr %87, align 8, !tbaa !9
  %1291 = load i64, ptr %63, align 8, !tbaa !9
  %1292 = icmp sle i64 %1290, %1291
  %1293 = zext i1 %1292 to i32
  br label %1294

1294:                                             ; preds = %1289, %1284
  %1295 = phi i32 [ %1288, %1284 ], [ %1293, %1289 ]
  %1296 = icmp ne i32 %1295, 0
  br i1 %1296, label %1297, label %1348

1297:                                             ; preds = %1294
  %1298 = load ptr, ptr %44, align 8, !tbaa !5
  %1299 = load i64, ptr %1298, align 8, !tbaa !9
  store i64 %1299, ptr %64, align 8, !tbaa !9
  %1300 = load ptr, ptr %29, align 8, !tbaa !5
  %1301 = load i64, ptr %1300, align 8, !tbaa !9
  %1302 = load i64, ptr %87, align 8, !tbaa !9
  %1303 = sub nsw i64 %1301, %1302
  %1304 = add nsw i64 %1303, 1
  store i64 %1304, ptr %65, align 8, !tbaa !9
  %1305 = load i64, ptr %64, align 8, !tbaa !9
  %1306 = load i64, ptr %65, align 8, !tbaa !9
  %1307 = icmp sle i64 %1305, %1306
  br i1 %1307, label %1308, label %1310

1308:                                             ; preds = %1297
  %1309 = load i64, ptr %64, align 8, !tbaa !9
  br label %1312

1310:                                             ; preds = %1297
  %1311 = load i64, ptr %65, align 8, !tbaa !9
  br label %1312

1312:                                             ; preds = %1310, %1308
  %1313 = phi i64 [ %1309, %1308 ], [ %1311, %1310 ]
  store i64 %1313, ptr %79, align 8, !tbaa !9
  %1314 = load ptr, ptr %42, align 8, !tbaa !5
  %1315 = load i64, ptr %57, align 8, !tbaa !9
  %1316 = getelementptr inbounds %struct.complex, ptr %1314, i64 %1315
  %1317 = load ptr, ptr %43, align 8, !tbaa !5
  %1318 = load ptr, ptr %33, align 8, !tbaa !5
  %1319 = load i64, ptr %95, align 8, !tbaa !9
  %1320 = load i64, ptr %87, align 8, !tbaa !9
  %1321 = load i64, ptr %52, align 8, !tbaa !9
  %1322 = mul nsw i64 %1320, %1321
  %1323 = add nsw i64 %1319, %1322
  %1324 = getelementptr inbounds %struct.complex, ptr %1318, i64 %1323
  %1325 = load ptr, ptr %34, align 8, !tbaa !5
  %1326 = load ptr, ptr %45, align 8, !tbaa !5
  %1327 = load i64, ptr %55, align 8, !tbaa !9
  %1328 = getelementptr inbounds %struct.complex, ptr %1326, i64 %1327
  %1329 = load ptr, ptr %46, align 8, !tbaa !5
  %1330 = call i32 @f2c_cgemm(ptr noundef @.str.10, ptr noundef @.str.1, ptr noundef %77, ptr noundef %79, ptr noundef %77, ptr noundef @c_b2, ptr noundef %1316, ptr noundef %1317, ptr noundef %1324, ptr noundef %1325, ptr noundef @c_b1, ptr noundef %1328, ptr noundef %1329)
  %1331 = load ptr, ptr %45, align 8, !tbaa !5
  %1332 = load i64, ptr %55, align 8, !tbaa !9
  %1333 = getelementptr inbounds %struct.complex, ptr %1331, i64 %1332
  %1334 = load ptr, ptr %46, align 8, !tbaa !5
  %1335 = load ptr, ptr %33, align 8, !tbaa !5
  %1336 = load i64, ptr %95, align 8, !tbaa !9
  %1337 = load i64, ptr %87, align 8, !tbaa !9
  %1338 = load i64, ptr %52, align 8, !tbaa !9
  %1339 = mul nsw i64 %1337, %1338
  %1340 = add nsw i64 %1336, %1339
  %1341 = getelementptr inbounds %struct.complex, ptr %1335, i64 %1340
  %1342 = load ptr, ptr %34, align 8, !tbaa !5
  %1343 = call i32 @clacpy_(ptr noundef @.str.5, ptr noundef %77, ptr noundef %79, ptr noundef %1333, ptr noundef %1334, ptr noundef %1341, ptr noundef %1342)
  br label %1344

1344:                                             ; preds = %1312
  %1345 = load i64, ptr %62, align 8, !tbaa !9
  %1346 = load i64, ptr %87, align 8, !tbaa !9
  %1347 = add nsw i64 %1346, %1345
  store i64 %1347, ptr %87, align 8, !tbaa !9
  br label %1281, !llvm.loop !23

1348:                                             ; preds = %1294
  br label %1349

1349:                                             ; preds = %1348, %1269
  %1350 = load ptr, ptr %28, align 8, !tbaa !5
  %1351 = load i64, ptr %1350, align 8, !tbaa !9
  %1352 = icmp ne i64 %1351, 0
  br i1 %1352, label %1353, label %1428

1353:                                             ; preds = %1349
  %1354 = load ptr, ptr %36, align 8, !tbaa !5
  %1355 = load i64, ptr %1354, align 8, !tbaa !9
  store i64 %1355, ptr %62, align 8, !tbaa !9
  %1356 = load ptr, ptr %47, align 8, !tbaa !5
  %1357 = load i64, ptr %1356, align 8, !tbaa !9
  store i64 %1357, ptr %63, align 8, !tbaa !9
  %1358 = load ptr, ptr %35, align 8, !tbaa !5
  %1359 = load i64, ptr %1358, align 8, !tbaa !9
  store i64 %1359, ptr %93, align 8, !tbaa !9
  br label %1360

1360:                                             ; preds = %1423, %1353
  %1361 = load i64, ptr %63, align 8, !tbaa !9
  %1362 = icmp slt i64 %1361, 0
  br i1 %1362, label %1363, label %1368

1363:                                             ; preds = %1360
  %1364 = load i64, ptr %93, align 8, !tbaa !9
  %1365 = load i64, ptr %62, align 8, !tbaa !9
  %1366 = icmp sge i64 %1364, %1365
  %1367 = zext i1 %1366 to i32
  br label %1373

1368:                                             ; preds = %1360
  %1369 = load i64, ptr %93, align 8, !tbaa !9
  %1370 = load i64, ptr %62, align 8, !tbaa !9
  %1371 = icmp sle i64 %1369, %1370
  %1372 = zext i1 %1371 to i32
  br label %1373

1373:                                             ; preds = %1368, %1363
  %1374 = phi i32 [ %1367, %1363 ], [ %1372, %1368 ]
  %1375 = icmp ne i32 %1374, 0
  br i1 %1375, label %1376, label %1427

1376:                                             ; preds = %1373
  %1377 = load ptr, ptr %47, align 8, !tbaa !5
  %1378 = load i64, ptr %1377, align 8, !tbaa !9
  store i64 %1378, ptr %64, align 8, !tbaa !9
  %1379 = load ptr, ptr %36, align 8, !tbaa !5
  %1380 = load i64, ptr %1379, align 8, !tbaa !9
  %1381 = load i64, ptr %93, align 8, !tbaa !9
  %1382 = sub nsw i64 %1380, %1381
  %1383 = add nsw i64 %1382, 1
  store i64 %1383, ptr %65, align 8, !tbaa !9
  %1384 = load i64, ptr %64, align 8, !tbaa !9
  %1385 = load i64, ptr %65, align 8, !tbaa !9
  %1386 = icmp sle i64 %1384, %1385
  br i1 %1386, label %1387, label %1389

1387:                                             ; preds = %1376
  %1388 = load i64, ptr %64, align 8, !tbaa !9
  br label %1391

1389:                                             ; preds = %1376
  %1390 = load i64, ptr %65, align 8, !tbaa !9
  br label %1391

1391:                                             ; preds = %1389, %1387
  %1392 = phi i64 [ %1388, %1387 ], [ %1390, %1389 ]
  store i64 %1392, ptr %79, align 8, !tbaa !9
  %1393 = load ptr, ptr %37, align 8, !tbaa !5
  %1394 = load i64, ptr %93, align 8, !tbaa !9
  %1395 = load i64, ptr %95, align 8, !tbaa !9
  %1396 = load i64, ptr %60, align 8, !tbaa !9
  %1397 = mul nsw i64 %1395, %1396
  %1398 = add nsw i64 %1394, %1397
  %1399 = getelementptr inbounds %struct.complex, ptr %1393, i64 %1398
  %1400 = load ptr, ptr %38, align 8, !tbaa !5
  %1401 = load ptr, ptr %42, align 8, !tbaa !5
  %1402 = load i64, ptr %57, align 8, !tbaa !9
  %1403 = getelementptr inbounds %struct.complex, ptr %1401, i64 %1402
  %1404 = load ptr, ptr %43, align 8, !tbaa !5
  %1405 = load ptr, ptr %48, align 8, !tbaa !5
  %1406 = load i64, ptr %59, align 8, !tbaa !9
  %1407 = getelementptr inbounds %struct.complex, ptr %1405, i64 %1406
  %1408 = load ptr, ptr %49, align 8, !tbaa !5
  %1409 = call i32 @f2c_cgemm(ptr noundef @.str.1, ptr noundef @.str.1, ptr noundef %79, ptr noundef %77, ptr noundef %77, ptr noundef @c_b2, ptr noundef %1399, ptr noundef %1400, ptr noundef %1403, ptr noundef %1404, ptr noundef @c_b1, ptr noundef %1407, ptr noundef %1408)
  %1410 = load ptr, ptr %48, align 8, !tbaa !5
  %1411 = load i64, ptr %59, align 8, !tbaa !9
  %1412 = getelementptr inbounds %struct.complex, ptr %1410, i64 %1411
  %1413 = load ptr, ptr %49, align 8, !tbaa !5
  %1414 = load ptr, ptr %37, align 8, !tbaa !5
  %1415 = load i64, ptr %93, align 8, !tbaa !9
  %1416 = load i64, ptr %95, align 8, !tbaa !9
  %1417 = load i64, ptr %60, align 8, !tbaa !9
  %1418 = mul nsw i64 %1416, %1417
  %1419 = add nsw i64 %1415, %1418
  %1420 = getelementptr inbounds %struct.complex, ptr %1414, i64 %1419
  %1421 = load ptr, ptr %38, align 8, !tbaa !5
  %1422 = call i32 @clacpy_(ptr noundef @.str.5, ptr noundef %79, ptr noundef %77, ptr noundef %1412, ptr noundef %1413, ptr noundef %1420, ptr noundef %1421)
  br label %1423

1423:                                             ; preds = %1391
  %1424 = load i64, ptr %63, align 8, !tbaa !9
  %1425 = load i64, ptr %93, align 8, !tbaa !9
  %1426 = add nsw i64 %1425, %1424
  store i64 %1426, ptr %93, align 8, !tbaa !9
  br label %1360, !llvm.loop !24

1427:                                             ; preds = %1373
  br label %1428

1428:                                             ; preds = %1427, %1349
  br label %1429

1429:                                             ; preds = %1428, %938, %934
  %1430 = load i64, ptr %77, align 8, !tbaa !9
  %1431 = load ptr, ptr %39, align 8, !tbaa !5
  %1432 = load i64, ptr %1431, align 8, !tbaa !9
  %1433 = sub nsw i64 %1430, %1432
  %1434 = load ptr, ptr %40, align 8, !tbaa !5
  store i64 %1433, ptr %1434, align 8, !tbaa !9
  %1435 = load i64, ptr %94, align 8, !tbaa !9
  %1436 = load ptr, ptr %39, align 8, !tbaa !5
  %1437 = load i64, ptr %1436, align 8, !tbaa !9
  %1438 = sub nsw i64 %1437, %1435
  store i64 %1438, ptr %1436, align 8, !tbaa !9
  %1439 = load i64, ptr %99, align 8, !tbaa !9
  %1440 = sitofp i64 %1439 to float
  store float %1440, ptr %66, align 4, !tbaa !14
  %1441 = load float, ptr %66, align 4, !tbaa !14
  %1442 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 0
  store float %1441, ptr %1442, align 4, !tbaa !11
  %1443 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 1
  store float 0.000000e+00, ptr %1443, align 4, !tbaa !15
  %1444 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 0
  %1445 = load float, ptr %1444, align 4, !tbaa !11
  %1446 = load ptr, ptr %50, align 8, !tbaa !5
  %1447 = getelementptr inbounds %struct.complex, ptr %1446, i64 1
  %1448 = getelementptr inbounds %struct.complex, ptr %1447, i32 0, i32 0
  store float %1445, ptr %1448, align 4, !tbaa !11
  %1449 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 1
  %1450 = load float, ptr %1449, align 4, !tbaa !15
  %1451 = load ptr, ptr %50, align 8, !tbaa !5
  %1452 = getelementptr inbounds %struct.complex, ptr %1451, i64 1
  %1453 = getelementptr inbounds %struct.complex, ptr %1452, i32 0, i32 1
  store float %1450, ptr %1453, align 4, !tbaa !15
  store i32 0, ptr %26, align 4
  store i32 1, ptr %100, align 4
  br label %1454

1454:                                             ; preds = %1429, %479, %279, %274, %244
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  %1455 = load i32, ptr %26, align 4
  ret i32 %1455
}

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

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

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

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

declare double @slamch_(ptr noundef) #2

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

declare double @r_imag(ptr noundef) #2

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

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

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

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

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

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

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

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

declare i32 @clarf_(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 speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #3

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 = !{!"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 = !{!12, !13, i64 4}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = distinct !{!19, !17}
!20 = distinct !{!20, !17}
!21 = distinct !{!21, !17}
!22 = distinct !{!22, !17}
!23 = distinct !{!23, !17}
!24 = distinct !{!24, !17}


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

@c__1 = external hidden global i64, align 8
@c_n1 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_true = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4
@c_b2 = external hidden global %struct.complex, align 4
@c__12 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @claqr3_(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr noundef %6, ptr noundef %7, ptr nocapture noundef readonly %8, ptr nocapture noundef readonly %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr nocapture noundef writeonly %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr nocapture noundef readonly %17, ptr noundef %18, ptr noundef %19, ptr nocapture noundef readonly %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24) local_unnamed_addr #0 {
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca %struct.complex, align 8
  %30 = alloca %struct.complex, align 8
  %31 = alloca %struct.complex, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca %struct.complex, align 4
  %35 = alloca %struct.complex, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca float, align 4
  %41 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #4
  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
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #4
  %42 = load i64, ptr %7, align 8, !tbaa !5
  %43 = xor i64 %42, -1
  %44 = getelementptr inbounds %struct.complex, ptr %6, i64 %43
  %45 = load i64, ptr %11, align 8, !tbaa !5
  %46 = xor i64 %45, -1
  %47 = getelementptr inbounds %struct.complex, ptr %10, i64 %46
  %48 = getelementptr inbounds i8, ptr %14, i64 -8
  %49 = load i64, ptr %16, align 8, !tbaa !5
  %50 = xor i64 %49, -1
  %51 = getelementptr inbounds %struct.complex, ptr %15, i64 %50
  %52 = load i64, ptr %19, align 8, !tbaa !5
  %53 = xor i64 %52, -1
  %54 = getelementptr inbounds %struct.complex, ptr %18, i64 %53
  %55 = getelementptr inbounds i8, ptr %23, i64 -8
  %56 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %56, ptr %26, align 8, !tbaa !5
  %57 = load i64, ptr %4, align 8, !tbaa !5
  %58 = load i64, ptr %3, align 8, !tbaa !5
  %59 = sub nsw i64 %57, %58
  %60 = add nsw i64 %59, 1
  store i64 %60, ptr %27, align 8, !tbaa !5
  %61 = tail call i64 @llvm.smin.i64(i64 %56, i64 %60)
  store i64 %61, ptr %32, align 8, !tbaa !5
  %62 = icmp slt i64 %61, 3
  br i1 %62, label %80, label %63

63:                                               ; preds = %25
  %64 = add nsw i64 %61, -1
  store i64 %64, ptr %26, align 8, !tbaa !5
  %65 = call i32 @cgehrd_(ptr noundef nonnull %32, ptr noundef nonnull @c__1, ptr noundef nonnull %26, ptr noundef %18, ptr noundef nonnull %19, ptr noundef %23, ptr noundef %23, ptr noundef nonnull @c_n1, ptr noundef nonnull %36) #4
  %66 = load float, ptr %23, align 4, !tbaa !9
  %67 = fptosi float %66 to i64
  %68 = load i64, ptr %32, align 8, !tbaa !5
  %69 = add nsw i64 %68, -1
  store i64 %69, ptr %26, align 8, !tbaa !5
  %70 = call i32 @cunmhr_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %32, ptr noundef nonnull %32, ptr noundef nonnull @c__1, ptr noundef nonnull %26, ptr noundef %18, ptr noundef nonnull %19, ptr noundef nonnull %23, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %23, ptr noundef nonnull @c_n1, ptr noundef nonnull %36) #4
  %71 = load float, ptr %23, align 4, !tbaa !9
  %72 = fptosi float %71 to i64
  %73 = call i32 @claqr4_(ptr noundef nonnull @c_true, ptr noundef nonnull @c_true, ptr noundef nonnull %32, ptr noundef nonnull @c__1, ptr noundef nonnull %32, ptr noundef %18, ptr noundef nonnull %19, ptr noundef %14, ptr noundef nonnull @c__1, ptr noundef nonnull %32, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %23, ptr noundef nonnull @c_n1, ptr noundef nonnull %39) #4
  %74 = load float, ptr %23, align 4, !tbaa !9
  %75 = fptosi float %74 to i64
  %76 = load i64, ptr %32, align 8, !tbaa !5
  %77 = call i64 @llvm.smax.i64(i64 %67, i64 %72)
  %78 = add nsw i64 %76, %77
  store i64 %78, ptr %26, align 8, !tbaa !5
  %79 = call i64 @llvm.smax.i64(i64 %78, i64 %75)
  br label %80

80:                                               ; preds = %25, %63
  %.0 = phi i64 [ %79, %63 ], [ 1, %25 ]
  %81 = load i64, ptr %24, align 8, !tbaa !5
  %82 = icmp eq i64 %81, -1
  br i1 %82, label %83, label %85

83:                                               ; preds = %80
  %84 = sitofp i64 %.0 to float
  store float %84, ptr %23, align 4, !tbaa !9
  br label %.sink.split

85:                                               ; preds = %80
  store i64 0, ptr %12, align 8, !tbaa !5
  store i64 0, ptr %13, align 8, !tbaa !5
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %23, align 4, !tbaa !12
  %86 = load i64, ptr %3, align 8, !tbaa !5
  %87 = load i64, ptr %4, align 8, !tbaa !5
  %88 = icmp sgt i64 %86, %87
  br i1 %88, label %499, label %89

89:                                               ; preds = %85
  %90 = load i64, ptr %5, align 8, !tbaa !5
  %91 = icmp slt i64 %90, 1
  br i1 %91, label %499, label %92

92:                                               ; preds = %89
  %93 = call double @slamch_(ptr noundef nonnull @.str.2) #4
  %94 = fptrunc double %93 to float
  store float %94, ptr %40, align 4, !tbaa !12
  %95 = fdiv float 1.000000e+00, %94
  store float %95, ptr %41, align 4, !tbaa !12
  %96 = call i32 @slabad_(ptr noundef nonnull %40, ptr noundef nonnull %41) #4
  %97 = call double @slamch_(ptr noundef nonnull @.str.3) #4
  %98 = fptrunc double %97 to float
  %99 = load float, ptr %40, align 4, !tbaa !12
  %100 = load i64, ptr %2, align 8, !tbaa !5
  %101 = sitofp i64 %100 to float
  %102 = fdiv float %101, %98
  %103 = fmul float %99, %102
  %104 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %104, ptr %26, align 8, !tbaa !5
  %105 = load i64, ptr %4, align 8, !tbaa !5
  %106 = load i64, ptr %3, align 8, !tbaa !5
  %107 = sub nsw i64 %105, %106
  %108 = add nsw i64 %107, 1
  store i64 %108, ptr %27, align 8, !tbaa !5
  %109 = call i64 @llvm.smin.i64(i64 %104, i64 %108)
  store i64 %109, ptr %32, align 8, !tbaa !5
  %110 = sub nsw i64 %105, %109
  %111 = add nsw i64 %110, 1
  %112 = icmp eq i64 %111, %106
  br i1 %112, label %118, label %113

113:                                              ; preds = %92
  %114 = mul nsw i64 %110, %42
  %115 = add nsw i64 %111, %114
  store i64 %115, ptr %26, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.complex, ptr %44, i64 %115
  %117 = load <2 x float>, ptr %116, align 4, !tbaa !12
  br label %118

118:                                              ; preds = %92, %113
  %119 = phi <2 x float> [ %117, %113 ], [ zeroinitializer, %92 ]
  %120 = getelementptr inbounds i8, ptr %31, i64 4
  store <2 x float> %119, ptr %31, align 8
  %121 = icmp eq i64 %105, %111
  br i1 %121, label %122, label %166

122:                                              ; preds = %118
  %123 = add i64 %42, 1
  %124 = mul i64 %105, %123
  store i64 %124, ptr %27, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.complex, ptr %44, i64 %124
  %126 = load float, ptr %125, align 4, !tbaa !9
  %127 = getelementptr %struct.complex, ptr %14, i64 %110
  store float %126, ptr %127, align 4, !tbaa !9
  %128 = getelementptr inbounds %struct.complex, ptr %44, i64 %124, i32 1
  %129 = load float, ptr %128, align 4, !tbaa !13
  %130 = getelementptr inbounds %struct.complex, ptr %48, i64 %105, i32 1
  store float %129, ptr %130, align 4, !tbaa !13
  store i64 1, ptr %12, align 8, !tbaa !5
  store i64 0, ptr %13, align 8, !tbaa !5
  store i64 %124, ptr %26, align 8, !tbaa !5
  %131 = fpext float %98 to double
  %132 = call double @r_imag(ptr noundef nonnull %125) #4
  %133 = fptrunc double %132 to float
  %134 = insertelement <2 x float> poison, float %126, i64 0
  %135 = insertelement <2 x float> %134, float %133, i64 1
  %136 = fcmp oge <2 x float> %135, zeroinitializer
  %137 = fneg <2 x float> %135
  %138 = select <2 x i1> %136, <2 x float> %135, <2 x float> %137
  %139 = fpext <2 x float> %138 to <2 x double>
  %shift = shufflevector <2 x double> %139, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %140 = fadd <2 x double> %shift, %139
  %141 = extractelement <2 x double> %140, i64 0
  %142 = fmul double %141, %131
  %143 = fptrunc double %142 to float
  %144 = load float, ptr %31, align 8, !tbaa !9
  %145 = call double @r_imag(ptr noundef nonnull %31) #4
  %146 = fptrunc double %145 to float
  %147 = insertelement <2 x float> poison, float %144, i64 0
  %148 = insertelement <2 x float> %147, float %146, i64 1
  %149 = fcmp oge <2 x float> %148, zeroinitializer
  %150 = fneg <2 x float> %148
  %151 = select <2 x i1> %149, <2 x float> %148, <2 x float> %150
  %152 = fpext <2 x float> %151 to <2 x double>
  %shift556 = shufflevector <2 x double> %152, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %153 = fadd <2 x double> %shift556, %152
  %154 = extractelement <2 x double> %153, i64 0
  %155 = fcmp oge float %103, %143
  %156 = select i1 %155, float %103, float %143
  %157 = fpext float %156 to double
  %158 = fcmp ugt double %154, %157
  br i1 %158, label %165, label %159

159:                                              ; preds = %122
  store i64 0, ptr %12, align 8, !tbaa !5
  store i64 1, ptr %13, align 8, !tbaa !5
  %160 = load i64, ptr %3, align 8, !tbaa !5
  %.not500 = icmp slt i64 %110, %160
  br i1 %.not500, label %165, label %161

161:                                              ; preds = %159
  %162 = mul nsw i64 %110, %42
  %163 = getelementptr %struct.complex, ptr %44, i64 %105
  %164 = getelementptr %struct.complex, ptr %163, i64 %162
  store <2 x float> zeroinitializer, ptr %164, align 4, !tbaa !12
  br label %165

165:                                              ; preds = %159, %161, %122
  store float 1.000000e+00, ptr %23, align 4, !tbaa !9
  br label %.sink.split

166:                                              ; preds = %118
  %167 = mul nsw i64 %111, %42
  %168 = getelementptr %struct.complex, ptr %44, i64 %111
  %169 = getelementptr %struct.complex, ptr %168, i64 %167
  %170 = call i32 @clacpy_(ptr noundef nonnull @.str.4, ptr noundef nonnull %32, ptr noundef nonnull %32, ptr noundef %169, ptr noundef nonnull %7, ptr noundef %18, ptr noundef nonnull %19) #4
  %171 = load i64, ptr %32, align 8, !tbaa !5
  %172 = add nsw i64 %171, -1
  store i64 %172, ptr %26, align 8, !tbaa !5
  %173 = load i64, ptr %7, align 8, !tbaa !5
  %174 = add nsw i64 %173, 1
  store i64 %174, ptr %27, align 8, !tbaa !5
  %175 = load i64, ptr %19, align 8, !tbaa !5
  %176 = add nsw i64 %175, 1
  store i64 %176, ptr %28, align 8, !tbaa !5
  %177 = getelementptr %struct.complex, ptr %44, i64 %110
  %178 = getelementptr i8, ptr %177, i64 16
  %179 = getelementptr %struct.complex, ptr %178, i64 %167
  %180 = getelementptr inbounds i8, ptr %18, i64 8
  %181 = call i32 @f2c_ccopy(ptr noundef nonnull %26, ptr noundef %179, ptr noundef nonnull %27, ptr noundef nonnull %180, ptr noundef nonnull %28) #4
  %182 = call i32 @claset_(ptr noundef nonnull @.str.5, ptr noundef nonnull %32, ptr noundef nonnull %32, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %15, ptr noundef nonnull %16) #4
  %183 = call i64 @ilaenv_(ptr noundef nonnull @c__12, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %32, ptr noundef nonnull @c__1, ptr noundef nonnull %32, ptr noundef nonnull %24) #4
  %184 = load i64, ptr %32, align 8, !tbaa !5
  %185 = icmp sgt i64 %184, %183
  %186 = getelementptr %struct.complex, ptr %14, i64 %110
  br i1 %185, label %187, label %189

187:                                              ; preds = %166
  %188 = call i32 @claqr4_(ptr noundef nonnull @c_true, ptr noundef nonnull @c_true, ptr noundef nonnull %32, ptr noundef nonnull @c__1, ptr noundef nonnull %32, ptr noundef %18, ptr noundef nonnull %19, ptr noundef %186, ptr noundef nonnull @c__1, ptr noundef nonnull %32, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %39) #4
  br label %191

189:                                              ; preds = %166
  %190 = call i32 @clahqr_(ptr noundef nonnull @c_true, ptr noundef nonnull @c_true, ptr noundef nonnull %32, ptr noundef nonnull @c__1, ptr noundef nonnull %32, ptr noundef %18, ptr noundef nonnull %19, ptr noundef %186, ptr noundef nonnull @c__1, ptr noundef nonnull %32, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %39) #4
  br label %191

191:                                              ; preds = %189, %187
  %192 = load i64, ptr %32, align 8, !tbaa !5
  store i64 %192, ptr %12, align 8, !tbaa !5
  %193 = load i64, ptr %39, align 8, !tbaa !5
  %194 = add nsw i64 %193, 1
  store i64 %194, ptr %38, align 8, !tbaa !5
  store i64 %192, ptr %26, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %51, i64 8
  %.not.not504 = icmp slt i64 %193, %192
  br i1 %.not.not504, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %191
  %195 = add i64 %52, 1
  br label %196

196:                                              ; preds = %.lr.ph, %262
  %.0478505.in = phi i64 [ %193, %.lr.ph ], [ %.0478505, %262 ]
  %.0478505 = add nsw i64 %.0478505.in, 1
  %197 = load i64, ptr %12, align 8, !tbaa !5
  %198 = mul i64 %197, %195
  store i64 %198, ptr %27, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.complex, ptr %54, i64 %198
  %200 = load float, ptr %199, align 4, !tbaa !9
  %201 = call double @r_imag(ptr noundef nonnull %199) #4
  %202 = fptrunc double %201 to float
  %203 = insertelement <2 x float> poison, float %200, i64 0
  %204 = insertelement <2 x float> %203, float %202, i64 1
  %205 = fcmp oge <2 x float> %204, zeroinitializer
  %206 = fneg <2 x float> %204
  %207 = select <2 x i1> %205, <2 x float> %204, <2 x float> %206
  %shift557 = shufflevector <2 x float> %207, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %208 = fadd <2 x float> %207, %shift557
  %209 = extractelement <2 x float> %208, i64 0
  %210 = fcmp oeq float %209, 0.000000e+00
  br i1 %210, label %211, label %222

211:                                              ; preds = %196
  %212 = load float, ptr %31, align 8, !tbaa !9
  %213 = call double @r_imag(ptr noundef nonnull %31) #4
  %214 = fptrunc double %213 to float
  %215 = insertelement <2 x float> poison, float %212, i64 0
  %216 = insertelement <2 x float> %215, float %214, i64 1
  %217 = fcmp oge <2 x float> %216, zeroinitializer
  %218 = fneg <2 x float> %216
  %219 = select <2 x i1> %217, <2 x float> %216, <2 x float> %218
  %shift558 = shufflevector <2 x float> %219, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %220 = fadd <2 x float> %219, %shift558
  %221 = extractelement <2 x float> %220, i64 0
  br label %222

222:                                              ; preds = %211, %196
  %.0479 = phi float [ %221, %211 ], [ %209, %196 ]
  %223 = load i64, ptr %12, align 8, !tbaa !5
  %224 = mul nsw i64 %223, %49
  %225 = add nsw i64 %224, 1
  store i64 %225, ptr %27, align 8, !tbaa !5
  %226 = fmul float %.0479, %98
  %227 = load float, ptr %31, align 8, !tbaa !9
  %228 = call double @r_imag(ptr noundef nonnull %31) #4
  %229 = load i64, ptr %27, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.complex, ptr %51, i64 %229
  %231 = load float, ptr %230, align 4, !tbaa !9
  %232 = load i64, ptr %12, align 8, !tbaa !5
  %233 = mul nsw i64 %232, %49
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %233
  %234 = call double @r_imag(ptr noundef %gep) #4
  %235 = insertelement <2 x float> poison, float %227, i64 0
  %236 = insertelement <2 x float> %235, float %231, i64 1
  %237 = fcmp oge <2 x float> %236, zeroinitializer
  %238 = fneg <2 x float> %236
  %239 = select <2 x i1> %237, <2 x float> %236, <2 x float> %238
  %240 = fpext <2 x float> %239 to <2 x double>
  %241 = insertelement <2 x double> poison, double %228, i64 0
  %242 = insertelement <2 x double> %241, double %234, i64 1
  %243 = fptrunc <2 x double> %242 to <2 x float>
  %244 = fcmp oge <2 x float> %243, zeroinitializer
  %245 = fneg <2 x float> %243
  %246 = select <2 x i1> %244, <2 x float> %243, <2 x float> %245
  %247 = fpext <2 x float> %246 to <2 x double>
  %248 = fadd <2 x double> %240, %247
  %shift559 = shufflevector <2 x double> %248, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %249 = fmul <2 x double> %248, %shift559
  %250 = extractelement <2 x double> %249, i64 0
  %251 = fcmp oge float %103, %226
  %252 = select i1 %251, float %103, float %226
  %253 = fpext float %252 to double
  %254 = fcmp ugt double %250, %253
  %255 = load i64, ptr %12, align 8, !tbaa !5
  br i1 %254, label %258, label %256

256:                                              ; preds = %222
  %257 = add nsw i64 %255, -1
  store i64 %257, ptr %12, align 8, !tbaa !5
  br label %262

258:                                              ; preds = %222
  store i64 %255, ptr %37, align 8, !tbaa !5
  %259 = call i32 @ctrexc_(ptr noundef nonnull @.str.8, ptr noundef nonnull %32, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %36) #4
  %260 = load i64, ptr %38, align 8, !tbaa !5
  %261 = add nsw i64 %260, 1
  store i64 %261, ptr %38, align 8, !tbaa !5
  br label %262

262:                                              ; preds = %256, %258
  %263 = load i64, ptr %26, align 8, !tbaa !5
  %.not.not = icmp slt i64 %.0478505, %263
  br i1 %.not.not, label %196, label %._crit_edge.loopexit, !llvm.loop !14

._crit_edge.loopexit:                             ; preds = %262
  %.pre = load i64, ptr %12, align 8, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %191
  %264 = phi i64 [ %.pre, %._crit_edge.loopexit ], [ %192, %191 ]
  %265 = icmp eq i64 %264, 0
  br i1 %265, label %266, label %267

266:                                              ; preds = %._crit_edge
  store <2 x float> zeroinitializer, ptr %31, align 8, !tbaa !12
  br label %267

267:                                              ; preds = %266, %._crit_edge
  %268 = load i64, ptr %32, align 8, !tbaa !5
  %269 = icmp slt i64 %264, %268
  %.pre550 = load i64, ptr %39, align 8, !tbaa !5
  br i1 %269, label %270, label %.loopexit502

270:                                              ; preds = %267
  store i64 %264, ptr %26, align 8, !tbaa !5
  %.not511.not = icmp slt i64 %.pre550, %264
  br i1 %.not511.not, label %.lr.ph514, label %.loopexit502

.lr.ph514:                                        ; preds = %270
  %271 = add nsw i64 %.pre550, 1
  %272 = add i64 %52, 1
  br label %273

273:                                              ; preds = %.lr.ph514, %314
  %.0481512 = phi i64 [ %271, %.lr.ph514 ], [ %275, %314 ]
  store i64 %.0481512, ptr %37, align 8, !tbaa !5
  %274 = load i64, ptr %12, align 8, !tbaa !5
  store i64 %274, ptr %27, align 8, !tbaa !5
  %275 = add nsw i64 %.0481512, 1
  %.not498506.not = icmp slt i64 %.0481512, %274
  br i1 %.not498506.not, label %.lr.ph509, label %._crit_edge510.thread

._crit_edge510.thread:                            ; preds = %273
  store i64 %.0481512, ptr %38, align 8, !tbaa !5
  br label %314

.lr.ph509:                                        ; preds = %273, %309
  %.0480507 = phi i64 [ %310, %309 ], [ %275, %273 ]
  %276 = mul i64 %.0480507, %272
  store i64 %276, ptr %28, align 8, !tbaa !5
  %277 = load i64, ptr %37, align 8, !tbaa !5
  %278 = mul i64 %277, %272
  %279 = getelementptr inbounds %struct.complex, ptr %54, i64 %276
  %280 = load float, ptr %279, align 4, !tbaa !9
  %281 = call double @r_imag(ptr noundef nonnull %279) #4
  %282 = fptrunc double %281 to float
  %283 = insertelement <2 x float> poison, float %280, i64 0
  %284 = insertelement <2 x float> %283, float %282, i64 1
  %285 = fcmp oge <2 x float> %284, zeroinitializer
  %286 = fneg <2 x float> %284
  %287 = select <2 x i1> %285, <2 x float> %284, <2 x float> %286
  %288 = fpext <2 x float> %287 to <2 x double>
  %289 = getelementptr inbounds %struct.complex, ptr %54, i64 %278
  %290 = load float, ptr %289, align 4, !tbaa !9
  %291 = load i64, ptr %37, align 8, !tbaa !5
  %292 = mul i64 %291, %272
  %293 = getelementptr inbounds %struct.complex, ptr %54, i64 %292
  %294 = call double @r_imag(ptr noundef %293) #4
  %295 = fptrunc double %294 to float
  %296 = insertelement <2 x float> poison, float %290, i64 0
  %297 = insertelement <2 x float> %296, float %295, i64 1
  %298 = fcmp oge <2 x float> %297, zeroinitializer
  %299 = fneg <2 x float> %297
  %300 = select <2 x i1> %298, <2 x float> %297, <2 x float> %299
  %301 = fpext <2 x float> %300 to <2 x double>
  %302 = shufflevector <2 x double> %288, <2 x double> %301, <2 x i32> <i32 0, i32 2>
  %303 = shufflevector <2 x double> %288, <2 x double> %301, <2 x i32> <i32 1, i32 3>
  %304 = fadd <2 x double> %302, %303
  %305 = extractelement <2 x double> %304, i64 0
  %306 = extractelement <2 x double> %304, i64 1
  %307 = fcmp ogt double %305, %306
  br i1 %307, label %308, label %309

308:                                              ; preds = %.lr.ph509
  store i64 %.0480507, ptr %37, align 8, !tbaa !5
  br label %309

309:                                              ; preds = %.lr.ph509, %308
  %310 = add nsw i64 %.0480507, 1
  %311 = load i64, ptr %27, align 8, !tbaa !5
  %.not498.not = icmp slt i64 %.0480507, %311
  br i1 %.not498.not, label %.lr.ph509, label %._crit_edge510, !llvm.loop !16

._crit_edge510:                                   ; preds = %309
  %.pre547 = load i64, ptr %37, align 8, !tbaa !5
  store i64 %.0481512, ptr %38, align 8, !tbaa !5
  %.not499 = icmp eq i64 %.pre547, %.0481512
  br i1 %.not499, label %314, label %312

312:                                              ; preds = %._crit_edge510
  %313 = call i32 @ctrexc_(ptr noundef nonnull @.str.8, ptr noundef nonnull %32, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %36) #4
  br label %314

314:                                              ; preds = %._crit_edge510.thread, %._crit_edge510, %312
  %315 = load i64, ptr %26, align 8, !tbaa !5
  %.not.not543 = icmp slt i64 %.0481512, %315
  br i1 %.not.not543, label %273, label %.loopexit502.loopexit, !llvm.loop !17

.loopexit502.loopexit:                            ; preds = %314
  %.pre548 = load i64, ptr %32, align 8, !tbaa !5
  %.pre549 = load i64, ptr %39, align 8, !tbaa !5
  br label %.loopexit502

.loopexit502:                                     ; preds = %.loopexit502.loopexit, %270, %267
  %316 = phi i64 [ %.pre549, %.loopexit502.loopexit ], [ %.pre550, %270 ], [ %.pre550, %267 ]
  %317 = phi i64 [ %.pre548, %.loopexit502.loopexit ], [ %268, %270 ], [ %268, %267 ]
  store i64 %317, ptr %26, align 8, !tbaa !5
  %.not488.not515 = icmp slt i64 %316, %317
  br i1 %.not488.not515, label %.lr.ph518, label %342

.lr.ph518:                                        ; preds = %.loopexit502
  %318 = add i64 %52, 1
  %319 = sub i64 %317, %316
  %xtraiter = and i64 %319, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.prol.loopexit, label %.prol.preheader

.prol.preheader:                                  ; preds = %.lr.ph518, %.prol.preheader
  %.1482.in516.prol = phi i64 [ %.1482.prol, %.prol.preheader ], [ %316, %.lr.ph518 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.prol.preheader ], [ 0, %.lr.ph518 ]
  %.1482.prol = add nsw i64 %.1482.in516.prol, 1
  %320 = add i64 %.1482.in516.prol, %111
  %321 = mul i64 %.1482.prol, %318
  %322 = getelementptr inbounds %struct.complex, ptr %54, i64 %321
  %323 = getelementptr inbounds %struct.complex, ptr %48, i64 %320
  %324 = load <2 x float>, ptr %322, align 4, !tbaa !12
  store <2 x float> %324, ptr %323, align 4, !tbaa !12
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.prol.loopexit, label %.prol.preheader, !llvm.loop !18

.prol.loopexit:                                   ; preds = %.prol.preheader, %.lr.ph518
  %.lcssa560.unr = phi i64 [ poison, %.lr.ph518 ], [ %320, %.prol.preheader ]
  %.lcssa.unr = phi i64 [ poison, %.lr.ph518 ], [ %321, %.prol.preheader ]
  %.1482.in516.unr = phi i64 [ %316, %.lr.ph518 ], [ %.1482.prol, %.prol.preheader ]
  %325 = sub i64 %316, %317
  %326 = icmp ugt i64 %325, -4
  br i1 %326, label %._crit_edge519, label %.lr.ph518.new

.lr.ph518.new:                                    ; preds = %.prol.loopexit
  %invariant.gep565 = getelementptr %struct.complex, ptr %48, i64 %111
  %invariant.gep567 = getelementptr %struct.complex, ptr %14, i64 %111
  %invariant.gep569 = getelementptr %struct.complex, ptr %48, i64 %111
  br label %327

327:                                              ; preds = %327, %.lr.ph518.new
  %.1482.in516 = phi i64 [ %.1482.in516.unr, %.lr.ph518.new ], [ %.1482.3, %327 ]
  %.1482 = add nsw i64 %.1482.in516, 1
  %328 = mul i64 %.1482, %318
  %329 = getelementptr inbounds %struct.complex, ptr %54, i64 %328
  %gep566 = getelementptr %struct.complex, ptr %invariant.gep565, i64 %.1482.in516
  %330 = load <2 x float>, ptr %329, align 4, !tbaa !12
  store <2 x float> %330, ptr %gep566, align 4, !tbaa !12
  %.1482.1 = add nsw i64 %.1482.in516, 2
  %331 = mul i64 %.1482.1, %318
  %332 = getelementptr inbounds %struct.complex, ptr %54, i64 %331
  %gep568 = getelementptr %struct.complex, ptr %invariant.gep567, i64 %.1482.in516
  %333 = load <2 x float>, ptr %332, align 4, !tbaa !12
  store <2 x float> %333, ptr %gep568, align 4, !tbaa !12
  %.1482.2 = add nsw i64 %.1482.in516, 3
  %334 = mul i64 %.1482.2, %318
  %335 = getelementptr inbounds %struct.complex, ptr %54, i64 %334
  %gep570 = getelementptr %struct.complex, ptr %invariant.gep569, i64 %.1482.1
  %336 = load <2 x float>, ptr %335, align 4, !tbaa !12
  store <2 x float> %336, ptr %gep570, align 4, !tbaa !12
  %.1482.3 = add nsw i64 %.1482.in516, 4
  %337 = add i64 %.1482.2, %111
  %338 = mul i64 %.1482.3, %318
  %339 = getelementptr inbounds %struct.complex, ptr %54, i64 %338
  %340 = getelementptr inbounds %struct.complex, ptr %48, i64 %337
  %341 = load <2 x float>, ptr %339, align 4, !tbaa !12
  store <2 x float> %341, ptr %340, align 4, !tbaa !12
  %exitcond.not.3 = icmp eq i64 %.1482.3, %317
  br i1 %exitcond.not.3, label %._crit_edge519, label %327, !llvm.loop !20

._crit_edge519:                                   ; preds = %327, %.prol.loopexit
  %.lcssa560 = phi i64 [ %.lcssa560.unr, %.prol.loopexit ], [ %337, %327 ]
  %.lcssa = phi i64 [ %.lcssa.unr, %.prol.loopexit ], [ %338, %327 ]
  store i64 %.lcssa560, ptr %27, align 8, !tbaa !5
  store i64 %.lcssa, ptr %28, align 8, !tbaa !5
  br label %342

342:                                              ; preds = %._crit_edge519, %.loopexit502
  %343 = load i64, ptr %12, align 8, !tbaa !5
  %344 = icmp slt i64 %343, %317
  br i1 %344, label %350, label %345

345:                                              ; preds = %342
  %346 = load float, ptr %31, align 8, !tbaa !9
  %347 = fcmp oeq float %346, 0.000000e+00
  %348 = load float, ptr %120, align 4
  %349 = fcmp oeq float %348, 0.000000e+00
  %or.cond = select i1 %347, i1 %349, i1 false
  br i1 %or.cond, label %350, label %.loopexit

350:                                              ; preds = %345, %342
  %351 = icmp sgt i64 %343, 1
  br i1 %351, label %352, label %387

352:                                              ; preds = %350
  %353 = load float, ptr %31, align 8, !tbaa !9
  %354 = fcmp une float %353, 0.000000e+00
  %355 = load float, ptr %120, align 4
  %356 = fcmp une float %355, 0.000000e+00
  %or.cond5 = select i1 %354, i1 true, i1 %356
  br i1 %or.cond5, label %357, label %387

357:                                              ; preds = %352
  %358 = call i32 @f2c_ccopy(ptr noundef nonnull %12, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %23, ptr noundef nonnull @c__1) #4
  %359 = load i64, ptr %12, align 8, !tbaa !5
  store i64 %359, ptr %26, align 8, !tbaa !5
  %.not489521 = icmp slt i64 %359, 1
  br i1 %.not489521, label %._crit_edge525, label %.lr.ph524

.lr.ph524:                                        ; preds = %357, %.lr.ph524
  %.2522 = phi i64 [ %364, %.lr.ph524 ], [ 1, %357 ]
  store i64 %.2522, ptr %27, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.complex, ptr %55, i64 %.2522
  call void @r_cnjg(ptr noundef nonnull %29, ptr noundef nonnull %360) #4
  %361 = load i64, ptr %27, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.complex, ptr %55, i64 %361
  %363 = load <2 x float>, ptr %29, align 8, !tbaa !12
  store <2 x float> %363, ptr %362, align 4, !tbaa !12
  %364 = add nuw nsw i64 %.2522, 1
  %365 = load i64, ptr %26, align 8, !tbaa !5
  %.not489.not = icmp slt i64 %.2522, %365
  br i1 %.not489.not, label %.lr.ph524, label %._crit_edge525, !llvm.loop !21

._crit_edge525:                                   ; preds = %.lr.ph524, %357
  %366 = load <2 x float>, ptr %23, align 4, !tbaa !12
  store <2 x float> %366, ptr %35, align 8, !tbaa !12
  %367 = getelementptr inbounds i8, ptr %23, i64 8
  %368 = call i32 @clarfg_(ptr noundef nonnull %12, ptr noundef nonnull %35, ptr noundef nonnull %367, ptr noundef nonnull @c__1, ptr noundef nonnull %34) #4
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %23, align 4, !tbaa !12
  %369 = load i64, ptr %32, align 8, !tbaa !5
  %370 = add nsw i64 %369, -2
  store i64 %370, ptr %26, align 8, !tbaa !5
  store i64 %370, ptr %27, align 8, !tbaa !5
  %371 = getelementptr inbounds i8, ptr %18, i64 16
  %372 = call i32 @claset_(ptr noundef nonnull @.str.9, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef nonnull %371, ptr noundef nonnull %19) #4
  call void @r_cnjg(ptr noundef nonnull %29, ptr noundef nonnull %34) #4
  %373 = load i64, ptr %32, align 8, !tbaa !5
  %374 = getelementptr %struct.complex, ptr %23, i64 %373
  %375 = call i32 @clarf_(ptr noundef nonnull @.str.9, ptr noundef nonnull %12, ptr noundef nonnull %32, ptr noundef nonnull %23, ptr noundef nonnull @c__1, ptr noundef nonnull %29, ptr noundef %18, ptr noundef nonnull %19, ptr noundef %374) #4
  %376 = load i64, ptr %32, align 8, !tbaa !5
  %377 = getelementptr %struct.complex, ptr %23, i64 %376
  %378 = call i32 @clarf_(ptr noundef nonnull @.str, ptr noundef nonnull %12, ptr noundef nonnull %12, ptr noundef nonnull %23, ptr noundef nonnull @c__1, ptr noundef nonnull %34, ptr noundef %18, ptr noundef nonnull %19, ptr noundef %377) #4
  %379 = load i64, ptr %32, align 8, !tbaa !5
  %380 = getelementptr %struct.complex, ptr %23, i64 %379
  %381 = call i32 @clarf_(ptr noundef nonnull @.str, ptr noundef nonnull %32, ptr noundef nonnull %12, ptr noundef nonnull %23, ptr noundef nonnull @c__1, ptr noundef nonnull %34, ptr noundef %15, ptr noundef nonnull %16, ptr noundef %380) #4
  %382 = load i64, ptr %24, align 8, !tbaa !5
  %383 = load i64, ptr %32, align 8, !tbaa !5
  %384 = sub nsw i64 %382, %383
  store i64 %384, ptr %26, align 8, !tbaa !5
  %385 = getelementptr %struct.complex, ptr %23, i64 %383
  %386 = call i32 @cgehrd_(ptr noundef nonnull %32, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef %18, ptr noundef nonnull %19, ptr noundef nonnull %23, ptr noundef %385, ptr noundef nonnull %26, ptr noundef nonnull %36) #4
  br label %387

387:                                              ; preds = %352, %._crit_edge525, %350
  %388 = icmp sgt i64 %110, 0
  br i1 %388, label %389, label %405

389:                                              ; preds = %387
  %390 = mul nsw i64 %110, %42
  %391 = add nsw i64 %111, %390
  store i64 %391, ptr %26, align 8, !tbaa !5
  call void @r_cnjg(ptr noundef nonnull %30, ptr noundef %15) #4
  %392 = load float, ptr %31, align 8, !tbaa !9
  %393 = load float, ptr %120, align 4, !tbaa !13
  %394 = fneg float %393
  %395 = load <2 x float>, ptr %30, align 8, !tbaa !12
  %396 = insertelement <2 x float> poison, float %393, i64 0
  %397 = insertelement <2 x float> %396, float %394, i64 1
  %398 = fmul <2 x float> %395, %397
  %399 = shufflevector <2 x float> %398, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %400 = insertelement <2 x float> poison, float %392, i64 0
  %401 = shufflevector <2 x float> %400, <2 x float> poison, <2 x i32> zeroinitializer
  %402 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %401, <2 x float> %395, <2 x float> %399)
  store <2 x float> %402, ptr %29, align 8, !tbaa !12
  %403 = load i64, ptr %26, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.complex, ptr %44, i64 %403
  store <2 x float> %402, ptr %404, align 4, !tbaa !12
  br label %405

405:                                              ; preds = %389, %387
  %406 = call i32 @clacpy_(ptr noundef nonnull @.str.4, ptr noundef nonnull %32, ptr noundef nonnull %32, ptr noundef %18, ptr noundef nonnull %19, ptr noundef %169, ptr noundef nonnull %7) #4
  %407 = load i64, ptr %32, align 8, !tbaa !5
  %408 = add nsw i64 %407, -1
  store i64 %408, ptr %26, align 8, !tbaa !5
  %409 = load i64, ptr %19, align 8, !tbaa !5
  %410 = add nsw i64 %409, 1
  store i64 %410, ptr %27, align 8, !tbaa !5
  %411 = load i64, ptr %7, align 8, !tbaa !5
  %412 = add nsw i64 %411, 1
  store i64 %412, ptr %28, align 8, !tbaa !5
  %413 = call i32 @f2c_ccopy(ptr noundef nonnull %26, ptr noundef nonnull %180, ptr noundef nonnull %27, ptr noundef %179, ptr noundef nonnull %28) #4
  %414 = load i64, ptr %12, align 8, !tbaa !5
  %415 = icmp sgt i64 %414, 1
  br i1 %415, label %416, label %427

416:                                              ; preds = %405
  %417 = load float, ptr %31, align 8, !tbaa !9
  %418 = fcmp une float %417, 0.000000e+00
  %419 = load float, ptr %120, align 4
  %420 = fcmp une float %419, 0.000000e+00
  %or.cond8 = select i1 %418, i1 true, i1 %420
  br i1 %or.cond8, label %421, label %427

421:                                              ; preds = %416
  %422 = load i64, ptr %24, align 8, !tbaa !5
  %423 = load i64, ptr %32, align 8, !tbaa !5
  %424 = sub nsw i64 %422, %423
  store i64 %424, ptr %26, align 8, !tbaa !5
  %425 = getelementptr %struct.complex, ptr %23, i64 %423
  %426 = call i32 @cunmhr_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %32, ptr noundef nonnull %12, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef %18, ptr noundef nonnull %19, ptr noundef nonnull %23, ptr noundef %15, ptr noundef nonnull %16, ptr noundef %425, ptr noundef nonnull %26, ptr noundef nonnull %36) #4
  br label %427

427:                                              ; preds = %416, %421, %405
  %428 = load i64, ptr %0, align 8, !tbaa !5
  %.not490 = icmp eq i64 %428, 0
  br i1 %.not490, label %429, label %431

429:                                              ; preds = %427
  %430 = load i64, ptr %3, align 8, !tbaa !5
  br label %431

431:                                              ; preds = %427, %429
  %.0476 = phi i64 [ %430, %429 ], [ 1, %427 ]
  store i64 %110, ptr %26, align 8, !tbaa !5
  %432 = load i64, ptr %20, align 8, !tbaa !5
  store i64 %432, ptr %27, align 8, !tbaa !5
  %invariant.gep526 = getelementptr %struct.complex, ptr %44, i64 %167
  %433 = icmp slt i64 %432, 0
  %434 = icmp sge i64 %.0476, %110
  %435 = icmp sle i64 %.0476, %110
  %.in528 = select i1 %433, i1 %434, i1 %435
  br i1 %.in528, label %.lr.ph531, label %._crit_edge532

.lr.ph531:                                        ; preds = %431, %.lr.ph531
  %.0475529 = phi i64 [ %442, %.lr.ph531 ], [ %.0476, %431 ]
  %436 = load i64, ptr %20, align 8, !tbaa !5
  store i64 %436, ptr %28, align 8, !tbaa !5
  %437 = sub nsw i64 %111, %.0475529
  %438 = call i64 @llvm.smin.i64(i64 %436, i64 %437)
  store i64 %438, ptr %33, align 8, !tbaa !5
  %gep527 = getelementptr %struct.complex, ptr %invariant.gep526, i64 %.0475529
  %439 = call i32 @f2c_cgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %32, ptr noundef nonnull @c_b2, ptr noundef %gep527, ptr noundef nonnull %7, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull @c_b1, ptr noundef %21, ptr noundef %22) #4
  %440 = call i32 @clacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef %21, ptr noundef %22, ptr noundef %gep527, ptr noundef nonnull %7) #4
  %441 = load i64, ptr %27, align 8, !tbaa !5
  %442 = add nsw i64 %441, %.0475529
  %443 = icmp slt i64 %441, 0
  %444 = load i64, ptr %26, align 8
  %445 = icmp sge i64 %442, %444
  %446 = icmp sle i64 %442, %444
  %.in = select i1 %443, i1 %445, i1 %446
  br i1 %.in, label %.lr.ph531, label %._crit_edge532.loopexit, !llvm.loop !22

._crit_edge532.loopexit:                          ; preds = %.lr.ph531
  %.pre551 = load i64, ptr %0, align 8, !tbaa !5
  br label %._crit_edge532

._crit_edge532:                                   ; preds = %._crit_edge532.loopexit, %431
  %447 = phi i64 [ %.pre551, %._crit_edge532.loopexit ], [ %428, %431 ]
  %.not491 = icmp eq i64 %447, 0
  br i1 %.not491, label %.loopexit501, label %448

448:                                              ; preds = %._crit_edge532
  %449 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %449, ptr %27, align 8, !tbaa !5
  %450 = load i64, ptr %17, align 8, !tbaa !5
  store i64 %450, ptr %26, align 8, !tbaa !5
  %451 = load i64, ptr %4, align 8, !tbaa !5
  %452 = add nsw i64 %451, 1
  %453 = icmp slt i64 %450, 0
  %454 = icmp sge i64 %452, %449
  %455 = icmp slt i64 %451, %449
  %.in492533 = select i1 %453, i1 %454, i1 %455
  br i1 %.in492533, label %.lr.ph536, label %.loopexit501

.lr.ph536:                                        ; preds = %448, %.lr.ph536
  %.0477534 = phi i64 [ %465, %.lr.ph536 ], [ %452, %448 ]
  %456 = load i64, ptr %17, align 8, !tbaa !5
  store i64 %456, ptr %28, align 8, !tbaa !5
  %457 = load i64, ptr %2, align 8, !tbaa !5
  %reass.sub = sub i64 %457, %.0477534
  %458 = add i64 %reass.sub, 1
  %459 = call i64 @llvm.smin.i64(i64 %456, i64 %458)
  store i64 %459, ptr %33, align 8, !tbaa !5
  %460 = mul nsw i64 %.0477534, %42
  %461 = getelementptr %struct.complex, ptr %168, i64 %460
  %462 = call i32 @f2c_cgemm(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull @c_b2, ptr noundef %15, ptr noundef nonnull %16, ptr noundef %461, ptr noundef nonnull %7, ptr noundef nonnull @c_b1, ptr noundef %18, ptr noundef nonnull %19) #4
  %463 = call i32 @clacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef %18, ptr noundef nonnull %19, ptr noundef %461, ptr noundef nonnull %7) #4
  %464 = load i64, ptr %26, align 8, !tbaa !5
  %465 = add nsw i64 %464, %.0477534
  %466 = icmp slt i64 %464, 0
  %467 = load i64, ptr %27, align 8
  %468 = icmp sge i64 %465, %467
  %469 = icmp sle i64 %465, %467
  %.in492 = select i1 %466, i1 %468, i1 %469
  br i1 %.in492, label %.lr.ph536, label %.loopexit501, !llvm.loop !23

.loopexit501:                                     ; preds = %.lr.ph536, %448, %._crit_edge532
  %470 = load i64, ptr %1, align 8, !tbaa !5
  %.not493 = icmp eq i64 %470, 0
  br i1 %.not493, label %.loopexit, label %471

471:                                              ; preds = %.loopexit501
  %472 = load i64, ptr %9, align 8, !tbaa !5
  store i64 %472, ptr %26, align 8, !tbaa !5
  %473 = load i64, ptr %20, align 8, !tbaa !5
  store i64 %473, ptr %27, align 8, !tbaa !5
  %474 = load i64, ptr %8, align 8, !tbaa !5
  %475 = icmp slt i64 %473, 0
  %476 = icmp sge i64 %474, %472
  %477 = icmp sle i64 %474, %472
  %.in494537 = select i1 %475, i1 %476, i1 %477
  br i1 %.in494537, label %.lr.ph540, label %.loopexit

.lr.ph540:                                        ; preds = %471
  %478 = mul nsw i64 %111, %45
  %invariant.gep541 = getelementptr %struct.complex, ptr %47, i64 %478
  br label %479

479:                                              ; preds = %.lr.ph540, %479
  %.1538 = phi i64 [ %474, %.lr.ph540 ], [ %487, %479 ]
  %480 = load i64, ptr %20, align 8, !tbaa !5
  store i64 %480, ptr %28, align 8, !tbaa !5
  %481 = load i64, ptr %9, align 8, !tbaa !5
  %reass.sub544 = sub i64 %481, %.1538
  %482 = add i64 %reass.sub544, 1
  %483 = call i64 @llvm.smin.i64(i64 %480, i64 %482)
  store i64 %483, ptr %33, align 8, !tbaa !5
  %gep542 = getelementptr %struct.complex, ptr %invariant.gep541, i64 %.1538
  %484 = call i32 @f2c_cgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %32, ptr noundef nonnull @c_b2, ptr noundef %gep542, ptr noundef nonnull %11, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull @c_b1, ptr noundef %21, ptr noundef nonnull %22) #4
  %485 = call i32 @clacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef %21, ptr noundef nonnull %22, ptr noundef %gep542, ptr noundef nonnull %11) #4
  %486 = load i64, ptr %27, align 8, !tbaa !5
  %487 = add nsw i64 %486, %.1538
  %488 = icmp slt i64 %486, 0
  %489 = load i64, ptr %26, align 8
  %490 = icmp sge i64 %487, %489
  %491 = icmp sle i64 %487, %489
  %.in494 = select i1 %488, i1 %490, i1 %491
  br i1 %.in494, label %479, label %.loopexit, !llvm.loop !24

.loopexit:                                        ; preds = %479, %471, %.loopexit501, %345
  %492 = load i64, ptr %32, align 8, !tbaa !5
  %493 = load i64, ptr %12, align 8, !tbaa !5
  %494 = sub nsw i64 %492, %493
  store i64 %494, ptr %13, align 8, !tbaa !5
  %495 = load i64, ptr %39, align 8, !tbaa !5
  %496 = load i64, ptr %12, align 8, !tbaa !5
  %497 = sub nsw i64 %496, %495
  store i64 %497, ptr %12, align 8, !tbaa !5
  %498 = sitofp i64 %.0 to float
  store float %498, ptr %23, align 4, !tbaa !9
  br label %.sink.split

.sink.split:                                      ; preds = %83, %165, %.loopexit
  %.sink554 = getelementptr inbounds i8, ptr %23, i64 4
  store float 0.000000e+00, ptr %.sink554, align 4, !tbaa !13
  br label %499

499:                                              ; preds = %.sink.split, %89, %85
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #4
  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
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #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 @cgehrd_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

declare double @r_imag(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x float> @llvm.fmuladd.v2f32(<2 x float>, <2 x float>, <2 x float>) #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 = !{!11, !11, i64 0}
!13 = !{!10, !11, i64 4}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.unroll.disable"}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass