; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (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 i64, align 8
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8

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

89:                                               ; preds = %11
  br label %93

90:                                               ; preds = %11
  %91 = load ptr, ptr %14, align 8, !tbaa !5
  %92 = load i64, ptr %91, align 8, !tbaa !9
  br label %93

93:                                               ; preds = %90, %89
  %94 = phi i64 [ 0, %89 ], [ %92, %90 ]
  %95 = icmp slt i64 %85, %94
  br i1 %95, label %96, label %98

96:                                               ; preds = %93
  %97 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 -1, ptr %97, align 8, !tbaa !9
  br label %137

98:                                               ; preds = %93
  %99 = load ptr, ptr %14, align 8, !tbaa !5
  %100 = load i64, ptr %99, align 8, !tbaa !9
  %101 = icmp slt i64 %100, 0
  br i1 %101, label %102, label %104

102:                                              ; preds = %98
  %103 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 -2, ptr %103, align 8, !tbaa !9
  br label %136

104:                                              ; preds = %98
  %105 = load ptr, ptr %18, align 8, !tbaa !5
  %106 = load i64, ptr %105, align 8, !tbaa !9
  %107 = load ptr, ptr %14, align 8, !tbaa !5
  %108 = load i64, ptr %107, align 8, !tbaa !9
  %109 = icmp sge i64 1, %108
  br i1 %109, label %110, label %111

110:                                              ; preds = %104
  br label %114

111:                                              ; preds = %104
  %112 = load ptr, ptr %14, align 8, !tbaa !5
  %113 = load i64, ptr %112, align 8, !tbaa !9
  br label %114

114:                                              ; preds = %111, %110
  %115 = phi i64 [ 1, %110 ], [ %113, %111 ]
  %116 = icmp slt i64 %106, %115
  br i1 %116, label %117, label %119

117:                                              ; preds = %114
  %118 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 -6, ptr %118, align 8, !tbaa !9
  br label %135

119:                                              ; preds = %114
  %120 = load ptr, ptr %20, align 8, !tbaa !5
  %121 = load i64, ptr %120, align 8, !tbaa !9
  %122 = load ptr, ptr %14, align 8, !tbaa !5
  %123 = load i64, ptr %122, align 8, !tbaa !9
  %124 = icmp sge i64 1, %123
  br i1 %124, label %125, label %126

125:                                              ; preds = %119
  br label %129

126:                                              ; preds = %119
  %127 = load ptr, ptr %14, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  br label %129

129:                                              ; preds = %126, %125
  %130 = phi i64 [ 1, %125 ], [ %128, %126 ]
  %131 = icmp slt i64 %121, %130
  br i1 %131, label %132, label %134

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

134:                                              ; preds = %132, %129
  br label %135

135:                                              ; preds = %134, %117
  br label %136

136:                                              ; preds = %135, %102
  br label %137

137:                                              ; preds = %136, %96
  %138 = load ptr, ptr %23, align 8, !tbaa !5
  %139 = load i64, ptr %138, align 8, !tbaa !9
  %140 = icmp ne i64 %139, 0
  br i1 %140, label %141, label %146

141:                                              ; preds = %137
  %142 = load ptr, ptr %23, align 8, !tbaa !5
  %143 = load i64, ptr %142, align 8, !tbaa !9
  %144 = sub nsw i64 0, %143
  store i64 %144, ptr %28, align 8, !tbaa !9
  %145 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %28)
  store i32 0, ptr %12, align 4
  store i32 1, ptr %58, align 4
  br label %690

146:                                              ; preds = %137
  %147 = load ptr, ptr %14, align 8, !tbaa !5
  %148 = load i64, ptr %147, align 8, !tbaa !9
  %149 = icmp eq i64 %148, 0
  br i1 %149, label %150, label %151

150:                                              ; preds = %146
  store i32 0, ptr %12, align 4
  store i32 1, ptr %58, align 4
  br label %690

151:                                              ; preds = %146
  %152 = call i64 @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)
  store i64 %152, ptr %57, align 8, !tbaa !9
  %153 = load ptr, ptr %14, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  %155 = load ptr, ptr %22, align 8, !tbaa !5
  %156 = getelementptr inbounds i64, ptr %155, i64 1
  store i64 %154, ptr %156, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  store i64 0, ptr %47, align 8, !tbaa !9
  br label %157

157:                                              ; preds = %193, %151
  %158 = load ptr, ptr %22, align 8, !tbaa !5
  %159 = load i64, ptr %52, align 8, !tbaa !9
  %160 = getelementptr inbounds i64, ptr %158, i64 %159
  %161 = load i64, ptr %160, align 8, !tbaa !9
  %162 = load i64, ptr %57, align 8, !tbaa !9
  %163 = icmp sgt i64 %161, %162
  br i1 %163, label %164, label %198

164:                                              ; preds = %157
  %165 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %165, ptr %32, align 8, !tbaa !9
  br label %166

166:                                              ; preds = %190, %164
  %167 = load i64, ptr %32, align 8, !tbaa !9
  %168 = icmp sge i64 %167, 1
  br i1 %168, label %169, label %193

169:                                              ; preds = %166
  %170 = load ptr, ptr %22, align 8, !tbaa !5
  %171 = load i64, ptr %32, align 8, !tbaa !9
  %172 = getelementptr inbounds i64, ptr %170, i64 %171
  %173 = load i64, ptr %172, align 8, !tbaa !9
  %174 = add nsw i64 %173, 1
  %175 = sdiv i64 %174, 2
  %176 = load ptr, ptr %22, align 8, !tbaa !5
  %177 = load i64, ptr %32, align 8, !tbaa !9
  %178 = mul nsw i64 %177, 2
  %179 = getelementptr inbounds i64, ptr %176, i64 %178
  store i64 %175, ptr %179, align 8, !tbaa !9
  %180 = load ptr, ptr %22, align 8, !tbaa !5
  %181 = load i64, ptr %32, align 8, !tbaa !9
  %182 = getelementptr inbounds i64, ptr %180, i64 %181
  %183 = load i64, ptr %182, align 8, !tbaa !9
  %184 = sdiv i64 %183, 2
  %185 = load ptr, ptr %22, align 8, !tbaa !5
  %186 = load i64, ptr %32, align 8, !tbaa !9
  %187 = shl i64 %186, 1
  %188 = sub nsw i64 %187, 1
  %189 = getelementptr inbounds i64, ptr %185, i64 %188
  store i64 %184, ptr %189, align 8, !tbaa !9
  br label %190

190:                                              ; preds = %169
  %191 = load i64, ptr %32, align 8, !tbaa !9
  %192 = add nsw i64 %191, -1
  store i64 %192, ptr %32, align 8, !tbaa !9
  br label %166, !llvm.loop !11

193:                                              ; preds = %166
  %194 = load i64, ptr %47, align 8, !tbaa !9
  %195 = add nsw i64 %194, 1
  store i64 %195, ptr %47, align 8, !tbaa !9
  %196 = load i64, ptr %52, align 8, !tbaa !9
  %197 = shl i64 %196, 1
  store i64 %197, ptr %52, align 8, !tbaa !9
  br label %157

198:                                              ; preds = %157
  %199 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %199, ptr %28, align 8, !tbaa !9
  store i64 2, ptr %32, align 8, !tbaa !9
  br label %200

200:                                              ; preds = %215, %198
  %201 = load i64, ptr %32, align 8, !tbaa !9
  %202 = load i64, ptr %28, align 8, !tbaa !9
  %203 = icmp sle i64 %201, %202
  br i1 %203, label %204, label %218

204:                                              ; preds = %200
  %205 = load ptr, ptr %22, align 8, !tbaa !5
  %206 = load i64, ptr %32, align 8, !tbaa !9
  %207 = sub nsw i64 %206, 1
  %208 = getelementptr inbounds i64, ptr %205, i64 %207
  %209 = load i64, ptr %208, align 8, !tbaa !9
  %210 = load ptr, ptr %22, align 8, !tbaa !5
  %211 = load i64, ptr %32, align 8, !tbaa !9
  %212 = getelementptr inbounds i64, ptr %210, i64 %211
  %213 = load i64, ptr %212, align 8, !tbaa !9
  %214 = add nsw i64 %213, %209
  store i64 %214, ptr %212, align 8, !tbaa !9
  br label %215

215:                                              ; preds = %204
  %216 = load i64, ptr %32, align 8, !tbaa !9
  %217 = add nsw i64 %216, 1
  store i64 %217, ptr %32, align 8, !tbaa !9
  br label %200, !llvm.loop !13

218:                                              ; preds = %200
  %219 = load i64, ptr %52, align 8, !tbaa !9
  %220 = sub nsw i64 %219, 1
  store i64 %220, ptr %39, align 8, !tbaa !9
  %221 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %221, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %31, align 8, !tbaa !9
  br label %222

222:                                              ; preds = %276, %218
  %223 = load i64, ptr %31, align 8, !tbaa !9
  %224 = load i64, ptr %28, align 8, !tbaa !9
  %225 = icmp sle i64 %223, %224
  br i1 %225, label %226, label %279

226:                                              ; preds = %222
  %227 = load ptr, ptr %22, align 8, !tbaa !5
  %228 = load i64, ptr %31, align 8, !tbaa !9
  %229 = getelementptr inbounds i64, ptr %227, i64 %228
  %230 = load i64, ptr %229, align 8, !tbaa !9
  %231 = add nsw i64 %230, 1
  store i64 %231, ptr %50, align 8, !tbaa !9
  %232 = load i64, ptr %50, align 8, !tbaa !9
  %233 = sub nsw i64 %232, 1
  store i64 %233, ptr %38, align 8, !tbaa !9
  %234 = load ptr, ptr %16, align 8, !tbaa !5
  %235 = load i64, ptr %38, align 8, !tbaa !9
  %236 = getelementptr inbounds float, ptr %234, i64 %235
  %237 = load float, ptr %236, align 4, !tbaa !14
  store float %237, ptr %30, align 4, !tbaa !14
  %238 = load float, ptr %30, align 4, !tbaa !14
  %239 = fcmp oge float %238, 0.000000e+00
  br i1 %239, label %240, label %242

240:                                              ; preds = %226
  %241 = load float, ptr %30, align 4, !tbaa !14
  br label %245

242:                                              ; preds = %226
  %243 = load float, ptr %30, align 4, !tbaa !14
  %244 = fneg float %243
  br label %245

245:                                              ; preds = %242, %240
  %246 = phi float [ %241, %240 ], [ %244, %242 ]
  %247 = fpext float %246 to double
  %248 = load ptr, ptr %15, align 8, !tbaa !5
  %249 = load i64, ptr %38, align 8, !tbaa !9
  %250 = getelementptr inbounds float, ptr %248, i64 %249
  %251 = load float, ptr %250, align 4, !tbaa !14
  %252 = fpext float %251 to double
  %253 = fsub double %252, %247
  %254 = fptrunc double %253 to float
  store float %254, ptr %250, align 4, !tbaa !14
  %255 = load ptr, ptr %16, align 8, !tbaa !5
  %256 = load i64, ptr %38, align 8, !tbaa !9
  %257 = getelementptr inbounds float, ptr %255, i64 %256
  %258 = load float, ptr %257, align 4, !tbaa !14
  store float %258, ptr %30, align 4, !tbaa !14
  %259 = load float, ptr %30, align 4, !tbaa !14
  %260 = fcmp oge float %259, 0.000000e+00
  br i1 %260, label %261, label %263

261:                                              ; preds = %245
  %262 = load float, ptr %30, align 4, !tbaa !14
  br label %266

263:                                              ; preds = %245
  %264 = load float, ptr %30, align 4, !tbaa !14
  %265 = fneg float %264
  br label %266

266:                                              ; preds = %263, %261
  %267 = phi float [ %262, %261 ], [ %265, %263 ]
  %268 = fpext float %267 to double
  %269 = load ptr, ptr %15, align 8, !tbaa !5
  %270 = load i64, ptr %50, align 8, !tbaa !9
  %271 = getelementptr inbounds float, ptr %269, i64 %270
  %272 = load float, ptr %271, align 4, !tbaa !14
  %273 = fpext float %272 to double
  %274 = fsub double %273, %268
  %275 = fptrunc double %274 to float
  store float %275, ptr %271, align 4, !tbaa !14
  br label %276

276:                                              ; preds = %266
  %277 = load i64, ptr %31, align 8, !tbaa !9
  %278 = add nsw i64 %277, 1
  store i64 %278, ptr %31, align 8, !tbaa !9
  br label %222, !llvm.loop !16

279:                                              ; preds = %222
  %280 = load ptr, ptr %14, align 8, !tbaa !5
  %281 = load i64, ptr %280, align 8, !tbaa !9
  %282 = shl i64 %281, 2
  %283 = add nsw i64 %282, 3
  store i64 %283, ptr %44, align 8, !tbaa !9
  %284 = load ptr, ptr %14, align 8, !tbaa !5
  %285 = load i64, ptr %284, align 8, !tbaa !9
  %286 = sitofp i64 %285 to float
  %287 = fpext float %286 to double
  %288 = call double @log(double noundef %287) #4
  %289 = call double @log(double noundef 2.000000e+00) #4
  %290 = fdiv double %288, %289
  %291 = fptrunc double %290 to float
  store float %291, ptr %41, align 4, !tbaa !14
  %292 = load float, ptr %41, align 4, !tbaa !14
  %293 = fptosi float %292 to i64
  store i64 %293, ptr %36, align 8, !tbaa !9
  %294 = call i64 @pow_ii(ptr noundef @c__2, ptr noundef %36)
  %295 = load ptr, ptr %14, align 8, !tbaa !5
  %296 = load i64, ptr %295, align 8, !tbaa !9
  %297 = icmp slt i64 %294, %296
  br i1 %297, label %298, label %301

298:                                              ; preds = %279
  %299 = load i64, ptr %36, align 8, !tbaa !9
  %300 = add nsw i64 %299, 1
  store i64 %300, ptr %36, align 8, !tbaa !9
  br label %301

301:                                              ; preds = %298, %279
  %302 = call i64 @pow_ii(ptr noundef @c__2, ptr noundef %36)
  %303 = load ptr, ptr %14, align 8, !tbaa !5
  %304 = load i64, ptr %303, align 8, !tbaa !9
  %305 = icmp slt i64 %302, %304
  br i1 %305, label %306, label %309

306:                                              ; preds = %301
  %307 = load i64, ptr %36, align 8, !tbaa !9
  %308 = add nsw i64 %307, 1
  store i64 %308, ptr %36, align 8, !tbaa !9
  br label %309

309:                                              ; preds = %306, %301
  %310 = load i64, ptr %44, align 8, !tbaa !9
  %311 = load ptr, ptr %14, align 8, !tbaa !5
  %312 = load i64, ptr %311, align 8, !tbaa !9
  %313 = add nsw i64 %310, %312
  %314 = add nsw i64 %313, 1
  store i64 %314, ptr %56, align 8, !tbaa !9
  %315 = load i64, ptr %56, align 8, !tbaa !9
  %316 = load ptr, ptr %14, align 8, !tbaa !5
  %317 = load i64, ptr %316, align 8, !tbaa !9
  %318 = load i64, ptr %36, align 8, !tbaa !9
  %319 = mul nsw i64 %317, %318
  %320 = add nsw i64 %315, %319
  store i64 %320, ptr %43, align 8, !tbaa !9
  %321 = load i64, ptr %43, align 8, !tbaa !9
  %322 = load ptr, ptr %14, align 8, !tbaa !5
  %323 = load i64, ptr %322, align 8, !tbaa !9
  %324 = load i64, ptr %36, align 8, !tbaa !9
  %325 = mul nsw i64 %323, %324
  %326 = add nsw i64 %321, %325
  store i64 %326, ptr %46, align 8, !tbaa !9
  %327 = load i64, ptr %46, align 8, !tbaa !9
  %328 = load ptr, ptr %14, align 8, !tbaa !5
  %329 = load i64, ptr %328, align 8, !tbaa !9
  %330 = add nsw i64 %327, %329
  %331 = add nsw i64 %330, 2
  store i64 %331, ptr %53, align 8, !tbaa !9
  %332 = load i64, ptr %53, align 8, !tbaa !9
  %333 = load ptr, ptr %14, align 8, !tbaa !5
  %334 = load i64, ptr %333, align 8, !tbaa !9
  %335 = load i64, ptr %36, align 8, !tbaa !9
  %336 = mul nsw i64 %334, %335
  %337 = add nsw i64 %332, %336
  store i64 %337, ptr %48, align 8, !tbaa !9
  store i64 1, ptr %49, align 8, !tbaa !9
  %338 = load i64, ptr %49, align 8, !tbaa !9
  %339 = load ptr, ptr %14, align 8, !tbaa !5
  %340 = load i64, ptr %339, align 8, !tbaa !9
  %341 = shl i64 %340, 1
  %342 = load i64, ptr %36, align 8, !tbaa !9
  %343 = mul nsw i64 %341, %342
  %344 = add nsw i64 %338, %343
  store i64 %344, ptr %35, align 8, !tbaa !9
  %345 = load ptr, ptr %14, align 8, !tbaa !5
  %346 = load i64, ptr %345, align 8, !tbaa !9
  store i64 %346, ptr %28, align 8, !tbaa !9
  %347 = load i64, ptr %35, align 8, !tbaa !9
  %348 = load i64, ptr %28, align 8, !tbaa !9
  %349 = load i64, ptr %28, align 8, !tbaa !9
  %350 = mul nsw i64 %348, %349
  %351 = add nsw i64 %347, %350
  %352 = add nsw i64 %351, 1
  store i64 %352, ptr %45, align 8, !tbaa !9
  %353 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %353, ptr %28, align 8, !tbaa !9
  store i64 0, ptr %31, align 8, !tbaa !9
  br label %354

354:                                              ; preds = %369, %309
  %355 = load i64, ptr %31, align 8, !tbaa !9
  %356 = load i64, ptr %28, align 8, !tbaa !9
  %357 = icmp sle i64 %355, %356
  br i1 %357, label %358, label %372

358:                                              ; preds = %354
  %359 = load ptr, ptr %22, align 8, !tbaa !5
  %360 = load i64, ptr %56, align 8, !tbaa !9
  %361 = load i64, ptr %31, align 8, !tbaa !9
  %362 = add nsw i64 %360, %361
  %363 = getelementptr inbounds i64, ptr %359, i64 %362
  store i64 1, ptr %363, align 8, !tbaa !9
  %364 = load ptr, ptr %22, align 8, !tbaa !5
  %365 = load i64, ptr %53, align 8, !tbaa !9
  %366 = load i64, ptr %31, align 8, !tbaa !9
  %367 = add nsw i64 %365, %366
  %368 = getelementptr inbounds i64, ptr %364, i64 %367
  store i64 1, ptr %368, align 8, !tbaa !9
  br label %369

369:                                              ; preds = %358
  %370 = load i64, ptr %31, align 8, !tbaa !9
  %371 = add nsw i64 %370, 1
  store i64 %371, ptr %31, align 8, !tbaa !9
  br label %354, !llvm.loop !17

