; LLVM IR from sourceryinstitute/MORFEUS-Source :: src/FV/src/mesh_optimize/OptMS (SMinit)

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

@.str.1 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [11 x i8], align 1

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

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #1

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

; Function Attrs: nounwind uwtable
define dso_local i32 @SMmallocLP(i32 noundef %0, i32 noundef %1, ptr noundef %2) #3 {
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  store i32 %0, ptr %5, align 4, !tbaa !5
  store i32 %1, ptr %6, align 4, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  %11 = call noalias ptr @malloc(i64 noundef 128) #5
  %12 = load ptr, ptr %7, align 8, !tbaa !9
  store ptr %11, ptr %12, align 8, !tbaa !9
  %13 = load ptr, ptr %7, align 8, !tbaa !9
  %14 = load ptr, ptr %13, align 8, !tbaa !9
  %15 = icmp eq ptr %14, null
  br i1 %15, label %16, label %18

16:                                               ; preds = %3
  %17 = call i32 @SMerror(i32 noundef 116, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %17, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

18:                                               ; preds = %3
  %19 = load i32, ptr %5, align 4, !tbaa !5
  %20 = sext i32 %19 to i64
  %21 = mul i64 4, %20
  %22 = icmp eq i64 %21, 0
  br i1 %22, label %23, label %27

23:                                               ; preds = %18
  %24 = load ptr, ptr %7, align 8, !tbaa !9
  %25 = load ptr, ptr %24, align 8, !tbaa !9
  %26 = getelementptr inbounds %struct.__SMlp, ptr %25, i32 0, i32 5
  store ptr null, ptr %26, align 8, !tbaa !11
  br label %43

27:                                               ; preds = %18
  %28 = load i32, ptr %5, align 4, !tbaa !5
  %29 = sext i32 %28 to i64
  %30 = mul i64 4, %29
  %31 = call noalias ptr @malloc(i64 noundef %30) #5
  %32 = load ptr, ptr %7, align 8, !tbaa !9
  %33 = load ptr, ptr %32, align 8, !tbaa !9
  %34 = getelementptr inbounds %struct.__SMlp, ptr %33, i32 0, i32 5
  store ptr %31, ptr %34, align 8, !tbaa !11
  %35 = load ptr, ptr %7, align 8, !tbaa !9
  %36 = load ptr, ptr %35, align 8, !tbaa !9
  %37 = getelementptr inbounds %struct.__SMlp, ptr %36, i32 0, i32 5
  %38 = load ptr, ptr %37, align 8, !tbaa !11
  %39 = icmp eq ptr %38, null
  br i1 %39, label %40, label %42

40:                                               ; preds = %27
  %41 = call i32 @SMerror(i32 noundef 118, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %41, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

42:                                               ; preds = %27
  br label %43

43:                                               ; preds = %42, %23
  %44 = load i32, ptr %6, align 4, !tbaa !5
  %45 = sext i32 %44 to i64
  %46 = mul i64 8, %45
  %47 = icmp eq i64 %46, 0
  br i1 %47, label %48, label %52

48:                                               ; preds = %43
  %49 = load ptr, ptr %7, align 8, !tbaa !9
  %50 = load ptr, ptr %49, align 8, !tbaa !9
  %51 = getelementptr inbounds %struct.__SMlp, ptr %50, i32 0, i32 0
  store ptr null, ptr %51, align 8, !tbaa !13
  br label %68

52:                                               ; preds = %43
  %53 = load i32, ptr %6, align 4, !tbaa !5
  %54 = sext i32 %53 to i64
  %55 = mul i64 8, %54
  %56 = call noalias ptr @malloc(i64 noundef %55) #5
  %57 = load ptr, ptr %7, align 8, !tbaa !9
  %58 = load ptr, ptr %57, align 8, !tbaa !9
  %59 = getelementptr inbounds %struct.__SMlp, ptr %58, i32 0, i32 0
  store ptr %56, ptr %59, align 8, !tbaa !13
  %60 = load ptr, ptr %7, align 8, !tbaa !9
  %61 = load ptr, ptr %60, align 8, !tbaa !9
  %62 = getelementptr inbounds %struct.__SMlp, ptr %61, i32 0, i32 0
  %63 = load ptr, ptr %62, align 8, !tbaa !13
  %64 = icmp eq ptr %63, null
  br i1 %64, label %65, label %67

65:                                               ; preds = %52
  %66 = call i32 @SMerror(i32 noundef 119, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %66, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

67:                                               ; preds = %52
  br label %68

68:                                               ; preds = %67, %48
  %69 = load i32, ptr %5, align 4, !tbaa !5
  %70 = sext i32 %69 to i64
  %71 = mul i64 8, %70
  %72 = icmp eq i64 %71, 0
  br i1 %72, label %73, label %77

73:                                               ; preds = %68
  %74 = load ptr, ptr %7, align 8, !tbaa !9
  %75 = load ptr, ptr %74, align 8, !tbaa !9
  %76 = getelementptr inbounds %struct.__SMlp, ptr %75, i32 0, i32 1
  store ptr null, ptr %76, align 8, !tbaa !14
  br label %93

77:                                               ; preds = %68
  %78 = load i32, ptr %5, align 4, !tbaa !5
  %79 = sext i32 %78 to i64
  %80 = mul i64 8, %79
  %81 = call noalias ptr @malloc(i64 noundef %80) #5
  %82 = load ptr, ptr %7, align 8, !tbaa !9
  %83 = load ptr, ptr %82, align 8, !tbaa !9
  %84 = getelementptr inbounds %struct.__SMlp, ptr %83, i32 0, i32 1
  store ptr %81, ptr %84, align 8, !tbaa !14
  %85 = load ptr, ptr %7, align 8, !tbaa !9
  %86 = load ptr, ptr %85, align 8, !tbaa !9
  %87 = getelementptr inbounds %struct.__SMlp, ptr %86, i32 0, i32 1
  %88 = load ptr, ptr %87, align 8, !tbaa !14
  %89 = icmp eq ptr %88, null
  br i1 %89, label %90, label %92

90:                                               ; preds = %77
  %91 = call i32 @SMerror(i32 noundef 120, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %91, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

92:                                               ; preds = %77
  br label %93

93:                                               ; preds = %92, %73
  %94 = load i32, ptr %5, align 4, !tbaa !5
  %95 = sext i32 %94 to i64
  %96 = mul i64 8, %95
  %97 = icmp eq i64 %96, 0
  br i1 %97, label %98, label %102

98:                                               ; preds = %93
  %99 = load ptr, ptr %7, align 8, !tbaa !9
  %100 = load ptr, ptr %99, align 8, !tbaa !9
  %101 = getelementptr inbounds %struct.__SMlp, ptr %100, i32 0, i32 2
  store ptr null, ptr %101, align 8, !tbaa !15
  br label %118

102:                                              ; preds = %93
  %103 = load i32, ptr %5, align 4, !tbaa !5
  %104 = sext i32 %103 to i64
  %105 = mul i64 8, %104
  %106 = call noalias ptr @malloc(i64 noundef %105) #5
  %107 = load ptr, ptr %7, align 8, !tbaa !9
  %108 = load ptr, ptr %107, align 8, !tbaa !9
  %109 = getelementptr inbounds %struct.__SMlp, ptr %108, i32 0, i32 2
  store ptr %106, ptr %109, align 8, !tbaa !15
  %110 = load ptr, ptr %7, align 8, !tbaa !9
  %111 = load ptr, ptr %110, align 8, !tbaa !9
  %112 = getelementptr inbounds %struct.__SMlp, ptr %111, i32 0, i32 2
  %113 = load ptr, ptr %112, align 8, !tbaa !15
  %114 = icmp eq ptr %113, null
  br i1 %114, label %115, label %117

115:                                              ; preds = %102
  %116 = call i32 @SMerror(i32 noundef 121, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %116, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

117:                                              ; preds = %102
  br label %118

118:                                              ; preds = %117, %98
  %119 = load i32, ptr %6, align 4, !tbaa !5
  %120 = sext i32 %119 to i64
  %121 = mul i64 8, %120
  %122 = icmp eq i64 %121, 0
  br i1 %122, label %123, label %127

123:                                              ; preds = %118
  %124 = load ptr, ptr %7, align 8, !tbaa !9
  %125 = load ptr, ptr %124, align 8, !tbaa !9
  %126 = getelementptr inbounds %struct.__SMlp, ptr %125, i32 0, i32 3
  store ptr null, ptr %126, align 8, !tbaa !16
  br label %143

127:                                              ; preds = %118
  %128 = load i32, ptr %6, align 4, !tbaa !5
  %129 = sext i32 %128 to i64
  %130 = mul i64 8, %129
  %131 = call noalias ptr @malloc(i64 noundef %130) #5
  %132 = load ptr, ptr %7, align 8, !tbaa !9
  %133 = load ptr, ptr %132, align 8, !tbaa !9
  %134 = getelementptr inbounds %struct.__SMlp, ptr %133, i32 0, i32 3
  store ptr %131, ptr %134, align 8, !tbaa !16
  %135 = load ptr, ptr %7, align 8, !tbaa !9
  %136 = load ptr, ptr %135, align 8, !tbaa !9
  %137 = getelementptr inbounds %struct.__SMlp, ptr %136, i32 0, i32 3
  %138 = load ptr, ptr %137, align 8, !tbaa !16
  %139 = icmp eq ptr %138, null
  br i1 %139, label %140, label %142

140:                                              ; preds = %127
  %141 = call i32 @SMerror(i32 noundef 122, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %141, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

142:                                              ; preds = %127
  br label %143

143:                                              ; preds = %142, %123
  %144 = load i32, ptr %6, align 4, !tbaa !5
  %145 = sext i32 %144 to i64
  %146 = mul i64 4, %145
  %147 = icmp eq i64 %146, 0
  br i1 %147, label %148, label %152

148:                                              ; preds = %143
  %149 = load ptr, ptr %7, align 8, !tbaa !9
  %150 = load ptr, ptr %149, align 8, !tbaa !9
  %151 = getelementptr inbounds %struct.__SMlp, ptr %150, i32 0, i32 7
  store ptr null, ptr %151, align 8, !tbaa !17
  br label %168

152:                                              ; preds = %143
  %153 = load i32, ptr %6, align 4, !tbaa !5
  %154 = sext i32 %153 to i64
  %155 = mul i64 4, %154
  %156 = call noalias ptr @malloc(i64 noundef %155) #5
  %157 = load ptr, ptr %7, align 8, !tbaa !9
  %158 = load ptr, ptr %157, align 8, !tbaa !9
  %159 = getelementptr inbounds %struct.__SMlp, ptr %158, i32 0, i32 7
  store ptr %156, ptr %159, align 8, !tbaa !17
  %160 = load ptr, ptr %7, align 8, !tbaa !9
  %161 = load ptr, ptr %160, align 8, !tbaa !9
  %162 = getelementptr inbounds %struct.__SMlp, ptr %161, i32 0, i32 7
  %163 = load ptr, ptr %162, align 8, !tbaa !17
  %164 = icmp eq ptr %163, null
  br i1 %164, label %165, label %167

165:                                              ; preds = %152
  %166 = call i32 @SMerror(i32 noundef 123, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %166, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

167:                                              ; preds = %152
  br label %168

168:                                              ; preds = %167, %148
  %169 = load i32, ptr %5, align 4, !tbaa !5
  %170 = sext i32 %169 to i64
  %171 = mul i64 4, %170
  %172 = icmp eq i64 %171, 0
  br i1 %172, label %173, label %177

173:                                              ; preds = %168
  %174 = load ptr, ptr %7, align 8, !tbaa !9
  %175 = load ptr, ptr %174, align 8, !tbaa !9
  %176 = getelementptr inbounds %struct.__SMlp, ptr %175, i32 0, i32 6
  store ptr null, ptr %176, align 8, !tbaa !18
  br label %193

177:                                              ; preds = %168
  %178 = load i32, ptr %5, align 4, !tbaa !5
  %179 = sext i32 %178 to i64
  %180 = mul i64 4, %179
  %181 = call noalias ptr @malloc(i64 noundef %180) #5
  %182 = load ptr, ptr %7, align 8, !tbaa !9
  %183 = load ptr, ptr %182, align 8, !tbaa !9
  %184 = getelementptr inbounds %struct.__SMlp, ptr %183, i32 0, i32 6
  store ptr %181, ptr %184, align 8, !tbaa !18
  %185 = load ptr, ptr %7, align 8, !tbaa !9
  %186 = load ptr, ptr %185, align 8, !tbaa !9
  %187 = getelementptr inbounds %struct.__SMlp, ptr %186, i32 0, i32 6
  %188 = load ptr, ptr %187, align 8, !tbaa !18
  %189 = icmp eq ptr %188, null
  br i1 %189, label %190, label %192

190:                                              ; preds = %177
  %191 = call i32 @SMerror(i32 noundef 124, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %191, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

192:                                              ; preds = %177
  br label %193

193:                                              ; preds = %192, %173
  %194 = load i32, ptr %6, align 4, !tbaa !5
  %195 = sext i32 %194 to i64
  %196 = mul i64 8, %195
  %197 = icmp eq i64 %196, 0
  br i1 %197, label %198, label %202

198:                                              ; preds = %193
  %199 = load ptr, ptr %7, align 8, !tbaa !9
  %200 = load ptr, ptr %199, align 8, !tbaa !9
  %201 = getelementptr inbounds %struct.__SMlp, ptr %200, i32 0, i32 8
  store ptr null, ptr %201, align 8, !tbaa !19
  br label %218

202:                                              ; preds = %193
  %203 = load i32, ptr %6, align 4, !tbaa !5
  %204 = sext i32 %203 to i64
  %205 = mul i64 8, %204
  %206 = call noalias ptr @malloc(i64 noundef %205) #5
  %207 = load ptr, ptr %7, align 8, !tbaa !9
  %208 = load ptr, ptr %207, align 8, !tbaa !9
  %209 = getelementptr inbounds %struct.__SMlp, ptr %208, i32 0, i32 8
  store ptr %206, ptr %209, align 8, !tbaa !19
  %210 = load ptr, ptr %7, align 8, !tbaa !9
  %211 = load ptr, ptr %210, align 8, !tbaa !9
  %212 = getelementptr inbounds %struct.__SMlp, ptr %211, i32 0, i32 8
  %213 = load ptr, ptr %212, align 8, !tbaa !19
  %214 = icmp eq ptr %213, null
  br i1 %214, label %215, label %217

215:                                              ; preds = %202
  %216 = call i32 @SMerror(i32 noundef 125, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %216, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

217:                                              ; preds = %202
  br label %218

218:                                              ; preds = %217, %198
  %219 = load i32, ptr %6, align 4, !tbaa !5
  %220 = sext i32 %219 to i64
  %221 = mul i64 8, %220
  %222 = icmp eq i64 %221, 0
  br i1 %222, label %223, label %227

223:                                              ; preds = %218
  %224 = load ptr, ptr %7, align 8, !tbaa !9
  %225 = load ptr, ptr %224, align 8, !tbaa !9
  %226 = getelementptr inbounds %struct.__SMlp, ptr %225, i32 0, i32 4
  store ptr null, ptr %226, align 8, !tbaa !20
  br label %243

227:                                              ; preds = %218
  %228 = load i32, ptr %6, align 4, !tbaa !5
  %229 = sext i32 %228 to i64
  %230 = mul i64 8, %229
  %231 = call noalias ptr @malloc(i64 noundef %230) #5
  %232 = load ptr, ptr %7, align 8, !tbaa !9
  %233 = load ptr, ptr %232, align 8, !tbaa !9
  %234 = getelementptr inbounds %struct.__SMlp, ptr %233, i32 0, i32 4
  store ptr %231, ptr %234, align 8, !tbaa !20
  %235 = load ptr, ptr %7, align 8, !tbaa !9
  %236 = load ptr, ptr %235, align 8, !tbaa !9
  %237 = getelementptr inbounds %struct.__SMlp, ptr %236, i32 0, i32 4
  %238 = load ptr, ptr %237, align 8, !tbaa !20
  %239 = icmp eq ptr %238, null
  br i1 %239, label %240, label %242

240:                                              ; preds = %227
  %241 = call i32 @SMerror(i32 noundef 126, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %241, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

242:                                              ; preds = %227
  br label %243

243:                                              ; preds = %242, %223
  %244 = load i32, ptr %5, align 4, !tbaa !5
  %245 = sext i32 %244 to i64
  %246 = mul i64 8, %245
  %247 = icmp eq i64 %246, 0
  br i1 %247, label %248, label %252

248:                                              ; preds = %243
  %249 = load ptr, ptr %7, align 8, !tbaa !9
  %250 = load ptr, ptr %249, align 8, !tbaa !9
  %251 = getelementptr inbounds %struct.__SMlp, ptr %250, i32 0, i32 9
  store ptr null, ptr %251, align 8, !tbaa !21
  br label %268

252:                                              ; preds = %243
  %253 = load i32, ptr %5, align 4, !tbaa !5
  %254 = sext i32 %253 to i64
  %255 = mul i64 8, %254
  %256 = call noalias ptr @malloc(i64 noundef %255) #5
  %257 = load ptr, ptr %7, align 8, !tbaa !9
  %258 = load ptr, ptr %257, align 8, !tbaa !9
  %259 = getelementptr inbounds %struct.__SMlp, ptr %258, i32 0, i32 9
  store ptr %256, ptr %259, align 8, !tbaa !21
  %260 = load ptr, ptr %7, align 8, !tbaa !9
  %261 = load ptr, ptr %260, align 8, !tbaa !9
  %262 = getelementptr inbounds %struct.__SMlp, ptr %261, i32 0, i32 9
  %263 = load ptr, ptr %262, align 8, !tbaa !21
  %264 = icmp eq ptr %263, null
  br i1 %264, label %265, label %267

265:                                              ; preds = %252
  %266 = call i32 @SMerror(i32 noundef 127, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %266, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

267:                                              ; preds = %252
  br label %268

268:                                              ; preds = %267, %248
  %269 = load i32, ptr %6, align 4, !tbaa !5
  %270 = sext i32 %269 to i64
  %271 = mul i64 8, %270
  %272 = icmp eq i64 %271, 0
  br i1 %272, label %273, label %277

273:                                              ; preds = %268
  %274 = load ptr, ptr %7, align 8, !tbaa !9
  %275 = load ptr, ptr %274, align 8, !tbaa !9
  %276 = getelementptr inbounds %struct.__SMlp, ptr %275, i32 0, i32 10
  store ptr null, ptr %276, align 8, !tbaa !22
  br label %293

277:                                              ; preds = %268
  %278 = load i32, ptr %6, align 4, !tbaa !5
  %279 = sext i32 %278 to i64
  %280 = mul i64 8, %279
  %281 = call noalias ptr @malloc(i64 noundef %280) #5
  %282 = load ptr, ptr %7, align 8, !tbaa !9
  %283 = load ptr, ptr %282, align 8, !tbaa !9
  %284 = getelementptr inbounds %struct.__SMlp, ptr %283, i32 0, i32 10
  store ptr %281, ptr %284, align 8, !tbaa !22
  %285 = load ptr, ptr %7, align 8, !tbaa !9
  %286 = load ptr, ptr %285, align 8, !tbaa !9
  %287 = getelementptr inbounds %struct.__SMlp, ptr %286, i32 0, i32 10
  %288 = load ptr, ptr %287, align 8, !tbaa !22
  %289 = icmp eq ptr %288, null
  br i1 %289, label %290, label %292

290:                                              ; preds = %277
  %291 = call i32 @SMerror(i32 noundef 128, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %291, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

292:                                              ; preds = %277
  br label %293

293:                                              ; preds = %292, %273
  %294 = load i32, ptr %5, align 4, !tbaa !5
  %295 = sext i32 %294 to i64
  %296 = mul i64 8, %295
  %297 = icmp eq i64 %296, 0
  br i1 %297, label %298, label %302

298:                                              ; preds = %293
  %299 = load ptr, ptr %7, align 8, !tbaa !9
  %300 = load ptr, ptr %299, align 8, !tbaa !9
  %301 = getelementptr inbounds %struct.__SMlp, ptr %300, i32 0, i32 11
  store ptr null, ptr %301, align 8, !tbaa !23
  br label %318

302:                                              ; preds = %293
  %303 = load i32, ptr %5, align 4, !tbaa !5
  %304 = sext i32 %303 to i64
  %305 = mul i64 8, %304
  %306 = call noalias ptr @malloc(i64 noundef %305) #5
  %307 = load ptr, ptr %7, align 8, !tbaa !9
  %308 = load ptr, ptr %307, align 8, !tbaa !9
  %309 = getelementptr inbounds %struct.__SMlp, ptr %308, i32 0, i32 11
  store ptr %306, ptr %309, align 8, !tbaa !23
  %310 = load ptr, ptr %7, align 8, !tbaa !9
  %311 = load ptr, ptr %310, align 8, !tbaa !9
  %312 = getelementptr inbounds %struct.__SMlp, ptr %311, i32 0, i32 11
  %313 = load ptr, ptr %312, align 8, !tbaa !23
  %314 = icmp eq ptr %313, null
  br i1 %314, label %315, label %317

315:                                              ; preds = %302
  %316 = call i32 @SMerror(i32 noundef 129, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %316, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

317:                                              ; preds = %302
  br label %318

318:                                              ; preds = %317, %298
  %319 = load i32, ptr %6, align 4, !tbaa !5
  %320 = sext i32 %319 to i64
  %321 = mul i64 8, %320
  %322 = icmp eq i64 %321, 0
  br i1 %322, label %323, label %327

323:                                              ; preds = %318
  %324 = load ptr, ptr %7, align 8, !tbaa !9
  %325 = load ptr, ptr %324, align 8, !tbaa !9
  %326 = getelementptr inbounds %struct.__SMlp, ptr %325, i32 0, i32 12
  store ptr null, ptr %326, align 8, !tbaa !24
  br label %343

327:                                              ; preds = %318
  %328 = load i32, ptr %6, align 4, !tbaa !5
  %329 = sext i32 %328 to i64
  %330 = mul i64 8, %329
  %331 = call noalias ptr @malloc(i64 noundef %330) #5
  %332 = load ptr, ptr %7, align 8, !tbaa !9
  %333 = load ptr, ptr %332, align 8, !tbaa !9
  %334 = getelementptr inbounds %struct.__SMlp, ptr %333, i32 0, i32 12
  store ptr %331, ptr %334, align 8, !tbaa !24
  %335 = load ptr, ptr %7, align 8, !tbaa !9
  %336 = load ptr, ptr %335, align 8, !tbaa !9
  %337 = getelementptr inbounds %struct.__SMlp, ptr %336, i32 0, i32 12
  %338 = load ptr, ptr %337, align 8, !tbaa !24
  %339 = icmp eq ptr %338, null
  br i1 %339, label %340, label %342

340:                                              ; preds = %327
  %341 = call i32 @SMerror(i32 noundef 130, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %341, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

342:                                              ; preds = %327
  br label %343

343:                                              ; preds = %342, %323
  %344 = load i32, ptr %5, align 4, !tbaa !5
  %345 = sext i32 %344 to i64
  %346 = mul i64 8, %345
  %347 = load i32, ptr %5, align 4, !tbaa !5
  %348 = sext i32 %347 to i64
  %349 = mul i64 %346, %348
  %350 = icmp eq i64 %349, 0
  br i1 %350, label %351, label %355

351:                                              ; preds = %343
  %352 = load ptr, ptr %7, align 8, !tbaa !9
  %353 = load ptr, ptr %352, align 8, !tbaa !9
  %354 = getelementptr inbounds %struct.__SMlp, ptr %353, i32 0, i32 13
  store ptr null, ptr %354, align 8, !tbaa !25
  br label %374

355:                                              ; preds = %343
  %356 = load i32, ptr %5, align 4, !tbaa !5
  %357 = sext i32 %356 to i64
  %358 = mul i64 8, %357
  %359 = load i32, ptr %5, align 4, !tbaa !5
  %360 = sext i32 %359 to i64
  %361 = mul i64 %358, %360
  %362 = call noalias ptr @malloc(i64 noundef %361) #5
  %363 = load ptr, ptr %7, align 8, !tbaa !9
  %364 = load ptr, ptr %363, align 8, !tbaa !9
  %365 = getelementptr inbounds %struct.__SMlp, ptr %364, i32 0, i32 13
  store ptr %362, ptr %365, align 8, !tbaa !25
  %366 = load ptr, ptr %7, align 8, !tbaa !9
  %367 = load ptr, ptr %366, align 8, !tbaa !9
  %368 = getelementptr inbounds %struct.__SMlp, ptr %367, i32 0, i32 13
  %369 = load ptr, ptr %368, align 8, !tbaa !25
  %370 = icmp eq ptr %369, null
  br i1 %370, label %371, label %373

371:                                              ; preds = %355
  %372 = call i32 @SMerror(i32 noundef 131, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %372, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

373:                                              ; preds = %355
  br label %374

374:                                              ; preds = %373, %351
  %375 = load i32, ptr %5, align 4, !tbaa !5
  %376 = sext i32 %375 to i64
  %377 = mul i64 8, %376
  %378 = load i32, ptr %5, align 4, !tbaa !5
  %379 = sext i32 %378 to i64
  %380 = mul i64 %377, %379
  %381 = icmp eq i64 %380, 0
  br i1 %381, label %382, label %386

382:                                              ; preds = %374
  %383 = load ptr, ptr %7, align 8, !tbaa !9
  %384 = load ptr, ptr %383, align 8, !tbaa !9
  %385 = getelementptr inbounds %struct.__SMlp, ptr %384, i32 0, i32 14
  store ptr null, ptr %385, align 8, !tbaa !26
  br label %405

386:                                              ; preds = %374
  %387 = load i32, ptr %5, align 4, !tbaa !5
  %388 = sext i32 %387 to i64
  %389 = mul i64 8, %388
  %390 = load i32, ptr %5, align 4, !tbaa !5
  %391 = sext i32 %390 to i64
  %392 = mul i64 %389, %391
  %393 = call noalias ptr @malloc(i64 noundef %392) #5
  %394 = load ptr, ptr %7, align 8, !tbaa !9
  %395 = load ptr, ptr %394, align 8, !tbaa !9
  %396 = getelementptr inbounds %struct.__SMlp, ptr %395, i32 0, i32 14
  store ptr %393, ptr %396, align 8, !tbaa !26
  %397 = load ptr, ptr %7, align 8, !tbaa !9
  %398 = load ptr, ptr %397, align 8, !tbaa !9
  %399 = getelementptr inbounds %struct.__SMlp, ptr %398, i32 0, i32 14
  %400 = load ptr, ptr %399, align 8, !tbaa !26
  %401 = icmp eq ptr %400, null
  br i1 %401, label %402, label %404

402:                                              ; preds = %386
  %403 = call i32 @SMerror(i32 noundef 132, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %403, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

404:                                              ; preds = %386
  br label %405

405:                                              ; preds = %404, %382
  %406 = load i32, ptr %5, align 4, !tbaa !5
  %407 = sext i32 %406 to i64
  %408 = mul i64 8, %407
  %409 = icmp eq i64 %408, 0
  br i1 %409, label %410, label %414

410:                                              ; preds = %405
  %411 = load ptr, ptr %7, align 8, !tbaa !9
  %412 = load ptr, ptr %411, align 8, !tbaa !9
  %413 = getelementptr inbounds %struct.__SMlp, ptr %412, i32 0, i32 15
  store ptr null, ptr %413, align 8, !tbaa !27
  br label %430

414:                                              ; preds = %405
  %415 = load i32, ptr %5, align 4, !tbaa !5
  %416 = sext i32 %415 to i64
  %417 = mul i64 8, %416
  %418 = call noalias ptr @malloc(i64 noundef %417) #5
  %419 = load ptr, ptr %7, align 8, !tbaa !9
  %420 = load ptr, ptr %419, align 8, !tbaa !9
  %421 = getelementptr inbounds %struct.__SMlp, ptr %420, i32 0, i32 15
  store ptr %418, ptr %421, align 8, !tbaa !27
  %422 = load ptr, ptr %7, align 8, !tbaa !9
  %423 = load ptr, ptr %422, align 8, !tbaa !9
  %424 = getelementptr inbounds %struct.__SMlp, ptr %423, i32 0, i32 15
  %425 = load ptr, ptr %424, align 8, !tbaa !27
  %426 = icmp eq ptr %425, null
  br i1 %426, label %427, label %429

427:                                              ; preds = %414
  %428 = call i32 @SMerror(i32 noundef 133, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %428, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

429:                                              ; preds = %414
  br label %430

430:                                              ; preds = %429, %410
  store i32 0, ptr %8, align 4, !tbaa !5
  br label %431

431:                                              ; preds = %547, %430
  %432 = load i32, ptr %8, align 4, !tbaa !5
  %433 = load i32, ptr %5, align 4, !tbaa !5
  %434 = icmp slt i32 %432, %433
  br i1 %434, label %435, label %550

435:                                              ; preds = %431
  %436 = load i32, ptr %6, align 4, !tbaa !5
  %437 = sext i32 %436 to i64
  %438 = mul i64 8, %437
  %439 = icmp eq i64 %438, 0
  br i1 %439, label %440, label %448

440:                                              ; preds = %435
  %441 = load ptr, ptr %7, align 8, !tbaa !9
  %442 = load ptr, ptr %441, align 8, !tbaa !9
  %443 = getelementptr inbounds %struct.__SMlp, ptr %442, i32 0, i32 15
  %444 = load ptr, ptr %443, align 8, !tbaa !27
  %445 = load i32, ptr %8, align 4, !tbaa !5
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds ptr, ptr %444, i64 %446
  store ptr null, ptr %447, align 8, !tbaa !9
  br label %472

448:                                              ; preds = %435
  %449 = load i32, ptr %6, align 4, !tbaa !5
  %450 = sext i32 %449 to i64
  %451 = mul i64 8, %450
  %452 = call noalias ptr @malloc(i64 noundef %451) #5
  %453 = load ptr, ptr %7, align 8, !tbaa !9
  %454 = load ptr, ptr %453, align 8, !tbaa !9
  %455 = getelementptr inbounds %struct.__SMlp, ptr %454, i32 0, i32 15
  %456 = load ptr, ptr %455, align 8, !tbaa !27
  %457 = load i32, ptr %8, align 4, !tbaa !5
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds ptr, ptr %456, i64 %458
  store ptr %452, ptr %459, align 8, !tbaa !9
  %460 = load ptr, ptr %7, align 8, !tbaa !9
  %461 = load ptr, ptr %460, align 8, !tbaa !9
  %462 = getelementptr inbounds %struct.__SMlp, ptr %461, i32 0, i32 15
  %463 = load ptr, ptr %462, align 8, !tbaa !27
  %464 = load i32, ptr %8, align 4, !tbaa !5
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds ptr, ptr %463, i64 %465
  %467 = load ptr, ptr %466, align 8, !tbaa !9
  %468 = icmp eq ptr %467, null
  br i1 %468, label %469, label %471

469:                                              ; preds = %448
  %470 = call i32 @SMerror(i32 noundef 136, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %470, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

471:                                              ; preds = %448
  br label %472

472:                                              ; preds = %471, %440
  %473 = load i32, ptr %6, align 4, !tbaa !5
  %474 = sext i32 %473 to i64
  %475 = mul i64 8, %474
  %476 = icmp eq i64 %475, 0
  br i1 %476, label %477, label %485

477:                                              ; preds = %472
  %478 = load ptr, ptr %7, align 8, !tbaa !9
  %479 = load ptr, ptr %478, align 8, !tbaa !9
  %480 = getelementptr inbounds %struct.__SMlp, ptr %479, i32 0, i32 2
  %481 = load ptr, ptr %480, align 8, !tbaa !15
  %482 = load i32, ptr %8, align 4, !tbaa !5
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds ptr, ptr %481, i64 %483
  store ptr null, ptr %484, align 8, !tbaa !9
  br label %509

485:                                              ; preds = %472
  %486 = load i32, ptr %6, align 4, !tbaa !5
  %487 = sext i32 %486 to i64
  %488 = mul i64 8, %487
  %489 = call noalias ptr @malloc(i64 noundef %488) #5
  %490 = load ptr, ptr %7, align 8, !tbaa !9
  %491 = load ptr, ptr %490, align 8, !tbaa !9
  %492 = getelementptr inbounds %struct.__SMlp, ptr %491, i32 0, i32 2
  %493 = load ptr, ptr %492, align 8, !tbaa !15
  %494 = load i32, ptr %8, align 4, !tbaa !5
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds ptr, ptr %493, i64 %495
  store ptr %489, ptr %496, align 8, !tbaa !9
  %497 = load ptr, ptr %7, align 8, !tbaa !9
  %498 = load ptr, ptr %497, align 8, !tbaa !9
  %499 = getelementptr inbounds %struct.__SMlp, ptr %498, i32 0, i32 2
  %500 = load ptr, ptr %499, align 8, !tbaa !15
  %501 = load i32, ptr %8, align 4, !tbaa !5
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds ptr, ptr %500, i64 %502
  %504 = load ptr, ptr %503, align 8, !tbaa !9
  %505 = icmp eq ptr %504, null
  br i1 %505, label %506, label %508

506:                                              ; preds = %485
  %507 = call i32 @SMerror(i32 noundef 137, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %507, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

508:                                              ; preds = %485
  br label %509

509:                                              ; preds = %508, %477
  %510 = load i32, ptr %6, align 4, !tbaa !5
  %511 = sext i32 %510 to i64
  %512 = mul i64 8, %511
  %513 = icmp eq i64 %512, 0
  br i1 %513, label %514, label %522

514:                                              ; preds = %509
  %515 = load ptr, ptr %7, align 8, !tbaa !9
  %516 = load ptr, ptr %515, align 8, !tbaa !9
  %517 = getelementptr inbounds %struct.__SMlp, ptr %516, i32 0, i32 1
  %518 = load ptr, ptr %517, align 8, !tbaa !14
  %519 = load i32, ptr %8, align 4, !tbaa !5
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds ptr, ptr %518, i64 %520
  store ptr null, ptr %521, align 8, !tbaa !9
  br label %546

522:                                              ; preds = %509
  %523 = load i32, ptr %6, align 4, !tbaa !5
  %524 = sext i32 %523 to i64
  %525 = mul i64 8, %524
  %526 = call noalias ptr @malloc(i64 noundef %525) #5
  %527 = load ptr, ptr %7, align 8, !tbaa !9
  %528 = load ptr, ptr %527, align 8, !tbaa !9
  %529 = getelementptr inbounds %struct.__SMlp, ptr %528, i32 0, i32 1
  %530 = load ptr, ptr %529, align 8, !tbaa !14
  %531 = load i32, ptr %8, align 4, !tbaa !5
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds ptr, ptr %530, i64 %532
  store ptr %526, ptr %533, align 8, !tbaa !9
  %534 = load ptr, ptr %7, align 8, !tbaa !9
  %535 = load ptr, ptr %534, align 8, !tbaa !9
  %536 = getelementptr inbounds %struct.__SMlp, ptr %535, i32 0, i32 1
  %537 = load ptr, ptr %536, align 8, !tbaa !14
  %538 = load i32, ptr %8, align 4, !tbaa !5
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds ptr, ptr %537, i64 %539
  %541 = load ptr, ptr %540, align 8, !tbaa !9
  %542 = icmp eq ptr %541, null
  br i1 %542, label %543, label %545

543:                                              ; preds = %522
  %544 = call i32 @SMerror(i32 noundef 138, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %544, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

545:                                              ; preds = %522
  br label %546

546:                                              ; preds = %545, %514
  br label %547

547:                                              ; preds = %546
  %548 = load i32, ptr %8, align 4, !tbaa !5
  %549 = add nsw i32 %548, 1
  store i32 %549, ptr %8, align 4, !tbaa !5
  br label %431, !llvm.loop !28

550:                                              ; preds = %431
  store i32 0, ptr %8, align 4, !tbaa !5
  br label %551

551:                                              ; preds = %593, %550
  %552 = load i32, ptr %8, align 4, !tbaa !5
  %553 = load i32, ptr %6, align 4, !tbaa !5
  %554 = icmp slt i32 %552, %553
  br i1 %554, label %555, label %596

555:                                              ; preds = %551
  %556 = load i32, ptr %5, align 4, !tbaa !5
  %557 = sext i32 %556 to i64
  %558 = mul i64 8, %557
  %559 = icmp eq i64 %558, 0
  br i1 %559, label %560, label %568

560:                                              ; preds = %555
  %561 = load ptr, ptr %7, align 8, !tbaa !9
  %562 = load ptr, ptr %561, align 8, !tbaa !9
  %563 = getelementptr inbounds %struct.__SMlp, ptr %562, i32 0, i32 0
  %564 = load ptr, ptr %563, align 8, !tbaa !13
  %565 = load i32, ptr %8, align 4, !tbaa !5
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds ptr, ptr %564, i64 %566
  store ptr null, ptr %567, align 8, !tbaa !9
  br label %592

568:                                              ; preds = %555
  %569 = load i32, ptr %5, align 4, !tbaa !5
  %570 = sext i32 %569 to i64
  %571 = mul i64 8, %570
  %572 = call noalias ptr @malloc(i64 noundef %571) #5
  %573 = load ptr, ptr %7, align 8, !tbaa !9
  %574 = load ptr, ptr %573, align 8, !tbaa !9
  %575 = getelementptr inbounds %struct.__SMlp, ptr %574, i32 0, i32 0
  %576 = load ptr, ptr %575, align 8, !tbaa !13
  %577 = load i32, ptr %8, align 4, !tbaa !5
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds ptr, ptr %576, i64 %578
  store ptr %572, ptr %579, align 8, !tbaa !9
  %580 = load ptr, ptr %7, align 8, !tbaa !9
  %581 = load ptr, ptr %580, align 8, !tbaa !9
  %582 = getelementptr inbounds %struct.__SMlp, ptr %581, i32 0, i32 0
  %583 = load ptr, ptr %582, align 8, !tbaa !13
  %584 = load i32, ptr %8, align 4, !tbaa !5
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds ptr, ptr %583, i64 %585
  %587 = load ptr, ptr %586, align 8, !tbaa !9
  %588 = icmp eq ptr %587, null
  br i1 %588, label %589, label %591

589:                                              ; preds = %568
  %590 = call i32 @SMerror(i32 noundef 141, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null)
  store i32 %590, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

591:                                              ; preds = %568
  br label %592

592:                                              ; preds = %591, %560
  br label %593

593:                                              ; preds = %592
  %594 = load i32, ptr %8, align 4, !tbaa !5
  %595 = add nsw i32 %594, 1
  store i32 %595, ptr %8, align 4, !tbaa !5
  br label %551, !llvm.loop !30

596:                                              ; preds = %551
  store i32 0, ptr %9, align 4, !tbaa !5
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %597

597:                                              ; preds = %596, %589, %543, %506, %469, %427, %402, %371, %340, %315, %290, %265, %240, %215, %190, %165, %140, %115, %90, %65, %40, %16
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #4
  %598 = load i32, ptr %4, align 4
  ret i32 %598
}

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nounwind allocsize(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 #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 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 = { nounwind }
attributes #5 = { nounwind allocsize(0) }

!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, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !10, i64 40}
!12 = !{!"__SMlp", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120}
!13 = !{!12, !10, i64 0}
!14 = !{!12, !10, i64 8}
!15 = !{!12, !10, i64 16}
!16 = !{!12, !10, i64 24}
!17 = !{!12, !10, i64 56}
!18 = !{!12, !10, i64 48}
!19 = !{!12, !10, i64 64}
!20 = !{!12, !10, i64 32}
!21 = !{!12, !10, i64 72}
!22 = !{!12, !10, i64 80}
!23 = !{!12, !10, i64 88}
!24 = !{!12, !10, i64 96}
!25 = !{!12, !10, i64 104}
!26 = !{!12, !10, i64 112}
!27 = !{!12, !10, i64 120}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = distinct !{!30, !29}


; 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.1 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [11 x i8], align 1

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #0

declare i32 @SMerror(i32 noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local i32 @SMmallocLP(i32 noundef %0, i32 noundef %1, ptr nocapture noundef %2) local_unnamed_addr #2 {
  %4 = tail call noalias dereferenceable_or_null(128) ptr @malloc(i64 noundef 128) #4
  store ptr %4, ptr %2, align 8, !tbaa !5
  %5 = icmp eq ptr %4, null
  br i1 %5, label %.loopexit.sink.split, label %6

6:                                                ; preds = %3
  %7 = sext i32 %0 to i64
  %8 = shl nsw i64 %7, 2
  %9 = icmp eq i32 %0, 0
  br i1 %9, label %10, label %12

10:                                               ; preds = %6
  %11 = getelementptr inbounds i8, ptr %4, i64 40
  store ptr null, ptr %11, align 8, !tbaa !9
  br label %16

12:                                               ; preds = %6
  %13 = tail call noalias ptr @malloc(i64 noundef %8) #4
  %14 = getelementptr inbounds i8, ptr %4, i64 40
  store ptr %13, ptr %14, align 8, !tbaa !9
  %15 = icmp eq ptr %13, null
  br i1 %15, label %.loopexit.sink.split, label %16

16:                                               ; preds = %12, %10
  %17 = sext i32 %1 to i64
  %18 = shl nsw i64 %17, 3
  %19 = icmp eq i32 %1, 0
  br i1 %19, label %20, label %21

20:                                               ; preds = %16
  store ptr null, ptr %4, align 8, !tbaa !11
  br label %24

21:                                               ; preds = %16
  %22 = tail call noalias ptr @malloc(i64 noundef %18) #4
  store ptr %22, ptr %4, align 8, !tbaa !11
  %23 = icmp eq ptr %22, null
  br i1 %23, label %.loopexit.sink.split, label %24

24:                                               ; preds = %21, %20
  %25 = shl nsw i64 %7, 3
  br i1 %9, label %30, label %26

26:                                               ; preds = %24
  %27 = tail call noalias ptr @malloc(i64 noundef %25) #4
  %28 = getelementptr inbounds i8, ptr %4, i64 8
  store ptr %27, ptr %28, align 8, !tbaa !12
  %29 = icmp eq ptr %27, null
  br i1 %29, label %.loopexit.sink.split, label %32

30:                                               ; preds = %24
  %31 = getelementptr inbounds i8, ptr %4, i64 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %31, i8 0, i64 16, i1 false)
  br label %36

32:                                               ; preds = %26
  %33 = tail call noalias ptr @malloc(i64 noundef %25) #4
  %34 = getelementptr inbounds i8, ptr %4, i64 16
  store ptr %33, ptr %34, align 8, !tbaa !13
  %35 = icmp eq ptr %33, null
  br i1 %35, label %.loopexit.sink.split, label %36

36:                                               ; preds = %32, %30
  br i1 %19, label %41, label %37

37:                                               ; preds = %36
  %38 = tail call noalias ptr @malloc(i64 noundef %18) #4
  %39 = getelementptr inbounds i8, ptr %4, i64 24
  store ptr %38, ptr %39, align 8, !tbaa !14
  %40 = icmp eq ptr %38, null
  br i1 %40, label %.loopexit.sink.split, label %44

41:                                               ; preds = %36
  %42 = getelementptr inbounds i8, ptr %4, i64 24
  store ptr null, ptr %42, align 8, !tbaa !14
  %43 = getelementptr inbounds i8, ptr %4, i64 56
  store ptr null, ptr %43, align 8, !tbaa !15
  br label %49

44:                                               ; preds = %37
  %45 = shl nsw i64 %17, 2
  %46 = tail call noalias ptr @malloc(i64 noundef %45) #4
  %47 = getelementptr inbounds i8, ptr %4, i64 56
  store ptr %46, ptr %47, align 8, !tbaa !15
  %48 = icmp eq ptr %46, null
  br i1 %48, label %.loopexit.sink.split, label %49

49:                                               ; preds = %44, %41
  br i1 %9, label %50, label %52

50:                                               ; preds = %49
  %51 = getelementptr inbounds i8, ptr %4, i64 48
  store ptr null, ptr %51, align 8, !tbaa !16
  br label %56

52:                                               ; preds = %49
  %53 = tail call noalias ptr @malloc(i64 noundef %8) #4
  %54 = getelementptr inbounds i8, ptr %4, i64 48
  store ptr %53, ptr %54, align 8, !tbaa !16
  %55 = icmp eq ptr %53, null
  br i1 %55, label %.loopexit.sink.split, label %56

56:                                               ; preds = %52, %50
  br i1 %19, label %61, label %57

57:                                               ; preds = %56
  %58 = tail call noalias ptr @malloc(i64 noundef %18) #4
  %59 = getelementptr inbounds i8, ptr %4, i64 64
  store ptr %58, ptr %59, align 8, !tbaa !17
  %60 = icmp eq ptr %58, null
  br i1 %60, label %.loopexit.sink.split, label %64

61:                                               ; preds = %56
  %62 = getelementptr inbounds i8, ptr %4, i64 64
  store ptr null, ptr %62, align 8, !tbaa !17
  %63 = getelementptr inbounds i8, ptr %4, i64 32
  store ptr null, ptr %63, align 8, !tbaa !18
  br label %68

64:                                               ; preds = %57
  %65 = tail call noalias ptr @malloc(i64 noundef %18) #4
  %66 = getelementptr inbounds i8, ptr %4, i64 32
  store ptr %65, ptr %66, align 8, !tbaa !18
  %67 = icmp eq ptr %65, null
  br i1 %67, label %.loopexit.sink.split, label %68

68:                                               ; preds = %64, %61
  br i1 %9, label %69, label %71

69:                                               ; preds = %68
  %70 = getelementptr inbounds i8, ptr %4, i64 72
  store ptr null, ptr %70, align 8, !tbaa !19
  br label %75

71:                                               ; preds = %68
  %72 = tail call noalias ptr @malloc(i64 noundef %25) #4
  %73 = getelementptr inbounds i8, ptr %4, i64 72
  store ptr %72, ptr %73, align 8, !tbaa !19
  %74 = icmp eq ptr %72, null
  br i1 %74, label %.loopexit.sink.split, label %75

75:                                               ; preds = %71, %69
  br i1 %19, label %76, label %78

76:                                               ; preds = %75
  %77 = getelementptr inbounds i8, ptr %4, i64 80
  store ptr null, ptr %77, align 8, !tbaa !20
  br label %82

78:                                               ; preds = %75
  %79 = tail call noalias ptr @malloc(i64 noundef %18) #4
  %80 = getelementptr inbounds i8, ptr %4, i64 80
  store ptr %79, ptr %80, align 8, !tbaa !20
  %81 = icmp eq ptr %79, null
  br i1 %81, label %.loopexit.sink.split, label %82

82:                                               ; preds = %78, %76
  br i1 %9, label %83, label %85

83:                                               ; preds = %82
  %84 = getelementptr inbounds i8, ptr %4, i64 88
  store ptr null, ptr %84, align 8, !tbaa !21
  br label %89

85:                                               ; preds = %82
  %86 = tail call noalias ptr @malloc(i64 noundef %25) #4
  %87 = getelementptr inbounds i8, ptr %4, i64 88
  store ptr %86, ptr %87, align 8, !tbaa !21
  %88 = icmp eq ptr %86, null
  br i1 %88, label %.loopexit.sink.split, label %89

89:                                               ; preds = %85, %83
  br i1 %19, label %90, label %92

90:                                               ; preds = %89
  %91 = getelementptr inbounds i8, ptr %4, i64 96
  store ptr null, ptr %91, align 8, !tbaa !22
  br label %96

92:                                               ; preds = %89
  %93 = tail call noalias ptr @malloc(i64 noundef %18) #4
  %94 = getelementptr inbounds i8, ptr %4, i64 96
  store ptr %93, ptr %94, align 8, !tbaa !22
  %95 = icmp eq ptr %93, null
  br i1 %95, label %.loopexit.sink.split, label %96

96:                                               ; preds = %92, %90
  %97 = mul i64 %25, %7
  %98 = icmp eq i64 %97, 0
  br i1 %98, label %103, label %99

99:                                               ; preds = %96
  %100 = tail call noalias ptr @malloc(i64 noundef %97) #4
  %101 = getelementptr inbounds i8, ptr %4, i64 104
  store ptr %100, ptr %101, align 8, !tbaa !23
  %102 = icmp eq ptr %100, null
  br i1 %102, label %.loopexit.sink.split, label %105

103:                                              ; preds = %96
  %104 = getelementptr inbounds i8, ptr %4, i64 104
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %104, i8 0, i64 16, i1 false)
  br label %109

105:                                              ; preds = %99
  %106 = tail call noalias ptr @malloc(i64 noundef %97) #4
  %107 = getelementptr inbounds i8, ptr %4, i64 112
  store ptr %106, ptr %107, align 8, !tbaa !24
  %108 = icmp eq ptr %106, null
  br i1 %108, label %.loopexit.sink.split, label %109

109:                                              ; preds = %105, %103
  br i1 %9, label %.preheader.thread166, label %110

110:                                              ; preds = %109
  %111 = tail call noalias ptr @malloc(i64 noundef %25) #4
  %112 = getelementptr inbounds i8, ptr %4, i64 120
  store ptr %111, ptr %112, align 8, !tbaa !25
  %113 = icmp eq ptr %111, null
  br i1 %113, label %.loopexit.sink.split, label %114

114:                                              ; preds = %110
  %115 = icmp sgt i32 %0, 0
  br i1 %115, label %.lr.ph, label %.preheader.thread

.lr.ph:                                           ; preds = %114
  %wide.trip.count153 = zext nneg i32 %0 to i64
  br i1 %19, label %.lr.ph.split.us.preheader, label %.lr.ph.split

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %xtraiter = and i64 %wide.trip.count153, 1
  %116 = icmp eq i32 %0, 1
  br i1 %116, label %.preheader.loopexit.unr-lcssa, label %.lr.ph.split.us.preheader.new

.lr.ph.split.us.preheader.new:                    ; preds = %.lr.ph.split.us.preheader
  %unroll_iter = and i64 %wide.trip.count153, 2147483646
  br label %.lr.ph.split.us

.lr.ph.split.us:                                  ; preds = %.lr.ph.split.us, %.lr.ph.split.us.preheader.new
  %indvars.iv150 = phi i64 [ 0, %.lr.ph.split.us.preheader.new ], [ %indvars.iv.next151.1, %.lr.ph.split.us ]
  %niter = phi i64 [ 0, %.lr.ph.split.us.preheader.new ], [ %niter.next.1, %.lr.ph.split.us ]
  %117 = load ptr, ptr %2, align 8, !tbaa !5
  %118 = getelementptr inbounds i8, ptr %117, i64 120
  %119 = load ptr, ptr %118, align 8, !tbaa !25
  %120 = getelementptr inbounds ptr, ptr %119, i64 %indvars.iv150
  store ptr null, ptr %120, align 8, !tbaa !5
  %121 = load ptr, ptr %2, align 8, !tbaa !5
  %122 = getelementptr inbounds i8, ptr %121, i64 16
  %123 = load ptr, ptr %122, align 8, !tbaa !13
  %124 = getelementptr inbounds ptr, ptr %123, i64 %indvars.iv150
  store ptr null, ptr %124, align 8, !tbaa !5
  %125 = load ptr, ptr %2, align 8, !tbaa !5
  %126 = getelementptr inbounds i8, ptr %125, i64 8
  %127 = load ptr, ptr %126, align 8, !tbaa !12
  %128 = getelementptr inbounds ptr, ptr %127, i64 %indvars.iv150
  store ptr null, ptr %128, align 8, !tbaa !5
  %indvars.iv.next151 = or disjoint i64 %indvars.iv150, 1
  %129 = load ptr, ptr %2, align 8, !tbaa !5
  %130 = getelementptr inbounds i8, ptr %129, i64 120
  %131 = load ptr, ptr %130, align 8, !tbaa !25
  %132 = getelementptr inbounds ptr, ptr %131, i64 %indvars.iv.next151
  store ptr null, ptr %132, align 8, !tbaa !5
  %133 = load ptr, ptr %2, align 8, !tbaa !5
  %134 = getelementptr inbounds i8, ptr %133, i64 16
  %135 = load ptr, ptr %134, align 8, !tbaa !13
  %136 = getelementptr inbounds ptr, ptr %135, i64 %indvars.iv.next151
  store ptr null, ptr %136, align 8, !tbaa !5
  %137 = load ptr, ptr %2, align 8, !tbaa !5
  %138 = getelementptr inbounds i8, ptr %137, i64 8
  %139 = load ptr, ptr %138, align 8, !tbaa !12
  %140 = getelementptr inbounds ptr, ptr %139, i64 %indvars.iv.next151
  store ptr null, ptr %140, align 8, !tbaa !5
  %indvars.iv.next151.1 = add nuw nsw i64 %indvars.iv150, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.preheader.loopexit.unr-lcssa, label %.lr.ph.split.us, !llvm.loop !26

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

.lr.ph.split.us.epil:                             ; preds = %.preheader.loopexit.unr-lcssa
  %141 = load ptr, ptr %2, align 8, !tbaa !5
  %142 = getelementptr inbounds i8, ptr %141, i64 120
  %143 = load ptr, ptr %142, align 8, !tbaa !25
  %144 = getelementptr inbounds ptr, ptr %143, i64 %indvars.iv150.unr
  store ptr null, ptr %144, align 8, !tbaa !5
  %145 = load ptr, ptr %2, align 8, !tbaa !5
  %146 = getelementptr inbounds i8, ptr %145, i64 16
  %147 = load ptr, ptr %146, align 8, !tbaa !13
  %148 = getelementptr inbounds ptr, ptr %147, i64 %indvars.iv150.unr
  store ptr null, ptr %148, align 8, !tbaa !5
  %149 = load ptr, ptr %2, align 8, !tbaa !5
  %150 = getelementptr inbounds i8, ptr %149, i64 8
  %151 = load ptr, ptr %150, align 8, !tbaa !12
  %152 = getelementptr inbounds ptr, ptr %151, i64 %indvars.iv150.unr
  store ptr null, ptr %152, align 8, !tbaa !5
  br label %.preheader

.preheader:                                       ; preds = %204, %.lr.ph.split.us.epil, %.preheader.loopexit.unr-lcssa
  %153 = icmp sgt i32 %1, 0
  br i1 %153, label %.lr.ph146, label %.loopexit

.preheader.thread166:                             ; preds = %109
  %154 = getelementptr inbounds i8, ptr %4, i64 120
  store ptr null, ptr %154, align 8, !tbaa !25
  %155 = icmp sgt i32 %1, 0
  br i1 %155, label %.lr.ph146.split.us.preheader, label %.loopexit

.preheader.thread:                                ; preds = %114
  %156 = icmp sgt i32 %1, 0
  br i1 %156, label %.lr.ph146.split.preheader, label %.loopexit

.lr.ph146:                                        ; preds = %.preheader
  br i1 %9, label %.lr.ph146.split.us.preheader, label %.lr.ph146.split.preheader

.lr.ph146.split.preheader:                        ; preds = %.preheader.thread, %.lr.ph146
  %wide.trip.count158 = zext nneg i32 %1 to i64
  %.pre = load ptr, ptr %2, align 8, !tbaa !5
  %.pre165 = load ptr, ptr %.pre, align 8, !tbaa !11
  br label %.lr.ph146.split

.lr.ph146.split.us.preheader:                     ; preds = %.preheader.thread166, %.lr.ph146
  %wide.trip.count163 = zext nneg i32 %1 to i64
  %157 = add nsw i64 %wide.trip.count163, -1
  %xtraiter176 = and i64 %wide.trip.count163, 3
  %158 = icmp ult i64 %157, 3
  br i1 %158, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph146.split.us.preheader.new

.lr.ph146.split.us.preheader.new:                 ; preds = %.lr.ph146.split.us.preheader
  %unroll_iter178 = and i64 %wide.trip.count163, 2147483644
  br label %.lr.ph146.split.us

.lr.ph146.split.us:                               ; preds = %.lr.ph146.split.us, %.lr.ph146.split.us.preheader.new
  %indvars.iv160 = phi i64 [ 0, %.lr.ph146.split.us.preheader.new ], [ %indvars.iv.next161.3, %.lr.ph146.split.us ]
  %niter179 = phi i64 [ 0, %.lr.ph146.split.us.preheader.new ], [ %niter179.next.3, %.lr.ph146.split.us ]
  %159 = load ptr, ptr %2, align 8, !tbaa !5
  %160 = load ptr, ptr %159, align 8, !tbaa !11
  %161 = getelementptr inbounds ptr, ptr %160, i64 %indvars.iv160
  store ptr null, ptr %161, align 8, !tbaa !5
  %indvars.iv.next161 = or disjoint i64 %indvars.iv160, 1
  %162 = load ptr, ptr %2, align 8, !tbaa !5
  %163 = load ptr, ptr %162, align 8, !tbaa !11
  %164 = getelementptr inbounds ptr, ptr %163, i64 %indvars.iv.next161
  store ptr null, ptr %164, align 8, !tbaa !5
  %indvars.iv.next161.1 = or disjoint i64 %indvars.iv160, 2
  %165 = load ptr, ptr %2, align 8, !tbaa !5
  %166 = load ptr, ptr %165, align 8, !tbaa !11
  %167 = getelementptr inbounds ptr, ptr %166, i64 %indvars.iv.next161.1
  store ptr null, ptr %167, align 8, !tbaa !5
  %indvars.iv.next161.2 = or disjoint i64 %indvars.iv160, 3
  %168 = load ptr, ptr %2, align 8, !tbaa !5
  %169 = load ptr, ptr %168, align 8, !tbaa !11
  %170 = getelementptr inbounds ptr, ptr %169, i64 %indvars.iv.next161.2
  store ptr null, ptr %170, align 8, !tbaa !5
  %indvars.iv.next161.3 = add nuw nsw i64 %indvars.iv160, 4
  %niter179.next.3 = add i64 %niter179, 4
  %niter179.ncmp.3 = icmp eq i64 %niter179.next.3, %unroll_iter178
  br i1 %niter179.ncmp.3, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph146.split.us, !llvm.loop !28

.lr.ph.split:                                     ; preds = %.lr.ph, %204
  %171 = phi ptr [ %198, %204 ], [ %4, %.lr.ph ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %204 ], [ 0, %.lr.ph ]
  %172 = tail call noalias ptr @malloc(i64 noundef %18) #4
  %173 = getelementptr inbounds i8, ptr %171, i64 120
  %174 = load ptr, ptr %173, align 8, !tbaa !25
  %175 = getelementptr inbounds ptr, ptr %174, i64 %indvars.iv
  store ptr %172, ptr %175, align 8, !tbaa !5
  %176 = load ptr, ptr %2, align 8, !tbaa !5
  %177 = getelementptr inbounds i8, ptr %176, i64 120
  %178 = load ptr, ptr %177, align 8, !tbaa !25
  %179 = getelementptr inbounds ptr, ptr %178, i64 %indvars.iv
  %180 = load ptr, ptr %179, align 8, !tbaa !5
  %181 = icmp eq ptr %180, null
  br i1 %181, label %.loopexit.sink.split, label %182

182:                                              ; preds = %.lr.ph.split
  %183 = tail call noalias ptr @malloc(i64 noundef %18) #4
  %184 = getelementptr inbounds i8, ptr %176, i64 16
  %185 = load ptr, ptr %184, align 8, !tbaa !13
  %186 = getelementptr inbounds ptr, ptr %185, i64 %indvars.iv
  store ptr %183, ptr %186, align 8, !tbaa !5
  %187 = load ptr, ptr %2, align 8, !tbaa !5
  %188 = getelementptr inbounds i8, ptr %187, i64 16
  %189 = load ptr, ptr %188, align 8, !tbaa !13
  %190 = getelementptr inbounds ptr, ptr %189, i64 %indvars.iv
  %191 = load ptr, ptr %190, align 8, !tbaa !5
  %192 = icmp eq ptr %191, null
  br i1 %192, label %.loopexit.sink.split, label %193

193:                                              ; preds = %182
  %194 = tail call noalias ptr @malloc(i64 noundef %18) #4
  %195 = getelementptr inbounds i8, ptr %187, i64 8
  %196 = load ptr, ptr %195, align 8, !tbaa !12
  %197 = getelementptr inbounds ptr, ptr %196, i64 %indvars.iv
  store ptr %194, ptr %197, align 8, !tbaa !5
  %198 = load ptr, ptr %2, align 8, !tbaa !5
  %199 = getelementptr inbounds i8, ptr %198, i64 8
  %200 = load ptr, ptr %199, align 8, !tbaa !12
  %201 = getelementptr inbounds ptr, ptr %200, i64 %indvars.iv
  %202 = load ptr, ptr %201, align 8, !tbaa !5
  %203 = icmp eq ptr %202, null
  br i1 %203, label %.loopexit.sink.split, label %204

204:                                              ; preds = %193
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count153
  br i1 %exitcond.not, label %.preheader, label %.lr.ph.split, !llvm.loop !26

.lr.ph146.split:                                  ; preds = %.lr.ph146.split.preheader, %213
  %205 = phi ptr [ %.pre165, %.lr.ph146.split.preheader ], [ %209, %213 ]
  %indvars.iv155 = phi i64 [ 0, %.lr.ph146.split.preheader ], [ %indvars.iv.next156, %213 ]
  %206 = tail call noalias ptr @malloc(i64 noundef %25) #4
  %207 = getelementptr inbounds ptr, ptr %205, i64 %indvars.iv155
  store ptr %206, ptr %207, align 8, !tbaa !5
  %208 = load ptr, ptr %2, align 8, !tbaa !5
  %209 = load ptr, ptr %208, align 8, !tbaa !11
  %210 = getelementptr inbounds ptr, ptr %209, i64 %indvars.iv155
  %211 = load ptr, ptr %210, align 8, !tbaa !5
  %212 = icmp eq ptr %211, null
  br i1 %212, label %.loopexit.sink.split, label %213

213:                                              ; preds = %.lr.ph146.split
  %indvars.iv.next156 = add nuw nsw i64 %indvars.iv155, 1
  %exitcond159.not = icmp eq i64 %indvars.iv.next156, %wide.trip.count158
  br i1 %exitcond159.not, label %.loopexit, label %.lr.ph146.split, !llvm.loop !28

.loopexit.sink.split:                             ; preds = %193, %182, %.lr.ph.split, %.lr.ph146.split, %110, %105, %99, %92, %85, %78, %71, %64, %57, %52, %44, %37, %32, %26, %21, %12, %3
  %.sink = phi i32 [ 116, %3 ], [ 118, %12 ], [ 119, %21 ], [ 120, %26 ], [ 121, %32 ], [ 122, %37 ], [ 123, %44 ], [ 124, %52 ], [ 125, %57 ], [ 126, %64 ], [ 127, %71 ], [ 128, %78 ], [ 129, %85 ], [ 130, %92 ], [ 131, %99 ], [ 132, %105 ], [ 133, %110 ], [ 141, %.lr.ph146.split ], [ 136, %.lr.ph.split ], [ 137, %182 ], [ 138, %193 ]
  %214 = tail call i32 @SMerror(i32 noundef %.sink, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, i32 noundef 55, i32 noundef 0, ptr noundef null) #5
  br label %.loopexit

.loopexit.loopexit.unr-lcssa:                     ; preds = %.lr.ph146.split.us, %.lr.ph146.split.us.preheader
  %indvars.iv160.unr = phi i64 [ 0, %.lr.ph146.split.us.preheader ], [ %indvars.iv.next161.3, %.lr.ph146.split.us ]
  %lcmp.mod177.not = icmp eq i64 %xtraiter176, 0
  br i1 %lcmp.mod177.not, label %.loopexit, label %.lr.ph146.split.us.epil

.lr.ph146.split.us.epil:                          ; preds = %.loopexit.loopexit.unr-lcssa, %.lr.ph146.split.us.epil
  %indvars.iv160.epil = phi i64 [ %indvars.iv.next161.epil, %.lr.ph146.split.us.epil ], [ %indvars.iv160.unr, %.loopexit.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph146.split.us.epil ], [ 0, %.loopexit.loopexit.unr-lcssa ]
  %215 = load ptr, ptr %2, align 8, !tbaa !5
  %216 = load ptr, ptr %215, align 8, !tbaa !11
  %217 = getelementptr inbounds ptr, ptr %216, i64 %indvars.iv160.epil
  store ptr null, ptr %217, align 8, !tbaa !5
  %indvars.iv.next161.epil = add nuw nsw i64 %indvars.iv160.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter176
  br i1 %epil.iter.cmp.not, label %.loopexit, label %.lr.ph146.split.us.epil, !llvm.loop !29

.loopexit:                                        ; preds = %213, %.loopexit.loopexit.unr-lcssa, %.lr.ph146.split.us.epil, %.loopexit.sink.split, %.preheader.thread166, %.preheader.thread, %.preheader
  %.0 = phi i32 [ 0, %.preheader ], [ 0, %.preheader.thread ], [ 0, %.preheader.thread166 ], [ %214, %.loopexit.sink.split ], [ 0, %.lr.ph146.split.us.epil ], [ 0, %.loopexit.loopexit.unr-lcssa ], [ 0, %213 ]
  ret i32 %.0
}

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

attributes #0 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "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 = { "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 = { 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 #3 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { nounwind allocsize(0) }
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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !6, i64 40}
!10 = !{!"__SMlp", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120}
!11 = !{!10, !6, i64 0}
!12 = !{!10, !6, i64 8}
!13 = !{!10, !6, i64 16}
!14 = !{!10, !6, i64 24}
!15 = !{!10, !6, i64 56}
!16 = !{!10, !6, i64 48}
!17 = !{!10, !6, i64 64}
!18 = !{!10, !6, i64 32}
!19 = !{!10, !6, i64 72}
!20 = !{!10, !6, i64 80}
!21 = !{!10, !6, i64 88}
!22 = !{!10, !6, i64 96}
!23 = !{!10, !6, i64 104}
!24 = !{!10, !6, i64 112}
!25 = !{!10, !6, i64 120}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = distinct !{!28, !27}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.unroll.disable"}


; Effective O3 passes: BDCEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass