; LLVM IR from ERGO-Code/HiGHS :: src/ipm/basiclu (lu_markowitz)

; 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.lu = type { i32, i32, i32, double, double, double, i32, i32, i32, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }

@.str = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [80 x i8], align 1
@__PRETTY_FUNCTION__.lu_markowitz = external hidden unnamed_addr constant [33 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [10 x i8], align 1

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

79:                                               ; preds = %1
  %80 = load ptr, ptr %2, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.lu, ptr %80, i32 0, i32 69
  %82 = load i32, ptr %81, align 8, !tbaa !27
  %83 = load ptr, ptr %2, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.lu, ptr %83, i32 0, i32 70
  %85 = load i32, ptr %84, align 4, !tbaa !28
  %86 = icmp sle i32 %82, %85
  br i1 %86, label %87, label %91

87:                                               ; preds = %79
  %88 = load ptr, ptr %2, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.lu, ptr %88, i32 0, i32 69
  %90 = load i32, ptr %89, align 8, !tbaa !27
  br label %95

91:                                               ; preds = %79
  %92 = load ptr, ptr %2, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.lu, ptr %92, i32 0, i32 70
  %94 = load i32, ptr %93, align 4, !tbaa !28
  br label %95

95:                                               ; preds = %91, %87
  %96 = phi i32 [ %90, %87 ], [ %94, %91 ]
  br label %101

97:                                               ; preds = %1
  %98 = load ptr, ptr %2, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.lu, ptr %98, i32 0, i32 69
  %100 = load i32, ptr %99, align 8, !tbaa !27
  br label %101

101:                                              ; preds = %97, %95
  %102 = phi i32 [ %96, %95 ], [ %100, %97 ]
  store i32 %102, ptr %16, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  %103 = load i32, ptr %3, align 4, !tbaa !13
  %104 = sext i32 %103 to i64
  store i64 %104, ptr %33, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  store i32 -1, ptr %23, align 4, !tbaa !13
  store i32 -1, ptr %24, align 4, !tbaa !13
  %105 = load i64, ptr %33, align 8, !tbaa !29
  %106 = load i64, ptr %33, align 8, !tbaa !29
  %107 = mul nsw i64 %105, %106
  store i64 %107, ptr %37, align 8, !tbaa !29
  store i32 0, ptr %25, align 4, !tbaa !13
  store i32 -1, ptr %28, align 4, !tbaa !13
  store i32 -1, ptr %29, align 4, !tbaa !13
  %108 = load i32, ptr %16, align 4, !tbaa !13
  %109 = icmp sge i32 %108, 1
  br i1 %109, label %110, label %111

110:                                              ; preds = %101
  br label %112

111:                                              ; preds = %101
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 69, ptr noundef @__PRETTY_FUNCTION__.lu_markowitz) #6
  unreachable

112:                                              ; preds = %110
  %113 = load ptr, ptr %8, align 8, !tbaa !5
  %114 = load i32, ptr %3, align 4, !tbaa !13
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds i32, ptr %113, i64 %115
  %117 = load i32, ptr %116, align 4, !tbaa !13
  %118 = load i32, ptr %3, align 4, !tbaa !13
  %119 = icmp ne i32 %117, %118
  br i1 %119, label %120, label %149

120:                                              ; preds = %112
  %121 = load ptr, ptr %8, align 8, !tbaa !5
  %122 = load i32, ptr %3, align 4, !tbaa !13
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds i32, ptr %121, i64 %123
  %125 = load i32, ptr %124, align 4, !tbaa !13
  store i32 %125, ptr %24, align 4, !tbaa !13
  %126 = load i32, ptr %24, align 4, !tbaa !13
  %127 = icmp sge i32 %126, 0
  br i1 %127, label %128, label %133

128:                                              ; preds = %120
  %129 = load i32, ptr %24, align 4, !tbaa !13
  %130 = load i32, ptr %3, align 4, !tbaa !13
  %131 = icmp slt i32 %129, %130
  br i1 %131, label %132, label %133

132:                                              ; preds = %128
  br label %134

133:                                              ; preds = %128, %120
  call void @__assert_fail(ptr noundef @.str.2, ptr noundef @.str.1, i32 noundef 76, ptr noundef @__PRETTY_FUNCTION__.lu_markowitz) #6
  unreachable

134:                                              ; preds = %132
  %135 = load ptr, ptr %5, align 8, !tbaa !5
  %136 = load i32, ptr %24, align 4, !tbaa !13
  %137 = sext i32 %136 to i64
  %138 = getelementptr inbounds i32, ptr %135, i64 %137
  %139 = load i32, ptr %138, align 4, !tbaa !13
  %140 = load ptr, ptr %4, align 8, !tbaa !5
  %141 = load i32, ptr %24, align 4, !tbaa !13
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds i32, ptr %140, i64 %142
  %144 = load i32, ptr %143, align 4, !tbaa !13
  %145 = icmp eq i32 %139, %144
  br i1 %145, label %146, label %147

146:                                              ; preds = %134
  br label %148

147:                                              ; preds = %134
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 77, ptr noundef @__PRETTY_FUNCTION__.lu_markowitz) #6
  unreachable

148:                                              ; preds = %146
  br label %564

149:                                              ; preds = %112
  %150 = load i32, ptr %16, align 4, !tbaa !13
  store i32 %150, ptr %22, align 4, !tbaa !13
  br label %151

151:                                              ; preds = %560, %149
  %152 = load i32, ptr %22, align 4, !tbaa !13
  %153 = load i32, ptr %3, align 4, !tbaa !13
  %154 = icmp sle i32 %152, %153
  br i1 %154, label %155, label %563

155:                                              ; preds = %151
  %156 = load ptr, ptr %8, align 8, !tbaa !5
  %157 = load i32, ptr %3, align 4, !tbaa !13
  %158 = load i32, ptr %22, align 4, !tbaa !13
  %159 = add nsw i32 %157, %158
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds i32, ptr %156, i64 %160
  %162 = load i32, ptr %161, align 4, !tbaa !13
  store i32 %162, ptr %18, align 4, !tbaa !13
  br label %163

163:                                              ; preds = %320, %155
  %164 = load i32, ptr %18, align 4, !tbaa !13
  %165 = load i32, ptr %3, align 4, !tbaa !13
  %166 = icmp slt i32 %164, %165
  br i1 %166, label %167, label %326

167:                                              ; preds = %163
  %168 = load i32, ptr %28, align 4, !tbaa !13
  %169 = icmp eq i32 %168, -1
  br i1 %169, label %170, label %172

170:                                              ; preds = %167
  %171 = load i32, ptr %22, align 4, !tbaa !13
  store i32 %171, ptr %28, align 4, !tbaa !13
  br label %172

172:                                              ; preds = %170, %167
  %173 = load ptr, ptr %5, align 8, !tbaa !5
  %174 = load i32, ptr %18, align 4, !tbaa !13
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds i32, ptr %173, i64 %175
  %177 = load i32, ptr %176, align 4, !tbaa !13
  %178 = load ptr, ptr %4, align 8, !tbaa !5
  %179 = load i32, ptr %18, align 4, !tbaa !13
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds i32, ptr %178, i64 %180
  %182 = load i32, ptr %181, align 4, !tbaa !13
  %183 = sub nsw i32 %177, %182
  %184 = load i32, ptr %22, align 4, !tbaa !13
  %185 = icmp eq i32 %183, %184
  br i1 %185, label %186, label %187

186:                                              ; preds = %172
  br label %188

187:                                              ; preds = %172
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 88, ptr noundef @__PRETTY_FUNCTION__.lu_markowitz) #6
  unreachable

188:                                              ; preds = %186
  %189 = load ptr, ptr %11, align 8, !tbaa !5
  %190 = load i32, ptr %18, align 4, !tbaa !13
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds double, ptr %189, i64 %191
  %193 = load double, ptr %192, align 8, !tbaa !23
  store double %193, ptr %30, align 8, !tbaa !23
  %194 = load double, ptr %30, align 8, !tbaa !23
  %195 = fcmp oge double %194, 0.000000e+00
  br i1 %195, label %196, label %197

196:                                              ; preds = %188
  br label %198

197:                                              ; preds = %188
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str.1, i32 noundef 90, ptr noundef @__PRETTY_FUNCTION__.lu_markowitz) #6
  unreachable

198:                                              ; preds = %196
  %199 = load double, ptr %30, align 8, !tbaa !23
  %200 = fcmp une double %199, 0.000000e+00
  br i1 %200, label %201, label %205

201:                                              ; preds = %198
  %202 = load double, ptr %30, align 8, !tbaa !23
  %203 = load double, ptr %12, align 8, !tbaa !23
  %204 = fcmp olt double %202, %203
  br i1 %204, label %205, label %206

205:                                              ; preds = %201, %198
  br label %320

206:                                              ; preds = %201
  %207 = load double, ptr %12, align 8, !tbaa !23
  %208 = load double, ptr %13, align 8, !tbaa !23
  %209 = load double, ptr %30, align 8, !tbaa !23
  %210 = fmul double %208, %209
  %211 = call double @llvm.maxnum.f64(double %207, double %210)
  store double %211, ptr %32, align 8, !tbaa !23
  %212 = load ptr, ptr %4, align 8, !tbaa !5
  %213 = load i32, ptr %18, align 4, !tbaa !13
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds i32, ptr %212, i64 %214
  %216 = load i32, ptr %215, align 4, !tbaa !13
  store i32 %216, ptr %19, align 4, !tbaa !13
  br label %217

