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

; 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 }

@c__1 = external hidden global i32, align 4
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [20 x i8], align 1

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

62:                                               ; preds = %9
  br label %66

63:                                               ; preds = %9
  %64 = load ptr, ptr %10, align 8, !tbaa !5
  %65 = load i32, ptr %64, align 4, !tbaa !9
  br label %66

66:                                               ; preds = %63, %62
  %67 = phi i32 [ 1, %62 ], [ %65, %63 ]
  %68 = load i32, ptr %31, align 4, !tbaa !9
  %69 = mul nsw i32 %67, %68
  store i32 %69, ptr %36, align 4, !tbaa !9
  %70 = load i32, ptr %36, align 4, !tbaa !9
  %71 = sitofp i32 %70 to float
  %72 = load ptr, ptr %16, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.complex, ptr %72, i64 1
  %74 = getelementptr inbounds %struct.complex, ptr %73, i32 0, i32 0
  store float %71, ptr %74, align 4, !tbaa !11
  %75 = load ptr, ptr %16, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.complex, ptr %75, i64 1
  %77 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 1
  store float 0.000000e+00, ptr %77, align 4, !tbaa !14
  %78 = load ptr, ptr %17, align 8, !tbaa !5
  %79 = load i32, ptr %78, align 4, !tbaa !9
  %80 = icmp eq i32 %79, -1
  %81 = zext i1 %80 to i32
  store i32 %81, ptr %37, align 4, !tbaa !9
  %82 = load ptr, ptr %10, align 8, !tbaa !5
  %83 = load i32, ptr %82, align 4, !tbaa !9
  %84 = icmp slt i32 %83, 0
  br i1 %84, label %85, label %87

85:                                               ; preds = %66
  %86 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -1, ptr %86, align 4, !tbaa !9
  br label %144

87:                                               ; preds = %66
  %88 = load ptr, ptr %11, align 8, !tbaa !5
  %89 = load i32, ptr %88, align 4, !tbaa !9
  %90 = load ptr, ptr %10, align 8, !tbaa !5
  %91 = load i32, ptr %90, align 4, !tbaa !9
  %92 = icmp slt i32 %89, %91
  br i1 %92, label %93, label %95

93:                                               ; preds = %87
  %94 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -2, ptr %94, align 4, !tbaa !9
  br label %143

95:                                               ; preds = %87
  %96 = load ptr, ptr %12, align 8, !tbaa !5
  %97 = load i32, ptr %96, align 4, !tbaa !9
  %98 = icmp slt i32 %97, 0
  br i1 %98, label %105, label %99

99:                                               ; preds = %95
  %100 = load ptr, ptr %12, align 8, !tbaa !5
  %101 = load i32, ptr %100, align 4, !tbaa !9
  %102 = load ptr, ptr %10, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  %104 = icmp sgt i32 %101, %103
  br i1 %104, label %105, label %107

105:                                              ; preds = %99, %95
  %106 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -3, ptr %106, align 4, !tbaa !9
  br label %142

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

113:                                              ; preds = %107
  br label %117

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

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

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

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

128:                                              ; preds = %122
  br label %132

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

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

135:                                              ; preds = %132
  %136 = load i32, ptr %37, align 4, !tbaa !9
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %140, label %138

138:                                              ; preds = %135
  %139 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -8, ptr %139, align 4, !tbaa !9
  br label %140

140:                                              ; preds = %138, %135, %132
  br label %141

141:                                              ; preds = %140, %120
  br label %142

142:                                              ; preds = %141, %105
  br label %143

143:                                              ; preds = %142, %93
  br label %144

144:                                              ; preds = %143, %85
  %145 = load ptr, ptr %18, align 8, !tbaa !5
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = icmp ne i32 %146, 0
  br i1 %147, label %148, label %153

148:                                              ; preds = %144
  %149 = load ptr, ptr %18, align 8, !tbaa !5
  %150 = load i32, ptr %149, align 4, !tbaa !9
  %151 = sub nsw i32 0, %150
  store i32 %151, ptr %21, align 4, !tbaa !9
  %152 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %21, i32 noundef 6)
  store i32 1, ptr %39, align 4
  br label %519

153:                                              ; preds = %144
  %154 = load i32, ptr %37, align 4, !tbaa !9
  %155 = icmp ne i32 %154, 0
  br i1 %155, label %156, label %157

156:                                              ; preds = %153
  store i32 1, ptr %39, align 4
  br label %519

157:                                              ; preds = %153
  br label %158

158:                                              ; preds = %157
  %159 = load ptr, ptr %10, align 8, !tbaa !5
  %160 = load i32, ptr %159, align 4, !tbaa !9
  %161 = icmp sle i32 %160, 0
  br i1 %161, label %162, label %169

162:                                              ; preds = %158
  %163 = load ptr, ptr %16, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.complex, ptr %163, i64 1
  %165 = getelementptr inbounds %struct.complex, ptr %164, i32 0, i32 0
  store float 1.000000e+00, ptr %165, align 4, !tbaa !11
  %166 = load ptr, ptr %16, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.complex, ptr %166, i64 1
  %168 = getelementptr inbounds %struct.complex, ptr %167, i32 0, i32 1
  store float 0.000000e+00, ptr %168, align 4, !tbaa !14
  store i32 1, ptr %39, align 4
  br label %519

169:                                              ; preds = %158
  store i32 2, ptr %28, align 4, !tbaa !9
  store i32 0, ptr %34, align 4, !tbaa !9
  %170 = load ptr, ptr %10, align 8, !tbaa !5
  %171 = load i32, ptr %170, align 4, !tbaa !9
  store i32 %171, ptr %38, align 4, !tbaa !9
  %172 = load i32, ptr %31, align 4, !tbaa !9
  %173 = icmp sgt i32 %172, 1
  br i1 %173, label %174, label %227

174:                                              ; preds = %169
  %175 = load i32, ptr %31, align 4, !tbaa !9
  %176 = load ptr, ptr %12, align 8, !tbaa !5
  %177 = load i32, ptr %176, align 4, !tbaa !9
  %178 = icmp slt i32 %175, %177
  br i1 %178, label %179, label %227

179:                                              ; preds = %174
  store i32 0, ptr %21, align 4, !tbaa !9
  %180 = load ptr, ptr %10, align 8, !tbaa !5
  %181 = load ptr, ptr %11, align 8, !tbaa !5
  %182 = load ptr, ptr %12, align 8, !tbaa !5
  %183 = call i32 @ilaenv_(ptr noundef @c__3, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %180, ptr noundef %181, ptr noundef %182, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %183, ptr %22, align 4, !tbaa !9
  %184 = load i32, ptr %21, align 4, !tbaa !9
  %185 = load i32, ptr %22, align 4, !tbaa !9
  %186 = icmp sge i32 %184, %185
  br i1 %186, label %187, label %189

187:                                              ; preds = %179
  %188 = load i32, ptr %21, align 4, !tbaa !9
  br label %191

189:                                              ; preds = %179
  %190 = load i32, ptr %22, align 4, !tbaa !9
  br label %191

191:                                              ; preds = %189, %187
  %192 = phi i32 [ %188, %187 ], [ %190, %189 ]
  store i32 %192, ptr %34, align 4, !tbaa !9
  %193 = load i32, ptr %34, align 4, !tbaa !9
  %194 = load ptr, ptr %12, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !9
  %196 = icmp slt i32 %193, %195
  br i1 %196, label %197, label %226

197:                                              ; preds = %191
  %198 = load ptr, ptr %10, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  store i32 %199, ptr %35, align 4, !tbaa !9
  %200 = load i32, ptr %35, align 4, !tbaa !9
  %201 = load i32, ptr %31, align 4, !tbaa !9
  %202 = mul nsw i32 %200, %201
  store i32 %202, ptr %38, align 4, !tbaa !9
  %203 = load ptr, ptr %17, align 8, !tbaa !5
  %204 = load i32, ptr %203, align 4, !tbaa !9
  %205 = load i32, ptr %38, align 4, !tbaa !9
  %206 = icmp slt i32 %204, %205
  br i1 %206, label %207, label %225

207:                                              ; preds = %197
  %208 = load ptr, ptr %17, align 8, !tbaa !5
  %209 = load i32, ptr %208, align 4, !tbaa !9
  %210 = load i32, ptr %35, align 4, !tbaa !9
  %211 = sdiv i32 %209, %210
  store i32 %211, ptr %31, align 4, !tbaa !9
  store i32 2, ptr %21, align 4, !tbaa !9
  %212 = load ptr, ptr %10, align 8, !tbaa !5
  %213 = load ptr, ptr %11, align 8, !tbaa !5
  %214 = load ptr, ptr %12, align 8, !tbaa !5
  %215 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %212, ptr noundef %213, ptr noundef %214, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %215, ptr %22, align 4, !tbaa !9
  %216 = load i32, ptr %21, align 4, !tbaa !9
  %217 = load i32, ptr %22, align 4, !tbaa !9
  %218 = icmp sge i32 %216, %217
  br i1 %218, label %219, label %221

219:                                              ; preds = %207
  %220 = load i32, ptr %21, align 4, !tbaa !9
  br label %223

221:                                              ; preds = %207
  %222 = load i32, ptr %22, align 4, !tbaa !9
  br label %223

223:                                              ; preds = %221, %219
  %224 = phi i32 [ %220, %219 ], [ %222, %221 ]
  store i32 %224, ptr %28, align 4, !tbaa !9
  br label %225

225:                                              ; preds = %223, %197
  br label %226

226:                                              ; preds = %225, %191
  br label %227

227:                                              ; preds = %226, %174, %169
  %228 = load i32, ptr %31, align 4, !tbaa !9
  %229 = load i32, ptr %28, align 4, !tbaa !9
  %230 = icmp sge i32 %228, %229
  br i1 %230, label %231, label %303

231:                                              ; preds = %227
  %232 = load i32, ptr %31, align 4, !tbaa !9
  %233 = load ptr, ptr %12, align 8, !tbaa !5
  %234 = load i32, ptr %233, align 4, !tbaa !9
  %235 = icmp slt i32 %232, %234
  br i1 %235, label %236, label %303

236:                                              ; preds = %231
  %237 = load i32, ptr %34, align 4, !tbaa !9
  %238 = load ptr, ptr %12, align 8, !tbaa !5
  %239 = load i32, ptr %238, align 4, !tbaa !9
  %240 = icmp slt i32 %237, %239
  br i1 %240, label %241, label %303

241:                                              ; preds = %236
  %242 = load ptr, ptr %12, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = load i32, ptr %34, align 4, !tbaa !9
  %245 = sub nsw i32 %243, %244
  %246 = sub nsw i32 %245, 1
  %247 = load i32, ptr %31, align 4, !tbaa !9
  %248 = sdiv i32 %246, %247
  %249 = load i32, ptr %31, align 4, !tbaa !9
  %250 = mul nsw i32 %248, %249
  store i32 %250, ptr %32, align 4, !tbaa !9
  %251 = load ptr, ptr %12, align 8, !tbaa !5
  %252 = load i32, ptr %251, align 4, !tbaa !9
  store i32 %252, ptr %21, align 4, !tbaa !9
  %253 = load i32, ptr %32, align 4, !tbaa !9
  %254 = load i32, ptr %31, align 4, !tbaa !9
  %255 = add nsw i32 %253, %254
  store i32 %255, ptr %22, align 4, !tbaa !9
  %256 = load i32, ptr %21, align 4, !tbaa !9
  %257 = load i32, ptr %22, align 4, !tbaa !9
  %258 = icmp sle i32 %256, %257
  br i1 %258, label %259, label %261

259:                                              ; preds = %241
  %260 = load i32, ptr %21, align 4, !tbaa !9
  br label %263

261:                                              ; preds = %241
  %262 = load i32, ptr %22, align 4, !tbaa !9
  br label %263

263:                                              ; preds = %261, %259
  %264 = phi i32 [ %260, %259 ], [ %262, %261 ]
  store i32 %264, ptr %33, align 4, !tbaa !9
  %265 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %265, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %266

266:                                              ; preds = %299, %263
  %267 = load i32, ptr %26, align 4, !tbaa !9
  %268 = load i32, ptr %21, align 4, !tbaa !9
  %269 = icmp sle i32 %267, %268
  br i1 %269, label %270, label %302

270:                                              ; preds = %266
  %271 = load ptr, ptr %10, align 8, !tbaa !5
  %272 = load i32, ptr %271, align 4, !tbaa !9
  store i32 %272, ptr %22, align 4, !tbaa !9
  %273 = load i32, ptr %33, align 4, !tbaa !9
  %274 = add nsw i32 %273, 1
  store i32 %274, ptr %25, align 4, !tbaa !9
  br label %275

275:                                              ; preds = %295, %270
  %276 = load i32, ptr %25, align 4, !tbaa !9
  %277 = load i32, ptr %22, align 4, !tbaa !9
  %278 = icmp sle i32 %276, %277
  br i1 %278, label %279, label %298

279:                                              ; preds = %275
  %280 = load i32, ptr %25, align 4, !tbaa !9
  %281 = load i32, ptr %26, align 4, !tbaa !9
  %282 = load i32, ptr %19, align 4, !tbaa !9
  %283 = mul nsw i32 %281, %282
  %284 = add nsw i32 %280, %283
  store i32 %284, ptr %23, align 4, !tbaa !9
  %285 = load ptr, ptr %13, align 8, !tbaa !5
  %286 = load i32, ptr %23, align 4, !tbaa !9
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds %struct.complex, ptr %285, i64 %287
  %289 = getelementptr inbounds %struct.complex, ptr %288, i32 0, i32 0
  store float 0.000000e+00, ptr %289, align 4, !tbaa !11
  %290 = load ptr, ptr %13, align 8, !tbaa !5
  %291 = load i32, ptr %23, align 4, !tbaa !9
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds %struct.complex, ptr %290, i64 %292
  %294 = getelementptr inbounds %struct.complex, ptr %293, i32 0, i32 1
  store float 0.000000e+00, ptr %294, align 4, !tbaa !14
  br label %295

295:                                              ; preds = %279
  %296 = load i32, ptr %25, align 4, !tbaa !9
  %297 = add nsw i32 %296, 1
  store i32 %297, ptr %25, align 4, !tbaa !9
  br label %275, !llvm.loop !15

298:                                              ; preds = %275
  br label %299

299:                                              ; preds = %298
  %300 = load i32, ptr %26, align 4, !tbaa !9
  %301 = add nsw i32 %300, 1
  store i32 %301, ptr %26, align 4, !tbaa !9
  br label %266, !llvm.loop !17

302:                                              ; preds = %266
  br label %304

303:                                              ; preds = %236, %231, %227
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %304

304:                                              ; preds = %303, %302
  %305 = load i32, ptr %33, align 4, !tbaa !9
  %306 = load ptr, ptr %10, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  %308 = icmp slt i32 %305, %307
  br i1 %308, label %309, label %340

309:                                              ; preds = %304
  %310 = load ptr, ptr %10, align 8, !tbaa !5
  %311 = load i32, ptr %310, align 4, !tbaa !9
  %312 = load i32, ptr %33, align 4, !tbaa !9
  %313 = sub nsw i32 %311, %312
  store i32 %313, ptr %21, align 4, !tbaa !9
  %314 = load ptr, ptr %11, align 8, !tbaa !5
  %315 = load i32, ptr %314, align 4, !tbaa !9
  %316 = load i32, ptr %33, align 4, !tbaa !9
  %317 = sub nsw i32 %315, %316
  store i32 %317, ptr %22, align 4, !tbaa !9
  %318 = load ptr, ptr %12, align 8, !tbaa !5
  %319 = load i32, ptr %318, align 4, !tbaa !9
  %320 = load i32, ptr %33, align 4, !tbaa !9
  %321 = sub nsw i32 %319, %320
  store i32 %321, ptr %23, align 4, !tbaa !9
  %322 = load ptr, ptr %13, align 8, !tbaa !5
  %323 = load i32, ptr %33, align 4, !tbaa !9
  %324 = add nsw i32 %323, 1
  %325 = load i32, ptr %33, align 4, !tbaa !9
  %326 = add nsw i32 %325, 1
  %327 = load i32, ptr %19, align 4, !tbaa !9
  %328 = mul nsw i32 %326, %327
  %329 = add nsw i32 %324, %328
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds %struct.complex, ptr %322, i64 %330
  %332 = load ptr, ptr %14, align 8, !tbaa !5
  %333 = load ptr, ptr %15, align 8, !tbaa !5
  %334 = load i32, ptr %33, align 4, !tbaa !9
  %335 = add nsw i32 %334, 1
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds %struct.complex, ptr %333, i64 %336
  %338 = load ptr, ptr %16, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.complex, ptr %338, i64 1
  call void @cungl2_(ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %331, ptr noundef %332, ptr noundef %337, ptr noundef %339, ptr noundef %29)
  br label %340

340:                                              ; preds = %309, %304
  %341 = load i32, ptr %33, align 4, !tbaa !9
  %342 = icmp sgt i32 %341, 0
  br i1 %342, label %343, label %510

343:                                              ; preds = %340
  %344 = load i32, ptr %31, align 4, !tbaa !9
  %345 = sub nsw i32 0, %344
  store i32 %345, ptr %21, align 4, !tbaa !9
  %346 = load i32, ptr %32, align 4, !tbaa !9
  %347 = add nsw i32 %346, 1
  store i32 %347, ptr %25, align 4, !tbaa !9
  br label %348

348:                                              ; preds = %505, %343
  %349 = load i32, ptr %21, align 4, !tbaa !9
  %350 = icmp slt i32 %349, 0
  br i1 %350, label %351, label %355

351:                                              ; preds = %348
  %352 = load i32, ptr %25, align 4, !tbaa !9
  %353 = icmp sge i32 %352, 1
  %354 = zext i1 %353 to i32
  br label %359

355:                                              ; preds = %348
  %356 = load i32, ptr %25, align 4, !tbaa !9
  %357 = icmp sle i32 %356, 1
  %358 = zext i1 %357 to i32
  br label %359

359:                                              ; preds = %355, %351
  %360 = phi i32 [ %354, %351 ], [ %358, %355 ]
  %361 = icmp ne i32 %360, 0
  br i1 %361, label %362, label %509

362:                                              ; preds = %359
  %363 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %363, ptr %22, align 4, !tbaa !9
  %364 = load ptr, ptr %12, align 8, !tbaa !5
  %365 = load i32, ptr %364, align 4, !tbaa !9
  %366 = load i32, ptr %25, align 4, !tbaa !9
  %367 = sub nsw i32 %365, %366
  %368 = add nsw i32 %367, 1
  store i32 %368, ptr %23, align 4, !tbaa !9
  %369 = load i32, ptr %22, align 4, !tbaa !9
  %370 = load i32, ptr %23, align 4, !tbaa !9
  %371 = icmp sle i32 %369, %370
  br i1 %371, label %372, label %374

372:                                              ; preds = %362
  %373 = load i32, ptr %22, align 4, !tbaa !9
  br label %376

374:                                              ; preds = %362
  %375 = load i32, ptr %23, align 4, !tbaa !9
  br label %376

376:                                              ; preds = %374, %372
  %377 = phi i32 [ %373, %372 ], [ %375, %374 ]
  store i32 %377, ptr %30, align 4, !tbaa !9
  %378 = load i32, ptr %25, align 4, !tbaa !9
  %379 = load i32, ptr %30, align 4, !tbaa !9
  %380 = add nsw i32 %378, %379
  %381 = load ptr, ptr %10, align 8, !tbaa !5
  %382 = load i32, ptr %381, align 4, !tbaa !9
  %383 = icmp sle i32 %380, %382
  br i1 %383, label %384, label %444

384:                                              ; preds = %376
  %385 = load ptr, ptr %11, align 8, !tbaa !5
  %386 = load i32, ptr %385, align 4, !tbaa !9
  %387 = load i32, ptr %25, align 4, !tbaa !9
  %388 = sub nsw i32 %386, %387
  %389 = add nsw i32 %388, 1
  store i32 %389, ptr %22, align 4, !tbaa !9
  %390 = load ptr, ptr %13, align 8, !tbaa !5
  %391 = load i32, ptr %25, align 4, !tbaa !9
  %392 = load i32, ptr %25, align 4, !tbaa !9
  %393 = load i32, ptr %19, align 4, !tbaa !9
  %394 = mul nsw i32 %392, %393
  %395 = add nsw i32 %391, %394
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds %struct.complex, ptr %390, i64 %396
  %398 = load ptr, ptr %14, align 8, !tbaa !5
  %399 = load ptr, ptr %15, align 8, !tbaa !5
  %400 = load i32, ptr %25, align 4, !tbaa !9
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds %struct.complex, ptr %399, i64 %401
  %403 = load ptr, ptr %16, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.complex, ptr %403, i64 1
  call void @clarft_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %22, ptr noundef %30, ptr noundef %397, ptr noundef %398, ptr noundef %402, ptr noundef %404, ptr noundef %35)
  %405 = load ptr, ptr %10, align 8, !tbaa !5
  %406 = load i32, ptr %405, align 4, !tbaa !9
  %407 = load i32, ptr %25, align 4, !tbaa !9
  %408 = sub nsw i32 %406, %407
  %409 = load i32, ptr %30, align 4, !tbaa !9
  %410 = sub nsw i32 %408, %409
  %411 = add nsw i32 %410, 1
  store i32 %411, ptr %22, align 4, !tbaa !9
  %412 = load ptr, ptr %11, align 8, !tbaa !5
  %413 = load i32, ptr %412, align 4, !tbaa !9
  %414 = load i32, ptr %25, align 4, !tbaa !9
  %415 = sub nsw i32 %413, %414
  %416 = add nsw i32 %415, 1
  store i32 %416, ptr %23, align 4, !tbaa !9
  %417 = load ptr, ptr %13, align 8, !tbaa !5
  %418 = load i32, ptr %25, align 4, !tbaa !9
  %419 = load i32, ptr %25, align 4, !tbaa !9
  %420 = load i32, ptr %19, align 4, !tbaa !9
  %421 = mul nsw i32 %419, %420
  %422 = add nsw i32 %418, %421
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds %struct.complex, ptr %417, i64 %423
  %425 = load ptr, ptr %14, align 8, !tbaa !5
  %426 = load ptr, ptr %16, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.complex, ptr %426, i64 1
  %428 = load ptr, ptr %13, align 8, !tbaa !5
  %429 = load i32, ptr %25, align 4, !tbaa !9
  %430 = load i32, ptr %30, align 4, !tbaa !9
  %431 = add nsw i32 %429, %430
  %432 = load i32, ptr %25, align 4, !tbaa !9
  %433 = load i32, ptr %19, align 4, !tbaa !9
  %434 = mul nsw i32 %432, %433
  %435 = add nsw i32 %431, %434
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds %struct.complex, ptr %428, i64 %436
  %438 = load ptr, ptr %14, align 8, !tbaa !5
  %439 = load ptr, ptr %16, align 8, !tbaa !5
  %440 = load i32, ptr %30, align 4, !tbaa !9
  %441 = add nsw i32 %440, 1
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds %struct.complex, ptr %439, i64 %442
  call void @clarfb_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %22, ptr noundef %23, ptr noundef %30, ptr noundef %424, ptr noundef %425, ptr noundef %427, ptr noundef %35, ptr noundef %437, ptr noundef %438, ptr noundef %443, ptr noundef %35)
  br label %444

444:                                              ; preds = %384, %376
  %445 = load ptr, ptr %11, align 8, !tbaa !5
  %446 = load i32, ptr %445, align 4, !tbaa !9
  %447 = load i32, ptr %25, align 4, !tbaa !9
  %448 = sub nsw i32 %446, %447
  %449 = add nsw i32 %448, 1
  store i32 %449, ptr %22, align 4, !tbaa !9
  %450 = load ptr, ptr %13, align 8, !tbaa !5
  %451 = load i32, ptr %25, align 4, !tbaa !9
  %452 = load i32, ptr %25, align 4, !tbaa !9
  %453 = load i32, ptr %19, align 4, !tbaa !9
  %454 = mul nsw i32 %452, %453
  %455 = add nsw i32 %451, %454
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds %struct.complex, ptr %450, i64 %456
  %458 = load ptr, ptr %14, align 8, !tbaa !5
  %459 = load ptr, ptr %15, align 8, !tbaa !5
  %460 = load i32, ptr %25, align 4, !tbaa !9
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds %struct.complex, ptr %459, i64 %461
  %463 = load ptr, ptr %16, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.complex, ptr %463, i64 1
  call void @cungl2_(ptr noundef %30, ptr noundef %22, ptr noundef %30, ptr noundef %457, ptr noundef %458, ptr noundef %462, ptr noundef %464, ptr noundef %29)
  %465 = load i32, ptr %25, align 4, !tbaa !9
  %466 = sub nsw i32 %465, 1
  store i32 %466, ptr %22, align 4, !tbaa !9
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %467

467:                                              ; preds = %501, %444
  %468 = load i32, ptr %26, align 4, !tbaa !9
  %469 = load i32, ptr %22, align 4, !tbaa !9
  %470 = icmp sle i32 %468, %469
  br i1 %470, label %471, label %504

471:                                              ; preds = %467
  %472 = load i32, ptr %25, align 4, !tbaa !9
  %473 = load i32, ptr %30, align 4, !tbaa !9
  %474 = add nsw i32 %472, %473
  %475 = sub nsw i32 %474, 1
  store i32 %475, ptr %23, align 4, !tbaa !9
  %476 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %476, ptr %27, align 4, !tbaa !9
  br label %477

477:                                              ; preds = %497, %471
  %478 = load i32, ptr %27, align 4, !tbaa !9
  %479 = load i32, ptr %23, align 4, !tbaa !9
  %480 = icmp sle i32 %478, %479
  br i1 %480, label %481, label %500

481:                                              ; preds = %477
  %482 = load i32, ptr %27, align 4, !tbaa !9
  %483 = load i32, ptr %26, align 4, !tbaa !9
  %484 = load i32, ptr %19, align 4, !tbaa !9
  %485 = mul nsw i32 %483, %484
  %486 = add nsw i32 %482, %485
  store i32 %486, ptr %24, align 4, !tbaa !9
  %487 = load ptr, ptr %13, align 8, !tbaa !5
  %488 = load i32, ptr %24, align 4, !tbaa !9
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds %struct.complex, ptr %487, i64 %489
  %491 = getelementptr inbounds %struct.complex, ptr %490, i32 0, i32 0
  store float 0.000000e+00, ptr %491, align 4, !tbaa !11
  %492 = load ptr, ptr %13, align 8, !tbaa !5
  %493 = load i32, ptr %24, align 4, !tbaa !9
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds %struct.complex, ptr %492, i64 %494
  %496 = getelementptr inbounds %struct.complex, ptr %495, i32 0, i32 1
  store float 0.000000e+00, ptr %496, align 4, !tbaa !14
  br label %497

