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

; 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 [9 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @cungql_(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 %17, align 8, !tbaa !5
  %56 = load i32, ptr %55, align 4, !tbaa !9
  %57 = icmp eq i32 %56, -1
  %58 = zext i1 %57 to i32
  store i32 %58, ptr %37, align 4, !tbaa !9
  %59 = load ptr, ptr %10, align 8, !tbaa !5
  %60 = load i32, ptr %59, align 4, !tbaa !9
  %61 = icmp slt i32 %60, 0
  br i1 %61, label %62, label %64

62:                                               ; preds = %9
  %63 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -1, ptr %63, align 4, !tbaa !9
  br label %106

64:                                               ; preds = %9
  %65 = load ptr, ptr %11, align 8, !tbaa !5
  %66 = load i32, ptr %65, align 4, !tbaa !9
  %67 = icmp slt i32 %66, 0
  br i1 %67, label %74, label %68

68:                                               ; preds = %64
  %69 = load ptr, ptr %11, align 8, !tbaa !5
  %70 = load i32, ptr %69, align 4, !tbaa !9
  %71 = load ptr, ptr %10, align 8, !tbaa !5
  %72 = load i32, ptr %71, align 4, !tbaa !9
  %73 = icmp sgt i32 %70, %72
  br i1 %73, label %74, label %76

74:                                               ; preds = %68, %64
  %75 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -2, ptr %75, align 4, !tbaa !9
  br label %105

76:                                               ; preds = %68
  %77 = load ptr, ptr %12, align 8, !tbaa !5
  %78 = load i32, ptr %77, align 4, !tbaa !9
  %79 = icmp slt i32 %78, 0
  br i1 %79, label %86, label %80

80:                                               ; preds = %76
  %81 = load ptr, ptr %12, align 8, !tbaa !5
  %82 = load i32, ptr %81, align 4, !tbaa !9
  %83 = load ptr, ptr %11, align 8, !tbaa !5
  %84 = load i32, ptr %83, align 4, !tbaa !9
  %85 = icmp sgt i32 %82, %84
  br i1 %85, label %86, label %88

86:                                               ; preds = %80, %76
  %87 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -3, ptr %87, align 4, !tbaa !9
  br label %104

88:                                               ; preds = %80
  %89 = load ptr, ptr %14, align 8, !tbaa !5
  %90 = load i32, ptr %89, align 4, !tbaa !9
  %91 = load ptr, ptr %10, align 8, !tbaa !5
  %92 = load i32, ptr %91, align 4, !tbaa !9
  %93 = icmp sge i32 1, %92
  br i1 %93, label %94, label %95

94:                                               ; preds = %88
  br label %98

95:                                               ; preds = %88
  %96 = load ptr, ptr %10, align 8, !tbaa !5
  %97 = load i32, ptr %96, align 4, !tbaa !9
  br label %98

98:                                               ; preds = %95, %94
  %99 = phi i32 [ 1, %94 ], [ %97, %95 ]
  %100 = icmp slt i32 %90, %99
  br i1 %100, label %101, label %103

101:                                              ; preds = %98
  %102 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -5, ptr %102, align 4, !tbaa !9
  br label %103

103:                                              ; preds = %101, %98
  br label %104

104:                                              ; preds = %103, %86
  br label %105

105:                                              ; preds = %104, %74
  br label %106

106:                                              ; preds = %105, %62
  %107 = load ptr, ptr %18, align 8, !tbaa !5
  %108 = load i32, ptr %107, align 4, !tbaa !9
  %109 = icmp eq i32 %108, 0
  br i1 %109, label %110, label %151

110:                                              ; preds = %106
  %111 = load ptr, ptr %11, align 8, !tbaa !5
  %112 = load i32, ptr %111, align 4, !tbaa !9
  %113 = icmp eq i32 %112, 0
  br i1 %113, label %114, label %115

114:                                              ; preds = %110
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %124

115:                                              ; preds = %110
  %116 = load ptr, ptr %10, align 8, !tbaa !5
  %117 = load ptr, ptr %11, align 8, !tbaa !5
  %118 = load ptr, ptr %12, align 8, !tbaa !5
  %119 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %116, ptr noundef %117, ptr noundef %118, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %119, ptr %32, align 4, !tbaa !9
  %120 = load ptr, ptr %11, align 8, !tbaa !5
  %121 = load i32, ptr %120, align 4, !tbaa !9
  %122 = load i32, ptr %32, align 4, !tbaa !9
  %123 = mul nsw i32 %121, %122
  store i32 %123, ptr %36, align 4, !tbaa !9
  br label %124

124:                                              ; preds = %115, %114
  %125 = load i32, ptr %36, align 4, !tbaa !9
  %126 = sitofp i32 %125 to float
  %127 = load ptr, ptr %16, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.complex, ptr %127, i64 1
  %129 = getelementptr inbounds %struct.complex, ptr %128, i32 0, i32 0
  store float %126, ptr %129, align 4, !tbaa !11
  %130 = load ptr, ptr %16, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.complex, ptr %130, i64 1
  %132 = getelementptr inbounds %struct.complex, ptr %131, i32 0, i32 1
  store float 0.000000e+00, ptr %132, align 4, !tbaa !14
  %133 = load ptr, ptr %17, align 8, !tbaa !5
  %134 = load i32, ptr %133, align 4, !tbaa !9
  %135 = load ptr, ptr %11, align 8, !tbaa !5
  %136 = load i32, ptr %135, align 4, !tbaa !9
  %137 = icmp sge i32 1, %136
  br i1 %137, label %138, label %139

138:                                              ; preds = %124
  br label %142

139:                                              ; preds = %124
  %140 = load ptr, ptr %11, align 8, !tbaa !5
  %141 = load i32, ptr %140, align 4, !tbaa !9
  br label %142

142:                                              ; preds = %139, %138
  %143 = phi i32 [ 1, %138 ], [ %141, %139 ]
  %144 = icmp slt i32 %134, %143
  br i1 %144, label %145, label %150

145:                                              ; preds = %142
  %146 = load i32, ptr %37, align 4, !tbaa !9
  %147 = icmp ne i32 %146, 0
  br i1 %147, label %150, label %148

148:                                              ; preds = %145
  %149 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -8, ptr %149, align 4, !tbaa !9
  br label %150

150:                                              ; preds = %148, %145, %142
  br label %151

151:                                              ; preds = %150, %106
  %152 = load ptr, ptr %18, align 8, !tbaa !5
  %153 = load i32, ptr %152, align 4, !tbaa !9
  %154 = icmp ne i32 %153, 0
  br i1 %154, label %155, label %160

155:                                              ; preds = %151
  %156 = load ptr, ptr %18, align 8, !tbaa !5
  %157 = load i32, ptr %156, align 4, !tbaa !9
  %158 = sub nsw i32 0, %157
  store i32 %158, ptr %21, align 4, !tbaa !9
  %159 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %21, i32 noundef 6)
  store i32 1, ptr %39, align 4
  br label %564

160:                                              ; preds = %151
  %161 = load i32, ptr %37, align 4, !tbaa !9
  %162 = icmp ne i32 %161, 0
  br i1 %162, label %163, label %164

163:                                              ; preds = %160
  store i32 1, ptr %39, align 4
  br label %564

164:                                              ; preds = %160
  br label %165

165:                                              ; preds = %164
  %166 = load ptr, ptr %11, align 8, !tbaa !5
  %167 = load i32, ptr %166, align 4, !tbaa !9
  %168 = icmp sle i32 %167, 0
  br i1 %168, label %169, label %170

169:                                              ; preds = %165
  store i32 1, ptr %39, align 4
  br label %564

170:                                              ; preds = %165
  store i32 2, ptr %29, align 4, !tbaa !9
  store i32 0, ptr %34, align 4, !tbaa !9
  %171 = load ptr, ptr %11, align 8, !tbaa !5
  %172 = load i32, ptr %171, align 4, !tbaa !9
  store i32 %172, ptr %38, align 4, !tbaa !9
  %173 = load i32, ptr %32, align 4, !tbaa !9
  %174 = icmp sgt i32 %173, 1
  br i1 %174, label %175, label %228

175:                                              ; preds = %170
  %176 = load i32, ptr %32, align 4, !tbaa !9
  %177 = load ptr, ptr %12, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = icmp slt i32 %176, %178
  br i1 %179, label %180, label %228

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

188:                                              ; preds = %180
  %189 = load i32, ptr %21, align 4, !tbaa !9
  br label %192

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

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

198:                                              ; preds = %192
  %199 = load ptr, ptr %11, align 8, !tbaa !5
  %200 = load i32, ptr %199, align 4, !tbaa !9
  store i32 %200, ptr %35, align 4, !tbaa !9
  %201 = load i32, ptr %35, align 4, !tbaa !9
  %202 = load i32, ptr %32, align 4, !tbaa !9
  %203 = mul nsw i32 %201, %202
  store i32 %203, ptr %38, align 4, !tbaa !9
  %204 = load ptr, ptr %17, align 8, !tbaa !5
  %205 = load i32, ptr %204, align 4, !tbaa !9
  %206 = load i32, ptr %38, align 4, !tbaa !9
  %207 = icmp slt i32 %205, %206
  br i1 %207, label %208, label %226

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

220:                                              ; preds = %208
  %221 = load i32, ptr %21, align 4, !tbaa !9
  br label %224

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

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

226:                                              ; preds = %224, %198
  br label %227

227:                                              ; preds = %226, %192
  br label %228

228:                                              ; preds = %227, %175, %170
  %229 = load i32, ptr %32, align 4, !tbaa !9
  %230 = load i32, ptr %29, align 4, !tbaa !9
  %231 = icmp sge i32 %229, %230
  br i1 %231, label %232, label %309

232:                                              ; preds = %228
  %233 = load i32, ptr %32, align 4, !tbaa !9
  %234 = load ptr, ptr %12, align 8, !tbaa !5
  %235 = load i32, ptr %234, align 4, !tbaa !9
  %236 = icmp slt i32 %233, %235
  br i1 %236, label %237, label %309

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

242:                                              ; preds = %237
  %243 = load ptr, ptr %12, align 8, !tbaa !5
  %244 = load i32, ptr %243, align 4, !tbaa !9
  store i32 %244, ptr %21, align 4, !tbaa !9
  %245 = load ptr, ptr %12, align 8, !tbaa !5
  %246 = load i32, ptr %245, align 4, !tbaa !9
  %247 = load i32, ptr %34, align 4, !tbaa !9
  %248 = sub nsw i32 %246, %247
  %249 = load i32, ptr %32, align 4, !tbaa !9
  %250 = add nsw i32 %248, %249
  %251 = sub nsw i32 %250, 1
  %252 = load i32, ptr %32, align 4, !tbaa !9
  %253 = sdiv i32 %251, %252
  %254 = load i32, ptr %32, align 4, !tbaa !9
  %255 = mul 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 = %242
  %260 = load i32, ptr %21, align 4, !tbaa !9
  br label %263

261:                                              ; preds = %242
  %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 ptr, ptr %11, align 8, !tbaa !5
  %266 = load i32, ptr %265, align 4, !tbaa !9
  %267 = load i32, ptr %33, align 4, !tbaa !9
  %268 = sub nsw i32 %266, %267
  store i32 %268, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %269

269:                                              ; preds = %305, %263
  %270 = load i32, ptr %27, align 4, !tbaa !9
  %271 = load i32, ptr %21, align 4, !tbaa !9
  %272 = icmp sle i32 %270, %271
  br i1 %272, label %273, label %308

273:                                              ; preds = %269
  %274 = load ptr, ptr %10, align 8, !tbaa !5
  %275 = load i32, ptr %274, align 4, !tbaa !9
  store i32 %275, ptr %22, align 4, !tbaa !9
  %276 = load ptr, ptr %10, align 8, !tbaa !5
  %277 = load i32, ptr %276, align 4, !tbaa !9
  %278 = load i32, ptr %33, align 4, !tbaa !9
  %279 = sub nsw i32 %277, %278
  %280 = add nsw i32 %279, 1
  store i32 %280, ptr %26, align 4, !tbaa !9
  br label %281

281:                                              ; preds = %301, %273
  %282 = load i32, ptr %26, align 4, !tbaa !9
  %283 = load i32, ptr %22, align 4, !tbaa !9
  %284 = icmp sle i32 %282, %283
  br i1 %284, label %285, label %304

285:                                              ; preds = %281
  %286 = load i32, ptr %26, align 4, !tbaa !9
  %287 = load i32, ptr %27, align 4, !tbaa !9
  %288 = load i32, ptr %19, align 4, !tbaa !9
  %289 = mul nsw i32 %287, %288
  %290 = add nsw i32 %286, %289
  store i32 %290, ptr %23, align 4, !tbaa !9
  %291 = load ptr, ptr %13, align 8, !tbaa !5
  %292 = load i32, ptr %23, align 4, !tbaa !9
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds %struct.complex, ptr %291, i64 %293
  %295 = getelementptr inbounds %struct.complex, ptr %294, i32 0, i32 0
  store float 0.000000e+00, ptr %295, align 4, !tbaa !11
  %296 = load ptr, ptr %13, align 8, !tbaa !5
  %297 = load i32, ptr %23, align 4, !tbaa !9
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds %struct.complex, ptr %296, i64 %298
  %300 = getelementptr inbounds %struct.complex, ptr %299, i32 0, i32 1
  store float 0.000000e+00, ptr %300, align 4, !tbaa !14
  br label %301

301:                                              ; preds = %285
  %302 = load i32, ptr %26, align 4, !tbaa !9
  %303 = add nsw i32 %302, 1
  store i32 %303, ptr %26, align 4, !tbaa !9
  br label %281, !llvm.loop !15

304:                                              ; preds = %281
  br label %305

305:                                              ; preds = %304
  %306 = load i32, ptr %27, align 4, !tbaa !9
  %307 = add nsw i32 %306, 1
  store i32 %307, ptr %27, align 4, !tbaa !9
  br label %269, !llvm.loop !17

308:                                              ; preds = %269
  br label %310

309:                                              ; preds = %237, %232, %228
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %310

310:                                              ; preds = %309, %308
  %311 = load ptr, ptr %10, align 8, !tbaa !5
  %312 = load i32, ptr %311, align 4, !tbaa !9
  %313 = load i32, ptr %33, align 4, !tbaa !9
  %314 = sub nsw i32 %312, %313
  store i32 %314, ptr %21, align 4, !tbaa !9
  %315 = load ptr, ptr %11, align 8, !tbaa !5
  %316 = load i32, ptr %315, align 4, !tbaa !9
  %317 = load i32, ptr %33, align 4, !tbaa !9
  %318 = sub nsw i32 %316, %317
  store i32 %318, ptr %22, align 4, !tbaa !9
  %319 = load ptr, ptr %12, align 8, !tbaa !5
  %320 = load i32, ptr %319, align 4, !tbaa !9
  %321 = load i32, ptr %33, align 4, !tbaa !9
  %322 = sub nsw i32 %320, %321
  store i32 %322, ptr %23, align 4, !tbaa !9
  %323 = load ptr, ptr %13, align 8, !tbaa !5
  %324 = load i32, ptr %20, align 4, !tbaa !9
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds %struct.complex, ptr %323, i64 %325
  %327 = load ptr, ptr %14, align 8, !tbaa !5
  %328 = load ptr, ptr %15, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct.complex, ptr %328, i64 1
  %330 = load ptr, ptr %16, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.complex, ptr %330, i64 1
  call void @cung2l_(ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %326, ptr noundef %327, ptr noundef %329, ptr noundef %331, ptr noundef %30)
  %332 = load i32, ptr %33, align 4, !tbaa !9
  %333 = icmp sgt i32 %332, 0
  br i1 %333, label %334, label %555

334:                                              ; preds = %310
  %335 = load ptr, ptr %12, align 8, !tbaa !5
  %336 = load i32, ptr %335, align 4, !tbaa !9
  store i32 %336, ptr %21, align 4, !tbaa !9
  %337 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %337, ptr %22, align 4, !tbaa !9
  %338 = load ptr, ptr %12, align 8, !tbaa !5
  %339 = load i32, ptr %338, align 4, !tbaa !9
  %340 = load i32, ptr %33, align 4, !tbaa !9
  %341 = sub nsw i32 %339, %340
  %342 = add nsw i32 %341, 1
  store i32 %342, ptr %26, align 4, !tbaa !9
  br label %343

343:                                              ; preds = %550, %334
  %344 = load i32, ptr %22, align 4, !tbaa !9
  %345 = icmp slt i32 %344, 0
  br i1 %345, label %346, label %351

346:                                              ; preds = %343
  %347 = load i32, ptr %26, align 4, !tbaa !9
  %348 = load i32, ptr %21, align 4, !tbaa !9
  %349 = icmp sge i32 %347, %348
  %350 = zext i1 %349 to i32
  br label %356

351:                                              ; preds = %343
  %352 = load i32, ptr %26, align 4, !tbaa !9
  %353 = load i32, ptr %21, align 4, !tbaa !9
  %354 = icmp sle i32 %352, %353
  %355 = zext i1 %354 to i32
  br label %356

356:                                              ; preds = %351, %346
  %357 = phi i32 [ %350, %346 ], [ %355, %351 ]
  %358 = icmp ne i32 %357, 0
  br i1 %358, label %359, label %554

359:                                              ; preds = %356
  %360 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %360, ptr %23, align 4, !tbaa !9
  %361 = load ptr, ptr %12, align 8, !tbaa !5
  %362 = load i32, ptr %361, align 4, !tbaa !9
  %363 = load i32, ptr %26, align 4, !tbaa !9
  %364 = sub nsw i32 %362, %363
  %365 = add nsw i32 %364, 1
  store i32 %365, ptr %24, align 4, !tbaa !9
  %366 = load i32, ptr %23, align 4, !tbaa !9
  %367 = load i32, ptr %24, align 4, !tbaa !9
  %368 = icmp sle i32 %366, %367
  br i1 %368, label %369, label %371

369:                                              ; preds = %359
  %370 = load i32, ptr %23, align 4, !tbaa !9
  br label %373

371:                                              ; preds = %359
  %372 = load i32, ptr %24, align 4, !tbaa !9
  br label %373

373:                                              ; preds = %371, %369
  %374 = phi i32 [ %370, %369 ], [ %372, %371 ]
  store i32 %374, ptr %31, align 4, !tbaa !9
  %375 = load ptr, ptr %11, align 8, !tbaa !5
  %376 = load i32, ptr %375, align 4, !tbaa !9
  %377 = load ptr, ptr %12, align 8, !tbaa !5
  %378 = load i32, ptr %377, align 4, !tbaa !9
  %379 = sub nsw i32 %376, %378
  %380 = load i32, ptr %26, align 4, !tbaa !9
  %381 = add nsw i32 %379, %380
  %382 = icmp sgt i32 %381, 1
  br i1 %382, label %383, label %458

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

458:                                              ; preds = %383, %373
  %459 = load ptr, ptr %10, align 8, !tbaa !5
  %460 = load i32, ptr %459, align 4, !tbaa !9
  %461 = load ptr, ptr %12, align 8, !tbaa !5
  %462 = load i32, ptr %461, align 4, !tbaa !9
  %463 = sub nsw i32 %460, %462
  %464 = load i32, ptr %26, align 4, !tbaa !9
  %465 = add nsw i32 %463, %464
  %466 = load i32, ptr %31, align 4, !tbaa !9
  %467 = add nsw i32 %465, %466
  %468 = sub nsw i32 %467, 1
  store i32 %468, ptr %23, align 4, !tbaa !9
  %469 = load ptr, ptr %13, align 8, !tbaa !5
  %470 = load ptr, ptr %11, align 8, !tbaa !5
  %471 = load i32, ptr %470, align 4, !tbaa !9
  %472 = load ptr, ptr %12, align 8, !tbaa !5
  %473 = load i32, ptr %472, align 4, !tbaa !9
  %474 = sub nsw i32 %471, %473
  %475 = load i32, ptr %26, align 4, !tbaa !9
  %476 = add nsw i32 %474, %475
  %477 = load i32, ptr %19, align 4, !tbaa !9
  %478 = mul nsw i32 %476, %477
  %479 = add nsw i32 %478, 1
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds %struct.complex, ptr %469, i64 %480
  %482 = load ptr, ptr %14, align 8, !tbaa !5
  %483 = load ptr, ptr %15, align 8, !tbaa !5
  %484 = load i32, ptr %26, align 4, !tbaa !9
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds %struct.complex, ptr %483, i64 %485
  %487 = load ptr, ptr %16, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.complex, ptr %487, i64 1
  call void @cung2l_(ptr noundef %23, ptr noundef %31, ptr noundef %31, ptr noundef %481, ptr noundef %482, ptr noundef %486, ptr noundef %488, ptr noundef %30)
  %489 = load ptr, ptr %11, align 8, !tbaa !5
  %490 = load i32, ptr %489, align 4, !tbaa !9
  %491 = load ptr, ptr %12, align 8, !tbaa !5
  %492 = load i32, ptr %491, align 4, !tbaa !9
  %493 = sub nsw i32 %490, %492
  %494 = load i32, ptr %26, align 4, !tbaa !9
  %495 = add nsw i32 %493, %494
  %496 = load i32, ptr %31, align 4, !tbaa !9
  %497 = add nsw i32 %495, %496
  %498 = sub nsw i32 %497, 1
  store i32 %498, ptr %23, align 4, !tbaa !9
  %499 = load ptr, ptr %11, align 8, !tbaa !5
  %500 = load i32, ptr %499, align 4, !tbaa !9
  %501 = load ptr, ptr %12, align 8, !tbaa !5
  %502 = load i32, ptr %501, align 4, !tbaa !9
  %503 = sub nsw i32 %500, %502
  %504 = load i32, ptr %26, align 4, !tbaa !9
  %505 = add nsw i32 %503, %504
  store i32 %505, ptr %27, align 4, !tbaa !9
  br label %506

506:                                              ; preds = %546, %458
  %507 = load i32, ptr %27, align 4, !tbaa !9
  %508 = load i32, ptr %23, align 4, !tbaa !9
  %509 = icmp sle i32 %507, %508
  br i1 %509, label %510, label %549

510:                                              ; preds = %506
  %511 = load ptr, ptr %10, align 8, !tbaa !5
  %512 = load i32, ptr %511, align 4, !tbaa !9
  store i32 %512, ptr %24, align 4, !tbaa !9
  %513 = load ptr, ptr %10, align 8, !tbaa !5
  %514 = load i32, ptr %513, align 4, !tbaa !9
  %515 = load ptr, ptr %12, align 8, !tbaa !5
  %516 = load i32, ptr %515, align 4, !tbaa !9
  %517 = sub nsw i32 %514, %516
  %518 = load i32, ptr %26, align 4, !tbaa !9
  %519 = add nsw i32 %517, %518
  %520 = load i32, ptr %31, align 4, !tbaa !9
  %521 = add nsw i32 %519, %520
  store i32 %521, ptr %28, align 4, !tbaa !9
  br label %522

522:                                              ; preds = %542, %510
  %523 = load i32, ptr %28, align 4, !tbaa !9
  %524 = load i32, ptr %24, align 4, !tbaa !9
  %525 = icmp sle i32 %523, %524
  br i1 %525, label %526, label %545

526:                                              ; preds = %522
  %527 = load i32, ptr %28, align 4, !tbaa !9
  %528 = load i32, ptr %27, align 4, !tbaa !9
  %529 = load i32, ptr %19, align 4, !tbaa !9
  %530 = mul nsw i32 %528, %529
  %531 = add nsw i32 %527, %530
  store i32 %531, ptr %25, align 4, !tbaa !9
  %532 = load ptr, ptr %13, align 8, !tbaa !5
  %533 = load i32, ptr %25, align 4, !tbaa !9
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds %struct.complex, ptr %532, i64 %534
  %536 = getelementptr inbounds %struct.complex, ptr %535, i32 0, i32 0
  store float 0.000000e+00, ptr %536, align 4, !tbaa !11
  %537 = load ptr, ptr %13, align 8, !tbaa !5
  %538 = load i32, ptr %25, align 4, !tbaa !9
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds %struct.complex, ptr %537, i64 %539
  %541 = getelementptr inbounds %struct.complex, ptr %540, i32 0, i32 1
  store float 0.000000e+00, ptr %541, align 4, !tbaa !14
  br label %542

542:                                              ; preds = %526
  %543 = load i32, ptr %28, align 4, !tbaa !9
  %544 = add nsw i32 %543, 1
  store i32 %544, ptr %28, align 4, !tbaa !9
  br label %522, !llvm.loop !18

545:                                              ; preds = %522
  br label %546

546:                                              ; preds = %545
  %547 = load i32, ptr %27, align 4, !tbaa !9
  %548 = add nsw i32 %547, 1
  store i32 %548, ptr %27, align 4, !tbaa !9
  br label %506, !llvm.loop !19

549:                                              ; preds = %506
  br label %550

550:                                              ; preds = %549
  %551 = load i32, ptr %22, align 4, !tbaa !9
  %552 = load i32, ptr %26, align 4, !tbaa !9
  %553 = add nsw i32 %552, %551
  store i32 %553, ptr %26, align 4, !tbaa !9
  br label %343, !llvm.loop !20

554:                                              ; preds = %356
  br label %555

555:                                              ; preds = %554, %310
  %556 = load i32, ptr %38, align 4, !tbaa !9
  %557 = sitofp i32 %556 to float
  %558 = load ptr, ptr %16, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.complex, ptr %558, i64 1
  %560 = getelementptr inbounds %struct.complex, ptr %559, i32 0, i32 0
  store float %557, ptr %560, align 4, !tbaa !11
  %561 = load ptr, ptr %16, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.complex, ptr %561, i64 1
  %563 = getelementptr inbounds %struct.complex, ptr %562, i32 0, i32 1
  store float 0.000000e+00, ptr %563, align 4, !tbaa !14
  store i32 1, ptr %39, align 4
  br label %564

564:                                              ; preds = %555, %169, %163, %155
  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 @cung2l_(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 [9 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @cungql_(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
  %16 = 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
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #5
  %17 = load i32, ptr %4, align 4, !tbaa !5
  %narrow = xor i32 %17, -1
  %18 = sext i32 %narrow to i64
  %19 = getelementptr inbounds %struct.complex, ptr %3, i64 %18
  %20 = getelementptr inbounds i8, ptr %5, i64 -8
  store i32 0, ptr %8, align 4, !tbaa !5
  %21 = load i32, ptr %7, align 4, !tbaa !5
  %22 = icmp eq i32 %21, -1
  %23 = load i32, ptr %0, align 4, !tbaa !5
  %24 = icmp slt i32 %23, 0
  br i1 %24, label %.thread214.sink.split, label %25

25:                                               ; preds = %9
  %26 = load i32, ptr %1, align 4, !tbaa !5
  %or.cond206 = icmp ugt i32 %26, %23
  br i1 %or.cond206, label %.thread214.sink.split, label %27

27:                                               ; preds = %25
  %28 = load i32, ptr %2, align 4, !tbaa !5
  %29 = icmp slt i32 %28, 0
  %30 = icmp sgt i32 %28, %26
  %or.cond207 = or i1 %29, %30
  br i1 %or.cond207, label %.thread214.sink.split, label %31

31:                                               ; preds = %27
  %32 = load i32, ptr %4, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %23, i32 1)
  %33 = icmp slt i32 %32, %spec.select
  br i1 %33, label %.thread214.sink.split, label %34

34:                                               ; preds = %31
  %35 = icmp eq i32 %26, 0
  br i1 %35, label %41, label %36

36:                                               ; preds = %34
  %37 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, 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
  %38 = load i32, ptr %1, align 4, !tbaa !5
  %39 = mul nsw i32 %38, %37
  %.pre = load i32, ptr %7, align 4, !tbaa !5
  %40 = sitofp i32 %39 to float
  br label %41

41:                                               ; preds = %34, %36
  %.pre290301 = phi i32 [ %38, %36 ], [ 0, %34 ]
  %42 = phi i32 [ %.pre, %36 ], [ %21, %34 ]
  %.0177 = phi i32 [ %37, %36 ], [ undef, %34 ]
  %.0174 = phi float [ %40, %36 ], [ 1.000000e+00, %34 ]
  store float %.0174, ptr %6, align 4, !tbaa !9
  %43 = getelementptr inbounds i8, ptr %6, i64 4
  store float 0.000000e+00, ptr %43, align 4, !tbaa !12
  %spec.select208 = tail call i32 @llvm.smax.i32(i32 %.pre290301, i32 1)
  %44 = icmp sge i32 %42, %spec.select208
  %or.cond = select i1 %44, i1 true, i1 %22
  br i1 %or.cond, label %.thread, label %.thread214.sink.split

.thread:                                          ; preds = %41
  %.pr211.pr = load i32, ptr %8, align 4, !tbaa !5
  %.not = icmp eq i32 %.pr211.pr, 0
  br i1 %.not, label %48, label %.thread214

.thread214.sink.split:                            ; preds = %41, %31, %27, %25, %9
  %.sink = phi i32 [ -1, %9 ], [ -2, %25 ], [ -3, %27 ], [ -5, %31 ], [ -8, %41 ]
  store i32 %.sink, ptr %8, align 4, !tbaa !5
  br label %.thread214

.thread214:                                       ; preds = %.thread214.sink.split, %.thread
  %45 = phi i32 [ %.pr211.pr, %.thread ], [ %.sink, %.thread214.sink.split ]
  %46 = sub nsw i32 0, %45
  store i32 %46, ptr %10, align 4, !tbaa !5
  %47 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %10, i32 noundef 6) #5
  br label %210

48:                                               ; preds = %.thread
  %49 = icmp slt i32 %.pre290301, 1
  %or.cond305 = or i1 %22, %49
  br i1 %or.cond305, label %210, label %50

50:                                               ; preds = %48
  %51 = icmp sgt i32 %.0177, 1
  %.pre292 = load i32, ptr %2, align 4, !tbaa !5
  br i1 %51, label %52, label %.thread229

52:                                               ; preds = %50
  %53 = icmp slt i32 %.0177, %.pre292
  br i1 %53, label %54, label %.thread218

54:                                               ; preds = %52
  %55 = 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
  %56 = tail call i32 @llvm.smax.i32(i32 %55, i32 0)
  %57 = load i32, ptr %2, align 4, !tbaa !5
  %58 = icmp slt i32 %56, %57
  %.pre290.pre299 = load i32, ptr %1, align 4, !tbaa !5
  br i1 %58, label %59, label %.thread218

59:                                               ; preds = %54
  store i32 %.pre290.pre299, ptr %16, align 4, !tbaa !5
  %60 = mul nsw i32 %.pre290.pre299, %.0177
  %61 = load i32, ptr %7, align 4, !tbaa !5
  %62 = icmp slt i32 %61, %60
  br i1 %62, label %63, label %.thread218

63:                                               ; preds = %59
  %64 = sdiv i32 %61, %.pre290.pre299
  %65 = 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
  %66 = tail call i32 @llvm.smax.i32(i32 %65, i32 2)
  %.not198 = icmp slt i32 %64, %66
  br i1 %.not198, label %..thread229_crit_edge, label %..thread218_crit_edge

..thread229_crit_edge:                            ; preds = %63
  %.pre289 = load i32, ptr %1, align 4, !tbaa !5
  %.pre291 = load i32, ptr %2, align 4, !tbaa !5
  br label %.thread229

..thread218_crit_edge:                            ; preds = %63
  %.pre288 = load i32, ptr %2, align 4, !tbaa !5
  %.pre290.pre = load i32, ptr %1, align 4, !tbaa !5
  br label %.thread218

.thread218:                                       ; preds = %..thread218_crit_edge, %52, %54, %59
  %.pre290 = phi i32 [ %.pre290.pre, %..thread218_crit_edge ], [ %.pre290301, %52 ], [ %.pre290.pre299, %54 ], [ %.pre290.pre299, %59 ]
  %67 = phi i32 [ %.pre288, %..thread218_crit_edge ], [ %.pre292, %52 ], [ %57, %54 ], [ %57, %59 ]
  %.0227 = phi i32 [ %60, %..thread218_crit_edge ], [ %.pre290301, %52 ], [ %.pre290301, %54 ], [ %60, %59 ]
  %.0175226 = phi i32 [ %56, %..thread218_crit_edge ], [ 0, %52 ], [ %56, %54 ], [ %56, %59 ]
  %.2224 = phi i32 [ %64, %..thread218_crit_edge ], [ %.0177, %52 ], [ %.0177, %54 ], [ %.0177, %59 ]
  %68 = icmp slt i32 %.2224, %67
  %69 = icmp slt i32 %.0175226, %67
  %or.cond209 = and i1 %68, %69
  br i1 %or.cond209, label %70, label %.thread229

70:                                               ; preds = %.thread218
  %71 = sub nsw i32 %.2224, %.0175226
  %72 = add i32 %71, %67
  %.fr199 = freeze i32 %72
  %73 = add i32 %.fr199, -1
  %74 = srem i32 %73, %.2224
  %75 = sub nsw i32 %73, %74
  store i32 %75, ptr %11, align 4, !tbaa !5
  %76 = tail call i32 @llvm.smin.i32(i32 %67, i32 %75)
  %77 = sub nsw i32 %.pre290, %76
  store i32 %77, ptr %10, align 4, !tbaa !5
  %.not201247 = icmp sgt i32 %77, 0
  %.not205.not241 = icmp sgt i32 %76, 0
  %or.cond306 = and i1 %.not201247, %.not205.not241
  br i1 %or.cond306, label %.lr.ph.us.preheader, label %.thread229

.lr.ph.us.preheader:                              ; preds = %70
  %78 = load i32, ptr %0, align 4, !tbaa !5
  %79 = shl nsw i64 %18, 3
  %scevgep = getelementptr i8, ptr %3, i64 %79
  %80 = add i32 %17, %78
  %81 = add i32 %80, 1
  %82 = sub i32 %81, %76
  %83 = add i32 %78, 1
  %84 = sub i32 %83, %76
  %smax = tail call i32 @llvm.smax.i32(i32 %78, i32 %84)
  %85 = add i32 %76, %smax
  %86 = xor i32 %78, -1
  %87 = add i32 %85, %86
  %88 = zext i32 %87 to i64
  %89 = shl nuw nsw i64 %88, 3
  %90 = add nuw nsw i64 %89, 8
  %wide.trip.count = zext nneg i32 %77 to i64
  %xtraiter = and i64 %wide.trip.count, 3
  %91 = icmp ult i32 %77, 4
  br i1 %91, label %.thread229.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.iv276 = phi i64 [ 0, %.lr.ph.us.preheader.new ], [ %indvars.iv.next277.3, %.lr.ph.us ]
  %niter = phi i64 [ 0, %.lr.ph.us.preheader.new ], [ %niter.next.3, %.lr.ph.us ]
  %92 = trunc nuw nsw i64 %indvars.iv276 to i32
  %93 = mul i32 %17, %92
  %94 = add i32 %82, %93
  %95 = sext i32 %94 to i64
  %96 = shl nsw i64 %95, 3
  %scevgep274 = getelementptr i8, ptr %scevgep, i64 %96
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep274, i8 0, i64 %90, i1 false), !tbaa !13
  %97 = trunc i64 %indvars.iv276 to i32
  %98 = or disjoint i32 %97, 1
  %99 = mul i32 %17, %98
  %100 = add i32 %82, %99
  %101 = sext i32 %100 to i64
  %102 = shl nsw i64 %101, 3
  %scevgep274.1 = getelementptr i8, ptr %scevgep, i64 %102
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep274.1, i8 0, i64 %90, i1 false), !tbaa !13
  %103 = trunc i64 %indvars.iv276 to i32
  %104 = or disjoint i32 %103, 2
  %105 = mul i32 %17, %104
  %106 = add i32 %82, %105
  %107 = sext i32 %106 to i64
  %108 = shl nsw i64 %107, 3
  %scevgep274.2 = getelementptr i8, ptr %scevgep, i64 %108
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep274.2, i8 0, i64 %90, i1 false), !tbaa !13
  %109 = trunc i64 %indvars.iv276 to i32
  %110 = or disjoint i32 %109, 3
  %111 = mul i32 %17, %110
  %112 = add i32 %82, %111
  %113 = sext i32 %112 to i64
  %114 = shl nsw i64 %113, 3
  %scevgep274.3 = getelementptr i8, ptr %scevgep, i64 %114
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep274.3, i8 0, i64 %90, i1 false), !tbaa !13
  %indvars.iv.next277.3 = add nuw nsw i64 %indvars.iv276, 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 %.thread229.loopexit.unr-lcssa, label %.lr.ph.us, !llvm.loop !14

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

