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

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

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__2 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [13 x i8], align 1
@c_n1 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4
@c__4 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4

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

119:                                              ; preds = %14
  %120 = load ptr, ptr %25, align 8, !tbaa !5
  %121 = load i32, ptr %120, align 4, !tbaa !9
  %122 = icmp eq i32 %121, -1
  br label %123

123:                                              ; preds = %119, %14
  %124 = phi i1 [ true, %14 ], [ %122, %119 ]
  %125 = zext i1 %124 to i32
  store i32 %125, ptr %75, align 4, !tbaa !9
  %126 = load ptr, ptr %16, align 8, !tbaa !5
  %127 = load ptr, ptr %18, align 8, !tbaa !5
  %128 = load ptr, ptr %19, align 8, !tbaa !5
  %129 = call i32 @ilaenv2stage_(ptr noundef @c__2, ptr noundef @.str.3, ptr noundef %126, ptr noundef %127, ptr noundef %128, ptr noundef @c_n1, ptr noundef @c_n1)
  store i32 %129, ptr %66, align 4, !tbaa !9
  %130 = load ptr, ptr %16, align 8, !tbaa !5
  %131 = load ptr, ptr %18, align 8, !tbaa !5
  %132 = load ptr, ptr %19, align 8, !tbaa !5
  %133 = call i32 @ilaenv2stage_(ptr noundef @c__3, ptr noundef @.str.3, ptr noundef %130, ptr noundef %131, ptr noundef %132, ptr noundef %66, ptr noundef @c_n1)
  store i32 %133, ptr %52, align 4, !tbaa !9
  %134 = load ptr, ptr %16, align 8, !tbaa !5
  %135 = load ptr, ptr %18, align 8, !tbaa !5
  %136 = load ptr, ptr %19, align 8, !tbaa !5
  %137 = call i32 @ilaenv2stage_(ptr noundef @c__4, ptr noundef @.str.3, ptr noundef %134, ptr noundef %135, ptr noundef %136, ptr noundef %66, ptr noundef @c_n1)
  store i32 %137, ptr %58, align 4, !tbaa !9
  %138 = load i32, ptr %76, align 4, !tbaa !9
  %139 = icmp ne i32 %138, 0
  br i1 %139, label %146, label %140

140:                                              ; preds = %123
  %141 = load ptr, ptr %15, align 8, !tbaa !5
  %142 = call i32 @lsame_(ptr noundef %141, ptr noundef @.str.4)
  %143 = icmp ne i32 %142, 0
  br i1 %143, label %146, label %144

144:                                              ; preds = %140
  %145 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %145, align 4, !tbaa !9
  br label %209

146:                                              ; preds = %140, %123
  %147 = load ptr, ptr %16, align 8, !tbaa !5
  %148 = call i32 @lsame_(ptr noundef %147, ptr noundef @.str.4)
  %149 = icmp ne i32 %148, 0
  br i1 %149, label %152, label %150

150:                                              ; preds = %146
  %151 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %151, align 4, !tbaa !9
  br label %208

152:                                              ; preds = %146
  %153 = load i32, ptr %61, align 4, !tbaa !9
  %154 = icmp ne i32 %153, 0
  br i1 %154, label %161, label %155

155:                                              ; preds = %152
  %156 = load ptr, ptr %17, align 8, !tbaa !5
  %157 = call i32 @lsame_(ptr noundef %156, ptr noundef @.str.5)
  %158 = icmp ne i32 %157, 0
  br i1 %158, label %161, label %159

159:                                              ; preds = %155
  %160 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -3, ptr %160, align 4, !tbaa !9
  br label %207

161:                                              ; preds = %155, %152
  %162 = load ptr, ptr %18, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  %164 = icmp slt i32 %163, 0
  br i1 %164, label %165, label %167

165:                                              ; preds = %161
  %166 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -4, ptr %166, align 4, !tbaa !9
  br label %206

167:                                              ; preds = %161
  %168 = load ptr, ptr %19, align 8, !tbaa !5
  %169 = load i32, ptr %168, align 4, !tbaa !9
  %170 = icmp slt i32 %169, 0
  br i1 %170, label %171, label %173

171:                                              ; preds = %167
  %172 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -5, ptr %172, align 4, !tbaa !9
  br label %205

173:                                              ; preds = %167
  %174 = load ptr, ptr %21, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  %176 = load ptr, ptr %19, align 8, !tbaa !5
  %177 = load i32, ptr %176, align 4, !tbaa !9
  %178 = add nsw i32 %177, 1
  %179 = icmp slt i32 %175, %178
  br i1 %179, label %180, label %182

180:                                              ; preds = %173
  %181 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -7, ptr %181, align 4, !tbaa !9
  br label %204

182:                                              ; preds = %173
  %183 = load ptr, ptr %25, align 8, !tbaa !5
  %184 = load i32, ptr %183, align 4, !tbaa !9
  %185 = load i32, ptr %52, align 4, !tbaa !9
  %186 = icmp slt i32 %184, %185
  br i1 %186, label %187, label %192

187:                                              ; preds = %182
  %188 = load i32, ptr %75, align 4, !tbaa !9
  %189 = icmp ne i32 %188, 0
  br i1 %189, label %192, label %190

190:                                              ; preds = %187
  %191 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -11, ptr %191, align 4, !tbaa !9
  br label %203

192:                                              ; preds = %187, %182
  %193 = load ptr, ptr %27, align 8, !tbaa !5
  %194 = load i32, ptr %193, align 4, !tbaa !9
  %195 = load i32, ptr %58, align 4, !tbaa !9
  %196 = icmp slt i32 %194, %195
  br i1 %196, label %197, label %202

197:                                              ; preds = %192
  %198 = load i32, ptr %75, align 4, !tbaa !9
  %199 = icmp ne i32 %198, 0
  br i1 %199, label %202, label %200

200:                                              ; preds = %197
  %201 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -13, ptr %201, align 4, !tbaa !9
  br label %202

202:                                              ; preds = %200, %197, %192
  br label %203

203:                                              ; preds = %202, %190
  br label %204

204:                                              ; preds = %203, %180
  br label %205

205:                                              ; preds = %204, %171
  br label %206

206:                                              ; preds = %205, %165
  br label %207

207:                                              ; preds = %206, %159
  br label %208

208:                                              ; preds = %207, %150
  br label %209

209:                                              ; preds = %208, %144
  %210 = load ptr, ptr %28, align 8, !tbaa !5
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = icmp eq i32 %211, 0
  br i1 %212, label %213, label %230

213:                                              ; preds = %209
  %214 = load i32, ptr %52, align 4, !tbaa !9
  %215 = sitofp i32 %214 to float
  %216 = load ptr, ptr %24, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.complex, ptr %216, i64 1
  %218 = getelementptr inbounds %struct.complex, ptr %217, i32 0, i32 0
  store float %215, ptr %218, align 4, !tbaa !11
  %219 = load ptr, ptr %24, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.complex, ptr %219, i64 1
  %221 = getelementptr inbounds %struct.complex, ptr %220, i32 0, i32 1
  store float 0.000000e+00, ptr %221, align 4, !tbaa !14
  %222 = load i32, ptr %58, align 4, !tbaa !9
  %223 = sitofp i32 %222 to float
  %224 = load ptr, ptr %26, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.complex, ptr %224, i64 1
  %226 = getelementptr inbounds %struct.complex, ptr %225, i32 0, i32 0
  store float %223, ptr %226, align 4, !tbaa !11
  %227 = load ptr, ptr %26, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.complex, ptr %227, i64 1
  %229 = getelementptr inbounds %struct.complex, ptr %228, i32 0, i32 1
  store float 0.000000e+00, ptr %229, align 4, !tbaa !14
  br label %230

230:                                              ; preds = %213, %209
  %231 = load ptr, ptr %28, align 8, !tbaa !5
  %232 = load i32, ptr %231, align 4, !tbaa !9
  %233 = icmp ne i32 %232, 0
  br i1 %233, label %234, label %239

234:                                              ; preds = %230
  %235 = load ptr, ptr %28, align 8, !tbaa !5
  %236 = load i32, ptr %235, align 4, !tbaa !9
  %237 = sub nsw i32 0, %236
  store i32 %237, ptr %31, align 4, !tbaa !9
  %238 = call i32 @xerbla_(ptr noundef @.str.3, ptr noundef %31, i32 noundef 12)
  store i32 1, ptr %86, align 4
  br label %1140

239:                                              ; preds = %230
  %240 = load i32, ptr %75, align 4, !tbaa !9
  %241 = icmp ne i32 %240, 0
  br i1 %241, label %242, label %243

242:                                              ; preds = %239
  store i32 1, ptr %86, align 4
  br label %1140

243:                                              ; preds = %239
  br label %244

244:                                              ; preds = %243
  %245 = load ptr, ptr %18, align 8, !tbaa !5
  %246 = load i32, ptr %245, align 4, !tbaa !9
  %247 = icmp eq i32 %246, 0
  br i1 %247, label %248, label %261

248:                                              ; preds = %244
  %249 = load ptr, ptr %24, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.complex, ptr %249, i64 1
  %251 = getelementptr inbounds %struct.complex, ptr %250, i32 0, i32 0
  store float 1.000000e+00, ptr %251, align 4, !tbaa !11
  %252 = load ptr, ptr %24, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.complex, ptr %252, i64 1
  %254 = getelementptr inbounds %struct.complex, ptr %253, i32 0, i32 1
  store float 0.000000e+00, ptr %254, align 4, !tbaa !14
  %255 = load ptr, ptr %26, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.complex, ptr %255, i64 1
  %257 = getelementptr inbounds %struct.complex, ptr %256, i32 0, i32 0
  store float 1.000000e+00, ptr %257, align 4, !tbaa !11
  %258 = load ptr, ptr %26, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.complex, ptr %258, i64 1
  %260 = getelementptr inbounds %struct.complex, ptr %259, i32 0, i32 1
  store float 0.000000e+00, ptr %260, align 4, !tbaa !14
  store i32 1, ptr %86, align 4
  br label %1140

261:                                              ; preds = %244
  %262 = load ptr, ptr %19, align 8, !tbaa !5
  %263 = load i32, ptr %262, align 4, !tbaa !9
  %264 = load i32, ptr %66, align 4, !tbaa !9
  %265 = add nsw i32 %263, %264
  store i32 %265, ptr %79, align 4, !tbaa !9
  %266 = load ptr, ptr %18, align 8, !tbaa !5
  %267 = load i32, ptr %266, align 4, !tbaa !9
  %268 = shl i32 %267, 1
  store i32 %268, ptr %84, align 4, !tbaa !9
  %269 = load ptr, ptr %18, align 8, !tbaa !5
  %270 = load i32, ptr %269, align 4, !tbaa !9
  %271 = shl i32 %270, 1
  store i32 %271, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %71, align 4, !tbaa !9
  %272 = load i32, ptr %71, align 4, !tbaa !9
  %273 = load i32, ptr %84, align 4, !tbaa !9
  %274 = add nsw i32 %272, %273
  store i32 %274, ptr %40, align 4, !tbaa !9
  %275 = load ptr, ptr %19, align 8, !tbaa !5
  %276 = load i32, ptr %275, align 4, !tbaa !9
  %277 = shl i32 %276, 1
  %278 = add nsw i32 %277, 1
  store i32 %278, ptr %77, align 4, !tbaa !9
  %279 = load i32, ptr %77, align 4, !tbaa !9
  %280 = load ptr, ptr %18, align 8, !tbaa !5
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = mul nsw i32 %279, %281
  store i32 %282, ptr %54, align 4, !tbaa !9
  store i32 1, ptr %38, align 4, !tbaa !9
  %283 = load i32, ptr %38, align 4, !tbaa !9
  %284 = load i32, ptr %54, align 4, !tbaa !9
  %285 = add nsw i32 %283, %284
  store i32 %285, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  store i32 0, ptr %78, align 4, !tbaa !9
  %286 = load i32, ptr %61, align 4, !tbaa !9
  %287 = icmp ne i32 %286, 0
  br i1 %287, label %288, label %305

288:                                              ; preds = %261
  %289 = load i32, ptr %38, align 4, !tbaa !9
  %290 = load ptr, ptr %19, align 8, !tbaa !5
  %291 = load i32, ptr %290, align 4, !tbaa !9
  %292 = add nsw i32 %289, %291
  store i32 %292, ptr %43, align 4, !tbaa !9
  %293 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %293, ptr %59, align 4, !tbaa !9
  %294 = load i32, ptr %43, align 4, !tbaa !9
  %295 = load ptr, ptr %19, align 8, !tbaa !5
  %296 = load i32, ptr %295, align 4, !tbaa !9
  %297 = add nsw i32 %294, %296
  store i32 %297, ptr %44, align 4, !tbaa !9
  %298 = load i32, ptr %44, align 4, !tbaa !9
  %299 = sub nsw i32 %298, 1
  store i32 %299, ptr %73, align 4, !tbaa !9
  %300 = load ptr, ptr %19, align 8, !tbaa !5
  %301 = load i32, ptr %300, align 4, !tbaa !9
  %302 = add nsw i32 %301, 1
  store i32 %302, ptr %68, align 4, !tbaa !9
  %303 = load ptr, ptr %19, align 8, !tbaa !5
  %304 = load i32, ptr %303, align 4, !tbaa !9
  store i32 %304, ptr %45, align 4, !tbaa !9
  br label %315

305:                                              ; preds = %261
  %306 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %306, ptr %43, align 4, !tbaa !9
  %307 = load i32, ptr %38, align 4, !tbaa !9
  %308 = load ptr, ptr %19, align 8, !tbaa !5
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = add nsw i32 %307, %309
  %311 = add nsw i32 %310, 1
  store i32 %311, ptr %59, align 4, !tbaa !9
  %312 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %312, ptr %44, align 4, !tbaa !9
  %313 = load i32, ptr %44, align 4, !tbaa !9
  %314 = add nsw i32 %313, 1
  store i32 %314, ptr %73, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  store i32 2, ptr %45, align 4, !tbaa !9
  br label %315

315:                                              ; preds = %305, %288
  %316 = load ptr, ptr %19, align 8, !tbaa !5
  %317 = load i32, ptr %316, align 4, !tbaa !9
  %318 = icmp eq i32 %317, 0
  br i1 %318, label %319, label %374

319:                                              ; preds = %315
  %320 = load ptr, ptr %18, align 8, !tbaa !5
  %321 = load i32, ptr %320, align 4, !tbaa !9
  store i32 %321, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %322

322:                                              ; preds = %342, %319
  %323 = load i32, ptr %47, align 4, !tbaa !9
  %324 = load i32, ptr %31, align 4, !tbaa !9
  %325 = icmp sle i32 %323, %324
  br i1 %325, label %326, label %345

326:                                              ; preds = %322
  %327 = load i32, ptr %68, align 4, !tbaa !9
  %328 = load i32, ptr %47, align 4, !tbaa !9
  %329 = load i32, ptr %29, align 4, !tbaa !9
  %330 = mul nsw i32 %328, %329
  %331 = add nsw i32 %327, %330
  store i32 %331, ptr %32, align 4, !tbaa !9
  %332 = load ptr, ptr %20, align 8, !tbaa !5
  %333 = load i32, ptr %32, align 4, !tbaa !9
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds %struct.complex, ptr %332, i64 %334
  %336 = getelementptr inbounds %struct.complex, ptr %335, i32 0, i32 0
  %337 = load float, ptr %336, align 4, !tbaa !11
  %338 = load ptr, ptr %22, align 8, !tbaa !5
  %339 = load i32, ptr %47, align 4, !tbaa !9
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds float, ptr %338, i64 %340
  store float %337, ptr %341, align 4, !tbaa !15
  br label %342

342:                                              ; preds = %326
  %343 = load i32, ptr %47, align 4, !tbaa !9
  %344 = add nsw i32 %343, 1
  store i32 %344, ptr %47, align 4, !tbaa !9
  br label %322, !llvm.loop !16