497:                                              ; preds = %481
  %498 = load i32, ptr %27, align 4, !tbaa !9
  %499 = add nsw i32 %498, 1
  store i32 %499, ptr %27, align 4, !tbaa !9
  br label %477, !llvm.loop !18

500:                                              ; preds = %477
  br label %501

501:                                              ; preds = %500
  %502 = load i32, ptr %26, align 4, !tbaa !9
  %503 = add nsw i32 %502, 1
  store i32 %503, ptr %26, align 4, !tbaa !9
  br label %467, !llvm.loop !19

504:                                              ; preds = %467
  br label %505

505:                                              ; preds = %504
  %506 = load i32, ptr %21, align 4, !tbaa !9
  %507 = load i32, ptr %25, align 4, !tbaa !9
  %508 = add nsw i32 %507, %506
  store i32 %508, ptr %25, align 4, !tbaa !9
  br label %348, !llvm.loop !20

509:                                              ; preds = %359
  br label %510

510:                                              ; preds = %509, %340
  %511 = load i32, ptr %38, align 4, !tbaa !9
  %512 = sitofp i32 %511 to float
  %513 = load ptr, ptr %16, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.complex, ptr %513, i64 1
  %515 = getelementptr inbounds %struct.complex, ptr %514, i32 0, i32 0
  store float %512, ptr %515, align 4, !tbaa !11
  %516 = load ptr, ptr %16, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.complex, ptr %516, i64 1
  %518 = getelementptr inbounds %struct.complex, ptr %517, i32 0, i32 1
  store float 0.000000e+00, ptr %518, align 4, !tbaa !14
  store i32 1, ptr %39, align 4
  br label %519

519:                                              ; preds = %510, %162, %156, %148
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  ret void
}

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

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

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

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

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

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

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

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


; 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 }

@c__1 = external hidden global i32, align 4
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [20 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @cunglq_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr nocapture noundef readonly %7, ptr nocapture noundef %8) local_unnamed_addr #0 {
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #5
  %16 = load i32, ptr %4, align 4, !tbaa !5
  %narrow = xor i32 %16, -1
  %17 = sext i32 %narrow to i64
  %18 = getelementptr inbounds %struct.complex, ptr %3, i64 %17
  %19 = getelementptr inbounds i8, ptr %5, i64 -8
  store i32 0, ptr %8, align 4, !tbaa !5
  %20 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %21 = load i32, ptr %0, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.smax.i32(i32 %21, i32 1)
  %22 = mul nsw i32 %spec.select, %20
  %23 = sitofp i32 %22 to float
  store float %23, ptr %6, align 4, !tbaa !9
  %24 = getelementptr inbounds i8, ptr %6, i64 4
  store float 0.000000e+00, ptr %24, align 4, !tbaa !12
  %25 = load i32, ptr %7, align 4, !tbaa !5
  %26 = icmp eq i32 %25, -1
  %27 = icmp slt i32 %21, 0
  br i1 %27, label %.thread.sink.split, label %28

28:                                               ; preds = %9
  %29 = load i32, ptr %1, align 4, !tbaa !5
  %30 = icmp slt i32 %29, %21
  br i1 %30, label %.thread.sink.split, label %31

31:                                               ; preds = %28
  %32 = load i32, ptr %2, align 4, !tbaa !5
  %or.cond197 = icmp ugt i32 %32, %21
  br i1 %or.cond197, label %.thread.sink.split, label %33

33:                                               ; preds = %31
  %34 = load i32, ptr %4, align 4, !tbaa !5
  %35 = icmp slt i32 %34, %spec.select
  br i1 %35, label %.thread.sink.split, label %36

36:                                               ; preds = %33
  %37 = icmp sge i32 %25, %spec.select
  %or.cond = or i1 %37, %26
  br i1 %or.cond, label %38, label %.thread.sink.split

38:                                               ; preds = %36
  %.pr = load i32, ptr %8, align 4, !tbaa !5
  %.not = icmp eq i32 %.pr, 0
  br i1 %.not, label %42, label %.thread

.thread.sink.split:                               ; preds = %36, %33, %31, %28, %9
  %.sink = phi i32 [ -1, %9 ], [ -2, %28 ], [ -3, %31 ], [ -5, %33 ], [ -8, %36 ]
  store i32 %.sink, ptr %8, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %38
  %39 = phi i32 [ %.pr, %38 ], [ %.sink, %.thread.sink.split ]
  %40 = sub nsw i32 0, %39
  store i32 %40, ptr %10, align 4, !tbaa !5
  %41 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %10, i32 noundef 6) #5
  br label %208

42:                                               ; preds = %38
  br i1 %26, label %208, label %43

43:                                               ; preds = %42
  %44 = icmp eq i32 %21, 0
  br i1 %44, label %45, label %46

45:                                               ; preds = %43
  store float 1.000000e+00, ptr %6, align 4, !tbaa !9
  br label %208

46:                                               ; preds = %43
  %47 = icmp sgt i32 %20, 1
  br i1 %47, label %48, label %.thread214

48:                                               ; preds = %46
  %49 = icmp ult i32 %20, %32
  br i1 %49, label %50, label %.thread203

