; LLVM IR from QiaoLiuHit/LSOTB-TIR :: vlfeat-0.9.19/vl (mser)

; 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._VlMserFilt = type { i32, ptr, i32, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, i32, i32, i32, i32, ptr, ptr, i32, i32, i32, i32, i32, double, double, double, double, %struct._VlMserStats }
%struct._VlMserStats = type { i32, i32, i32, i32, i32, i32 }
%struct._VlMserReg = type { i32, i32, i32, i32 }
%struct._VlMserExtrReg = type { i32, i32, i8, i32, i32, float, i32 }

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

declare ptr @vl_malloc(i64 noundef) #1

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

declare void @vl_free(ptr noundef) #1

; Function Attrs: nounwind uwtable
define dso_local void @vl_mser_process(ptr noundef %0, ptr noundef %1) #2 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca 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 [256 x i32], align 16
  %28 = alloca i8, align 1
  %29 = alloca i8, align 1
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i8, align 1
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i8, align 1
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i8, align 1
  %45 = alloca i32, align 4
  %46 = alloca i8, align 1
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i8, align 1
  %59 = alloca float, align 4
  %60 = alloca i8, align 1
  %61 = alloca float, align 4
  %62 = alloca i32, align 4
  %63 = alloca float, align 4
  %64 = alloca float, align 4
  %65 = alloca float, align 4
  %66 = alloca float, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca float, align 4
  %71 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #5
  %72 = load ptr, ptr %3, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct._VlMserFilt, ptr %72, i32 0, i32 2
  %74 = load i32, ptr %73, align 8, !tbaa !9
  store i32 %74, ptr %5, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #5
  %75 = load ptr, ptr %3, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct._VlMserFilt, ptr %75, i32 0, i32 6
  %77 = load ptr, ptr %76, align 8, !tbaa !15
  store ptr %77, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #5
  %78 = load ptr, ptr %3, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct._VlMserFilt, ptr %78, i32 0, i32 7
  %80 = load ptr, ptr %79, align 8, !tbaa !16
  store ptr %80, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #5
  %81 = load ptr, ptr %3, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct._VlMserFilt, ptr %81, i32 0, i32 0
  %83 = load i32, ptr %82, align 8, !tbaa !17
  store i32 %83, ptr %8, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  %84 = load ptr, ptr %3, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct._VlMserFilt, ptr %84, i32 0, i32 1
  %86 = load ptr, ptr %85, align 8, !tbaa !18
  store ptr %86, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  %87 = load ptr, ptr %3, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct._VlMserFilt, ptr %87, i32 0, i32 3
  %89 = load ptr, ptr %88, align 8, !tbaa !19
  store ptr %89, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  %90 = load ptr, ptr %3, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct._VlMserFilt, ptr %90, i32 0, i32 4
  %92 = load ptr, ptr %91, align 8, !tbaa !20
  store ptr %92, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  %93 = load ptr, ptr %3, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct._VlMserFilt, ptr %93, i32 0, i32 5
  %95 = load ptr, ptr %94, align 8, !tbaa !21
  store ptr %95, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  %96 = load ptr, ptr %3, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct._VlMserFilt, ptr %96, i32 0, i32 9
  %98 = load ptr, ptr %97, align 8, !tbaa !22
  store ptr %98, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  %99 = load ptr, ptr %3, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct._VlMserFilt, ptr %99, i32 0, i32 10
  %101 = load ptr, ptr %100, align 8, !tbaa !23
  store ptr %101, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  %102 = load ptr, ptr %3, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct._VlMserFilt, ptr %102, i32 0, i32 11
  %104 = load ptr, ptr %103, align 8, !tbaa !24
  store ptr %104, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  %105 = load ptr, ptr %3, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct._VlMserFilt, ptr %105, i32 0, i32 22
  %107 = load i32, ptr %106, align 8, !tbaa !25
  store i32 %107, ptr %16, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  store i32 0, ptr %17, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  store i32 0, ptr %18, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  store i32 0, ptr %19, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  store i32 0, ptr %20, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  store i32 0, ptr %21, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  store i32 0, ptr %22, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  store i32 0, ptr %23, align 4, !tbaa !14
  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
  %108 = load ptr, ptr %3, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct._VlMserFilt, ptr %108, i32 0, i32 19
  store i32 0, ptr %109, align 4, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 1024, ptr %27) #5
  %110 = getelementptr inbounds [256 x i32], ptr %27, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %110, i8 0, i64 1024, i1 false)
  store i32 0, ptr %24, align 4, !tbaa !14
  br label %111

111:                                              ; preds = %126, %2
  %112 = load i32, ptr %24, align 4, !tbaa !14
  %113 = load i32, ptr %5, align 4, !tbaa !14
  %114 = icmp slt i32 %112, %113
  br i1 %114, label %115, label %129

115:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #5
  %116 = load ptr, ptr %4, align 8, !tbaa !5
  %117 = load i32, ptr %24, align 4, !tbaa !14
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds i8, ptr %116, i64 %118
  %120 = load i8, ptr %119, align 1, !tbaa !27
  store i8 %120, ptr %28, align 1, !tbaa !27
  %121 = load i8, ptr %28, align 1, !tbaa !27
  %122 = zext i8 %121 to i64
  %123 = getelementptr inbounds [256 x i32], ptr %27, i64 0, i64 %122
  %124 = load i32, ptr %123, align 4, !tbaa !14
  %125 = add i32 %124, 1
  store i32 %125, ptr %123, align 4, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #5
  br label %126

126:                                              ; preds = %115
  %127 = load i32, ptr %24, align 4, !tbaa !14
  %128 = add nsw i32 %127, 1
  store i32 %128, ptr %24, align 4, !tbaa !14
  br label %111, !llvm.loop !28

129:                                              ; preds = %111
  store i32 1, ptr %24, align 4, !tbaa !14
  br label %130

130:                                              ; preds = %144, %129
  %131 = load i32, ptr %24, align 4, !tbaa !14
  %132 = icmp slt i32 %131, 256
  br i1 %132, label %133, label %147

133:                                              ; preds = %130
  %134 = load i32, ptr %24, align 4, !tbaa !14
  %135 = sub nsw i32 %134, 1
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds [256 x i32], ptr %27, i64 0, i64 %136
  %138 = load i32, ptr %137, align 4, !tbaa !14
  %139 = load i32, ptr %24, align 4, !tbaa !14
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds [256 x i32], ptr %27, i64 0, i64 %140
  %142 = load i32, ptr %141, align 4, !tbaa !14
  %143 = add i32 %142, %138
  store i32 %143, ptr %141, align 4, !tbaa !14
  br label %144

144:                                              ; preds = %133
  %145 = load i32, ptr %24, align 4, !tbaa !14
  %146 = add nsw i32 %145, 1
  store i32 %146, ptr %24, align 4, !tbaa !14
  br label %130, !llvm.loop !30

147:                                              ; preds = %130
  %148 = load i32, ptr %5, align 4, !tbaa !14
  store i32 %148, ptr %24, align 4, !tbaa !14
  br label %149

149:                                              ; preds = %152, %147
  %150 = load i32, ptr %24, align 4, !tbaa !14
  %151 = icmp sge i32 %150, 1
  br i1 %151, label %152, label %169

152:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #5
  %153 = load ptr, ptr %4, align 8, !tbaa !5
  %154 = load i32, ptr %24, align 4, !tbaa !14
  %155 = add nsw i32 %154, -1
  store i32 %155, ptr %24, align 4, !tbaa !14
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds i8, ptr %153, i64 %156
  %158 = load i8, ptr %157, align 1, !tbaa !27
  store i8 %158, ptr %29, align 1, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #5
  %159 = load i8, ptr %29, align 1, !tbaa !27
  %160 = zext i8 %159 to i64
  %161 = getelementptr inbounds [256 x i32], ptr %27, i64 0, i64 %160
  %162 = load i32, ptr %161, align 4, !tbaa !14
  %163 = add i32 %162, -1
  store i32 %163, ptr %161, align 4, !tbaa !14
  store i32 %163, ptr %30, align 4, !tbaa !14
  %164 = load i32, ptr %24, align 4, !tbaa !14
  %165 = load ptr, ptr %6, align 8, !tbaa !5
  %166 = load i32, ptr %30, align 4, !tbaa !14
  %167 = zext i32 %166 to i64
  %168 = getelementptr inbounds i32, ptr %165, i64 %167
  store i32 %164, ptr %168, align 4, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #5
  br label %149, !llvm.loop !31

169:                                              ; preds = %149
  call void @llvm.lifetime.end.p0(i64 1024, ptr %27) #5
  store i32 0, ptr %24, align 4, !tbaa !14
  br label %170

170:                                              ; preds = %180, %169
  %171 = load i32, ptr %24, align 4, !tbaa !14
  %172 = load i32, ptr %5, align 4, !tbaa !14
  %173 = icmp slt i32 %171, %172
  br i1 %173, label %174, label %183

174:                                              ; preds = %170
  %175 = load ptr, ptr %13, align 8, !tbaa !5
  %176 = load i32, ptr %24, align 4, !tbaa !14
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds %struct._VlMserReg, ptr %175, i64 %177
  %179 = getelementptr inbounds %struct._VlMserReg, ptr %178, i32 0, i32 0
  store i32 -1, ptr %179, align 4, !tbaa !32
  br label %180

180:                                              ; preds = %174
  %181 = load i32, ptr %24, align 4, !tbaa !14
  %182 = add nsw i32 %181, 1
  store i32 %182, ptr %24, align 4, !tbaa !14
  br label %170, !llvm.loop !34

183:                                              ; preds = %170
  store i32 0, ptr %24, align 4, !tbaa !14
  br label %184

184:                                              ; preds = %490, %183
  %185 = load i32, ptr %24, align 4, !tbaa !14
  %186 = load i32, ptr %5, align 4, !tbaa !14
  %187 = icmp slt i32 %185, %186
  br i1 %187, label %188, label %493

188:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #5
  %189 = load ptr, ptr %6, align 8, !tbaa !5
  %190 = load i32, ptr %24, align 4, !tbaa !14
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds i32, ptr %189, i64 %191
  %193 = load i32, ptr %192, align 4, !tbaa !14
  store i32 %193, ptr %31, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #5
  %194 = load ptr, ptr %4, align 8, !tbaa !5
  %195 = load i32, ptr %31, align 4, !tbaa !14
  %196 = zext i32 %195 to i64
  %197 = getelementptr inbounds i8, ptr %194, i64 %196
  %198 = load i8, ptr %197, align 1, !tbaa !27
  store i8 %198, ptr %32, align 1, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #5
  %199 = load i32, ptr %31, align 4, !tbaa !14
  %200 = load ptr, ptr %13, align 8, !tbaa !5
  %201 = load i32, ptr %31, align 4, !tbaa !14
  %202 = zext i32 %201 to i64
  %203 = getelementptr inbounds %struct._VlMserReg, ptr %200, i64 %202
  %204 = getelementptr inbounds %struct._VlMserReg, ptr %203, i32 0, i32 0
  store i32 %199, ptr %204, align 4, !tbaa !32
  %205 = load i32, ptr %31, align 4, !tbaa !14
  %206 = load ptr, ptr %13, align 8, !tbaa !5
  %207 = load i32, ptr %31, align 4, !tbaa !14
  %208 = zext i32 %207 to i64
  %209 = getelementptr inbounds %struct._VlMserReg, ptr %206, i64 %208
  %210 = getelementptr inbounds %struct._VlMserReg, ptr %209, i32 0, i32 1
  store i32 %205, ptr %210, align 4, !tbaa !35
  %211 = load ptr, ptr %13, align 8, !tbaa !5
  %212 = load i32, ptr %31, align 4, !tbaa !14
  %213 = zext i32 %212 to i64
  %214 = getelementptr inbounds %struct._VlMserReg, ptr %211, i64 %213
  %215 = getelementptr inbounds %struct._VlMserReg, ptr %214, i32 0, i32 3
  store i32 1, ptr %215, align 4, !tbaa !36
  %216 = load ptr, ptr %13, align 8, !tbaa !5
  %217 = load i32, ptr %31, align 4, !tbaa !14
  %218 = zext i32 %217 to i64
  %219 = getelementptr inbounds %struct._VlMserReg, ptr %216, i64 %218
  %220 = getelementptr inbounds %struct._VlMserReg, ptr %219, i32 0, i32 2
  store i32 1, ptr %220, align 4, !tbaa !37
  %221 = load i32, ptr %31, align 4, !tbaa !14
  store i32 %221, ptr %33, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  %222 = load i32, ptr %31, align 4, !tbaa !14
  store i32 %222, ptr %34, align 4, !tbaa !14
  %223 = load i32, ptr %8, align 4, !tbaa !14
  %224 = sub nsw i32 %223, 1
  store i32 %224, ptr %26, align 4, !tbaa !14
  br label %225

225:                                              ; preds = %251, %188
  %226 = load i32, ptr %26, align 4, !tbaa !14
  %227 = icmp sge i32 %226, 0
  br i1 %227, label %228, label %254

228:                                              ; preds = %225
  %229 = load ptr, ptr %11, align 8, !tbaa !5
  %230 = load i32, ptr %26, align 4, !tbaa !14
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds i32, ptr %229, i64 %231
  store i32 -1, ptr %232, align 4, !tbaa !14
  %233 = load i32, ptr %34, align 4, !tbaa !14
  %234 = load ptr, ptr %12, align 8, !tbaa !5
  %235 = load i32, ptr %26, align 4, !tbaa !14
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds i32, ptr %234, i64 %236
  %238 = load i32, ptr %237, align 4, !tbaa !14
  %239 = udiv i32 %233, %238
  %240 = load ptr, ptr %10, align 8, !tbaa !5
  %241 = load i32, ptr %26, align 4, !tbaa !14
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds i32, ptr %240, i64 %242
  store i32 %239, ptr %243, align 4, !tbaa !14
  %244 = load i32, ptr %34, align 4, !tbaa !14
  %245 = load ptr, ptr %12, align 8, !tbaa !5
  %246 = load i32, ptr %26, align 4, !tbaa !14
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds i32, ptr %245, i64 %247
  %249 = load i32, ptr %248, align 4, !tbaa !14
  %250 = urem i32 %244, %249
  store i32 %250, ptr %34, align 4, !tbaa !14
  br label %251

251:                                              ; preds = %228
  %252 = load i32, ptr %26, align 4, !tbaa !14
  %253 = add nsw i32 %252, -1
  store i32 %253, ptr %26, align 4, !tbaa !14
  br label %225, !llvm.loop !38

254:                                              ; preds = %225
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  br label %255

255:                                              ; preds = %488, %254
  br label %256

256:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #5
  store i32 0, ptr %35, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #5
  store i32 1, ptr %36, align 4, !tbaa !14
  store i32 0, ptr %26, align 4, !tbaa !14
  br label %257

257:                                              ; preds = %302, %256
  %258 = load i32, ptr %26, align 4, !tbaa !14
  %259 = load i32, ptr %8, align 4, !tbaa !14
  %260 = icmp slt i32 %258, %259
  br i1 %260, label %261, label %264

261:                                              ; preds = %257
  %262 = load i32, ptr %36, align 4, !tbaa !14
  %263 = icmp ne i32 %262, 0
  br label %264

264:                                              ; preds = %261, %257
  %265 = phi i1 [ false, %257 ], [ %263, %261 ]
  br i1 %265, label %266, label %305

266:                                              ; preds = %264
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #5
  %267 = load ptr, ptr %11, align 8, !tbaa !5
  %268 = load i32, ptr %26, align 4, !tbaa !14
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds i32, ptr %267, i64 %269
  %271 = load i32, ptr %270, align 4, !tbaa !14
  %272 = load ptr, ptr %10, align 8, !tbaa !5
  %273 = load i32, ptr %26, align 4, !tbaa !14
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds i32, ptr %272, i64 %274
  %276 = load i32, ptr %275, align 4, !tbaa !14
  %277 = add nsw i32 %271, %276
  store i32 %277, ptr %37, align 4, !tbaa !14
  %278 = load i32, ptr %37, align 4, !tbaa !14
  %279 = icmp sle i32 0, %278
  br i1 %279, label %280, label %288

280:                                              ; preds = %266
  %281 = load i32, ptr %37, align 4, !tbaa !14
  %282 = load ptr, ptr %9, align 8, !tbaa !5
  %283 = load i32, ptr %26, align 4, !tbaa !14
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds i32, ptr %282, i64 %284
  %286 = load i32, ptr %285, align 4, !tbaa !14
  %287 = icmp slt i32 %281, %286
  br label %288

288:                                              ; preds = %280, %266
  %289 = phi i1 [ false, %266 ], [ %287, %280 ]
  %290 = zext i1 %289 to i32
  %291 = load i32, ptr %36, align 4, !tbaa !14
  %292 = and i32 %291, %290
  store i32 %292, ptr %36, align 4, !tbaa !14
  %293 = load i32, ptr %37, align 4, !tbaa !14
  %294 = load ptr, ptr %12, align 8, !tbaa !5
  %295 = load i32, ptr %26, align 4, !tbaa !14
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds i32, ptr %294, i64 %296
  %298 = load i32, ptr %297, align 4, !tbaa !14
  %299 = mul nsw i32 %293, %298
  %300 = load i32, ptr %35, align 4, !tbaa !14
  %301 = add i32 %300, %299
  store i32 %301, ptr %35, align 4, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  br label %302

302:                                              ; preds = %288
  %303 = load i32, ptr %26, align 4, !tbaa !14
  %304 = add nsw i32 %303, 1
  store i32 %304, ptr %26, align 4, !tbaa !14
  br label %257, !llvm.loop !39

305:                                              ; preds = %264
  %306 = load i32, ptr %36, align 4, !tbaa !14
  %307 = icmp ne i32 %306, 0
  br i1 %307, label %308, label %465

308:                                              ; preds = %305
  %309 = load i32, ptr %35, align 4, !tbaa !14
  %310 = load i32, ptr %31, align 4, !tbaa !14
  %311 = icmp ne i32 %309, %310
  br i1 %311, label %312, label %465

312:                                              ; preds = %308
  %313 = load ptr, ptr %13, align 8, !tbaa !5
  %314 = load i32, ptr %35, align 4, !tbaa !14
  %315 = zext i32 %314 to i64
  %316 = getelementptr inbounds %struct._VlMserReg, ptr %313, i64 %315
  %317 = getelementptr inbounds %struct._VlMserReg, ptr %316, i32 0, i32 0
  %318 = load i32, ptr %317, align 4, !tbaa !32
  %319 = zext i32 %318 to i64
  %320 = icmp ne i64 %319, 4294967295
  br i1 %320, label %321, label %465

321:                                              ; preds = %312
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #5
  store i8 0, ptr %38, align 1, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #5
  store i32 0, ptr %39, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #5
  %322 = load ptr, ptr %13, align 8, !tbaa !5
  %323 = load i32, ptr %33, align 4, !tbaa !14
  %324 = zext i32 %323 to i64
  %325 = getelementptr inbounds %struct._VlMserReg, ptr %322, i64 %324
  %326 = getelementptr inbounds %struct._VlMserReg, ptr %325, i32 0, i32 2
  %327 = load i32, ptr %326, align 4, !tbaa !37
  store i32 %327, ptr %40, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #5
  %328 = load ptr, ptr %13, align 8, !tbaa !5
  %329 = load i32, ptr %39, align 4, !tbaa !14
  %330 = zext i32 %329 to i64
  %331 = getelementptr inbounds %struct._VlMserReg, ptr %328, i64 %330
  %332 = getelementptr inbounds %struct._VlMserReg, ptr %331, i32 0, i32 2
  %333 = load i32, ptr %332, align 4, !tbaa !37
  store i32 %333, ptr %41, align 4, !tbaa !14
  %334 = load ptr, ptr %13, align 8, !tbaa !5
  %335 = load i32, ptr %31, align 4, !tbaa !14
  %336 = call i32 @climb(ptr noundef %334, i32 noundef %335)
  store i32 %336, ptr %33, align 4, !tbaa !14
  %337 = load ptr, ptr %13, align 8, !tbaa !5
  %338 = load i32, ptr %35, align 4, !tbaa !14
  %339 = call i32 @climb(ptr noundef %337, i32 noundef %338)
  store i32 %339, ptr %39, align 4, !tbaa !14
  %340 = load i32, ptr %33, align 4, !tbaa !14
  %341 = load i32, ptr %39, align 4, !tbaa !14
  %342 = icmp ne i32 %340, %341
  br i1 %342, label %343, label %464

343:                                              ; preds = %321
  %344 = load ptr, ptr %4, align 8, !tbaa !5
  %345 = load i32, ptr %39, align 4, !tbaa !14
  %346 = zext i32 %345 to i64
  %347 = getelementptr inbounds i8, ptr %344, i64 %346
  %348 = load i8, ptr %347, align 1, !tbaa !27
  store i8 %348, ptr %38, align 1, !tbaa !27
  %349 = load i8, ptr %38, align 1, !tbaa !27
  %350 = zext i8 %349 to i32
  %351 = load i8, ptr %32, align 1, !tbaa !27
  %352 = zext i8 %351 to i32
  %353 = icmp eq i32 %350, %352
  br i1 %353, label %354, label %406

354:                                              ; preds = %343
  %355 = load i32, ptr %40, align 4, !tbaa !14
  %356 = load i32, ptr %41, align 4, !tbaa !14
  %357 = icmp slt i32 %355, %356
  br i1 %357, label %358, label %406

358:                                              ; preds = %354
  %359 = load i32, ptr %39, align 4, !tbaa !14
  %360 = load ptr, ptr %13, align 8, !tbaa !5
  %361 = load i32, ptr %33, align 4, !tbaa !14
  %362 = zext i32 %361 to i64
  %363 = getelementptr inbounds %struct._VlMserReg, ptr %360, i64 %362
  %364 = getelementptr inbounds %struct._VlMserReg, ptr %363, i32 0, i32 0
  store i32 %359, ptr %364, align 4, !tbaa !32
  %365 = load i32, ptr %39, align 4, !tbaa !14
  %366 = load ptr, ptr %13, align 8, !tbaa !5
  %367 = load i32, ptr %33, align 4, !tbaa !14
  %368 = zext i32 %367 to i64
  %369 = getelementptr inbounds %struct._VlMserReg, ptr %366, i64 %368
  %370 = getelementptr inbounds %struct._VlMserReg, ptr %369, i32 0, i32 1
  store i32 %365, ptr %370, align 4, !tbaa !35
  %371 = load ptr, ptr %13, align 8, !tbaa !5
  %372 = load i32, ptr %33, align 4, !tbaa !14
  %373 = zext i32 %372 to i64
  %374 = getelementptr inbounds %struct._VlMserReg, ptr %371, i64 %373
  %375 = getelementptr inbounds %struct._VlMserReg, ptr %374, i32 0, i32 3
  %376 = load i32, ptr %375, align 4, !tbaa !36
  %377 = load ptr, ptr %13, align 8, !tbaa !5
  %378 = load i32, ptr %39, align 4, !tbaa !14
  %379 = zext i32 %378 to i64
  %380 = getelementptr inbounds %struct._VlMserReg, ptr %377, i64 %379
  %381 = getelementptr inbounds %struct._VlMserReg, ptr %380, i32 0, i32 3
  %382 = load i32, ptr %381, align 4, !tbaa !36
  %383 = add i32 %382, %376
  store i32 %383, ptr %381, align 4, !tbaa !36
  %384 = load i32, ptr %41, align 4, !tbaa !14
  %385 = load i32, ptr %40, align 4, !tbaa !14
  %386 = add nsw i32 %385, 1
  %387 = icmp sgt i32 %384, %386
  br i1 %387, label %388, label %390

388:                                              ; preds = %358
  %389 = load i32, ptr %41, align 4, !tbaa !14
  br label %393

390:                                              ; preds = %358
  %391 = load i32, ptr %40, align 4, !tbaa !14
  %392 = add nsw i32 %391, 1
  br label %393

393:                                              ; preds = %390, %388
  %394 = phi i32 [ %389, %388 ], [ %392, %390 ]
  %395 = load ptr, ptr %13, align 8, !tbaa !5
  %396 = load i32, ptr %39, align 4, !tbaa !14
  %397 = zext i32 %396 to i64
  %398 = getelementptr inbounds %struct._VlMserReg, ptr %395, i64 %397
  %399 = getelementptr inbounds %struct._VlMserReg, ptr %398, i32 0, i32 2
  store i32 %394, ptr %399, align 4, !tbaa !37
  %400 = load i32, ptr %33, align 4, !tbaa !14
  %401 = load ptr, ptr %7, align 8, !tbaa !5
  %402 = load i32, ptr %17, align 4, !tbaa !14
  %403 = add nsw i32 %402, 1
  store i32 %403, ptr %17, align 4, !tbaa !14
  %404 = sext i32 %402 to i64
  %405 = getelementptr inbounds i32, ptr %401, i64 %404
  store i32 %400, ptr %405, align 4, !tbaa !14
  br label %463

406:                                              ; preds = %354, %343
  %407 = load i32, ptr %33, align 4, !tbaa !14
  %408 = load ptr, ptr %13, align 8, !tbaa !5
  %409 = load i32, ptr %39, align 4, !tbaa !14
  %410 = zext i32 %409 to i64
  %411 = getelementptr inbounds %struct._VlMserReg, ptr %408, i64 %410
  %412 = getelementptr inbounds %struct._VlMserReg, ptr %411, i32 0, i32 0
  store i32 %407, ptr %412, align 4, !tbaa !32
  %413 = load i32, ptr %33, align 4, !tbaa !14
  %414 = load ptr, ptr %13, align 8, !tbaa !5
  %415 = load i32, ptr %39, align 4, !tbaa !14
  %416 = zext i32 %415 to i64
  %417 = getelementptr inbounds %struct._VlMserReg, ptr %414, i64 %416
  %418 = getelementptr inbounds %struct._VlMserReg, ptr %417, i32 0, i32 1
  store i32 %413, ptr %418, align 4, !tbaa !35
  %419 = load ptr, ptr %13, align 8, !tbaa !5
  %420 = load i32, ptr %39, align 4, !tbaa !14
  %421 = zext i32 %420 to i64
  %422 = getelementptr inbounds %struct._VlMserReg, ptr %419, i64 %421
  %423 = getelementptr inbounds %struct._VlMserReg, ptr %422, i32 0, i32 3
  %424 = load i32, ptr %423, align 4, !tbaa !36
  %425 = load ptr, ptr %13, align 8, !tbaa !5
  %426 = load i32, ptr %33, align 4, !tbaa !14
  %427 = zext i32 %426 to i64
  %428 = getelementptr inbounds %struct._VlMserReg, ptr %425, i64 %427
  %429 = getelementptr inbounds %struct._VlMserReg, ptr %428, i32 0, i32 3
  %430 = load i32, ptr %429, align 4, !tbaa !36
  %431 = add i32 %430, %424
  store i32 %431, ptr %429, align 4, !tbaa !36
  %432 = load i32, ptr %40, align 4, !tbaa !14
  %433 = load i32, ptr %41, align 4, !tbaa !14
  %434 = add nsw i32 %433, 1
  %435 = icmp sgt i32 %432, %434
  br i1 %435, label %436, label %438

436:                                              ; preds = %406
  %437 = load i32, ptr %40, align 4, !tbaa !14
  br label %441

438:                                              ; preds = %406
  %439 = load i32, ptr %41, align 4, !tbaa !14
  %440 = add nsw i32 %439, 1
  br label %441

441:                                              ; preds = %438, %436
  %442 = phi i32 [ %437, %436 ], [ %440, %438 ]
  %443 = load ptr, ptr %13, align 8, !tbaa !5
  %444 = load i32, ptr %33, align 4, !tbaa !14
  %445 = zext i32 %444 to i64
  %446 = getelementptr inbounds %struct._VlMserReg, ptr %443, i64 %445
  %447 = getelementptr inbounds %struct._VlMserReg, ptr %446, i32 0, i32 2
  store i32 %442, ptr %447, align 4, !tbaa !37
  %448 = load i32, ptr %39, align 4, !tbaa !14
  %449 = load ptr, ptr %7, align 8, !tbaa !5
  %450 = load i32, ptr %17, align 4, !tbaa !14
  %451 = add nsw i32 %450, 1
  store i32 %451, ptr %17, align 4, !tbaa !14
  %452 = sext i32 %450 to i64
  %453 = getelementptr inbounds i32, ptr %449, i64 %452
  store i32 %448, ptr %453, align 4, !tbaa !14
  %454 = load i8, ptr %38, align 1, !tbaa !27
  %455 = zext i8 %454 to i32
  %456 = load i8, ptr %32, align 1, !tbaa !27
  %457 = zext i8 %456 to i32
  %458 = icmp ne i32 %455, %457
  br i1 %458, label %459, label %462

459:                                              ; preds = %441
  %460 = load i32, ptr %18, align 4, !tbaa !14
  %461 = add nsw i32 %460, 1
  store i32 %461, ptr %18, align 4, !tbaa !14
  br label %462

462:                                              ; preds = %459, %441
  br label %463

463:                                              ; preds = %462, %393
  br label %464

464:                                              ; preds = %463, %321
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #5
  br label %465

465:                                              ; preds = %464, %312, %308, %305
  store i32 0, ptr %26, align 4, !tbaa !14
  br label %466

466:                                              ; preds = %484, %465
  %467 = load ptr, ptr %11, align 8, !tbaa !5
  %468 = load i32, ptr %26, align 4, !tbaa !14
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds i32, ptr %467, i64 %469
  %471 = load i32, ptr %470, align 4, !tbaa !14
  %472 = add nsw i32 %471, 1
  store i32 %472, ptr %470, align 4, !tbaa !14
  %473 = icmp sgt i32 %472, 1
  br i1 %473, label %474, label %485

474:                                              ; preds = %466
  %475 = load ptr, ptr %11, align 8, !tbaa !5
  %476 = load i32, ptr %26, align 4, !tbaa !14
  %477 = add nsw i32 %476, 1
  store i32 %477, ptr %26, align 4, !tbaa !14
  %478 = sext i32 %476 to i64
  %479 = getelementptr inbounds i32, ptr %475, i64 %478
  store i32 -1, ptr %479, align 4, !tbaa !14
  %480 = load i32, ptr %26, align 4, !tbaa !14
  %481 = load i32, ptr %8, align 4, !tbaa !14
  %482 = icmp eq i32 %480, %481
  br i1 %482, label %483, label %484

483:                                              ; preds = %474
  store i32 26, ptr %42, align 4
  br label %486

484:                                              ; preds = %474
  br label %466, !llvm.loop !40

485:                                              ; preds = %466
  store i32 0, ptr %42, align 4
  br label %486

486:                                              ; preds = %485, %483
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  %487 = load i32, ptr %42, align 4
  switch i32 %487, label %1086 [
    i32 0, label %488
    i32 26, label %489
  ]

488:                                              ; preds = %486
  br label %255

489:                                              ; preds = %486
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  br label %490

490:                                              ; preds = %489
  %491 = load i32, ptr %24, align 4, !tbaa !14
  %492 = add nsw i32 %491, 1
  store i32 %492, ptr %24, align 4, !tbaa !14
  br label %184, !llvm.loop !41

493:                                              ; preds = %184
  %494 = load i32, ptr %18, align 4, !tbaa !14
  %495 = add nsw i32 %494, 1
  store i32 %495, ptr %18, align 4, !tbaa !14
  %496 = load i32, ptr %17, align 4, !tbaa !14
  %497 = load ptr, ptr %3, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct._VlMserFilt, ptr %497, i32 0, i32 8
  store i32 %496, ptr %498, align 8, !tbaa !42
  %499 = load i32, ptr %18, align 4, !tbaa !14
  %500 = load ptr, ptr %3, align 8, !tbaa !5
  %501 = getelementptr inbounds %struct._VlMserFilt, ptr %500, i32 0, i32 27
  %502 = getelementptr inbounds %struct._VlMserStats, ptr %501, i32 0, i32 0
  store i32 %499, ptr %502, align 8, !tbaa !43
  %503 = load ptr, ptr %3, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct._VlMserFilt, ptr %503, i32 0, i32 14
  %505 = load i32, ptr %504, align 8, !tbaa !44
  %506 = load i32, ptr %18, align 4, !tbaa !14
  %507 = icmp slt i32 %505, %506
  br i1 %507, label %508, label %523

508:                                              ; preds = %493
  %509 = load ptr, ptr %14, align 8, !tbaa !5
  %510 = icmp ne ptr %509, null
  br i1 %510, label %511, label %513

511:                                              ; preds = %508
  %512 = load ptr, ptr %14, align 8, !tbaa !5
  call void @vl_free(ptr noundef %512)
  br label %513

513:                                              ; preds = %511, %508
  %514 = load i32, ptr %18, align 4, !tbaa !14
  %515 = sext i32 %514 to i64
  %516 = mul i64 28, %515
  %517 = call ptr @vl_malloc(i64 noundef %516)
  store ptr %517, ptr %14, align 8, !tbaa !5
  %518 = load ptr, ptr %3, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct._VlMserFilt, ptr %518, i32 0, i32 10
  store ptr %517, ptr %519, align 8, !tbaa !23
  %520 = load i32, ptr %18, align 4, !tbaa !14
  %521 = load ptr, ptr %3, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct._VlMserFilt, ptr %521, i32 0, i32 14
  store i32 %520, ptr %522, align 8, !tbaa !44
  br label %523

523:                                              ; preds = %513, %493
  %524 = load i32, ptr %18, align 4, !tbaa !14
  %525 = load ptr, ptr %3, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct._VlMserFilt, ptr %525, i32 0, i32 13
  store i32 %524, ptr %526, align 4, !tbaa !45
  store i32 0, ptr %18, align 4, !tbaa !14
  store i32 0, ptr %24, align 4, !tbaa !14
  br label %527

527:                                              ; preds = %616, %523
  %528 = load i32, ptr %24, align 4, !tbaa !14
  %529 = load i32, ptr %5, align 4, !tbaa !14
  %530 = icmp slt i32 %528, %529
  br i1 %530, label %531, label %619

531:                                              ; preds = %527
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #5
  %532 = load ptr, ptr %6, align 8, !tbaa !5
  %533 = load i32, ptr %24, align 4, !tbaa !14
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds i32, ptr %532, i64 %534
  %536 = load i32, ptr %535, align 4, !tbaa !14
  store i32 %536, ptr %43, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #5
  %537 = load ptr, ptr %4, align 8, !tbaa !5
  %538 = load i32, ptr %43, align 4, !tbaa !14
  %539 = zext i32 %538 to i64
  %540 = getelementptr inbounds i8, ptr %537, i64 %539
  %541 = load i8, ptr %540, align 1, !tbaa !27
  store i8 %541, ptr %44, align 1, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #5
  %542 = load ptr, ptr %13, align 8, !tbaa !5
  %543 = load i32, ptr %43, align 4, !tbaa !14
  %544 = zext i32 %543 to i64
  %545 = getelementptr inbounds %struct._VlMserReg, ptr %542, i64 %544
  %546 = getelementptr inbounds %struct._VlMserReg, ptr %545, i32 0, i32 0
  %547 = load i32, ptr %546, align 4, !tbaa !32
  store i32 %547, ptr %45, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #5
  %548 = load ptr, ptr %4, align 8, !tbaa !5
  %549 = load i32, ptr %45, align 4, !tbaa !14
  %550 = zext i32 %549 to i64
  %551 = getelementptr inbounds i8, ptr %548, i64 %550
  %552 = load i8, ptr %551, align 1, !tbaa !27
  store i8 %552, ptr %46, align 1, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #5
  %553 = load i8, ptr %46, align 1, !tbaa !27
  %554 = zext i8 %553 to i32
  %555 = load i8, ptr %44, align 1, !tbaa !27
  %556 = zext i8 %555 to i32
  %557 = icmp sgt i32 %554, %556
  br i1 %557, label %562, label %558

558:                                              ; preds = %531
  %559 = load i32, ptr %43, align 4, !tbaa !14
  %560 = load i32, ptr %45, align 4, !tbaa !14
  %561 = icmp eq i32 %559, %560
  br label %562

562:                                              ; preds = %558, %531
  %563 = phi i1 [ true, %531 ], [ %561, %558 ]
  %564 = zext i1 %563 to i32
  store i32 %564, ptr %47, align 4, !tbaa !14
  %565 = load i32, ptr %47, align 4, !tbaa !14
  %566 = icmp ne i32 %565, 0
  br i1 %566, label %567, label %609

567:                                              ; preds = %562
  %568 = load i32, ptr %43, align 4, !tbaa !14
  %569 = load ptr, ptr %14, align 8, !tbaa !5
  %570 = load i32, ptr %18, align 4, !tbaa !14
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds %struct._VlMserExtrReg, ptr %569, i64 %571
  %573 = getelementptr inbounds %struct._VlMserExtrReg, ptr %572, i32 0, i32 1
  store i32 %568, ptr %573, align 4, !tbaa !46
  %574 = load i32, ptr %18, align 4, !tbaa !14
  %575 = load ptr, ptr %14, align 8, !tbaa !5
  %576 = load i32, ptr %18, align 4, !tbaa !14
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds %struct._VlMserExtrReg, ptr %575, i64 %577
  %579 = getelementptr inbounds %struct._VlMserExtrReg, ptr %578, i32 0, i32 0
  store i32 %574, ptr %579, align 4, !tbaa !49
  %580 = load ptr, ptr %4, align 8, !tbaa !5
  %581 = load i32, ptr %43, align 4, !tbaa !14
  %582 = zext i32 %581 to i64
  %583 = getelementptr inbounds i8, ptr %580, i64 %582
  %584 = load i8, ptr %583, align 1, !tbaa !27
  %585 = load ptr, ptr %14, align 8, !tbaa !5
  %586 = load i32, ptr %18, align 4, !tbaa !14
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds %struct._VlMserExtrReg, ptr %585, i64 %587
  %589 = getelementptr inbounds %struct._VlMserExtrReg, ptr %588, i32 0, i32 2
  store i8 %584, ptr %589, align 4, !tbaa !50
  %590 = load ptr, ptr %13, align 8, !tbaa !5
  %591 = load i32, ptr %43, align 4, !tbaa !14
  %592 = zext i32 %591 to i64
  %593 = getelementptr inbounds %struct._VlMserReg, ptr %590, i64 %592
  %594 = getelementptr inbounds %struct._VlMserReg, ptr %593, i32 0, i32 3
  %595 = load i32, ptr %594, align 4, !tbaa !36
  %596 = load ptr, ptr %14, align 8, !tbaa !5
  %597 = load i32, ptr %18, align 4, !tbaa !14
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds %struct._VlMserExtrReg, ptr %596, i64 %598
  %600 = getelementptr inbounds %struct._VlMserExtrReg, ptr %599, i32 0, i32 4
  store i32 %595, ptr %600, align 4, !tbaa !51
  %601 = load i32, ptr %18, align 4, !tbaa !14
  %602 = load ptr, ptr %13, align 8, !tbaa !5
  %603 = load i32, ptr %43, align 4, !tbaa !14
  %604 = zext i32 %603 to i64
  %605 = getelementptr inbounds %struct._VlMserReg, ptr %602, i64 %604
  %606 = getelementptr inbounds %struct._VlMserReg, ptr %605, i32 0, i32 1
  store i32 %601, ptr %606, align 4, !tbaa !35
  %607 = load i32, ptr %18, align 4, !tbaa !14
  %608 = add nsw i32 %607, 1
  store i32 %608, ptr %18, align 4, !tbaa !14
  br label %615

609:                                              ; preds = %562
  %610 = load ptr, ptr %13, align 8, !tbaa !5
  %611 = load i32, ptr %43, align 4, !tbaa !14
  %612 = zext i32 %611 to i64
  %613 = getelementptr inbounds %struct._VlMserReg, ptr %610, i64 %612
  %614 = getelementptr inbounds %struct._VlMserReg, ptr %613, i32 0, i32 1
  store i32 -1, ptr %614, align 4, !tbaa !35
  br label %615

615:                                              ; preds = %609, %567
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  br label %616

616:                                              ; preds = %615
  %617 = load i32, ptr %24, align 4, !tbaa !14
  %618 = add nsw i32 %617, 1
  store i32 %618, ptr %24, align 4, !tbaa !14
  br label %527, !llvm.loop !52

619:                                              ; preds = %527
  store i32 0, ptr %24, align 4, !tbaa !14
  br label %620

620:                                              ; preds = %665, %619
  %621 = load i32, ptr %24, align 4, !tbaa !14
  %622 = load i32, ptr %18, align 4, !tbaa !14
  %623 = icmp slt i32 %621, %622
  br i1 %623, label %624, label %668

624:                                              ; preds = %620
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #5
  %625 = load ptr, ptr %14, align 8, !tbaa !5
  %626 = load i32, ptr %24, align 4, !tbaa !14
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds %struct._VlMserExtrReg, ptr %625, i64 %627
  %629 = getelementptr inbounds %struct._VlMserExtrReg, ptr %628, i32 0, i32 1
  %630 = load i32, ptr %629, align 4, !tbaa !46
  store i32 %630, ptr %48, align 4, !tbaa !14
  br label %631

631:                                              ; preds = %638, %624
  %632 = load ptr, ptr %13, align 8, !tbaa !5
  %633 = load i32, ptr %48, align 4, !tbaa !14
  %634 = zext i32 %633 to i64
  %635 = getelementptr inbounds %struct._VlMserReg, ptr %632, i64 %634
  %636 = getelementptr inbounds %struct._VlMserReg, ptr %635, i32 0, i32 0
  %637 = load i32, ptr %636, align 4, !tbaa !32
  store i32 %637, ptr %48, align 4, !tbaa !14
  br label %638

638:                                              ; preds = %631
  %639 = load ptr, ptr %13, align 8, !tbaa !5
  %640 = load i32, ptr %48, align 4, !tbaa !14
  %641 = zext i32 %640 to i64
  %642 = getelementptr inbounds %struct._VlMserReg, ptr %639, i64 %641
  %643 = getelementptr inbounds %struct._VlMserReg, ptr %642, i32 0, i32 1
  %644 = load i32, ptr %643, align 4, !tbaa !35
  %645 = zext i32 %644 to i64
  %646 = icmp eq i64 %645, 4294967295
  br i1 %646, label %631, label %647, !llvm.loop !53

647:                                              ; preds = %638
  %648 = load ptr, ptr %13, align 8, !tbaa !5
  %649 = load i32, ptr %48, align 4, !tbaa !14
  %650 = zext i32 %649 to i64
  %651 = getelementptr inbounds %struct._VlMserReg, ptr %648, i64 %650
  %652 = getelementptr inbounds %struct._VlMserReg, ptr %651, i32 0, i32 1
  %653 = load i32, ptr %652, align 4, !tbaa !35
  %654 = load ptr, ptr %14, align 8, !tbaa !5
  %655 = load i32, ptr %24, align 4, !tbaa !14
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds %struct._VlMserExtrReg, ptr %654, i64 %656
  %658 = getelementptr inbounds %struct._VlMserExtrReg, ptr %657, i32 0, i32 0
  store i32 %653, ptr %658, align 4, !tbaa !49
  %659 = load i32, ptr %24, align 4, !tbaa !14
  %660 = load ptr, ptr %14, align 8, !tbaa !5
  %661 = load i32, ptr %24, align 4, !tbaa !14
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds %struct._VlMserExtrReg, ptr %660, i64 %662
  %664 = getelementptr inbounds %struct._VlMserExtrReg, ptr %663, i32 0, i32 3
  store i32 %659, ptr %664, align 4, !tbaa !54
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  br label %665

665:                                              ; preds = %647
  %666 = load i32, ptr %24, align 4, !tbaa !14
  %667 = add nsw i32 %666, 1
  store i32 %667, ptr %24, align 4, !tbaa !14
  br label %620, !llvm.loop !55

668:                                              ; preds = %620
  store i32 0, ptr %24, align 4, !tbaa !14
  br label %669

669:                                              ; preds = %773, %668
  %670 = load i32, ptr %24, align 4, !tbaa !14
  %671 = load i32, ptr %18, align 4, !tbaa !14
  %672 = icmp slt i32 %670, %671
  br i1 %672, label %673, label %776

673:                                              ; preds = %669
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #5
  %674 = load ptr, ptr %14, align 8, !tbaa !5
  %675 = load i32, ptr %24, align 4, !tbaa !14
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds %struct._VlMserExtrReg, ptr %674, i64 %676
  %678 = getelementptr inbounds %struct._VlMserExtrReg, ptr %677, i32 0, i32 2
  %679 = load i8, ptr %678, align 4, !tbaa !50
  %680 = zext i8 %679 to i32
  %681 = load i32, ptr %16, align 4, !tbaa !14
  %682 = add nsw i32 %680, %681
  store i32 %682, ptr %49, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #5
  %683 = load ptr, ptr %14, align 8, !tbaa !5
  %684 = load i32, ptr %24, align 4, !tbaa !14
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds %struct._VlMserExtrReg, ptr %683, i64 %685
  %687 = getelementptr inbounds %struct._VlMserExtrReg, ptr %686, i32 0, i32 3
  %688 = load i32, ptr %687, align 4, !tbaa !54
  store i32 %688, ptr %50, align 4, !tbaa !14
  br label %689

689:                                              ; preds = %716, %673
  br label %690

690:                                              ; preds = %689
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #5
  %691 = load ptr, ptr %14, align 8, !tbaa !5
  %692 = load i32, ptr %50, align 4, !tbaa !14
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds %struct._VlMserExtrReg, ptr %691, i64 %693
  %695 = getelementptr inbounds %struct._VlMserExtrReg, ptr %694, i32 0, i32 0
  %696 = load i32, ptr %695, align 4, !tbaa !49
  store i32 %696, ptr %51, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #5
  %697 = load ptr, ptr %14, align 8, !tbaa !5
  %698 = load i32, ptr %51, align 4, !tbaa !14
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds %struct._VlMserExtrReg, ptr %697, i64 %699
  %701 = getelementptr inbounds %struct._VlMserExtrReg, ptr %700, i32 0, i32 2
  %702 = load i8, ptr %701, align 4, !tbaa !50
  %703 = zext i8 %702 to i32
  store i32 %703, ptr %52, align 4, !tbaa !14
  %704 = load i32, ptr %51, align 4, !tbaa !14
  %705 = load i32, ptr %50, align 4, !tbaa !14
  %706 = icmp eq i32 %704, %705
  br i1 %706, label %711, label %707

707:                                              ; preds = %690
  %708 = load i32, ptr %52, align 4, !tbaa !14
  %709 = load i32, ptr %49, align 4, !tbaa !14
  %710 = icmp sgt i32 %708, %709
  br i1 %710, label %711, label %712

711:                                              ; preds = %707, %690
  store i32 39, ptr %42, align 4
  br label %714

712:                                              ; preds = %707
  %713 = load i32, ptr %51, align 4, !tbaa !14
  store i32 %713, ptr %50, align 4, !tbaa !14
  store i32 0, ptr %42, align 4
  br label %714

714:                                              ; preds = %712, %711
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #5
  %715 = load i32, ptr %42, align 4
  switch i32 %715, label %1086 [
    i32 0, label %716
    i32 39, label %717
  ]

716:                                              ; preds = %714
  br label %689

717:                                              ; preds = %714
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #5
  %718 = load ptr, ptr %14, align 8, !tbaa !5
  %719 = load i32, ptr %24, align 4, !tbaa !14
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds %struct._VlMserExtrReg, ptr %718, i64 %720
  %722 = getelementptr inbounds %struct._VlMserExtrReg, ptr %721, i32 0, i32 4
  %723 = load i32, ptr %722, align 4, !tbaa !51
  store i32 %723, ptr %53, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #5
  %724 = load ptr, ptr %14, align 8, !tbaa !5
  %725 = load i32, ptr %50, align 4, !tbaa !14
  %726 = sext i32 %725 to i64
  %727 = getelementptr inbounds %struct._VlMserExtrReg, ptr %724, i64 %726
  %728 = getelementptr inbounds %struct._VlMserExtrReg, ptr %727, i32 0, i32 4
  %729 = load i32, ptr %728, align 4, !tbaa !51
  store i32 %729, ptr %54, align 4, !tbaa !14
  %730 = load i32, ptr %54, align 4, !tbaa !14
  %731 = load i32, ptr %53, align 4, !tbaa !14
  %732 = sub nsw i32 %730, %731
  %733 = sitofp i32 %732 to float
  %734 = load i32, ptr %53, align 4, !tbaa !14
  %735 = sitofp i32 %734 to float
  %736 = fdiv float %733, %735
  %737 = load ptr, ptr %14, align 8, !tbaa !5
  %738 = load i32, ptr %24, align 4, !tbaa !14
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds %struct._VlMserExtrReg, ptr %737, i64 %739
  %741 = getelementptr inbounds %struct._VlMserExtrReg, ptr %740, i32 0, i32 5
  store float %736, ptr %741, align 4, !tbaa !56
  %742 = load ptr, ptr %14, align 8, !tbaa !5
  %743 = load i32, ptr %24, align 4, !tbaa !14
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds %struct._VlMserExtrReg, ptr %742, i64 %744
  %746 = getelementptr inbounds %struct._VlMserExtrReg, ptr %745, i32 0, i32 6
  store i32 1, ptr %746, align 4, !tbaa !57
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #5
  %747 = load ptr, ptr %14, align 8, !tbaa !5
  %748 = load i32, ptr %24, align 4, !tbaa !14
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds %struct._VlMserExtrReg, ptr %747, i64 %749
  %751 = getelementptr inbounds %struct._VlMserExtrReg, ptr %750, i32 0, i32 0
  %752 = load i32, ptr %751, align 4, !tbaa !49
  store i32 %752, ptr %55, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #5
  %753 = load ptr, ptr %14, align 8, !tbaa !5
  %754 = load i32, ptr %55, align 4, !tbaa !14
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds %struct._VlMserExtrReg, ptr %753, i64 %755
  %757 = getelementptr inbounds %struct._VlMserExtrReg, ptr %756, i32 0, i32 3
  %758 = load i32, ptr %757, align 4, !tbaa !54
  store i32 %758, ptr %56, align 4, !tbaa !14
  %759 = load i32, ptr %50, align 4, !tbaa !14
  %760 = load i32, ptr %56, align 4, !tbaa !14
  %761 = icmp sgt i32 %759, %760
  br i1 %761, label %762, label %764

762:                                              ; preds = %717
  %763 = load i32, ptr %50, align 4, !tbaa !14
  br label %766

764:                                              ; preds = %717
  %765 = load i32, ptr %56, align 4, !tbaa !14
  br label %766

766:                                              ; preds = %764, %762
  %767 = phi i32 [ %763, %762 ], [ %765, %764 ]
  %768 = load ptr, ptr %14, align 8, !tbaa !5
  %769 = load i32, ptr %55, align 4, !tbaa !14
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds %struct._VlMserExtrReg, ptr %768, i64 %770
  %772 = getelementptr inbounds %struct._VlMserExtrReg, ptr %771, i32 0, i32 3
  store i32 %767, ptr %772, align 4, !tbaa !54
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  br label %773

773:                                              ; preds = %766
  %774 = load i32, ptr %24, align 4, !tbaa !14
  %775 = add nsw i32 %774, 1
  store i32 %775, ptr %24, align 4, !tbaa !14
  br label %669, !llvm.loop !58

776:                                              ; preds = %669
  %777 = load i32, ptr %18, align 4, !tbaa !14
  store i32 %777, ptr %19, align 4, !tbaa !14
  store i32 0, ptr %24, align 4, !tbaa !14
  br label %778

778:                                              ; preds = %848, %776
  %779 = load i32, ptr %24, align 4, !tbaa !14
  %780 = load i32, ptr %18, align 4, !tbaa !14
  %781 = icmp slt i32 %779, %780
  br i1 %781, label %782, label %851

