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

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

%struct.complex = type { float, float }

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

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

103:                                              ; preds = %15
  %104 = load i64, ptr %63, align 8, !tbaa !9
  %105 = icmp ne i64 %104, 0
  br label %106

106:                                              ; preds = %103, %15
  %107 = phi i1 [ true, %15 ], [ %105, %103 ]
  %108 = zext i1 %107 to i32
  %109 = sext i32 %108 to i64
  store i64 %109, ptr %65, align 8, !tbaa !9
  %110 = load ptr, ptr %17, align 8, !tbaa !5
  %111 = call i64 @lsame_(ptr noundef %110, ptr noundef @.str.2)
  %112 = icmp ne i64 %111, 0
  br i1 %112, label %116, label %113

113:                                              ; preds = %106
  %114 = load i64, ptr %63, align 8, !tbaa !9
  %115 = icmp ne i64 %114, 0
  br label %116

116:                                              ; preds = %113, %106
  %117 = phi i1 [ true, %106 ], [ %115, %113 ]
  %118 = zext i1 %117 to i32
  %119 = sext i32 %118 to i64
  store i64 %119, ptr %62, align 8, !tbaa !9
  %120 = load ptr, ptr %18, align 8, !tbaa !5
  %121 = call i64 @lsame_(ptr noundef %120, ptr noundef @.str.3)
  store i64 %121, ptr %55, align 8, !tbaa !9
  %122 = load ptr, ptr %18, align 8, !tbaa !5
  %123 = call i64 @lsame_(ptr noundef %122, ptr noundef @.str)
  store i64 %123, ptr %59, align 8, !tbaa !9
  %124 = load ptr, ptr %18, align 8, !tbaa !5
  %125 = call i64 @lsame_(ptr noundef %124, ptr noundef @.str.4)
  store i64 %125, ptr %64, align 8, !tbaa !9
  %126 = load i64, ptr %64, align 8, !tbaa !9
  %127 = icmp ne i64 %126, 0
  br i1 %127, label %128, label %151

128:                                              ; preds = %116
  %129 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 0, ptr %129, align 8, !tbaa !9
  %130 = load ptr, ptr %20, align 8, !tbaa !5
  %131 = load i64, ptr %130, align 8, !tbaa !9
  store i64 %131, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %49, align 8, !tbaa !9
  br label %132

132:                                              ; preds = %147, %128
  %133 = load i64, ptr %49, align 8, !tbaa !9
  %134 = load i64, ptr %38, align 8, !tbaa !9
  %135 = icmp sle i64 %133, %134
  br i1 %135, label %136, label %150

136:                                              ; preds = %132
  %137 = load ptr, ptr %19, align 8, !tbaa !5
  %138 = load i64, ptr %49, align 8, !tbaa !9
  %139 = getelementptr inbounds i64, ptr %137, i64 %138
  %140 = load i64, ptr %139, align 8, !tbaa !9
  %141 = icmp ne i64 %140, 0
  br i1 %141, label %142, label %146

142:                                              ; preds = %136
  %143 = load ptr, ptr %28, align 8, !tbaa !5
  %144 = load i64, ptr %143, align 8, !tbaa !9
  %145 = add nsw i64 %144, 1
  store i64 %145, ptr %143, align 8, !tbaa !9
  br label %146

146:                                              ; preds = %142, %136
  br label %147

147:                                              ; preds = %146
  %148 = load i64, ptr %49, align 8, !tbaa !9
  %149 = add nsw i64 %148, 1
  store i64 %149, ptr %49, align 8, !tbaa !9
  br label %132, !llvm.loop !11

150:                                              ; preds = %132
  br label %155

151:                                              ; preds = %116
  %152 = load ptr, ptr %20, align 8, !tbaa !5
  %153 = load i64, ptr %152, align 8, !tbaa !9
  %154 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 %153, ptr %154, align 8, !tbaa !9
  br label %155

155:                                              ; preds = %151, %150
  %156 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 0, ptr %156, align 8, !tbaa !9
  %157 = load i64, ptr %65, align 8, !tbaa !9
  %158 = icmp ne i64 %157, 0
  br i1 %158, label %164, label %159

159:                                              ; preds = %155
  %160 = load i64, ptr %62, align 8, !tbaa !9
  %161 = icmp ne i64 %160, 0
  br i1 %161, label %164, label %162

162:                                              ; preds = %159
  %163 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -1, ptr %163, align 8, !tbaa !9
  br label %240

164:                                              ; preds = %159, %155
  %165 = load i64, ptr %55, align 8, !tbaa !9
  %166 = icmp ne i64 %165, 0
  br i1 %166, label %175, label %167

167:                                              ; preds = %164
  %168 = load i64, ptr %59, align 8, !tbaa !9
  %169 = icmp ne i64 %168, 0
  br i1 %169, label %175, label %170

170:                                              ; preds = %167
  %171 = load i64, ptr %64, align 8, !tbaa !9
  %172 = icmp ne i64 %171, 0
  br i1 %172, label %175, label %173

173:                                              ; preds = %170
  %174 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -2, ptr %174, align 8, !tbaa !9
  br label %239

175:                                              ; preds = %170, %167, %164
  %176 = load ptr, ptr %20, align 8, !tbaa !5
  %177 = load i64, ptr %176, align 8, !tbaa !9
  %178 = icmp slt i64 %177, 0
  br i1 %178, label %179, label %181

179:                                              ; preds = %175
  %180 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -4, ptr %180, align 8, !tbaa !9
  br label %238

181:                                              ; preds = %175
  %182 = load ptr, ptr %22, align 8, !tbaa !5
  %183 = load i64, ptr %182, align 8, !tbaa !9
  %184 = load ptr, ptr %20, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = icmp sge i64 1, %185
  br i1 %186, label %187, label %188

187:                                              ; preds = %181
  br label %191

188:                                              ; preds = %181
  %189 = load ptr, ptr %20, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  br label %191

191:                                              ; preds = %188, %187
  %192 = phi i64 [ 1, %187 ], [ %190, %188 ]
  %193 = icmp slt i64 %183, %192
  br i1 %193, label %194, label %196

194:                                              ; preds = %191
  %195 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -6, ptr %195, align 8, !tbaa !9
  br label %237

196:                                              ; preds = %191
  %197 = load ptr, ptr %24, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  %199 = icmp slt i64 %198, 1
  br i1 %199, label %209, label %200

200:                                              ; preds = %196
  %201 = load i64, ptr %62, align 8, !tbaa !9
  %202 = icmp ne i64 %201, 0
  br i1 %202, label %203, label %211

203:                                              ; preds = %200
  %204 = load ptr, ptr %24, align 8, !tbaa !5
  %205 = load i64, ptr %204, align 8, !tbaa !9
  %206 = load ptr, ptr %20, align 8, !tbaa !5
  %207 = load i64, ptr %206, align 8, !tbaa !9
  %208 = icmp slt i64 %205, %207
  br i1 %208, label %209, label %211

209:                                              ; preds = %203, %196
  %210 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -8, ptr %210, align 8, !tbaa !9
  br label %236

211:                                              ; preds = %203, %200
  %212 = load ptr, ptr %26, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  %214 = icmp slt i64 %213, 1
  br i1 %214, label %224, label %215

215:                                              ; preds = %211
  %216 = load i64, ptr %65, align 8, !tbaa !9
  %217 = icmp ne i64 %216, 0
  br i1 %217, label %218, label %226

218:                                              ; preds = %215
  %219 = load ptr, ptr %26, align 8, !tbaa !5
  %220 = load i64, ptr %219, align 8, !tbaa !9
  %221 = load ptr, ptr %20, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  %223 = icmp slt i64 %220, %222
  br i1 %223, label %224, label %226

224:                                              ; preds = %218, %211
  %225 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -10, ptr %225, align 8, !tbaa !9
  br label %235

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

232:                                              ; preds = %226
  %233 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -11, ptr %233, align 8, !tbaa !9
  br label %234

234:                                              ; preds = %232, %226
  br label %235

235:                                              ; preds = %234, %224
  br label %236

236:                                              ; preds = %235, %209
  br label %237

237:                                              ; preds = %236, %194
  br label %238

238:                                              ; preds = %237, %179
  br label %239

239:                                              ; preds = %238, %173
  br label %240

240:                                              ; preds = %239, %162
  %241 = load ptr, ptr %31, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  %243 = icmp ne i64 %242, 0
  br i1 %243, label %244, label %249

244:                                              ; preds = %240
  %245 = load ptr, ptr %31, align 8, !tbaa !5
  %246 = load i64, ptr %245, align 8, !tbaa !9
  %247 = sub nsw i64 0, %246
  store i64 %247, ptr %38, align 8, !tbaa !9
  %248 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %38)
  store i32 0, ptr %16, align 4
  store i32 1, ptr %67, align 4
  br label %1372

249:                                              ; preds = %240
  %250 = load ptr, ptr %20, align 8, !tbaa !5
  %251 = load i64, ptr %250, align 8, !tbaa !9
  %252 = icmp eq i64 %251, 0
  br i1 %252, label %253, label %254

253:                                              ; preds = %249
  store i32 0, ptr %16, align 4
  store i32 1, ptr %67, align 4
  br label %1372

254:                                              ; preds = %249
  %255 = call double @slamch_(ptr noundef @.str.6)
  %256 = fptrunc double %255 to float
  store float %256, ptr %56, align 4, !tbaa !13
  %257 = load float, ptr %56, align 4, !tbaa !13
  %258 = fdiv float 1.000000e+00, %257
  store float %258, ptr %57, align 4, !tbaa !13
  %259 = call i32 @slabad_(ptr noundef %56, ptr noundef %57)
  %260 = call double @slamch_(ptr noundef @.str.7)
  %261 = fptrunc double %260 to float
  store float %261, ptr %54, align 4, !tbaa !13
  %262 = load float, ptr %56, align 4, !tbaa !13
  %263 = load ptr, ptr %20, align 8, !tbaa !5
  %264 = load i64, ptr %263, align 8, !tbaa !9
  %265 = sitofp i64 %264 to float
  %266 = load float, ptr %54, align 4, !tbaa !13
  %267 = fdiv float %265, %266
  %268 = fmul float %262, %267
  store float %268, ptr %66, align 4, !tbaa !13
  %269 = load ptr, ptr %20, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !9
  store i64 %270, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %48, align 8, !tbaa !9
  br label %271

271:                                              ; preds = %303, %254
  %272 = load i64, ptr %48, align 8, !tbaa !9
  %273 = load i64, ptr %38, align 8, !tbaa !9
  %274 = icmp sle i64 %272, %273
  br i1 %274, label %275, label %306

275:                                              ; preds = %271
  %276 = load i64, ptr %48, align 8, !tbaa !9
  %277 = load ptr, ptr %20, align 8, !tbaa !5
  %278 = load i64, ptr %277, align 8, !tbaa !9
  %279 = add nsw i64 %276, %278
  store i64 %279, ptr %39, align 8, !tbaa !9
  %280 = load i64, ptr %48, align 8, !tbaa !9
  %281 = load i64, ptr %48, align 8, !tbaa !9
  %282 = load i64, ptr %32, align 8, !tbaa !9
  %283 = mul nsw i64 %281, %282
  %284 = add nsw i64 %280, %283
  store i64 %284, ptr %40, align 8, !tbaa !9
  %285 = load ptr, ptr %21, align 8, !tbaa !5
  %286 = load i64, ptr %40, align 8, !tbaa !9
  %287 = getelementptr inbounds %struct.complex, ptr %285, i64 %286
  %288 = getelementptr inbounds %struct.complex, ptr %287, i32 0, i32 0
  %289 = load float, ptr %288, align 4, !tbaa !15
  %290 = load ptr, ptr %29, align 8, !tbaa !5
  %291 = load i64, ptr %39, align 8, !tbaa !9
  %292 = getelementptr inbounds %struct.complex, ptr %290, i64 %291
  %293 = getelementptr inbounds %struct.complex, ptr %292, i32 0, i32 0
  store float %289, ptr %293, align 4, !tbaa !15
  %294 = load ptr, ptr %21, align 8, !tbaa !5
  %295 = load i64, ptr %40, align 8, !tbaa !9
  %296 = getelementptr inbounds %struct.complex, ptr %294, i64 %295
  %297 = getelementptr inbounds %struct.complex, ptr %296, i32 0, i32 1
  %298 = load float, ptr %297, align 4, !tbaa !17
  %299 = load ptr, ptr %29, align 8, !tbaa !5
  %300 = load i64, ptr %39, align 8, !tbaa !9
  %301 = getelementptr inbounds %struct.complex, ptr %299, i64 %300
  %302 = getelementptr inbounds %struct.complex, ptr %301, i32 0, i32 1
  store float %298, ptr %302, align 4, !tbaa !17
  br label %303

303:                                              ; preds = %275
  %304 = load i64, ptr %48, align 8, !tbaa !9
  %305 = add nsw i64 %304, 1
  store i64 %305, ptr %48, align 8, !tbaa !9
  br label %271, !llvm.loop !18

306:                                              ; preds = %271
  %307 = load ptr, ptr %30, align 8, !tbaa !5
  %308 = getelementptr inbounds float, ptr %307, i64 1
  store float 0.000000e+00, ptr %308, align 4, !tbaa !13
  %309 = load ptr, ptr %20, align 8, !tbaa !5
  %310 = load i64, ptr %309, align 8, !tbaa !9
  store i64 %310, ptr %38, align 8, !tbaa !9
  store i64 2, ptr %49, align 8, !tbaa !9
  br label %311

311:                                              ; preds = %329, %306
  %312 = load i64, ptr %49, align 8, !tbaa !9
  %313 = load i64, ptr %38, align 8, !tbaa !9
  %314 = icmp sle i64 %312, %313
  br i1 %314, label %315, label %332

315:                                              ; preds = %311
  %316 = load i64, ptr %49, align 8, !tbaa !9
  %317 = sub nsw i64 %316, 1
  store i64 %317, ptr %39, align 8, !tbaa !9
  %318 = load ptr, ptr %21, align 8, !tbaa !5
  %319 = load i64, ptr %49, align 8, !tbaa !9
  %320 = load i64, ptr %32, align 8, !tbaa !9
  %321 = mul nsw i64 %319, %320
  %322 = add nsw i64 %321, 1
  %323 = getelementptr inbounds %struct.complex, ptr %318, i64 %322
  %324 = call double @f2c_scasum(ptr noundef %39, ptr noundef %323, ptr noundef @c__1)
  %325 = fptrunc double %324 to float
  %326 = load ptr, ptr %30, align 8, !tbaa !5
  %327 = load i64, ptr %49, align 8, !tbaa !9
  %328 = getelementptr inbounds float, ptr %326, i64 %327
  store float %325, ptr %328, align 4, !tbaa !13
  br label %329

329:                                              ; preds = %315
  %330 = load i64, ptr %49, align 8, !tbaa !9
  %331 = add nsw i64 %330, 1
  store i64 %331, ptr %49, align 8, !tbaa !9
  br label %311, !llvm.loop !19

332:                                              ; preds = %311
  %333 = load i64, ptr %65, align 8, !tbaa !9
  %334 = icmp ne i64 %333, 0
  br i1 %334, label %335, label %828

335:                                              ; preds = %332
  %336 = load ptr, ptr %28, align 8, !tbaa !5
  %337 = load i64, ptr %336, align 8, !tbaa !9
  store i64 %337, ptr %53, align 8, !tbaa !9
  %338 = load ptr, ptr %20, align 8, !tbaa !5
  %339 = load i64, ptr %338, align 8, !tbaa !9
  store i64 %339, ptr %52, align 8, !tbaa !9
  br label %340

340:                                              ; preds = %824, %335
  %341 = load i64, ptr %52, align 8, !tbaa !9
  %342 = icmp sge i64 %341, 1
  br i1 %342, label %343, label %827

343:                                              ; preds = %340
  %344 = load i64, ptr %64, align 8, !tbaa !9
  %345 = icmp ne i64 %344, 0
  br i1 %345, label %346, label %354

346:                                              ; preds = %343
  %347 = load ptr, ptr %19, align 8, !tbaa !5
  %348 = load i64, ptr %52, align 8, !tbaa !9
  %349 = getelementptr inbounds i64, ptr %347, i64 %348
  %350 = load i64, ptr %349, align 8, !tbaa !9
  %351 = icmp ne i64 %350, 0
  br i1 %351, label %353, label %352

352:                                              ; preds = %346
  br label %823

353:                                              ; preds = %346
  br label %354

354:                                              ; preds = %353, %343
  %355 = load i64, ptr %52, align 8, !tbaa !9
  %356 = load i64, ptr %52, align 8, !tbaa !9
  %357 = load i64, ptr %32, align 8, !tbaa !9
  %358 = mul nsw i64 %356, %357
  %359 = add nsw i64 %355, %358
  store i64 %359, ptr %38, align 8, !tbaa !9
  %360 = load float, ptr %54, align 4, !tbaa !13
  %361 = fpext float %360 to double
  %362 = load ptr, ptr %21, align 8, !tbaa !5
  %363 = load i64, ptr %38, align 8, !tbaa !9
  %364 = getelementptr inbounds %struct.complex, ptr %362, i64 %363
  %365 = getelementptr inbounds %struct.complex, ptr %364, i32 0, i32 0
  %366 = load float, ptr %365, align 4, !tbaa !15
  store float %366, ptr %43, align 4, !tbaa !13
  %367 = load float, ptr %43, align 4, !tbaa !13
  %368 = fcmp oge float %367, 0.000000e+00
  br i1 %368, label %369, label %371

369:                                              ; preds = %354
  %370 = load float, ptr %43, align 4, !tbaa !13
  br label %374

371:                                              ; preds = %354
  %372 = load float, ptr %43, align 4, !tbaa !13
  %373 = fneg float %372
  br label %374

374:                                              ; preds = %371, %369
  %375 = phi float [ %370, %369 ], [ %373, %371 ]
  %376 = fpext float %375 to double
  %377 = load ptr, ptr %21, align 8, !tbaa !5
  %378 = load i64, ptr %52, align 8, !tbaa !9
  %379 = load i64, ptr %52, align 8, !tbaa !9
  %380 = load i64, ptr %32, align 8, !tbaa !9
  %381 = mul nsw i64 %379, %380
  %382 = add nsw i64 %378, %381
  %383 = getelementptr inbounds %struct.complex, ptr %377, i64 %382
  %384 = call double @r_imag(ptr noundef %383)
  %385 = fptrunc double %384 to float
  store float %385, ptr %44, align 4, !tbaa !13
  %386 = load float, ptr %44, align 4, !tbaa !13
  %387 = fcmp oge float %386, 0.000000e+00
  br i1 %387, label %388, label %390

388:                                              ; preds = %374
  %389 = load float, ptr %44, align 4, !tbaa !13
  br label %393