50:                                               ; preds = %48
  %51 = tail call i32 @ilaenv_(ptr noundef nonnull @c__3, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %52 = tail call i32 @llvm.smax.i32(i32 %51, i32 0)
  %53 = load i32, ptr %2, align 4, !tbaa !5
  %54 = icmp slt i32 %52, %53
  br i1 %54, label %55, label %.thread203

55:                                               ; preds = %50
  %56 = load i32, ptr %0, align 4, !tbaa !5
  store i32 %56, ptr %15, align 4, !tbaa !5
  %57 = mul nsw i32 %56, %20
  %58 = load i32, ptr %7, align 4, !tbaa !5
  %59 = icmp slt i32 %58, %57
  br i1 %59, label %60, label %.thread203

60:                                               ; preds = %55
  %61 = sdiv i32 %58, %56
  %62 = tail call i32 @ilaenv_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %63 = tail call i32 @llvm.smax.i32(i32 %62, i32 2)
  %.not189 = icmp slt i32 %61, %63
  br i1 %.not189, label %.thread214, label %..thread203_crit_edge

..thread203_crit_edge:                            ; preds = %60
  %.pre = load i32, ptr %2, align 4, !tbaa !5
  br label %.thread203

.thread203:                                       ; preds = %..thread203_crit_edge, %48, %50, %55
  %64 = phi i32 [ %.pre, %..thread203_crit_edge ], [ %32, %48 ], [ %53, %50 ], [ %53, %55 ]
  %.0212 = phi i32 [ %57, %..thread203_crit_edge ], [ %21, %48 ], [ %21, %50 ], [ %57, %55 ]
  %.0163211 = phi i32 [ %52, %..thread203_crit_edge ], [ 0, %48 ], [ %52, %50 ], [ %52, %55 ]
  %.0166209 = phi i32 [ %61, %..thread203_crit_edge ], [ %20, %48 ], [ %20, %50 ], [ %20, %55 ]
  %65 = icmp slt i32 %.0166209, %64
  %66 = icmp slt i32 %.0163211, %64
  %or.cond200 = and i1 %65, %66
  br i1 %or.cond200, label %67, label %.thread214

67:                                               ; preds = %.thread203
  %68 = xor i32 %.0163211, -1
  %69 = add nsw i32 %64, %68
  %.fr = freeze i32 %69
  %70 = srem i32 %.fr, %.0166209
  %71 = sub nsw i32 %.fr, %70
  %72 = add nsw i32 %71, %.0166209
  store i32 %72, ptr %11, align 4, !tbaa !5
  %73 = tail call i32 @llvm.smin.i32(i32 %64, i32 %72)
  store i32 %73, ptr %10, align 4, !tbaa !5
  %.not191226 = icmp slt i32 %73, 1
  br i1 %.not191226, label %.thread214.loopexit, label %.lr.ph230

.lr.ph230:                                        ; preds = %67
  %74 = load i32, ptr %0, align 4, !tbaa !5
  %.not196.not220 = icmp slt i32 %73, %74
  br i1 %.not196.not220, label %.lr.ph.us.preheader, label %.thread214.loopexit

.lr.ph.us.preheader:                              ; preds = %.lr.ph230
  %75 = shl nsw i64 %17, 3
  %scevgep = getelementptr i8, ptr %3, i64 %75
  %76 = add i32 %16, %73
  %77 = add i32 %76, 1
  %78 = xor i32 %73, -1
  %79 = add nsw i32 %74, %78
  %80 = zext i32 %79 to i64
  %81 = shl nuw nsw i64 %80, 3
  %82 = add nuw nsw i64 %81, 8
  %83 = tail call i32 @llvm.smin.i32(i32 %64, i32 %72)
  %84 = add i32 %16, -1
  %85 = mul i32 %73, %84
  %86 = add i32 %74, %85
  %wide.trip.count = zext nneg i32 %73 to i64
  %xtraiter = and i64 %wide.trip.count, 3
  %87 = icmp ult i32 %73, 4
  br i1 %87, label %.thread214.loopexit.loopexit.unr-lcssa, label %.lr.ph.us.preheader.new

.lr.ph.us.preheader.new:                          ; preds = %.lr.ph.us.preheader
  %unroll_iter = and i64 %wide.trip.count, 2147483644
  br label %.lr.ph.us

.lr.ph.us:                                        ; preds = %.lr.ph.us, %.lr.ph.us.preheader.new
  %indvars.iv253 = phi i64 [ 0, %.lr.ph.us.preheader.new ], [ %indvars.iv.next254.3, %.lr.ph.us ]
  %niter = phi i64 [ 0, %.lr.ph.us.preheader.new ], [ %niter.next.3, %.lr.ph.us ]
  %88 = trunc nuw nsw i64 %indvars.iv253 to i32
  %89 = mul i32 %16, %88
  %90 = add i32 %77, %89
  %91 = sext i32 %90 to i64
  %92 = shl nsw i64 %91, 3
  %scevgep252 = getelementptr i8, ptr %scevgep, i64 %92
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep252, i8 0, i64 %82, i1 false), !tbaa !13
  %93 = trunc i64 %indvars.iv253 to i32
  %94 = or disjoint i32 %93, 1
  %95 = mul i32 %16, %94
  %96 = add i32 %77, %95
  %97 = sext i32 %96 to i64
  %98 = shl nsw i64 %97, 3
  %scevgep252.1 = getelementptr i8, ptr %scevgep, i64 %98
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep252.1, i8 0, i64 %82, i1 false), !tbaa !13
  %99 = trunc i64 %indvars.iv253 to i32
  %100 = or disjoint i32 %99, 2
  %101 = mul i32 %16, %100
  %102 = add i32 %77, %101
  %103 = sext i32 %102 to i64
  %104 = shl nsw i64 %103, 3
  %scevgep252.2 = getelementptr i8, ptr %scevgep, i64 %104
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep252.2, i8 0, i64 %82, i1 false), !tbaa !13
  %105 = trunc i64 %indvars.iv253 to i32
  %106 = or disjoint i32 %105, 3
  %107 = mul i32 %16, %106
  %108 = add i32 %77, %107
  %109 = sext i32 %108 to i64
  %110 = shl nsw i64 %109, 3
  %scevgep252.3 = getelementptr i8, ptr %scevgep, i64 %110
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep252.3, i8 0, i64 %82, i1 false), !tbaa !13
  %indvars.iv.next254.3 = add nuw nsw i64 %indvars.iv253, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.thread214.loopexit.loopexit.unr-lcssa, label %.lr.ph.us, !llvm.loop !14

.thread214.loopexit.loopexit.unr-lcssa:           ; preds = %.lr.ph.us, %.lr.ph.us.preheader
  %indvars.iv253.unr = phi i64 [ 0, %.lr.ph.us.preheader ], [ %indvars.iv.next254.3, %.lr.ph.us ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.thread214.loopexit.loopexit, label %.lr.ph.us.epil

.lr.ph.us.epil:                                   ; preds = %.thread214.loopexit.loopexit.unr-lcssa, %.lr.ph.us.epil
  %indvars.iv253.epil = phi i64 [ %indvars.iv.next254.epil, %.lr.ph.us.epil ], [ %indvars.iv253.unr, %.thread214.loopexit.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph.us.epil ], [ 0, %.thread214.loopexit.loopexit.unr-lcssa ]
  %111 = trunc nuw nsw i64 %indvars.iv253.epil to i32
  %112 = mul i32 %16, %111
  %113 = add i32 %77, %112
  %114 = sext i32 %113 to i64
  %115 = shl nsw i64 %114, 3
  %scevgep252.epil = getelementptr i8, ptr %scevgep, i64 %115
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep252.epil, i8 0, i64 %82, i1 false), !tbaa !13
  %indvars.iv.next254.epil = add nuw nsw i64 %indvars.iv253.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 %.thread214.loopexit.loopexit, label %.lr.ph.us.epil, !llvm.loop !16

.thread214.loopexit.loopexit:                     ; preds = %.lr.ph.us.epil, %.thread214.loopexit.loopexit.unr-lcssa
  %116 = add i32 %86, %83
  br label %.thread214.loopexit

.thread214.loopexit:                              ; preds = %.lr.ph230, %.thread214.loopexit.loopexit, %67
  %.lcssa225.lcssa = phi i32 [ undef, %67 ], [ %116, %.thread214.loopexit.loopexit ], [ undef, %.lr.ph230 ]
  store i32 %.lcssa225.lcssa, ptr %12, align 4, !tbaa !5
  %117 = add nsw i32 %71, 1
  br label %.thread214

