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

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

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b1 = external hidden global %struct.complex, align 4

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

117:                                              ; preds = %17
  %118 = load ptr, ptr %19, align 8, !tbaa !5
  %119 = call i64 @lsame_(ptr noundef %118, ptr noundef @.str.1)
  %120 = icmp ne i64 %119, 0
  br i1 %120, label %123, label %121

121:                                              ; preds = %117
  %122 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -1, ptr %122, align 8, !tbaa !9
  br label %201

123:                                              ; preds = %117, %17
  %124 = load ptr, ptr %20, align 8, !tbaa !5
  %125 = load i64, ptr %124, align 8, !tbaa !9
  %126 = icmp slt i64 %125, 0
  br i1 %126, label %127, label %129

127:                                              ; preds = %123
  %128 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -2, ptr %128, align 8, !tbaa !9
  br label %200

129:                                              ; preds = %123
  %130 = load ptr, ptr %21, align 8, !tbaa !5
  %131 = load i64, ptr %130, align 8, !tbaa !9
  %132 = icmp slt i64 %131, 0
  br i1 %132, label %133, label %135

133:                                              ; preds = %129
  %134 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -3, ptr %134, align 8, !tbaa !9
  br label %199

135:                                              ; preds = %129
  %136 = load ptr, ptr %23, align 8, !tbaa !5
  %137 = load i64, ptr %136, align 8, !tbaa !9
  %138 = load ptr, ptr %20, align 8, !tbaa !5
  %139 = load i64, ptr %138, align 8, !tbaa !9
  %140 = icmp sge i64 1, %139
  br i1 %140, label %141, label %142

141:                                              ; preds = %135
  br label %145

142:                                              ; preds = %135
  %143 = load ptr, ptr %20, align 8, !tbaa !5
  %144 = load i64, ptr %143, align 8, !tbaa !9
  br label %145

145:                                              ; preds = %142, %141
  %146 = phi i64 [ 1, %141 ], [ %144, %142 ]
  %147 = icmp slt i64 %137, %146
  br i1 %147, label %148, label %150

148:                                              ; preds = %145
  %149 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -5, ptr %149, align 8, !tbaa !9
  br label %198

150:                                              ; preds = %145
  %151 = load ptr, ptr %25, align 8, !tbaa !5
  %152 = load i64, ptr %151, align 8, !tbaa !9
  %153 = load ptr, ptr %20, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  %155 = icmp sge i64 1, %154
  br i1 %155, label %156, label %157

156:                                              ; preds = %150
  br label %160

157:                                              ; preds = %150
  %158 = load ptr, ptr %20, align 8, !tbaa !5
  %159 = load i64, ptr %158, align 8, !tbaa !9
  br label %160

160:                                              ; preds = %157, %156
  %161 = phi i64 [ 1, %156 ], [ %159, %157 ]
  %162 = icmp slt i64 %152, %161
  br i1 %162, label %163, label %165

163:                                              ; preds = %160
  %164 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -7, ptr %164, align 8, !tbaa !9
  br label %197

165:                                              ; preds = %160
  %166 = load ptr, ptr %28, align 8, !tbaa !5
  %167 = load i64, ptr %166, align 8, !tbaa !9
  %168 = load ptr, ptr %20, align 8, !tbaa !5
  %169 = load i64, ptr %168, align 8, !tbaa !9
  %170 = icmp sge i64 1, %169
  br i1 %170, label %171, label %172

171:                                              ; preds = %165
  br label %175

172:                                              ; preds = %165
  %173 = load ptr, ptr %20, align 8, !tbaa !5
  %174 = load i64, ptr %173, align 8, !tbaa !9
  br label %175

175:                                              ; preds = %172, %171
  %176 = phi i64 [ 1, %171 ], [ %174, %172 ]
  %177 = icmp slt i64 %167, %176
  br i1 %177, label %178, label %180

178:                                              ; preds = %175
  %179 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -10, ptr %179, align 8, !tbaa !9
  br label %196

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

186:                                              ; preds = %180
  br label %190

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

190:                                              ; preds = %187, %186
  %191 = phi i64 [ 1, %186 ], [ %189, %187 ]
  %192 = icmp slt i64 %182, %191
  br i1 %192, label %193, label %195

193:                                              ; preds = %190
  %194 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -12, ptr %194, align 8, !tbaa !9
  br label %195

195:                                              ; preds = %193, %190
  br label %196

196:                                              ; preds = %195, %178
  br label %197

197:                                              ; preds = %196, %163
  br label %198

198:                                              ; preds = %197, %148
  br label %199

199:                                              ; preds = %198, %133
  br label %200

200:                                              ; preds = %199, %127
  br label %201

201:                                              ; preds = %200, %121
  %202 = load ptr, ptr %35, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  %204 = icmp ne i64 %203, 0
  br i1 %204, label %205, label %210

205:                                              ; preds = %201
  %206 = load ptr, ptr %35, align 8, !tbaa !5
  %207 = load i64, ptr %206, align 8, !tbaa !9
  %208 = sub nsw i64 0, %207
  store i64 %208, ptr %44, align 8, !tbaa !9
  %209 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %44)
  store i32 0, ptr %18, align 4
  store i32 1, ptr %69, align 4
  br label %1333

210:                                              ; preds = %201
  %211 = load ptr, ptr %20, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  %213 = icmp eq i64 %212, 0
  br i1 %213, label %218, label %214

214:                                              ; preds = %210
  %215 = load ptr, ptr %21, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  %217 = icmp eq i64 %216, 0
  br i1 %217, label %218, label %236

218:                                              ; preds = %214, %210
  %219 = load ptr, ptr %21, align 8, !tbaa !5
  %220 = load i64, ptr %219, align 8, !tbaa !9
  store i64 %220, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %221

221:                                              ; preds = %232, %218
  %222 = load i64, ptr %55, align 8, !tbaa !9
  %223 = load i64, ptr %44, align 8, !tbaa !9
  %224 = icmp sle i64 %222, %223
  br i1 %224, label %225, label %235

225:                                              ; preds = %221
  %226 = load ptr, ptr %31, align 8, !tbaa !5
  %227 = load i64, ptr %55, align 8, !tbaa !9
  %228 = getelementptr inbounds float, ptr %226, i64 %227
  store float 0.000000e+00, ptr %228, align 4, !tbaa !11
  %229 = load ptr, ptr %32, align 8, !tbaa !5
  %230 = load i64, ptr %55, align 8, !tbaa !9
  %231 = getelementptr inbounds float, ptr %229, i64 %230
  store float 0.000000e+00, ptr %231, align 4, !tbaa !11
  br label %232

232:                                              ; preds = %225
  %233 = load i64, ptr %55, align 8, !tbaa !9
  %234 = add nsw i64 %233, 1
  store i64 %234, ptr %55, align 8, !tbaa !9
  br label %221, !llvm.loop !13

235:                                              ; preds = %221
  store i32 0, ptr %18, align 4
  store i32 1, ptr %69, align 4
  br label %1333

236:                                              ; preds = %214
  %237 = load ptr, ptr %20, align 8, !tbaa !5
  %238 = load i64, ptr %237, align 8, !tbaa !9
  %239 = add nsw i64 %238, 1
  store i64 %239, ptr %59, align 8, !tbaa !9
  %240 = call double @slamch_(ptr noundef @.str.3)
  %241 = fptrunc double %240 to float
  store float %241, ptr %60, align 4, !tbaa !11
  %242 = call double @slamch_(ptr noundef @.str.4)
  %243 = fptrunc double %242 to float
  store float %243, ptr %67, align 4, !tbaa !11
  %244 = load i64, ptr %59, align 8, !tbaa !9
  %245 = sitofp i64 %244 to float
  %246 = load float, ptr %67, align 4, !tbaa !11
  %247 = fmul float %245, %246
  store float %247, ptr %62, align 4, !tbaa !11
  %248 = load float, ptr %62, align 4, !tbaa !11
  %249 = load float, ptr %60, align 4, !tbaa !11
  %250 = fdiv float %248, %249
  store float %250, ptr %63, align 4, !tbaa !11
  %251 = load ptr, ptr %21, align 8, !tbaa !5
  %252 = load i64, ptr %251, align 8, !tbaa !9
  store i64 %252, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %253

253:                                              ; preds = %1329, %236
  %254 = load i64, ptr %55, align 8, !tbaa !9
  %255 = load i64, ptr %44, align 8, !tbaa !9
  %256 = icmp sle i64 %254, %255
  br i1 %256, label %257, label %1332

257:                                              ; preds = %253
  store i64 1, ptr %65, align 8, !tbaa !9
  store float 3.000000e+00, ptr %68, align 4, !tbaa !11
  br label %258

258:                                              ; preds = %958, %257
  %259 = load ptr, ptr %20, align 8, !tbaa !5
  %260 = load ptr, ptr %27, align 8, !tbaa !5
  %261 = load i64, ptr %55, align 8, !tbaa !9
  %262 = load i64, ptr %40, align 8, !tbaa !9
  %263 = mul nsw i64 %261, %262
  %264 = add nsw i64 %263, 1
  %265 = getelementptr inbounds %struct.complex, ptr %260, i64 %264
  %266 = load ptr, ptr %33, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.complex, ptr %266, i64 1
  %268 = call i32 @f2c_ccopy(ptr noundef %259, ptr noundef %265, ptr noundef @c__1, ptr noundef %267, ptr noundef @c__1)
  %269 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 0
  store float -1.000000e+00, ptr %269, align 4, !tbaa !15
  %270 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 1
  store float -0.000000e+00, ptr %270, align 4, !tbaa !17
  %271 = load ptr, ptr %19, align 8, !tbaa !5
  %272 = load ptr, ptr %20, align 8, !tbaa !5
  %273 = load ptr, ptr %22, align 8, !tbaa !5
  %274 = load i64, ptr %37, align 8, !tbaa !9
  %275 = getelementptr inbounds %struct.complex, ptr %273, i64 %274
  %276 = load ptr, ptr %23, align 8, !tbaa !5
  %277 = load ptr, ptr %29, align 8, !tbaa !5
  %278 = load i64, ptr %55, align 8, !tbaa !9
  %279 = load i64, ptr %42, align 8, !tbaa !9
  %280 = mul nsw i64 %278, %279
  %281 = add nsw i64 %280, 1
  %282 = getelementptr inbounds %struct.complex, ptr %277, i64 %281
  %283 = load ptr, ptr %33, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.complex, ptr %283, i64 1
  %285 = call i32 @f2c_chemv(ptr noundef %271, ptr noundef %272, ptr noundef %53, ptr noundef %275, ptr noundef %276, ptr noundef %282, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %284, ptr noundef @c__1)
  %286 = load ptr, ptr %20, align 8, !tbaa !5
  %287 = load i64, ptr %286, align 8, !tbaa !9
  store i64 %287, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %288

288:                                              ; preds = %337, %258
  %289 = load i64, ptr %54, align 8, !tbaa !9
  %290 = load i64, ptr %45, align 8, !tbaa !9
  %291 = icmp sle i64 %289, %290
  br i1 %291, label %292, label %340

292:                                              ; preds = %288
  %293 = load i64, ptr %54, align 8, !tbaa !9
  %294 = load i64, ptr %55, align 8, !tbaa !9
  %295 = load i64, ptr %40, align 8, !tbaa !9
  %296 = mul nsw i64 %294, %295
  %297 = add nsw i64 %293, %296
  store i64 %297, ptr %46, align 8, !tbaa !9
  %298 = load ptr, ptr %27, align 8, !tbaa !5
  %299 = load i64, ptr %46, align 8, !tbaa !9
  %300 = getelementptr inbounds %struct.complex, ptr %298, i64 %299
  %301 = getelementptr inbounds %struct.complex, ptr %300, i32 0, i32 0
  %302 = load float, ptr %301, align 4, !tbaa !15
  store float %302, ptr %49, align 4, !tbaa !11
  %303 = load float, ptr %49, align 4, !tbaa !11
  %304 = fcmp oge float %303, 0.000000e+00
  br i1 %304, label %305, label %307

305:                                              ; preds = %292
  %306 = load float, ptr %49, align 4, !tbaa !11
  br label %310

307:                                              ; preds = %292
  %308 = load float, ptr %49, align 4, !tbaa !11
  %309 = fneg float %308
  br label %310

310:                                              ; preds = %307, %305
  %311 = phi float [ %306, %305 ], [ %309, %307 ]
  %312 = fpext float %311 to double
  %313 = load ptr, ptr %27, align 8, !tbaa !5
  %314 = load i64, ptr %54, align 8, !tbaa !9
  %315 = load i64, ptr %55, align 8, !tbaa !9
  %316 = load i64, ptr %40, align 8, !tbaa !9
  %317 = mul nsw i64 %315, %316
  %318 = add nsw i64 %314, %317
  %319 = getelementptr inbounds %struct.complex, ptr %313, i64 %318
  %320 = call double @r_imag(ptr noundef %319)
  %321 = fptrunc double %320 to float
  store float %321, ptr %50, align 4, !tbaa !11
  %322 = load float, ptr %50, align 4, !tbaa !11
  %323 = fcmp oge float %322, 0.000000e+00
  br i1 %323, label %324, label %326

324:                                              ; preds = %310
  %325 = load float, ptr %50, align 4, !tbaa !11
  br label %329

326:                                              ; preds = %310
  %327 = load float, ptr %50, align 4, !tbaa !11
  %328 = fneg float %327
  br label %329

329:                                              ; preds = %326, %324
  %330 = phi float [ %325, %324 ], [ %328, %326 ]
  %331 = fpext float %330 to double
  %332 = fadd double %312, %331
  %333 = fptrunc double %332 to float
  %334 = load ptr, ptr %34, align 8, !tbaa !5
  %335 = load i64, ptr %54, align 8, !tbaa !9
  %336 = getelementptr inbounds float, ptr %334, i64 %335
  store float %333, ptr %336, align 4, !tbaa !11
  br label %337

337:                                              ; preds = %329
  %338 = load i64, ptr %54, align 8, !tbaa !9
  %339 = add nsw i64 %338, 1
  store i64 %339, ptr %54, align 8, !tbaa !9
  br label %288, !llvm.loop !18

340:                                              ; preds = %288
  %341 = load i64, ptr %66, align 8, !tbaa !9
  %342 = icmp ne i64 %341, 0
  br i1 %342, label %343, label %575

343:                                              ; preds = %340
  %344 = load ptr, ptr %20, align 8, !tbaa !5
  %345 = load i64, ptr %344, align 8, !tbaa !9
  store i64 %345, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %56, align 8, !tbaa !9
  br label %346

346:                                              ; preds = %571, %343
  %347 = load i64, ptr %56, align 8, !tbaa !9
  %348 = load i64, ptr %45, align 8, !tbaa !9
  %349 = icmp sle i64 %347, %348
  br i1 %349, label %350, label %574

350:                                              ; preds = %346
  store float 0.000000e+00, ptr %57, align 4, !tbaa !11
  %351 = load i64, ptr %56, align 8, !tbaa !9
  %352 = load i64, ptr %55, align 8, !tbaa !9
  %353 = load i64, ptr %42, align 8, !tbaa !9
  %354 = mul nsw i64 %352, %353
  %355 = add nsw i64 %351, %354
  store i64 %355, ptr %46, align 8, !tbaa !9
  %356 = load ptr, ptr %29, align 8, !tbaa !5
  %357 = load i64, ptr %46, align 8, !tbaa !9
  %358 = getelementptr inbounds %struct.complex, ptr %356, i64 %357
  %359 = getelementptr inbounds %struct.complex, ptr %358, i32 0, i32 0
  %360 = load float, ptr %359, align 4, !tbaa !15
  store float %360, ptr %49, align 4, !tbaa !11
  %361 = load float, ptr %49, align 4, !tbaa !11
  %362 = fcmp oge float %361, 0.000000e+00
  br i1 %362, label %363, label %365

363:                                              ; preds = %350
  %364 = load float, ptr %49, align 4, !tbaa !11
  br label %368

365:                                              ; preds = %350
  %366 = load float, ptr %49, align 4, !tbaa !11
  %367 = fneg float %366
  br label %368

