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

; 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 [7 x i8], align 1
@c__9 = external hidden global i32, align 4
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4

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

92:                                               ; preds = %11
  br label %96

93:                                               ; preds = %11
  %94 = load ptr, ptr %13, align 8, !tbaa !5
  %95 = load i32, ptr %94, align 4, !tbaa !9
  br label %96

96:                                               ; preds = %93, %92
  %97 = phi i32 [ 0, %92 ], [ %95, %93 ]
  %98 = icmp slt i32 %88, %97
  br i1 %98, label %99, label %101

99:                                               ; preds = %96
  %100 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -1, ptr %100, align 4, !tbaa !9
  br label %140

101:                                              ; preds = %96
  %102 = load ptr, ptr %13, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  %104 = icmp slt i32 %103, 0
  br i1 %104, label %105, label %107

105:                                              ; preds = %101
  %106 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -2, ptr %106, align 4, !tbaa !9
  br label %139

107:                                              ; preds = %101
  %108 = load ptr, ptr %17, align 8, !tbaa !5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  %110 = load ptr, ptr %13, align 8, !tbaa !5
  %111 = load i32, ptr %110, align 4, !tbaa !9
  %112 = icmp sge i32 1, %111
  br i1 %112, label %113, label %114

113:                                              ; preds = %107
  br label %117

114:                                              ; preds = %107
  %115 = load ptr, ptr %13, align 8, !tbaa !5
  %116 = load i32, ptr %115, align 4, !tbaa !9
  br label %117

117:                                              ; preds = %114, %113
  %118 = phi i32 [ 1, %113 ], [ %116, %114 ]
  %119 = icmp slt i32 %109, %118
  br i1 %119, label %120, label %122

120:                                              ; preds = %117
  %121 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -6, ptr %121, align 4, !tbaa !9
  br label %138

122:                                              ; preds = %117
  %123 = load ptr, ptr %19, align 8, !tbaa !5
  %124 = load i32, ptr %123, align 4, !tbaa !9
  %125 = load ptr, ptr %13, align 8, !tbaa !5
  %126 = load i32, ptr %125, align 4, !tbaa !9
  %127 = icmp sge i32 1, %126
  br i1 %127, label %128, label %129

128:                                              ; preds = %122
  br label %132

129:                                              ; preds = %122
  %130 = load ptr, ptr %13, align 8, !tbaa !5
  %131 = load i32, ptr %130, align 4, !tbaa !9
  br label %132

132:                                              ; preds = %129, %128
  %133 = phi i32 [ 1, %128 ], [ %131, %129 ]
  %134 = icmp slt i32 %124, %133
  br i1 %134, label %135, label %137

135:                                              ; preds = %132
  %136 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -8, ptr %136, align 4, !tbaa !9
  br label %137

137:                                              ; preds = %135, %132
  br label %138

138:                                              ; preds = %137, %120
  br label %139

139:                                              ; preds = %138, %105
  br label %140

140:                                              ; preds = %139, %99
  %141 = load ptr, ptr %22, align 8, !tbaa !5
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = icmp ne i32 %142, 0
  br i1 %143, label %144, label %149

144:                                              ; preds = %140
  %145 = load ptr, ptr %22, align 8, !tbaa !5
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = sub nsw i32 0, %146
  store i32 %147, ptr %27, align 4, !tbaa !9
  %148 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %27, i32 noundef 6)
  store i32 1, ptr %57, align 4
  br label %740

149:                                              ; preds = %140
  %150 = load ptr, ptr %13, align 8, !tbaa !5
  %151 = load i32, ptr %150, align 4, !tbaa !9
  %152 = icmp eq i32 %151, 0
  br i1 %152, label %153, label %154

153:                                              ; preds = %149
  store i32 1, ptr %57, align 4
  br label %740

154:                                              ; preds = %149
  %155 = call i32 @ilaenv_(ptr noundef @c__9, ptr noundef @.str, ptr noundef @.str.1, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  store i32 %155, ptr %51, align 4, !tbaa !9
  %156 = load ptr, ptr %13, align 8, !tbaa !5
  %157 = load i32, ptr %156, align 4, !tbaa !9
  %158 = load ptr, ptr %21, align 8, !tbaa !5
  %159 = getelementptr inbounds i32, ptr %158, i64 1
  store i32 %157, ptr %159, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  store i32 0, ptr %39, align 4, !tbaa !9
  br label %160

160:                                              ; preds = %201, %154
  %161 = load ptr, ptr %21, align 8, !tbaa !5
  %162 = load i32, ptr %46, align 4, !tbaa !9
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds i32, ptr %161, i64 %163
  %165 = load i32, ptr %164, align 4, !tbaa !9
  %166 = load i32, ptr %51, align 4, !tbaa !9
  %167 = icmp sgt i32 %165, %166
  br i1 %167, label %168, label %206

168:                                              ; preds = %160
  %169 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %169, ptr %33, align 4, !tbaa !9
  br label %170

170:                                              ; preds = %198, %168
  %171 = load i32, ptr %33, align 4, !tbaa !9
  %172 = icmp sge i32 %171, 1
  br i1 %172, label %173, label %201

173:                                              ; preds = %170
  %174 = load ptr, ptr %21, align 8, !tbaa !5
  %175 = load i32, ptr %33, align 4, !tbaa !9
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds i32, ptr %174, i64 %176
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = add nsw i32 %178, 1
  %180 = sdiv i32 %179, 2
  %181 = load ptr, ptr %21, align 8, !tbaa !5
  %182 = load i32, ptr %33, align 4, !tbaa !9
  %183 = mul nsw i32 %182, 2
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds i32, ptr %181, i64 %184
  store i32 %180, ptr %185, align 4, !tbaa !9
  %186 = load ptr, ptr %21, align 8, !tbaa !5
  %187 = load i32, ptr %33, align 4, !tbaa !9
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds i32, ptr %186, i64 %188
  %190 = load i32, ptr %189, align 4, !tbaa !9
  %191 = sdiv i32 %190, 2
  %192 = load ptr, ptr %21, align 8, !tbaa !5
  %193 = load i32, ptr %33, align 4, !tbaa !9
  %194 = shl i32 %193, 1
  %195 = sub nsw i32 %194, 1
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds i32, ptr %192, i64 %196
  store i32 %191, ptr %197, align 4, !tbaa !9
  br label %198

198:                                              ; preds = %173
  %199 = load i32, ptr %33, align 4, !tbaa !9
  %200 = add nsw i32 %199, -1
  store i32 %200, ptr %33, align 4, !tbaa !9
  br label %170, !llvm.loop !11

201:                                              ; preds = %170
  %202 = load i32, ptr %39, align 4, !tbaa !9
  %203 = add nsw i32 %202, 1
  store i32 %203, ptr %39, align 4, !tbaa !9
  %204 = load i32, ptr %46, align 4, !tbaa !9
  %205 = shl i32 %204, 1
  store i32 %205, ptr %46, align 4, !tbaa !9
  br label %160

206:                                              ; preds = %160
  %207 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %207, ptr %27, align 4, !tbaa !9
  store i32 2, ptr %33, align 4, !tbaa !9
  br label %208

208:                                              ; preds = %225, %206
  %209 = load i32, ptr %33, align 4, !tbaa !9
  %210 = load i32, ptr %27, align 4, !tbaa !9
  %211 = icmp sle i32 %209, %210
  br i1 %211, label %212, label %228

212:                                              ; preds = %208
  %213 = load ptr, ptr %21, align 8, !tbaa !5
  %214 = load i32, ptr %33, align 4, !tbaa !9
  %215 = sub nsw i32 %214, 1
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds i32, ptr %213, i64 %216
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = load ptr, ptr %21, align 8, !tbaa !5
  %220 = load i32, ptr %33, align 4, !tbaa !9
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds i32, ptr %219, i64 %221
  %223 = load i32, ptr %222, align 4, !tbaa !9
  %224 = add nsw i32 %223, %218
  store i32 %224, ptr %222, align 4, !tbaa !9
  br label %225

225:                                              ; preds = %212
  %226 = load i32, ptr %33, align 4, !tbaa !9
  %227 = add nsw i32 %226, 1
  store i32 %227, ptr %33, align 4, !tbaa !9
  br label %208, !llvm.loop !13

228:                                              ; preds = %208
  %229 = load i32, ptr %46, align 4, !tbaa !9
  %230 = sub nsw i32 %229, 1
  store i32 %230, ptr %55, align 4, !tbaa !9
  %231 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %231, ptr %27, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %232

232:                                              ; preds = %285, %228
  %233 = load i32, ptr %32, align 4, !tbaa !9
  %234 = load i32, ptr %27, align 4, !tbaa !9
  %235 = icmp sle i32 %233, %234
  br i1 %235, label %236, label %288

236:                                              ; preds = %232
  %237 = load ptr, ptr %21, align 8, !tbaa !5
  %238 = load i32, ptr %32, align 4, !tbaa !9
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds i32, ptr %237, i64 %239
  %241 = load i32, ptr %240, align 4, !tbaa !9
  %242 = add nsw i32 %241, 1
  store i32 %242, ptr %44, align 4, !tbaa !9
  %243 = load i32, ptr %44, align 4, !tbaa !9
  %244 = sub nsw i32 %243, 1
  store i32 %244, ptr %54, align 4, !tbaa !9
  %245 = load ptr, ptr %15, align 8, !tbaa !5
  %246 = load i32, ptr %54, align 4, !tbaa !9
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds float, ptr %245, i64 %247
  %249 = load float, ptr %248, align 4, !tbaa !14
  store float %249, ptr %29, align 4, !tbaa !14
  %250 = load float, ptr %29, align 4, !tbaa !14
  %251 = fcmp oge float %250, 0.000000e+00
  br i1 %251, label %252, label %254

252:                                              ; preds = %236
  %253 = load float, ptr %29, align 4, !tbaa !14
  br label %257

254:                                              ; preds = %236
  %255 = load float, ptr %29, align 4, !tbaa !14
  %256 = fneg float %255
  br label %257

257:                                              ; preds = %254, %252
  %258 = phi float [ %253, %252 ], [ %256, %254 ]
  %259 = load ptr, ptr %14, align 8, !tbaa !5
  %260 = load i32, ptr %54, align 4, !tbaa !9
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds float, ptr %259, i64 %261
  %263 = load float, ptr %262, align 4, !tbaa !14
  %264 = fsub float %263, %258
  store float %264, ptr %262, align 4, !tbaa !14
  %265 = load ptr, ptr %15, align 8, !tbaa !5
  %266 = load i32, ptr %54, align 4, !tbaa !9
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds float, ptr %265, i64 %267
  %269 = load float, ptr %268, align 4, !tbaa !14
  store float %269, ptr %29, align 4, !tbaa !14
  %270 = load float, ptr %29, align 4, !tbaa !14
  %271 = fcmp oge float %270, 0.000000e+00
  br i1 %271, label %272, label %274

272:                                              ; preds = %257
  %273 = load float, ptr %29, align 4, !tbaa !14
  br label %277

274:                                              ; preds = %257
  %275 = load float, ptr %29, align 4, !tbaa !14
  %276 = fneg float %275
  br label %277

277:                                              ; preds = %274, %272
  %278 = phi float [ %273, %272 ], [ %276, %274 ]
  %279 = load ptr, ptr %14, align 8, !tbaa !5
  %280 = load i32, ptr %44, align 4, !tbaa !9
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds float, ptr %279, i64 %281
  %283 = load float, ptr %282, align 4, !tbaa !14
  %284 = fsub float %283, %278
  store float %284, ptr %282, align 4, !tbaa !14
  br label %285

285:                                              ; preds = %277
  %286 = load i32, ptr %32, align 4, !tbaa !9
  %287 = add nsw i32 %286, 1
  store i32 %287, ptr %32, align 4, !tbaa !9
  br label %232, !llvm.loop !16

288:                                              ; preds = %232
  %289 = load ptr, ptr %13, align 8, !tbaa !5
  %290 = load i32, ptr %289, align 4, !tbaa !9
  %291 = shl i32 %290, 2
  %292 = add nsw i32 %291, 3
  store i32 %292, ptr %36, align 4, !tbaa !9
  %293 = load ptr, ptr %13, align 8, !tbaa !5
  %294 = load i32, ptr %293, align 4, !tbaa !9
  %295 = sitofp i32 %294 to float
  %296 = fpext float %295 to double
  %297 = call double @log(double noundef %296) #4
  %298 = call double @log(double noundef 2.000000e+00) #4
  %299 = fdiv double %297, %298
  %300 = fptrunc double %299 to float
  store float %300, ptr %30, align 4, !tbaa !14
  %301 = load float, ptr %30, align 4, !tbaa !14
  %302 = fptosi float %301 to i32
  store i32 %302, ptr %52, align 4, !tbaa !9
  %303 = load i32, ptr @c__2, align 4, !tbaa !9
  %304 = load i32, ptr %52, align 4, !tbaa !9
  %305 = call i32 @pow_ii(i32 noundef %303, i32 noundef %304)
  %306 = load ptr, ptr %13, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  %308 = icmp slt i32 %305, %307
  br i1 %308, label %309, label %312

309:                                              ; preds = %288
  %310 = load i32, ptr %52, align 4, !tbaa !9
  %311 = add nsw i32 %310, 1
  store i32 %311, ptr %52, align 4, !tbaa !9
  br label %312

312:                                              ; preds = %309, %288
  %313 = load i32, ptr @c__2, align 4, !tbaa !9
  %314 = load i32, ptr %52, align 4, !tbaa !9
  %315 = call i32 @pow_ii(i32 noundef %313, i32 noundef %314)
  %316 = load ptr, ptr %13, align 8, !tbaa !5
  %317 = load i32, ptr %316, align 4, !tbaa !9
  %318 = icmp slt i32 %315, %317
  br i1 %318, label %319, label %322

319:                                              ; preds = %312
  %320 = load i32, ptr %52, align 4, !tbaa !9
  %321 = add nsw i32 %320, 1
  store i32 %321, ptr %52, align 4, !tbaa !9
  br label %322

322:                                              ; preds = %319, %312
  %323 = load i32, ptr %36, align 4, !tbaa !9
  %324 = load ptr, ptr %13, align 8, !tbaa !5
  %325 = load i32, ptr %324, align 4, !tbaa !9
  %326 = add nsw i32 %323, %325
  %327 = add nsw i32 %326, 1
  store i32 %327, ptr %50, align 4, !tbaa !9
  %328 = load i32, ptr %50, align 4, !tbaa !9
  %329 = load ptr, ptr %13, align 8, !tbaa !5
  %330 = load i32, ptr %329, align 4, !tbaa !9
  %331 = load i32, ptr %52, align 4, !tbaa !9
  %332 = mul nsw i32 %330, %331
  %333 = add nsw i32 %328, %332
  store i32 %333, ptr %35, align 4, !tbaa !9
  %334 = load i32, ptr %35, align 4, !tbaa !9
  %335 = load ptr, ptr %13, align 8, !tbaa !5
  %336 = load i32, ptr %335, align 4, !tbaa !9
  %337 = load i32, ptr %52, align 4, !tbaa !9
  %338 = mul nsw i32 %336, %337
  %339 = add nsw i32 %334, %338
  store i32 %339, ptr %38, align 4, !tbaa !9
  %340 = load i32, ptr %38, align 4, !tbaa !9
  %341 = load ptr, ptr %13, align 8, !tbaa !5
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = add nsw i32 %340, %342
  %344 = add nsw i32 %343, 2
  store i32 %344, ptr %47, align 4, !tbaa !9
  %345 = load i32, ptr %47, align 4, !tbaa !9
  %346 = load ptr, ptr %13, align 8, !tbaa !5
  %347 = load i32, ptr %346, align 4, !tbaa !9
  %348 = load i32, ptr %52, align 4, !tbaa !9
  %349 = mul nsw i32 %347, %348
  %350 = add nsw i32 %345, %349
  store i32 %350, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  %351 = load i32, ptr %43, align 4, !tbaa !9
  %352 = load ptr, ptr %13, align 8, !tbaa !5
  %353 = load i32, ptr %352, align 4, !tbaa !9
  %354 = shl i32 %353, 1
  %355 = load i32, ptr %52, align 4, !tbaa !9
  %356 = mul nsw i32 %354, %355
  %357 = add nsw i32 %351, %356
  store i32 %357, ptr %41, align 4, !tbaa !9
  %358 = load ptr, ptr %13, align 8, !tbaa !5
  %359 = load i32, ptr %358, align 4, !tbaa !9
  store i32 %359, ptr %27, align 4, !tbaa !9
  %360 = load i32, ptr %41, align 4, !tbaa !9
  %361 = load i32, ptr %27, align 4, !tbaa !9
  %362 = load i32, ptr %27, align 4, !tbaa !9
  %363 = mul nsw i32 %361, %362
  %364 = add nsw i32 %360, %363
  %365 = add nsw i32 %364, 1
  store i32 %365, ptr %37, align 4, !tbaa !9
  %366 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %366, ptr %27, align 4, !tbaa !9
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %367

367:                                              ; preds = %384, %322
  %368 = load i32, ptr %32, align 4, !tbaa !9
  %369 = load i32, ptr %27, align 4, !tbaa !9
  %370 = icmp sle i32 %368, %369
  br i1 %370, label %371, label %387

371:                                              ; preds = %367
  %372 = load ptr, ptr %21, align 8, !tbaa !5
  %373 = load i32, ptr %50, align 4, !tbaa !9
  %374 = load i32, ptr %32, align 4, !tbaa !9
  %375 = add nsw i32 %373, %374
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds i32, ptr %372, i64 %376
  store i32 1, ptr %377, align 4, !tbaa !9
  %378 = load ptr, ptr %21, align 8, !tbaa !5
  %379 = load i32, ptr %47, align 4, !tbaa !9
  %380 = load i32, ptr %32, align 4, !tbaa !9
  %381 = add nsw i32 %379, %380
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds i32, ptr %378, i64 %382
  store i32 1, ptr %383, align 4, !tbaa !9
  br label %384

384:                                              ; preds = %371
  %385 = load i32, ptr %32, align 4, !tbaa !9
  %386 = add nsw i32 %385, 1
  store i32 %386, ptr %32, align 4, !tbaa !9
  br label %367, !llvm.loop !17

387:                                              ; preds = %367
  %388 = load ptr, ptr %21, align 8, !tbaa !5
  %389 = load i32, ptr %38, align 4, !tbaa !9
  %390 = sext i32 %389 to i64
  %391 = getelementptr inbounds i32, ptr %388, i64 %390
  store i32 1, ptr %391, align 4, !tbaa !9
  store i32 0, ptr %31, align 4, !tbaa !9
  %392 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %392, ptr %27, align 4, !tbaa !9
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %393

393:                                              ; preds = %536, %387
  %394 = load i32, ptr %32, align 4, !tbaa !9
  %395 = load i32, ptr %27, align 4, !tbaa !9
  %396 = icmp sle i32 %394, %395
  br i1 %396, label %397, label %539

397:                                              ; preds = %393
  %398 = load i32, ptr %32, align 4, !tbaa !9
  %399 = icmp eq i32 %398, 0
  br i1 %399, label %400, label %404

400:                                              ; preds = %397
  store i32 1, ptr %44, align 4, !tbaa !9
  %401 = load ptr, ptr %21, align 8, !tbaa !5
  %402 = getelementptr inbounds i32, ptr %401, i64 1
  %403 = load i32, ptr %402, align 4, !tbaa !9
  store i32 %403, ptr %49, align 4, !tbaa !9
  br label %423

404:                                              ; preds = %397
  %405 = load ptr, ptr %21, align 8, !tbaa !5
  %406 = load i32, ptr %32, align 4, !tbaa !9
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds i32, ptr %405, i64 %407
  %409 = load i32, ptr %408, align 4, !tbaa !9
  %410 = add nsw i32 %409, 1
  store i32 %410, ptr %44, align 4, !tbaa !9
  %411 = load ptr, ptr %21, align 8, !tbaa !5
  %412 = load i32, ptr %32, align 4, !tbaa !9
  %413 = add nsw i32 %412, 1
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds i32, ptr %411, i64 %414
  %416 = load i32, ptr %415, align 4, !tbaa !9
  %417 = load ptr, ptr %21, align 8, !tbaa !5
  %418 = load i32, ptr %32, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds i32, ptr %417, i64 %419
  %421 = load i32, ptr %420, align 4, !tbaa !9
  %422 = sub nsw i32 %416, %421
  store i32 %422, ptr %49, align 4, !tbaa !9
  br label %423

423:                                              ; preds = %404, %400
  %424 = load i32, ptr %41, align 4, !tbaa !9
  %425 = sub nsw i32 %424, 1
  %426 = load ptr, ptr %21, align 8, !tbaa !5
  %427 = load i32, ptr %38, align 4, !tbaa !9
  %428 = load i32, ptr %31, align 4, !tbaa !9
  %429 = add nsw i32 %427, %428
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds i32, ptr %426, i64 %430
  %432 = load i32, ptr %431, align 4, !tbaa !9
  %433 = add nsw i32 %425, %432
  store i32 %433, ptr %40, align 4, !tbaa !9
  %434 = load ptr, ptr %14, align 8, !tbaa !5
  %435 = load i32, ptr %44, align 4, !tbaa !9
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds float, ptr %434, i64 %436
  %438 = load ptr, ptr %15, align 8, !tbaa !5
  %439 = load i32, ptr %44, align 4, !tbaa !9
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds float, ptr %438, i64 %440
  %442 = load ptr, ptr %20, align 8, !tbaa !5
  %443 = load i32, ptr %40, align 4, !tbaa !9
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds float, ptr %442, i64 %444
  %446 = load ptr, ptr %20, align 8, !tbaa !5
  %447 = getelementptr inbounds float, ptr %446, i64 1
  %448 = load ptr, ptr %22, align 8, !tbaa !5
  call void @ssteqr_(ptr noundef @.str.2, ptr noundef %49, ptr noundef %437, ptr noundef %441, ptr noundef %445, ptr noundef %49, ptr noundef %447, ptr noundef %448)
  %449 = load ptr, ptr %12, align 8, !tbaa !5
  %450 = load ptr, ptr %16, align 8, !tbaa !5
  %451 = load i32, ptr %44, align 4, !tbaa !9
  %452 = load i32, ptr %23, align 4, !tbaa !9
  %453 = mul nsw i32 %451, %452
  %454 = add nsw i32 %453, 1
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds %struct.complex, ptr %450, i64 %455
  %457 = load ptr, ptr %17, align 8, !tbaa !5
  %458 = load ptr, ptr %20, align 8, !tbaa !5
  %459 = load i32, ptr %40, align 4, !tbaa !9
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds float, ptr %458, i64 %460
  %462 = load ptr, ptr %18, align 8, !tbaa !5
  %463 = load i32, ptr %44, align 4, !tbaa !9
  %464 = load i32, ptr %25, align 4, !tbaa !9
  %465 = mul nsw i32 %463, %464
  %466 = add nsw i32 %465, 1
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds %struct.complex, ptr %462, i64 %467
  %469 = load ptr, ptr %19, align 8, !tbaa !5
  %470 = load ptr, ptr %20, align 8, !tbaa !5
  %471 = load i32, ptr %37, align 4, !tbaa !9
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds float, ptr %470, i64 %472
  call void @clacrm_(ptr noundef %449, ptr noundef %49, ptr noundef %456, ptr noundef %457, ptr noundef %461, ptr noundef %49, ptr noundef %468, ptr noundef %469, ptr noundef %473)
  %474 = load i32, ptr %49, align 4, !tbaa !9
  store i32 %474, ptr %28, align 4, !tbaa !9
  %475 = load ptr, ptr %21, align 8, !tbaa !5
  %476 = load i32, ptr %38, align 4, !tbaa !9
  %477 = load i32, ptr %31, align 4, !tbaa !9
  %478 = add nsw i32 %476, %477
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds i32, ptr %475, i64 %479
  %481 = load i32, ptr %480, align 4, !tbaa !9
  %482 = load i32, ptr %28, align 4, !tbaa !9
  %483 = load i32, ptr %28, align 4, !tbaa !9
  %484 = mul nsw i32 %482, %483
  %485 = add nsw i32 %481, %484
  %486 = load ptr, ptr %21, align 8, !tbaa !5
  %487 = load i32, ptr %38, align 4, !tbaa !9
  %488 = load i32, ptr %31, align 4, !tbaa !9
  %489 = add nsw i32 %487, %488
  %490 = add nsw i32 %489, 1
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds i32, ptr %486, i64 %491
  store i32 %485, ptr %492, align 4, !tbaa !9
  %493 = load i32, ptr %31, align 4, !tbaa !9
  %494 = add nsw i32 %493, 1
  store i32 %494, ptr %31, align 4, !tbaa !9
  %495 = load ptr, ptr %22, align 8, !tbaa !5
  %496 = load i32, ptr %495, align 4, !tbaa !9
  %497 = icmp sgt i32 %496, 0
  br i1 %497, label %498, label %510

498:                                              ; preds = %423
  %499 = load i32, ptr %44, align 4, !tbaa !9
  %500 = load ptr, ptr %13, align 8, !tbaa !5
  %501 = load i32, ptr %500, align 4, !tbaa !9
  %502 = add nsw i32 %501, 1
  %503 = mul nsw i32 %499, %502
  %504 = load i32, ptr %44, align 4, !tbaa !9
  %505 = add nsw i32 %503, %504
  %506 = load i32, ptr %49, align 4, !tbaa !9
  %507 = add nsw i32 %505, %506
  %508 = sub nsw i32 %507, 1
  %509 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 %508, ptr %509, align 4, !tbaa !9
  store i32 1, ptr %57, align 4
  br label %740

510:                                              ; preds = %423
  store i32 1, ptr %34, align 4, !tbaa !9
  %511 = load ptr, ptr %21, align 8, !tbaa !5
  %512 = load i32, ptr %32, align 4, !tbaa !9
  %513 = add nsw i32 %512, 1
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds i32, ptr %511, i64 %514
  %516 = load i32, ptr %515, align 4, !tbaa !9
  store i32 %516, ptr %28, align 4, !tbaa !9
  %517 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %517, ptr %33, align 4, !tbaa !9
  br label %518

518:                                              ; preds = %532, %510
  %519 = load i32, ptr %33, align 4, !tbaa !9
  %520 = load i32, ptr %28, align 4, !tbaa !9
  %521 = icmp sle i32 %519, %520
  br i1 %521, label %522, label %535

522:                                              ; preds = %518
  %523 = load i32, ptr %34, align 4, !tbaa !9
  %524 = load ptr, ptr %21, align 8, !tbaa !5
  %525 = load i32, ptr %36, align 4, !tbaa !9
  %526 = load i32, ptr %33, align 4, !tbaa !9
  %527 = add nsw i32 %525, %526
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds i32, ptr %524, i64 %528
  store i32 %523, ptr %529, align 4, !tbaa !9
  %530 = load i32, ptr %34, align 4, !tbaa !9
  %531 = add nsw i32 %530, 1
  store i32 %531, ptr %34, align 4, !tbaa !9
  br label %532

532:                                              ; preds = %522
  %533 = load i32, ptr %33, align 4, !tbaa !9
  %534 = add nsw i32 %533, 1
  store i32 %534, ptr %33, align 4, !tbaa !9
  br label %518, !llvm.loop !18

535:                                              ; preds = %518
  br label %536

536:                                              ; preds = %535
  %537 = load i32, ptr %32, align 4, !tbaa !9
  %538 = add nsw i32 %537, 1
  store i32 %538, ptr %32, align 4, !tbaa !9
  br label %393, !llvm.loop !19

539:                                              ; preds = %393
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %540

540:                                              ; preds = %687, %539
  %541 = load i32, ptr %46, align 4, !tbaa !9
  %542 = icmp sgt i32 %541, 1
  br i1 %542, label %543, label %692

543:                                              ; preds = %540
  %544 = load i32, ptr %46, align 4, !tbaa !9
  %545 = sub nsw i32 %544, 2
  store i32 %545, ptr %56, align 4, !tbaa !9
  %546 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %546, ptr %27, align 4, !tbaa !9
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %547

547:                                              ; preds = %684, %543
  %548 = load i32, ptr %32, align 4, !tbaa !9
  %549 = load i32, ptr %27, align 4, !tbaa !9
  %550 = icmp sle i32 %548, %549
  br i1 %550, label %551, label %687

551:                                              ; preds = %547
  %552 = load i32, ptr %32, align 4, !tbaa !9
  %553 = icmp eq i32 %552, 0
  br i1 %553, label %554, label %561

554:                                              ; preds = %551
  store i32 1, ptr %44, align 4, !tbaa !9
  %555 = load ptr, ptr %21, align 8, !tbaa !5
  %556 = getelementptr inbounds i32, ptr %555, i64 2
  %557 = load i32, ptr %556, align 4, !tbaa !9
  store i32 %557, ptr %49, align 4, !tbaa !9
  %558 = load ptr, ptr %21, align 8, !tbaa !5
  %559 = getelementptr inbounds i32, ptr %558, i64 1
  %560 = load i32, ptr %559, align 4, !tbaa !9
  store i32 %560, ptr %53, align 4, !tbaa !9
  store i32 0, ptr %45, align 4, !tbaa !9
  br label %584

561:                                              ; preds = %551
  %562 = load ptr, ptr %21, align 8, !tbaa !5
  %563 = load i32, ptr %32, align 4, !tbaa !9
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds i32, ptr %562, i64 %564
  %566 = load i32, ptr %565, align 4, !tbaa !9
  %567 = add nsw i32 %566, 1
  store i32 %567, ptr %44, align 4, !tbaa !9
  %568 = load ptr, ptr %21, align 8, !tbaa !5
  %569 = load i32, ptr %32, align 4, !tbaa !9
  %570 = add nsw i32 %569, 2
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds i32, ptr %568, i64 %571
  %573 = load i32, ptr %572, align 4, !tbaa !9
  %574 = load ptr, ptr %21, align 8, !tbaa !5
  %575 = load i32, ptr %32, align 4, !tbaa !9
  %576 = sext i32 %575 to i64
  %577 = getelementptr inbounds i32, ptr %574, i64 %576
  %578 = load i32, ptr %577, align 4, !tbaa !9
  %579 = sub nsw i32 %573, %578
  store i32 %579, ptr %49, align 4, !tbaa !9
  %580 = load i32, ptr %49, align 4, !tbaa !9
  %581 = sdiv i32 %580, 2
  store i32 %581, ptr %53, align 4, !tbaa !9
  %582 = load i32, ptr %45, align 4, !tbaa !9
  %583 = add nsw i32 %582, 1
  store i32 %583, ptr %45, align 4, !tbaa !9
  br label %584

584:                                              ; preds = %561, %554
  %585 = load ptr, ptr %12, align 8, !tbaa !5
  %586 = load ptr, ptr %14, align 8, !tbaa !5
  %587 = load i32, ptr %44, align 4, !tbaa !9
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds float, ptr %586, i64 %588
  %590 = load ptr, ptr %18, align 8, !tbaa !5
  %591 = load i32, ptr %44, align 4, !tbaa !9
  %592 = load i32, ptr %25, align 4, !tbaa !9
  %593 = mul nsw i32 %591, %592
  %594 = add nsw i32 %593, 1
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds %struct.complex, ptr %590, i64 %595
  %597 = load ptr, ptr %19, align 8, !tbaa !5
  %598 = load ptr, ptr %15, align 8, !tbaa !5
  %599 = load i32, ptr %44, align 4, !tbaa !9
  %600 = load i32, ptr %53, align 4, !tbaa !9
  %601 = add nsw i32 %599, %600
  %602 = sub nsw i32 %601, 1
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds float, ptr %598, i64 %603
  %605 = load ptr, ptr %21, align 8, !tbaa !5
  %606 = load i32, ptr %36, align 4, !tbaa !9
  %607 = load i32, ptr %44, align 4, !tbaa !9
  %608 = add nsw i32 %606, %607
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds i32, ptr %605, i64 %609
  %611 = load ptr, ptr %20, align 8, !tbaa !5
  %612 = load i32, ptr %41, align 4, !tbaa !9
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds float, ptr %611, i64 %613
  %615 = load ptr, ptr %21, align 8, !tbaa !5
  %616 = load i32, ptr %38, align 4, !tbaa !9
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds i32, ptr %615, i64 %617
  %619 = load ptr, ptr %21, align 8, !tbaa !5
  %620 = load i32, ptr %50, align 4, !tbaa !9
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds i32, ptr %619, i64 %621
  %623 = load ptr, ptr %21, align 8, !tbaa !5
  %624 = load i32, ptr %35, align 4, !tbaa !9
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds i32, ptr %623, i64 %625
  %627 = load ptr, ptr %21, align 8, !tbaa !5
  %628 = load i32, ptr %47, align 4, !tbaa !9
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds i32, ptr %627, i64 %629
  %631 = load ptr, ptr %21, align 8, !tbaa !5
  %632 = load i32, ptr %42, align 4, !tbaa !9
  %633 = sext i32 %632 to i64
  %634 = getelementptr inbounds i32, ptr %631, i64 %633
  %635 = load ptr, ptr %20, align 8, !tbaa !5
  %636 = load i32, ptr %43, align 4, !tbaa !9
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds float, ptr %635, i64 %637
  %639 = load ptr, ptr %16, align 8, !tbaa !5
  %640 = load i32, ptr %44, align 4, !tbaa !9
  %641 = load i32, ptr %23, align 4, !tbaa !9
  %642 = mul nsw i32 %640, %641
  %643 = add nsw i32 %642, 1
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds %struct.complex, ptr %639, i64 %644
  %646 = load ptr, ptr %20, align 8, !tbaa !5
  %647 = load i32, ptr %37, align 4, !tbaa !9
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds float, ptr %646, i64 %648
  %650 = load ptr, ptr %21, align 8, !tbaa !5
  %651 = load i32, ptr %46, align 4, !tbaa !9
  %652 = add nsw i32 %651, 1
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds i32, ptr %650, i64 %653
  %655 = load ptr, ptr %22, align 8, !tbaa !5
  call void @claed7_(ptr noundef %49, ptr noundef %53, ptr noundef %585, ptr noundef %39, ptr noundef %48, ptr noundef %45, ptr noundef %589, ptr noundef %596, ptr noundef %597, ptr noundef %604, ptr noundef %610, ptr noundef %614, ptr noundef %618, ptr noundef %622, ptr noundef %626, ptr noundef %630, ptr noundef %634, ptr noundef %638, ptr noundef %645, ptr noundef %649, ptr noundef %654, ptr noundef %655)
  %656 = load ptr, ptr %22, align 8, !tbaa !5
  %657 = load i32, ptr %656, align 4, !tbaa !9
  %658 = icmp sgt i32 %657, 0
  br i1 %658, label %659, label %671

659:                                              ; preds = %584
  %660 = load i32, ptr %44, align 4, !tbaa !9
  %661 = load ptr, ptr %13, align 8, !tbaa !5
  %662 = load i32, ptr %661, align 4, !tbaa !9
  %663 = add nsw i32 %662, 1
  %664 = mul nsw i32 %660, %663
  %665 = load i32, ptr %44, align 4, !tbaa !9
  %666 = add nsw i32 %664, %665
  %667 = load i32, ptr %49, align 4, !tbaa !9
  %668 = add nsw i32 %666, %667
  %669 = sub nsw i32 %668, 1
  %670 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 %669, ptr %670, align 4, !tbaa !9
  store i32 1, ptr %57, align 4
  br label %740

671:                                              ; preds = %584
  %672 = load ptr, ptr %21, align 8, !tbaa !5
  %673 = load i32, ptr %32, align 4, !tbaa !9
  %674 = add nsw i32 %673, 2
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds i32, ptr %672, i64 %675
  %677 = load i32, ptr %676, align 4, !tbaa !9
  %678 = load ptr, ptr %21, align 8, !tbaa !5
  %679 = load i32, ptr %32, align 4, !tbaa !9
  %680 = sdiv i32 %679, 2
  %681 = add nsw i32 %680, 1
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds i32, ptr %678, i64 %682
  store i32 %677, ptr %683, align 4, !tbaa !9
  br label %684

684:                                              ; preds = %671
  %685 = load i32, ptr %32, align 4, !tbaa !9
  %686 = add nsw i32 %685, 2
  store i32 %686, ptr %32, align 4, !tbaa !9
  br label %547, !llvm.loop !20

687:                                              ; preds = %547
  %688 = load i32, ptr %46, align 4, !tbaa !9
  %689 = sdiv i32 %688, 2
  store i32 %689, ptr %46, align 4, !tbaa !9
  %690 = load i32, ptr %48, align 4, !tbaa !9
  %691 = add nsw i32 %690, 1
  store i32 %691, ptr %48, align 4, !tbaa !9
  br label %540

692:                                              ; preds = %540
  %693 = load ptr, ptr %13, align 8, !tbaa !5
  %694 = load i32, ptr %693, align 4, !tbaa !9
  store i32 %694, ptr %27, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %695

695:                                              ; preds = %731, %692
  %696 = load i32, ptr %32, align 4, !tbaa !9
  %697 = load i32, ptr %27, align 4, !tbaa !9
  %698 = icmp sle i32 %696, %697
  br i1 %698, label %699, label %734

699:                                              ; preds = %695
  %700 = load ptr, ptr %21, align 8, !tbaa !5
  %701 = load i32, ptr %36, align 4, !tbaa !9
  %702 = load i32, ptr %32, align 4, !tbaa !9
  %703 = add nsw i32 %701, %702
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds i32, ptr %700, i64 %704
  %706 = load i32, ptr %705, align 4, !tbaa !9
  store i32 %706, ptr %33, align 4, !tbaa !9
  %707 = load ptr, ptr %14, align 8, !tbaa !5
  %708 = load i32, ptr %33, align 4, !tbaa !9
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds float, ptr %707, i64 %709
  %711 = load float, ptr %710, align 4, !tbaa !14
  %712 = load ptr, ptr %20, align 8, !tbaa !5
  %713 = load i32, ptr %32, align 4, !tbaa !9
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds float, ptr %712, i64 %714
  store float %711, ptr %715, align 4, !tbaa !14
  %716 = load ptr, ptr %12, align 8, !tbaa !5
  %717 = load ptr, ptr %18, align 8, !tbaa !5
  %718 = load i32, ptr %33, align 4, !tbaa !9
  %719 = load i32, ptr %25, align 4, !tbaa !9
  %720 = mul nsw i32 %718, %719
  %721 = add nsw i32 %720, 1
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds %struct.complex, ptr %717, i64 %722
  %724 = load ptr, ptr %16, align 8, !tbaa !5
  %725 = load i32, ptr %32, align 4, !tbaa !9
  %726 = load i32, ptr %23, align 4, !tbaa !9
  %727 = mul nsw i32 %725, %726
  %728 = add nsw i32 %727, 1
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds %struct.complex, ptr %724, i64 %729
  call void @ccopy_(ptr noundef %716, ptr noundef %723, ptr noundef @c__1, ptr noundef %730, ptr noundef @c__1)
  br label %731

731:                                              ; preds = %699
  %732 = load i32, ptr %32, align 4, !tbaa !9
  %733 = add nsw i32 %732, 1
  store i32 %733, ptr %32, align 4, !tbaa !9
  br label %695, !llvm.loop !21

734:                                              ; preds = %695
  %735 = load ptr, ptr %13, align 8, !tbaa !5
  %736 = load ptr, ptr %20, align 8, !tbaa !5
  %737 = getelementptr inbounds float, ptr %736, i64 1
  %738 = load ptr, ptr %14, align 8, !tbaa !5
  %739 = getelementptr inbounds float, ptr %738, i64 1
  call void @scopy_(ptr noundef %735, ptr noundef %737, ptr noundef @c__1, ptr noundef %739, ptr noundef @c__1)
  store i32 1, ptr %57, align 4
  br label %740

740:                                              ; preds = %734, %659, %498, %153, %144
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  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 @xerbla_(ptr noundef, ptr noundef, i32 noundef) #2

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

; Function Attrs: nounwind
declare double @log(double noundef) #3

; Function Attrs: nounwind uwtable
declare hidden i32 @pow_ii(i32 noundef, i32 noundef) #0

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

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

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

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

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

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

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

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

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


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

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@c__9 = external hidden global i32, align 4
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i32, align 4
@c__2 = external hidden local_unnamed_addr global i32, align 4
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @claed0_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10) local_unnamed_addr #0 {
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #5
  %18 = getelementptr inbounds i8, ptr %2, i64 -4
  %19 = getelementptr inbounds i8, ptr %3, i64 -4
  %20 = load i32, ptr %5, align 4, !tbaa !5
  %narrow = xor i32 %20, -1
  %21 = sext i32 %narrow to i64
  %22 = getelementptr inbounds %struct.complex, ptr %4, i64 %21
  %23 = load i32, ptr %7, align 4, !tbaa !5
  %narrow266 = xor i32 %23, -1
  %24 = sext i32 %narrow266 to i64
  %25 = getelementptr inbounds %struct.complex, ptr %6, i64 %24
  %26 = getelementptr inbounds i8, ptr %8, i64 -4
  %27 = getelementptr inbounds i8, ptr %9, i64 -4
  store i32 0, ptr %10, align 4, !tbaa !5
  %28 = load i32, ptr %0, align 4, !tbaa !5
  %29 = load i32, ptr %1, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.smax.i32(i32 %29, i32 0)
  %30 = icmp slt i32 %28, %spec.select
  br i1 %30, label %.thread, label %31

31:                                               ; preds = %11
  %32 = icmp slt i32 %29, 0
  br i1 %32, label %.thread, label %33

33:                                               ; preds = %31
  %34 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select278 = tail call i32 @llvm.umax.i32(i32 %29, i32 1)
  %35 = icmp slt i32 %34, %spec.select278
  br i1 %35, label %.thread, label %36

36:                                               ; preds = %33
  %37 = load i32, ptr %7, align 4, !tbaa !5
  %38 = icmp slt i32 %37, %spec.select278
  br i1 %38, label %.thread, label %40

.thread:                                          ; preds = %36, %33, %31, %11
  %.sink = phi i32 [ -1, %11 ], [ -2, %31 ], [ -6, %33 ], [ -8, %36 ]
  %.neg = phi i32 [ 1, %11 ], [ 2, %31 ], [ 6, %33 ], [ 8, %36 ]
  store i32 %.sink, ptr %10, align 4, !tbaa !5
  store i32 %.neg, ptr %12, align 4, !tbaa !5
  %39 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %12, i32 noundef 6) #5
  br label %295

40:                                               ; preds = %36
  %41 = icmp eq i32 %29, 0
  br i1 %41, label %295, label %42

42:                                               ; preds = %40
  %43 = tail call i32 @ilaenv_(ptr noundef nonnull @c__9, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, i32 noundef 6, i32 noundef 1) #5
  %44 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %44, ptr %9, align 4, !tbaa !5
  %45 = icmp sgt i32 %44, %43
  br i1 %45, label %.preheader282.lr.ph, label %._crit_edge286.thread

._crit_edge286.thread:                            ; preds = %42
  store i32 0, ptr %13, align 4, !tbaa !5
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %._crit_edge297

.preheader282.lr.ph:                              ; preds = %42
  %invariant.gep = getelementptr i8, ptr %9, i64 -8
  br label %.preheader282

.preheader282:                                    ; preds = %.preheader282.lr.ph, %._crit_edge
  %.0251285 = phi i32 [ 1, %.preheader282.lr.ph ], [ %70, %._crit_edge ]
  %46 = phi i32 [ 0, %.preheader282.lr.ph ], [ %69, %._crit_edge ]
  %47 = icmp sgt i32 %.0251285, 0
  br i1 %47, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.preheader282
  %48 = zext nneg i32 %.0251285 to i64
  %xtraiter = and i64 %48, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader
  %49 = getelementptr inbounds i32, ptr %27, i64 %48
  %50 = load i32, ptr %49, align 4, !tbaa !5
  %51 = add nsw i32 %50, 1
  %gep.idx.prol = shl nuw nsw i64 %48, 3
  %gep.prol = getelementptr i8, ptr %invariant.gep, i64 %gep.idx.prol
  %52 = insertelement <2 x i32> poison, i32 %50, i64 0
  %53 = insertelement <2 x i32> %52, i32 %51, i64 1
  %54 = sdiv <2 x i32> %53, <i32 2, i32 2>
  store <2 x i32> %54, ptr %gep.prol, align 4, !tbaa !5
  %indvars.iv.next.prol = add nsw i64 %48, -1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader
  %indvars.iv.unr = phi i64 [ %48, %.lr.ph.preheader ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %55 = icmp eq i32 %.0251285, 1
  br i1 %55, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %.lr.ph ], [ %indvars.iv.unr, %.lr.ph.prol.loopexit ]
  %56 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv
  %57 = load i32, ptr %56, align 4, !tbaa !5
  %58 = add nsw i32 %57, 1
  %gep.idx = shl i64 %indvars.iv, 3
  %gep = getelementptr i8, ptr %invariant.gep, i64 %gep.idx
  %59 = insertelement <2 x i32> poison, i32 %57, i64 0
  %60 = insertelement <2 x i32> %59, i32 %58, i64 1
  %61 = sdiv <2 x i32> %60, <i32 2, i32 2>
  store <2 x i32> %61, ptr %gep, align 4, !tbaa !5
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %62 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv.next
  %63 = load i32, ptr %62, align 4, !tbaa !5
  %64 = add nsw i32 %63, 1
  %gep.idx.1 = shl i64 %indvars.iv.next, 3
  %gep.1 = getelementptr i8, ptr %invariant.gep, i64 %gep.idx.1
  %65 = insertelement <2 x i32> poison, i32 %63, i64 0
  %66 = insertelement <2 x i32> %65, i32 %64, i64 1
  %67 = sdiv <2 x i32> %66, <i32 2, i32 2>
  store <2 x i32> %67, ptr %gep.1, align 4, !tbaa !5
  %indvars.iv.next.1 = add nsw i64 %indvars.iv, -2
  %68 = icmp ugt i64 %indvars.iv.next, 1
  br i1 %68, label %.lr.ph, label %._crit_edge, !llvm.loop !9

._crit_edge:                                      ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %.preheader282
  %69 = add nuw nsw i32 %46, 1
  %70 = shl i32 %.0251285, 1
  %71 = sext i32 %70 to i64
  %72 = getelementptr inbounds i32, ptr %27, i64 %71
  %73 = load i32, ptr %72, align 4, !tbaa !5
  %74 = icmp sgt i32 %73, %43
  br i1 %74, label %.preheader282, label %._crit_edge286

._crit_edge286:                                   ; preds = %._crit_edge
  store i32 %69, ptr %13, align 4, !tbaa !5
  store i32 %70, ptr %12, align 4, !tbaa !5
  %.not267288 = icmp slt i32 %70, 2
  br i1 %.not267288, label %._crit_edge297, label %.lr.ph291.preheader

.lr.ph291.preheader:                              ; preds = %._crit_edge286
  %load_initial = load i32, ptr %9, align 4
  %75 = zext nneg i32 %70 to i64
  %76 = add nsw i64 %75, -1
  %77 = add nsw i64 %75, -2
  %xtraiter449 = and i64 %76, 3
  %78 = icmp ult i64 %77, 3
  br i1 %78, label %.lr.ph291.epil.preheader, label %.lr.ph291.preheader.new

.lr.ph291.preheader.new:                          ; preds = %.lr.ph291.preheader
  %unroll_iter = and i64 %76, -4
  %invariant.gep460 = getelementptr i8, ptr %27, i64 8
  %invariant.gep462 = getelementptr i8, ptr %27, i64 12
  br label %.lr.ph291

.lr.ph291:                                        ; preds = %.lr.ph291, %.lr.ph291.preheader.new
  %store_forwarded = phi i32 [ %load_initial, %.lr.ph291.preheader.new ], [ %88, %.lr.ph291 ]
  %indvars.iv350 = phi i64 [ 2, %.lr.ph291.preheader.new ], [ %indvars.iv.next351.3, %.lr.ph291 ]
  %niter = phi i64 [ 0, %.lr.ph291.preheader.new ], [ %niter.next.3, %.lr.ph291 ]
  %79 = getelementptr i32, ptr %27, i64 %indvars.iv350
  %80 = load i32, ptr %79, align 4, !tbaa !5
  %81 = add nsw i32 %80, %store_forwarded
  store i32 %81, ptr %79, align 4, !tbaa !5
  %82 = getelementptr i32, ptr %9, i64 %indvars.iv350
  %83 = load i32, ptr %82, align 4, !tbaa !5
  %84 = add nsw i32 %83, %81
  store i32 %84, ptr %82, align 4, !tbaa !5
  %gep461 = getelementptr i32, ptr %invariant.gep460, i64 %indvars.iv350
  %85 = load i32, ptr %gep461, align 4, !tbaa !5
  %86 = add nsw i32 %85, %84
  store i32 %86, ptr %gep461, align 4, !tbaa !5
  %gep463 = getelementptr i32, ptr %invariant.gep462, i64 %indvars.iv350
  %87 = load i32, ptr %gep463, align 4, !tbaa !5
  %88 = add nsw i32 %87, %86
  store i32 %88, ptr %gep463, align 4, !tbaa !5
  %indvars.iv.next351.3 = add nuw nsw i64 %indvars.iv350, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.lr.ph291.epil.preheader, label %.lr.ph291, !llvm.loop !11

.lr.ph291.epil.preheader:                         ; preds = %.lr.ph291.preheader, %.lr.ph291
  %store_forwarded.unr = phi i32 [ %load_initial, %.lr.ph291.preheader ], [ %88, %.lr.ph291 ]
  %indvars.iv350.unr = phi i64 [ 2, %.lr.ph291.preheader ], [ %indvars.iv.next351.3, %.lr.ph291 ]
  br label %.lr.ph291.epil

.lr.ph291.epil:                                   ; preds = %.lr.ph291.epil, %.lr.ph291.epil.preheader
  %store_forwarded.epil = phi i32 [ %store_forwarded.unr, %.lr.ph291.epil.preheader ], [ %91, %.lr.ph291.epil ]
  %indvars.iv350.epil = phi i64 [ %indvars.iv350.unr, %.lr.ph291.epil.preheader ], [ %indvars.iv.next351.epil, %.lr.ph291.epil ]
  %epil.iter = phi i64 [ 0, %.lr.ph291.epil.preheader ], [ %epil.iter.next, %.lr.ph291.epil ]
  %89 = getelementptr i32, ptr %27, i64 %indvars.iv350.epil
  %90 = load i32, ptr %89, align 4, !tbaa !5
  %91 = add nsw i32 %90, %store_forwarded.epil
  store i32 %91, ptr %89, align 4, !tbaa !5
  %indvars.iv.next351.epil = add nuw nsw i64 %indvars.iv350.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter449
  br i1 %epil.iter.cmp.not, label %.lr.ph296.preheader, label %.lr.ph291.epil, !llvm.loop !12

.lr.ph296.preheader:                              ; preds = %.lr.ph291.epil
  %wide.trip.count356 = zext nneg i32 %70 to i64
  br label %.lr.ph296

.lr.ph296:                                        ; preds = %.lr.ph296.preheader, %.lr.ph296
  %indvars.iv353 = phi i64 [ 1, %.lr.ph296.preheader ], [ %indvars.iv.next354, %.lr.ph296 ]
  %92 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv353
  %93 = load i32, ptr %92, align 4, !tbaa !5
  %94 = sext i32 %93 to i64
  %95 = getelementptr inbounds float, ptr %19, i64 %94
  %96 = load float, ptr %95, align 4, !tbaa !14
  %97 = fcmp oge float %96, 0.000000e+00
  %98 = fneg float %96
  %99 = select i1 %97, float %96, float %98
  %100 = getelementptr inbounds float, ptr %18, i64 %94
  %101 = load float, ptr %100, align 4, !tbaa !14
  %102 = fsub float %101, %99
  store float %102, ptr %100, align 4, !tbaa !14
  %103 = load float, ptr %95, align 4, !tbaa !14
  %104 = fcmp oge float %103, 0.000000e+00
  %105 = fneg float %103
  %106 = select i1 %104, float %103, float %105
  %107 = getelementptr i8, ptr %100, i64 4
  %108 = load float, ptr %107, align 4, !tbaa !14
  %109 = fsub float %108, %106
  store float %109, ptr %107, align 4, !tbaa !14
  %indvars.iv.next354 = add nuw nsw i64 %indvars.iv353, 1
  %exitcond357.not = icmp eq i64 %indvars.iv.next354, %wide.trip.count356
  br i1 %exitcond357.not, label %._crit_edge297, label %.lr.ph296, !llvm.loop !16

._crit_edge297:                                   ; preds = %.lr.ph296, %._crit_edge286, %._crit_edge286.thread
  %.not268.not293392 = phi i1 [ false, %._crit_edge286.thread ], [ false, %._crit_edge286 ], [ true, %.lr.ph296 ]
  %.0251.lcssa388391 = phi i32 [ 1, %._crit_edge286.thread ], [ %70, %._crit_edge286 ], [ %70, %.lr.ph296 ]
  %110 = add nsw i32 %.0251.lcssa388391, -1
  %111 = load i32, ptr %1, align 4, !tbaa !5
  %112 = shl i32 %111, 2
  %113 = or disjoint i32 %112, 3
  %114 = sitofp i32 %111 to float
  %115 = fpext float %114 to double
  %116 = tail call double @log(double noundef %115) #5
  %117 = fdiv double %116, 0x3FE62E42FEFA39EF
  %118 = fptrunc double %117 to float
  %119 = fptosi float %118 to i32
  %120 = load i32, ptr @c__2, align 4, !tbaa !5
  %121 = tail call i32 @pow_ii(i32 noundef %120, i32 noundef %119)
  %122 = load i32, ptr %1, align 4, !tbaa !5
  %123 = icmp slt i32 %121, %122
  %124 = zext i1 %123 to i32
  %spec.select280 = add nsw i32 %124, %119
  %125 = load i32, ptr @c__2, align 4, !tbaa !5
  %126 = tail call i32 @pow_ii(i32 noundef %125, i32 noundef %spec.select280)
  %127 = load i32, ptr %1, align 4, !tbaa !5
  %128 = icmp slt i32 %126, %127
  %129 = zext i1 %128 to i32
  %.1 = add nsw i32 %spec.select280, %129
  %130 = add i32 %112, 4
  %131 = add i32 %130, %127
  %132 = mul nsw i32 %.1, %127
  %133 = add nsw i32 %132, %131
  %134 = add nsw i32 %133, %132
  %135 = add i32 %127, 2
  %136 = add i32 %135, %134
  %137 = add nsw i32 %136, %132
  %138 = shl i32 %127, 1
  %139 = mul nsw i32 %.1, %138
  %140 = or disjoint i32 %139, 1
  %141 = mul nsw i32 %127, %127
  %142 = add nuw i32 %141, 1
  %143 = add i32 %142, %140
  %.not269298 = icmp slt i32 %.0251.lcssa388391, 0
  br i1 %.not269298, label %._crit_edge302.thread, label %.lr.ph301.preheader

._crit_edge302.thread:                            ; preds = %._crit_edge297
  %144 = sext i32 %134 to i64
  %145 = getelementptr inbounds i32, ptr %27, i64 %144
  store i32 1, ptr %145, align 4, !tbaa !5
  br label %.preheader

.lr.ph301.preheader:                              ; preds = %._crit_edge297
  %146 = sext i32 %131 to i64
  %147 = sext i32 %136 to i64
  %148 = add nuw nsw i32 %.0251.lcssa388391, 1
  %wide.trip.count361 = zext nneg i32 %148 to i64
  %invariant.gep405 = getelementptr i32, ptr %27, i64 %146
  %invariant.gep407 = getelementptr i32, ptr %27, i64 %147
  %min.iters.check = icmp ult i32 %.0251.lcssa388391, 11
  br i1 %min.iters.check, label %.lr.ph301.preheader446, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph301.preheader
  %149 = sub nsw i64 %147, %146
  %150 = and i64 %149, 4611686018427387896
  %diff.check = icmp eq i64 %150, 0
  br i1 %diff.check, label %.lr.ph301.preheader446, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %wide.trip.count361, 2147483640
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %151 = getelementptr i32, ptr %invariant.gep405, i64 %index
  %152 = getelementptr i8, ptr %151, i64 16
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %151, align 4, !tbaa !5
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %152, align 4, !tbaa !5
  %153 = getelementptr i32, ptr %invariant.gep407, i64 %index
  %154 = getelementptr i8, ptr %153, i64 16
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %153, align 4, !tbaa !5
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %154, align 4, !tbaa !5
  %index.next = add nuw i64 %index, 8
  %155 = icmp eq i64 %index.next, %n.vec
  br i1 %155, label %middle.block, label %vector.body, !llvm.loop !17

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count361
  br i1 %cmp.n, label %._crit_edge302, label %.lr.ph301.preheader446

.lr.ph301.preheader446:                           ; preds = %middle.block, %vector.memcheck, %.lr.ph301.preheader
  %indvars.iv358.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph301.preheader ], [ %n.vec, %middle.block ]
  %156 = zext nneg i32 %.0251.lcssa388391 to i64
  %157 = add nuw nsw i64 %156, 1
  %158 = sub nsw i64 %156, %indvars.iv358.ph
  %xtraiter451 = and i64 %157, 3
  %lcmp.mod452.not = icmp eq i64 %xtraiter451, 0
  br i1 %lcmp.mod452.not, label %.lr.ph301.prol.loopexit, label %.lr.ph301.prol

.lr.ph301.prol:                                   ; preds = %.lr.ph301.preheader446, %.lr.ph301.prol
  %indvars.iv358.prol = phi i64 [ %indvars.iv.next359.prol, %.lr.ph301.prol ], [ %indvars.iv358.ph, %.lr.ph301.preheader446 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph301.prol ], [ 0, %.lr.ph301.preheader446 ]
  %gep406.prol = getelementptr i32, ptr %invariant.gep405, i64 %indvars.iv358.prol
  store i32 1, ptr %gep406.prol, align 4, !tbaa !5
  %gep408.prol = getelementptr i32, ptr %invariant.gep407, i64 %indvars.iv358.prol
  store i32 1, ptr %gep408.prol, align 4, !tbaa !5
  %indvars.iv.next359.prol = add nuw nsw i64 %indvars.iv358.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter451
  br i1 %prol.iter.cmp.not, label %.lr.ph301.prol.loopexit, label %.lr.ph301.prol, !llvm.loop !20

.lr.ph301.prol.loopexit:                          ; preds = %.lr.ph301.prol, %.lr.ph301.preheader446
  %indvars.iv358.unr = phi i64 [ %indvars.iv358.ph, %.lr.ph301.preheader446 ], [ %indvars.iv.next359.prol, %.lr.ph301.prol ]
  %159 = icmp ult i64 %158, 3
  br i1 %159, label %._crit_edge302, label %.lr.ph301

.lr.ph301:                                        ; preds = %.lr.ph301.prol.loopexit, %.lr.ph301
  %indvars.iv358 = phi i64 [ %indvars.iv.next359.3, %.lr.ph301 ], [ %indvars.iv358.unr, %.lr.ph301.prol.loopexit ]
  %gep406 = getelementptr i32, ptr %invariant.gep405, i64 %indvars.iv358
  store i32 1, ptr %gep406, align 4, !tbaa !5
  %gep408 = getelementptr i32, ptr %invariant.gep407, i64 %indvars.iv358
  store i32 1, ptr %gep408, align 4, !tbaa !5
  %indvars.iv.next359 = add nuw nsw i64 %indvars.iv358, 1
  %gep406.1 = getelementptr i32, ptr %invariant.gep405, i64 %indvars.iv.next359
  store i32 1, ptr %gep406.1, align 4, !tbaa !5
  %gep408.1 = getelementptr i32, ptr %invariant.gep407, i64 %indvars.iv.next359
  store i32 1, ptr %gep408.1, align 4, !tbaa !5
  %indvars.iv.next359.1 = add nuw nsw i64 %indvars.iv358, 2
  %gep406.2 = getelementptr i32, ptr %invariant.gep405, i64 %indvars.iv.next359.1
  store i32 1, ptr %gep406.2, align 4, !tbaa !5
  %gep408.2 = getelementptr i32, ptr %invariant.gep407, i64 %indvars.iv.next359.1
  store i32 1, ptr %gep408.2, align 4, !tbaa !5
  %indvars.iv.next359.2 = add nuw nsw i64 %indvars.iv358, 3
  %gep406.3 = getelementptr i32, ptr %invariant.gep405, i64 %indvars.iv.next359.2
  store i32 1, ptr %gep406.3, align 4, !tbaa !5
  %gep408.3 = getelementptr i32, ptr %invariant.gep407, i64 %indvars.iv.next359.2
  store i32 1, ptr %gep408.3, align 4, !tbaa !5
  %indvars.iv.next359.3 = add nuw nsw i64 %indvars.iv358, 4
  %exitcond362.not.3 = icmp eq i64 %indvars.iv.next359.3, %wide.trip.count361
  br i1 %exitcond362.not.3, label %._crit_edge302, label %.lr.ph301, !llvm.loop !21