345:                                              ; preds = %322
  %346 = load ptr, ptr %18, align 8, !tbaa !5
  %347 = load i32, ptr %346, align 4, !tbaa !9
  %348 = sub nsw i32 %347, 1
  store i32 %348, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %349

349:                                              ; preds = %358, %345
  %350 = load i32, ptr %47, align 4, !tbaa !9
  %351 = load i32, ptr %31, align 4, !tbaa !9
  %352 = icmp sle i32 %350, %351
  br i1 %352, label %353, label %361

353:                                              ; preds = %349
  %354 = load ptr, ptr %23, align 8, !tbaa !5
  %355 = load i32, ptr %47, align 4, !tbaa !9
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds float, ptr %354, i64 %356
  store float 0.000000e+00, ptr %357, align 4, !tbaa !15
  br label %358

358:                                              ; preds = %353
  %359 = load i32, ptr %47, align 4, !tbaa !9
  %360 = add nsw i32 %359, 1
  store i32 %360, ptr %47, align 4, !tbaa !9
  br label %349, !llvm.loop !18

361:                                              ; preds = %349
  %362 = load ptr, ptr %24, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.complex, ptr %362, i64 1
  %364 = getelementptr inbounds %struct.complex, ptr %363, i32 0, i32 0
  store float 1.000000e+00, ptr %364, align 4, !tbaa !11
  %365 = load ptr, ptr %24, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.complex, ptr %365, i64 1
  %367 = getelementptr inbounds %struct.complex, ptr %366, i32 0, i32 1
  store float 0.000000e+00, ptr %367, align 4, !tbaa !14
  %368 = load ptr, ptr %26, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.complex, ptr %368, i64 1
  %370 = getelementptr inbounds %struct.complex, ptr %369, i32 0, i32 0
  store float 1.000000e+00, ptr %370, align 4, !tbaa !11
  %371 = load ptr, ptr %26, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.complex, ptr %371, i64 1
  %373 = getelementptr inbounds %struct.complex, ptr %372, i32 0, i32 1
  store float 0.000000e+00, ptr %373, align 4, !tbaa !14
  store i32 1, ptr %86, align 4
  br label %1140

374:                                              ; preds = %315
  %375 = load ptr, ptr %19, align 8, !tbaa !5
  %376 = load i32, ptr %375, align 4, !tbaa !9
  %377 = icmp eq i32 %376, 1
  br i1 %377, label %378, label %736

378:                                              ; preds = %374
  %379 = load ptr, ptr %18, align 8, !tbaa !5
  %380 = load i32, ptr %379, align 4, !tbaa !9
  store i32 %380, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %381

381:                                              ; preds = %401, %378
  %382 = load i32, ptr %47, align 4, !tbaa !9
  %383 = load i32, ptr %31, align 4, !tbaa !9
  %384 = icmp sle i32 %382, %383
  br i1 %384, label %385, label %404

385:                                              ; preds = %381
  %386 = load i32, ptr %68, align 4, !tbaa !9
  %387 = load i32, ptr %47, align 4, !tbaa !9
  %388 = load i32, ptr %29, align 4, !tbaa !9
  %389 = mul nsw i32 %387, %388
  %390 = add nsw i32 %386, %389
  store i32 %390, ptr %32, align 4, !tbaa !9
  %391 = load ptr, ptr %20, align 8, !tbaa !5
  %392 = load i32, ptr %32, align 4, !tbaa !9
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds %struct.complex, ptr %391, i64 %393
  %395 = getelementptr inbounds %struct.complex, ptr %394, i32 0, i32 0
  %396 = load float, ptr %395, align 4, !tbaa !11
  %397 = load ptr, ptr %22, align 8, !tbaa !5
  %398 = load i32, ptr %47, align 4, !tbaa !9
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds float, ptr %397, i64 %399
  store float %396, ptr %400, align 4, !tbaa !15
  br label %401

401:                                              ; preds = %385
  %402 = load i32, ptr %47, align 4, !tbaa !9
  %403 = add nsw i32 %402, 1
  store i32 %403, ptr %47, align 4, !tbaa !9
  br label %381, !llvm.loop !19

404:                                              ; preds = %381
  %405 = load i32, ptr %61, align 4, !tbaa !9
  %406 = icmp ne i32 %405, 0
  br i1 %406, label %407, label %566

407:                                              ; preds = %404
  %408 = load ptr, ptr %18, align 8, !tbaa !5
  %409 = load i32, ptr %408, align 4, !tbaa !9
  %410 = sub nsw i32 %409, 1
  store i32 %410, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %411

411:                                              ; preds = %562, %407
  %412 = load i32, ptr %47, align 4, !tbaa !9
  %413 = load i32, ptr %31, align 4, !tbaa !9
  %414 = icmp sle i32 %412, %413
  br i1 %414, label %415, label %565

415:                                              ; preds = %411
  %416 = load i32, ptr %45, align 4, !tbaa !9
  %417 = load i32, ptr %47, align 4, !tbaa !9
  %418 = add nsw i32 %417, 1
  %419 = load i32, ptr %29, align 4, !tbaa !9
  %420 = mul nsw i32 %418, %419
  %421 = add nsw i32 %416, %420
  store i32 %421, ptr %32, align 4, !tbaa !9
  %422 = load ptr, ptr %20, align 8, !tbaa !5
  %423 = load i32, ptr %32, align 4, !tbaa !9
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds %struct.complex, ptr %422, i64 %424
  %426 = getelementptr inbounds %struct.complex, ptr %425, i32 0, i32 0
  %427 = load float, ptr %426, align 4, !tbaa !11
  %428 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 0
  store float %427, ptr %428, align 4, !tbaa !11
  %429 = load ptr, ptr %20, align 8, !tbaa !5
  %430 = load i32, ptr %32, align 4, !tbaa !9
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds %struct.complex, ptr %429, i64 %431
  %433 = getelementptr inbounds %struct.complex, ptr %432, i32 0, i32 1
  %434 = load float, ptr %433, align 4, !tbaa !14
  %435 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 1
  store float %434, ptr %435, align 4, !tbaa !14
  %436 = call <2 x float> @Cf(ptr noundef %80)
  store <2 x float> %436, ptr %87, align 4
  %437 = getelementptr inbounds { float, float }, ptr %87, i32 0, i32 0
  %438 = load float, ptr %437, align 4
  %439 = getelementptr inbounds { float, float }, ptr %87, i32 0, i32 1
  %440 = load float, ptr %439, align 4
  %441 = getelementptr inbounds { float, float }, ptr %88, i32 0, i32 0
  %442 = getelementptr inbounds { float, float }, ptr %88, i32 0, i32 1
  store float %438, ptr %441, align 4
  store float %440, ptr %442, align 4
  %443 = load <2 x float>, ptr %88, align 4
  %444 = call float @cabsf(<2 x float> noundef %443) #6
  store float %444, ptr %72, align 4, !tbaa !15
  %445 = load i32, ptr %45, align 4, !tbaa !9
  %446 = load i32, ptr %47, align 4, !tbaa !9
  %447 = add nsw i32 %446, 1
  %448 = load i32, ptr %29, align 4, !tbaa !9
  %449 = mul nsw i32 %447, %448
  %450 = add nsw i32 %445, %449
  store i32 %450, ptr %32, align 4, !tbaa !9
  %451 = load float, ptr %72, align 4, !tbaa !15
  %452 = load ptr, ptr %20, align 8, !tbaa !5
  %453 = load i32, ptr %32, align 4, !tbaa !9
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds %struct.complex, ptr %452, i64 %454
  %456 = getelementptr inbounds %struct.complex, ptr %455, i32 0, i32 0
  store float %451, ptr %456, align 4, !tbaa !11
  %457 = load ptr, ptr %20, align 8, !tbaa !5
  %458 = load i32, ptr %32, align 4, !tbaa !9
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds %struct.complex, ptr %457, i64 %459
  %461 = getelementptr inbounds %struct.complex, ptr %460, i32 0, i32 1
  store float 0.000000e+00, ptr %461, align 4, !tbaa !14
  %462 = load float, ptr %72, align 4, !tbaa !15
  %463 = load ptr, ptr %23, align 8, !tbaa !5
  %464 = load i32, ptr %47, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds float, ptr %463, i64 %465
  store float %462, ptr %466, align 4, !tbaa !15
  %467 = load float, ptr %72, align 4, !tbaa !15
  %468 = fcmp une float %467, 0.000000e+00
  br i1 %468, label %469, label %486

469:                                              ; preds = %415
  %470 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 0
  %471 = load float, ptr %470, align 4, !tbaa !11
  %472 = load float, ptr %72, align 4, !tbaa !15
  %473 = fdiv float %471, %472
  %474 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  store float %473, ptr %474, align 4, !tbaa !11
  %475 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 1
  %476 = load float, ptr %475, align 4, !tbaa !14
  %477 = load float, ptr %72, align 4, !tbaa !15
  %478 = fdiv float %476, %477
  %479 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  store float %478, ptr %479, align 4, !tbaa !14
  %480 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %481 = load float, ptr %480, align 4, !tbaa !11
  %482 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 0
  store float %481, ptr %482, align 4, !tbaa !11
  %483 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %484 = load float, ptr %483, align 4, !tbaa !14
  %485 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 1
  store float %484, ptr %485, align 4, !tbaa !14
  br label %489

486:                                              ; preds = %415
  %487 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 0
  store float 1.000000e+00, ptr %487, align 4, !tbaa !11
  %488 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 1
  store float 0.000000e+00, ptr %488, align 4, !tbaa !14
  br label %489

489:                                              ; preds = %486, %469
  %490 = load i32, ptr %47, align 4, !tbaa !9
  %491 = load ptr, ptr %18, align 8, !tbaa !5
  %492 = load i32, ptr %491, align 4, !tbaa !9
  %493 = sub nsw i32 %492, 1
  %494 = icmp slt i32 %490, %493
  br i1 %494, label %495, label %561

495:                                              ; preds = %489
  %496 = load i32, ptr %45, align 4, !tbaa !9
  %497 = load i32, ptr %47, align 4, !tbaa !9
  %498 = add nsw i32 %497, 2
  %499 = load i32, ptr %29, align 4, !tbaa !9
  %500 = mul nsw i32 %498, %499
  %501 = add nsw i32 %496, %500
  store i32 %501, ptr %32, align 4, !tbaa !9
  %502 = load i32, ptr %45, align 4, !tbaa !9
  %503 = load i32, ptr %47, align 4, !tbaa !9
  %504 = add nsw i32 %503, 2
  %505 = load i32, ptr %29, align 4, !tbaa !9
  %506 = mul nsw i32 %504, %505
  %507 = add nsw i32 %502, %506
  store i32 %507, ptr %33, align 4, !tbaa !9
  %508 = load ptr, ptr %20, align 8, !tbaa !5
  %509 = load i32, ptr %33, align 4, !tbaa !9
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds %struct.complex, ptr %508, i64 %510
  %512 = getelementptr inbounds %struct.complex, ptr %511, i32 0, i32 0
  %513 = load float, ptr %512, align 4, !tbaa !11
  %514 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 0
  %515 = load float, ptr %514, align 4, !tbaa !11
  %516 = load ptr, ptr %20, align 8, !tbaa !5
  %517 = load i32, ptr %33, align 4, !tbaa !9
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds %struct.complex, ptr %516, i64 %518
  %520 = getelementptr inbounds %struct.complex, ptr %519, i32 0, i32 1
  %521 = load float, ptr %520, align 4, !tbaa !14
  %522 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 1
  %523 = load float, ptr %522, align 4, !tbaa !14
  %524 = fmul float %521, %523
  %525 = fneg float %524
  %526 = call float @llvm.fmuladd.f32(float %513, float %515, float %525)
  %527 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  store float %526, ptr %527, align 4, !tbaa !11
  %528 = load ptr, ptr %20, align 8, !tbaa !5
  %529 = load i32, ptr %33, align 4, !tbaa !9
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds %struct.complex, ptr %528, i64 %530
  %532 = getelementptr inbounds %struct.complex, ptr %531, i32 0, i32 0
  %533 = load float, ptr %532, align 4, !tbaa !11
  %534 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 1
  %535 = load float, ptr %534, align 4, !tbaa !14
  %536 = load ptr, ptr %20, align 8, !tbaa !5
  %537 = load i32, ptr %33, align 4, !tbaa !9
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds %struct.complex, ptr %536, i64 %538
  %540 = getelementptr inbounds %struct.complex, ptr %539, i32 0, i32 1
  %541 = load float, ptr %540, align 4, !tbaa !14
  %542 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 0
  %543 = load float, ptr %542, align 4, !tbaa !11
  %544 = fmul float %541, %543
  %545 = call float @llvm.fmuladd.f32(float %533, float %535, float %544)
  %546 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  store float %545, ptr %546, align 4, !tbaa !14
  %547 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %548 = load float, ptr %547, align 4, !tbaa !11
  %549 = load ptr, ptr %20, align 8, !tbaa !5
  %550 = load i32, ptr %32, align 4, !tbaa !9
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds %struct.complex, ptr %549, i64 %551
  %553 = getelementptr inbounds %struct.complex, ptr %552, i32 0, i32 0
  store float %548, ptr %553, align 4, !tbaa !11
  %554 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %555 = load float, ptr %554, align 4, !tbaa !14
  %556 = load ptr, ptr %20, align 8, !tbaa !5
  %557 = load i32, ptr %32, align 4, !tbaa !9
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds %struct.complex, ptr %556, i64 %558
  %560 = getelementptr inbounds %struct.complex, ptr %559, i32 0, i32 1
  store float %555, ptr %560, align 4, !tbaa !14
  br label %561

561:                                              ; preds = %495, %489
  br label %562

562:                                              ; preds = %561
  %563 = load i32, ptr %47, align 4, !tbaa !9
  %564 = add nsw i32 %563, 1
  store i32 %564, ptr %47, align 4, !tbaa !9
  br label %411, !llvm.loop !20

565:                                              ; preds = %411
  br label %723

566:                                              ; preds = %404
  %567 = load ptr, ptr %18, align 8, !tbaa !5
  %568 = load i32, ptr %567, align 4, !tbaa !9
  %569 = sub nsw i32 %568, 1
  store i32 %569, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %570

570:                                              ; preds = %719, %566
  %571 = load i32, ptr %47, align 4, !tbaa !9
  %572 = load i32, ptr %31, align 4, !tbaa !9
  %573 = icmp sle i32 %571, %572
  br i1 %573, label %574, label %722

574:                                              ; preds = %570
  %575 = load i32, ptr %45, align 4, !tbaa !9
  %576 = load i32, ptr %47, align 4, !tbaa !9
  %577 = load i32, ptr %29, align 4, !tbaa !9
  %578 = mul nsw i32 %576, %577
  %579 = add nsw i32 %575, %578
  store i32 %579, ptr %32, align 4, !tbaa !9
  %580 = load ptr, ptr %20, align 8, !tbaa !5
  %581 = load i32, ptr %32, align 4, !tbaa !9
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds %struct.complex, ptr %580, i64 %582
  %584 = getelementptr inbounds %struct.complex, ptr %583, i32 0, i32 0
  %585 = load float, ptr %584, align 4, !tbaa !11
  %586 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 0
  store float %585, ptr %586, align 4, !tbaa !11
  %587 = load ptr, ptr %20, align 8, !tbaa !5
  %588 = load i32, ptr %32, align 4, !tbaa !9
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds %struct.complex, ptr %587, i64 %589
  %591 = getelementptr inbounds %struct.complex, ptr %590, i32 0, i32 1
  %592 = load float, ptr %591, align 4, !tbaa !14
  %593 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 1
  store float %592, ptr %593, align 4, !tbaa !14
  %594 = call <2 x float> @Cf(ptr noundef %80)
  store <2 x float> %594, ptr %89, align 4
  %595 = getelementptr inbounds { float, float }, ptr %89, i32 0, i32 0
  %596 = load float, ptr %595, align 4
  %597 = getelementptr inbounds { float, float }, ptr %89, i32 0, i32 1
  %598 = load float, ptr %597, align 4
  %599 = getelementptr inbounds { float, float }, ptr %90, i32 0, i32 0
  %600 = getelementptr inbounds { float, float }, ptr %90, i32 0, i32 1
  store float %596, ptr %599, align 4
  store float %598, ptr %600, align 4
  %601 = load <2 x float>, ptr %90, align 4
  %602 = call float @cabsf(<2 x float> noundef %601) #6
  store float %602, ptr %72, align 4, !tbaa !15
  %603 = load i32, ptr %45, align 4, !tbaa !9
  %604 = load i32, ptr %47, align 4, !tbaa !9
  %605 = load i32, ptr %29, align 4, !tbaa !9
  %606 = mul nsw i32 %604, %605
  %607 = add nsw i32 %603, %606
  store i32 %607, ptr %32, align 4, !tbaa !9
  %608 = load float, ptr %72, align 4, !tbaa !15
  %609 = load ptr, ptr %20, align 8, !tbaa !5
  %610 = load i32, ptr %32, align 4, !tbaa !9
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds %struct.complex, ptr %609, i64 %611
  %613 = getelementptr inbounds %struct.complex, ptr %612, i32 0, i32 0
  store float %608, ptr %613, align 4, !tbaa !11
  %614 = load ptr, ptr %20, align 8, !tbaa !5
  %615 = load i32, ptr %32, align 4, !tbaa !9
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds %struct.complex, ptr %614, i64 %616
  %618 = getelementptr inbounds %struct.complex, ptr %617, i32 0, i32 1
  store float 0.000000e+00, ptr %618, align 4, !tbaa !14
  %619 = load float, ptr %72, align 4, !tbaa !15
  %620 = load ptr, ptr %23, align 8, !tbaa !5
  %621 = load i32, ptr %47, align 4, !tbaa !9
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds float, ptr %620, i64 %622
  store float %619, ptr %623, align 4, !tbaa !15
  %624 = load float, ptr %72, align 4, !tbaa !15
  %625 = fcmp une float %624, 0.000000e+00
  br i1 %625, label %626, label %643

626:                                              ; preds = %574
  %627 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 0
  %628 = load float, ptr %627, align 4, !tbaa !11
  %629 = load float, ptr %72, align 4, !tbaa !15
  %630 = fdiv float %628, %629
  %631 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  store float %630, ptr %631, align 4, !tbaa !11
  %632 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 1
  %633 = load float, ptr %632, align 4, !tbaa !14
  %634 = load float, ptr %72, align 4, !tbaa !15
  %635 = fdiv float %633, %634
  %636 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  store float %635, ptr %636, align 4, !tbaa !14
  %637 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %638 = load float, ptr %637, align 4, !tbaa !11
  %639 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 0
  store float %638, ptr %639, align 4, !tbaa !11
  %640 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %641 = load float, ptr %640, align 4, !tbaa !14
  %642 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 1
  store float %641, ptr %642, align 4, !tbaa !14
  br label %646

643:                                              ; preds = %574
  %644 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 0
  store float 1.000000e+00, ptr %644, align 4, !tbaa !11
  %645 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 1
  store float 0.000000e+00, ptr %645, align 4, !tbaa !14
  br label %646

646:                                              ; preds = %643, %626
  %647 = load i32, ptr %47, align 4, !tbaa !9
  %648 = load ptr, ptr %18, align 8, !tbaa !5
  %649 = load i32, ptr %648, align 4, !tbaa !9
  %650 = sub nsw i32 %649, 1
  %651 = icmp slt i32 %647, %650
  br i1 %651, label %652, label %718

652:                                              ; preds = %646
  %653 = load i32, ptr %45, align 4, !tbaa !9
  %654 = load i32, ptr %47, align 4, !tbaa !9
  %655 = add nsw i32 %654, 1
  %656 = load i32, ptr %29, align 4, !tbaa !9
  %657 = mul nsw i32 %655, %656
  %658 = add nsw i32 %653, %657
  store i32 %658, ptr %32, align 4, !tbaa !9
  %659 = load i32, ptr %45, align 4, !tbaa !9
  %660 = load i32, ptr %47, align 4, !tbaa !9
  %661 = add nsw i32 %660, 1
  %662 = load i32, ptr %29, align 4, !tbaa !9
  %663 = mul nsw i32 %661, %662
  %664 = add nsw i32 %659, %663
  store i32 %664, ptr %33, align 4, !tbaa !9
  %665 = load ptr, ptr %20, align 8, !tbaa !5
  %666 = load i32, ptr %33, align 4, !tbaa !9
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds %struct.complex, ptr %665, i64 %667
  %669 = getelementptr inbounds %struct.complex, ptr %668, i32 0, i32 0
  %670 = load float, ptr %669, align 4, !tbaa !11
  %671 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 0
  %672 = load float, ptr %671, align 4, !tbaa !11
  %673 = load ptr, ptr %20, align 8, !tbaa !5
  %674 = load i32, ptr %33, align 4, !tbaa !9
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds %struct.complex, ptr %673, i64 %675
  %677 = getelementptr inbounds %struct.complex, ptr %676, i32 0, i32 1
  %678 = load float, ptr %677, align 4, !tbaa !14
  %679 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 1
  %680 = load float, ptr %679, align 4, !tbaa !14
  %681 = fmul float %678, %680
  %682 = fneg float %681
  %683 = call float @llvm.fmuladd.f32(float %670, float %672, float %682)
  %684 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  store float %683, ptr %684, align 4, !tbaa !11
  %685 = load ptr, ptr %20, align 8, !tbaa !5
  %686 = load i32, ptr %33, align 4, !tbaa !9
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds %struct.complex, ptr %685, i64 %687
  %689 = getelementptr inbounds %struct.complex, ptr %688, i32 0, i32 0
  %690 = load float, ptr %689, align 4, !tbaa !11
  %691 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 1
  %692 = load float, ptr %691, align 4, !tbaa !14
  %693 = load ptr, ptr %20, align 8, !tbaa !5
  %694 = load i32, ptr %33, align 4, !tbaa !9
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds %struct.complex, ptr %693, i64 %695
  %697 = getelementptr inbounds %struct.complex, ptr %696, i32 0, i32 1
  %698 = load float, ptr %697, align 4, !tbaa !14
  %699 = getelementptr inbounds %struct.complex, ptr %80, i32 0, i32 0
  %700 = load float, ptr %699, align 4, !tbaa !11
  %701 = fmul float %698, %700
  %702 = call float @llvm.fmuladd.f32(float %690, float %692, float %701)
  %703 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  store float %702, ptr %703, align 4, !tbaa !14
  %704 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %705 = load float, ptr %704, align 4, !tbaa !11
  %706 = load ptr, ptr %20, align 8, !tbaa !5
  %707 = load i32, ptr %32, align 4, !tbaa !9
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds %struct.complex, ptr %706, i64 %708
  %710 = getelementptr inbounds %struct.complex, ptr %709, i32 0, i32 0
  store float %705, ptr %710, align 4, !tbaa !11
  %711 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %712 = load float, ptr %711, align 4, !tbaa !14
  %713 = load ptr, ptr %20, align 8, !tbaa !5
  %714 = load i32, ptr %32, align 4, !tbaa !9
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds %struct.complex, ptr %713, i64 %715
  %717 = getelementptr inbounds %struct.complex, ptr %716, i32 0, i32 1
  store float %712, ptr %717, align 4, !tbaa !14
  br label %718

718:                                              ; preds = %652, %646
  br label %719

719:                                              ; preds = %718
  %720 = load i32, ptr %47, align 4, !tbaa !9
  %721 = add nsw i32 %720, 1
  store i32 %721, ptr %47, align 4, !tbaa !9
  br label %570, !llvm.loop !21

722:                                              ; preds = %570
  br label %723

723:                                              ; preds = %722, %565
  %724 = load ptr, ptr %24, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.complex, ptr %724, i64 1
  %726 = getelementptr inbounds %struct.complex, ptr %725, i32 0, i32 0
  store float 1.000000e+00, ptr %726, align 4, !tbaa !11
  %727 = load ptr, ptr %24, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.complex, ptr %727, i64 1
  %729 = getelementptr inbounds %struct.complex, ptr %728, i32 0, i32 1
  store float 0.000000e+00, ptr %729, align 4, !tbaa !14
  %730 = load ptr, ptr %26, align 8, !tbaa !5
  %731 = getelementptr inbounds %struct.complex, ptr %730, i64 1
  %732 = getelementptr inbounds %struct.complex, ptr %731, i32 0, i32 0
  store float 1.000000e+00, ptr %732, align 4, !tbaa !11
  %733 = load ptr, ptr %26, align 8, !tbaa !5
  %734 = getelementptr inbounds %struct.complex, ptr %733, i64 1
  %735 = getelementptr inbounds %struct.complex, ptr %734, i32 0, i32 1
  store float 0.000000e+00, ptr %735, align 4, !tbaa !14
  store i32 1, ptr %86, align 4
  br label %1140

736:                                              ; preds = %374
  %737 = load ptr, ptr %18, align 8, !tbaa !5
  %738 = load i32, ptr %737, align 4, !tbaa !9
  store i32 %738, ptr %85, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  store i32 3, ptr %55, align 4, !tbaa !9
  %739 = load ptr, ptr %18, align 8, !tbaa !5
  %740 = load i32, ptr %739, align 4, !tbaa !9
  %741 = sitofp i32 %740 to float
  %742 = load ptr, ptr %19, align 8, !tbaa !5
  %743 = load i32, ptr %742, align 4, !tbaa !9
  %744 = sitofp i32 %743 to float
  %745 = fdiv float %741, %744
  %746 = fadd float %745, 5.000000e-01
  store float %746, ptr %36, align 4, !tbaa !15
  %747 = load float, ptr %36, align 4, !tbaa !15
  %748 = fcmp ogt float %747, 0.000000e+00
  br i1 %748, label %749, label %753

749:                                              ; preds = %736
  %750 = load float, ptr %36, align 4, !tbaa !15
  %751 = fpext float %750 to double
  %752 = call double @llvm.floor.f64(double %751)
  br label %759

753:                                              ; preds = %736
  %754 = load float, ptr %36, align 4, !tbaa !15
  %755 = fneg float %754
  %756 = fpext float %755 to double
  %757 = call double @llvm.floor.f64(double %756)
  %758 = fneg double %757
  br label %759

759:                                              ; preds = %753, %749
  %760 = phi double [ %752, %749 ], [ %758, %753 ]
  %761 = fptosi double %760 to i32
  store i32 %761, ptr %83, align 4, !tbaa !9
  %762 = load i32, ptr %55, align 4, !tbaa !9
  %763 = sitofp i32 %762 to float
  %764 = load i32, ptr %62, align 4, !tbaa !9
  %765 = sitofp i32 %764 to float
  %766 = fdiv float %763, %765
  %767 = fadd float %766, 5.000000e-01
  store float %767, ptr %36, align 4, !tbaa !15
  %768 = load float, ptr %36, align 4, !tbaa !15
  %769 = fcmp ogt float %768, 0.000000e+00
  br i1 %769, label %770, label %774

770:                                              ; preds = %759
  %771 = load float, ptr %36, align 4, !tbaa !15
  %772 = fpext float %771 to double
  %773 = call double @llvm.floor.f64(double %772)
  br label %780

774:                                              ; preds = %759
  %775 = load float, ptr %36, align 4, !tbaa !15
  %776 = fneg float %775
  %777 = fpext float %776 to double
  %778 = call double @llvm.floor.f64(double %777)
  %779 = fneg double %778
  br label %780

780:                                              ; preds = %774, %770
  %781 = phi double [ %773, %770 ], [ %779, %774 ]
  %782 = fptosi double %781 to i32
  store i32 %782, ptr %64, align 4, !tbaa !9
  %783 = load ptr, ptr %18, align 8, !tbaa !5
  %784 = load i32, ptr %783, align 4, !tbaa !9
  %785 = sub nsw i32 %784, 1
  %786 = sitofp i32 %785 to float
  %787 = load i32, ptr %85, align 4, !tbaa !9
  %788 = sitofp i32 %787 to float
  %789 = fdiv float %786, %788
  %790 = fadd float %789, 5.000000e-01
  store float %790, ptr %36, align 4, !tbaa !15
  %791 = load float, ptr %36, align 4, !tbaa !15
  %792 = fcmp ogt float %791, 0.000000e+00
  br i1 %792, label %793, label %797

793:                                              ; preds = %780
  %794 = load float, ptr %36, align 4, !tbaa !15
  %795 = fpext float %794 to double
  %796 = call double @llvm.floor.f64(double %795)
  br label %803

797:                                              ; preds = %780
  %798 = load float, ptr %36, align 4, !tbaa !15
  %799 = fneg float %798
  %800 = fpext float %799 to double
  %801 = call double @llvm.floor.f64(double %800)
  %802 = fneg double %801
  br label %803

803:                                              ; preds = %797, %793
  %804 = phi double [ %796, %793 ], [ %802, %797 ]
  %805 = fptosi double %804 to i32
  store i32 %805, ptr %70, align 4, !tbaa !9
  %806 = load ptr, ptr %19, align 8, !tbaa !5
  %807 = load i32, ptr %806, align 4, !tbaa !9
  %808 = add nsw i32 %807, 1
  store i32 %808, ptr %31, align 4, !tbaa !9
  %809 = load ptr, ptr %18, align 8, !tbaa !5
  %810 = load ptr, ptr %20, align 8, !tbaa !5
  %811 = load i32, ptr %30, align 4, !tbaa !9
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds %struct.complex, ptr %810, i64 %812
  %814 = load ptr, ptr %21, align 8, !tbaa !5
  %815 = load ptr, ptr %26, align 8, !tbaa !5
  %816 = load i32, ptr %43, align 4, !tbaa !9
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds %struct.complex, ptr %815, i64 %817
  call void @clacpy_(ptr noundef @.str.6, ptr noundef %31, ptr noundef %809, ptr noundef %813, ptr noundef %814, ptr noundef %818, ptr noundef %77)
  %819 = load ptr, ptr %19, align 8, !tbaa !5
  %820 = load ptr, ptr %18, align 8, !tbaa !5
  %821 = load ptr, ptr %26, align 8, !tbaa !5
  %822 = load i32, ptr %59, align 4, !tbaa !9
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds %struct.complex, ptr %821, i64 %823
  call void @claset_(ptr noundef @.str.6, ptr noundef %819, ptr noundef %820, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %824, ptr noundef %77)
  %825 = load i32, ptr %70, align 4, !tbaa !9
  store i32 %825, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %826

826:                                              ; preds = %1033, %803
  %827 = load i32, ptr %69, align 4, !tbaa !9
  %828 = load i32, ptr %31, align 4, !tbaa !9
  %829 = icmp sle i32 %827, %828
  br i1 %829, label %830, label %1036

830:                                              ; preds = %826
  %831 = load i32, ptr %69, align 4, !tbaa !9
  %832 = sub nsw i32 %831, 1
  %833 = load i32, ptr %85, align 4, !tbaa !9
  %834 = mul nsw i32 %832, %833
  %835 = add nsw i32 %834, 1
  store i32 %835, ptr %81, align 4, !tbaa !9
  %836 = load i32, ptr %81, align 4, !tbaa !9
  %837 = load i32, ptr %85, align 4, !tbaa !9
  %838 = add nsw i32 %836, %837
  %839 = sub nsw i32 %838, 1
  store i32 %839, ptr %32, align 4, !tbaa !9
  %840 = load ptr, ptr %18, align 8, !tbaa !5
  %841 = load i32, ptr %840, align 4, !tbaa !9
  %842 = sub nsw i32 %841, 1
  store i32 %842, ptr %33, align 4, !tbaa !9
  %843 = load i32, ptr %32, align 4, !tbaa !9
  %844 = load i32, ptr %33, align 4, !tbaa !9
  %845 = icmp sle i32 %843, %844
  br i1 %845, label %846, label %848

