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

; 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
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@c__3 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1

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

61:                                               ; preds = %8
  %62 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 -1, ptr %62, align 4, !tbaa !9
  br label %88

63:                                               ; preds = %8
  %64 = load ptr, ptr %10, align 8, !tbaa !5
  %65 = load i32, ptr %64, align 4, !tbaa !9
  %66 = load ptr, ptr %9, align 8, !tbaa !5
  %67 = load i32, ptr %66, align 4, !tbaa !9
  %68 = icmp slt i32 %65, %67
  br i1 %68, label %69, label %71

69:                                               ; preds = %63
  %70 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 -2, ptr %70, align 4, !tbaa !9
  br label %87

71:                                               ; preds = %63
  %72 = load ptr, ptr %12, align 8, !tbaa !5
  %73 = load i32, ptr %72, align 4, !tbaa !9
  %74 = load ptr, ptr %9, align 8, !tbaa !5
  %75 = load i32, ptr %74, align 4, !tbaa !9
  %76 = icmp sge i32 1, %75
  br i1 %76, label %77, label %78

77:                                               ; preds = %71
  br label %81

78:                                               ; preds = %71
  %79 = load ptr, ptr %9, align 8, !tbaa !5
  %80 = load i32, ptr %79, align 4, !tbaa !9
  br label %81

81:                                               ; preds = %78, %77
  %82 = phi i32 [ 1, %77 ], [ %80, %78 ]
  %83 = icmp slt i32 %73, %82
  br i1 %83, label %84, label %86

84:                                               ; preds = %81
  %85 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 -4, ptr %85, align 4, !tbaa !9
  br label %86

86:                                               ; preds = %84, %81
  br label %87

87:                                               ; preds = %86, %69
  br label %88

88:                                               ; preds = %87, %61
  %89 = load ptr, ptr %16, align 8, !tbaa !5
  %90 = load i32, ptr %89, align 4, !tbaa !9
  %91 = icmp eq i32 %90, 0
  br i1 %91, label %92, label %139

92:                                               ; preds = %88
  %93 = load ptr, ptr %9, align 8, !tbaa !5
  %94 = load i32, ptr %93, align 4, !tbaa !9
  %95 = icmp eq i32 %94, 0
  br i1 %95, label %102, label %96

96:                                               ; preds = %92
  %97 = load ptr, ptr %9, align 8, !tbaa !5
  %98 = load i32, ptr %97, align 4, !tbaa !9
  %99 = load ptr, ptr %10, align 8, !tbaa !5
  %100 = load i32, ptr %99, align 4, !tbaa !9
  %101 = icmp eq i32 %98, %100
  br i1 %101, label %102, label %103

102:                                              ; preds = %96, %92
  store i32 1, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %120

103:                                              ; preds = %96
  %104 = load ptr, ptr %9, align 8, !tbaa !5
  %105 = load ptr, ptr %10, align 8, !tbaa !5
  %106 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %104, ptr noundef %105, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %106, ptr %28, align 4, !tbaa !9
  %107 = load ptr, ptr %9, align 8, !tbaa !5
  %108 = load i32, ptr %107, align 4, !tbaa !9
  %109 = load i32, ptr %28, align 4, !tbaa !9
  %110 = mul nsw i32 %108, %109
  store i32 %110, ptr %35, align 4, !tbaa !9
  %111 = load ptr, ptr %9, align 8, !tbaa !5
  %112 = load i32, ptr %111, align 4, !tbaa !9
  %113 = icmp sge i32 1, %112
  br i1 %113, label %114, label %115

114:                                              ; preds = %103
  br label %118

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

118:                                              ; preds = %115, %114
  %119 = phi i32 [ 1, %114 ], [ %117, %115 ]
  store i32 %119, ptr %33, align 4, !tbaa !9
  br label %120

120:                                              ; preds = %118, %102
  %121 = load i32, ptr %35, align 4, !tbaa !9
  %122 = sitofp i32 %121 to float
  %123 = load ptr, ptr %14, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.complex, ptr %123, i64 1
  %125 = getelementptr inbounds %struct.complex, ptr %124, i32 0, i32 0
  store float %122, ptr %125, align 4, !tbaa !11
  %126 = load ptr, ptr %14, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.complex, ptr %126, i64 1
  %128 = getelementptr inbounds %struct.complex, ptr %127, i32 0, i32 1
  store float 0.000000e+00, ptr %128, align 4, !tbaa !14
  %129 = load ptr, ptr %15, align 8, !tbaa !5
  %130 = load i32, ptr %129, align 4, !tbaa !9
  %131 = load i32, ptr %33, align 4, !tbaa !9
  %132 = icmp slt i32 %130, %131
  br i1 %132, label %133, label %138

133:                                              ; preds = %120
  %134 = load i32, ptr %36, align 4, !tbaa !9
  %135 = icmp ne i32 %134, 0
  br i1 %135, label %138, label %136

136:                                              ; preds = %133
  %137 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 -7, ptr %137, align 4, !tbaa !9
  br label %138

138:                                              ; preds = %136, %133, %120
  br label %139

139:                                              ; preds = %138, %88
  %140 = load ptr, ptr %16, align 8, !tbaa !5
  %141 = load i32, ptr %140, align 4, !tbaa !9
  %142 = icmp ne i32 %141, 0
  br i1 %142, label %143, label %148

143:                                              ; preds = %139
  %144 = load ptr, ptr %16, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  %146 = sub nsw i32 0, %145
  store i32 %146, ptr %19, align 4, !tbaa !9
  %147 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %19, i32 noundef 6)
  store i32 1, ptr %38, align 4
  br label %466

148:                                              ; preds = %139
  %149 = load i32, ptr %36, align 4, !tbaa !9
  %150 = icmp ne i32 %149, 0
  br i1 %150, label %151, label %152

151:                                              ; preds = %148
  store i32 1, ptr %38, align 4
  br label %466

152:                                              ; preds = %148
  br label %153

153:                                              ; preds = %152
  %154 = load ptr, ptr %9, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !9
  %156 = icmp eq i32 %155, 0
  br i1 %156, label %157, label %158

157:                                              ; preds = %153
  store i32 1, ptr %38, align 4
  br label %466

158:                                              ; preds = %153
  %159 = load ptr, ptr %9, align 8, !tbaa !5
  %160 = load i32, ptr %159, align 4, !tbaa !9
  %161 = load ptr, ptr %10, align 8, !tbaa !5
  %162 = load i32, ptr %161, align 4, !tbaa !9
  %163 = icmp eq i32 %160, %162
  br i1 %163, label %164, label %187

164:                                              ; preds = %158
  %165 = load ptr, ptr %10, align 8, !tbaa !5
  %166 = load i32, ptr %165, align 4, !tbaa !9
  store i32 %166, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %167

167:                                              ; preds = %183, %164
  %168 = load i32, ptr %24, align 4, !tbaa !9
  %169 = load i32, ptr %19, align 4, !tbaa !9
  %170 = icmp sle i32 %168, %169
  br i1 %170, label %171, label %186

171:                                              ; preds = %167
  %172 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %172, ptr %20, align 4, !tbaa !9
  %173 = load ptr, ptr %13, align 8, !tbaa !5
  %174 = load i32, ptr %20, align 4, !tbaa !9
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds %struct.complex, ptr %173, i64 %175
  %177 = getelementptr inbounds %struct.complex, ptr %176, i32 0, i32 0
  store float 0.000000e+00, ptr %177, align 4, !tbaa !11
  %178 = load ptr, ptr %13, align 8, !tbaa !5
  %179 = load i32, ptr %20, align 4, !tbaa !9
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds %struct.complex, ptr %178, i64 %180
  %182 = getelementptr inbounds %struct.complex, ptr %181, i32 0, i32 1
  store float 0.000000e+00, ptr %182, align 4, !tbaa !14
  br label %183

183:                                              ; preds = %171
  %184 = load i32, ptr %24, align 4, !tbaa !9
  %185 = add nsw i32 %184, 1
  store i32 %185, ptr %24, align 4, !tbaa !9
  br label %167, !llvm.loop !15

186:                                              ; preds = %167
  store i32 1, ptr %38, align 4
  br label %466

187:                                              ; preds = %158
  br label %188

188:                                              ; preds = %187
  store i32 2, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  %189 = load ptr, ptr %9, align 8, !tbaa !5
  %190 = load i32, ptr %189, align 4, !tbaa !9
  store i32 %190, ptr %37, align 4, !tbaa !9
  %191 = load i32, ptr %28, align 4, !tbaa !9
  %192 = icmp sgt i32 %191, 1
  br i1 %192, label %193, label %244

193:                                              ; preds = %188
  %194 = load i32, ptr %28, align 4, !tbaa !9
  %195 = load ptr, ptr %9, 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 %244

198:                                              ; preds = %193
  store i32 0, ptr %19, align 4, !tbaa !9
  %199 = load ptr, ptr %9, align 8, !tbaa !5
  %200 = load ptr, ptr %10, align 8, !tbaa !5
  %201 = call i32 @ilaenv_(ptr noundef @c__3, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %199, ptr noundef %200, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %201, ptr %20, align 4, !tbaa !9
  %202 = load i32, ptr %19, align 4, !tbaa !9
  %203 = load i32, ptr %20, align 4, !tbaa !9
  %204 = icmp sge i32 %202, %203
  br i1 %204, label %205, label %207

205:                                              ; preds = %198
  %206 = load i32, ptr %19, align 4, !tbaa !9
  br label %209

207:                                              ; preds = %198
  %208 = load i32, ptr %20, align 4, !tbaa !9
  br label %209

209:                                              ; preds = %207, %205
  %210 = phi i32 [ %206, %205 ], [ %208, %207 ]
  store i32 %210, ptr %32, align 4, !tbaa !9
  %211 = load i32, ptr %32, align 4, !tbaa !9
  %212 = load ptr, ptr %9, align 8, !tbaa !5
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = icmp slt i32 %211, %213
  br i1 %214, label %215, label %243

215:                                              ; preds = %209
  %216 = load ptr, ptr %9, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  store i32 %217, ptr %34, align 4, !tbaa !9
  %218 = load i32, ptr %34, align 4, !tbaa !9
  %219 = load i32, ptr %28, align 4, !tbaa !9
  %220 = mul nsw i32 %218, %219
  store i32 %220, ptr %37, align 4, !tbaa !9
  %221 = load ptr, ptr %15, align 8, !tbaa !5
  %222 = load i32, ptr %221, align 4, !tbaa !9
  %223 = load i32, ptr %37, align 4, !tbaa !9
  %224 = icmp slt i32 %222, %223
  br i1 %224, label %225, label %242

225:                                              ; preds = %215
  %226 = load ptr, ptr %15, align 8, !tbaa !5
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = load i32, ptr %34, align 4, !tbaa !9
  %229 = sdiv i32 %227, %228
  store i32 %229, ptr %28, align 4, !tbaa !9
  store i32 2, ptr %19, align 4, !tbaa !9
  %230 = load ptr, ptr %9, align 8, !tbaa !5
  %231 = load ptr, ptr %10, align 8, !tbaa !5
  %232 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %230, ptr noundef %231, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %232, ptr %20, align 4, !tbaa !9
  %233 = load i32, ptr %19, align 4, !tbaa !9
  %234 = load i32, ptr %20, align 4, !tbaa !9
  %235 = icmp sge i32 %233, %234
  br i1 %235, label %236, label %238

236:                                              ; preds = %225
  %237 = load i32, ptr %19, align 4, !tbaa !9
  br label %240

238:                                              ; preds = %225
  %239 = load i32, ptr %20, align 4, !tbaa !9
  br label %240

240:                                              ; preds = %238, %236
  %241 = phi i32 [ %237, %236 ], [ %239, %238 ]
  store i32 %241, ptr %25, align 4, !tbaa !9
  br label %242

242:                                              ; preds = %240, %215
  br label %243

243:                                              ; preds = %242, %209
  br label %244

244:                                              ; preds = %243, %193, %188
  %245 = load i32, ptr %28, align 4, !tbaa !9
  %246 = load i32, ptr %25, align 4, !tbaa !9
  %247 = icmp sge i32 %245, %246
  br i1 %247, label %248, label %435

248:                                              ; preds = %244
  %249 = load i32, ptr %28, align 4, !tbaa !9
  %250 = load ptr, ptr %9, align 8, !tbaa !5
  %251 = load i32, ptr %250, align 4, !tbaa !9
  %252 = icmp slt i32 %249, %251
  br i1 %252, label %253, label %435

253:                                              ; preds = %248
  %254 = load i32, ptr %32, align 4, !tbaa !9
  %255 = load ptr, ptr %9, align 8, !tbaa !5
  %256 = load i32, ptr %255, align 4, !tbaa !9
  %257 = icmp slt i32 %254, %256
  br i1 %257, label %258, label %435

258:                                              ; preds = %253
  %259 = load ptr, ptr %9, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = add nsw i32 %260, 1
  store i32 %261, ptr %19, align 4, !tbaa !9
  %262 = load i32, ptr %19, align 4, !tbaa !9
  %263 = load ptr, ptr %10, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = icmp sle i32 %262, %264
  br i1 %265, label %266, label %268

266:                                              ; preds = %258
  %267 = load i32, ptr %19, align 4, !tbaa !9
  br label %271

268:                                              ; preds = %258
  %269 = load ptr, ptr %10, align 8, !tbaa !5
  %270 = load i32, ptr %269, align 4, !tbaa !9
  br label %271

271:                                              ; preds = %268, %266
  %272 = phi i32 [ %267, %266 ], [ %270, %268 ]
  store i32 %272, ptr %26, align 4, !tbaa !9
  %273 = load ptr, ptr %9, align 8, !tbaa !5
  %274 = load i32, ptr %273, align 4, !tbaa !9
  %275 = load i32, ptr %32, align 4, !tbaa !9
  %276 = sub nsw i32 %274, %275
  %277 = sub nsw i32 %276, 1
  %278 = load i32, ptr %28, align 4, !tbaa !9
  %279 = sdiv i32 %277, %278
  %280 = load i32, ptr %28, align 4, !tbaa !9
  %281 = mul nsw i32 %279, %280
  store i32 %281, ptr %29, align 4, !tbaa !9
  %282 = load ptr, ptr %9, align 8, !tbaa !5
  %283 = load i32, ptr %282, align 4, !tbaa !9
  store i32 %283, ptr %19, align 4, !tbaa !9
  %284 = load i32, ptr %29, align 4, !tbaa !9
  %285 = load i32, ptr %28, align 4, !tbaa !9
  %286 = add nsw i32 %284, %285
  store i32 %286, ptr %20, align 4, !tbaa !9
  %287 = load i32, ptr %19, align 4, !tbaa !9
  %288 = load i32, ptr %20, align 4, !tbaa !9
  %289 = icmp sle i32 %287, %288
  br i1 %289, label %290, label %292

290:                                              ; preds = %271
  %291 = load i32, ptr %19, align 4, !tbaa !9
  br label %294

292:                                              ; preds = %271
  %293 = load i32, ptr %20, align 4, !tbaa !9
  br label %294

294:                                              ; preds = %292, %290
  %295 = phi i32 [ %291, %290 ], [ %293, %292 ]
  store i32 %295, ptr %30, align 4, !tbaa !9
  %296 = load ptr, ptr %9, align 8, !tbaa !5
  %297 = load i32, ptr %296, align 4, !tbaa !9
  %298 = load i32, ptr %30, align 4, !tbaa !9
  %299 = sub nsw i32 %297, %298
  %300 = add nsw i32 %299, 1
  store i32 %300, ptr %19, align 4, !tbaa !9
  %301 = load i32, ptr %28, align 4, !tbaa !9
  %302 = sub nsw i32 0, %301
  store i32 %302, ptr %20, align 4, !tbaa !9
  %303 = load ptr, ptr %9, align 8, !tbaa !5
  %304 = load i32, ptr %303, align 4, !tbaa !9
  %305 = load i32, ptr %30, align 4, !tbaa !9
  %306 = sub nsw i32 %304, %305
  %307 = load i32, ptr %29, align 4, !tbaa !9
  %308 = add nsw i32 %306, %307
  %309 = add nsw i32 %308, 1
  store i32 %309, ptr %24, align 4, !tbaa !9
  br label %310

310:                                              ; preds = %426, %294
  %311 = load i32, ptr %20, align 4, !tbaa !9
  %312 = icmp slt i32 %311, 0
  br i1 %312, label %313, label %318

313:                                              ; preds = %310
  %314 = load i32, ptr %24, align 4, !tbaa !9
  %315 = load i32, ptr %19, align 4, !tbaa !9
  %316 = icmp sge i32 %314, %315
  %317 = zext i1 %316 to i32
  br label %323

318:                                              ; preds = %310
  %319 = load i32, ptr %24, align 4, !tbaa !9
  %320 = load i32, ptr %19, align 4, !tbaa !9
  %321 = icmp sle i32 %319, %320
  %322 = zext i1 %321 to i32
  br label %323

323:                                              ; preds = %318, %313
  %324 = phi i32 [ %317, %313 ], [ %322, %318 ]
  %325 = icmp ne i32 %324, 0
  br i1 %325, label %326, label %430

326:                                              ; preds = %323
  %327 = load ptr, ptr %9, align 8, !tbaa !5
  %328 = load i32, ptr %327, align 4, !tbaa !9
  %329 = load i32, ptr %24, align 4, !tbaa !9
  %330 = sub nsw i32 %328, %329
  %331 = add nsw i32 %330, 1
  store i32 %331, ptr %21, align 4, !tbaa !9
  %332 = load i32, ptr %21, align 4, !tbaa !9
  %333 = load i32, ptr %28, align 4, !tbaa !9
  %334 = icmp sle i32 %332, %333
  br i1 %334, label %335, label %337

335:                                              ; preds = %326
  %336 = load i32, ptr %21, align 4, !tbaa !9
  br label %339

337:                                              ; preds = %326
  %338 = load i32, ptr %28, align 4, !tbaa !9
  br label %339

339:                                              ; preds = %337, %335
  %340 = phi i32 [ %336, %335 ], [ %338, %337 ]
  store i32 %340, ptr %27, align 4, !tbaa !9
  %341 = load ptr, ptr %10, align 8, !tbaa !5
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = load i32, ptr %24, align 4, !tbaa !9
  %344 = sub nsw i32 %342, %343
  %345 = add nsw i32 %344, 1
  store i32 %345, ptr %21, align 4, !tbaa !9
  %346 = load ptr, ptr %10, align 8, !tbaa !5
  %347 = load i32, ptr %346, align 4, !tbaa !9
  %348 = load ptr, ptr %9, align 8, !tbaa !5
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = sub nsw i32 %347, %349
  store i32 %350, ptr %22, align 4, !tbaa !9
  %351 = load ptr, ptr %11, align 8, !tbaa !5
  %352 = load i32, ptr %24, align 4, !tbaa !9
  %353 = load i32, ptr %24, align 4, !tbaa !9
  %354 = load i32, ptr %17, align 4, !tbaa !9
  %355 = mul nsw i32 %353, %354
  %356 = add nsw i32 %352, %355
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds %struct.complex, ptr %351, i64 %357
  %359 = load ptr, ptr %12, align 8, !tbaa !5
  %360 = load ptr, ptr %13, align 8, !tbaa !5
  %361 = load i32, ptr %24, align 4, !tbaa !9
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds %struct.complex, ptr %360, i64 %362
  %364 = load ptr, ptr %14, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.complex, ptr %364, i64 1
  call void @clatrz_(ptr noundef %27, ptr noundef %21, ptr noundef %22, ptr noundef %358, ptr noundef %359, ptr noundef %363, ptr noundef %365)
  %366 = load i32, ptr %24, align 4, !tbaa !9
  %367 = icmp sgt i32 %366, 1
  br i1 %367, label %368, label %425

368:                                              ; preds = %339
  %369 = load ptr, ptr %10, align 8, !tbaa !5
  %370 = load i32, ptr %369, align 4, !tbaa !9
  %371 = load ptr, ptr %9, align 8, !tbaa !5
  %372 = load i32, ptr %371, align 4, !tbaa !9
  %373 = sub nsw i32 %370, %372
  store i32 %373, ptr %21, align 4, !tbaa !9
  %374 = load ptr, ptr %11, align 8, !tbaa !5
  %375 = load i32, ptr %24, align 4, !tbaa !9
  %376 = load i32, ptr %26, align 4, !tbaa !9
  %377 = load i32, ptr %17, align 4, !tbaa !9
  %378 = mul nsw i32 %376, %377
  %379 = add nsw i32 %375, %378
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds %struct.complex, ptr %374, i64 %380
  %382 = load ptr, ptr %12, align 8, !tbaa !5
  %383 = load ptr, ptr %13, align 8, !tbaa !5
  %384 = load i32, ptr %24, align 4, !tbaa !9
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds %struct.complex, ptr %383, i64 %385
  %387 = load ptr, ptr %14, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.complex, ptr %387, i64 1
  call void @clarzt_(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %21, ptr noundef %27, ptr noundef %381, ptr noundef %382, ptr noundef %386, ptr noundef %388, ptr noundef %34)
  %389 = load i32, ptr %24, align 4, !tbaa !9
  %390 = sub nsw i32 %389, 1
  store i32 %390, ptr %21, align 4, !tbaa !9
  %391 = load ptr, ptr %10, align 8, !tbaa !5
  %392 = load i32, ptr %391, align 4, !tbaa !9
  %393 = load i32, ptr %24, align 4, !tbaa !9
  %394 = sub nsw i32 %392, %393
  %395 = add nsw i32 %394, 1
  store i32 %395, ptr %22, align 4, !tbaa !9
  %396 = load ptr, ptr %10, align 8, !tbaa !5
  %397 = load i32, ptr %396, align 4, !tbaa !9
  %398 = load ptr, ptr %9, align 8, !tbaa !5
  %399 = load i32, ptr %398, align 4, !tbaa !9
  %400 = sub nsw i32 %397, %399
  store i32 %400, ptr %23, align 4, !tbaa !9
  %401 = load ptr, ptr %11, align 8, !tbaa !5
  %402 = load i32, ptr %24, align 4, !tbaa !9
  %403 = load i32, ptr %26, align 4, !tbaa !9
  %404 = load i32, ptr %17, align 4, !tbaa !9
  %405 = mul nsw i32 %403, %404
  %406 = add nsw i32 %402, %405
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds %struct.complex, ptr %401, i64 %407
  %409 = load ptr, ptr %12, align 8, !tbaa !5
  %410 = load ptr, ptr %14, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.complex, ptr %410, i64 1
  %412 = load ptr, ptr %11, align 8, !tbaa !5
  %413 = load i32, ptr %24, align 4, !tbaa !9
  %414 = load i32, ptr %17, align 4, !tbaa !9
  %415 = mul nsw i32 %413, %414
  %416 = add nsw i32 %415, 1
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds %struct.complex, ptr %412, i64 %417
  %419 = load ptr, ptr %12, align 8, !tbaa !5
  %420 = load ptr, ptr %14, align 8, !tbaa !5
  %421 = load i32, ptr %27, align 4, !tbaa !9
  %422 = add nsw i32 %421, 1
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds %struct.complex, ptr %420, i64 %423
  call void @clarzb_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %21, ptr noundef %22, ptr noundef %27, ptr noundef %23, ptr noundef %408, ptr noundef %409, ptr noundef %411, ptr noundef %34, ptr noundef %418, ptr noundef %419, ptr noundef %424, ptr noundef %34)
  br label %425

