; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (clascl)

; 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 [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1

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

59:                                               ; preds = %10
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %97

60:                                               ; preds = %10
  %61 = load ptr, ptr %11, align 8, !tbaa !5
  %62 = call i32 @lsame_(ptr noundef %61, ptr noundef @.str.1)
  %63 = icmp ne i32 %62, 0
  br i1 %63, label %64, label %65

64:                                               ; preds = %60
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %96

65:                                               ; preds = %60
  %66 = load ptr, ptr %11, align 8, !tbaa !5
  %67 = call i32 @lsame_(ptr noundef %66, ptr noundef @.str.2)
  %68 = icmp ne i32 %67, 0
  br i1 %68, label %69, label %70

69:                                               ; preds = %65
  store i32 2, ptr %33, align 4, !tbaa !9
  br label %95

70:                                               ; preds = %65
  %71 = load ptr, ptr %11, align 8, !tbaa !5
  %72 = call i32 @lsame_(ptr noundef %71, ptr noundef @.str.3)
  %73 = icmp ne i32 %72, 0
  br i1 %73, label %74, label %75

74:                                               ; preds = %70
  store i32 3, ptr %33, align 4, !tbaa !9
  br label %94

75:                                               ; preds = %70
  %76 = load ptr, ptr %11, align 8, !tbaa !5
  %77 = call i32 @lsame_(ptr noundef %76, ptr noundef @.str.4)
  %78 = icmp ne i32 %77, 0
  br i1 %78, label %79, label %80

79:                                               ; preds = %75
  store i32 4, ptr %33, align 4, !tbaa !9
  br label %93

80:                                               ; preds = %75
  %81 = load ptr, ptr %11, align 8, !tbaa !5
  %82 = call i32 @lsame_(ptr noundef %81, ptr noundef @.str.5)
  %83 = icmp ne i32 %82, 0
  br i1 %83, label %84, label %85

84:                                               ; preds = %80
  store i32 5, ptr %33, align 4, !tbaa !9
  br label %92

85:                                               ; preds = %80
  %86 = load ptr, ptr %11, align 8, !tbaa !5
  %87 = call i32 @lsame_(ptr noundef %86, ptr noundef @.str.6)
  %88 = icmp ne i32 %87, 0
  br i1 %88, label %89, label %90

89:                                               ; preds = %85
  store i32 6, ptr %33, align 4, !tbaa !9
  br label %91

90:                                               ; preds = %85
  store i32 -1, ptr %33, align 4, !tbaa !9
  br label %91

91:                                               ; preds = %90, %89
  br label %92

92:                                               ; preds = %91, %84
  br label %93

93:                                               ; preds = %92, %79
  br label %94

94:                                               ; preds = %93, %74
  br label %95

95:                                               ; preds = %94, %69
  br label %96

96:                                               ; preds = %95, %64
  br label %97

97:                                               ; preds = %96, %59
  %98 = load i32, ptr %33, align 4, !tbaa !9
  %99 = icmp eq i32 %98, -1
  br i1 %99, label %100, label %102

100:                                              ; preds = %97
  %101 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 -1, ptr %101, align 4, !tbaa !9
  br label %266

102:                                              ; preds = %97
  %103 = load ptr, ptr %14, align 8, !tbaa !5
  %104 = load float, ptr %103, align 4, !tbaa !11
  %105 = fcmp oeq float %104, 0.000000e+00
  br i1 %105, label %110, label %106

106:                                              ; preds = %102
  %107 = load ptr, ptr %14, align 8, !tbaa !5
  %108 = call i32 @sisnan_(ptr noundef %107)
  %109 = icmp ne i32 %108, 0
  br i1 %109, label %110, label %112

110:                                              ; preds = %106, %102
  %111 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 -4, ptr %111, align 4, !tbaa !9
  br label %265

112:                                              ; preds = %106
  %113 = load ptr, ptr %15, align 8, !tbaa !5
  %114 = call i32 @sisnan_(ptr noundef %113)
  %115 = icmp ne i32 %114, 0
  br i1 %115, label %116, label %118

116:                                              ; preds = %112
  %117 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 -5, ptr %117, align 4, !tbaa !9
  br label %264

118:                                              ; preds = %112
  %119 = load ptr, ptr %16, align 8, !tbaa !5
  %120 = load i32, ptr %119, align 4, !tbaa !9
  %121 = icmp slt i32 %120, 0
  br i1 %121, label %122, label %124

122:                                              ; preds = %118
  %123 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 -6, ptr %123, align 4, !tbaa !9
  br label %263

124:                                              ; preds = %118
  %125 = load ptr, ptr %17, align 8, !tbaa !5
  %126 = load i32, ptr %125, align 4, !tbaa !9
  %127 = icmp slt i32 %126, 0
  br i1 %127, label %146, label %128

128:                                              ; preds = %124
  %129 = load i32, ptr %33, align 4, !tbaa !9
  %130 = icmp eq i32 %129, 4
  br i1 %130, label %131, label %137

131:                                              ; preds = %128
  %132 = load ptr, ptr %17, align 8, !tbaa !5
  %133 = load i32, ptr %132, align 4, !tbaa !9
  %134 = load ptr, ptr %16, align 8, !tbaa !5
  %135 = load i32, ptr %134, align 4, !tbaa !9
  %136 = icmp ne i32 %133, %135
  br i1 %136, label %146, label %137

137:                                              ; preds = %131, %128
  %138 = load i32, ptr %33, align 4, !tbaa !9
  %139 = icmp eq i32 %138, 5
  br i1 %139, label %140, label %148

140:                                              ; preds = %137
  %141 = load ptr, ptr %17, align 8, !tbaa !5
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = load ptr, ptr %16, align 8, !tbaa !5
  %144 = load i32, ptr %143, align 4, !tbaa !9
  %145 = icmp ne i32 %142, %144
  br i1 %145, label %146, label %148

146:                                              ; preds = %140, %131, %124
  %147 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 -7, ptr %147, align 4, !tbaa !9
  br label %262

148:                                              ; preds = %140, %137
  %149 = load i32, ptr %33, align 4, !tbaa !9
  %150 = icmp sle i32 %149, 3
  br i1 %150, label %151, label %166

151:                                              ; preds = %148
  %152 = load ptr, ptr %19, align 8, !tbaa !5
  %153 = load i32, ptr %152, align 4, !tbaa !9
  %154 = load ptr, ptr %16, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !9
  %156 = icmp sge i32 1, %155
  br i1 %156, label %157, label %158

157:                                              ; preds = %151
  br label %161

158:                                              ; preds = %151
  %159 = load ptr, ptr %16, align 8, !tbaa !5
  %160 = load i32, ptr %159, align 4, !tbaa !9
  br label %161

161:                                              ; preds = %158, %157
  %162 = phi i32 [ 1, %157 ], [ %160, %158 ]
  %163 = icmp slt i32 %153, %162
  br i1 %163, label %164, label %166

164:                                              ; preds = %161
  %165 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 -9, ptr %165, align 4, !tbaa !9
  br label %261

166:                                              ; preds = %161, %148
  %167 = load i32, ptr %33, align 4, !tbaa !9
  %168 = icmp sge i32 %167, 4
  br i1 %168, label %169, label %260

169:                                              ; preds = %166
  %170 = load ptr, ptr %16, align 8, !tbaa !5
  %171 = load i32, ptr %170, align 4, !tbaa !9
  %172 = sub nsw i32 %171, 1
  store i32 %172, ptr %23, align 4, !tbaa !9
  %173 = load ptr, ptr %12, align 8, !tbaa !5
  %174 = load i32, ptr %173, align 4, !tbaa !9
  %175 = icmp slt i32 %174, 0
  br i1 %175, label %187, label %176

176:                                              ; preds = %169
  %177 = load ptr, ptr %12, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = load i32, ptr %23, align 4, !tbaa !9
  %180 = icmp sge i32 %179, 0
  br i1 %180, label %181, label %183

181:                                              ; preds = %176
  %182 = load i32, ptr %23, align 4, !tbaa !9
  br label %184

183:                                              ; preds = %176
  br label %184

184:                                              ; preds = %183, %181
  %185 = phi i32 [ %182, %181 ], [ 0, %183 ]
  %186 = icmp sgt i32 %178, %185
  br i1 %186, label %187, label %189

187:                                              ; preds = %184, %169
  %188 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 -2, ptr %188, align 4, !tbaa !9
  br label %259

189:                                              ; preds = %184
  %190 = load ptr, ptr %17, align 8, !tbaa !5
  %191 = load i32, ptr %190, align 4, !tbaa !9
  %192 = sub nsw i32 %191, 1
  store i32 %192, ptr %23, align 4, !tbaa !9
  %193 = load ptr, ptr %13, align 8, !tbaa !5
  %194 = load i32, ptr %193, align 4, !tbaa !9
  %195 = icmp slt i32 %194, 0
  br i1 %195, label %219, label %196

196:                                              ; preds = %189
  %197 = load ptr, ptr %13, align 8, !tbaa !5
  %198 = load i32, ptr %197, align 4, !tbaa !9
  %199 = load i32, ptr %23, align 4, !tbaa !9
  %200 = icmp sge i32 %199, 0
  br i1 %200, label %201, label %203

201:                                              ; preds = %196
  %202 = load i32, ptr %23, align 4, !tbaa !9
  br label %204

203:                                              ; preds = %196
  br label %204

204:                                              ; preds = %203, %201
  %205 = phi i32 [ %202, %201 ], [ 0, %203 ]
  %206 = icmp sgt i32 %198, %205
  br i1 %206, label %219, label %207

207:                                              ; preds = %204
  %208 = load i32, ptr %33, align 4, !tbaa !9
  %209 = icmp eq i32 %208, 4
  br i1 %209, label %213, label %210

210:                                              ; preds = %207
  %211 = load i32, ptr %33, align 4, !tbaa !9
  %212 = icmp eq i32 %211, 5
  br i1 %212, label %213, label %221

213:                                              ; preds = %210, %207
  %214 = load ptr, ptr %12, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  %216 = load ptr, ptr %13, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = icmp ne i32 %215, %217
  br i1 %218, label %219, label %221

219:                                              ; preds = %213, %204, %189
  %220 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 -3, ptr %220, align 4, !tbaa !9
  br label %258

221:                                              ; preds = %213, %210
  %222 = load i32, ptr %33, align 4, !tbaa !9
  %223 = icmp eq i32 %222, 4
  br i1 %223, label %224, label %231

224:                                              ; preds = %221
  %225 = load ptr, ptr %19, align 8, !tbaa !5
  %226 = load i32, ptr %225, align 4, !tbaa !9
  %227 = load ptr, ptr %12, align 8, !tbaa !5
  %228 = load i32, ptr %227, align 4, !tbaa !9
  %229 = add nsw i32 %228, 1
  %230 = icmp slt i32 %226, %229
  br i1 %230, label %255, label %231

231:                                              ; preds = %224, %221
  %232 = load i32, ptr %33, align 4, !tbaa !9
  %233 = icmp eq i32 %232, 5
  br i1 %233, label %234, label %241

234:                                              ; preds = %231
  %235 = load ptr, ptr %19, align 8, !tbaa !5
  %236 = load i32, ptr %235, align 4, !tbaa !9
  %237 = load ptr, ptr %13, align 8, !tbaa !5
  %238 = load i32, ptr %237, align 4, !tbaa !9
  %239 = add nsw i32 %238, 1
  %240 = icmp slt i32 %236, %239
  br i1 %240, label %255, label %241

241:                                              ; preds = %234, %231
  %242 = load i32, ptr %33, align 4, !tbaa !9
  %243 = icmp eq i32 %242, 6
  br i1 %243, label %244, label %257

244:                                              ; preds = %241
  %245 = load ptr, ptr %19, align 8, !tbaa !5
  %246 = load i32, ptr %245, align 4, !tbaa !9
  %247 = load ptr, ptr %12, align 8, !tbaa !5
  %248 = load i32, ptr %247, align 4, !tbaa !9
  %249 = shl i32 %248, 1
  %250 = load ptr, ptr %13, align 8, !tbaa !5
  %251 = load i32, ptr %250, align 4, !tbaa !9
  %252 = add nsw i32 %249, %251
  %253 = add nsw i32 %252, 1
  %254 = icmp slt i32 %246, %253
  br i1 %254, label %255, label %257

255:                                              ; preds = %244, %234, %224
  %256 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 -9, ptr %256, align 4, !tbaa !9
  br label %257

257:                                              ; preds = %255, %244, %241
  br label %258

258:                                              ; preds = %257, %219
  br label %259

259:                                              ; preds = %258, %187
  br label %260

260:                                              ; preds = %259, %166
  br label %261

261:                                              ; preds = %260, %164
  br label %262

262:                                              ; preds = %261, %146
  br label %263

263:                                              ; preds = %262, %122
  br label %264

264:                                              ; preds = %263, %116
  br label %265

265:                                              ; preds = %264, %110
  br label %266

266:                                              ; preds = %265, %100
  %267 = load ptr, ptr %20, align 8, !tbaa !5
  %268 = load i32, ptr %267, align 4, !tbaa !9
  %269 = icmp ne i32 %268, 0
  br i1 %269, label %270, label %275

270:                                              ; preds = %266
  %271 = load ptr, ptr %20, align 8, !tbaa !5
  %272 = load i32, ptr %271, align 4, !tbaa !9
  %273 = sub nsw i32 0, %272
  store i32 %273, ptr %23, align 4, !tbaa !9
  %274 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %23, i32 noundef 6)
  store i32 1, ptr %44, align 4
  br label %957

275:                                              ; preds = %266
  %276 = load ptr, ptr %17, align 8, !tbaa !5
  %277 = load i32, ptr %276, align 4, !tbaa !9
  %278 = icmp eq i32 %277, 0
  br i1 %278, label %283, label %279

279:                                              ; preds = %275
  %280 = load ptr, ptr %16, align 8, !tbaa !5
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = icmp eq i32 %281, 0
  br i1 %282, label %283, label %284

283:                                              ; preds = %279, %275
  store i32 1, ptr %44, align 4
  br label %957

284:                                              ; preds = %279
  %285 = call float @slamch_(ptr noundef @.str.8)
  store float %285, ptr %41, align 4, !tbaa !11
  %286 = load float, ptr %41, align 4, !tbaa !11
  %287 = fdiv float 1.000000e+00, %286
  store float %287, ptr %40, align 4, !tbaa !11
  %288 = load ptr, ptr %14, align 8, !tbaa !5
  %289 = load float, ptr %288, align 4, !tbaa !11
  store float %289, ptr %39, align 4, !tbaa !11
  %290 = load ptr, ptr %15, align 8, !tbaa !5
  %291 = load float, ptr %290, align 4, !tbaa !11
  store float %291, ptr %30, align 4, !tbaa !11
  br label %292