846:                                              ; preds = %830
  %847 = load i32, ptr %32, align 4, !tbaa !9
  br label %850

848:                                              ; preds = %830
  %849 = load i32, ptr %33, align 4, !tbaa !9
  br label %850

850:                                              ; preds = %848, %846
  %851 = phi i32 [ %847, %846 ], [ %849, %848 ]
  store i32 %851, ptr %39, align 4, !tbaa !9
  %852 = load ptr, ptr %18, align 8, !tbaa !5
  %853 = load i32, ptr %852, align 4, !tbaa !9
  %854 = sub nsw i32 %853, 1
  store i32 %854, ptr %32, align 4, !tbaa !9
  %855 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %855, ptr %47, align 4, !tbaa !9
  br label %856

856:                                              ; preds = %1029, %850
  %857 = load i32, ptr %47, align 4, !tbaa !9
  %858 = load i32, ptr %32, align 4, !tbaa !9
  %859 = icmp sle i32 %857, %858
  br i1 %859, label %860, label %1032

860:                                              ; preds = %856
  %861 = load i32, ptr %47, align 4, !tbaa !9
  %862 = load i32, ptr %39, align 4, !tbaa !9
  %863 = icmp sle i32 %861, %862
  br i1 %863, label %864, label %866

864:                                              ; preds = %860
  %865 = load i32, ptr %47, align 4, !tbaa !9
  br label %868

866:                                              ; preds = %860
  %867 = load i32, ptr %39, align 4, !tbaa !9
  br label %868

868:                                              ; preds = %866, %864
  %869 = phi i32 [ %865, %864 ], [ %867, %866 ]
  store i32 %869, ptr %65, align 4, !tbaa !9
  %870 = load i32, ptr %81, align 4, !tbaa !9
  %871 = load i32, ptr %65, align 4, !tbaa !9
  %872 = icmp sgt i32 %870, %871
  br i1 %872, label %873, label %874

873:                                              ; preds = %868
  br label %1032

874:                                              ; preds = %868
  %875 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %875, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %876

876:                                              ; preds = %1025, %874
  %877 = load i32, ptr %49, align 4, !tbaa !9
  %878 = load i32, ptr %33, align 4, !tbaa !9
  %879 = icmp sle i32 %877, %878
  br i1 %879, label %880, label %1028

880:                                              ; preds = %876
  %881 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %881, ptr %67, align 4, !tbaa !9
  %882 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %882, ptr %34, align 4, !tbaa !9
  %883 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %883, ptr %82, align 4, !tbaa !9
  br label %884

884:                                              ; preds = %1021, %880
  %885 = load i32, ptr %82, align 4, !tbaa !9
  %886 = load i32, ptr %34, align 4, !tbaa !9
  %887 = icmp sle i32 %885, %886
  br i1 %887, label %888, label %1024

888:                                              ; preds = %884
  %889 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %889, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %890

890:                                              ; preds = %1017, %888
  %891 = load i32, ptr %48, align 4, !tbaa !9
  %892 = load i32, ptr %35, align 4, !tbaa !9
  %893 = icmp sle i32 %891, %892
  br i1 %893, label %894, label %1020

894:                                              ; preds = %890
  %895 = load i32, ptr %47, align 4, !tbaa !9
  %896 = load i32, ptr %82, align 4, !tbaa !9
  %897 = sub nsw i32 %895, %896
  %898 = load i32, ptr %64, align 4, !tbaa !9
  %899 = load i32, ptr %62, align 4, !tbaa !9
  %900 = mul nsw i32 %898, %899
  %901 = mul nsw i32 %897, %900
  %902 = load i32, ptr %49, align 4, !tbaa !9
  %903 = sub nsw i32 %902, 1
  %904 = load i32, ptr %62, align 4, !tbaa !9
  %905 = mul nsw i32 %903, %904
  %906 = add nsw i32 %901, %905
  %907 = load i32, ptr %48, align 4, !tbaa !9
  %908 = add nsw i32 %906, %907
  store i32 %908, ptr %41, align 4, !tbaa !9
  %909 = load i32, ptr %41, align 4, !tbaa !9
  %910 = icmp eq i32 %909, 1
  br i1 %910, label %911, label %912

911:                                              ; preds = %894
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %916

912:                                              ; preds = %894
  %913 = load i32, ptr %41, align 4, !tbaa !9
  %914 = srem i32 %913, 2
  %915 = add nsw i32 %914, 2
  store i32 %915, ptr %63, align 4, !tbaa !9
  br label %916

916:                                              ; preds = %912, %911
  %917 = load i32, ptr %63, align 4, !tbaa !9
  %918 = icmp eq i32 %917, 2
  br i1 %918, label %919, label %944

919:                                              ; preds = %916
  %920 = load i32, ptr %41, align 4, !tbaa !9
  %921 = sdiv i32 %920, 2
  %922 = load ptr, ptr %19, align 8, !tbaa !5
  %923 = load i32, ptr %922, align 4, !tbaa !9
  %924 = mul nsw i32 %921, %923
  %925 = load i32, ptr %82, align 4, !tbaa !9
  %926 = add nsw i32 %924, %925
  store i32 %926, ptr %57, align 4, !tbaa !9
  %927 = load i32, ptr %57, align 4, !tbaa !9
  %928 = load ptr, ptr %19, align 8, !tbaa !5
  %929 = load i32, ptr %928, align 4, !tbaa !9
  %930 = sub nsw i32 %927, %929
  %931 = add nsw i32 %930, 1
  store i32 %931, ptr %56, align 4, !tbaa !9
  %932 = load i32, ptr %57, align 4, !tbaa !9
  %933 = load ptr, ptr %18, align 8, !tbaa !5
  %934 = load i32, ptr %933, align 4, !tbaa !9
  %935 = icmp sle i32 %932, %934
  br i1 %935, label %936, label %938

936:                                              ; preds = %919
  %937 = load i32, ptr %57, align 4, !tbaa !9
  br label %941

938:                                              ; preds = %919
  %939 = load ptr, ptr %18, align 8, !tbaa !5
  %940 = load i32, ptr %939, align 4, !tbaa !9
  br label %941

941:                                              ; preds = %938, %936
  %942 = phi i32 [ %937, %936 ], [ %940, %938 ]
  store i32 %942, ptr %50, align 4, !tbaa !9
  %943 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %943, ptr %74, align 4, !tbaa !9
  br label %983

944:                                              ; preds = %916
  %945 = load i32, ptr %41, align 4, !tbaa !9
  %946 = add nsw i32 %945, 1
  %947 = sdiv i32 %946, 2
  %948 = load ptr, ptr %19, align 8, !tbaa !5
  %949 = load i32, ptr %948, align 4, !tbaa !9
  %950 = mul nsw i32 %947, %949
  %951 = load i32, ptr %82, align 4, !tbaa !9
  %952 = add nsw i32 %950, %951
  store i32 %952, ptr %57, align 4, !tbaa !9
  %953 = load i32, ptr %57, align 4, !tbaa !9
  %954 = load ptr, ptr %19, align 8, !tbaa !5
  %955 = load i32, ptr %954, align 4, !tbaa !9
  %956 = sub nsw i32 %953, %955
  %957 = add nsw i32 %956, 1
  store i32 %957, ptr %56, align 4, !tbaa !9
  %958 = load i32, ptr %57, align 4, !tbaa !9
  %959 = load ptr, ptr %18, align 8, !tbaa !5
  %960 = load i32, ptr %959, align 4, !tbaa !9
  %961 = icmp sle i32 %958, %960
  br i1 %961, label %962, label %964

962:                                              ; preds = %944
  %963 = load i32, ptr %57, align 4, !tbaa !9
  br label %967

964:                                              ; preds = %944
  %965 = load ptr, ptr %18, align 8, !tbaa !5
  %966 = load i32, ptr %965, align 4, !tbaa !9
  br label %967

967:                                              ; preds = %964, %962
  %968 = phi i32 [ %963, %962 ], [ %966, %964 ]
  store i32 %968, ptr %50, align 4, !tbaa !9
  %969 = load i32, ptr %56, align 4, !tbaa !9
  %970 = load i32, ptr %50, align 4, !tbaa !9
  %971 = sub nsw i32 %970, 1
  %972 = icmp sge i32 %969, %971
  br i1 %972, label %973, label %981

973:                                              ; preds = %967
  %974 = load i32, ptr %50, align 4, !tbaa !9
  %975 = load ptr, ptr %18, align 8, !tbaa !5
  %976 = load i32, ptr %975, align 4, !tbaa !9
  %977 = icmp eq i32 %974, %976
  br i1 %977, label %978, label %981

978:                                              ; preds = %973
  %979 = load ptr, ptr %18, align 8, !tbaa !5
  %980 = load i32, ptr %979, align 4, !tbaa !9
  store i32 %980, ptr %74, align 4, !tbaa !9
  br label %982

981:                                              ; preds = %973, %967
  store i32 0, ptr %74, align 4, !tbaa !9
  br label %982

982:                                              ; preds = %981, %978
  br label %983

983:                                              ; preds = %982, %941
  %984 = load ptr, ptr %17, align 8, !tbaa !5
  %985 = load ptr, ptr %18, align 8, !tbaa !5
  %986 = load ptr, ptr %19, align 8, !tbaa !5
  %987 = load ptr, ptr %26, align 8, !tbaa !5
  %988 = load i32, ptr %38, align 4, !tbaa !9
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds %struct.complex, ptr %987, i64 %989
  %991 = load ptr, ptr %24, align 8, !tbaa !5
  %992 = load i32, ptr %40, align 4, !tbaa !9
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds %struct.complex, ptr %991, i64 %993
  %995 = load ptr, ptr %24, align 8, !tbaa !5
  %996 = load i32, ptr %71, align 4, !tbaa !9
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds %struct.complex, ptr %995, i64 %997
  %999 = load ptr, ptr %26, align 8, !tbaa !5
  %1000 = load i32, ptr %42, align 4, !tbaa !9
  %1001 = load i32, ptr %78, align 4, !tbaa !9
  %1002 = load ptr, ptr %19, align 8, !tbaa !5
  %1003 = load i32, ptr %1002, align 4, !tbaa !9
  %1004 = mul nsw i32 %1001, %1003
  %1005 = add nsw i32 %1000, %1004
  %1006 = sext i32 %1005 to i64
  %1007 = getelementptr inbounds %struct.complex, ptr %999, i64 %1006
  call void @chb2st_kernels_(ptr noundef %984, ptr noundef %60, ptr noundef %63, ptr noundef %56, ptr noundef %50, ptr noundef %82, ptr noundef %985, ptr noundef %986, ptr noundef %66, ptr noundef %990, ptr noundef %77, ptr noundef %994, ptr noundef %998, ptr noundef %79, ptr noundef %1007)
  %1008 = load i32, ptr %74, align 4, !tbaa !9
  %1009 = load ptr, ptr %18, align 8, !tbaa !5
  %1010 = load i32, ptr %1009, align 4, !tbaa !9
  %1011 = sub nsw i32 %1010, 1
  %1012 = icmp sge i32 %1008, %1011
  br i1 %1012, label %1013, label %1016

1013:                                             ; preds = %983
  %1014 = load i32, ptr %81, align 4, !tbaa !9
  %1015 = add nsw i32 %1014, 1
  store i32 %1015, ptr %81, align 4, !tbaa !9
  br label %1020

1016:                                             ; preds = %983
  br label %1017

1017:                                             ; preds = %1016
  %1018 = load i32, ptr %48, align 4, !tbaa !9
  %1019 = add nsw i32 %1018, 1
  store i32 %1019, ptr %48, align 4, !tbaa !9
  br label %890, !llvm.loop !22

1020:                                             ; preds = %1013, %890
  br label %1021

1021:                                             ; preds = %1020
  %1022 = load i32, ptr %82, align 4, !tbaa !9
  %1023 = add nsw i32 %1022, 1
  store i32 %1023, ptr %82, align 4, !tbaa !9
  br label %884, !llvm.loop !23

1024:                                             ; preds = %884
  br label %1025

1025:                                             ; preds = %1024
  %1026 = load i32, ptr %49, align 4, !tbaa !9
  %1027 = add nsw i32 %1026, 1
  store i32 %1027, ptr %49, align 4, !tbaa !9
  br label %876, !llvm.loop !24

1028:                                             ; preds = %876
  br label %1029

1029:                                             ; preds = %1028
  %1030 = load i32, ptr %47, align 4, !tbaa !9
  %1031 = add nsw i32 %1030, 1
  store i32 %1031, ptr %47, align 4, !tbaa !9
  br label %856, !llvm.loop !25

1032:                                             ; preds = %873, %856
  br label %1033

1033:                                             ; preds = %1032
  %1034 = load i32, ptr %69, align 4, !tbaa !9
  %1035 = add nsw i32 %1034, 1
  store i32 %1035, ptr %69, align 4, !tbaa !9
  br label %826, !llvm.loop !26

1036:                                             ; preds = %826
  %1037 = load ptr, ptr %18, align 8, !tbaa !5
  %1038 = load i32, ptr %1037, align 4, !tbaa !9
  store i32 %1038, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %1039

1039:                                             ; preds = %1060, %1036
  %1040 = load i32, ptr %47, align 4, !tbaa !9
  %1041 = load i32, ptr %31, align 4, !tbaa !9
  %1042 = icmp sle i32 %1040, %1041
  br i1 %1042, label %1043, label %1063

1043:                                             ; preds = %1039
  %1044 = load i32, ptr %44, align 4, !tbaa !9
  %1045 = load i32, ptr %47, align 4, !tbaa !9
  %1046 = sub nsw i32 %1045, 1
  %1047 = load i32, ptr %77, align 4, !tbaa !9
  %1048 = mul nsw i32 %1046, %1047
  %1049 = add nsw i32 %1044, %1048
  store i32 %1049, ptr %32, align 4, !tbaa !9
  %1050 = load ptr, ptr %26, align 8, !tbaa !5
  %1051 = load i32, ptr %32, align 4, !tbaa !9
  %1052 = sext i32 %1051 to i64
  %1053 = getelementptr inbounds %struct.complex, ptr %1050, i64 %1052
  %1054 = getelementptr inbounds %struct.complex, ptr %1053, i32 0, i32 0
  %1055 = load float, ptr %1054, align 4, !tbaa !11
  %1056 = load ptr, ptr %22, align 8, !tbaa !5
  %1057 = load i32, ptr %47, align 4, !tbaa !9
  %1058 = sext i32 %1057 to i64
  %1059 = getelementptr inbounds float, ptr %1056, i64 %1058
  store float %1055, ptr %1059, align 4, !tbaa !15
  br label %1060

1060:                                             ; preds = %1043
  %1061 = load i32, ptr %47, align 4, !tbaa !9
  %1062 = add nsw i32 %1061, 1
  store i32 %1062, ptr %47, align 4, !tbaa !9
  br label %1039, !llvm.loop !27

1063:                                             ; preds = %1039
  %1064 = load i32, ptr %61, align 4, !tbaa !9
  %1065 = icmp ne i32 %1064, 0
  br i1 %1065, label %1066, label %1094

1066:                                             ; preds = %1063
  %1067 = load ptr, ptr %18, align 8, !tbaa !5
  %1068 = load i32, ptr %1067, align 4, !tbaa !9
  %1069 = sub nsw i32 %1068, 1
  store i32 %1069, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %1070