425:                                              ; preds = %368, %339
  br label %426

426:                                              ; preds = %425
  %427 = load i32, ptr %20, align 4, !tbaa !9
  %428 = load i32, ptr %24, align 4, !tbaa !9
  %429 = add nsw i32 %428, %427
  store i32 %429, ptr %24, align 4, !tbaa !9
  br label %310, !llvm.loop !17

430:                                              ; preds = %323
  %431 = load i32, ptr %24, align 4, !tbaa !9
  %432 = load i32, ptr %28, align 4, !tbaa !9
  %433 = add nsw i32 %431, %432
  %434 = sub nsw i32 %433, 1
  store i32 %434, ptr %31, align 4, !tbaa !9
  br label %438

435:                                              ; preds = %253, %248, %244
  %436 = load ptr, ptr %9, align 8, !tbaa !5
  %437 = load i32, ptr %436, align 4, !tbaa !9
  store i32 %437, ptr %31, align 4, !tbaa !9
  br label %438

438:                                              ; preds = %435, %430
  %439 = load i32, ptr %31, align 4, !tbaa !9
  %440 = icmp sgt i32 %439, 0
  br i1 %440, label %441, label %457

441:                                              ; preds = %438
  %442 = load ptr, ptr %10, align 8, !tbaa !5
  %443 = load i32, ptr %442, align 4, !tbaa !9
  %444 = load ptr, ptr %9, align 8, !tbaa !5
  %445 = load i32, ptr %444, align 4, !tbaa !9
  %446 = sub nsw i32 %443, %445
  store i32 %446, ptr %20, align 4, !tbaa !9
  %447 = load ptr, ptr %10, align 8, !tbaa !5
  %448 = load ptr, ptr %11, align 8, !tbaa !5
  %449 = load i32, ptr %18, align 4, !tbaa !9
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds %struct.complex, ptr %448, i64 %450
  %452 = load ptr, ptr %12, align 8, !tbaa !5
  %453 = load ptr, ptr %13, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.complex, ptr %453, i64 1
  %455 = load ptr, ptr %14, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.complex, ptr %455, i64 1
  call void @clatrz_(ptr noundef %31, ptr noundef %447, ptr noundef %20, ptr noundef %451, ptr noundef %452, ptr noundef %454, ptr noundef %456)
  br label %457