292:                                              ; preds = %955, %284
  %293 = load float, ptr %39, align 4, !tbaa !11
  %294 = load float, ptr %41, align 4, !tbaa !11
  %295 = fmul float %293, %294
  store float %295, ptr %38, align 4, !tbaa !11
  %296 = load float, ptr %38, align 4, !tbaa !11
  %297 = load float, ptr %39, align 4, !tbaa !11
  %298 = fcmp oeq float %296, %297
  br i1 %298, label %299, label %304

299:                                              ; preds = %292
  %300 = load float, ptr %30, align 4, !tbaa !11
  %301 = load float, ptr %39, align 4, !tbaa !11
  %302 = fdiv float %300, %301
  store float %302, ptr %42, align 4, !tbaa !11
  store i32 1, ptr %29, align 4, !tbaa !9
  %303 = load float, ptr %30, align 4, !tbaa !11
  store float %303, ptr %43, align 4, !tbaa !11
  br label %369

304:                                              ; preds = %292
  %305 = load float, ptr %30, align 4, !tbaa !11
  %306 = load float, ptr %40, align 4, !tbaa !11
  %307 = fdiv float %305, %306
  store float %307, ptr %43, align 4, !tbaa !11
  %308 = load float, ptr %43, align 4, !tbaa !11
  %309 = load float, ptr %30, align 4, !tbaa !11
  %310 = fcmp oeq float %308, %309
  br i1 %310, label %311, label %313

311:                                              ; preds = %304
  %312 = load float, ptr %30, align 4, !tbaa !11
  store float %312, ptr %42, align 4, !tbaa !11
  store i32 1, ptr %29, align 4, !tbaa !9
  store float 1.000000e+00, ptr %39, align 4, !tbaa !11
  br label %368

313:                                              ; preds = %304
  %314 = load float, ptr %38, align 4, !tbaa !11
  %315 = fcmp oge float %314, 0.000000e+00
  br i1 %315, label %316, label %318

316:                                              ; preds = %313
  %317 = load float, ptr %38, align 4, !tbaa !11
  br label %321

318:                                              ; preds = %313
  %319 = load float, ptr %38, align 4, !tbaa !11
  %320 = fneg float %319
  br label %321

321:                                              ; preds = %318, %316
  %322 = phi float [ %317, %316 ], [ %320, %318 ]
  %323 = load float, ptr %30, align 4, !tbaa !11
  %324 = fcmp oge float %323, 0.000000e+00
  br i1 %324, label %325, label %327

325:                                              ; preds = %321
  %326 = load float, ptr %30, align 4, !tbaa !11
  br label %330

327:                                              ; preds = %321
  %328 = load float, ptr %30, align 4, !tbaa !11
  %329 = fneg float %328
  br label %330

330:                                              ; preds = %327, %325
  %331 = phi float [ %326, %325 ], [ %329, %327 ]
  %332 = fcmp ogt float %322, %331
  br i1 %332, label %333, label %339

333:                                              ; preds = %330
  %334 = load float, ptr %30, align 4, !tbaa !11
  %335 = fcmp une float %334, 0.000000e+00
  br i1 %335, label %336, label %339

336:                                              ; preds = %333
  %337 = load float, ptr %41, align 4, !tbaa !11
  store float %337, ptr %42, align 4, !tbaa !11
  store i32 0, ptr %29, align 4, !tbaa !9
  %338 = load float, ptr %38, align 4, !tbaa !11
  store float %338, ptr %39, align 4, !tbaa !11
  br label %367

339:                                              ; preds = %333, %330
  %340 = load float, ptr %43, align 4, !tbaa !11
  %341 = fcmp oge float %340, 0.000000e+00
  br i1 %341, label %342, label %344

342:                                              ; preds = %339
  %343 = load float, ptr %43, align 4, !tbaa !11
  br label %347

344:                                              ; preds = %339
  %345 = load float, ptr %43, align 4, !tbaa !11
  %346 = fneg float %345
  br label %347

347:                                              ; preds = %344, %342
  %348 = phi float [ %343, %342 ], [ %346, %344 ]
  %349 = load float, ptr %39, align 4, !tbaa !11
  %350 = fcmp oge float %349, 0.000000e+00
  br i1 %350, label %351, label %353

351:                                              ; preds = %347
  %352 = load float, ptr %39, align 4, !tbaa !11
  br label %356

353:                                              ; preds = %347
  %354 = load float, ptr %39, align 4, !tbaa !11
  %355 = fneg float %354
  br label %356

356:                                              ; preds = %353, %351
  %357 = phi float [ %352, %351 ], [ %355, %353 ]
  %358 = fcmp ogt float %348, %357
  br i1 %358, label %359, label %362

359:                                              ; preds = %356
  %360 = load float, ptr %40, align 4, !tbaa !11
  store float %360, ptr %42, align 4, !tbaa !11
  store i32 0, ptr %29, align 4, !tbaa !9
  %361 = load float, ptr %43, align 4, !tbaa !11
  store float %361, ptr %30, align 4, !tbaa !11
  br label %366

362:                                              ; preds = %356
  %363 = load float, ptr %30, align 4, !tbaa !11
  %364 = load float, ptr %39, align 4, !tbaa !11
  %365 = fdiv float %363, %364
  store float %365, ptr %42, align 4, !tbaa !11
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %366

366:                                              ; preds = %362, %359
  br label %367

367:                                              ; preds = %366, %336
  br label %368

368:                                              ; preds = %367, %311
  br label %369

369:                                              ; preds = %368, %299
  %370 = load i32, ptr %33, align 4, !tbaa !9
  %371 = icmp eq i32 %370, 0
  br i1 %371, label %372, label %437

372:                                              ; preds = %369
  %373 = load ptr, ptr %17, align 8, !tbaa !5
  %374 = load i32, ptr %373, align 4, !tbaa !9
  store i32 %374, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %375

375:                                              ; preds = %433, %372
  %376 = load i32, ptr %32, align 4, !tbaa !9
  %377 = load i32, ptr %23, align 4, !tbaa !9
  %378 = icmp sle i32 %376, %377
  br i1 %378, label %379, label %436

379:                                              ; preds = %375
  %380 = load ptr, ptr %16, align 8, !tbaa !5
  %381 = load i32, ptr %380, align 4, !tbaa !9
  store i32 %381, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %382

382:                                              ; preds = %429, %379
  %383 = load i32, ptr %31, align 4, !tbaa !9
  %384 = load i32, ptr %24, align 4, !tbaa !9
  %385 = icmp sle i32 %383, %384
  br i1 %385, label %386, label %432

386:                                              ; preds = %382
  %387 = load i32, ptr %31, align 4, !tbaa !9
  %388 = load i32, ptr %32, align 4, !tbaa !9
  %389 = load i32, ptr %21, align 4, !tbaa !9
  %390 = mul nsw i32 %388, %389
  %391 = add nsw i32 %387, %390
  store i32 %391, ptr %25, align 4, !tbaa !9
  %392 = load i32, ptr %31, align 4, !tbaa !9
  %393 = load i32, ptr %32, align 4, !tbaa !9
  %394 = load i32, ptr %21, align 4, !tbaa !9
  %395 = mul nsw i32 %393, %394
  %396 = add nsw i32 %392, %395
  store i32 %396, ptr %26, align 4, !tbaa !9
  %397 = load float, ptr %42, align 4, !tbaa !11
  %398 = load ptr, ptr %18, align 8, !tbaa !5
  %399 = load i32, ptr %26, align 4, !tbaa !9
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds %struct.complex, ptr %398, i64 %400
  %402 = getelementptr inbounds %struct.complex, ptr %401, i32 0, i32 0
  %403 = load float, ptr %402, align 4, !tbaa !13
  %404 = fmul float %397, %403
  %405 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  store float %404, ptr %405, align 4, !tbaa !13
  %406 = load float, ptr %42, align 4, !tbaa !11
  %407 = load ptr, ptr %18, align 8, !tbaa !5
  %408 = load i32, ptr %26, align 4, !tbaa !9
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds %struct.complex, ptr %407, i64 %409
  %411 = getelementptr inbounds %struct.complex, ptr %410, i32 0, i32 1
  %412 = load float, ptr %411, align 4, !tbaa !15
  %413 = fmul float %406, %412
  %414 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  store float %413, ptr %414, align 4, !tbaa !15
  %415 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  %416 = load float, ptr %415, align 4, !tbaa !13
  %417 = load ptr, ptr %18, align 8, !tbaa !5
  %418 = load i32, ptr %25, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds %struct.complex, ptr %417, i64 %419
  %421 = getelementptr inbounds %struct.complex, ptr %420, i32 0, i32 0
  store float %416, ptr %421, align 4, !tbaa !13
  %422 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  %423 = load float, ptr %422, align 4, !tbaa !15
  %424 = load ptr, ptr %18, align 8, !tbaa !5
  %425 = load i32, ptr %25, align 4, !tbaa !9
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds %struct.complex, ptr %424, i64 %426
  %428 = getelementptr inbounds %struct.complex, ptr %427, i32 0, i32 1
  store float %423, ptr %428, align 4, !tbaa !15
  br label %429

429:                                              ; preds = %386
  %430 = load i32, ptr %31, align 4, !tbaa !9
  %431 = add nsw i32 %430, 1
  store i32 %431, ptr %31, align 4, !tbaa !9
  br label %382, !llvm.loop !16

432:                                              ; preds = %382
  br label %433

433:                                              ; preds = %432
  %434 = load i32, ptr %32, align 4, !tbaa !9
  %435 = add nsw i32 %434, 1
  store i32 %435, ptr %32, align 4, !tbaa !9
  br label %375, !llvm.loop !18

436:                                              ; preds = %375
  br label %952

437:                                              ; preds = %369
  %438 = load i32, ptr %33, align 4, !tbaa !9
  %439 = icmp eq i32 %438, 1
  br i1 %439, label %440, label %506

440:                                              ; preds = %437
  %441 = load ptr, ptr %17, align 8, !tbaa !5
  %442 = load i32, ptr %441, align 4, !tbaa !9
  store i32 %442, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %443

443:                                              ; preds = %502, %440
  %444 = load i32, ptr %32, align 4, !tbaa !9
  %445 = load i32, ptr %23, align 4, !tbaa !9
  %446 = icmp sle i32 %444, %445
  br i1 %446, label %447, label %505

447:                                              ; preds = %443
  %448 = load ptr, ptr %16, align 8, !tbaa !5
  %449 = load i32, ptr %448, align 4, !tbaa !9
  store i32 %449, ptr %24, align 4, !tbaa !9
  %450 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %450, ptr %31, align 4, !tbaa !9
  br label %451

451:                                              ; preds = %498, %447
  %452 = load i32, ptr %31, align 4, !tbaa !9
  %453 = load i32, ptr %24, align 4, !tbaa !9
  %454 = icmp sle i32 %452, %453
  br i1 %454, label %455, label %501

455:                                              ; preds = %451
  %456 = load i32, ptr %31, align 4, !tbaa !9
  %457 = load i32, ptr %32, align 4, !tbaa !9
  %458 = load i32, ptr %21, align 4, !tbaa !9
  %459 = mul nsw i32 %457, %458
  %460 = add nsw i32 %456, %459
  store i32 %460, ptr %25, align 4, !tbaa !9
  %461 = load i32, ptr %31, align 4, !tbaa !9
  %462 = load i32, ptr %32, align 4, !tbaa !9
  %463 = load i32, ptr %21, align 4, !tbaa !9
  %464 = mul nsw i32 %462, %463
  %465 = add nsw i32 %461, %464
  store i32 %465, ptr %26, align 4, !tbaa !9
  %466 = load float, ptr %42, align 4, !tbaa !11
  %467 = load ptr, ptr %18, align 8, !tbaa !5
  %468 = load i32, ptr %26, align 4, !tbaa !9
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds %struct.complex, ptr %467, i64 %469
  %471 = getelementptr inbounds %struct.complex, ptr %470, i32 0, i32 0
  %472 = load float, ptr %471, align 4, !tbaa !13
  %473 = fmul float %466, %472
  %474 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  store float %473, ptr %474, align 4, !tbaa !13
  %475 = load float, ptr %42, align 4, !tbaa !11
  %476 = load ptr, ptr %18, align 8, !tbaa !5
  %477 = load i32, ptr %26, align 4, !tbaa !9
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds %struct.complex, ptr %476, i64 %478
  %480 = getelementptr inbounds %struct.complex, ptr %479, i32 0, i32 1
  %481 = load float, ptr %480, align 4, !tbaa !15
  %482 = fmul float %475, %481
  %483 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  store float %482, ptr %483, align 4, !tbaa !15
  %484 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  %485 = load float, ptr %484, align 4, !tbaa !13
  %486 = load ptr, ptr %18, align 8, !tbaa !5
  %487 = load i32, ptr %25, align 4, !tbaa !9
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds %struct.complex, ptr %486, i64 %488
  %490 = getelementptr inbounds %struct.complex, ptr %489, i32 0, i32 0
  store float %485, ptr %490, align 4, !tbaa !13
  %491 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  %492 = load float, ptr %491, align 4, !tbaa !15
  %493 = load ptr, ptr %18, align 8, !tbaa !5
  %494 = load i32, ptr %25, align 4, !tbaa !9
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds %struct.complex, ptr %493, i64 %495
  %497 = getelementptr inbounds %struct.complex, ptr %496, i32 0, i32 1
  store float %492, ptr %497, align 4, !tbaa !15
  br label %498

498:                                              ; preds = %455
  %499 = load i32, ptr %31, align 4, !tbaa !9
  %500 = add nsw i32 %499, 1
  store i32 %500, ptr %31, align 4, !tbaa !9
  br label %451, !llvm.loop !19

501:                                              ; preds = %451
  br label %502

502:                                              ; preds = %501
  %503 = load i32, ptr %32, align 4, !tbaa !9
  %504 = add nsw i32 %503, 1
  store i32 %504, ptr %32, align 4, !tbaa !9
  br label %443, !llvm.loop !20

505:                                              ; preds = %443
  br label %951

506:                                              ; preds = %437
  %507 = load i32, ptr %33, align 4, !tbaa !9
  %508 = icmp eq i32 %507, 2
  br i1 %508, label %509, label %583

509:                                              ; preds = %506
  %510 = load ptr, ptr %17, align 8, !tbaa !5
  %511 = load i32, ptr %510, align 4, !tbaa !9
  store i32 %511, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %512

512:                                              ; preds = %579, %509
  %513 = load i32, ptr %32, align 4, !tbaa !9
  %514 = load i32, ptr %23, align 4, !tbaa !9
  %515 = icmp sle i32 %513, %514
  br i1 %515, label %516, label %582

516:                                              ; preds = %512
  %517 = load i32, ptr %32, align 4, !tbaa !9
  %518 = load ptr, ptr %16, align 8, !tbaa !5
  %519 = load i32, ptr %518, align 4, !tbaa !9
  %520 = icmp sle i32 %517, %519
  br i1 %520, label %521, label %523

521:                                              ; preds = %516
  %522 = load i32, ptr %32, align 4, !tbaa !9
  br label %526