.thread214:                                       ; preds = %.thread214.loopexit, %46, %60, %.thread203
  %.0213 = phi i32 [ %.0212, %.thread203 ], [ %57, %60 ], [ %21, %46 ], [ %.0212, %.thread214.loopexit ]
  %.0166210 = phi i32 [ %.0166209, %.thread203 ], [ %61, %60 ], [ %20, %46 ], [ %.0166209, %.thread214.loopexit ]
  %.0165 = phi i32 [ undef, %.thread203 ], [ undef, %60 ], [ undef, %46 ], [ %117, %.thread214.loopexit ]
  %.0164 = phi i32 [ 0, %.thread203 ], [ 0, %60 ], [ 0, %46 ], [ %73, %.thread214.loopexit ]
  %118 = load i32, ptr %0, align 4, !tbaa !5
  %119 = icmp slt i32 %.0164, %118
  br i1 %119, label %120, label %133

120:                                              ; preds = %.thread214
  %121 = sub nsw i32 %118, %.0164
  store i32 %121, ptr %10, align 4, !tbaa !5
  %122 = load i32, ptr %1, align 4, !tbaa !5
  %123 = sub nsw i32 %122, %.0164
  store i32 %123, ptr %11, align 4, !tbaa !5
  %124 = load i32, ptr %2, align 4, !tbaa !5
  %125 = sub nsw i32 %124, %.0164
  store i32 %125, ptr %12, align 4, !tbaa !5
  %126 = add nsw i32 %.0164, 1
  %127 = add i32 %16, 1
  %128 = mul i32 %126, %127
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds %struct.complex, ptr %18, i64 %129
  %131 = sext i32 %126 to i64
  %132 = getelementptr inbounds %struct.complex, ptr %19, i64 %131
  call void @cungl2_(ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %130, ptr noundef nonnull %4, ptr noundef nonnull %132, ptr noundef nonnull %6, ptr noundef nonnull %13) #5
  br label %133

133:                                              ; preds = %120, %.thread214
  %134 = icmp sgt i32 %.0164, 0
  br i1 %134, label %135, label %.loopexit

135:                                              ; preds = %133
  %136 = sub nsw i32 0, %.0166210
  store i32 %136, ptr %10, align 4, !tbaa !5
  %137 = icmp sgt i32 %.0166210, 0
  %138 = icmp sgt i32 %.0165, 0
  %139 = icmp slt i32 %.0165, 2
  %.in244 = select i1 %137, i1 %138, i1 %139
  br i1 %.in244, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %135
  %140 = add i32 %16, 1
  %141 = sext i32 %16 to i64
  %142 = shl nsw i64 %141, 3
  br label %143

143:                                              ; preds = %.lr.ph, %._crit_edge240
  %.1171245 = phi i32 [ %.0165, %.lr.ph ], [ %203, %._crit_edge240 ]
  %144 = load i32, ptr %2, align 4, !tbaa !5
  %145 = sub nsw i32 %144, %.1171245
  %146 = add nsw i32 %145, 1
  store i32 %146, ptr %12, align 4, !tbaa !5
  %147 = call i32 @llvm.smin.i32(i32 %.0166210, i32 %146)
  store i32 %147, ptr %14, align 4, !tbaa !5
  %148 = add nsw i32 %147, %.1171245
  %149 = load i32, ptr %0, align 4, !tbaa !5
  %.not193 = icmp sgt i32 %148, %149
  %.pre268 = load i32, ptr %1, align 4, !tbaa !5
  br i1 %.not193, label %._crit_edge, label %150

._crit_edge:                                      ; preds = %143
  %.pre269 = sext i32 %.1171245 to i64
  br label %169

150:                                              ; preds = %143
  %reass.sub = sub i32 %.pre268, %.1171245
  %151 = add i32 %reass.sub, 1
  store i32 %151, ptr %11, align 4, !tbaa !5
  %152 = mul nsw i32 %.1171245, %16
  %153 = add nsw i32 %152, %.1171245
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds %struct.complex, ptr %18, i64 %154
  %156 = sext i32 %.1171245 to i64
  %157 = getelementptr inbounds %struct.complex, ptr %19, i64 %156
  call void @clarft_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef %155, ptr noundef nonnull %4, ptr noundef nonnull %157, ptr noundef nonnull %6, ptr noundef nonnull %15) #5
  %158 = load i32, ptr %0, align 4, !tbaa !5
  %159 = load i32, ptr %14, align 4, !tbaa !5
  %160 = add i32 %159, %.1171245
  %161 = add i32 %158, 1
  %162 = sub i32 %161, %160
  store i32 %162, ptr %11, align 4, !tbaa !5
  %163 = load i32, ptr %1, align 4, !tbaa !5
  %reass.sub248 = sub i32 %163, %.1171245
  %164 = add i32 %reass.sub248, 1
  store i32 %164, ptr %12, align 4, !tbaa !5
  %165 = add nsw i32 %160, %152
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds %struct.complex, ptr %18, i64 %166
  %168 = sext i32 %159 to i64
  %gep = getelementptr %struct.complex, ptr %6, i64 %168
  call void @clarfb_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %155, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %15, ptr noundef %167, ptr noundef nonnull %4, ptr noundef %gep, ptr noundef nonnull %15) #5
  %.pre267 = load i32, ptr %1, align 4, !tbaa !5
  br label %169

169:                                              ; preds = %._crit_edge, %150
  %.pre-phi = phi i64 [ %.pre269, %._crit_edge ], [ %156, %150 ]
  %170 = phi i32 [ %.pre268, %._crit_edge ], [ %.pre267, %150 ]
  %reass.sub249 = sub i32 %170, %.1171245
  %171 = add i32 %reass.sub249, 1
  store i32 %171, ptr %11, align 4, !tbaa !5
  %172 = mul i32 %.1171245, %140
  %173 = sext i32 %172 to i64
  %174 = getelementptr inbounds %struct.complex, ptr %18, i64 %173
  %175 = getelementptr inbounds %struct.complex, ptr %19, i64 %.pre-phi
  call void @cungl2_(ptr noundef nonnull %14, ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef %174, ptr noundef nonnull %4, ptr noundef nonnull %175, ptr noundef nonnull %6, ptr noundef nonnull %13) #5
  %176 = add nsw i32 %.1171245, -1
  store i32 %176, ptr %11, align 4, !tbaa !5
  %.not194.not236 = icmp sgt i32 %.1171245, 1
  br i1 %.not194.not236, label %.lr.ph239, label %._crit_edge240

.lr.ph239:                                        ; preds = %169
  %177 = load i32, ptr %14, align 4, !tbaa !5
  %178 = add i32 %177, %.1171245
  %179 = add nsw i32 %178, -1
  store i32 %179, ptr %12, align 4, !tbaa !5
  %.not195.not234 = icmp sgt i32 %177, 0
  br i1 %.not195.not234, label %.lr.ph.us241.preheader, label %._crit_edge240

.lr.ph.us241.preheader:                           ; preds = %.lr.ph239
  %180 = add i32 %16, %.1171245
  %181 = sext i32 %180 to i64
  %182 = add nsw i64 %17, %181
  %183 = shl nsw i64 %182, 3
  %184 = add nuw i32 %.1171245, 1
  %smax = call i32 @llvm.smax.i32(i32 %178, i32 %184)
  %185 = xor i32 %.1171245, -1
  %186 = add i32 %smax, %185
  %187 = zext i32 %186 to i64
  %188 = shl nuw nsw i64 %187, 3
  %189 = add nuw nsw i64 %188, 8
  %wide.trip.count265 = zext nneg i32 %176 to i64
  %190 = getelementptr i8, ptr %3, i64 %183
  %191 = add nsw i64 %wide.trip.count265, -1
  %xtraiter270 = and i64 %wide.trip.count265, 7
  %192 = icmp ult i64 %191, 7
  br i1 %192, label %._crit_edge240.loopexit.unr-lcssa, label %.lr.ph.us241.preheader.new

.lr.ph.us241.preheader.new:                       ; preds = %.lr.ph.us241.preheader
  %unroll_iter273 = and i64 %wide.trip.count265, 2147483640
  br label %.lr.ph.us241

.lr.ph.us241:                                     ; preds = %.lr.ph.us241, %.lr.ph.us241.preheader.new
  %indvar = phi i64 [ 0, %.lr.ph.us241.preheader.new ], [ %indvar.next.7, %.lr.ph.us241 ]
  %niter274 = phi i64 [ 0, %.lr.ph.us241.preheader.new ], [ %niter274.next.7, %.lr.ph.us241 ]
  %193 = mul i64 %142, %indvar
  %scevgep261 = getelementptr i8, ptr %190, i64 %193
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep261, i8 0, i64 %189, i1 false), !tbaa !13
  %indvar.next = or disjoint i64 %indvar, 1
  %194 = mul i64 %142, %indvar.next
  %scevgep261.1 = getelementptr i8, ptr %190, i64 %194
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep261.1, i8 0, i64 %189, i1 false), !tbaa !13
  %indvar.next.1 = or disjoint i64 %indvar, 2
  %195 = mul i64 %142, %indvar.next.1
  %scevgep261.2 = getelementptr i8, ptr %190, i64 %195
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep261.2, i8 0, i64 %189, i1 false), !tbaa !13
  %indvar.next.2 = or disjoint i64 %indvar, 3
  %196 = mul i64 %142, %indvar.next.2
  %scevgep261.3 = getelementptr i8, ptr %190, i64 %196
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep261.3, i8 0, i64 %189, i1 false), !tbaa !13
  %indvar.next.3 = or disjoint i64 %indvar, 4
  %197 = mul i64 %142, %indvar.next.3
  %scevgep261.4 = getelementptr i8, ptr %190, i64 %197
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep261.4, i8 0, i64 %189, i1 false), !tbaa !13
  %indvar.next.4 = or disjoint i64 %indvar, 5
  %198 = mul i64 %142, %indvar.next.4
  %scevgep261.5 = getelementptr i8, ptr %190, i64 %198
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep261.5, i8 0, i64 %189, i1 false), !tbaa !13
  %indvar.next.5 = or disjoint i64 %indvar, 6
  %199 = mul i64 %142, %indvar.next.5
  %scevgep261.6 = getelementptr i8, ptr %190, i64 %199
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep261.6, i8 0, i64 %189, i1 false), !tbaa !13
  %indvar.next.6 = or disjoint i64 %indvar, 7
  %200 = mul i64 %142, %indvar.next.6
  %scevgep261.7 = getelementptr i8, ptr %190, i64 %200
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep261.7, i8 0, i64 %189, i1 false), !tbaa !13
  %indvar.next.7 = add nuw nsw i64 %indvar, 8
  %niter274.next.7 = add i64 %niter274, 8
  %niter274.ncmp.7 = icmp eq i64 %niter274.next.7, %unroll_iter273
  br i1 %niter274.ncmp.7, label %._crit_edge240.loopexit.unr-lcssa, label %.lr.ph.us241, !llvm.loop !18

._crit_edge240.loopexit.unr-lcssa:                ; preds = %.lr.ph.us241, %.lr.ph.us241.preheader
  %indvar.unr = phi i64 [ 0, %.lr.ph.us241.preheader ], [ %indvar.next.7, %.lr.ph.us241 ]
  %lcmp.mod272.not = icmp eq i64 %xtraiter270, 0
  br i1 %lcmp.mod272.not, label %._crit_edge240, label %.lr.ph.us241.epil

.lr.ph.us241.epil:                                ; preds = %._crit_edge240.loopexit.unr-lcssa, %.lr.ph.us241.epil
  %indvar.epil = phi i64 [ %indvar.next.epil, %.lr.ph.us241.epil ], [ %indvar.unr, %._crit_edge240.loopexit.unr-lcssa ]
  %epil.iter271 = phi i64 [ %epil.iter271.next, %.lr.ph.us241.epil ], [ 0, %._crit_edge240.loopexit.unr-lcssa ]
  %201 = mul i64 %142, %indvar.epil
  %scevgep261.epil = getelementptr i8, ptr %190, i64 %201
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep261.epil, i8 0, i64 %189, i1 false), !tbaa !13
  %indvar.next.epil = add nuw nsw i64 %indvar.epil, 1
  %epil.iter271.next = add i64 %epil.iter271, 1
  %epil.iter271.cmp.not = icmp eq i64 %epil.iter271.next, %xtraiter270
  br i1 %epil.iter271.cmp.not, label %._crit_edge240, label %.lr.ph.us241.epil, !llvm.loop !19

._crit_edge240:                                   ; preds = %._crit_edge240.loopexit.unr-lcssa, %.lr.ph.us241.epil, %.lr.ph239, %169
  %202 = load i32, ptr %10, align 4, !tbaa !5
  %203 = add nsw i32 %202, %.1171245
  %204 = icmp slt i32 %202, 0
  %205 = icmp sgt i32 %203, 0
  %206 = icmp slt i32 %203, 2
  %.in = select i1 %204, i1 %205, i1 %206
  br i1 %.in, label %143, label %.loopexit, !llvm.loop !20

.loopexit:                                        ; preds = %._crit_edge240, %135, %133
  %207 = sitofp i32 %.0213 to float
  store float %207, ptr %6, align 4, !tbaa !9
  store float 0.000000e+00, ptr %24, align 4, !tbaa !12
  br label %208

208:                                              ; preds = %42, %.loopexit, %45, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #5
  ret void
}

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

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

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

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

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

declare void @clarfb_(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 i32 @llvm.smax.i32(i32, i32) #3

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!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}


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