372:                                              ; preds = %354
  %373 = load ptr, ptr %22, align 8, !tbaa !5
  %374 = load i64, ptr %46, align 8, !tbaa !9
  %375 = getelementptr inbounds i64, ptr %373, i64 %374
  store i64 1, ptr %375, align 8, !tbaa !9
  store i64 0, ptr %42, align 8, !tbaa !9
  %376 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %376, ptr %28, align 8, !tbaa !9
  store i64 0, ptr %31, align 8, !tbaa !9
  br label %377

377:                                              ; preds = %507, %372
  %378 = load i64, ptr %31, align 8, !tbaa !9
  %379 = load i64, ptr %28, align 8, !tbaa !9
  %380 = icmp sle i64 %378, %379
  br i1 %380, label %381, label %510

381:                                              ; preds = %377
  %382 = load i64, ptr %31, align 8, !tbaa !9
  %383 = icmp eq i64 %382, 0
  br i1 %383, label %384, label %388

384:                                              ; preds = %381
  store i64 1, ptr %50, align 8, !tbaa !9
  %385 = load ptr, ptr %22, align 8, !tbaa !5
  %386 = getelementptr inbounds i64, ptr %385, i64 1
  %387 = load i64, ptr %386, align 8, !tbaa !9
  store i64 %387, ptr %55, align 8, !tbaa !9
  br label %404

388:                                              ; preds = %381
  %389 = load ptr, ptr %22, align 8, !tbaa !5
  %390 = load i64, ptr %31, align 8, !tbaa !9
  %391 = getelementptr inbounds i64, ptr %389, i64 %390
  %392 = load i64, ptr %391, align 8, !tbaa !9
  %393 = add nsw i64 %392, 1
  store i64 %393, ptr %50, align 8, !tbaa !9
  %394 = load ptr, ptr %22, align 8, !tbaa !5
  %395 = load i64, ptr %31, align 8, !tbaa !9
  %396 = add nsw i64 %395, 1
  %397 = getelementptr inbounds i64, ptr %394, i64 %396
  %398 = load i64, ptr %397, align 8, !tbaa !9
  %399 = load ptr, ptr %22, align 8, !tbaa !5
  %400 = load i64, ptr %31, align 8, !tbaa !9
  %401 = getelementptr inbounds i64, ptr %399, i64 %400
  %402 = load i64, ptr %401, align 8, !tbaa !9
  %403 = sub nsw i64 %398, %402
  store i64 %403, ptr %55, align 8, !tbaa !9
  br label %404

404:                                              ; preds = %388, %384
  %405 = load i64, ptr %35, align 8, !tbaa !9
  %406 = sub nsw i64 %405, 1
  %407 = load ptr, ptr %22, align 8, !tbaa !5
  %408 = load i64, ptr %46, align 8, !tbaa !9
  %409 = load i64, ptr %42, align 8, !tbaa !9
  %410 = add nsw i64 %408, %409
  %411 = getelementptr inbounds i64, ptr %407, i64 %410
  %412 = load i64, ptr %411, align 8, !tbaa !9
  %413 = add nsw i64 %406, %412
  store i64 %413, ptr %34, align 8, !tbaa !9
  %414 = load ptr, ptr %15, align 8, !tbaa !5
  %415 = load i64, ptr %50, align 8, !tbaa !9
  %416 = getelementptr inbounds float, ptr %414, i64 %415
  %417 = load ptr, ptr %16, align 8, !tbaa !5
  %418 = load i64, ptr %50, align 8, !tbaa !9
  %419 = getelementptr inbounds float, ptr %417, i64 %418
  %420 = load ptr, ptr %21, align 8, !tbaa !5
  %421 = load i64, ptr %34, align 8, !tbaa !9
  %422 = getelementptr inbounds float, ptr %420, i64 %421
  %423 = load ptr, ptr %21, align 8, !tbaa !5
  %424 = getelementptr inbounds float, ptr %423, i64 1
  %425 = load ptr, ptr %23, align 8, !tbaa !5
  %426 = call i32 @ssteqr_(ptr noundef @.str.2, ptr noundef %55, ptr noundef %416, ptr noundef %419, ptr noundef %422, ptr noundef %55, ptr noundef %424, ptr noundef %425)
  %427 = load ptr, ptr %13, align 8, !tbaa !5
  %428 = load ptr, ptr %17, align 8, !tbaa !5
  %429 = load i64, ptr %50, align 8, !tbaa !9
  %430 = load i64, ptr %24, align 8, !tbaa !9
  %431 = mul nsw i64 %429, %430
  %432 = add nsw i64 %431, 1
  %433 = getelementptr inbounds %struct.complex, ptr %428, i64 %432
  %434 = load ptr, ptr %18, align 8, !tbaa !5
  %435 = load ptr, ptr %21, align 8, !tbaa !5
  %436 = load i64, ptr %34, align 8, !tbaa !9
  %437 = getelementptr inbounds float, ptr %435, i64 %436
  %438 = load ptr, ptr %19, align 8, !tbaa !5
  %439 = load i64, ptr %50, align 8, !tbaa !9
  %440 = load i64, ptr %26, align 8, !tbaa !9
  %441 = mul nsw i64 %439, %440
  %442 = add nsw i64 %441, 1
  %443 = getelementptr inbounds %struct.complex, ptr %438, i64 %442
  %444 = load ptr, ptr %20, align 8, !tbaa !5
  %445 = load ptr, ptr %21, align 8, !tbaa !5
  %446 = load i64, ptr %45, align 8, !tbaa !9
  %447 = getelementptr inbounds float, ptr %445, i64 %446
  %448 = call i32 @clacrm_(ptr noundef %427, ptr noundef %55, ptr noundef %433, ptr noundef %434, ptr noundef %437, ptr noundef %55, ptr noundef %443, ptr noundef %444, ptr noundef %447)
  %449 = load i64, ptr %55, align 8, !tbaa !9
  store i64 %449, ptr %29, align 8, !tbaa !9
  %450 = load ptr, ptr %22, align 8, !tbaa !5
  %451 = load i64, ptr %46, align 8, !tbaa !9
  %452 = load i64, ptr %42, align 8, !tbaa !9
  %453 = add nsw i64 %451, %452
  %454 = getelementptr inbounds i64, ptr %450, i64 %453
  %455 = load i64, ptr %454, align 8, !tbaa !9
  %456 = load i64, ptr %29, align 8, !tbaa !9
  %457 = load i64, ptr %29, align 8, !tbaa !9
  %458 = mul nsw i64 %456, %457
  %459 = add nsw i64 %455, %458
  %460 = load ptr, ptr %22, align 8, !tbaa !5
  %461 = load i64, ptr %46, align 8, !tbaa !9
  %462 = load i64, ptr %42, align 8, !tbaa !9
  %463 = add nsw i64 %461, %462
  %464 = add nsw i64 %463, 1
  %465 = getelementptr inbounds i64, ptr %460, i64 %464
  store i64 %459, ptr %465, align 8, !tbaa !9
  %466 = load i64, ptr %42, align 8, !tbaa !9
  %467 = add nsw i64 %466, 1
  store i64 %467, ptr %42, align 8, !tbaa !9
  %468 = load ptr, ptr %23, align 8, !tbaa !5
  %469 = load i64, ptr %468, align 8, !tbaa !9
  %470 = icmp sgt i64 %469, 0
  br i1 %470, label %471, label %483

471:                                              ; preds = %404
  %472 = load i64, ptr %50, align 8, !tbaa !9
  %473 = load ptr, ptr %14, align 8, !tbaa !5
  %474 = load i64, ptr %473, align 8, !tbaa !9
  %475 = add nsw i64 %474, 1
  %476 = mul nsw i64 %472, %475
  %477 = load i64, ptr %50, align 8, !tbaa !9
  %478 = add nsw i64 %476, %477
  %479 = load i64, ptr %55, align 8, !tbaa !9
  %480 = add nsw i64 %478, %479
  %481 = sub nsw i64 %480, 1
  %482 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 %481, ptr %482, align 8, !tbaa !9
  store i32 0, ptr %12, align 4
  store i32 1, ptr %58, align 4
  br label %690

483:                                              ; preds = %404
  store i64 1, ptr %33, align 8, !tbaa !9
  %484 = load ptr, ptr %22, align 8, !tbaa !5
  %485 = load i64, ptr %31, align 8, !tbaa !9
  %486 = add nsw i64 %485, 1
  %487 = getelementptr inbounds i64, ptr %484, i64 %486
  %488 = load i64, ptr %487, align 8, !tbaa !9
  store i64 %488, ptr %29, align 8, !tbaa !9
  %489 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %489, ptr %32, align 8, !tbaa !9
  br label %490

490:                                              ; preds = %503, %483
  %491 = load i64, ptr %32, align 8, !tbaa !9
  %492 = load i64, ptr %29, align 8, !tbaa !9
  %493 = icmp sle i64 %491, %492
  br i1 %493, label %494, label %506

494:                                              ; preds = %490
  %495 = load i64, ptr %33, align 8, !tbaa !9
  %496 = load ptr, ptr %22, align 8, !tbaa !5
  %497 = load i64, ptr %44, align 8, !tbaa !9
  %498 = load i64, ptr %32, align 8, !tbaa !9
  %499 = add nsw i64 %497, %498
  %500 = getelementptr inbounds i64, ptr %496, i64 %499
  store i64 %495, ptr %500, align 8, !tbaa !9
  %501 = load i64, ptr %33, align 8, !tbaa !9
  %502 = add nsw i64 %501, 1
  store i64 %502, ptr %33, align 8, !tbaa !9
  br label %503

503:                                              ; preds = %494
  %504 = load i64, ptr %32, align 8, !tbaa !9
  %505 = add nsw i64 %504, 1
  store i64 %505, ptr %32, align 8, !tbaa !9
  br label %490, !llvm.loop !18

506:                                              ; preds = %490
  br label %507

507:                                              ; preds = %506
  %508 = load i64, ptr %31, align 8, !tbaa !9
  %509 = add nsw i64 %508, 1
  store i64 %509, ptr %31, align 8, !tbaa !9
  br label %377, !llvm.loop !19

510:                                              ; preds = %377
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %511

511:                                              ; preds = %640, %510
  %512 = load i64, ptr %52, align 8, !tbaa !9
  %513 = icmp sgt i64 %512, 1
  br i1 %513, label %514, label %645

514:                                              ; preds = %511
  %515 = load i64, ptr %52, align 8, !tbaa !9
  %516 = sub nsw i64 %515, 2
  store i64 %516, ptr %40, align 8, !tbaa !9
  %517 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %517, ptr %28, align 8, !tbaa !9
  store i64 0, ptr %31, align 8, !tbaa !9
  br label %518

518:                                              ; preds = %637, %514
  %519 = load i64, ptr %31, align 8, !tbaa !9
  %520 = load i64, ptr %28, align 8, !tbaa !9
  %521 = icmp sle i64 %519, %520
  br i1 %521, label %522, label %640

522:                                              ; preds = %518
  %523 = load i64, ptr %31, align 8, !tbaa !9
  %524 = icmp eq i64 %523, 0
  br i1 %524, label %525, label %532

525:                                              ; preds = %522
  store i64 1, ptr %50, align 8, !tbaa !9
  %526 = load ptr, ptr %22, align 8, !tbaa !5
  %527 = getelementptr inbounds i64, ptr %526, i64 2
  %528 = load i64, ptr %527, align 8, !tbaa !9
  store i64 %528, ptr %55, align 8, !tbaa !9
  %529 = load ptr, ptr %22, align 8, !tbaa !5
  %530 = getelementptr inbounds i64, ptr %529, i64 1
  %531 = load i64, ptr %530, align 8, !tbaa !9
  store i64 %531, ptr %37, align 8, !tbaa !9
  store i64 0, ptr %51, align 8, !tbaa !9
  br label %552

532:                                              ; preds = %522
  %533 = load ptr, ptr %22, align 8, !tbaa !5
  %534 = load i64, ptr %31, align 8, !tbaa !9
  %535 = getelementptr inbounds i64, ptr %533, i64 %534
  %536 = load i64, ptr %535, align 8, !tbaa !9
  %537 = add nsw i64 %536, 1
  store i64 %537, ptr %50, align 8, !tbaa !9
  %538 = load ptr, ptr %22, align 8, !tbaa !5
  %539 = load i64, ptr %31, align 8, !tbaa !9
  %540 = add nsw i64 %539, 2
  %541 = getelementptr inbounds i64, ptr %538, i64 %540
  %542 = load i64, ptr %541, align 8, !tbaa !9
  %543 = load ptr, ptr %22, align 8, !tbaa !5
  %544 = load i64, ptr %31, align 8, !tbaa !9
  %545 = getelementptr inbounds i64, ptr %543, i64 %544
  %546 = load i64, ptr %545, align 8, !tbaa !9
  %547 = sub nsw i64 %542, %546
  store i64 %547, ptr %55, align 8, !tbaa !9
  %548 = load i64, ptr %55, align 8, !tbaa !9
  %549 = sdiv i64 %548, 2
  store i64 %549, ptr %37, align 8, !tbaa !9
  %550 = load i64, ptr %51, align 8, !tbaa !9
  %551 = add nsw i64 %550, 1
  store i64 %551, ptr %51, align 8, !tbaa !9
  br label %552

552:                                              ; preds = %532, %525
  %553 = load ptr, ptr %13, align 8, !tbaa !5
  %554 = load ptr, ptr %15, align 8, !tbaa !5
  %555 = load i64, ptr %50, align 8, !tbaa !9
  %556 = getelementptr inbounds float, ptr %554, i64 %555
  %557 = load ptr, ptr %19, align 8, !tbaa !5
  %558 = load i64, ptr %50, align 8, !tbaa !9
  %559 = load i64, ptr %26, align 8, !tbaa !9
  %560 = mul nsw i64 %558, %559
  %561 = add nsw i64 %560, 1
  %562 = getelementptr inbounds %struct.complex, ptr %557, i64 %561
  %563 = load ptr, ptr %20, align 8, !tbaa !5
  %564 = load ptr, ptr %16, align 8, !tbaa !5
  %565 = load i64, ptr %50, align 8, !tbaa !9
  %566 = load i64, ptr %37, align 8, !tbaa !9
  %567 = add nsw i64 %565, %566
  %568 = sub nsw i64 %567, 1
  %569 = getelementptr inbounds float, ptr %564, i64 %568
  %570 = load ptr, ptr %22, align 8, !tbaa !5
  %571 = load i64, ptr %44, align 8, !tbaa !9
  %572 = load i64, ptr %50, align 8, !tbaa !9
  %573 = add nsw i64 %571, %572
  %574 = getelementptr inbounds i64, ptr %570, i64 %573
  %575 = load ptr, ptr %21, align 8, !tbaa !5
  %576 = load i64, ptr %35, align 8, !tbaa !9
  %577 = getelementptr inbounds float, ptr %575, i64 %576
  %578 = load ptr, ptr %22, align 8, !tbaa !5
  %579 = load i64, ptr %46, align 8, !tbaa !9
  %580 = getelementptr inbounds i64, ptr %578, i64 %579
  %581 = load ptr, ptr %22, align 8, !tbaa !5
  %582 = load i64, ptr %56, align 8, !tbaa !9
  %583 = getelementptr inbounds i64, ptr %581, i64 %582
  %584 = load ptr, ptr %22, align 8, !tbaa !5
  %585 = load i64, ptr %43, align 8, !tbaa !9
  %586 = getelementptr inbounds i64, ptr %584, i64 %585
  %587 = load ptr, ptr %22, align 8, !tbaa !5
  %588 = load i64, ptr %53, align 8, !tbaa !9
  %589 = getelementptr inbounds i64, ptr %587, i64 %588
  %590 = load ptr, ptr %22, align 8, !tbaa !5
  %591 = load i64, ptr %48, align 8, !tbaa !9
  %592 = getelementptr inbounds i64, ptr %590, i64 %591
  %593 = load ptr, ptr %21, align 8, !tbaa !5
  %594 = load i64, ptr %49, align 8, !tbaa !9
  %595 = getelementptr inbounds float, ptr %593, i64 %594
  %596 = load ptr, ptr %17, align 8, !tbaa !5
  %597 = load i64, ptr %50, align 8, !tbaa !9
  %598 = load i64, ptr %24, align 8, !tbaa !9
  %599 = mul nsw i64 %597, %598
  %600 = add nsw i64 %599, 1
  %601 = getelementptr inbounds %struct.complex, ptr %596, i64 %600
  %602 = load ptr, ptr %21, align 8, !tbaa !5
  %603 = load i64, ptr %45, align 8, !tbaa !9
  %604 = getelementptr inbounds float, ptr %602, i64 %603
  %605 = load ptr, ptr %22, align 8, !tbaa !5
  %606 = load i64, ptr %52, align 8, !tbaa !9
  %607 = add nsw i64 %606, 1
  %608 = getelementptr inbounds i64, ptr %605, i64 %607
  %609 = load ptr, ptr %23, align 8, !tbaa !5
  %610 = call i32 @claed7_(ptr noundef %55, ptr noundef %37, ptr noundef %553, ptr noundef %47, ptr noundef %54, ptr noundef %51, ptr noundef %556, ptr noundef %562, ptr noundef %563, ptr noundef %569, ptr noundef %574, ptr noundef %577, ptr noundef %580, ptr noundef %583, ptr noundef %586, ptr noundef %589, ptr noundef %592, ptr noundef %595, ptr noundef %601, ptr noundef %604, ptr noundef %608, ptr noundef %609)
  %611 = load ptr, ptr %23, align 8, !tbaa !5
  %612 = load i64, ptr %611, align 8, !tbaa !9
  %613 = icmp sgt i64 %612, 0
  br i1 %613, label %614, label %626

614:                                              ; preds = %552
  %615 = load i64, ptr %50, align 8, !tbaa !9
  %616 = load ptr, ptr %14, align 8, !tbaa !5
  %617 = load i64, ptr %616, align 8, !tbaa !9
  %618 = add nsw i64 %617, 1
  %619 = mul nsw i64 %615, %618
  %620 = load i64, ptr %50, align 8, !tbaa !9
  %621 = add nsw i64 %619, %620
  %622 = load i64, ptr %55, align 8, !tbaa !9
  %623 = add nsw i64 %621, %622
  %624 = sub nsw i64 %623, 1
  %625 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 %624, ptr %625, align 8, !tbaa !9
  store i32 0, ptr %12, align 4
  store i32 1, ptr %58, align 4
  br label %690

626:                                              ; preds = %552
  %627 = load ptr, ptr %22, align 8, !tbaa !5
  %628 = load i64, ptr %31, align 8, !tbaa !9
  %629 = add nsw i64 %628, 2
  %630 = getelementptr inbounds i64, ptr %627, i64 %629
  %631 = load i64, ptr %630, align 8, !tbaa !9
  %632 = load ptr, ptr %22, align 8, !tbaa !5
  %633 = load i64, ptr %31, align 8, !tbaa !9
  %634 = sdiv i64 %633, 2
  %635 = add nsw i64 %634, 1
  %636 = getelementptr inbounds i64, ptr %632, i64 %635
  store i64 %631, ptr %636, align 8, !tbaa !9
  br label %637

637:                                              ; preds = %626
  %638 = load i64, ptr %31, align 8, !tbaa !9
  %639 = add nsw i64 %638, 2
  store i64 %639, ptr %31, align 8, !tbaa !9
  br label %518, !llvm.loop !20

640:                                              ; preds = %518
  %641 = load i64, ptr %52, align 8, !tbaa !9
  %642 = sdiv i64 %641, 2
  store i64 %642, ptr %52, align 8, !tbaa !9
  %643 = load i64, ptr %54, align 8, !tbaa !9
  %644 = add nsw i64 %643, 1
  store i64 %644, ptr %54, align 8, !tbaa !9
  br label %511

645:                                              ; preds = %511
  %646 = load ptr, ptr %14, align 8, !tbaa !5
  %647 = load i64, ptr %646, align 8, !tbaa !9
  store i64 %647, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %31, align 8, !tbaa !9
  br label %648

648:                                              ; preds = %680, %645
  %649 = load i64, ptr %31, align 8, !tbaa !9
  %650 = load i64, ptr %28, align 8, !tbaa !9
  %651 = icmp sle i64 %649, %650
  br i1 %651, label %652, label %683

652:                                              ; preds = %648
  %653 = load ptr, ptr %22, align 8, !tbaa !5
  %654 = load i64, ptr %44, align 8, !tbaa !9
  %655 = load i64, ptr %31, align 8, !tbaa !9
  %656 = add nsw i64 %654, %655
  %657 = getelementptr inbounds i64, ptr %653, i64 %656
  %658 = load i64, ptr %657, align 8, !tbaa !9
  store i64 %658, ptr %32, align 8, !tbaa !9
  %659 = load ptr, ptr %15, align 8, !tbaa !5
  %660 = load i64, ptr %32, align 8, !tbaa !9
  %661 = getelementptr inbounds float, ptr %659, i64 %660
  %662 = load float, ptr %661, align 4, !tbaa !14
  %663 = load ptr, ptr %21, align 8, !tbaa !5
  %664 = load i64, ptr %31, align 8, !tbaa !9
  %665 = getelementptr inbounds float, ptr %663, i64 %664
  store float %662, ptr %665, align 4, !tbaa !14
  %666 = load ptr, ptr %13, align 8, !tbaa !5
  %667 = load ptr, ptr %19, align 8, !tbaa !5
  %668 = load i64, ptr %32, align 8, !tbaa !9
  %669 = load i64, ptr %26, align 8, !tbaa !9
  %670 = mul nsw i64 %668, %669
  %671 = add nsw i64 %670, 1
  %672 = getelementptr inbounds %struct.complex, ptr %667, i64 %671
  %673 = load ptr, ptr %17, align 8, !tbaa !5
  %674 = load i64, ptr %31, align 8, !tbaa !9
  %675 = load i64, ptr %24, align 8, !tbaa !9
  %676 = mul nsw i64 %674, %675
  %677 = add nsw i64 %676, 1
  %678 = getelementptr inbounds %struct.complex, ptr %673, i64 %677
  %679 = call i32 @f2c_ccopy(ptr noundef %666, ptr noundef %672, ptr noundef @c__1, ptr noundef %678, ptr noundef @c__1)
  br label %680

680:                                              ; preds = %652
  %681 = load i64, ptr %31, align 8, !tbaa !9
  %682 = add nsw i64 %681, 1
  store i64 %682, ptr %31, align 8, !tbaa !9
  br label %648, !llvm.loop !21

683:                                              ; preds = %648
  %684 = load ptr, ptr %14, align 8, !tbaa !5
  %685 = load ptr, ptr %21, align 8, !tbaa !5
  %686 = getelementptr inbounds float, ptr %685, i64 1
  %687 = load ptr, ptr %15, align 8, !tbaa !5
  %688 = getelementptr inbounds float, ptr %687, i64 1
  %689 = call i32 @f2c_scopy(ptr noundef %684, ptr noundef %686, ptr noundef @c__1, ptr noundef %688, ptr noundef @c__1)
  store i32 0, ptr %12, align 4
  store i32 1, ptr %58, align 4
  br label %690

690:                                              ; preds = %683, %614, %471, %150, %141
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  %691 = load i32, ptr %12, align 4
  ret i32 %691
}

; 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) #2

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

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

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

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

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

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

declare i32 @f2c_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 = !{!"long", !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 i64, align 8
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8

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

32:                                               ; preds = %11
  %33 = icmp slt i64 %30, 0
  br i1 %33, label %.thread, label %34

34:                                               ; preds = %32
  %35 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select269 = tail call i64 @llvm.umax.i64(i64 %30, i64 1)
  %36 = icmp slt i64 %35, %spec.select269
  br i1 %36, label %.thread, label %37

37:                                               ; preds = %34
  %38 = load i64, ptr %7, align 8, !tbaa !5
  %39 = icmp slt i64 %38, %spec.select269
  br i1 %39, label %.thread, label %41

.thread:                                          ; preds = %37, %34, %32, %11
  %.sink = phi i64 [ -1, %11 ], [ -2, %32 ], [ -6, %34 ], [ -8, %37 ]
  %.neg = phi i64 [ 1, %11 ], [ 2, %32 ], [ 6, %34 ], [ 8, %37 ]
  store i64 %.sink, ptr %10, align 8, !tbaa !5
  store i64 %.neg, ptr %12, align 8, !tbaa !5
  %40 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %12) #5
  br label %294

41:                                               ; preds = %37
  %42 = icmp eq i64 %30, 0
  br i1 %42, label %294, label %43

43:                                               ; preds = %41
  %44 = tail call i64 @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) #5
  %45 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %45, ptr %9, align 8, !tbaa !5
  %46 = icmp sgt i64 %45, %44
  br i1 %46, label %.preheader272, label %._crit_edge276.thread

._crit_edge276.thread:                            ; preds = %43
  store i64 0, ptr %15, align 8, !tbaa !5
  br label %._crit_edge282.thread

.preheader272:                                    ; preds = %43, %._crit_edge
  %.0244275 = phi i64 [ %60, %._crit_edge ], [ 1, %43 ]
  %47 = phi i64 [ %59, %._crit_edge ], [ 0, %43 ]
  %48 = icmp sgt i64 %.0244275, 0
  br i1 %48, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader272, %.lr.ph
  %.0250273 = phi i64 [ %57, %.lr.ph ], [ %.0244275, %.preheader272 ]
  %49 = getelementptr inbounds i64, ptr %28, i64 %.0250273
  %50 = load i64, ptr %49, align 8, !tbaa !5
  %51 = add nsw i64 %50, 1
  %52 = sdiv i64 %51, 2
  %.idx = shl nsw i64 %.0250273, 4
  %53 = getelementptr inbounds i8, ptr %28, i64 %.idx
  store i64 %52, ptr %53, align 8, !tbaa !5
  %54 = load i64, ptr %49, align 8, !tbaa !5
  %55 = sdiv i64 %54, 2
  %56 = getelementptr i8, ptr %53, i64 -8
  store i64 %55, ptr %56, align 8, !tbaa !5
  %57 = add nsw i64 %.0250273, -1
  %58 = icmp ugt i64 %.0250273, 1
  br i1 %58, label %.lr.ph, label %._crit_edge, !llvm.loop !9

._crit_edge:                                      ; preds = %.lr.ph, %.preheader272
  %59 = add nuw nsw i64 %47, 1
  %60 = shl i64 %.0244275, 1
  %61 = getelementptr inbounds i64, ptr %28, i64 %60
  %62 = load i64, ptr %61, align 8, !tbaa !5
  %63 = icmp sgt i64 %62, %44
  br i1 %63, label %.preheader272, label %._crit_edge276

._crit_edge276:                                   ; preds = %._crit_edge
  store i64 %59, ptr %15, align 8, !tbaa !5
  %.not257278 = icmp slt i64 %60, 2
  br i1 %.not257278, label %._crit_edge282.thread, label %.lr.ph281.preheader

.lr.ph281.preheader:                              ; preds = %._crit_edge276
  %load_initial = load i64, ptr %9, align 8
  %64 = add nsw i64 %60, -1
  %65 = add nsw i64 %60, -2
  %xtraiter = and i64 %64, 3
  %66 = icmp ult i64 %65, 3
  br i1 %66, label %.lr.ph281.epil.preheader, label %.lr.ph281.preheader.new

.lr.ph281.preheader.new:                          ; preds = %.lr.ph281.preheader
  %unroll_iter = and i64 %64, -4
  %invariant.gep406 = getelementptr i8, ptr %28, i64 16
  %invariant.gep408 = getelementptr i8, ptr %28, i64 24
  br label %.lr.ph281