523:                                              ; preds = %516
  %524 = load ptr, ptr %16, align 8, !tbaa !5
  %525 = load i32, ptr %524, align 4, !tbaa !9
  br label %526

526:                                              ; preds = %523, %521
  %527 = phi i32 [ %522, %521 ], [ %525, %523 ]
  store i32 %527, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %528

528:                                              ; preds = %575, %526
  %529 = load i32, ptr %31, align 4, !tbaa !9
  %530 = load i32, ptr %24, align 4, !tbaa !9
  %531 = icmp sle i32 %529, %530
  br i1 %531, label %532, label %578

532:                                              ; preds = %528
  %533 = load i32, ptr %31, align 4, !tbaa !9
  %534 = load i32, ptr %32, align 4, !tbaa !9
  %535 = load i32, ptr %21, align 4, !tbaa !9
  %536 = mul nsw i32 %534, %535
  %537 = add nsw i32 %533, %536
  store i32 %537, ptr %25, align 4, !tbaa !9
  %538 = load i32, ptr %31, align 4, !tbaa !9
  %539 = load i32, ptr %32, align 4, !tbaa !9
  %540 = load i32, ptr %21, align 4, !tbaa !9
  %541 = mul nsw i32 %539, %540
  %542 = add nsw i32 %538, %541
  store i32 %542, ptr %26, align 4, !tbaa !9
  %543 = load float, ptr %42, align 4, !tbaa !11
  %544 = load ptr, ptr %18, align 8, !tbaa !5
  %545 = load i32, ptr %26, align 4, !tbaa !9
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds %struct.complex, ptr %544, i64 %546
  %548 = getelementptr inbounds %struct.complex, ptr %547, i32 0, i32 0
  %549 = load float, ptr %548, align 4, !tbaa !13
  %550 = fmul float %543, %549
  %551 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  store float %550, ptr %551, align 4, !tbaa !13
  %552 = load float, ptr %42, align 4, !tbaa !11
  %553 = load ptr, ptr %18, align 8, !tbaa !5
  %554 = load i32, ptr %26, align 4, !tbaa !9
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds %struct.complex, ptr %553, i64 %555
  %557 = getelementptr inbounds %struct.complex, ptr %556, i32 0, i32 1
  %558 = load float, ptr %557, align 4, !tbaa !15
  %559 = fmul float %552, %558
  %560 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  store float %559, ptr %560, align 4, !tbaa !15
  %561 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  %562 = load float, ptr %561, align 4, !tbaa !13
  %563 = load ptr, ptr %18, align 8, !tbaa !5
  %564 = load i32, ptr %25, align 4, !tbaa !9
  %565 = sext i32 %564 to i64
  %566 = getelementptr inbounds %struct.complex, ptr %563, i64 %565
  %567 = getelementptr inbounds %struct.complex, ptr %566, i32 0, i32 0
  store float %562, ptr %567, align 4, !tbaa !13
  %568 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  %569 = load float, ptr %568, align 4, !tbaa !15
  %570 = load ptr, ptr %18, align 8, !tbaa !5
  %571 = load i32, ptr %25, align 4, !tbaa !9
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds %struct.complex, ptr %570, i64 %572
  %574 = getelementptr inbounds %struct.complex, ptr %573, i32 0, i32 1
  store float %569, ptr %574, align 4, !tbaa !15
  br label %575

575:                                              ; preds = %532
  %576 = load i32, ptr %31, align 4, !tbaa !9
  %577 = add nsw i32 %576, 1
  store i32 %577, ptr %31, align 4, !tbaa !9
  br label %528, !llvm.loop !21

578:                                              ; preds = %528
  br label %579

579:                                              ; preds = %578
  %580 = load i32, ptr %32, align 4, !tbaa !9
  %581 = add nsw i32 %580, 1
  store i32 %581, ptr %32, align 4, !tbaa !9
  br label %512, !llvm.loop !22

582:                                              ; preds = %512
  br label %950

583:                                              ; preds = %506
  %584 = load i32, ptr %33, align 4, !tbaa !9
  %585 = icmp eq i32 %584, 3
  br i1 %585, label %586, label %662

586:                                              ; preds = %583
  %587 = load ptr, ptr %17, align 8, !tbaa !5
  %588 = load i32, ptr %587, align 4, !tbaa !9
  store i32 %588, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %589

589:                                              ; preds = %658, %586
  %590 = load i32, ptr %32, align 4, !tbaa !9
  %591 = load i32, ptr %23, align 4, !tbaa !9
  %592 = icmp sle i32 %590, %591
  br i1 %592, label %593, label %661

593:                                              ; preds = %589
  %594 = load i32, ptr %32, align 4, !tbaa !9
  %595 = add nsw i32 %594, 1
  store i32 %595, ptr %25, align 4, !tbaa !9
  %596 = load i32, ptr %25, align 4, !tbaa !9
  %597 = load ptr, ptr %16, align 8, !tbaa !5
  %598 = load i32, ptr %597, align 4, !tbaa !9
  %599 = icmp sle i32 %596, %598
  br i1 %599, label %600, label %602

600:                                              ; preds = %593
  %601 = load i32, ptr %25, align 4, !tbaa !9
  br label %605

602:                                              ; preds = %593
  %603 = load ptr, ptr %16, align 8, !tbaa !5
  %604 = load i32, ptr %603, align 4, !tbaa !9
  br label %605

605:                                              ; preds = %602, %600
  %606 = phi i32 [ %601, %600 ], [ %604, %602 ]
  store i32 %606, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %607

607:                                              ; preds = %654, %605
  %608 = load i32, ptr %31, align 4, !tbaa !9
  %609 = load i32, ptr %24, align 4, !tbaa !9
  %610 = icmp sle i32 %608, %609
  br i1 %610, label %611, label %657

611:                                              ; preds = %607
  %612 = load i32, ptr %31, align 4, !tbaa !9
  %613 = load i32, ptr %32, align 4, !tbaa !9
  %614 = load i32, ptr %21, align 4, !tbaa !9
  %615 = mul nsw i32 %613, %614
  %616 = add nsw i32 %612, %615
  store i32 %616, ptr %25, align 4, !tbaa !9
  %617 = load i32, ptr %31, align 4, !tbaa !9
  %618 = load i32, ptr %32, align 4, !tbaa !9
  %619 = load i32, ptr %21, align 4, !tbaa !9
  %620 = mul nsw i32 %618, %619
  %621 = add nsw i32 %617, %620
  store i32 %621, ptr %26, align 4, !tbaa !9
  %622 = load float, ptr %42, align 4, !tbaa !11
  %623 = load ptr, ptr %18, align 8, !tbaa !5
  %624 = load i32, ptr %26, align 4, !tbaa !9
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds %struct.complex, ptr %623, i64 %625
  %627 = getelementptr inbounds %struct.complex, ptr %626, i32 0, i32 0
  %628 = load float, ptr %627, align 4, !tbaa !13
  %629 = fmul float %622, %628
  %630 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  store float %629, ptr %630, align 4, !tbaa !13
  %631 = load float, ptr %42, align 4, !tbaa !11
  %632 = load ptr, ptr %18, align 8, !tbaa !5
  %633 = load i32, ptr %26, align 4, !tbaa !9
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds %struct.complex, ptr %632, i64 %634
  %636 = getelementptr inbounds %struct.complex, ptr %635, i32 0, i32 1
  %637 = load float, ptr %636, align 4, !tbaa !15
  %638 = fmul float %631, %637
  %639 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  store float %638, ptr %639, align 4, !tbaa !15
  %640 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  %641 = load float, ptr %640, align 4, !tbaa !13
  %642 = load ptr, ptr %18, align 8, !tbaa !5
  %643 = load i32, ptr %25, align 4, !tbaa !9
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds %struct.complex, ptr %642, i64 %644
  %646 = getelementptr inbounds %struct.complex, ptr %645, i32 0, i32 0
  store float %641, ptr %646, align 4, !tbaa !13
  %647 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  %648 = load float, ptr %647, align 4, !tbaa !15
  %649 = load ptr, ptr %18, align 8, !tbaa !5
  %650 = load i32, ptr %25, align 4, !tbaa !9
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds %struct.complex, ptr %649, i64 %651
  %653 = getelementptr inbounds %struct.complex, ptr %652, i32 0, i32 1
  store float %648, ptr %653, align 4, !tbaa !15
  br label %654

654:                                              ; preds = %611
  %655 = load i32, ptr %31, align 4, !tbaa !9
  %656 = add nsw i32 %655, 1
  store i32 %656, ptr %31, align 4, !tbaa !9
  br label %607, !llvm.loop !23

657:                                              ; preds = %607
  br label %658

658:                                              ; preds = %657
  %659 = load i32, ptr %32, align 4, !tbaa !9
  %660 = add nsw i32 %659, 1
  store i32 %660, ptr %32, align 4, !tbaa !9
  br label %589, !llvm.loop !24

661:                                              ; preds = %589
  br label %949

662:                                              ; preds = %583
  %663 = load i32, ptr %33, align 4, !tbaa !9
  %664 = icmp eq i32 %663, 4
  br i1 %664, label %665, label %747

665:                                              ; preds = %662
  %666 = load ptr, ptr %12, align 8, !tbaa !5
  %667 = load i32, ptr %666, align 4, !tbaa !9
  %668 = add nsw i32 %667, 1
  store i32 %668, ptr %36, align 4, !tbaa !9
  %669 = load ptr, ptr %17, align 8, !tbaa !5
  %670 = load i32, ptr %669, align 4, !tbaa !9
  %671 = add nsw i32 %670, 1
  store i32 %671, ptr %37, align 4, !tbaa !9
  %672 = load ptr, ptr %17, align 8, !tbaa !5
  %673 = load i32, ptr %672, align 4, !tbaa !9
  store i32 %673, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %674

674:                                              ; preds = %743, %665
  %675 = load i32, ptr %32, align 4, !tbaa !9
  %676 = load i32, ptr %23, align 4, !tbaa !9
  %677 = icmp sle i32 %675, %676
  br i1 %677, label %678, label %746

678:                                              ; preds = %674
  %679 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %679, ptr %25, align 4, !tbaa !9
  %680 = load i32, ptr %37, align 4, !tbaa !9
  %681 = load i32, ptr %32, align 4, !tbaa !9
  %682 = sub nsw i32 %680, %681
  store i32 %682, ptr %26, align 4, !tbaa !9
  %683 = load i32, ptr %25, align 4, !tbaa !9
  %684 = load i32, ptr %26, align 4, !tbaa !9
  %685 = icmp sle i32 %683, %684
  br i1 %685, label %686, label %688

686:                                              ; preds = %678
  %687 = load i32, ptr %25, align 4, !tbaa !9
  br label %690

688:                                              ; preds = %678
  %689 = load i32, ptr %26, align 4, !tbaa !9
  br label %690

690:                                              ; preds = %688, %686
  %691 = phi i32 [ %687, %686 ], [ %689, %688 ]
  store i32 %691, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %692

692:                                              ; preds = %739, %690
  %693 = load i32, ptr %31, align 4, !tbaa !9
  %694 = load i32, ptr %24, align 4, !tbaa !9
  %695 = icmp sle i32 %693, %694
  br i1 %695, label %696, label %742

696:                                              ; preds = %692
  %697 = load i32, ptr %31, align 4, !tbaa !9
  %698 = load i32, ptr %32, align 4, !tbaa !9
  %699 = load i32, ptr %21, align 4, !tbaa !9
  %700 = mul nsw i32 %698, %699
  %701 = add nsw i32 %697, %700
  store i32 %701, ptr %25, align 4, !tbaa !9
  %702 = load i32, ptr %31, align 4, !tbaa !9
  %703 = load i32, ptr %32, align 4, !tbaa !9
  %704 = load i32, ptr %21, align 4, !tbaa !9
  %705 = mul nsw i32 %703, %704
  %706 = add nsw i32 %702, %705
  store i32 %706, ptr %26, align 4, !tbaa !9
  %707 = load float, ptr %42, align 4, !tbaa !11
  %708 = load ptr, ptr %18, align 8, !tbaa !5
  %709 = load i32, ptr %26, align 4, !tbaa !9
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds %struct.complex, ptr %708, i64 %710
  %712 = getelementptr inbounds %struct.complex, ptr %711, i32 0, i32 0
  %713 = load float, ptr %712, align 4, !tbaa !13
  %714 = fmul float %707, %713
  %715 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  store float %714, ptr %715, align 4, !tbaa !13
  %716 = load float, ptr %42, align 4, !tbaa !11
  %717 = load ptr, ptr %18, align 8, !tbaa !5
  %718 = load i32, ptr %26, align 4, !tbaa !9
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds %struct.complex, ptr %717, i64 %719
  %721 = getelementptr inbounds %struct.complex, ptr %720, i32 0, i32 1
  %722 = load float, ptr %721, align 4, !tbaa !15
  %723 = fmul float %716, %722
  %724 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  store float %723, ptr %724, align 4, !tbaa !15
  %725 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  %726 = load float, ptr %725, align 4, !tbaa !13
  %727 = load ptr, ptr %18, align 8, !tbaa !5
  %728 = load i32, ptr %25, align 4, !tbaa !9
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds %struct.complex, ptr %727, i64 %729
  %731 = getelementptr inbounds %struct.complex, ptr %730, i32 0, i32 0
  store float %726, ptr %731, align 4, !tbaa !13
  %732 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  %733 = load float, ptr %732, align 4, !tbaa !15
  %734 = load ptr, ptr %18, align 8, !tbaa !5
  %735 = load i32, ptr %25, align 4, !tbaa !9
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds %struct.complex, ptr %734, i64 %736
  %738 = getelementptr inbounds %struct.complex, ptr %737, i32 0, i32 1
  store float %733, ptr %738, align 4, !tbaa !15
  br label %739

739:                                              ; preds = %696
  %740 = load i32, ptr %31, align 4, !tbaa !9
  %741 = add nsw i32 %740, 1
  store i32 %741, ptr %31, align 4, !tbaa !9
  br label %692, !llvm.loop !25

742:                                              ; preds = %692
  br label %743

743:                                              ; preds = %742
  %744 = load i32, ptr %32, align 4, !tbaa !9
  %745 = add nsw i32 %744, 1
  store i32 %745, ptr %32, align 4, !tbaa !9
  br label %674, !llvm.loop !26

746:                                              ; preds = %674
  br label %948

747:                                              ; preds = %662
  %748 = load i32, ptr %33, align 4, !tbaa !9
  %749 = icmp eq i32 %748, 5
  br i1 %749, label %750, label %830

750:                                              ; preds = %747
  %751 = load ptr, ptr %13, align 8, !tbaa !5
  %752 = load i32, ptr %751, align 4, !tbaa !9
  %753 = add nsw i32 %752, 2
  store i32 %753, ptr %34, align 4, !tbaa !9
  %754 = load ptr, ptr %13, align 8, !tbaa !5
  %755 = load i32, ptr %754, align 4, !tbaa !9
  %756 = add nsw i32 %755, 1
  store i32 %756, ptr %36, align 4, !tbaa !9
  %757 = load ptr, ptr %17, align 8, !tbaa !5
  %758 = load i32, ptr %757, align 4, !tbaa !9
  store i32 %758, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %759