1070:                                             ; preds = %1090, %1066
  %1071 = load i32, ptr %47, align 4, !tbaa !9
  %1072 = load i32, ptr %31, align 4, !tbaa !9
  %1073 = icmp sle i32 %1071, %1072
  br i1 %1073, label %1074, label %1093

1074:                                             ; preds = %1070
  %1075 = load i32, ptr %73, align 4, !tbaa !9
  %1076 = load i32, ptr %47, align 4, !tbaa !9
  %1077 = load i32, ptr %77, align 4, !tbaa !9
  %1078 = mul nsw i32 %1076, %1077
  %1079 = add nsw i32 %1075, %1078
  store i32 %1079, ptr %32, align 4, !tbaa !9
  %1080 = load ptr, ptr %26, align 8, !tbaa !5
  %1081 = load i32, ptr %32, align 4, !tbaa !9
  %1082 = sext i32 %1081 to i64
  %1083 = getelementptr inbounds %struct.complex, ptr %1080, i64 %1082
  %1084 = getelementptr inbounds %struct.complex, ptr %1083, i32 0, i32 0
  %1085 = load float, ptr %1084, align 4, !tbaa !11
  %1086 = load ptr, ptr %23, align 8, !tbaa !5
  %1087 = load i32, ptr %47, align 4, !tbaa !9
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds float, ptr %1086, i64 %1088
  store float %1085, ptr %1089, align 4, !tbaa !15
  br label %1090

1090:                                             ; preds = %1074
  %1091 = load i32, ptr %47, align 4, !tbaa !9
  %1092 = add nsw i32 %1091, 1
  store i32 %1092, ptr %47, align 4, !tbaa !9
  br label %1070, !llvm.loop !28

1093:                                             ; preds = %1070
  br label %1123

1094:                                             ; preds = %1063
  %1095 = load ptr, ptr %18, align 8, !tbaa !5
  %1096 = load i32, ptr %1095, align 4, !tbaa !9
  %1097 = sub nsw i32 %1096, 1
  store i32 %1097, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %1098

1098:                                             ; preds = %1119, %1094
  %1099 = load i32, ptr %47, align 4, !tbaa !9
  %1100 = load i32, ptr %31, align 4, !tbaa !9
  %1101 = icmp sle i32 %1099, %1100
  br i1 %1101, label %1102, label %1122

1102:                                             ; preds = %1098
  %1103 = load i32, ptr %73, align 4, !tbaa !9
  %1104 = load i32, ptr %47, align 4, !tbaa !9
  %1105 = sub nsw i32 %1104, 1
  %1106 = load i32, ptr %77, align 4, !tbaa !9
  %1107 = mul nsw i32 %1105, %1106
  %1108 = add nsw i32 %1103, %1107
  store i32 %1108, ptr %32, align 4, !tbaa !9
  %1109 = load ptr, ptr %26, align 8, !tbaa !5
  %1110 = load i32, ptr %32, align 4, !tbaa !9
  %1111 = sext i32 %1110 to i64
  %1112 = getelementptr inbounds %struct.complex, ptr %1109, i64 %1111
  %1113 = getelementptr inbounds %struct.complex, ptr %1112, i32 0, i32 0
  %1114 = load float, ptr %1113, align 4, !tbaa !11
  %1115 = load ptr, ptr %23, align 8, !tbaa !5
  %1116 = load i32, ptr %47, align 4, !tbaa !9
  %1117 = sext i32 %1116 to i64
  %1118 = getelementptr inbounds float, ptr %1115, i64 %1117
  store float %1114, ptr %1118, align 4, !tbaa !15
  br label %1119

1119:                                             ; preds = %1102
  %1120 = load i32, ptr %47, align 4, !tbaa !9
  %1121 = add nsw i32 %1120, 1
  store i32 %1121, ptr %47, align 4, !tbaa !9
  br label %1098, !llvm.loop !29

1122:                                             ; preds = %1098
  br label %1123

1123:                                             ; preds = %1122, %1093
  %1124 = load i32, ptr %52, align 4, !tbaa !9
  %1125 = sitofp i32 %1124 to float
  %1126 = load ptr, ptr %24, align 8, !tbaa !5
  %1127 = getelementptr inbounds %struct.complex, ptr %1126, i64 1
  %1128 = getelementptr inbounds %struct.complex, ptr %1127, i32 0, i32 0
  store float %1125, ptr %1128, align 4, !tbaa !11
  %1129 = load ptr, ptr %24, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct.complex, ptr %1129, i64 1
  %1131 = getelementptr inbounds %struct.complex, ptr %1130, i32 0, i32 1
  store float 0.000000e+00, ptr %1131, align 4, !tbaa !14
  %1132 = load i32, ptr %58, align 4, !tbaa !9
  %1133 = sitofp i32 %1132 to float
  %1134 = load ptr, ptr %26, align 8, !tbaa !5
  %1135 = getelementptr inbounds %struct.complex, ptr %1134, i64 1
  %1136 = getelementptr inbounds %struct.complex, ptr %1135, i32 0, i32 0
  store float %1133, ptr %1136, align 4, !tbaa !11
  %1137 = load ptr, ptr %26, align 8, !tbaa !5
  %1138 = getelementptr inbounds %struct.complex, ptr %1137, i64 1
  %1139 = getelementptr inbounds %struct.complex, ptr %1138, i32 0, i32 1
  store float 0.000000e+00, ptr %1139, align 4, !tbaa !14
  store i32 1, ptr %86, align 4
  br label %1140

1140:                                             ; preds = %1123, %723, %361, %248, %242, %234
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  ret void
}

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

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

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

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

; Function Attrs: nounwind
declare float @cabsf(<2 x float> noundef) #3

; Function Attrs: inlinehint nounwind uwtable
declare hidden <2 x float> @Cf(ptr noundef) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #5

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

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

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

declare void @chb2st_kernels_(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

; 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"="64" "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 = { inlinehint nounwind uwtable "min-legal-vector-width"="64" "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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nounwind }

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

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


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

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__2 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [13 x i8], align 1
@c_n1 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4
@c__4 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4

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

37:                                               ; preds = %14
  %38 = load i32, ptr %10, align 4, !tbaa !5
  %39 = icmp eq i32 %38, -1
  br label %40

40:                                               ; preds = %37, %14
  %41 = phi i1 [ true, %14 ], [ %39, %37 ]
  %42 = tail call i32 @ilaenv2stage_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str.3, ptr noundef %1, ptr noundef %3, ptr noundef %4, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #7
  store i32 %42, ptr %20, align 4, !tbaa !5
  %43 = call i32 @ilaenv2stage_(ptr noundef nonnull @c__3, ptr noundef nonnull @.str.3, ptr noundef %1, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %20, ptr noundef nonnull @c_n1) #7
  %44 = call i32 @ilaenv2stage_(ptr noundef nonnull @c__4, ptr noundef nonnull @.str.3, ptr noundef %1, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %20, ptr noundef nonnull @c_n1) #7
  %.not = icmp eq i32 %32, 0
  br i1 %.not, label %45, label %47

45:                                               ; preds = %40
  %46 = call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #7
  %.not392 = icmp eq i32 %46, 0
  br i1 %.not392, label %.thread.sink.split, label %47

47:                                               ; preds = %45, %40
  %48 = call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #7
  %.not393 = icmp eq i32 %48, 0
  br i1 %.not393, label %.thread.sink.split, label %49

49:                                               ; preds = %47
  %.not394 = icmp eq i32 %34, 0
  br i1 %.not394, label %50, label %52

50:                                               ; preds = %49
  %51 = call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #7
  %.not395 = icmp eq i32 %51, 0
  br i1 %.not395, label %.thread.sink.split, label %52

52:                                               ; preds = %50, %49
  %53 = load i32, ptr %3, align 4, !tbaa !5
  %54 = icmp slt i32 %53, 0
  br i1 %54, label %.thread.sink.split, label %55

55:                                               ; preds = %52
  %56 = load i32, ptr %4, align 4, !tbaa !5
  %57 = icmp slt i32 %56, 0
  br i1 %57, label %.thread.sink.split, label %58

58:                                               ; preds = %55
  %59 = load i32, ptr %6, align 4, !tbaa !5
  %.not396 = icmp sgt i32 %59, %56
  br i1 %.not396, label %60, label %.thread.sink.split

60:                                               ; preds = %58
  %61 = load i32, ptr %10, align 4, !tbaa !5
  %62 = icmp sge i32 %61, %43
  %or.cond = select i1 %62, i1 true, i1 %41
  br i1 %or.cond, label %63, label %.thread.sink.split

63:                                               ; preds = %60
  %64 = load i32, ptr %12, align 4, !tbaa !5
  %65 = icmp sge i32 %64, %44
  %or.cond3 = select i1 %65, i1 true, i1 %41
  br i1 %or.cond3, label %66, label %.thread.sink.split

66:                                               ; preds = %63
  %.pr = load i32, ptr %13, align 4, !tbaa !5
  %67 = icmp eq i32 %.pr, 0
  br i1 %67, label %70, label %.thread

.thread.sink.split:                               ; preds = %63, %60, %58, %55, %52, %50, %47, %45
  %.sink = phi i32 [ -1, %45 ], [ -2, %47 ], [ -3, %50 ], [ -4, %52 ], [ -5, %55 ], [ -7, %58 ], [ -11, %60 ], [ -13, %63 ]
  store i32 %.sink, ptr %13, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %66
  %.ph424 = phi i32 [ %.pr, %66 ], [ %.sink, %.thread.sink.split ]
  %68 = sub nsw i32 0, %.ph424
  store i32 %68, ptr %15, align 4, !tbaa !5
  %69 = call i32 @xerbla_(ptr noundef nonnull @.str.3, ptr noundef nonnull %15, i32 noundef 12) #7
  br label %423

70:                                               ; preds = %66
  %71 = sitofp i32 %43 to float
  store float %71, ptr %9, align 4, !tbaa !9
  %72 = getelementptr inbounds i8, ptr %9, i64 4
  store float 0.000000e+00, ptr %72, align 4, !tbaa !12
  %73 = sitofp i32 %44 to float
  store float %73, ptr %11, align 4, !tbaa !9
  %74 = getelementptr inbounds i8, ptr %11, i64 4
  store float 0.000000e+00, ptr %74, align 4, !tbaa !12
  br i1 %41, label %423, label %75

75:                                               ; preds = %70
  %76 = icmp eq i32 %53, 0
  br i1 %76, label %77, label %78

77:                                               ; preds = %75
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %9, align 4, !tbaa !13
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %11, align 4, !tbaa !13
  br label %423

78:                                               ; preds = %75
  %79 = load i32, ptr %20, align 4, !tbaa !5
  %80 = add nsw i32 %79, %56
  store i32 %80, ptr %22, align 4, !tbaa !5
  %81 = shl nuw i32 %53, 1
  %82 = or disjoint i32 %81, 1
  %83 = shl nuw i32 %56, 1
  %84 = or disjoint i32 %83, 1
  store i32 %84, ptr %21, align 4, !tbaa !5
  %85 = mul nsw i32 %84, %53
  br i1 %.not394, label %89, label %86

86:                                               ; preds = %78
  %87 = add nuw nsw i32 %56, 1
  %88 = add nuw nsw i32 %87, %56
  br label %91

89:                                               ; preds = %78
  %90 = add nuw nsw i32 %56, 2
  br label %91

91:                                               ; preds = %89, %86
  %.0373 = phi i32 [ 1, %86 ], [ %90, %89 ]
  %.0367 = phi i32 [ %56, %86 ], [ 2, %89 ]
  %.0366 = phi i32 [ %88, %86 ], [ 1, %89 ]
  %.0364 = phi i32 [ %87, %86 ], [ 1, %89 ]
  %.0362 = phi i32 [ %83, %86 ], [ 2, %89 ]
  switch i32 %56, label %211 [
    i32 0, label %.lr.ph446.preheader
    i32 1, label %.lr.ph.preheader
  ]

.lr.ph446.preheader:                              ; preds = %91
  %92 = sext i32 %25 to i64
  %93 = zext nneg i32 %.0364 to i64
  %invariant.gep535 = getelementptr %struct.complex, ptr %27, i64 %93
  %94 = zext nneg i32 %53 to i64
  %xtraiter562 = and i64 %94, 3
  %95 = icmp ult i32 %53, 4
  br i1 %95, label %._crit_edge447.unr-lcssa, label %.lr.ph446.preheader.new

.lr.ph446.preheader.new:                          ; preds = %.lr.ph446.preheader
  %unroll_iter565 = and i64 %94, 2147483644
  br label %.lr.ph446

.lr.ph446:                                        ; preds = %.lr.ph446, %.lr.ph446.preheader.new
  %indvars.iv494 = phi i64 [ 1, %.lr.ph446.preheader.new ], [ %indvars.iv.next495.3, %.lr.ph446 ]
  %niter566 = phi i64 [ 0, %.lr.ph446.preheader.new ], [ %niter566.next.3, %.lr.ph446 ]
  %96 = mul nsw i64 %indvars.iv494, %92
  %gep536 = getelementptr %struct.complex, ptr %invariant.gep535, i64 %96
  %97 = load float, ptr %gep536, align 4, !tbaa !9
  %98 = getelementptr inbounds float, ptr %28, i64 %indvars.iv494
  store float %97, ptr %98, align 4, !tbaa !13
  %indvars.iv.next495 = add nuw nsw i64 %indvars.iv494, 1
  %99 = mul nsw i64 %indvars.iv.next495, %92
  %gep536.1 = getelementptr %struct.complex, ptr %invariant.gep535, i64 %99
  %100 = load float, ptr %gep536.1, align 4, !tbaa !9
  %101 = getelementptr float, ptr %7, i64 %indvars.iv494
  store float %100, ptr %101, align 4, !tbaa !13
  %indvars.iv.next495.1 = add nuw nsw i64 %indvars.iv494, 2
  %102 = mul nsw i64 %indvars.iv.next495.1, %92
  %gep536.2 = getelementptr %struct.complex, ptr %invariant.gep535, i64 %102
  %103 = load float, ptr %gep536.2, align 4, !tbaa !9
  %104 = getelementptr inbounds float, ptr %28, i64 %indvars.iv.next495.1
  store float %103, ptr %104, align 4, !tbaa !13
  %indvars.iv.next495.2 = add nuw nsw i64 %indvars.iv494, 3
  %105 = mul nsw i64 %indvars.iv.next495.2, %92
  %gep536.3 = getelementptr %struct.complex, ptr %invariant.gep535, i64 %105
  %106 = load float, ptr %gep536.3, align 4, !tbaa !9
  %107 = getelementptr inbounds float, ptr %28, i64 %indvars.iv.next495.2
  store float %106, ptr %107, align 4, !tbaa !13
  %indvars.iv.next495.3 = add nuw nsw i64 %indvars.iv494, 4
  %niter566.next.3 = add nuw i64 %niter566, 4
  %niter566.ncmp.3 = icmp eq i64 %niter566.next.3, %unroll_iter565
  br i1 %niter566.ncmp.3, label %._crit_edge447.unr-lcssa, label %.lr.ph446, !llvm.loop !14

._crit_edge447.unr-lcssa:                         ; preds = %.lr.ph446, %.lr.ph446.preheader
  %indvars.iv494.unr = phi i64 [ 1, %.lr.ph446.preheader ], [ %indvars.iv.next495.3, %.lr.ph446 ]
  %lcmp.mod564.not = icmp eq i64 %xtraiter562, 0
  br i1 %lcmp.mod564.not, label %._crit_edge447, label %.lr.ph446.epil

.lr.ph446.epil:                                   ; preds = %._crit_edge447.unr-lcssa, %.lr.ph446.epil
  %indvars.iv494.epil = phi i64 [ %indvars.iv.next495.epil, %.lr.ph446.epil ], [ %indvars.iv494.unr, %._crit_edge447.unr-lcssa ]
  %epil.iter563 = phi i64 [ %epil.iter563.next, %.lr.ph446.epil ], [ 0, %._crit_edge447.unr-lcssa ]
  %108 = mul nsw i64 %indvars.iv494.epil, %92
  %gep536.epil = getelementptr %struct.complex, ptr %invariant.gep535, i64 %108
  %109 = load float, ptr %gep536.epil, align 4, !tbaa !9
  %110 = getelementptr inbounds float, ptr %28, i64 %indvars.iv494.epil
  store float %109, ptr %110, align 4, !tbaa !13
  %indvars.iv.next495.epil = add nuw nsw i64 %indvars.iv494.epil, 1
  %epil.iter563.next = add i64 %epil.iter563, 1
  %epil.iter563.cmp.not = icmp eq i64 %epil.iter563.next, %xtraiter562
  br i1 %epil.iter563.cmp.not, label %._crit_edge447, label %.lr.ph446.epil, !llvm.loop !16

._crit_edge447:                                   ; preds = %.lr.ph446.epil, %._crit_edge447.unr-lcssa
  %.not420.not448 = icmp sgt i32 %53, 1
  br i1 %.not420.not448, label %.lr.ph451.preheader, label %._crit_edge452

.lr.ph451.preheader:                              ; preds = %._crit_edge447
  %111 = add nsw i32 %53, -1
  %112 = zext nneg i32 %111 to i64
  %113 = shl nuw nsw i64 %112, 2
  call void @llvm.memset.p0.i64(ptr align 4 %8, i8 0, i64 %113, i1 false), !tbaa !13
  br label %._crit_edge452

._crit_edge452:                                   ; preds = %.lr.ph451.preheader, %._crit_edge447
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %9, align 4, !tbaa !13
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %11, align 4, !tbaa !13
  br label %423

.lr.ph.preheader:                                 ; preds = %91
  %114 = sext i32 %25 to i64
  %115 = zext nneg i32 %.0364 to i64
  %invariant.gep = getelementptr %struct.complex, ptr %27, i64 %115
  %116 = zext nneg i32 %53 to i64
  %xtraiter = and i64 %116, 3
  %117 = icmp ult i32 %53, 4
  br i1 %117, label %._crit_edge.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %116, 2147483644
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader.new ], [ %indvars.iv.next.3, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.3, %.lr.ph ]
  %118 = mul nsw i64 %indvars.iv, %114
  %gep526 = getelementptr %struct.complex, ptr %invariant.gep, i64 %118
  %119 = load float, ptr %gep526, align 4, !tbaa !9
  %120 = getelementptr inbounds float, ptr %28, i64 %indvars.iv
  store float %119, ptr %120, align 4, !tbaa !13
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %121 = mul nsw i64 %indvars.iv.next, %114
  %gep526.1 = getelementptr %struct.complex, ptr %invariant.gep, i64 %121
  %122 = load float, ptr %gep526.1, align 4, !tbaa !9
  %123 = getelementptr float, ptr %7, i64 %indvars.iv
  store float %122, ptr %123, align 4, !tbaa !13
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %124 = mul nsw i64 %indvars.iv.next.1, %114
  %gep526.2 = getelementptr %struct.complex, ptr %invariant.gep, i64 %124
  %125 = load float, ptr %gep526.2, align 4, !tbaa !9
  %126 = getelementptr inbounds float, ptr %28, i64 %indvars.iv.next.1
  store float %125, ptr %126, align 4, !tbaa !13
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3
  %127 = mul nsw i64 %indvars.iv.next.2, %114
  %gep526.3 = getelementptr %struct.complex, ptr %invariant.gep, i64 %127
  %128 = load float, ptr %gep526.3, align 4, !tbaa !9
  %129 = getelementptr inbounds float, ptr %28, i64 %indvars.iv.next.2
  store float %128, ptr %129, align 4, !tbaa !13
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %niter.next.3 = add nuw i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge.unr-lcssa, label %.lr.ph, !llvm.loop !18

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph, %.lr.ph.preheader
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next.3, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.unr-lcssa, %.lr.ph.epil
  %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %.lr.ph.epil ], [ %indvars.iv.unr, %._crit_edge.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph.epil ], [ 0, %._crit_edge.unr-lcssa ]
  %130 = mul nsw i64 %indvars.iv.epil, %114
  %gep526.epil = getelementptr %struct.complex, ptr %invariant.gep, i64 %130
  %131 = load float, ptr %gep526.epil, align 4, !tbaa !9
  %132 = getelementptr inbounds float, ptr %28, i64 %indvars.iv.epil
  store float %131, ptr %132, align 4, !tbaa !13
  %indvars.iv.next.epil = add nuw nsw i64 %indvars.iv.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_edge, label %.lr.ph.epil, !llvm.loop !19

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.unr-lcssa
  %133 = add nsw i32 %53, -1
  store i32 %133, ptr %15, align 4, !tbaa !5
  %.not413439 = icmp slt i32 %53, 2
  br i1 %.not394, label %173, label %134

134:                                              ; preds = %._crit_edge
  br i1 %.not413439, label %.loopexit431, label %.lr.ph438

.lr.ph438:                                        ; preds = %134
  %135 = sext i32 %25 to i64
  %136 = zext nneg i32 %.0367 to i64
  %invariant.gep527 = getelementptr %struct.complex, ptr %27, i64 %136
  %invariant.gep529 = getelementptr %struct.complex, ptr %27, i64 %136
  br label %137

137:                                              ; preds = %.lr.ph438, %170
  %indvars.iv488 = phi i64 [ 1, %.lr.ph438 ], [ %indvars.iv.next489, %170 ]
  %indvars.iv.next489 = add nuw nsw i64 %indvars.iv488, 1
  %138 = mul nsw i64 %indvars.iv.next489, %135
  %gep528 = getelementptr %struct.complex, ptr %invariant.gep527, i64 %138
  %139 = getelementptr inbounds i8, ptr %gep528, i64 4
  %140 = load <2 x float>, ptr %gep528, align 4, !tbaa !13
  store <2 x float> %140, ptr %23, align 8, !tbaa !13
  %141 = call <2 x float> @Cf(ptr noundef nonnull %23)
  %142 = call float @cabsf(<2 x float> noundef %141) #7
  store float %142, ptr %gep528, align 4, !tbaa !9
  store float 0.000000e+00, ptr %139, align 4, !tbaa !12
  %143 = getelementptr inbounds float, ptr %29, i64 %indvars.iv488
  store float %142, ptr %143, align 4, !tbaa !13
  %144 = fcmp une float %142, 0.000000e+00
  %145 = load <2 x float>, ptr %23, align 8
  %146 = insertelement <2 x float> poison, float %142, i64 0
  %147 = shufflevector <2 x float> %146, <2 x float> poison, <2 x i32> zeroinitializer
  %148 = fdiv <2 x float> %145, %147
  %149 = insertelement <2 x i1> poison, i1 %144, i64 0
  %150 = shufflevector <2 x i1> %149, <2 x i1> poison, <2 x i32> zeroinitializer
  %151 = select <2 x i1> %150, <2 x float> %148, <2 x float> <float 1.000000e+00, float 0.000000e+00>
  store <2 x float> %151, ptr %23, align 8, !tbaa !13
  %152 = load i32, ptr %3, align 4, !tbaa !5
  %153 = add nsw i32 %152, -1
  %154 = sext i32 %153 to i64
  %155 = icmp slt i64 %indvars.iv488, %154
  br i1 %155, label %156, label %170

156:                                              ; preds = %137
  %157 = add nuw nsw i64 %indvars.iv488, 2
  %158 = mul nsw i64 %157, %135
  %gep530 = getelementptr %struct.complex, ptr %invariant.gep529, i64 %158
  %159 = load float, ptr %gep530, align 4, !tbaa !9
  %160 = getelementptr inbounds i8, ptr %gep530, i64 4
  %161 = load float, ptr %160, align 4, !tbaa !12
  %162 = fneg float %161
  %163 = insertelement <2 x float> poison, float %161, i64 0
  %164 = insertelement <2 x float> %163, float %162, i64 1
  %165 = fmul <2 x float> %151, %164
  %166 = shufflevector <2 x float> %165, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %167 = insertelement <2 x float> poison, float %159, i64 0
  %168 = shufflevector <2 x float> %167, <2 x float> poison, <2 x i32> zeroinitializer
  %169 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %168, <2 x float> %151, <2 x float> %166)
  store <2 x float> %169, ptr %gep530, align 4, !tbaa !13
  br label %170

170:                                              ; preds = %137, %156
  %171 = load i32, ptr %15, align 4, !tbaa !5
  %172 = sext i32 %171 to i64
  %.not416.not = icmp slt i64 %indvars.iv488, %172
  br i1 %.not416.not, label %137, label %.loopexit431, !llvm.loop !20

173:                                              ; preds = %._crit_edge
  br i1 %.not413439, label %.loopexit431, label %.lr.ph442

.lr.ph442:                                        ; preds = %173
  %174 = sext i32 %25 to i64
  %175 = zext nneg i32 %.0367 to i64
  %invariant.gep531 = getelementptr %struct.complex, ptr %27, i64 %175
  %invariant.gep533 = getelementptr %struct.complex, ptr %27, i64 %175
  br label %176

176:                                              ; preds = %.lr.ph442, %._crit_edge520
  %indvars.iv491 = phi i64 [ 1, %.lr.ph442 ], [ %195, %._crit_edge520 ]
  %177 = mul nsw i64 %indvars.iv491, %174
  %gep532 = getelementptr %struct.complex, ptr %invariant.gep531, i64 %177
  %178 = getelementptr inbounds i8, ptr %gep532, i64 4
  %179 = load <2 x float>, ptr %gep532, align 4, !tbaa !13
  store <2 x float> %179, ptr %23, align 8, !tbaa !13
  %180 = call <2 x float> @Cf(ptr noundef nonnull %23)
  %181 = call float @cabsf(<2 x float> noundef %180) #7
  store float %181, ptr %gep532, align 4, !tbaa !9
  store float 0.000000e+00, ptr %178, align 4, !tbaa !12
  %182 = getelementptr inbounds float, ptr %29, i64 %indvars.iv491
  store float %181, ptr %182, align 4, !tbaa !13
  %183 = fcmp une float %181, 0.000000e+00
  %184 = load <2 x float>, ptr %23, align 8
  %185 = insertelement <2 x float> poison, float %181, i64 0
  %186 = shufflevector <2 x float> %185, <2 x float> poison, <2 x i32> zeroinitializer
  %187 = fdiv <2 x float> %184, %186
  %188 = insertelement <2 x i1> poison, i1 %183, i64 0
  %189 = shufflevector <2 x i1> %188, <2 x i1> poison, <2 x i32> zeroinitializer
  %190 = select <2 x i1> %189, <2 x float> %187, <2 x float> <float 1.000000e+00, float 0.000000e+00>
  store <2 x float> %190, ptr %23, align 8, !tbaa !13
  %191 = load i32, ptr %3, align 4, !tbaa !5
  %192 = add nsw i32 %191, -1
  %193 = sext i32 %192 to i64
  %194 = icmp slt i64 %indvars.iv491, %193
  %195 = add nuw nsw i64 %indvars.iv491, 1
  br i1 %194, label %196, label %._crit_edge520

196:                                              ; preds = %176
  %197 = mul nsw i64 %195, %174
  %gep534 = getelementptr %struct.complex, ptr %invariant.gep533, i64 %197
  %198 = load float, ptr %gep534, align 4, !tbaa !9
  %199 = getelementptr inbounds i8, ptr %gep534, i64 4
  %200 = load float, ptr %199, align 4, !tbaa !12
  %201 = fneg float %200
  %202 = insertelement <2 x float> poison, float %200, i64 0
  %203 = insertelement <2 x float> %202, float %201, i64 1
  %204 = fmul <2 x float> %190, %203
  %205 = shufflevector <2 x float> %204, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %206 = insertelement <2 x float> poison, float %198, i64 0
  %207 = shufflevector <2 x float> %206, <2 x float> poison, <2 x i32> zeroinitializer
  %208 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %207, <2 x float> %190, <2 x float> %205)
  store <2 x float> %208, ptr %gep534, align 4, !tbaa !13
  br label %._crit_edge520

._crit_edge520:                                   ; preds = %176, %196
  %209 = load i32, ptr %15, align 4, !tbaa !5
  %210 = sext i32 %209 to i64
  %.not413.not = icmp slt i64 %indvars.iv491, %210
  br i1 %.not413.not, label %176, label %.loopexit431, !llvm.loop !21

.loopexit431:                                     ; preds = %170, %._crit_edge520, %134, %173
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %9, align 4, !tbaa !13
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %11, align 4, !tbaa !13
  br label %423

211:                                              ; preds = %91
  %212 = uitofp nneg i32 %53 to float
  %213 = add nsw i32 %53, -1
  %214 = uitofp nneg i32 %213 to float
  %215 = fdiv float %214, %212
  %216 = fadd float %215, 5.000000e-01
  %217 = fcmp ogt float %216, 0.000000e+00
  br i1 %217, label %218, label %221

218:                                              ; preds = %211
  %219 = call float @llvm.floor.f32(float %216)
  %220 = fpext float %219 to double
  br label %226

221:                                              ; preds = %211
  %222 = fneg float %216
  %223 = call float @llvm.floor.f32(float %222)
  %224 = fpext float %223 to double
  %225 = fneg double %224
  br label %226

226:                                              ; preds = %221, %218
  %227 = phi double [ %220, %218 ], [ %225, %221 ]
  %228 = fptosi double %227 to i32
  %229 = add nuw nsw i32 %56, 1
  store i32 %229, ptr %15, align 4, !tbaa !5
  %230 = zext nneg i32 %.0364 to i64
  %231 = getelementptr inbounds %struct.complex, ptr %31, i64 %230
  call void @clacpy_(ptr noundef nonnull @.str.6, ptr noundef nonnull %15, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %231, ptr noundef nonnull %21) #7
  %232 = zext nneg i32 %.0373 to i64
  %233 = getelementptr inbounds %struct.complex, ptr %31, i64 %232
  call void @claset_(ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef nonnull %233, ptr noundef nonnull %21) #7
  store i32 %228, ptr %15, align 4, !tbaa !5
  %.not399467 = icmp slt i32 %228, 1
  %.pre519 = load i32, ptr %3, align 4, !tbaa !5
  br i1 %.not399467, label %._crit_edge471, label %.lr.ph470

.lr.ph470:                                        ; preds = %226
  %234 = sext i32 %82 to i64
  %235 = getelementptr inbounds %struct.complex, ptr %30, i64 %234
  %236 = sext i32 %85 to i64
  %gep = getelementptr %struct.complex, ptr %11, i64 %236
  br label %237

237:                                              ; preds = %.lr.ph470, %._crit_edge465
  %238 = phi i32 [ %228, %.lr.ph470 ], [ %347, %._crit_edge465 ]
  %239 = phi i32 [ %.pre519, %.lr.ph470 ], [ %348, %._crit_edge465 ]
  %240 = phi i32 [ %.pre519, %.lr.ph470 ], [ %349, %._crit_edge465 ]
  %.0363468 = phi i32 [ 1, %.lr.ph470 ], [ %350, %._crit_edge465 ]
  %241 = add nsw i32 %.0363468, -1
  %242 = mul nsw i32 %241, %53
  %243 = add nsw i32 %242, 1
  %244 = mul i32 %.0363468, %53
  %245 = add nsw i32 %240, -1
  %246 = call i32 @llvm.smin.i32(i32 %244, i32 %245)
  %.not404.not460 = icmp slt i32 %243, %240
  br i1 %.not404.not460, label %.lr.ph464.preheader, label %._crit_edge465

.lr.ph464.preheader:                              ; preds = %237
  %.not553 = icmp sgt i32 %246, %242
  br i1 %.not553, label %.lr.ph456.preheader.lr.ph, label %._crit_edge465.loopexit

.lr.ph456.preheader.lr.ph:                        ; preds = %.lr.ph464.preheader
  %247 = call i32 @llvm.smin.i32(i32 %243, i32 %246)
  br label %.lr.ph456.preheader

.lr.ph456.preheader:                              ; preds = %._crit_edge457.2, %.lr.ph456.preheader.lr.ph
  %248 = phi i32 [ %247, %.lr.ph456.preheader.lr.ph ], [ %343, %._crit_edge457.2 ]
  %.5461549 = phi i32 [ %243, %.lr.ph456.preheader.lr.ph ], [ %342, %._crit_edge457.2 ]
  %.0462548 = phi i32 [ %243, %.lr.ph456.preheader.lr.ph ], [ %.2.lcssa.2, %._crit_edge457.2 ]
  %249 = phi i32 [ %239, %.lr.ph456.preheader.lr.ph ], [ %341, %._crit_edge457.2 ]
  store i32 %.0462548, ptr %24, align 4, !tbaa !5
  br label %.lr.ph456

.lr.ph456:                                        ; preds = %.lr.ph456.preheader, %.critedge
  %250 = phi i32 [ %275, %.critedge ], [ %249, %.lr.ph456.preheader ]
  %.2455 = phi i32 [ %.3, %.critedge ], [ %.0462548, %.lr.ph456.preheader ]
  %storemerge454 = phi i32 [ %279, %.critedge ], [ %.0462548, %.lr.ph456.preheader ]
  %251 = sub nsw i32 %.5461549, %storemerge454
  %252 = mul nsw i32 %251, 3
  %253 = add i32 %252, 1
  %254 = icmp eq i32 %.5461549, %storemerge454
  br i1 %254, label %.thread426, label %255

.thread426:                                       ; preds = %.lr.ph456
  store i32 1, ptr %19, align 4, !tbaa !5
  br label %265

255:                                              ; preds = %.lr.ph456
  %256 = srem i32 %253, 2
  %257 = sdiv i32 %253, 2
  %258 = add nsw i32 %256, 2
  store i32 %258, ptr %19, align 4, !tbaa !5
  %259 = icmp eq i32 %256, 0
  br i1 %259, label %260, label %265

260:                                              ; preds = %255
  %261 = load i32, ptr %4, align 4, !tbaa !5
  %262 = mul nsw i32 %261, %257
  %263 = add nsw i32 %262, %storemerge454
  %reass.sub = sub i32 %263, %261
  %264 = add i32 %reass.sub, 1
  store i32 %264, ptr %17, align 4, !tbaa !5
  %. = call i32 @llvm.smin.i32(i32 %263, i32 %250)
  store i32 %., ptr %16, align 4, !tbaa !5
  br label %.critedge

265:                                              ; preds = %.thread426, %255
  %266 = add i32 %252, 2
  %267 = sdiv i32 %266, 2
  %268 = load i32, ptr %4, align 4, !tbaa !5
  %269 = mul nsw i32 %268, %267
  %270 = add nsw i32 %269, %storemerge454
  %271 = sub nsw i32 %270, %268
  %272 = add nsw i32 %271, 1
  store i32 %272, ptr %17, align 4, !tbaa !5
  %.421 = call i32 @llvm.smin.i32(i32 %270, i32 %250)
  store i32 %.421, ptr %16, align 4, !tbaa !5
  %273 = add nsw i32 %.421, -1
  %.not409 = icmp sge i32 %272, %273
  %274 = icmp sle i32 %250, %270
  %or.cond428 = and i1 %274, %.not409
  %spec.select = select i1 %or.cond428, i32 %250, i32 0
  br label %.critedge

.critedge:                                        ; preds = %265, %260
  %.0361 = phi i32 [ %263, %260 ], [ %spec.select, %265 ]
  call void @chb2st_kernels_(ptr noundef %2, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %17, ptr noundef nonnull %16, ptr noundef nonnull %24, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %20, ptr noundef nonnull %11, ptr noundef nonnull %21, ptr noundef nonnull %235, ptr noundef nonnull %9, ptr noundef nonnull %22, ptr noundef %gep) #7
  %275 = load i32, ptr %3, align 4, !tbaa !5
  %276 = add nsw i32 %275, -1
  %.not411 = icmp sge i32 %.0361, %276
  %277 = zext i1 %.not411 to i32
  %.3 = add nsw i32 %.2455, %277
  %278 = load i32, ptr %24, align 4, !tbaa !5
  %279 = add nsw i32 %278, 1
  store i32 %279, ptr %24, align 4, !tbaa !5
  %.not406.not = icmp slt i32 %278, %248
  br i1 %.not406.not, label %.lr.ph456, label %._crit_edge457, !llvm.loop !22

._crit_edge457:                                   ; preds = %.critedge
  store i32 %.3, ptr %24, align 4, !tbaa !5
  %.not406453.1 = icmp sgt i32 %.3, %248
  br i1 %.not406453.1, label %._crit_edge457.1, label %.lr.ph456.1

.lr.ph456.1:                                      ; preds = %._crit_edge457, %.critedge.1
  %280 = phi i32 [ %305, %.critedge.1 ], [ %275, %._crit_edge457 ]
  %.2455.1 = phi i32 [ %.3.1, %.critedge.1 ], [ %.3, %._crit_edge457 ]
  %storemerge454.1 = phi i32 [ %309, %.critedge.1 ], [ %.3, %._crit_edge457 ]
  %281 = sub nsw i32 %.5461549, %storemerge454.1
  %282 = mul nsw i32 %281, 3
  %283 = add i32 %282, 2
  %284 = icmp eq i32 %283, 1
  br i1 %284, label %.thread426.1, label %285

285:                                              ; preds = %.lr.ph456.1
  %286 = srem i32 %283, 2
  %287 = sdiv i32 %283, 2
  %288 = add nsw i32 %286, 2
  store i32 %288, ptr %19, align 4, !tbaa !5
  %289 = icmp eq i32 %286, 0
  br i1 %289, label %290, label %295

290:                                              ; preds = %285
  %291 = load i32, ptr %4, align 4, !tbaa !5
  %292 = mul nsw i32 %291, %287
  %293 = add nsw i32 %292, %storemerge454.1
  %reass.sub.1 = sub i32 %293, %291
  %294 = add i32 %reass.sub.1, 1
  store i32 %294, ptr %17, align 4, !tbaa !5
  %..1 = call i32 @llvm.smin.i32(i32 %293, i32 %280)
  store i32 %..1, ptr %16, align 4, !tbaa !5
  br label %.critedge.1

.thread426.1:                                     ; preds = %.lr.ph456.1
  store i32 1, ptr %19, align 4, !tbaa !5
  br label %295

295:                                              ; preds = %.thread426.1, %285
  %296 = add i32 %282, 3
  %297 = sdiv i32 %296, 2
  %298 = load i32, ptr %4, align 4, !tbaa !5
  %299 = mul nsw i32 %298, %297
  %300 = add nsw i32 %299, %storemerge454.1
  %301 = sub nsw i32 %300, %298
  %302 = add nsw i32 %301, 1
  store i32 %302, ptr %17, align 4, !tbaa !5
  %.421.1 = call i32 @llvm.smin.i32(i32 %300, i32 %280)
  store i32 %.421.1, ptr %16, align 4, !tbaa !5
  %303 = add nsw i32 %.421.1, -1
  %.not409.1 = icmp sge i32 %302, %303
  %304 = icmp sle i32 %280, %300
  %or.cond428.1 = and i1 %304, %.not409.1
  %spec.select.1 = select i1 %or.cond428.1, i32 %280, i32 0
  br label %.critedge.1

.critedge.1:                                      ; preds = %295, %290
  %.0361.1 = phi i32 [ %293, %290 ], [ %spec.select.1, %295 ]
  call void @chb2st_kernels_(ptr noundef %2, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %17, ptr noundef nonnull %16, ptr noundef nonnull %24, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %20, ptr noundef nonnull %11, ptr noundef nonnull %21, ptr noundef nonnull %235, ptr noundef nonnull %9, ptr noundef nonnull %22, ptr noundef %gep) #7
  %305 = load i32, ptr %3, align 4, !tbaa !5
  %306 = add nsw i32 %305, -1
  %.not411.1 = icmp sge i32 %.0361.1, %306
  %307 = zext i1 %.not411.1 to i32
  %.3.1 = add nsw i32 %.2455.1, %307
  %308 = load i32, ptr %24, align 4, !tbaa !5
  %309 = add nsw i32 %308, 1
  store i32 %309, ptr %24, align 4, !tbaa !5
  %.not406.not.1 = icmp slt i32 %308, %248
  br i1 %.not406.not.1, label %.lr.ph456.1, label %._crit_edge457.1, !llvm.loop !22

._crit_edge457.1:                                 ; preds = %.critedge.1, %._crit_edge457
  %310 = phi i32 [ %275, %._crit_edge457 ], [ %305, %.critedge.1 ]
  %.2.lcssa.1 = phi i32 [ %.3, %._crit_edge457 ], [ %.3.1, %.critedge.1 ]
  store i32 %.2.lcssa.1, ptr %24, align 4, !tbaa !5
  %.not406453.2 = icmp sgt i32 %.2.lcssa.1, %248
  br i1 %.not406453.2, label %._crit_edge457.2, label %.lr.ph456.2

.lr.ph456.2:                                      ; preds = %._crit_edge457.1, %.critedge.2
  %311 = phi i32 [ %336, %.critedge.2 ], [ %310, %._crit_edge457.1 ]
  %.2455.2 = phi i32 [ %.3.2, %.critedge.2 ], [ %.2.lcssa.1, %._crit_edge457.1 ]
  %storemerge454.2 = phi i32 [ %340, %.critedge.2 ], [ %.2.lcssa.1, %._crit_edge457.1 ]
  %312 = sub nsw i32 %.5461549, %storemerge454.2
  %313 = mul nsw i32 %312, 3
  %314 = add i32 %313, 3
  %315 = icmp eq i32 %314, 1
  br i1 %315, label %.thread426.2, label %316

316:                                              ; preds = %.lr.ph456.2
  %317 = srem i32 %314, 2
  %318 = sdiv i32 %314, 2
  %319 = add nsw i32 %317, 2
  store i32 %319, ptr %19, align 4, !tbaa !5
  %320 = icmp eq i32 %317, 0
  br i1 %320, label %321, label %326

321:                                              ; preds = %316
  %322 = load i32, ptr %4, align 4, !tbaa !5
  %323 = mul nsw i32 %322, %318
  %324 = add nsw i32 %323, %storemerge454.2
  %reass.sub.2 = sub i32 %324, %322
  %325 = add i32 %reass.sub.2, 1
  store i32 %325, ptr %17, align 4, !tbaa !5
  %..2 = call i32 @llvm.smin.i32(i32 %324, i32 %311)
  store i32 %..2, ptr %16, align 4, !tbaa !5
  br label %.critedge.2

.thread426.2:                                     ; preds = %.lr.ph456.2
  store i32 1, ptr %19, align 4, !tbaa !5
  br label %326

326:                                              ; preds = %.thread426.2, %316
  %327 = add i32 %313, 4
  %328 = sdiv i32 %327, 2
  %329 = load i32, ptr %4, align 4, !tbaa !5
  %330 = mul nsw i32 %329, %328
  %331 = add nsw i32 %330, %storemerge454.2
  %332 = sub nsw i32 %331, %329
  %333 = add nsw i32 %332, 1
  store i32 %333, ptr %17, align 4, !tbaa !5
  %.421.2 = call i32 @llvm.smin.i32(i32 %331, i32 %311)
  store i32 %.421.2, ptr %16, align 4, !tbaa !5
  %334 = add nsw i32 %.421.2, -1
  %.not409.2 = icmp sge i32 %333, %334
  %335 = icmp sle i32 %311, %331
  %or.cond428.2 = and i1 %335, %.not409.2
  %spec.select.2 = select i1 %or.cond428.2, i32 %311, i32 0
  br label %.critedge.2

.critedge.2:                                      ; preds = %326, %321
  %.0361.2 = phi i32 [ %324, %321 ], [ %spec.select.2, %326 ]
  call void @chb2st_kernels_(ptr noundef %2, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %17, ptr noundef nonnull %16, ptr noundef nonnull %24, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %20, ptr noundef nonnull %11, ptr noundef nonnull %21, ptr noundef nonnull %235, ptr noundef nonnull %9, ptr noundef nonnull %22, ptr noundef %gep) #7
  %336 = load i32, ptr %3, align 4, !tbaa !5
  %337 = add nsw i32 %336, -1
  %.not411.2 = icmp sge i32 %.0361.2, %337
  %338 = zext i1 %.not411.2 to i32
  %.3.2 = add nsw i32 %.2455.2, %338
  %339 = load i32, ptr %24, align 4, !tbaa !5
  %340 = add nsw i32 %339, 1
  store i32 %340, ptr %24, align 4, !tbaa !5
  %.not406.not.2 = icmp slt i32 %339, %248
  br i1 %.not406.not.2, label %.lr.ph456.2, label %._crit_edge457.2, !llvm.loop !22

._crit_edge457.2:                                 ; preds = %.critedge.2, %._crit_edge457.1
  %341 = phi i32 [ %310, %._crit_edge457.1 ], [ %336, %.critedge.2 ]
  %.2.lcssa.2 = phi i32 [ %.2.lcssa.1, %._crit_edge457.1 ], [ %.3.2, %.critedge.2 ]
  %342 = add nsw i32 %.5461549, 1
  %.not404.not = icmp sge i32 %342, %240
  %343 = call i32 @llvm.smin.i32(i32 %342, i32 %246)
  %344 = icmp sgt i32 %.2.lcssa.2, %343
  %or.cond555 = select i1 %.not404.not, i1 true, i1 %344
  br i1 %or.cond555, label %._crit_edge465.loopexit, label %.lr.ph456.preheader, !llvm.loop !23

._crit_edge465.loopexit:                          ; preds = %._crit_edge457.2, %.lr.ph464.preheader
  %345 = phi i32 [ %239, %.lr.ph464.preheader ], [ %341, %._crit_edge457.2 ]
  %346 = phi i32 [ %240, %.lr.ph464.preheader ], [ %341, %._crit_edge457.2 ]
  %.pre518 = load i32, ptr %15, align 4, !tbaa !5
  br label %._crit_edge465

._crit_edge465:                                   ; preds = %._crit_edge465.loopexit, %237
  %347 = phi i32 [ %.pre518, %._crit_edge465.loopexit ], [ %238, %237 ]
  %348 = phi i32 [ %345, %._crit_edge465.loopexit ], [ %239, %237 ]
  %349 = phi i32 [ %346, %._crit_edge465.loopexit ], [ %240, %237 ]
  %350 = add nuw nsw i32 %.0363468, 1
  %.not399.not = icmp slt i32 %.0363468, %347
  br i1 %.not399.not, label %237, label %._crit_edge471, !llvm.loop !24

._crit_edge471:                                   ; preds = %._crit_edge465, %226
  %351 = phi i32 [ %.pre519, %226 ], [ %348, %._crit_edge465 ]
  %.not400472 = icmp slt i32 %351, 1
  br i1 %.not400472, label %._crit_edge476, label %.lr.ph475

.lr.ph475:                                        ; preds = %._crit_edge471
  %352 = load i32, ptr %21, align 4, !tbaa !5
  %353 = sext i32 %352 to i64
  %354 = sext i32 %.0366 to i64
  %invariant.gep537 = getelementptr %struct.complex, ptr %31, i64 %354
  %355 = zext nneg i32 %351 to i64
  %xtraiter567 = and i64 %355, 3
  %356 = icmp ult i32 %351, 4
  br i1 %356, label %._crit_edge476.loopexit.unr-lcssa, label %.lr.ph475.new