457:                                              ; preds = %441, %438
  %458 = load i32, ptr %35, align 4, !tbaa !9
  %459 = sitofp i32 %458 to float
  %460 = load ptr, ptr %14, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct.complex, ptr %460, i64 1
  %462 = getelementptr inbounds %struct.complex, ptr %461, i32 0, i32 0
  store float %459, ptr %462, align 4, !tbaa !11
  %463 = load ptr, ptr %14, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.complex, ptr %463, i64 1
  %465 = getelementptr inbounds %struct.complex, ptr %464, i32 0, i32 1
  store float 0.000000e+00, ptr %465, align 4, !tbaa !14
  store i32 1, ptr %38, align 4
  br label %466

466:                                              ; preds = %457, %186, %157, %151, %143
  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
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #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 @clatrz_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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


; 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
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@c__3 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @ctzrzf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr nocapture noundef %7) local_unnamed_addr #0 {
  %9 = alloca i32, align 4
  %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 %9) #5
  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 %3, align 4, !tbaa !5
  %narrow = xor i32 %17, -1
  %18 = sext i32 %narrow to i64
  %19 = getelementptr inbounds %struct.complex, ptr %2, i64 %18
  %20 = getelementptr inbounds i8, ptr %4, i64 -8
  store i32 0, ptr %7, align 4, !tbaa !5
  %21 = load i32, ptr %6, 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 %.thread178.sink.split, label %25

25:                                               ; preds = %8
  %26 = load i32, ptr %1, align 4, !tbaa !5
  %27 = icmp slt i32 %26, %23
  br i1 %27, label %.thread178.sink.split, label %28

28:                                               ; preds = %25
  %29 = load i32, ptr %3, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %23, i32 1)
  %30 = icmp slt i32 %29, %spec.select
  br i1 %30, label %.thread178.sink.split, label %31

31:                                               ; preds = %28
  %32 = icmp eq i32 %23, 0
  br i1 %32, label %40, label %33

33:                                               ; preds = %31
  %34 = icmp eq i32 %23, %26
  br i1 %34, label %40, label %35

35:                                               ; preds = %33
  %36 = 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 @c_n1, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %37 = load i32, ptr %0, align 4, !tbaa !5
  %38 = mul nsw i32 %37, %36
  %spec.select170 = tail call i32 @llvm.smax.i32(i32 %37, i32 1)
  %39 = sitofp i32 %38 to float
  %.pre = load i32, ptr %6, align 4, !tbaa !5
  br label %40

40:                                               ; preds = %31, %33, %35
  %.pre209211 = phi i32 [ %37, %35 ], [ %23, %33 ], [ 0, %31 ]
  %41 = phi i32 [ %.pre, %35 ], [ %21, %33 ], [ %21, %31 ]
  %.0145 = phi i32 [ %36, %35 ], [ undef, %33 ], [ undef, %31 ]
  %.0143 = phi i32 [ %spec.select170, %35 ], [ 1, %33 ], [ 1, %31 ]
  %.0 = phi float [ %39, %35 ], [ 1.000000e+00, %33 ], [ 1.000000e+00, %31 ]
  store float %.0, ptr %5, align 4, !tbaa !9
  %42 = getelementptr inbounds i8, ptr %5, i64 4
  store float 0.000000e+00, ptr %42, align 4, !tbaa !12
  %43 = icmp sge i32 %41, %.0143
  %or.cond = select i1 %43, i1 true, i1 %22
  br i1 %or.cond, label %.thread, label %.thread178.sink.split