._crit_edge302:                                   ; preds = %.lr.ph301.prol.loopexit, %.lr.ph301, %middle.block
  %160 = sext i32 %134 to i64
  %161 = getelementptr inbounds i32, ptr %27, i64 %160
  store i32 1, ptr %161, align 4, !tbaa !5
  %invariant.gep308 = getelementptr i8, ptr %22, i64 8
  %invariant.gep310 = getelementptr i8, ptr %25, i64 8
  %.not270312 = icmp eq i32 %.0251.lcssa388391, 0
  br i1 %.not270312, label %.preheader, label %.lr.ph316

.lr.ph316:                                        ; preds = %._crit_edge302
  %162 = sext i32 %143 to i64
  %163 = getelementptr inbounds float, ptr %26, i64 %162
  %164 = sext i32 %113 to i64
  %invariant.gep411 = getelementptr i32, ptr %27, i64 %160
  %invariant.gep409 = getelementptr i32, ptr %27, i64 %164
  %165 = sext i32 %110 to i64
  br label %190

.loopexit:                                        ; preds = %.lr.ph307, %middle.block426, %225
  %.not270.not = icmp slt i64 %indvars.iv367, %165
  br i1 %.not270.not, label %190, label %.preheader, !llvm.loop !22

.preheader:                                       ; preds = %.loopexit, %._crit_edge302.thread, %._crit_edge302
  %166 = phi ptr [ %145, %._crit_edge302.thread ], [ %161, %._crit_edge302 ], [ %161, %.loopexit ]
  store i32 1, ptr %15, align 4, !tbaa !5
  br i1 %.not268.not293392, label %.lr.ph333, label %._crit_edge334

.lr.ph333:                                        ; preds = %.preheader
  %167 = getelementptr i8, ptr %22, i64 8
  %168 = getelementptr i8, ptr %25, i64 8
  %invariant.gep319 = getelementptr i8, ptr %3, i64 -8
  %169 = getelementptr inbounds i8, ptr %9, i64 4
  %170 = sext i32 %140 to i64
  %171 = getelementptr inbounds float, ptr %26, i64 %170
  %172 = sext i32 %131 to i64
  %173 = getelementptr inbounds i32, ptr %27, i64 %172
  %174 = sext i32 %133 to i64
  %175 = getelementptr inbounds i32, ptr %27, i64 %174
  %176 = sext i32 %136 to i64
  %177 = getelementptr inbounds i32, ptr %27, i64 %176
  %178 = sext i32 %137 to i64
  %179 = getelementptr inbounds i32, ptr %27, i64 %178
  %180 = sext i32 %143 to i64
  %181 = getelementptr inbounds float, ptr %26, i64 %180
  %182 = sext i32 %23 to i64
  %gep318.peel = getelementptr %struct.complex, ptr %168, i64 %182
  %invariant.gep415 = getelementptr i8, ptr %3, i64 -4
  %183 = sext i32 %112 to i64
  %184 = getelementptr i32, ptr %27, i64 %183
  %185 = getelementptr i8, ptr %184, i64 16
  %186 = sext i32 %20 to i64
  %gep322.peel = getelementptr %struct.complex, ptr %167, i64 %186
  %187 = getelementptr inbounds i8, ptr %9, i64 4
  %invariant.gep413 = getelementptr inbounds i8, ptr %9, i64 4
  %188 = getelementptr i8, ptr %22, i64 8
  %189 = getelementptr i8, ptr %25, i64 8
  br label %235

190:                                              ; preds = %.lr.ph316, %.loopexit
  %indvars.iv367 = phi i64 [ 0, %.lr.ph316 ], [ %indvars.iv.next368, %.loopexit ]
  %191 = icmp eq i64 %indvars.iv367, 0
  br i1 %191, label %192, label %194

192:                                              ; preds = %190
  %193 = load i32, ptr %9, align 4, !tbaa !5
  br label %201

194:                                              ; preds = %190
  %195 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv367
  %196 = load i32, ptr %195, align 4, !tbaa !5
  %197 = add nsw i32 %196, 1
  %198 = getelementptr inbounds i8, ptr %195, i64 4
  %199 = load i32, ptr %198, align 4, !tbaa !5
  %200 = sub nsw i32 %199, %196
  br label %201

201:                                              ; preds = %194, %192
  %storemerge275 = phi i32 [ %200, %194 ], [ %193, %192 ]
  %.0253 = phi i32 [ %197, %194 ], [ 1, %192 ]
  store i32 %storemerge275, ptr %16, align 4, !tbaa !5
  %gep412 = getelementptr i32, ptr %invariant.gep411, i64 %indvars.iv367
  %202 = load i32, ptr %gep412, align 4, !tbaa !5
  %203 = add nsw i32 %202, %139
  %204 = sext i32 %.0253 to i64
  %205 = getelementptr inbounds float, ptr %18, i64 %204
  %206 = getelementptr inbounds float, ptr %19, i64 %204
  %207 = sext i32 %203 to i64
  %208 = getelementptr inbounds float, ptr %26, i64 %207
  call void @ssteqr_(ptr noundef nonnull @.str.2, ptr noundef nonnull %16, ptr noundef nonnull %205, ptr noundef nonnull %206, ptr noundef nonnull %208, ptr noundef nonnull %16, ptr noundef %8, ptr noundef nonnull %10) #5
  %209 = mul nsw i32 %.0253, %20
  %210 = sext i32 %209 to i64
  %gep309 = getelementptr %struct.complex, ptr %invariant.gep308, i64 %210
  %211 = mul nsw i32 %.0253, %23
  %212 = sext i32 %211 to i64
  %gep311 = getelementptr %struct.complex, ptr %invariant.gep310, i64 %212
  call void @clacrm_(ptr noundef nonnull %0, ptr noundef nonnull %16, ptr noundef %gep309, ptr noundef nonnull %5, ptr noundef nonnull %208, ptr noundef nonnull %16, ptr noundef %gep311, ptr noundef nonnull %7, ptr noundef nonnull %163) #5
  %213 = load i32, ptr %16, align 4, !tbaa !5
  %214 = load i32, ptr %gep412, align 4, !tbaa !5
  %215 = mul nsw i32 %213, %213
  %216 = add nsw i32 %214, %215
  %217 = getelementptr i8, ptr %gep412, i64 4
  store i32 %216, ptr %217, align 4, !tbaa !5
  %indvars.iv.next368 = add nuw nsw i64 %indvars.iv367, 1
  %218 = load i32, ptr %10, align 4, !tbaa !5
  %219 = icmp sgt i32 %218, 0
  br i1 %219, label %220, label %225

220:                                              ; preds = %201
  %221 = load i32, ptr %1, align 4, !tbaa !5
  %.0253277 = add i32 %221, 2
  %222 = mul i32 %.0253277, %.0253
  %223 = add i32 %213, -1
  %224 = add i32 %223, %222
  store i32 %224, ptr %10, align 4, !tbaa !5
  br label %295

225:                                              ; preds = %201
  %226 = getelementptr i32, ptr %9, i64 %indvars.iv367
  %227 = load i32, ptr %226, align 4, !tbaa !5
  %.not276303 = icmp sgt i32 %.0253, %227
  br i1 %.not276303, label %.loopexit, label %.lr.ph307.preheader

.lr.ph307.preheader:                              ; preds = %225
  %228 = add i32 %227, 1
  %229 = sub i32 %227, %.0253
  %230 = zext i32 %229 to i64
  %231 = add nuw nsw i64 %230, 1
  %min.iters.check428 = icmp ult i32 %229, 7
  br i1 %min.iters.check428, label %.lr.ph307.preheader442, label %vector.ph429

vector.ph429:                                     ; preds = %.lr.ph307.preheader
  %n.vec431 = and i64 %231, 8589934584
  %ind.end = add nsw i64 %n.vec431, %204
  %.cast = trunc i64 %n.vec431 to i32
  %ind.end433 = or disjoint i32 %.cast, 1
  %invariant.gep464 = getelementptr i32, ptr %invariant.gep409, i64 %204
  br label %vector.body435

vector.body435:                                   ; preds = %vector.body435, %vector.ph429
  %index436 = phi i64 [ 0, %vector.ph429 ], [ %index.next438, %vector.body435 ]
  %vec.ind = phi <4 x i32> [ <i32 1, i32 2, i32 3, i32 4>, %vector.ph429 ], [ %vec.ind.next, %vector.body435 ]
  %step.add = add <4 x i32> %vec.ind, <i32 4, i32 4, i32 4, i32 4>
  %gep465 = getelementptr i32, ptr %invariant.gep464, i64 %index436
  %232 = getelementptr i8, ptr %gep465, i64 16
  store <4 x i32> %vec.ind, ptr %gep465, align 4, !tbaa !5
  store <4 x i32> %step.add, ptr %232, align 4, !tbaa !5
  %index.next438 = add nuw i64 %index436, 8
  %vec.ind.next = add <4 x i32> %vec.ind, <i32 8, i32 8, i32 8, i32 8>
  %233 = icmp eq i64 %index.next438, %n.vec431
  br i1 %233, label %middle.block426, label %vector.body435, !llvm.loop !23

middle.block426:                                  ; preds = %vector.body435
  %cmp.n439 = icmp eq i64 %231, %n.vec431
  br i1 %cmp.n439, label %.loopexit, label %.lr.ph307.preheader442