390:                                              ; preds = %374
  %391 = load float, ptr %44, align 4, !tbaa !13
  %392 = fneg float %391
  br label %393

393:                                              ; preds = %390, %388
  %394 = phi float [ %389, %388 ], [ %392, %390 ]
  %395 = fpext float %394 to double
  %396 = fadd double %376, %395
  %397 = fmul double %361, %396
  %398 = fptrunc double %397 to float
  store float %398, ptr %45, align 4, !tbaa !13
  %399 = load float, ptr %45, align 4, !tbaa !13
  %400 = load float, ptr %66, align 4, !tbaa !13
  %401 = fcmp oge float %399, %400
  br i1 %401, label %402, label %404

402:                                              ; preds = %393
  %403 = load float, ptr %45, align 4, !tbaa !13
  br label %406

404:                                              ; preds = %393
  %405 = load float, ptr %66, align 4, !tbaa !13
  br label %406

406:                                              ; preds = %404, %402
  %407 = phi float [ %403, %402 ], [ %405, %404 ]
  %408 = fpext float %407 to double
  %409 = fptrunc double %408 to float
  store float %409, ptr %58, align 4, !tbaa !13
  %410 = load ptr, ptr %29, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.complex, ptr %410, i64 1
  %412 = getelementptr inbounds %struct.complex, ptr %411, i32 0, i32 0
  store float 1.000000e+00, ptr %412, align 4, !tbaa !15
  %413 = load ptr, ptr %29, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.complex, ptr %413, i64 1
  %415 = getelementptr inbounds %struct.complex, ptr %414, i32 0, i32 1
  store float 0.000000e+00, ptr %415, align 4, !tbaa !17
  %416 = load i64, ptr %52, align 8, !tbaa !9
  %417 = sub nsw i64 %416, 1
  store i64 %417, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %418

418:                                              ; preds = %455, %406
  %419 = load i64, ptr %50, align 8, !tbaa !9
  %420 = load i64, ptr %38, align 8, !tbaa !9
  %421 = icmp sle i64 %419, %420
  br i1 %421, label %422, label %458

422:                                              ; preds = %418
  %423 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %423, ptr %39, align 8, !tbaa !9
  %424 = load i64, ptr %50, align 8, !tbaa !9
  %425 = load i64, ptr %52, align 8, !tbaa !9
  %426 = load i64, ptr %32, align 8, !tbaa !9
  %427 = mul nsw i64 %425, %426
  %428 = add nsw i64 %424, %427
  store i64 %428, ptr %40, align 8, !tbaa !9
  %429 = load ptr, ptr %21, align 8, !tbaa !5
  %430 = load i64, ptr %40, align 8, !tbaa !9
  %431 = getelementptr inbounds %struct.complex, ptr %429, i64 %430
  %432 = getelementptr inbounds %struct.complex, ptr %431, i32 0, i32 0
  %433 = load float, ptr %432, align 4, !tbaa !15
  %434 = fneg float %433
  %435 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 0
  store float %434, ptr %435, align 4, !tbaa !15
  %436 = load ptr, ptr %21, align 8, !tbaa !5
  %437 = load i64, ptr %40, align 8, !tbaa !9
  %438 = getelementptr inbounds %struct.complex, ptr %436, i64 %437
  %439 = getelementptr inbounds %struct.complex, ptr %438, i32 0, i32 1
  %440 = load float, ptr %439, align 4, !tbaa !17
  %441 = fneg float %440
  %442 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 1
  store float %441, ptr %442, align 4, !tbaa !17
  %443 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 0
  %444 = load float, ptr %443, align 4, !tbaa !15
  %445 = load ptr, ptr %29, align 8, !tbaa !5
  %446 = load i64, ptr %39, align 8, !tbaa !9
  %447 = getelementptr inbounds %struct.complex, ptr %445, i64 %446
  %448 = getelementptr inbounds %struct.complex, ptr %447, i32 0, i32 0
  store float %444, ptr %448, align 4, !tbaa !15
  %449 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 1
  %450 = load float, ptr %449, align 4, !tbaa !17
  %451 = load ptr, ptr %29, align 8, !tbaa !5
  %452 = load i64, ptr %39, align 8, !tbaa !9
  %453 = getelementptr inbounds %struct.complex, ptr %451, i64 %452
  %454 = getelementptr inbounds %struct.complex, ptr %453, i32 0, i32 1
  store float %450, ptr %454, align 4, !tbaa !17
  br label %455

455:                                              ; preds = %422
  %456 = load i64, ptr %50, align 8, !tbaa !9
  %457 = add nsw i64 %456, 1
  store i64 %457, ptr %50, align 8, !tbaa !9
  br label %418, !llvm.loop !20

458:                                              ; preds = %418
  %459 = load i64, ptr %52, align 8, !tbaa !9
  %460 = sub nsw i64 %459, 1
  store i64 %460, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %461

461:                                              ; preds = %576, %458
  %462 = load i64, ptr %50, align 8, !tbaa !9
  %463 = load i64, ptr %38, align 8, !tbaa !9
  %464 = icmp sle i64 %462, %463
  br i1 %464, label %465, label %579

465:                                              ; preds = %461
  %466 = load i64, ptr %50, align 8, !tbaa !9
  %467 = load i64, ptr %50, align 8, !tbaa !9
  %468 = load i64, ptr %32, align 8, !tbaa !9
  %469 = mul nsw i64 %467, %468
  %470 = add nsw i64 %466, %469
  store i64 %470, ptr %39, align 8, !tbaa !9
  %471 = load i64, ptr %50, align 8, !tbaa !9
  %472 = load i64, ptr %50, align 8, !tbaa !9
  %473 = load i64, ptr %32, align 8, !tbaa !9
  %474 = mul nsw i64 %472, %473
  %475 = add nsw i64 %471, %474
  store i64 %475, ptr %40, align 8, !tbaa !9
  %476 = load i64, ptr %52, align 8, !tbaa !9
  %477 = load i64, ptr %52, align 8, !tbaa !9
  %478 = load i64, ptr %32, align 8, !tbaa !9
  %479 = mul nsw i64 %477, %478
  %480 = add nsw i64 %476, %479
  store i64 %480, ptr %41, align 8, !tbaa !9
  %481 = load ptr, ptr %21, align 8, !tbaa !5
  %482 = load i64, ptr %40, align 8, !tbaa !9
  %483 = getelementptr inbounds %struct.complex, ptr %481, i64 %482
  %484 = getelementptr inbounds %struct.complex, ptr %483, i32 0, i32 0
  %485 = load float, ptr %484, align 4, !tbaa !15
  %486 = load ptr, ptr %21, align 8, !tbaa !5
  %487 = load i64, ptr %41, align 8, !tbaa !9
  %488 = getelementptr inbounds %struct.complex, ptr %486, i64 %487
  %489 = getelementptr inbounds %struct.complex, ptr %488, i32 0, i32 0
  %490 = load float, ptr %489, align 4, !tbaa !15
  %491 = fsub float %485, %490
  %492 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 0
  store float %491, ptr %492, align 4, !tbaa !15
  %493 = load ptr, ptr %21, align 8, !tbaa !5
  %494 = load i64, ptr %40, align 8, !tbaa !9
  %495 = getelementptr inbounds %struct.complex, ptr %493, i64 %494
  %496 = getelementptr inbounds %struct.complex, ptr %495, i32 0, i32 1
  %497 = load float, ptr %496, align 4, !tbaa !17
  %498 = load ptr, ptr %21, align 8, !tbaa !5
  %499 = load i64, ptr %41, align 8, !tbaa !9
  %500 = getelementptr inbounds %struct.complex, ptr %498, i64 %499
  %501 = getelementptr inbounds %struct.complex, ptr %500, i32 0, i32 1
  %502 = load float, ptr %501, align 4, !tbaa !17
  %503 = fsub float %497, %502
  %504 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 1
  store float %503, ptr %504, align 4, !tbaa !17
  %505 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 0
  %506 = load float, ptr %505, align 4, !tbaa !15
  %507 = load ptr, ptr %21, align 8, !tbaa !5
  %508 = load i64, ptr %39, align 8, !tbaa !9
  %509 = getelementptr inbounds %struct.complex, ptr %507, i64 %508
  %510 = getelementptr inbounds %struct.complex, ptr %509, i32 0, i32 0
  store float %506, ptr %510, align 4, !tbaa !15
  %511 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 1
  %512 = load float, ptr %511, align 4, !tbaa !17
  %513 = load ptr, ptr %21, align 8, !tbaa !5
  %514 = load i64, ptr %39, align 8, !tbaa !9
  %515 = getelementptr inbounds %struct.complex, ptr %513, i64 %514
  %516 = getelementptr inbounds %struct.complex, ptr %515, i32 0, i32 1
  store float %512, ptr %516, align 4, !tbaa !17
  %517 = load i64, ptr %50, align 8, !tbaa !9
  %518 = load i64, ptr %50, align 8, !tbaa !9
  %519 = load i64, ptr %32, align 8, !tbaa !9
  %520 = mul nsw i64 %518, %519
  %521 = add nsw i64 %517, %520
  store i64 %521, ptr %39, align 8, !tbaa !9
  %522 = load ptr, ptr %21, align 8, !tbaa !5
  %523 = load i64, ptr %39, align 8, !tbaa !9
  %524 = getelementptr inbounds %struct.complex, ptr %522, i64 %523
  %525 = getelementptr inbounds %struct.complex, ptr %524, i32 0, i32 0
  %526 = load float, ptr %525, align 4, !tbaa !15
  store float %526, ptr %43, align 4, !tbaa !13
  %527 = load float, ptr %43, align 4, !tbaa !13
  %528 = fcmp oge float %527, 0.000000e+00
  br i1 %528, label %529, label %531

529:                                              ; preds = %465
  %530 = load float, ptr %43, align 4, !tbaa !13
  br label %534

531:                                              ; preds = %465
  %532 = load float, ptr %43, align 4, !tbaa !13
  %533 = fneg float %532
  br label %534

534:                                              ; preds = %531, %529
  %535 = phi float [ %530, %529 ], [ %533, %531 ]
  %536 = fpext float %535 to double
  %537 = load ptr, ptr %21, align 8, !tbaa !5
  %538 = load i64, ptr %50, align 8, !tbaa !9
  %539 = load i64, ptr %50, align 8, !tbaa !9
  %540 = load i64, ptr %32, align 8, !tbaa !9
  %541 = mul nsw i64 %539, %540
  %542 = add nsw i64 %538, %541
  %543 = getelementptr inbounds %struct.complex, ptr %537, i64 %542
  %544 = call double @r_imag(ptr noundef %543)
  %545 = fptrunc double %544 to float
  store float %545, ptr %44, align 4, !tbaa !13
  %546 = load float, ptr %44, align 4, !tbaa !13
  %547 = fcmp oge float %546, 0.000000e+00
  br i1 %547, label %548, label %550

548:                                              ; preds = %534
  %549 = load float, ptr %44, align 4, !tbaa !13
  br label %553

550:                                              ; preds = %534
  %551 = load float, ptr %44, align 4, !tbaa !13
  %552 = fneg float %551
  br label %553

553:                                              ; preds = %550, %548
  %554 = phi float [ %549, %548 ], [ %552, %550 ]
  %555 = fpext float %554 to double
  %556 = fadd double %536, %555
  %557 = load float, ptr %58, align 4, !tbaa !13
  %558 = fpext float %557 to double
  %559 = fcmp olt double %556, %558
  br i1 %559, label %560, label %575

560:                                              ; preds = %553
  %561 = load i64, ptr %50, align 8, !tbaa !9
  %562 = load i64, ptr %50, align 8, !tbaa !9
  %563 = load i64, ptr %32, align 8, !tbaa !9
  %564 = mul nsw i64 %562, %563
  %565 = add nsw i64 %561, %564
  store i64 %565, ptr %40, align 8, !tbaa !9
  %566 = load float, ptr %58, align 4, !tbaa !13
  %567 = load ptr, ptr %21, align 8, !tbaa !5
  %568 = load i64, ptr %40, align 8, !tbaa !9
  %569 = getelementptr inbounds %struct.complex, ptr %567, i64 %568
  %570 = getelementptr inbounds %struct.complex, ptr %569, i32 0, i32 0
  store float %566, ptr %570, align 4, !tbaa !15
  %571 = load ptr, ptr %21, align 8, !tbaa !5
  %572 = load i64, ptr %40, align 8, !tbaa !9
  %573 = getelementptr inbounds %struct.complex, ptr %571, i64 %572
  %574 = getelementptr inbounds %struct.complex, ptr %573, i32 0, i32 1
  store float 0.000000e+00, ptr %574, align 4, !tbaa !17
  br label %575

575:                                              ; preds = %560, %553
  br label %576

576:                                              ; preds = %575
  %577 = load i64, ptr %50, align 8, !tbaa !9
  %578 = add nsw i64 %577, 1
  store i64 %578, ptr %50, align 8, !tbaa !9
  br label %461, !llvm.loop !21

579:                                              ; preds = %461
  %580 = load i64, ptr %52, align 8, !tbaa !9
  %581 = icmp sgt i64 %580, 1
  br i1 %581, label %582, label %605

582:                                              ; preds = %579
  %583 = load i64, ptr %52, align 8, !tbaa !9
  %584 = sub nsw i64 %583, 1
  store i64 %584, ptr %38, align 8, !tbaa !9
  %585 = load ptr, ptr %21, align 8, !tbaa !5
  %586 = load i64, ptr %33, align 8, !tbaa !9
  %587 = getelementptr inbounds %struct.complex, ptr %585, i64 %586
  %588 = load ptr, ptr %22, align 8, !tbaa !5
  %589 = load ptr, ptr %29, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.complex, ptr %589, i64 1
  %591 = load ptr, ptr %30, align 8, !tbaa !5
  %592 = getelementptr inbounds float, ptr %591, i64 1
  %593 = load ptr, ptr %31, align 8, !tbaa !5
  %594 = call i32 @clatrs_(ptr noundef @.str.8, ptr noundef @.str.9, ptr noundef @.str.10, ptr noundef @.str.11, ptr noundef %38, ptr noundef %587, ptr noundef %588, ptr noundef %590, ptr noundef %60, ptr noundef %592, ptr noundef %593)
  %595 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %595, ptr %38, align 8, !tbaa !9
  %596 = load float, ptr %60, align 4, !tbaa !13
  %597 = load ptr, ptr %29, align 8, !tbaa !5
  %598 = load i64, ptr %38, align 8, !tbaa !9
  %599 = getelementptr inbounds %struct.complex, ptr %597, i64 %598
  %600 = getelementptr inbounds %struct.complex, ptr %599, i32 0, i32 0
  store float %596, ptr %600, align 4, !tbaa !15
  %601 = load ptr, ptr %29, align 8, !tbaa !5
  %602 = load i64, ptr %38, align 8, !tbaa !9
  %603 = getelementptr inbounds %struct.complex, ptr %601, i64 %602
  %604 = getelementptr inbounds %struct.complex, ptr %603, i32 0, i32 1
  store float 0.000000e+00, ptr %604, align 4, !tbaa !17
  br label %605

605:                                              ; preds = %582, %579
  %606 = load i64, ptr %59, align 8, !tbaa !9
  %607 = icmp ne i64 %606, 0
  br i1 %607, label %700, label %608

608:                                              ; preds = %605
  %609 = load ptr, ptr %29, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.complex, ptr %609, i64 1
  %611 = load ptr, ptr %25, align 8, !tbaa !5
  %612 = load i64, ptr %53, align 8, !tbaa !9
  %613 = load i64, ptr %36, align 8, !tbaa !9
  %614 = mul nsw i64 %612, %613
  %615 = add nsw i64 %614, 1
  %616 = getelementptr inbounds %struct.complex, ptr %611, i64 %615
  %617 = call i32 @f2c_ccopy(ptr noundef %52, ptr noundef %610, ptr noundef @c__1, ptr noundef %616, ptr noundef @c__1)
  %618 = load ptr, ptr %25, align 8, !tbaa !5
  %619 = load i64, ptr %53, align 8, !tbaa !9
  %620 = load i64, ptr %36, align 8, !tbaa !9
  %621 = mul nsw i64 %619, %620
  %622 = add nsw i64 %621, 1
  %623 = getelementptr inbounds %struct.complex, ptr %618, i64 %622
  %624 = call i64 @f2c_icamax(ptr noundef %52, ptr noundef %623, ptr noundef @c__1)
  store i64 %624, ptr %51, align 8, !tbaa !9
  %625 = load i64, ptr %51, align 8, !tbaa !9
  %626 = load i64, ptr %53, align 8, !tbaa !9
  %627 = load i64, ptr %36, align 8, !tbaa !9
  %628 = mul nsw i64 %626, %627
  %629 = add nsw i64 %625, %628
  store i64 %629, ptr %38, align 8, !tbaa !9
  %630 = load ptr, ptr %25, align 8, !tbaa !5
  %631 = load i64, ptr %38, align 8, !tbaa !9
  %632 = getelementptr inbounds %struct.complex, ptr %630, i64 %631
  %633 = getelementptr inbounds %struct.complex, ptr %632, i32 0, i32 0
  %634 = load float, ptr %633, align 4, !tbaa !15
  store float %634, ptr %43, align 4, !tbaa !13
  %635 = load float, ptr %43, align 4, !tbaa !13
  %636 = fcmp oge float %635, 0.000000e+00
  br i1 %636, label %637, label %639

637:                                              ; preds = %608
  %638 = load float, ptr %43, align 4, !tbaa !13
  br label %642

639:                                              ; preds = %608
  %640 = load float, ptr %43, align 4, !tbaa !13
  %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 = load ptr, ptr %25, align 8, !tbaa !5
  %646 = load i64, ptr %51, align 8, !tbaa !9
  %647 = load i64, ptr %53, align 8, !tbaa !9
  %648 = load i64, ptr %36, align 8, !tbaa !9
  %649 = mul nsw i64 %647, %648
  %650 = add nsw i64 %646, %649
  %651 = getelementptr inbounds %struct.complex, ptr %645, i64 %650
  %652 = call double @r_imag(ptr noundef %651)
  %653 = fptrunc double %652 to float
  store float %653, ptr %44, align 4, !tbaa !13
  %654 = load float, ptr %44, align 4, !tbaa !13
  %655 = fcmp oge float %654, 0.000000e+00
  br i1 %655, label %656, label %658

656:                                              ; preds = %642
  %657 = load float, ptr %44, align 4, !tbaa !13
  br label %661

658:                                              ; preds = %642
  %659 = load float, ptr %44, align 4, !tbaa !13
  %660 = fneg float %659
  br label %661

661:                                              ; preds = %658, %656
  %662 = phi float [ %657, %656 ], [ %660, %658 ]
  %663 = fpext float %662 to double
  %664 = fadd double %644, %663
  %665 = fdiv double 1.000000e+00, %664
  %666 = fptrunc double %665 to float
  store float %666, ptr %61, align 4, !tbaa !13
  %667 = load ptr, ptr %25, align 8, !tbaa !5
  %668 = load i64, ptr %53, align 8, !tbaa !9
  %669 = load i64, ptr %36, align 8, !tbaa !9
  %670 = mul nsw i64 %668, %669
  %671 = add nsw i64 %670, 1
  %672 = getelementptr inbounds %struct.complex, ptr %667, i64 %671
  %673 = call i32 @f2c_csscal(ptr noundef %52, ptr noundef %61, ptr noundef %672, ptr noundef @c__1)
  %674 = load ptr, ptr %20, align 8, !tbaa !5
  %675 = load i64, ptr %674, align 8, !tbaa !9
  store i64 %675, ptr %38, align 8, !tbaa !9
  %676 = load i64, ptr %52, align 8, !tbaa !9
  %677 = add nsw i64 %676, 1
  store i64 %677, ptr %50, align 8, !tbaa !9
  br label %678

678:                                              ; preds = %696, %661
  %679 = load i64, ptr %50, align 8, !tbaa !9
  %680 = load i64, ptr %38, align 8, !tbaa !9
  %681 = icmp sle i64 %679, %680
  br i1 %681, label %682, label %699

682:                                              ; preds = %678
  %683 = load i64, ptr %50, align 8, !tbaa !9
  %684 = load i64, ptr %53, align 8, !tbaa !9
  %685 = load i64, ptr %36, align 8, !tbaa !9
  %686 = mul nsw i64 %684, %685
  %687 = add nsw i64 %683, %686
  store i64 %687, ptr %39, align 8, !tbaa !9
  %688 = load ptr, ptr %25, align 8, !tbaa !5
  %689 = load i64, ptr %39, align 8, !tbaa !9
  %690 = getelementptr inbounds %struct.complex, ptr %688, i64 %689
  %691 = getelementptr inbounds %struct.complex, ptr %690, i32 0, i32 0
  store float 0.000000e+00, ptr %691, align 4, !tbaa !15
  %692 = load ptr, ptr %25, align 8, !tbaa !5
  %693 = load i64, ptr %39, align 8, !tbaa !9
  %694 = getelementptr inbounds %struct.complex, ptr %692, i64 %693
  %695 = getelementptr inbounds %struct.complex, ptr %694, i32 0, i32 1
  store float 0.000000e+00, ptr %695, align 4, !tbaa !17
  br label %696

696:                                              ; preds = %682
  %697 = load i64, ptr %50, align 8, !tbaa !9
  %698 = add nsw i64 %697, 1
  store i64 %698, ptr %50, align 8, !tbaa !9
  br label %678, !llvm.loop !22

699:                                              ; preds = %678
  br label %782

700:                                              ; preds = %605
  %701 = load i64, ptr %52, align 8, !tbaa !9
  %702 = icmp sgt i64 %701, 1
  br i1 %702, label %703, label %723

703:                                              ; preds = %700
  %704 = load i64, ptr %52, align 8, !tbaa !9
  %705 = sub nsw i64 %704, 1
  store i64 %705, ptr %38, align 8, !tbaa !9
  %706 = load float, ptr %60, align 4, !tbaa !13
  %707 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 0
  store float %706, ptr %707, align 4, !tbaa !15
  %708 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 1
  store float 0.000000e+00, ptr %708, align 4, !tbaa !17
  %709 = load ptr, ptr %20, align 8, !tbaa !5
  %710 = load ptr, ptr %25, align 8, !tbaa !5
  %711 = load i64, ptr %37, align 8, !tbaa !9
  %712 = getelementptr inbounds %struct.complex, ptr %710, i64 %711
  %713 = load ptr, ptr %26, align 8, !tbaa !5
  %714 = load ptr, ptr %29, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.complex, ptr %714, i64 1
  %716 = load ptr, ptr %25, align 8, !tbaa !5
  %717 = load i64, ptr %52, align 8, !tbaa !9
  %718 = load i64, ptr %36, align 8, !tbaa !9
  %719 = mul nsw i64 %717, %718
  %720 = add nsw i64 %719, 1
  %721 = getelementptr inbounds %struct.complex, ptr %716, i64 %720
  %722 = call i32 @f2c_cgemv(ptr noundef @.str.12, ptr noundef %709, ptr noundef %38, ptr noundef @c_b2, ptr noundef %712, ptr noundef %713, ptr noundef %715, ptr noundef @c__1, ptr noundef %46, ptr noundef %721, ptr noundef @c__1)
  br label %723

723:                                              ; preds = %703, %700
  %724 = load ptr, ptr %20, align 8, !tbaa !5
  %725 = load ptr, ptr %25, align 8, !tbaa !5
  %726 = load i64, ptr %52, align 8, !tbaa !9
  %727 = load i64, ptr %36, align 8, !tbaa !9
  %728 = mul nsw i64 %726, %727
  %729 = add nsw i64 %728, 1
  %730 = getelementptr inbounds %struct.complex, ptr %725, i64 %729
  %731 = call i64 @f2c_icamax(ptr noundef %724, ptr noundef %730, ptr noundef @c__1)
  store i64 %731, ptr %51, align 8, !tbaa !9
  %732 = load i64, ptr %51, align 8, !tbaa !9
  %733 = load i64, ptr %52, align 8, !tbaa !9
  %734 = load i64, ptr %36, align 8, !tbaa !9
  %735 = mul nsw i64 %733, %734
  %736 = add nsw i64 %732, %735
  store i64 %736, ptr %38, align 8, !tbaa !9
  %737 = load ptr, ptr %25, align 8, !tbaa !5
  %738 = load i64, ptr %38, align 8, !tbaa !9
  %739 = getelementptr inbounds %struct.complex, ptr %737, i64 %738
  %740 = getelementptr inbounds %struct.complex, ptr %739, i32 0, i32 0
  %741 = load float, ptr %740, align 4, !tbaa !15
  store float %741, ptr %43, align 4, !tbaa !13
  %742 = load float, ptr %43, align 4, !tbaa !13
  %743 = fcmp oge float %742, 0.000000e+00
  br i1 %743, label %744, label %746

744:                                              ; preds = %723
  %745 = load float, ptr %43, align 4, !tbaa !13
  br label %749

746:                                              ; preds = %723
  %747 = load float, ptr %43, align 4, !tbaa !13
  %748 = fneg float %747
  br label %749

749:                                              ; preds = %746, %744
  %750 = phi float [ %745, %744 ], [ %748, %746 ]
  %751 = fpext float %750 to double
  %752 = load ptr, ptr %25, align 8, !tbaa !5
  %753 = load i64, ptr %51, align 8, !tbaa !9
  %754 = load i64, ptr %52, align 8, !tbaa !9
  %755 = load i64, ptr %36, align 8, !tbaa !9
  %756 = mul nsw i64 %754, %755
  %757 = add nsw i64 %753, %756
  %758 = getelementptr inbounds %struct.complex, ptr %752, i64 %757
  %759 = call double @r_imag(ptr noundef %758)
  %760 = fptrunc double %759 to float
  store float %760, ptr %44, align 4, !tbaa !13
  %761 = load float, ptr %44, align 4, !tbaa !13
  %762 = fcmp oge float %761, 0.000000e+00
  br i1 %762, label %763, label %765

763:                                              ; preds = %749
  %764 = load float, ptr %44, align 4, !tbaa !13
  br label %768

765:                                              ; preds = %749
  %766 = load float, ptr %44, align 4, !tbaa !13
  %767 = fneg float %766
  br label %768

768:                                              ; preds = %765, %763
  %769 = phi float [ %764, %763 ], [ %767, %765 ]
  %770 = fpext float %769 to double
  %771 = fadd double %751, %770
  %772 = fdiv double 1.000000e+00, %771
  %773 = fptrunc double %772 to float
  store float %773, ptr %61, align 4, !tbaa !13
  %774 = load ptr, ptr %20, align 8, !tbaa !5
  %775 = load ptr, ptr %25, align 8, !tbaa !5
  %776 = load i64, ptr %52, align 8, !tbaa !9
  %777 = load i64, ptr %36, align 8, !tbaa !9
  %778 = mul nsw i64 %776, %777
  %779 = add nsw i64 %778, 1
  %780 = getelementptr inbounds %struct.complex, ptr %775, i64 %779
  %781 = call i32 @f2c_csscal(ptr noundef %774, ptr noundef %61, ptr noundef %780, ptr noundef @c__1)
  br label %782

782:                                              ; preds = %768, %699
  %783 = load i64, ptr %52, align 8, !tbaa !9
  %784 = sub nsw i64 %783, 1
  store i64 %784, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %785

785:                                              ; preds = %817, %782
  %786 = load i64, ptr %50, align 8, !tbaa !9
  %787 = load i64, ptr %38, align 8, !tbaa !9
  %788 = icmp sle i64 %786, %787
  br i1 %788, label %789, label %820

789:                                              ; preds = %785
  %790 = load i64, ptr %50, align 8, !tbaa !9
  %791 = load i64, ptr %50, align 8, !tbaa !9
  %792 = load i64, ptr %32, align 8, !tbaa !9
  %793 = mul nsw i64 %791, %792
  %794 = add nsw i64 %790, %793
  store i64 %794, ptr %39, align 8, !tbaa !9
  %795 = load i64, ptr %50, align 8, !tbaa !9
  %796 = load ptr, ptr %20, align 8, !tbaa !5
  %797 = load i64, ptr %796, align 8, !tbaa !9
  %798 = add nsw i64 %795, %797
  store i64 %798, ptr %40, align 8, !tbaa !9
  %799 = load ptr, ptr %29, align 8, !tbaa !5
  %800 = load i64, ptr %40, align 8, !tbaa !9
  %801 = getelementptr inbounds %struct.complex, ptr %799, i64 %800
  %802 = getelementptr inbounds %struct.complex, ptr %801, i32 0, i32 0
  %803 = load float, ptr %802, align 4, !tbaa !15
  %804 = load ptr, ptr %21, align 8, !tbaa !5
  %805 = load i64, ptr %39, align 8, !tbaa !9
  %806 = getelementptr inbounds %struct.complex, ptr %804, i64 %805
  %807 = getelementptr inbounds %struct.complex, ptr %806, i32 0, i32 0
  store float %803, ptr %807, align 4, !tbaa !15
  %808 = load ptr, ptr %29, align 8, !tbaa !5
  %809 = load i64, ptr %40, align 8, !tbaa !9
  %810 = getelementptr inbounds %struct.complex, ptr %808, i64 %809
  %811 = getelementptr inbounds %struct.complex, ptr %810, i32 0, i32 1
  %812 = load float, ptr %811, align 4, !tbaa !17
  %813 = load ptr, ptr %21, align 8, !tbaa !5
  %814 = load i64, ptr %39, align 8, !tbaa !9
  %815 = getelementptr inbounds %struct.complex, ptr %813, i64 %814
  %816 = getelementptr inbounds %struct.complex, ptr %815, i32 0, i32 1
  store float %812, ptr %816, align 4, !tbaa !17
  br label %817

817:                                              ; preds = %789
  %818 = load i64, ptr %50, align 8, !tbaa !9
  %819 = add nsw i64 %818, 1
  store i64 %819, ptr %50, align 8, !tbaa !9
  br label %785, !llvm.loop !23

820:                                              ; preds = %785
  %821 = load i64, ptr %53, align 8, !tbaa !9
  %822 = add nsw i64 %821, -1
  store i64 %822, ptr %53, align 8, !tbaa !9
  br label %823

823:                                              ; preds = %820, %352
  br label %824

824:                                              ; preds = %823
  %825 = load i64, ptr %52, align 8, !tbaa !9
  %826 = add nsw i64 %825, -1
  store i64 %826, ptr %52, align 8, !tbaa !9
  br label %340, !llvm.loop !24

827:                                              ; preds = %340
  br label %828

828:                                              ; preds = %827, %332
  %829 = load i64, ptr %62, align 8, !tbaa !9
  %830 = icmp ne i64 %829, 0
  br i1 %830, label %831, label %1371

831:                                              ; preds = %828
  store i64 1, ptr %53, align 8, !tbaa !9
  %832 = load ptr, ptr %20, align 8, !tbaa !5
  %833 = load i64, ptr %832, align 8, !tbaa !9
  store i64 %833, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %834

834:                                              ; preds = %1367, %831
  %835 = load i64, ptr %52, align 8, !tbaa !9
  %836 = load i64, ptr %38, align 8, !tbaa !9
  %837 = icmp sle i64 %835, %836
  br i1 %837, label %838, label %1370

838:                                              ; preds = %834
  %839 = load i64, ptr %64, align 8, !tbaa !9
  %840 = icmp ne i64 %839, 0
  br i1 %840, label %841, label %849

841:                                              ; preds = %838
  %842 = load ptr, ptr %19, align 8, !tbaa !5
  %843 = load i64, ptr %52, align 8, !tbaa !9
  %844 = getelementptr inbounds i64, ptr %842, i64 %843
  %845 = load i64, ptr %844, align 8, !tbaa !9
  %846 = icmp ne i64 %845, 0
  br i1 %846, label %848, label %847

847:                                              ; preds = %841
  br label %1366

848:                                              ; preds = %841
  br label %849

849:                                              ; preds = %848, %838
  %850 = load i64, ptr %52, align 8, !tbaa !9
  %851 = load i64, ptr %52, align 8, !tbaa !9
  %852 = load i64, ptr %32, align 8, !tbaa !9
  %853 = mul nsw i64 %851, %852
  %854 = add nsw i64 %850, %853
  store i64 %854, ptr %39, align 8, !tbaa !9
  %855 = load float, ptr %54, align 4, !tbaa !13
  %856 = fpext float %855 to double
  %857 = load ptr, ptr %21, align 8, !tbaa !5
  %858 = load i64, ptr %39, align 8, !tbaa !9
  %859 = getelementptr inbounds %struct.complex, ptr %857, i64 %858
  %860 = getelementptr inbounds %struct.complex, ptr %859, i32 0, i32 0
  %861 = load float, ptr %860, align 4, !tbaa !15
  store float %861, ptr %43, align 4, !tbaa !13
  %862 = load float, ptr %43, align 4, !tbaa !13
  %863 = fcmp oge float %862, 0.000000e+00
  br i1 %863, label %864, label %866

864:                                              ; preds = %849
  %865 = load float, ptr %43, align 4, !tbaa !13
  br label %869

866:                                              ; preds = %849
  %867 = load float, ptr %43, align 4, !tbaa !13
  %868 = fneg float %867
  br label %869

869:                                              ; preds = %866, %864
  %870 = phi float [ %865, %864 ], [ %868, %866 ]
  %871 = fpext float %870 to double
  %872 = load ptr, ptr %21, align 8, !tbaa !5
  %873 = load i64, ptr %52, align 8, !tbaa !9
  %874 = load i64, ptr %52, align 8, !tbaa !9
  %875 = load i64, ptr %32, align 8, !tbaa !9
  %876 = mul nsw i64 %874, %875
  %877 = add nsw i64 %873, %876
  %878 = getelementptr inbounds %struct.complex, ptr %872, i64 %877
  %879 = call double @r_imag(ptr noundef %878)
  %880 = fptrunc double %879 to float
  store float %880, ptr %44, align 4, !tbaa !13
  %881 = load float, ptr %44, align 4, !tbaa !13
  %882 = fcmp oge float %881, 0.000000e+00
  br i1 %882, label %883, label %885

883:                                              ; preds = %869
  %884 = load float, ptr %44, align 4, !tbaa !13
  br label %888

885:                                              ; preds = %869
  %886 = load float, ptr %44, align 4, !tbaa !13
  %887 = fneg float %886
  br label %888

888:                                              ; preds = %885, %883
  %889 = phi float [ %884, %883 ], [ %887, %885 ]
  %890 = fpext float %889 to double
  %891 = fadd double %871, %890
  %892 = fmul double %856, %891
  %893 = fptrunc double %892 to float
  store float %893, ptr %45, align 4, !tbaa !13
  %894 = load float, ptr %45, align 4, !tbaa !13
  %895 = load float, ptr %66, align 4, !tbaa !13
  %896 = fcmp oge float %894, %895
  br i1 %896, label %897, label %899

897:                                              ; preds = %888
  %898 = load float, ptr %45, align 4, !tbaa !13
  br label %901

899:                                              ; preds = %888
  %900 = load float, ptr %66, align 4, !tbaa !13
  br label %901

901:                                              ; preds = %899, %897
  %902 = phi float [ %898, %897 ], [ %900, %899 ]
  %903 = fpext float %902 to double
  %904 = fptrunc double %903 to float
  store float %904, ptr %58, align 4, !tbaa !13
  %905 = load ptr, ptr %20, align 8, !tbaa !5
  %906 = load i64, ptr %905, align 8, !tbaa !9
  store i64 %906, ptr %39, align 8, !tbaa !9
  %907 = load ptr, ptr %29, align 8, !tbaa !5
  %908 = load i64, ptr %39, align 8, !tbaa !9
  %909 = getelementptr inbounds %struct.complex, ptr %907, i64 %908
  %910 = getelementptr inbounds %struct.complex, ptr %909, i32 0, i32 0
  store float 1.000000e+00, ptr %910, align 4, !tbaa !15
  %911 = load ptr, ptr %29, align 8, !tbaa !5
  %912 = load i64, ptr %39, align 8, !tbaa !9
  %913 = getelementptr inbounds %struct.complex, ptr %911, i64 %912
  %914 = getelementptr inbounds %struct.complex, ptr %913, i32 0, i32 1
  store float 0.000000e+00, ptr %914, align 4, !tbaa !17
  %915 = load ptr, ptr %20, align 8, !tbaa !5
  %916 = load i64, ptr %915, align 8, !tbaa !9
  store i64 %916, ptr %39, align 8, !tbaa !9
  %917 = load i64, ptr %52, align 8, !tbaa !9
  %918 = add nsw i64 %917, 1
  store i64 %918, ptr %50, align 8, !tbaa !9
  br label %919

919:                                              ; preds = %952, %901
  %920 = load i64, ptr %50, align 8, !tbaa !9
  %921 = load i64, ptr %39, align 8, !tbaa !9
  %922 = icmp sle i64 %920, %921
  br i1 %922, label %923, label %955