217:                                              ; preds = %302, %206
  %218 = load i32, ptr %19, align 4, !tbaa !13
  %219 = load ptr, ptr %5, align 8, !tbaa !5
  %220 = load i32, ptr %18, align 4, !tbaa !13
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds i32, ptr %219, i64 %221
  %223 = load i32, ptr %222, align 4, !tbaa !13
  %224 = icmp slt i32 %218, %223
  br i1 %224, label %225, label %305

225:                                              ; preds = %217
  %226 = load ptr, ptr %7, align 8, !tbaa !5
  %227 = load i32, ptr %19, align 4, !tbaa !13
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds double, ptr %226, i64 %228
  %230 = load double, ptr %229, align 8, !tbaa !23
  %231 = call double @llvm.fabs.f64(double %230)
  store double %231, ptr %31, align 8, !tbaa !23
  %232 = load double, ptr %31, align 8, !tbaa !23
  %233 = fcmp une double %232, 0.000000e+00
  br i1 %233, label %234, label %238

234:                                              ; preds = %225
  %235 = load double, ptr %31, align 8, !tbaa !23
  %236 = load double, ptr %32, align 8, !tbaa !23
  %237 = fcmp olt double %235, %236
  br i1 %237, label %238, label %239

238:                                              ; preds = %234, %225
  br label %302

239:                                              ; preds = %234
  %240 = load ptr, ptr %6, align 8, !tbaa !5
  %241 = load i32, ptr %19, align 4, !tbaa !13
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds i32, ptr %240, i64 %242
  %244 = load i32, ptr %243, align 4, !tbaa !13
  store i32 %244, ptr %17, align 4, !tbaa !13
  %245 = load i32, ptr %17, align 4, !tbaa !13
  %246 = icmp sge i32 %245, 0
  br i1 %246, label %247, label %252

247:                                              ; preds = %239
  %248 = load i32, ptr %17, align 4, !tbaa !13
  %249 = load i32, ptr %3, align 4, !tbaa !13
  %250 = icmp slt i32 %248, %249
  br i1 %250, label %251, label %252

251:                                              ; preds = %247
  br label %253

252:                                              ; preds = %247, %239
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 100, ptr noundef @__PRETTY_FUNCTION__.lu_markowitz) #6
  unreachable

253:                                              ; preds = %251
  %254 = load i32, ptr %22, align 4, !tbaa !13
  %255 = sext i32 %254 to i64
  store i64 %255, ptr %34, align 8, !tbaa !29
  %256 = load ptr, ptr %5, align 8, !tbaa !5
  %257 = load i32, ptr %3, align 4, !tbaa !13
  %258 = load i32, ptr %17, align 4, !tbaa !13
  %259 = add nsw i32 %257, %258
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds i32, ptr %256, i64 %260
  %262 = load i32, ptr %261, align 4, !tbaa !13
  %263 = load ptr, ptr %4, align 8, !tbaa !5
  %264 = load i32, ptr %3, align 4, !tbaa !13
  %265 = load i32, ptr %17, align 4, !tbaa !13
  %266 = add nsw i32 %264, %265
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds i32, ptr %263, i64 %267
  %269 = load i32, ptr %268, align 4, !tbaa !13
  %270 = sub nsw i32 %262, %269
  %271 = sext i32 %270 to i64
  store i64 %271, ptr %35, align 8, !tbaa !29
  %272 = load i64, ptr %35, align 8, !tbaa !29
  %273 = icmp sge i64 %272, 1
  br i1 %273, label %274, label %275

274:                                              ; preds = %253
  br label %276

275:                                              ; preds = %253
  call void @__assert_fail(ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 103, ptr noundef @__PRETTY_FUNCTION__.lu_markowitz) #6
  unreachable

276:                                              ; preds = %274
  %277 = load i64, ptr %34, align 8, !tbaa !29
  %278 = sub nsw i64 %277, 1
  %279 = load i64, ptr %35, align 8, !tbaa !29
  %280 = sub nsw i64 %279, 1
  %281 = mul nsw i64 %278, %280
  store i64 %281, ptr %36, align 8, !tbaa !29
  %282 = load i64, ptr %36, align 8, !tbaa !29
  %283 = load i64, ptr %37, align 8, !tbaa !29
  %284 = icmp slt i64 %282, %283
  br i1 %284, label %285, label %301

285:                                              ; preds = %276
  %286 = load i64, ptr %36, align 8, !tbaa !29
  store i64 %286, ptr %37, align 8, !tbaa !29
  %287 = load i32, ptr %17, align 4, !tbaa !13
  store i32 %287, ptr %23, align 4, !tbaa !13
  %288 = load i32, ptr %18, align 4, !tbaa !13
  store i32 %288, ptr %24, align 4, !tbaa !13
  %289 = load i32, ptr %15, align 4, !tbaa !13
  %290 = icmp ne i32 %289, 0
  br i1 %290, label %291, label %300

291:                                              ; preds = %285
  %292 = load i64, ptr %37, align 8, !tbaa !29
  %293 = load i64, ptr %34, align 8, !tbaa !29
  %294 = sub nsw i64 %293, 1
  %295 = load i64, ptr %34, align 8, !tbaa !29
  %296 = sub nsw i64 %295, 1
  %297 = mul nsw i64 %294, %296
  %298 = icmp sle i64 %292, %297
  br i1 %298, label %299, label %300

299:                                              ; preds = %291
  br label %564

300:                                              ; preds = %291, %285
  br label %301

301:                                              ; preds = %300, %276
  br label %302

302:                                              ; preds = %301, %238
  %303 = load i32, ptr %19, align 4, !tbaa !13
  %304 = add nsw i32 %303, 1
  store i32 %304, ptr %19, align 4, !tbaa !13
  br label %217, !llvm.loop !31

305:                                              ; preds = %217
  %306 = load i64, ptr %37, align 8, !tbaa !29
  %307 = load i64, ptr %33, align 8, !tbaa !29
  %308 = load i64, ptr %33, align 8, !tbaa !29
  %309 = mul nsw i64 %307, %308
  %310 = icmp slt i64 %306, %309
  br i1 %310, label %311, label %312

311:                                              ; preds = %305
  br label %313

312:                                              ; preds = %305
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 115, ptr noundef @__PRETTY_FUNCTION__.lu_markowitz) #6
  unreachable

313:                                              ; preds = %311
  %314 = load i32, ptr %25, align 4, !tbaa !13
  %315 = add nsw i32 %314, 1
  store i32 %315, ptr %25, align 4, !tbaa !13
  %316 = load i32, ptr %14, align 4, !tbaa !13
  %317 = icmp sge i32 %315, %316
  br i1 %317, label %318, label %319

318:                                              ; preds = %313
  br label %564

319:                                              ; preds = %313
  br label %320

320:                                              ; preds = %319, %205
  %321 = load ptr, ptr %8, align 8, !tbaa !5
  %322 = load i32, ptr %18, align 4, !tbaa !13
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds i32, ptr %321, i64 %323
  %325 = load i32, ptr %324, align 4, !tbaa !13
  store i32 %325, ptr %18, align 4, !tbaa !13
  br label %163, !llvm.loop !33

326:                                              ; preds = %163
  %327 = load i32, ptr %18, align 4, !tbaa !13
  %328 = load i32, ptr %3, align 4, !tbaa !13
  %329 = load i32, ptr %22, align 4, !tbaa !13
  %330 = add nsw i32 %328, %329
  %331 = icmp eq i32 %327, %330
  br i1 %331, label %332, label %333

332:                                              ; preds = %326
  br label %334

333:                                              ; preds = %326
  call void @__assert_fail(ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 119, ptr noundef @__PRETTY_FUNCTION__.lu_markowitz) #6
  unreachable

334:                                              ; preds = %332
  %335 = load i32, ptr %15, align 4, !tbaa !13
  %336 = icmp ne i32 %335, 0
  br i1 %336, label %338, label %337

337:                                              ; preds = %334
  br label %560

338:                                              ; preds = %334
  %339 = load ptr, ptr %9, align 8, !tbaa !5
  %340 = load i32, ptr %3, align 4, !tbaa !13
  %341 = load i32, ptr %22, align 4, !tbaa !13
  %342 = add nsw i32 %340, %341
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds i32, ptr %339, i64 %343
  %345 = load i32, ptr %344, align 4, !tbaa !13
  store i32 %345, ptr %17, align 4, !tbaa !13
  br label %346

346:                                              ; preds = %549, %338
  %347 = load i32, ptr %17, align 4, !tbaa !13
  %348 = load i32, ptr %3, align 4, !tbaa !13
  %349 = icmp slt i32 %347, %348
  br i1 %349, label %350, label %551

350:                                              ; preds = %346
  %351 = load i32, ptr %29, align 4, !tbaa !13
  %352 = icmp eq i32 %351, -1
  br i1 %352, label %353, label %355

353:                                              ; preds = %350
  %354 = load i32, ptr %22, align 4, !tbaa !13
  store i32 %354, ptr %29, align 4, !tbaa !13
  br label %355

355:                                              ; preds = %353, %350
  %356 = load ptr, ptr %9, align 8, !tbaa !5
  %357 = load i32, ptr %17, align 4, !tbaa !13
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds i32, ptr %356, i64 %358
  %360 = load i32, ptr %359, align 4, !tbaa !13
  store i32 %360, ptr %21, align 4, !tbaa !13
  %361 = load ptr, ptr %5, align 8, !tbaa !5
  %362 = load i32, ptr %3, align 4, !tbaa !13
  %363 = load i32, ptr %17, align 4, !tbaa !13
  %364 = add nsw i32 %362, %363
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds i32, ptr %361, i64 %365
  %367 = load i32, ptr %366, align 4, !tbaa !13
  %368 = load ptr, ptr %4, align 8, !tbaa !5
  %369 = load i32, ptr %3, align 4, !tbaa !13
  %370 = load i32, ptr %17, align 4, !tbaa !13
  %371 = add nsw i32 %369, %370
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds i32, ptr %368, i64 %372
  %374 = load i32, ptr %373, align 4, !tbaa !13
  %375 = sub nsw i32 %367, %374
  %376 = load i32, ptr %22, align 4, !tbaa !13
  %377 = icmp eq i32 %375, %376
  br i1 %377, label %378, label %379

378:                                              ; preds = %355
  br label %380

379:                                              ; preds = %355
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 131, ptr noundef @__PRETTY_FUNCTION__.lu_markowitz) #6
  unreachable

380:                                              ; preds = %378
  store i32 0, ptr %26, align 4, !tbaa !13
  store i32 0, ptr %27, align 4, !tbaa !13
  %381 = load ptr, ptr %4, align 8, !tbaa !5
  %382 = load i32, ptr %3, align 4, !tbaa !13
  %383 = load i32, ptr %17, align 4, !tbaa !13
  %384 = add nsw i32 %382, %383
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds i32, ptr %381, i64 %385
  %387 = load i32, ptr %386, align 4, !tbaa !13
  store i32 %387, ptr %19, align 4, !tbaa !13
  br label %388

388:                                              ; preds = %517, %380
  %389 = load i32, ptr %19, align 4, !tbaa !13
  %390 = load ptr, ptr %5, align 8, !tbaa !5
  %391 = load i32, ptr %3, align 4, !tbaa !13
  %392 = load i32, ptr %17, align 4, !tbaa !13
  %393 = add nsw i32 %391, %392
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds i32, ptr %390, i64 %394
  %396 = load i32, ptr %395, align 4, !tbaa !13
  %397 = icmp slt i32 %389, %396
  br i1 %397, label %398, label %520

398:                                              ; preds = %388
  %399 = load ptr, ptr %6, align 8, !tbaa !5
  %400 = load i32, ptr %19, align 4, !tbaa !13
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds i32, ptr %399, i64 %401
  %403 = load i32, ptr %402, align 4, !tbaa !13
  store i32 %403, ptr %18, align 4, !tbaa !13
  %404 = load i32, ptr %18, align 4, !tbaa !13
  %405 = icmp sge i32 %404, 0
  br i1 %405, label %406, label %411

406:                                              ; preds = %398
  %407 = load i32, ptr %18, align 4, !tbaa !13
  %408 = load i32, ptr %3, align 4, !tbaa !13
  %409 = icmp slt i32 %407, %408
  br i1 %409, label %410, label %411

410:                                              ; preds = %406
  br label %412

411:                                              ; preds = %406, %398
  call void @__assert_fail(ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 137, ptr noundef @__PRETTY_FUNCTION__.lu_markowitz) #6
  unreachable

412:                                              ; preds = %410
  %413 = load i32, ptr %22, align 4, !tbaa !13
  %414 = sext i32 %413 to i64
  store i64 %414, ptr %34, align 8, !tbaa !29
  %415 = load ptr, ptr %5, align 8, !tbaa !5
  %416 = load i32, ptr %18, align 4, !tbaa !13
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds i32, ptr %415, i64 %417
  %419 = load i32, ptr %418, align 4, !tbaa !13
  %420 = load ptr, ptr %4, align 8, !tbaa !5
  %421 = load i32, ptr %18, align 4, !tbaa !13
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds i32, ptr %420, i64 %422
  %424 = load i32, ptr %423, align 4, !tbaa !13
  %425 = sub nsw i32 %419, %424
  %426 = sext i32 %425 to i64
  store i64 %426, ptr %35, align 8, !tbaa !29
  %427 = load i64, ptr %35, align 8, !tbaa !29
  %428 = icmp sge i64 %427, 1
  br i1 %428, label %429, label %430

429:                                              ; preds = %412
  br label %431

430:                                              ; preds = %412
  call void @__assert_fail(ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 140, ptr noundef @__PRETTY_FUNCTION__.lu_markowitz) #6
  unreachable

431:                                              ; preds = %429
  %432 = load i64, ptr %34, align 8, !tbaa !29
  %433 = sub nsw i64 %432, 1
  %434 = load i64, ptr %35, align 8, !tbaa !29
  %435 = sub nsw i64 %434, 1
  %436 = mul nsw i64 %433, %435
  store i64 %436, ptr %36, align 8, !tbaa !29
  %437 = load i64, ptr %36, align 8, !tbaa !29
  %438 = load i64, ptr %37, align 8, !tbaa !29
  %439 = icmp sge i64 %437, %438
  br i1 %439, label %440, label %441

440:                                              ; preds = %431
  br label %517

441:                                              ; preds = %431
  store i32 1, ptr %26, align 4, !tbaa !13
  %442 = load ptr, ptr %11, align 8, !tbaa !5
  %443 = load i32, ptr %18, align 4, !tbaa !13
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds double, ptr %442, i64 %444
  %446 = load double, ptr %445, align 8, !tbaa !23
  store double %446, ptr %30, align 8, !tbaa !23
  %447 = load double, ptr %30, align 8, !tbaa !23
  %448 = fcmp oge double %447, 0.000000e+00
  br i1 %448, label %449, label %450

449:                                              ; preds = %441
  br label %451

450:                                              ; preds = %441
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str.1, i32 noundef 146, ptr noundef @__PRETTY_FUNCTION__.lu_markowitz) #6
  unreachable

451:                                              ; preds = %449
  %452 = load double, ptr %30, align 8, !tbaa !23
  %453 = fcmp une double %452, 0.000000e+00
  br i1 %453, label %454, label %458

454:                                              ; preds = %451
  %455 = load double, ptr %30, align 8, !tbaa !23
  %456 = load double, ptr %12, align 8, !tbaa !23
  %457 = fcmp olt double %455, %456
  br i1 %457, label %458, label %459

458:                                              ; preds = %454, %451
  br label %517

459:                                              ; preds = %454
  %460 = load ptr, ptr %4, align 8, !tbaa !5
  %461 = load i32, ptr %18, align 4, !tbaa !13
  %462 = sext i32 %461 to i64
  %463 = getelementptr inbounds i32, ptr %460, i64 %462
  %464 = load i32, ptr %463, align 4, !tbaa !13
  store i32 %464, ptr %20, align 4, !tbaa !13
  br label %465

465:                                              ; preds = %485, %459
  %466 = load ptr, ptr %6, align 8, !tbaa !5
  %467 = load i32, ptr %20, align 4, !tbaa !13
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds i32, ptr %466, i64 %468
  %470 = load i32, ptr %469, align 4, !tbaa !13
  %471 = load i32, ptr %17, align 4, !tbaa !13
  %472 = icmp ne i32 %470, %471
  br i1 %472, label %473, label %488

473:                                              ; preds = %465
  %474 = load i32, ptr %20, align 4, !tbaa !13
  %475 = load ptr, ptr %5, align 8, !tbaa !5
  %476 = load i32, ptr %18, align 4, !tbaa !13
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds i32, ptr %475, i64 %477
  %479 = load i32, ptr %478, align 4, !tbaa !13
  %480 = sub nsw i32 %479, 1
  %481 = icmp slt i32 %474, %480
  br i1 %481, label %482, label %483

482:                                              ; preds = %473
  br label %484

483:                                              ; preds = %473
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 151, ptr noundef @__PRETTY_FUNCTION__.lu_markowitz) #6
  unreachable

484:                                              ; preds = %482
  br label %485

485:                                              ; preds = %484
  %486 = load i32, ptr %20, align 4, !tbaa !13
  %487 = add nsw i32 %486, 1
  store i32 %487, ptr %20, align 4, !tbaa !13
  br label %465, !llvm.loop !34

488:                                              ; preds = %465
  %489 = load ptr, ptr %7, align 8, !tbaa !5
  %490 = load i32, ptr %20, align 4, !tbaa !13
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds double, ptr %489, i64 %491
  %493 = load double, ptr %492, align 8, !tbaa !23
  %494 = call double @llvm.fabs.f64(double %493)
  store double %494, ptr %31, align 8, !tbaa !23
  %495 = load double, ptr %31, align 8, !tbaa !23
  %496 = load double, ptr %12, align 8, !tbaa !23
  %497 = fcmp oge double %495, %496
  br i1 %497, label %498, label %516

498:                                              ; preds = %488
  %499 = load double, ptr %31, align 8, !tbaa !23
  %500 = load double, ptr %13, align 8, !tbaa !23
  %501 = load double, ptr %30, align 8, !tbaa !23
  %502 = fmul double %500, %501
  %503 = fcmp oge double %499, %502
  br i1 %503, label %504, label %516

504:                                              ; preds = %498
  store i32 1, ptr %27, align 4, !tbaa !13
  %505 = load i64, ptr %36, align 8, !tbaa !29
  store i64 %505, ptr %37, align 8, !tbaa !29
  %506 = load i32, ptr %17, align 4, !tbaa !13
  store i32 %506, ptr %23, align 4, !tbaa !13
  %507 = load i32, ptr %18, align 4, !tbaa !13
  store i32 %507, ptr %24, align 4, !tbaa !13
  %508 = load i64, ptr %37, align 8, !tbaa !29
  %509 = load i64, ptr %34, align 8, !tbaa !29
  %510 = load i64, ptr %34, align 8, !tbaa !29
  %511 = sub nsw i64 %510, 1
  %512 = mul nsw i64 %509, %511
  %513 = icmp sle i64 %508, %512
  br i1 %513, label %514, label %515

514:                                              ; preds = %504
  br label %564

515:                                              ; preds = %504
  br label %516

516:                                              ; preds = %515, %498, %488
  br label %517

517:                                              ; preds = %516, %458, %440
  %518 = load i32, ptr %19, align 4, !tbaa !13
  %519 = add nsw i32 %518, 1
  store i32 %519, ptr %19, align 4, !tbaa !13
  br label %388, !llvm.loop !35

520:                                              ; preds = %388
  %521 = load i32, ptr %26, align 4, !tbaa !13
  %522 = icmp ne i32 %521, 0
  br i1 %522, label %523, label %533

523:                                              ; preds = %520
  %524 = load i32, ptr %27, align 4, !tbaa !13
  %525 = icmp ne i32 %524, 0
  br i1 %525, label %533, label %526

526:                                              ; preds = %523
  %527 = load i32, ptr %17, align 4, !tbaa !13
  %528 = load i32, ptr %3, align 4, !tbaa !13
  %529 = add nsw i32 %528, 1
  %530 = load ptr, ptr %9, align 8, !tbaa !5
  %531 = load ptr, ptr %10, align 8, !tbaa !5
  %532 = load i32, ptr %3, align 4, !tbaa !13
  call void @lu_list_move(i32 noundef %527, i32 noundef %529, ptr noundef %530, ptr noundef %531, i32 noundef %532, ptr noundef null)
  br label %548

533:                                              ; preds = %523, %520
  %534 = load i64, ptr %37, align 8, !tbaa !29
  %535 = load i64, ptr %33, align 8, !tbaa !29
  %536 = load i64, ptr %33, align 8, !tbaa !29
  %537 = mul nsw i64 %535, %536
  %538 = icmp slt i64 %534, %537
  br i1 %538, label %539, label %540

539:                                              ; preds = %533
  br label %541

540:                                              ; preds = %533
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 171, ptr noundef @__PRETTY_FUNCTION__.lu_markowitz) #6
  unreachable

541:                                              ; preds = %539
  %542 = load i32, ptr %25, align 4, !tbaa !13
  %543 = add nsw i32 %542, 1
  store i32 %543, ptr %25, align 4, !tbaa !13
  %544 = load i32, ptr %14, align 4, !tbaa !13
  %545 = icmp sge i32 %543, %544
  br i1 %545, label %546, label %547

546:                                              ; preds = %541
  br label %564

547:                                              ; preds = %541
  br label %548

548:                                              ; preds = %547, %526
  br label %549

549:                                              ; preds = %548
  %550 = load i32, ptr %21, align 4, !tbaa !13
  store i32 %550, ptr %17, align 4, !tbaa !13
  br label %346, !llvm.loop !36

551:                                              ; preds = %346
  %552 = load i32, ptr %17, align 4, !tbaa !13
  %553 = load i32, ptr %3, align 4, !tbaa !13
  %554 = load i32, ptr %22, align 4, !tbaa !13
  %555 = add nsw i32 %553, %554
  %556 = icmp eq i32 %552, %555
  br i1 %556, label %557, label %558

557:                                              ; preds = %551
  br label %559

558:                                              ; preds = %551
  call void @__assert_fail(ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 176, ptr noundef @__PRETTY_FUNCTION__.lu_markowitz) #6
  unreachable

559:                                              ; preds = %557
  br label %560

560:                                              ; preds = %559, %337
  %561 = load i32, ptr %22, align 4, !tbaa !13
  %562 = add nsw i32 %561, 1
  store i32 %562, ptr %22, align 4, !tbaa !13
  br label %151, !llvm.loop !37

563:                                              ; preds = %151
  br label %564

564:                                              ; preds = %563, %546, %514, %318, %299, %148
  %565 = load i32, ptr %23, align 4, !tbaa !13
  %566 = load ptr, ptr %2, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.lu, ptr %566, i32 0, i32 62
  store i32 %565, ptr %567, align 4, !tbaa !38
  %568 = load i32, ptr %24, align 4, !tbaa !13
  %569 = load ptr, ptr %2, align 8, !tbaa !5
  %570 = getelementptr inbounds %struct.lu, ptr %569, i32 0, i32 63
  store i32 %568, ptr %570, align 8, !tbaa !39
  %571 = load i32, ptr %25, align 4, !tbaa !13
  %572 = load ptr, ptr %2, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.lu, ptr %572, i32 0, i32 53
  %574 = load i32, ptr %573, align 8, !tbaa !40
  %575 = add nsw i32 %574, %571
  store i32 %575, ptr %573, align 8, !tbaa !40
  %576 = load i32, ptr %28, align 4, !tbaa !13
  %577 = icmp sge i32 %576, 0
  br i1 %577, label %578, label %582

578:                                              ; preds = %564
  %579 = load i32, ptr %28, align 4, !tbaa !13
  %580 = load ptr, ptr %2, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.lu, ptr %580, i32 0, i32 69
  store i32 %579, ptr %581, align 8, !tbaa !27
  br label %582

582:                                              ; preds = %578, %564
  %583 = load i32, ptr %29, align 4, !tbaa !13
  %584 = icmp sge i32 %583, 0
  br i1 %584, label %585, label %589

585:                                              ; preds = %582
  %586 = load i32, ptr %29, align 4, !tbaa !13
  %587 = load ptr, ptr %2, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.lu, ptr %587, i32 0, i32 70
  store i32 %586, ptr %588, align 4, !tbaa !28
  br label %589

589:                                              ; preds = %585, %582
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #5
  ret i32 0
}

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @lu_list_move(i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef) #4