.lr.ph281:                                        ; preds = %.lr.ph281, %.lr.ph281.preheader.new
  %store_forwarded = phi i64 [ %load_initial, %.lr.ph281.preheader.new ], [ %76, %.lr.ph281 ]
  %.1251279 = phi i64 [ 2, %.lr.ph281.preheader.new ], [ %77, %.lr.ph281 ]
  %niter = phi i64 [ 0, %.lr.ph281.preheader.new ], [ %niter.next.3, %.lr.ph281 ]
  %67 = getelementptr i64, ptr %28, i64 %.1251279
  %68 = load i64, ptr %67, align 8, !tbaa !5
  %69 = add nsw i64 %68, %store_forwarded
  store i64 %69, ptr %67, align 8, !tbaa !5
  %70 = getelementptr i64, ptr %9, i64 %.1251279
  %71 = load i64, ptr %70, align 8, !tbaa !5
  %72 = add nsw i64 %71, %69
  store i64 %72, ptr %70, align 8, !tbaa !5
  %gep407 = getelementptr i64, ptr %invariant.gep406, i64 %.1251279
  %73 = load i64, ptr %gep407, align 8, !tbaa !5
  %74 = add nsw i64 %73, %72
  store i64 %74, ptr %gep407, align 8, !tbaa !5
  %gep409 = getelementptr i64, ptr %invariant.gep408, i64 %.1251279
  %75 = load i64, ptr %gep409, align 8, !tbaa !5
  %76 = add nsw i64 %75, %74
  store i64 %76, ptr %gep409, align 8, !tbaa !5
  %77 = add nuw nsw i64 %.1251279, 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.ph281.epil.preheader, label %.lr.ph281, !llvm.loop !11

._crit_edge282.thread:                            ; preds = %._crit_edge276.thread, %._crit_edge276
  %.0244.lcssa345.ph = phi i64 [ %60, %._crit_edge276 ], [ 1, %._crit_edge276.thread ]
  %78 = add nsw i64 %.0244.lcssa345.ph, -1
  store i64 %78, ptr %12, align 8, !tbaa !5
  br label %._crit_edge287

.lr.ph281.epil.preheader:                         ; preds = %.lr.ph281.preheader, %.lr.ph281
  %store_forwarded.unr = phi i64 [ %load_initial, %.lr.ph281.preheader ], [ %76, %.lr.ph281 ]
  %.1251279.unr = phi i64 [ 2, %.lr.ph281.preheader ], [ %77, %.lr.ph281 ]
  br label %.lr.ph281.epil

.lr.ph281.epil:                                   ; preds = %.lr.ph281.epil, %.lr.ph281.epil.preheader
  %store_forwarded.epil = phi i64 [ %store_forwarded.unr, %.lr.ph281.epil.preheader ], [ %81, %.lr.ph281.epil ]
  %.1251279.epil = phi i64 [ %.1251279.unr, %.lr.ph281.epil.preheader ], [ %82, %.lr.ph281.epil ]
  %epil.iter = phi i64 [ 0, %.lr.ph281.epil.preheader ], [ %epil.iter.next, %.lr.ph281.epil ]
  %79 = getelementptr i64, ptr %28, i64 %.1251279.epil
  %80 = load i64, ptr %79, align 8, !tbaa !5
  %81 = add nsw i64 %80, %store_forwarded.epil
  store i64 %81, ptr %79, align 8, !tbaa !5
  %82 = add nuw nsw i64 %.1251279.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge282, label %.lr.ph281.epil, !llvm.loop !12

._crit_edge282:                                   ; preds = %.lr.ph281.epil
  %83 = add nsw i64 %60, -1
  store i64 %83, ptr %12, align 8, !tbaa !5
  br label %.lr.ph286

.lr.ph286:                                        ; preds = %._crit_edge282, %.lr.ph286
  %.0247284 = phi i64 [ %101, %.lr.ph286 ], [ 1, %._crit_edge282 ]
  %84 = getelementptr inbounds i64, ptr %28, i64 %.0247284
  %85 = load i64, ptr %84, align 8, !tbaa !5
  %86 = getelementptr inbounds float, ptr %20, i64 %85
  %87 = load float, ptr %86, align 4, !tbaa !14
  %88 = fcmp oge float %87, 0.000000e+00
  %89 = fneg float %87
  %90 = select i1 %88, float %87, float %89
  %91 = getelementptr inbounds float, ptr %19, i64 %85
  %92 = load float, ptr %91, align 4, !tbaa !14
  %93 = fsub float %92, %90
  store float %93, ptr %91, align 4, !tbaa !14
  %94 = load float, ptr %86, align 4, !tbaa !14
  %95 = fcmp oge float %94, 0.000000e+00
  %96 = fneg float %94
  %97 = select i1 %95, float %94, float %96
  %98 = getelementptr float, ptr %2, i64 %85
  %99 = load float, ptr %98, align 4, !tbaa !14
  %100 = fsub float %99, %97
  store float %100, ptr %98, align 4, !tbaa !14
  %101 = add nuw nsw i64 %.0247284, 1
  %exitcond331.not = icmp eq i64 %101, %60
  br i1 %exitcond331.not, label %._crit_edge287, label %.lr.ph286, !llvm.loop !16

._crit_edge287:                                   ; preds = %.lr.ph286, %._crit_edge282.thread
  %.not258.not283349 = phi i1 [ false, %._crit_edge282.thread ], [ true, %.lr.ph286 ]
  %102 = phi i64 [ %78, %._crit_edge282.thread ], [ %83, %.lr.ph286 ]
  %.0244.lcssa345348 = phi i64 [ %.0244.lcssa345.ph, %._crit_edge282.thread ], [ %60, %.lr.ph286 ]
  %103 = load i64, ptr %1, align 8, !tbaa !5
  %104 = shl i64 %103, 2
  %105 = or disjoint i64 %104, 3
  %106 = sitofp i64 %103 to float
  %107 = fpext float %106 to double
  %108 = tail call double @log(double noundef %107) #5
  %109 = fdiv double %108, 0x3FE62E42FEFA39EF
  %110 = fptrunc double %109 to float
  %111 = fptosi float %110 to i64
  store i64 %111, ptr %13, align 8, !tbaa !5
  %112 = call i64 @pow_ii(ptr noundef nonnull @c__2, ptr noundef nonnull %13) #5
  %113 = load i64, ptr %1, align 8, !tbaa !5
  %114 = icmp slt i64 %112, %113
  br i1 %114, label %115, label %118

115:                                              ; preds = %._crit_edge287
  %116 = load i64, ptr %13, align 8, !tbaa !5
  %117 = add nsw i64 %116, 1
  store i64 %117, ptr %13, align 8, !tbaa !5
  br label %118

118:                                              ; preds = %115, %._crit_edge287
  %119 = call i64 @pow_ii(ptr noundef nonnull @c__2, ptr noundef nonnull %13) #5
  %120 = load i64, ptr %1, align 8, !tbaa !5
  %121 = icmp slt i64 %119, %120
  %.pre = load i64, ptr %13, align 8, !tbaa !5
  br i1 %121, label %122, label %124

122:                                              ; preds = %118
  %123 = add nsw i64 %.pre, 1
  store i64 %123, ptr %13, align 8, !tbaa !5
  br label %124

124:                                              ; preds = %122, %118
  %125 = phi i64 [ %123, %122 ], [ %.pre, %118 ]
  %126 = add nsw i64 %120, %105
  %127 = add nsw i64 %126, 1
  %128 = mul nsw i64 %125, %120
  %129 = add nsw i64 %127, %128
  %130 = add nsw i64 %129, %128
  %131 = add i64 %120, 2
  %132 = add i64 %131, %130
  %133 = shl i64 %120, 1
  %134 = mul nsw i64 %125, %133
  %135 = or disjoint i64 %134, 1
  %136 = mul nsw i64 %120, %120
  %137 = add nsw i64 %135, %136
  %.not259288 = icmp slt i64 %.0244.lcssa345348, 0
  br i1 %.not259288, label %._crit_edge292.thread, label %.lr.ph291

._crit_edge292.thread:                            ; preds = %124
  %138 = getelementptr inbounds i64, ptr %28, i64 %130
  store i64 1, ptr %138, align 8, !tbaa !5
  br label %.preheader

.lr.ph291:                                        ; preds = %124
  %139 = getelementptr i64, ptr %9, i64 %126
  %140 = getelementptr i64, ptr %28, i64 %132
  %141 = add nuw nsw i64 %.0244.lcssa345348, 1
  %min.iters.check = icmp ult i64 %.0244.lcssa345348, 15
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph291
  %142 = shl i64 %125, 4
  %143 = or disjoint i64 %142, 8
  %144 = mul i64 %120, %143
  %145 = add i64 %144, 16
  %diff.check = icmp ult i64 %145, 32
  br i1 %diff.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %141, 9223372036854775804
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %146 = getelementptr i64, ptr %139, i64 %index
  %147 = getelementptr i8, ptr %146, i64 16
  store <2 x i64> <i64 1, i64 1>, ptr %146, align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr %147, align 8, !tbaa !5
  %148 = getelementptr i64, ptr %140, i64 %index
  %149 = getelementptr i8, ptr %148, i64 16
  store <2 x i64> <i64 1, i64 1>, ptr %148, align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr %149, align 8, !tbaa !5
  %index.next = add nuw i64 %index, 4
  %150 = icmp eq i64 %index.next, %n.vec
  br i1 %150, label %middle.block, label %vector.body, !llvm.loop !17

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %141, %n.vec
  br i1 %cmp.n, label %._crit_edge292, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph291
  %.1248289.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph291 ], [ %n.vec, %middle.block ]
  %151 = add nuw i64 %.0244.lcssa345348, 1
  %152 = sub nsw i64 %.0244.lcssa345348, %.1248289.ph
  %xtraiter395 = and i64 %151, 3
  %lcmp.mod396.not = icmp eq i64 %xtraiter395, 0
  br i1 %lcmp.mod396.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.1248289.prol = phi i64 [ %155, %scalar.ph.prol ], [ %.1248289.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %153 = getelementptr i64, ptr %139, i64 %.1248289.prol
  store i64 1, ptr %153, align 8, !tbaa !5
  %154 = getelementptr i64, ptr %140, i64 %.1248289.prol
  store i64 1, ptr %154, align 8, !tbaa !5
  %155 = add nuw nsw i64 %.1248289.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter395
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !20

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.1248289.unr = phi i64 [ %.1248289.ph, %scalar.ph.preheader ], [ %155, %scalar.ph.prol ]
  %156 = icmp ult i64 %152, 3
  br i1 %156, label %._crit_edge292, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.1248289 = phi i64 [ %168, %scalar.ph ], [ %.1248289.unr, %scalar.ph.prol.loopexit ]
  %157 = getelementptr i64, ptr %139, i64 %.1248289
  store i64 1, ptr %157, align 8, !tbaa !5
  %158 = getelementptr i64, ptr %140, i64 %.1248289
  store i64 1, ptr %158, align 8, !tbaa !5
  %159 = add nuw nsw i64 %.1248289, 1
  %160 = getelementptr i64, ptr %139, i64 %159
  store i64 1, ptr %160, align 8, !tbaa !5
  %161 = getelementptr i64, ptr %140, i64 %159
  store i64 1, ptr %161, align 8, !tbaa !5
  %162 = add nuw nsw i64 %.1248289, 2
  %163 = getelementptr i64, ptr %139, i64 %162
  store i64 1, ptr %163, align 8, !tbaa !5
  %164 = getelementptr i64, ptr %140, i64 %162
  store i64 1, ptr %164, align 8, !tbaa !5
  %165 = add nuw nsw i64 %.1248289, 3
  %166 = getelementptr i64, ptr %139, i64 %165
  store i64 1, ptr %166, align 8, !tbaa !5
  %167 = getelementptr i64, ptr %140, i64 %165
  store i64 1, ptr %167, align 8, !tbaa !5
  %168 = add nuw nsw i64 %.1248289, 4
  %exitcond332.not.3 = icmp eq i64 %165, %.0244.lcssa345348
  br i1 %exitcond332.not.3, label %._crit_edge292, label %scalar.ph, !llvm.loop !21

._crit_edge292:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %169 = getelementptr inbounds i64, ptr %28, i64 %130
  store i64 1, ptr %169, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %23, i64 8
  %invariant.gep298 = getelementptr i8, ptr %26, i64 8
  %.not260300 = icmp eq i64 %.0244.lcssa345348, 0
  br i1 %.not260300, label %.preheader, label %.lr.ph304

.lr.ph304:                                        ; preds = %._crit_edge292
  %170 = getelementptr float, ptr %27, i64 %134
  %171 = getelementptr float, ptr %8, i64 %137
  %172 = getelementptr i64, ptr %28, i64 %105
  br label %188

.loopexit:                                        ; preds = %.lr.ph297, %middle.block373, %223
  %.not260.not = icmp slt i64 %.2302, %102
  br i1 %.not260.not, label %188, label %.preheader, !llvm.loop !22

.preheader:                                       ; preds = %.loopexit, %._crit_edge292.thread, %._crit_edge292
  %173 = phi ptr [ %138, %._crit_edge292.thread ], [ %169, %._crit_edge292 ], [ %169, %.loopexit ]
  store i64 1, ptr %17, align 8, !tbaa !5
  br i1 %.not258.not283349, label %.lr.ph315, label %._crit_edge316

.lr.ph315:                                        ; preds = %.preheader
  %174 = getelementptr i8, ptr %23, i64 8
  %175 = getelementptr i8, ptr %26, i64 8
  %176 = getelementptr inbounds i8, ptr %9, i64 8
  %177 = getelementptr i64, ptr %28, i64 %105
  %178 = getelementptr float, ptr %8, i64 %134
  %179 = getelementptr i64, ptr %9, i64 %126
  %180 = getelementptr inbounds i64, ptr %28, i64 %129
  %181 = getelementptr inbounds i64, ptr %28, i64 %132
  %182 = getelementptr i64, ptr %181, i64 %128
  %183 = getelementptr float, ptr %8, i64 %137
  %gep306.peel = getelementptr %struct.complex, ptr %175, i64 %24
  %invariant.gep364 = getelementptr i8, ptr %3, i64 -4
  %184 = getelementptr i8, ptr %177, i64 8
  %gep308.peel = getelementptr %struct.complex, ptr %174, i64 %21
  %185 = getelementptr inbounds i8, ptr %9, i64 8
  %invariant.gep362 = getelementptr inbounds i8, ptr %9, i64 8
  %186 = getelementptr i8, ptr %23, i64 8
  %187 = getelementptr i8, ptr %26, i64 8
  br label %235

188:                                              ; preds = %.lr.ph304, %.loopexit
  %.2302 = phi i64 [ 0, %.lr.ph304 ], [ %215, %.loopexit ]
  %189 = icmp eq i64 %.2302, 0
  br i1 %189, label %190, label %192

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

192:                                              ; preds = %188
  %193 = getelementptr inbounds i64, ptr %28, i64 %.2302
  %194 = load i64, ptr %193, align 8, !tbaa !5
  %195 = add nsw i64 %194, 1
  %196 = getelementptr i64, ptr %9, i64 %.2302
  %197 = load i64, ptr %196, align 8, !tbaa !5
  %198 = sub nsw i64 %197, %194
  br label %199

199:                                              ; preds = %192, %190
  %storemerge265 = phi i64 [ %198, %192 ], [ %191, %190 ]
  %.0245 = phi i64 [ %195, %192 ], [ 1, %190 ]
  store i64 %storemerge265, ptr %18, align 8, !tbaa !5
  %200 = add nsw i64 %.2302, %130
  %201 = getelementptr inbounds i64, ptr %28, i64 %200
  %202 = load i64, ptr %201, align 8, !tbaa !5
  %203 = getelementptr inbounds float, ptr %19, i64 %.0245
  %204 = getelementptr inbounds float, ptr %20, i64 %.0245
  %205 = getelementptr float, ptr %170, i64 %202
  %206 = call i32 @ssteqr_(ptr noundef nonnull @.str.2, ptr noundef nonnull %18, ptr noundef nonnull %203, ptr noundef nonnull %204, ptr noundef %205, ptr noundef nonnull %18, ptr noundef %8, ptr noundef nonnull %10) #5
  %207 = mul nsw i64 %.0245, %21
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %207
  %208 = mul nsw i64 %.0245, %24
  %gep299 = getelementptr %struct.complex, ptr %invariant.gep298, i64 %208
  %209 = call i32 @clacrm_(ptr noundef nonnull %0, ptr noundef nonnull %18, ptr noundef %gep, ptr noundef nonnull %5, ptr noundef %205, ptr noundef nonnull %18, ptr noundef %gep299, ptr noundef nonnull %7, ptr noundef %171) #5
  %210 = load i64, ptr %18, align 8, !tbaa !5
  %211 = load i64, ptr %201, align 8, !tbaa !5
  %212 = mul nsw i64 %210, %210
  %213 = add nsw i64 %211, %212
  %214 = getelementptr i64, ptr %9, i64 %200
  store i64 %213, ptr %214, align 8, !tbaa !5
  %215 = add nuw nsw i64 %.2302, 1
  %216 = load i64, ptr %10, align 8, !tbaa !5
  %217 = icmp sgt i64 %216, 0
  br i1 %217, label %218, label %223

218:                                              ; preds = %199
  %219 = load i64, ptr %1, align 8, !tbaa !5
  %.0245267 = add i64 %219, 2
  %220 = mul i64 %.0245267, %.0245
  %221 = add i64 %210, -1
  %222 = add i64 %221, %220
  store i64 %222, ptr %10, align 8, !tbaa !5
  br label %294

223:                                              ; preds = %199
  %224 = getelementptr i64, ptr %9, i64 %.2302
  %225 = load i64, ptr %224, align 8, !tbaa !5
  %.not266293 = icmp sgt i64 %.0245, %225
  br i1 %.not266293, label %.loopexit, label %.lr.ph297.preheader

.lr.ph297.preheader:                              ; preds = %223
  %226 = add i64 %225, 1
  %227 = sub i64 %226, %.0245
  %min.iters.check375 = icmp ult i64 %227, 4
  br i1 %min.iters.check375, label %.lr.ph297.preheader389, label %vector.ph376

vector.ph376:                                     ; preds = %.lr.ph297.preheader
  %n.vec378 = and i64 %227, -4
  %ind.end = add i64 %.0245, %n.vec378
  %ind.end380 = or disjoint i64 %n.vec378, 1
  %228 = getelementptr i64, ptr %172, i64 %.0245
  br label %vector.body382

vector.body382:                                   ; preds = %vector.body382, %vector.ph376
  %index383 = phi i64 [ 0, %vector.ph376 ], [ %index.next385, %vector.body382 ]
  %vec.ind = phi <2 x i64> [ <i64 1, i64 2>, %vector.ph376 ], [ %vec.ind.next, %vector.body382 ]
  %step.add = add <2 x i64> %vec.ind, <i64 2, i64 2>
  %229 = getelementptr i64, ptr %228, i64 %index383
  %230 = getelementptr i8, ptr %229, i64 16
  store <2 x i64> %vec.ind, ptr %229, align 8, !tbaa !5
  store <2 x i64> %step.add, ptr %230, align 8, !tbaa !5
  %index.next385 = add nuw i64 %index383, 4
  %vec.ind.next = add <2 x i64> %vec.ind, <i64 4, i64 4>
  %231 = icmp eq i64 %index.next385, %n.vec378
  br i1 %231, label %middle.block373, label %vector.body382, !llvm.loop !23

middle.block373:                                  ; preds = %vector.body382
  %cmp.n386 = icmp eq i64 %227, %n.vec378
  br i1 %cmp.n386, label %.loopexit, label %.lr.ph297.preheader389

.lr.ph297.preheader389:                           ; preds = %middle.block373, %.lr.ph297.preheader
  %.2252295.ph = phi i64 [ %.0245, %.lr.ph297.preheader ], [ %ind.end, %middle.block373 ]
  %.0253294.ph = phi i64 [ 1, %.lr.ph297.preheader ], [ %ind.end380, %middle.block373 ]
  br label %.lr.ph297

.lr.ph297:                                        ; preds = %.lr.ph297.preheader389, %.lr.ph297
  %.2252295 = phi i64 [ %234, %.lr.ph297 ], [ %.2252295.ph, %.lr.ph297.preheader389 ]
  %.0253294 = phi i64 [ %233, %.lr.ph297 ], [ %.0253294.ph, %.lr.ph297.preheader389 ]
  %232 = getelementptr i64, ptr %172, i64 %.2252295
  store i64 %.0253294, ptr %232, align 8, !tbaa !5
  %233 = add nuw nsw i64 %.0253294, 1
  %234 = add i64 %.2252295, 1
  %exitcond333.not = icmp eq i64 %.2252295, %225
  br i1 %exitcond333.not, label %.loopexit, label %.lr.ph297, !llvm.loop !24

235:                                              ; preds = %.lr.ph315, %._crit_edge313
  %236 = phi i64 [ 1, %.lr.ph315 ], [ %277, %._crit_edge313 ]
  %.1314 = phi i64 [ %.0244.lcssa345348, %.lr.ph315 ], [ %276, %._crit_edge313 ]
  %237 = add nsw i64 %.1314, -2
  store i64 %237, ptr %12, align 8, !tbaa !5
  %.not262309 = icmp slt i64 %.1314, 2
  br i1 %.not262309, label %._crit_edge313, label %238

238:                                              ; preds = %235
  %239 = getelementptr i64, ptr %9, i64 %.1314
  %240 = load i64, ptr %9, align 8, !tbaa !5
  %241 = load i64, ptr %176, align 8, !tbaa !5
  store i64 %241, ptr %18, align 8
  store i64 %240, ptr %14, align 8
  store i64 0, ptr %16, align 8, !tbaa !5
  %gep365 = getelementptr float, ptr %invariant.gep364, i64 %240
  %242 = call i32 @claed7_(ptr noundef nonnull %18, ptr noundef nonnull %14, ptr noundef nonnull %0, ptr noundef nonnull %15, ptr noundef nonnull %17, ptr noundef nonnull %16, ptr noundef nonnull %2, ptr noundef %gep306.peel, ptr noundef nonnull %7, ptr noundef %gep365, ptr noundef %184, ptr noundef %178, ptr noundef nonnull %173, ptr noundef %179, ptr noundef nonnull %180, ptr noundef nonnull %181, ptr noundef %182, ptr noundef %8, ptr noundef %gep308.peel, ptr noundef %183, ptr noundef %239, ptr noundef nonnull %10) #5
  %243 = load i64, ptr %10, align 8, !tbaa !5
  %244 = icmp sgt i64 %243, 0
  br i1 %244, label %.loopexit335, label %245

245:                                              ; preds = %238
  %246 = load i64, ptr %185, align 8, !tbaa !5
  store i64 %246, ptr %9, align 8, !tbaa !5
  %.not262.peel = icmp ult i64 %.1314, 4
  br i1 %.not262.peel, label %._crit_edge313.loopexit, label %.peel.next

.peel.next:                                       ; preds = %245, %269
  %247 = phi i64 [ %272, %269 ], [ %246, %245 ]
  %.3310 = phi i64 [ %270, %269 ], [ 2, %245 ]
  %248 = add nsw i64 %247, 1
  %249 = load i64, ptr %16, align 8, !tbaa !5
  %250 = add nsw i64 %249, 1
  %gep363 = getelementptr inbounds i64, ptr %invariant.gep362, i64 %.3310
  %251 = load i64, ptr %gep363, align 8, !tbaa !5
  %252 = sub nsw i64 %251, %247
  %253 = sdiv i64 %252, 2
  store i64 %252, ptr %18, align 8
  store i64 %253, ptr %14, align 8
  store i64 %250, ptr %16, align 8, !tbaa !5
  %254 = getelementptr float, ptr %2, i64 %247
  %255 = mul nsw i64 %248, %24
  %gep306 = getelementptr %struct.complex, ptr %187, i64 %255
  %256 = getelementptr float, ptr %3, i64 %247
  %257 = getelementptr float, ptr %256, i64 %253
  %258 = getelementptr i8, ptr %257, i64 -4
  %259 = getelementptr i64, ptr %177, i64 %248
  %260 = mul nsw i64 %248, %21
  %gep308 = getelementptr %struct.complex, ptr %186, i64 %260
  %261 = call i32 @claed7_(ptr noundef nonnull %18, ptr noundef nonnull %14, ptr noundef nonnull %0, ptr noundef nonnull %15, ptr noundef nonnull %17, ptr noundef nonnull %16, ptr noundef nonnull %254, ptr noundef %gep306, ptr noundef nonnull %7, ptr noundef %258, ptr noundef %259, ptr noundef %178, ptr noundef nonnull %173, ptr noundef %179, ptr noundef nonnull %180, ptr noundef nonnull %181, ptr noundef %182, ptr noundef %8, ptr noundef %gep308, ptr noundef %183, ptr noundef %239, ptr noundef nonnull %10) #5
  %262 = load i64, ptr %10, align 8, !tbaa !5
  %263 = icmp sgt i64 %262, 0
  br i1 %263, label %.loopexit335, label %269

.loopexit335:                                     ; preds = %238, %.peel.next
  %.1246.lcssa = phi i64 [ %248, %.peel.next ], [ 1, %238 ]
  %264 = load i64, ptr %1, align 8, !tbaa !5
  %.1246264 = add i64 %264, 2
  %265 = mul i64 %.1246264, %.1246.lcssa
  %266 = load i64, ptr %18, align 8, !tbaa !5
  %267 = add i64 %266, -1
  %268 = add i64 %267, %265
  store i64 %268, ptr %10, align 8, !tbaa !5
  br label %294

269:                                              ; preds = %.peel.next
  %270 = add nuw nsw i64 %.3310, 2
  %271 = getelementptr inbounds i64, ptr %28, i64 %270
  %272 = load i64, ptr %271, align 8, !tbaa !5
  %273 = lshr exact i64 %.3310, 1
  %274 = getelementptr i64, ptr %9, i64 %273
  store i64 %272, ptr %274, align 8, !tbaa !5
  %.not262 = icmp sgt i64 %270, %237
  br i1 %.not262, label %._crit_edge313.loopexit, label %.peel.next, !llvm.loop !25

._crit_edge313.loopexit:                          ; preds = %269, %245
  %.pre341 = load i64, ptr %17, align 8, !tbaa !5
  br label %._crit_edge313

._crit_edge313:                                   ; preds = %._crit_edge313.loopexit, %235
  %275 = phi i64 [ %.pre341, %._crit_edge313.loopexit ], [ %236, %235 ]
  %276 = lshr i64 %.1314, 1
  %277 = add nsw i64 %275, 1
  store i64 %277, ptr %17, align 8, !tbaa !5
  %278 = icmp ugt i64 %.1314, 3
  br i1 %278, label %235, label %._crit_edge316

._crit_edge316:                                   ; preds = %._crit_edge313, %.preheader
  %279 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %279, ptr %12, align 8, !tbaa !5
  %.not261321 = icmp slt i64 %279, 1
  br i1 %.not261321, label %._crit_edge325, label %.lr.ph324

.lr.ph324:                                        ; preds = %._crit_edge316
  %280 = getelementptr i64, ptr %28, i64 %105
  %281 = getelementptr i8, ptr %23, i64 8
  %282 = getelementptr i8, ptr %26, i64 8
  br label %283

283:                                              ; preds = %.lr.ph324, %283
  %.4322 = phi i64 [ 1, %.lr.ph324 ], [ %292, %283 ]
  %284 = getelementptr i64, ptr %280, i64 %.4322
  %285 = load i64, ptr %284, align 8, !tbaa !5
  %286 = getelementptr inbounds float, ptr %19, i64 %285
  %287 = load float, ptr %286, align 4, !tbaa !14
  %288 = getelementptr inbounds float, ptr %27, i64 %.4322
  store float %287, ptr %288, align 4, !tbaa !14
  %289 = mul nsw i64 %285, %24
  %gep318 = getelementptr %struct.complex, ptr %282, i64 %289
  %290 = mul nsw i64 %.4322, %21
  %gep320 = getelementptr %struct.complex, ptr %281, i64 %290
  %291 = call i32 @f2c_ccopy(ptr noundef nonnull %0, ptr noundef %gep318, ptr noundef nonnull @c__1, ptr noundef %gep320, ptr noundef nonnull @c__1) #5
  %292 = add nuw nsw i64 %.4322, 1
  %.not261.not = icmp slt i64 %.4322, %279
  br i1 %.not261.not, label %283, label %._crit_edge325, !llvm.loop !27

._crit_edge325:                                   ; preds = %283, %._crit_edge316
  %293 = call i32 @f2c_scopy(ptr noundef nonnull %1, ptr noundef %8, ptr noundef nonnull @c__1, ptr noundef %2, ptr noundef nonnull @c__1) #5
  br label %294

294:                                              ; preds = %41, %._crit_edge325, %.loopexit335, %218, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  ret i32 0
}

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

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

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

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

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

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

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

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

declare i32 @f2c_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 i64 @llvm.smax.i64(i64, i64) #4

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

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