923:                                              ; preds = %919
  %924 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %924, ptr %40, align 8, !tbaa !9
  %925 = load ptr, ptr %21, align 8, !tbaa !5
  %926 = load i64, ptr %52, align 8, !tbaa !9
  %927 = load i64, ptr %50, align 8, !tbaa !9
  %928 = load i64, ptr %32, align 8, !tbaa !9
  %929 = mul nsw i64 %927, %928
  %930 = add nsw i64 %926, %929
  %931 = getelementptr inbounds %struct.complex, ptr %925, i64 %930
  call void @r_cnjg(ptr noundef %47, ptr noundef %931)
  %932 = getelementptr inbounds %struct.complex, ptr %47, i32 0, i32 0
  %933 = load float, ptr %932, align 4, !tbaa !15
  %934 = fneg float %933
  %935 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 0
  store float %934, ptr %935, align 4, !tbaa !15
  %936 = getelementptr inbounds %struct.complex, ptr %47, i32 0, i32 1
  %937 = load float, ptr %936, align 4, !tbaa !17
  %938 = fneg float %937
  %939 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 1
  store float %938, ptr %939, align 4, !tbaa !17
  %940 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 0
  %941 = load float, ptr %940, align 4, !tbaa !15
  %942 = load ptr, ptr %29, align 8, !tbaa !5
  %943 = load i64, ptr %40, align 8, !tbaa !9
  %944 = getelementptr inbounds %struct.complex, ptr %942, i64 %943
  %945 = getelementptr inbounds %struct.complex, ptr %944, i32 0, i32 0
  store float %941, ptr %945, align 4, !tbaa !15
  %946 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 1
  %947 = load float, ptr %946, align 4, !tbaa !17
  %948 = load ptr, ptr %29, align 8, !tbaa !5
  %949 = load i64, ptr %40, align 8, !tbaa !9
  %950 = getelementptr inbounds %struct.complex, ptr %948, i64 %949
  %951 = getelementptr inbounds %struct.complex, ptr %950, i32 0, i32 1
  store float %947, ptr %951, align 4, !tbaa !17
  br label %952

952:                                              ; preds = %923
  %953 = load i64, ptr %50, align 8, !tbaa !9
  %954 = add nsw i64 %953, 1
  store i64 %954, ptr %50, align 8, !tbaa !9
  br label %919, !llvm.loop !25

955:                                              ; preds = %919
  %956 = load ptr, ptr %20, align 8, !tbaa !5
  %957 = load i64, ptr %956, align 8, !tbaa !9
  store i64 %957, ptr %39, align 8, !tbaa !9
  %958 = load i64, ptr %52, align 8, !tbaa !9
  %959 = add nsw i64 %958, 1
  store i64 %959, ptr %50, align 8, !tbaa !9
  br label %960

960:                                              ; preds = %1075, %955
  %961 = load i64, ptr %50, align 8, !tbaa !9
  %962 = load i64, ptr %39, align 8, !tbaa !9
  %963 = icmp sle i64 %961, %962
  br i1 %963, label %964, label %1078

964:                                              ; preds = %960
  %965 = load i64, ptr %50, align 8, !tbaa !9
  %966 = load i64, ptr %50, align 8, !tbaa !9
  %967 = load i64, ptr %32, align 8, !tbaa !9
  %968 = mul nsw i64 %966, %967
  %969 = add nsw i64 %965, %968
  store i64 %969, ptr %40, align 8, !tbaa !9
  %970 = load i64, ptr %50, align 8, !tbaa !9
  %971 = load i64, ptr %50, align 8, !tbaa !9
  %972 = load i64, ptr %32, align 8, !tbaa !9
  %973 = mul nsw i64 %971, %972
  %974 = add nsw i64 %970, %973
  store i64 %974, ptr %41, align 8, !tbaa !9
  %975 = load i64, ptr %52, align 8, !tbaa !9
  %976 = load i64, ptr %52, align 8, !tbaa !9
  %977 = load i64, ptr %32, align 8, !tbaa !9
  %978 = mul nsw i64 %976, %977
  %979 = add nsw i64 %975, %978
  store i64 %979, ptr %42, align 8, !tbaa !9
  %980 = load ptr, ptr %21, align 8, !tbaa !5
  %981 = load i64, ptr %41, align 8, !tbaa !9
  %982 = getelementptr inbounds %struct.complex, ptr %980, i64 %981
  %983 = getelementptr inbounds %struct.complex, ptr %982, i32 0, i32 0
  %984 = load float, ptr %983, align 4, !tbaa !15
  %985 = load ptr, ptr %21, align 8, !tbaa !5
  %986 = load i64, ptr %42, align 8, !tbaa !9
  %987 = getelementptr inbounds %struct.complex, ptr %985, i64 %986
  %988 = getelementptr inbounds %struct.complex, ptr %987, i32 0, i32 0
  %989 = load float, ptr %988, align 4, !tbaa !15
  %990 = fsub float %984, %989
  %991 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 0
  store float %990, ptr %991, align 4, !tbaa !15
  %992 = load ptr, ptr %21, align 8, !tbaa !5
  %993 = load i64, ptr %41, align 8, !tbaa !9
  %994 = getelementptr inbounds %struct.complex, ptr %992, i64 %993
  %995 = getelementptr inbounds %struct.complex, ptr %994, i32 0, i32 1
  %996 = load float, ptr %995, align 4, !tbaa !17
  %997 = load ptr, ptr %21, align 8, !tbaa !5
  %998 = load i64, ptr %42, align 8, !tbaa !9
  %999 = getelementptr inbounds %struct.complex, ptr %997, i64 %998
  %1000 = getelementptr inbounds %struct.complex, ptr %999, i32 0, i32 1
  %1001 = load float, ptr %1000, align 4, !tbaa !17
  %1002 = fsub float %996, %1001
  %1003 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 1
  store float %1002, ptr %1003, align 4, !tbaa !17
  %1004 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 0
  %1005 = load float, ptr %1004, align 4, !tbaa !15
  %1006 = load ptr, ptr %21, align 8, !tbaa !5
  %1007 = load i64, ptr %40, align 8, !tbaa !9
  %1008 = getelementptr inbounds %struct.complex, ptr %1006, i64 %1007
  %1009 = getelementptr inbounds %struct.complex, ptr %1008, i32 0, i32 0
  store float %1005, ptr %1009, align 4, !tbaa !15
  %1010 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 1
  %1011 = load float, ptr %1010, align 4, !tbaa !17
  %1012 = load ptr, ptr %21, align 8, !tbaa !5
  %1013 = load i64, ptr %40, align 8, !tbaa !9
  %1014 = getelementptr inbounds %struct.complex, ptr %1012, i64 %1013
  %1015 = getelementptr inbounds %struct.complex, ptr %1014, i32 0, i32 1
  store float %1011, ptr %1015, align 4, !tbaa !17
  %1016 = load i64, ptr %50, align 8, !tbaa !9
  %1017 = load i64, ptr %50, align 8, !tbaa !9
  %1018 = load i64, ptr %32, align 8, !tbaa !9
  %1019 = mul nsw i64 %1017, %1018
  %1020 = add nsw i64 %1016, %1019
  store i64 %1020, ptr %40, align 8, !tbaa !9
  %1021 = load ptr, ptr %21, align 8, !tbaa !5
  %1022 = load i64, ptr %40, align 8, !tbaa !9
  %1023 = getelementptr inbounds %struct.complex, ptr %1021, i64 %1022
  %1024 = getelementptr inbounds %struct.complex, ptr %1023, i32 0, i32 0
  %1025 = load float, ptr %1024, align 4, !tbaa !15
  store float %1025, ptr %43, align 4, !tbaa !13
  %1026 = load float, ptr %43, align 4, !tbaa !13
  %1027 = fcmp oge float %1026, 0.000000e+00
  br i1 %1027, label %1028, label %1030

1028:                                             ; preds = %964
  %1029 = load float, ptr %43, align 4, !tbaa !13
  br label %1033

1030:                                             ; preds = %964
  %1031 = load float, ptr %43, align 4, !tbaa !13
  %1032 = fneg float %1031
  br label %1033

1033:                                             ; preds = %1030, %1028
  %1034 = phi float [ %1029, %1028 ], [ %1032, %1030 ]
  %1035 = fpext float %1034 to double
  %1036 = load ptr, ptr %21, align 8, !tbaa !5
  %1037 = load i64, ptr %50, align 8, !tbaa !9
  %1038 = load i64, ptr %50, align 8, !tbaa !9
  %1039 = load i64, ptr %32, align 8, !tbaa !9
  %1040 = mul nsw i64 %1038, %1039
  %1041 = add nsw i64 %1037, %1040
  %1042 = getelementptr inbounds %struct.complex, ptr %1036, i64 %1041
  %1043 = call double @r_imag(ptr noundef %1042)
  %1044 = fptrunc double %1043 to float
  store float %1044, ptr %44, align 4, !tbaa !13
  %1045 = load float, ptr %44, align 4, !tbaa !13
  %1046 = fcmp oge float %1045, 0.000000e+00
  br i1 %1046, label %1047, label %1049

1047:                                             ; preds = %1033
  %1048 = load float, ptr %44, align 4, !tbaa !13
  br label %1052

1049:                                             ; preds = %1033
  %1050 = load float, ptr %44, align 4, !tbaa !13
  %1051 = fneg float %1050
  br label %1052

1052:                                             ; preds = %1049, %1047
  %1053 = phi float [ %1048, %1047 ], [ %1051, %1049 ]
  %1054 = fpext float %1053 to double
  %1055 = fadd double %1035, %1054
  %1056 = load float, ptr %58, align 4, !tbaa !13
  %1057 = fpext float %1056 to double
  %1058 = fcmp olt double %1055, %1057
  br i1 %1058, label %1059, label %1074

1059:                                             ; preds = %1052
  %1060 = load i64, ptr %50, align 8, !tbaa !9
  %1061 = load i64, ptr %50, align 8, !tbaa !9
  %1062 = load i64, ptr %32, align 8, !tbaa !9
  %1063 = mul nsw i64 %1061, %1062
  %1064 = add nsw i64 %1060, %1063
  store i64 %1064, ptr %41, align 8, !tbaa !9
  %1065 = load float, ptr %58, align 4, !tbaa !13
  %1066 = load ptr, ptr %21, align 8, !tbaa !5
  %1067 = load i64, ptr %41, align 8, !tbaa !9
  %1068 = getelementptr inbounds %struct.complex, ptr %1066, i64 %1067
  %1069 = getelementptr inbounds %struct.complex, ptr %1068, i32 0, i32 0
  store float %1065, ptr %1069, align 4, !tbaa !15
  %1070 = load ptr, ptr %21, align 8, !tbaa !5
  %1071 = load i64, ptr %41, align 8, !tbaa !9
  %1072 = getelementptr inbounds %struct.complex, ptr %1070, i64 %1071
  %1073 = getelementptr inbounds %struct.complex, ptr %1072, i32 0, i32 1
  store float 0.000000e+00, ptr %1073, align 4, !tbaa !17
  br label %1074

1074:                                             ; preds = %1059, %1052
  br label %1075

1075:                                             ; preds = %1074
  %1076 = load i64, ptr %50, align 8, !tbaa !9
  %1077 = add nsw i64 %1076, 1
  store i64 %1077, ptr %50, align 8, !tbaa !9
  br label %960, !llvm.loop !26

1078:                                             ; preds = %960
  %1079 = load i64, ptr %52, align 8, !tbaa !9
  %1080 = load ptr, ptr %20, align 8, !tbaa !5
  %1081 = load i64, ptr %1080, align 8, !tbaa !9
  %1082 = icmp slt i64 %1079, %1081
  br i1 %1082, label %1083, label %1116

1083:                                             ; preds = %1078
  %1084 = load ptr, ptr %20, align 8, !tbaa !5
  %1085 = load i64, ptr %1084, align 8, !tbaa !9
  %1086 = load i64, ptr %52, align 8, !tbaa !9
  %1087 = sub nsw i64 %1085, %1086
  store i64 %1087, ptr %39, align 8, !tbaa !9
  %1088 = load ptr, ptr %21, align 8, !tbaa !5
  %1089 = load i64, ptr %52, align 8, !tbaa !9
  %1090 = add nsw i64 %1089, 1
  %1091 = load i64, ptr %52, align 8, !tbaa !9
  %1092 = add nsw i64 %1091, 1
  %1093 = load i64, ptr %32, align 8, !tbaa !9
  %1094 = mul nsw i64 %1092, %1093
  %1095 = add nsw i64 %1090, %1094
  %1096 = getelementptr inbounds %struct.complex, ptr %1088, i64 %1095
  %1097 = load ptr, ptr %22, align 8, !tbaa !5
  %1098 = load ptr, ptr %29, align 8, !tbaa !5
  %1099 = load i64, ptr %52, align 8, !tbaa !9
  %1100 = add nsw i64 %1099, 1
  %1101 = getelementptr inbounds %struct.complex, ptr %1098, i64 %1100
  %1102 = load ptr, ptr %30, align 8, !tbaa !5
  %1103 = getelementptr inbounds float, ptr %1102, i64 1
  %1104 = load ptr, ptr %31, align 8, !tbaa !5
  %1105 = call i32 @clatrs_(ptr noundef @.str.8, ptr noundef @.str.13, ptr noundef @.str.10, ptr noundef @.str.11, ptr noundef %39, ptr noundef %1096, ptr noundef %1097, ptr noundef %1101, ptr noundef %60, ptr noundef %1103, ptr noundef %1104)
  %1106 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %1106, ptr %39, align 8, !tbaa !9
  %1107 = load float, ptr %60, align 4, !tbaa !13
  %1108 = load ptr, ptr %29, align 8, !tbaa !5
  %1109 = load i64, ptr %39, align 8, !tbaa !9
  %1110 = getelementptr inbounds %struct.complex, ptr %1108, i64 %1109
  %1111 = getelementptr inbounds %struct.complex, ptr %1110, i32 0, i32 0
  store float %1107, ptr %1111, align 4, !tbaa !15
  %1112 = load ptr, ptr %29, align 8, !tbaa !5
  %1113 = load i64, ptr %39, align 8, !tbaa !9
  %1114 = getelementptr inbounds %struct.complex, ptr %1112, i64 %1113
  %1115 = getelementptr inbounds %struct.complex, ptr %1114, i32 0, i32 1
  store float 0.000000e+00, ptr %1115, align 4, !tbaa !17
  br label %1116

1116:                                             ; preds = %1083, %1078
  %1117 = load i64, ptr %59, align 8, !tbaa !9
  %1118 = icmp ne i64 %1117, 0
  br i1 %1118, label %1231, label %1119

1119:                                             ; preds = %1116
  %1120 = load ptr, ptr %20, align 8, !tbaa !5
  %1121 = load i64, ptr %1120, align 8, !tbaa !9
  %1122 = load i64, ptr %52, align 8, !tbaa !9
  %1123 = sub nsw i64 %1121, %1122
  %1124 = add nsw i64 %1123, 1
  store i64 %1124, ptr %39, align 8, !tbaa !9
  %1125 = load ptr, ptr %29, align 8, !tbaa !5
  %1126 = load i64, ptr %52, align 8, !tbaa !9
  %1127 = getelementptr inbounds %struct.complex, ptr %1125, i64 %1126
  %1128 = load ptr, ptr %23, align 8, !tbaa !5
  %1129 = load i64, ptr %52, align 8, !tbaa !9
  %1130 = load i64, ptr %53, align 8, !tbaa !9
  %1131 = load i64, ptr %34, align 8, !tbaa !9
  %1132 = mul nsw i64 %1130, %1131
  %1133 = add nsw i64 %1129, %1132
  %1134 = getelementptr inbounds %struct.complex, ptr %1128, i64 %1133
  %1135 = call i32 @f2c_ccopy(ptr noundef %39, ptr noundef %1127, ptr noundef @c__1, ptr noundef %1134, ptr noundef @c__1)
  %1136 = load ptr, ptr %20, align 8, !tbaa !5
  %1137 = load i64, ptr %1136, align 8, !tbaa !9
  %1138 = load i64, ptr %52, align 8, !tbaa !9
  %1139 = sub nsw i64 %1137, %1138
  %1140 = add nsw i64 %1139, 1
  store i64 %1140, ptr %39, align 8, !tbaa !9
  %1141 = load ptr, ptr %23, align 8, !tbaa !5
  %1142 = load i64, ptr %52, align 8, !tbaa !9
  %1143 = load i64, ptr %53, align 8, !tbaa !9
  %1144 = load i64, ptr %34, align 8, !tbaa !9
  %1145 = mul nsw i64 %1143, %1144
  %1146 = add nsw i64 %1142, %1145
  %1147 = getelementptr inbounds %struct.complex, ptr %1141, i64 %1146
  %1148 = call i64 @f2c_icamax(ptr noundef %39, ptr noundef %1147, ptr noundef @c__1)
  %1149 = load i64, ptr %52, align 8, !tbaa !9
  %1150 = add nsw i64 %1148, %1149
  %1151 = sub nsw i64 %1150, 1
  store i64 %1151, ptr %51, align 8, !tbaa !9
  %1152 = load i64, ptr %51, align 8, !tbaa !9
  %1153 = load i64, ptr %53, align 8, !tbaa !9
  %1154 = load i64, ptr %34, align 8, !tbaa !9
  %1155 = mul nsw i64 %1153, %1154
  %1156 = add nsw i64 %1152, %1155
  store i64 %1156, ptr %39, align 8, !tbaa !9
  %1157 = load ptr, ptr %23, align 8, !tbaa !5
  %1158 = load i64, ptr %39, align 8, !tbaa !9
  %1159 = getelementptr inbounds %struct.complex, ptr %1157, i64 %1158
  %1160 = getelementptr inbounds %struct.complex, ptr %1159, i32 0, i32 0
  %1161 = load float, ptr %1160, align 4, !tbaa !15
  store float %1161, ptr %43, align 4, !tbaa !13
  %1162 = load float, ptr %43, align 4, !tbaa !13
  %1163 = fcmp oge float %1162, 0.000000e+00
  br i1 %1163, label %1164, label %1166

1164:                                             ; preds = %1119
  %1165 = load float, ptr %43, align 4, !tbaa !13
  br label %1169

1166:                                             ; preds = %1119
  %1167 = load float, ptr %43, align 4, !tbaa !13
  %1168 = fneg float %1167
  br label %1169

1169:                                             ; preds = %1166, %1164
  %1170 = phi float [ %1165, %1164 ], [ %1168, %1166 ]
  %1171 = fpext float %1170 to double
  %1172 = load ptr, ptr %23, align 8, !tbaa !5
  %1173 = load i64, ptr %51, align 8, !tbaa !9
  %1174 = load i64, ptr %53, align 8, !tbaa !9
  %1175 = load i64, ptr %34, align 8, !tbaa !9
  %1176 = mul nsw i64 %1174, %1175
  %1177 = add nsw i64 %1173, %1176
  %1178 = getelementptr inbounds %struct.complex, ptr %1172, i64 %1177
  %1179 = call double @r_imag(ptr noundef %1178)
  %1180 = fptrunc double %1179 to float
  store float %1180, ptr %44, align 4, !tbaa !13
  %1181 = load float, ptr %44, align 4, !tbaa !13
  %1182 = fcmp oge float %1181, 0.000000e+00
  br i1 %1182, label %1183, label %1185

1183:                                             ; preds = %1169
  %1184 = load float, ptr %44, align 4, !tbaa !13
  br label %1188