.lr.ph307.preheader442:                           ; preds = %middle.block426, %.lr.ph307.preheader
  %indvars.iv363.ph = phi i64 [ %204, %.lr.ph307.preheader ], [ %ind.end, %middle.block426 ]
  %.0261304.ph = phi i32 [ 1, %.lr.ph307.preheader ], [ %ind.end433, %middle.block426 ]
  br label %.lr.ph307

.lr.ph307:                                        ; preds = %.lr.ph307.preheader442, %.lr.ph307
  %indvars.iv363 = phi i64 [ %indvars.iv.next364, %.lr.ph307 ], [ %indvars.iv363.ph, %.lr.ph307.preheader442 ]
  %.0261304 = phi i32 [ %234, %.lr.ph307 ], [ %.0261304.ph, %.lr.ph307.preheader442 ]
  %gep410 = getelementptr i32, ptr %invariant.gep409, i64 %indvars.iv363
  store i32 %.0261304, ptr %gep410, align 4, !tbaa !5
  %234 = add nuw nsw i32 %.0261304, 1
  %indvars.iv.next364 = add nsw i64 %indvars.iv363, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next364 to i32
  %exitcond366.not = icmp eq i32 %228, %lftr.wideiv
  br i1 %exitcond366.not, label %.loopexit, label %.lr.ph307, !llvm.loop !24

235:                                              ; preds = %.lr.ph333, %._crit_edge331
  %236 = phi i32 [ 1, %.lr.ph333 ], [ %279, %._crit_edge331 ]
  %.1252332 = phi i32 [ %.0251.lcssa388391, %.lr.ph333 ], [ %278, %._crit_edge331 ]
  %237 = add nsw i32 %.1252332, -2
  store i32 %237, ptr %12, align 4, !tbaa !5
  %.not272327 = icmp slt i32 %.1252332, 2
  br i1 %.not272327, label %._crit_edge331, label %238

238:                                              ; preds = %235
  %239 = zext nneg i32 %.1252332 to i64
  %gep324 = getelementptr inbounds i32, ptr %9, i64 %239
  %240 = load i32, ptr %9, align 4, !tbaa !5
  %241 = load i32, ptr %169, align 4, !tbaa !5
  store i32 %241, ptr %16, align 4
  store i32 %240, ptr %17, align 4
  store i32 0, ptr %14, align 4, !tbaa !5
  %242 = sext i32 %240 to i64
  %gep416 = getelementptr float, ptr %invariant.gep415, i64 %242
  call void @claed7_(ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %0, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef nonnull %14, ptr noundef nonnull %2, ptr noundef %gep318.peel, ptr noundef nonnull %7, ptr noundef %gep416, ptr noundef nonnull %185, ptr noundef nonnull %171, ptr noundef nonnull %166, ptr noundef nonnull %173, ptr noundef nonnull %175, ptr noundef nonnull %177, ptr noundef nonnull %179, ptr noundef %8, ptr noundef %gep322.peel, ptr noundef nonnull %181, ptr noundef nonnull %gep324, ptr noundef nonnull %10) #5
  %243 = load i32, ptr %10, align 4, !tbaa !5
  %244 = icmp sgt i32 %243, 0
  br i1 %244, label %.loopexit376, label %245

245:                                              ; preds = %238
  %246 = load i32, ptr %187, align 4, !tbaa !5
  store i32 %246, ptr %9, align 4, !tbaa !5
  %.not272.peel = icmp ult i32 %.1252332, 4
  br i1 %.not272.peel, label %._crit_edge331.loopexit, label %.peel.next

.peel.next:                                       ; preds = %245, %272
  %247 = phi i32 [ %274, %272 ], [ %246, %245 ]
  %indvars.iv372 = phi i64 [ %indvars.iv.next373, %272 ], [ 2, %245 ]
  %248 = add nsw i32 %247, 1
  %249 = load i32, ptr %14, align 4, !tbaa !5
  %250 = add nsw i32 %249, 1
  %gep414 = getelementptr inbounds i32, ptr %invariant.gep413, i64 %indvars.iv372
  %251 = load i32, ptr %gep414, align 4, !tbaa !5
  %252 = sub nsw i32 %251, %247
  %253 = sdiv i32 %252, 2
  store i32 %252, ptr %16, align 4
  store i32 %253, ptr %17, align 4
  store i32 %250, ptr %14, align 4, !tbaa !5
  %254 = sext i32 %248 to i64
  %255 = getelementptr inbounds float, ptr %18, i64 %254
  %256 = mul nsw i32 %248, %23
  %257 = sext i32 %256 to i64
  %gep318 = getelementptr %struct.complex, ptr %189, i64 %257
  %258 = add nsw i32 %253, %248
  %259 = sext i32 %258 to i64
  %gep320 = getelementptr float, ptr %invariant.gep319, i64 %259
  %260 = add nsw i32 %248, %113
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds i32, ptr %27, i64 %261
  %263 = mul nsw i32 %248, %20
  %264 = sext i32 %263 to i64
  %gep322 = getelementptr %struct.complex, ptr %188, i64 %264
  call void @claed7_(ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %0, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef nonnull %14, ptr noundef nonnull %255, ptr noundef %gep318, ptr noundef nonnull %7, ptr noundef %gep320, ptr noundef nonnull %262, ptr noundef nonnull %171, ptr noundef nonnull %166, ptr noundef nonnull %173, ptr noundef nonnull %175, ptr noundef nonnull %177, ptr noundef nonnull %179, ptr noundef %8, ptr noundef %gep322, ptr noundef nonnull %181, ptr noundef nonnull %gep324, ptr noundef nonnull %10) #5
  %265 = load i32, ptr %10, align 4, !tbaa !5
  %266 = icmp sgt i32 %265, 0
  br i1 %266, label %.loopexit376, label %272

.loopexit376:                                     ; preds = %238, %.peel.next
  %.1254.lcssa = phi i32 [ %248, %.peel.next ], [ 1, %238 ]
  %267 = load i32, ptr %1, align 4, !tbaa !5
  %.1254274 = add i32 %267, 2
  %268 = mul i32 %.1254274, %.1254.lcssa
  %269 = load i32, ptr %16, align 4, !tbaa !5
  %270 = add i32 %269, -1
  %271 = add i32 %270, %268
  store i32 %271, ptr %10, align 4, !tbaa !5
  br label %295

272:                                              ; preds = %.peel.next
  %indvars.iv.next373 = add nuw nsw i64 %indvars.iv372, 2
  %273 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv.next373
  %274 = load i32, ptr %273, align 4, !tbaa !5
  %275 = lshr exact i64 %indvars.iv372, 1
  %gep326 = getelementptr inbounds i32, ptr %9, i64 %275
  store i32 %274, ptr %gep326, align 4, !tbaa !5
  %276 = trunc nuw i64 %indvars.iv.next373 to i32
  %.not272 = icmp slt i32 %237, %276
  br i1 %.not272, label %._crit_edge331.loopexit, label %.peel.next, !llvm.loop !25

._crit_edge331.loopexit:                          ; preds = %272, %245
  %.pre = load i32, ptr %15, align 4, !tbaa !5
  br label %._crit_edge331

._crit_edge331:                                   ; preds = %._crit_edge331.loopexit, %235
  %277 = phi i32 [ %.pre, %._crit_edge331.loopexit ], [ %236, %235 ]
  %278 = lshr i32 %.1252332, 1
  %279 = add nsw i32 %277, 1
  store i32 %279, ptr %15, align 4, !tbaa !5
  %280 = icmp ugt i32 %.1252332, 3
  br i1 %280, label %235, label %._crit_edge334

._crit_edge334:                                   ; preds = %._crit_edge331, %.preheader
  %281 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %281, ptr %12, align 4, !tbaa !5
  %.not271339 = icmp slt i32 %281, 1
  br i1 %.not271339, label %._crit_edge343, label %.lr.ph342.preheader

.lr.ph342.preheader:                              ; preds = %._crit_edge334
  %282 = sext i32 %113 to i64
  %283 = sext i32 %20 to i64
  %invariant.gep417 = getelementptr i32, ptr %27, i64 %282
  %284 = zext nneg i32 %281 to i64
  %285 = getelementptr i8, ptr %22, i64 8
  %286 = getelementptr i8, ptr %25, i64 8
  br label %.lr.ph342

.lr.ph342:                                        ; preds = %.lr.ph342.preheader, %.lr.ph342
  %indvars.iv379 = phi i64 [ 1, %.lr.ph342.preheader ], [ %indvars.iv.next380, %.lr.ph342 ]
  %gep418 = getelementptr i32, ptr %invariant.gep417, i64 %indvars.iv379
  %287 = load i32, ptr %gep418, align 4, !tbaa !5
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds float, ptr %18, i64 %288
  %290 = load float, ptr %289, align 4, !tbaa !14
  %291 = getelementptr inbounds float, ptr %26, i64 %indvars.iv379
  store float %290, ptr %291, align 4, !tbaa !14
  %292 = mul nsw i32 %287, %23
  %293 = sext i32 %292 to i64
  %gep336 = getelementptr %struct.complex, ptr %286, i64 %293
  %294 = mul nsw i64 %indvars.iv379, %283
  %gep338 = getelementptr %struct.complex, ptr %285, i64 %294
  call void @ccopy_(ptr noundef nonnull %0, ptr noundef %gep336, ptr noundef nonnull @c__1, ptr noundef %gep338, ptr noundef nonnull @c__1) #5
  %indvars.iv.next380 = add nuw nsw i64 %indvars.iv379, 1
  %.not271.not = icmp ult i64 %indvars.iv379, %284
  br i1 %.not271.not, label %.lr.ph342, label %._crit_edge343, !llvm.loop !27

._crit_edge343:                                   ; preds = %.lr.ph342, %._crit_edge334
  call void @scopy_(ptr noundef nonnull %1, ptr noundef %8, ptr noundef nonnull @c__1, ptr noundef %2, ptr noundef nonnull @c__1) #5
  br label %295

295:                                              ; preds = %40, %._crit_edge343, %.loopexit376, %220, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #5
  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 @xerbla_(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @log(double noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare hidden i32 @pow_ii(i32 noundef, i32 noundef) local_unnamed_addr #0

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

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

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

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

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

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

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

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

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

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

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


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