; 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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { inlinehint 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 #5 = { nounwind }
attributes #6 = { noreturn 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, !11, i64 84}
!10 = !{!"lu", !11, i64 0, !11, i64 4, !11, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !11, i64 40, !11, i64 44, !11, i64 48, !12, i64 56, !12, i64 64, !12, i64 72, !11, i64 80, !11, i64 84, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !11, i64 112, !11, i64 116, !11, i64 120, !11, i64 124, !11, i64 128, !11, i64 132, !12, i64 136, !12, i64 144, !12, i64 152, !12, i64 160, !12, i64 168, !12, i64 176, !12, i64 184, !12, i64 192, !12, i64 200, !12, i64 208, !12, i64 216, !11, i64 224, !11, i64 228, !11, i64 232, !12, i64 240, !12, i64 248, !12, i64 256, !12, i64 264, !12, i64 272, !12, i64 280, !12, i64 288, !12, i64 296, !12, i64 304, !11, i64 312, !11, i64 316, !11, i64 320, !11, i64 324, !11, i64 328, !11, i64 332, !11, i64 336, !11, i64 340, !12, i64 344, !12, i64 352, !12, i64 360, !12, i64 368, !11, i64 376, !11, i64 380, !11, i64 384, !11, i64 388, !11, i64 392, !11, i64 396, !11, i64 400, !11, i64 404, !11, i64 408, !11, i64 412, !6, i64 416, !6, i64 424, !6, i64 432, !6, i64 440, !6, i64 448, !6, i64 456, !6, i64 464, !6, i64 472, !6, i64 480, !6, i64 488, !6, i64 496, !6, i64 504, !6, i64 512, !6, i64 520, !6, i64 528, !6, i64 536, !6, i64 544, !6, i64 552, !6, i64 560, !6, i64 568, !6, i64 576, !6, i64 584, !6, i64 592, !6, i64 600, !6, i64 608, !6, i64 616, !6, i64 624, !6, i64 632, !6, i64 640, !6, i64 648, !6, i64 656, !6, i64 664, !6, i64 672, !6, i64 680, !6, i64 688}
!11 = !{!"int", !7, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!11, !11, i64 0}
!14 = !{!10, !6, i64 536}
!15 = !{!10, !6, i64 552}
!16 = !{!10, !6, i64 432}
!17 = !{!10, !6, i64 456}
!18 = !{!10, !6, i64 464}
!19 = !{!10, !6, i64 496}
!20 = !{!10, !6, i64 520}
!21 = !{!10, !6, i64 680}
!22 = !{!10, !12, i64 24}
!23 = !{!12, !12, i64 0}
!24 = !{!10, !12, i64 32}
!25 = !{!10, !11, i64 44}
!26 = !{!10, !11, i64 80}
!27 = !{!10, !11, i64 408}
!28 = !{!10, !11, i64 412}
!29 = !{!30, !30, i64 0}
!30 = !{!"long", !7, i64 0}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = distinct !{!33, !32}
!34 = distinct !{!34, !32}
!35 = distinct !{!35, !32}
!36 = distinct !{!36, !32}
!37 = distinct !{!37, !32}
!38 = !{!10, !11, i64 380}
!39 = !{!10, !11, i64 384}
!40 = !{!10, !11, i64 328}


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

@.str = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [80 x i8], align 1
@__PRETTY_FUNCTION__.lu_markowitz = external hidden unnamed_addr constant [33 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [10 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @lu_markowitz(ptr nocapture noundef %0) local_unnamed_addr #0 {
  %2 = getelementptr inbounds i8, ptr %0, i64 84
  %3 = load i32, ptr %2, align 4, !tbaa !5
  %4 = getelementptr inbounds i8, ptr %0, i64 536
  %5 = load ptr, ptr %4, align 8, !tbaa !12
  %6 = getelementptr inbounds i8, ptr %0, i64 552
  %7 = load ptr, ptr %6, align 8, !tbaa !13
  %8 = getelementptr inbounds i8, ptr %0, i64 432
  %9 = load ptr, ptr %8, align 8, !tbaa !14
  %10 = getelementptr inbounds i8, ptr %0, i64 456
  %11 = load ptr, ptr %10, align 8, !tbaa !15
  %12 = getelementptr inbounds i8, ptr %0, i64 464
  %13 = load ptr, ptr %12, align 8, !tbaa !16
  %14 = getelementptr inbounds i8, ptr %0, i64 496
  %15 = load ptr, ptr %14, align 8, !tbaa !17
  %16 = getelementptr inbounds i8, ptr %0, i64 520
  %17 = load ptr, ptr %16, align 8, !tbaa !18
  %18 = getelementptr inbounds i8, ptr %0, i64 680
  %19 = load ptr, ptr %18, align 8, !tbaa !19
  %20 = getelementptr inbounds i8, ptr %0, i64 24
  %21 = load double, ptr %20, align 8, !tbaa !20
  %22 = getelementptr inbounds i8, ptr %0, i64 32
  %23 = load double, ptr %22, align 8, !tbaa !21
  %24 = getelementptr inbounds i8, ptr %0, i64 44
  %25 = load i32, ptr %24, align 4, !tbaa !22
  %26 = getelementptr inbounds i8, ptr %0, i64 80
  %27 = load i32, ptr %26, align 8, !tbaa !23
  %.not = icmp eq i32 %27, 0
  %28 = getelementptr inbounds i8, ptr %0, i64 408
  %29 = load i32, ptr %28, align 8, !tbaa !24
  br i1 %.not, label %33, label %30

30:                                               ; preds = %1
  %31 = getelementptr inbounds i8, ptr %0, i64 412
  %32 = load i32, ptr %31, align 4, !tbaa !25
  %. = tail call i32 @llvm.smin.i32(i32 %29, i32 %32)
  br label %33

33:                                               ; preds = %1, %30
  %34 = phi i32 [ %., %30 ], [ %29, %1 ]
  %35 = sext i32 %3 to i64
  %36 = mul nsw i64 %35, %35
  %37 = icmp sgt i32 %34, 0
  br i1 %37, label %39, label %38

38:                                               ; preds = %33
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 69, ptr noundef nonnull @__PRETTY_FUNCTION__.lu_markowitz) #5
  unreachable

39:                                               ; preds = %33
  %40 = getelementptr inbounds i32, ptr %13, i64 %35
  %41 = load i32, ptr %40, align 4, !tbaa !26
  %.not270 = icmp eq i32 %41, %3
  br i1 %.not270, label %.preheader301, label %47

.preheader301:                                    ; preds = %39
  %.not271609 = icmp sgt i32 %34, %3
  br i1 %.not271609, label %.thread, label %.lr.ph618

.thread:                                          ; preds = %.preheader301
  %42 = getelementptr inbounds i8, ptr %0, i64 380
  store i32 -1, ptr %42, align 4, !tbaa !27
  %43 = getelementptr inbounds i8, ptr %0, i64 384
  store i32 -1, ptr %43, align 8, !tbaa !28
  br label %243

.lr.ph618:                                        ; preds = %.preheader301
  %44 = add nuw nsw i32 %3, 1
  %45 = zext nneg i32 %34 to i64
  %46 = zext nneg i32 %3 to i64
  br label %61

47:                                               ; preds = %39
  %48 = icmp sgt i32 %41, -1
  %49 = icmp slt i32 %41, %3
  %or.cond278 = select i1 %48, i1 %49, i1 false
  br i1 %or.cond278, label %51, label %50

50:                                               ; preds = %47
  tail call void @__assert_fail(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, i32 noundef 76, ptr noundef nonnull @__PRETTY_FUNCTION__.lu_markowitz) #5
  unreachable

51:                                               ; preds = %47
  %52 = zext nneg i32 %41 to i64
  %53 = getelementptr inbounds i32, ptr %7, i64 %52
  %54 = load i32, ptr %53, align 4, !tbaa !26
  %55 = getelementptr inbounds i32, ptr %5, i64 %52
  %56 = load i32, ptr %55, align 4, !tbaa !26
  %57 = icmp eq i32 %54, %56
  br i1 %57, label %.thread295, label %60

.thread295:                                       ; preds = %51
  %58 = getelementptr inbounds i8, ptr %0, i64 380
  store i32 -1, ptr %58, align 4, !tbaa !27
  %59 = getelementptr inbounds i8, ptr %0, i64 384
  store i32 %41, ptr %59, align 8, !tbaa !28
  br label %243

60:                                               ; preds = %51
  tail call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 77, ptr noundef nonnull @__PRETTY_FUNCTION__.lu_markowitz) #5
  unreachable

61:                                               ; preds = %.lr.ph618, %229
  %indvars.iv756 = phi i64 [ %45, %.lr.ph618 ], [ %indvars.iv.next757, %229 ]
  %.0617 = phi i64 [ %36, %.lr.ph618 ], [ %.8, %229 ]
  %.0203616 = phi i32 [ -1, %.lr.ph618 ], [ %.3206, %229 ]
  %.0208615 = phi i32 [ -1, %.lr.ph618 ], [ %.1209.lcssa, %229 ]
  %.0216614 = phi i32 [ 0, %.lr.ph618 ], [ %.5221, %229 ]
  %.0223613 = phi i32 [ -1, %.lr.ph618 ], [ %.8231, %229 ]
  %.0232612 = phi i32 [ -1, %.lr.ph618 ], [ %.8240, %229 ]
  %62 = add nuw nsw i64 %indvars.iv756, %46
  %.0202.in558 = getelementptr inbounds i32, ptr %13, i64 %62
  %.0202559 = load i32, ptr %.0202.in558, align 4, !tbaa !26
  %63 = icmp slt i32 %.0202559, %3
  br i1 %63, label %.lr.ph568, label %._crit_edge569

.lr.ph568:                                        ; preds = %61
  %64 = add nsw i64 %indvars.iv756, -1
  %65 = mul nuw nsw i64 %64, %64
  %66 = trunc nuw i64 %indvars.iv756 to i32
  br label %67

67:                                               ; preds = %.lr.ph568, %144
  %.0202566 = phi i32 [ %.0202559, %.lr.ph568 ], [ %.0202, %144 ]
  %.1565 = phi i64 [ %.0617, %.lr.ph568 ], [ %.4, %144 ]
  %.1209564 = phi i32 [ %.0208615, %.lr.ph568 ], [ %spec.select, %144 ]
  %.1217562 = phi i32 [ %.0216614, %.lr.ph568 ], [ %.2218, %144 ]
  %.1224561 = phi i32 [ %.0223613, %.lr.ph568 ], [ %.4227, %144 ]
  %.1233560 = phi i32 [ %.0232612, %.lr.ph568 ], [ %.4236, %144 ]
  %68 = icmp eq i32 %.1209564, -1
  %spec.select = select i1 %68, i32 %66, i32 %.1209564
  %69 = sext i32 %.0202566 to i64
  %70 = getelementptr inbounds i32, ptr %7, i64 %69
  %71 = load i32, ptr %70, align 4, !tbaa !26
  %72 = getelementptr inbounds i32, ptr %5, i64 %69
  %73 = load i32, ptr %72, align 4, !tbaa !26
  %74 = sub nsw i32 %71, %73
  %75 = zext i32 %74 to i64
  %76 = icmp eq i64 %indvars.iv756, %75
  br i1 %76, label %78, label %77

77:                                               ; preds = %67
  tail call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.1, i32 noundef 88, ptr noundef nonnull @__PRETTY_FUNCTION__.lu_markowitz) #5
  unreachable

78:                                               ; preds = %67
  %79 = getelementptr inbounds double, ptr %19, i64 %69
  %80 = load double, ptr %79, align 8, !tbaa !29
  %81 = fcmp ult double %80, 0.000000e+00
  br i1 %81, label %82, label %83

82:                                               ; preds = %78
  tail call void @__assert_fail(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.1, i32 noundef 90, ptr noundef nonnull @__PRETTY_FUNCTION__.lu_markowitz) #5
  unreachable

83:                                               ; preds = %78
  %84 = fcmp oeq double %80, 0.000000e+00
  %85 = fcmp olt double %80, %21
  %or.cond279 = select i1 %84, i1 true, i1 %85
  br i1 %or.cond279, label %144, label %86

86:                                               ; preds = %83
  %87 = fmul double %23, %80
  %88 = tail call double @llvm.maxnum.f64(double %21, double %87)
  %89 = icmp slt i32 %73, %71
  br i1 %89, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %86
  %90 = sext i32 %73 to i64
  br i1 %.not, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph, %114
  %indvars.iv742 = phi i64 [ %indvars.iv.next743, %114 ], [ %90, %.lr.ph ]
  %.2551.us = phi i64 [ %.3.us, %114 ], [ %.1565, %.lr.ph ]
  %.2225550.us = phi i32 [ %.3226.us, %114 ], [ %.1224561, %.lr.ph ]
  %.2234549.us = phi i32 [ %.3235.us, %114 ], [ %.1233560, %.lr.ph ]
  %91 = getelementptr inbounds double, ptr %11, i64 %indvars.iv742
  %92 = load double, ptr %91, align 8, !tbaa !29
  %93 = fcmp oeq double %92, 0.000000e+00
  %94 = tail call double @llvm.fabs.f64(double %92)
  %95 = fcmp olt double %94, %88
  %or.cond281.us = select i1 %93, i1 true, i1 %95
  br i1 %or.cond281.us, label %114, label %96

96:                                               ; preds = %.lr.ph.split.us
  %97 = getelementptr inbounds i32, ptr %9, i64 %indvars.iv742
  %98 = load i32, ptr %97, align 4, !tbaa !26
  %99 = icmp sgt i32 %98, -1
  %100 = icmp slt i32 %98, %3
  %or.cond282.us = select i1 %99, i1 %100, i1 false
  br i1 %or.cond282.us, label %101, label %.split.us

101:                                              ; preds = %96
  %102 = add nuw nsw i32 %98, %3
  %103 = zext nneg i32 %102 to i64
  %104 = getelementptr inbounds i32, ptr %7, i64 %103
  %105 = load i32, ptr %104, align 4, !tbaa !26
  %106 = getelementptr inbounds i32, ptr %5, i64 %103
  %107 = load i32, ptr %106, align 4, !tbaa !26
  %108 = sub nsw i32 %105, %107
  %109 = icmp sgt i32 %108, 0
  br i1 %109, label %110, label %.split555.us

110:                                              ; preds = %101
  %111 = zext nneg i32 %108 to i64
  %112 = add nsw i64 %111, -1
  %113 = mul nuw nsw i64 %112, %64
  %.not625 = icmp slt i64 %113, %.2551.us
  %.2234.mux.us = select i1 %.not625, i32 %98, i32 %.2234549.us
  %.2225.mux.us = select i1 %.not625, i32 %.0202566, i32 %.2225550.us
  %.2.mux.us = tail call i64 @llvm.smin.i64(i64 %113, i64 %.2551.us)
  br label %114

114:                                              ; preds = %110, %.lr.ph.split.us
  %.3235.us = phi i32 [ %.2234.mux.us, %110 ], [ %.2234549.us, %.lr.ph.split.us ]
  %.3226.us = phi i32 [ %.2225.mux.us, %110 ], [ %.2225550.us, %.lr.ph.split.us ]
  %.3.us = phi i64 [ %.2.mux.us, %110 ], [ %.2551.us, %.lr.ph.split.us ]
  %indvars.iv.next743 = add nsw i64 %indvars.iv742, 1
  %lftr.wideiv745 = trunc i64 %indvars.iv.next743 to i32
  %exitcond746.not = icmp eq i32 %71, %lftr.wideiv745
  br i1 %exitcond746.not, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !30

.lr.ph.split:                                     ; preds = %.lr.ph, %139
  %indvars.iv = phi i64 [ %indvars.iv.next, %139 ], [ %90, %.lr.ph ]
  %.2551 = phi i64 [ %.3, %139 ], [ %.1565, %.lr.ph ]
  %.2225550 = phi i32 [ %.3226, %139 ], [ %.1224561, %.lr.ph ]
  %.2234549 = phi i32 [ %.3235, %139 ], [ %.1233560, %.lr.ph ]
  %115 = getelementptr inbounds double, ptr %11, i64 %indvars.iv
  %116 = load double, ptr %115, align 8, !tbaa !29
  %117 = fcmp oeq double %116, 0.000000e+00
  %118 = tail call double @llvm.fabs.f64(double %116)
  %119 = fcmp olt double %118, %88
  %or.cond281 = select i1 %117, i1 true, i1 %119
  br i1 %or.cond281, label %139, label %120

120:                                              ; preds = %.lr.ph.split
  %121 = getelementptr inbounds i32, ptr %9, i64 %indvars.iv
  %122 = load i32, ptr %121, align 4, !tbaa !26
  %123 = icmp sgt i32 %122, -1
  %124 = icmp slt i32 %122, %3
  %or.cond282 = select i1 %123, i1 %124, i1 false
  br i1 %or.cond282, label %125, label %.split.us

.split.us:                                        ; preds = %120, %96
  tail call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, i32 noundef 100, ptr noundef nonnull @__PRETTY_FUNCTION__.lu_markowitz) #5
  unreachable

125:                                              ; preds = %120
  %126 = add nuw nsw i32 %122, %3
  %127 = zext nneg i32 %126 to i64
  %128 = getelementptr inbounds i32, ptr %7, i64 %127
  %129 = load i32, ptr %128, align 4, !tbaa !26
  %130 = getelementptr inbounds i32, ptr %5, i64 %127
  %131 = load i32, ptr %130, align 4, !tbaa !26
  %132 = sub nsw i32 %129, %131
  %133 = icmp sgt i32 %132, 0
  br i1 %133, label %134, label %.split555.us

.split555.us:                                     ; preds = %125, %101
  tail call void @__assert_fail(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 103, ptr noundef nonnull @__PRETTY_FUNCTION__.lu_markowitz) #5
  unreachable

134:                                              ; preds = %125
  %135 = zext nneg i32 %132 to i64
  %136 = add nsw i64 %135, -1
  %137 = mul nuw nsw i64 %136, %64
  %.not624 = icmp slt i64 %137, %.2551
  %.2.mux = tail call i64 @llvm.smin.i64(i64 %137, i64 %.2551)
  br i1 %.not624, label %138, label %139

138:                                              ; preds = %134
  %.not277 = icmp sgt i64 %137, %65
  br i1 %.not277, label %139, label %.loopexit

139:                                              ; preds = %134, %138, %.lr.ph.split
  %.3235 = phi i32 [ %122, %138 ], [ %.2234549, %134 ], [ %.2234549, %.lr.ph.split ]
  %.3226 = phi i32 [ %.0202566, %138 ], [ %.2225550, %134 ], [ %.2225550, %.lr.ph.split ]
  %.3 = phi i64 [ %137, %138 ], [ %.2.mux, %134 ], [ %.2551, %.lr.ph.split ]
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next to i32
  %exitcond.not = icmp eq i32 %71, %lftr.wideiv
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !30

._crit_edge:                                      ; preds = %139, %114, %86
  %.2234.lcssa = phi i32 [ %.1233560, %86 ], [ %.3235.us, %114 ], [ %.3235, %139 ]
  %.2225.lcssa = phi i32 [ %.1224561, %86 ], [ %.3226.us, %114 ], [ %.3226, %139 ]
  %.2.lcssa = phi i64 [ %.1565, %86 ], [ %.3.us, %114 ], [ %.3, %139 ]
  %140 = icmp slt i64 %.2.lcssa, %36
  br i1 %140, label %142, label %141

141:                                              ; preds = %._crit_edge
  tail call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 115, ptr noundef nonnull @__PRETTY_FUNCTION__.lu_markowitz) #5
  unreachable

142:                                              ; preds = %._crit_edge
  %143 = add nsw i32 %.1217562, 1
  %.not276 = icmp slt i32 %143, %25
  br i1 %.not276, label %144, label %.loopexit

144:                                              ; preds = %142, %83
  %.4236 = phi i32 [ %.2234.lcssa, %142 ], [ %.1233560, %83 ]
  %.4227 = phi i32 [ %.2225.lcssa, %142 ], [ %.1224561, %83 ]
  %.2218 = phi i32 [ %143, %142 ], [ %.1217562, %83 ]
  %.4 = phi i64 [ %.2.lcssa, %142 ], [ %.1565, %83 ]
  %.0202.in = getelementptr inbounds i32, ptr %13, i64 %69
  %.0202 = load i32, ptr %.0202.in, align 4, !tbaa !26
  %145 = icmp slt i32 %.0202, %3
  br i1 %145, label %67, label %._crit_edge569, !llvm.loop !32

._crit_edge569:                                   ; preds = %144, %61
  %.1233.lcssa = phi i32 [ %.0232612, %61 ], [ %.4236, %144 ]
  %.1224.lcssa = phi i32 [ %.0223613, %61 ], [ %.4227, %144 ]
  %.1217.lcssa = phi i32 [ %.0216614, %61 ], [ %.2218, %144 ]
  %.1209.lcssa = phi i32 [ %.0208615, %61 ], [ %spec.select, %144 ]
  %.1.lcssa = phi i64 [ %.0617, %61 ], [ %.4, %144 ]
  %.0202.lcssa = phi i32 [ %.0202559, %61 ], [ %.0202, %144 ]
  %146 = zext i32 %.0202.lcssa to i64
  %147 = icmp eq i64 %62, %146
  br i1 %147, label %149, label %148

148:                                              ; preds = %._crit_edge569
  tail call void @__assert_fail(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 119, ptr noundef nonnull @__PRETTY_FUNCTION__.lu_markowitz) #5
  unreachable