1185:                                             ; preds = %1169
  %1186 = load float, ptr %44, align 4, !tbaa !13
  %1187 = fneg float %1186
  br label %1188

1188:                                             ; preds = %1185, %1183
  %1189 = phi float [ %1184, %1183 ], [ %1187, %1185 ]
  %1190 = fpext float %1189 to double
  %1191 = fadd double %1171, %1190
  %1192 = fdiv double 1.000000e+00, %1191
  %1193 = fptrunc double %1192 to float
  store float %1193, ptr %61, align 4, !tbaa !13
  %1194 = load ptr, ptr %20, align 8, !tbaa !5
  %1195 = load i64, ptr %1194, align 8, !tbaa !9
  %1196 = load i64, ptr %52, align 8, !tbaa !9
  %1197 = sub nsw i64 %1195, %1196
  %1198 = add nsw i64 %1197, 1
  store i64 %1198, ptr %39, align 8, !tbaa !9
  %1199 = load ptr, ptr %23, align 8, !tbaa !5
  %1200 = load i64, ptr %52, align 8, !tbaa !9
  %1201 = load i64, ptr %53, align 8, !tbaa !9
  %1202 = load i64, ptr %34, align 8, !tbaa !9
  %1203 = mul nsw i64 %1201, %1202
  %1204 = add nsw i64 %1200, %1203
  %1205 = getelementptr inbounds %struct.complex, ptr %1199, i64 %1204
  %1206 = call i32 @f2c_csscal(ptr noundef %39, ptr noundef %61, ptr noundef %1205, ptr noundef @c__1)
  %1207 = load i64, ptr %52, align 8, !tbaa !9
  %1208 = sub nsw i64 %1207, 1
  store i64 %1208, ptr %39, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %1209

1209:                                             ; preds = %1227, %1188
  %1210 = load i64, ptr %50, align 8, !tbaa !9
  %1211 = load i64, ptr %39, align 8, !tbaa !9
  %1212 = icmp sle i64 %1210, %1211
  br i1 %1212, label %1213, label %1230

1213:                                             ; preds = %1209
  %1214 = load i64, ptr %50, align 8, !tbaa !9
  %1215 = load i64, ptr %53, align 8, !tbaa !9
  %1216 = load i64, ptr %34, align 8, !tbaa !9
  %1217 = mul nsw i64 %1215, %1216
  %1218 = add nsw i64 %1214, %1217
  store i64 %1218, ptr %40, align 8, !tbaa !9
  %1219 = load ptr, ptr %23, align 8, !tbaa !5
  %1220 = load i64, ptr %40, align 8, !tbaa !9
  %1221 = getelementptr inbounds %struct.complex, ptr %1219, i64 %1220
  %1222 = getelementptr inbounds %struct.complex, ptr %1221, i32 0, i32 0
  store float 0.000000e+00, ptr %1222, align 4, !tbaa !15
  %1223 = load ptr, ptr %23, align 8, !tbaa !5
  %1224 = load i64, ptr %40, align 8, !tbaa !9
  %1225 = getelementptr inbounds %struct.complex, ptr %1223, i64 %1224
  %1226 = getelementptr inbounds %struct.complex, ptr %1225, i32 0, i32 1
  store float 0.000000e+00, ptr %1226, align 4, !tbaa !17
  br label %1227

1227:                                             ; preds = %1213
  %1228 = load i64, ptr %50, align 8, !tbaa !9
  %1229 = add nsw i64 %1228, 1
  store i64 %1229, ptr %50, align 8, !tbaa !9
  br label %1209, !llvm.loop !27

1230:                                             ; preds = %1209
  br label %1323

1231:                                             ; preds = %1116
  %1232 = load i64, ptr %52, align 8, !tbaa !9
  %1233 = load ptr, ptr %20, align 8, !tbaa !5
  %1234 = load i64, ptr %1233, align 8, !tbaa !9
  %1235 = icmp slt i64 %1232, %1234
  br i1 %1235, label %1236, label %1264

1236:                                             ; preds = %1231
  %1237 = load ptr, ptr %20, align 8, !tbaa !5
  %1238 = load i64, ptr %1237, align 8, !tbaa !9
  %1239 = load i64, ptr %52, align 8, !tbaa !9
  %1240 = sub nsw i64 %1238, %1239
  store i64 %1240, ptr %39, align 8, !tbaa !9
  %1241 = load float, ptr %60, align 4, !tbaa !13
  %1242 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 0
  store float %1241, ptr %1242, align 4, !tbaa !15
  %1243 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 1
  store float 0.000000e+00, ptr %1243, align 4, !tbaa !17
  %1244 = load ptr, ptr %20, align 8, !tbaa !5
  %1245 = load ptr, ptr %23, align 8, !tbaa !5
  %1246 = load i64, ptr %52, align 8, !tbaa !9
  %1247 = add nsw i64 %1246, 1
  %1248 = load i64, ptr %34, align 8, !tbaa !9
  %1249 = mul nsw i64 %1247, %1248
  %1250 = add nsw i64 %1249, 1
  %1251 = getelementptr inbounds %struct.complex, ptr %1245, i64 %1250
  %1252 = load ptr, ptr %24, align 8, !tbaa !5
  %1253 = load ptr, ptr %29, align 8, !tbaa !5
  %1254 = load i64, ptr %52, align 8, !tbaa !9
  %1255 = add nsw i64 %1254, 1
  %1256 = getelementptr inbounds %struct.complex, ptr %1253, i64 %1255
  %1257 = load ptr, ptr %23, align 8, !tbaa !5
  %1258 = load i64, ptr %52, align 8, !tbaa !9
  %1259 = load i64, ptr %34, align 8, !tbaa !9
  %1260 = mul nsw i64 %1258, %1259
  %1261 = add nsw i64 %1260, 1
  %1262 = getelementptr inbounds %struct.complex, ptr %1257, i64 %1261
  %1263 = call i32 @f2c_cgemv(ptr noundef @.str.12, ptr noundef %1244, ptr noundef %39, ptr noundef @c_b2, ptr noundef %1251, ptr noundef %1252, ptr noundef %1256, ptr noundef @c__1, ptr noundef %46, ptr noundef %1262, ptr noundef @c__1)
  br label %1264

1264:                                             ; preds = %1236, %1231
  %1265 = load ptr, ptr %20, align 8, !tbaa !5
  %1266 = load ptr, ptr %23, align 8, !tbaa !5
  %1267 = load i64, ptr %52, align 8, !tbaa !9
  %1268 = load i64, ptr %34, align 8, !tbaa !9
  %1269 = mul nsw i64 %1267, %1268
  %1270 = add nsw i64 %1269, 1
  %1271 = getelementptr inbounds %struct.complex, ptr %1266, i64 %1270
  %1272 = call i64 @f2c_icamax(ptr noundef %1265, ptr noundef %1271, ptr noundef @c__1)
  store i64 %1272, ptr %51, align 8, !tbaa !9
  %1273 = load i64, ptr %51, align 8, !tbaa !9
  %1274 = load i64, ptr %52, align 8, !tbaa !9
  %1275 = load i64, ptr %34, align 8, !tbaa !9
  %1276 = mul nsw i64 %1274, %1275
  %1277 = add nsw i64 %1273, %1276
  store i64 %1277, ptr %39, align 8, !tbaa !9
  %1278 = load ptr, ptr %23, align 8, !tbaa !5
  %1279 = load i64, ptr %39, align 8, !tbaa !9
  %1280 = getelementptr inbounds %struct.complex, ptr %1278, i64 %1279
  %1281 = getelementptr inbounds %struct.complex, ptr %1280, i32 0, i32 0
  %1282 = load float, ptr %1281, align 4, !tbaa !15
  store float %1282, ptr %43, align 4, !tbaa !13
  %1283 = load float, ptr %43, align 4, !tbaa !13
  %1284 = fcmp oge float %1283, 0.000000e+00
  br i1 %1284, label %1285, label %1287

1285:                                             ; preds = %1264
  %1286 = load float, ptr %43, align 4, !tbaa !13
  br label %1290

1287:                                             ; preds = %1264
  %1288 = load float, ptr %43, align 4, !tbaa !13
  %1289 = fneg float %1288
  br label %1290

1290:                                             ; preds = %1287, %1285
  %1291 = phi float [ %1286, %1285 ], [ %1289, %1287 ]
  %1292 = fpext float %1291 to double
  %1293 = load ptr, ptr %23, align 8, !tbaa !5
  %1294 = load i64, ptr %51, align 8, !tbaa !9
  %1295 = load i64, ptr %52, align 8, !tbaa !9
  %1296 = load i64, ptr %34, align 8, !tbaa !9
  %1297 = mul nsw i64 %1295, %1296
  %1298 = add nsw i64 %1294, %1297
  %1299 = getelementptr inbounds %struct.complex, ptr %1293, i64 %1298
  %1300 = call double @r_imag(ptr noundef %1299)
  %1301 = fptrunc double %1300 to float
  store float %1301, ptr %44, align 4, !tbaa !13
  %1302 = load float, ptr %44, align 4, !tbaa !13
  %1303 = fcmp oge float %1302, 0.000000e+00
  br i1 %1303, label %1304, label %1306

1304:                                             ; preds = %1290
  %1305 = load float, ptr %44, align 4, !tbaa !13
  br label %1309

1306:                                             ; preds = %1290
  %1307 = load float, ptr %44, align 4, !tbaa !13
  %1308 = fneg float %1307
  br label %1309

1309:                                             ; preds = %1306, %1304
  %1310 = phi float [ %1305, %1304 ], [ %1308, %1306 ]
  %1311 = fpext float %1310 to double
  %1312 = fadd double %1292, %1311
  %1313 = fdiv double 1.000000e+00, %1312
  %1314 = fptrunc double %1313 to float
  store float %1314, ptr %61, align 4, !tbaa !13
  %1315 = load ptr, ptr %20, align 8, !tbaa !5
  %1316 = load ptr, ptr %23, align 8, !tbaa !5
  %1317 = load i64, ptr %52, align 8, !tbaa !9
  %1318 = load i64, ptr %34, align 8, !tbaa !9
  %1319 = mul nsw i64 %1317, %1318
  %1320 = add nsw i64 %1319, 1
  %1321 = getelementptr inbounds %struct.complex, ptr %1316, i64 %1320
  %1322 = call i32 @f2c_csscal(ptr noundef %1315, ptr noundef %61, ptr noundef %1321, ptr noundef @c__1)
  br label %1323

1323:                                             ; preds = %1309, %1230
  %1324 = load ptr, ptr %20, align 8, !tbaa !5
  %1325 = load i64, ptr %1324, align 8, !tbaa !9
  store i64 %1325, ptr %39, align 8, !tbaa !9
  %1326 = load i64, ptr %52, align 8, !tbaa !9
  %1327 = add nsw i64 %1326, 1
  store i64 %1327, ptr %50, align 8, !tbaa !9
  br label %1328

1328:                                             ; preds = %1360, %1323
  %1329 = load i64, ptr %50, align 8, !tbaa !9
  %1330 = load i64, ptr %39, align 8, !tbaa !9
  %1331 = icmp sle i64 %1329, %1330
  br i1 %1331, label %1332, label %1363

1332:                                             ; preds = %1328
  %1333 = load i64, ptr %50, align 8, !tbaa !9
  %1334 = load i64, ptr %50, align 8, !tbaa !9
  %1335 = load i64, ptr %32, align 8, !tbaa !9
  %1336 = mul nsw i64 %1334, %1335
  %1337 = add nsw i64 %1333, %1336
  store i64 %1337, ptr %40, align 8, !tbaa !9
  %1338 = load i64, ptr %50, align 8, !tbaa !9
  %1339 = load ptr, ptr %20, align 8, !tbaa !5
  %1340 = load i64, ptr %1339, align 8, !tbaa !9
  %1341 = add nsw i64 %1338, %1340
  store i64 %1341, ptr %41, align 8, !tbaa !9
  %1342 = load ptr, ptr %29, align 8, !tbaa !5
  %1343 = load i64, ptr %41, align 8, !tbaa !9
  %1344 = getelementptr inbounds %struct.complex, ptr %1342, i64 %1343
  %1345 = getelementptr inbounds %struct.complex, ptr %1344, i32 0, i32 0
  %1346 = load float, ptr %1345, align 4, !tbaa !15
  %1347 = load ptr, ptr %21, align 8, !tbaa !5
  %1348 = load i64, ptr %40, align 8, !tbaa !9
  %1349 = getelementptr inbounds %struct.complex, ptr %1347, i64 %1348
  %1350 = getelementptr inbounds %struct.complex, ptr %1349, i32 0, i32 0
  store float %1346, ptr %1350, align 4, !tbaa !15
  %1351 = load ptr, ptr %29, align 8, !tbaa !5
  %1352 = load i64, ptr %41, align 8, !tbaa !9
  %1353 = getelementptr inbounds %struct.complex, ptr %1351, i64 %1352
  %1354 = getelementptr inbounds %struct.complex, ptr %1353, i32 0, i32 1
  %1355 = load float, ptr %1354, align 4, !tbaa !17
  %1356 = load ptr, ptr %21, align 8, !tbaa !5
  %1357 = load i64, ptr %40, align 8, !tbaa !9
  %1358 = getelementptr inbounds %struct.complex, ptr %1356, i64 %1357
  %1359 = getelementptr inbounds %struct.complex, ptr %1358, i32 0, i32 1
  store float %1355, ptr %1359, align 4, !tbaa !17
  br label %1360

1360:                                             ; preds = %1332
  %1361 = load i64, ptr %50, align 8, !tbaa !9
  %1362 = add nsw i64 %1361, 1
  store i64 %1362, ptr %50, align 8, !tbaa !9
  br label %1328, !llvm.loop !28

1363:                                             ; preds = %1328
  %1364 = load i64, ptr %53, align 8, !tbaa !9
  %1365 = add nsw i64 %1364, 1
  store i64 %1365, ptr %53, align 8, !tbaa !9
  br label %1366

1366:                                             ; preds = %1363, %847
  br label %1367

1367:                                             ; preds = %1366
  %1368 = load i64, ptr %52, align 8, !tbaa !9
  %1369 = add nsw i64 %1368, 1
  store i64 %1369, ptr %52, align 8, !tbaa !9
  br label %834, !llvm.loop !29

1370:                                             ; preds = %834
  br label %1371

1371:                                             ; preds = %1370, %828
  store i32 0, ptr %16, align 4
  store i32 1, ptr %67, align 4
  br label %1372

1372:                                             ; preds = %1371, %253, %244
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  %1373 = load i32, ptr %16, align 4
  ret i32 %1373
}

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

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

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

declare double @slamch_(ptr noundef) #2

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

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

declare double @r_imag(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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


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

%struct.complex = type { float, float }

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @ctrevc_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr nocapture noundef readonly %10, ptr nocapture noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14) local_unnamed_addr #0 {
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca %struct.complex, align 8
  %19 = alloca %struct.complex, align 8
  %20 = alloca i64, align 8
  %21 = alloca float, align 4
  %22 = alloca float, align 4
  %23 = alloca float, align 4
  %24 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #5
  %25 = getelementptr inbounds i8, ptr %2, i64 -8
  %26 = load i64, ptr %5, align 8, !tbaa !5
  %27 = xor i64 %26, -1
  %28 = getelementptr inbounds %struct.complex, ptr %4, i64 %27
  %29 = load i64, ptr %7, align 8, !tbaa !5
  %30 = xor i64 %29, -1
  %31 = getelementptr inbounds %struct.complex, ptr %6, i64 %30
  %32 = load i64, ptr %9, align 8, !tbaa !5
  %33 = xor i64 %32, -1
  %34 = getelementptr inbounds %struct.complex, ptr %8, i64 %33
  %35 = getelementptr inbounds i8, ptr %12, i64 -8
  %36 = getelementptr inbounds i8, ptr %13, i64 -4
  %37 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %38 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %39 = icmp ne i64 %38, 0
  %40 = icmp ne i64 %37, 0
  %41 = select i1 %39, i1 true, i1 %40
  %42 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %43 = icmp ne i64 %42, 0
  %44 = select i1 %43, i1 true, i1 %40
  %45 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %46 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %47 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #5
  %.not438 = icmp eq i64 %47, 0
  br i1 %.not438, label %64, label %48

48:                                               ; preds = %15
  store i64 0, ptr %11, align 8, !tbaa !5
  %49 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %49, ptr %16, align 8, !tbaa !5
  %.not468 = icmp slt i64 %49, 1
  br i1 %.not468, label %.loopexit467, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %48
  %xtraiter = and i64 %49, 1
  %50 = icmp eq i64 %49, 1
  br i1 %50, label %.loopexit467.loopexit.unr-lcssa, label %.lr.ph.preheader.new

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

.lr.ph:                                           ; preds = %61, %.lr.ph.preheader.new
  %51 = phi i64 [ 0, %.lr.ph.preheader.new ], [ %62, %61 ]
  %.0424469 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %63, %61 ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %61 ]
  %52 = getelementptr inbounds i64, ptr %25, i64 %.0424469
  %53 = load i64, ptr %52, align 8, !tbaa !5
  %.not456 = icmp eq i64 %53, 0
  br i1 %.not456, label %.lr.ph.1, label %54

54:                                               ; preds = %.lr.ph
  %55 = add nsw i64 %51, 1
  store i64 %55, ptr %11, align 8, !tbaa !5
  br label %.lr.ph.1

.lr.ph.1:                                         ; preds = %.lr.ph, %54
  %56 = phi i64 [ %51, %.lr.ph ], [ %55, %54 ]
  %57 = getelementptr i64, ptr %2, i64 %.0424469
  %58 = load i64, ptr %57, align 8, !tbaa !5
  %.not456.1 = icmp eq i64 %58, 0
  br i1 %.not456.1, label %61, label %59

59:                                               ; preds = %.lr.ph.1
  %60 = add nsw i64 %56, 1
  store i64 %60, ptr %11, align 8, !tbaa !5
  br label %61

61:                                               ; preds = %59, %.lr.ph.1
  %62 = phi i64 [ %56, %.lr.ph.1 ], [ %60, %59 ]
  %63 = add nuw i64 %.0424469, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit467.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !9

64:                                               ; preds = %15
  %65 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %65, ptr %11, align 8, !tbaa !5
  br label %.loopexit467

.loopexit467.loopexit.unr-lcssa:                  ; preds = %61, %.lr.ph.preheader
  %.unr = phi i64 [ 0, %.lr.ph.preheader ], [ %62, %61 ]
  %.0424469.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %63, %61 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit467, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %.loopexit467.loopexit.unr-lcssa
  %66 = getelementptr inbounds i64, ptr %25, i64 %.0424469.unr
  %67 = load i64, ptr %66, align 8, !tbaa !5
  %.not456.epil = icmp eq i64 %67, 0
  br i1 %.not456.epil, label %.loopexit467, label %68