759:                                              ; preds = %826, %750
  %760 = load i32, ptr %32, align 4, !tbaa !9
  %761 = load i32, ptr %23, align 4, !tbaa !9
  %762 = icmp sle i32 %760, %761
  br i1 %762, label %763, label %829

763:                                              ; preds = %759
  %764 = load i32, ptr %34, align 4, !tbaa !9
  %765 = load i32, ptr %32, align 4, !tbaa !9
  %766 = sub nsw i32 %764, %765
  store i32 %766, ptr %24, align 4, !tbaa !9
  %767 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %767, ptr %25, align 4, !tbaa !9
  %768 = load i32, ptr %24, align 4, !tbaa !9
  %769 = icmp sge i32 %768, 1
  br i1 %769, label %770, label %772

770:                                              ; preds = %763
  %771 = load i32, ptr %24, align 4, !tbaa !9
  br label %773

772:                                              ; preds = %763
  br label %773

773:                                              ; preds = %772, %770
  %774 = phi i32 [ %771, %770 ], [ 1, %772 ]
  store i32 %774, ptr %31, align 4, !tbaa !9
  br label %775

775:                                              ; preds = %822, %773
  %776 = load i32, ptr %31, align 4, !tbaa !9
  %777 = load i32, ptr %25, align 4, !tbaa !9
  %778 = icmp sle i32 %776, %777
  br i1 %778, label %779, label %825

779:                                              ; preds = %775
  %780 = load i32, ptr %31, align 4, !tbaa !9
  %781 = load i32, ptr %32, align 4, !tbaa !9
  %782 = load i32, ptr %21, align 4, !tbaa !9
  %783 = mul nsw i32 %781, %782
  %784 = add nsw i32 %780, %783
  store i32 %784, ptr %24, align 4, !tbaa !9
  %785 = load i32, ptr %31, align 4, !tbaa !9
  %786 = load i32, ptr %32, align 4, !tbaa !9
  %787 = load i32, ptr %21, align 4, !tbaa !9
  %788 = mul nsw i32 %786, %787
  %789 = add nsw i32 %785, %788
  store i32 %789, ptr %26, align 4, !tbaa !9
  %790 = load float, ptr %42, align 4, !tbaa !11
  %791 = load ptr, ptr %18, align 8, !tbaa !5
  %792 = load i32, ptr %26, align 4, !tbaa !9
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds %struct.complex, ptr %791, i64 %793
  %795 = getelementptr inbounds %struct.complex, ptr %794, i32 0, i32 0
  %796 = load float, ptr %795, align 4, !tbaa !13
  %797 = fmul float %790, %796
  %798 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  store float %797, ptr %798, align 4, !tbaa !13
  %799 = load float, ptr %42, align 4, !tbaa !11
  %800 = load ptr, ptr %18, align 8, !tbaa !5
  %801 = load i32, ptr %26, align 4, !tbaa !9
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds %struct.complex, ptr %800, i64 %802
  %804 = getelementptr inbounds %struct.complex, ptr %803, i32 0, i32 1
  %805 = load float, ptr %804, align 4, !tbaa !15
  %806 = fmul float %799, %805
  %807 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  store float %806, ptr %807, align 4, !tbaa !15
  %808 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  %809 = load float, ptr %808, align 4, !tbaa !13
  %810 = load ptr, ptr %18, align 8, !tbaa !5
  %811 = load i32, ptr %24, align 4, !tbaa !9
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds %struct.complex, ptr %810, i64 %812
  %814 = getelementptr inbounds %struct.complex, ptr %813, i32 0, i32 0
  store float %809, ptr %814, align 4, !tbaa !13
  %815 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  %816 = load float, ptr %815, align 4, !tbaa !15
  %817 = load ptr, ptr %18, align 8, !tbaa !5
  %818 = load i32, ptr %24, align 4, !tbaa !9
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds %struct.complex, ptr %817, i64 %819
  %821 = getelementptr inbounds %struct.complex, ptr %820, i32 0, i32 1
  store float %816, ptr %821, align 4, !tbaa !15
  br label %822

822:                                              ; preds = %779
  %823 = load i32, ptr %31, align 4, !tbaa !9
  %824 = add nsw i32 %823, 1
  store i32 %824, ptr %31, align 4, !tbaa !9
  br label %775, !llvm.loop !27

825:                                              ; preds = %775
  br label %826

826:                                              ; preds = %825
  %827 = load i32, ptr %32, align 4, !tbaa !9
  %828 = add nsw i32 %827, 1
  store i32 %828, ptr %32, align 4, !tbaa !9
  br label %759, !llvm.loop !28

829:                                              ; preds = %759
  br label %947

830:                                              ; preds = %747
  %831 = load i32, ptr %33, align 4, !tbaa !9
  %832 = icmp eq i32 %831, 6
  br i1 %832, label %833, label %946

833:                                              ; preds = %830
  %834 = load ptr, ptr %12, align 8, !tbaa !5
  %835 = load i32, ptr %834, align 4, !tbaa !9
  %836 = load ptr, ptr %13, align 8, !tbaa !5
  %837 = load i32, ptr %836, align 4, !tbaa !9
  %838 = add nsw i32 %835, %837
  %839 = add nsw i32 %838, 2
  store i32 %839, ptr %34, align 4, !tbaa !9
  %840 = load ptr, ptr %12, align 8, !tbaa !5
  %841 = load i32, ptr %840, align 4, !tbaa !9
  %842 = add nsw i32 %841, 1
  store i32 %842, ptr %35, align 4, !tbaa !9
  %843 = load ptr, ptr %12, align 8, !tbaa !5
  %844 = load i32, ptr %843, align 4, !tbaa !9
  %845 = shl i32 %844, 1
  %846 = load ptr, ptr %13, align 8, !tbaa !5
  %847 = load i32, ptr %846, align 4, !tbaa !9
  %848 = add nsw i32 %845, %847
  %849 = add nsw i32 %848, 1
  store i32 %849, ptr %36, align 4, !tbaa !9
  %850 = load ptr, ptr %12, align 8, !tbaa !5
  %851 = load i32, ptr %850, align 4, !tbaa !9
  %852 = load ptr, ptr %13, align 8, !tbaa !5
  %853 = load i32, ptr %852, align 4, !tbaa !9
  %854 = add nsw i32 %851, %853
  %855 = add nsw i32 %854, 1
  %856 = load ptr, ptr %16, align 8, !tbaa !5
  %857 = load i32, ptr %856, align 4, !tbaa !9
  %858 = add nsw i32 %855, %857
  store i32 %858, ptr %37, align 4, !tbaa !9
  %859 = load ptr, ptr %17, align 8, !tbaa !5
  %860 = load i32, ptr %859, align 4, !tbaa !9
  store i32 %860, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %861

861:                                              ; preds = %942, %833
  %862 = load i32, ptr %32, align 4, !tbaa !9
  %863 = load i32, ptr %23, align 4, !tbaa !9
  %864 = icmp sle i32 %862, %863
  br i1 %864, label %865, label %945

865:                                              ; preds = %861
  %866 = load i32, ptr %34, align 4, !tbaa !9
  %867 = load i32, ptr %32, align 4, !tbaa !9
  %868 = sub nsw i32 %866, %867
  store i32 %868, ptr %25, align 4, !tbaa !9
  %869 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %869, ptr %26, align 4, !tbaa !9
  %870 = load i32, ptr %37, align 4, !tbaa !9
  %871 = load i32, ptr %32, align 4, !tbaa !9
  %872 = sub nsw i32 %870, %871
  store i32 %872, ptr %27, align 4, !tbaa !9
  %873 = load i32, ptr %26, align 4, !tbaa !9
  %874 = load i32, ptr %27, align 4, !tbaa !9
  %875 = icmp sle i32 %873, %874
  br i1 %875, label %876, label %878

876:                                              ; preds = %865
  %877 = load i32, ptr %26, align 4, !tbaa !9
  br label %880

878:                                              ; preds = %865
  %879 = load i32, ptr %27, align 4, !tbaa !9
  br label %880

880:                                              ; preds = %878, %876
  %881 = phi i32 [ %877, %876 ], [ %879, %878 ]
  store i32 %881, ptr %24, align 4, !tbaa !9
  %882 = load i32, ptr %25, align 4, !tbaa !9
  %883 = load i32, ptr %35, align 4, !tbaa !9
  %884 = icmp sge i32 %882, %883
  br i1 %884, label %885, label %887

885:                                              ; preds = %880
  %886 = load i32, ptr %25, align 4, !tbaa !9
  br label %889

887:                                              ; preds = %880
  %888 = load i32, ptr %35, align 4, !tbaa !9
  br label %889

889:                                              ; preds = %887, %885
  %890 = phi i32 [ %886, %885 ], [ %888, %887 ]
  store i32 %890, ptr %31, align 4, !tbaa !9
  br label %891

891:                                              ; preds = %938, %889
  %892 = load i32, ptr %31, align 4, !tbaa !9
  %893 = load i32, ptr %24, align 4, !tbaa !9
  %894 = icmp sle i32 %892, %893
  br i1 %894, label %895, label %941

895:                                              ; preds = %891
  %896 = load i32, ptr %31, align 4, !tbaa !9
  %897 = load i32, ptr %32, align 4, !tbaa !9
  %898 = load i32, ptr %21, align 4, !tbaa !9
  %899 = mul nsw i32 %897, %898
  %900 = add nsw i32 %896, %899
  store i32 %900, ptr %25, align 4, !tbaa !9
  %901 = load i32, ptr %31, align 4, !tbaa !9
  %902 = load i32, ptr %32, align 4, !tbaa !9
  %903 = load i32, ptr %21, align 4, !tbaa !9
  %904 = mul nsw i32 %902, %903
  %905 = add nsw i32 %901, %904
  store i32 %905, ptr %26, align 4, !tbaa !9
  %906 = load float, ptr %42, align 4, !tbaa !11
  %907 = load ptr, ptr %18, align 8, !tbaa !5
  %908 = load i32, ptr %26, align 4, !tbaa !9
  %909 = sext i32 %908 to i64
  %910 = getelementptr inbounds %struct.complex, ptr %907, i64 %909
  %911 = getelementptr inbounds %struct.complex, ptr %910, i32 0, i32 0
  %912 = load float, ptr %911, align 4, !tbaa !13
  %913 = fmul float %906, %912
  %914 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  store float %913, ptr %914, align 4, !tbaa !13
  %915 = load float, ptr %42, align 4, !tbaa !11
  %916 = load ptr, ptr %18, align 8, !tbaa !5
  %917 = load i32, ptr %26, align 4, !tbaa !9
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds %struct.complex, ptr %916, i64 %918
  %920 = getelementptr inbounds %struct.complex, ptr %919, i32 0, i32 1
  %921 = load float, ptr %920, align 4, !tbaa !15
  %922 = fmul float %915, %921
  %923 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  store float %922, ptr %923, align 4, !tbaa !15
  %924 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  %925 = load float, ptr %924, align 4, !tbaa !13
  %926 = load ptr, ptr %18, align 8, !tbaa !5
  %927 = load i32, ptr %25, align 4, !tbaa !9
  %928 = sext i32 %927 to i64
  %929 = getelementptr inbounds %struct.complex, ptr %926, i64 %928
  %930 = getelementptr inbounds %struct.complex, ptr %929, i32 0, i32 0
  store float %925, ptr %930, align 4, !tbaa !13
  %931 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  %932 = load float, ptr %931, align 4, !tbaa !15
  %933 = load ptr, ptr %18, align 8, !tbaa !5
  %934 = load i32, ptr %25, align 4, !tbaa !9
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds %struct.complex, ptr %933, i64 %935
  %937 = getelementptr inbounds %struct.complex, ptr %936, i32 0, i32 1
  store float %932, ptr %937, align 4, !tbaa !15
  br label %938

938:                                              ; preds = %895
  %939 = load i32, ptr %31, align 4, !tbaa !9
  %940 = add nsw i32 %939, 1
  store i32 %940, ptr %31, align 4, !tbaa !9
  br label %891, !llvm.loop !29

941:                                              ; preds = %891
  br label %942

942:                                              ; preds = %941
  %943 = load i32, ptr %32, align 4, !tbaa !9
  %944 = add nsw i32 %943, 1
  store i32 %944, ptr %32, align 4, !tbaa !9
  br label %861, !llvm.loop !30

945:                                              ; preds = %861
  br label %946

946:                                              ; preds = %945, %830
  br label %947

947:                                              ; preds = %946, %829
  br label %948

948:                                              ; preds = %947, %746
  br label %949

949:                                              ; preds = %948, %661
  br label %950

950:                                              ; preds = %949, %582
  br label %951

951:                                              ; preds = %950, %505
  br label %952

952:                                              ; preds = %951, %436
  %953 = load i32, ptr %29, align 4, !tbaa !9
  %954 = icmp ne i32 %953, 0
  br i1 %954, label %956, label %955

955:                                              ; preds = %952
  br label %292

956:                                              ; preds = %952
  store i32 1, ptr %44, align 4
  br label %957

957:                                              ; preds = %956, %283, %270
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  ret void
}

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

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

declare i32 @sisnan_(ptr noundef) #2

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

declare float @slamch_(ptr noundef) #2

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

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

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

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


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

%struct.complex = type { float, float }

@.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 [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @clascl_(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr noundef %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6, ptr nocapture noundef %7, ptr nocapture noundef readonly %8, ptr nocapture noundef %9) local_unnamed_addr #0 {
  %11 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #4
  %12 = load i32, ptr %8, align 4, !tbaa !5
  %narrow = xor i32 %12, -1
  %13 = sext i32 %narrow to i64
  %14 = getelementptr inbounds %struct.complex, ptr %7, i64 %13
  store i32 0, ptr %9, align 4, !tbaa !5
  %15 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %.not.not = icmp eq i32 %15, 0
  br i1 %.not.not, label %16, label %.thread

16:                                               ; preds = %10
  %17 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %.not346 = icmp eq i32 %17, 0
  br i1 %.not346, label %18, label %.thread

18:                                               ; preds = %16
  %19 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #4
  %.not347 = icmp eq i32 %19, 0
  br i1 %.not347, label %20, label %.thread

20:                                               ; preds = %18
  %21 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #4
  %.not348 = icmp eq i32 %21, 0
  br i1 %.not348, label %22, label %.thread

22:                                               ; preds = %20
  %23 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #4
  %.not349 = icmp eq i32 %23, 0
  br i1 %.not349, label %24, label %.thread

24:                                               ; preds = %22
  %25 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.5) #4
  %.not350 = icmp eq i32 %25, 0
  br i1 %.not350, label %26, label %.thread

26:                                               ; preds = %24
  %27 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %.not351 = icmp eq i32 %27, 0
  br i1 %.not351, label %.thread398.sink.split, label %.thread

.thread:                                          ; preds = %24, %22, %20, %18, %16, %10, %26
  %28 = phi i1 [ false, %26 ], [ false, %24 ], [ false, %22 ], [ true, %20 ], [ false, %18 ], [ false, %16 ], [ false, %10 ]
  %29 = phi i1 [ false, %26 ], [ false, %24 ], [ false, %22 ], [ false, %20 ], [ true, %18 ], [ false, %16 ], [ false, %10 ]
  %30 = phi i1 [ false, %26 ], [ false, %24 ], [ false, %22 ], [ false, %20 ], [ false, %18 ], [ true, %16 ], [ false, %10 ]
  %31 = phi i1 [ true, %26 ], [ false, %24 ], [ false, %22 ], [ false, %20 ], [ false, %18 ], [ false, %16 ], [ false, %10 ]
  %32 = phi i1 [ true, %26 ], [ true, %24 ], [ true, %22 ], [ false, %20 ], [ false, %18 ], [ false, %16 ], [ false, %10 ]
  %33 = phi i1 [ false, %26 ], [ false, %24 ], [ false, %22 ], [ true, %20 ], [ true, %18 ], [ true, %16 ], [ true, %10 ]
  %34 = phi i1 [ false, %26 ], [ true, %24 ], [ false, %22 ], [ false, %20 ], [ false, %18 ], [ false, %16 ], [ false, %10 ]
  %35 = phi i1 [ false, %26 ], [ false, %24 ], [ true, %22 ], [ false, %20 ], [ false, %18 ], [ false, %16 ], [ false, %10 ]
  %36 = load float, ptr %3, align 4, !tbaa !9
  %37 = fcmp oeq float %36, 0.000000e+00
  br i1 %37, label %.thread398.sink.split, label %38

38:                                               ; preds = %.thread
  %39 = tail call i32 @sisnan_(ptr noundef nonnull %3) #4
  %.not352 = icmp eq i32 %39, 0
  br i1 %.not352, label %40, label %.thread398.sink.split

40:                                               ; preds = %38
  %41 = tail call i32 @sisnan_(ptr noundef %4) #4
  %.not353 = icmp eq i32 %41, 0
  br i1 %.not353, label %42, label %.thread398.sink.split

42:                                               ; preds = %40
  %43 = load i32, ptr %5, align 4, !tbaa !5
  %44 = icmp slt i32 %43, 0
  br i1 %44, label %.thread398.sink.split, label %45

45:                                               ; preds = %42
  %46 = load i32, ptr %6, align 4, !tbaa !5
  %47 = icmp slt i32 %46, 0
  br i1 %47, label %.thread398.sink.split, label %48

48:                                               ; preds = %45
  %.not354 = icmp ne i32 %46, %43
  %brmerge403.demorgan = or i1 %34, %35
  %or.cond402.not = and i1 %brmerge403.demorgan, %.not354
  br i1 %or.cond402.not, label %.thread398.sink.split, label %49

49:                                               ; preds = %48
  br i1 %33, label %50, label %53

50:                                               ; preds = %49
  %51 = load i32, ptr %8, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %43, i32 1)
  %52 = icmp slt i32 %51, %spec.select
  br i1 %52, label %.thread398.sink.split, label %53

53:                                               ; preds = %50, %49
  br i1 %32, label %54, label %72

54:                                               ; preds = %53
  %55 = add nsw i32 %43, -1
  store i32 %55, ptr %11, align 4, !tbaa !5
  %56 = load i32, ptr %1, align 4, !tbaa !5
  %57 = tail call i32 @llvm.usub.sat.i32(i32 %43, i32 1)
  %or.cond407 = icmp ugt i32 %56, %57
  br i1 %or.cond407, label %.thread398.sink.split, label %58

58:                                               ; preds = %54
  %59 = load i32, ptr %2, align 4, !tbaa !5
  %60 = tail call i32 @llvm.usub.sat.i32(i32 %46, i32 1)
  %or.cond409 = icmp ugt i32 %59, %60
  %.not356 = icmp ne i32 %56, %59
  %or.cond401.not = and i1 %brmerge403.demorgan, %.not356
  %or.cond = or i1 %or.cond409, %or.cond401.not
  br i1 %or.cond, label %.thread398.sink.split, label %61

61:                                               ; preds = %58
  br i1 %35, label %62, label %64

62:                                               ; preds = %61
  %63 = load i32, ptr %8, align 4, !tbaa !5
  %.not357 = icmp sgt i32 %63, %56
  br i1 %.not357, label %64, label %.thread398.sink.split

64:                                               ; preds = %62, %61
  br i1 %34, label %65, label %67

65:                                               ; preds = %64
  %66 = load i32, ptr %8, align 4, !tbaa !5
  %.not358 = icmp sgt i32 %66, %59
  br i1 %.not358, label %67, label %.thread398.sink.split

67:                                               ; preds = %65, %64
  br i1 %31, label %68, label %72

68:                                               ; preds = %67
  %69 = load i32, ptr %8, align 4, !tbaa !5
  %70 = shl nuw i32 %56, 1
  %71 = add nsw i32 %59, %70
  %.not359 = icmp sgt i32 %69, %71
  br i1 %.not359, label %72, label %.thread398.sink.split

72:                                               ; preds = %67, %68, %53
  %.pr = load i32, ptr %9, align 4, !tbaa !5
  %.not360 = icmp eq i32 %.pr, 0
  br i1 %.not360, label %76, label %.thread398

.thread398.sink.split:                            ; preds = %62, %65, %68, %58, %54, %50, %45, %48, %42, %40, %.thread, %38, %26
  %.sink = phi i32 [ -1, %26 ], [ -4, %38 ], [ -4, %.thread ], [ -5, %40 ], [ -6, %42 ], [ -7, %48 ], [ -7, %45 ], [ -9, %50 ], [ -2, %54 ], [ -3, %58 ], [ -9, %68 ], [ -9, %65 ], [ -9, %62 ]
  store i32 %.sink, ptr %9, align 4, !tbaa !5
  br label %.thread398

.thread398:                                       ; preds = %.thread398.sink.split, %72
  %73 = phi i32 [ %.pr, %72 ], [ %.sink, %.thread398.sink.split ]
  %74 = sub nsw i32 0, %73
  store i32 %74, ptr %11, align 4, !tbaa !5
  %75 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %11, i32 noundef 6) #4
  br label %.loopexit417

76:                                               ; preds = %72
  %77 = icmp eq i32 %46, 0
  %78 = icmp eq i32 %43, 0
  %or.cond596 = or i1 %77, %78
  br i1 %or.cond596, label %.loopexit417, label %79

79:                                               ; preds = %76
  %80 = tail call float @slamch_(ptr noundef nonnull @.str.8) #4
  %81 = fdiv float 1.000000e+00, %80
  %82 = load float, ptr %3, align 4, !tbaa !9
  %83 = load float, ptr %4, align 4, !tbaa !9
  br i1 %.not.not, label %.split.us.preheader, label %.split

.split.us.preheader:                              ; preds = %79
  %84 = sext i32 %12 to i64
  %85 = shl nsw i64 %84, 3
  %86 = add nsw i64 %84, %13
  %87 = shl nsw i64 %86, 3
  %88 = add nsw i64 %85, 8
  %89 = getelementptr i8, ptr %7, i64 %87
  %90 = getelementptr i8, ptr %89, i64 8
  %91 = getelementptr i8, ptr %7, i64 %87
  %92 = getelementptr i8, ptr %91, i64 12
  br label %.split.us

.split.us:                                        ; preds = %.split.us.preheader, %.loopexit410.us
  %.0332.us = phi float [ %.1333.us, %.loopexit410.us ], [ %83, %.split.us.preheader ]
  %.0321.us = phi float [ %.1.us, %.loopexit410.us ], [ %82, %.split.us.preheader ]
  %93 = fmul float %80, %.0321.us
  %94 = fcmp oeq float %93, %.0321.us
  br i1 %94, label %119, label %95

95:                                               ; preds = %.split.us
  %96 = fdiv float %.0332.us, %81
  %97 = fcmp oeq float %96, %.0332.us
  br i1 %97, label %121, label %98

98:                                               ; preds = %95
  %99 = insertelement <2 x float> poison, float %93, i64 0
  %100 = insertelement <2 x float> %99, float %.0332.us, i64 1
  %101 = fcmp oge <2 x float> %100, zeroinitializer
  %102 = fneg <2 x float> %100
  %103 = select <2 x i1> %101, <2 x float> %100, <2 x float> %102
  %104 = extractelement <2 x float> %103, i64 0
  %105 = extractelement <2 x float> %103, i64 1
  %106 = fcmp ogt float %104, %105
  %107 = fcmp une float %.0332.us, 0.000000e+00
  %or.cond3.us = select i1 %106, i1 %107, i1 false
  br i1 %or.cond3.us, label %121, label %108

108:                                              ; preds = %98
  %109 = insertelement <2 x float> poison, float %96, i64 0
  %110 = insertelement <2 x float> %109, float %.0321.us, i64 1
  %111 = fcmp oge <2 x float> %110, zeroinitializer
  %112 = fneg <2 x float> %110
  %113 = select <2 x i1> %111, <2 x float> %110, <2 x float> %112
  %114 = extractelement <2 x float> %113, i64 0
  %115 = extractelement <2 x float> %113, i64 1
  %116 = fcmp ogt float %114, %115
  br i1 %116, label %121, label %117

117:                                              ; preds = %108
  %118 = fdiv float %.0332.us, %.0321.us
  br label %121

119:                                              ; preds = %.split.us
  %120 = fdiv float %.0332.us, %.0321.us
  br label %121

121:                                              ; preds = %119, %117, %108, %98, %95
  %.not378.us = phi i1 [ false, %119 ], [ false, %117 ], [ false, %95 ], [ true, %98 ], [ true, %108 ]
  %.1333.us = phi float [ %.0332.us, %119 ], [ %.0332.us, %117 ], [ %.0332.us, %95 ], [ %.0332.us, %98 ], [ %96, %108 ]
  %.1.us = phi float [ %.0321.us, %119 ], [ %.0321.us, %117 ], [ 1.000000e+00, %95 ], [ %93, %98 ], [ %.0321.us, %108 ]
  %.0.us = phi float [ %120, %119 ], [ %118, %117 ], [ %.0332.us, %95 ], [ %80, %98 ], [ %81, %108 ]
  br i1 %30, label %211, label %122

122:                                              ; preds = %121
  br i1 %29, label %202, label %123

123:                                              ; preds = %122
  br i1 %28, label %196, label %124

124:                                              ; preds = %123
  br i1 %35, label %181, label %125

125:                                              ; preds = %124
  br i1 %34, label %162, label %126

126:                                              ; preds = %125
  br i1 %31, label %127, label %.loopexit410.us

127:                                              ; preds = %126
  %128 = load i32, ptr %1, align 4, !tbaa !5
  %129 = load i32, ptr %2, align 4, !tbaa !5
  %130 = add nsw i32 %129, %128
  %131 = add nsw i32 %130, 2
  %132 = add i32 %128, 1
  %133 = shl i32 %128, 1
  %134 = add i32 %129, 1
  %135 = add i32 %134, %133
  %136 = add nsw i32 %130, 1
  %137 = load i32, ptr %5, align 4, !tbaa !5
  %138 = add nsw i32 %136, %137
  %139 = load i32, ptr %6, align 4, !tbaa !5
  %.not429.us = icmp slt i32 %139, 1
  br i1 %.not429.us, label %.loopexit410.us, label %.lr.ph433.us.preheader

.lr.ph433.us.preheader:                           ; preds = %127
  %140 = add i32 %134, %128
  %141 = add nuw i32 %139, 1
  %wide.trip.count518 = zext i32 %141 to i64
  %142 = add i32 %137, %129
  %143 = add i32 %142, %128
  %broadcast.splatinsert741 = insertelement <2 x float> poison, float %.0.us, i64 0
  %144 = shufflevector <2 x float> %broadcast.splatinsert741, <2 x float> poison, <4 x i32> zeroinitializer
  %145 = insertelement <2 x float> poison, float %.0.us, i64 0
  %146 = shufflevector <2 x float> %145, <2 x float> poison, <2 x i32> zeroinitializer
  br label %.lr.ph433.us

.lr.ph433.us:                                     ; preds = %.lr.ph433.us.preheader, %._crit_edge428.us
  %indvar721 = phi i32 [ 0, %.lr.ph433.us.preheader ], [ %indvar.next722, %._crit_edge428.us ]
  %indvars.iv514 = phi i64 [ 1, %.lr.ph433.us.preheader ], [ %indvars.iv.next515, %._crit_edge428.us ]
  %indvars.iv510 = phi i32 [ %140, %.lr.ph433.us.preheader ], [ %indvars.iv.next511, %._crit_edge428.us ]
  %.6.neg431.us = phi i32 [ -1, %.lr.ph433.us.preheader ], [ %161, %._crit_edge428.us ]
  %147 = sub i32 %143, %indvar721
  %148 = tail call i32 @llvm.smin.i32(i32 %147, i32 %135)
  %149 = tail call i32 @llvm.smax.i32(i32 %148, i32 %indvars.iv510)
  %150 = tail call i32 @llvm.smax.i32(i32 %149, i32 %132)
  %smax725 = sext i32 %150 to i64
  %151 = add nsw i64 %smax725, 1
  %152 = tail call i32 @llvm.smax.i32(i32 %indvars.iv510, i32 %132)
  %smax726 = sext i32 %152 to i64
  %153 = sub nsw i64 %151, %smax726
  %154 = add i32 %131, %.6.neg431.us
  %155 = add i32 %138, %.6.neg431.us
  %156 = tail call i32 @llvm.smin.i32(i32 %135, i32 %155)
  %157 = tail call i32 @llvm.smax.i32(i32 %154, i32 %132)
  %.not363424.us = icmp sgt i32 %157, %156
  br i1 %.not363424.us, label %._crit_edge428.us, label %.lr.ph427.us

scalar.ph728:                                     ; preds = %scalar.ph728.preheader, %scalar.ph728
  %indvars.iv512 = phi i64 [ %indvars.iv.next513, %scalar.ph728 ], [ %indvars.iv512.ph, %scalar.ph728.preheader ]
  %gep585 = getelementptr %struct.complex, ptr %invariant.gep584, i64 %indvars.iv512
  %158 = load <2 x float>, ptr %gep585, align 4, !tbaa !9
  %159 = fmul <2 x float> %146, %158
  store <2 x float> %159, ptr %gep585, align 4, !tbaa !9
  %indvars.iv.next513 = add nsw i64 %indvars.iv512, 1
  %.not363.us.not = icmp slt i64 %indvars.iv512, %228
  br i1 %.not363.us.not, label %scalar.ph728, label %._crit_edge428.us, !llvm.loop !11

._crit_edge428.us:                                ; preds = %scalar.ph728, %middle.block727, %.lr.ph433.us
  %indvars.iv.next515 = add nuw nsw i64 %indvars.iv514, 1
  %indvars.iv.next511 = add i32 %indvars.iv510, -1
  %160 = trunc i64 %indvars.iv514 to i32
  %161 = xor i32 %160, -1
  %exitcond519.not = icmp eq i64 %indvars.iv.next515, %wide.trip.count518
  %indvar.next722 = add i32 %indvar721, 1
  br i1 %exitcond519.not, label %.loopexit410.us, label %.lr.ph433.us, !llvm.loop !15

162:                                              ; preds = %125
  %163 = load i32, ptr %2, align 4, !tbaa !5
  %164 = add nsw i32 %163, 2
  %165 = add i32 %163, 1
  %166 = load i32, ptr %6, align 4, !tbaa !5
  %.not364439.us = icmp slt i32 %166, 1
  br i1 %.not364439.us, label %.loopexit410.us, label %.lr.ph442.us.preheader

.lr.ph442.us.preheader:                           ; preds = %162
  %167 = sext i32 %163 to i64
  %168 = add nuw i32 %166, 1
  %wide.trip.count529 = zext i32 %168 to i64
  %169 = add nsw i64 %167, 1
  %broadcast.splatinsert716 = insertelement <2 x float> poison, float %.0.us, i64 0
  %170 = shufflevector <2 x float> %broadcast.splatinsert716, <2 x float> poison, <4 x i32> zeroinitializer
  %171 = insertelement <2 x float> poison, float %.0.us, i64 0
  %172 = shufflevector <2 x float> %171, <2 x float> poison, <2 x i32> zeroinitializer
  br label %.lr.ph442.us

.lr.ph442.us:                                     ; preds = %.lr.ph442.us.preheader, %._crit_edge438.us
  %indvars.iv526 = phi i64 [ 1, %.lr.ph442.us.preheader ], [ %indvars.iv.next527, %._crit_edge438.us ]
  %indvars.iv520 = phi i32 [ %165, %.lr.ph442.us.preheader ], [ %indvars.iv.next521, %._crit_edge438.us ]
  %smax700 = tail call i32 @llvm.smax.i32(i32 %indvars.iv520, i32 1)
  %173 = zext nneg i32 %smax700 to i64
  %smax701 = tail call i64 @llvm.smax.i64(i64 %169, i64 %173)
  %174 = add nuw i64 %smax701, 1
  %175 = sub i64 %174, %173
  %176 = trunc nuw nsw i64 %indvars.iv526 to i32
  %177 = sub i32 %164, %176
  %178 = tail call i32 @llvm.smax.i32(i32 %177, i32 1)
  %.not365434.us = icmp sgt i32 %178, %165
  br i1 %.not365434.us, label %._crit_edge438.us, label %.lr.ph437.us

scalar.ph703:                                     ; preds = %scalar.ph703.preheader, %scalar.ph703
  %indvars.iv523 = phi i64 [ %indvars.iv.next524, %scalar.ph703 ], [ %indvars.iv523.ph, %scalar.ph703.preheader ]
  %gep587 = getelementptr %struct.complex, ptr %invariant.gep586, i64 %indvars.iv523
  %179 = load <2 x float>, ptr %gep587, align 4, !tbaa !9
  %180 = fmul <2 x float> %172, %179
  store <2 x float> %180, ptr %gep587, align 4, !tbaa !9
  %indvars.iv.next524 = add nuw nsw i64 %indvars.iv523, 1
  %.not365.us = icmp sgt i64 %indvars.iv523, %167
  br i1 %.not365.us, label %._crit_edge438.us, label %scalar.ph703, !llvm.loop !16

._crit_edge438.us:                                ; preds = %scalar.ph703, %middle.block702, %.lr.ph442.us
  %indvars.iv.next527 = add nuw nsw i64 %indvars.iv526, 1
  %indvars.iv.next521 = add i32 %indvars.iv520, -1
  %exitcond530.not = icmp eq i64 %indvars.iv.next527, %wide.trip.count529
  br i1 %exitcond530.not, label %.loopexit410.us, label %.lr.ph442.us, !llvm.loop !17

181:                                              ; preds = %124
  %182 = load i32, ptr %1, align 4, !tbaa !5
  %183 = add i32 %182, 1
  %184 = load i32, ptr %6, align 4, !tbaa !5
  %.not366448.us = icmp slt i32 %184, 1
  br i1 %.not366448.us, label %.loopexit410.us, label %.lr.ph451.us.preheader

.lr.ph451.us.preheader:                           ; preds = %181
  %185 = add nuw i32 %184, 1
  %wide.trip.count537 = zext i32 %185 to i64
  %broadcast.splatinsert695 = insertelement <2 x float> poison, float %.0.us, i64 0
  %186 = shufflevector <2 x float> %broadcast.splatinsert695, <2 x float> poison, <4 x i32> zeroinitializer
  %187 = insertelement <2 x float> poison, float %.0.us, i64 0
  %188 = shufflevector <2 x float> %187, <2 x float> poison, <2 x i32> zeroinitializer
  br label %.lr.ph451.us

.lr.ph451.us:                                     ; preds = %.lr.ph451.us.preheader, %._crit_edge447.us
  %indvar678 = phi i32 [ 0, %.lr.ph451.us.preheader ], [ %indvar.next679, %._crit_edge447.us ]
  %indvars.iv534 = phi i64 [ 1, %.lr.ph451.us.preheader ], [ %indvars.iv.next535, %._crit_edge447.us ]
  %189 = sub i32 %184, %indvar678
  %smin680 = tail call i32 @llvm.smin.i32(i32 %189, i32 %183)
  %190 = zext i32 %smin680 to i64
  %191 = trunc i64 %indvars.iv534 to i32
  %192 = sub i32 %185, %191
  %193 = tail call i32 @llvm.smin.i32(i32 %183, i32 %192)
  %.not368443.us = icmp slt i32 %193, 1
  br i1 %.not368443.us, label %._crit_edge447.us, label %.lr.ph446.us

scalar.ph682:                                     ; preds = %scalar.ph682.preheader, %scalar.ph682
  %indvars.iv531 = phi i64 [ %indvars.iv.next532, %scalar.ph682 ], [ %indvars.iv531.ph, %scalar.ph682.preheader ]
  %gep589 = getelementptr %struct.complex, ptr %invariant.gep588, i64 %indvars.iv531
  %194 = load <2 x float>, ptr %gep589, align 4, !tbaa !9
  %195 = fmul <2 x float> %188, %194
  store <2 x float> %195, ptr %gep589, align 4, !tbaa !9
  %indvars.iv.next532 = add nuw nsw i64 %indvars.iv531, 1
  %.not368.us.not = icmp ult i64 %indvars.iv531, %236
  br i1 %.not368.us.not, label %scalar.ph682, label %._crit_edge447.us, !llvm.loop !18

._crit_edge447.us:                                ; preds = %scalar.ph682, %middle.block681, %.lr.ph451.us
  %indvars.iv.next535 = add nuw nsw i64 %indvars.iv534, 1
  %exitcond538.not = icmp eq i64 %indvars.iv.next535, %wide.trip.count537
  %indvar.next679 = add i32 %indvar678, 1
  br i1 %exitcond538.not, label %.loopexit410.us, label %.lr.ph451.us, !llvm.loop !19

196:                                              ; preds = %123
  %197 = load i32, ptr %6, align 4, !tbaa !5
  %.not369456.us = icmp slt i32 %197, 1
  br i1 %.not369456.us, label %.loopexit410.us, label %.lr.ph459.us

198:                                              ; preds = %.lr.ph459.us, %.loopexit.us
  %indvars.iv544 = phi i64 [ 1, %.lr.ph459.us ], [ %indvars.iv.next545, %.loopexit.us ]
  %indvars.iv.next545 = add nuw nsw i64 %indvars.iv544, 1
  %.not370.not.us = icmp slt i64 %indvars.iv544, %247
  %199 = trunc nsw i64 %indvars.iv.next545 to i32
  %.383.us = select i1 %.not370.not.us, i32 %199, i32 %246
  %.not371452.us = icmp slt i32 %.383.us, 1
  br i1 %.not371452.us, label %.loopexit.us, label %.lr.ph455.us

scalar.ph660:                                     ; preds = %scalar.ph660.preheader, %scalar.ph660
  %indvars.iv539 = phi i64 [ %indvars.iv.next540, %scalar.ph660 ], [ %indvars.iv539.ph, %scalar.ph660.preheader ]
  %gep591 = getelementptr %struct.complex, ptr %invariant.gep590, i64 %indvars.iv539
  %200 = load <2 x float>, ptr %gep591, align 4, !tbaa !9
  %201 = fmul <2 x float> %251, %200
  store <2 x float> %201, ptr %gep591, align 4, !tbaa !9
  %indvars.iv.next540 = add nuw nsw i64 %indvars.iv539, 1
  %exitcond543.not = icmp eq i64 %indvars.iv.next540, %wide.trip.count542
  br i1 %exitcond543.not, label %.loopexit.us, label %scalar.ph660, !llvm.loop !20

202:                                              ; preds = %122
  %203 = load i32, ptr %6, align 4, !tbaa !5
  %.not372465.us = icmp slt i32 %203, 1
  br i1 %.not372465.us, label %.loopexit410.us, label %.lr.ph468.us

204:                                              ; preds = %.lr.ph468.us, %._crit_edge464.us
  %indvar637 = phi i32 [ 0, %.lr.ph468.us ], [ %indvar.next638, %._crit_edge464.us ]
  %indvars.iv554 = phi i64 [ 1, %.lr.ph468.us ], [ %indvars.iv.next555, %._crit_edge464.us ]
  %205 = add i32 %indvar637, 1
  %smin639 = tail call i32 @llvm.smin.i32(i32 %258, i32 %205)
  %206 = add i32 %smin639, 1
  %207 = zext i32 %206 to i64
  %208 = add nsw i64 %207, -1
  br i1 %.not374460.us, label %._crit_edge464.us, label %.lr.ph463.us

scalar.ph641:                                     ; preds = %scalar.ph641.preheader, %scalar.ph641
  %indvars.iv549 = phi i64 [ %indvars.iv.next550, %scalar.ph641 ], [ %indvars.iv549.ph, %scalar.ph641.preheader ]
  %gep593 = getelementptr %struct.complex, ptr %invariant.gep592, i64 %indvars.iv549
  %209 = load <2 x float>, ptr %gep593, align 4, !tbaa !9
  %210 = fmul <2 x float> %262, %209
  store <2 x float> %210, ptr %gep593, align 4, !tbaa !9
  %indvars.iv.next550 = add nuw nsw i64 %indvars.iv549, 1
  %exitcond553.not = icmp eq i64 %indvars.iv.next550, %wide.trip.count552
  br i1 %exitcond553.not, label %._crit_edge464.us, label %scalar.ph641, !llvm.loop !21

._crit_edge464.us:                                ; preds = %scalar.ph641, %middle.block640, %204
  %indvars.iv.next555 = add nuw nsw i64 %indvars.iv554, 1
  %exitcond558.not = icmp eq i64 %indvars.iv.next555, %wide.trip.count557
  %indvar.next638 = add i32 %indvar637, 1
  br i1 %exitcond558.not, label %.loopexit410.us, label %204, !llvm.loop !22

211:                                              ; preds = %121
  %212 = load i32, ptr %6, align 4, !tbaa !5
  %.not375474.us = icmp slt i32 %212, 1
  br i1 %.not375474.us, label %.loopexit410.us, label %.lr.ph477.us

213:                                              ; preds = %.lr.ph477.us, %._crit_edge473.us
  %indvar = phi i64 [ 0, %.lr.ph477.us ], [ %indvar.next, %._crit_edge473.us ]
  %indvars.iv559 = phi i64 [ 1, %.lr.ph477.us ], [ %indvars.iv.next560, %._crit_edge473.us ]
  %214 = xor i64 %indvar, -1
  %215 = add i64 %214, %wide.trip.count564
  %216 = sub i64 %283, %indvar
  %217 = mul i64 %88, %indvar
  %scevgep = getelementptr i8, ptr %90, i64 %217
  %scevgep614 = getelementptr i8, ptr %92, i64 %217
  %.not376469.us = icmp sgt i64 %indvars.iv559, %281
  br i1 %.not376469.us, label %._crit_edge473.us, label %.lr.ph472.us

scalar.ph619:                                     ; preds = %scalar.ph619, %scalar.ph619.preheader.new
  %indvars.iv561 = phi i64 [ %indvars.iv561.unr, %scalar.ph619.preheader.new ], [ %indvars.iv.next562.3, %scalar.ph619 ]
  %gep595 = getelementptr %struct.complex, ptr %invariant.gep594, i64 %indvars.iv561
  %218 = load <2 x float>, ptr %gep595, align 4, !tbaa !9
  %219 = fmul <2 x float> %288, %218
  store <2 x float> %219, ptr %gep595, align 4, !tbaa !9
  %gep759 = getelementptr %struct.complex, ptr %invariant.gep758, i64 %indvars.iv561
  %220 = load <2 x float>, ptr %gep759, align 4, !tbaa !9
  %221 = fmul <2 x float> %290, %220
  store <2 x float> %221, ptr %gep759, align 4, !tbaa !9
  %gep761 = getelementptr %struct.complex, ptr %invariant.gep760, i64 %indvars.iv561
  %222 = load <2 x float>, ptr %gep761, align 4, !tbaa !9
  %223 = fmul <2 x float> %292, %222
  store <2 x float> %223, ptr %gep761, align 4, !tbaa !9
  %gep763 = getelementptr %struct.complex, ptr %invariant.gep762, i64 %indvars.iv561
  %224 = load <2 x float>, ptr %gep763, align 4, !tbaa !9
  %225 = fmul <2 x float> %294, %224
  store <2 x float> %225, ptr %gep763, align 4, !tbaa !9
  %indvars.iv.next562.3 = add nuw nsw i64 %indvars.iv561, 4
  %exitcond565.not.3 = icmp eq i64 %indvars.iv.next562.3, %wide.trip.count564
  br i1 %exitcond565.not.3, label %._crit_edge473.us, label %scalar.ph619, !llvm.loop !23

._crit_edge473.us:                                ; preds = %scalar.ph619.prol.loopexit, %scalar.ph619, %middle.block618, %213
  %indvars.iv.next560 = add nuw nsw i64 %indvars.iv559, 1
  %exitcond568.not = icmp eq i64 %indvars.iv.next560, %wide.trip.count567
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond568.not, label %.loopexit410.us, label %213, !llvm.loop !24

.loopexit410.us:                                  ; preds = %._crit_edge428.us, %._crit_edge438.us, %._crit_edge447.us, %.loopexit.us, %._crit_edge464.us, %._crit_edge473.us, %127, %162, %181, %196, %202, %211, %126
  br i1 %.not378.us, label %.split.us, label %.loopexit417