368:                                              ; preds = %365, %363
  %369 = phi float [ %364, %363 ], [ %367, %365 ]
  %370 = fpext float %369 to double
  %371 = load ptr, ptr %29, align 8, !tbaa !5
  %372 = load i64, ptr %56, align 8, !tbaa !9
  %373 = load i64, ptr %55, align 8, !tbaa !9
  %374 = load i64, ptr %42, align 8, !tbaa !9
  %375 = mul nsw i64 %373, %374
  %376 = add nsw i64 %372, %375
  %377 = getelementptr inbounds %struct.complex, ptr %371, i64 %376
  %378 = call double @r_imag(ptr noundef %377)
  %379 = fptrunc double %378 to float
  store float %379, ptr %50, align 4, !tbaa !11
  %380 = load float, ptr %50, align 4, !tbaa !11
  %381 = fcmp oge float %380, 0.000000e+00
  br i1 %381, label %382, label %384

382:                                              ; preds = %368
  %383 = load float, ptr %50, align 4, !tbaa !11
  br label %387

384:                                              ; preds = %368
  %385 = load float, ptr %50, align 4, !tbaa !11
  %386 = fneg float %385
  br label %387

387:                                              ; preds = %384, %382
  %388 = phi float [ %383, %382 ], [ %386, %384 ]
  %389 = fpext float %388 to double
  %390 = fadd double %370, %389
  %391 = fptrunc double %390 to float
  store float %391, ptr %58, align 4, !tbaa !11
  %392 = load i64, ptr %56, align 8, !tbaa !9
  %393 = sub nsw i64 %392, 1
  store i64 %393, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %394

394:                                              ; preds = %532, %387
  %395 = load i64, ptr %54, align 8, !tbaa !9
  %396 = load i64, ptr %46, align 8, !tbaa !9
  %397 = icmp sle i64 %395, %396
  br i1 %397, label %398, label %535

398:                                              ; preds = %394
  %399 = load i64, ptr %54, align 8, !tbaa !9
  %400 = load i64, ptr %56, align 8, !tbaa !9
  %401 = load i64, ptr %36, align 8, !tbaa !9
  %402 = mul nsw i64 %400, %401
  %403 = add nsw i64 %399, %402
  store i64 %403, ptr %47, align 8, !tbaa !9
  %404 = load ptr, ptr %22, align 8, !tbaa !5
  %405 = load i64, ptr %47, align 8, !tbaa !9
  %406 = getelementptr inbounds %struct.complex, ptr %404, i64 %405
  %407 = getelementptr inbounds %struct.complex, ptr %406, i32 0, i32 0
  %408 = load float, ptr %407, align 4, !tbaa !15
  store float %408, ptr %49, align 4, !tbaa !11
  %409 = load float, ptr %49, align 4, !tbaa !11
  %410 = fcmp oge float %409, 0.000000e+00
  br i1 %410, label %411, label %413

411:                                              ; preds = %398
  %412 = load float, ptr %49, align 4, !tbaa !11
  br label %416

413:                                              ; preds = %398
  %414 = load float, ptr %49, align 4, !tbaa !11
  %415 = fneg float %414
  br label %416

416:                                              ; preds = %413, %411
  %417 = phi float [ %412, %411 ], [ %415, %413 ]
  %418 = fpext float %417 to double
  %419 = load ptr, ptr %22, align 8, !tbaa !5
  %420 = load i64, ptr %54, align 8, !tbaa !9
  %421 = load i64, ptr %56, align 8, !tbaa !9
  %422 = load i64, ptr %36, align 8, !tbaa !9
  %423 = mul nsw i64 %421, %422
  %424 = add nsw i64 %420, %423
  %425 = getelementptr inbounds %struct.complex, ptr %419, i64 %424
  %426 = call double @r_imag(ptr noundef %425)
  %427 = fptrunc double %426 to float
  store float %427, ptr %50, align 4, !tbaa !11
  %428 = load float, ptr %50, align 4, !tbaa !11
  %429 = fcmp oge float %428, 0.000000e+00
  br i1 %429, label %430, label %432

430:                                              ; preds = %416
  %431 = load float, ptr %50, align 4, !tbaa !11
  br label %435

432:                                              ; preds = %416
  %433 = load float, ptr %50, align 4, !tbaa !11
  %434 = fneg float %433
  br label %435

435:                                              ; preds = %432, %430
  %436 = phi float [ %431, %430 ], [ %434, %432 ]
  %437 = fpext float %436 to double
  %438 = fadd double %418, %437
  %439 = load float, ptr %58, align 4, !tbaa !11
  %440 = fpext float %439 to double
  %441 = load ptr, ptr %34, align 8, !tbaa !5
  %442 = load i64, ptr %54, align 8, !tbaa !9
  %443 = getelementptr inbounds float, ptr %441, i64 %442
  %444 = load float, ptr %443, align 4, !tbaa !11
  %445 = fpext float %444 to double
  %446 = call double @llvm.fmuladd.f64(double %438, double %440, double %445)
  %447 = fptrunc double %446 to float
  store float %447, ptr %443, align 4, !tbaa !11
  %448 = load i64, ptr %54, align 8, !tbaa !9
  %449 = load i64, ptr %56, align 8, !tbaa !9
  %450 = load i64, ptr %36, align 8, !tbaa !9
  %451 = mul nsw i64 %449, %450
  %452 = add nsw i64 %448, %451
  store i64 %452, ptr %47, align 8, !tbaa !9
  %453 = load i64, ptr %54, align 8, !tbaa !9
  %454 = load i64, ptr %55, align 8, !tbaa !9
  %455 = load i64, ptr %42, align 8, !tbaa !9
  %456 = mul nsw i64 %454, %455
  %457 = add nsw i64 %453, %456
  store i64 %457, ptr %48, align 8, !tbaa !9
  %458 = load ptr, ptr %22, align 8, !tbaa !5
  %459 = load i64, ptr %47, align 8, !tbaa !9
  %460 = getelementptr inbounds %struct.complex, ptr %458, i64 %459
  %461 = getelementptr inbounds %struct.complex, ptr %460, i32 0, i32 0
  %462 = load float, ptr %461, align 4, !tbaa !15
  store float %462, ptr %49, align 4, !tbaa !11
  %463 = load float, ptr %49, align 4, !tbaa !11
  %464 = fcmp oge float %463, 0.000000e+00
  br i1 %464, label %465, label %467

465:                                              ; preds = %435
  %466 = load float, ptr %49, align 4, !tbaa !11
  br label %470

467:                                              ; preds = %435
  %468 = load float, ptr %49, align 4, !tbaa !11
  %469 = fneg float %468
  br label %470

470:                                              ; preds = %467, %465
  %471 = phi float [ %466, %465 ], [ %469, %467 ]
  %472 = fpext float %471 to double
  %473 = load ptr, ptr %22, align 8, !tbaa !5
  %474 = load i64, ptr %54, align 8, !tbaa !9
  %475 = load i64, ptr %56, align 8, !tbaa !9
  %476 = load i64, ptr %36, align 8, !tbaa !9
  %477 = mul nsw i64 %475, %476
  %478 = add nsw i64 %474, %477
  %479 = getelementptr inbounds %struct.complex, ptr %473, i64 %478
  %480 = call double @r_imag(ptr noundef %479)
  %481 = fptrunc double %480 to float
  store float %481, ptr %50, align 4, !tbaa !11
  %482 = load float, ptr %50, align 4, !tbaa !11
  %483 = fcmp oge float %482, 0.000000e+00
  br i1 %483, label %484, label %486

484:                                              ; preds = %470
  %485 = load float, ptr %50, align 4, !tbaa !11
  br label %489

486:                                              ; preds = %470
  %487 = load float, ptr %50, align 4, !tbaa !11
  %488 = fneg float %487
  br label %489

489:                                              ; preds = %486, %484
  %490 = phi float [ %485, %484 ], [ %488, %486 ]
  %491 = fpext float %490 to double
  %492 = fadd double %472, %491
  %493 = load ptr, ptr %29, align 8, !tbaa !5
  %494 = load i64, ptr %48, align 8, !tbaa !9
  %495 = getelementptr inbounds %struct.complex, ptr %493, i64 %494
  %496 = getelementptr inbounds %struct.complex, ptr %495, i32 0, i32 0
  %497 = load float, ptr %496, align 4, !tbaa !15
  store float %497, ptr %51, align 4, !tbaa !11
  %498 = load float, ptr %51, align 4, !tbaa !11
  %499 = fcmp oge float %498, 0.000000e+00
  br i1 %499, label %500, label %502

500:                                              ; preds = %489
  %501 = load float, ptr %51, align 4, !tbaa !11
  br label %505

502:                                              ; preds = %489
  %503 = load float, ptr %51, align 4, !tbaa !11
  %504 = fneg float %503
  br label %505

505:                                              ; preds = %502, %500
  %506 = phi float [ %501, %500 ], [ %504, %502 ]
  %507 = fpext float %506 to double
  %508 = load ptr, ptr %29, align 8, !tbaa !5
  %509 = load i64, ptr %54, align 8, !tbaa !9
  %510 = load i64, ptr %55, align 8, !tbaa !9
  %511 = load i64, ptr %42, align 8, !tbaa !9
  %512 = mul nsw i64 %510, %511
  %513 = add nsw i64 %509, %512
  %514 = getelementptr inbounds %struct.complex, ptr %508, i64 %513
  %515 = call double @r_imag(ptr noundef %514)
  %516 = fptrunc double %515 to float
  store float %516, ptr %52, align 4, !tbaa !11
  %517 = load float, ptr %52, align 4, !tbaa !11
  %518 = fcmp oge float %517, 0.000000e+00
  br i1 %518, label %519, label %521

519:                                              ; preds = %505
  %520 = load float, ptr %52, align 4, !tbaa !11
  br label %524

521:                                              ; preds = %505
  %522 = load float, ptr %52, align 4, !tbaa !11
  %523 = fneg float %522
  br label %524

524:                                              ; preds = %521, %519
  %525 = phi float [ %520, %519 ], [ %523, %521 ]
  %526 = fpext float %525 to double
  %527 = fadd double %507, %526
  %528 = load float, ptr %57, align 4, !tbaa !11
  %529 = fpext float %528 to double
  %530 = call double @llvm.fmuladd.f64(double %492, double %527, double %529)
  %531 = fptrunc double %530 to float
  store float %531, ptr %57, align 4, !tbaa !11
  br label %532

532:                                              ; preds = %524
  %533 = load i64, ptr %54, align 8, !tbaa !9
  %534 = add nsw i64 %533, 1
  store i64 %534, ptr %54, align 8, !tbaa !9
  br label %394, !llvm.loop !19

535:                                              ; preds = %394
  %536 = load i64, ptr %56, align 8, !tbaa !9
  %537 = load i64, ptr %56, align 8, !tbaa !9
  %538 = load i64, ptr %36, align 8, !tbaa !9
  %539 = mul nsw i64 %537, %538
  %540 = add nsw i64 %536, %539
  store i64 %540, ptr %46, align 8, !tbaa !9
  %541 = load ptr, ptr %34, align 8, !tbaa !5
  %542 = load i64, ptr %56, align 8, !tbaa !9
  %543 = getelementptr inbounds float, ptr %541, i64 %542
  %544 = load float, ptr %543, align 4, !tbaa !11
  %545 = fpext float %544 to double
  %546 = load ptr, ptr %22, align 8, !tbaa !5
  %547 = load i64, ptr %46, align 8, !tbaa !9
  %548 = getelementptr inbounds %struct.complex, ptr %546, i64 %547
  %549 = getelementptr inbounds %struct.complex, ptr %548, i32 0, i32 0
  %550 = load float, ptr %549, align 4, !tbaa !15
  store float %550, ptr %49, align 4, !tbaa !11
  %551 = load float, ptr %49, align 4, !tbaa !11
  %552 = fcmp oge float %551, 0.000000e+00
  br i1 %552, label %553, label %555

553:                                              ; preds = %535
  %554 = load float, ptr %49, align 4, !tbaa !11
  br label %558

555:                                              ; preds = %535
  %556 = load float, ptr %49, align 4, !tbaa !11
  %557 = fneg float %556
  br label %558

558:                                              ; preds = %555, %553
  %559 = phi float [ %554, %553 ], [ %557, %555 ]
  %560 = fpext float %559 to double
  %561 = load float, ptr %58, align 4, !tbaa !11
  %562 = fpext float %561 to double
  %563 = call double @llvm.fmuladd.f64(double %560, double %562, double %545)
  %564 = load float, ptr %57, align 4, !tbaa !11
  %565 = fpext float %564 to double
  %566 = fadd double %563, %565
  %567 = fptrunc double %566 to float
  %568 = load ptr, ptr %34, align 8, !tbaa !5
  %569 = load i64, ptr %56, align 8, !tbaa !9
  %570 = getelementptr inbounds float, ptr %568, i64 %569
  store float %567, ptr %570, align 4, !tbaa !11
  br label %571

571:                                              ; preds = %558
  %572 = load i64, ptr %56, align 8, !tbaa !9
  %573 = add nsw i64 %572, 1
  store i64 %573, ptr %56, align 8, !tbaa !9
  br label %346, !llvm.loop !20

574:                                              ; preds = %346
  br label %809

575:                                              ; preds = %340
  %576 = load ptr, ptr %20, align 8, !tbaa !5
  %577 = load i64, ptr %576, align 8, !tbaa !9
  store i64 %577, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %56, align 8, !tbaa !9
  br label %578

578:                                              ; preds = %805, %575
  %579 = load i64, ptr %56, align 8, !tbaa !9
  %580 = load i64, ptr %45, align 8, !tbaa !9
  %581 = icmp sle i64 %579, %580
  br i1 %581, label %582, label %808

582:                                              ; preds = %578
  store float 0.000000e+00, ptr %57, align 4, !tbaa !11
  %583 = load i64, ptr %56, align 8, !tbaa !9
  %584 = load i64, ptr %55, align 8, !tbaa !9
  %585 = load i64, ptr %42, align 8, !tbaa !9
  %586 = mul nsw i64 %584, %585
  %587 = add nsw i64 %583, %586
  store i64 %587, ptr %46, align 8, !tbaa !9
  %588 = load ptr, ptr %29, align 8, !tbaa !5
  %589 = load i64, ptr %46, align 8, !tbaa !9
  %590 = getelementptr inbounds %struct.complex, ptr %588, i64 %589
  %591 = getelementptr inbounds %struct.complex, ptr %590, i32 0, i32 0
  %592 = load float, ptr %591, align 4, !tbaa !15
  store float %592, ptr %49, align 4, !tbaa !11
  %593 = load float, ptr %49, align 4, !tbaa !11
  %594 = fcmp oge float %593, 0.000000e+00
  br i1 %594, label %595, label %597

595:                                              ; preds = %582
  %596 = load float, ptr %49, align 4, !tbaa !11
  br label %600

597:                                              ; preds = %582
  %598 = load float, ptr %49, align 4, !tbaa !11
  %599 = fneg float %598
  br label %600

600:                                              ; preds = %597, %595
  %601 = phi float [ %596, %595 ], [ %599, %597 ]
  %602 = fpext float %601 to double
  %603 = load ptr, ptr %29, align 8, !tbaa !5
  %604 = load i64, ptr %56, align 8, !tbaa !9
  %605 = load i64, ptr %55, align 8, !tbaa !9
  %606 = load i64, ptr %42, align 8, !tbaa !9
  %607 = mul nsw i64 %605, %606
  %608 = add nsw i64 %604, %607
  %609 = getelementptr inbounds %struct.complex, ptr %603, i64 %608
  %610 = call double @r_imag(ptr noundef %609)
  %611 = fptrunc double %610 to float
  store float %611, ptr %50, align 4, !tbaa !11
  %612 = load float, ptr %50, align 4, !tbaa !11
  %613 = fcmp oge float %612, 0.000000e+00
  br i1 %613, label %614, label %616

614:                                              ; preds = %600
  %615 = load float, ptr %50, align 4, !tbaa !11
  br label %619

616:                                              ; preds = %600
  %617 = load float, ptr %50, align 4, !tbaa !11
  %618 = fneg float %617
  br label %619