.thread:                                          ; preds = %40
  %.pr174.pr = load i32, ptr %7, align 4, !tbaa !5
  %.not = icmp eq i32 %.pr174.pr, 0
  br i1 %.not, label %47, label %.thread178

.thread178.sink.split:                            ; preds = %40, %28, %25, %8
  %.sink = phi i32 [ -1, %8 ], [ -2, %25 ], [ -4, %28 ], [ -7, %40 ]
  store i32 %.sink, ptr %7, align 4, !tbaa !5
  br label %.thread178

.thread178:                                       ; preds = %.thread178.sink.split, %.thread
  %44 = phi i32 [ %.pr174.pr, %.thread ], [ %.sink, %.thread178.sink.split ]
  %45 = sub nsw i32 0, %44
  store i32 %45, ptr %9, align 4, !tbaa !5
  %46 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %9, i32 noundef 6) #5
  br label %.loopexit

47:                                               ; preds = %.thread
  %48 = icmp eq i32 %.pre209211, 0
  %or.cond212 = select i1 %22, i1 true, i1 %48
  br i1 %or.cond212, label %.loopexit, label %49

49:                                               ; preds = %47
  %50 = load i32, ptr %1, align 4, !tbaa !5
  %51 = icmp eq i32 %.pre209211, %50
  br i1 %51, label %52, label %55

52:                                               ; preds = %49
  %.not169201 = icmp slt i32 %.pre209211, 1
  br i1 %.not169201, label %.loopexit, label %.lr.ph204.preheader

.lr.ph204.preheader:                              ; preds = %52
  %53 = zext nneg i32 %.pre209211 to i64
  %54 = shl nuw nsw i64 %53, 3
  tail call void @llvm.memset.p0.i64(ptr align 4 %4, i8 0, i64 %54, i1 false), !tbaa !13
  br label %.loopexit

55:                                               ; preds = %49
  %56 = icmp sgt i32 %.0145, 1
  %57 = icmp slt i32 %.0145, %.pre209211
  %or.cond171 = and i1 %56, %57
  br i1 %or.cond171, label %58, label %71

58:                                               ; preds = %55
  %59 = 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 @c_n1, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %60 = tail call i32 @llvm.smax.i32(i32 %59, i32 0)
  %61 = load i32, ptr %0, align 4, !tbaa !5
  %62 = icmp slt i32 %60, %61
  br i1 %62, label %63, label %.thread183

63:                                               ; preds = %58
  store i32 %61, ptr %16, align 4, !tbaa !5
  %64 = mul nsw i32 %61, %.0145
  %65 = load i32, ptr %6, align 4, !tbaa !5
  %66 = icmp slt i32 %65, %64
  br i1 %66, label %67, label %.thread183

67:                                               ; preds = %63
  %68 = sdiv i32 %65, %61
  %69 = 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 @c_n1, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %70 = tail call i32 @llvm.smax.i32(i32 %69, i32 2)
  %.pre209.pre = load i32, ptr %0, align 4, !tbaa !5
  br label %71

71:                                               ; preds = %67, %55
  %.pre209 = phi i32 [ %.pre209.pre, %67 ], [ %.pre209211, %55 ]
  %.0149 = phi i32 [ %70, %67 ], [ 2, %55 ]
  %.2 = phi i32 [ %68, %67 ], [ %.0145, %55 ]
  %.0144 = phi i32 [ %60, %67 ], [ 1, %55 ]
  %.not165 = icmp slt i32 %.2, %.0149
  br i1 %.not165, label %125, label %.thread183

.thread183:                                       ; preds = %71, %58, %63
  %72 = phi i32 [ %61, %63 ], [ %61, %58 ], [ %.pre209, %71 ]
  %.0144189 = phi i32 [ %60, %63 ], [ %60, %58 ], [ %.0144, %71 ]
  %.2188 = phi i32 [ %.0145, %63 ], [ %.0145, %58 ], [ %.2, %71 ]
  %73 = icmp slt i32 %.2188, %72
  %74 = icmp slt i32 %.0144189, %72
  %or.cond172 = and i1 %73, %74
  br i1 %or.cond172, label %75, label %125

75:                                               ; preds = %.thread183
  %76 = load i32, ptr %1, align 4, !tbaa !5
  %77 = xor i32 %.0144189, -1
  %78 = add nsw i32 %72, %77
  %.fr = freeze i32 %78
  %79 = srem i32 %.fr, %.2188
  %80 = sub nsw i32 %.fr, %79
  %81 = add nsw i32 %80, %.2188
  store i32 %81, ptr %10, align 4, !tbaa !5
  %82 = tail call i32 @llvm.smin.i32(i32 %72, i32 %81)
  %83 = sub nsw i32 %72, %82
  %84 = add i32 %83, 1
  %85 = add i32 %84, %80
  %invariant.gep = getelementptr i8, ptr %19, i64 8
  %.not213 = icmp slt i32 %85, %84
  br i1 %.not213, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %75
  %86 = add nuw nsw i32 %72, 1
  %.not166.not = icmp slt i32 %72, %76
  %. = select i1 %.not166.not, i32 %86, i32 %76
  %87 = mul nsw i32 %., %17
  %88 = icmp sgt i32 %.2188, 0
  br label %89

89:                                               ; preds = %.lr.ph, %119
  %.1148198 = phi i32 [ %85, %.lr.ph ], [ %120, %119 ]
  %90 = load i32, ptr %0, align 4, !tbaa !5
  %91 = sub nsw i32 %90, %.1148198
  %92 = add nsw i32 %91, 1
  %93 = call i32 @llvm.smin.i32(i32 %92, i32 %.2188)
  store i32 %93, ptr %14, align 4, !tbaa !5
  %94 = load i32, ptr %1, align 4, !tbaa !5
  %reass.sub = sub i32 %94, %.1148198
  %95 = add i32 %reass.sub, 1
  store i32 %95, ptr %11, align 4, !tbaa !5
  %96 = sub nsw i32 %94, %90
  store i32 %96, ptr %12, align 4, !tbaa !5
  %97 = mul nsw i32 %.1148198, %17
  %98 = add nsw i32 %97, %.1148198
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds %struct.complex, ptr %19, i64 %99
  %101 = sext i32 %.1148198 to i64
  %102 = getelementptr inbounds %struct.complex, ptr %20, i64 %101
  call void @clatrz_(ptr noundef nonnull %14, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %100, ptr noundef nonnull %3, ptr noundef nonnull %102, ptr noundef nonnull %5) #5
  %103 = icmp sgt i32 %.1148198, 1
  br i1 %103, label %104, label %119

104:                                              ; preds = %89
  %105 = load i32, ptr %1, align 4, !tbaa !5
  %106 = load i32, ptr %0, align 4, !tbaa !5
  %107 = sub nsw i32 %105, %106
  store i32 %107, ptr %11, align 4, !tbaa !5
  %108 = add nsw i32 %.1148198, %87
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds %struct.complex, ptr %19, i64 %109
  call void @clarzt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef %110, ptr noundef nonnull %3, ptr noundef nonnull %102, ptr noundef nonnull %5, ptr noundef nonnull %16) #5
  %111 = add nsw i32 %.1148198, -1
  store i32 %111, ptr %11, align 4, !tbaa !5
  %112 = load i32, ptr %1, align 4, !tbaa !5
  %reass.sub206 = sub i32 %112, %.1148198
  %113 = add i32 %reass.sub206, 1
  store i32 %113, ptr %12, align 4, !tbaa !5
  %114 = load i32, ptr %0, align 4, !tbaa !5
  %115 = sub nsw i32 %112, %114
  store i32 %115, ptr %13, align 4, !tbaa !5
  %116 = sext i32 %97 to i64
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %116
  %117 = load i32, ptr %14, align 4, !tbaa !5
  %118 = sext i32 %117 to i64
  %gep195 = getelementptr %struct.complex, ptr %5, i64 %118
  call void @clarzb_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef nonnull %13, ptr noundef %110, ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull %16, ptr noundef %gep, ptr noundef nonnull %3, ptr noundef %gep195, ptr noundef nonnull %16) #5
  br label %119

119:                                              ; preds = %89, %104
  %120 = sub i32 %.1148198, %.2188
  %121 = icmp sge i32 %120, %84
  %122 = icmp sle i32 %120, %84
  %.in = select i1 %88, i1 %121, i1 %122
  br i1 %.in, label %89, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %119, %75
  %.1148.lcssa = phi i32 [ %85, %75 ], [ %120, %119 ]
  %123 = add i32 %.2188, -1
  %124 = add i32 %123, %.1148.lcssa
  br label %125

125:                                              ; preds = %71, %.thread183, %._crit_edge
  %storemerge = phi i32 [ %124, %._crit_edge ], [ %72, %.thread183 ], [ %.pre209, %71 ]
  store i32 %storemerge, ptr %15, align 4, !tbaa !5
  %126 = icmp sgt i32 %storemerge, 0
  br i1 %126, label %127, label %131

127:                                              ; preds = %125
  %128 = load i32, ptr %1, align 4, !tbaa !5
  %129 = load i32, ptr %0, align 4, !tbaa !5
  %130 = sub nsw i32 %128, %129
  store i32 %130, ptr %10, align 4, !tbaa !5
  call void @clatrz_(ptr noundef nonnull %15, ptr noundef nonnull %1, ptr noundef nonnull %10, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5) #5
  br label %131

131:                                              ; preds = %127, %125
  store float %.0, ptr %5, align 4, !tbaa !9
  store float 0.000000e+00, ptr %42, align 4, !tbaa !12
  br label %.loopexit

.loopexit:                                        ; preds = %52, %.lr.ph204.preheader, %47, %131, %.thread178
  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
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #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 @clatrz_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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


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