.loopexit.us:                                     ; preds = %scalar.ph660, %middle.block659, %198
  %exitcond548.not = icmp eq i64 %indvars.iv.next545, %wide.trip.count547
  br i1 %exitcond548.not, label %.loopexit410.us, label %198, !llvm.loop !25

.lr.ph427.us:                                     ; preds = %.lr.ph433.us
  %226 = tail call i32 @llvm.smax.i32(i32 %indvars.iv510, i32 %132)
  %smax = sext i32 %226 to i64
  %227 = mul nsw i64 %indvars.iv514, %84
  %228 = sext i32 %156 to i64
  %invariant.gep584 = getelementptr %struct.complex, ptr %14, i64 %227
  %min.iters.check729 = icmp ult i64 %153, 2
  br i1 %min.iters.check729, label %scalar.ph728.preheader, label %vector.ph730

scalar.ph728.preheader:                           ; preds = %middle.block727, %.lr.ph427.us
  %indvars.iv512.ph = phi i64 [ %smax, %.lr.ph427.us ], [ %ind.end733, %middle.block727 ]
  br label %scalar.ph728

vector.ph730:                                     ; preds = %.lr.ph427.us
  %n.vec732 = and i64 %153, -2
  %ind.end733 = add nsw i64 %n.vec732, %smax
  %invariant.gep754 = getelementptr %struct.complex, ptr %invariant.gep584, i64 %smax
  br label %vector.body735

vector.body735:                                   ; preds = %vector.body735, %vector.ph730
  %index736 = phi i64 [ 0, %vector.ph730 ], [ %index.next744, %vector.body735 ]
  %gep755 = getelementptr %struct.complex, ptr %invariant.gep754, i64 %index736
  %229 = load <4 x float>, ptr %gep755, align 4, !tbaa !9
  %interleaved.vec743 = fmul <4 x float> %144, %229
  store <4 x float> %interleaved.vec743, ptr %gep755, align 4, !tbaa !9
  %index.next744 = add nuw i64 %index736, 2
  %230 = icmp eq i64 %index.next744, %n.vec732
  br i1 %230, label %middle.block727, label %vector.body735, !llvm.loop !26

middle.block727:                                  ; preds = %vector.body735
  %cmp.n745 = icmp eq i64 %153, %n.vec732
  br i1 %cmp.n745, label %._crit_edge428.us, label %scalar.ph728.preheader

.lr.ph437.us:                                     ; preds = %.lr.ph442.us
  %smax522 = tail call i32 @llvm.smax.i32(i32 %indvars.iv520, i32 1)
  %231 = zext nneg i32 %smax522 to i64
  %232 = mul nsw i64 %indvars.iv526, %84
  %invariant.gep586 = getelementptr %struct.complex, ptr %14, i64 %232
  %min.iters.check704 = icmp ult i64 %175, 2
  br i1 %min.iters.check704, label %scalar.ph703.preheader, label %vector.ph705

scalar.ph703.preheader:                           ; preds = %middle.block702, %.lr.ph437.us
  %indvars.iv523.ph = phi i64 [ %231, %.lr.ph437.us ], [ %ind.end708, %middle.block702 ]
  br label %scalar.ph703

vector.ph705:                                     ; preds = %.lr.ph437.us
  %n.vec707 = and i64 %175, -2
  %ind.end708 = add i64 %n.vec707, %231
  %invariant.gep756 = getelementptr %struct.complex, ptr %invariant.gep586, i64 %231
  br label %vector.body710

vector.body710:                                   ; preds = %vector.body710, %vector.ph705
  %index711 = phi i64 [ 0, %vector.ph705 ], [ %index.next719, %vector.body710 ]
  %gep757 = getelementptr %struct.complex, ptr %invariant.gep756, i64 %index711
  %233 = load <4 x float>, ptr %gep757, align 4, !tbaa !9
  %interleaved.vec718 = fmul <4 x float> %170, %233
  store <4 x float> %interleaved.vec718, ptr %gep757, align 4, !tbaa !9
  %index.next719 = add nuw i64 %index711, 2
  %234 = icmp eq i64 %index.next719, %n.vec707
  br i1 %234, label %middle.block702, label %vector.body710, !llvm.loop !27

middle.block702:                                  ; preds = %vector.body710
  %cmp.n720 = icmp eq i64 %175, %n.vec707
  br i1 %cmp.n720, label %._crit_edge438.us, label %scalar.ph703.preheader

.lr.ph446.us:                                     ; preds = %.lr.ph451.us
  %235 = mul nsw i64 %indvars.iv534, %84
  %236 = zext nneg i32 %193 to i64
  %invariant.gep588 = getelementptr %struct.complex, ptr %14, i64 %235
  %min.iters.check683 = icmp ult i32 %smin680, 2
  br i1 %min.iters.check683, label %scalar.ph682.preheader, label %vector.ph684

scalar.ph682.preheader:                           ; preds = %middle.block681, %.lr.ph446.us
  %indvars.iv531.ph = phi i64 [ 1, %.lr.ph446.us ], [ %ind.end687, %middle.block681 ]
  br label %scalar.ph682

vector.ph684:                                     ; preds = %.lr.ph446.us
  %n.vec686 = and i64 %190, 4294967294
  %ind.end687 = or i64 %190, 1
  br label %vector.body689

vector.body689:                                   ; preds = %vector.body689, %vector.ph684
  %index690 = phi i64 [ 0, %vector.ph684 ], [ %index.next698, %vector.body689 ]
  %offset.idx691 = or disjoint i64 %index690, 1
  %237 = getelementptr %struct.complex, ptr %invariant.gep588, i64 %offset.idx691
  %238 = load <4 x float>, ptr %237, align 4, !tbaa !9
  %interleaved.vec697 = fmul <4 x float> %186, %238
  store <4 x float> %interleaved.vec697, ptr %237, align 4, !tbaa !9
  %index.next698 = add nuw i64 %index690, 2
  %239 = icmp eq i64 %index.next698, %n.vec686
  br i1 %239, label %middle.block681, label %vector.body689, !llvm.loop !28

middle.block681:                                  ; preds = %vector.body689
  %cmp.n699 = icmp eq i64 %n.vec686, %190
  br i1 %cmp.n699, label %._crit_edge447.us, label %scalar.ph682.preheader

.lr.ph455.us:                                     ; preds = %198
  %240 = mul nsw i64 %indvars.iv544, %84
  %241 = add nuw i32 %.383.us, 1
  %wide.trip.count542 = zext i32 %241 to i64
  %invariant.gep590 = getelementptr %struct.complex, ptr %14, i64 %240
  %242 = zext nneg i32 %.383.us to i64
  %min.iters.check661 = icmp eq i32 %.383.us, 1
  br i1 %min.iters.check661, label %scalar.ph660.preheader, label %vector.ph662

scalar.ph660.preheader:                           ; preds = %middle.block659, %.lr.ph455.us
  %indvars.iv539.ph = phi i64 [ 1, %.lr.ph455.us ], [ %ind.end665, %middle.block659 ]
  br label %scalar.ph660

vector.ph662:                                     ; preds = %.lr.ph455.us
  %n.vec664 = and i64 %242, 2147483646
  %ind.end665 = or i64 %242, 1
  br label %vector.body667

vector.body667:                                   ; preds = %vector.body667, %vector.ph662
  %index668 = phi i64 [ 0, %vector.ph662 ], [ %index.next676, %vector.body667 ]
  %offset.idx669 = or disjoint i64 %index668, 1
  %243 = getelementptr %struct.complex, ptr %invariant.gep590, i64 %offset.idx669
  %244 = load <4 x float>, ptr %243, align 4, !tbaa !9
  %interleaved.vec675 = fmul <4 x float> %249, %244
  store <4 x float> %interleaved.vec675, ptr %243, align 4, !tbaa !9
  %index.next676 = add nuw i64 %index668, 2
  %245 = icmp eq i64 %index.next676, %n.vec664
  br i1 %245, label %middle.block659, label %vector.body667, !llvm.loop !29

middle.block659:                                  ; preds = %vector.body667
  %cmp.n677 = icmp eq i64 %n.vec664, %242
  br i1 %cmp.n677, label %.loopexit.us, label %scalar.ph660.preheader

.lr.ph459.us:                                     ; preds = %196
  %246 = load i32, ptr %5, align 4, !tbaa !5
  %247 = sext i32 %246 to i64
  %248 = add nuw i32 %197, 1
  %wide.trip.count547 = zext i32 %248 to i64
  %broadcast.splatinsert673 = insertelement <2 x float> poison, float %.0.us, i64 0
  %249 = shufflevector <2 x float> %broadcast.splatinsert673, <2 x float> poison, <4 x i32> zeroinitializer
  %250 = insertelement <2 x float> poison, float %.0.us, i64 0
  %251 = shufflevector <2 x float> %250, <2 x float> poison, <2 x i32> zeroinitializer
  br label %198

.lr.ph463.us:                                     ; preds = %204
  %252 = trunc nuw nsw i64 %indvars.iv554 to i32
  %smin = tail call i32 @llvm.smin.i32(i32 %258, i32 %252)
  %253 = add i32 %smin, 1
  %254 = mul nsw i64 %indvars.iv554, %84
  %wide.trip.count552 = zext i32 %253 to i64
  %invariant.gep592 = getelementptr %struct.complex, ptr %14, i64 %254
  %min.iters.check642 = icmp ult i64 %208, 2
  br i1 %min.iters.check642, label %scalar.ph641.preheader, label %vector.ph643

scalar.ph641.preheader:                           ; preds = %middle.block640, %.lr.ph463.us
  %indvars.iv549.ph = phi i64 [ 1, %.lr.ph463.us ], [ %ind.end646, %middle.block640 ]
  br label %scalar.ph641

vector.ph643:                                     ; preds = %.lr.ph463.us
  %n.vec645 = and i64 %208, -2
  %ind.end646 = or i64 %208, 1
  br label %vector.body648

vector.body648:                                   ; preds = %vector.body648, %vector.ph643
  %index649 = phi i64 [ 0, %vector.ph643 ], [ %index.next657, %vector.body648 ]
  %offset.idx650 = or disjoint i64 %index649, 1
  %255 = getelementptr %struct.complex, ptr %invariant.gep592, i64 %offset.idx650
  %256 = load <4 x float>, ptr %255, align 4, !tbaa !9
  %interleaved.vec656 = fmul <4 x float> %260, %256
  store <4 x float> %interleaved.vec656, ptr %255, align 4, !tbaa !9
  %index.next657 = add nuw i64 %index649, 2
  %257 = icmp eq i64 %index.next657, %n.vec645
  br i1 %257, label %middle.block640, label %vector.body648, !llvm.loop !30

middle.block640:                                  ; preds = %vector.body648
  %cmp.n658 = icmp eq i64 %208, %n.vec645
  br i1 %cmp.n658, label %._crit_edge464.us, label %scalar.ph641.preheader

.lr.ph468.us:                                     ; preds = %202
  %258 = load i32, ptr %5, align 4, !tbaa !5
  %259 = add nuw i32 %203, 1
  %wide.trip.count557 = zext i32 %259 to i64
  %.not374460.us = icmp slt i32 %258, 1
  %broadcast.splatinsert654 = insertelement <2 x float> poison, float %.0.us, i64 0
  %260 = shufflevector <2 x float> %broadcast.splatinsert654, <2 x float> poison, <4 x i32> zeroinitializer
  %261 = insertelement <2 x float> poison, float %.0.us, i64 0
  %262 = shufflevector <2 x float> %261, <2 x float> poison, <2 x i32> zeroinitializer
  br label %204

.lr.ph472.us:                                     ; preds = %213
  %263 = mul nsw i64 %indvars.iv559, %84
  %invariant.gep594 = getelementptr %struct.complex, ptr %14, i64 %263
  %min.iters.check620 = icmp ult i64 %215, 12
  br i1 %min.iters.check620, label %scalar.ph619.preheader, label %vector.scevcheck

scalar.ph619.preheader:                           ; preds = %middle.block618, %vector.scevcheck, %.lr.ph472.us
  %indvars.iv561.ph = phi i64 [ %indvars.iv559, %vector.scevcheck ], [ %indvars.iv559, %.lr.ph472.us ], [ %ind.end624, %middle.block618 ]
  %264 = sub i64 %wide.trip.count564, %indvars.iv561.ph
  %xtraiter = and i64 %264, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph619.prol.loopexit, label %scalar.ph619.prol

scalar.ph619.prol:                                ; preds = %scalar.ph619.preheader, %scalar.ph619.prol
  %indvars.iv561.prol = phi i64 [ %indvars.iv.next562.prol, %scalar.ph619.prol ], [ %indvars.iv561.ph, %scalar.ph619.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph619.prol ], [ 0, %scalar.ph619.preheader ]
  %gep595.prol = getelementptr %struct.complex, ptr %invariant.gep594, i64 %indvars.iv561.prol
  %265 = load <2 x float>, ptr %gep595.prol, align 4, !tbaa !9
  %266 = fmul <2 x float> %286, %265
  store <2 x float> %266, ptr %gep595.prol, align 4, !tbaa !9
  %indvars.iv.next562.prol = add nuw nsw i64 %indvars.iv561.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %scalar.ph619.prol.loopexit, label %scalar.ph619.prol, !llvm.loop !31

scalar.ph619.prol.loopexit:                       ; preds = %scalar.ph619.prol, %scalar.ph619.preheader
  %indvars.iv561.unr = phi i64 [ %indvars.iv561.ph, %scalar.ph619.preheader ], [ %indvars.iv.next562.prol, %scalar.ph619.prol ]
  %267 = sub i64 %indvars.iv561.ph, %wide.trip.count564
  %268 = icmp ugt i64 %267, -4
  br i1 %268, label %._crit_edge473.us, label %scalar.ph619.preheader.new

scalar.ph619.preheader.new:                       ; preds = %scalar.ph619.prol.loopexit
  %invariant.gep758 = getelementptr i8, ptr %invariant.gep594, i64 8
  %invariant.gep760 = getelementptr i8, ptr %invariant.gep594, i64 16
  %invariant.gep762 = getelementptr i8, ptr %invariant.gep594, i64 24
  br label %scalar.ph619

vector.scevcheck:                                 ; preds = %.lr.ph472.us
  %mul.result = shl i64 %216, 3
  %269 = getelementptr i8, ptr %scevgep, i64 %mul.result
  %270 = icmp ult ptr %269, %scevgep
  %mul.result616 = shl i64 %216, 3
  %mul.overflow617 = icmp ugt i64 %216, 2305843009213693951
  %271 = getelementptr i8, ptr %scevgep614, i64 %mul.result616
  %272 = icmp ult ptr %271, %scevgep614
  %273 = or i1 %272, %mul.overflow617
  %274 = or i1 %270, %273
  br i1 %274, label %scalar.ph619.preheader, label %vector.ph621