619:                                              ; preds = %616, %614
  %620 = phi float [ %615, %614 ], [ %618, %616 ]
  %621 = fpext float %620 to double
  %622 = fadd double %602, %621
  %623 = fptrunc double %622 to float
  store float %623, ptr %58, align 4, !tbaa !11
  %624 = load i64, ptr %56, align 8, !tbaa !9
  %625 = load i64, ptr %56, align 8, !tbaa !9
  %626 = load i64, ptr %36, align 8, !tbaa !9
  %627 = mul nsw i64 %625, %626
  %628 = add nsw i64 %624, %627
  store i64 %628, ptr %46, align 8, !tbaa !9
  %629 = load ptr, ptr %22, align 8, !tbaa !5
  %630 = load i64, ptr %46, align 8, !tbaa !9
  %631 = getelementptr inbounds %struct.complex, ptr %629, i64 %630
  %632 = getelementptr inbounds %struct.complex, ptr %631, i32 0, i32 0
  %633 = load float, ptr %632, align 4, !tbaa !15
  store float %633, ptr %49, align 4, !tbaa !11
  %634 = load float, ptr %49, align 4, !tbaa !11
  %635 = fcmp oge float %634, 0.000000e+00
  br i1 %635, label %636, label %638

636:                                              ; preds = %619
  %637 = load float, ptr %49, align 4, !tbaa !11
  br label %641

638:                                              ; preds = %619
  %639 = load float, ptr %49, align 4, !tbaa !11
  %640 = fneg float %639
  br label %641

641:                                              ; preds = %638, %636
  %642 = phi float [ %637, %636 ], [ %640, %638 ]
  %643 = fpext float %642 to double
  %644 = load float, ptr %58, align 4, !tbaa !11
  %645 = fpext float %644 to double
  %646 = load ptr, ptr %34, align 8, !tbaa !5
  %647 = load i64, ptr %56, align 8, !tbaa !9
  %648 = getelementptr inbounds float, ptr %646, i64 %647
  %649 = load float, ptr %648, align 4, !tbaa !11
  %650 = fpext float %649 to double
  %651 = call double @llvm.fmuladd.f64(double %643, double %645, double %650)
  %652 = fptrunc double %651 to float
  store float %652, ptr %648, align 4, !tbaa !11
  %653 = load ptr, ptr %20, align 8, !tbaa !5
  %654 = load i64, ptr %653, align 8, !tbaa !9
  store i64 %654, ptr %46, align 8, !tbaa !9
  %655 = load i64, ptr %56, align 8, !tbaa !9
  %656 = add nsw i64 %655, 1
  store i64 %656, ptr %54, align 8, !tbaa !9
  br label %657

657:                                              ; preds = %795, %641
  %658 = load i64, ptr %54, align 8, !tbaa !9
  %659 = load i64, ptr %46, align 8, !tbaa !9
  %660 = icmp sle i64 %658, %659
  br i1 %660, label %661, label %798

661:                                              ; preds = %657
  %662 = load i64, ptr %54, align 8, !tbaa !9
  %663 = load i64, ptr %56, align 8, !tbaa !9
  %664 = load i64, ptr %36, align 8, !tbaa !9
  %665 = mul nsw i64 %663, %664
  %666 = add nsw i64 %662, %665
  store i64 %666, ptr %47, align 8, !tbaa !9
  %667 = load ptr, ptr %22, align 8, !tbaa !5
  %668 = load i64, ptr %47, align 8, !tbaa !9
  %669 = getelementptr inbounds %struct.complex, ptr %667, i64 %668
  %670 = getelementptr inbounds %struct.complex, ptr %669, i32 0, i32 0
  %671 = load float, ptr %670, align 4, !tbaa !15
  store float %671, ptr %49, align 4, !tbaa !11
  %672 = load float, ptr %49, align 4, !tbaa !11
  %673 = fcmp oge float %672, 0.000000e+00
  br i1 %673, label %674, label %676

674:                                              ; preds = %661
  %675 = load float, ptr %49, align 4, !tbaa !11
  br label %679

676:                                              ; preds = %661
  %677 = load float, ptr %49, align 4, !tbaa !11
  %678 = fneg float %677
  br label %679

679:                                              ; preds = %676, %674
  %680 = phi float [ %675, %674 ], [ %678, %676 ]
  %681 = fpext float %680 to double
  %682 = load ptr, ptr %22, align 8, !tbaa !5
  %683 = load i64, ptr %54, align 8, !tbaa !9
  %684 = load i64, ptr %56, 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
  %688 = getelementptr inbounds %struct.complex, ptr %682, i64 %687
  %689 = call double @r_imag(ptr noundef %688)
  %690 = fptrunc double %689 to float
  store float %690, ptr %50, align 4, !tbaa !11
  %691 = load float, ptr %50, align 4, !tbaa !11
  %692 = fcmp oge float %691, 0.000000e+00
  br i1 %692, label %693, label %695

693:                                              ; preds = %679
  %694 = load float, ptr %50, align 4, !tbaa !11
  br label %698

695:                                              ; preds = %679
  %696 = load float, ptr %50, align 4, !tbaa !11
  %697 = fneg float %696
  br label %698

698:                                              ; preds = %695, %693
  %699 = phi float [ %694, %693 ], [ %697, %695 ]
  %700 = fpext float %699 to double
  %701 = fadd double %681, %700
  %702 = load float, ptr %58, align 4, !tbaa !11
  %703 = fpext float %702 to double
  %704 = load ptr, ptr %34, align 8, !tbaa !5
  %705 = load i64, ptr %54, align 8, !tbaa !9
  %706 = getelementptr inbounds float, ptr %704, i64 %705
  %707 = load float, ptr %706, align 4, !tbaa !11
  %708 = fpext float %707 to double
  %709 = call double @llvm.fmuladd.f64(double %701, double %703, double %708)
  %710 = fptrunc double %709 to float
  store float %710, ptr %706, align 4, !tbaa !11
  %711 = load i64, ptr %54, align 8, !tbaa !9
  %712 = load i64, ptr %56, align 8, !tbaa !9
  %713 = load i64, ptr %36, align 8, !tbaa !9
  %714 = mul nsw i64 %712, %713
  %715 = add nsw i64 %711, %714
  store i64 %715, ptr %47, align 8, !tbaa !9
  %716 = load i64, ptr %54, align 8, !tbaa !9
  %717 = load i64, ptr %55, align 8, !tbaa !9
  %718 = load i64, ptr %42, align 8, !tbaa !9
  %719 = mul nsw i64 %717, %718
  %720 = add nsw i64 %716, %719
  store i64 %720, ptr %48, align 8, !tbaa !9
  %721 = load ptr, ptr %22, align 8, !tbaa !5
  %722 = load i64, ptr %47, align 8, !tbaa !9
  %723 = getelementptr inbounds %struct.complex, ptr %721, i64 %722
  %724 = getelementptr inbounds %struct.complex, ptr %723, i32 0, i32 0
  %725 = load float, ptr %724, align 4, !tbaa !15
  store float %725, ptr %49, align 4, !tbaa !11
  %726 = load float, ptr %49, align 4, !tbaa !11
  %727 = fcmp oge float %726, 0.000000e+00
  br i1 %727, label %728, label %730

728:                                              ; preds = %698
  %729 = load float, ptr %49, align 4, !tbaa !11
  br label %733

730:                                              ; preds = %698
  %731 = load float, ptr %49, align 4, !tbaa !11
  %732 = fneg float %731
  br label %733

733:                                              ; preds = %730, %728
  %734 = phi float [ %729, %728 ], [ %732, %730 ]
  %735 = fpext float %734 to double
  %736 = load ptr, ptr %22, align 8, !tbaa !5
  %737 = load i64, ptr %54, align 8, !tbaa !9
  %738 = load i64, ptr %56, align 8, !tbaa !9
  %739 = load i64, ptr %36, align 8, !tbaa !9
  %740 = mul nsw i64 %738, %739
  %741 = add nsw i64 %737, %740
  %742 = getelementptr inbounds %struct.complex, ptr %736, i64 %741
  %743 = call double @r_imag(ptr noundef %742)
  %744 = fptrunc double %743 to float
  store float %744, ptr %50, align 4, !tbaa !11
  %745 = load float, ptr %50, align 4, !tbaa !11
  %746 = fcmp oge float %745, 0.000000e+00
  br i1 %746, label %747, label %749

747:                                              ; preds = %733
  %748 = load float, ptr %50, align 4, !tbaa !11
  br label %752

749:                                              ; preds = %733
  %750 = load float, ptr %50, align 4, !tbaa !11
  %751 = fneg float %750
  br label %752

752:                                              ; preds = %749, %747
  %753 = phi float [ %748, %747 ], [ %751, %749 ]
  %754 = fpext float %753 to double
  %755 = fadd double %735, %754
  %756 = load ptr, ptr %29, align 8, !tbaa !5
  %757 = load i64, ptr %48, align 8, !tbaa !9
  %758 = getelementptr inbounds %struct.complex, ptr %756, i64 %757
  %759 = getelementptr inbounds %struct.complex, ptr %758, i32 0, i32 0
  %760 = load float, ptr %759, align 4, !tbaa !15
  store float %760, ptr %51, align 4, !tbaa !11
  %761 = load float, ptr %51, align 4, !tbaa !11
  %762 = fcmp oge float %761, 0.000000e+00
  br i1 %762, label %763, label %765

763:                                              ; preds = %752
  %764 = load float, ptr %51, align 4, !tbaa !11
  br label %768

765:                                              ; preds = %752
  %766 = load float, ptr %51, align 4, !tbaa !11
  %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 = load ptr, ptr %29, align 8, !tbaa !5
  %772 = load i64, ptr %54, align 8, !tbaa !9
  %773 = load i64, ptr %55, align 8, !tbaa !9
  %774 = load i64, ptr %42, align 8, !tbaa !9
  %775 = mul nsw i64 %773, %774
  %776 = add nsw i64 %772, %775
  %777 = getelementptr inbounds %struct.complex, ptr %771, i64 %776
  %778 = call double @r_imag(ptr noundef %777)
  %779 = fptrunc double %778 to float
  store float %779, ptr %52, align 4, !tbaa !11
  %780 = load float, ptr %52, align 4, !tbaa !11
  %781 = fcmp oge float %780, 0.000000e+00
  br i1 %781, label %782, label %784

782:                                              ; preds = %768
  %783 = load float, ptr %52, align 4, !tbaa !11
  br label %787

784:                                              ; preds = %768
  %785 = load float, ptr %52, align 4, !tbaa !11
  %786 = fneg float %785
  br label %787

787:                                              ; preds = %784, %782
  %788 = phi float [ %783, %782 ], [ %786, %784 ]
  %789 = fpext float %788 to double
  %790 = fadd double %770, %789
  %791 = load float, ptr %57, align 4, !tbaa !11
  %792 = fpext float %791 to double
  %793 = call double @llvm.fmuladd.f64(double %755, double %790, double %792)
  %794 = fptrunc double %793 to float
  store float %794, ptr %57, align 4, !tbaa !11
  br label %795

795:                                              ; preds = %787
  %796 = load i64, ptr %54, align 8, !tbaa !9
  %797 = add nsw i64 %796, 1
  store i64 %797, ptr %54, align 8, !tbaa !9
  br label %657, !llvm.loop !21

798:                                              ; preds = %657
  %799 = load float, ptr %57, align 4, !tbaa !11
  %800 = load ptr, ptr %34, align 8, !tbaa !5
  %801 = load i64, ptr %56, align 8, !tbaa !9
  %802 = getelementptr inbounds float, ptr %800, i64 %801
  %803 = load float, ptr %802, align 4, !tbaa !11
  %804 = fadd float %803, %799
  store float %804, ptr %802, align 4, !tbaa !11
  br label %805

805:                                              ; preds = %798
  %806 = load i64, ptr %56, align 8, !tbaa !9
  %807 = add nsw i64 %806, 1
  store i64 %807, ptr %56, align 8, !tbaa !9
  br label %578, !llvm.loop !22

808:                                              ; preds = %578
  br label %809

809:                                              ; preds = %808, %574
  store float 0.000000e+00, ptr %57, align 4, !tbaa !11
  %810 = load ptr, ptr %20, align 8, !tbaa !5
  %811 = load i64, ptr %810, align 8, !tbaa !9
  store i64 %811, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %812

812:                                              ; preds = %933, %809
  %813 = load i64, ptr %54, align 8, !tbaa !9
  %814 = load i64, ptr %45, align 8, !tbaa !9
  %815 = icmp sle i64 %813, %814
  br i1 %815, label %816, label %936

816:                                              ; preds = %812
  %817 = load ptr, ptr %34, align 8, !tbaa !5
  %818 = load i64, ptr %54, align 8, !tbaa !9
  %819 = getelementptr inbounds float, ptr %817, i64 %818
  %820 = load float, ptr %819, align 4, !tbaa !11
  %821 = load float, ptr %63, align 4, !tbaa !11
  %822 = fcmp ogt float %820, %821
  br i1 %822, label %823, label %875

823:                                              ; preds = %816
  %824 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %824, ptr %46, align 8, !tbaa !9
  %825 = load float, ptr %57, align 4, !tbaa !11
  store float %825, ptr %51, align 4, !tbaa !11
  %826 = load ptr, ptr %33, align 8, !tbaa !5
  %827 = load i64, ptr %46, align 8, !tbaa !9
  %828 = getelementptr inbounds %struct.complex, ptr %826, i64 %827
  %829 = getelementptr inbounds %struct.complex, ptr %828, i32 0, i32 0
  %830 = load float, ptr %829, align 4, !tbaa !15
  store float %830, ptr %49, align 4, !tbaa !11
  %831 = load float, ptr %49, align 4, !tbaa !11
  %832 = fcmp oge float %831, 0.000000e+00
  br i1 %832, label %833, label %835

833:                                              ; preds = %823
  %834 = load float, ptr %49, align 4, !tbaa !11
  br label %838

835:                                              ; preds = %823
  %836 = load float, ptr %49, align 4, !tbaa !11
  %837 = fneg float %836
  br label %838

838:                                              ; preds = %835, %833
  %839 = phi float [ %834, %833 ], [ %837, %835 ]
  %840 = fpext float %839 to double
  %841 = load ptr, ptr %33, align 8, !tbaa !5
  %842 = load i64, ptr %54, align 8, !tbaa !9
  %843 = getelementptr inbounds %struct.complex, ptr %841, i64 %842
  %844 = call double @r_imag(ptr noundef %843)
  %845 = fptrunc double %844 to float
  store float %845, ptr %50, align 4, !tbaa !11
  %846 = load float, ptr %50, align 4, !tbaa !11
  %847 = fcmp oge float %846, 0.000000e+00
  br i1 %847, label %848, label %850

848:                                              ; preds = %838
  %849 = load float, ptr %50, align 4, !tbaa !11
  br label %853

850:                                              ; preds = %838
  %851 = load float, ptr %50, align 4, !tbaa !11
  %852 = fneg float %851
  br label %853

853:                                              ; preds = %850, %848
  %854 = phi float [ %849, %848 ], [ %852, %850 ]
  %855 = fpext float %854 to double
  %856 = fadd double %840, %855
  %857 = load ptr, ptr %34, align 8, !tbaa !5
  %858 = load i64, ptr %54, align 8, !tbaa !9
  %859 = getelementptr inbounds float, ptr %857, i64 %858
  %860 = load float, ptr %859, align 4, !tbaa !11
  %861 = fpext float %860 to double
  %862 = fdiv double %856, %861
  %863 = fptrunc double %862 to float
  store float %863, ptr %52, align 4, !tbaa !11
  %864 = load float, ptr %51, align 4, !tbaa !11
  %865 = load float, ptr %52, align 4, !tbaa !11
  %866 = fcmp oge float %864, %865
  br i1 %866, label %867, label %869

867:                                              ; preds = %853
  %868 = load float, ptr %51, align 4, !tbaa !11
  br label %871

869:                                              ; preds = %853
  %870 = load float, ptr %52, align 4, !tbaa !11
  br label %871

871:                                              ; preds = %869, %867
  %872 = phi float [ %868, %867 ], [ %870, %869 ]
  %873 = fpext float %872 to double
  %874 = fptrunc double %873 to float
  store float %874, ptr %57, align 4, !tbaa !11
  br label %932