.lr.ph.us.epil:                                   ; preds = %.thread229.loopexit.unr-lcssa, %.lr.ph.us.epil
  %indvars.iv276.epil = phi i64 [ %indvars.iv.next277.epil, %.lr.ph.us.epil ], [ %indvars.iv276.unr, %.thread229.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph.us.epil ], [ 0, %.thread229.loopexit.unr-lcssa ]
  %115 = trunc nuw nsw i64 %indvars.iv276.epil to i32
  %116 = mul i32 %17, %115
  %117 = add i32 %82, %116
  %118 = sext i32 %117 to i64
  %119 = shl nsw i64 %118, 3
  %scevgep274.epil = getelementptr i8, ptr %scevgep, i64 %119
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep274.epil, i8 0, i64 %90, i1 false), !tbaa !13
  %indvars.iv.next277.epil = add nuw nsw i64 %indvars.iv276.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 %.thread229, label %.lr.ph.us.epil, !llvm.loop !16

.thread229:                                       ; preds = %.thread229.loopexit.unr-lcssa, %.lr.ph.us.epil, %70, %..thread229_crit_edge, %50, %.thread218
  %120 = phi i32 [ %67, %.thread218 ], [ %.pre291, %..thread229_crit_edge ], [ %.pre292, %50 ], [ %67, %70 ], [ %67, %.lr.ph.us.epil ], [ %67, %.thread229.loopexit.unr-lcssa ]
  %121 = phi i32 [ %.pre290, %.thread218 ], [ %.pre289, %..thread229_crit_edge ], [ %.pre290301, %50 ], [ %.pre290, %70 ], [ %.pre290, %.lr.ph.us.epil ], [ %.pre290, %.thread229.loopexit.unr-lcssa ]
  %.0228 = phi i32 [ %.0227, %.thread218 ], [ %60, %..thread229_crit_edge ], [ %.pre290301, %50 ], [ %.0227, %70 ], [ %.0227, %.lr.ph.us.epil ], [ %.0227, %.thread229.loopexit.unr-lcssa ]
  %.2225 = phi i32 [ %.2224, %.thread218 ], [ %64, %..thread229_crit_edge ], [ %.0177, %50 ], [ %.2224, %70 ], [ %.2224, %.lr.ph.us.epil ], [ %.2224, %.thread229.loopexit.unr-lcssa ]
  %.0176 = phi i32 [ 0, %.thread218 ], [ 0, %..thread229_crit_edge ], [ 0, %50 ], [ %76, %70 ], [ %76, %.lr.ph.us.epil ], [ %76, %.thread229.loopexit.unr-lcssa ]
  %122 = load i32, ptr %0, align 4, !tbaa !5
  %123 = sub nsw i32 %122, %.0176
  store i32 %123, ptr %10, align 4, !tbaa !5
  %124 = sub nsw i32 %121, %.0176
  store i32 %124, ptr %11, align 4, !tbaa !5
  %125 = sub nsw i32 %120, %.0176
  store i32 %125, ptr %12, align 4, !tbaa !5
  call void @cung2l_(ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %14) #5
  %126 = icmp sgt i32 %.0176, 0
  br i1 %126, label %127, label %.loopexit

127:                                              ; preds = %.thread229
  %128 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %128, ptr %10, align 4, !tbaa !5
  store i32 %.2225, ptr %11, align 4, !tbaa !5
  %reass.sub = sub i32 %128, %.0176
  %129 = add i32 %reass.sub, 1
  %invariant.gep = getelementptr i8, ptr %19, i64 8
  %130 = icmp slt i32 %.2225, 0
  %131 = icmp sge i32 %129, %128
  %132 = icmp sle i32 %129, %128
  %.in268 = select i1 %130, i1 %131, i1 %132
  br i1 %.in268, label %.lr.ph271.preheader, label %.loopexit

.lr.ph271.preheader:                              ; preds = %127
  %133 = shl nsw i64 %18, 3
  %scevgep283 = getelementptr i8, ptr %3, i64 %133
  %.pre293 = load i32, ptr %1, align 4, !tbaa !5
  br label %.lr.ph271

.lr.ph271:                                        ; preds = %.lr.ph271.preheader, %._crit_edge261
  %134 = phi i32 [ %178, %._crit_edge261 ], [ %.pre293, %.lr.ph271.preheader ]
  %135 = phi i32 [ %179, %._crit_edge261 ], [ %128, %.lr.ph271.preheader ]
  %.1183269 = phi i32 [ %204, %._crit_edge261 ], [ %129, %.lr.ph271.preheader ]
  %136 = sub nsw i32 %135, %.1183269
  %137 = add nsw i32 %136, 1
  store i32 %137, ptr %13, align 4, !tbaa !5
  %138 = call i32 @llvm.smin.i32(i32 %.2225, i32 %137)
  store i32 %138, ptr %15, align 4, !tbaa !5
  %139 = sub nsw i32 %134, %135
  %140 = add nsw i32 %139, %.1183269
  %141 = icmp sgt i32 %140, 1
  %.pre295 = load i32, ptr %0, align 4, !tbaa !5
  br i1 %141, label %142, label %.lr.ph271._crit_edge

.lr.ph271._crit_edge:                             ; preds = %.lr.ph271
  %.pre302 = add i32 %.1183269, -1
  %.pre303 = sext i32 %.1183269 to i64
  br label %165

142:                                              ; preds = %.lr.ph271
  %143 = xor i32 %135, -1
  %144 = add i32 %.1183269, %143
  %145 = add i32 %144, %138
  %146 = add i32 %145, %.pre295
  store i32 %146, ptr %12, align 4, !tbaa !5
  %147 = mul nsw i32 %140, %17
  %148 = sext i32 %147 to i64
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %148
  %149 = sext i32 %.1183269 to i64
  %150 = getelementptr inbounds %struct.complex, ptr %20, i64 %149
  call void @clarft_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %12, ptr noundef nonnull %15, ptr noundef %gep, ptr noundef nonnull %4, ptr noundef nonnull %150, ptr noundef nonnull %6, ptr noundef nonnull %16) #5
  %151 = load i32, ptr %0, align 4, !tbaa !5
  %152 = load i32, ptr %2, align 4, !tbaa !5
  %153 = load i32, ptr %15, align 4, !tbaa !5
  %154 = add i32 %.1183269, -1
  %155 = add i32 %154, %151
  %156 = sub i32 %155, %152
  %157 = add i32 %156, %153
  store i32 %157, ptr %12, align 4, !tbaa !5
  %158 = load i32, ptr %1, align 4, !tbaa !5
  %159 = sub nsw i32 %158, %152
  %160 = add nsw i32 %159, %.1183269
  %161 = add nsw i32 %160, -1
  store i32 %161, ptr %13, align 4, !tbaa !5
  %162 = mul nsw i32 %160, %17
  %163 = sext i32 %162 to i64
  %gep263 = getelementptr %struct.complex, ptr %invariant.gep, i64 %163
  %164 = sext i32 %153 to i64
  %gep265 = getelementptr %struct.complex, ptr %6, i64 %164
  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 %12, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef %gep263, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %gep265, ptr noundef nonnull %16) #5
  %.pre294 = load i32, ptr %0, align 4, !tbaa !5
  %.pre296 = load i32, ptr %2, align 4, !tbaa !5
  %.pre297 = load i32, ptr %15, align 4, !tbaa !5
  %.pre298 = load i32, ptr %1, align 4, !tbaa !5
  br label %165

165:                                              ; preds = %.lr.ph271._crit_edge, %142
  %.pre-phi304 = phi i64 [ %.pre303, %.lr.ph271._crit_edge ], [ %149, %142 ]
  %.pre-phi = phi i32 [ %.pre302, %.lr.ph271._crit_edge ], [ %154, %142 ]
  %166 = phi i32 [ %134, %.lr.ph271._crit_edge ], [ %.pre298, %142 ]
  %167 = phi i32 [ %138, %.lr.ph271._crit_edge ], [ %.pre297, %142 ]
  %168 = phi i32 [ %135, %.lr.ph271._crit_edge ], [ %.pre296, %142 ]
  %169 = phi i32 [ %.pre295, %.lr.ph271._crit_edge ], [ %.pre294, %142 ]
  %170 = add i32 %.pre-phi, %169
  %171 = sub i32 %170, %168
  %172 = add i32 %171, %167
  store i32 %172, ptr %12, align 4, !tbaa !5
  %173 = sub i32 %.1183269, %168
  %174 = add i32 %173, %166
  %175 = mul nsw i32 %174, %17
  %176 = sext i32 %175 to i64
  %gep267 = getelementptr %struct.complex, ptr %invariant.gep, i64 %176
  %177 = getelementptr inbounds %struct.complex, ptr %20, i64 %.pre-phi304
  call void @cung2l_(ptr noundef nonnull %12, ptr noundef nonnull %15, ptr noundef nonnull %15, ptr noundef %gep267, ptr noundef nonnull %4, ptr noundef nonnull %177, ptr noundef nonnull %6, ptr noundef nonnull %14) #5
  %178 = load i32, ptr %1, align 4, !tbaa !5
  %179 = load i32, ptr %2, align 4, !tbaa !5
  %180 = sub i32 %178, %179
  %181 = add i32 %180, %.1183269
  %182 = load i32, ptr %15, align 4, !tbaa !5
  %183 = add nsw i32 %181, %182
  %184 = add nsw i32 %183, -1
  store i32 %184, ptr %12, align 4, !tbaa !5
  %.not203.not257 = icmp sgt i32 %182, 0
  br i1 %.not203.not257, label %.lr.ph260, label %._crit_edge261

.lr.ph260:                                        ; preds = %165
  %185 = load i32, ptr %0, align 4, !tbaa !5
  store i32 %185, ptr %13, align 4, !tbaa !5
  %186 = sub i32 %.1183269, %179
  %187 = add i32 %186, %182
  %188 = add i32 %187, %185
  %.not204255 = icmp sgt i32 %188, %185
  br i1 %.not204255, label %._crit_edge261, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %.lr.ph260
  %189 = add i32 %.1183269, %182
  %190 = add i32 %189, %185
  %191 = mul i32 %17, %181
  %192 = add i32 %190, %191
  %193 = sub i32 %192, %179
  %194 = sub i32 %179, %189
  %195 = zext i32 %194 to i64
  %196 = shl nuw nsw i64 %195, 3
  %197 = add nuw nsw i64 %196, 8
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvar = phi i32 [ 0, %.lr.ph.preheader ], [ %indvar.next, %.lr.ph ]
  %.1181258 = phi i32 [ %181, %.lr.ph.preheader ], [ %202, %.lr.ph ]
  %198 = mul i32 %17, %indvar
  %199 = add i32 %193, %198
  %200 = sext i32 %199 to i64
  %201 = shl nsw i64 %200, 3
  %scevgep284 = getelementptr i8, ptr %scevgep283, i64 %201
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep284, i8 0, i64 %197, i1 false), !tbaa !13
  %202 = add nsw i32 %.1181258, 1
  %.not203.not = icmp slt i32 %202, %183
  %indvar.next = add i32 %indvar, 1
  br i1 %.not203.not, label %.lr.ph, label %._crit_edge261, !llvm.loop !18

._crit_edge261:                                   ; preds = %.lr.ph, %.lr.ph260, %165
  %203 = load i32, ptr %11, align 4, !tbaa !5
  %204 = add nsw i32 %203, %.1183269
  %205 = icmp slt i32 %203, 0
  %206 = load i32, ptr %10, align 4
  %207 = icmp sge i32 %204, %206
  %208 = icmp sle i32 %204, %206
  %.in = select i1 %205, i1 %207, i1 %208
  br i1 %.in, label %.lr.ph271, label %.loopexit, !llvm.loop !19

.loopexit:                                        ; preds = %._crit_edge261, %127, %.thread229
  %209 = sitofp i32 %.0228 to float
  store float %209, ptr %6, align 4, !tbaa !9
  store float 0.000000e+00, ptr %43, align 4, !tbaa !12
  br label %210

210:                                              ; preds = %48, %.loopexit, %.thread214
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #5
  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 @cung2l_(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 nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.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, !15}


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