vector.ph621:                                     ; preds = %vector.scevcheck
  %n.vec623 = and i64 %215, -2
  %ind.end624 = add i64 %indvars.iv559, %n.vec623
  %275 = getelementptr %struct.complex, ptr %invariant.gep594, i64 %indvars.iv559
  br label %vector.body626

vector.body626:                                   ; preds = %vector.body626, %vector.ph621
  %index627 = phi i64 [ 0, %vector.ph621 ], [ %index.next635, %vector.body626 ]
  %276 = getelementptr %struct.complex, ptr %275, i64 %index627
  %277 = load <4 x float>, ptr %276, align 4, !tbaa !9
  %interleaved.vec634 = fmul <4 x float> %284, %277
  store <4 x float> %interleaved.vec634, ptr %276, align 4, !tbaa !9
  %index.next635 = add nuw i64 %index627, 2
  %278 = icmp eq i64 %index.next635, %n.vec623
  br i1 %278, label %middle.block618, label %vector.body626, !llvm.loop !33

middle.block618:                                  ; preds = %vector.body626
  %cmp.n636 = icmp eq i64 %215, %n.vec623
  br i1 %cmp.n636, label %._crit_edge473.us, label %scalar.ph619.preheader

.lr.ph477.us:                                     ; preds = %211
  %279 = load i32, ptr %5, align 4, !tbaa !5
  %280 = add i32 %279, 1
  %281 = sext i32 %279 to i64
  %282 = add nuw i32 %212, 1
  %wide.trip.count567 = zext i32 %282 to i64
  %wide.trip.count564 = zext i32 %280 to i64
  %283 = add nsw i64 %wide.trip.count564, -2
  %broadcast.splatinsert632 = insertelement <2 x float> poison, float %.0.us, i64 0
  %284 = shufflevector <2 x float> %broadcast.splatinsert632, <2 x float> poison, <4 x i32> zeroinitializer
  %285 = insertelement <2 x float> poison, float %.0.us, i64 0
  %286 = shufflevector <2 x float> %285, <2 x float> poison, <2 x i32> zeroinitializer
  %287 = insertelement <2 x float> poison, float %.0.us, i64 0
  %288 = shufflevector <2 x float> %287, <2 x float> poison, <2 x i32> zeroinitializer
  %289 = insertelement <2 x float> poison, float %.0.us, i64 0
  %290 = shufflevector <2 x float> %289, <2 x float> poison, <2 x i32> zeroinitializer
  %291 = insertelement <2 x float> poison, float %.0.us, i64 0
  %292 = shufflevector <2 x float> %291, <2 x float> poison, <2 x i32> zeroinitializer
  %293 = insertelement <2 x float> poison, float %.0.us, i64 0
  %294 = shufflevector <2 x float> %293, <2 x float> poison, <2 x i32> zeroinitializer
  br label %213

.split:                                           ; preds = %79
  %295 = load i32, ptr %6, align 4, !tbaa !5
  %.not377420 = icmp slt i32 %295, 1
  br i1 %.not377420, label %.split.split.us.preheader, label %.split.split

.split.split.us.preheader:                        ; preds = %.split
  %296 = fmul float %80, %82
  %297 = fcmp oeq float %296, %82
  br i1 %297, label %.loopexit417, label %.lr.ph611

.lr.ph611:                                        ; preds = %.split.split.us.preheader, %.loopexit416.us
  %298 = phi float [ %319, %.loopexit416.us ], [ %296, %.split.split.us.preheader ]
  %.0321.us479610 = phi float [ %.1.us483, %.loopexit416.us ], [ %82, %.split.split.us.preheader ]
  %.0332.us478609 = phi float [ %.1333.us482, %.loopexit416.us ], [ %83, %.split.split.us.preheader ]
  %299 = fdiv float %.0332.us478609, %81
  %300 = fcmp oeq float %299, %.0332.us478609
  br i1 %300, label %.loopexit417, label %301

301:                                              ; preds = %.lr.ph611
  %302 = fcmp oge float %298, 0.000000e+00
  %303 = fneg float %298
  %304 = select i1 %302, float %298, float %303
  %305 = fcmp oge float %.0332.us478609, 0.000000e+00
  %306 = fneg float %.0332.us478609
  %307 = select i1 %305, float %.0332.us478609, float %306
  %308 = fcmp ogt float %304, %307
  %309 = fcmp une float %.0332.us478609, 0.000000e+00
  %or.cond3.us480 = and i1 %308, %309
  br i1 %or.cond3.us480, label %.loopexit416.us, label %310

310:                                              ; preds = %301
  %311 = insertelement <2 x float> poison, float %299, i64 0
  %312 = insertelement <2 x float> %311, float %.0321.us479610, i64 1
  %313 = fcmp oge <2 x float> %312, zeroinitializer
  %314 = fneg <2 x float> %312
  %315 = select <2 x i1> %313, <2 x float> %312, <2 x float> %314
  %316 = extractelement <2 x float> %315, i64 0
  %317 = extractelement <2 x float> %315, i64 1
  %318 = fcmp ogt float %316, %317
  br i1 %318, label %.loopexit416.us, label %.loopexit417

.loopexit416.us:                                  ; preds = %310, %301
  %.1333.us482 = phi float [ %.0332.us478609, %301 ], [ %299, %310 ]
  %.1.us483 = phi float [ %298, %301 ], [ %.0321.us479610, %310 ]
  %319 = fmul float %80, %.1.us483
  %320 = fcmp oeq float %319, %.1.us483
  br i1 %320, label %.loopexit417, label %.lr.ph611

.split.split:                                     ; preds = %.split
  %321 = load i32, ptr %5, align 4, !tbaa !5
  %.not379418 = icmp slt i32 %321, 1
  br i1 %.not379418, label %.split.split.split.us.preheader, label %.split.split.split.preheader

.split.split.split.us.preheader:                  ; preds = %.split.split
  %322 = fmul float %80, %82
  %323 = fcmp oeq float %322, %82
  br i1 %323, label %.loopexit417, label %.lr.ph607

.split.split.split.preheader:                     ; preds = %.split.split
  %324 = add nuw i32 %321, 1
  %325 = sext i32 %12 to i64
  %326 = add nuw i32 %295, 1
  %wide.trip.count508 = zext i32 %326 to i64
  %wide.trip.count = zext i32 %324 to i64
  %327 = zext nneg i32 %321 to i64
  %min.iters.check = icmp eq i32 %321, 1
  %n.vec = and i64 %327, 2147483646
  %ind.end = or i64 %327, 1
  %cmp.n = icmp eq i64 %n.vec, %327
  br label %.split.split.split

.lr.ph607:                                        ; preds = %.split.split.split.us.preheader, %.lr.ph423.us
  %328 = phi float [ %349, %.lr.ph423.us ], [ %322, %.split.split.split.us.preheader ]
  %.0321.us488606 = phi float [ %.1.us492, %.lr.ph423.us ], [ %82, %.split.split.split.us.preheader ]
  %.0332.us487605 = phi float [ %.1333.us491, %.lr.ph423.us ], [ %83, %.split.split.split.us.preheader ]
  %329 = fdiv float %.0332.us487605, %81
  %330 = fcmp oeq float %329, %.0332.us487605
  br i1 %330, label %.loopexit417, label %331

331:                                              ; preds = %.lr.ph607
  %332 = fcmp oge float %328, 0.000000e+00
  %333 = fneg float %328
  %334 = select i1 %332, float %328, float %333
  %335 = fcmp oge float %.0332.us487605, 0.000000e+00
  %336 = fneg float %.0332.us487605
  %337 = select i1 %335, float %.0332.us487605, float %336
  %338 = fcmp ogt float %334, %337
  %339 = fcmp une float %.0332.us487605, 0.000000e+00
  %or.cond3.us489 = and i1 %338, %339
  br i1 %or.cond3.us489, label %.lr.ph423.us, label %340

340:                                              ; preds = %331
  %341 = insertelement <2 x float> poison, float %329, i64 0
  %342 = insertelement <2 x float> %341, float %.0321.us488606, i64 1
  %343 = fcmp oge <2 x float> %342, zeroinitializer
  %344 = fneg <2 x float> %342
  %345 = select <2 x i1> %343, <2 x float> %342, <2 x float> %344
  %346 = extractelement <2 x float> %345, i64 0
  %347 = extractelement <2 x float> %345, i64 1
  %348 = fcmp ogt float %346, %347
  br i1 %348, label %.lr.ph423.us, label %.loopexit417

.lr.ph423.us:                                     ; preds = %340, %331
  %.1333.us491 = phi float [ %.0332.us487605, %331 ], [ %329, %340 ]
  %.1.us492 = phi float [ %328, %331 ], [ %.0321.us488606, %340 ]
  %349 = fmul float %80, %.1.us492
  %350 = fcmp oeq float %349, %.1.us492
  br i1 %350, label %.loopexit417, label %.lr.ph607

.split.split.split:                               ; preds = %.split.split.split.preheader, %..loopexit416_crit_edge.split
  %.0332 = phi float [ %.1333, %..loopexit416_crit_edge.split ], [ %83, %.split.split.split.preheader ]
  %.0321 = phi float [ %.1, %..loopexit416_crit_edge.split ], [ %82, %.split.split.split.preheader ]
  %351 = fmul float %80, %.0321
  %352 = fcmp oeq float %351, %.0321
  br i1 %352, label %353, label %355

353:                                              ; preds = %.split.split.split
  %354 = fdiv float %.0332, %.0321
  br label %.lr.ph423

355:                                              ; preds = %.split.split.split
  %356 = fdiv float %.0332, %81
  %357 = fcmp oeq float %356, %.0332
  br i1 %357, label %.lr.ph423, label %358

358:                                              ; preds = %355
  %359 = insertelement <2 x float> poison, float %351, i64 0
  %360 = insertelement <2 x float> %359, float %.0332, i64 1
  %361 = fcmp oge <2 x float> %360, zeroinitializer
  %362 = fneg <2 x float> %360
  %363 = select <2 x i1> %361, <2 x float> %360, <2 x float> %362
  %364 = extractelement <2 x float> %363, i64 0
  %365 = extractelement <2 x float> %363, i64 1
  %366 = fcmp ogt float %364, %365
  %367 = fcmp une float %.0332, 0.000000e+00
  %or.cond3 = select i1 %366, i1 %367, i1 false
  br i1 %or.cond3, label %.lr.ph423, label %368

368:                                              ; preds = %358
  %369 = insertelement <2 x float> poison, float %356, i64 0
  %370 = insertelement <2 x float> %369, float %.0321, i64 1
  %371 = fcmp oge <2 x float> %370, zeroinitializer
  %372 = fneg <2 x float> %370
  %373 = select <2 x i1> %371, <2 x float> %370, <2 x float> %372
  %374 = extractelement <2 x float> %373, i64 0
  %375 = extractelement <2 x float> %373, i64 1
  %376 = fcmp ogt float %374, %375
  br i1 %376, label %.lr.ph423, label %377

377:                                              ; preds = %368
  %378 = fdiv float %.0332, %.0321
  br label %.lr.ph423

.lr.ph423:                                        ; preds = %368, %358, %355, %377, %353
  %.not378 = phi i1 [ false, %353 ], [ false, %377 ], [ false, %355 ], [ true, %358 ], [ true, %368 ]
  %.1333 = phi float [ %.0332, %353 ], [ %.0332, %377 ], [ %.0332, %355 ], [ %.0332, %358 ], [ %356, %368 ]
  %.1 = phi float [ %.0321, %353 ], [ %.0321, %377 ], [ 1.000000e+00, %355 ], [ %351, %358 ], [ %.0321, %368 ]
  %.0 = phi float [ %354, %353 ], [ %378, %377 ], [ %.0332, %355 ], [ %80, %358 ], [ %81, %368 ]
  %broadcast.splatinsert = insertelement <2 x float> poison, float %.0, i64 0
  %379 = shufflevector <2 x float> %broadcast.splatinsert, <2 x float> poison, <4 x i32> zeroinitializer
  %380 = insertelement <2 x float> poison, float %.0, i64 0
  %381 = shufflevector <2 x float> %380, <2 x float> poison, <2 x i32> zeroinitializer
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph423, %._crit_edge
  %indvars.iv505 = phi i64 [ 1, %.lr.ph423 ], [ %indvars.iv.next506, %._crit_edge ]
  %382 = mul nsw i64 %indvars.iv505, %325
  %invariant.gep = getelementptr %struct.complex, ptr %14, i64 %382
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph ]
  %offset.idx = or disjoint i64 %index, 1
  %383 = getelementptr %struct.complex, ptr %invariant.gep, i64 %offset.idx
  %384 = load <4 x float>, ptr %383, align 4, !tbaa !9
  %interleaved.vec = fmul <4 x float> %379, %384
  store <4 x float> %interleaved.vec, ptr %383, align 4, !tbaa !9
  %index.next = add nuw i64 %index, 2
  %385 = icmp eq i64 %index.next, %n.vec
  br i1 %385, label %middle.block, label %vector.body, !llvm.loop !34

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

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph
  %indvars.iv.ph = phi i64 [ 1, %.lr.ph ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %indvars.iv
  %386 = load <2 x float>, ptr %gep, align 4, !tbaa !9
  %387 = fmul <2 x float> %381, %386
  store <2 x float> %387, ptr %gep, align 4, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %scalar.ph, !llvm.loop !35

._crit_edge:                                      ; preds = %scalar.ph, %middle.block
  %indvars.iv.next506 = add nuw nsw i64 %indvars.iv505, 1
  %exitcond509.not = icmp eq i64 %indvars.iv.next506, %wide.trip.count508
  br i1 %exitcond509.not, label %..loopexit416_crit_edge.split, label %.lr.ph, !llvm.loop !36

..loopexit416_crit_edge.split:                    ; preds = %._crit_edge
  br i1 %.not378, label %.split.split.split, label %.loopexit417

.loopexit417:                                     ; preds = %..loopexit416_crit_edge.split, %340, %.lr.ph423.us, %.lr.ph607, %310, %.loopexit416.us, %.lr.ph611, %.loopexit410.us, %.split.split.split.us.preheader, %.split.split.us.preheader, %76, %.thread398
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #4
  ret void
}

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

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

declare i32 @sisnan_(ptr noundef) local_unnamed_addr #2

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

declare float @slamch_(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 i32 @llvm.smin.i32(i32, i32) #3

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !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.unroll.runtime.disable"}
!14 = !{!"llvm.loop.isvectorized", i32 1}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12, !13, !14}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12, !13, !14}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12, !13, !14}
!21 = distinct !{!21, !12, !13, !14}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12, !14}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12, !14, !13}
!27 = distinct !{!27, !12, !14, !13}
!28 = distinct !{!28, !12, !14, !13}
!29 = distinct !{!29, !12, !14, !13}
!30 = distinct !{!30, !12, !14, !13}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.unroll.disable"}
!33 = distinct !{!33, !12, !14, !13}
!34 = distinct !{!34, !12, !14, !13}
!35 = distinct !{!35, !12, !13, !14}
!36 = distinct !{!36, !12}


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