875:                                              ; preds = %816
  %876 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %876, ptr %46, align 8, !tbaa !9
  %877 = load float, ptr %57, align 4, !tbaa !11
  store float %877, ptr %51, align 4, !tbaa !11
  %878 = load ptr, ptr %33, align 8, !tbaa !5
  %879 = load i64, ptr %46, align 8, !tbaa !9
  %880 = getelementptr inbounds %struct.complex, ptr %878, i64 %879
  %881 = getelementptr inbounds %struct.complex, ptr %880, i32 0, i32 0
  %882 = load float, ptr %881, align 4, !tbaa !15
  store float %882, ptr %49, align 4, !tbaa !11
  %883 = load float, ptr %49, align 4, !tbaa !11
  %884 = fcmp oge float %883, 0.000000e+00
  br i1 %884, label %885, label %887

885:                                              ; preds = %875
  %886 = load float, ptr %49, align 4, !tbaa !11
  br label %890

887:                                              ; preds = %875
  %888 = load float, ptr %49, align 4, !tbaa !11
  %889 = fneg float %888
  br label %890

890:                                              ; preds = %887, %885
  %891 = phi float [ %886, %885 ], [ %889, %887 ]
  %892 = fpext float %891 to double
  %893 = load ptr, ptr %33, align 8, !tbaa !5
  %894 = load i64, ptr %54, align 8, !tbaa !9
  %895 = getelementptr inbounds %struct.complex, ptr %893, i64 %894
  %896 = call double @r_imag(ptr noundef %895)
  %897 = fptrunc double %896 to float
  store float %897, ptr %50, align 4, !tbaa !11
  %898 = load float, ptr %50, align 4, !tbaa !11
  %899 = fcmp oge float %898, 0.000000e+00
  br i1 %899, label %900, label %902

900:                                              ; preds = %890
  %901 = load float, ptr %50, align 4, !tbaa !11
  br label %905

902:                                              ; preds = %890
  %903 = load float, ptr %50, align 4, !tbaa !11
  %904 = fneg float %903
  br label %905

905:                                              ; preds = %902, %900
  %906 = phi float [ %901, %900 ], [ %904, %902 ]
  %907 = fpext float %906 to double
  %908 = fadd double %892, %907
  %909 = load float, ptr %62, align 4, !tbaa !11
  %910 = fpext float %909 to double
  %911 = fadd double %908, %910
  %912 = load ptr, ptr %34, align 8, !tbaa !5
  %913 = load i64, ptr %54, align 8, !tbaa !9
  %914 = getelementptr inbounds float, ptr %912, i64 %913
  %915 = load float, ptr %914, align 4, !tbaa !11
  %916 = load float, ptr %62, align 4, !tbaa !11
  %917 = fadd float %915, %916
  %918 = fpext float %917 to double
  %919 = fdiv double %911, %918
  %920 = fptrunc double %919 to float
  store float %920, ptr %52, align 4, !tbaa !11
  %921 = load float, ptr %51, align 4, !tbaa !11
  %922 = load float, ptr %52, align 4, !tbaa !11
  %923 = fcmp oge float %921, %922
  br i1 %923, label %924, label %926

924:                                              ; preds = %905
  %925 = load float, ptr %51, align 4, !tbaa !11
  br label %928

926:                                              ; preds = %905
  %927 = load float, ptr %52, align 4, !tbaa !11
  br label %928

928:                                              ; preds = %926, %924
  %929 = phi float [ %925, %924 ], [ %927, %926 ]
  %930 = fpext float %929 to double
  %931 = fptrunc double %930 to float
  store float %931, ptr %57, align 4, !tbaa !11
  br label %932

932:                                              ; preds = %928, %871
  br label %933

933:                                              ; preds = %932
  %934 = load i64, ptr %54, align 8, !tbaa !9
  %935 = add nsw i64 %934, 1
  store i64 %935, ptr %54, align 8, !tbaa !9
  br label %812, !llvm.loop !23

936:                                              ; preds = %812
  %937 = load float, ptr %57, align 4, !tbaa !11
  %938 = load ptr, ptr %32, align 8, !tbaa !5
  %939 = load i64, ptr %55, align 8, !tbaa !9
  %940 = getelementptr inbounds float, ptr %938, i64 %939
  store float %937, ptr %940, align 4, !tbaa !11
  %941 = load ptr, ptr %32, align 8, !tbaa !5
  %942 = load i64, ptr %55, align 8, !tbaa !9
  %943 = getelementptr inbounds float, ptr %941, i64 %942
  %944 = load float, ptr %943, align 4, !tbaa !11
  %945 = load float, ptr %60, align 4, !tbaa !11
  %946 = fcmp ogt float %944, %945
  br i1 %946, label %947, label %988

947:                                              ; preds = %936
  %948 = load ptr, ptr %32, align 8, !tbaa !5
  %949 = load i64, ptr %55, align 8, !tbaa !9
  %950 = getelementptr inbounds float, ptr %948, i64 %949
  %951 = load float, ptr %950, align 4, !tbaa !11
  %952 = fmul float %951, 2.000000e+00
  %953 = load float, ptr %68, align 4, !tbaa !11
  %954 = fcmp ole float %952, %953
  br i1 %954, label %955, label %988

955:                                              ; preds = %947
  %956 = load i64, ptr %65, align 8, !tbaa !9
  %957 = icmp sle i64 %956, 5
  br i1 %957, label %958, label %988

958:                                              ; preds = %955
  %959 = load ptr, ptr %19, align 8, !tbaa !5
  %960 = load ptr, ptr %20, align 8, !tbaa !5
  %961 = load ptr, ptr %24, align 8, !tbaa !5
  %962 = load i64, ptr %39, align 8, !tbaa !9
  %963 = getelementptr inbounds %struct.complex, ptr %961, i64 %962
  %964 = load ptr, ptr %25, align 8, !tbaa !5
  %965 = load ptr, ptr %26, align 8, !tbaa !5
  %966 = getelementptr inbounds i64, ptr %965, i64 1
  %967 = load ptr, ptr %33, align 8, !tbaa !5
  %968 = getelementptr inbounds %struct.complex, ptr %967, i64 1
  %969 = load ptr, ptr %20, align 8, !tbaa !5
  %970 = load ptr, ptr %35, align 8, !tbaa !5
  %971 = call i32 @chetrs_(ptr noundef %959, ptr noundef %960, ptr noundef @c__1, ptr noundef %963, ptr noundef %964, ptr noundef %966, ptr noundef %968, ptr noundef %969, ptr noundef %970)
  %972 = load ptr, ptr %20, align 8, !tbaa !5
  %973 = load ptr, ptr %33, align 8, !tbaa !5
  %974 = getelementptr inbounds %struct.complex, ptr %973, i64 1
  %975 = load ptr, ptr %29, align 8, !tbaa !5
  %976 = load i64, ptr %55, align 8, !tbaa !9
  %977 = load i64, ptr %42, align 8, !tbaa !9
  %978 = mul nsw i64 %976, %977
  %979 = add nsw i64 %978, 1
  %980 = getelementptr inbounds %struct.complex, ptr %975, i64 %979
  %981 = call i32 @f2c_caxpy(ptr noundef %972, ptr noundef @c_b1, ptr noundef %974, ptr noundef @c__1, ptr noundef %980, ptr noundef @c__1)
  %982 = load ptr, ptr %32, align 8, !tbaa !5
  %983 = load i64, ptr %55, align 8, !tbaa !9
  %984 = getelementptr inbounds float, ptr %982, i64 %983
  %985 = load float, ptr %984, align 4, !tbaa !11
  store float %985, ptr %68, align 4, !tbaa !11
  %986 = load i64, ptr %65, align 8, !tbaa !9
  %987 = add nsw i64 %986, 1
  store i64 %987, ptr %65, align 8, !tbaa !9
  br label %258

988:                                              ; preds = %955, %947, %936
  %989 = load ptr, ptr %20, align 8, !tbaa !5
  %990 = load i64, ptr %989, align 8, !tbaa !9
  store i64 %990, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %991

991:                                              ; preds = %1102, %988
  %992 = load i64, ptr %54, align 8, !tbaa !9
  %993 = load i64, ptr %45, align 8, !tbaa !9
  %994 = icmp sle i64 %992, %993
  br i1 %994, label %995, label %1105

995:                                              ; preds = %991
  %996 = load ptr, ptr %34, align 8, !tbaa !5
  %997 = load i64, ptr %54, align 8, !tbaa !9
  %998 = getelementptr inbounds float, ptr %996, i64 %997
  %999 = load float, ptr %998, align 4, !tbaa !11
  %1000 = load float, ptr %63, align 4, !tbaa !11
  %1001 = fcmp ogt float %999, %1000
  br i1 %1001, label %1002, label %1050

1002:                                             ; preds = %995
  %1003 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1003, ptr %46, align 8, !tbaa !9
  %1004 = load ptr, ptr %33, align 8, !tbaa !5
  %1005 = load i64, ptr %46, align 8, !tbaa !9
  %1006 = getelementptr inbounds %struct.complex, ptr %1004, i64 %1005
  %1007 = getelementptr inbounds %struct.complex, ptr %1006, i32 0, i32 0
  %1008 = load float, ptr %1007, align 4, !tbaa !15
  store float %1008, ptr %49, align 4, !tbaa !11
  %1009 = load float, ptr %49, align 4, !tbaa !11
  %1010 = fcmp oge float %1009, 0.000000e+00
  br i1 %1010, label %1011, label %1013

1011:                                             ; preds = %1002
  %1012 = load float, ptr %49, align 4, !tbaa !11
  br label %1016

1013:                                             ; preds = %1002
  %1014 = load float, ptr %49, align 4, !tbaa !11
  %1015 = fneg float %1014
  br label %1016

1016:                                             ; preds = %1013, %1011
  %1017 = phi float [ %1012, %1011 ], [ %1015, %1013 ]
  %1018 = fpext float %1017 to double
  %1019 = load ptr, ptr %33, align 8, !tbaa !5
  %1020 = load i64, ptr %54, align 8, !tbaa !9
  %1021 = getelementptr inbounds %struct.complex, ptr %1019, i64 %1020
  %1022 = call double @r_imag(ptr noundef %1021)
  %1023 = fptrunc double %1022 to float
  store float %1023, ptr %50, align 4, !tbaa !11
  %1024 = load float, ptr %50, align 4, !tbaa !11
  %1025 = fcmp oge float %1024, 0.000000e+00
  br i1 %1025, label %1026, label %1028

1026:                                             ; preds = %1016
  %1027 = load float, ptr %50, align 4, !tbaa !11
  br label %1031

1028:                                             ; preds = %1016
  %1029 = load float, ptr %50, align 4, !tbaa !11
  %1030 = fneg float %1029
  br label %1031

1031:                                             ; preds = %1028, %1026
  %1032 = phi float [ %1027, %1026 ], [ %1030, %1028 ]
  %1033 = fpext float %1032 to double
  %1034 = fadd double %1018, %1033
  %1035 = load i64, ptr %59, align 8, !tbaa !9
  %1036 = sitofp i64 %1035 to float
  %1037 = load float, ptr %60, align 4, !tbaa !11
  %1038 = fmul float %1036, %1037
  %1039 = load ptr, ptr %34, align 8, !tbaa !5
  %1040 = load i64, ptr %54, align 8, !tbaa !9
  %1041 = getelementptr inbounds float, ptr %1039, i64 %1040
  %1042 = load float, ptr %1041, align 4, !tbaa !11
  %1043 = fmul float %1038, %1042
  %1044 = fpext float %1043 to double
  %1045 = fadd double %1034, %1044
  %1046 = fptrunc double %1045 to float
  %1047 = load ptr, ptr %34, align 8, !tbaa !5
  %1048 = load i64, ptr %54, align 8, !tbaa !9
  %1049 = getelementptr inbounds float, ptr %1047, i64 %1048
  store float %1046, ptr %1049, align 4, !tbaa !11
  br label %1101

1050:                                             ; preds = %995
  %1051 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1051, ptr %46, align 8, !tbaa !9
  %1052 = load ptr, ptr %33, align 8, !tbaa !5
  %1053 = load i64, ptr %46, align 8, !tbaa !9
  %1054 = getelementptr inbounds %struct.complex, ptr %1052, i64 %1053
  %1055 = getelementptr inbounds %struct.complex, ptr %1054, i32 0, i32 0
  %1056 = load float, ptr %1055, align 4, !tbaa !15
  store float %1056, ptr %49, align 4, !tbaa !11
  %1057 = load float, ptr %49, align 4, !tbaa !11
  %1058 = fcmp oge float %1057, 0.000000e+00
  br i1 %1058, label %1059, label %1061

1059:                                             ; preds = %1050
  %1060 = load float, ptr %49, align 4, !tbaa !11
  br label %1064

1061:                                             ; preds = %1050
  %1062 = load float, ptr %49, align 4, !tbaa !11
  %1063 = fneg float %1062
  br label %1064

1064:                                             ; preds = %1061, %1059
  %1065 = phi float [ %1060, %1059 ], [ %1063, %1061 ]
  %1066 = fpext float %1065 to double
  %1067 = load ptr, ptr %33, align 8, !tbaa !5
  %1068 = load i64, ptr %54, align 8, !tbaa !9
  %1069 = getelementptr inbounds %struct.complex, ptr %1067, i64 %1068
  %1070 = call double @r_imag(ptr noundef %1069)
  %1071 = fptrunc double %1070 to float
  store float %1071, ptr %50, align 4, !tbaa !11
  %1072 = load float, ptr %50, align 4, !tbaa !11
  %1073 = fcmp oge float %1072, 0.000000e+00
  br i1 %1073, label %1074, label %1076

1074:                                             ; preds = %1064
  %1075 = load float, ptr %50, align 4, !tbaa !11
  br label %1079

1076:                                             ; preds = %1064
  %1077 = load float, ptr %50, align 4, !tbaa !11
  %1078 = fneg float %1077
  br label %1079

1079:                                             ; preds = %1076, %1074
  %1080 = phi float [ %1075, %1074 ], [ %1078, %1076 ]
  %1081 = fpext float %1080 to double
  %1082 = fadd double %1066, %1081
  %1083 = load i64, ptr %59, align 8, !tbaa !9
  %1084 = sitofp i64 %1083 to float
  %1085 = load float, ptr %60, align 4, !tbaa !11
  %1086 = fmul float %1084, %1085
  %1087 = load ptr, ptr %34, align 8, !tbaa !5
  %1088 = load i64, ptr %54, align 8, !tbaa !9
  %1089 = getelementptr inbounds float, ptr %1087, i64 %1088
  %1090 = load float, ptr %1089, align 4, !tbaa !11
  %1091 = fmul float %1086, %1090
  %1092 = fpext float %1091 to double
  %1093 = fadd double %1082, %1092
  %1094 = load float, ptr %62, align 4, !tbaa !11
  %1095 = fpext float %1094 to double
  %1096 = fadd double %1093, %1095
  %1097 = fptrunc double %1096 to float
  %1098 = load ptr, ptr %34, align 8, !tbaa !5
  %1099 = load i64, ptr %54, align 8, !tbaa !9
  %1100 = getelementptr inbounds float, ptr %1098, i64 %1099
  store float %1097, ptr %1100, align 4, !tbaa !11
  br label %1101

1101:                                             ; preds = %1079, %1031
  br label %1102

1102:                                             ; preds = %1101
  %1103 = load i64, ptr %54, align 8, !tbaa !9
  %1104 = add nsw i64 %1103, 1
  store i64 %1104, ptr %54, align 8, !tbaa !9
  br label %991, !llvm.loop !24

1105:                                             ; preds = %991
  store i64 0, ptr %61, align 8, !tbaa !9
  br label %1106

1106:                                             ; preds = %1253, %1105
  %1107 = load ptr, ptr %20, align 8, !tbaa !5
  %1108 = load ptr, ptr %33, align 8, !tbaa !5
  %1109 = load ptr, ptr %20, align 8, !tbaa !5
  %1110 = load i64, ptr %1109, align 8, !tbaa !9
  %1111 = add nsw i64 %1110, 1
  %1112 = getelementptr inbounds %struct.complex, ptr %1108, i64 %1111
  %1113 = load ptr, ptr %33, align 8, !tbaa !5
  %1114 = getelementptr inbounds %struct.complex, ptr %1113, i64 1
  %1115 = load ptr, ptr %31, align 8, !tbaa !5
  %1116 = load i64, ptr %55, align 8, !tbaa !9
  %1117 = getelementptr inbounds float, ptr %1115, i64 %1116
  %1118 = getelementptr inbounds [3 x i64], ptr %64, i64 0, i64 0
  %1119 = call i32 @clacn2_(ptr noundef %1107, ptr noundef %1112, ptr noundef %1114, ptr noundef %1117, ptr noundef %61, ptr noundef %1118)
  %1120 = load i64, ptr %61, align 8, !tbaa !9
  %1121 = icmp ne i64 %1120, 0
  br i1 %1121, label %1122, label %1254

1122:                                             ; preds = %1106
  %1123 = load i64, ptr %61, align 8, !tbaa !9
  %1124 = icmp eq i64 %1123, 1
  br i1 %1124, label %1125, label %1187

1125:                                             ; preds = %1122
  %1126 = load ptr, ptr %19, align 8, !tbaa !5
  %1127 = load ptr, ptr %20, align 8, !tbaa !5
  %1128 = load ptr, ptr %24, align 8, !tbaa !5
  %1129 = load i64, ptr %39, align 8, !tbaa !9
  %1130 = getelementptr inbounds %struct.complex, ptr %1128, i64 %1129
  %1131 = load ptr, ptr %25, align 8, !tbaa !5
  %1132 = load ptr, ptr %26, align 8, !tbaa !5
  %1133 = getelementptr inbounds i64, ptr %1132, i64 1
  %1134 = load ptr, ptr %33, align 8, !tbaa !5
  %1135 = getelementptr inbounds %struct.complex, ptr %1134, i64 1
  %1136 = load ptr, ptr %20, align 8, !tbaa !5
  %1137 = load ptr, ptr %35, align 8, !tbaa !5
  %1138 = call i32 @chetrs_(ptr noundef %1126, ptr noundef %1127, ptr noundef @c__1, ptr noundef %1130, ptr noundef %1131, ptr noundef %1133, ptr noundef %1135, ptr noundef %1136, ptr noundef %1137)
  %1139 = load ptr, ptr %20, align 8, !tbaa !5
  %1140 = load i64, ptr %1139, align 8, !tbaa !9
  store i64 %1140, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %1141

1141:                                             ; preds = %1183, %1125
  %1142 = load i64, ptr %54, align 8, !tbaa !9
  %1143 = load i64, ptr %45, align 8, !tbaa !9
  %1144 = icmp sle i64 %1142, %1143
  br i1 %1144, label %1145, label %1186

1145:                                             ; preds = %1141
  %1146 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1146, ptr %46, align 8, !tbaa !9
  %1147 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1147, ptr %47, align 8, !tbaa !9
  %1148 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1148, ptr %48, align 8, !tbaa !9
  %1149 = load ptr, ptr %34, align 8, !tbaa !5
  %1150 = load i64, ptr %47, align 8, !tbaa !9
  %1151 = getelementptr inbounds float, ptr %1149, i64 %1150
  %1152 = load float, ptr %1151, align 4, !tbaa !11
  %1153 = load ptr, ptr %33, align 8, !tbaa !5
  %1154 = load i64, ptr %48, align 8, !tbaa !9
  %1155 = getelementptr inbounds %struct.complex, ptr %1153, i64 %1154
  %1156 = getelementptr inbounds %struct.complex, ptr %1155, i32 0, i32 0
  %1157 = load float, ptr %1156, align 4, !tbaa !15
  %1158 = fmul float %1152, %1157
  %1159 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 0
  store float %1158, ptr %1159, align 4, !tbaa !15
  %1160 = load ptr, ptr %34, align 8, !tbaa !5
  %1161 = load i64, ptr %47, align 8, !tbaa !9
  %1162 = getelementptr inbounds float, ptr %1160, i64 %1161
  %1163 = load float, ptr %1162, align 4, !tbaa !11
  %1164 = load ptr, ptr %33, align 8, !tbaa !5
  %1165 = load i64, ptr %48, align 8, !tbaa !9
  %1166 = getelementptr inbounds %struct.complex, ptr %1164, i64 %1165
  %1167 = getelementptr inbounds %struct.complex, ptr %1166, i32 0, i32 1
  %1168 = load float, ptr %1167, align 4, !tbaa !17
  %1169 = fmul float %1163, %1168
  %1170 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 1
  store float %1169, ptr %1170, align 4, !tbaa !17
  %1171 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 0
  %1172 = load float, ptr %1171, align 4, !tbaa !15
  %1173 = load ptr, ptr %33, align 8, !tbaa !5
  %1174 = load i64, ptr %46, align 8, !tbaa !9
  %1175 = getelementptr inbounds %struct.complex, ptr %1173, i64 %1174
  %1176 = getelementptr inbounds %struct.complex, ptr %1175, i32 0, i32 0
  store float %1172, ptr %1176, align 4, !tbaa !15
  %1177 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 1
  %1178 = load float, ptr %1177, align 4, !tbaa !17
  %1179 = load ptr, ptr %33, align 8, !tbaa !5
  %1180 = load i64, ptr %46, align 8, !tbaa !9
  %1181 = getelementptr inbounds %struct.complex, ptr %1179, i64 %1180
  %1182 = getelementptr inbounds %struct.complex, ptr %1181, i32 0, i32 1
  store float %1178, ptr %1182, align 4, !tbaa !17
  br label %1183

1183:                                             ; preds = %1145
  %1184 = load i64, ptr %54, align 8, !tbaa !9
  %1185 = add nsw i64 %1184, 1
  store i64 %1185, ptr %54, align 8, !tbaa !9
  br label %1141, !llvm.loop !25

1186:                                             ; preds = %1141
  br label %1253

1187:                                             ; preds = %1122
  %1188 = load i64, ptr %61, align 8, !tbaa !9
  %1189 = icmp eq i64 %1188, 2
  br i1 %1189, label %1190, label %1252

1190:                                             ; preds = %1187
  %1191 = load ptr, ptr %20, align 8, !tbaa !5
  %1192 = load i64, ptr %1191, align 8, !tbaa !9
  store i64 %1192, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %1193

1193:                                             ; preds = %1235, %1190
  %1194 = load i64, ptr %54, align 8, !tbaa !9
  %1195 = load i64, ptr %45, align 8, !tbaa !9
  %1196 = icmp sle i64 %1194, %1195
  br i1 %1196, label %1197, label %1238

1197:                                             ; preds = %1193
  %1198 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1198, ptr %46, align 8, !tbaa !9
  %1199 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1199, ptr %47, align 8, !tbaa !9
  %1200 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1200, ptr %48, align 8, !tbaa !9
  %1201 = load ptr, ptr %34, align 8, !tbaa !5
  %1202 = load i64, ptr %47, align 8, !tbaa !9
  %1203 = getelementptr inbounds float, ptr %1201, i64 %1202
  %1204 = load float, ptr %1203, align 4, !tbaa !11
  %1205 = load ptr, ptr %33, align 8, !tbaa !5
  %1206 = load i64, ptr %48, align 8, !tbaa !9
  %1207 = getelementptr inbounds %struct.complex, ptr %1205, i64 %1206
  %1208 = getelementptr inbounds %struct.complex, ptr %1207, i32 0, i32 0
  %1209 = load float, ptr %1208, align 4, !tbaa !15
  %1210 = fmul float %1204, %1209
  %1211 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 0
  store float %1210, ptr %1211, align 4, !tbaa !15
  %1212 = load ptr, ptr %34, align 8, !tbaa !5
  %1213 = load i64, ptr %47, align 8, !tbaa !9
  %1214 = getelementptr inbounds float, ptr %1212, i64 %1213
  %1215 = load float, ptr %1214, align 4, !tbaa !11
  %1216 = load ptr, ptr %33, align 8, !tbaa !5
  %1217 = load i64, ptr %48, align 8, !tbaa !9
  %1218 = getelementptr inbounds %struct.complex, ptr %1216, i64 %1217
  %1219 = getelementptr inbounds %struct.complex, ptr %1218, i32 0, i32 1
  %1220 = load float, ptr %1219, align 4, !tbaa !17
  %1221 = fmul float %1215, %1220
  %1222 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 1
  store float %1221, ptr %1222, align 4, !tbaa !17
  %1223 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 0
  %1224 = load float, ptr %1223, align 4, !tbaa !15
  %1225 = load ptr, ptr %33, align 8, !tbaa !5
  %1226 = load i64, ptr %46, align 8, !tbaa !9
  %1227 = getelementptr inbounds %struct.complex, ptr %1225, i64 %1226
  %1228 = getelementptr inbounds %struct.complex, ptr %1227, i32 0, i32 0
  store float %1224, ptr %1228, align 4, !tbaa !15
  %1229 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 1
  %1230 = load float, ptr %1229, align 4, !tbaa !17
  %1231 = load ptr, ptr %33, align 8, !tbaa !5
  %1232 = load i64, ptr %46, align 8, !tbaa !9
  %1233 = getelementptr inbounds %struct.complex, ptr %1231, i64 %1232
  %1234 = getelementptr inbounds %struct.complex, ptr %1233, i32 0, i32 1
  store float %1230, ptr %1234, align 4, !tbaa !17
  br label %1235

1235:                                             ; preds = %1197
  %1236 = load i64, ptr %54, align 8, !tbaa !9
  %1237 = add nsw i64 %1236, 1
  store i64 %1237, ptr %54, align 8, !tbaa !9
  br label %1193, !llvm.loop !26

1238:                                             ; preds = %1193
  %1239 = load ptr, ptr %19, align 8, !tbaa !5
  %1240 = load ptr, ptr %20, align 8, !tbaa !5
  %1241 = load ptr, ptr %24, align 8, !tbaa !5
  %1242 = load i64, ptr %39, align 8, !tbaa !9
  %1243 = getelementptr inbounds %struct.complex, ptr %1241, i64 %1242
  %1244 = load ptr, ptr %25, align 8, !tbaa !5
  %1245 = load ptr, ptr %26, align 8, !tbaa !5
  %1246 = getelementptr inbounds i64, ptr %1245, i64 1
  %1247 = load ptr, ptr %33, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.complex, ptr %1247, i64 1
  %1249 = load ptr, ptr %20, align 8, !tbaa !5
  %1250 = load ptr, ptr %35, align 8, !tbaa !5
  %1251 = call i32 @chetrs_(ptr noundef %1239, ptr noundef %1240, ptr noundef @c__1, ptr noundef %1243, ptr noundef %1244, ptr noundef %1246, ptr noundef %1248, ptr noundef %1249, ptr noundef %1250)
  br label %1252

1252:                                             ; preds = %1238, %1187
  br label %1253

1253:                                             ; preds = %1252, %1186
  br label %1106

1254:                                             ; preds = %1106
  store float 0.000000e+00, ptr %68, align 4, !tbaa !11
  %1255 = load ptr, ptr %20, align 8, !tbaa !5
  %1256 = load i64, ptr %1255, align 8, !tbaa !9
  store i64 %1256, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %1257

1257:                                             ; preds = %1315, %1254
  %1258 = load i64, ptr %54, align 8, !tbaa !9
  %1259 = load i64, ptr %45, align 8, !tbaa !9
  %1260 = icmp sle i64 %1258, %1259
  br i1 %1260, label %1261, label %1318

1261:                                             ; preds = %1257
  %1262 = load i64, ptr %54, align 8, !tbaa !9
  %1263 = load i64, ptr %55, align 8, !tbaa !9
  %1264 = load i64, ptr %42, align 8, !tbaa !9
  %1265 = mul nsw i64 %1263, %1264
  %1266 = add nsw i64 %1262, %1265
  store i64 %1266, ptr %46, align 8, !tbaa !9
  %1267 = load float, ptr %68, align 4, !tbaa !11
  store float %1267, ptr %51, align 4, !tbaa !11
  %1268 = load ptr, ptr %29, align 8, !tbaa !5
  %1269 = load i64, ptr %46, align 8, !tbaa !9
  %1270 = getelementptr inbounds %struct.complex, ptr %1268, i64 %1269
  %1271 = getelementptr inbounds %struct.complex, ptr %1270, i32 0, i32 0
  %1272 = load float, ptr %1271, align 4, !tbaa !15
  store float %1272, ptr %49, align 4, !tbaa !11
  %1273 = load float, ptr %49, align 4, !tbaa !11
  %1274 = fcmp oge float %1273, 0.000000e+00
  br i1 %1274, label %1275, label %1277

1275:                                             ; preds = %1261
  %1276 = load float, ptr %49, align 4, !tbaa !11
  br label %1280

1277:                                             ; preds = %1261
  %1278 = load float, ptr %49, align 4, !tbaa !11
  %1279 = fneg float %1278
  br label %1280

1280:                                             ; preds = %1277, %1275
  %1281 = phi float [ %1276, %1275 ], [ %1279, %1277 ]
  %1282 = fpext float %1281 to double
  %1283 = load ptr, ptr %29, align 8, !tbaa !5
  %1284 = load i64, ptr %54, align 8, !tbaa !9
  %1285 = load i64, ptr %55, align 8, !tbaa !9
  %1286 = load i64, ptr %42, align 8, !tbaa !9
  %1287 = mul nsw i64 %1285, %1286
  %1288 = add nsw i64 %1284, %1287
  %1289 = getelementptr inbounds %struct.complex, ptr %1283, i64 %1288
  %1290 = call double @r_imag(ptr noundef %1289)
  %1291 = fptrunc double %1290 to float
  store float %1291, ptr %50, align 4, !tbaa !11
  %1292 = load float, ptr %50, align 4, !tbaa !11
  %1293 = fcmp oge float %1292, 0.000000e+00
  br i1 %1293, label %1294, label %1296

1294:                                             ; preds = %1280
  %1295 = load float, ptr %50, align 4, !tbaa !11
  br label %1299

1296:                                             ; preds = %1280
  %1297 = load float, ptr %50, align 4, !tbaa !11
  %1298 = fneg float %1297
  br label %1299

1299:                                             ; preds = %1296, %1294
  %1300 = phi float [ %1295, %1294 ], [ %1298, %1296 ]
  %1301 = fpext float %1300 to double
  %1302 = fadd double %1282, %1301
  %1303 = fptrunc double %1302 to float
  store float %1303, ptr %52, align 4, !tbaa !11
  %1304 = load float, ptr %51, align 4, !tbaa !11
  %1305 = load float, ptr %52, align 4, !tbaa !11
  %1306 = fcmp oge float %1304, %1305
  br i1 %1306, label %1307, label %1309

1307:                                             ; preds = %1299
  %1308 = load float, ptr %51, align 4, !tbaa !11
  br label %1311

1309:                                             ; preds = %1299
  %1310 = load float, ptr %52, align 4, !tbaa !11
  br label %1311

1311:                                             ; preds = %1309, %1307
  %1312 = phi float [ %1308, %1307 ], [ %1310, %1309 ]
  %1313 = fpext float %1312 to double
  %1314 = fptrunc double %1313 to float
  store float %1314, ptr %68, align 4, !tbaa !11
  br label %1315

1315:                                             ; preds = %1311
  %1316 = load i64, ptr %54, align 8, !tbaa !9
  %1317 = add nsw i64 %1316, 1
  store i64 %1317, ptr %54, align 8, !tbaa !9
  br label %1257, !llvm.loop !27

1318:                                             ; preds = %1257
  %1319 = load float, ptr %68, align 4, !tbaa !11
  %1320 = fcmp une float %1319, 0.000000e+00
  br i1 %1320, label %1321, label %1328

1321:                                             ; preds = %1318
  %1322 = load float, ptr %68, align 4, !tbaa !11
  %1323 = load ptr, ptr %31, align 8, !tbaa !5
  %1324 = load i64, ptr %55, align 8, !tbaa !9
  %1325 = getelementptr inbounds float, ptr %1323, i64 %1324
  %1326 = load float, ptr %1325, align 4, !tbaa !11
  %1327 = fdiv float %1326, %1322
  store float %1327, ptr %1325, align 4, !tbaa !11
  br label %1328

1328:                                             ; preds = %1321, %1318
  br label %1329

1329:                                             ; preds = %1328
  %1330 = load i64, ptr %55, align 8, !tbaa !9
  %1331 = add nsw i64 %1330, 1
  store i64 %1331, ptr %55, align 8, !tbaa !9
  br label %253, !llvm.loop !28

1332:                                             ; preds = %253
  store i32 0, ptr %18, align 4
  store i32 1, ptr %69, align 4
  br label %1333

1333:                                             ; preds = %1332, %235, %205
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  %1334 = load i32, ptr %18, align 4
  ret i32 %1334
}

; 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 @f2c_ccopy(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare double @r_imag(ptr noundef) #2

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

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

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

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

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

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

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

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


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

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b1 = external hidden global %struct.complex, align 4

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @cherfs_(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 nocapture noundef readonly %9, ptr noundef %10, ptr nocapture noundef readonly %11, ptr noundef %12, ptr nocapture noundef %13, ptr noundef %14, ptr nocapture noundef %15, ptr noundef %16) local_unnamed_addr #0 {
  %18 = ptrtoint ptr %12 to i64
  %19 = ptrtoint ptr %13 to i64
  %20 = alloca i64, align 8
  %21 = alloca %struct.complex, align 8
  %22 = alloca i64, align 8
  %23 = alloca [3 x i64], align 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #5
  %24 = load i64, ptr %4, align 8, !tbaa !5
  %25 = xor i64 %24, -1
  %26 = getelementptr inbounds %struct.complex, ptr %3, i64 %25
  %27 = load i64, ptr %9, align 8, !tbaa !5
  %28 = xor i64 %27, -1
  %29 = getelementptr inbounds %struct.complex, ptr %8, i64 %28
  %30 = load i64, ptr %11, align 8, !tbaa !5
  %31 = xor i64 %30, -1
  %32 = getelementptr inbounds %struct.complex, ptr %10, i64 %31
  %33 = getelementptr inbounds i8, ptr %12, i64 -4
  %34 = getelementptr inbounds i8, ptr %13, i64 -4
  %35 = getelementptr inbounds i8, ptr %14, i64 -8
  %36 = getelementptr inbounds i8, ptr %15, i64 -4
  store i64 0, ptr %16, align 8, !tbaa !5
  %37 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not = icmp eq i64 %37, 0
  br i1 %.not, label %38, label %40

38:                                               ; preds = %17
  %39 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not498 = icmp eq i64 %39, 0
  br i1 %.not498, label %.thread.sink.split, label %40

40:                                               ; preds = %38, %17
  %41 = load i64, ptr %1, align 8, !tbaa !5
  %42 = icmp slt i64 %41, 0
  br i1 %42, label %.thread.sink.split, label %43

43:                                               ; preds = %40
  %44 = load i64, ptr %2, align 8, !tbaa !5
  %45 = icmp slt i64 %44, 0
  br i1 %45, label %.thread.sink.split, label %46

46:                                               ; preds = %43
  %47 = load i64, ptr %4, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %41, i64 1)
  %48 = icmp slt i64 %47, %spec.select
  br i1 %48, label %.thread.sink.split, label %49

49:                                               ; preds = %46
  %50 = load i64, ptr %6, align 8, !tbaa !5
  %51 = icmp slt i64 %50, %spec.select
  br i1 %51, label %.thread.sink.split, label %52

52:                                               ; preds = %49
  %53 = load i64, ptr %9, align 8, !tbaa !5
  %54 = icmp slt i64 %53, %spec.select
  br i1 %54, label %.thread.sink.split, label %55

55:                                               ; preds = %52
  %56 = load i64, ptr %11, align 8, !tbaa !5
  %57 = icmp slt i64 %56, %spec.select
  br i1 %57, label %.thread.sink.split, label %58

58:                                               ; preds = %55
  %.pr = load i64, ptr %16, align 8, !tbaa !5
  %.not499 = icmp eq i64 %.pr, 0
  br i1 %.not499, label %62, label %.thread

.thread.sink.split:                               ; preds = %55, %52, %49, %46, %43, %40, %38
  %.sink = phi i64 [ -1, %38 ], [ -2, %40 ], [ -3, %43 ], [ -5, %46 ], [ -7, %49 ], [ -10, %52 ], [ -12, %55 ]
  store i64 %.sink, ptr %16, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %58
  %59 = phi i64 [ %.pr, %58 ], [ %.sink, %.thread.sink.split ]
  %60 = sub nsw i64 0, %59
  store i64 %60, ptr %20, align 8, !tbaa !5
  %61 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %20) #5
  br label %.loopexit

62:                                               ; preds = %58
  %63 = icmp eq i64 %41, 0
  %.not512598 = icmp eq i64 %44, 0
  br i1 %63, label %65, label %64

64:                                               ; preds = %62
  br i1 %.not512598, label %.loopexit, label %90

65:                                               ; preds = %62
  br i1 %.not512598, label %.loopexit, label %.lr.ph601.preheader

.lr.ph601.preheader:                              ; preds = %65
  %min.iters.check678 = icmp ult i64 %44, 8
  %66 = sub i64 %19, %18
  %diff.check = icmp ult i64 %66, 32
  %or.cond689 = or i1 %min.iters.check678, %diff.check
  br i1 %or.cond689, label %.lr.ph601.preheader699, label %vector.ph679

vector.ph679:                                     ; preds = %.lr.ph601.preheader
  %n.vec681 = and i64 %44, 9223372036854775800
  %ind.end682 = or disjoint i64 %n.vec681, 1
  br label %vector.body684

vector.body684:                                   ; preds = %vector.body684, %vector.ph679
  %index685 = phi i64 [ 0, %vector.ph679 ], [ %index.next687, %vector.body684 ]
  %67 = getelementptr float, ptr %12, i64 %index685
  %68 = getelementptr inbounds i8, ptr %67, i64 16
  store <4 x float> zeroinitializer, ptr %67, align 4, !tbaa !9
  store <4 x float> zeroinitializer, ptr %68, align 4, !tbaa !9
  %69 = getelementptr float, ptr %13, i64 %index685
  %70 = getelementptr inbounds i8, ptr %69, i64 16
  store <4 x float> zeroinitializer, ptr %69, align 4, !tbaa !9
  store <4 x float> zeroinitializer, ptr %70, align 4, !tbaa !9
  %index.next687 = add nuw i64 %index685, 8
  %71 = icmp eq i64 %index.next687, %n.vec681
  br i1 %71, label %middle.block676, label %vector.body684, !llvm.loop !11

middle.block676:                                  ; preds = %vector.body684
  %cmp.n688 = icmp eq i64 %44, %n.vec681
  br i1 %cmp.n688, label %.loopexit, label %.lr.ph601.preheader699

.lr.ph601.preheader699:                           ; preds = %middle.block676, %.lr.ph601.preheader
  %.0485599.ph = phi i64 [ 1, %.lr.ph601.preheader ], [ %ind.end682, %middle.block676 ]
  %72 = add nuw i64 %44, 1
  %73 = sub i64 %72, %.0485599.ph
  %74 = sub i64 %44, %.0485599.ph
  %xtraiter715 = and i64 %73, 3
  %lcmp.mod716.not = icmp eq i64 %xtraiter715, 0
  br i1 %lcmp.mod716.not, label %.lr.ph601.prol.loopexit, label %.lr.ph601.prol

.lr.ph601.prol:                                   ; preds = %.lr.ph601.preheader699, %.lr.ph601.prol
  %.0485599.prol = phi i64 [ %77, %.lr.ph601.prol ], [ %.0485599.ph, %.lr.ph601.preheader699 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph601.prol ], [ 0, %.lr.ph601.preheader699 ]
  %75 = getelementptr inbounds float, ptr %33, i64 %.0485599.prol
  store float 0.000000e+00, ptr %75, align 4, !tbaa !9
  %76 = getelementptr inbounds float, ptr %34, i64 %.0485599.prol
  store float 0.000000e+00, ptr %76, align 4, !tbaa !9
  %77 = add nuw i64 %.0485599.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter715
  br i1 %prol.iter.cmp.not, label %.lr.ph601.prol.loopexit, label %.lr.ph601.prol, !llvm.loop !15

.lr.ph601.prol.loopexit:                          ; preds = %.lr.ph601.prol, %.lr.ph601.preheader699
  %.0485599.unr = phi i64 [ %.0485599.ph, %.lr.ph601.preheader699 ], [ %77, %.lr.ph601.prol ]
  %78 = icmp ult i64 %74, 3
  br i1 %78, label %.loopexit, label %.lr.ph601

.lr.ph601:                                        ; preds = %.lr.ph601.prol.loopexit, %.lr.ph601
  %.0485599 = phi i64 [ %89, %.lr.ph601 ], [ %.0485599.unr, %.lr.ph601.prol.loopexit ]
  %79 = getelementptr inbounds float, ptr %33, i64 %.0485599
  store float 0.000000e+00, ptr %79, align 4, !tbaa !9
  %80 = getelementptr inbounds float, ptr %34, i64 %.0485599
  store float 0.000000e+00, ptr %80, align 4, !tbaa !9
  %81 = getelementptr float, ptr %12, i64 %.0485599
  store float 0.000000e+00, ptr %81, align 4, !tbaa !9
  %82 = getelementptr float, ptr %13, i64 %.0485599
  store float 0.000000e+00, ptr %82, align 4, !tbaa !9
  %83 = add nuw i64 %.0485599, 2
  %84 = getelementptr inbounds float, ptr %33, i64 %83
  store float 0.000000e+00, ptr %84, align 4, !tbaa !9
  %85 = getelementptr inbounds float, ptr %34, i64 %83
  store float 0.000000e+00, ptr %85, align 4, !tbaa !9
  %86 = add nuw i64 %.0485599, 3
  %87 = getelementptr inbounds float, ptr %33, i64 %86
  store float 0.000000e+00, ptr %87, align 4, !tbaa !9
  %88 = getelementptr inbounds float, ptr %34, i64 %86
  store float 0.000000e+00, ptr %88, align 4, !tbaa !9
  %89 = add nuw i64 %.0485599, 4
  %exitcond618.not.3 = icmp eq i64 %86, %44
  br i1 %exitcond618.not.3, label %.loopexit, label %.lr.ph601, !llvm.loop !17

90:                                               ; preds = %64
  %91 = add nuw nsw i64 %41, 1
  %92 = tail call double @slamch_(ptr noundef nonnull @.str.3) #5
  %93 = fptrunc double %92 to float
  %94 = tail call double @slamch_(ptr noundef nonnull @.str.4) #5
  %95 = fptrunc double %94 to float
  %96 = uitofp nneg i64 %91 to float
  %97 = fmul float %96, %95
  %98 = fdiv float %97, %93
  %99 = load i64, ptr %2, align 8, !tbaa !5
  %invariant.gep594 = getelementptr i8, ptr %29, i64 8
  %.not500596 = icmp slt i64 %99, 1
  br i1 %.not500596, label %.loopexit, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %90
  %invariant.gep565 = getelementptr i8, ptr %32, i64 8
  %100 = add i64 %24, 1
  %101 = fpext float %97 to double
  %102 = fmul float %96, %93
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge592.thread
  %.1486597 = phi i64 [ 1, %.preheader.lr.ph ], [ %426, %._crit_edge592.thread ]
  %103 = getelementptr inbounds float, ptr %34, i64 %.1486597
  %104 = mul nsw i64 %.1486597, %27
  %gep595 = getelementptr %struct.complex, ptr %invariant.gep594, i64 %104
  %105 = mul nsw i64 %.1486597, %30
  %gep566 = getelementptr %struct.complex, ptr %invariant.gep565, i64 %105
  %invariant.gep = getelementptr %struct.complex, ptr %29, i64 %104
  %invariant.gep535 = getelementptr %struct.complex, ptr %32, i64 %105
  br label %106

106:                                              ; preds = %.preheader, %299
  %.0480 = phi i64 [ %303, %299 ], [ 1, %.preheader ]
  %.0 = phi float [ %302, %299 ], [ 3.000000e+00, %.preheader ]
  %107 = call i32 @f2c_ccopy(ptr noundef nonnull %1, ptr noundef %gep595, ptr noundef nonnull @c__1, ptr noundef %14, ptr noundef nonnull @c__1) #5
  store <2 x float> <float -1.000000e+00, float -0.000000e+00>, ptr %21, align 8, !tbaa !9
  %108 = call i32 @f2c_chemv(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %gep566, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull @c__1) #5
  %109 = load i64, ptr %1, align 8, !tbaa !5
  %.not501523 = icmp slt i64 %109, 1
  br i1 %.not501523, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %106, %.lr.ph
  %.0487524 = phi i64 [ %121, %.lr.ph ], [ 1, %106 ]
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0487524
  %110 = load float, ptr %gep, align 4, !tbaa !18
  %111 = call double @r_imag(ptr noundef nonnull %gep) #5
  %112 = fptrunc double %111 to float
  %113 = insertelement <2 x float> poison, float %110, i64 0
  %114 = insertelement <2 x float> %113, float %112, i64 1
  %115 = fcmp oge <2 x float> %114, zeroinitializer
  %116 = fneg <2 x float> %114
  %117 = select <2 x i1> %115, <2 x float> %114, <2 x float> %116
  %shift = shufflevector <2 x float> %117, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %118 = fadd <2 x float> %117, %shift
  %119 = extractelement <2 x float> %118, i64 0
  %120 = getelementptr inbounds float, ptr %36, i64 %.0487524
  store float %119, ptr %120, align 4, !tbaa !9
  %121 = add nuw i64 %.0487524, 1
  %exitcond.not = icmp eq i64 %.0487524, %109
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !20

._crit_edge:                                      ; preds = %.lr.ph, %106
  %122 = load i64, ptr %1, align 8, !tbaa !5
  %.not502554 = icmp slt i64 %122, 1
  br i1 %.not, label %194, label %123

123:                                              ; preds = %._crit_edge
  br i1 %.not502554, label %._crit_edge563, label %.lr.ph540

.lr.ph540:                                        ; preds = %123, %._crit_edge532
  %.0483538 = phi i64 [ %193, %._crit_edge532 ], [ 1, %123 ]
  %gep536 = getelementptr %struct.complex, ptr %invariant.gep535, i64 %.0483538
  %124 = load float, ptr %gep536, align 4, !tbaa !18
  %125 = fcmp oge float %124, 0.000000e+00
  %126 = fneg float %124
  %127 = select i1 %125, float %124, float %126
  %128 = call double @r_imag(ptr noundef nonnull %gep536) #5
  %129 = fptrunc double %128 to float
  %130 = fcmp oge float %129, 0.000000e+00
  %131 = fneg float %129
  %132 = select i1 %130, float %129, float %131
  %133 = fadd float %127, %132
  %.not511.not527 = icmp ugt i64 %.0483538, 1
  br i1 %.not511.not527, label %.lr.ph531, label %.lr.ph540.._crit_edge532_crit_edge

.lr.ph540.._crit_edge532_crit_edge:               ; preds = %.lr.ph540
  %.pre619 = fpext float %133 to double
  br label %._crit_edge532

.lr.ph531:                                        ; preds = %.lr.ph540
  %134 = mul nsw i64 %.0483538, %24
  %invariant.gep533 = getelementptr %struct.complex, ptr %26, i64 %134
  %135 = fpext float %133 to double
  br label %136

136:                                              ; preds = %.lr.ph531, %136
  %.0481529 = phi float [ 0.000000e+00, %.lr.ph531 ], [ %177, %136 ]
  %.1488528 = phi i64 [ 1, %.lr.ph531 ], [ %178, %136 ]
  %gep534 = getelementptr %struct.complex, ptr %invariant.gep533, i64 %.1488528
  %137 = load float, ptr %gep534, align 4, !tbaa !18
  %138 = call double @r_imag(ptr noundef nonnull %gep534) #5
  %139 = fptrunc double %138 to float
  %140 = insertelement <2 x float> poison, float %137, i64 0
  %141 = insertelement <2 x float> %140, float %139, i64 1
  %142 = fcmp oge <2 x float> %141, zeroinitializer
  %143 = fneg <2 x float> %141
  %144 = select <2 x i1> %142, <2 x float> %141, <2 x float> %143
  %145 = fpext <2 x float> %144 to <2 x double>
  %shift690 = shufflevector <2 x double> %145, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %146 = fadd <2 x double> %shift690, %145
  %147 = extractelement <2 x double> %146, i64 0
  %148 = getelementptr inbounds float, ptr %36, i64 %.1488528
  %149 = load float, ptr %148, align 4, !tbaa !9
  %150 = fpext float %149 to double
  %151 = call double @llvm.fmuladd.f64(double %147, double %135, double %150)
  %152 = fptrunc double %151 to float
  store float %152, ptr %148, align 4, !tbaa !9
  %153 = load float, ptr %gep534, align 4, !tbaa !18
  %154 = call double @r_imag(ptr noundef nonnull %gep534) #5
  %155 = fptrunc double %154 to float
  %156 = insertelement <2 x float> poison, float %153, i64 0
  %157 = insertelement <2 x float> %156, float %155, i64 1
  %158 = fcmp oge <2 x float> %157, zeroinitializer
  %159 = fneg <2 x float> %157
  %160 = select <2 x i1> %158, <2 x float> %157, <2 x float> %159
  %161 = fpext <2 x float> %160 to <2 x double>
  %shift691 = shufflevector <2 x double> %161, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %162 = fadd <2 x double> %shift691, %161
  %163 = extractelement <2 x double> %162, i64 0
  %gep526 = getelementptr %struct.complex, ptr %invariant.gep535, i64 %.1488528
  %164 = load float, ptr %gep526, align 4, !tbaa !18
  %165 = call double @r_imag(ptr noundef nonnull %gep526) #5
  %166 = fptrunc double %165 to float
  %167 = insertelement <2 x float> poison, float %164, i64 0
  %168 = insertelement <2 x float> %167, float %166, i64 1
  %169 = fcmp oge <2 x float> %168, zeroinitializer
  %170 = fneg <2 x float> %168
  %171 = select <2 x i1> %169, <2 x float> %168, <2 x float> %170
  %172 = fpext <2 x float> %171 to <2 x double>
  %shift692 = shufflevector <2 x double> %172, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %173 = fadd <2 x double> %shift692, %172
  %174 = extractelement <2 x double> %173, i64 0
  %175 = fpext float %.0481529 to double
  %176 = call double @llvm.fmuladd.f64(double %163, double %174, double %175)
  %177 = fptrunc double %176 to float
  %178 = add nuw nsw i64 %.1488528, 1
  %exitcond610.not = icmp eq i64 %178, %.0483538
  br i1 %exitcond610.not, label %._crit_edge532, label %136, !llvm.loop !21

._crit_edge532:                                   ; preds = %136, %.lr.ph540.._crit_edge532_crit_edge
  %.pre-phi = phi double [ %.pre619, %.lr.ph540.._crit_edge532_crit_edge ], [ %135, %136 ]
  %.0481.lcssa = phi float [ 0.000000e+00, %.lr.ph540.._crit_edge532_crit_edge ], [ %177, %136 ]
  %179 = mul i64 %.0483538, %100
  %180 = getelementptr inbounds float, ptr %36, i64 %.0483538
  %181 = load float, ptr %180, align 4, !tbaa !9
  %182 = fpext float %181 to double
  %183 = getelementptr inbounds %struct.complex, ptr %26, i64 %179
  %184 = load float, ptr %183, align 4, !tbaa !18
  %185 = fcmp oge float %184, 0.000000e+00
  %186 = fneg float %184
  %187 = select i1 %185, float %184, float %186
  %188 = fpext float %187 to double
  %189 = call double @llvm.fmuladd.f64(double %188, double %.pre-phi, double %182)
  %190 = fpext float %.0481.lcssa to double
  %191 = fadd double %189, %190
  %192 = fptrunc double %191 to float
  store float %192, ptr %180, align 4, !tbaa !9
  %193 = add nuw i64 %.0483538, 1
  %exitcond611.not = icmp eq i64 %.0483538, %122
  br i1 %exitcond611.not, label %.loopexit518, label %.lr.ph540, !llvm.loop !22

194:                                              ; preds = %._crit_edge
  br i1 %.not502554, label %._crit_edge563, label %.lr.ph557

.lr.ph557:                                        ; preds = %194, %._crit_edge550
  %.1484555 = phi i64 [ %220, %._crit_edge550 ], [ 1, %194 ]
  %gep553 = getelementptr %struct.complex, ptr %invariant.gep535, i64 %.1484555
  %195 = load float, ptr %gep553, align 4, !tbaa !18
  %196 = call double @r_imag(ptr noundef nonnull %gep553) #5
  %197 = fptrunc double %196 to float
  %198 = insertelement <2 x float> poison, float %195, i64 0
  %199 = insertelement <2 x float> %198, float %197, i64 1
  %200 = fcmp oge <2 x float> %199, zeroinitializer
  %201 = fneg <2 x float> %199
  %202 = select <2 x i1> %200, <2 x float> %199, <2 x float> %201
  %shift693 = shufflevector <2 x float> %202, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %203 = fadd <2 x float> %202, %shift693
  %204 = extractelement <2 x float> %203, i64 0
  %205 = mul nsw i64 %.1484555, %24
  %206 = getelementptr %struct.complex, ptr %26, i64 %.1484555
  %207 = getelementptr %struct.complex, ptr %206, i64 %205
  %208 = load float, ptr %207, align 4, !tbaa !18
  %209 = fcmp oge float %208, 0.000000e+00
  %210 = fneg float %208
  %211 = select i1 %209, float %208, float %210
  %212 = fpext float %211 to double
  %213 = fpext float %204 to double
  %214 = getelementptr inbounds float, ptr %36, i64 %.1484555
  %215 = load float, ptr %214, align 4, !tbaa !9
  %216 = fpext float %215 to double
  %217 = call double @llvm.fmuladd.f64(double %212, double %213, double %216)
  %218 = fptrunc double %217 to float
  store float %218, ptr %214, align 4, !tbaa !9
  %219 = load i64, ptr %1, align 8, !tbaa !5
  %220 = add nuw i64 %.1484555, 1
  %invariant.gep541 = getelementptr %struct.complex, ptr %26, i64 %205
  %.not503545.not = icmp slt i64 %.1484555, %219
  br i1 %.not503545.not, label %.lr.ph549, label %._crit_edge550

.lr.ph549:                                        ; preds = %.lr.ph557, %.lr.ph549
  %.1482547 = phi float [ %261, %.lr.ph549 ], [ 0.000000e+00, %.lr.ph557 ]
  %.2489546 = phi i64 [ %262, %.lr.ph549 ], [ %220, %.lr.ph557 ]
  %gep542 = getelementptr %struct.complex, ptr %invariant.gep541, i64 %.2489546
  %221 = load float, ptr %gep542, align 4, !tbaa !18
  %222 = call double @r_imag(ptr noundef nonnull %gep542) #5
  %223 = fptrunc double %222 to float
  %224 = insertelement <2 x float> poison, float %221, i64 0
  %225 = insertelement <2 x float> %224, float %223, i64 1
  %226 = fcmp oge <2 x float> %225, zeroinitializer
  %227 = fneg <2 x float> %225
  %228 = select <2 x i1> %226, <2 x float> %225, <2 x float> %227
  %229 = fpext <2 x float> %228 to <2 x double>
  %shift694 = shufflevector <2 x double> %229, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %230 = fadd <2 x double> %shift694, %229
  %231 = extractelement <2 x double> %230, i64 0
  %232 = getelementptr inbounds float, ptr %36, i64 %.2489546
  %233 = load float, ptr %232, align 4, !tbaa !9
  %234 = fpext float %233 to double
  %235 = call double @llvm.fmuladd.f64(double %231, double %213, double %234)
  %236 = fptrunc double %235 to float
  store float %236, ptr %232, align 4, !tbaa !9
  %237 = load float, ptr %gep542, align 4, !tbaa !18
  %238 = call double @r_imag(ptr noundef nonnull %gep542) #5
  %239 = fptrunc double %238 to float
  %240 = insertelement <2 x float> poison, float %237, i64 0
  %241 = insertelement <2 x float> %240, float %239, i64 1
  %242 = fcmp oge <2 x float> %241, zeroinitializer
  %243 = fneg <2 x float> %241
  %244 = select <2 x i1> %242, <2 x float> %241, <2 x float> %243
  %245 = fpext <2 x float> %244 to <2 x double>
  %shift695 = shufflevector <2 x double> %245, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %246 = fadd <2 x double> %shift695, %245
  %247 = extractelement <2 x double> %246, i64 0
  %gep544 = getelementptr %struct.complex, ptr %invariant.gep535, i64 %.2489546
  %248 = load float, ptr %gep544, align 4, !tbaa !18
  %249 = call double @r_imag(ptr noundef nonnull %gep544) #5
  %250 = fptrunc double %249 to float
  %251 = insertelement <2 x float> poison, float %248, i64 0
  %252 = insertelement <2 x float> %251, float %250, i64 1
  %253 = fcmp oge <2 x float> %252, zeroinitializer
  %254 = fneg <2 x float> %252
  %255 = select <2 x i1> %253, <2 x float> %252, <2 x float> %254
  %256 = fpext <2 x float> %255 to <2 x double>
  %shift696 = shufflevector <2 x double> %256, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %257 = fadd <2 x double> %shift696, %256
  %258 = extractelement <2 x double> %257, i64 0
  %259 = fpext float %.1482547 to double
  %260 = call double @llvm.fmuladd.f64(double %247, double %258, double %259)
  %261 = fptrunc double %260 to float
  %262 = add nuw nsw i64 %.2489546, 1
  %.not503.not = icmp slt i64 %.2489546, %219
  br i1 %.not503.not, label %.lr.ph549, label %._crit_edge550.loopexit, !llvm.loop !23

._crit_edge550.loopexit:                          ; preds = %.lr.ph549
  %.pre = load float, ptr %214, align 4, !tbaa !9
  br label %._crit_edge550

._crit_edge550:                                   ; preds = %._crit_edge550.loopexit, %.lr.ph557
  %263 = phi float [ %218, %.lr.ph557 ], [ %.pre, %._crit_edge550.loopexit ]
  %.1482.lcssa = phi float [ 0.000000e+00, %.lr.ph557 ], [ %261, %._crit_edge550.loopexit ]
  %264 = fadd float %.1482.lcssa, %263
  store float %264, ptr %214, align 4, !tbaa !9
  %exitcond612.not = icmp eq i64 %.1484555, %122
  br i1 %exitcond612.not, label %.loopexit518, label %.lr.ph557, !llvm.loop !24

.loopexit518:                                     ; preds = %._crit_edge532, %._crit_edge550
  %.pr622 = load i64, ptr %1, align 8, !tbaa !5
  %.not505558 = icmp slt i64 %.pr622, 1
  br i1 %.not505558, label %._crit_edge563, label %.lr.ph562

.lr.ph562:                                        ; preds = %.loopexit518, %287
  %.2560 = phi float [ %292, %287 ], [ 0.000000e+00, %.loopexit518 ]
  %.3490559 = phi i64 [ %293, %287 ], [ 1, %.loopexit518 ]
  %265 = getelementptr inbounds float, ptr %36, i64 %.3490559
  %266 = load float, ptr %265, align 4, !tbaa !9
  %267 = fcmp ogt float %266, %98
  %268 = getelementptr inbounds %struct.complex, ptr %35, i64 %.3490559
  %269 = load float, ptr %268, align 4, !tbaa !18
  %270 = fcmp oge float %269, 0.000000e+00
  %271 = fneg float %269
  %272 = select i1 %270, float %269, float %271
  %273 = fpext float %272 to double
  %274 = call double @r_imag(ptr noundef nonnull %268) #5
  %275 = fptrunc double %274 to float
  %276 = fcmp oge float %275, 0.000000e+00
  %277 = fneg float %275
  %278 = select i1 %276, float %275, float %277
  %279 = fpext float %278 to double
  %280 = fadd double %273, %279
  br i1 %267, label %281, label %283

281:                                              ; preds = %.lr.ph562
  %282 = load float, ptr %265, align 4, !tbaa !9
  br label %287

283:                                              ; preds = %.lr.ph562
  %284 = fadd double %280, %101
  %285 = load float, ptr %265, align 4, !tbaa !9
  %286 = fadd float %97, %285
  br label %287

287:                                              ; preds = %281, %283
  %.sink639 = phi float [ %282, %281 ], [ %286, %283 ]
  %.sink637 = phi double [ %280, %281 ], [ %284, %283 ]
  %288 = fpext float %.sink639 to double
  %289 = fdiv double %.sink637, %288
  %290 = fptrunc double %289 to float
  %291 = fcmp oge float %.2560, %290
  %292 = select i1 %291, float %.2560, float %290
  %293 = add nuw i64 %.3490559, 1
  %exitcond613.not = icmp eq i64 %.3490559, %.pr622
  br i1 %exitcond613.not, label %._crit_edge563, label %.lr.ph562, !llvm.loop !25

._crit_edge563:                                   ; preds = %287, %194, %123, %.loopexit518
  %.2.lcssa = phi float [ 0.000000e+00, %.loopexit518 ], [ 0.000000e+00, %123 ], [ 0.000000e+00, %194 ], [ %292, %287 ]
  store float %.2.lcssa, ptr %103, align 4, !tbaa !9
  %294 = fcmp ogt float %.2.lcssa, %93
  br i1 %294, label %295, label %304

295:                                              ; preds = %._crit_edge563
  %296 = fmul float %.2.lcssa, 2.000000e+00
  %297 = fcmp ole float %296, %.0
  %298 = icmp ult i64 %.0480, 6
  %or.cond = select i1 %297, i1 %298, i1 false
  br i1 %or.cond, label %299, label %304

299:                                              ; preds = %295
  %300 = call i32 @chetrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %14, ptr noundef nonnull %1, ptr noundef nonnull %16) #5
  %301 = call i32 @f2c_caxpy(ptr noundef nonnull %1, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull @c__1, ptr noundef %gep566, ptr noundef nonnull @c__1) #5
  %302 = load float, ptr %103, align 4, !tbaa !9
  %303 = add nuw nsw i64 %.0480, 1
  br label %106

304:                                              ; preds = %295, %._crit_edge563
  %305 = load i64, ptr %1, align 8, !tbaa !5
  %.not506567 = icmp slt i64 %305, 1
  br i1 %.not506567, label %._crit_edge571, label %.lr.ph570

.lr.ph570:                                        ; preds = %304, %.lr.ph570
  %.4568 = phi i64 [ %326, %.lr.ph570 ], [ 1, %304 ]
  %306 = getelementptr inbounds float, ptr %36, i64 %.4568
  %307 = load float, ptr %306, align 4, !tbaa !9
  %308 = fcmp ogt float %307, %98
  %309 = getelementptr inbounds %struct.complex, ptr %35, i64 %.4568
  %310 = load float, ptr %309, align 4, !tbaa !18
  %311 = call double @r_imag(ptr noundef nonnull %309) #5
  %312 = fptrunc double %311 to float
  %313 = insertelement <2 x float> poison, float %310, i64 0
  %314 = insertelement <2 x float> %313, float %312, i64 1
  %315 = fcmp oge <2 x float> %314, zeroinitializer
  %316 = fneg <2 x float> %314
  %317 = select <2 x i1> %315, <2 x float> %314, <2 x float> %316
  %318 = fpext <2 x float> %317 to <2 x double>
  %shift697 = shufflevector <2 x double> %318, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %319 = fadd <2 x double> %shift697, %318
  %320 = extractelement <2 x double> %319, i64 0
  %321 = load float, ptr %306, align 4, !tbaa !9
  %322 = fmul float %102, %321
  %323 = fpext float %322 to double
  %324 = fadd double %320, %323
  %325 = fadd double %324, %101
  %storemerge.in = select i1 %308, double %324, double %325
  %storemerge = fptrunc double %storemerge.in to float
  store float %storemerge, ptr %306, align 4, !tbaa !9
  %326 = add nuw i64 %.4568, 1
  %exitcond614.not = icmp eq i64 %.4568, %305
  br i1 %exitcond614.not, label %._crit_edge571, label %.lr.ph570, !llvm.loop !26

._crit_edge571:                                   ; preds = %.lr.ph570, %304
  store i64 0, ptr %22, align 8, !tbaa !5
  %327 = getelementptr inbounds float, ptr %33, i64 %.1486597
  br label %.loopexit517

.loopexit517:                                     ; preds = %.loopexit517.backedge, %._crit_edge571
  %328 = load i64, ptr %1, align 8, !tbaa !5
  %329 = getelementptr %struct.complex, ptr %14, i64 %328
  %330 = call i32 @clacn2_(ptr noundef nonnull %1, ptr noundef %329, ptr noundef %14, ptr noundef nonnull %327, ptr noundef nonnull %22, ptr noundef nonnull %23) #5
  %331 = load i64, ptr %22, align 8, !tbaa !5
  switch i64 %331, label %.loopexit517.backedge [
    i64 0, label %407
    i64 1, label %332
    i64 2, label %368
  ]

332:                                              ; preds = %.loopexit517
  %333 = call i32 @chetrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %14, ptr noundef nonnull %1, ptr noundef nonnull %16) #5
  %334 = load i64, ptr %1, align 8, !tbaa !5
  %.not510579 = icmp slt i64 %334, 1
  br i1 %.not510579, label %.loopexit517.backedge, label %.lr.ph582.preheader

.loopexit517.backedge:                            ; preds = %332, %..loopexit517_crit_edge, %.loopexit517, %404
  br label %.loopexit517

.lr.ph582.preheader:                              ; preds = %332
  %min.iters.check = icmp eq i64 %334, 1
  br i1 %min.iters.check, label %.lr.ph582.preheader700, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph582.preheader
  %335 = shl i64 %334, 3
  %scevgep = getelementptr i8, ptr %14, i64 %335
  %336 = shl i64 %334, 2
  %scevgep649 = getelementptr i8, ptr %15, i64 %336
  %bound0 = icmp ugt ptr %scevgep649, %14
  %bound1 = icmp ugt ptr %scevgep, %15
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph582.preheader700, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %334, 9223372036854775806
  %ind.end = or i64 %334, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %337 = getelementptr float, ptr %15, i64 %index
  %wide.load = load <2 x float>, ptr %337, align 4, !tbaa !9, !alias.scope !27
  %338 = getelementptr %struct.complex, ptr %14, i64 %index
  %wide.vec = load <4 x float>, ptr %338, align 4, !tbaa !9
  %strided.vec = shufflevector <4 x float> %wide.vec, <4 x float> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec650 = shufflevector <4 x float> %wide.vec, <4 x float> poison, <2 x i32> <i32 1, i32 3>
  %339 = fmul <2 x float> %wide.load, %strided.vec
  %340 = fmul <2 x float> %wide.load, %strided.vec650
  %interleaved.vec = shufflevector <2 x float> %339, <2 x float> %340, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec, ptr %338, align 4, !tbaa !9
  %index.next = add nuw i64 %index, 2
  %341 = icmp eq i64 %index.next, %n.vec
  br i1 %341, label %middle.block, label %vector.body, !llvm.loop !30

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %334, %n.vec
  %342 = shufflevector <2 x float> %339, <2 x float> %340, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n, label %..loopexit517_crit_edge, label %.lr.ph582.preheader700

.lr.ph582.preheader700:                           ; preds = %middle.block, %vector.memcheck, %.lr.ph582.preheader
  %.5580.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph582.preheader ], [ %ind.end, %middle.block ]
  %xtraiter713 = and i64 %334, 1
  %lcmp.mod714.not = icmp eq i64 %xtraiter713, 0
  br i1 %lcmp.mod714.not, label %.lr.ph582.prol.loopexit, label %.lr.ph582.prol

.lr.ph582.prol:                                   ; preds = %.lr.ph582.preheader700
  %343 = getelementptr inbounds float, ptr %36, i64 %.5580.ph
  %344 = load float, ptr %343, align 4, !tbaa !9
  %345 = getelementptr inbounds %struct.complex, ptr %35, i64 %.5580.ph
  %346 = load <2 x float>, ptr %345, align 4, !tbaa !9
  %347 = insertelement <2 x float> poison, float %344, i64 0
  %348 = shufflevector <2 x float> %347, <2 x float> poison, <2 x i32> zeroinitializer
  %349 = fmul <2 x float> %348, %346
  store <2 x float> %349, ptr %345, align 4, !tbaa !9
  %350 = add nuw i64 %.5580.ph, 1
  br label %.lr.ph582.prol.loopexit

.lr.ph582.prol.loopexit:                          ; preds = %.lr.ph582.prol, %.lr.ph582.preheader700
  %.lcssa711.unr = phi <2 x float> [ poison, %.lr.ph582.preheader700 ], [ %349, %.lr.ph582.prol ]
  %.5580.unr = phi i64 [ %.5580.ph, %.lr.ph582.preheader700 ], [ %350, %.lr.ph582.prol ]
  %351 = icmp eq i64 %334, %.5580.ph
  br i1 %351, label %..loopexit517_crit_edge, label %.lr.ph582

.lr.ph582:                                        ; preds = %.lr.ph582.prol.loopexit, %.lr.ph582
  %.5580 = phi i64 [ %367, %.lr.ph582 ], [ %.5580.unr, %.lr.ph582.prol.loopexit ]
  %352 = getelementptr inbounds float, ptr %36, i64 %.5580
  %353 = load float, ptr %352, align 4, !tbaa !9
  %354 = getelementptr inbounds %struct.complex, ptr %35, i64 %.5580
  %355 = load <2 x float>, ptr %354, align 4, !tbaa !9
  %356 = insertelement <2 x float> poison, float %353, i64 0
  %357 = shufflevector <2 x float> %356, <2 x float> poison, <2 x i32> zeroinitializer
  %358 = fmul <2 x float> %357, %355
  store <2 x float> %358, ptr %354, align 4, !tbaa !9
  %359 = add nuw i64 %.5580, 1
  %360 = getelementptr float, ptr %15, i64 %.5580
  %361 = load float, ptr %360, align 4, !tbaa !9
  %362 = getelementptr %struct.complex, ptr %14, i64 %.5580
  %363 = load <2 x float>, ptr %362, align 4, !tbaa !9
  %364 = insertelement <2 x float> poison, float %361, i64 0
  %365 = shufflevector <2 x float> %364, <2 x float> poison, <2 x i32> zeroinitializer
  %366 = fmul <2 x float> %365, %363
  store <2 x float> %366, ptr %362, align 4, !tbaa !9
  %367 = add nuw i64 %.5580, 2
  %exitcond616.not.1 = icmp eq i64 %359, %334
  br i1 %exitcond616.not.1, label %..loopexit517_crit_edge, label %.lr.ph582, !llvm.loop !31

368:                                              ; preds = %.loopexit517
  %369 = load i64, ptr %1, align 8, !tbaa !5
  %.not509572 = icmp slt i64 %369, 1
  br i1 %.not509572, label %404, label %.lr.ph575.preheader

.lr.ph575.preheader:                              ; preds = %368
  %min.iters.check659 = icmp eq i64 %369, 1
  br i1 %min.iters.check659, label %.lr.ph575.preheader701, label %vector.memcheck651

vector.memcheck651:                               ; preds = %.lr.ph575.preheader
  %370 = shl i64 %369, 3
  %scevgep652 = getelementptr i8, ptr %14, i64 %370
  %371 = shl i64 %369, 2
  %scevgep653 = getelementptr i8, ptr %15, i64 %371
  %bound0654 = icmp ugt ptr %scevgep653, %14
  %bound1655 = icmp ugt ptr %scevgep652, %15
  %found.conflict656 = and i1 %bound0654, %bound1655
  br i1 %found.conflict656, label %.lr.ph575.preheader701, label %vector.ph660

vector.ph660:                                     ; preds = %vector.memcheck651
  %n.vec662 = and i64 %369, 9223372036854775806
  %ind.end663 = or i64 %369, 1
  br label %vector.body665

vector.body665:                                   ; preds = %vector.body665, %vector.ph660
  %index666 = phi i64 [ 0, %vector.ph660 ], [ %index.next673, %vector.body665 ]
  %372 = getelementptr float, ptr %15, i64 %index666
  %wide.load668 = load <2 x float>, ptr %372, align 4, !tbaa !9, !alias.scope !32
  %373 = getelementptr %struct.complex, ptr %14, i64 %index666
  %wide.vec669 = load <4 x float>, ptr %373, align 4, !tbaa !9
  %strided.vec670 = shufflevector <4 x float> %wide.vec669, <4 x float> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec671 = shufflevector <4 x float> %wide.vec669, <4 x float> poison, <2 x i32> <i32 1, i32 3>
  %374 = fmul <2 x float> %wide.load668, %strided.vec670
  %375 = fmul <2 x float> %wide.load668, %strided.vec671
  %interleaved.vec672 = shufflevector <2 x float> %374, <2 x float> %375, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec672, ptr %373, align 4, !tbaa !9
  %index.next673 = add nuw i64 %index666, 2
  %376 = icmp eq i64 %index.next673, %n.vec662
  br i1 %376, label %middle.block657, label %vector.body665, !llvm.loop !35

middle.block657:                                  ; preds = %vector.body665
  %cmp.n674 = icmp eq i64 %369, %n.vec662
  %377 = shufflevector <2 x float> %374, <2 x float> %375, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n674, label %._crit_edge576, label %.lr.ph575.preheader701

.lr.ph575.preheader701:                           ; preds = %middle.block657, %vector.memcheck651, %.lr.ph575.preheader
  %.6573.ph = phi i64 [ 1, %vector.memcheck651 ], [ 1, %.lr.ph575.preheader ], [ %ind.end663, %middle.block657 ]
  %xtraiter = and i64 %369, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph575.prol.loopexit, label %.lr.ph575.prol

.lr.ph575.prol:                                   ; preds = %.lr.ph575.preheader701
  %378 = getelementptr inbounds float, ptr %36, i64 %.6573.ph
  %379 = load float, ptr %378, align 4, !tbaa !9
  %380 = getelementptr inbounds %struct.complex, ptr %35, i64 %.6573.ph
  %381 = load <2 x float>, ptr %380, align 4, !tbaa !9
  %382 = insertelement <2 x float> poison, float %379, i64 0
  %383 = shufflevector <2 x float> %382, <2 x float> poison, <2 x i32> zeroinitializer
  %384 = fmul <2 x float> %383, %381
  store <2 x float> %384, ptr %380, align 4, !tbaa !9
  %385 = add nuw i64 %.6573.ph, 1
  br label %.lr.ph575.prol.loopexit

.lr.ph575.prol.loopexit:                          ; preds = %.lr.ph575.prol, %.lr.ph575.preheader701
  %.lcssa708.unr = phi <2 x float> [ poison, %.lr.ph575.preheader701 ], [ %384, %.lr.ph575.prol ]
  %.6573.unr = phi i64 [ %.6573.ph, %.lr.ph575.preheader701 ], [ %385, %.lr.ph575.prol ]
  %386 = icmp eq i64 %369, %.6573.ph
  br i1 %386, label %._crit_edge576, label %.lr.ph575

.lr.ph575:                                        ; preds = %.lr.ph575.prol.loopexit, %.lr.ph575
  %.6573 = phi i64 [ %402, %.lr.ph575 ], [ %.6573.unr, %.lr.ph575.prol.loopexit ]
  %387 = getelementptr inbounds float, ptr %36, i64 %.6573
  %388 = load float, ptr %387, align 4, !tbaa !9
  %389 = getelementptr inbounds %struct.complex, ptr %35, i64 %.6573
  %390 = load <2 x float>, ptr %389, align 4, !tbaa !9
  %391 = insertelement <2 x float> poison, float %388, i64 0
  %392 = shufflevector <2 x float> %391, <2 x float> poison, <2 x i32> zeroinitializer
  %393 = fmul <2 x float> %392, %390
  store <2 x float> %393, ptr %389, align 4, !tbaa !9
  %394 = add nuw i64 %.6573, 1
  %395 = getelementptr float, ptr %15, i64 %.6573
  %396 = load float, ptr %395, align 4, !tbaa !9
  %397 = getelementptr %struct.complex, ptr %14, i64 %.6573
  %398 = load <2 x float>, ptr %397, align 4, !tbaa !9
  %399 = insertelement <2 x float> poison, float %396, i64 0
  %400 = shufflevector <2 x float> %399, <2 x float> poison, <2 x i32> zeroinitializer
  %401 = fmul <2 x float> %400, %398
  store <2 x float> %401, ptr %397, align 4, !tbaa !9
  %402 = add nuw i64 %.6573, 2
  %exitcond615.not.1 = icmp eq i64 %394, %369
  br i1 %exitcond615.not.1, label %._crit_edge576, label %.lr.ph575, !llvm.loop !36

._crit_edge576:                                   ; preds = %.lr.ph575.prol.loopexit, %.lr.ph575, %middle.block657
  %403 = phi <2 x float> [ %377, %middle.block657 ], [ %.lcssa708.unr, %.lr.ph575.prol.loopexit ], [ %401, %.lr.ph575 ]
  store <2 x float> %403, ptr %21, align 8, !tbaa !9
  br label %404

404:                                              ; preds = %._crit_edge576, %368
  %405 = call i32 @chetrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %14, ptr noundef nonnull %1, ptr noundef nonnull %16) #5
  br label %.loopexit517.backedge

..loopexit517_crit_edge:                          ; preds = %.lr.ph582.prol.loopexit, %.lr.ph582, %middle.block
  %406 = phi <2 x float> [ %342, %middle.block ], [ %.lcssa711.unr, %.lr.ph582.prol.loopexit ], [ %366, %.lr.ph582 ]
  store <2 x float> %406, ptr %21, align 8, !tbaa !9
  br label %.loopexit517.backedge

407:                                              ; preds = %.loopexit517
  %408 = load i64, ptr %1, align 8, !tbaa !5
  %.not508587 = icmp slt i64 %408, 1
  br i1 %.not508587, label %._crit_edge592.thread, label %.lr.ph591

.lr.ph591:                                        ; preds = %407, %.lr.ph591
  %.1589 = phi float [ %420, %.lr.ph591 ], [ 0.000000e+00, %407 ]
  %.7588 = phi i64 [ %421, %.lr.ph591 ], [ 1, %407 ]
  %gep586 = getelementptr %struct.complex, ptr %invariant.gep535, i64 %.7588
  %409 = load float, ptr %gep586, align 4, !tbaa !18
  %410 = call double @r_imag(ptr noundef nonnull %gep586) #5
  %411 = fptrunc double %410 to float
  %412 = insertelement <2 x float> poison, float %409, i64 0
  %413 = insertelement <2 x float> %412, float %411, i64 1
  %414 = fcmp oge <2 x float> %413, zeroinitializer
  %415 = fneg <2 x float> %413
  %416 = select <2 x i1> %414, <2 x float> %413, <2 x float> %415
  %shift698 = shufflevector <2 x float> %416, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %417 = fadd <2 x float> %416, %shift698
  %418 = extractelement <2 x float> %417, i64 0
  %419 = fcmp oge float %.1589, %418
  %420 = select i1 %419, float %.1589, float %418
  %421 = add nuw i64 %.7588, 1
  %exitcond617.not = icmp eq i64 %.7588, %408
  br i1 %exitcond617.not, label %._crit_edge592, label %.lr.ph591, !llvm.loop !37

._crit_edge592:                                   ; preds = %.lr.ph591
  %422 = fcmp une float %420, 0.000000e+00
  br i1 %422, label %423, label %._crit_edge592.thread

423:                                              ; preds = %._crit_edge592
  %424 = load float, ptr %327, align 4, !tbaa !9
  %425 = fdiv float %424, %420
  store float %425, ptr %327, align 4, !tbaa !9
  br label %._crit_edge592.thread

._crit_edge592.thread:                            ; preds = %407, %._crit_edge592, %423
  %426 = add nuw nsw i64 %.1486597, 1
  %.not500.not = icmp slt i64 %.1486597, %99
  br i1 %.not500.not, label %.preheader, label %.loopexit, !llvm.loop !38

.loopexit:                                        ; preds = %._crit_edge592.thread, %.lr.ph601.prol.loopexit, %.lr.ph601, %middle.block676, %64, %90, %65, %.thread
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #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 @f2c_ccopy(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare double @r_imag(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = distinct !{!11, !12, !13, !14}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.isvectorized", i32 1}
!14 = !{!"llvm.loop.unroll.runtime.disable"}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.unroll.disable"}
!17 = distinct !{!17, !12, !13}
!18 = !{!19, !10, i64 0}
!19 = !{!"", !10, i64 0, !10, i64 4}
!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 = !{!28}
!28 = distinct !{!28, !29}
!29 = distinct !{!29, !"LVerDomain"}
!30 = distinct !{!30, !12, !13, !14}
!31 = distinct !{!31, !12, !13}
!32 = !{!33}
!33 = distinct !{!33, !34}
!34 = distinct !{!34, !"LVerDomain"}
!35 = distinct !{!35, !12, !13, !14}
!36 = distinct !{!36, !12, !13}
!37 = distinct !{!37, !12}
!38 = distinct !{!38, !12}


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