149:                                              ; preds = %._crit_edge569
  br i1 %.not, label %229, label %150

150:                                              ; preds = %149
  %151 = getelementptr inbounds i32, ptr %15, i64 %62
  %152 = load i32, ptr %151, align 4, !tbaa !26
  %153 = icmp slt i32 %152, %3
  br i1 %153, label %.lr.ph601, label %._crit_edge602

.lr.ph601:                                        ; preds = %150
  %154 = add nsw i64 %indvars.iv756, -1
  %155 = mul nsw i64 %154, %indvars.iv756
  %156 = trunc nuw i64 %indvars.iv756 to i32
  br label %157

157:                                              ; preds = %.lr.ph601, %224
  %.5599 = phi i64 [ %.1.lcssa, %.lr.ph601 ], [ %.6.lcssa770, %224 ]
  %.0201598 = phi i32 [ %152, %.lr.ph601 ], [ %161, %224 ]
  %.1204597 = phi i32 [ %.0203616, %.lr.ph601 ], [ %spec.select284, %224 ]
  %.3219596 = phi i32 [ %.1217.lcssa, %.lr.ph601 ], [ %.4220, %224 ]
  %.5228595 = phi i32 [ %.1224.lcssa, %.lr.ph601 ], [ %.6229.lcssa767, %224 ]
  %.5237594 = phi i32 [ %.1233.lcssa, %.lr.ph601 ], [ %.6238.lcssa765, %224 ]
  %158 = icmp eq i32 %.1204597, -1
  %spec.select284 = select i1 %158, i32 %156, i32 %.1204597
  %159 = sext i32 %.0201598 to i64
  %160 = getelementptr inbounds i32, ptr %15, i64 %159
  %161 = load i32, ptr %160, align 4, !tbaa !26
  %162 = add nsw i32 %.0201598, %3
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds i32, ptr %7, i64 %163
  %165 = load i32, ptr %164, align 4, !tbaa !26
  %166 = getelementptr inbounds i32, ptr %5, i64 %163
  %167 = load i32, ptr %166, align 4, !tbaa !26
  %168 = sub nsw i32 %165, %167
  %169 = zext i32 %168 to i64
  %170 = icmp eq i64 %indvars.iv756, %169
  br i1 %170, label %.preheader297, label %173

.preheader297:                                    ; preds = %157
  %171 = icmp slt i32 %167, %165
  br i1 %171, label %.lr.ph587.preheader, label %._crit_edge588.thread

.lr.ph587.preheader:                              ; preds = %.preheader297
  %172 = sext i32 %167 to i64
  br label %.lr.ph587

173:                                              ; preds = %157
  tail call void @__assert_fail(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 131, ptr noundef nonnull @__PRETTY_FUNCTION__.lu_markowitz) #5
  unreachable

.lr.ph587:                                        ; preds = %.lr.ph587.preheader, %216
  %indvars.iv751 = phi i64 [ %172, %.lr.ph587.preheader ], [ %indvars.iv.next752, %216 ]
  %.6586 = phi i64 [ %.5599, %.lr.ph587.preheader ], [ %.7, %216 ]
  %.0212585 = phi i32 [ 0, %.lr.ph587.preheader ], [ %.1213, %216 ]
  %.0214584 = phi i32 [ 0, %.lr.ph587.preheader ], [ %.1215, %216 ]
  %.6229583 = phi i32 [ %.5228595, %.lr.ph587.preheader ], [ %.7230, %216 ]
  %.6238582 = phi i32 [ %.5237594, %.lr.ph587.preheader ], [ %.7239, %216 ]
  %174 = getelementptr inbounds i32, ptr %9, i64 %indvars.iv751
  %175 = load i32, ptr %174, align 4, !tbaa !26
  %176 = icmp sgt i32 %175, -1
  %177 = icmp slt i32 %175, %3
  %or.cond285 = select i1 %176, i1 %177, i1 false
  br i1 %or.cond285, label %179, label %178

178:                                              ; preds = %.lr.ph587
  tail call void @__assert_fail(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 137, ptr noundef nonnull @__PRETTY_FUNCTION__.lu_markowitz) #5
  unreachable

179:                                              ; preds = %.lr.ph587
  %180 = zext nneg i32 %175 to i64
  %181 = getelementptr inbounds i32, ptr %7, i64 %180
  %182 = load i32, ptr %181, align 4, !tbaa !26
  %183 = getelementptr inbounds i32, ptr %5, i64 %180
  %184 = load i32, ptr %183, align 4, !tbaa !26
  %185 = sub nsw i32 %182, %184
  %186 = icmp sgt i32 %185, 0
  br i1 %186, label %188, label %187

187:                                              ; preds = %179
  tail call void @__assert_fail(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 140, ptr noundef nonnull @__PRETTY_FUNCTION__.lu_markowitz) #5
  unreachable

188:                                              ; preds = %179
  %189 = zext nneg i32 %185 to i64
  %190 = add nsw i64 %189, -1
  %191 = mul nuw nsw i64 %190, %154
  %.not273 = icmp slt i64 %191, %.6586
  br i1 %.not273, label %192, label %216

192:                                              ; preds = %188
  %193 = getelementptr inbounds double, ptr %19, i64 %180
  %194 = load double, ptr %193, align 8, !tbaa !29
  %195 = fcmp ult double %194, 0.000000e+00
  br i1 %195, label %196, label %197

196:                                              ; preds = %192
  tail call void @__assert_fail(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.1, i32 noundef 146, ptr noundef nonnull @__PRETTY_FUNCTION__.lu_markowitz) #5
  unreachable

197:                                              ; preds = %192
  %198 = fcmp oeq double %194, 0.000000e+00
  %199 = fcmp olt double %194, %21
  %or.cond286 = select i1 %198, i1 true, i1 %199
  br i1 %or.cond286, label %216, label %.preheader

.preheader:                                       ; preds = %197
  %200 = sext i32 %184 to i64
  %201 = getelementptr inbounds i32, ptr %9, i64 %200
  %202 = load i32, ptr %201, align 4, !tbaa !26
  %.not274576 = icmp eq i32 %202, %.0201598
  br i1 %.not274576, label %._crit_edge579, label %.lr.ph578

.lr.ph578:                                        ; preds = %.preheader
  %203 = add nsw i32 %182, -1
  %smax = tail call i32 @llvm.smax.i32(i32 %184, i32 %203)
  %wide.trip.count = sext i32 %smax to i64
  br label %207

204:                                              ; preds = %207
  %indvars.iv.next748 = add nsw i64 %indvars.iv747, 1
  %205 = getelementptr inbounds i32, ptr %9, i64 %indvars.iv.next748
  %206 = load i32, ptr %205, align 4, !tbaa !26
  %.not274 = icmp eq i32 %206, %.0201598
  br i1 %.not274, label %._crit_edge579, label %207, !llvm.loop !33

207:                                              ; preds = %.lr.ph578, %204
  %indvars.iv747 = phi i64 [ %200, %.lr.ph578 ], [ %indvars.iv.next748, %204 ]
  %exitcond750.not = icmp eq i64 %indvars.iv747, %wide.trip.count
  br i1 %exitcond750.not, label %208, label %204

208:                                              ; preds = %207
  tail call void @__assert_fail(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 151, ptr noundef nonnull @__PRETTY_FUNCTION__.lu_markowitz) #5
  unreachable

._crit_edge579:                                   ; preds = %204, %.preheader
  %.lcssa373 = phi i64 [ %200, %.preheader ], [ %indvars.iv.next748, %204 ]
  %209 = getelementptr inbounds double, ptr %11, i64 %.lcssa373
  %210 = load double, ptr %209, align 8, !tbaa !29
  %211 = tail call double @llvm.fabs.f64(double %210)
  %212 = fcmp ult double %211, %21
  %213 = fmul double %23, %194
  %214 = fcmp ult double %211, %213
  %or.cond288 = select i1 %212, i1 true, i1 %214
  br i1 %or.cond288, label %216, label %215

215:                                              ; preds = %._crit_edge579
  %.not275 = icmp sgt i64 %191, %155
  br i1 %.not275, label %216, label %.loopexit

216:                                              ; preds = %._crit_edge579, %215, %197, %188
  %.7239 = phi i32 [ %.6238582, %188 ], [ %.0201598, %215 ], [ %.6238582, %._crit_edge579 ], [ %.6238582, %197 ]
  %.7230 = phi i32 [ %.6229583, %188 ], [ %175, %215 ], [ %.6229583, %._crit_edge579 ], [ %.6229583, %197 ]
  %.1215 = phi i32 [ %.0214584, %188 ], [ 1, %215 ], [ 1, %._crit_edge579 ], [ 1, %197 ]
  %.1213 = phi i32 [ %.0212585, %188 ], [ 1, %215 ], [ %.0212585, %._crit_edge579 ], [ %.0212585, %197 ]
  %.7 = phi i64 [ %.6586, %188 ], [ %191, %215 ], [ %.6586, %._crit_edge579 ], [ %.6586, %197 ]
  %indvars.iv.next752 = add nsw i64 %indvars.iv751, 1
  %lftr.wideiv754 = trunc i64 %indvars.iv.next752 to i32
  %exitcond755.not = icmp eq i32 %165, %lftr.wideiv754
  br i1 %exitcond755.not, label %._crit_edge588, label %.lr.ph587, !llvm.loop !34

._crit_edge588:                                   ; preds = %216
  %217 = icmp eq i32 %.1215, 0
  %218 = icmp ne i32 %.1213, 0
  %or.cond = select i1 %217, i1 true, i1 %218
  br i1 %or.cond, label %._crit_edge588.thread, label %219

219:                                              ; preds = %._crit_edge588
  tail call void @lu_list_move(i32 noundef %.0201598, i32 noundef %44, ptr noundef %15, ptr noundef %17, i32 noundef %3, ptr noundef null)
  br label %224

._crit_edge588.thread:                            ; preds = %.preheader297, %._crit_edge588
  %.6.lcssa769 = phi i64 [ %.7, %._crit_edge588 ], [ %.5599, %.preheader297 ]
  %.6229.lcssa768 = phi i32 [ %.7230, %._crit_edge588 ], [ %.5228595, %.preheader297 ]
  %.6238.lcssa766 = phi i32 [ %.7239, %._crit_edge588 ], [ %.5237594, %.preheader297 ]
  %220 = icmp slt i64 %.6.lcssa769, %36
  br i1 %220, label %222, label %221

221:                                              ; preds = %._crit_edge588.thread
  tail call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 171, ptr noundef nonnull @__PRETTY_FUNCTION__.lu_markowitz) #5
  unreachable

222:                                              ; preds = %._crit_edge588.thread
  %223 = add nsw i32 %.3219596, 1
  %.not272 = icmp slt i32 %223, %25
  br i1 %.not272, label %224, label %.loopexit

224:                                              ; preds = %219, %222
  %.6.lcssa770 = phi i64 [ %.6.lcssa769, %222 ], [ %.7, %219 ]
  %.6229.lcssa767 = phi i32 [ %.6229.lcssa768, %222 ], [ %.7230, %219 ]
  %.6238.lcssa765 = phi i32 [ %.6238.lcssa766, %222 ], [ %.7239, %219 ]
  %.4220 = phi i32 [ %223, %222 ], [ %.3219596, %219 ]
  %225 = icmp slt i32 %161, %3
  br i1 %225, label %157, label %._crit_edge602, !llvm.loop !35

._crit_edge602:                                   ; preds = %224, %150
  %.5237.lcssa = phi i32 [ %.1233.lcssa, %150 ], [ %.6238.lcssa765, %224 ]
  %.5228.lcssa = phi i32 [ %.1224.lcssa, %150 ], [ %.6229.lcssa767, %224 ]
  %.3219.lcssa = phi i32 [ %.1217.lcssa, %150 ], [ %.4220, %224 ]
  %.1204.lcssa = phi i32 [ %.0203616, %150 ], [ %spec.select284, %224 ]
  %.0201.lcssa = phi i32 [ %152, %150 ], [ %161, %224 ]
  %.5.lcssa = phi i64 [ %.1.lcssa, %150 ], [ %.6.lcssa770, %224 ]
  %226 = zext i32 %.0201.lcssa to i64
  %227 = icmp eq i64 %62, %226
  br i1 %227, label %229, label %228

228:                                              ; preds = %._crit_edge602
  tail call void @__assert_fail(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 176, ptr noundef nonnull @__PRETTY_FUNCTION__.lu_markowitz) #5
  unreachable

229:                                              ; preds = %._crit_edge602, %149
  %.8240 = phi i32 [ %.5237.lcssa, %._crit_edge602 ], [ %.1233.lcssa, %149 ]
  %.8231 = phi i32 [ %.5228.lcssa, %._crit_edge602 ], [ %.1224.lcssa, %149 ]
  %.5221 = phi i32 [ %.3219.lcssa, %._crit_edge602 ], [ %.1217.lcssa, %149 ]
  %.3206 = phi i32 [ %.1204.lcssa, %._crit_edge602 ], [ %.0203616, %149 ]
  %.8 = phi i64 [ %.5.lcssa, %._crit_edge602 ], [ %.1.lcssa, %149 ]
  %indvars.iv.next757 = add nuw nsw i64 %indvars.iv756, 1
  %230 = trunc nuw i64 %indvars.iv756 to i32
  %.not271.not = icmp sgt i32 %3, %230
  br i1 %.not271.not, label %61, label %.loopexit, !llvm.loop !36

.loopexit:                                        ; preds = %229, %142, %222, %138, %215
  %.9241 = phi i32 [ %.0201598, %215 ], [ %122, %138 ], [ %.6238.lcssa766, %222 ], [ %.2234.lcssa, %142 ], [ %.8240, %229 ]
  %.9 = phi i32 [ %175, %215 ], [ %.0202566, %138 ], [ %.6229.lcssa768, %222 ], [ %.2225.lcssa, %142 ], [ %.8231, %229 ]
  %.6222 = phi i32 [ %.3219596, %215 ], [ %.1217562, %138 ], [ %223, %222 ], [ %143, %142 ], [ %.5221, %229 ]
  %.3211 = phi i32 [ %.1209.lcssa, %215 ], [ %spec.select, %138 ], [ %.1209.lcssa, %222 ], [ %spec.select, %142 ], [ %.1209.lcssa, %229 ]
  %.4207 = phi i32 [ %spec.select284, %215 ], [ %.0203616, %138 ], [ %spec.select284, %222 ], [ %.0203616, %142 ], [ %.3206, %229 ]
  %231 = getelementptr inbounds i8, ptr %0, i64 380
  store i32 %.9241, ptr %231, align 4, !tbaa !27
  %232 = getelementptr inbounds i8, ptr %0, i64 384
  store i32 %.9, ptr %232, align 8, !tbaa !28
  %233 = getelementptr inbounds i8, ptr %0, i64 328
  %234 = load i32, ptr %233, align 8, !tbaa !37
  %235 = add nsw i32 %234, %.6222
  store i32 %235, ptr %233, align 8, !tbaa !37
  %236 = icmp sgt i32 %.3211, -1
  br i1 %236, label %237, label %239

237:                                              ; preds = %.loopexit
  %238 = getelementptr inbounds i8, ptr %0, i64 408
  store i32 %.3211, ptr %238, align 8, !tbaa !24
  br label %239

239:                                              ; preds = %237, %.loopexit
  %240 = icmp sgt i32 %.4207, -1
  br i1 %240, label %241, label %243

241:                                              ; preds = %239
  %242 = getelementptr inbounds i8, ptr %0, i64 412
  store i32 %.4207, ptr %242, align 4, !tbaa !25
  br label %243

243:                                              ; preds = %.thread, %.thread295, %241, %239
  ret i32 0
}

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.maxnum.f64(double, double) #2

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @lu_list_move(i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #3

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { inlinehint 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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { noreturn 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, !7, i64 84}
!6 = !{!"lu", !7, i64 0, !7, i64 4, !7, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !7, i64 40, !7, i64 44, !7, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !10, i64 200, !10, i64 208, !10, i64 216, !7, i64 224, !7, i64 228, !7, i64 232, !10, i64 240, !10, i64 248, !10, i64 256, !10, i64 264, !10, i64 272, !10, i64 280, !10, i64 288, !10, i64 296, !10, i64 304, !7, i64 312, !7, i64 316, !7, i64 320, !7, i64 324, !7, i64 328, !7, i64 332, !7, i64 336, !7, i64 340, !10, i64 344, !10, i64 352, !10, i64 360, !10, i64 368, !7, i64 376, !7, i64 380, !7, i64 384, !7, i64 388, !7, i64 392, !7, i64 396, !7, i64 400, !7, i64 404, !7, i64 408, !7, i64 412, !11, i64 416, !11, i64 424, !11, i64 432, !11, i64 440, !11, i64 448, !11, i64 456, !11, i64 464, !11, i64 472, !11, i64 480, !11, i64 488, !11, i64 496, !11, i64 504, !11, i64 512, !11, i64 520, !11, i64 528, !11, i64 536, !11, i64 544, !11, i64 552, !11, i64 560, !11, i64 568, !11, i64 576, !11, i64 584, !11, i64 592, !11, i64 600, !11, i64 608, !11, i64 616, !11, i64 624, !11, i64 632, !11, i64 640, !11, i64 648, !11, i64 656, !11, i64 664, !11, i64 672, !11, i64 680, !11, i64 688}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"double", !8, i64 0}
!11 = !{!"any pointer", !8, i64 0}
!12 = !{!6, !11, i64 536}
!13 = !{!6, !11, i64 552}
!14 = !{!6, !11, i64 432}
!15 = !{!6, !11, i64 456}
!16 = !{!6, !11, i64 464}
!17 = !{!6, !11, i64 496}
!18 = !{!6, !11, i64 520}
!19 = !{!6, !11, i64 680}
!20 = !{!6, !10, i64 24}
!21 = !{!6, !10, i64 32}
!22 = !{!6, !7, i64 44}
!23 = !{!6, !7, i64 80}
!24 = !{!6, !7, i64 408}
!25 = !{!6, !7, i64 412}
!26 = !{!7, !7, i64 0}
!27 = !{!6, !7, i64 380}
!28 = !{!6, !7, i64 384}
!29 = !{!10, !10, i64 0}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = distinct !{!32, !31}
!33 = distinct !{!33, !31}
!34 = distinct !{!34, !31}
!35 = distinct !{!35, !31}
!36 = distinct !{!36, !31}
!37 = !{!6, !7, i64 328}


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