68:                                               ; preds = %.lr.ph.epil
  %69 = add nsw i64 %.unr, 1
  store i64 %69, ptr %11, align 8, !tbaa !5
  br label %.loopexit467

.loopexit467:                                     ; preds = %.loopexit467.loopexit.unr-lcssa, %68, %.lr.ph.epil, %48, %64
  store i64 0, ptr %14, align 8, !tbaa !5
  %or.cond = select i1 %41, i1 true, i1 %44
  br i1 %or.cond, label %70, label %.thread

70:                                               ; preds = %.loopexit467
  %71 = icmp ne i64 %45, 0
  %72 = or i64 %47, %46
  %73 = icmp ne i64 %72, 0
  %or.cond5 = select i1 %71, i1 true, i1 %73
  br i1 %or.cond5, label %74, label %.thread

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

77:                                               ; preds = %74
  %78 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %75, i64 1)
  %79 = icmp slt i64 %78, %spec.select
  br i1 %79, label %.thread, label %80

80:                                               ; preds = %77
  %81 = load i64, ptr %7, align 8, !tbaa !5
  %82 = icmp slt i64 %81, 1
  %83 = icmp ult i64 %81, %75
  %or.cond458 = and i1 %44, %83
  %or.cond460 = select i1 %82, i1 true, i1 %or.cond458
  br i1 %or.cond460, label %.thread, label %84

84:                                               ; preds = %80
  %85 = load i64, ptr %9, align 8, !tbaa !5
  %86 = icmp slt i64 %85, 1
  %87 = icmp ult i64 %85, %75
  %or.cond459 = and i1 %41, %87
  %or.cond461 = select i1 %86, i1 true, i1 %or.cond459
  br i1 %or.cond461, label %.thread, label %88

88:                                               ; preds = %84
  %89 = load i64, ptr %10, align 8, !tbaa !5
  %90 = load i64, ptr %11, align 8, !tbaa !5
  %91 = icmp slt i64 %89, %90
  br i1 %91, label %.thread, label %93

.thread:                                          ; preds = %88, %84, %80, %77, %74, %70, %.loopexit467
  %.sink = phi i64 [ -1, %.loopexit467 ], [ -2, %70 ], [ -4, %74 ], [ -6, %77 ], [ -8, %80 ], [ -10, %84 ], [ -11, %88 ]
  %.neg = phi i64 [ 1, %.loopexit467 ], [ 2, %70 ], [ 4, %74 ], [ 6, %77 ], [ 8, %80 ], [ 10, %84 ], [ 11, %88 ]
  store i64 %.sink, ptr %14, align 8, !tbaa !5
  store i64 %.neg, ptr %16, align 8, !tbaa !5
  %92 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %16) #5
  br label %.loopexit464

93:                                               ; preds = %88
  %94 = icmp eq i64 %75, 0
  br i1 %94, label %.loopexit464, label %95

95:                                               ; preds = %93
  %96 = tail call double @slamch_(ptr noundef nonnull @.str.6) #5
  %97 = fptrunc double %96 to float
  store float %97, ptr %21, align 4, !tbaa !11
  %98 = fdiv float 1.000000e+00, %97
  store float %98, ptr %22, align 4, !tbaa !11
  %99 = call i32 @slabad_(ptr noundef nonnull %21, ptr noundef nonnull %22) #5
  %100 = call double @slamch_(ptr noundef nonnull @.str.7) #5
  %101 = fptrunc double %100 to float
  %102 = load float, ptr %21, align 4, !tbaa !11
  %103 = load i64, ptr %3, align 8, !tbaa !5
  %104 = sitofp i64 %103 to float
  %105 = fdiv float %104, %101
  %106 = fmul float %102, %105
  %.not440470 = icmp slt i64 %103, 1
  br i1 %.not440470, label %.thread575, label %.lr.ph472

.thread575:                                       ; preds = %95
  store float 0.000000e+00, ptr %13, align 4, !tbaa !11
  br label %._crit_edge477

.lr.ph472:                                        ; preds = %95
  %107 = add i64 %26, 1
  %xtraiter617 = and i64 %103, 3
  %108 = icmp ult i64 %103, 4
  br i1 %108, label %.unr-lcssa, label %.lr.ph472.new

.lr.ph472.new:                                    ; preds = %.lr.ph472
  %unroll_iter620 = and i64 %103, 9223372036854775804
  %invariant.gep647 = getelementptr %struct.complex, ptr %35, i64 %103
  %invariant.gep649 = getelementptr %struct.complex, ptr %12, i64 %103
  %invariant.gep651 = getelementptr %struct.complex, ptr %35, i64 %103
  br label %109

109:                                              ; preds = %109, %.lr.ph472.new
  %.0426471 = phi i64 [ 1, %.lr.ph472.new ], [ %127, %109 ]
  %niter621 = phi i64 [ 0, %.lr.ph472.new ], [ %niter621.next.3, %109 ]
  %110 = mul i64 %.0426471, %107
  %111 = getelementptr inbounds %struct.complex, ptr %28, i64 %110
  %gep648 = getelementptr %struct.complex, ptr %invariant.gep647, i64 %.0426471
  %112 = load <2 x float>, ptr %111, align 4, !tbaa !11
  store <2 x float> %112, ptr %gep648, align 4, !tbaa !11
  %113 = add nuw nsw i64 %.0426471, 1
  %114 = mul i64 %113, %107
  %115 = getelementptr inbounds %struct.complex, ptr %28, i64 %114
  %gep650 = getelementptr %struct.complex, ptr %invariant.gep649, i64 %.0426471
  %116 = load <2 x float>, ptr %115, align 4, !tbaa !11
  store <2 x float> %116, ptr %gep650, align 4, !tbaa !11
  %117 = add nuw nsw i64 %.0426471, 2
  %118 = mul i64 %117, %107
  %119 = getelementptr inbounds %struct.complex, ptr %28, i64 %118
  %gep652 = getelementptr %struct.complex, ptr %invariant.gep651, i64 %117
  %120 = load <2 x float>, ptr %119, align 4, !tbaa !11
  store <2 x float> %120, ptr %gep652, align 4, !tbaa !11
  %121 = add nuw i64 %.0426471, 3
  %122 = add nuw nsw i64 %121, %103
  %123 = mul i64 %121, %107
  %124 = getelementptr inbounds %struct.complex, ptr %28, i64 %123
  %125 = getelementptr inbounds %struct.complex, ptr %35, i64 %122
  %126 = load <2 x float>, ptr %124, align 4, !tbaa !11
  store <2 x float> %126, ptr %125, align 4, !tbaa !11
  %127 = add nuw i64 %.0426471, 4
  %niter621.next.3 = add nuw i64 %niter621, 4
  %niter621.ncmp.3 = icmp eq i64 %niter621.next.3, %unroll_iter620
  br i1 %niter621.ncmp.3, label %.unr-lcssa, label %109, !llvm.loop !13

.unr-lcssa:                                       ; preds = %109, %.lr.ph472
  %.lcssa616.ph = phi i64 [ poison, %.lr.ph472 ], [ %122, %109 ]
  %.0426471.unr = phi i64 [ 1, %.lr.ph472 ], [ %127, %109 ]
  %lcmp.mod618.not = icmp eq i64 %xtraiter617, 0
  br i1 %lcmp.mod618.not, label %.epilog-lcssa, label %.epil.preheader

.epil.preheader:                                  ; preds = %.unr-lcssa, %.epil.preheader
  %.0426471.epil = phi i64 [ %133, %.epil.preheader ], [ %.0426471.unr, %.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %.unr-lcssa ]
  %128 = add nuw nsw i64 %.0426471.epil, %103
  %129 = mul i64 %.0426471.epil, %107
  %130 = getelementptr inbounds %struct.complex, ptr %28, i64 %129
  %131 = getelementptr inbounds %struct.complex, ptr %35, i64 %128
  %132 = load <2 x float>, ptr %130, align 4, !tbaa !11
  store <2 x float> %132, ptr %131, align 4, !tbaa !11
  %133 = add nuw i64 %.0426471.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter617
  br i1 %epil.iter.cmp.not, label %.epilog-lcssa, label %.epil.preheader, !llvm.loop !14

.epilog-lcssa:                                    ; preds = %.epil.preheader, %.unr-lcssa
  %.lcssa616 = phi i64 [ %.lcssa616.ph, %.unr-lcssa ], [ %128, %.epil.preheader ]
  store i64 %.lcssa616, ptr %17, align 8, !tbaa !5
  store float 0.000000e+00, ptr %13, align 4, !tbaa !11
  store i64 %103, ptr %16, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %28, i64 8
  %.not441473 = icmp eq i64 %103, 1
  br i1 %.not441473, label %._crit_edge477, label %.lr.ph476

.lr.ph476:                                        ; preds = %.epilog-lcssa, %.lr.ph476
  %.1425474 = phi i64 [ %139, %.lr.ph476 ], [ 2, %.epilog-lcssa ]
  %134 = add nsw i64 %.1425474, -1
  store i64 %134, ptr %17, align 8, !tbaa !5
  %135 = mul nsw i64 %.1425474, %26
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %135
  %136 = call double @f2c_scasum(ptr noundef nonnull %17, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %137 = fptrunc double %136 to float
  %138 = getelementptr inbounds float, ptr %36, i64 %.1425474
  store float %137, ptr %138, align 4, !tbaa !11
  %139 = add nuw nsw i64 %.1425474, 1
  %140 = load i64, ptr %16, align 8, !tbaa !5
  %.not441.not = icmp slt i64 %.1425474, %140
  br i1 %.not441.not, label %.lr.ph476, label %._crit_edge477, !llvm.loop !16

._crit_edge477:                                   ; preds = %.lr.ph476, %.thread575, %.epilog-lcssa
  br i1 %41, label %141, label %.loopexit466

141:                                              ; preds = %._crit_edge477
  %142 = load i64, ptr %11, align 8, !tbaa !5
  %143 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep505 = getelementptr i8, ptr %34, i64 8
  store i64 %143, ptr %20, align 8, !tbaa !5
  %144 = icmp sgt i64 %143, 0
  br i1 %144, label %.lr.ph516, label %.loopexit466

.lr.ph516:                                        ; preds = %141
  %145 = add i64 %26, 1
  %146 = fpext float %101 to double
  %147 = getelementptr inbounds i8, ptr %18, i64 4
  %.not453 = icmp eq i64 %46, 0
  %148 = mul i64 %32, -8
  %scevgep = getelementptr i8, ptr %8, i64 %148
  %scevgep586 = getelementptr i8, ptr %12, i64 -12
  %scevgep589 = getelementptr i8, ptr %4, i64 -12
  %scevgep591 = getelementptr i8, ptr %12, i64 4
  %scevgep592 = getelementptr i8, ptr %12, i64 -8
  %scevgep594 = getelementptr i8, ptr %4, i64 4
  %scevgep596 = getelementptr i8, ptr %4, i64 -8
  br label %149

149:                                              ; preds = %.lr.ph516, %336
  %.0419514 = phi i64 [ %142, %.lr.ph516 ], [ %.1, %336 ]
  %storemerge513 = phi i64 [ %143, %.lr.ph516 ], [ %.pre-phi, %336 ]
  br i1 %.not438, label %153, label %150

150:                                              ; preds = %149
  %151 = getelementptr inbounds i64, ptr %25, i64 %storemerge513
  %152 = load i64, ptr %151, align 8, !tbaa !5
  %.not450 = icmp eq i64 %152, 0
  br i1 %.not450, label %._crit_edge573, label %153

._crit_edge573:                                   ; preds = %150
  %.pre574 = add nsw i64 %storemerge513, -1
  br label %336

153:                                              ; preds = %150, %149
  %154 = mul i64 %storemerge513, %145
  store i64 %154, ptr %16, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.complex, ptr %28, i64 %154
  %156 = load float, ptr %155, align 4, !tbaa !17
  %157 = call double @r_imag(ptr noundef nonnull %155) #5
  %158 = fptrunc double %157 to float
  %159 = insertelement <2 x float> poison, float %156, i64 0
  %160 = insertelement <2 x float> %159, float %158, i64 1
  %161 = fcmp oge <2 x float> %160, zeroinitializer
  %162 = fneg <2 x float> %160
  %163 = select <2 x i1> %161, <2 x float> %160, <2 x float> %162
  %164 = fpext <2 x float> %163 to <2 x double>
  %shift = shufflevector <2 x double> %164, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %165 = fadd <2 x double> %shift, %164
  %166 = extractelement <2 x double> %165, i64 0
  %167 = fmul double %166, %146
  %168 = fptrunc double %167 to float
  %169 = fcmp ole float %106, %168
  %170 = select i1 %169, float %168, float %106
  %171 = fpext float %170 to double
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %12, align 4, !tbaa !11
  %172 = load i64, ptr %20, align 8, !tbaa !5
  %173 = add nsw i64 %172, -1
  %.not451.not478 = icmp sgt i64 %172, 1
  br i1 %.not451.not478, label %.lr.ph481, label %.thread578

.thread578:                                       ; preds = %153
  store i64 %173, ptr %16, align 8, !tbaa !5
  br label %._crit_edge491.thread

.lr.ph481:                                        ; preds = %153
  %174 = mul nsw i64 %172, %26
  %invariant.gep483 = getelementptr %struct.complex, ptr %28, i64 %174
  %175 = add nsw i64 %172, -1
  %min.iters.check = icmp ult i64 %172, 9
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph481
  %176 = shl i64 %172, 3
  %scevgep587 = getelementptr i8, ptr %scevgep586, i64 %176
  %177 = add i64 %176, -8
  %178 = mul i64 %26, %177
  %scevgep588 = getelementptr i8, ptr %4, i64 %178
  %179 = add i64 %178, %176
  %scevgep590 = getelementptr i8, ptr %scevgep589, i64 %179
  %scevgep593 = getelementptr i8, ptr %scevgep592, i64 %176
  %scevgep595 = getelementptr i8, ptr %scevgep594, i64 %178
  %scevgep597 = getelementptr i8, ptr %scevgep596, i64 %179
  %bound0 = icmp ugt ptr %scevgep590, %12
  %bound1 = icmp ult ptr %scevgep588, %scevgep587
  %found.conflict = and i1 %bound0, %bound1
  %bound0598 = icmp ult ptr %scevgep591, %scevgep597
  %bound1599 = icmp ult ptr %scevgep595, %scevgep593
  %found.conflict600 = and i1 %bound0598, %bound1599
  %conflict.rdx = or i1 %found.conflict, %found.conflict600
  br i1 %conflict.rdx, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %175, -4
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %180 = or disjoint i64 %index, 3
  %181 = getelementptr %struct.complex, ptr %invariant.gep483, i64 %offset.idx
  %182 = getelementptr %struct.complex, ptr %invariant.gep483, i64 %180
  %wide.vec = load <4 x float>, ptr %181, align 4, !tbaa !11
  %wide.vec601 = load <4 x float>, ptr %182, align 4, !tbaa !11
  %strided.vec602 = shufflevector <4 x float> %wide.vec601, <4 x float> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec604 = shufflevector <4 x float> %wide.vec601, <4 x float> poison, <2 x i32> <i32 1, i32 3>
  %183 = fneg <2 x float> %strided.vec602
  %184 = fneg <2 x float> %strided.vec604
  %185 = getelementptr %struct.complex, ptr %12, i64 %index
  %186 = getelementptr inbounds %struct.complex, ptr %35, i64 %180
  %interleaved.vec = fneg <4 x float> %wide.vec
  store <4 x float> %interleaved.vec, ptr %185, align 4, !tbaa !11
  %interleaved.vec605 = shufflevector <2 x float> %183, <2 x float> %184, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec605, ptr %186, align 4, !tbaa !11
  %index.next = add nuw i64 %index, 4
  %187 = icmp eq i64 %index.next, %n.vec
  br i1 %187, label %middle.block, label %vector.body, !llvm.loop !19

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %175, %n.vec
  %188 = shufflevector <2 x float> %183, <2 x float> %184, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n, label %.loopexit606, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph481
  %.0420479.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph481 ], [ %ind.end, %middle.block ]
  %189 = sub i64 %172, %.0420479.ph
  %xtraiter622 = and i64 %189, 3
  %lcmp.mod623.not = icmp eq i64 %xtraiter622, 0
  br i1 %lcmp.mod623.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.0420479.prol = phi i64 [ %193, %scalar.ph.prol ], [ %.0420479.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %gep484.prol = getelementptr %struct.complex, ptr %invariant.gep483, i64 %.0420479.prol
  %190 = load <2 x float>, ptr %gep484.prol, align 4, !tbaa !11
  %191 = fneg <2 x float> %190
  %192 = getelementptr inbounds %struct.complex, ptr %35, i64 %.0420479.prol
  store <2 x float> %191, ptr %192, align 4, !tbaa !11
  %193 = add nuw nsw i64 %.0420479.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter622
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !22

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.0420479.lcssa614.unr = phi i64 [ poison, %scalar.ph.preheader ], [ %.0420479.prol, %scalar.ph.prol ]
  %.lcssa613.unr = phi <2 x float> [ poison, %scalar.ph.preheader ], [ %191, %scalar.ph.prol ]
  %.0420479.unr = phi i64 [ %.0420479.ph, %scalar.ph.preheader ], [ %193, %scalar.ph.prol ]
  %194 = sub i64 %.0420479.ph, %172
  %195 = icmp ugt i64 %194, -4
  br i1 %195, label %.loopexit606, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %invariant.gep653 = getelementptr i8, ptr %invariant.gep483, i64 8
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %.0420479 = phi i64 [ %.0420479.unr, %scalar.ph.preheader.new ], [ %210, %scalar.ph ]
  %gep484 = getelementptr %struct.complex, ptr %invariant.gep483, i64 %.0420479
  %196 = load <2 x float>, ptr %gep484, align 4, !tbaa !11
  %197 = fneg <2 x float> %196
  %198 = getelementptr inbounds %struct.complex, ptr %35, i64 %.0420479
  store <2 x float> %197, ptr %198, align 4, !tbaa !11
  %gep654 = getelementptr %struct.complex, ptr %invariant.gep653, i64 %.0420479
  %199 = load <2 x float>, ptr %gep654, align 4, !tbaa !11
  %200 = fneg <2 x float> %199
  %201 = getelementptr %struct.complex, ptr %12, i64 %.0420479
  store <2 x float> %200, ptr %201, align 4, !tbaa !11
  %202 = add nuw nsw i64 %.0420479, 2
  %gep484.2 = getelementptr %struct.complex, ptr %invariant.gep483, i64 %202
  %203 = load <2 x float>, ptr %gep484.2, align 4, !tbaa !11
  %204 = fneg <2 x float> %203
  %205 = getelementptr inbounds %struct.complex, ptr %35, i64 %202
  store <2 x float> %204, ptr %205, align 4, !tbaa !11
  %206 = add nuw nsw i64 %.0420479, 3
  %gep484.3 = getelementptr %struct.complex, ptr %invariant.gep483, i64 %206
  %207 = load <2 x float>, ptr %gep484.3, align 4, !tbaa !11
  %208 = fneg <2 x float> %207
  %209 = getelementptr inbounds %struct.complex, ptr %35, i64 %206
  store <2 x float> %208, ptr %209, align 4, !tbaa !11
  %210 = add nuw nsw i64 %.0420479, 4
  %exitcond559.not.3 = icmp eq i64 %210, %172
  br i1 %exitcond559.not.3, label %.loopexit606, label %scalar.ph, !llvm.loop !23

.loopexit606:                                     ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %.0420479.lcssa = phi i64 [ %n.vec, %middle.block ], [ %.0420479.lcssa614.unr, %scalar.ph.prol.loopexit ], [ %206, %scalar.ph ]
  %211 = phi <2 x float> [ %188, %middle.block ], [ %.lcssa613.unr, %scalar.ph.prol.loopexit ], [ %208, %scalar.ph ]
  store i64 %.0420479.lcssa, ptr %17, align 8, !tbaa !5
  store <2 x float> %211, ptr %18, align 8, !tbaa !11
  store i64 %173, ptr %16, align 8, !tbaa !5
  br label %.lr.ph490

.lr.ph490:                                        ; preds = %.loopexit606, %235
  %.1421488 = phi i64 [ %236, %235 ], [ 1, %.loopexit606 ]
  %212 = mul i64 %.1421488, %145
  %213 = load i64, ptr %20, align 8, !tbaa !5
  %214 = mul i64 %213, %145
  %215 = getelementptr inbounds %struct.complex, ptr %28, i64 %212
  %216 = getelementptr inbounds %struct.complex, ptr %28, i64 %214
  %217 = load <2 x float>, ptr %215, align 4, !tbaa !11
  %218 = load <2 x float>, ptr %216, align 4, !tbaa !11
  %219 = fsub <2 x float> %217, %218
  store <2 x float> %219, ptr %18, align 8, !tbaa !11
  store <2 x float> %219, ptr %215, align 4, !tbaa !11
  store i64 %212, ptr %17, align 8, !tbaa !5
  %220 = extractelement <2 x float> %219, i64 0
  %221 = fcmp oge float %220, 0.000000e+00
  %222 = fneg float %220
  %223 = select i1 %221, float %220, float %222
  %224 = fpext float %223 to double
  %225 = call double @r_imag(ptr noundef nonnull %215) #5
  %226 = fptrunc double %225 to float
  %227 = fcmp oge float %226, 0.000000e+00
  %228 = fneg float %226
  %229 = select i1 %227, float %226, float %228
  %230 = fpext float %229 to double
  %231 = fadd double %224, %230
  %232 = fcmp olt double %231, %171
  br i1 %232, label %233, label %235

233:                                              ; preds = %.lr.ph490
  %234 = getelementptr inbounds i8, ptr %215, i64 4
  store float %170, ptr %215, align 4, !tbaa !17
  store float 0.000000e+00, ptr %234, align 4, !tbaa !24
  br label %235

235:                                              ; preds = %.lr.ph490, %233
  %236 = add nuw nsw i64 %.1421488, 1
  %237 = load i64, ptr %16, align 8, !tbaa !5
  %.not452.not = icmp slt i64 %.1421488, %237
  br i1 %.not452.not, label %.lr.ph490, label %._crit_edge491, !llvm.loop !25

._crit_edge491:                                   ; preds = %235
  %.pre = load i64, ptr %20, align 8, !tbaa !5
  %238 = icmp sgt i64 %.pre, 1
  br i1 %238, label %239, label %._crit_edge491.thread

239:                                              ; preds = %._crit_edge491
  %240 = add nsw i64 %.pre, -1
  store i64 %240, ptr %16, align 8, !tbaa !5
  %241 = call i32 @clatrs_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.11, ptr noundef nonnull %16, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %12, ptr noundef nonnull %23, ptr noundef nonnull %13, ptr noundef nonnull %14) #5
  %242 = load i64, ptr %20, align 8, !tbaa !5
  store i64 %242, ptr %16, align 8, !tbaa !5
  %243 = load float, ptr %23, align 4, !tbaa !11
  %244 = getelementptr inbounds %struct.complex, ptr %35, i64 %242
  store float %243, ptr %244, align 4, !tbaa !17
  %245 = getelementptr inbounds %struct.complex, ptr %35, i64 %242, i32 1
  store float 0.000000e+00, ptr %245, align 4, !tbaa !24
  br label %._crit_edge491.thread

._crit_edge491.thread:                            ; preds = %.thread578, %239, %._crit_edge491
  %246 = phi i64 [ %242, %239 ], [ %.pre, %._crit_edge491 ], [ %172, %.thread578 ]
  br i1 %.not453, label %247, label %274

247:                                              ; preds = %._crit_edge491.thread
  %248 = mul nsw i64 %.0419514, %32
  %gep512 = getelementptr %struct.complex, ptr %invariant.gep505, i64 %248
  %249 = call i32 @f2c_ccopy(ptr noundef nonnull %20, ptr noundef nonnull %12, ptr noundef nonnull @c__1, ptr noundef %gep512, ptr noundef nonnull @c__1) #5
  %250 = call i64 @f2c_icamax(ptr noundef nonnull %20, ptr noundef %gep512, ptr noundef nonnull @c__1) #5
  %251 = add nsw i64 %250, %248
  store i64 %251, ptr %16, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.complex, ptr %34, i64 %251
  %253 = load float, ptr %252, align 4, !tbaa !17
  %254 = call double @r_imag(ptr noundef nonnull %252) #5
  %255 = fptrunc double %254 to float
  %256 = insertelement <2 x float> poison, float %253, i64 0
  %257 = insertelement <2 x float> %256, float %255, i64 1
  %258 = fcmp oge <2 x float> %257, zeroinitializer
  %259 = fneg <2 x float> %257
  %260 = select <2 x i1> %258, <2 x float> %257, <2 x float> %259
  %261 = fpext <2 x float> %260 to <2 x double>
  %shift607 = shufflevector <2 x double> %261, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %262 = fadd <2 x double> %shift607, %261
  %263 = extractelement <2 x double> %262, i64 0
  %264 = fdiv double 1.000000e+00, %263
  %265 = fptrunc double %264 to float
  store float %265, ptr %24, align 4, !tbaa !11
  %266 = call i32 @f2c_csscal(ptr noundef nonnull %20, ptr noundef nonnull %24, ptr noundef %gep512, ptr noundef nonnull @c__1) #5
  %267 = load i64, ptr %3, align 8, !tbaa !5
  %268 = load i64, ptr %20, align 8, !tbaa !5
  %.not454.not492 = icmp slt i64 %268, %267
  br i1 %.not454.not492, label %.lr.ph495.preheader, label %.loopexit465

.lr.ph495.preheader:                              ; preds = %247
  %269 = add i64 %268, %248
  %270 = shl i64 %269, 3
  %scevgep560 = getelementptr i8, ptr %scevgep, i64 %270
  %271 = sub i64 %267, %268
  %272 = shl i64 %271, 3
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep560, i8 0, i64 %272, i1 false), !tbaa !11
  %273 = add i64 %267, %248
  store i64 %273, ptr %17, align 8, !tbaa !5
  br label %.loopexit465

274:                                              ; preds = %._crit_edge491.thread
  %275 = icmp sgt i64 %246, 1
  br i1 %275, label %276, label %281

276:                                              ; preds = %274
  %277 = add nsw i64 %246, -1
  store i64 %277, ptr %16, align 8, !tbaa !5
  %278 = load float, ptr %23, align 4, !tbaa !11
  store float %278, ptr %18, align 8, !tbaa !17
  store float 0.000000e+00, ptr %147, align 4, !tbaa !24
  %279 = mul nsw i64 %246, %32
  %gep506 = getelementptr %struct.complex, ptr %invariant.gep505, i64 %279
  %280 = call i32 @f2c_cgemv(ptr noundef nonnull @.str.12, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef nonnull @c_b2, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %12, ptr noundef nonnull @c__1, ptr noundef nonnull %18, ptr noundef %gep506, ptr noundef nonnull @c__1) #5
  %.pre564 = load i64, ptr %20, align 8, !tbaa !5
  br label %281

281:                                              ; preds = %276, %274
  %282 = phi i64 [ %.pre564, %276 ], [ %246, %274 ]
  %283 = mul nsw i64 %282, %32
  %gep508 = getelementptr %struct.complex, ptr %invariant.gep505, i64 %283
  %284 = call i64 @f2c_icamax(ptr noundef nonnull %3, ptr noundef %gep508, ptr noundef nonnull @c__1) #5
  %285 = load i64, ptr %20, align 8, !tbaa !5
  %286 = mul nsw i64 %285, %32
  %287 = add nsw i64 %286, %284
  store i64 %287, ptr %16, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.complex, ptr %34, i64 %287
  %289 = load float, ptr %288, align 4, !tbaa !17
  %290 = getelementptr %struct.complex, ptr %34, i64 %284
  %291 = getelementptr %struct.complex, ptr %290, i64 %286
  %292 = call double @r_imag(ptr noundef %291) #5
  %293 = fptrunc double %292 to float
  %294 = insertelement <2 x float> poison, float %289, i64 0
  %295 = insertelement <2 x float> %294, float %293, i64 1
  %296 = fcmp oge <2 x float> %295, zeroinitializer
  %297 = fneg <2 x float> %295
  %298 = select <2 x i1> %296, <2 x float> %295, <2 x float> %297
  %299 = fpext <2 x float> %298 to <2 x double>
  %shift608 = shufflevector <2 x double> %299, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %300 = fadd <2 x double> %shift608, %299
  %301 = extractelement <2 x double> %300, i64 0
  %302 = fdiv double 1.000000e+00, %301
  %303 = fptrunc double %302 to float
  store float %303, ptr %24, align 4, !tbaa !11
  %304 = load i64, ptr %20, align 8, !tbaa !5
  %305 = mul nsw i64 %304, %32
  %gep510 = getelementptr %struct.complex, ptr %invariant.gep505, i64 %305
  %306 = call i32 @f2c_csscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep510, ptr noundef nonnull @c__1) #5
  %.pre565 = load i64, ptr %20, align 8, !tbaa !5
  br label %.loopexit465

.loopexit465:                                     ; preds = %247, %.lr.ph495.preheader, %281
  %307 = phi i64 [ %268, %247 ], [ %268, %.lr.ph495.preheader ], [ %.pre565, %281 ]
  %308 = add nsw i64 %307, -1
  store i64 %308, ptr %16, align 8, !tbaa !5
  %.not455.not497 = icmp sgt i64 %307, 1
  br i1 %.not455.not497, label %.lr.ph500, label %334

.lr.ph500:                                        ; preds = %.loopexit465
  %309 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep502 = getelementptr %struct.complex, ptr %35, i64 %309
  %310 = add nsw i64 %307, -1
  %311 = add nsw i64 %307, -2
  %xtraiter625 = and i64 %310, 3
  %312 = icmp ult i64 %311, 3
  br i1 %312, label %._crit_edge501.unr-lcssa, label %.lr.ph500.new

.lr.ph500.new:                                    ; preds = %.lr.ph500
  %unroll_iter629 = and i64 %310, -4
  br label %313

313:                                              ; preds = %313, %.lr.ph500.new
  %.3423498 = phi i64 [ 1, %.lr.ph500.new ], [ %329, %313 ]
  %niter630 = phi i64 [ 0, %.lr.ph500.new ], [ %niter630.next.3, %313 ]
  %314 = mul i64 %.3423498, %145
  %gep503 = getelementptr %struct.complex, ptr %invariant.gep502, i64 %.3423498
  %315 = getelementptr inbounds %struct.complex, ptr %28, i64 %314
  %316 = load <2 x float>, ptr %gep503, align 4, !tbaa !11
  store <2 x float> %316, ptr %315, align 4, !tbaa !11
  %317 = add nuw nsw i64 %.3423498, 1
  %318 = mul i64 %317, %145
  %gep503.1 = getelementptr %struct.complex, ptr %invariant.gep502, i64 %317
  %319 = getelementptr inbounds %struct.complex, ptr %28, i64 %318
  %320 = load <2 x float>, ptr %gep503.1, align 4, !tbaa !11
  store <2 x float> %320, ptr %319, align 4, !tbaa !11
  %321 = add nuw nsw i64 %.3423498, 2
  %322 = mul i64 %321, %145
  %gep503.2 = getelementptr %struct.complex, ptr %invariant.gep502, i64 %321
  %323 = getelementptr inbounds %struct.complex, ptr %28, i64 %322
  %324 = load <2 x float>, ptr %gep503.2, align 4, !tbaa !11
  store <2 x float> %324, ptr %323, align 4, !tbaa !11
  %325 = add nuw nsw i64 %.3423498, 3
  %326 = mul i64 %325, %145
  %gep503.3 = getelementptr %struct.complex, ptr %invariant.gep502, i64 %325
  %327 = getelementptr inbounds %struct.complex, ptr %28, i64 %326
  %328 = load <2 x float>, ptr %gep503.3, align 4, !tbaa !11
  store <2 x float> %328, ptr %327, align 4, !tbaa !11
  %329 = add nuw nsw i64 %.3423498, 4
  %niter630.next.3 = add nuw i64 %niter630, 4
  %niter630.ncmp.3 = icmp eq i64 %niter630.next.3, %unroll_iter629
  br i1 %niter630.ncmp.3, label %._crit_edge501.unr-lcssa, label %313, !llvm.loop !26

._crit_edge501.unr-lcssa:                         ; preds = %313, %.lr.ph500
  %.lcssa615.ph = phi i64 [ poison, %.lr.ph500 ], [ %326, %313 ]
  %.3423498.unr = phi i64 [ 1, %.lr.ph500 ], [ %329, %313 ]
  %lcmp.mod627.not = icmp eq i64 %xtraiter625, 0
  br i1 %lcmp.mod627.not, label %._crit_edge501, label %.epil.preheader624

.epil.preheader624:                               ; preds = %._crit_edge501.unr-lcssa, %.epil.preheader624
  %.3423498.epil = phi i64 [ %333, %.epil.preheader624 ], [ %.3423498.unr, %._crit_edge501.unr-lcssa ]
  %epil.iter626 = phi i64 [ %epil.iter626.next, %.epil.preheader624 ], [ 0, %._crit_edge501.unr-lcssa ]
  %330 = mul i64 %.3423498.epil, %145
  %gep503.epil = getelementptr %struct.complex, ptr %invariant.gep502, i64 %.3423498.epil
  %331 = getelementptr inbounds %struct.complex, ptr %28, i64 %330
  %332 = load <2 x float>, ptr %gep503.epil, align 4, !tbaa !11
  store <2 x float> %332, ptr %331, align 4, !tbaa !11
  %333 = add nuw nsw i64 %.3423498.epil, 1
  %epil.iter626.next = add i64 %epil.iter626, 1
  %epil.iter626.cmp.not = icmp eq i64 %epil.iter626.next, %xtraiter625
  br i1 %epil.iter626.cmp.not, label %._crit_edge501, label %.epil.preheader624, !llvm.loop !27

._crit_edge501:                                   ; preds = %.epil.preheader624, %._crit_edge501.unr-lcssa
  %.lcssa615 = phi i64 [ %.lcssa615.ph, %._crit_edge501.unr-lcssa ], [ %330, %.epil.preheader624 ]
  store i64 %.lcssa615, ptr %17, align 8, !tbaa !5
  br label %334

334:                                              ; preds = %._crit_edge501, %.loopexit465
  %335 = add nsw i64 %.0419514, -1
  br label %336

336:                                              ; preds = %._crit_edge573, %334
  %.pre-phi = phi i64 [ %.pre574, %._crit_edge573 ], [ %308, %334 ]
  %337 = phi i64 [ %storemerge513, %._crit_edge573 ], [ %307, %334 ]
  %.1 = phi i64 [ %.0419514, %._crit_edge573 ], [ %335, %334 ]
  store i64 %.pre-phi, ptr %20, align 8, !tbaa !5
  %338 = icmp sgt i64 %337, 1
  br i1 %338, label %149, label %.loopexit466, !llvm.loop !28

.loopexit466:                                     ; preds = %336, %141, %._crit_edge477
  br i1 %44, label %339, label %.loopexit464

339:                                              ; preds = %.loopexit466
  %340 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %340, ptr %16, align 8, !tbaa !5
  %invariant.gep541 = getelementptr i8, ptr %31, i64 8
  store i64 1, ptr %20, align 8, !tbaa !5
  %.not443549 = icmp slt i64 %340, 1
  br i1 %.not443549, label %.loopexit464, label %.lr.ph553

.lr.ph553:                                        ; preds = %339
  %341 = add i64 %26, 1
  %342 = fpext float %101 to double
  %343 = getelementptr inbounds i8, ptr %18, i64 4
  %.not447 = icmp eq i64 %46, 0
  br label %344

344:                                              ; preds = %.lr.ph553, %526
  %345 = phi i64 [ %340, %.lr.ph553 ], [ %527, %526 ]
  %.2551 = phi i64 [ 1, %.lr.ph553 ], [ %.3, %526 ]
  %storemerge442550 = phi i64 [ 1, %.lr.ph553 ], [ %529, %526 ]
  br i1 %.not438, label %349, label %346

346:                                              ; preds = %344
  %347 = getelementptr inbounds i64, ptr %25, i64 %storemerge442550
  %348 = load i64, ptr %347, align 8, !tbaa !5
  %.not444 = icmp eq i64 %348, 0
  br i1 %.not444, label %526, label %349

349:                                              ; preds = %346, %344
  %350 = mul i64 %storemerge442550, %341
  store i64 %350, ptr %17, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.complex, ptr %28, i64 %350
  %352 = load float, ptr %351, align 4, !tbaa !17
  %353 = call double @r_imag(ptr noundef nonnull %351) #5
  %354 = fptrunc double %353 to float
  %355 = insertelement <2 x float> poison, float %352, i64 0
  %356 = insertelement <2 x float> %355, float %354, i64 1
  %357 = fcmp oge <2 x float> %356, zeroinitializer
  %358 = fneg <2 x float> %356
  %359 = select <2 x i1> %357, <2 x float> %356, <2 x float> %358
  %360 = fpext <2 x float> %359 to <2 x double>
  %shift609 = shufflevector <2 x double> %360, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %361 = fadd <2 x double> %shift609, %360
  %362 = extractelement <2 x double> %361, i64 0
  %363 = fmul double %362, %342
  %364 = fptrunc double %363 to float
  %365 = fcmp ole float %106, %364
  %366 = select i1 %365, float %364, float %106
  %367 = fpext float %366 to double
  %368 = load i64, ptr %3, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.complex, ptr %35, i64 %368
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %369, align 4, !tbaa !11
  store i64 %368, ptr %17, align 8, !tbaa !5
  %370 = load i64, ptr %20, align 8, !tbaa !5
  %.not445.not517 = icmp slt i64 %370, %368
  br i1 %.not445.not517, label %.lr.ph520, label %._crit_edge521

.lr.ph520:                                        ; preds = %349, %.lr.ph520
  %.4.in518 = phi i64 [ %.4, %.lr.ph520 ], [ %370, %349 ]
  %.4 = add nsw i64 %.4.in518, 1
  %371 = load i64, ptr %20, align 8, !tbaa !5
  %372 = mul nsw i64 %.4, %26
  %373 = getelementptr %struct.complex, ptr %28, i64 %371
  %374 = getelementptr %struct.complex, ptr %373, i64 %372
  call void @r_cnjg(ptr noundef nonnull %19, ptr noundef %374) #5
  %375 = load <2 x float>, ptr %19, align 8, !tbaa !11
  %376 = fneg <2 x float> %375
  store <2 x float> %376, ptr %18, align 8, !tbaa !11
  %377 = getelementptr %struct.complex, ptr %12, i64 %.4.in518
  store <2 x float> %376, ptr %377, align 4, !tbaa !11
  %378 = load i64, ptr %17, align 8, !tbaa !5
  %.not445.not = icmp slt i64 %.4, %378
  br i1 %.not445.not, label %.lr.ph520, label %._crit_edge521.loopexit, !llvm.loop !29

._crit_edge521.loopexit:                          ; preds = %.lr.ph520
  %.pre566 = load i64, ptr %3, align 8, !tbaa !5
  %.pre567 = load i64, ptr %20, align 8, !tbaa !5
  br label %._crit_edge521

._crit_edge521:                                   ; preds = %._crit_edge521.loopexit, %349
  %379 = phi i64 [ %.pre567, %._crit_edge521.loopexit ], [ %370, %349 ]
  %380 = phi i64 [ %.pre566, %._crit_edge521.loopexit ], [ %368, %349 ]
  store i64 %380, ptr %17, align 8, !tbaa !5
  %.not446.not523 = icmp slt i64 %379, %380
  br i1 %.not446.not523, label %.lr.ph526, label %._crit_edge527

.lr.ph526:                                        ; preds = %._crit_edge521, %404
  %.5524.in = phi i64 [ %.5524, %404 ], [ %379, %._crit_edge521 ]
  %.5524 = add nsw i64 %.5524.in, 1
  %381 = mul i64 %.5524, %341
  %382 = load i64, ptr %20, align 8, !tbaa !5
  %383 = mul i64 %382, %341
  %384 = getelementptr inbounds %struct.complex, ptr %28, i64 %381
  %385 = getelementptr inbounds %struct.complex, ptr %28, i64 %383
  %386 = load <2 x float>, ptr %384, align 4, !tbaa !11
  %387 = load <2 x float>, ptr %385, align 4, !tbaa !11
  %388 = fsub <2 x float> %386, %387
  store <2 x float> %388, ptr %18, align 8, !tbaa !11
  store <2 x float> %388, ptr %384, align 4, !tbaa !11
  %389 = extractelement <2 x float> %388, i64 0
  %390 = fcmp oge float %389, 0.000000e+00
  %391 = fneg float %389
  %392 = select i1 %390, float %389, float %391
  %393 = fpext float %392 to double
  %394 = call double @r_imag(ptr noundef nonnull %384) #5
  %395 = fptrunc double %394 to float
  %396 = fcmp oge float %395, 0.000000e+00
  %397 = fneg float %395
  %398 = select i1 %396, float %395, float %397
  %399 = fpext float %398 to double
  %400 = fadd double %393, %399
  %401 = fcmp olt double %400, %367
  br i1 %401, label %402, label %404

402:                                              ; preds = %.lr.ph526
  %403 = getelementptr inbounds i8, ptr %384, i64 4
  store float %366, ptr %384, align 4, !tbaa !17
  store float 0.000000e+00, ptr %403, align 4, !tbaa !24
  br label %404

404:                                              ; preds = %.lr.ph526, %402
  %405 = load i64, ptr %17, align 8, !tbaa !5
  %.not446.not = icmp slt i64 %.5524, %405
  br i1 %.not446.not, label %.lr.ph526, label %._crit_edge527.loopexit, !llvm.loop !30

._crit_edge527.loopexit:                          ; preds = %404
  %.pre568 = load i64, ptr %20, align 8, !tbaa !5
  %.pre569 = load i64, ptr %3, align 8, !tbaa !5
  br label %._crit_edge527

._crit_edge527:                                   ; preds = %._crit_edge527.loopexit, %._crit_edge521
  %406 = phi i64 [ %.pre569, %._crit_edge527.loopexit ], [ %380, %._crit_edge521 ]
  %407 = phi i64 [ %.pre568, %._crit_edge527.loopexit ], [ %379, %._crit_edge521 ]
  %408 = icmp slt i64 %407, %406
  br i1 %408, label %409, label %420

409:                                              ; preds = %._crit_edge527
  %410 = sub nsw i64 %406, %407
  store i64 %410, ptr %17, align 8, !tbaa !5
  %411 = add nsw i64 %407, 1
  %412 = mul i64 %411, %341
  %413 = getelementptr inbounds %struct.complex, ptr %28, i64 %412
  %414 = getelementptr %struct.complex, ptr %12, i64 %407
  %415 = call i32 @clatrs_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.11, ptr noundef nonnull %17, ptr noundef %413, ptr noundef nonnull %5, ptr noundef %414, ptr noundef nonnull %23, ptr noundef nonnull %13, ptr noundef nonnull %14) #5
  %416 = load i64, ptr %20, align 8, !tbaa !5
  store i64 %416, ptr %17, align 8, !tbaa !5
  %417 = load float, ptr %23, align 4, !tbaa !11
  %418 = getelementptr inbounds %struct.complex, ptr %35, i64 %416
  store float %417, ptr %418, align 4, !tbaa !17
  %419 = getelementptr inbounds %struct.complex, ptr %35, i64 %416, i32 1
  store float 0.000000e+00, ptr %419, align 4, !tbaa !24
  br label %420

420:                                              ; preds = %409, %._crit_edge527
  %421 = phi i64 [ %416, %409 ], [ %407, %._crit_edge527 ]
  %422 = load i64, ptr %3, align 8, !tbaa !5
  br i1 %.not447, label %423, label %469

423:                                              ; preds = %420
  %424 = add i64 %422, 1
  %425 = sub i64 %424, %421
  store i64 %425, ptr %17, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.complex, ptr %35, i64 %421
  %427 = mul nsw i64 %.2551, %29
  %428 = getelementptr %struct.complex, ptr %31, i64 %421
  %429 = getelementptr %struct.complex, ptr %428, i64 %427
  %430 = call i32 @f2c_ccopy(ptr noundef nonnull %17, ptr noundef nonnull %426, ptr noundef nonnull @c__1, ptr noundef %429, ptr noundef nonnull @c__1) #5
  %431 = load i64, ptr %3, align 8, !tbaa !5
  %432 = load i64, ptr %20, align 8, !tbaa !5
  %433 = add i64 %431, 1
  %434 = sub i64 %433, %432
  store i64 %434, ptr %17, align 8, !tbaa !5
  %435 = getelementptr %struct.complex, ptr %31, i64 %432
  %436 = getelementptr %struct.complex, ptr %435, i64 %427
  %437 = call i64 @f2c_icamax(ptr noundef nonnull %17, ptr noundef %436, ptr noundef nonnull @c__1) #5
  %438 = load i64, ptr %20, align 8, !tbaa !5
  %439 = add i64 %427, -1
  %440 = add i64 %439, %437
  %441 = add i64 %440, %438
  store i64 %441, ptr %17, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.complex, ptr %31, i64 %441
  %443 = load float, ptr %442, align 4, !tbaa !17
  %444 = call double @r_imag(ptr noundef nonnull %442) #5
  %445 = fptrunc double %444 to float
  %446 = insertelement <2 x float> poison, float %443, i64 0
  %447 = insertelement <2 x float> %446, float %445, i64 1
  %448 = fcmp oge <2 x float> %447, zeroinitializer
  %449 = fneg <2 x float> %447
  %450 = select <2 x i1> %448, <2 x float> %447, <2 x float> %449
  %451 = fpext <2 x float> %450 to <2 x double>
  %shift610 = shufflevector <2 x double> %451, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %452 = fadd <2 x double> %shift610, %451
  %453 = extractelement <2 x double> %452, i64 0
  %454 = fdiv double 1.000000e+00, %453
  %455 = fptrunc double %454 to float
  store float %455, ptr %24, align 4, !tbaa !11
  %456 = load i64, ptr %3, align 8, !tbaa !5
  %457 = load i64, ptr %20, align 8, !tbaa !5
  %458 = add i64 %456, 1
  %459 = sub i64 %458, %457
  store i64 %459, ptr %17, align 8, !tbaa !5
  %460 = getelementptr %struct.complex, ptr %31, i64 %457
  %461 = getelementptr %struct.complex, ptr %460, i64 %427
  %462 = call i32 @f2c_csscal(ptr noundef nonnull %17, ptr noundef nonnull %24, ptr noundef %461, ptr noundef nonnull @c__1) #5
  %463 = load i64, ptr %20, align 8, !tbaa !5
  %.not448.not530 = icmp sgt i64 %463, 1
  br i1 %.not448.not530, label %.lr.ph533.preheader, label %.loopexit

.lr.ph533.preheader:                              ; preds = %423
  %464 = shl i64 %.2551, 3
  %465 = add i64 %464, -8
  %466 = mul i64 %29, %465
  %scevgep562 = getelementptr i8, ptr %6, i64 %466
  %467 = shl i64 %463, 3
  %468 = add i64 %467, -8
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep562, i8 0, i64 %468, i1 false), !tbaa !11
  br label %.loopexit

469:                                              ; preds = %420
  %470 = icmp slt i64 %421, %422
  br i1 %470, label %471, label %479

471:                                              ; preds = %469
  %472 = sub nsw i64 %422, %421
  store i64 %472, ptr %17, align 8, !tbaa !5
  %473 = load float, ptr %23, align 4, !tbaa !11
  store float %473, ptr %18, align 8, !tbaa !17
  store float 0.000000e+00, ptr %343, align 4, !tbaa !24
  %474 = add nsw i64 %421, 1
  %475 = mul nsw i64 %474, %29
  %gep542 = getelementptr %struct.complex, ptr %invariant.gep541, i64 %475
  %476 = getelementptr %struct.complex, ptr %12, i64 %421
  %477 = mul nsw i64 %421, %29
  %gep544 = getelementptr %struct.complex, ptr %invariant.gep541, i64 %477
  %478 = call i32 @f2c_cgemv(ptr noundef nonnull @.str.12, ptr noundef nonnull %3, ptr noundef nonnull %17, ptr noundef nonnull @c_b2, ptr noundef %gep542, ptr noundef nonnull %7, ptr noundef %476, ptr noundef nonnull @c__1, ptr noundef nonnull %18, ptr noundef %gep544, ptr noundef nonnull @c__1) #5
  %.pre570 = load i64, ptr %20, align 8, !tbaa !5
  br label %479

479:                                              ; preds = %471, %469
  %480 = phi i64 [ %.pre570, %471 ], [ %421, %469 ]
  %481 = mul nsw i64 %480, %29
  %gep546 = getelementptr %struct.complex, ptr %invariant.gep541, i64 %481
  %482 = call i64 @f2c_icamax(ptr noundef nonnull %3, ptr noundef %gep546, ptr noundef nonnull @c__1) #5
  %483 = load i64, ptr %20, align 8, !tbaa !5
  %484 = mul nsw i64 %483, %29
  %485 = add nsw i64 %484, %482
  store i64 %485, ptr %17, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.complex, ptr %31, i64 %485
  %487 = load float, ptr %486, align 4, !tbaa !17
  %488 = getelementptr %struct.complex, ptr %31, i64 %482
  %489 = getelementptr %struct.complex, ptr %488, i64 %484
  %490 = call double @r_imag(ptr noundef %489) #5
  %491 = fptrunc double %490 to float
  %492 = insertelement <2 x float> poison, float %487, i64 0
  %493 = insertelement <2 x float> %492, float %491, i64 1
  %494 = fcmp oge <2 x float> %493, zeroinitializer
  %495 = fneg <2 x float> %493
  %496 = select <2 x i1> %494, <2 x float> %493, <2 x float> %495
  %497 = fpext <2 x float> %496 to <2 x double>
  %shift611 = shufflevector <2 x double> %497, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %498 = fadd <2 x double> %shift611, %497
  %499 = extractelement <2 x double> %498, i64 0
  %500 = fdiv double 1.000000e+00, %499
  %501 = fptrunc double %500 to float
  store float %501, ptr %24, align 4, !tbaa !11
  %502 = load i64, ptr %20, align 8, !tbaa !5
  %503 = mul nsw i64 %502, %29
  %gep548 = getelementptr %struct.complex, ptr %invariant.gep541, i64 %503
  %504 = call i32 @f2c_csscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep548, ptr noundef nonnull @c__1) #5
  %.pre571 = load i64, ptr %20, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph533.preheader, %423, %479
  %505 = phi i64 [ %463, %.lr.ph533.preheader ], [ %463, %423 ], [ %.pre571, %479 ]
  %506 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %506, ptr %17, align 8, !tbaa !5
  %invariant.gep534 = getelementptr %struct.complex, ptr %12, i64 %506
  %.not449.not536 = icmp slt i64 %505, %506
  br i1 %.not449.not536, label %.lr.ph539.preheader, label %._crit_edge540

.lr.ph539.preheader:                              ; preds = %.loopexit
  %507 = sub i64 %506, %505
  %xtraiter631 = and i64 %507, 3
  %lcmp.mod632.not = icmp eq i64 %xtraiter631, 0
  br i1 %lcmp.mod632.not, label %.lr.ph539.prol.loopexit, label %.lr.ph539.prol

.lr.ph539.prol:                                   ; preds = %.lr.ph539.preheader, %.lr.ph539.prol
  %.7.in537.prol = phi i64 [ %.7.prol, %.lr.ph539.prol ], [ %505, %.lr.ph539.preheader ]
  %prol.iter633 = phi i64 [ %prol.iter633.next, %.lr.ph539.prol ], [ 0, %.lr.ph539.preheader ]
  %.7.prol = add nsw i64 %.7.in537.prol, 1
  %508 = mul i64 %.7.prol, %341
  %gep535.prol = getelementptr %struct.complex, ptr %invariant.gep534, i64 %.7.in537.prol
  %509 = getelementptr inbounds %struct.complex, ptr %28, i64 %508
  %510 = load <2 x float>, ptr %gep535.prol, align 4, !tbaa !11
  store <2 x float> %510, ptr %509, align 4, !tbaa !11
  %prol.iter633.next = add i64 %prol.iter633, 1
  %prol.iter633.cmp.not = icmp eq i64 %prol.iter633.next, %xtraiter631
  br i1 %prol.iter633.cmp.not, label %.lr.ph539.prol.loopexit, label %.lr.ph539.prol, !llvm.loop !31

.lr.ph539.prol.loopexit:                          ; preds = %.lr.ph539.prol, %.lr.ph539.preheader
  %.7.in537.unr = phi i64 [ %505, %.lr.ph539.preheader ], [ %.7.prol, %.lr.ph539.prol ]
  %511 = sub i64 %505, %506
  %512 = icmp ugt i64 %511, -4
  br i1 %512, label %._crit_edge540, label %.lr.ph539

.lr.ph539:                                        ; preds = %.lr.ph539.prol.loopexit, %.lr.ph539
  %.7.in537 = phi i64 [ %.7.3, %.lr.ph539 ], [ %.7.in537.unr, %.lr.ph539.prol.loopexit ]
  %.7 = add nsw i64 %.7.in537, 1
  %513 = mul i64 %.7, %341
  %gep535 = getelementptr %struct.complex, ptr %invariant.gep534, i64 %.7.in537
  %514 = getelementptr inbounds %struct.complex, ptr %28, i64 %513
  %515 = load <2 x float>, ptr %gep535, align 4, !tbaa !11
  store <2 x float> %515, ptr %514, align 4, !tbaa !11
  %.7.1 = add nsw i64 %.7.in537, 2
  %516 = mul i64 %.7.1, %341
  %gep535.1 = getelementptr %struct.complex, ptr %invariant.gep534, i64 %.7
  %517 = getelementptr inbounds %struct.complex, ptr %28, i64 %516
  %518 = load <2 x float>, ptr %gep535.1, align 4, !tbaa !11
  store <2 x float> %518, ptr %517, align 4, !tbaa !11
  %.7.2 = add nsw i64 %.7.in537, 3
  %519 = mul i64 %.7.2, %341
  %gep535.2 = getelementptr %struct.complex, ptr %invariant.gep534, i64 %.7.1
  %520 = getelementptr inbounds %struct.complex, ptr %28, i64 %519
  %521 = load <2 x float>, ptr %gep535.2, align 4, !tbaa !11
  store <2 x float> %521, ptr %520, align 4, !tbaa !11
  %.7.3 = add nsw i64 %.7.in537, 4
  %522 = mul i64 %.7.3, %341
  %gep535.3 = getelementptr %struct.complex, ptr %invariant.gep534, i64 %.7.2
  %523 = getelementptr inbounds %struct.complex, ptr %28, i64 %522
  %524 = load <2 x float>, ptr %gep535.3, align 4, !tbaa !11
  store <2 x float> %524, ptr %523, align 4, !tbaa !11
  %exitcond563.not.3 = icmp eq i64 %.7.3, %506
  br i1 %exitcond563.not.3, label %._crit_edge540, label %.lr.ph539, !llvm.loop !32

._crit_edge540:                                   ; preds = %.lr.ph539.prol.loopexit, %.lr.ph539, %.loopexit
  %525 = add nsw i64 %.2551, 1
  %.pre572 = load i64, ptr %16, align 8, !tbaa !5
  br label %526

526:                                              ; preds = %._crit_edge540, %346
  %527 = phi i64 [ %.pre572, %._crit_edge540 ], [ %345, %346 ]
  %528 = phi i64 [ %505, %._crit_edge540 ], [ %storemerge442550, %346 ]
  %.3 = phi i64 [ %525, %._crit_edge540 ], [ %.2551, %346 ]
  %529 = add nsw i64 %528, 1
  store i64 %529, ptr %20, align 8, !tbaa !5
  %.not443.not = icmp slt i64 %528, %527
  br i1 %.not443.not, label %344, label %.loopexit464, !llvm.loop !33

.loopexit464:                                     ; preds = %526, %339, %.loopexit466, %93, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  ret i32 0
}

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

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

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

declare double @r_imag(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare void @r_cnjg(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.umax.i64(i64, i64) #3

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4

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

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

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


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