782:                                              ; preds = %778
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #5
  %783 = load ptr, ptr %14, align 8, !tbaa !5
  %784 = load i32, ptr %24, align 4, !tbaa !14
  %785 = sext i32 %784 to i64
  %786 = getelementptr inbounds %struct._VlMserExtrReg, ptr %783, i64 %785
  %787 = getelementptr inbounds %struct._VlMserExtrReg, ptr %786, i32 0, i32 0
  %788 = load i32, ptr %787, align 4, !tbaa !49
  store i32 %788, ptr %57, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #5
  %789 = load ptr, ptr %14, align 8, !tbaa !5
  %790 = load i32, ptr %24, align 4, !tbaa !14
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds %struct._VlMserExtrReg, ptr %789, i64 %791
  %793 = getelementptr inbounds %struct._VlMserExtrReg, ptr %792, i32 0, i32 2
  %794 = load i8, ptr %793, align 4, !tbaa !50
  store i8 %794, ptr %58, align 1, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #5
  %795 = load ptr, ptr %14, align 8, !tbaa !5
  %796 = load i32, ptr %24, align 4, !tbaa !14
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds %struct._VlMserExtrReg, ptr %795, i64 %797
  %799 = getelementptr inbounds %struct._VlMserExtrReg, ptr %798, i32 0, i32 5
  %800 = load float, ptr %799, align 4, !tbaa !56
  store float %800, ptr %59, align 4, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #5
  %801 = load ptr, ptr %14, align 8, !tbaa !5
  %802 = load i32, ptr %57, align 4, !tbaa !14
  %803 = zext i32 %802 to i64
  %804 = getelementptr inbounds %struct._VlMserExtrReg, ptr %801, i64 %803
  %805 = getelementptr inbounds %struct._VlMserExtrReg, ptr %804, i32 0, i32 2
  %806 = load i8, ptr %805, align 4, !tbaa !50
  store i8 %806, ptr %60, align 1, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #5
  %807 = load ptr, ptr %14, align 8, !tbaa !5
  %808 = load i32, ptr %57, align 4, !tbaa !14
  %809 = zext i32 %808 to i64
  %810 = getelementptr inbounds %struct._VlMserExtrReg, ptr %807, i64 %809
  %811 = getelementptr inbounds %struct._VlMserExtrReg, ptr %810, i32 0, i32 5
  %812 = load float, ptr %811, align 4, !tbaa !56
  store float %812, ptr %61, align 4, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #5
  %813 = load i8, ptr %60, align 1, !tbaa !27
  %814 = zext i8 %813 to i32
  %815 = load i8, ptr %58, align 1, !tbaa !27
  %816 = zext i8 %815 to i32
  %817 = add nsw i32 %816, 1
  %818 = icmp sgt i32 %814, %817
  br i1 %818, label %819, label %820

819:                                              ; preds = %782
  store i32 42, ptr %42, align 4
  br label %845

820:                                              ; preds = %782
  %821 = load float, ptr %59, align 4, !tbaa !59
  %822 = load float, ptr %61, align 4, !tbaa !59
  %823 = fcmp olt float %821, %822
  br i1 %823, label %824, label %826

824:                                              ; preds = %820
  %825 = load i32, ptr %57, align 4, !tbaa !14
  store i32 %825, ptr %62, align 4, !tbaa !14
  br label %828

826:                                              ; preds = %820
  %827 = load i32, ptr %24, align 4, !tbaa !14
  store i32 %827, ptr %62, align 4, !tbaa !14
  br label %828

828:                                              ; preds = %826, %824
  %829 = load ptr, ptr %14, align 8, !tbaa !5
  %830 = load i32, ptr %62, align 4, !tbaa !14
  %831 = zext i32 %830 to i64
  %832 = getelementptr inbounds %struct._VlMserExtrReg, ptr %829, i64 %831
  %833 = getelementptr inbounds %struct._VlMserExtrReg, ptr %832, i32 0, i32 6
  %834 = load i32, ptr %833, align 4, !tbaa !57
  %835 = icmp ne i32 %834, 0
  br i1 %835, label %836, label %844

836:                                              ; preds = %828
  %837 = load i32, ptr %19, align 4, !tbaa !14
  %838 = add nsw i32 %837, -1
  store i32 %838, ptr %19, align 4, !tbaa !14
  %839 = load ptr, ptr %14, align 8, !tbaa !5
  %840 = load i32, ptr %62, align 4, !tbaa !14
  %841 = zext i32 %840 to i64
  %842 = getelementptr inbounds %struct._VlMserExtrReg, ptr %839, i64 %841
  %843 = getelementptr inbounds %struct._VlMserExtrReg, ptr %842, i32 0, i32 6
  store i32 0, ptr %843, align 4, !tbaa !57
  br label %844

844:                                              ; preds = %836, %828
  store i32 0, ptr %42, align 4
  br label %845

845:                                              ; preds = %844, %819
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  %846 = load i32, ptr %42, align 4
  switch i32 %846, label %1086 [
    i32 0, label %847
    i32 42, label %848
  ]

847:                                              ; preds = %845
  br label %848

848:                                              ; preds = %847, %845
  %849 = load i32, ptr %24, align 4, !tbaa !14
  %850 = add nsw i32 %849, 1
  store i32 %850, ptr %24, align 4, !tbaa !14
  br label %778, !llvm.loop !60

851:                                              ; preds = %778
  %852 = load i32, ptr %18, align 4, !tbaa !14
  %853 = load i32, ptr %19, align 4, !tbaa !14
  %854 = sub nsw i32 %852, %853
  %855 = load ptr, ptr %3, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct._VlMserFilt, ptr %855, i32 0, i32 27
  %857 = getelementptr inbounds %struct._VlMserStats, ptr %856, i32 0, i32 1
  store i32 %854, ptr %857, align 4, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #5
  %858 = load ptr, ptr %3, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct._VlMserFilt, ptr %858, i32 0, i32 23
  %860 = load double, ptr %859, align 8, !tbaa !62
  %861 = fptrunc double %860 to float
  %862 = load i32, ptr %5, align 4, !tbaa !14
  %863 = uitofp i32 %862 to float
  %864 = fmul float %861, %863
  store float %864, ptr %63, align 4, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #5
  %865 = load ptr, ptr %3, align 8, !tbaa !5
  %866 = getelementptr inbounds %struct._VlMserFilt, ptr %865, i32 0, i32 24
  %867 = load double, ptr %866, align 8, !tbaa !63
  %868 = fptrunc double %867 to float
  %869 = load i32, ptr %5, align 4, !tbaa !14
  %870 = uitofp i32 %869 to float
  %871 = fmul float %868, %870
  store float %871, ptr %64, align 4, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #5
  %872 = load ptr, ptr %3, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct._VlMserFilt, ptr %872, i32 0, i32 25
  %874 = load double, ptr %873, align 8, !tbaa !64
  %875 = fptrunc double %874 to float
  store float %875, ptr %65, align 4, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #5
  %876 = load ptr, ptr %3, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct._VlMserFilt, ptr %876, i32 0, i32 26
  %878 = load double, ptr %877, align 8, !tbaa !65
  %879 = fptrunc double %878 to float
  store float %879, ptr %66, align 4, !tbaa !59
  %880 = load i32, ptr %18, align 4, !tbaa !14
  %881 = sub nsw i32 %880, 1
  store i32 %881, ptr %24, align 4, !tbaa !14
  br label %882

882:                                              ; preds = %1013, %851
  %883 = load i32, ptr %24, align 4, !tbaa !14
  %884 = sext i32 %883 to i64
  %885 = icmp sge i64 %884, 0
  br i1 %885, label %886, label %1016

886:                                              ; preds = %882
  %887 = load ptr, ptr %14, align 8, !tbaa !5
  %888 = load i32, ptr %24, align 4, !tbaa !14
  %889 = sext i32 %888 to i64
  %890 = getelementptr inbounds %struct._VlMserExtrReg, ptr %887, i64 %889
  %891 = getelementptr inbounds %struct._VlMserExtrReg, ptr %890, i32 0, i32 6
  %892 = load i32, ptr %891, align 4, !tbaa !57
  %893 = icmp ne i32 %892, 0
  br i1 %893, label %895, label %894

894:                                              ; preds = %886
  br label %1013

895:                                              ; preds = %886
  %896 = load ptr, ptr %14, align 8, !tbaa !5
  %897 = load i32, ptr %24, align 4, !tbaa !14
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds %struct._VlMserExtrReg, ptr %896, i64 %898
  %900 = getelementptr inbounds %struct._VlMserExtrReg, ptr %899, i32 0, i32 5
  %901 = load float, ptr %900, align 4, !tbaa !56
  %902 = load float, ptr %65, align 4, !tbaa !59
  %903 = fcmp oge float %901, %902
  br i1 %903, label %904, label %907

904:                                              ; preds = %895
  %905 = load i32, ptr %22, align 4, !tbaa !14
  %906 = add nsw i32 %905, 1
  store i32 %906, ptr %22, align 4, !tbaa !14
  br label %1005

907:                                              ; preds = %895
  %908 = load ptr, ptr %14, align 8, !tbaa !5
  %909 = load i32, ptr %24, align 4, !tbaa !14
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds %struct._VlMserExtrReg, ptr %908, i64 %910
  %912 = getelementptr inbounds %struct._VlMserExtrReg, ptr %911, i32 0, i32 4
  %913 = load i32, ptr %912, align 4, !tbaa !51
  %914 = uitofp i32 %913 to float
  %915 = load float, ptr %63, align 4, !tbaa !59
  %916 = fcmp ogt float %914, %915
  br i1 %916, label %917, label %920

917:                                              ; preds = %907
  %918 = load i32, ptr %20, align 4, !tbaa !14
  %919 = add nsw i32 %918, 1
  store i32 %919, ptr %20, align 4, !tbaa !14
  br label %1005

920:                                              ; preds = %907
  %921 = load ptr, ptr %14, align 8, !tbaa !5
  %922 = load i32, ptr %24, align 4, !tbaa !14
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds %struct._VlMserExtrReg, ptr %921, i64 %923
  %925 = getelementptr inbounds %struct._VlMserExtrReg, ptr %924, i32 0, i32 4
  %926 = load i32, ptr %925, align 4, !tbaa !51
  %927 = uitofp i32 %926 to float
  %928 = load float, ptr %64, align 4, !tbaa !59
  %929 = fcmp olt float %927, %928
  br i1 %929, label %930, label %933

930:                                              ; preds = %920
  %931 = load i32, ptr %21, align 4, !tbaa !14
  %932 = add nsw i32 %931, 1
  store i32 %932, ptr %21, align 4, !tbaa !14
  br label %1005

933:                                              ; preds = %920
  %934 = load float, ptr %66, align 4, !tbaa !59
  %935 = fpext float %934 to double
  %936 = fcmp olt double %935, 1.000000e+00
  br i1 %936, label %937, label %1004

937:                                              ; preds = %933
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #5
  %938 = load ptr, ptr %14, align 8, !tbaa !5
  %939 = load i32, ptr %24, align 4, !tbaa !14
  %940 = sext i32 %939 to i64
  %941 = getelementptr inbounds %struct._VlMserExtrReg, ptr %938, i64 %940
  %942 = getelementptr inbounds %struct._VlMserExtrReg, ptr %941, i32 0, i32 0
  %943 = load i32, ptr %942, align 4, !tbaa !49
  store i32 %943, ptr %67, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #5
  %944 = load i32, ptr %67, align 4, !tbaa !14
  %945 = load i32, ptr %24, align 4, !tbaa !14
  %946 = icmp ne i32 %944, %945
  br i1 %946, label %947, label %1000

947:                                              ; preds = %937
  br label %948

948:                                              ; preds = %972, %947
  %949 = load ptr, ptr %14, align 8, !tbaa !5
  %950 = load i32, ptr %67, align 4, !tbaa !14
  %951 = zext i32 %950 to i64
  %952 = getelementptr inbounds %struct._VlMserExtrReg, ptr %949, i64 %951
  %953 = getelementptr inbounds %struct._VlMserExtrReg, ptr %952, i32 0, i32 6
  %954 = load i32, ptr %953, align 4, !tbaa !57
  %955 = icmp ne i32 %954, 0
  %956 = xor i1 %955, true
  br i1 %956, label %957, label %973

957:                                              ; preds = %948
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #5
  %958 = load ptr, ptr %14, align 8, !tbaa !5
  %959 = load i32, ptr %67, align 4, !tbaa !14
  %960 = zext i32 %959 to i64
  %961 = getelementptr inbounds %struct._VlMserExtrReg, ptr %958, i64 %960
  %962 = getelementptr inbounds %struct._VlMserExtrReg, ptr %961, i32 0, i32 0
  %963 = load i32, ptr %962, align 4, !tbaa !49
  store i32 %963, ptr %71, align 4, !tbaa !14
  %964 = load i32, ptr %71, align 4, !tbaa !14
  %965 = load i32, ptr %67, align 4, !tbaa !14
  %966 = icmp eq i32 %964, %965
  br i1 %966, label %967, label %968

967:                                              ; preds = %957
  store i32 48, ptr %42, align 4
  br label %970

968:                                              ; preds = %957
  %969 = load i32, ptr %71, align 4, !tbaa !14
  store i32 %969, ptr %67, align 4, !tbaa !14
  store i32 0, ptr %42, align 4
  br label %970

970:                                              ; preds = %968, %967
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #5
  %971 = load i32, ptr %42, align 4
  switch i32 %971, label %1086 [
    i32 0, label %972
    i32 48, label %973
  ]

972:                                              ; preds = %970
  br label %948, !llvm.loop !66

973:                                              ; preds = %970, %948
  %974 = load ptr, ptr %14, align 8, !tbaa !5
  %975 = load i32, ptr %24, align 4, !tbaa !14
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds %struct._VlMserExtrReg, ptr %974, i64 %976
  %978 = getelementptr inbounds %struct._VlMserExtrReg, ptr %977, i32 0, i32 4
  %979 = load i32, ptr %978, align 4, !tbaa !51
  store i32 %979, ptr %68, align 4, !tbaa !14
  %980 = load ptr, ptr %14, align 8, !tbaa !5
  %981 = load i32, ptr %67, align 4, !tbaa !14
  %982 = zext i32 %981 to i64
  %983 = getelementptr inbounds %struct._VlMserExtrReg, ptr %980, i64 %982
  %984 = getelementptr inbounds %struct._VlMserExtrReg, ptr %983, i32 0, i32 4
  %985 = load i32, ptr %984, align 4, !tbaa !51
  store i32 %985, ptr %69, align 4, !tbaa !14
  %986 = load i32, ptr %69, align 4, !tbaa !14
  %987 = load i32, ptr %68, align 4, !tbaa !14
  %988 = sub nsw i32 %986, %987
  %989 = sitofp i32 %988 to float
  %990 = load i32, ptr %69, align 4, !tbaa !14
  %991 = sitofp i32 %990 to float
  %992 = fdiv float %989, %991
  store float %992, ptr %70, align 4, !tbaa !59
  %993 = load float, ptr %70, align 4, !tbaa !59
  %994 = load float, ptr %66, align 4, !tbaa !59
  %995 = fcmp olt float %993, %994
  br i1 %995, label %996, label %999

996:                                              ; preds = %973
  %997 = load i32, ptr %23, align 4, !tbaa !14
  %998 = add nsw i32 %997, 1
  store i32 %998, ptr %23, align 4, !tbaa !14
  store i32 46, ptr %42, align 4
  br label %1001

999:                                              ; preds = %973
  br label %1000

1000:                                             ; preds = %999, %937
  store i32 0, ptr %42, align 4
  br label %1001

1001:                                             ; preds = %1000, %996
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #5
  %1002 = load i32, ptr %42, align 4
  switch i32 %1002, label %1086 [
    i32 0, label %1003
    i32 46, label %1005
  ]

1003:                                             ; preds = %1001
  br label %1004

1004:                                             ; preds = %1003, %933
  br label %1013

1005:                                             ; preds = %1001, %930, %917, %904
  %1006 = load ptr, ptr %14, align 8, !tbaa !5
  %1007 = load i32, ptr %24, align 4, !tbaa !14
  %1008 = sext i32 %1007 to i64
  %1009 = getelementptr inbounds %struct._VlMserExtrReg, ptr %1006, i64 %1008
  %1010 = getelementptr inbounds %struct._VlMserExtrReg, ptr %1009, i32 0, i32 6
  store i32 0, ptr %1010, align 4, !tbaa !57
  %1011 = load i32, ptr %19, align 4, !tbaa !14
  %1012 = add nsw i32 %1011, -1
  store i32 %1012, ptr %19, align 4, !tbaa !14
  br label %1013

1013:                                             ; preds = %1005, %1004, %894
  %1014 = load i32, ptr %24, align 4, !tbaa !14
  %1015 = add nsw i32 %1014, -1
  store i32 %1015, ptr %24, align 4, !tbaa !14
  br label %882, !llvm.loop !67

1016:                                             ; preds = %882
  %1017 = load i32, ptr %22, align 4, !tbaa !14
  %1018 = load ptr, ptr %3, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct._VlMserFilt, ptr %1018, i32 0, i32 27
  %1020 = getelementptr inbounds %struct._VlMserStats, ptr %1019, i32 0, i32 2
  store i32 %1017, ptr %1020, align 8, !tbaa !68
  %1021 = load i32, ptr %20, align 4, !tbaa !14
  %1022 = load ptr, ptr %3, align 8, !tbaa !5
  %1023 = getelementptr inbounds %struct._VlMserFilt, ptr %1022, i32 0, i32 27
  %1024 = getelementptr inbounds %struct._VlMserStats, ptr %1023, i32 0, i32 3
  store i32 %1021, ptr %1024, align 4, !tbaa !69
  %1025 = load i32, ptr %21, align 4, !tbaa !14
  %1026 = load ptr, ptr %3, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct._VlMserFilt, ptr %1026, i32 0, i32 27
  %1028 = getelementptr inbounds %struct._VlMserStats, ptr %1027, i32 0, i32 4
  store i32 %1025, ptr %1028, align 8, !tbaa !70
  %1029 = load i32, ptr %23, align 4, !tbaa !14
  %1030 = load ptr, ptr %3, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct._VlMserFilt, ptr %1030, i32 0, i32 27
  %1032 = getelementptr inbounds %struct._VlMserStats, ptr %1031, i32 0, i32 5
  store i32 %1029, ptr %1032, align 4, !tbaa !71
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #5
  %1033 = load ptr, ptr %3, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct._VlMserFilt, ptr %1033, i32 0, i32 15
  %1035 = load i32, ptr %1034, align 4, !tbaa !72
  %1036 = load i32, ptr %19, align 4, !tbaa !14
  %1037 = icmp slt i32 %1035, %1036
  br i1 %1037, label %1038, label %1053

1038:                                             ; preds = %1016
  %1039 = load ptr, ptr %15, align 8, !tbaa !5
  %1040 = icmp ne ptr %1039, null
  br i1 %1040, label %1041, label %1043

1041:                                             ; preds = %1038
  %1042 = load ptr, ptr %15, align 8, !tbaa !5
  call void @vl_free(ptr noundef %1042)
  br label %1043

1043:                                             ; preds = %1041, %1038
  %1044 = load i32, ptr %19, align 4, !tbaa !14
  %1045 = sext i32 %1044 to i64
  %1046 = mul i64 4, %1045
  %1047 = call ptr @vl_malloc(i64 noundef %1046)
  store ptr %1047, ptr %15, align 8, !tbaa !5
  %1048 = load ptr, ptr %3, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct._VlMserFilt, ptr %1048, i32 0, i32 11
  store ptr %1047, ptr %1049, align 8, !tbaa !24
  %1050 = load i32, ptr %19, align 4, !tbaa !14
  %1051 = load ptr, ptr %3, align 8, !tbaa !5
  %1052 = getelementptr inbounds %struct._VlMserFilt, ptr %1051, i32 0, i32 15
  store i32 %1050, ptr %1052, align 4, !tbaa !72
  br label %1053

1053:                                             ; preds = %1043, %1016
  %1054 = load i32, ptr %19, align 4, !tbaa !14
  %1055 = load ptr, ptr %3, align 8, !tbaa !5
  %1056 = getelementptr inbounds %struct._VlMserFilt, ptr %1055, i32 0, i32 13
  store i32 %1054, ptr %1056, align 4, !tbaa !45
  store i32 0, ptr %25, align 4, !tbaa !14
  store i32 0, ptr %24, align 4, !tbaa !14
  br label %1057

1057:                                             ; preds = %1082, %1053
  %1058 = load i32, ptr %24, align 4, !tbaa !14
  %1059 = load i32, ptr %18, align 4, !tbaa !14
  %1060 = icmp slt i32 %1058, %1059
  br i1 %1060, label %1061, label %1085

1061:                                             ; preds = %1057
  %1062 = load ptr, ptr %14, align 8, !tbaa !5
  %1063 = load i32, ptr %24, align 4, !tbaa !14
  %1064 = sext i32 %1063 to i64
  %1065 = getelementptr inbounds %struct._VlMserExtrReg, ptr %1062, i64 %1064
  %1066 = getelementptr inbounds %struct._VlMserExtrReg, ptr %1065, i32 0, i32 6
  %1067 = load i32, ptr %1066, align 4, !tbaa !57
  %1068 = icmp ne i32 %1067, 0
  br i1 %1068, label %1069, label %1081

1069:                                             ; preds = %1061
  %1070 = load ptr, ptr %14, align 8, !tbaa !5
  %1071 = load i32, ptr %24, align 4, !tbaa !14
  %1072 = sext i32 %1071 to i64
  %1073 = getelementptr inbounds %struct._VlMserExtrReg, ptr %1070, i64 %1072
  %1074 = getelementptr inbounds %struct._VlMserExtrReg, ptr %1073, i32 0, i32 1
  %1075 = load i32, ptr %1074, align 4, !tbaa !46
  %1076 = load ptr, ptr %15, align 8, !tbaa !5
  %1077 = load i32, ptr %25, align 4, !tbaa !14
  %1078 = add nsw i32 %1077, 1
  store i32 %1078, ptr %25, align 4, !tbaa !14
  %1079 = sext i32 %1077 to i64
  %1080 = getelementptr inbounds i32, ptr %1076, i64 %1079
  store i32 %1075, ptr %1080, align 4, !tbaa !14
  br label %1081

1081:                                             ; preds = %1069, %1061
  br label %1082

1082:                                             ; preds = %1081
  %1083 = load i32, ptr %24, align 4, !tbaa !14
  %1084 = add nsw i32 %1083, 1
  store i32 %1084, ptr %24, align 4, !tbaa !14
  br label %1057, !llvm.loop !73

1085:                                             ; preds = %1057
  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 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 4, 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 4, ptr %5) #5
  ret void

1086:                                             ; preds = %1001, %970, %845, %714, %486
  unreachable
}

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

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

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

!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 16}
!10 = !{!"_VlMserFilt", !11, i64 0, !6, i64 8, !11, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !11, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !6, i64 112, !6, i64 120, !11, i64 128, !11, i64 132, !11, i64 136, !11, i64 140, !11, i64 144, !12, i64 152, !12, i64 160, !12, i64 168, !12, i64 176, !13, i64 184}
!11 = !{!"int", !7, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!"_VlMserStats", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20}
!14 = !{!11, !11, i64 0}
!15 = !{!10, !6, i64 48}
!16 = !{!10, !6, i64 56}
!17 = !{!10, !11, i64 0}
!18 = !{!10, !6, i64 8}
!19 = !{!10, !6, i64 24}
!20 = !{!10, !6, i64 32}
!21 = !{!10, !6, i64 40}
!22 = !{!10, !6, i64 72}
!23 = !{!10, !6, i64 80}
!24 = !{!10, !6, i64 88}
!25 = !{!10, !11, i64 144}
!26 = !{!10, !11, i64 132}
!27 = !{!7, !7, i64 0}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = distinct !{!30, !29}
!31 = distinct !{!31, !29}
!32 = !{!33, !11, i64 0}
!33 = !{!"_VlMserReg", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12}
!34 = distinct !{!34, !29}
!35 = !{!33, !11, i64 4}
!36 = !{!33, !11, i64 12}
!37 = !{!33, !11, i64 8}
!38 = distinct !{!38, !29}
!39 = distinct !{!39, !29}
!40 = distinct !{!40, !29}
!41 = distinct !{!41, !29}
!42 = !{!10, !11, i64 64}
!43 = !{!10, !11, i64 184}
!44 = !{!10, !11, i64 104}
!45 = !{!10, !11, i64 100}
!46 = !{!47, !11, i64 4}
!47 = !{!"_VlMserExtrReg", !11, i64 0, !11, i64 4, !7, i64 8, !11, i64 12, !11, i64 16, !48, i64 20, !11, i64 24}
!48 = !{!"float", !7, i64 0}
!49 = !{!47, !11, i64 0}
!50 = !{!47, !7, i64 8}
!51 = !{!47, !11, i64 16}
!52 = distinct !{!52, !29}
!53 = distinct !{!53, !29}
!54 = !{!47, !11, i64 12}
!55 = distinct !{!55, !29}
!56 = !{!47, !48, i64 20}
!57 = !{!47, !11, i64 24}
!58 = distinct !{!58, !29}
!59 = !{!48, !48, i64 0}
!60 = distinct !{!60, !29}
!61 = !{!10, !11, i64 188}
!62 = !{!10, !12, i64 152}
!63 = !{!10, !12, i64 160}
!64 = !{!10, !12, i64 168}
!65 = !{!10, !12, i64 176}
!66 = distinct !{!66, !29}
!67 = distinct !{!67, !29}
!68 = !{!10, !11, i64 192}
!69 = !{!10, !11, i64 196}
!70 = !{!10, !11, i64 200}
!71 = !{!10, !11, i64 204}
!72 = !{!10, !11, i64 108}
!73 = distinct !{!73, !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"

%struct._VlMserReg = type { i32, i32, i32, i32 }
%struct._VlMserExtrReg = type { i32, i32, i8, i32, i32, float, i32 }

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

declare ptr @vl_malloc(i64 noundef) local_unnamed_addr #1

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

declare void @vl_free(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local void @vl_mser_process(ptr nocapture noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #2 {
  %3 = alloca [256 x i32], align 16
  %4 = getelementptr inbounds i8, ptr %0, i64 16
  %5 = load i32, ptr %4, align 8, !tbaa !5
  %6 = getelementptr inbounds i8, ptr %0, i64 48
  %7 = load ptr, ptr %6, align 8, !tbaa !13
  %8 = getelementptr inbounds i8, ptr %0, i64 56
  %9 = load ptr, ptr %8, align 8, !tbaa !14
  %10 = load i32, ptr %0, align 8, !tbaa !15
  %11 = getelementptr inbounds i8, ptr %0, i64 8
  %12 = load ptr, ptr %11, align 8, !tbaa !16
  %13 = getelementptr inbounds i8, ptr %0, i64 24
  %14 = load ptr, ptr %13, align 8, !tbaa !17
  %15 = getelementptr inbounds i8, ptr %0, i64 32
  %16 = load ptr, ptr %15, align 8, !tbaa !18
  %17 = getelementptr inbounds i8, ptr %0, i64 40
  %18 = load ptr, ptr %17, align 8, !tbaa !19
  %19 = getelementptr inbounds i8, ptr %0, i64 72
  %20 = load ptr, ptr %19, align 8, !tbaa !20
  %21 = getelementptr inbounds i8, ptr %0, i64 80
  %22 = load ptr, ptr %21, align 8, !tbaa !21
  %23 = getelementptr inbounds i8, ptr %0, i64 88
  %24 = load ptr, ptr %23, align 8, !tbaa !22
  %25 = getelementptr inbounds i8, ptr %0, i64 144
  %26 = load i32, ptr %25, align 8, !tbaa !23
  %27 = getelementptr inbounds i8, ptr %0, i64 132
  store i32 0, ptr %27, align 4, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %3) #6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) %3, i8 0, i64 1024, i1 false)
  %28 = icmp sgt i32 %5, 0
  br i1 %28, label %.lr.ph.preheader, label %.preheader468.preheader

.preheader468.preheader:                          ; preds = %.preheader468.loopexit, %2
  %.ph = phi i32 [ 0, %2 ], [ %.pre.pre, %.preheader468.loopexit ]
  br label %.preheader468

.lr.ph.preheader:                                 ; preds = %2
  %wide.trip.count = zext nneg i32 %5 to i64
  %xtraiter = and i64 %wide.trip.count, 3
  %29 = icmp ult i32 %5, 4
  br i1 %29, label %.preheader468.loopexit.unr-lcssa, label %.lr.ph.preheader.new

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

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

.lr.ph.epil:                                      ; preds = %.preheader468.loopexit.unr-lcssa, %.lr.ph.epil
  %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %.lr.ph.epil ], [ %indvars.iv.unr, %.preheader468.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph.epil ], [ 0, %.preheader468.loopexit.unr-lcssa ]
  %30 = getelementptr inbounds i8, ptr %1, i64 %indvars.iv.epil
  %31 = load i8, ptr %30, align 1, !tbaa !25
  %32 = zext i8 %31 to i64
  %33 = getelementptr inbounds [256 x i32], ptr %3, i64 0, i64 %32
  %34 = load i32, ptr %33, align 4, !tbaa !26
  %35 = add i32 %34, 1
  store i32 %35, ptr %33, align 4, !tbaa !26
  %indvars.iv.next.epil = add nuw nsw i64 %indvars.iv.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.preheader468.loopexit, label %.lr.ph.epil, !llvm.loop !27

.preheader468.loopexit:                           ; preds = %.lr.ph.epil, %.preheader468.loopexit.unr-lcssa
  %.pre.pre = load i32, ptr %3, align 16, !tbaa !26
  br label %.preheader468.preheader

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader.new ], [ %indvars.iv.next.3, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.3, %.lr.ph ]
  %36 = getelementptr inbounds i8, ptr %1, i64 %indvars.iv
  %37 = load i8, ptr %36, align 1, !tbaa !25
  %38 = zext i8 %37 to i64
  %39 = getelementptr inbounds [256 x i32], ptr %3, i64 0, i64 %38
  %40 = load i32, ptr %39, align 4, !tbaa !26
  %41 = add i32 %40, 1
  store i32 %41, ptr %39, align 4, !tbaa !26
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %42 = getelementptr inbounds i8, ptr %1, i64 %indvars.iv.next
  %43 = load i8, ptr %42, align 1, !tbaa !25
  %44 = zext i8 %43 to i64
  %45 = getelementptr inbounds [256 x i32], ptr %3, i64 0, i64 %44
  %46 = load i32, ptr %45, align 4, !tbaa !26
  %47 = add i32 %46, 1
  store i32 %47, ptr %45, align 4, !tbaa !26
  %indvars.iv.next.1 = or disjoint i64 %indvars.iv, 2
  %48 = getelementptr inbounds i8, ptr %1, i64 %indvars.iv.next.1
  %49 = load i8, ptr %48, align 1, !tbaa !25
  %50 = zext i8 %49 to i64
  %51 = getelementptr inbounds [256 x i32], ptr %3, i64 0, i64 %50
  %52 = load i32, ptr %51, align 4, !tbaa !26
  %53 = add i32 %52, 1
  store i32 %53, ptr %51, align 4, !tbaa !26
  %indvars.iv.next.2 = or disjoint i64 %indvars.iv, 3
  %54 = getelementptr inbounds i8, ptr %1, i64 %indvars.iv.next.2
  %55 = load i8, ptr %54, align 1, !tbaa !25
  %56 = zext i8 %55 to i64
  %57 = getelementptr inbounds [256 x i32], ptr %3, i64 0, i64 %56
  %58 = load i32, ptr %57, align 4, !tbaa !26
  %59 = add i32 %58, 1
  store i32 %59, ptr %57, align 4, !tbaa !26
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.preheader468.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !29

.preheader467:                                    ; preds = %.preheader468
  br i1 %28, label %.lr.ph472.preheader, label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.preheader467
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %3) #6
  br label %._crit_edge490

.lr.ph472.preheader:                              ; preds = %.preheader467
  %60 = zext nneg i32 %5 to i64
  %xtraiter609 = and i64 %60, 1
  %lcmp.mod610.not = icmp eq i64 %xtraiter609, 0
  br i1 %lcmp.mod610.not, label %.lr.ph472.prol.loopexit, label %.lr.ph472.prol

.lr.ph472.prol:                                   ; preds = %.lr.ph472.preheader
  %indvars.iv.next535.prol = add nsw i64 %60, -1
  %61 = getelementptr inbounds i8, ptr %1, i64 %indvars.iv.next535.prol
  %62 = load i8, ptr %61, align 1, !tbaa !25
  %63 = zext i8 %62 to i64
  %64 = getelementptr inbounds [256 x i32], ptr %3, i64 0, i64 %63
  %65 = load i32, ptr %64, align 4, !tbaa !26
  %66 = add i32 %65, -1
  store i32 %66, ptr %64, align 4, !tbaa !26
  %67 = zext i32 %66 to i64
  %68 = getelementptr inbounds i32, ptr %7, i64 %67
  %69 = trunc nuw nsw i64 %indvars.iv.next535.prol to i32
  store i32 %69, ptr %68, align 4, !tbaa !26
  br label %.lr.ph472.prol.loopexit

.lr.ph472.prol.loopexit:                          ; preds = %.lr.ph472.prol, %.lr.ph472.preheader
  %indvars.iv534.unr = phi i64 [ %60, %.lr.ph472.preheader ], [ %indvars.iv.next535.prol, %.lr.ph472.prol ]
  %70 = icmp eq i32 %5, 1
  br i1 %70, label %._crit_edge, label %.lr.ph472

.preheader468:                                    ; preds = %.preheader468, %.preheader468.preheader
  %71 = phi i32 [ %.ph, %.preheader468.preheader ], [ %86, %.preheader468 ]
  %indvars.iv530 = phi i64 [ 1, %.preheader468.preheader ], [ %indvars.iv.next531.4, %.preheader468 ]
  %72 = getelementptr inbounds [256 x i32], ptr %3, i64 0, i64 %indvars.iv530
  %73 = load i32, ptr %72, align 4, !tbaa !26
  %74 = add i32 %73, %71
  store i32 %74, ptr %72, align 4, !tbaa !26
  %indvars.iv.next531 = add nuw nsw i64 %indvars.iv530, 1
  %75 = getelementptr inbounds [256 x i32], ptr %3, i64 0, i64 %indvars.iv.next531
  %76 = load i32, ptr %75, align 4, !tbaa !26
  %77 = add i32 %76, %74
  store i32 %77, ptr %75, align 4, !tbaa !26
  %indvars.iv.next531.1 = add nuw nsw i64 %indvars.iv530, 2
  %78 = getelementptr inbounds [256 x i32], ptr %3, i64 0, i64 %indvars.iv.next531.1
  %79 = load i32, ptr %78, align 4, !tbaa !26
  %80 = add i32 %79, %77
  store i32 %80, ptr %78, align 4, !tbaa !26
  %indvars.iv.next531.2 = add nuw nsw i64 %indvars.iv530, 3
  %81 = getelementptr inbounds [256 x i32], ptr %3, i64 0, i64 %indvars.iv.next531.2
  %82 = load i32, ptr %81, align 4, !tbaa !26
  %83 = add i32 %82, %80
  store i32 %83, ptr %81, align 4, !tbaa !26
  %indvars.iv.next531.3 = add nuw nsw i64 %indvars.iv530, 4
  %84 = getelementptr inbounds [256 x i32], ptr %3, i64 0, i64 %indvars.iv.next531.3
  %85 = load i32, ptr %84, align 4, !tbaa !26
  %86 = add i32 %85, %83
  store i32 %86, ptr %84, align 4, !tbaa !26
  %indvars.iv.next531.4 = add nuw nsw i64 %indvars.iv530, 5
  %exitcond533.not.4 = icmp eq i64 %indvars.iv.next531.4, 256
  br i1 %exitcond533.not.4, label %.preheader467, label %.preheader468, !llvm.loop !31

.lr.ph472:                                        ; preds = %.lr.ph472.prol.loopexit, %.lr.ph472
  %indvars.iv534 = phi i64 [ %indvars.iv.next535.1, %.lr.ph472 ], [ %indvars.iv534.unr, %.lr.ph472.prol.loopexit ]
  %indvars.iv.next535 = add nsw i64 %indvars.iv534, -1
  %87 = getelementptr inbounds i8, ptr %1, i64 %indvars.iv.next535
  %88 = load i8, ptr %87, align 1, !tbaa !25
  %89 = zext i8 %88 to i64
  %90 = getelementptr inbounds [256 x i32], ptr %3, i64 0, i64 %89
  %91 = load i32, ptr %90, align 4, !tbaa !26
  %92 = add i32 %91, -1
  store i32 %92, ptr %90, align 4, !tbaa !26
  %93 = zext i32 %92 to i64
  %94 = getelementptr inbounds i32, ptr %7, i64 %93
  %95 = trunc nuw nsw i64 %indvars.iv.next535 to i32
  store i32 %95, ptr %94, align 4, !tbaa !26
  %indvars.iv.next535.1 = add nsw i64 %indvars.iv534, -2
  %96 = getelementptr inbounds i8, ptr %1, i64 %indvars.iv.next535.1
  %97 = load i8, ptr %96, align 1, !tbaa !25
  %98 = zext i8 %97 to i64
  %99 = getelementptr inbounds [256 x i32], ptr %3, i64 0, i64 %98
  %100 = load i32, ptr %99, align 4, !tbaa !26
  %101 = add i32 %100, -1
  store i32 %101, ptr %99, align 4, !tbaa !26
  %102 = zext i32 %101 to i64
  %103 = getelementptr inbounds i32, ptr %7, i64 %102
  %104 = trunc nuw nsw i64 %indvars.iv.next535.1 to i32
  store i32 %104, ptr %103, align 4, !tbaa !26
  %105 = icmp ugt i64 %indvars.iv.next535, 1
  br i1 %105, label %.lr.ph472, label %._crit_edge, !llvm.loop !32

._crit_edge:                                      ; preds = %.lr.ph472, %.lr.ph472.prol.loopexit
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %3) #6
  br i1 %28, label %.lr.ph475.preheader, label %._crit_edge490

.lr.ph475.preheader:                              ; preds = %._crit_edge
  %xtraiter611 = and i64 %60, 3
  %106 = icmp ult i32 %5, 4
  br i1 %106, label %.preheader466.unr-lcssa, label %.lr.ph475.preheader.new

.lr.ph475.preheader.new:                          ; preds = %.lr.ph475.preheader
  %unroll_iter614 = and i64 %60, 2147483644
  br label %.lr.ph475

.preheader466.unr-lcssa:                          ; preds = %.lr.ph475, %.lr.ph475.preheader
  %indvars.iv537.unr = phi i64 [ 0, %.lr.ph475.preheader ], [ %indvars.iv.next538.3, %.lr.ph475 ]
  %lcmp.mod613.not = icmp eq i64 %xtraiter611, 0
  br i1 %lcmp.mod613.not, label %.preheader466, label %.lr.ph475.epil

.lr.ph475.epil:                                   ; preds = %.preheader466.unr-lcssa, %.lr.ph475.epil
  %indvars.iv537.epil = phi i64 [ %indvars.iv.next538.epil, %.lr.ph475.epil ], [ %indvars.iv537.unr, %.preheader466.unr-lcssa ]
  %epil.iter612 = phi i64 [ %epil.iter612.next, %.lr.ph475.epil ], [ 0, %.preheader466.unr-lcssa ]
  %107 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %indvars.iv537.epil
  store i32 -1, ptr %107, align 4, !tbaa !33
  %indvars.iv.next538.epil = add nuw nsw i64 %indvars.iv537.epil, 1
  %epil.iter612.next = add i64 %epil.iter612, 1
  %epil.iter612.cmp.not = icmp eq i64 %epil.iter612.next, %xtraiter611
  br i1 %epil.iter612.cmp.not, label %.preheader466, label %.lr.ph475.epil, !llvm.loop !35

.preheader466:                                    ; preds = %.lr.ph475.epil, %.preheader466.unr-lcssa
  br i1 %28, label %.lr.ph489, label %._crit_edge490

.lr.ph489:                                        ; preds = %.preheader466
  %108 = icmp sgt i32 %10, 0
  %109 = getelementptr inbounds i8, ptr %20, i64 8
  %110 = zext i32 %10 to i64
  %111 = sext i32 %10 to i64
  %wide.trip.count554 = zext nneg i32 %5 to i64
  br label %116

.lr.ph475:                                        ; preds = %.lr.ph475, %.lr.ph475.preheader.new
  %indvars.iv537 = phi i64 [ 0, %.lr.ph475.preheader.new ], [ %indvars.iv.next538.3, %.lr.ph475 ]
  %niter615 = phi i64 [ 0, %.lr.ph475.preheader.new ], [ %niter615.next.3, %.lr.ph475 ]
  %112 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %indvars.iv537
  store i32 -1, ptr %112, align 4, !tbaa !33
  %indvars.iv.next538 = or disjoint i64 %indvars.iv537, 1
  %113 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %indvars.iv.next538
  store i32 -1, ptr %113, align 4, !tbaa !33
  %indvars.iv.next538.1 = or disjoint i64 %indvars.iv537, 2
  %114 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %indvars.iv.next538.1
  store i32 -1, ptr %114, align 4, !tbaa !33
  %indvars.iv.next538.2 = or disjoint i64 %indvars.iv537, 3
  %115 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %indvars.iv.next538.2
  store i32 -1, ptr %115, align 4, !tbaa !33
  %indvars.iv.next538.3 = add nuw nsw i64 %indvars.iv537, 4
  %niter615.next.3 = add i64 %niter615, 4
  %niter615.ncmp.3 = icmp eq i64 %niter615.next.3, %unroll_iter614
  br i1 %niter615.ncmp.3, label %.preheader466.unr-lcssa, label %.lr.ph475, !llvm.loop !36

116:                                              ; preds = %.lr.ph489, %205
  %indvars.iv551 = phi i64 [ 0, %.lr.ph489 ], [ %indvars.iv.next552, %205 ]
  %.0365488 = phi i32 [ 0, %.lr.ph489 ], [ %.3, %205 ]
  %.0366487 = phi i32 [ 0, %.lr.ph489 ], [ %.3369, %205 ]
  %117 = getelementptr inbounds i32, ptr %7, i64 %indvars.iv551
  %118 = load i32, ptr %117, align 4, !tbaa !26
  %119 = zext i32 %118 to i64
  %120 = getelementptr inbounds i8, ptr %1, i64 %119
  %121 = load i8, ptr %120, align 1, !tbaa !25
  %122 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %119
  store i32 %118, ptr %122, align 4, !tbaa !33
  %123 = getelementptr inbounds i8, ptr %122, i64 4
  store i32 %118, ptr %123, align 4, !tbaa !37
  %124 = getelementptr inbounds i8, ptr %122, i64 12
  store i32 1, ptr %124, align 4, !tbaa !38
  %125 = getelementptr inbounds i8, ptr %122, i64 8
  store i32 1, ptr %125, align 4, !tbaa !39
  br i1 %108, label %.lr.ph479, label %.loopexit.preheader

.lr.ph479:                                        ; preds = %116, %.lr.ph479
  %indvars.iv542 = phi i64 [ %indvars.iv.next543, %.lr.ph479 ], [ %110, %116 ]
  %.0405476 = phi i32 [ %132, %.lr.ph479 ], [ %118, %116 ]
  %indvars.iv.next543 = add nsw i64 %indvars.iv542, -1
  %126 = getelementptr inbounds i32, ptr %16, i64 %indvars.iv.next543
  store i32 -1, ptr %126, align 4, !tbaa !26
  %127 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv.next543
  %128 = load i32, ptr %127, align 4, !tbaa !26
  %129 = udiv i32 %.0405476, %128
  %130 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv.next543
  store i32 %129, ptr %130, align 4, !tbaa !26
  %131 = load i32, ptr %127, align 4, !tbaa !26
  %132 = urem i32 %.0405476, %131
  %133 = icmp sgt i64 %indvars.iv542, 1
  br i1 %133, label %.lr.ph479, label %.loopexit.preheader, !llvm.loop !40

.loopexit.preheader:                              ; preds = %.lr.ph479, %116
  br label %.loopexit

.loopexit:                                        ; preds = %198, %.loopexit.preheader
  %.0403 = phi i32 [ %118, %.loopexit.preheader ], [ %.1404, %198 ]
  %.1367 = phi i32 [ %.0366487, %.loopexit.preheader ], [ %.3369, %198 ]
  %.1 = phi i32 [ %.0365488, %.loopexit.preheader ], [ %.3, %198 ]
  br i1 %108, label %.lr.ph483, label %._crit_edge484

.lr.ph483:                                        ; preds = %.loopexit, %140
  %indvars.iv545 = phi i64 [ %indvars.iv.next546, %140 ], [ 0, %.loopexit ]
  %.0406480 = phi i32 [ %147, %140 ], [ 0, %.loopexit ]
  %134 = getelementptr inbounds i32, ptr %16, i64 %indvars.iv545
  %135 = load i32, ptr %134, align 4, !tbaa !26
  %136 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv545
  %137 = load i32, ptr %136, align 4, !tbaa !26
  %138 = add nsw i32 %137, %135
  %139 = icmp sgt i32 %138, -1
  br i1 %139, label %140, label %._crit_edge484.thread

140:                                              ; preds = %.lr.ph483
  %141 = getelementptr inbounds i32, ptr %12, i64 %indvars.iv545
  %142 = load i32, ptr %141, align 4, !tbaa !26
  %143 = icmp slt i32 %138, %142
  %144 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv545
  %145 = load i32, ptr %144, align 4, !tbaa !26
  %146 = mul nsw i32 %145, %138
  %147 = add i32 %146, %.0406480
  %indvars.iv.next546 = add nuw nsw i64 %indvars.iv545, 1
  %148 = icmp slt i64 %indvars.iv.next546, %111
  %149 = select i1 %148, i1 %143, i1 false
  br i1 %149, label %.lr.ph483, label %._crit_edge484, !llvm.loop !41

._crit_edge484:                                   ; preds = %140, %.loopexit
  %.0407.lcssa = phi i1 [ true, %.loopexit ], [ %143, %140 ]
  %.0406.lcssa = phi i32 [ 0, %.loopexit ], [ %147, %140 ]
  %.not438 = icmp ne i32 %.0406.lcssa, %118
  %or.cond.not = select i1 %.0407.lcssa, i1 %.not438, i1 false
  br i1 %or.cond.not, label %150, label %._crit_edge484.thread

150:                                              ; preds = %._crit_edge484
  %151 = zext i32 %.0406.lcssa to i64
  %152 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %151
  %153 = load i32, ptr %152, align 4, !tbaa !33
  %.not439 = icmp eq i32 %153, -1
  br i1 %.not439, label %._crit_edge484.thread, label %154

154:                                              ; preds = %150
  %155 = zext i32 %.0403 to i64
  %156 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %155, i32 2
  %157 = load i32, ptr %156, align 4, !tbaa !39
  %158 = load i32, ptr %109, align 4, !tbaa !39
  %159 = tail call i32 @climb(ptr noundef nonnull %20, i32 noundef %118)
  %160 = tail call i32 @climb(ptr noundef nonnull %20, i32 noundef %.0406.lcssa)
  %.not440 = icmp eq i32 %159, %160
  br i1 %.not440, label %._crit_edge484.thread, label %161

161:                                              ; preds = %154
  %162 = zext i32 %160 to i64
  %163 = getelementptr inbounds i8, ptr %1, i64 %162
  %164 = load i8, ptr %163, align 1, !tbaa !25
  %165 = icmp eq i8 %164, %121
  %166 = icmp slt i32 %157, %158
  %or.cond443 = select i1 %165, i1 %166, i1 false
  br i1 %or.cond443, label %167, label %181

167:                                              ; preds = %161
  %168 = zext i32 %159 to i64
  %169 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %168
  store i32 %160, ptr %169, align 4, !tbaa !33
  %170 = getelementptr inbounds i8, ptr %169, i64 4
  store i32 %160, ptr %170, align 4, !tbaa !37
  %171 = getelementptr inbounds i8, ptr %169, i64 12
  %172 = load i32, ptr %171, align 4, !tbaa !38
  %173 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %162
  %174 = getelementptr inbounds i8, ptr %173, i64 12
  %175 = load i32, ptr %174, align 4, !tbaa !38
  %176 = add i32 %175, %172
  store i32 %176, ptr %174, align 4, !tbaa !38
  %177 = getelementptr inbounds i8, ptr %173, i64 8
  store i32 %158, ptr %177, align 4, !tbaa !39
  %178 = add nsw i32 %.1, 1
  %179 = sext i32 %.1 to i64
  %180 = getelementptr inbounds i32, ptr %9, i64 %179
  store i32 %159, ptr %180, align 4, !tbaa !26
  br label %._crit_edge484.thread

181:                                              ; preds = %161
  %182 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %162
  store i32 %159, ptr %182, align 4, !tbaa !33
  %183 = getelementptr inbounds i8, ptr %182, i64 4
  store i32 %159, ptr %183, align 4, !tbaa !37
  %184 = getelementptr inbounds i8, ptr %182, i64 12
  %185 = load i32, ptr %184, align 4, !tbaa !38
  %186 = zext i32 %159 to i64
  %187 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %186
  %188 = getelementptr inbounds i8, ptr %187, i64 12
  %189 = load i32, ptr %188, align 4, !tbaa !38
  %190 = add i32 %189, %185
  store i32 %190, ptr %188, align 4, !tbaa !38
  %191 = add nsw i32 %158, 1
  %192 = tail call i32 @llvm.smax.i32(i32 %157, i32 %191)
  %193 = getelementptr inbounds i8, ptr %187, i64 8
  store i32 %192, ptr %193, align 4, !tbaa !39
  %194 = add nsw i32 %.1, 1
  %195 = sext i32 %.1 to i64
  %196 = getelementptr inbounds i32, ptr %9, i64 %195
  store i32 %160, ptr %196, align 4, !tbaa !26
  %not. = xor i1 %165, true
  %197 = zext i1 %not. to i32
  %spec.select = add nsw i32 %.1367, %197
  br label %._crit_edge484.thread

._crit_edge484.thread:                            ; preds = %.lr.ph483, %181, %154, %167, %150, %._crit_edge484
  %.1404 = phi i32 [ %.0403, %150 ], [ %.0403, %._crit_edge484 ], [ %159, %167 ], [ %159, %181 ], [ %159, %154 ], [ %.0403, %.lr.ph483 ]
  %.3369 = phi i32 [ %.1367, %150 ], [ %.1367, %._crit_edge484 ], [ %.1367, %167 ], [ %spec.select, %181 ], [ %.1367, %154 ], [ %.1367, %.lr.ph483 ]
  %.3 = phi i32 [ %.1, %150 ], [ %.1, %._crit_edge484 ], [ %178, %167 ], [ %194, %181 ], [ %.1, %154 ], [ %.1, %.lr.ph483 ]
  br label %198

198:                                              ; preds = %203, %._crit_edge484.thread
  %indvars.iv548 = phi i64 [ %indvars.iv.next549, %203 ], [ 0, %._crit_edge484.thread ]
  %199 = getelementptr inbounds i32, ptr %16, i64 %indvars.iv548
  %200 = load i32, ptr %199, align 4, !tbaa !26
  %201 = add nsw i32 %200, 1
  store i32 %201, ptr %199, align 4, !tbaa !26
  %202 = icmp sgt i32 %200, 0
  br i1 %202, label %203, label %.loopexit

203:                                              ; preds = %198
  %indvars.iv.next549 = add nuw nsw i64 %indvars.iv548, 1
  store i32 -1, ptr %199, align 4, !tbaa !26
  %204 = icmp eq i64 %indvars.iv.next549, %110
  br i1 %204, label %205, label %198, !llvm.loop !42

205:                                              ; preds = %203
  %indvars.iv.next552 = add nuw nsw i64 %indvars.iv551, 1
  %exitcond555.not = icmp eq i64 %indvars.iv.next552, %wide.trip.count554
  br i1 %exitcond555.not, label %._crit_edge490, label %116, !llvm.loop !43

._crit_edge490:                                   ; preds = %205, %._crit_edge, %._crit_edge.thread, %.preheader466
  %.0366.lcssa = phi i32 [ 0, %.preheader466 ], [ 0, %._crit_edge.thread ], [ 0, %._crit_edge ], [ %.3369, %205 ]
  %.0365.lcssa = phi i32 [ 0, %.preheader466 ], [ 0, %._crit_edge.thread ], [ 0, %._crit_edge ], [ %.3, %205 ]
  %206 = add nsw i32 %.0366.lcssa, 1
  %207 = getelementptr inbounds i8, ptr %0, i64 64
  store i32 %.0365.lcssa, ptr %207, align 8, !tbaa !44
  %208 = getelementptr inbounds i8, ptr %0, i64 184
  store i32 %206, ptr %208, align 8, !tbaa !45
  %209 = getelementptr inbounds i8, ptr %0, i64 104
  %210 = load i32, ptr %209, align 8, !tbaa !46
  %.not = icmp sgt i32 %210, %.0366.lcssa
  br i1 %.not, label %217, label %211

211:                                              ; preds = %._crit_edge490
  %.not431 = icmp eq ptr %22, null
  br i1 %.not431, label %213, label %212

212:                                              ; preds = %211
  tail call void @vl_free(ptr noundef nonnull %22) #6
  br label %213

213:                                              ; preds = %212, %211
  %214 = sext i32 %206 to i64
  %215 = mul nsw i64 %214, 28
  %216 = tail call ptr @vl_malloc(i64 noundef %215) #6
  store ptr %216, ptr %21, align 8, !tbaa !21
  store i32 %206, ptr %209, align 8, !tbaa !46
  br label %217

217:                                              ; preds = %213, %._crit_edge490
  %.0 = phi ptr [ %216, %213 ], [ %22, %._crit_edge490 ]
  %218 = getelementptr inbounds i8, ptr %0, i64 100
  store i32 %206, ptr %218, align 4, !tbaa !47
  br i1 %28, label %.lr.ph496.preheader, label %._crit_edge505

.lr.ph496.preheader:                              ; preds = %217
  %wide.trip.count559 = zext nneg i32 %5 to i64
  br label %.lr.ph496

.preheader464:                                    ; preds = %244
  %219 = icmp sgt i32 %.5, 0
  br i1 %219, label %.lr.ph499.preheader, label %._crit_edge505

.lr.ph499.preheader:                              ; preds = %.preheader464
  %wide.trip.count564 = zext nneg i32 %.5 to i64
  %xtraiter616 = and i64 %wide.trip.count564, 1
  %220 = icmp eq i32 %.5, 1
  br i1 %220, label %.preheader463.unr-lcssa, label %.lr.ph499.preheader.new

.lr.ph499.preheader.new:                          ; preds = %.lr.ph499.preheader
  %unroll_iter619 = and i64 %wide.trip.count564, 2147483646
  br label %.lr.ph499

.lr.ph496:                                        ; preds = %.lr.ph496.preheader, %244
  %indvars.iv556 = phi i64 [ 0, %.lr.ph496.preheader ], [ %indvars.iv.next557, %244 ]
  %.4494 = phi i32 [ 0, %.lr.ph496.preheader ], [ %.5, %244 ]
  %221 = getelementptr inbounds i32, ptr %7, i64 %indvars.iv556
  %222 = load i32, ptr %221, align 4, !tbaa !26
  %223 = zext i32 %222 to i64
  %224 = getelementptr inbounds i8, ptr %1, i64 %223
  %225 = load i8, ptr %224, align 1, !tbaa !25
  %226 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %223
  %227 = load i32, ptr %226, align 4, !tbaa !33
  %228 = zext i32 %227 to i64
  %229 = getelementptr inbounds i8, ptr %1, i64 %228
  %230 = load i8, ptr %229, align 1, !tbaa !25
  %231 = icmp ugt i8 %230, %225
  %232 = icmp eq i32 %222, %227
  %233 = or i1 %232, %231
  br i1 %233, label %234, label %244

234:                                              ; preds = %.lr.ph496
  %235 = sext i32 %.4494 to i64
  %236 = getelementptr inbounds %struct._VlMserExtrReg, ptr %.0, i64 %235
  %237 = getelementptr inbounds i8, ptr %236, i64 4
  store i32 %222, ptr %237, align 4, !tbaa !48
  store i32 %.4494, ptr %236, align 4, !tbaa !51
  %238 = load i8, ptr %224, align 1, !tbaa !25
  %239 = getelementptr inbounds i8, ptr %236, i64 8
  store i8 %238, ptr %239, align 4, !tbaa !52
  %240 = getelementptr inbounds i8, ptr %226, i64 12
  %241 = load i32, ptr %240, align 4, !tbaa !38
  %242 = getelementptr inbounds i8, ptr %236, i64 16
  store i32 %241, ptr %242, align 4, !tbaa !53
  %243 = add nsw i32 %.4494, 1
  br label %244

244:                                              ; preds = %.lr.ph496, %234
  %.sink = phi i32 [ %.4494, %234 ], [ -1, %.lr.ph496 ]
  %.5 = phi i32 [ %243, %234 ], [ %.4494, %.lr.ph496 ]
  %245 = getelementptr inbounds i8, ptr %226, i64 4
  store i32 %.sink, ptr %245, align 4
  %indvars.iv.next557 = add nuw nsw i64 %indvars.iv556, 1
  %exitcond560.not = icmp eq i64 %indvars.iv.next557, %wide.trip.count559
  br i1 %exitcond560.not, label %.preheader464, label %.lr.ph496, !llvm.loop !54

.preheader463.unr-lcssa:                          ; preds = %283, %.lr.ph499.preheader
  %indvars.iv561.unr = phi i64 [ 0, %.lr.ph499.preheader ], [ %indvars.iv.next562.1, %283 ]
  %lcmp.mod618.not = icmp eq i64 %xtraiter616, 0
  br i1 %lcmp.mod618.not, label %.preheader463, label %.lr.ph499.epil

.lr.ph499.epil:                                   ; preds = %.preheader463.unr-lcssa
  %246 = getelementptr inbounds %struct._VlMserExtrReg, ptr %.0, i64 %indvars.iv561.unr
  %247 = getelementptr inbounds i8, ptr %246, i64 4
  %248 = load i32, ptr %247, align 4, !tbaa !48
  br label %249

249:                                              ; preds = %249, %.lr.ph499.epil
  %.0414.epil = phi i32 [ %248, %.lr.ph499.epil ], [ %252, %249 ]
  %250 = zext i32 %.0414.epil to i64
  %251 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %250
  %252 = load i32, ptr %251, align 4, !tbaa !33
  %253 = zext i32 %252 to i64
  %254 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %253, i32 1
  %255 = load i32, ptr %254, align 4, !tbaa !37
  %256 = icmp eq i32 %255, -1
  br i1 %256, label %249, label %.preheader463.epilog-lcssa, !llvm.loop !55

.preheader463.epilog-lcssa:                       ; preds = %249
  store i32 %255, ptr %246, align 4, !tbaa !51
  %257 = getelementptr inbounds i8, ptr %246, i64 12
  %258 = trunc nuw nsw i64 %indvars.iv561.unr to i32
  store i32 %258, ptr %257, align 4, !tbaa !56
  br label %.preheader463

.preheader463:                                    ; preds = %.preheader463.unr-lcssa, %.preheader463.epilog-lcssa
  br i1 %219, label %.lr.ph501.preheader, label %._crit_edge505

.lr.ph501.preheader:                              ; preds = %.preheader463
  %wide.trip.count569 = zext nneg i32 %.5 to i64
  br label %.lr.ph501

.lr.ph499:                                        ; preds = %283, %.lr.ph499.preheader.new
  %indvars.iv561 = phi i64 [ 0, %.lr.ph499.preheader.new ], [ %indvars.iv.next562.1, %283 ]
  %niter620 = phi i64 [ 0, %.lr.ph499.preheader.new ], [ %niter620.next.1, %283 ]
  %259 = getelementptr inbounds %struct._VlMserExtrReg, ptr %.0, i64 %indvars.iv561
  %260 = getelementptr inbounds i8, ptr %259, i64 4
  %261 = load i32, ptr %260, align 4, !tbaa !48
  br label %262

262:                                              ; preds = %262, %.lr.ph499
  %.0414 = phi i32 [ %261, %.lr.ph499 ], [ %265, %262 ]
  %263 = zext i32 %.0414 to i64
  %264 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %263
  %265 = load i32, ptr %264, align 4, !tbaa !33
  %266 = zext i32 %265 to i64
  %267 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %266, i32 1
  %268 = load i32, ptr %267, align 4, !tbaa !37
  %269 = icmp eq i32 %268, -1
  br i1 %269, label %262, label %.lr.ph499.1, !llvm.loop !55

.lr.ph499.1:                                      ; preds = %262
  store i32 %268, ptr %259, align 4, !tbaa !51
  %270 = getelementptr inbounds i8, ptr %259, i64 12
  %271 = trunc nuw nsw i64 %indvars.iv561 to i32
  store i32 %271, ptr %270, align 4, !tbaa !56
  %indvars.iv.next562 = or disjoint i64 %indvars.iv561, 1
  %272 = getelementptr inbounds %struct._VlMserExtrReg, ptr %.0, i64 %indvars.iv.next562
  %273 = getelementptr inbounds i8, ptr %272, i64 4
  %274 = load i32, ptr %273, align 4, !tbaa !48
  br label %275

275:                                              ; preds = %275, %.lr.ph499.1
  %.0414.1 = phi i32 [ %274, %.lr.ph499.1 ], [ %278, %275 ]
  %276 = zext i32 %.0414.1 to i64
  %277 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %276
  %278 = load i32, ptr %277, align 4, !tbaa !33
  %279 = zext i32 %278 to i64
  %280 = getelementptr inbounds %struct._VlMserReg, ptr %20, i64 %279, i32 1
  %281 = load i32, ptr %280, align 4, !tbaa !37
  %282 = icmp eq i32 %281, -1
  br i1 %282, label %275, label %283, !llvm.loop !55

283:                                              ; preds = %275
  store i32 %281, ptr %272, align 4, !tbaa !51
  %284 = getelementptr inbounds i8, ptr %272, i64 12
  %285 = trunc nuw nsw i64 %indvars.iv.next562 to i32
  store i32 %285, ptr %284, align 4, !tbaa !56
  %indvars.iv.next562.1 = add nuw nsw i64 %indvars.iv561, 2
  %niter620.next.1 = add i64 %niter620, 2
  %niter620.ncmp.1 = icmp eq i64 %niter620.next.1, %unroll_iter619
  br i1 %niter620.ncmp.1, label %.preheader463.unr-lcssa, label %.lr.ph499, !llvm.loop !57

.preheader462:                                    ; preds = %select.unfold
  br i1 %219, label %.lr.ph504.preheader, label %._crit_edge505

.lr.ph504.preheader:                              ; preds = %.preheader462
  %wide.trip.count574 = zext nneg i32 %.5 to i64
  br label %.lr.ph504

.lr.ph501:                                        ; preds = %.lr.ph501.preheader, %select.unfold
  %indvars.iv566 = phi i64 [ 0, %.lr.ph501.preheader ], [ %indvars.iv.next567, %select.unfold ]
  %286 = getelementptr inbounds %struct._VlMserExtrReg, ptr %.0, i64 %indvars.iv566
  %287 = getelementptr inbounds i8, ptr %286, i64 8
  %288 = load i8, ptr %287, align 4, !tbaa !52
  %289 = zext i8 %288 to i32
  %290 = add nsw i32 %26, %289
  %291 = getelementptr inbounds i8, ptr %286, i64 12
  %292 = load i32, ptr %291, align 4, !tbaa !56
  br label %293

293:                                              ; preds = %298, %.lr.ph501
  %.0412 = phi i32 [ %292, %.lr.ph501 ], [ %296, %298 ]
  %294 = sext i32 %.0412 to i64
  %295 = getelementptr inbounds %struct._VlMserExtrReg, ptr %.0, i64 %294
  %296 = load i32, ptr %295, align 4, !tbaa !51
  %297 = icmp eq i32 %296, %.0412
  br i1 %297, label %select.unfold, label %298

298:                                              ; preds = %293
  %299 = sext i32 %296 to i64
  %300 = getelementptr inbounds %struct._VlMserExtrReg, ptr %.0, i64 %299, i32 2
  %301 = load i8, ptr %300, align 4, !tbaa !52
  %302 = zext i8 %301 to i32
  %303 = icmp slt i32 %290, %302
  br i1 %303, label %select.unfold, label %293

select.unfold:                                    ; preds = %298, %293
  %304 = getelementptr inbounds i8, ptr %286, i64 16
  %305 = load i32, ptr %304, align 4, !tbaa !53
  %306 = getelementptr inbounds %struct._VlMserExtrReg, ptr %.0, i64 %294, i32 4
  %307 = load i32, ptr %306, align 4, !tbaa !53
  %308 = sub nsw i32 %307, %305
  %309 = sitofp i32 %308 to float
  %310 = sitofp i32 %305 to float
  %311 = fdiv float %309, %310
  %312 = getelementptr inbounds i8, ptr %286, i64 20
  store float %311, ptr %312, align 4, !tbaa !58
  %313 = getelementptr inbounds i8, ptr %286, i64 24
  store i32 1, ptr %313, align 4, !tbaa !59
  %314 = load i32, ptr %286, align 4, !tbaa !51
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds %struct._VlMserExtrReg, ptr %.0, i64 %315, i32 3
  %317 = load i32, ptr %316, align 4, !tbaa !56
  %318 = tail call i32 @llvm.smax.i32(i32 %.0412, i32 %317)
  store i32 %318, ptr %316, align 4, !tbaa !56
  %indvars.iv.next567 = add nuw nsw i64 %indvars.iv566, 1
  %exitcond570.not = icmp eq i64 %indvars.iv.next567, %wide.trip.count569
  br i1 %exitcond570.not, label %.preheader462, label %.lr.ph501, !llvm.loop !60

.lr.ph504:                                        ; preds = %.lr.ph504.preheader, %343
  %indvars.iv571 = phi i64 [ 0, %.lr.ph504.preheader ], [ %indvars.iv.next572, %343 ]
  %.0373503 = phi i32 [ %.5, %.lr.ph504.preheader ], [ %.2375, %343 ]
  %319 = getelementptr inbounds %struct._VlMserExtrReg, ptr %.0, i64 %indvars.iv571
  %320 = load i32, ptr %319, align 4, !tbaa !51
  %321 = getelementptr inbounds i8, ptr %319, i64 8
  %322 = load i8, ptr %321, align 4, !tbaa !52
  %323 = zext i32 %320 to i64
  %324 = getelementptr inbounds %struct._VlMserExtrReg, ptr %.0, i64 %323
  %325 = getelementptr inbounds i8, ptr %324, i64 8
  %326 = load i8, ptr %325, align 4, !tbaa !52
  %327 = zext i8 %326 to i32
  %328 = zext i8 %322 to i32
  %329 = add nuw nsw i32 %328, 1
  %330 = icmp ult i32 %329, %327
  br i1 %330, label %343, label %331

331:                                              ; preds = %.lr.ph504
  %332 = getelementptr inbounds i8, ptr %324, i64 20
  %333 = load float, ptr %332, align 4, !tbaa !58
  %334 = getelementptr inbounds i8, ptr %319, i64 20
  %335 = load float, ptr %334, align 4, !tbaa !58
  %336 = fcmp olt float %335, %333
  %337 = trunc nuw nsw i64 %indvars.iv571 to i32
  %..8 = select i1 %336, i32 %320, i32 %337
  %338 = zext i32 %..8 to i64
  %339 = getelementptr inbounds %struct._VlMserExtrReg, ptr %.0, i64 %338, i32 6
  %340 = load i32, ptr %339, align 4, !tbaa !59
  %.not437 = icmp eq i32 %340, 0
  br i1 %.not437, label %343, label %341

341:                                              ; preds = %331
  %342 = add nsw i32 %.0373503, -1
  store i32 0, ptr %339, align 4, !tbaa !59
  br label %343

343:                                              ; preds = %331, %341, %.lr.ph504
  %.2375 = phi i32 [ %.0373503, %.lr.ph504 ], [ %342, %341 ], [ %.0373503, %331 ]
  %indvars.iv.next572 = add nuw nsw i64 %indvars.iv571, 1
  %exitcond575.not = icmp eq i64 %indvars.iv.next572, %wide.trip.count574
  br i1 %exitcond575.not, label %._crit_edge505, label %.lr.ph504, !llvm.loop !61

._crit_edge505:                                   ; preds = %343, %217, %.preheader464, %.preheader463, %.preheader462
  %344 = phi i1 [ false, %.preheader462 ], [ false, %.preheader463 ], [ false, %.preheader464 ], [ false, %217 ], [ %219, %343 ]
  %.4.lcssa591593596 = phi i32 [ %.5, %.preheader462 ], [ %.5, %.preheader463 ], [ %.5, %.preheader464 ], [ 0, %217 ], [ %.5, %343 ]
  %.0373.lcssa = phi i32 [ %.5, %.preheader462 ], [ %.5, %.preheader463 ], [ %.5, %.preheader464 ], [ 0, %217 ], [ %.2375, %343 ]
  %345 = sub nsw i32 %.4.lcssa591593596, %.0373.lcssa
  %346 = getelementptr inbounds i8, ptr %0, i64 188
  store i32 %345, ptr %346, align 4, !tbaa !62
  %347 = getelementptr inbounds i8, ptr %0, i64 152
  %348 = load double, ptr %347, align 8, !tbaa !63
  %349 = fptrunc double %348 to float
  %350 = uitofp i32 %5 to float
  %351 = fmul float %350, %349
  %352 = getelementptr inbounds i8, ptr %0, i64 160
  %353 = load double, ptr %352, align 8, !tbaa !64
  %354 = fptrunc double %353 to float
  %355 = fmul float %350, %354
  %356 = getelementptr inbounds i8, ptr %0, i64 168
  %357 = load double, ptr %356, align 8, !tbaa !65
  %358 = fptrunc double %357 to float
  %359 = getelementptr inbounds i8, ptr %0, i64 176
  %360 = load double, ptr %359, align 8, !tbaa !66
  %361 = fptrunc double %360 to float
  br i1 %344, label %.lr.ph515, label %._crit_edge516

.lr.ph515:                                        ; preds = %._crit_edge505
  %362 = fcmp olt float %361, 1.000000e+00
  %363 = zext nneg i32 %.4.lcssa591593596 to i64
  br label %364

364:                                              ; preds = %.lr.ph515, %.thread458
  %indvars.iv576 = phi i64 [ %363, %.lr.ph515 ], [ %indvars.iv.next577, %.thread458 ]
  %.3376512 = phi i32 [ %.0373.lcssa, %.lr.ph515 ], [ %.4377, %.thread458 ]
  %.0378511 = phi i32 [ 0, %.lr.ph515 ], [ %.2380, %.thread458 ]
  %.0381510 = phi i32 [ 0, %.lr.ph515 ], [ %.2383, %.thread458 ]
  %.0384509 = phi i32 [ 0, %.lr.ph515 ], [ %.2386, %.thread458 ]
  %.0388508 = phi i32 [ 0, %.lr.ph515 ], [ %.3391, %.thread458 ]
  %indvars.iv.next577 = add nsw i64 %indvars.iv576, -1
  %365 = getelementptr inbounds %struct._VlMserExtrReg, ptr %.0, i64 %indvars.iv.next577
  %366 = getelementptr inbounds i8, ptr %365, i64 24
  %367 = load i32, ptr %366, align 4, !tbaa !59
  %.not434 = icmp eq i32 %367, 0
  br i1 %.not434, label %.thread458, label %368

368:                                              ; preds = %364
  %369 = getelementptr inbounds i8, ptr %365, i64 20
  %370 = load float, ptr %369, align 4, !tbaa !58
  %371 = fcmp ult float %370, %358
  br i1 %371, label %374, label %372

372:                                              ; preds = %368
  %373 = add nsw i32 %.0384509, 1
  br label %406

374:                                              ; preds = %368
  %375 = getelementptr inbounds i8, ptr %365, i64 16
  %376 = load i32, ptr %375, align 4, !tbaa !53
  %377 = uitofp i32 %376 to float
  %378 = fcmp olt float %351, %377
  br i1 %378, label %379, label %381

379:                                              ; preds = %374
  %380 = add nsw i32 %.0378511, 1
  br label %406

381:                                              ; preds = %374
  %382 = fcmp ogt float %355, %377
  br i1 %382, label %383, label %385

383:                                              ; preds = %381
  %384 = add nsw i32 %.0381510, 1
  br label %406

385:                                              ; preds = %381
  br i1 %362, label %386, label %.thread458

386:                                              ; preds = %385
  %387 = load i32, ptr %365, align 4, !tbaa !51
  %388 = zext i32 %387 to i64
  %.not435 = icmp eq i64 %indvars.iv.next577, %388
  br i1 %.not435, label %.thread458, label %.preheader

.preheader:                                       ; preds = %386, %393
  %.0370 = phi i32 [ %394, %393 ], [ %387, %386 ]
  %389 = zext i32 %.0370 to i64
  %390 = getelementptr inbounds %struct._VlMserExtrReg, ptr %.0, i64 %389
  %391 = getelementptr inbounds i8, ptr %390, i64 24
  %392 = load i32, ptr %391, align 4, !tbaa !59
  %.not436 = icmp eq i32 %392, 0
  br i1 %.not436, label %393, label %396

393:                                              ; preds = %.preheader
  %394 = load i32, ptr %390, align 4, !tbaa !51
  %395 = icmp eq i32 %394, %.0370
  br i1 %395, label %396, label %.preheader

396:                                              ; preds = %393, %.preheader
  %397 = getelementptr inbounds %struct._VlMserExtrReg, ptr %.0, i64 %389, i32 4
  %398 = load i32, ptr %397, align 4, !tbaa !53
  %399 = sub nsw i32 %398, %376
  %400 = sitofp i32 %399 to float
  %401 = sitofp i32 %398 to float
  %402 = fdiv float %400, %401
  %403 = fcmp olt float %402, %361
  br i1 %403, label %404, label %.thread458

404:                                              ; preds = %396
  %405 = add nsw i32 %.0388508, 1
  br label %406

406:                                              ; preds = %404, %383, %379, %372
  %.2390 = phi i32 [ %.0388508, %372 ], [ %.0388508, %379 ], [ %.0388508, %383 ], [ %405, %404 ]
  %.1385 = phi i32 [ %373, %372 ], [ %.0384509, %379 ], [ %.0384509, %383 ], [ %.0384509, %404 ]
  %.1382 = phi i32 [ %.0381510, %372 ], [ %.0381510, %379 ], [ %384, %383 ], [ %.0381510, %404 ]
  %.1379 = phi i32 [ %.0378511, %372 ], [ %380, %379 ], [ %.0378511, %383 ], [ %.0378511, %404 ]
  store i32 0, ptr %366, align 4, !tbaa !59
  %407 = add nsw i32 %.3376512, -1
  br label %.thread458

.thread458:                                       ; preds = %386, %396, %385, %364, %406
  %.3391 = phi i32 [ %.2390, %406 ], [ %.0388508, %385 ], [ %.0388508, %364 ], [ %.0388508, %396 ], [ %.0388508, %386 ]
  %.2386 = phi i32 [ %.1385, %406 ], [ %.0384509, %385 ], [ %.0384509, %364 ], [ %.0384509, %396 ], [ %.0384509, %386 ]
  %.2383 = phi i32 [ %.1382, %406 ], [ %.0381510, %385 ], [ %.0381510, %364 ], [ %.0381510, %396 ], [ %.0381510, %386 ]
  %.2380 = phi i32 [ %.1379, %406 ], [ %.0378511, %385 ], [ %.0378511, %364 ], [ %.0378511, %396 ], [ %.0378511, %386 ]
  %.4377 = phi i32 [ %407, %406 ], [ %.3376512, %385 ], [ %.3376512, %364 ], [ %.3376512, %396 ], [ %.3376512, %386 ]
  %408 = icmp sgt i64 %indvars.iv576, 1
  br i1 %408, label %364, label %._crit_edge516, !llvm.loop !67

._crit_edge516:                                   ; preds = %.thread458, %._crit_edge505
  %.0388.lcssa = phi i32 [ 0, %._crit_edge505 ], [ %.3391, %.thread458 ]
  %.0384.lcssa = phi i32 [ 0, %._crit_edge505 ], [ %.2386, %.thread458 ]
  %.0381.lcssa = phi i32 [ 0, %._crit_edge505 ], [ %.2383, %.thread458 ]
  %.0378.lcssa = phi i32 [ 0, %._crit_edge505 ], [ %.2380, %.thread458 ]
  %.3376.lcssa = phi i32 [ %.0373.lcssa, %._crit_edge505 ], [ %.4377, %.thread458 ]
  %409 = getelementptr inbounds i8, ptr %0, i64 192
  store i32 %.0384.lcssa, ptr %409, align 8, !tbaa !68
  %410 = getelementptr inbounds i8, ptr %0, i64 196
  store i32 %.0378.lcssa, ptr %410, align 4, !tbaa !69
  %411 = getelementptr inbounds i8, ptr %0, i64 200
  store i32 %.0381.lcssa, ptr %411, align 8, !tbaa !70
  %412 = getelementptr inbounds i8, ptr %0, i64 204
  store i32 %.0388.lcssa, ptr %412, align 4, !tbaa !71
  %413 = getelementptr inbounds i8, ptr %0, i64 108
  %414 = load i32, ptr %413, align 4, !tbaa !72
  %415 = icmp slt i32 %414, %.3376.lcssa
  br i1 %415, label %416, label %422

416:                                              ; preds = %._crit_edge516
  %.not432 = icmp eq ptr %24, null
  br i1 %.not432, label %418, label %417

417:                                              ; preds = %416
  tail call void @vl_free(ptr noundef nonnull %24) #6
  br label %418

418:                                              ; preds = %417, %416
  %419 = sext i32 %.3376.lcssa to i64
  %420 = shl nsw i64 %419, 2
  %421 = tail call ptr @vl_malloc(i64 noundef %420) #6
  store ptr %421, ptr %23, align 8, !tbaa !22
  store i32 %.3376.lcssa, ptr %413, align 4, !tbaa !72
  br label %422

422:                                              ; preds = %418, %._crit_edge516
  %.0364 = phi ptr [ %421, %418 ], [ %24, %._crit_edge516 ]
  store i32 %.3376.lcssa, ptr %218, align 4, !tbaa !47
  br i1 %344, label %.lr.ph525.preheader, label %._crit_edge526

.lr.ph525.preheader:                              ; preds = %422
  %wide.trip.count582 = zext i32 %.4.lcssa591593596 to i64
  %xtraiter621 = and i64 %wide.trip.count582, 1
  %423 = icmp eq i32 %.4.lcssa591593596, 1
  br i1 %423, label %._crit_edge526.loopexit.unr-lcssa, label %.lr.ph525.preheader.new

.lr.ph525.preheader.new:                          ; preds = %.lr.ph525.preheader
  %unroll_iter624 = and i64 %wide.trip.count582, 4294967294
  br label %.lr.ph525

.lr.ph525:                                        ; preds = %442, %.lr.ph525.preheader.new
  %indvars.iv579 = phi i64 [ 0, %.lr.ph525.preheader.new ], [ %indvars.iv.next580.1, %442 ]
  %.0398522 = phi i32 [ 0, %.lr.ph525.preheader.new ], [ %.1399.1, %442 ]
  %niter625 = phi i64 [ 0, %.lr.ph525.preheader.new ], [ %niter625.next.1, %442 ]
  %424 = getelementptr inbounds %struct._VlMserExtrReg, ptr %.0, i64 %indvars.iv579
  %425 = getelementptr inbounds i8, ptr %424, i64 24
  %426 = load i32, ptr %425, align 4, !tbaa !59
  %.not433 = icmp eq i32 %426, 0
  br i1 %.not433, label %.lr.ph525.1, label %427

427:                                              ; preds = %.lr.ph525
  %428 = getelementptr inbounds i8, ptr %424, i64 4
  %429 = load i32, ptr %428, align 4, !tbaa !48
  %430 = add nsw i32 %.0398522, 1
  %431 = sext i32 %.0398522 to i64
  %432 = getelementptr inbounds i32, ptr %.0364, i64 %431
  store i32 %429, ptr %432, align 4, !tbaa !26
  br label %.lr.ph525.1

.lr.ph525.1:                                      ; preds = %.lr.ph525, %427
  %.1399 = phi i32 [ %430, %427 ], [ %.0398522, %.lr.ph525 ]
  %indvars.iv.next580 = or disjoint i64 %indvars.iv579, 1
  %433 = getelementptr inbounds %struct._VlMserExtrReg, ptr %.0, i64 %indvars.iv.next580
  %434 = getelementptr inbounds i8, ptr %433, i64 24
  %435 = load i32, ptr %434, align 4, !tbaa !59
  %.not433.1 = icmp eq i32 %435, 0
  br i1 %.not433.1, label %442, label %436

436:                                              ; preds = %.lr.ph525.1
  %437 = getelementptr inbounds i8, ptr %433, i64 4
  %438 = load i32, ptr %437, align 4, !tbaa !48
  %439 = add nsw i32 %.1399, 1
  %440 = sext i32 %.1399 to i64
  %441 = getelementptr inbounds i32, ptr %.0364, i64 %440
  store i32 %438, ptr %441, align 4, !tbaa !26
  br label %442

442:                                              ; preds = %436, %.lr.ph525.1
  %.1399.1 = phi i32 [ %439, %436 ], [ %.1399, %.lr.ph525.1 ]
  %indvars.iv.next580.1 = add nuw nsw i64 %indvars.iv579, 2
  %niter625.next.1 = add i64 %niter625, 2
  %niter625.ncmp.1 = icmp eq i64 %niter625.next.1, %unroll_iter624
  br i1 %niter625.ncmp.1, label %._crit_edge526.loopexit.unr-lcssa.loopexit, label %.lr.ph525, !llvm.loop !73

._crit_edge526.loopexit.unr-lcssa.loopexit:       ; preds = %442
  %443 = sext i32 %.1399.1 to i64
  br label %._crit_edge526.loopexit.unr-lcssa

._crit_edge526.loopexit.unr-lcssa:                ; preds = %._crit_edge526.loopexit.unr-lcssa.loopexit, %.lr.ph525.preheader
  %indvars.iv579.unr = phi i64 [ 0, %.lr.ph525.preheader ], [ %indvars.iv.next580.1, %._crit_edge526.loopexit.unr-lcssa.loopexit ]
  %.0398522.unr = phi i64 [ 0, %.lr.ph525.preheader ], [ %443, %._crit_edge526.loopexit.unr-lcssa.loopexit ]
  %lcmp.mod623.not = icmp eq i64 %xtraiter621, 0
  br i1 %lcmp.mod623.not, label %._crit_edge526, label %.lr.ph525.epil

.lr.ph525.epil:                                   ; preds = %._crit_edge526.loopexit.unr-lcssa
  %444 = getelementptr inbounds %struct._VlMserExtrReg, ptr %.0, i64 %indvars.iv579.unr
  %445 = getelementptr inbounds i8, ptr %444, i64 24
  %446 = load i32, ptr %445, align 4, !tbaa !59
  %.not433.epil = icmp eq i32 %446, 0
  br i1 %.not433.epil, label %._crit_edge526, label %447

447:                                              ; preds = %.lr.ph525.epil
  %448 = getelementptr inbounds i8, ptr %444, i64 4
  %449 = load i32, ptr %448, align 4, !tbaa !48
  %450 = getelementptr inbounds i32, ptr %.0364, i64 %.0398522.unr
  store i32 %449, ptr %450, align 4, !tbaa !26
  br label %._crit_edge526

._crit_edge526:                                   ; preds = %._crit_edge526.loopexit.unr-lcssa, %447, %.lr.ph525.epil, %422
  ret void
}

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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 16}
!6 = !{!"_VlMserFilt", !7, i64 0, !10, i64 8, !7, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !7, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !10, i64 112, !10, i64 120, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144, !11, i64 152, !11, i64 160, !11, i64 168, !11, i64 176, !12, i64 184}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!"double", !8, i64 0}
!12 = !{!"_VlMserStats", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20}
!13 = !{!6, !10, i64 48}
!14 = !{!6, !10, i64 56}
!15 = !{!6, !7, i64 0}
!16 = !{!6, !10, i64 8}
!17 = !{!6, !10, i64 24}
!18 = !{!6, !10, i64 32}
!19 = !{!6, !10, i64 40}
!20 = !{!6, !10, i64 72}
!21 = !{!6, !10, i64 80}
!22 = !{!6, !10, i64 88}
!23 = !{!6, !7, i64 144}
!24 = !{!6, !7, i64 132}
!25 = !{!8, !8, i64 0}
!26 = !{!7, !7, i64 0}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.unroll.disable"}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = distinct !{!31, !30}
!32 = distinct !{!32, !30}
!33 = !{!34, !7, i64 0}
!34 = !{!"_VlMserReg", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12}
!35 = distinct !{!35, !28}
!36 = distinct !{!36, !30}
!37 = !{!34, !7, i64 4}
!38 = !{!34, !7, i64 12}
!39 = !{!34, !7, i64 8}
!40 = distinct !{!40, !30}
!41 = distinct !{!41, !30}
!42 = distinct !{!42, !30}
!43 = distinct !{!43, !30}
!44 = !{!6, !7, i64 64}
!45 = !{!6, !7, i64 184}
!46 = !{!6, !7, i64 104}
!47 = !{!6, !7, i64 100}
!48 = !{!49, !7, i64 4}
!49 = !{!"_VlMserExtrReg", !7, i64 0, !7, i64 4, !8, i64 8, !7, i64 12, !7, i64 16, !50, i64 20, !7, i64 24}
!50 = !{!"float", !8, i64 0}
!51 = !{!49, !7, i64 0}
!52 = !{!49, !8, i64 8}
!53 = !{!49, !7, i64 16}
!54 = distinct !{!54, !30}
!55 = distinct !{!55, !30}
!56 = !{!49, !7, i64 12}
!57 = distinct !{!57, !30}
!58 = !{!49, !50, i64 20}
!59 = !{!49, !7, i64 24}
!60 = distinct !{!60, !30}
!61 = distinct !{!61, !30}
!62 = !{!6, !7, i64 188}
!63 = !{!6, !11, i64 152}
!64 = !{!6, !11, i64 160}
!65 = !{!6, !11, i64 168}
!66 = !{!6, !11, i64 176}
!67 = distinct !{!67, !30}
!68 = !{!6, !7, i64 192}
!69 = !{!6, !7, i64 196}
!70 = !{!6, !7, i64 200}
!71 = !{!6, !7, i64 204}
!72 = !{!6, !7, i64 108}
!73 = distinct !{!73, !30}


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