.lr.ph475.new:                                    ; preds = %.lr.ph475
  %unroll_iter570 = and i64 %355, 2147483644
  %invariant.gep588 = getelementptr inbounds i8, ptr %28, i64 8
  %invariant.gep590 = getelementptr inbounds i8, ptr %28, i64 12
  br label %357

357:                                              ; preds = %357, %.lr.ph475.new
  %indvars.iv503 = phi i64 [ 1, %.lr.ph475.new ], [ %indvars.iv.next504.3, %357 ]
  %niter571 = phi i64 [ 0, %.lr.ph475.new ], [ %niter571.next.3, %357 ]
  %358 = add nsw i64 %indvars.iv503, -1
  %359 = mul nsw i64 %358, %353
  %gep538 = getelementptr %struct.complex, ptr %invariant.gep537, i64 %359
  %360 = load float, ptr %gep538, align 4, !tbaa !9
  %361 = getelementptr inbounds float, ptr %28, i64 %indvars.iv503
  store float %360, ptr %361, align 4, !tbaa !13
  %362 = mul nsw i64 %indvars.iv503, %353
  %gep538.1 = getelementptr %struct.complex, ptr %invariant.gep537, i64 %362
  %363 = load float, ptr %gep538.1, align 4, !tbaa !9
  %364 = getelementptr float, ptr %7, i64 %indvars.iv503
  store float %363, ptr %364, align 4, !tbaa !13
  %365 = add nuw nsw i64 %indvars.iv503, 1
  %366 = mul nsw i64 %365, %353
  %gep538.2 = getelementptr %struct.complex, ptr %invariant.gep537, i64 %366
  %367 = load float, ptr %gep538.2, align 4, !tbaa !9
  %gep589 = getelementptr inbounds float, ptr %invariant.gep588, i64 %indvars.iv503
  store float %367, ptr %gep589, align 4, !tbaa !13
  %368 = add nuw nsw i64 %indvars.iv503, 2
  %369 = mul nsw i64 %368, %353
  %gep538.3 = getelementptr %struct.complex, ptr %invariant.gep537, i64 %369
  %370 = load float, ptr %gep538.3, align 4, !tbaa !9
  %gep591 = getelementptr inbounds float, ptr %invariant.gep590, i64 %indvars.iv503
  store float %370, ptr %gep591, align 4, !tbaa !13
  %indvars.iv.next504.3 = add nuw nsw i64 %indvars.iv503, 4
  %niter571.next.3 = add nuw i64 %niter571, 4
  %niter571.ncmp.3 = icmp eq i64 %niter571.next.3, %unroll_iter570
  br i1 %niter571.ncmp.3, label %._crit_edge476.loopexit.unr-lcssa, label %357, !llvm.loop !25

._crit_edge476.loopexit.unr-lcssa:                ; preds = %357, %.lr.ph475
  %indvars.iv503.unr = phi i64 [ 1, %.lr.ph475 ], [ %indvars.iv.next504.3, %357 ]
  %lcmp.mod569.not = icmp eq i64 %xtraiter567, 0
  br i1 %lcmp.mod569.not, label %._crit_edge476, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge476.loopexit.unr-lcssa, %.epil.preheader
  %indvars.iv503.epil = phi i64 [ %indvars.iv.next504.epil, %.epil.preheader ], [ %indvars.iv503.unr, %._crit_edge476.loopexit.unr-lcssa ]
  %epil.iter568 = phi i64 [ %epil.iter568.next, %.epil.preheader ], [ 0, %._crit_edge476.loopexit.unr-lcssa ]
  %371 = add nsw i64 %indvars.iv503.epil, -1
  %372 = mul nsw i64 %371, %353
  %gep538.epil = getelementptr %struct.complex, ptr %invariant.gep537, i64 %372
  %373 = load float, ptr %gep538.epil, align 4, !tbaa !9
  %374 = getelementptr inbounds float, ptr %28, i64 %indvars.iv503.epil
  store float %373, ptr %374, align 4, !tbaa !13
  %indvars.iv.next504.epil = add nuw nsw i64 %indvars.iv503.epil, 1
  %epil.iter568.next = add i64 %epil.iter568, 1
  %epil.iter568.cmp.not = icmp eq i64 %epil.iter568.next, %xtraiter567
  br i1 %epil.iter568.cmp.not, label %._crit_edge476, label %.epil.preheader, !llvm.loop !26

._crit_edge476:                                   ; preds = %._crit_edge476.loopexit.unr-lcssa, %.epil.preheader, %._crit_edge471
  %.not401.not481 = icmp sgt i32 %351, 1
  br i1 %.not394, label %395, label %375

375:                                              ; preds = %._crit_edge476
  br i1 %.not401.not481, label %.lr.ph480, label %.loopexit

.lr.ph480:                                        ; preds = %375
  %376 = load i32, ptr %21, align 4, !tbaa !5
  %377 = sext i32 %376 to i64
  %378 = sext i32 %.0362 to i64
  %wide.trip.count511 = zext nneg i32 %351 to i64
  %invariant.gep539 = getelementptr %struct.complex, ptr %31, i64 %378
  %379 = add nsw i64 %wide.trip.count511, -1
  %380 = add nsw i64 %wide.trip.count511, -2
  %xtraiter573 = and i64 %379, 3
  %381 = icmp ult i64 %380, 3
  br i1 %381, label %.loopexit.loopexit556.unr-lcssa, label %.lr.ph480.new

.lr.ph480.new:                                    ; preds = %.lr.ph480
  %unroll_iter576 = and i64 %379, -4
  br label %382

382:                                              ; preds = %382, %.lr.ph480.new
  %indvars.iv508 = phi i64 [ 1, %.lr.ph480.new ], [ %indvars.iv.next509.3, %382 ]
  %niter577 = phi i64 [ 0, %.lr.ph480.new ], [ %niter577.next.3, %382 ]
  %383 = mul nsw i64 %indvars.iv508, %377
  %gep540 = getelementptr %struct.complex, ptr %invariant.gep539, i64 %383
  %384 = load float, ptr %gep540, align 4, !tbaa !9
  %385 = getelementptr inbounds float, ptr %29, i64 %indvars.iv508
  store float %384, ptr %385, align 4, !tbaa !13
  %indvars.iv.next509 = add nuw nsw i64 %indvars.iv508, 1
  %386 = mul nsw i64 %indvars.iv.next509, %377
  %gep540.1 = getelementptr %struct.complex, ptr %invariant.gep539, i64 %386
  %387 = load float, ptr %gep540.1, align 4, !tbaa !9
  %388 = getelementptr float, ptr %8, i64 %indvars.iv508
  store float %387, ptr %388, align 4, !tbaa !13
  %indvars.iv.next509.1 = add nuw nsw i64 %indvars.iv508, 2
  %389 = mul nsw i64 %indvars.iv.next509.1, %377
  %gep540.2 = getelementptr %struct.complex, ptr %invariant.gep539, i64 %389
  %390 = load float, ptr %gep540.2, align 4, !tbaa !9
  %391 = getelementptr inbounds float, ptr %29, i64 %indvars.iv.next509.1
  store float %390, ptr %391, align 4, !tbaa !13
  %indvars.iv.next509.2 = add nuw nsw i64 %indvars.iv508, 3
  %392 = mul nsw i64 %indvars.iv.next509.2, %377
  %gep540.3 = getelementptr %struct.complex, ptr %invariant.gep539, i64 %392
  %393 = load float, ptr %gep540.3, align 4, !tbaa !9
  %394 = getelementptr inbounds float, ptr %29, i64 %indvars.iv.next509.2
  store float %393, ptr %394, align 4, !tbaa !13
  %indvars.iv.next509.3 = add nuw nsw i64 %indvars.iv508, 4
  %niter577.next.3 = add nuw i64 %niter577, 4
  %niter577.ncmp.3 = icmp eq i64 %niter577.next.3, %unroll_iter576
  br i1 %niter577.ncmp.3, label %.loopexit.loopexit556.unr-lcssa, label %382, !llvm.loop !27

395:                                              ; preds = %._crit_edge476
  br i1 %.not401.not481, label %.lr.ph484, label %.loopexit

.lr.ph484:                                        ; preds = %395
  %396 = load i32, ptr %21, align 4, !tbaa !5
  %397 = sext i32 %396 to i64
  %398 = sext i32 %.0362 to i64
  %wide.trip.count516 = zext nneg i32 %351 to i64
  %invariant.gep541 = getelementptr %struct.complex, ptr %31, i64 %398
  %399 = add nsw i64 %wide.trip.count516, -1
  %400 = add nsw i64 %wide.trip.count516, -2
  %xtraiter579 = and i64 %399, 3
  %401 = icmp ult i64 %400, 3
  br i1 %401, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph484.new

.lr.ph484.new:                                    ; preds = %.lr.ph484
  %unroll_iter582 = and i64 %399, -4
  %invariant.gep592 = getelementptr inbounds i8, ptr %29, i64 8
  %invariant.gep594 = getelementptr inbounds i8, ptr %29, i64 12
  br label %402

402:                                              ; preds = %402, %.lr.ph484.new
  %indvars.iv513 = phi i64 [ 1, %.lr.ph484.new ], [ %indvars.iv.next514.3, %402 ]
  %niter583 = phi i64 [ 0, %.lr.ph484.new ], [ %niter583.next.3, %402 ]
  %403 = add nsw i64 %indvars.iv513, -1
  %404 = mul nsw i64 %403, %397
  %gep542 = getelementptr %struct.complex, ptr %invariant.gep541, i64 %404
  %405 = load float, ptr %gep542, align 4, !tbaa !9
  %406 = getelementptr inbounds float, ptr %29, i64 %indvars.iv513
  store float %405, ptr %406, align 4, !tbaa !13
  %407 = mul nsw i64 %indvars.iv513, %397
  %gep542.1 = getelementptr %struct.complex, ptr %invariant.gep541, i64 %407
  %408 = load float, ptr %gep542.1, align 4, !tbaa !9
  %409 = getelementptr float, ptr %8, i64 %indvars.iv513
  store float %408, ptr %409, align 4, !tbaa !13
  %410 = add nuw nsw i64 %indvars.iv513, 1
  %411 = mul nsw i64 %410, %397
  %gep542.2 = getelementptr %struct.complex, ptr %invariant.gep541, i64 %411
  %412 = load float, ptr %gep542.2, align 4, !tbaa !9
  %gep593 = getelementptr inbounds float, ptr %invariant.gep592, i64 %indvars.iv513
  store float %412, ptr %gep593, align 4, !tbaa !13
  %413 = add nuw nsw i64 %indvars.iv513, 2
  %414 = mul nsw i64 %413, %397
  %gep542.3 = getelementptr %struct.complex, ptr %invariant.gep541, i64 %414
  %415 = load float, ptr %gep542.3, align 4, !tbaa !9
  %gep595 = getelementptr inbounds float, ptr %invariant.gep594, i64 %indvars.iv513
  store float %415, ptr %gep595, align 4, !tbaa !13
  %indvars.iv.next514.3 = add nuw nsw i64 %indvars.iv513, 4
  %niter583.next.3 = add nuw i64 %niter583, 4
  %niter583.ncmp.3 = icmp eq i64 %niter583.next.3, %unroll_iter582
  br i1 %niter583.ncmp.3, label %.loopexit.loopexit.unr-lcssa, label %402, !llvm.loop !28

.loopexit.loopexit.unr-lcssa:                     ; preds = %402, %.lr.ph484
  %indvars.iv513.unr = phi i64 [ 1, %.lr.ph484 ], [ %indvars.iv.next514.3, %402 ]
  %lcmp.mod581.not = icmp eq i64 %xtraiter579, 0
  br i1 %lcmp.mod581.not, label %.loopexit, label %.epil.preheader578

.epil.preheader578:                               ; preds = %.loopexit.loopexit.unr-lcssa, %.epil.preheader578
  %indvars.iv513.epil = phi i64 [ %indvars.iv.next514.epil, %.epil.preheader578 ], [ %indvars.iv513.unr, %.loopexit.loopexit.unr-lcssa ]
  %epil.iter580 = phi i64 [ %epil.iter580.next, %.epil.preheader578 ], [ 0, %.loopexit.loopexit.unr-lcssa ]
  %416 = add nsw i64 %indvars.iv513.epil, -1
  %417 = mul nsw i64 %416, %397
  %gep542.epil = getelementptr %struct.complex, ptr %invariant.gep541, i64 %417
  %418 = load float, ptr %gep542.epil, align 4, !tbaa !9
  %419 = getelementptr inbounds float, ptr %29, i64 %indvars.iv513.epil
  store float %418, ptr %419, align 4, !tbaa !13
  %indvars.iv.next514.epil = add nuw nsw i64 %indvars.iv513.epil, 1
  %epil.iter580.next = add i64 %epil.iter580, 1
  %epil.iter580.cmp.not = icmp eq i64 %epil.iter580.next, %xtraiter579
  br i1 %epil.iter580.cmp.not, label %.loopexit, label %.epil.preheader578, !llvm.loop !29

.loopexit.loopexit556.unr-lcssa:                  ; preds = %382, %.lr.ph480
  %indvars.iv508.unr = phi i64 [ 1, %.lr.ph480 ], [ %indvars.iv.next509.3, %382 ]
  %lcmp.mod575.not = icmp eq i64 %xtraiter573, 0
  br i1 %lcmp.mod575.not, label %.loopexit, label %.epil.preheader572

.epil.preheader572:                               ; preds = %.loopexit.loopexit556.unr-lcssa, %.epil.preheader572
  %indvars.iv508.epil = phi i64 [ %indvars.iv.next509.epil, %.epil.preheader572 ], [ %indvars.iv508.unr, %.loopexit.loopexit556.unr-lcssa ]
  %epil.iter574 = phi i64 [ %epil.iter574.next, %.epil.preheader572 ], [ 0, %.loopexit.loopexit556.unr-lcssa ]
  %420 = mul nsw i64 %indvars.iv508.epil, %377
  %gep540.epil = getelementptr %struct.complex, ptr %invariant.gep539, i64 %420
  %421 = load float, ptr %gep540.epil, align 4, !tbaa !9
  %422 = getelementptr inbounds float, ptr %29, i64 %indvars.iv508.epil
  store float %421, ptr %422, align 4, !tbaa !13
  %indvars.iv.next509.epil = add nuw nsw i64 %indvars.iv508.epil, 1
  %epil.iter574.next = add i64 %epil.iter574, 1
  %epil.iter574.cmp.not = icmp eq i64 %epil.iter574.next, %xtraiter573
  br i1 %epil.iter574.cmp.not, label %.loopexit, label %.epil.preheader572, !llvm.loop !30

.loopexit:                                        ; preds = %.loopexit.loopexit556.unr-lcssa, %.epil.preheader572, %.loopexit.loopexit.unr-lcssa, %.epil.preheader578, %375, %395
  store float %71, ptr %9, align 4, !tbaa !9
  store float 0.000000e+00, ptr %72, align 4, !tbaa !12
  store float %73, ptr %11, align 4, !tbaa !9
  store float 0.000000e+00, ptr %74, align 4, !tbaa !12
  br label %423

423:                                              ; preds = %70, %.loopexit, %.loopexit431, %._crit_edge452, %77, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  ret void
}

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

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

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

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

; Function Attrs: nounwind
declare float @cabsf(<2 x float> noundef) local_unnamed_addr #3

; Function Attrs: inlinehint nounwind uwtable
declare hidden <2 x float> @Cf(ptr noundef) local_unnamed_addr #4

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

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

declare void @chb2st_kernels_(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

; 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 float @llvm.floor.f32(float) #5

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x float> @llvm.fmuladd.v2f32(<2 x float>, <2 x float>, <2 x float>) #5

attributes #0 = { nounwind uwtable "min-legal-vector-width"="64" "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 = { 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 = { inlinehint nounwind uwtable "min-legal-vector-width"="64" "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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #7 = { nounwind }

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

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


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,DivRemPairsPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass