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

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

%struct.complex = type { float, float }

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

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

110:                                              ; preds = %16
  %111 = load ptr, ptr %18, align 8, !tbaa !5
  %112 = call i64 @lsame_(ptr noundef %111, ptr noundef @.str.2)
  %113 = icmp ne i64 %112, 0
  br i1 %113, label %116, label %114

114:                                              ; preds = %110
  %115 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -1, ptr %115, align 8, !tbaa !9
  br label %202

116:                                              ; preds = %110, %16
  %117 = load i64, ptr %63, align 8, !tbaa !9
  %118 = icmp ne i64 %117, 0
  br i1 %118, label %129, label %119

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

123:                                              ; preds = %119
  %124 = load ptr, ptr %19, align 8, !tbaa !5
  %125 = call i64 @lsame_(ptr noundef %124, ptr noundef @.str.4)
  %126 = icmp ne i64 %125, 0
  br i1 %126, label %129, label %127

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

129:                                              ; preds = %123, %119, %116
  %130 = load i64, ptr %66, align 8, !tbaa !9
  %131 = icmp ne i64 %130, 0
  br i1 %131, label %138, label %132

132:                                              ; preds = %129
  %133 = load ptr, ptr %20, align 8, !tbaa !5
  %134 = call i64 @lsame_(ptr noundef %133, ptr noundef @.str)
  %135 = icmp ne i64 %134, 0
  br i1 %135, label %138, label %136

136:                                              ; preds = %132
  %137 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -3, ptr %137, align 8, !tbaa !9
  br label %200

138:                                              ; preds = %132, %129
  %139 = load ptr, ptr %21, align 8, !tbaa !5
  %140 = load i64, ptr %139, align 8, !tbaa !9
  %141 = icmp slt i64 %140, 0
  br i1 %141, label %142, label %144

142:                                              ; preds = %138
  %143 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -4, ptr %143, align 8, !tbaa !9
  br label %199

144:                                              ; preds = %138
  %145 = load ptr, ptr %22, align 8, !tbaa !5
  %146 = load i64, ptr %145, align 8, !tbaa !9
  %147 = icmp slt i64 %146, 0
  br i1 %147, label %148, label %150

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

150:                                              ; preds = %144
  %151 = load ptr, ptr %24, align 8, !tbaa !5
  %152 = load i64, ptr %151, align 8, !tbaa !9
  %153 = load ptr, ptr %21, 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 %21, 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 %33, align 8, !tbaa !5
  store i64 -7, ptr %164, align 8, !tbaa !9
  br label %197

165:                                              ; preds = %160
  %166 = load ptr, ptr %26, align 8, !tbaa !5
  %167 = load i64, ptr %166, align 8, !tbaa !9
  %168 = load ptr, ptr %21, 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 %21, 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 %33, align 8, !tbaa !5
  store i64 -9, ptr %179, align 8, !tbaa !9
  br label %196

180:                                              ; preds = %175
  %181 = load ptr, ptr %28, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  %183 = load ptr, ptr %21, 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 %21, 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 %33, align 8, !tbaa !5
  store i64 -11, 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, %142
  br label %200

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

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

202:                                              ; preds = %201, %114
  %203 = load ptr, ptr %33, align 8, !tbaa !5
  %204 = load i64, ptr %203, align 8, !tbaa !9
  %205 = icmp ne i64 %204, 0
  br i1 %205, label %206, label %211

206:                                              ; preds = %202
  %207 = load ptr, ptr %33, align 8, !tbaa !5
  %208 = load i64, ptr %207, align 8, !tbaa !9
  %209 = sub nsw i64 0, %208
  store i64 %209, ptr %40, align 8, !tbaa !9
  %210 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %40)
  store i32 0, ptr %17, align 4
  store i32 1, ptr %68, align 4
  br label %1852

211:                                              ; preds = %202
  %212 = load ptr, ptr %21, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  %214 = icmp eq i64 %213, 0
  br i1 %214, label %219, label %215

215:                                              ; preds = %211
  %216 = load ptr, ptr %22, align 8, !tbaa !5
  %217 = load i64, ptr %216, align 8, !tbaa !9
  %218 = icmp eq i64 %217, 0
  br i1 %218, label %219, label %237

219:                                              ; preds = %215, %211
  %220 = load ptr, ptr %22, align 8, !tbaa !5
  %221 = load i64, ptr %220, align 8, !tbaa !9
  store i64 %221, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  br label %222

222:                                              ; preds = %233, %219
  %223 = load i64, ptr %51, align 8, !tbaa !9
  %224 = load i64, ptr %40, align 8, !tbaa !9
  %225 = icmp sle i64 %223, %224
  br i1 %225, label %226, label %236

226:                                              ; preds = %222
  %227 = load ptr, ptr %29, align 8, !tbaa !5
  %228 = load i64, ptr %51, align 8, !tbaa !9
  %229 = getelementptr inbounds float, ptr %227, i64 %228
  store float 0.000000e+00, ptr %229, align 4, !tbaa !11
  %230 = load ptr, ptr %30, align 8, !tbaa !5
  %231 = load i64, ptr %51, align 8, !tbaa !9
  %232 = getelementptr inbounds float, ptr %230, i64 %231
  store float 0.000000e+00, ptr %232, align 4, !tbaa !11
  br label %233

233:                                              ; preds = %226
  %234 = load i64, ptr %51, align 8, !tbaa !9
  %235 = add nsw i64 %234, 1
  store i64 %235, ptr %51, align 8, !tbaa !9
  br label %222, !llvm.loop !13

236:                                              ; preds = %222
  store i32 0, ptr %17, align 4
  store i32 1, ptr %68, align 4
  br label %1852

237:                                              ; preds = %215
  %238 = load i64, ptr %63, align 8, !tbaa !9
  %239 = icmp ne i64 %238, 0
  br i1 %239, label %240, label %243

240:                                              ; preds = %237
  %241 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  store i8 78, ptr %241, align 1, !tbaa !15
  %242 = getelementptr inbounds [1 x i8], ptr %65, i64 0, i64 0
  store i8 67, ptr %242, align 1, !tbaa !15
  br label %246

243:                                              ; preds = %237
  %244 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  store i8 67, ptr %244, align 1, !tbaa !15
  %245 = getelementptr inbounds [1 x i8], ptr %65, i64 0, i64 0
  store i8 78, ptr %245, align 1, !tbaa !15
  br label %246

246:                                              ; preds = %243, %240
  %247 = load ptr, ptr %21, align 8, !tbaa !5
  %248 = load i64, ptr %247, align 8, !tbaa !9
  %249 = add nsw i64 %248, 1
  store i64 %249, ptr %55, align 8, !tbaa !9
  %250 = call double @slamch_(ptr noundef @.str.6)
  %251 = fptrunc double %250 to float
  store float %251, ptr %56, align 4, !tbaa !11
  %252 = call double @slamch_(ptr noundef @.str.7)
  %253 = fptrunc double %252 to float
  store float %253, ptr %62, align 4, !tbaa !11
  %254 = load i64, ptr %55, align 8, !tbaa !9
  %255 = sitofp i64 %254 to float
  %256 = load float, ptr %62, align 4, !tbaa !11
  %257 = fmul float %255, %256
  store float %257, ptr %58, align 4, !tbaa !11
  %258 = load float, ptr %58, align 4, !tbaa !11
  %259 = load float, ptr %56, align 4, !tbaa !11
  %260 = fdiv float %258, %259
  store float %260, ptr %59, align 4, !tbaa !11
  %261 = load ptr, ptr %22, align 8, !tbaa !5
  %262 = load i64, ptr %261, align 8, !tbaa !9
  store i64 %262, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  br label %263

263:                                              ; preds = %1848, %246
  %264 = load i64, ptr %51, align 8, !tbaa !9
  %265 = load i64, ptr %40, align 8, !tbaa !9
  %266 = icmp sle i64 %264, %265
  br i1 %266, label %267, label %1851

267:                                              ; preds = %263
  %268 = load ptr, ptr %21, align 8, !tbaa !5
  %269 = load ptr, ptr %27, align 8, !tbaa !5
  %270 = load i64, ptr %51, align 8, !tbaa !9
  %271 = load i64, ptr %38, align 8, !tbaa !9
  %272 = mul nsw i64 %270, %271
  %273 = add nsw i64 %272, 1
  %274 = getelementptr inbounds %struct.complex, ptr %269, i64 %273
  %275 = load ptr, ptr %31, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.complex, ptr %275, i64 1
  %277 = call i32 @f2c_ccopy(ptr noundef %268, ptr noundef %274, ptr noundef @c__1, ptr noundef %276, ptr noundef @c__1)
  %278 = load ptr, ptr %18, align 8, !tbaa !5
  %279 = load ptr, ptr %19, align 8, !tbaa !5
  %280 = load ptr, ptr %20, align 8, !tbaa !5
  %281 = load ptr, ptr %21, align 8, !tbaa !5
  %282 = load ptr, ptr %23, align 8, !tbaa !5
  %283 = load i64, ptr %35, align 8, !tbaa !9
  %284 = getelementptr inbounds %struct.complex, ptr %282, i64 %283
  %285 = load ptr, ptr %24, align 8, !tbaa !5
  %286 = load ptr, ptr %31, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.complex, ptr %286, i64 1
  %288 = call i32 @f2c_ctrmv(ptr noundef %278, ptr noundef %279, ptr noundef %280, ptr noundef %281, ptr noundef %284, ptr noundef %285, ptr noundef %287, ptr noundef @c__1)
  %289 = getelementptr inbounds %struct.complex, ptr %49, i32 0, i32 0
  store float -1.000000e+00, ptr %289, align 4, !tbaa !16
  %290 = getelementptr inbounds %struct.complex, ptr %49, i32 0, i32 1
  store float -0.000000e+00, ptr %290, align 4, !tbaa !18
  %291 = load ptr, ptr %21, align 8, !tbaa !5
  %292 = load ptr, ptr %25, align 8, !tbaa !5
  %293 = load i64, ptr %51, align 8, !tbaa !9
  %294 = load i64, ptr %36, align 8, !tbaa !9
  %295 = mul nsw i64 %293, %294
  %296 = add nsw i64 %295, 1
  %297 = getelementptr inbounds %struct.complex, ptr %292, i64 %296
  %298 = load ptr, ptr %31, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.complex, ptr %298, i64 1
  %300 = call i32 @f2c_caxpy(ptr noundef %291, ptr noundef %49, ptr noundef %297, ptr noundef @c__1, ptr noundef %299, ptr noundef @c__1)
  %301 = load ptr, ptr %21, align 8, !tbaa !5
  %302 = load i64, ptr %301, align 8, !tbaa !9
  store i64 %302, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %303

303:                                              ; preds = %352, %267
  %304 = load i64, ptr %50, align 8, !tbaa !9
  %305 = load i64, ptr %41, align 8, !tbaa !9
  %306 = icmp sle i64 %304, %305
  br i1 %306, label %307, label %355

307:                                              ; preds = %303
  %308 = load i64, ptr %50, align 8, !tbaa !9
  %309 = load i64, ptr %51, align 8, !tbaa !9
  %310 = load i64, ptr %36, align 8, !tbaa !9
  %311 = mul nsw i64 %309, %310
  %312 = add nsw i64 %308, %311
  store i64 %312, ptr %42, align 8, !tbaa !9
  %313 = load ptr, ptr %25, align 8, !tbaa !5
  %314 = load i64, ptr %42, align 8, !tbaa !9
  %315 = getelementptr inbounds %struct.complex, ptr %313, i64 %314
  %316 = getelementptr inbounds %struct.complex, ptr %315, i32 0, i32 0
  %317 = load float, ptr %316, align 4, !tbaa !16
  store float %317, ptr %45, align 4, !tbaa !11
  %318 = load float, ptr %45, align 4, !tbaa !11
  %319 = fcmp oge float %318, 0.000000e+00
  br i1 %319, label %320, label %322

320:                                              ; preds = %307
  %321 = load float, ptr %45, align 4, !tbaa !11
  br label %325

322:                                              ; preds = %307
  %323 = load float, ptr %45, align 4, !tbaa !11
  %324 = fneg float %323
  br label %325

325:                                              ; preds = %322, %320
  %326 = phi float [ %321, %320 ], [ %324, %322 ]
  %327 = fpext float %326 to double
  %328 = load ptr, ptr %25, align 8, !tbaa !5
  %329 = load i64, ptr %50, align 8, !tbaa !9
  %330 = load i64, ptr %51, align 8, !tbaa !9
  %331 = load i64, ptr %36, align 8, !tbaa !9
  %332 = mul nsw i64 %330, %331
  %333 = add nsw i64 %329, %332
  %334 = getelementptr inbounds %struct.complex, ptr %328, i64 %333
  %335 = call double @r_imag(ptr noundef %334)
  %336 = fptrunc double %335 to float
  store float %336, ptr %46, align 4, !tbaa !11
  %337 = load float, ptr %46, align 4, !tbaa !11
  %338 = fcmp oge float %337, 0.000000e+00
  br i1 %338, label %339, label %341

339:                                              ; preds = %325
  %340 = load float, ptr %46, align 4, !tbaa !11
  br label %344

341:                                              ; preds = %325
  %342 = load float, ptr %46, align 4, !tbaa !11
  %343 = fneg float %342
  br label %344

344:                                              ; preds = %341, %339
  %345 = phi float [ %340, %339 ], [ %343, %341 ]
  %346 = fpext float %345 to double
  %347 = fadd double %327, %346
  %348 = fptrunc double %347 to float
  %349 = load ptr, ptr %32, align 8, !tbaa !5
  %350 = load i64, ptr %50, align 8, !tbaa !9
  %351 = getelementptr inbounds float, ptr %349, i64 %350
  store float %348, ptr %351, align 4, !tbaa !11
  br label %352

352:                                              ; preds = %344
  %353 = load i64, ptr %50, align 8, !tbaa !9
  %354 = add nsw i64 %353, 1
  store i64 %354, ptr %50, align 8, !tbaa !9
  br label %303, !llvm.loop !19

355:                                              ; preds = %303
  %356 = load i64, ptr %63, align 8, !tbaa !9
  %357 = icmp ne i64 %356, 0
  br i1 %357, label %358, label %836

358:                                              ; preds = %355
  %359 = load i64, ptr %61, align 8, !tbaa !9
  %360 = icmp ne i64 %359, 0
  br i1 %360, label %361, label %596

361:                                              ; preds = %358
  %362 = load i64, ptr %66, align 8, !tbaa !9
  %363 = icmp ne i64 %362, 0
  br i1 %363, label %364, label %476

364:                                              ; preds = %361
  %365 = load ptr, ptr %21, align 8, !tbaa !5
  %366 = load i64, ptr %365, align 8, !tbaa !9
  store i64 %366, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %367

367:                                              ; preds = %472, %364
  %368 = load i64, ptr %52, align 8, !tbaa !9
  %369 = load i64, ptr %41, align 8, !tbaa !9
  %370 = icmp sle i64 %368, %369
  br i1 %370, label %371, label %475

371:                                              ; preds = %367
  %372 = load i64, ptr %52, align 8, !tbaa !9
  %373 = load i64, ptr %51, align 8, !tbaa !9
  %374 = load i64, ptr %38, align 8, !tbaa !9
  %375 = mul nsw i64 %373, %374
  %376 = add nsw i64 %372, %375
  store i64 %376, ptr %42, align 8, !tbaa !9
  %377 = load ptr, ptr %27, align 8, !tbaa !5
  %378 = load i64, ptr %42, align 8, !tbaa !9
  %379 = getelementptr inbounds %struct.complex, ptr %377, i64 %378
  %380 = getelementptr inbounds %struct.complex, ptr %379, i32 0, i32 0
  %381 = load float, ptr %380, align 4, !tbaa !16
  store float %381, ptr %45, align 4, !tbaa !11
  %382 = load float, ptr %45, align 4, !tbaa !11
  %383 = fcmp oge float %382, 0.000000e+00
  br i1 %383, label %384, label %386

384:                                              ; preds = %371
  %385 = load float, ptr %45, align 4, !tbaa !11
  br label %389

386:                                              ; preds = %371
  %387 = load float, ptr %45, align 4, !tbaa !11
  %388 = fneg float %387
  br label %389

389:                                              ; preds = %386, %384
  %390 = phi float [ %385, %384 ], [ %388, %386 ]
  %391 = fpext float %390 to double
  %392 = load ptr, ptr %27, align 8, !tbaa !5
  %393 = load i64, ptr %52, align 8, !tbaa !9
  %394 = load i64, ptr %51, align 8, !tbaa !9
  %395 = load i64, ptr %38, align 8, !tbaa !9
  %396 = mul nsw i64 %394, %395
  %397 = add nsw i64 %393, %396
  %398 = getelementptr inbounds %struct.complex, ptr %392, i64 %397
  %399 = call double @r_imag(ptr noundef %398)
  %400 = fptrunc double %399 to float
  store float %400, ptr %46, align 4, !tbaa !11
  %401 = load float, ptr %46, align 4, !tbaa !11
  %402 = fcmp oge float %401, 0.000000e+00
  br i1 %402, label %403, label %405

403:                                              ; preds = %389
  %404 = load float, ptr %46, align 4, !tbaa !11
  br label %408

405:                                              ; preds = %389
  %406 = load float, ptr %46, align 4, !tbaa !11
  %407 = fneg float %406
  br label %408

408:                                              ; preds = %405, %403
  %409 = phi float [ %404, %403 ], [ %407, %405 ]
  %410 = fpext float %409 to double
  %411 = fadd double %391, %410
  %412 = fptrunc double %411 to float
  store float %412, ptr %54, align 4, !tbaa !11
  %413 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %413, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %414

414:                                              ; preds = %468, %408
  %415 = load i64, ptr %50, align 8, !tbaa !9
  %416 = load i64, ptr %42, align 8, !tbaa !9
  %417 = icmp sle i64 %415, %416
  br i1 %417, label %418, label %471

418:                                              ; preds = %414
  %419 = load i64, ptr %50, align 8, !tbaa !9
  %420 = load i64, ptr %52, align 8, !tbaa !9
  %421 = load i64, ptr %34, align 8, !tbaa !9
  %422 = mul nsw i64 %420, %421
  %423 = add nsw i64 %419, %422
  store i64 %423, ptr %43, align 8, !tbaa !9
  %424 = load ptr, ptr %23, align 8, !tbaa !5
  %425 = load i64, ptr %43, align 8, !tbaa !9
  %426 = getelementptr inbounds %struct.complex, ptr %424, i64 %425
  %427 = getelementptr inbounds %struct.complex, ptr %426, i32 0, i32 0
  %428 = load float, ptr %427, align 4, !tbaa !16
  store float %428, ptr %45, align 4, !tbaa !11
  %429 = load float, ptr %45, align 4, !tbaa !11
  %430 = fcmp oge float %429, 0.000000e+00
  br i1 %430, label %431, label %433

431:                                              ; preds = %418
  %432 = load float, ptr %45, align 4, !tbaa !11
  br label %436

433:                                              ; preds = %418
  %434 = load float, ptr %45, align 4, !tbaa !11
  %435 = fneg float %434
  br label %436

436:                                              ; preds = %433, %431
  %437 = phi float [ %432, %431 ], [ %435, %433 ]
  %438 = fpext float %437 to double
  %439 = load ptr, ptr %23, align 8, !tbaa !5
  %440 = load i64, ptr %50, align 8, !tbaa !9
  %441 = load i64, ptr %52, align 8, !tbaa !9
  %442 = load i64, ptr %34, align 8, !tbaa !9
  %443 = mul nsw i64 %441, %442
  %444 = add nsw i64 %440, %443
  %445 = getelementptr inbounds %struct.complex, ptr %439, i64 %444
  %446 = call double @r_imag(ptr noundef %445)
  %447 = fptrunc double %446 to float
  store float %447, ptr %46, align 4, !tbaa !11
  %448 = load float, ptr %46, align 4, !tbaa !11
  %449 = fcmp oge float %448, 0.000000e+00
  br i1 %449, label %450, label %452

450:                                              ; preds = %436
  %451 = load float, ptr %46, align 4, !tbaa !11
  br label %455

452:                                              ; preds = %436
  %453 = load float, ptr %46, align 4, !tbaa !11
  %454 = fneg float %453
  br label %455

455:                                              ; preds = %452, %450
  %456 = phi float [ %451, %450 ], [ %454, %452 ]
  %457 = fpext float %456 to double
  %458 = fadd double %438, %457
  %459 = load float, ptr %54, align 4, !tbaa !11
  %460 = fpext float %459 to double
  %461 = load ptr, ptr %32, align 8, !tbaa !5
  %462 = load i64, ptr %50, align 8, !tbaa !9
  %463 = getelementptr inbounds float, ptr %461, i64 %462
  %464 = load float, ptr %463, align 4, !tbaa !11
  %465 = fpext float %464 to double
  %466 = call double @llvm.fmuladd.f64(double %458, double %460, double %465)
  %467 = fptrunc double %466 to float
  store float %467, ptr %463, align 4, !tbaa !11
  br label %468

468:                                              ; preds = %455
  %469 = load i64, ptr %50, align 8, !tbaa !9
  %470 = add nsw i64 %469, 1
  store i64 %470, ptr %50, align 8, !tbaa !9
  br label %414, !llvm.loop !20

471:                                              ; preds = %414
  br label %472

472:                                              ; preds = %471
  %473 = load i64, ptr %52, align 8, !tbaa !9
  %474 = add nsw i64 %473, 1
  store i64 %474, ptr %52, align 8, !tbaa !9
  br label %367, !llvm.loop !21

475:                                              ; preds = %367
  br label %595

476:                                              ; preds = %361
  %477 = load ptr, ptr %21, align 8, !tbaa !5
  %478 = load i64, ptr %477, align 8, !tbaa !9
  store i64 %478, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %479

479:                                              ; preds = %591, %476
  %480 = load i64, ptr %52, align 8, !tbaa !9
  %481 = load i64, ptr %41, align 8, !tbaa !9
  %482 = icmp sle i64 %480, %481
  br i1 %482, label %483, label %594

483:                                              ; preds = %479
  %484 = load i64, ptr %52, align 8, !tbaa !9
  %485 = load i64, ptr %51, align 8, !tbaa !9
  %486 = load i64, ptr %38, align 8, !tbaa !9
  %487 = mul nsw i64 %485, %486
  %488 = add nsw i64 %484, %487
  store i64 %488, ptr %42, align 8, !tbaa !9
  %489 = load ptr, ptr %27, align 8, !tbaa !5
  %490 = load i64, ptr %42, align 8, !tbaa !9
  %491 = getelementptr inbounds %struct.complex, ptr %489, i64 %490
  %492 = getelementptr inbounds %struct.complex, ptr %491, i32 0, i32 0
  %493 = load float, ptr %492, align 4, !tbaa !16
  store float %493, ptr %45, align 4, !tbaa !11
  %494 = load float, ptr %45, align 4, !tbaa !11
  %495 = fcmp oge float %494, 0.000000e+00
  br i1 %495, label %496, label %498

496:                                              ; preds = %483
  %497 = load float, ptr %45, align 4, !tbaa !11
  br label %501

498:                                              ; preds = %483
  %499 = load float, ptr %45, align 4, !tbaa !11
  %500 = fneg float %499
  br label %501

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

515:                                              ; preds = %501
  %516 = load float, ptr %46, align 4, !tbaa !11
  br label %520

517:                                              ; preds = %501
  %518 = load float, ptr %46, align 4, !tbaa !11
  %519 = fneg float %518
  br label %520

520:                                              ; preds = %517, %515
  %521 = phi float [ %516, %515 ], [ %519, %517 ]
  %522 = fpext float %521 to double
  %523 = fadd double %503, %522
  %524 = fptrunc double %523 to float
  store float %524, ptr %54, align 4, !tbaa !11
  %525 = load i64, ptr %52, align 8, !tbaa !9
  %526 = sub nsw i64 %525, 1
  store i64 %526, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %527

527:                                              ; preds = %581, %520
  %528 = load i64, ptr %50, align 8, !tbaa !9
  %529 = load i64, ptr %42, align 8, !tbaa !9
  %530 = icmp sle i64 %528, %529
  br i1 %530, label %531, label %584

531:                                              ; preds = %527
  %532 = load i64, ptr %50, align 8, !tbaa !9
  %533 = load i64, ptr %52, align 8, !tbaa !9
  %534 = load i64, ptr %34, align 8, !tbaa !9
  %535 = mul nsw i64 %533, %534
  %536 = add nsw i64 %532, %535
  store i64 %536, ptr %43, align 8, !tbaa !9
  %537 = load ptr, ptr %23, align 8, !tbaa !5
  %538 = load i64, ptr %43, align 8, !tbaa !9
  %539 = getelementptr inbounds %struct.complex, ptr %537, i64 %538
  %540 = getelementptr inbounds %struct.complex, ptr %539, i32 0, i32 0
  %541 = load float, ptr %540, align 4, !tbaa !16
  store float %541, ptr %45, align 4, !tbaa !11
  %542 = load float, ptr %45, align 4, !tbaa !11
  %543 = fcmp oge float %542, 0.000000e+00
  br i1 %543, label %544, label %546

544:                                              ; preds = %531
  %545 = load float, ptr %45, align 4, !tbaa !11
  br label %549

546:                                              ; preds = %531
  %547 = load float, ptr %45, align 4, !tbaa !11
  %548 = fneg float %547
  br label %549

549:                                              ; preds = %546, %544
  %550 = phi float [ %545, %544 ], [ %548, %546 ]
  %551 = fpext float %550 to double
  %552 = load ptr, ptr %23, align 8, !tbaa !5
  %553 = load i64, ptr %50, align 8, !tbaa !9
  %554 = load i64, ptr %52, align 8, !tbaa !9
  %555 = load i64, ptr %34, align 8, !tbaa !9
  %556 = mul nsw i64 %554, %555
  %557 = add nsw i64 %553, %556
  %558 = getelementptr inbounds %struct.complex, ptr %552, i64 %557
  %559 = call double @r_imag(ptr noundef %558)
  %560 = fptrunc double %559 to float
  store float %560, ptr %46, align 4, !tbaa !11
  %561 = load float, ptr %46, align 4, !tbaa !11
  %562 = fcmp oge float %561, 0.000000e+00
  br i1 %562, label %563, label %565

563:                                              ; preds = %549
  %564 = load float, ptr %46, align 4, !tbaa !11
  br label %568

565:                                              ; preds = %549
  %566 = load float, ptr %46, align 4, !tbaa !11
  %567 = fneg float %566
  br label %568

568:                                              ; preds = %565, %563
  %569 = phi float [ %564, %563 ], [ %567, %565 ]
  %570 = fpext float %569 to double
  %571 = fadd double %551, %570
  %572 = load float, ptr %54, align 4, !tbaa !11
  %573 = fpext float %572 to double
  %574 = load ptr, ptr %32, align 8, !tbaa !5
  %575 = load i64, ptr %50, align 8, !tbaa !9
  %576 = getelementptr inbounds float, ptr %574, i64 %575
  %577 = load float, ptr %576, align 4, !tbaa !11
  %578 = fpext float %577 to double
  %579 = call double @llvm.fmuladd.f64(double %571, double %573, double %578)
  %580 = fptrunc double %579 to float
  store float %580, ptr %576, align 4, !tbaa !11
  br label %581

581:                                              ; preds = %568
  %582 = load i64, ptr %50, align 8, !tbaa !9
  %583 = add nsw i64 %582, 1
  store i64 %583, ptr %50, align 8, !tbaa !9
  br label %527, !llvm.loop !22

584:                                              ; preds = %527
  %585 = load float, ptr %54, align 4, !tbaa !11
  %586 = load ptr, ptr %32, align 8, !tbaa !5
  %587 = load i64, ptr %52, align 8, !tbaa !9
  %588 = getelementptr inbounds float, ptr %586, i64 %587
  %589 = load float, ptr %588, align 4, !tbaa !11
  %590 = fadd float %589, %585
  store float %590, ptr %588, align 4, !tbaa !11
  br label %591

591:                                              ; preds = %584
  %592 = load i64, ptr %52, align 8, !tbaa !9
  %593 = add nsw i64 %592, 1
  store i64 %593, ptr %52, align 8, !tbaa !9
  br label %479, !llvm.loop !23

594:                                              ; preds = %479
  br label %595

595:                                              ; preds = %594, %475
  br label %835

596:                                              ; preds = %358
  %597 = load i64, ptr %66, align 8, !tbaa !9
  %598 = icmp ne i64 %597, 0
  br i1 %598, label %599, label %713

599:                                              ; preds = %596
  %600 = load ptr, ptr %21, align 8, !tbaa !5
  %601 = load i64, ptr %600, align 8, !tbaa !9
  store i64 %601, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %602

602:                                              ; preds = %709, %599
  %603 = load i64, ptr %52, align 8, !tbaa !9
  %604 = load i64, ptr %41, align 8, !tbaa !9
  %605 = icmp sle i64 %603, %604
  br i1 %605, label %606, label %712

606:                                              ; preds = %602
  %607 = load i64, ptr %52, align 8, !tbaa !9
  %608 = load i64, ptr %51, align 8, !tbaa !9
  %609 = load i64, ptr %38, align 8, !tbaa !9
  %610 = mul nsw i64 %608, %609
  %611 = add nsw i64 %607, %610
  store i64 %611, ptr %42, align 8, !tbaa !9
  %612 = load ptr, ptr %27, align 8, !tbaa !5
  %613 = load i64, ptr %42, align 8, !tbaa !9
  %614 = getelementptr inbounds %struct.complex, ptr %612, i64 %613
  %615 = getelementptr inbounds %struct.complex, ptr %614, i32 0, i32 0
  %616 = load float, ptr %615, align 4, !tbaa !16
  store float %616, ptr %45, align 4, !tbaa !11
  %617 = load float, ptr %45, align 4, !tbaa !11
  %618 = fcmp oge float %617, 0.000000e+00
  br i1 %618, label %619, label %621

619:                                              ; preds = %606
  %620 = load float, ptr %45, align 4, !tbaa !11
  br label %624

621:                                              ; preds = %606
  %622 = load float, ptr %45, align 4, !tbaa !11
  %623 = fneg float %622
  br label %624

624:                                              ; preds = %621, %619
  %625 = phi float [ %620, %619 ], [ %623, %621 ]
  %626 = fpext float %625 to double
  %627 = load ptr, ptr %27, align 8, !tbaa !5
  %628 = load i64, ptr %52, align 8, !tbaa !9
  %629 = load i64, ptr %51, align 8, !tbaa !9
  %630 = load i64, ptr %38, align 8, !tbaa !9
  %631 = mul nsw i64 %629, %630
  %632 = add nsw i64 %628, %631
  %633 = getelementptr inbounds %struct.complex, ptr %627, i64 %632
  %634 = call double @r_imag(ptr noundef %633)
  %635 = fptrunc double %634 to float
  store float %635, ptr %46, align 4, !tbaa !11
  %636 = load float, ptr %46, align 4, !tbaa !11
  %637 = fcmp oge float %636, 0.000000e+00
  br i1 %637, label %638, label %640

638:                                              ; preds = %624
  %639 = load float, ptr %46, align 4, !tbaa !11
  br label %643

640:                                              ; preds = %624
  %641 = load float, ptr %46, align 4, !tbaa !11
  %642 = fneg float %641
  br label %643

643:                                              ; preds = %640, %638
  %644 = phi float [ %639, %638 ], [ %642, %640 ]
  %645 = fpext float %644 to double
  %646 = fadd double %626, %645
  %647 = fptrunc double %646 to float
  store float %647, ptr %54, align 4, !tbaa !11
  %648 = load ptr, ptr %21, align 8, !tbaa !5
  %649 = load i64, ptr %648, align 8, !tbaa !9
  store i64 %649, ptr %42, align 8, !tbaa !9
  %650 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %650, ptr %50, align 8, !tbaa !9
  br label %651

651:                                              ; preds = %705, %643
  %652 = load i64, ptr %50, align 8, !tbaa !9
  %653 = load i64, ptr %42, align 8, !tbaa !9
  %654 = icmp sle i64 %652, %653
  br i1 %654, label %655, label %708

655:                                              ; preds = %651
  %656 = load i64, ptr %50, align 8, !tbaa !9
  %657 = load i64, ptr %52, align 8, !tbaa !9
  %658 = load i64, ptr %34, align 8, !tbaa !9
  %659 = mul nsw i64 %657, %658
  %660 = add nsw i64 %656, %659
  store i64 %660, ptr %43, align 8, !tbaa !9
  %661 = load ptr, ptr %23, align 8, !tbaa !5
  %662 = load i64, ptr %43, align 8, !tbaa !9
  %663 = getelementptr inbounds %struct.complex, ptr %661, i64 %662
  %664 = getelementptr inbounds %struct.complex, ptr %663, i32 0, i32 0
  %665 = load float, ptr %664, align 4, !tbaa !16
  store float %665, ptr %45, align 4, !tbaa !11
  %666 = load float, ptr %45, align 4, !tbaa !11
  %667 = fcmp oge float %666, 0.000000e+00
  br i1 %667, label %668, label %670

668:                                              ; preds = %655
  %669 = load float, ptr %45, align 4, !tbaa !11
  br label %673

670:                                              ; preds = %655
  %671 = load float, ptr %45, align 4, !tbaa !11
  %672 = fneg float %671
  br label %673

673:                                              ; preds = %670, %668
  %674 = phi float [ %669, %668 ], [ %672, %670 ]
  %675 = fpext float %674 to double
  %676 = load ptr, ptr %23, align 8, !tbaa !5
  %677 = load i64, ptr %50, align 8, !tbaa !9
  %678 = load i64, ptr %52, align 8, !tbaa !9
  %679 = load i64, ptr %34, align 8, !tbaa !9
  %680 = mul nsw i64 %678, %679
  %681 = add nsw i64 %677, %680
  %682 = getelementptr inbounds %struct.complex, ptr %676, i64 %681
  %683 = call double @r_imag(ptr noundef %682)
  %684 = fptrunc double %683 to float
  store float %684, ptr %46, align 4, !tbaa !11
  %685 = load float, ptr %46, align 4, !tbaa !11
  %686 = fcmp oge float %685, 0.000000e+00
  br i1 %686, label %687, label %689

687:                                              ; preds = %673
  %688 = load float, ptr %46, align 4, !tbaa !11
  br label %692

689:                                              ; preds = %673
  %690 = load float, ptr %46, align 4, !tbaa !11
  %691 = fneg float %690
  br label %692

692:                                              ; preds = %689, %687
  %693 = phi float [ %688, %687 ], [ %691, %689 ]
  %694 = fpext float %693 to double
  %695 = fadd double %675, %694
  %696 = load float, ptr %54, align 4, !tbaa !11
  %697 = fpext float %696 to double
  %698 = load ptr, ptr %32, align 8, !tbaa !5
  %699 = load i64, ptr %50, align 8, !tbaa !9
  %700 = getelementptr inbounds float, ptr %698, i64 %699
  %701 = load float, ptr %700, align 4, !tbaa !11
  %702 = fpext float %701 to double
  %703 = call double @llvm.fmuladd.f64(double %695, double %697, double %702)
  %704 = fptrunc double %703 to float
  store float %704, ptr %700, align 4, !tbaa !11
  br label %705

705:                                              ; preds = %692
  %706 = load i64, ptr %50, align 8, !tbaa !9
  %707 = add nsw i64 %706, 1
  store i64 %707, ptr %50, align 8, !tbaa !9
  br label %651, !llvm.loop !24

708:                                              ; preds = %651
  br label %709

709:                                              ; preds = %708
  %710 = load i64, ptr %52, align 8, !tbaa !9
  %711 = add nsw i64 %710, 1
  store i64 %711, ptr %52, align 8, !tbaa !9
  br label %602, !llvm.loop !25

712:                                              ; preds = %602
  br label %834

713:                                              ; preds = %596
  %714 = load ptr, ptr %21, align 8, !tbaa !5
  %715 = load i64, ptr %714, align 8, !tbaa !9
  store i64 %715, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %716

716:                                              ; preds = %830, %713
  %717 = load i64, ptr %52, align 8, !tbaa !9
  %718 = load i64, ptr %41, align 8, !tbaa !9
  %719 = icmp sle i64 %717, %718
  br i1 %719, label %720, label %833

720:                                              ; preds = %716
  %721 = load i64, ptr %52, align 8, !tbaa !9
  %722 = load i64, ptr %51, align 8, !tbaa !9
  %723 = load i64, ptr %38, align 8, !tbaa !9
  %724 = mul nsw i64 %722, %723
  %725 = add nsw i64 %721, %724
  store i64 %725, ptr %42, align 8, !tbaa !9
  %726 = load ptr, ptr %27, align 8, !tbaa !5
  %727 = load i64, ptr %42, align 8, !tbaa !9
  %728 = getelementptr inbounds %struct.complex, ptr %726, i64 %727
  %729 = getelementptr inbounds %struct.complex, ptr %728, i32 0, i32 0
  %730 = load float, ptr %729, align 4, !tbaa !16
  store float %730, ptr %45, align 4, !tbaa !11
  %731 = load float, ptr %45, align 4, !tbaa !11
  %732 = fcmp oge float %731, 0.000000e+00
  br i1 %732, label %733, label %735

733:                                              ; preds = %720
  %734 = load float, ptr %45, align 4, !tbaa !11
  br label %738

735:                                              ; preds = %720
  %736 = load float, ptr %45, align 4, !tbaa !11
  %737 = fneg float %736
  br label %738

738:                                              ; preds = %735, %733
  %739 = phi float [ %734, %733 ], [ %737, %735 ]
  %740 = fpext float %739 to double
  %741 = load ptr, ptr %27, align 8, !tbaa !5
  %742 = load i64, ptr %52, align 8, !tbaa !9
  %743 = load i64, ptr %51, align 8, !tbaa !9
  %744 = load i64, ptr %38, align 8, !tbaa !9
  %745 = mul nsw i64 %743, %744
  %746 = add nsw i64 %742, %745
  %747 = getelementptr inbounds %struct.complex, ptr %741, i64 %746
  %748 = call double @r_imag(ptr noundef %747)
  %749 = fptrunc double %748 to float
  store float %749, ptr %46, align 4, !tbaa !11
  %750 = load float, ptr %46, align 4, !tbaa !11
  %751 = fcmp oge float %750, 0.000000e+00
  br i1 %751, label %752, label %754

752:                                              ; preds = %738
  %753 = load float, ptr %46, align 4, !tbaa !11
  br label %757

754:                                              ; preds = %738
  %755 = load float, ptr %46, align 4, !tbaa !11
  %756 = fneg float %755
  br label %757

757:                                              ; preds = %754, %752
  %758 = phi float [ %753, %752 ], [ %756, %754 ]
  %759 = fpext float %758 to double
  %760 = fadd double %740, %759
  %761 = fptrunc double %760 to float
  store float %761, ptr %54, align 4, !tbaa !11
  %762 = load ptr, ptr %21, align 8, !tbaa !5
  %763 = load i64, ptr %762, align 8, !tbaa !9
  store i64 %763, ptr %42, align 8, !tbaa !9
  %764 = load i64, ptr %52, align 8, !tbaa !9
  %765 = add nsw i64 %764, 1
  store i64 %765, ptr %50, align 8, !tbaa !9
  br label %766

766:                                              ; preds = %820, %757
  %767 = load i64, ptr %50, align 8, !tbaa !9
  %768 = load i64, ptr %42, align 8, !tbaa !9
  %769 = icmp sle i64 %767, %768
  br i1 %769, label %770, label %823

770:                                              ; preds = %766
  %771 = load i64, ptr %50, align 8, !tbaa !9
  %772 = load i64, ptr %52, align 8, !tbaa !9
  %773 = load i64, ptr %34, align 8, !tbaa !9
  %774 = mul nsw i64 %772, %773
  %775 = add nsw i64 %771, %774
  store i64 %775, ptr %43, align 8, !tbaa !9
  %776 = load ptr, ptr %23, align 8, !tbaa !5
  %777 = load i64, ptr %43, align 8, !tbaa !9
  %778 = getelementptr inbounds %struct.complex, ptr %776, i64 %777
  %779 = getelementptr inbounds %struct.complex, ptr %778, i32 0, i32 0
  %780 = load float, ptr %779, align 4, !tbaa !16
  store float %780, ptr %45, align 4, !tbaa !11
  %781 = load float, ptr %45, align 4, !tbaa !11
  %782 = fcmp oge float %781, 0.000000e+00
  br i1 %782, label %783, label %785

783:                                              ; preds = %770
  %784 = load float, ptr %45, align 4, !tbaa !11
  br label %788

785:                                              ; preds = %770
  %786 = load float, ptr %45, align 4, !tbaa !11
  %787 = fneg float %786
  br label %788

788:                                              ; preds = %785, %783
  %789 = phi float [ %784, %783 ], [ %787, %785 ]
  %790 = fpext float %789 to double
  %791 = load ptr, ptr %23, align 8, !tbaa !5
  %792 = load i64, ptr %50, align 8, !tbaa !9
  %793 = load i64, ptr %52, align 8, !tbaa !9
  %794 = load i64, ptr %34, align 8, !tbaa !9
  %795 = mul nsw i64 %793, %794
  %796 = add nsw i64 %792, %795
  %797 = getelementptr inbounds %struct.complex, ptr %791, i64 %796
  %798 = call double @r_imag(ptr noundef %797)
  %799 = fptrunc double %798 to float
  store float %799, ptr %46, align 4, !tbaa !11
  %800 = load float, ptr %46, align 4, !tbaa !11
  %801 = fcmp oge float %800, 0.000000e+00
  br i1 %801, label %802, label %804

802:                                              ; preds = %788
  %803 = load float, ptr %46, align 4, !tbaa !11
  br label %807

804:                                              ; preds = %788
  %805 = load float, ptr %46, align 4, !tbaa !11
  %806 = fneg float %805
  br label %807

807:                                              ; preds = %804, %802
  %808 = phi float [ %803, %802 ], [ %806, %804 ]
  %809 = fpext float %808 to double
  %810 = fadd double %790, %809
  %811 = load float, ptr %54, align 4, !tbaa !11
  %812 = fpext float %811 to double
  %813 = load ptr, ptr %32, align 8, !tbaa !5
  %814 = load i64, ptr %50, align 8, !tbaa !9
  %815 = getelementptr inbounds float, ptr %813, i64 %814
  %816 = load float, ptr %815, align 4, !tbaa !11
  %817 = fpext float %816 to double
  %818 = call double @llvm.fmuladd.f64(double %810, double %812, double %817)
  %819 = fptrunc double %818 to float
  store float %819, ptr %815, align 4, !tbaa !11
  br label %820

820:                                              ; preds = %807
  %821 = load i64, ptr %50, align 8, !tbaa !9
  %822 = add nsw i64 %821, 1
  store i64 %822, ptr %50, align 8, !tbaa !9
  br label %766, !llvm.loop !26

823:                                              ; preds = %766
  %824 = load float, ptr %54, align 4, !tbaa !11
  %825 = load ptr, ptr %32, align 8, !tbaa !5
  %826 = load i64, ptr %52, align 8, !tbaa !9
  %827 = getelementptr inbounds float, ptr %825, i64 %826
  %828 = load float, ptr %827, align 4, !tbaa !11
  %829 = fadd float %828, %824
  store float %829, ptr %827, align 4, !tbaa !11
  br label %830

830:                                              ; preds = %823
  %831 = load i64, ptr %52, align 8, !tbaa !9
  %832 = add nsw i64 %831, 1
  store i64 %832, ptr %52, align 8, !tbaa !9
  br label %716, !llvm.loop !27

833:                                              ; preds = %716
  br label %834

834:                                              ; preds = %833, %712
  br label %835

835:                                              ; preds = %834, %595
  br label %1384

836:                                              ; preds = %355
  %837 = load i64, ptr %61, align 8, !tbaa !9
  %838 = icmp ne i64 %837, 0
  br i1 %838, label %839, label %1109

839:                                              ; preds = %836
  %840 = load i64, ptr %66, align 8, !tbaa !9
  %841 = icmp ne i64 %840, 0
  br i1 %841, label %842, label %954

842:                                              ; preds = %839
  %843 = load ptr, ptr %21, align 8, !tbaa !5
  %844 = load i64, ptr %843, align 8, !tbaa !9
  store i64 %844, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %845

845:                                              ; preds = %950, %842
  %846 = load i64, ptr %52, align 8, !tbaa !9
  %847 = load i64, ptr %41, align 8, !tbaa !9
  %848 = icmp sle i64 %846, %847
  br i1 %848, label %849, label %953

849:                                              ; preds = %845
  store float 0.000000e+00, ptr %53, align 4, !tbaa !11
  %850 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %850, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %851

851:                                              ; preds = %940, %849
  %852 = load i64, ptr %50, align 8, !tbaa !9
  %853 = load i64, ptr %42, align 8, !tbaa !9
  %854 = icmp sle i64 %852, %853
  br i1 %854, label %855, label %943

855:                                              ; preds = %851
  %856 = load i64, ptr %50, align 8, !tbaa !9
  %857 = load i64, ptr %52, align 8, !tbaa !9
  %858 = load i64, ptr %34, align 8, !tbaa !9
  %859 = mul nsw i64 %857, %858
  %860 = add nsw i64 %856, %859
  store i64 %860, ptr %43, align 8, !tbaa !9
  %861 = load i64, ptr %50, align 8, !tbaa !9
  %862 = load i64, ptr %51, align 8, !tbaa !9
  %863 = load i64, ptr %38, align 8, !tbaa !9
  %864 = mul nsw i64 %862, %863
  %865 = add nsw i64 %861, %864
  store i64 %865, ptr %44, align 8, !tbaa !9
  %866 = load ptr, ptr %23, align 8, !tbaa !5
  %867 = load i64, ptr %43, align 8, !tbaa !9
  %868 = getelementptr inbounds %struct.complex, ptr %866, i64 %867
  %869 = getelementptr inbounds %struct.complex, ptr %868, i32 0, i32 0
  %870 = load float, ptr %869, align 4, !tbaa !16
  store float %870, ptr %45, align 4, !tbaa !11
  %871 = load float, ptr %45, align 4, !tbaa !11
  %872 = fcmp oge float %871, 0.000000e+00
  br i1 %872, label %873, label %875

873:                                              ; preds = %855
  %874 = load float, ptr %45, align 4, !tbaa !11
  br label %878

875:                                              ; preds = %855
  %876 = load float, ptr %45, align 4, !tbaa !11
  %877 = fneg float %876
  br label %878

878:                                              ; preds = %875, %873
  %879 = phi float [ %874, %873 ], [ %877, %875 ]
  %880 = fpext float %879 to double
  %881 = load ptr, ptr %23, align 8, !tbaa !5
  %882 = load i64, ptr %50, align 8, !tbaa !9
  %883 = load i64, ptr %52, align 8, !tbaa !9
  %884 = load i64, ptr %34, align 8, !tbaa !9
  %885 = mul nsw i64 %883, %884
  %886 = add nsw i64 %882, %885
  %887 = getelementptr inbounds %struct.complex, ptr %881, i64 %886
  %888 = call double @r_imag(ptr noundef %887)
  %889 = fptrunc double %888 to float
  store float %889, ptr %46, align 4, !tbaa !11
  %890 = load float, ptr %46, align 4, !tbaa !11
  %891 = fcmp oge float %890, 0.000000e+00
  br i1 %891, label %892, label %894

892:                                              ; preds = %878
  %893 = load float, ptr %46, align 4, !tbaa !11
  br label %897

894:                                              ; preds = %878
  %895 = load float, ptr %46, align 4, !tbaa !11
  %896 = fneg float %895
  br label %897

897:                                              ; preds = %894, %892
  %898 = phi float [ %893, %892 ], [ %896, %894 ]
  %899 = fpext float %898 to double
  %900 = fadd double %880, %899
  %901 = load ptr, ptr %27, align 8, !tbaa !5
  %902 = load i64, ptr %44, align 8, !tbaa !9
  %903 = getelementptr inbounds %struct.complex, ptr %901, i64 %902
  %904 = getelementptr inbounds %struct.complex, ptr %903, i32 0, i32 0
  %905 = load float, ptr %904, align 4, !tbaa !16
  store float %905, ptr %47, align 4, !tbaa !11
  %906 = load float, ptr %47, align 4, !tbaa !11
  %907 = fcmp oge float %906, 0.000000e+00
  br i1 %907, label %908, label %910

908:                                              ; preds = %897
  %909 = load float, ptr %47, align 4, !tbaa !11
  br label %913

910:                                              ; preds = %897
  %911 = load float, ptr %47, align 4, !tbaa !11
  %912 = fneg float %911
  br label %913

913:                                              ; preds = %910, %908
  %914 = phi float [ %909, %908 ], [ %912, %910 ]
  %915 = fpext float %914 to double
  %916 = load ptr, ptr %27, align 8, !tbaa !5
  %917 = load i64, ptr %50, align 8, !tbaa !9
  %918 = load i64, ptr %51, align 8, !tbaa !9
  %919 = load i64, ptr %38, align 8, !tbaa !9
  %920 = mul nsw i64 %918, %919
  %921 = add nsw i64 %917, %920
  %922 = getelementptr inbounds %struct.complex, ptr %916, i64 %921
  %923 = call double @r_imag(ptr noundef %922)
  %924 = fptrunc double %923 to float
  store float %924, ptr %48, align 4, !tbaa !11
  %925 = load float, ptr %48, align 4, !tbaa !11
  %926 = fcmp oge float %925, 0.000000e+00
  br i1 %926, label %927, label %929

927:                                              ; preds = %913
  %928 = load float, ptr %48, align 4, !tbaa !11
  br label %932

929:                                              ; preds = %913
  %930 = load float, ptr %48, align 4, !tbaa !11
  %931 = fneg float %930
  br label %932

932:                                              ; preds = %929, %927
  %933 = phi float [ %928, %927 ], [ %931, %929 ]
  %934 = fpext float %933 to double
  %935 = fadd double %915, %934
  %936 = load float, ptr %53, align 4, !tbaa !11
  %937 = fpext float %936 to double
  %938 = call double @llvm.fmuladd.f64(double %900, double %935, double %937)
  %939 = fptrunc double %938 to float
  store float %939, ptr %53, align 4, !tbaa !11
  br label %940

940:                                              ; preds = %932
  %941 = load i64, ptr %50, align 8, !tbaa !9
  %942 = add nsw i64 %941, 1
  store i64 %942, ptr %50, align 8, !tbaa !9
  br label %851, !llvm.loop !28

943:                                              ; preds = %851
  %944 = load float, ptr %53, align 4, !tbaa !11
  %945 = load ptr, ptr %32, align 8, !tbaa !5
  %946 = load i64, ptr %52, align 8, !tbaa !9
  %947 = getelementptr inbounds float, ptr %945, i64 %946
  %948 = load float, ptr %947, align 4, !tbaa !11
  %949 = fadd float %948, %944
  store float %949, ptr %947, align 4, !tbaa !11
  br label %950

950:                                              ; preds = %943
  %951 = load i64, ptr %52, align 8, !tbaa !9
  %952 = add nsw i64 %951, 1
  store i64 %952, ptr %52, align 8, !tbaa !9
  br label %845, !llvm.loop !29

953:                                              ; preds = %845
  br label %1108

954:                                              ; preds = %839
  %955 = load ptr, ptr %21, align 8, !tbaa !5
  %956 = load i64, ptr %955, align 8, !tbaa !9
  store i64 %956, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %957

957:                                              ; preds = %1104, %954
  %958 = load i64, ptr %52, align 8, !tbaa !9
  %959 = load i64, ptr %41, align 8, !tbaa !9
  %960 = icmp sle i64 %958, %959
  br i1 %960, label %961, label %1107

961:                                              ; preds = %957
  %962 = load i64, ptr %52, align 8, !tbaa !9
  %963 = load i64, ptr %51, align 8, !tbaa !9
  %964 = load i64, ptr %38, align 8, !tbaa !9
  %965 = mul nsw i64 %963, %964
  %966 = add nsw i64 %962, %965
  store i64 %966, ptr %42, align 8, !tbaa !9
  %967 = load ptr, ptr %27, align 8, !tbaa !5
  %968 = load i64, ptr %42, align 8, !tbaa !9
  %969 = getelementptr inbounds %struct.complex, ptr %967, i64 %968
  %970 = getelementptr inbounds %struct.complex, ptr %969, i32 0, i32 0
  %971 = load float, ptr %970, align 4, !tbaa !16
  store float %971, ptr %45, align 4, !tbaa !11
  %972 = load float, ptr %45, align 4, !tbaa !11
  %973 = fcmp oge float %972, 0.000000e+00
  br i1 %973, label %974, label %976

974:                                              ; preds = %961
  %975 = load float, ptr %45, align 4, !tbaa !11
  br label %979

976:                                              ; preds = %961
  %977 = load float, ptr %45, align 4, !tbaa !11
  %978 = fneg float %977
  br label %979

979:                                              ; preds = %976, %974
  %980 = phi float [ %975, %974 ], [ %978, %976 ]
  %981 = fpext float %980 to double
  %982 = load ptr, ptr %27, align 8, !tbaa !5
  %983 = load i64, ptr %52, align 8, !tbaa !9
  %984 = load i64, ptr %51, align 8, !tbaa !9
  %985 = load i64, ptr %38, align 8, !tbaa !9
  %986 = mul nsw i64 %984, %985
  %987 = add nsw i64 %983, %986
  %988 = getelementptr inbounds %struct.complex, ptr %982, i64 %987
  %989 = call double @r_imag(ptr noundef %988)
  %990 = fptrunc double %989 to float
  store float %990, ptr %46, align 4, !tbaa !11
  %991 = load float, ptr %46, align 4, !tbaa !11
  %992 = fcmp oge float %991, 0.000000e+00
  br i1 %992, label %993, label %995

993:                                              ; preds = %979
  %994 = load float, ptr %46, align 4, !tbaa !11
  br label %998

995:                                              ; preds = %979
  %996 = load float, ptr %46, align 4, !tbaa !11
  %997 = fneg float %996
  br label %998

998:                                              ; preds = %995, %993
  %999 = phi float [ %994, %993 ], [ %997, %995 ]
  %1000 = fpext float %999 to double
  %1001 = fadd double %981, %1000
  %1002 = fptrunc double %1001 to float
  store float %1002, ptr %53, align 4, !tbaa !11
  %1003 = load i64, ptr %52, align 8, !tbaa !9
  %1004 = sub nsw i64 %1003, 1
  store i64 %1004, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %1005

1005:                                             ; preds = %1094, %998
  %1006 = load i64, ptr %50, align 8, !tbaa !9
  %1007 = load i64, ptr %42, align 8, !tbaa !9
  %1008 = icmp sle i64 %1006, %1007
  br i1 %1008, label %1009, label %1097

1009:                                             ; preds = %1005
  %1010 = load i64, ptr %50, align 8, !tbaa !9
  %1011 = load i64, ptr %52, align 8, !tbaa !9
  %1012 = load i64, ptr %34, align 8, !tbaa !9
  %1013 = mul nsw i64 %1011, %1012
  %1014 = add nsw i64 %1010, %1013
  store i64 %1014, ptr %43, align 8, !tbaa !9
  %1015 = load i64, ptr %50, align 8, !tbaa !9
  %1016 = load i64, ptr %51, align 8, !tbaa !9
  %1017 = load i64, ptr %38, align 8, !tbaa !9
  %1018 = mul nsw i64 %1016, %1017
  %1019 = add nsw i64 %1015, %1018
  store i64 %1019, ptr %44, align 8, !tbaa !9
  %1020 = load ptr, ptr %23, align 8, !tbaa !5
  %1021 = load i64, ptr %43, align 8, !tbaa !9
  %1022 = getelementptr inbounds %struct.complex, ptr %1020, i64 %1021
  %1023 = getelementptr inbounds %struct.complex, ptr %1022, i32 0, i32 0
  %1024 = load float, ptr %1023, align 4, !tbaa !16
  store float %1024, ptr %45, align 4, !tbaa !11
  %1025 = load float, ptr %45, align 4, !tbaa !11
  %1026 = fcmp oge float %1025, 0.000000e+00
  br i1 %1026, label %1027, label %1029

1027:                                             ; preds = %1009
  %1028 = load float, ptr %45, align 4, !tbaa !11
  br label %1032

1029:                                             ; preds = %1009
  %1030 = load float, ptr %45, align 4, !tbaa !11
  %1031 = fneg float %1030
  br label %1032

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

1046:                                             ; preds = %1032
  %1047 = load float, ptr %46, align 4, !tbaa !11
  br label %1051

1048:                                             ; preds = %1032
  %1049 = load float, ptr %46, align 4, !tbaa !11
  %1050 = fneg float %1049
  br label %1051

1051:                                             ; preds = %1048, %1046
  %1052 = phi float [ %1047, %1046 ], [ %1050, %1048 ]
  %1053 = fpext float %1052 to double
  %1054 = fadd double %1034, %1053
  %1055 = load ptr, ptr %27, align 8, !tbaa !5
  %1056 = load i64, ptr %44, align 8, !tbaa !9
  %1057 = getelementptr inbounds %struct.complex, ptr %1055, i64 %1056
  %1058 = getelementptr inbounds %struct.complex, ptr %1057, i32 0, i32 0
  %1059 = load float, ptr %1058, align 4, !tbaa !16
  store float %1059, ptr %47, align 4, !tbaa !11
  %1060 = load float, ptr %47, align 4, !tbaa !11
  %1061 = fcmp oge float %1060, 0.000000e+00
  br i1 %1061, label %1062, label %1064

1062:                                             ; preds = %1051
  %1063 = load float, ptr %47, align 4, !tbaa !11
  br label %1067

1064:                                             ; preds = %1051
  %1065 = load float, ptr %47, align 4, !tbaa !11
  %1066 = fneg float %1065
  br label %1067

1067:                                             ; preds = %1064, %1062
  %1068 = phi float [ %1063, %1062 ], [ %1066, %1064 ]
  %1069 = fpext float %1068 to double
  %1070 = load ptr, ptr %27, align 8, !tbaa !5
  %1071 = load i64, ptr %50, align 8, !tbaa !9
  %1072 = load i64, ptr %51, align 8, !tbaa !9
  %1073 = load i64, ptr %38, align 8, !tbaa !9
  %1074 = mul nsw i64 %1072, %1073
  %1075 = add nsw i64 %1071, %1074
  %1076 = getelementptr inbounds %struct.complex, ptr %1070, i64 %1075
  %1077 = call double @r_imag(ptr noundef %1076)
  %1078 = fptrunc double %1077 to float
  store float %1078, ptr %48, align 4, !tbaa !11
  %1079 = load float, ptr %48, align 4, !tbaa !11
  %1080 = fcmp oge float %1079, 0.000000e+00
  br i1 %1080, label %1081, label %1083

1081:                                             ; preds = %1067
  %1082 = load float, ptr %48, align 4, !tbaa !11
  br label %1086

1083:                                             ; preds = %1067
  %1084 = load float, ptr %48, align 4, !tbaa !11
  %1085 = fneg float %1084
  br label %1086

1086:                                             ; preds = %1083, %1081
  %1087 = phi float [ %1082, %1081 ], [ %1085, %1083 ]
  %1088 = fpext float %1087 to double
  %1089 = fadd double %1069, %1088
  %1090 = load float, ptr %53, align 4, !tbaa !11
  %1091 = fpext float %1090 to double
  %1092 = call double @llvm.fmuladd.f64(double %1054, double %1089, double %1091)
  %1093 = fptrunc double %1092 to float
  store float %1093, ptr %53, align 4, !tbaa !11
  br label %1094

1094:                                             ; preds = %1086
  %1095 = load i64, ptr %50, align 8, !tbaa !9
  %1096 = add nsw i64 %1095, 1
  store i64 %1096, ptr %50, align 8, !tbaa !9
  br label %1005, !llvm.loop !30

1097:                                             ; preds = %1005
  %1098 = load float, ptr %53, align 4, !tbaa !11
  %1099 = load ptr, ptr %32, align 8, !tbaa !5
  %1100 = load i64, ptr %52, align 8, !tbaa !9
  %1101 = getelementptr inbounds float, ptr %1099, i64 %1100
  %1102 = load float, ptr %1101, align 4, !tbaa !11
  %1103 = fadd float %1102, %1098
  store float %1103, ptr %1101, align 4, !tbaa !11
  br label %1104

1104:                                             ; preds = %1097
  %1105 = load i64, ptr %52, align 8, !tbaa !9
  %1106 = add nsw i64 %1105, 1
  store i64 %1106, ptr %52, align 8, !tbaa !9
  br label %957, !llvm.loop !31

1107:                                             ; preds = %957
  br label %1108

1108:                                             ; preds = %1107, %953
  br label %1383

1109:                                             ; preds = %836
  %1110 = load i64, ptr %66, align 8, !tbaa !9
  %1111 = icmp ne i64 %1110, 0
  br i1 %1111, label %1112, label %1226

1112:                                             ; preds = %1109
  %1113 = load ptr, ptr %21, align 8, !tbaa !5
  %1114 = load i64, ptr %1113, align 8, !tbaa !9
  store i64 %1114, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %1115

1115:                                             ; preds = %1222, %1112
  %1116 = load i64, ptr %52, align 8, !tbaa !9
  %1117 = load i64, ptr %41, align 8, !tbaa !9
  %1118 = icmp sle i64 %1116, %1117
  br i1 %1118, label %1119, label %1225

1119:                                             ; preds = %1115
  store float 0.000000e+00, ptr %53, align 4, !tbaa !11
  %1120 = load ptr, ptr %21, align 8, !tbaa !5
  %1121 = load i64, ptr %1120, align 8, !tbaa !9
  store i64 %1121, ptr %42, align 8, !tbaa !9
  %1122 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %1122, ptr %50, align 8, !tbaa !9
  br label %1123

1123:                                             ; preds = %1212, %1119
  %1124 = load i64, ptr %50, align 8, !tbaa !9
  %1125 = load i64, ptr %42, align 8, !tbaa !9
  %1126 = icmp sle i64 %1124, %1125
  br i1 %1126, label %1127, label %1215

1127:                                             ; preds = %1123
  %1128 = load i64, ptr %50, align 8, !tbaa !9
  %1129 = load i64, ptr %52, align 8, !tbaa !9
  %1130 = load i64, ptr %34, align 8, !tbaa !9
  %1131 = mul nsw i64 %1129, %1130
  %1132 = add nsw i64 %1128, %1131
  store i64 %1132, ptr %43, align 8, !tbaa !9
  %1133 = load i64, ptr %50, align 8, !tbaa !9
  %1134 = load i64, ptr %51, align 8, !tbaa !9
  %1135 = load i64, ptr %38, align 8, !tbaa !9
  %1136 = mul nsw i64 %1134, %1135
  %1137 = add nsw i64 %1133, %1136
  store i64 %1137, ptr %44, align 8, !tbaa !9
  %1138 = load ptr, ptr %23, align 8, !tbaa !5
  %1139 = load i64, ptr %43, align 8, !tbaa !9
  %1140 = getelementptr inbounds %struct.complex, ptr %1138, i64 %1139
  %1141 = getelementptr inbounds %struct.complex, ptr %1140, i32 0, i32 0
  %1142 = load float, ptr %1141, align 4, !tbaa !16
  store float %1142, ptr %45, align 4, !tbaa !11
  %1143 = load float, ptr %45, align 4, !tbaa !11
  %1144 = fcmp oge float %1143, 0.000000e+00
  br i1 %1144, label %1145, label %1147

1145:                                             ; preds = %1127
  %1146 = load float, ptr %45, align 4, !tbaa !11
  br label %1150

1147:                                             ; preds = %1127
  %1148 = load float, ptr %45, align 4, !tbaa !11
  %1149 = fneg float %1148
  br label %1150

1150:                                             ; preds = %1147, %1145
  %1151 = phi float [ %1146, %1145 ], [ %1149, %1147 ]
  %1152 = fpext float %1151 to double
  %1153 = load ptr, ptr %23, align 8, !tbaa !5
  %1154 = load i64, ptr %50, align 8, !tbaa !9
  %1155 = load i64, ptr %52, align 8, !tbaa !9
  %1156 = load i64, ptr %34, align 8, !tbaa !9
  %1157 = mul nsw i64 %1155, %1156
  %1158 = add nsw i64 %1154, %1157
  %1159 = getelementptr inbounds %struct.complex, ptr %1153, i64 %1158
  %1160 = call double @r_imag(ptr noundef %1159)
  %1161 = fptrunc double %1160 to float
  store float %1161, ptr %46, align 4, !tbaa !11
  %1162 = load float, ptr %46, align 4, !tbaa !11
  %1163 = fcmp oge float %1162, 0.000000e+00
  br i1 %1163, label %1164, label %1166

1164:                                             ; preds = %1150
  %1165 = load float, ptr %46, align 4, !tbaa !11
  br label %1169

1166:                                             ; preds = %1150
  %1167 = load float, ptr %46, align 4, !tbaa !11
  %1168 = fneg float %1167
  br label %1169

1169:                                             ; preds = %1166, %1164
  %1170 = phi float [ %1165, %1164 ], [ %1168, %1166 ]
  %1171 = fpext float %1170 to double
  %1172 = fadd double %1152, %1171
  %1173 = load ptr, ptr %27, align 8, !tbaa !5
  %1174 = load i64, ptr %44, align 8, !tbaa !9
  %1175 = getelementptr inbounds %struct.complex, ptr %1173, i64 %1174
  %1176 = getelementptr inbounds %struct.complex, ptr %1175, i32 0, i32 0
  %1177 = load float, ptr %1176, align 4, !tbaa !16
  store float %1177, ptr %47, align 4, !tbaa !11
  %1178 = load float, ptr %47, align 4, !tbaa !11
  %1179 = fcmp oge float %1178, 0.000000e+00
  br i1 %1179, label %1180, label %1182

1180:                                             ; preds = %1169
  %1181 = load float, ptr %47, align 4, !tbaa !11
  br label %1185

1182:                                             ; preds = %1169
  %1183 = load float, ptr %47, align 4, !tbaa !11
  %1184 = fneg float %1183
  br label %1185

1185:                                             ; preds = %1182, %1180
  %1186 = phi float [ %1181, %1180 ], [ %1184, %1182 ]
  %1187 = fpext float %1186 to double
  %1188 = load ptr, ptr %27, align 8, !tbaa !5
  %1189 = load i64, ptr %50, align 8, !tbaa !9
  %1190 = load i64, ptr %51, align 8, !tbaa !9
  %1191 = load i64, ptr %38, align 8, !tbaa !9
  %1192 = mul nsw i64 %1190, %1191
  %1193 = add nsw i64 %1189, %1192
  %1194 = getelementptr inbounds %struct.complex, ptr %1188, i64 %1193
  %1195 = call double @r_imag(ptr noundef %1194)
  %1196 = fptrunc double %1195 to float
  store float %1196, ptr %48, align 4, !tbaa !11
  %1197 = load float, ptr %48, align 4, !tbaa !11
  %1198 = fcmp oge float %1197, 0.000000e+00
  br i1 %1198, label %1199, label %1201

1199:                                             ; preds = %1185
  %1200 = load float, ptr %48, align 4, !tbaa !11
  br label %1204

1201:                                             ; preds = %1185
  %1202 = load float, ptr %48, align 4, !tbaa !11
  %1203 = fneg float %1202
  br label %1204

1204:                                             ; preds = %1201, %1199
  %1205 = phi float [ %1200, %1199 ], [ %1203, %1201 ]
  %1206 = fpext float %1205 to double
  %1207 = fadd double %1187, %1206
  %1208 = load float, ptr %53, align 4, !tbaa !11
  %1209 = fpext float %1208 to double
  %1210 = call double @llvm.fmuladd.f64(double %1172, double %1207, double %1209)
  %1211 = fptrunc double %1210 to float
  store float %1211, ptr %53, align 4, !tbaa !11
  br label %1212

1212:                                             ; preds = %1204
  %1213 = load i64, ptr %50, align 8, !tbaa !9
  %1214 = add nsw i64 %1213, 1
  store i64 %1214, ptr %50, align 8, !tbaa !9
  br label %1123, !llvm.loop !32

1215:                                             ; preds = %1123
  %1216 = load float, ptr %53, align 4, !tbaa !11
  %1217 = load ptr, ptr %32, align 8, !tbaa !5
  %1218 = load i64, ptr %52, align 8, !tbaa !9
  %1219 = getelementptr inbounds float, ptr %1217, i64 %1218
  %1220 = load float, ptr %1219, align 4, !tbaa !11
  %1221 = fadd float %1220, %1216
  store float %1221, ptr %1219, align 4, !tbaa !11
  br label %1222

1222:                                             ; preds = %1215
  %1223 = load i64, ptr %52, align 8, !tbaa !9
  %1224 = add nsw i64 %1223, 1
  store i64 %1224, ptr %52, align 8, !tbaa !9
  br label %1115, !llvm.loop !33

1225:                                             ; preds = %1115
  br label %1382

1226:                                             ; preds = %1109
  %1227 = load ptr, ptr %21, align 8, !tbaa !5
  %1228 = load i64, ptr %1227, align 8, !tbaa !9
  store i64 %1228, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %1229

1229:                                             ; preds = %1378, %1226
  %1230 = load i64, ptr %52, align 8, !tbaa !9
  %1231 = load i64, ptr %41, align 8, !tbaa !9
  %1232 = icmp sle i64 %1230, %1231
  br i1 %1232, label %1233, label %1381

1233:                                             ; preds = %1229
  %1234 = load i64, ptr %52, align 8, !tbaa !9
  %1235 = load i64, ptr %51, align 8, !tbaa !9
  %1236 = load i64, ptr %38, align 8, !tbaa !9
  %1237 = mul nsw i64 %1235, %1236
  %1238 = add nsw i64 %1234, %1237
  store i64 %1238, ptr %42, align 8, !tbaa !9
  %1239 = load ptr, ptr %27, align 8, !tbaa !5
  %1240 = load i64, ptr %42, align 8, !tbaa !9
  %1241 = getelementptr inbounds %struct.complex, ptr %1239, i64 %1240
  %1242 = getelementptr inbounds %struct.complex, ptr %1241, i32 0, i32 0
  %1243 = load float, ptr %1242, align 4, !tbaa !16
  store float %1243, ptr %45, align 4, !tbaa !11
  %1244 = load float, ptr %45, align 4, !tbaa !11
  %1245 = fcmp oge float %1244, 0.000000e+00
  br i1 %1245, label %1246, label %1248

1246:                                             ; preds = %1233
  %1247 = load float, ptr %45, align 4, !tbaa !11
  br label %1251

1248:                                             ; preds = %1233
  %1249 = load float, ptr %45, align 4, !tbaa !11
  %1250 = fneg float %1249
  br label %1251

1251:                                             ; preds = %1248, %1246
  %1252 = phi float [ %1247, %1246 ], [ %1250, %1248 ]
  %1253 = fpext float %1252 to double
  %1254 = load ptr, ptr %27, align 8, !tbaa !5
  %1255 = load i64, ptr %52, align 8, !tbaa !9
  %1256 = load i64, ptr %51, align 8, !tbaa !9
  %1257 = load i64, ptr %38, align 8, !tbaa !9
  %1258 = mul nsw i64 %1256, %1257
  %1259 = add nsw i64 %1255, %1258
  %1260 = getelementptr inbounds %struct.complex, ptr %1254, i64 %1259
  %1261 = call double @r_imag(ptr noundef %1260)
  %1262 = fptrunc double %1261 to float
  store float %1262, ptr %46, align 4, !tbaa !11
  %1263 = load float, ptr %46, align 4, !tbaa !11
  %1264 = fcmp oge float %1263, 0.000000e+00
  br i1 %1264, label %1265, label %1267

1265:                                             ; preds = %1251
  %1266 = load float, ptr %46, align 4, !tbaa !11
  br label %1270

1267:                                             ; preds = %1251
  %1268 = load float, ptr %46, align 4, !tbaa !11
  %1269 = fneg float %1268
  br label %1270

1270:                                             ; preds = %1267, %1265
  %1271 = phi float [ %1266, %1265 ], [ %1269, %1267 ]
  %1272 = fpext float %1271 to double
  %1273 = fadd double %1253, %1272
  %1274 = fptrunc double %1273 to float
  store float %1274, ptr %53, align 4, !tbaa !11
  %1275 = load ptr, ptr %21, align 8, !tbaa !5
  %1276 = load i64, ptr %1275, align 8, !tbaa !9
  store i64 %1276, ptr %42, align 8, !tbaa !9
  %1277 = load i64, ptr %52, align 8, !tbaa !9
  %1278 = add nsw i64 %1277, 1
  store i64 %1278, ptr %50, align 8, !tbaa !9
  br label %1279

1279:                                             ; preds = %1368, %1270
  %1280 = load i64, ptr %50, align 8, !tbaa !9
  %1281 = load i64, ptr %42, align 8, !tbaa !9
  %1282 = icmp sle i64 %1280, %1281
  br i1 %1282, label %1283, label %1371

1283:                                             ; preds = %1279
  %1284 = load i64, ptr %50, align 8, !tbaa !9
  %1285 = load i64, ptr %52, align 8, !tbaa !9
  %1286 = load i64, ptr %34, align 8, !tbaa !9
  %1287 = mul nsw i64 %1285, %1286
  %1288 = add nsw i64 %1284, %1287
  store i64 %1288, ptr %43, align 8, !tbaa !9
  %1289 = load i64, ptr %50, align 8, !tbaa !9
  %1290 = load i64, ptr %51, align 8, !tbaa !9
  %1291 = load i64, ptr %38, align 8, !tbaa !9
  %1292 = mul nsw i64 %1290, %1291
  %1293 = add nsw i64 %1289, %1292
  store i64 %1293, ptr %44, align 8, !tbaa !9
  %1294 = load ptr, ptr %23, align 8, !tbaa !5
  %1295 = load i64, ptr %43, align 8, !tbaa !9
  %1296 = getelementptr inbounds %struct.complex, ptr %1294, i64 %1295
  %1297 = getelementptr inbounds %struct.complex, ptr %1296, i32 0, i32 0
  %1298 = load float, ptr %1297, align 4, !tbaa !16
  store float %1298, ptr %45, align 4, !tbaa !11
  %1299 = load float, ptr %45, align 4, !tbaa !11
  %1300 = fcmp oge float %1299, 0.000000e+00
  br i1 %1300, label %1301, label %1303

1301:                                             ; preds = %1283
  %1302 = load float, ptr %45, align 4, !tbaa !11
  br label %1306

1303:                                             ; preds = %1283
  %1304 = load float, ptr %45, align 4, !tbaa !11
  %1305 = fneg float %1304
  br label %1306

1306:                                             ; preds = %1303, %1301
  %1307 = phi float [ %1302, %1301 ], [ %1305, %1303 ]
  %1308 = fpext float %1307 to double
  %1309 = load ptr, ptr %23, align 8, !tbaa !5
  %1310 = load i64, ptr %50, align 8, !tbaa !9
  %1311 = load i64, ptr %52, align 8, !tbaa !9
  %1312 = load i64, ptr %34, align 8, !tbaa !9
  %1313 = mul nsw i64 %1311, %1312
  %1314 = add nsw i64 %1310, %1313
  %1315 = getelementptr inbounds %struct.complex, ptr %1309, i64 %1314
  %1316 = call double @r_imag(ptr noundef %1315)
  %1317 = fptrunc double %1316 to float
  store float %1317, ptr %46, align 4, !tbaa !11
  %1318 = load float, ptr %46, align 4, !tbaa !11
  %1319 = fcmp oge float %1318, 0.000000e+00
  br i1 %1319, label %1320, label %1322

1320:                                             ; preds = %1306
  %1321 = load float, ptr %46, align 4, !tbaa !11
  br label %1325

1322:                                             ; preds = %1306
  %1323 = load float, ptr %46, align 4, !tbaa !11
  %1324 = fneg float %1323
  br label %1325

1325:                                             ; preds = %1322, %1320
  %1326 = phi float [ %1321, %1320 ], [ %1324, %1322 ]
  %1327 = fpext float %1326 to double
  %1328 = fadd double %1308, %1327
  %1329 = load ptr, ptr %27, align 8, !tbaa !5
  %1330 = load i64, ptr %44, align 8, !tbaa !9
  %1331 = getelementptr inbounds %struct.complex, ptr %1329, i64 %1330
  %1332 = getelementptr inbounds %struct.complex, ptr %1331, i32 0, i32 0
  %1333 = load float, ptr %1332, align 4, !tbaa !16
  store float %1333, ptr %47, align 4, !tbaa !11
  %1334 = load float, ptr %47, align 4, !tbaa !11
  %1335 = fcmp oge float %1334, 0.000000e+00
  br i1 %1335, label %1336, label %1338

1336:                                             ; preds = %1325
  %1337 = load float, ptr %47, align 4, !tbaa !11
  br label %1341

1338:                                             ; preds = %1325
  %1339 = load float, ptr %47, align 4, !tbaa !11
  %1340 = fneg float %1339
  br label %1341

1341:                                             ; preds = %1338, %1336
  %1342 = phi float [ %1337, %1336 ], [ %1340, %1338 ]
  %1343 = fpext float %1342 to double
  %1344 = load ptr, ptr %27, align 8, !tbaa !5
  %1345 = load i64, ptr %50, align 8, !tbaa !9
  %1346 = load i64, ptr %51, align 8, !tbaa !9
  %1347 = load i64, ptr %38, align 8, !tbaa !9
  %1348 = mul nsw i64 %1346, %1347
  %1349 = add nsw i64 %1345, %1348
  %1350 = getelementptr inbounds %struct.complex, ptr %1344, i64 %1349
  %1351 = call double @r_imag(ptr noundef %1350)
  %1352 = fptrunc double %1351 to float
  store float %1352, ptr %48, align 4, !tbaa !11
  %1353 = load float, ptr %48, align 4, !tbaa !11
  %1354 = fcmp oge float %1353, 0.000000e+00
  br i1 %1354, label %1355, label %1357

1355:                                             ; preds = %1341
  %1356 = load float, ptr %48, align 4, !tbaa !11
  br label %1360

1357:                                             ; preds = %1341
  %1358 = load float, ptr %48, align 4, !tbaa !11
  %1359 = fneg float %1358
  br label %1360

1360:                                             ; preds = %1357, %1355
  %1361 = phi float [ %1356, %1355 ], [ %1359, %1357 ]
  %1362 = fpext float %1361 to double
  %1363 = fadd double %1343, %1362
  %1364 = load float, ptr %53, align 4, !tbaa !11
  %1365 = fpext float %1364 to double
  %1366 = call double @llvm.fmuladd.f64(double %1328, double %1363, double %1365)
  %1367 = fptrunc double %1366 to float
  store float %1367, ptr %53, align 4, !tbaa !11
  br label %1368

1368:                                             ; preds = %1360
  %1369 = load i64, ptr %50, align 8, !tbaa !9
  %1370 = add nsw i64 %1369, 1
  store i64 %1370, ptr %50, align 8, !tbaa !9
  br label %1279, !llvm.loop !34

1371:                                             ; preds = %1279
  %1372 = load float, ptr %53, align 4, !tbaa !11
  %1373 = load ptr, ptr %32, align 8, !tbaa !5
  %1374 = load i64, ptr %52, align 8, !tbaa !9
  %1375 = getelementptr inbounds float, ptr %1373, i64 %1374
  %1376 = load float, ptr %1375, align 4, !tbaa !11
  %1377 = fadd float %1376, %1372
  store float %1377, ptr %1375, align 4, !tbaa !11
  br label %1378

1378:                                             ; preds = %1371
  %1379 = load i64, ptr %52, align 8, !tbaa !9
  %1380 = add nsw i64 %1379, 1
  store i64 %1380, ptr %52, align 8, !tbaa !9
  br label %1229, !llvm.loop !35

1381:                                             ; preds = %1229
  br label %1382

1382:                                             ; preds = %1381, %1225
  br label %1383

1383:                                             ; preds = %1382, %1108
  br label %1384

1384:                                             ; preds = %1383, %835
  store float 0.000000e+00, ptr %53, align 4, !tbaa !11
  %1385 = load ptr, ptr %21, align 8, !tbaa !5
  %1386 = load i64, ptr %1385, align 8, !tbaa !9
  store i64 %1386, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %1387

1387:                                             ; preds = %1508, %1384
  %1388 = load i64, ptr %50, align 8, !tbaa !9
  %1389 = load i64, ptr %41, align 8, !tbaa !9
  %1390 = icmp sle i64 %1388, %1389
  br i1 %1390, label %1391, label %1511

1391:                                             ; preds = %1387
  %1392 = load ptr, ptr %32, align 8, !tbaa !5
  %1393 = load i64, ptr %50, align 8, !tbaa !9
  %1394 = getelementptr inbounds float, ptr %1392, i64 %1393
  %1395 = load float, ptr %1394, align 4, !tbaa !11
  %1396 = load float, ptr %59, align 4, !tbaa !11
  %1397 = fcmp ogt float %1395, %1396
  br i1 %1397, label %1398, label %1450

1398:                                             ; preds = %1391
  %1399 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %1399, ptr %42, align 8, !tbaa !9
  %1400 = load float, ptr %53, align 4, !tbaa !11
  store float %1400, ptr %47, align 4, !tbaa !11
  %1401 = load ptr, ptr %31, align 8, !tbaa !5
  %1402 = load i64, ptr %42, align 8, !tbaa !9
  %1403 = getelementptr inbounds %struct.complex, ptr %1401, i64 %1402
  %1404 = getelementptr inbounds %struct.complex, ptr %1403, i32 0, i32 0
  %1405 = load float, ptr %1404, align 4, !tbaa !16
  store float %1405, ptr %45, align 4, !tbaa !11
  %1406 = load float, ptr %45, align 4, !tbaa !11
  %1407 = fcmp oge float %1406, 0.000000e+00
  br i1 %1407, label %1408, label %1410

1408:                                             ; preds = %1398
  %1409 = load float, ptr %45, align 4, !tbaa !11
  br label %1413

1410:                                             ; preds = %1398
  %1411 = load float, ptr %45, align 4, !tbaa !11
  %1412 = fneg float %1411
  br label %1413

1413:                                             ; preds = %1410, %1408
  %1414 = phi float [ %1409, %1408 ], [ %1412, %1410 ]
  %1415 = fpext float %1414 to double
  %1416 = load ptr, ptr %31, align 8, !tbaa !5
  %1417 = load i64, ptr %50, align 8, !tbaa !9
  %1418 = getelementptr inbounds %struct.complex, ptr %1416, i64 %1417
  %1419 = call double @r_imag(ptr noundef %1418)
  %1420 = fptrunc double %1419 to float
  store float %1420, ptr %46, align 4, !tbaa !11
  %1421 = load float, ptr %46, align 4, !tbaa !11
  %1422 = fcmp oge float %1421, 0.000000e+00
  br i1 %1422, label %1423, label %1425

1423:                                             ; preds = %1413
  %1424 = load float, ptr %46, align 4, !tbaa !11
  br label %1428

1425:                                             ; preds = %1413
  %1426 = load float, ptr %46, align 4, !tbaa !11
  %1427 = fneg float %1426
  br label %1428

1428:                                             ; preds = %1425, %1423
  %1429 = phi float [ %1424, %1423 ], [ %1427, %1425 ]
  %1430 = fpext float %1429 to double
  %1431 = fadd double %1415, %1430
  %1432 = load ptr, ptr %32, align 8, !tbaa !5
  %1433 = load i64, ptr %50, align 8, !tbaa !9
  %1434 = getelementptr inbounds float, ptr %1432, i64 %1433
  %1435 = load float, ptr %1434, align 4, !tbaa !11
  %1436 = fpext float %1435 to double
  %1437 = fdiv double %1431, %1436
  %1438 = fptrunc double %1437 to float
  store float %1438, ptr %48, align 4, !tbaa !11
  %1439 = load float, ptr %47, align 4, !tbaa !11
  %1440 = load float, ptr %48, align 4, !tbaa !11
  %1441 = fcmp oge float %1439, %1440
  br i1 %1441, label %1442, label %1444

1442:                                             ; preds = %1428
  %1443 = load float, ptr %47, align 4, !tbaa !11
  br label %1446

1444:                                             ; preds = %1428
  %1445 = load float, ptr %48, align 4, !tbaa !11
  br label %1446

1446:                                             ; preds = %1444, %1442
  %1447 = phi float [ %1443, %1442 ], [ %1445, %1444 ]
  %1448 = fpext float %1447 to double
  %1449 = fptrunc double %1448 to float
  store float %1449, ptr %53, align 4, !tbaa !11
  br label %1507

1450:                                             ; preds = %1391
  %1451 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %1451, ptr %42, align 8, !tbaa !9
  %1452 = load float, ptr %53, align 4, !tbaa !11
  store float %1452, ptr %47, align 4, !tbaa !11
  %1453 = load ptr, ptr %31, align 8, !tbaa !5
  %1454 = load i64, ptr %42, align 8, !tbaa !9
  %1455 = getelementptr inbounds %struct.complex, ptr %1453, i64 %1454
  %1456 = getelementptr inbounds %struct.complex, ptr %1455, i32 0, i32 0
  %1457 = load float, ptr %1456, align 4, !tbaa !16
  store float %1457, ptr %45, align 4, !tbaa !11
  %1458 = load float, ptr %45, align 4, !tbaa !11
  %1459 = fcmp oge float %1458, 0.000000e+00
  br i1 %1459, label %1460, label %1462

1460:                                             ; preds = %1450
  %1461 = load float, ptr %45, align 4, !tbaa !11
  br label %1465

1462:                                             ; preds = %1450
  %1463 = load float, ptr %45, align 4, !tbaa !11
  %1464 = fneg float %1463
  br label %1465

1465:                                             ; preds = %1462, %1460
  %1466 = phi float [ %1461, %1460 ], [ %1464, %1462 ]
  %1467 = fpext float %1466 to double
  %1468 = load ptr, ptr %31, align 8, !tbaa !5
  %1469 = load i64, ptr %50, align 8, !tbaa !9
  %1470 = getelementptr inbounds %struct.complex, ptr %1468, i64 %1469
  %1471 = call double @r_imag(ptr noundef %1470)
  %1472 = fptrunc double %1471 to float
  store float %1472, ptr %46, align 4, !tbaa !11
  %1473 = load float, ptr %46, align 4, !tbaa !11
  %1474 = fcmp oge float %1473, 0.000000e+00
  br i1 %1474, label %1475, label %1477

1475:                                             ; preds = %1465
  %1476 = load float, ptr %46, align 4, !tbaa !11
  br label %1480

1477:                                             ; preds = %1465
  %1478 = load float, ptr %46, align 4, !tbaa !11
  %1479 = fneg float %1478
  br label %1480

1480:                                             ; preds = %1477, %1475
  %1481 = phi float [ %1476, %1475 ], [ %1479, %1477 ]
  %1482 = fpext float %1481 to double
  %1483 = fadd double %1467, %1482
  %1484 = load float, ptr %58, align 4, !tbaa !11
  %1485 = fpext float %1484 to double
  %1486 = fadd double %1483, %1485
  %1487 = load ptr, ptr %32, align 8, !tbaa !5
  %1488 = load i64, ptr %50, align 8, !tbaa !9
  %1489 = getelementptr inbounds float, ptr %1487, i64 %1488
  %1490 = load float, ptr %1489, align 4, !tbaa !11
  %1491 = load float, ptr %58, align 4, !tbaa !11
  %1492 = fadd float %1490, %1491
  %1493 = fpext float %1492 to double
  %1494 = fdiv double %1486, %1493
  %1495 = fptrunc double %1494 to float
  store float %1495, ptr %48, align 4, !tbaa !11
  %1496 = load float, ptr %47, align 4, !tbaa !11
  %1497 = load float, ptr %48, align 4, !tbaa !11
  %1498 = fcmp oge float %1496, %1497
  br i1 %1498, label %1499, label %1501

1499:                                             ; preds = %1480
  %1500 = load float, ptr %47, align 4, !tbaa !11
  br label %1503

1501:                                             ; preds = %1480
  %1502 = load float, ptr %48, align 4, !tbaa !11
  br label %1503

1503:                                             ; preds = %1501, %1499
  %1504 = phi float [ %1500, %1499 ], [ %1502, %1501 ]
  %1505 = fpext float %1504 to double
  %1506 = fptrunc double %1505 to float
  store float %1506, ptr %53, align 4, !tbaa !11
  br label %1507

1507:                                             ; preds = %1503, %1446
  br label %1508

1508:                                             ; preds = %1507
  %1509 = load i64, ptr %50, align 8, !tbaa !9
  %1510 = add nsw i64 %1509, 1
  store i64 %1510, ptr %50, align 8, !tbaa !9
  br label %1387, !llvm.loop !36

1511:                                             ; preds = %1387
  %1512 = load float, ptr %53, align 4, !tbaa !11
  %1513 = load ptr, ptr %30, align 8, !tbaa !5
  %1514 = load i64, ptr %51, align 8, !tbaa !9
  %1515 = getelementptr inbounds float, ptr %1513, i64 %1514
  store float %1512, ptr %1515, align 4, !tbaa !11
  %1516 = load ptr, ptr %21, align 8, !tbaa !5
  %1517 = load i64, ptr %1516, align 8, !tbaa !9
  store i64 %1517, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %1518

1518:                                             ; preds = %1629, %1511
  %1519 = load i64, ptr %50, align 8, !tbaa !9
  %1520 = load i64, ptr %41, align 8, !tbaa !9
  %1521 = icmp sle i64 %1519, %1520
  br i1 %1521, label %1522, label %1632

1522:                                             ; preds = %1518
  %1523 = load ptr, ptr %32, align 8, !tbaa !5
  %1524 = load i64, ptr %50, align 8, !tbaa !9
  %1525 = getelementptr inbounds float, ptr %1523, i64 %1524
  %1526 = load float, ptr %1525, align 4, !tbaa !11
  %1527 = load float, ptr %59, align 4, !tbaa !11
  %1528 = fcmp ogt float %1526, %1527
  br i1 %1528, label %1529, label %1577

1529:                                             ; preds = %1522
  %1530 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %1530, ptr %42, align 8, !tbaa !9
  %1531 = load ptr, ptr %31, align 8, !tbaa !5
  %1532 = load i64, ptr %42, align 8, !tbaa !9
  %1533 = getelementptr inbounds %struct.complex, ptr %1531, i64 %1532
  %1534 = getelementptr inbounds %struct.complex, ptr %1533, i32 0, i32 0
  %1535 = load float, ptr %1534, align 4, !tbaa !16
  store float %1535, ptr %45, align 4, !tbaa !11
  %1536 = load float, ptr %45, align 4, !tbaa !11
  %1537 = fcmp oge float %1536, 0.000000e+00
  br i1 %1537, label %1538, label %1540

1538:                                             ; preds = %1529
  %1539 = load float, ptr %45, align 4, !tbaa !11
  br label %1543

1540:                                             ; preds = %1529
  %1541 = load float, ptr %45, align 4, !tbaa !11
  %1542 = fneg float %1541
  br label %1543

1543:                                             ; preds = %1540, %1538
  %1544 = phi float [ %1539, %1538 ], [ %1542, %1540 ]
  %1545 = fpext float %1544 to double
  %1546 = load ptr, ptr %31, align 8, !tbaa !5
  %1547 = load i64, ptr %50, align 8, !tbaa !9
  %1548 = getelementptr inbounds %struct.complex, ptr %1546, i64 %1547
  %1549 = call double @r_imag(ptr noundef %1548)
  %1550 = fptrunc double %1549 to float
  store float %1550, ptr %46, align 4, !tbaa !11
  %1551 = load float, ptr %46, align 4, !tbaa !11
  %1552 = fcmp oge float %1551, 0.000000e+00
  br i1 %1552, label %1553, label %1555

1553:                                             ; preds = %1543
  %1554 = load float, ptr %46, align 4, !tbaa !11
  br label %1558

1555:                                             ; preds = %1543
  %1556 = load float, ptr %46, align 4, !tbaa !11
  %1557 = fneg float %1556
  br label %1558

1558:                                             ; preds = %1555, %1553
  %1559 = phi float [ %1554, %1553 ], [ %1557, %1555 ]
  %1560 = fpext float %1559 to double
  %1561 = fadd double %1545, %1560
  %1562 = load i64, ptr %55, align 8, !tbaa !9
  %1563 = sitofp i64 %1562 to float
  %1564 = load float, ptr %56, align 4, !tbaa !11
  %1565 = fmul float %1563, %1564
  %1566 = load ptr, ptr %32, align 8, !tbaa !5
  %1567 = load i64, ptr %50, align 8, !tbaa !9
  %1568 = getelementptr inbounds float, ptr %1566, i64 %1567
  %1569 = load float, ptr %1568, align 4, !tbaa !11
  %1570 = fmul float %1565, %1569
  %1571 = fpext float %1570 to double
  %1572 = fadd double %1561, %1571
  %1573 = fptrunc double %1572 to float
  %1574 = load ptr, ptr %32, align 8, !tbaa !5
  %1575 = load i64, ptr %50, align 8, !tbaa !9
  %1576 = getelementptr inbounds float, ptr %1574, i64 %1575
  store float %1573, ptr %1576, align 4, !tbaa !11
  br label %1628

1577:                                             ; preds = %1522
  %1578 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %1578, ptr %42, align 8, !tbaa !9
  %1579 = load ptr, ptr %31, align 8, !tbaa !5
  %1580 = load i64, ptr %42, align 8, !tbaa !9
  %1581 = getelementptr inbounds %struct.complex, ptr %1579, i64 %1580
  %1582 = getelementptr inbounds %struct.complex, ptr %1581, i32 0, i32 0
  %1583 = load float, ptr %1582, align 4, !tbaa !16
  store float %1583, ptr %45, align 4, !tbaa !11
  %1584 = load float, ptr %45, align 4, !tbaa !11
  %1585 = fcmp oge float %1584, 0.000000e+00
  br i1 %1585, label %1586, label %1588

1586:                                             ; preds = %1577
  %1587 = load float, ptr %45, align 4, !tbaa !11
  br label %1591

1588:                                             ; preds = %1577
  %1589 = load float, ptr %45, align 4, !tbaa !11
  %1590 = fneg float %1589
  br label %1591

1591:                                             ; preds = %1588, %1586
  %1592 = phi float [ %1587, %1586 ], [ %1590, %1588 ]
  %1593 = fpext float %1592 to double
  %1594 = load ptr, ptr %31, align 8, !tbaa !5
  %1595 = load i64, ptr %50, align 8, !tbaa !9
  %1596 = getelementptr inbounds %struct.complex, ptr %1594, i64 %1595
  %1597 = call double @r_imag(ptr noundef %1596)
  %1598 = fptrunc double %1597 to float
  store float %1598, ptr %46, align 4, !tbaa !11
  %1599 = load float, ptr %46, align 4, !tbaa !11
  %1600 = fcmp oge float %1599, 0.000000e+00
  br i1 %1600, label %1601, label %1603

1601:                                             ; preds = %1591
  %1602 = load float, ptr %46, align 4, !tbaa !11
  br label %1606

1603:                                             ; preds = %1591
  %1604 = load float, ptr %46, align 4, !tbaa !11
  %1605 = fneg float %1604
  br label %1606

1606:                                             ; preds = %1603, %1601
  %1607 = phi float [ %1602, %1601 ], [ %1605, %1603 ]
  %1608 = fpext float %1607 to double
  %1609 = fadd double %1593, %1608
  %1610 = load i64, ptr %55, align 8, !tbaa !9
  %1611 = sitofp i64 %1610 to float
  %1612 = load float, ptr %56, align 4, !tbaa !11
  %1613 = fmul float %1611, %1612
  %1614 = load ptr, ptr %32, align 8, !tbaa !5
  %1615 = load i64, ptr %50, align 8, !tbaa !9
  %1616 = getelementptr inbounds float, ptr %1614, i64 %1615
  %1617 = load float, ptr %1616, align 4, !tbaa !11
  %1618 = fmul float %1613, %1617
  %1619 = fpext float %1618 to double
  %1620 = fadd double %1609, %1619
  %1621 = load float, ptr %58, align 4, !tbaa !11
  %1622 = fpext float %1621 to double
  %1623 = fadd double %1620, %1622
  %1624 = fptrunc double %1623 to float
  %1625 = load ptr, ptr %32, align 8, !tbaa !5
  %1626 = load i64, ptr %50, align 8, !tbaa !9
  %1627 = getelementptr inbounds float, ptr %1625, i64 %1626
  store float %1624, ptr %1627, align 4, !tbaa !11
  br label %1628

1628:                                             ; preds = %1606, %1558
  br label %1629

1629:                                             ; preds = %1628
  %1630 = load i64, ptr %50, align 8, !tbaa !9
  %1631 = add nsw i64 %1630, 1
  store i64 %1631, ptr %50, align 8, !tbaa !9
  br label %1518, !llvm.loop !37

1632:                                             ; preds = %1518
  store i64 0, ptr %57, align 8, !tbaa !9
  br label %1633

1633:                                             ; preds = %1772, %1632
  %1634 = load ptr, ptr %21, align 8, !tbaa !5
  %1635 = load ptr, ptr %31, align 8, !tbaa !5
  %1636 = load ptr, ptr %21, align 8, !tbaa !5
  %1637 = load i64, ptr %1636, align 8, !tbaa !9
  %1638 = add nsw i64 %1637, 1
  %1639 = getelementptr inbounds %struct.complex, ptr %1635, i64 %1638
  %1640 = load ptr, ptr %31, align 8, !tbaa !5
  %1641 = getelementptr inbounds %struct.complex, ptr %1640, i64 1
  %1642 = load ptr, ptr %29, align 8, !tbaa !5
  %1643 = load i64, ptr %51, align 8, !tbaa !9
  %1644 = getelementptr inbounds float, ptr %1642, i64 %1643
  %1645 = getelementptr inbounds [3 x i64], ptr %60, i64 0, i64 0
  %1646 = call i32 @clacn2_(ptr noundef %1634, ptr noundef %1639, ptr noundef %1641, ptr noundef %1644, ptr noundef %57, ptr noundef %1645)
  %1647 = load i64, ptr %57, align 8, !tbaa !9
  %1648 = icmp ne i64 %1647, 0
  br i1 %1648, label %1649, label %1773

1649:                                             ; preds = %1633
  %1650 = load i64, ptr %57, align 8, !tbaa !9
  %1651 = icmp eq i64 %1650, 1
  br i1 %1651, label %1652, label %1712

1652:                                             ; preds = %1649
  %1653 = load ptr, ptr %18, align 8, !tbaa !5
  %1654 = getelementptr inbounds [1 x i8], ptr %65, i64 0, i64 0
  %1655 = load ptr, ptr %20, align 8, !tbaa !5
  %1656 = load ptr, ptr %21, align 8, !tbaa !5
  %1657 = load ptr, ptr %23, align 8, !tbaa !5
  %1658 = load i64, ptr %35, align 8, !tbaa !9
  %1659 = getelementptr inbounds %struct.complex, ptr %1657, i64 %1658
  %1660 = load ptr, ptr %24, align 8, !tbaa !5
  %1661 = load ptr, ptr %31, align 8, !tbaa !5
  %1662 = getelementptr inbounds %struct.complex, ptr %1661, i64 1
  %1663 = call i32 @f2c_ctrsv(ptr noundef %1653, ptr noundef %1654, ptr noundef %1655, ptr noundef %1656, ptr noundef %1659, ptr noundef %1660, ptr noundef %1662, ptr noundef @c__1)
  %1664 = load ptr, ptr %21, align 8, !tbaa !5
  %1665 = load i64, ptr %1664, align 8, !tbaa !9
  store i64 %1665, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %1666

1666:                                             ; preds = %1708, %1652
  %1667 = load i64, ptr %50, align 8, !tbaa !9
  %1668 = load i64, ptr %41, align 8, !tbaa !9
  %1669 = icmp sle i64 %1667, %1668
  br i1 %1669, label %1670, label %1711

1670:                                             ; preds = %1666
  %1671 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %1671, ptr %42, align 8, !tbaa !9
  %1672 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %1672, ptr %43, align 8, !tbaa !9
  %1673 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %1673, ptr %44, align 8, !tbaa !9
  %1674 = load ptr, ptr %32, align 8, !tbaa !5
  %1675 = load i64, ptr %43, align 8, !tbaa !9
  %1676 = getelementptr inbounds float, ptr %1674, i64 %1675
  %1677 = load float, ptr %1676, align 4, !tbaa !11
  %1678 = load ptr, ptr %31, align 8, !tbaa !5
  %1679 = load i64, ptr %44, align 8, !tbaa !9
  %1680 = getelementptr inbounds %struct.complex, ptr %1678, i64 %1679
  %1681 = getelementptr inbounds %struct.complex, ptr %1680, i32 0, i32 0
  %1682 = load float, ptr %1681, align 4, !tbaa !16
  %1683 = fmul float %1677, %1682
  %1684 = getelementptr inbounds %struct.complex, ptr %49, i32 0, i32 0
  store float %1683, ptr %1684, align 4, !tbaa !16
  %1685 = load ptr, ptr %32, align 8, !tbaa !5
  %1686 = load i64, ptr %43, align 8, !tbaa !9
  %1687 = getelementptr inbounds float, ptr %1685, i64 %1686
  %1688 = load float, ptr %1687, align 4, !tbaa !11
  %1689 = load ptr, ptr %31, align 8, !tbaa !5
  %1690 = load i64, ptr %44, align 8, !tbaa !9
  %1691 = getelementptr inbounds %struct.complex, ptr %1689, i64 %1690
  %1692 = getelementptr inbounds %struct.complex, ptr %1691, i32 0, i32 1
  %1693 = load float, ptr %1692, align 4, !tbaa !18
  %1694 = fmul float %1688, %1693
  %1695 = getelementptr inbounds %struct.complex, ptr %49, i32 0, i32 1
  store float %1694, ptr %1695, align 4, !tbaa !18
  %1696 = getelementptr inbounds %struct.complex, ptr %49, i32 0, i32 0
  %1697 = load float, ptr %1696, align 4, !tbaa !16
  %1698 = load ptr, ptr %31, align 8, !tbaa !5
  %1699 = load i64, ptr %42, align 8, !tbaa !9
  %1700 = getelementptr inbounds %struct.complex, ptr %1698, i64 %1699
  %1701 = getelementptr inbounds %struct.complex, ptr %1700, i32 0, i32 0
  store float %1697, ptr %1701, align 4, !tbaa !16
  %1702 = getelementptr inbounds %struct.complex, ptr %49, i32 0, i32 1
  %1703 = load float, ptr %1702, align 4, !tbaa !18
  %1704 = load ptr, ptr %31, align 8, !tbaa !5
  %1705 = load i64, ptr %42, align 8, !tbaa !9
  %1706 = getelementptr inbounds %struct.complex, ptr %1704, i64 %1705
  %1707 = getelementptr inbounds %struct.complex, ptr %1706, i32 0, i32 1
  store float %1703, ptr %1707, align 4, !tbaa !18
  br label %1708

1708:                                             ; preds = %1670
  %1709 = load i64, ptr %50, align 8, !tbaa !9
  %1710 = add nsw i64 %1709, 1
  store i64 %1710, ptr %50, align 8, !tbaa !9
  br label %1666, !llvm.loop !38

1711:                                             ; preds = %1666
  br label %1772

1712:                                             ; preds = %1649
  %1713 = load ptr, ptr %21, align 8, !tbaa !5
  %1714 = load i64, ptr %1713, align 8, !tbaa !9
  store i64 %1714, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %1715

1715:                                             ; preds = %1757, %1712
  %1716 = load i64, ptr %50, align 8, !tbaa !9
  %1717 = load i64, ptr %41, align 8, !tbaa !9
  %1718 = icmp sle i64 %1716, %1717
  br i1 %1718, label %1719, label %1760

1719:                                             ; preds = %1715
  %1720 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %1720, ptr %42, align 8, !tbaa !9
  %1721 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %1721, ptr %43, align 8, !tbaa !9
  %1722 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %1722, ptr %44, align 8, !tbaa !9
  %1723 = load ptr, ptr %32, align 8, !tbaa !5
  %1724 = load i64, ptr %43, align 8, !tbaa !9
  %1725 = getelementptr inbounds float, ptr %1723, i64 %1724
  %1726 = load float, ptr %1725, align 4, !tbaa !11
  %1727 = load ptr, ptr %31, align 8, !tbaa !5
  %1728 = load i64, ptr %44, align 8, !tbaa !9
  %1729 = getelementptr inbounds %struct.complex, ptr %1727, i64 %1728
  %1730 = getelementptr inbounds %struct.complex, ptr %1729, i32 0, i32 0
  %1731 = load float, ptr %1730, align 4, !tbaa !16
  %1732 = fmul float %1726, %1731
  %1733 = getelementptr inbounds %struct.complex, ptr %49, i32 0, i32 0
  store float %1732, ptr %1733, align 4, !tbaa !16
  %1734 = load ptr, ptr %32, align 8, !tbaa !5
  %1735 = load i64, ptr %43, align 8, !tbaa !9
  %1736 = getelementptr inbounds float, ptr %1734, i64 %1735
  %1737 = load float, ptr %1736, align 4, !tbaa !11
  %1738 = load ptr, ptr %31, align 8, !tbaa !5
  %1739 = load i64, ptr %44, align 8, !tbaa !9
  %1740 = getelementptr inbounds %struct.complex, ptr %1738, i64 %1739
  %1741 = getelementptr inbounds %struct.complex, ptr %1740, i32 0, i32 1
  %1742 = load float, ptr %1741, align 4, !tbaa !18
  %1743 = fmul float %1737, %1742
  %1744 = getelementptr inbounds %struct.complex, ptr %49, i32 0, i32 1
  store float %1743, ptr %1744, align 4, !tbaa !18
  %1745 = getelementptr inbounds %struct.complex, ptr %49, i32 0, i32 0
  %1746 = load float, ptr %1745, align 4, !tbaa !16
  %1747 = load ptr, ptr %31, align 8, !tbaa !5
  %1748 = load i64, ptr %42, align 8, !tbaa !9
  %1749 = getelementptr inbounds %struct.complex, ptr %1747, i64 %1748
  %1750 = getelementptr inbounds %struct.complex, ptr %1749, i32 0, i32 0
  store float %1746, ptr %1750, align 4, !tbaa !16
  %1751 = getelementptr inbounds %struct.complex, ptr %49, i32 0, i32 1
  %1752 = load float, ptr %1751, align 4, !tbaa !18
  %1753 = load ptr, ptr %31, align 8, !tbaa !5
  %1754 = load i64, ptr %42, align 8, !tbaa !9
  %1755 = getelementptr inbounds %struct.complex, ptr %1753, i64 %1754
  %1756 = getelementptr inbounds %struct.complex, ptr %1755, i32 0, i32 1
  store float %1752, ptr %1756, align 4, !tbaa !18
  br label %1757

1757:                                             ; preds = %1719
  %1758 = load i64, ptr %50, align 8, !tbaa !9
  %1759 = add nsw i64 %1758, 1
  store i64 %1759, ptr %50, align 8, !tbaa !9
  br label %1715, !llvm.loop !39

1760:                                             ; preds = %1715
  %1761 = load ptr, ptr %18, align 8, !tbaa !5
  %1762 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  %1763 = load ptr, ptr %20, align 8, !tbaa !5
  %1764 = load ptr, ptr %21, align 8, !tbaa !5
  %1765 = load ptr, ptr %23, align 8, !tbaa !5
  %1766 = load i64, ptr %35, align 8, !tbaa !9
  %1767 = getelementptr inbounds %struct.complex, ptr %1765, i64 %1766
  %1768 = load ptr, ptr %24, align 8, !tbaa !5
  %1769 = load ptr, ptr %31, align 8, !tbaa !5
  %1770 = getelementptr inbounds %struct.complex, ptr %1769, i64 1
  %1771 = call i32 @f2c_ctrsv(ptr noundef %1761, ptr noundef %1762, ptr noundef %1763, ptr noundef %1764, ptr noundef %1767, ptr noundef %1768, ptr noundef %1770, ptr noundef @c__1)
  br label %1772

1772:                                             ; preds = %1760, %1711
  br label %1633

1773:                                             ; preds = %1633
  store float 0.000000e+00, ptr %67, align 4, !tbaa !11
  %1774 = load ptr, ptr %21, align 8, !tbaa !5
  %1775 = load i64, ptr %1774, align 8, !tbaa !9
  store i64 %1775, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %1776

1776:                                             ; preds = %1834, %1773
  %1777 = load i64, ptr %50, align 8, !tbaa !9
  %1778 = load i64, ptr %41, align 8, !tbaa !9
  %1779 = icmp sle i64 %1777, %1778
  br i1 %1779, label %1780, label %1837

1780:                                             ; preds = %1776
  %1781 = load i64, ptr %50, align 8, !tbaa !9
  %1782 = load i64, ptr %51, align 8, !tbaa !9
  %1783 = load i64, ptr %38, align 8, !tbaa !9
  %1784 = mul nsw i64 %1782, %1783
  %1785 = add nsw i64 %1781, %1784
  store i64 %1785, ptr %42, align 8, !tbaa !9
  %1786 = load float, ptr %67, align 4, !tbaa !11
  store float %1786, ptr %47, align 4, !tbaa !11
  %1787 = load ptr, ptr %27, align 8, !tbaa !5
  %1788 = load i64, ptr %42, align 8, !tbaa !9
  %1789 = getelementptr inbounds %struct.complex, ptr %1787, i64 %1788
  %1790 = getelementptr inbounds %struct.complex, ptr %1789, i32 0, i32 0
  %1791 = load float, ptr %1790, align 4, !tbaa !16
  store float %1791, ptr %45, align 4, !tbaa !11
  %1792 = load float, ptr %45, align 4, !tbaa !11
  %1793 = fcmp oge float %1792, 0.000000e+00
  br i1 %1793, label %1794, label %1796

1794:                                             ; preds = %1780
  %1795 = load float, ptr %45, align 4, !tbaa !11
  br label %1799

1796:                                             ; preds = %1780
  %1797 = load float, ptr %45, align 4, !tbaa !11
  %1798 = fneg float %1797
  br label %1799

1799:                                             ; preds = %1796, %1794
  %1800 = phi float [ %1795, %1794 ], [ %1798, %1796 ]
  %1801 = fpext float %1800 to double
  %1802 = load ptr, ptr %27, align 8, !tbaa !5
  %1803 = load i64, ptr %50, align 8, !tbaa !9
  %1804 = load i64, ptr %51, align 8, !tbaa !9
  %1805 = load i64, ptr %38, align 8, !tbaa !9
  %1806 = mul nsw i64 %1804, %1805
  %1807 = add nsw i64 %1803, %1806
  %1808 = getelementptr inbounds %struct.complex, ptr %1802, i64 %1807
  %1809 = call double @r_imag(ptr noundef %1808)
  %1810 = fptrunc double %1809 to float
  store float %1810, ptr %46, align 4, !tbaa !11
  %1811 = load float, ptr %46, align 4, !tbaa !11
  %1812 = fcmp oge float %1811, 0.000000e+00
  br i1 %1812, label %1813, label %1815

1813:                                             ; preds = %1799
  %1814 = load float, ptr %46, align 4, !tbaa !11
  br label %1818

1815:                                             ; preds = %1799
  %1816 = load float, ptr %46, align 4, !tbaa !11
  %1817 = fneg float %1816
  br label %1818

1818:                                             ; preds = %1815, %1813
  %1819 = phi float [ %1814, %1813 ], [ %1817, %1815 ]
  %1820 = fpext float %1819 to double
  %1821 = fadd double %1801, %1820
  %1822 = fptrunc double %1821 to float
  store float %1822, ptr %48, align 4, !tbaa !11
  %1823 = load float, ptr %47, align 4, !tbaa !11
  %1824 = load float, ptr %48, align 4, !tbaa !11
  %1825 = fcmp oge float %1823, %1824
  br i1 %1825, label %1826, label %1828

1826:                                             ; preds = %1818
  %1827 = load float, ptr %47, align 4, !tbaa !11
  br label %1830

1828:                                             ; preds = %1818
  %1829 = load float, ptr %48, align 4, !tbaa !11
  br label %1830

1830:                                             ; preds = %1828, %1826
  %1831 = phi float [ %1827, %1826 ], [ %1829, %1828 ]
  %1832 = fpext float %1831 to double
  %1833 = fptrunc double %1832 to float
  store float %1833, ptr %67, align 4, !tbaa !11
  br label %1834

1834:                                             ; preds = %1830
  %1835 = load i64, ptr %50, align 8, !tbaa !9
  %1836 = add nsw i64 %1835, 1
  store i64 %1836, ptr %50, align 8, !tbaa !9
  br label %1776, !llvm.loop !40

1837:                                             ; preds = %1776
  %1838 = load float, ptr %67, align 4, !tbaa !11
  %1839 = fcmp une float %1838, 0.000000e+00
  br i1 %1839, label %1840, label %1847

1840:                                             ; preds = %1837
  %1841 = load float, ptr %67, align 4, !tbaa !11
  %1842 = load ptr, ptr %29, align 8, !tbaa !5
  %1843 = load i64, ptr %51, align 8, !tbaa !9
  %1844 = getelementptr inbounds float, ptr %1842, i64 %1843
  %1845 = load float, ptr %1844, align 4, !tbaa !11
  %1846 = fdiv float %1845, %1841
  store float %1846, ptr %1844, align 4, !tbaa !11
  br label %1847

1847:                                             ; preds = %1840, %1837
  br label %1848

1848:                                             ; preds = %1847
  %1849 = load i64, ptr %51, align 8, !tbaa !9
  %1850 = add nsw i64 %1849, 1
  store i64 %1850, ptr %51, align 8, !tbaa !9
  br label %263, !llvm.loop !41

1851:                                             ; preds = %263
  store i32 0, ptr %17, align 4
  store i32 1, ptr %68, align 4
  br label %1852

1852:                                             ; preds = %1851, %236, %206
  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 1, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 24, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  %1853 = load i32, ptr %17, align 4
  ret i32 %1853
}

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

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

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

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

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

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

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

41:                                               ; preds = %16
  %42 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not683 = icmp eq i64 %42, 0
  br i1 %.not683, label %.thread.sink.split, label %43

43:                                               ; preds = %41, %16
  %.not684 = icmp eq i64 %39, 0
  br i1 %.not684, label %44, label %48

44:                                               ; preds = %43
  %45 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %.not685 = icmp eq i64 %45, 0
  br i1 %.not685, label %46, label %48

46:                                               ; preds = %44
  %47 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #5
  %.not686 = icmp eq i64 %47, 0
  br i1 %.not686, label %.thread.sink.split, label %48

48:                                               ; preds = %46, %44, %43
  %.not687 = icmp eq i64 %40, 0
  br i1 %.not687, label %49, label %51

49:                                               ; preds = %48
  %50 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #5
  %.not688 = icmp eq i64 %50, 0
  br i1 %.not688, label %.thread.sink.split, label %51

51:                                               ; preds = %49, %48
  %52 = load i64, ptr %3, align 8, !tbaa !5
  %53 = icmp slt i64 %52, 0
  br i1 %53, label %.thread.sink.split, label %54

54:                                               ; preds = %51
  %55 = load i64, ptr %4, align 8, !tbaa !5
  %56 = icmp slt i64 %55, 0
  br i1 %56, label %.thread.sink.split, label %57

57:                                               ; preds = %54
  %58 = load i64, ptr %6, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %52, i64 1)
  %59 = icmp slt i64 %58, %spec.select
  br i1 %59, label %.thread.sink.split, label %60

60:                                               ; preds = %57
  %61 = load i64, ptr %8, align 8, !tbaa !5
  %62 = icmp slt i64 %61, %spec.select
  br i1 %62, label %.thread.sink.split, label %63

63:                                               ; preds = %60
  %64 = load i64, ptr %10, align 8, !tbaa !5
  %65 = icmp slt i64 %64, %spec.select
  br i1 %65, label %.thread.sink.split, label %66

66:                                               ; preds = %63
  %.pr = load i64, ptr %15, align 8, !tbaa !5
  %.not689 = icmp eq i64 %.pr, 0
  br i1 %.not689, label %70, label %.thread

.thread.sink.split:                               ; preds = %63, %60, %57, %54, %51, %49, %46, %41
  %.sink = phi i64 [ -1, %41 ], [ -2, %46 ], [ -3, %49 ], [ -4, %51 ], [ -5, %54 ], [ -7, %57 ], [ -9, %60 ], [ -11, %63 ]
  store i64 %.sink, ptr %15, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %66
  %67 = phi i64 [ %.pr, %66 ], [ %.sink, %.thread.sink.split ]
  %68 = sub nsw i64 0, %67
  store i64 %68, ptr %19, align 8, !tbaa !5
  %69 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %19) #5
  br label %.loopexit

70:                                               ; preds = %66
  %71 = icmp eq i64 %52, 0
  %.not721884 = icmp eq i64 %55, 0
  br i1 %71, label %73, label %72

72:                                               ; preds = %70
  br i1 %.not721884, label %.loopexit, label %98

73:                                               ; preds = %70
  br i1 %.not721884, label %.loopexit, label %.lr.ph887.preheader

.lr.ph887.preheader:                              ; preds = %73
  %min.iters.check1001 = icmp ult i64 %55, 8
  %74 = sub i64 %18, %17
  %diff.check = icmp ult i64 %74, 32
  %or.cond = or i1 %min.iters.check1001, %diff.check
  br i1 %or.cond, label %.lr.ph887.preheader1028, label %vector.ph1002

vector.ph1002:                                    ; preds = %.lr.ph887.preheader
  %n.vec1004 = and i64 %55, 9223372036854775800
  %ind.end1005 = or disjoint i64 %n.vec1004, 1
  br label %vector.body1007

vector.body1007:                                  ; preds = %vector.body1007, %vector.ph1002
  %index1008 = phi i64 [ 0, %vector.ph1002 ], [ %index.next1010, %vector.body1007 ]
  %75 = getelementptr float, ptr %11, i64 %index1008
  %76 = getelementptr inbounds i8, ptr %75, i64 16
  store <4 x float> zeroinitializer, ptr %75, align 4, !tbaa !9
  store <4 x float> zeroinitializer, ptr %76, align 4, !tbaa !9
  %77 = getelementptr float, ptr %12, i64 %index1008
  %78 = getelementptr inbounds i8, ptr %77, i64 16
  store <4 x float> zeroinitializer, ptr %77, align 4, !tbaa !9
  store <4 x float> zeroinitializer, ptr %78, align 4, !tbaa !9
  %index.next1010 = add nuw i64 %index1008, 8
  %79 = icmp eq i64 %index.next1010, %n.vec1004
  br i1 %79, label %middle.block999, label %vector.body1007, !llvm.loop !11

middle.block999:                                  ; preds = %vector.body1007
  %cmp.n1011 = icmp eq i64 %55, %n.vec1004
  br i1 %cmp.n1011, label %.loopexit, label %.lr.ph887.preheader1028

.lr.ph887.preheader1028:                          ; preds = %middle.block999, %.lr.ph887.preheader
  %.0668885.ph = phi i64 [ 1, %.lr.ph887.preheader ], [ %ind.end1005, %middle.block999 ]
  %80 = add nuw i64 %55, 1
  %81 = sub i64 %80, %.0668885.ph
  %82 = sub i64 %55, %.0668885.ph
  %xtraiter1052 = and i64 %81, 3
  %lcmp.mod1053.not = icmp eq i64 %xtraiter1052, 0
  br i1 %lcmp.mod1053.not, label %.lr.ph887.prol.loopexit, label %.lr.ph887.prol

.lr.ph887.prol:                                   ; preds = %.lr.ph887.preheader1028, %.lr.ph887.prol
  %.0668885.prol = phi i64 [ %85, %.lr.ph887.prol ], [ %.0668885.ph, %.lr.ph887.preheader1028 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph887.prol ], [ 0, %.lr.ph887.preheader1028 ]
  %83 = getelementptr inbounds float, ptr %34, i64 %.0668885.prol
  store float 0.000000e+00, ptr %83, align 4, !tbaa !9
  %84 = getelementptr inbounds float, ptr %35, i64 %.0668885.prol
  store float 0.000000e+00, ptr %84, align 4, !tbaa !9
  %85 = add nuw i64 %.0668885.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter1052
  br i1 %prol.iter.cmp.not, label %.lr.ph887.prol.loopexit, label %.lr.ph887.prol, !llvm.loop !15

.lr.ph887.prol.loopexit:                          ; preds = %.lr.ph887.prol, %.lr.ph887.preheader1028
  %.0668885.unr = phi i64 [ %.0668885.ph, %.lr.ph887.preheader1028 ], [ %85, %.lr.ph887.prol ]
  %86 = icmp ult i64 %82, 3
  br i1 %86, label %.loopexit, label %.lr.ph887

.lr.ph887:                                        ; preds = %.lr.ph887.prol.loopexit, %.lr.ph887
  %.0668885 = phi i64 [ %97, %.lr.ph887 ], [ %.0668885.unr, %.lr.ph887.prol.loopexit ]
  %87 = getelementptr inbounds float, ptr %34, i64 %.0668885
  store float 0.000000e+00, ptr %87, align 4, !tbaa !9
  %88 = getelementptr inbounds float, ptr %35, i64 %.0668885
  store float 0.000000e+00, ptr %88, align 4, !tbaa !9
  %89 = getelementptr float, ptr %11, i64 %.0668885
  store float 0.000000e+00, ptr %89, align 4, !tbaa !9
  %90 = getelementptr float, ptr %12, i64 %.0668885
  store float 0.000000e+00, ptr %90, align 4, !tbaa !9
  %91 = add nuw i64 %.0668885, 2
  %92 = getelementptr inbounds float, ptr %34, i64 %91
  store float 0.000000e+00, ptr %92, align 4, !tbaa !9
  %93 = getelementptr inbounds float, ptr %35, i64 %91
  store float 0.000000e+00, ptr %93, align 4, !tbaa !9
  %94 = add nuw i64 %.0668885, 3
  %95 = getelementptr inbounds float, ptr %34, i64 %94
  store float 0.000000e+00, ptr %95, align 4, !tbaa !9
  %96 = getelementptr inbounds float, ptr %35, i64 %94
  store float 0.000000e+00, ptr %96, align 4, !tbaa !9
  %97 = add nuw i64 %.0668885, 4
  %exitcond923.not.3 = icmp eq i64 %94, %55
  br i1 %exitcond923.not.3, label %.loopexit, label %.lr.ph887, !llvm.loop !17

98:                                               ; preds = %72
  %. = select i1 %.not684, i8 67, i8 78
  %.724 = select i1 %.not684, i8 78, i8 67
  store i8 %., ptr %23, align 1, !tbaa !18
  store i8 %.724, ptr %24, align 1, !tbaa !18
  %99 = add nuw nsw i64 %52, 1
  %100 = tail call double @slamch_(ptr noundef nonnull @.str.6) #5
  %101 = fptrunc double %100 to float
  %102 = tail call double @slamch_(ptr noundef nonnull @.str.7) #5
  %103 = fptrunc double %102 to float
  %104 = uitofp nneg i64 %99 to float
  %105 = fmul float %104, %103
  %106 = fdiv float %105, %101
  %107 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %107, ptr %19, align 8, !tbaa !5
  %invariant.gep876 = getelementptr i8, ptr %33, i64 8
  %invariant.gep878 = getelementptr i8, ptr %30, i64 8
  %.not692880 = icmp slt i64 %107, 1
  br i1 %.not692880, label %.loopexit, label %.lr.ph883

.lr.ph883:                                        ; preds = %98
  %108 = fpext float %105 to double
  %109 = fmul float %104, %101
  br label %110

110:                                              ; preds = %.lr.ph883, %._crit_edge874.thread
  %.1669881 = phi i64 [ 1, %.lr.ph883 ], [ %582, %._crit_edge874.thread ]
  %111 = mul nsw i64 %.1669881, %31
  %gep877 = getelementptr %struct.complex, ptr %invariant.gep876, i64 %111
  %112 = call i32 @f2c_ccopy(ptr noundef nonnull %3, ptr noundef %gep877, ptr noundef nonnull @c__1, ptr noundef %13, ptr noundef nonnull @c__1) #5
  %113 = call i32 @f2c_ctrmv(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %13, ptr noundef nonnull @c__1) #5
  store <2 x float> <float -1.000000e+00, float -0.000000e+00>, ptr %20, align 8, !tbaa !9
  %114 = mul nsw i64 %.1669881, %28
  %gep879 = getelementptr %struct.complex, ptr %invariant.gep878, i64 %114
  %115 = call i32 @f2c_caxpy(ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef %gep879, ptr noundef nonnull @c__1, ptr noundef %13, ptr noundef nonnull @c__1) #5
  %116 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep = getelementptr %struct.complex, ptr %30, i64 %114
  %.not693736 = icmp slt i64 %116, 1
  br i1 %.not693736, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %110, %.lr.ph
  %.0670737 = phi i64 [ %128, %.lr.ph ], [ 1, %110 ]
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0670737
  %117 = load float, ptr %gep, align 4, !tbaa !19
  %118 = call double @r_imag(ptr noundef nonnull %gep) #5
  %119 = fptrunc double %118 to float
  %120 = insertelement <2 x float> poison, float %117, i64 0
  %121 = insertelement <2 x float> %120, float %119, i64 1
  %122 = fcmp oge <2 x float> %121, zeroinitializer
  %123 = fneg <2 x float> %121
  %124 = select <2 x i1> %122, <2 x float> %121, <2 x float> %123
  %shift = shufflevector <2 x float> %124, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %125 = fadd <2 x float> %124, %shift
  %126 = extractelement <2 x float> %125, i64 0
  %127 = getelementptr inbounds float, ptr %37, i64 %.0670737
  store float %126, ptr %127, align 4, !tbaa !9
  %128 = add nuw i64 %.0670737, 1
  %exitcond.not = icmp eq i64 %.0670737, %116
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !21

._crit_edge:                                      ; preds = %.lr.ph, %110
  %129 = load i64, ptr %3, align 8, !tbaa !5
  br i1 %.not684, label %271, label %130

130:                                              ; preds = %._crit_edge
  %invariant.gep780 = getelementptr %struct.complex, ptr %33, i64 %111
  %.not705782 = icmp slt i64 %129, 1
  br i1 %.not, label %201, label %131

131:                                              ; preds = %130
  br i1 %.not687, label %166, label %132

132:                                              ; preds = %131
  br i1 %.not705782, label %._crit_edge847.thread, label %.lr.ph746.preheader

.lr.ph746.preheader:                              ; preds = %132
  %133 = add nuw i64 %129, 1
  br label %.lr.ph746

.lr.ph746:                                        ; preds = %.lr.ph746.preheader, %164
  %indvars.iv = phi i64 [ 2, %.lr.ph746.preheader ], [ %indvars.iv.next, %164 ]
  %.0662744 = phi i64 [ 1, %.lr.ph746.preheader ], [ %165, %164 ]
  %gep742 = getelementptr %struct.complex, ptr %invariant.gep780, i64 %.0662744
  %134 = load float, ptr %gep742, align 4, !tbaa !19
  %135 = fcmp oge float %134, 0.000000e+00
  %136 = fneg float %134
  %137 = select i1 %135, float %134, float %136
  %138 = call double @r_imag(ptr noundef nonnull %gep742) #5
  %139 = fptrunc double %138 to float
  %140 = fcmp oge float %139, 0.000000e+00
  %141 = fneg float %139
  %142 = select i1 %140, float %139, float %141
  %143 = fadd float %137, %142
  %144 = mul nsw i64 %.0662744, %25
  %invariant.gep738 = getelementptr %struct.complex, ptr %27, i64 %144
  %145 = fpext float %143 to double
  br label %146

146:                                              ; preds = %.lr.ph746, %146
  %.1671740 = phi i64 [ 1, %.lr.ph746 ], [ %163, %146 ]
  %gep739 = getelementptr %struct.complex, ptr %invariant.gep738, i64 %.1671740
  %147 = load float, ptr %gep739, align 4, !tbaa !19
  %148 = call double @r_imag(ptr noundef nonnull %gep739) #5
  %149 = fptrunc double %148 to float
  %150 = insertelement <2 x float> poison, float %147, i64 0
  %151 = insertelement <2 x float> %150, float %149, i64 1
  %152 = fcmp oge <2 x float> %151, zeroinitializer
  %153 = fneg <2 x float> %151
  %154 = select <2 x i1> %152, <2 x float> %151, <2 x float> %153
  %155 = fpext <2 x float> %154 to <2 x double>
  %shift1012 = shufflevector <2 x double> %155, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %156 = fadd <2 x double> %shift1012, %155
  %157 = extractelement <2 x double> %156, i64 0
  %158 = getelementptr inbounds float, ptr %37, i64 %.1671740
  %159 = load float, ptr %158, align 4, !tbaa !9
  %160 = fpext float %159 to double
  %161 = call double @llvm.fmuladd.f64(double %157, double %145, double %160)
  %162 = fptrunc double %161 to float
  store float %162, ptr %158, align 4, !tbaa !9
  %163 = add nuw i64 %.1671740, 1
  %exitcond904.not = icmp eq i64 %163, %indvars.iv
  br i1 %exitcond904.not, label %164, label %146, !llvm.loop !22

164:                                              ; preds = %146
  %165 = add nuw nsw i64 %.0662744, 1
  %indvars.iv.next = add nuw i64 %indvars.iv, 1
  %exitcond905.not = icmp eq i64 %indvars.iv, %133
  br i1 %exitcond905.not, label %.loopexit727, label %.lr.ph746, !llvm.loop !23

166:                                              ; preds = %131
  br i1 %.not705782, label %._crit_edge847.thread, label %.lr.ph759

.lr.ph759:                                        ; preds = %166, %._crit_edge751
  %.1663757 = phi i64 [ %200, %._crit_edge751 ], [ 1, %166 ]
  %gep755 = getelementptr %struct.complex, ptr %invariant.gep780, i64 %.1663757
  %167 = load float, ptr %gep755, align 4, !tbaa !19
  %168 = fcmp oge float %167, 0.000000e+00
  %169 = fneg float %167
  %170 = select i1 %168, float %167, float %169
  %171 = call double @r_imag(ptr noundef nonnull %gep755) #5
  %172 = fptrunc double %171 to float
  %173 = fcmp oge float %172, 0.000000e+00
  %174 = fneg float %172
  %175 = select i1 %173, float %172, float %174
  %176 = fadd float %170, %175
  %.not711.not747 = icmp ugt i64 %.1663757, 1
  br i1 %.not711.not747, label %.lr.ph750, label %._crit_edge751

.lr.ph750:                                        ; preds = %.lr.ph759
  %177 = mul nsw i64 %.1663757, %25
  %invariant.gep752 = getelementptr %struct.complex, ptr %27, i64 %177
  %178 = fpext float %176 to double
  br label %179

179:                                              ; preds = %.lr.ph750, %179
  %.2672748 = phi i64 [ 1, %.lr.ph750 ], [ %196, %179 ]
  %gep753 = getelementptr %struct.complex, ptr %invariant.gep752, i64 %.2672748
  %180 = load float, ptr %gep753, align 4, !tbaa !19
  %181 = call double @r_imag(ptr noundef nonnull %gep753) #5
  %182 = fptrunc double %181 to float
  %183 = insertelement <2 x float> poison, float %180, i64 0
  %184 = insertelement <2 x float> %183, float %182, i64 1
  %185 = fcmp oge <2 x float> %184, zeroinitializer
  %186 = fneg <2 x float> %184
  %187 = select <2 x i1> %185, <2 x float> %184, <2 x float> %186
  %188 = fpext <2 x float> %187 to <2 x double>
  %shift1013 = shufflevector <2 x double> %188, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %189 = fadd <2 x double> %shift1013, %188
  %190 = extractelement <2 x double> %189, i64 0
  %191 = getelementptr inbounds float, ptr %37, i64 %.2672748
  %192 = load float, ptr %191, align 4, !tbaa !9
  %193 = fpext float %192 to double
  %194 = call double @llvm.fmuladd.f64(double %190, double %178, double %193)
  %195 = fptrunc double %194 to float
  store float %195, ptr %191, align 4, !tbaa !9
  %196 = add nuw nsw i64 %.2672748, 1
  %exitcond906.not = icmp eq i64 %196, %.1663757
  br i1 %exitcond906.not, label %._crit_edge751, label %179, !llvm.loop !24

._crit_edge751:                                   ; preds = %179, %.lr.ph759
  %197 = getelementptr inbounds float, ptr %37, i64 %.1663757
  %198 = load float, ptr %197, align 4, !tbaa !9
  %199 = fadd float %176, %198
  store float %199, ptr %197, align 4, !tbaa !9
  %200 = add nuw i64 %.1663757, 1
  %exitcond907.not = icmp eq i64 %.1663757, %129
  br i1 %exitcond907.not, label %.loopexit727, label %.lr.ph759, !llvm.loop !25

201:                                              ; preds = %130
  br i1 %.not687, label %235, label %202

202:                                              ; preds = %201
  br i1 %.not705782, label %._crit_edge847.thread, label %.lr.ph772

.lr.ph772:                                        ; preds = %202, %._crit_edge764
  %.2664770 = phi i64 [ %234, %._crit_edge764 ], [ 1, %202 ]
  %gep768 = getelementptr %struct.complex, ptr %invariant.gep780, i64 %.2664770
  %203 = load float, ptr %gep768, align 4, !tbaa !19
  %204 = call double @r_imag(ptr noundef nonnull %gep768) #5
  %205 = load i64, ptr %3, align 8, !tbaa !5
  %.not708760 = icmp sgt i64 %.2664770, %205
  br i1 %.not708760, label %._crit_edge764, label %.lr.ph763

.lr.ph763:                                        ; preds = %.lr.ph772
  %206 = fcmp oge float %203, 0.000000e+00
  %207 = fneg float %203
  %208 = select i1 %206, float %203, float %207
  %209 = fptrunc double %204 to float
  %210 = fcmp oge float %209, 0.000000e+00
  %211 = fneg float %209
  %212 = select i1 %210, float %209, float %211
  %213 = fadd float %208, %212
  %214 = mul nsw i64 %.2664770, %25
  %invariant.gep765 = getelementptr %struct.complex, ptr %27, i64 %214
  %215 = fpext float %213 to double
  br label %216

216:                                              ; preds = %.lr.ph763, %216
  %.3673761 = phi i64 [ %.2664770, %.lr.ph763 ], [ %233, %216 ]
  %gep766 = getelementptr %struct.complex, ptr %invariant.gep765, i64 %.3673761
  %217 = load float, ptr %gep766, align 4, !tbaa !19
  %218 = call double @r_imag(ptr noundef nonnull %gep766) #5
  %219 = fptrunc double %218 to float
  %220 = insertelement <2 x float> poison, float %217, i64 0
  %221 = insertelement <2 x float> %220, float %219, i64 1
  %222 = fcmp oge <2 x float> %221, zeroinitializer
  %223 = fneg <2 x float> %221
  %224 = select <2 x i1> %222, <2 x float> %221, <2 x float> %223
  %225 = fpext <2 x float> %224 to <2 x double>
  %shift1014 = shufflevector <2 x double> %225, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %226 = fadd <2 x double> %shift1014, %225
  %227 = extractelement <2 x double> %226, i64 0
  %228 = getelementptr inbounds float, ptr %37, i64 %.3673761
  %229 = load float, ptr %228, align 4, !tbaa !9
  %230 = fpext float %229 to double
  %231 = call double @llvm.fmuladd.f64(double %227, double %215, double %230)
  %232 = fptrunc double %231 to float
  store float %232, ptr %228, align 4, !tbaa !9
  %233 = add nuw nsw i64 %.3673761, 1
  %.not708.not = icmp slt i64 %.3673761, %205
  br i1 %.not708.not, label %216, label %._crit_edge764, !llvm.loop !26

._crit_edge764:                                   ; preds = %216, %.lr.ph772
  %234 = add nuw i64 %.2664770, 1
  %exitcond908.not = icmp eq i64 %.2664770, %129
  br i1 %exitcond908.not, label %.loopexit727, label %.lr.ph772, !llvm.loop !27

235:                                              ; preds = %201
  br i1 %.not705782, label %._crit_edge847.thread, label %.lr.ph785

.lr.ph785:                                        ; preds = %235, %._crit_edge777
  %.3665783 = phi i64 [ %247, %._crit_edge777 ], [ 1, %235 ]
  %gep781 = getelementptr %struct.complex, ptr %invariant.gep780, i64 %.3665783
  %236 = load float, ptr %gep781, align 4, !tbaa !19
  %237 = fcmp oge float %236, 0.000000e+00
  %238 = fneg float %236
  %239 = select i1 %237, float %236, float %238
  %240 = call double @r_imag(ptr noundef nonnull %gep781) #5
  %241 = fptrunc double %240 to float
  %242 = fcmp oge float %241, 0.000000e+00
  %243 = fneg float %241
  %244 = select i1 %242, float %241, float %243
  %245 = fadd float %239, %244
  %246 = load i64, ptr %3, align 8, !tbaa !5
  %247 = add nuw i64 %.3665783, 1
  %.not706773.not = icmp slt i64 %.3665783, %246
  br i1 %.not706773.not, label %.lr.ph776, label %._crit_edge777

.lr.ph776:                                        ; preds = %.lr.ph785
  %248 = mul nsw i64 %.3665783, %25
  %invariant.gep778 = getelementptr %struct.complex, ptr %27, i64 %248
  %249 = fpext float %245 to double
  br label %250

250:                                              ; preds = %.lr.ph776, %250
  %.4674774 = phi i64 [ %247, %.lr.ph776 ], [ %267, %250 ]
  %gep779 = getelementptr %struct.complex, ptr %invariant.gep778, i64 %.4674774
  %251 = load float, ptr %gep779, align 4, !tbaa !19
  %252 = call double @r_imag(ptr noundef nonnull %gep779) #5
  %253 = fptrunc double %252 to float
  %254 = insertelement <2 x float> poison, float %251, i64 0
  %255 = insertelement <2 x float> %254, float %253, i64 1
  %256 = fcmp oge <2 x float> %255, zeroinitializer
  %257 = fneg <2 x float> %255
  %258 = select <2 x i1> %256, <2 x float> %255, <2 x float> %257
  %259 = fpext <2 x float> %258 to <2 x double>
  %shift1015 = shufflevector <2 x double> %259, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %260 = fadd <2 x double> %shift1015, %259
  %261 = extractelement <2 x double> %260, i64 0
  %262 = getelementptr inbounds float, ptr %37, i64 %.4674774
  %263 = load float, ptr %262, align 4, !tbaa !9
  %264 = fpext float %263 to double
  %265 = call double @llvm.fmuladd.f64(double %261, double %249, double %264)
  %266 = fptrunc double %265 to float
  store float %266, ptr %262, align 4, !tbaa !9
  %267 = add nuw nsw i64 %.4674774, 1
  %.not706.not = icmp slt i64 %.4674774, %246
  br i1 %.not706.not, label %250, label %._crit_edge777, !llvm.loop !28

._crit_edge777:                                   ; preds = %250, %.lr.ph785
  %268 = getelementptr inbounds float, ptr %37, i64 %.3665783
  %269 = load float, ptr %268, align 4, !tbaa !9
  %270 = fadd float %245, %269
  store float %270, ptr %268, align 4, !tbaa !9
  %exitcond909.not = icmp eq i64 %.3665783, %129
  br i1 %exitcond909.not, label %.loopexit727, label %.lr.ph785, !llvm.loop !29

271:                                              ; preds = %._crit_edge
  br i1 %.not, label %351, label %272

272:                                              ; preds = %271
  br i1 %.not687, label %308, label %273

273:                                              ; preds = %272
  %.not702792 = icmp slt i64 %129, 1
  br i1 %.not702792, label %._crit_edge847.thread, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %273
  %invariant.gep788 = getelementptr %struct.complex, ptr %33, i64 %111
  %274 = add nuw i64 %129, 1
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %303
  %indvars.iv910 = phi i64 [ 2, %.preheader.lr.ph ], [ %indvars.iv.next911, %303 ]
  %.4666793 = phi i64 [ 1, %.preheader.lr.ph ], [ %307, %303 ]
  %275 = mul nsw i64 %.4666793, %25
  %invariant.gep786 = getelementptr %struct.complex, ptr %27, i64 %275
  br label %276

276:                                              ; preds = %.preheader, %276
  %.0661791 = phi float [ 0.000000e+00, %.preheader ], [ %301, %276 ]
  %.5675790 = phi i64 [ 1, %.preheader ], [ %302, %276 ]
  %gep787 = getelementptr %struct.complex, ptr %invariant.gep786, i64 %.5675790
  %277 = load float, ptr %gep787, align 4, !tbaa !19
  %278 = call double @r_imag(ptr noundef nonnull %gep787) #5
  %279 = fptrunc double %278 to float
  %280 = insertelement <2 x float> poison, float %277, i64 0
  %281 = insertelement <2 x float> %280, float %279, i64 1
  %282 = fcmp oge <2 x float> %281, zeroinitializer
  %283 = fneg <2 x float> %281
  %284 = select <2 x i1> %282, <2 x float> %281, <2 x float> %283
  %285 = fpext <2 x float> %284 to <2 x double>
  %shift1016 = shufflevector <2 x double> %285, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %286 = fadd <2 x double> %shift1016, %285
  %287 = extractelement <2 x double> %286, i64 0
  %gep789 = getelementptr %struct.complex, ptr %invariant.gep788, i64 %.5675790
  %288 = load float, ptr %gep789, align 4, !tbaa !19
  %289 = call double @r_imag(ptr noundef nonnull %gep789) #5
  %290 = fptrunc double %289 to float
  %291 = insertelement <2 x float> poison, float %288, i64 0
  %292 = insertelement <2 x float> %291, float %290, i64 1
  %293 = fcmp oge <2 x float> %292, zeroinitializer
  %294 = fneg <2 x float> %292
  %295 = select <2 x i1> %293, <2 x float> %292, <2 x float> %294
  %296 = fpext <2 x float> %295 to <2 x double>
  %shift1017 = shufflevector <2 x double> %296, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %297 = fadd <2 x double> %shift1017, %296
  %298 = extractelement <2 x double> %297, i64 0
  %299 = fpext float %.0661791 to double
  %300 = call double @llvm.fmuladd.f64(double %287, double %298, double %299)
  %301 = fptrunc double %300 to float
  %302 = add nuw i64 %.5675790, 1
  %exitcond912.not = icmp eq i64 %302, %indvars.iv910
  br i1 %exitcond912.not, label %303, label %276, !llvm.loop !30

303:                                              ; preds = %276
  %304 = getelementptr inbounds float, ptr %37, i64 %.4666793
  %305 = load float, ptr %304, align 4, !tbaa !9
  %306 = fadd float %305, %301
  store float %306, ptr %304, align 4, !tbaa !9
  %307 = add nuw nsw i64 %.4666793, 1
  %indvars.iv.next911 = add nuw i64 %indvars.iv910, 1
  %exitcond913.not = icmp eq i64 %indvars.iv910, %274
  br i1 %exitcond913.not, label %.loopexit727, label %.preheader, !llvm.loop !31

308:                                              ; preds = %272
  %invariant.gep804 = getelementptr %struct.complex, ptr %33, i64 %111
  %.not700806 = icmp slt i64 %129, 1
  br i1 %.not700806, label %._crit_edge847.thread, label %.lr.ph809

.lr.ph809:                                        ; preds = %308, %._crit_edge801
  %.5667807 = phi i64 [ %350, %._crit_edge801 ], [ 1, %308 ]
  %gep805 = getelementptr %struct.complex, ptr %invariant.gep804, i64 %.5667807
  %309 = load float, ptr %gep805, align 4, !tbaa !19
  %310 = call double @r_imag(ptr noundef nonnull %gep805) #5
  %311 = fptrunc double %310 to float
  %312 = insertelement <2 x float> poison, float %309, i64 0
  %313 = insertelement <2 x float> %312, float %311, i64 1
  %314 = fcmp oge <2 x float> %313, zeroinitializer
  %315 = fneg <2 x float> %313
  %316 = select <2 x i1> %314, <2 x float> %313, <2 x float> %315
  %shift1018 = shufflevector <2 x float> %316, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %317 = fadd <2 x float> %316, %shift1018
  %318 = extractelement <2 x float> %317, i64 0
  %.not701.not796 = icmp ugt i64 %.5667807, 1
  br i1 %.not701.not796, label %.lr.ph800, label %._crit_edge801

.lr.ph800:                                        ; preds = %.lr.ph809
  %319 = mul nsw i64 %.5667807, %25
  %invariant.gep802 = getelementptr %struct.complex, ptr %27, i64 %319
  br label %320

320:                                              ; preds = %.lr.ph800, %320
  %.1798 = phi float [ %318, %.lr.ph800 ], [ %345, %320 ]
  %.6676797 = phi i64 [ 1, %.lr.ph800 ], [ %346, %320 ]
  %gep803 = getelementptr %struct.complex, ptr %invariant.gep802, i64 %.6676797
  %321 = load float, ptr %gep803, align 4, !tbaa !19
  %322 = call double @r_imag(ptr noundef nonnull %gep803) #5
  %323 = fptrunc double %322 to float
  %324 = insertelement <2 x float> poison, float %321, i64 0
  %325 = insertelement <2 x float> %324, float %323, i64 1
  %326 = fcmp oge <2 x float> %325, zeroinitializer
  %327 = fneg <2 x float> %325
  %328 = select <2 x i1> %326, <2 x float> %325, <2 x float> %327
  %329 = fpext <2 x float> %328 to <2 x double>
  %shift1019 = shufflevector <2 x double> %329, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %330 = fadd <2 x double> %shift1019, %329
  %331 = extractelement <2 x double> %330, i64 0
  %gep795 = getelementptr %struct.complex, ptr %invariant.gep804, i64 %.6676797
  %332 = load float, ptr %gep795, align 4, !tbaa !19
  %333 = call double @r_imag(ptr noundef nonnull %gep795) #5
  %334 = fptrunc double %333 to float
  %335 = insertelement <2 x float> poison, float %332, i64 0
  %336 = insertelement <2 x float> %335, float %334, i64 1
  %337 = fcmp oge <2 x float> %336, zeroinitializer
  %338 = fneg <2 x float> %336
  %339 = select <2 x i1> %337, <2 x float> %336, <2 x float> %338
  %340 = fpext <2 x float> %339 to <2 x double>
  %shift1020 = shufflevector <2 x double> %340, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %341 = fadd <2 x double> %shift1020, %340
  %342 = extractelement <2 x double> %341, i64 0
  %343 = fpext float %.1798 to double
  %344 = call double @llvm.fmuladd.f64(double %331, double %342, double %343)
  %345 = fptrunc double %344 to float
  %346 = add nuw nsw i64 %.6676797, 1
  %exitcond914.not = icmp eq i64 %346, %.5667807
  br i1 %exitcond914.not, label %._crit_edge801, label %320, !llvm.loop !32

._crit_edge801:                                   ; preds = %320, %.lr.ph809
  %.1.lcssa = phi float [ %318, %.lr.ph809 ], [ %345, %320 ]
  %347 = getelementptr inbounds float, ptr %37, i64 %.5667807
  %348 = load float, ptr %347, align 4, !tbaa !9
  %349 = fadd float %.1.lcssa, %348
  store float %349, ptr %347, align 4, !tbaa !9
  %350 = add nuw i64 %.5667807, 1
  %exitcond915.not = icmp eq i64 %.5667807, %129
  br i1 %exitcond915.not, label %.loopexit727, label %.lr.ph809, !llvm.loop !33

351:                                              ; preds = %271
  br i1 %.not687, label %387, label %352

352:                                              ; preds = %351
  %.not697821 = icmp slt i64 %129, 1
  br i1 %.not697821, label %._crit_edge847.thread, label %.lr.ph824

.lr.ph824:                                        ; preds = %352
  %invariant.gep810 = getelementptr %struct.complex, ptr %33, i64 %111
  br label %353

353:                                              ; preds = %.lr.ph824, %._crit_edge817
  %.6822 = phi i64 [ 1, %.lr.ph824 ], [ %386, %._crit_edge817 ]
  %354 = load i64, ptr %3, align 8, !tbaa !5
  %.not698812 = icmp sgt i64 %.6822, %354
  br i1 %.not698812, label %._crit_edge817, label %.lr.ph816

.lr.ph816:                                        ; preds = %353
  %355 = mul nsw i64 %.6822, %25
  %invariant.gep819 = getelementptr %struct.complex, ptr %27, i64 %355
  br label %356

356:                                              ; preds = %.lr.ph816, %356
  %.2814 = phi float [ 0.000000e+00, %.lr.ph816 ], [ %381, %356 ]
  %.7677813 = phi i64 [ %.6822, %.lr.ph816 ], [ %382, %356 ]
  %gep820 = getelementptr %struct.complex, ptr %invariant.gep819, i64 %.7677813
  %357 = load float, ptr %gep820, align 4, !tbaa !19
  %358 = call double @r_imag(ptr noundef nonnull %gep820) #5
  %359 = fptrunc double %358 to float
  %360 = insertelement <2 x float> poison, float %357, i64 0
  %361 = insertelement <2 x float> %360, float %359, i64 1
  %362 = fcmp oge <2 x float> %361, zeroinitializer
  %363 = fneg <2 x float> %361
  %364 = select <2 x i1> %362, <2 x float> %361, <2 x float> %363
  %365 = fpext <2 x float> %364 to <2 x double>
  %shift1021 = shufflevector <2 x double> %365, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %366 = fadd <2 x double> %shift1021, %365
  %367 = extractelement <2 x double> %366, i64 0
  %gep811 = getelementptr %struct.complex, ptr %invariant.gep810, i64 %.7677813
  %368 = load float, ptr %gep811, align 4, !tbaa !19
  %369 = call double @r_imag(ptr noundef nonnull %gep811) #5
  %370 = fptrunc double %369 to float
  %371 = insertelement <2 x float> poison, float %368, i64 0
  %372 = insertelement <2 x float> %371, float %370, i64 1
  %373 = fcmp oge <2 x float> %372, zeroinitializer
  %374 = fneg <2 x float> %372
  %375 = select <2 x i1> %373, <2 x float> %372, <2 x float> %374
  %376 = fpext <2 x float> %375 to <2 x double>
  %shift1022 = shufflevector <2 x double> %376, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %377 = fadd <2 x double> %shift1022, %376
  %378 = extractelement <2 x double> %377, i64 0
  %379 = fpext float %.2814 to double
  %380 = call double @llvm.fmuladd.f64(double %367, double %378, double %379)
  %381 = fptrunc double %380 to float
  %382 = add nuw nsw i64 %.7677813, 1
  %.not698.not = icmp slt i64 %.7677813, %354
  br i1 %.not698.not, label %356, label %._crit_edge817, !llvm.loop !34

._crit_edge817:                                   ; preds = %356, %353
  %.2.lcssa = phi float [ 0.000000e+00, %353 ], [ %381, %356 ]
  %383 = getelementptr inbounds float, ptr %37, i64 %.6822
  %384 = load float, ptr %383, align 4, !tbaa !9
  %385 = fadd float %.2.lcssa, %384
  store float %385, ptr %383, align 4, !tbaa !9
  %386 = add nuw i64 %.6822, 1
  %exitcond916.not = icmp eq i64 %.6822, %129
  br i1 %exitcond916.not, label %.loopexit727, label %353, !llvm.loop !35

387:                                              ; preds = %351
  %invariant.gep836 = getelementptr %struct.complex, ptr %33, i64 %111
  %.not695838 = icmp slt i64 %129, 1
  br i1 %.not695838, label %._crit_edge847.thread, label %.lr.ph841

.lr.ph841:                                        ; preds = %387, %._crit_edge832
  %.7839 = phi i64 [ %399, %._crit_edge832 ], [ 1, %387 ]
  %gep837 = getelementptr %struct.complex, ptr %invariant.gep836, i64 %.7839
  %388 = load float, ptr %gep837, align 4, !tbaa !19
  %389 = call double @r_imag(ptr noundef nonnull %gep837) #5
  %390 = fptrunc double %389 to float
  %391 = insertelement <2 x float> poison, float %388, i64 0
  %392 = insertelement <2 x float> %391, float %390, i64 1
  %393 = fcmp oge <2 x float> %392, zeroinitializer
  %394 = fneg <2 x float> %392
  %395 = select <2 x i1> %393, <2 x float> %392, <2 x float> %394
  %shift1023 = shufflevector <2 x float> %395, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %396 = fadd <2 x float> %395, %shift1023
  %397 = extractelement <2 x float> %396, i64 0
  %398 = load i64, ptr %3, align 8, !tbaa !5
  %399 = add nuw i64 %.7839, 1
  %.not696827.not = icmp slt i64 %.7839, %398
  br i1 %.not696827.not, label %.lr.ph831, label %._crit_edge832

.lr.ph831:                                        ; preds = %.lr.ph841
  %400 = mul nsw i64 %.7839, %25
  %invariant.gep834 = getelementptr %struct.complex, ptr %27, i64 %400
  br label %401

401:                                              ; preds = %.lr.ph831, %401
  %.3829 = phi float [ %397, %.lr.ph831 ], [ %426, %401 ]
  %.8828 = phi i64 [ %399, %.lr.ph831 ], [ %427, %401 ]
  %gep835 = getelementptr %struct.complex, ptr %invariant.gep834, i64 %.8828
  %402 = load float, ptr %gep835, align 4, !tbaa !19
  %403 = call double @r_imag(ptr noundef nonnull %gep835) #5
  %404 = fptrunc double %403 to float
  %405 = insertelement <2 x float> poison, float %402, i64 0
  %406 = insertelement <2 x float> %405, float %404, i64 1
  %407 = fcmp oge <2 x float> %406, zeroinitializer
  %408 = fneg <2 x float> %406
  %409 = select <2 x i1> %407, <2 x float> %406, <2 x float> %408
  %410 = fpext <2 x float> %409 to <2 x double>
  %shift1024 = shufflevector <2 x double> %410, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %411 = fadd <2 x double> %shift1024, %410
  %412 = extractelement <2 x double> %411, i64 0
  %gep826 = getelementptr %struct.complex, ptr %invariant.gep836, i64 %.8828
  %413 = load float, ptr %gep826, align 4, !tbaa !19
  %414 = call double @r_imag(ptr noundef nonnull %gep826) #5
  %415 = fptrunc double %414 to float
  %416 = insertelement <2 x float> poison, float %413, i64 0
  %417 = insertelement <2 x float> %416, float %415, i64 1
  %418 = fcmp oge <2 x float> %417, zeroinitializer
  %419 = fneg <2 x float> %417
  %420 = select <2 x i1> %418, <2 x float> %417, <2 x float> %419
  %421 = fpext <2 x float> %420 to <2 x double>
  %shift1025 = shufflevector <2 x double> %421, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %422 = fadd <2 x double> %shift1025, %421
  %423 = extractelement <2 x double> %422, i64 0
  %424 = fpext float %.3829 to double
  %425 = call double @llvm.fmuladd.f64(double %412, double %423, double %424)
  %426 = fptrunc double %425 to float
  %427 = add nuw nsw i64 %.8828, 1
  %.not696.not = icmp slt i64 %.8828, %398
  br i1 %.not696.not, label %401, label %._crit_edge832, !llvm.loop !36

._crit_edge832:                                   ; preds = %401, %.lr.ph841
  %.3.lcssa = phi float [ %397, %.lr.ph841 ], [ %426, %401 ]
  %428 = getelementptr inbounds float, ptr %37, i64 %.7839
  %429 = load float, ptr %428, align 4, !tbaa !9
  %430 = fadd float %.3.lcssa, %429
  store float %430, ptr %428, align 4, !tbaa !9
  %exitcond917.not = icmp eq i64 %.7839, %129
  br i1 %exitcond917.not, label %.loopexit727, label %.lr.ph841, !llvm.loop !37

.loopexit727:                                     ; preds = %164, %._crit_edge751, %._crit_edge764, %._crit_edge777, %303, %._crit_edge801, %._crit_edge817, %._crit_edge832
  %.pr926 = load i64, ptr %3, align 8, !tbaa !5
  %.not713842 = icmp slt i64 %.pr926, 1
  br i1 %.not713842, label %._crit_edge847.thread, label %.lr.ph846

.lr.ph846:                                        ; preds = %.loopexit727, %453
  %.4844 = phi float [ %458, %453 ], [ 0.000000e+00, %.loopexit727 ]
  %.9843 = phi i64 [ %459, %453 ], [ 1, %.loopexit727 ]
  %431 = getelementptr inbounds float, ptr %37, i64 %.9843
  %432 = load float, ptr %431, align 4, !tbaa !9
  %433 = fcmp ogt float %432, %106
  %434 = getelementptr inbounds %struct.complex, ptr %36, i64 %.9843
  %435 = load float, ptr %434, align 4, !tbaa !19
  %436 = fcmp oge float %435, 0.000000e+00
  %437 = fneg float %435
  %438 = select i1 %436, float %435, float %437
  %439 = fpext float %438 to double
  %440 = call double @r_imag(ptr noundef nonnull %434) #5
  %441 = fptrunc double %440 to float
  %442 = fcmp oge float %441, 0.000000e+00
  %443 = fneg float %441
  %444 = select i1 %442, float %441, float %443
  %445 = fpext float %444 to double
  %446 = fadd double %439, %445
  br i1 %433, label %447, label %449

447:                                              ; preds = %.lr.ph846
  %448 = load float, ptr %431, align 4, !tbaa !9
  br label %453

449:                                              ; preds = %.lr.ph846
  %450 = fadd double %446, %108
  %451 = load float, ptr %431, align 4, !tbaa !9
  %452 = fadd float %105, %451
  br label %453

453:                                              ; preds = %447, %449
  %.sink954 = phi float [ %448, %447 ], [ %452, %449 ]
  %.sink952 = phi double [ %446, %447 ], [ %450, %449 ]
  %454 = fpext float %.sink954 to double
  %455 = fdiv double %.sink952, %454
  %456 = fptrunc double %455 to float
  %457 = fcmp oge float %.4844, %456
  %458 = select i1 %457, float %.4844, float %456
  %459 = add nuw i64 %.9843, 1
  %exitcond918.not = icmp eq i64 %.9843, %.pr926
  br i1 %exitcond918.not, label %._crit_edge847, label %.lr.ph846, !llvm.loop !38

._crit_edge847.thread:                            ; preds = %.loopexit727, %132, %166, %202, %235, %273, %308, %352, %387
  %460 = getelementptr inbounds float, ptr %35, i64 %.1669881
  store float 0.000000e+00, ptr %460, align 4, !tbaa !9
  br label %._crit_edge853

._crit_edge847:                                   ; preds = %453
  %.pre = load i64, ptr %3, align 8, !tbaa !5
  %461 = getelementptr inbounds float, ptr %35, i64 %.1669881
  store float %458, ptr %461, align 4, !tbaa !9
  %.not714849 = icmp slt i64 %.pre, 1
  br i1 %.not714849, label %._crit_edge853, label %.lr.ph852

.lr.ph852:                                        ; preds = %._crit_edge847, %.lr.ph852
  %.10850 = phi i64 [ %482, %.lr.ph852 ], [ 1, %._crit_edge847 ]
  %462 = getelementptr inbounds float, ptr %37, i64 %.10850
  %463 = load float, ptr %462, align 4, !tbaa !9
  %464 = fcmp ogt float %463, %106
  %465 = getelementptr inbounds %struct.complex, ptr %36, i64 %.10850
  %466 = load float, ptr %465, align 4, !tbaa !19
  %467 = call double @r_imag(ptr noundef nonnull %465) #5
  %468 = fptrunc double %467 to float
  %469 = insertelement <2 x float> poison, float %466, i64 0
  %470 = insertelement <2 x float> %469, float %468, i64 1
  %471 = fcmp oge <2 x float> %470, zeroinitializer
  %472 = fneg <2 x float> %470
  %473 = select <2 x i1> %471, <2 x float> %470, <2 x float> %472
  %474 = fpext <2 x float> %473 to <2 x double>
  %shift1026 = shufflevector <2 x double> %474, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %475 = fadd <2 x double> %shift1026, %474
  %476 = extractelement <2 x double> %475, i64 0
  %477 = load float, ptr %462, align 4, !tbaa !9
  %478 = fmul float %109, %477
  %479 = fpext float %478 to double
  %480 = fadd double %476, %479
  %481 = fadd double %480, %108
  %storemerge719.in = select i1 %464, double %480, double %481
  %storemerge719 = fptrunc double %storemerge719.in to float
  store float %storemerge719, ptr %462, align 4, !tbaa !9
  %482 = add nuw i64 %.10850, 1
  %exitcond919.not = icmp eq i64 %.10850, %.pre
  br i1 %exitcond919.not, label %._crit_edge853, label %.lr.ph852, !llvm.loop !39

._crit_edge853:                                   ; preds = %.lr.ph852, %._crit_edge847.thread, %._crit_edge847
  store i64 0, ptr %21, align 8, !tbaa !5
  %483 = getelementptr inbounds float, ptr %34, i64 %.1669881
  br label %.loopexit726

.loopexit726:                                     ; preds = %.loopexit726.backedge, %._crit_edge853
  %484 = load i64, ptr %3, align 8, !tbaa !5
  %485 = getelementptr %struct.complex, ptr %13, i64 %484
  %486 = call i32 @clacn2_(ptr noundef nonnull %3, ptr noundef %485, ptr noundef %13, ptr noundef nonnull %483, ptr noundef nonnull %21, ptr noundef nonnull %22) #5
  %487 = load i64, ptr %21, align 8, !tbaa !5
  switch i64 %487, label %524 [
    i64 0, label %563
    i64 1, label %488
  ]

488:                                              ; preds = %.loopexit726
  %489 = call i32 @f2c_ctrsv(ptr noundef %0, ptr noundef nonnull %24, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %13, ptr noundef nonnull @c__1) #5
  %490 = load i64, ptr %3, align 8, !tbaa !5
  %.not718854 = icmp slt i64 %490, 1
  br i1 %.not718854, label %.loopexit726.backedge, label %.lr.ph857.preheader

.loopexit726.backedge:                            ; preds = %488, %..loopexit726_crit_edge, %560
  br label %.loopexit726

.lr.ph857.preheader:                              ; preds = %488
  %min.iters.check982 = icmp eq i64 %490, 1
  br i1 %min.iters.check982, label %.lr.ph857.preheader1030, label %vector.memcheck974

vector.memcheck974:                               ; preds = %.lr.ph857.preheader
  %491 = shl i64 %490, 3
  %scevgep975 = getelementptr i8, ptr %13, i64 %491
  %492 = shl i64 %490, 2
  %scevgep976 = getelementptr i8, ptr %14, i64 %492
  %bound0977 = icmp ugt ptr %scevgep976, %13
  %bound1978 = icmp ugt ptr %scevgep975, %14
  %found.conflict979 = and i1 %bound0977, %bound1978
  br i1 %found.conflict979, label %.lr.ph857.preheader1030, label %vector.ph983

vector.ph983:                                     ; preds = %vector.memcheck974
  %n.vec985 = and i64 %490, 9223372036854775806
  %ind.end986 = or i64 %490, 1
  br label %vector.body988

vector.body988:                                   ; preds = %vector.body988, %vector.ph983
  %index989 = phi i64 [ 0, %vector.ph983 ], [ %index.next996, %vector.body988 ]
  %493 = getelementptr float, ptr %14, i64 %index989
  %wide.load991 = load <2 x float>, ptr %493, align 4, !tbaa !9, !alias.scope !40
  %494 = getelementptr %struct.complex, ptr %13, i64 %index989
  %wide.vec992 = load <4 x float>, ptr %494, align 4, !tbaa !9
  %strided.vec993 = shufflevector <4 x float> %wide.vec992, <4 x float> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec994 = shufflevector <4 x float> %wide.vec992, <4 x float> poison, <2 x i32> <i32 1, i32 3>
  %495 = fmul <2 x float> %wide.load991, %strided.vec993
  %496 = fmul <2 x float> %wide.load991, %strided.vec994
  %interleaved.vec995 = shufflevector <2 x float> %495, <2 x float> %496, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec995, ptr %494, align 4, !tbaa !9
  %index.next996 = add nuw i64 %index989, 2
  %497 = icmp eq i64 %index.next996, %n.vec985
  br i1 %497, label %middle.block980, label %vector.body988, !llvm.loop !43

middle.block980:                                  ; preds = %vector.body988
  %cmp.n997 = icmp eq i64 %490, %n.vec985
  %498 = shufflevector <2 x float> %495, <2 x float> %496, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n997, label %..loopexit726_crit_edge, label %.lr.ph857.preheader1030

.lr.ph857.preheader1030:                          ; preds = %middle.block980, %vector.memcheck974, %.lr.ph857.preheader
  %.11855.ph = phi i64 [ 1, %vector.memcheck974 ], [ 1, %.lr.ph857.preheader ], [ %ind.end986, %middle.block980 ]
  %xtraiter = and i64 %490, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph857.prol.loopexit, label %.lr.ph857.prol

.lr.ph857.prol:                                   ; preds = %.lr.ph857.preheader1030
  %499 = getelementptr inbounds float, ptr %37, i64 %.11855.ph
  %500 = load float, ptr %499, align 4, !tbaa !9
  %501 = getelementptr inbounds %struct.complex, ptr %36, i64 %.11855.ph
  %502 = load <2 x float>, ptr %501, align 4, !tbaa !9
  %503 = insertelement <2 x float> poison, float %500, i64 0
  %504 = shufflevector <2 x float> %503, <2 x float> poison, <2 x i32> zeroinitializer
  %505 = fmul <2 x float> %504, %502
  store <2 x float> %505, ptr %501, align 4, !tbaa !9
  %506 = add nuw i64 %.11855.ph, 1
  br label %.lr.ph857.prol.loopexit

.lr.ph857.prol.loopexit:                          ; preds = %.lr.ph857.prol, %.lr.ph857.preheader1030
  %.lcssa1045.unr = phi <2 x float> [ poison, %.lr.ph857.preheader1030 ], [ %505, %.lr.ph857.prol ]
  %.11855.unr = phi i64 [ %.11855.ph, %.lr.ph857.preheader1030 ], [ %506, %.lr.ph857.prol ]
  %507 = icmp eq i64 %490, %.11855.ph
  br i1 %507, label %..loopexit726_crit_edge, label %.lr.ph857

.lr.ph857:                                        ; preds = %.lr.ph857.prol.loopexit, %.lr.ph857
  %.11855 = phi i64 [ %523, %.lr.ph857 ], [ %.11855.unr, %.lr.ph857.prol.loopexit ]
  %508 = getelementptr inbounds float, ptr %37, i64 %.11855
  %509 = load float, ptr %508, align 4, !tbaa !9
  %510 = getelementptr inbounds %struct.complex, ptr %36, i64 %.11855
  %511 = load <2 x float>, ptr %510, align 4, !tbaa !9
  %512 = insertelement <2 x float> poison, float %509, i64 0
  %513 = shufflevector <2 x float> %512, <2 x float> poison, <2 x i32> zeroinitializer
  %514 = fmul <2 x float> %513, %511
  store <2 x float> %514, ptr %510, align 4, !tbaa !9
  %515 = add nuw i64 %.11855, 1
  %516 = getelementptr float, ptr %14, i64 %.11855
  %517 = load float, ptr %516, align 4, !tbaa !9
  %518 = getelementptr %struct.complex, ptr %13, i64 %.11855
  %519 = load <2 x float>, ptr %518, align 4, !tbaa !9
  %520 = insertelement <2 x float> poison, float %517, i64 0
  %521 = shufflevector <2 x float> %520, <2 x float> poison, <2 x i32> zeroinitializer
  %522 = fmul <2 x float> %521, %519
  store <2 x float> %522, ptr %518, align 4, !tbaa !9
  %523 = add nuw i64 %.11855, 2
  %exitcond920.not.1 = icmp eq i64 %515, %490
  br i1 %exitcond920.not.1, label %..loopexit726_crit_edge, label %.lr.ph857, !llvm.loop !44

524:                                              ; preds = %.loopexit726
  %525 = load i64, ptr %3, align 8, !tbaa !5
  %.not717860 = icmp slt i64 %525, 1
  br i1 %.not717860, label %560, label %.lr.ph863.preheader

.lr.ph863.preheader:                              ; preds = %524
  %min.iters.check = icmp eq i64 %525, 1
  br i1 %min.iters.check, label %.lr.ph863.preheader1029, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph863.preheader
  %526 = shl i64 %525, 3
  %scevgep = getelementptr i8, ptr %13, i64 %526
  %527 = shl i64 %525, 2
  %scevgep972 = getelementptr i8, ptr %14, i64 %527
  %bound0 = icmp ugt ptr %scevgep972, %13
  %bound1 = icmp ugt ptr %scevgep, %14
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph863.preheader1029, label %vector.ph

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

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %528 = getelementptr float, ptr %14, i64 %index
  %wide.load = load <2 x float>, ptr %528, align 4, !tbaa !9, !alias.scope !45
  %529 = getelementptr %struct.complex, ptr %13, i64 %index
  %wide.vec = load <4 x float>, ptr %529, align 4, !tbaa !9
  %strided.vec = shufflevector <4 x float> %wide.vec, <4 x float> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec973 = shufflevector <4 x float> %wide.vec, <4 x float> poison, <2 x i32> <i32 1, i32 3>
  %530 = fmul <2 x float> %wide.load, %strided.vec
  %531 = fmul <2 x float> %wide.load, %strided.vec973
  %interleaved.vec = shufflevector <2 x float> %530, <2 x float> %531, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec, ptr %529, align 4, !tbaa !9
  %index.next = add nuw i64 %index, 2
  %532 = icmp eq i64 %index.next, %n.vec
  br i1 %532, label %middle.block, label %vector.body, !llvm.loop !48

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %525, %n.vec
  %533 = shufflevector <2 x float> %530, <2 x float> %531, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n, label %._crit_edge864, label %.lr.ph863.preheader1029

.lr.ph863.preheader1029:                          ; preds = %middle.block, %vector.memcheck, %.lr.ph863.preheader
  %.12861.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph863.preheader ], [ %ind.end, %middle.block ]
  %xtraiter1050 = and i64 %525, 1
  %lcmp.mod1051.not = icmp eq i64 %xtraiter1050, 0
  br i1 %lcmp.mod1051.not, label %.lr.ph863.prol.loopexit, label %.lr.ph863.prol

.lr.ph863.prol:                                   ; preds = %.lr.ph863.preheader1029
  %534 = getelementptr inbounds float, ptr %37, i64 %.12861.ph
  %535 = load float, ptr %534, align 4, !tbaa !9
  %536 = getelementptr inbounds %struct.complex, ptr %36, i64 %.12861.ph
  %537 = load <2 x float>, ptr %536, align 4, !tbaa !9
  %538 = insertelement <2 x float> poison, float %535, i64 0
  %539 = shufflevector <2 x float> %538, <2 x float> poison, <2 x i32> zeroinitializer
  %540 = fmul <2 x float> %539, %537
  store <2 x float> %540, ptr %536, align 4, !tbaa !9
  %541 = add nuw i64 %.12861.ph, 1
  br label %.lr.ph863.prol.loopexit

.lr.ph863.prol.loopexit:                          ; preds = %.lr.ph863.prol, %.lr.ph863.preheader1029
  %.lcssa1048.unr = phi <2 x float> [ poison, %.lr.ph863.preheader1029 ], [ %540, %.lr.ph863.prol ]
  %.12861.unr = phi i64 [ %.12861.ph, %.lr.ph863.preheader1029 ], [ %541, %.lr.ph863.prol ]
  %542 = icmp eq i64 %525, %.12861.ph
  br i1 %542, label %._crit_edge864, label %.lr.ph863

.lr.ph863:                                        ; preds = %.lr.ph863.prol.loopexit, %.lr.ph863
  %.12861 = phi i64 [ %558, %.lr.ph863 ], [ %.12861.unr, %.lr.ph863.prol.loopexit ]
  %543 = getelementptr inbounds float, ptr %37, i64 %.12861
  %544 = load float, ptr %543, align 4, !tbaa !9
  %545 = getelementptr inbounds %struct.complex, ptr %36, i64 %.12861
  %546 = load <2 x float>, ptr %545, align 4, !tbaa !9
  %547 = insertelement <2 x float> poison, float %544, i64 0
  %548 = shufflevector <2 x float> %547, <2 x float> poison, <2 x i32> zeroinitializer
  %549 = fmul <2 x float> %548, %546
  store <2 x float> %549, ptr %545, align 4, !tbaa !9
  %550 = add nuw i64 %.12861, 1
  %551 = getelementptr float, ptr %14, i64 %.12861
  %552 = load float, ptr %551, align 4, !tbaa !9
  %553 = getelementptr %struct.complex, ptr %13, i64 %.12861
  %554 = load <2 x float>, ptr %553, align 4, !tbaa !9
  %555 = insertelement <2 x float> poison, float %552, i64 0
  %556 = shufflevector <2 x float> %555, <2 x float> poison, <2 x i32> zeroinitializer
  %557 = fmul <2 x float> %556, %554
  store <2 x float> %557, ptr %553, align 4, !tbaa !9
  %558 = add nuw i64 %.12861, 2
  %exitcond921.not.1 = icmp eq i64 %550, %525
  br i1 %exitcond921.not.1, label %._crit_edge864, label %.lr.ph863, !llvm.loop !49

._crit_edge864:                                   ; preds = %.lr.ph863.prol.loopexit, %.lr.ph863, %middle.block
  %559 = phi <2 x float> [ %533, %middle.block ], [ %.lcssa1048.unr, %.lr.ph863.prol.loopexit ], [ %557, %.lr.ph863 ]
  store <2 x float> %559, ptr %20, align 8, !tbaa !9
  br label %560

560:                                              ; preds = %._crit_edge864, %524
  %561 = call i32 @f2c_ctrsv(ptr noundef %0, ptr noundef nonnull %23, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %13, ptr noundef nonnull @c__1) #5
  br label %.loopexit726.backedge

..loopexit726_crit_edge:                          ; preds = %.lr.ph857.prol.loopexit, %.lr.ph857, %middle.block980
  %562 = phi <2 x float> [ %498, %middle.block980 ], [ %.lcssa1045.unr, %.lr.ph857.prol.loopexit ], [ %522, %.lr.ph857 ]
  store <2 x float> %562, ptr %20, align 8, !tbaa !9
  br label %.loopexit726.backedge

563:                                              ; preds = %.loopexit726
  %564 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep867 = getelementptr %struct.complex, ptr %33, i64 %111
  %.not716869 = icmp slt i64 %564, 1
  br i1 %.not716869, label %._crit_edge874.thread, label %.lr.ph873

.lr.ph873:                                        ; preds = %563, %.lr.ph873
  %.0871 = phi float [ %576, %.lr.ph873 ], [ 0.000000e+00, %563 ]
  %.13870 = phi i64 [ %577, %.lr.ph873 ], [ 1, %563 ]
  %gep868 = getelementptr %struct.complex, ptr %invariant.gep867, i64 %.13870
  %565 = load float, ptr %gep868, align 4, !tbaa !19
  %566 = call double @r_imag(ptr noundef nonnull %gep868) #5
  %567 = fptrunc double %566 to float
  %568 = insertelement <2 x float> poison, float %565, i64 0
  %569 = insertelement <2 x float> %568, float %567, i64 1
  %570 = fcmp oge <2 x float> %569, zeroinitializer
  %571 = fneg <2 x float> %569
  %572 = select <2 x i1> %570, <2 x float> %569, <2 x float> %571
  %shift1027 = shufflevector <2 x float> %572, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %573 = fadd <2 x float> %572, %shift1027
  %574 = extractelement <2 x float> %573, i64 0
  %575 = fcmp oge float %.0871, %574
  %576 = select i1 %575, float %.0871, float %574
  %577 = add nuw i64 %.13870, 1
  %exitcond922.not = icmp eq i64 %.13870, %564
  br i1 %exitcond922.not, label %._crit_edge874, label %.lr.ph873, !llvm.loop !50

._crit_edge874:                                   ; preds = %.lr.ph873
  %578 = fcmp une float %576, 0.000000e+00
  br i1 %578, label %579, label %._crit_edge874.thread

579:                                              ; preds = %._crit_edge874
  %580 = load float, ptr %483, align 4, !tbaa !9
  %581 = fdiv float %580, %576
  store float %581, ptr %483, align 4, !tbaa !9
  br label %._crit_edge874.thread

._crit_edge874.thread:                            ; preds = %563, %._crit_edge874, %579
  %582 = add nuw nsw i64 %.1669881, 1
  %.not692.not = icmp slt i64 %.1669881, %107
  br i1 %.not692.not, label %110, label %.loopexit, !llvm.loop !51

.loopexit:                                        ; preds = %._crit_edge874.thread, %.lr.ph887.prol.loopexit, %.lr.ph887, %middle.block999, %72, %98, %73, %.thread
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 24, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #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_ctrmv(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 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 @clacn2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.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 = !{!7, !7, i64 0}
!19 = !{!20, !10, i64 0}
!20 = !{!"", !10, i64 0, !10, i64 4}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12}
!33 = distinct !{!33, !12}
!34 = distinct !{!34, !12}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12}
!37 = distinct !{!37, !12}
!38 = distinct !{!38, !12}
!39 = distinct !{!39, !12}
!40 = !{!41}
!41 = distinct !{!41, !42}
!42 = distinct !{!42, !"LVerDomain"}
!43 = distinct !{!43, !12, !13, !14}
!44 = distinct !{!44, !12, !13}
!45 = !{!46}
!46 = distinct !{!46, !47}
!47 = distinct !{!47, !"LVerDomain"}
!48 = distinct !{!48, !12, !13, !14}
!49 = distinct !{!49, !12, !13}
!50 = distinct !{!50, !12}
!51 = distinct !{!51, !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