; LLVM IR from stonne-simulator/omega :: omega-code/stonne/src/SparseDenseSDMemory.ll (ZN19SparseDenseSDMemory5cycleEv)

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

%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<DataPackage *, std::allocator<DataPackage *>>::_Vector_impl" }
%"struct.std::_Vector_base<DataPackage *, std::allocator<DataPackage *>>::_Vector_impl" = type { %"struct.std::_Vector_base<DataPackage *, std::allocator<DataPackage *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DataPackage *, std::allocator<DataPackage *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.SparseDenseSDMemory = type { %class.MemoryController, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, %"class.std::vector", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.8", i32, i32, i32, i32, i32, i32, ptr, %"class.std::vector.13", %"class.std::vector.13", ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, ptr, i32, i32, i32, i32, ptr, ptr, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, %"class.std::vector.8", i32, %class.SDMemoryStats }
%class.MemoryController = type { %class.Unit }
%class.Unit = type { ptr, i32, %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<SparseVN, std::allocator<SparseVN>>::_Vector_impl" }
%"struct.std::_Vector_base<SparseVN, std::allocator<SparseVN>>::_Vector_impl" = type { %"struct.std::_Vector_base<SparseVN, std::allocator<SparseVN>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SparseVN, std::allocator<SparseVN>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<Fifo *, std::allocator<Fifo *>>::_Vector_impl" }
%"struct.std::_Vector_base<Fifo *, std::allocator<Fifo *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Fifo *, std::allocator<Fifo *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Fifo *, std::allocator<Fifo *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<Connection *, std::allocator<Connection *>>::_Vector_impl" }
%"struct.std::_Vector_base<Connection *, std::allocator<Connection *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Connection *, std::allocator<Connection *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Connection *, std::allocator<Connection *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.SDMemoryStats = type { %class.Stats, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3" }
%class.Stats = type { ptr }

@.str.1 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [19 x i8], align 1
@__PRETTY_FUNCTION__._ZN19SparseDenseSDMemory5cycleEv = external hidden unnamed_addr constant [42 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [22 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #0

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #1

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

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

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) #0

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN19SparseDenseSDMemory5cycleEv(ptr noundef nonnull align 8 dereferenceable(672) %0) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.std::vector.21", align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca float, align 4
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %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 float, align 4
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca float, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %32 = load ptr, ptr %2, align 8
  %33 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 63
  %34 = load i8, ptr %33, align 8, !tbaa !9, !range !38, !noundef !39
  %35 = trunc i8 %34 to i1
  br i1 %35, label %36, label %37

36:                                               ; preds = %1
  br label %39

37:                                               ; preds = %1
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 148, ptr noundef @__PRETTY_FUNCTION__._ZN19SparseDenseSDMemory5cycleEv) #8
  unreachable

38:                                               ; No predecessors!
  br label %39

39:                                               ; preds = %38, %36
  %40 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 62
  %41 = load i8, ptr %40, align 1, !tbaa !40, !range !38, !noundef !39
  %42 = trunc i8 %41 to i1
  br i1 %42, label %43, label %44

43:                                               ; preds = %39
  br label %46

44:                                               ; preds = %39
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 149, ptr noundef @__PRETTY_FUNCTION__._ZN19SparseDenseSDMemory5cycleEv) #8
  unreachable

45:                                               ; No predecessors!
  br label %46

46:                                               ; preds = %45, %43
  call void @llvm.lifetime.start.p0(i64 24, ptr %3) #9
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  %47 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 71
  %48 = load i32, ptr %47, align 8, !tbaa !41
  %49 = add i32 %48, 1
  store i32 %49, ptr %47, align 8, !tbaa !41
  %50 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 72
  %51 = getelementptr inbounds %class.SDMemoryStats, ptr %50, i32 0, i32 1
  %52 = load i32, ptr %51, align 8, !tbaa !42
  %53 = add i32 %52, 1
  store i32 %53, ptr %51, align 8, !tbaa !42
  %54 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 16
  %55 = load i32, ptr %54, align 8, !tbaa !43
  %56 = icmp eq i32 %55, 0
  br i1 %56, label %57, label %153

57:                                               ; preds = %46
  %58 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 34
  %59 = load ptr, ptr %58, align 8, !tbaa !44
  %60 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 43
  %61 = load i32, ptr %60, align 8, !tbaa !45
  %62 = add i32 %61, 1
  %63 = zext i32 %62 to i64
  %64 = getelementptr inbounds i32, ptr %59, i64 %63
  %65 = load i32, ptr %64, align 4, !tbaa !46
  %66 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 34
  %67 = load ptr, ptr %66, align 8, !tbaa !44
  %68 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 43
  %69 = load i32, ptr %68, align 8, !tbaa !45
  %70 = zext i32 %69 to i64
  %71 = getelementptr inbounds i32, ptr %67, i64 %70
  %72 = load i32, ptr %71, align 4, !tbaa !46
  %73 = sub i32 %65, %72
  %74 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 46
  store i32 %73, ptr %74, align 4, !tbaa !47
  %75 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 34
  %76 = load ptr, ptr %75, align 8, !tbaa !44
  %77 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 43
  %78 = load i32, ptr %77, align 8, !tbaa !45
  %79 = zext i32 %78 to i64
  %80 = getelementptr inbounds i32, ptr %76, i64 %79
  %81 = load i32, ptr %80, align 4, !tbaa !46
  %82 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 54
  store i32 %81, ptr %82, align 4, !tbaa !48
  %83 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 46
  %84 = load i32, ptr %83, align 4, !tbaa !47
  %85 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 38
  %86 = load i32, ptr %85, align 4, !tbaa !49
  %87 = udiv i32 %84, %86
  %88 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 46
  %89 = load i32, ptr %88, align 4, !tbaa !47
  %90 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 38
  %91 = load i32, ptr %90, align 4, !tbaa !49
  %92 = urem i32 %89, %91
  %93 = icmp ne i32 %92, 0
  %94 = zext i1 %93 to i32
  %95 = add i32 %87, %94
  %96 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 40
  store i32 %95, ptr %96, align 4, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #9
  %97 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 44) #10
          to label %98 unwind label %144

98:                                               ; preds = %57
  %99 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 38
  %100 = load i32, ptr %99, align 4, !tbaa !49
  %101 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 36
  %102 = load i32, ptr %101, align 4, !tbaa !51
  invoke void @_ZN4TileC1Ejjjjjjjjb(ptr noundef nonnull align 4 dereferenceable(41) %97, i32 noundef 1, i32 noundef 1, i32 noundef %100, i32 noundef %102, i32 noundef 1, i32 noundef 1, i32 noundef 1, i32 noundef 1, i1 noundef zeroext false)
          to label %103 unwind label %148

103:                                              ; preds = %98
  store ptr %97, ptr %4, align 8, !tbaa !5
  %104 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 3
  %105 = load ptr, ptr %104, align 8, !tbaa !52
  %106 = load ptr, ptr %105, align 8, !tbaa !53
  %107 = getelementptr inbounds ptr, ptr %106, i64 8
  %108 = load ptr, ptr %107, align 8
  invoke void %108(ptr noundef nonnull align 8 dereferenceable(48) %105)
          to label %109 unwind label %144

109:                                              ; preds = %103
  %110 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 2
  %111 = load ptr, ptr %110, align 8, !tbaa !55
  %112 = load ptr, ptr %111, align 8, !tbaa !53
  %113 = getelementptr inbounds ptr, ptr %112, i64 9
  %114 = load ptr, ptr %113, align 8
  invoke void %114(ptr noundef nonnull align 8 dereferenceable(48) %111)
          to label %115 unwind label %144

115:                                              ; preds = %109
  %116 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 3
  %117 = load ptr, ptr %116, align 8, !tbaa !52
  %118 = load ptr, ptr %4, align 8, !tbaa !5
  %119 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 1
  %120 = load ptr, ptr %119, align 8, !tbaa !56
  %121 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 21
  %122 = load i32, ptr %121, align 8, !tbaa !57
  %123 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 40
  %124 = load i32, ptr %123, align 4, !tbaa !50
  %125 = load ptr, ptr %117, align 8, !tbaa !53
  %126 = getelementptr inbounds ptr, ptr %125, i64 6
  %127 = load ptr, ptr %126, align 8
  invoke void %127(ptr noundef nonnull align 8 dereferenceable(48) %117, ptr noundef %118, ptr noundef %120, i32 noundef %122, i32 noundef %124)
          to label %128 unwind label %144

128:                                              ; preds = %115
  %129 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 2
  %130 = load ptr, ptr %129, align 8, !tbaa !55
  %131 = load ptr, ptr %4, align 8, !tbaa !5
  %132 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 1
  %133 = load ptr, ptr %132, align 8, !tbaa !56
  %134 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 21
  %135 = load i32, ptr %134, align 8, !tbaa !57
  %136 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 40
  %137 = load i32, ptr %136, align 4, !tbaa !50
  %138 = load ptr, ptr %130, align 8, !tbaa !53
  %139 = getelementptr inbounds ptr, ptr %138, i64 7
  %140 = load ptr, ptr %139, align 8
  invoke void %140(ptr noundef nonnull align 8 dereferenceable(48) %130, ptr noundef %131, ptr noundef %133, i32 noundef %135, i32 noundef %137)
          to label %141 unwind label %144

141:                                              ; preds = %128
  %142 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 45
  store i32 0, ptr %142, align 8, !tbaa !58
  %143 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 61
  store i8 0, ptr %143, align 2, !tbaa !59
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #9
  br label %153

144:                                              ; preds = %128, %115, %109, %103, %57
  %145 = landingpad { ptr, i32 }
          cleanup
  %146 = extractvalue { ptr, i32 } %145, 0
  store ptr %146, ptr %5, align 8
  %147 = extractvalue { ptr, i32 } %145, 1
  store i32 %147, ptr %6, align 4
  br label %152

148:                                              ; preds = %98
  %149 = landingpad { ptr, i32 }
          cleanup
  %150 = extractvalue { ptr, i32 } %149, 0
  store ptr %150, ptr %5, align 8
  %151 = extractvalue { ptr, i32 } %149, 1
  store i32 %151, ptr %6, align 4
  call void @_ZdlPvm(ptr noundef %97, i64 noundef 44) #11
  br label %152

152:                                              ; preds = %148, %144
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #9
  br label %653

153:                                              ; preds = %141, %46
  %154 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 16
  %155 = load i32, ptr %154, align 8, !tbaa !43
  %156 = icmp eq i32 %155, 1
  br i1 %156, label %157, label %274

157:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #9
  store i32 0, ptr %7, align 4, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #9
  %158 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 45
  %159 = load i32, ptr %158, align 8, !tbaa !58
  %160 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 38
  %161 = load i32, ptr %160, align 4, !tbaa !49
  %162 = mul i32 %159, %161
  store i32 %162, ptr %8, align 4, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #9
  store i32 0, ptr %9, align 4, !tbaa !46
  br label %163

163:                                              ; preds = %248, %157
  %164 = load i32, ptr %9, align 4, !tbaa !46
  %165 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 38
  %166 = load i32, ptr %165, align 4, !tbaa !49
  %167 = icmp ult i32 %164, %166
  br i1 %167, label %169, label %168

168:                                              ; preds = %163
  store i32 2, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  br label %261

169:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #9
  %170 = load i32, ptr %8, align 4, !tbaa !46
  %171 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 46
  %172 = load i32, ptr %171, align 4, !tbaa !47
  %173 = icmp ult i32 %170, %172
  br i1 %173, label %174, label %191

174:                                              ; preds = %169
  %175 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 30
  %176 = load ptr, ptr %175, align 8, !tbaa !60
  %177 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 54
  %178 = load i32, ptr %177, align 4, !tbaa !48
  %179 = load i32, ptr %8, align 4, !tbaa !46
  %180 = add i32 %178, %179
  %181 = zext i32 %180 to i64
  %182 = getelementptr inbounds float, ptr %176, i64 %181
  %183 = load float, ptr %182, align 4, !tbaa !61
  store float %183, ptr %11, align 4, !tbaa !61
  %184 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 72
  %185 = getelementptr inbounds %class.SDMemoryStats, ptr %184, i32 0, i32 2
  %186 = load i32, ptr %185, align 4, !tbaa !63
  %187 = add i32 %186, 1
  store i32 %187, ptr %185, align 4, !tbaa !63
  %188 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 68
  %189 = load i32, ptr %188, align 4, !tbaa !64
  %190 = add i32 %189, 1
  store i32 %190, ptr %188, align 4, !tbaa !64
  br label %192

191:                                              ; preds = %169
  store float 0.000000e+00, ptr %11, align 4, !tbaa !61
  br label %192

192:                                              ; preds = %191, %174
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  %193 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 21
  %194 = load i32, ptr %193, align 8, !tbaa !57
  %195 = zext i32 %194 to i64
  %196 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %195) #10
          to label %197 unwind label %204

197:                                              ; preds = %192
  store ptr %196, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  store i32 0, ptr %13, align 4, !tbaa !46
  br label %198

198:                                              ; preds = %213, %197
  %199 = load i32, ptr %13, align 4, !tbaa !46
  %200 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 21
  %201 = load i32, ptr %200, align 8, !tbaa !57
  %202 = icmp ult i32 %199, %201
  br i1 %202, label %208, label %203

203:                                              ; preds = %198
  store i32 5, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  br label %216

204:                                              ; preds = %192
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %5, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %6, align 4
  br label %260

208:                                              ; preds = %198
  %209 = load ptr, ptr %12, align 8, !tbaa !5
  %210 = load i32, ptr %13, align 4, !tbaa !46
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds i8, ptr %209, i64 %211
  store i8 0, ptr %212, align 1, !tbaa !65
  br label %213

213:                                              ; preds = %208
  %214 = load i32, ptr %13, align 4, !tbaa !46
  %215 = add nsw i32 %214, 1
  store i32 %215, ptr %13, align 4, !tbaa !46
  br label %198, !llvm.loop !66

216:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  store i32 0, ptr %14, align 4, !tbaa !46
  br label %217

217:                                              ; preds = %233, %216
  %218 = load i32, ptr %14, align 4, !tbaa !46
  %219 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 36
  %220 = load i32, ptr %219, align 4, !tbaa !51
  %221 = icmp ult i32 %218, %220
  br i1 %221, label %223, label %222

222:                                              ; preds = %217
  store i32 8, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  br label %236

223:                                              ; preds = %217
  %224 = load ptr, ptr %12, align 8, !tbaa !5
  %225 = load i32, ptr %14, align 4, !tbaa !46
  %226 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 38
  %227 = load i32, ptr %226, align 4, !tbaa !49
  %228 = mul i32 %225, %227
  %229 = load i32, ptr %9, align 4, !tbaa !46
  %230 = add i32 %228, %229
  %231 = zext i32 %230 to i64
  %232 = getelementptr inbounds i8, ptr %224, i64 %231
  store i8 1, ptr %232, align 1, !tbaa !65
  br label %233

233:                                              ; preds = %223
  %234 = load i32, ptr %14, align 4, !tbaa !46
  %235 = add nsw i32 %234, 1
  store i32 %235, ptr %14, align 4, !tbaa !46
  br label %217, !llvm.loop !68

236:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #9
  %237 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #10
          to label %238 unwind label %251

238:                                              ; preds = %236
  %239 = load float, ptr %11, align 4, !tbaa !61
  %240 = load ptr, ptr %12, align 8, !tbaa !5
  %241 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 21
  %242 = load i32, ptr %241, align 8, !tbaa !57
  invoke void @_ZN11DataPackageC1Emf9operand_tj9traffic_tPbj(ptr noundef nonnull align 8 dereferenceable(64) %237, i64 noundef 4, float noundef %239, i32 noundef 0, i32 noundef 0, i32 noundef 1, ptr noundef %240, i32 noundef %242)
          to label %243 unwind label %255

243:                                              ; preds = %238
  store ptr %237, ptr %15, align 8, !tbaa !5
  %244 = load ptr, ptr %15, align 8, !tbaa !5
  invoke void @_ZN19SparseDenseSDMemory23sendPackageToInputFifosEP11DataPackage(ptr noundef nonnull align 8 dereferenceable(672) %32, ptr noundef %244)
          to label %245 unwind label %251

245:                                              ; preds = %243
  %246 = load i32, ptr %8, align 4, !tbaa !46
  %247 = add i32 %246, 1
  store i32 %247, ptr %8, align 4, !tbaa !46
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #9
  br label %248

248:                                              ; preds = %245
  %249 = load i32, ptr %9, align 4, !tbaa !46
  %250 = add nsw i32 %249, 1
  store i32 %250, ptr %9, align 4, !tbaa !46
  br label %163, !llvm.loop !69

251:                                              ; preds = %243, %236
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %5, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %6, align 4
  br label %259

255:                                              ; preds = %238
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %5, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %6, align 4
  call void @_ZdlPvm(ptr noundef %237, i64 noundef 64) #11
  br label %259

259:                                              ; preds = %255, %251
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  br label %260

260:                                              ; preds = %259, %204
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #9
  br label %653

261:                                              ; preds = %168
  %262 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 45
  %263 = load i32, ptr %262, align 8, !tbaa !58
  %264 = add i32 %263, 1
  store i32 %264, ptr %262, align 8, !tbaa !58
  %265 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 45
  %266 = load i32, ptr %265, align 8, !tbaa !58
  %267 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 40
  %268 = load i32, ptr %267, align 4, !tbaa !50
  %269 = icmp eq i32 %266, %268
  br i1 %269, label %270, label %273

270:                                              ; preds = %261
  %271 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 45
  store i32 0, ptr %271, align 8, !tbaa !58
  %272 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 61
  store i8 1, ptr %272, align 2, !tbaa !59
  br label %273

273:                                              ; preds = %270, %261
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #9
  br label %397

274:                                              ; preds = %153
  %275 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 16
  %276 = load i32, ptr %275, align 8, !tbaa !43
  %277 = icmp eq i32 %276, 2
  br i1 %277, label %278, label %396

278:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  store i32 0, ptr %16, align 4, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  %279 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 44
  %280 = load i32, ptr %279, align 4, !tbaa !70
  %281 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 36
  %282 = load i32, ptr %281, align 4, !tbaa !51
  %283 = mul i32 %280, %282
  store i32 %283, ptr %17, align 4, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  store i32 0, ptr %18, align 4, !tbaa !46
  br label %284

284:                                              ; preds = %366, %278
  %285 = load i32, ptr %18, align 4, !tbaa !46
  %286 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 36
  %287 = load i32, ptr %286, align 4, !tbaa !51
  %288 = icmp ult i32 %285, %287
  br i1 %288, label %290, label %289

289:                                              ; preds = %284
  store i32 11, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  br label %369

290:                                              ; preds = %284
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  %291 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 45
  %292 = load i32, ptr %291, align 8, !tbaa !58
  %293 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 38
  %294 = load i32, ptr %293, align 4, !tbaa !49
  %295 = mul i32 %292, %294
  store i32 %295, ptr %19, align 4, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #9
  store i32 0, ptr %20, align 4, !tbaa !46
  br label %296

296:                                              ; preds = %351, %290
  %297 = load i32, ptr %20, align 4, !tbaa !46
  %298 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 38
  %299 = load i32, ptr %298, align 4, !tbaa !49
  %300 = icmp ult i32 %297, %299
  br i1 %300, label %302, label %301

301:                                              ; preds = %296
  store i32 14, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  br label %363

302:                                              ; preds = %296
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #9
  %303 = load i32, ptr %19, align 4, !tbaa !46
  %304 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 46
  %305 = load i32, ptr %304, align 4, !tbaa !47
  %306 = icmp ult i32 %303, %305
  br i1 %306, label %307, label %338

307:                                              ; preds = %302
  %308 = load i32, ptr %17, align 4, !tbaa !46
  %309 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 5
  %310 = load i32, ptr %309, align 4, !tbaa !71
  %311 = icmp ult i32 %308, %310
  br i1 %311, label %312, label %336

312:                                              ; preds = %307
  %313 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 31
  %314 = load ptr, ptr %313, align 8, !tbaa !72
  %315 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 33
  %316 = load ptr, ptr %315, align 8, !tbaa !73
  %317 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 54
  %318 = load i32, ptr %317, align 4, !tbaa !48
  %319 = load i32, ptr %19, align 4, !tbaa !46
  %320 = add i32 %318, %319
  %321 = zext i32 %320 to i64
  %322 = getelementptr inbounds i32, ptr %316, i64 %321
  %323 = load i32, ptr %322, align 4, !tbaa !46
  %324 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 5
  %325 = load i32, ptr %324, align 4, !tbaa !71
  %326 = mul i32 %323, %325
  %327 = load i32, ptr %17, align 4, !tbaa !46
  %328 = add i32 %326, %327
  %329 = zext i32 %328 to i64
  %330 = getelementptr inbounds float, ptr %314, i64 %329
  %331 = load float, ptr %330, align 4, !tbaa !61
  store float %331, ptr %21, align 4, !tbaa !61
  %332 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 72
  %333 = getelementptr inbounds %class.SDMemoryStats, ptr %332, i32 0, i32 3
  %334 = load i32, ptr %333, align 8, !tbaa !74
  %335 = add i32 %334, 1
  store i32 %335, ptr %333, align 8, !tbaa !74
  br label %337

336:                                              ; preds = %307
  store float 0.000000e+00, ptr %21, align 4, !tbaa !61
  br label %337

337:                                              ; preds = %336, %312
  br label %339

338:                                              ; preds = %302
  store float 0.000000e+00, ptr %21, align 4, !tbaa !61
  br label %339

339:                                              ; preds = %338, %337
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %340 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #10
          to label %341 unwind label %354

341:                                              ; preds = %339
  %342 = load float, ptr %21, align 4, !tbaa !61
  %343 = load i32, ptr %16, align 4, !tbaa !46
  invoke void @_ZN11DataPackageC1Emf9operand_tj9traffic_tj(ptr noundef nonnull align 8 dereferenceable(64) %340, i64 noundef 4, float noundef %342, i32 noundef 1, i32 noundef 0, i32 noundef 2, i32 noundef %343)
          to label %344 unwind label %358

344:                                              ; preds = %341
  store ptr %340, ptr %22, align 8, !tbaa !5
  %345 = load ptr, ptr %22, align 8, !tbaa !5
  invoke void @_ZN19SparseDenseSDMemory23sendPackageToInputFifosEP11DataPackage(ptr noundef nonnull align 8 dereferenceable(672) %32, ptr noundef %345)
          to label %346 unwind label %354

346:                                              ; preds = %344
  %347 = load i32, ptr %19, align 4, !tbaa !46
  %348 = add i32 %347, 1
  store i32 %348, ptr %19, align 4, !tbaa !46
  %349 = load i32, ptr %16, align 4, !tbaa !46
  %350 = add i32 %349, 1
  store i32 %350, ptr %16, align 4, !tbaa !46
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  br label %351

351:                                              ; preds = %346
  %352 = load i32, ptr %20, align 4, !tbaa !46
  %353 = add nsw i32 %352, 1
  store i32 %353, ptr %20, align 4, !tbaa !46
  br label %296, !llvm.loop !75

354:                                              ; preds = %344, %339
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %5, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %6, align 4
  br label %362

358:                                              ; preds = %341
  %359 = landingpad { ptr, i32 }
          cleanup
  %360 = extractvalue { ptr, i32 } %359, 0
  store ptr %360, ptr %5, align 8
  %361 = extractvalue { ptr, i32 } %359, 1
  store i32 %361, ptr %6, align 4
  call void @_ZdlPvm(ptr noundef %340, i64 noundef 64) #11
  br label %362

362:                                              ; preds = %358, %354
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  br label %653

363:                                              ; preds = %301
  %364 = load i32, ptr %17, align 4, !tbaa !46
  %365 = add i32 %364, 1
  store i32 %365, ptr %17, align 4, !tbaa !46
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  br label %366

366:                                              ; preds = %363
  %367 = load i32, ptr %18, align 4, !tbaa !46
  %368 = add nsw i32 %367, 1
  store i32 %368, ptr %18, align 4, !tbaa !46
  br label %284, !llvm.loop !76

369:                                              ; preds = %289
  %370 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 45
  %371 = load i32, ptr %370, align 8, !tbaa !58
  %372 = add i32 %371, 1
  store i32 %372, ptr %370, align 8, !tbaa !58
  %373 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 45
  %374 = load i32, ptr %373, align 8, !tbaa !58
  %375 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 40
  %376 = load i32, ptr %375, align 4, !tbaa !50
  %377 = icmp eq i32 %374, %376
  br i1 %377, label %378, label %395

378:                                              ; preds = %369
  %379 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 45
  store i32 0, ptr %379, align 8, !tbaa !58
  %380 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 44
  %381 = load i32, ptr %380, align 4, !tbaa !70
  %382 = add i32 %381, 1
  store i32 %382, ptr %380, align 4, !tbaa !70
  %383 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 44
  %384 = load i32, ptr %383, align 4, !tbaa !70
  %385 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 39
  %386 = load i32, ptr %385, align 8, !tbaa !77
  %387 = icmp eq i32 %384, %386
  br i1 %387, label %388, label %394

388:                                              ; preds = %378
  %389 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 44
  store i32 0, ptr %389, align 4, !tbaa !70
  %390 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 43
  %391 = load i32, ptr %390, align 8, !tbaa !45
  %392 = add i32 %391, 1
  store i32 %392, ptr %390, align 8, !tbaa !45
  %393 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 61
  store i8 1, ptr %393, align 2, !tbaa !59
  br label %394

394:                                              ; preds = %388, %378
  br label %395

395:                                              ; preds = %394, %369
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  br label %396

396:                                              ; preds = %395, %274
  br label %397

397:                                              ; preds = %396, %273
  invoke void @_ZN19SparseDenseSDMemory7receiveEv(ptr noundef nonnull align 8 dereferenceable(672) %32)
          to label %398 unwind label %412

398:                                              ; preds = %397
  %399 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 27
  %400 = load ptr, ptr %399, align 8, !tbaa !78
  %401 = invoke noundef zeroext i1 @_ZN4Fifo7isEmptyEv(ptr noundef nonnull align 8 dereferenceable(120) %400)
          to label %402 unwind label %412

402:                                              ; preds = %398
  br i1 %401, label %565, label %403

403:                                              ; preds = %402
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  store i32 0, ptr %23, align 4, !tbaa !46
  br label %404

404:                                              ; preds = %558, %403
  %405 = load i32, ptr %23, align 4, !tbaa !46
  %406 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 27
  %407 = load ptr, ptr %406, align 8, !tbaa !78
  %408 = invoke noundef i32 @_ZN4Fifo4sizeEv(ptr noundef nonnull align 8 dereferenceable(120) %407)
          to label %409 unwind label %416

409:                                              ; preds = %404
  %410 = icmp ult i32 %405, %408
  br i1 %410, label %420, label %411

411:                                              ; preds = %409
  store i32 17, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %564

412:                                              ; preds = %651, %398, %397
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %5, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %6, align 4
  br label %653

416:                                              ; preds = %404
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %5, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %6, align 4
  br label %563

420:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  %421 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 27
  %422 = load ptr, ptr %421, align 8, !tbaa !78
  %423 = invoke noundef ptr @_ZN4Fifo3popEv(ptr noundef nonnull align 8 dereferenceable(120) %422)
          to label %424 unwind label %481

424:                                              ; preds = %420
  store ptr %423, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  %425 = load ptr, ptr %24, align 8, !tbaa !5
  %426 = invoke noundef i32 @_ZNK11DataPackage6get_vnEv(ptr noundef nonnull align 8 dereferenceable(64) %425)
          to label %427 unwind label %485

427:                                              ; preds = %424
  store i32 %426, ptr %25, align 4, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #9
  %428 = load ptr, ptr %24, align 8, !tbaa !5
  %429 = invoke noundef float @_ZNK11DataPackage8get_dataEv(ptr noundef nonnull align 8 dereferenceable(64) %428)
          to label %430 unwind label %489

430:                                              ; preds = %427
  store float %429, ptr %26, align 4, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #9
  %431 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 19
  %432 = load i32, ptr %25, align 4, !tbaa !46
  %433 = zext i32 %432 to i64
  %434 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %431, i64 noundef %433) #9
  %435 = load i32, ptr %434, align 4, !tbaa !46
  %436 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 5
  %437 = load i32, ptr %436, align 4, !tbaa !71
  %438 = mul i32 %435, %437
  %439 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 18
  %440 = load i32, ptr %25, align 4, !tbaa !46
  %441 = zext i32 %440 to i64
  %442 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %439, i64 noundef %441) #9
  %443 = load i32, ptr %442, align 4, !tbaa !46
  %444 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 36
  %445 = load i32, ptr %444, align 4, !tbaa !51
  %446 = mul i32 %443, %445
  %447 = add i32 %438, %446
  %448 = load i32, ptr %25, align 4, !tbaa !46
  %449 = add i32 %447, %448
  store i32 %449, ptr %27, align 4, !tbaa !46
  %450 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 18
  %451 = load i32, ptr %25, align 4, !tbaa !46
  %452 = zext i32 %451 to i64
  %453 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %450, i64 noundef %452) #9
  %454 = load i32, ptr %453, align 4, !tbaa !46
  %455 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 36
  %456 = load i32, ptr %455, align 4, !tbaa !51
  %457 = mul i32 %454, %456
  %458 = load i32, ptr %25, align 4, !tbaa !46
  %459 = add i32 %457, %458
  %460 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 5
  %461 = load i32, ptr %460, align 4, !tbaa !71
  %462 = icmp ult i32 %459, %461
  br i1 %462, label %463, label %493

463:                                              ; preds = %430
  %464 = load float, ptr %26, align 4, !tbaa !61
  %465 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 32
  %466 = load ptr, ptr %465, align 8, !tbaa !79
  %467 = load i32, ptr %27, align 4, !tbaa !46
  %468 = zext i32 %467 to i64
  %469 = getelementptr inbounds float, ptr %466, i64 %468
  store float %464, ptr %469, align 4, !tbaa !61
  %470 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 71
  %471 = load i32, ptr %470, align 8, !tbaa !41
  %472 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 42
  %473 = load ptr, ptr %472, align 8, !tbaa !80
  %474 = load i32, ptr %27, align 4, !tbaa !46
  %475 = zext i32 %474 to i64
  %476 = getelementptr inbounds i32, ptr %473, i64 %475
  store i32 %471, ptr %476, align 4, !tbaa !46
  %477 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 72
  %478 = getelementptr inbounds %class.SDMemoryStats, ptr %477, i32 0, i32 5
  %479 = load i32, ptr %478, align 8, !tbaa !81
  %480 = add i32 %479, 1
  store i32 %480, ptr %478, align 8, !tbaa !81
  br label %493

481:                                              ; preds = %420
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %5, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %6, align 4
  br label %562

485:                                              ; preds = %424
  %486 = landingpad { ptr, i32 }
          cleanup
  %487 = extractvalue { ptr, i32 } %486, 0
  store ptr %487, ptr %5, align 8
  %488 = extractvalue { ptr, i32 } %486, 1
  store i32 %488, ptr %6, align 4
  br label %561

489:                                              ; preds = %427
  %490 = landingpad { ptr, i32 }
          cleanup
  %491 = extractvalue { ptr, i32 } %490, 0
  store ptr %491, ptr %5, align 8
  %492 = extractvalue { ptr, i32 } %490, 1
  store i32 %492, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  br label %561

493:                                              ; preds = %463, %430
  %494 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 18
  %495 = load i32, ptr %25, align 4, !tbaa !46
  %496 = zext i32 %495 to i64
  %497 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %494, i64 noundef %496) #9
  %498 = load i32, ptr %497, align 4, !tbaa !46
  %499 = add i32 %498, 1
  store i32 %499, ptr %497, align 4, !tbaa !46
  %500 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 18
  %501 = load i32, ptr %25, align 4, !tbaa !46
  %502 = zext i32 %501 to i64
  %503 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %500, i64 noundef %502) #9
  %504 = load i32, ptr %503, align 4, !tbaa !46
  %505 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 39
  %506 = load i32, ptr %505, align 8, !tbaa !77
  %507 = icmp eq i32 %504, %506
  br i1 %507, label %508, label %519

508:                                              ; preds = %493
  %509 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 18
  %510 = load i32, ptr %25, align 4, !tbaa !46
  %511 = zext i32 %510 to i64
  %512 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %509, i64 noundef %511) #9
  store i32 0, ptr %512, align 4, !tbaa !46
  %513 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 19
  %514 = load i32, ptr %25, align 4, !tbaa !46
  %515 = zext i32 %514 to i64
  %516 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %513, i64 noundef %515) #9
  %517 = load i32, ptr %516, align 4, !tbaa !46
  %518 = add i32 %517, 1
  store i32 %518, ptr %516, align 4, !tbaa !46
  br label %519

519:                                              ; preds = %508, %493
  %520 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 64
  %521 = load i32, ptr %520, align 4, !tbaa !82
  %522 = add i32 %521, 1
  store i32 %522, ptr %520, align 4, !tbaa !82
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #9
  %523 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 39
  %524 = load i32, ptr %523, align 8, !tbaa !77
  %525 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 36
  %526 = load i32, ptr %525, align 4, !tbaa !51
  %527 = mul i32 %524, %526
  store i32 %527, ptr %28, align 4, !tbaa !46
  %528 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 64
  %529 = load i32, ptr %528, align 4, !tbaa !82
  %530 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 4
  %531 = load i32, ptr %530, align 8, !tbaa !83
  %532 = load i32, ptr %28, align 4, !tbaa !46
  %533 = mul i32 %531, %532
  %534 = icmp eq i32 %529, %533
  br i1 %534, label %535, label %537

535:                                              ; preds = %519
  %536 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 59
  store i8 1, ptr %536, align 4, !tbaa !84
  br label %537

537:                                              ; preds = %535, %519
  %538 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 66
  %539 = load i32, ptr %538, align 4, !tbaa !85
  %540 = add i32 %539, 1
  store i32 %540, ptr %538, align 4, !tbaa !85
  %541 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 66
  %542 = load i32, ptr %541, align 4, !tbaa !85
  %543 = load i32, ptr %28, align 4, !tbaa !46
  %544 = icmp eq i32 %542, %543
  br i1 %544, label %545, label %553

545:                                              ; preds = %537
  %546 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 66
  store i32 0, ptr %546, align 4, !tbaa !85
  %547 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 16
  %548 = load i32, ptr %547, align 8, !tbaa !43
  %549 = icmp eq i32 %548, 3
  br i1 %549, label %550, label %552

550:                                              ; preds = %545
  %551 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 61
  store i8 1, ptr %551, align 2, !tbaa !59
  br label %552

552:                                              ; preds = %550, %545
  br label %553

553:                                              ; preds = %552, %537
  %554 = load ptr, ptr %24, align 8, !tbaa !5
  %555 = icmp eq ptr %554, null
  br i1 %555, label %557, label %556

556:                                              ; preds = %553
  call void @_ZN11DataPackageD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %554) #9
  call void @_ZdlPvm(ptr noundef %554, i64 noundef 64) #11
  br label %557

557:                                              ; preds = %556, %553
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  br label %558

558:                                              ; preds = %557
  %559 = load i32, ptr %23, align 4, !tbaa !46
  %560 = add nsw i32 %559, 1
  store i32 %560, ptr %23, align 4, !tbaa !46
  br label %404, !llvm.loop !86

561:                                              ; preds = %489, %485
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  br label %562

562:                                              ; preds = %561, %481
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  br label %563

563:                                              ; preds = %562, %416
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %653

564:                                              ; preds = %411
  br label %565

565:                                              ; preds = %564, %402
  %566 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 16
  %567 = load i32, ptr %566, align 8, !tbaa !43
  %568 = icmp eq i32 %567, 0
  br i1 %568, label %569, label %571

569:                                              ; preds = %565
  %570 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 16
  store i32 1, ptr %570, align 8, !tbaa !43
  br label %651

571:                                              ; preds = %565
  %572 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 16
  %573 = load i32, ptr %572, align 8, !tbaa !43
  %574 = icmp eq i32 %573, 1
  br i1 %574, label %575, label %583

575:                                              ; preds = %571
  %576 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 61
  %577 = load i8, ptr %576, align 2, !tbaa !59, !range !38, !noundef !39
  %578 = trunc i8 %577 to i1
  br i1 %578, label %579, label %582

579:                                              ; preds = %575
  %580 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 16
  store i32 2, ptr %580, align 8, !tbaa !43
  %581 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 61
  store i8 0, ptr %581, align 2, !tbaa !59
  br label %582

582:                                              ; preds = %579, %575
  br label %650

583:                                              ; preds = %571
  %584 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 16
  %585 = load i32, ptr %584, align 8, !tbaa !43
  %586 = icmp eq i32 %585, 2
  br i1 %586, label %587, label %604

587:                                              ; preds = %583
  %588 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 43
  %589 = load i32, ptr %588, align 8, !tbaa !45
  %590 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 41
  %591 = load i32, ptr %590, align 8, !tbaa !87
  %592 = icmp uge i32 %589, %591
  br i1 %592, label %593, label %595

593:                                              ; preds = %587
  %594 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 16
  store i32 4, ptr %594, align 8, !tbaa !43
  br label %603

595:                                              ; preds = %587
  %596 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 61
  %597 = load i8, ptr %596, align 2, !tbaa !59, !range !38, !noundef !39
  %598 = trunc i8 %597 to i1
  br i1 %598, label %599, label %602

599:                                              ; preds = %595
  %600 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 16
  store i32 3, ptr %600, align 8, !tbaa !43
  %601 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 61
  store i8 0, ptr %601, align 2, !tbaa !59
  br label %602

602:                                              ; preds = %599, %595
  br label %603

603:                                              ; preds = %602, %593
  br label %649

604:                                              ; preds = %583
  %605 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 16
  %606 = load i32, ptr %605, align 8, !tbaa !43
  %607 = icmp eq i32 %606, 3
  br i1 %607, label %608, label %615

608:                                              ; preds = %604
  %609 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 61
  %610 = load i8, ptr %609, align 2, !tbaa !59, !range !38, !noundef !39
  %611 = trunc i8 %610 to i1
  br i1 %611, label %612, label %614

612:                                              ; preds = %608
  %613 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 16
  store i32 0, ptr %613, align 8, !tbaa !43
  br label %614

614:                                              ; preds = %612, %608
  br label %648

615:                                              ; preds = %604
  %616 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 16
  %617 = load i32, ptr %616, align 8, !tbaa !43
  %618 = icmp eq i32 %617, 4
  br i1 %618, label %619, label %647

619:                                              ; preds = %615
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #9
  %620 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 4
  %621 = load i32, ptr %620, align 8, !tbaa !83
  %622 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 7
  %623 = load i32, ptr %622, align 4, !tbaa !88
  %624 = mul i32 %621, %623
  store i32 %624, ptr %29, align 4, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #9
  %625 = load i32, ptr %29, align 4, !tbaa !46
  %626 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 68
  %627 = load i32, ptr %626, align 4, !tbaa !64
  %628 = sub i32 %625, %627
  store i32 %628, ptr %30, align 4, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #9
  store i32 0, ptr %31, align 4, !tbaa !46
  %629 = load i32, ptr %30, align 4, !tbaa !46
  %630 = mul i32 100, %629
  %631 = load i32, ptr %29, align 4, !tbaa !46
  %632 = udiv i32 %630, %631
  %633 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 72
  %634 = getelementptr inbounds %class.SDMemoryStats, ptr %633, i32 0, i32 6
  store i32 %632, ptr %634, align 4, !tbaa !89
  %635 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 72
  %636 = getelementptr inbounds %class.SDMemoryStats, ptr %635, i32 0, i32 7
  store i32 0, ptr %636, align 8, !tbaa !90
  %637 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 72
  %638 = getelementptr inbounds %class.SDMemoryStats, ptr %637, i32 0, i32 8
  %639 = load i32, ptr %638, align 4, !tbaa !91
  %640 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 72
  %641 = getelementptr inbounds %class.SDMemoryStats, ptr %640, i32 0, i32 10
  %642 = load i32, ptr %641, align 4, !tbaa !92
  %643 = udiv i32 %639, %642
  %644 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 72
  %645 = getelementptr inbounds %class.SDMemoryStats, ptr %644, i32 0, i32 8
  store i32 %643, ptr %645, align 4, !tbaa !91
  %646 = getelementptr inbounds %class.SparseDenseSDMemory, ptr %32, i32 0, i32 16
  store i32 4, ptr %646, align 8, !tbaa !43
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  br label %647

647:                                              ; preds = %619, %615
  br label %648

648:                                              ; preds = %647, %614
  br label %649

649:                                              ; preds = %648, %603
  br label %650

650:                                              ; preds = %649, %582
  br label %651

651:                                              ; preds = %650, %569
  invoke void @_ZN19SparseDenseSDMemory4sendEv(ptr noundef nonnull align 8 dereferenceable(672) %32)
          to label %652 unwind label %412

652:                                              ; preds = %651
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %3) #9
  ret void

653:                                              ; preds = %563, %412, %362, %260, %152
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %3) #9
  br label %654

654:                                              ; preds = %653
  %655 = load ptr, ptr %5, align 8
  %656 = load i32, ptr %6, align 4
  %657 = insertvalue { ptr, i32 } poison, ptr %655, 0
  %658 = insertvalue { ptr, i32 } %657, i32 %656, 1
  resume { ptr, i32 } %658
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5 align 2

declare void @_ZN4TileC1Ejjjjjjjjb(ptr noundef nonnull align 4 dereferenceable(41), i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i1 noundef zeroext) unnamed_addr #6

declare void @_ZN11DataPackageC1Emf9operand_tj9traffic_tPbj(ptr noundef nonnull align 8 dereferenceable(64), i64 noundef, float noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef) unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN19SparseDenseSDMemory23sendPackageToInputFifosEP11DataPackage(ptr noundef nonnull align 8 dereferenceable(672), ptr noundef) #4 align 2

declare void @_ZN11DataPackageC1Emf9operand_tj9traffic_tj(ptr noundef nonnull align 8 dereferenceable(64), i64 noundef, float noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN19SparseDenseSDMemory7receiveEv(ptr noundef nonnull align 8 dereferenceable(672)) #4 align 2

declare noundef zeroext i1 @_ZN4Fifo7isEmptyEv(ptr noundef nonnull align 8 dereferenceable(120)) #6

declare noundef i32 @_ZN4Fifo4sizeEv(ptr noundef nonnull align 8 dereferenceable(120)) #6

declare noundef ptr @_ZN4Fifo3popEv(ptr noundef nonnull align 8 dereferenceable(120)) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK11DataPackage6get_vnEv(ptr noundef nonnull align 8 dereferenceable(64)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK11DataPackage8get_dataEv(ptr noundef nonnull align 8 dereferenceable(64)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #5 align 2

; Function Attrs: nounwind
declare void @_ZN11DataPackageD1Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN19SparseDenseSDMemory4sendEv(ptr noundef nonnull align 8 dereferenceable(672)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5 align 2

attributes #0 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress 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 = { mustprogress 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 #6 = { "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 #7 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { noreturn nounwind }
attributes #9 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { builtin 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++ TBAA"}
!9 = !{!10, !34, i64 456}
!10 = !{!"_ZTS19SparseDenseSDMemory", !11, i64 0, !6, i64 48, !6, i64 56, !6, i64 64, !13, i64 72, !13, i64 76, !13, i64 80, !13, i64 84, !13, i64 88, !13, i64 92, !13, i64 96, !13, i64 100, !13, i64 104, !13, i64 108, !13, i64 112, !6, i64 120, !17, i64 128, !18, i64 136, !22, i64 160, !22, i64 184, !26, i64 208, !13, i64 232, !13, i64 236, !13, i64 240, !13, i64 244, !13, i64 248, !13, i64 252, !6, i64 256, !30, i64 264, !30, i64 288, !6, i64 312, !6, i64 320, !6, i64 328, !6, i64 336, !6, i64 344, !13, i64 352, !13, i64 356, !13, i64 360, !13, i64 364, !13, i64 368, !13, i64 372, !13, i64 376, !6, i64 384, !13, i64 392, !13, i64 396, !13, i64 400, !13, i64 404, !6, i64 408, !6, i64 416, !13, i64 424, !13, i64 428, !13, i64 432, !13, i64 436, !13, i64 440, !13, i64 444, !34, i64 448, !34, i64 449, !34, i64 450, !34, i64 451, !34, i64 452, !34, i64 453, !34, i64 454, !34, i64 455, !34, i64 456, !13, i64 460, !13, i64 464, !13, i64 468, !13, i64 472, !13, i64 476, !13, i64 480, !26, i64 488, !13, i64 512, !35, i64 520}
!11 = !{!"_ZTS16MemoryController", !12, i64 0}
!12 = !{!"_ZTS4Unit", !13, i64 8, !14, i64 16}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !15, i64 0, !16, i64 8, !7, i64 16}
!15 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!16 = !{!"long", !7, i64 0}
!17 = !{!"_ZTS23SparsityControllerState", !7, i64 0}
!18 = !{!"_ZTSSt6vectorI8SparseVNSaIS0_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseI8SparseVNSaIS0_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseI8SparseVNSaIS0_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseI8SparseVNSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"_ZTSSt6vectorIjSaIjEE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTSSt6vectorIP10ConnectionSaIS1_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIP10ConnectionSaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIP10ConnectionSaIS1_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIP10ConnectionSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"_ZTSSt6vectorIP4FifoSaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseIP4FifoSaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIP4FifoSaIS1_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIP4FifoSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!34 = !{!"bool", !7, i64 0}
!35 = !{!"_ZTS13SDMemoryStats", !36, i64 0, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !13, i64 44, !37, i64 48, !22, i64 56, !22, i64 80, !22, i64 104, !22, i64 128}
!36 = !{!"_ZTS5Stats"}
!37 = !{!"_ZTS8Dataflow", !7, i64 0}
!38 = !{i8 0, i8 2}
!39 = !{}
!40 = !{!10, !34, i64 455}
!41 = !{!10, !13, i64 512}
!42 = !{!10, !13, i64 528}
!43 = !{!10, !17, i64 128}
!44 = !{!10, !6, i64 344}
!45 = !{!10, !13, i64 392}
!46 = !{!13, !13, i64 0}
!47 = !{!10, !13, i64 404}
!48 = !{!10, !13, i64 444}
!49 = !{!10, !13, i64 364}
!50 = !{!10, !13, i64 372}
!51 = !{!10, !13, i64 356}
!52 = !{!10, !6, i64 64}
!53 = !{!54, !54, i64 0}
!54 = !{!"vtable pointer", !8, i64 0}
!55 = !{!10, !6, i64 56}
!56 = !{!10, !6, i64 48}
!57 = !{!10, !13, i64 232}
!58 = !{!10, !13, i64 400}
!59 = !{!10, !34, i64 454}
!60 = !{!10, !6, i64 312}
!61 = !{!62, !62, i64 0}
!62 = !{!"float", !7, i64 0}
!63 = !{!10, !13, i64 532}
!64 = !{!10, !13, i64 476}
!65 = !{!34, !34, i64 0}
!66 = distinct !{!66, !67}
!67 = !{!"llvm.loop.mustprogress"}
!68 = distinct !{!68, !67}
!69 = distinct !{!69, !67}
!70 = !{!10, !13, i64 396}
!71 = !{!10, !13, i64 76}
!72 = !{!10, !6, i64 320}
!73 = !{!10, !6, i64 336}
!74 = !{!10, !13, i64 536}
!75 = distinct !{!75, !67}
!76 = distinct !{!76, !67}
!77 = !{!10, !13, i64 368}
!78 = !{!10, !6, i64 256}
!79 = !{!10, !6, i64 328}
!80 = !{!10, !6, i64 384}
!81 = !{!10, !13, i64 544}
!82 = !{!10, !13, i64 460}
!83 = !{!10, !13, i64 72}
!84 = !{!10, !34, i64 452}
!85 = !{!10, !13, i64 468}
!86 = distinct !{!86, !67}
!87 = !{!10, !13, i64 376}
!88 = !{!10, !13, i64 84}
!89 = !{!10, !13, i64 548}
!90 = !{!10, !13, i64 552}
!91 = !{!10, !13, i64 556}
!92 = !{!10, !13, i64 564}


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

%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<DataPackage *, std::allocator<DataPackage *>>::_Vector_impl" }
%"struct.std::_Vector_base<DataPackage *, std::allocator<DataPackage *>>::_Vector_impl" = type { %"struct.std::_Vector_base<DataPackage *, std::allocator<DataPackage *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DataPackage *, std::allocator<DataPackage *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.1 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [19 x i8], align 1
@__PRETTY_FUNCTION__._ZN19SparseDenseSDMemory5cycleEv = external hidden unnamed_addr constant [42 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [22 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #0

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #1

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

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

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN19SparseDenseSDMemory5cycleEv(ptr noundef nonnull align 8 dereferenceable(672) %0) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::vector.21", align 8
  %3 = getelementptr inbounds i8, ptr %0, i64 456
  %4 = load i8, ptr %3, align 8, !tbaa !5, !range !37, !noundef !38
  %5 = trunc nuw i8 %4 to i1
  br i1 %5, label %7, label %6

6:                                                ; preds = %1
  tail call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 148, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN19SparseDenseSDMemory5cycleEv) #9
  unreachable

7:                                                ; preds = %1
  %8 = getelementptr inbounds i8, ptr %0, i64 455
  %9 = load i8, ptr %8, align 1, !tbaa !39, !range !37, !noundef !38
  %10 = trunc nuw i8 %9 to i1
  br i1 %10, label %12, label %11

11:                                               ; preds = %7
  tail call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.1, i32 noundef 149, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN19SparseDenseSDMemory5cycleEv) #9
  unreachable

12:                                               ; preds = %7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) #10
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #10
  %13 = getelementptr inbounds i8, ptr %0, i64 512
  %14 = load i32, ptr %13, align 8, !tbaa !40
  %15 = add i32 %14, 1
  store i32 %15, ptr %13, align 8, !tbaa !40
  %16 = getelementptr inbounds i8, ptr %0, i64 528
  %17 = load i32, ptr %16, align 8, !tbaa !41
  %18 = add i32 %17, 1
  store i32 %18, ptr %16, align 8, !tbaa !41
  %19 = getelementptr inbounds i8, ptr %0, i64 128
  %20 = load i32, ptr %19, align 8, !tbaa !42
  %21 = icmp eq i32 %20, 0
  br i1 %21, label %22, label %87

22:                                               ; preds = %12
  %23 = getelementptr inbounds i8, ptr %0, i64 344
  %24 = load ptr, ptr %23, align 8, !tbaa !43
  %25 = getelementptr inbounds i8, ptr %0, i64 392
  %26 = load i32, ptr %25, align 8, !tbaa !44
  %27 = add i32 %26, 1
  %28 = zext i32 %27 to i64
  %29 = getelementptr inbounds i32, ptr %24, i64 %28
  %30 = load i32, ptr %29, align 4, !tbaa !45
  %31 = zext i32 %26 to i64
  %32 = getelementptr inbounds i32, ptr %24, i64 %31
  %33 = load i32, ptr %32, align 4, !tbaa !45
  %34 = sub i32 %30, %33
  %35 = getelementptr inbounds i8, ptr %0, i64 404
  store i32 %34, ptr %35, align 4, !tbaa !46
  %36 = load i32, ptr %32, align 4, !tbaa !45
  %37 = getelementptr inbounds i8, ptr %0, i64 444
  store i32 %36, ptr %37, align 4, !tbaa !47
  %38 = getelementptr inbounds i8, ptr %0, i64 364
  %39 = load i32, ptr %38, align 4, !tbaa !48
  %40 = udiv i32 %34, %39
  %41 = urem i32 %34, %39
  %42 = icmp ne i32 %41, 0
  %43 = zext i1 %42 to i32
  %44 = add i32 %40, %43
  %45 = getelementptr inbounds i8, ptr %0, i64 372
  store i32 %44, ptr %45, align 4, !tbaa !49
  %46 = invoke noalias noundef nonnull dereferenceable(44) ptr @_Znwm(i64 noundef 44) #11
          to label %47 unwind label %83

47:                                               ; preds = %22
  %48 = getelementptr inbounds i8, ptr %0, i64 356
  %49 = load i32, ptr %48, align 4, !tbaa !50
  invoke void @_ZN4TileC1Ejjjjjjjjb(ptr noundef nonnull align 4 dereferenceable(41) %46, i32 noundef 1, i32 noundef 1, i32 noundef %39, i32 noundef %49, i32 noundef 1, i32 noundef 1, i32 noundef 1, i32 noundef 1, i1 noundef zeroext false)
          to label %50 unwind label %85

50:                                               ; preds = %47
  %51 = getelementptr inbounds i8, ptr %0, i64 64
  %52 = load ptr, ptr %51, align 8, !tbaa !51
  %53 = load ptr, ptr %52, align 8, !tbaa !52
  %54 = getelementptr inbounds i8, ptr %53, i64 64
  %55 = load ptr, ptr %54, align 8
  invoke void %55(ptr noundef nonnull align 8 dereferenceable(48) %52)
          to label %56 unwind label %83

56:                                               ; preds = %50
  %57 = getelementptr inbounds i8, ptr %0, i64 56
  %58 = load ptr, ptr %57, align 8, !tbaa !54
  %59 = load ptr, ptr %58, align 8, !tbaa !52
  %60 = getelementptr inbounds i8, ptr %59, i64 72
  %61 = load ptr, ptr %60, align 8
  invoke void %61(ptr noundef nonnull align 8 dereferenceable(48) %58)
          to label %62 unwind label %83

62:                                               ; preds = %56
  %63 = load ptr, ptr %51, align 8, !tbaa !51
  %64 = getelementptr inbounds i8, ptr %0, i64 48
  %65 = load ptr, ptr %64, align 8, !tbaa !55
  %66 = getelementptr inbounds i8, ptr %0, i64 232
  %67 = load i32, ptr %66, align 8, !tbaa !56
  %68 = load i32, ptr %45, align 4, !tbaa !49
  %69 = load ptr, ptr %63, align 8, !tbaa !52
  %70 = getelementptr inbounds i8, ptr %69, i64 48
  %71 = load ptr, ptr %70, align 8
  invoke void %71(ptr noundef nonnull align 8 dereferenceable(48) %63, ptr noundef nonnull %46, ptr noundef %65, i32 noundef %67, i32 noundef %68)
          to label %72 unwind label %83

72:                                               ; preds = %62
  %73 = load ptr, ptr %57, align 8, !tbaa !54
  %74 = load ptr, ptr %64, align 8, !tbaa !55
  %75 = load i32, ptr %66, align 8, !tbaa !56
  %76 = load i32, ptr %45, align 4, !tbaa !49
  %77 = load ptr, ptr %73, align 8, !tbaa !52
  %78 = getelementptr inbounds i8, ptr %77, i64 56
  %79 = load ptr, ptr %78, align 8
  invoke void %79(ptr noundef nonnull align 8 dereferenceable(48) %73, ptr noundef nonnull %46, ptr noundef %74, i32 noundef %75, i32 noundef %76)
          to label %80 unwind label %83

80:                                               ; preds = %72
  %81 = getelementptr inbounds i8, ptr %0, i64 400
  store i32 0, ptr %81, align 8, !tbaa !57
  %82 = getelementptr inbounds i8, ptr %0, i64 454
  store i8 0, ptr %82, align 2, !tbaa !58
  %.pr = load i32, ptr %19, align 8, !tbaa !42
  br label %87

83:                                               ; preds = %72, %62, %56, %50, %22
  %84 = landingpad { ptr, i32 }
          cleanup
  br label %403

85:                                               ; preds = %47
  %86 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %46, i64 noundef 44) #12
  br label %403

87:                                               ; preds = %80, %12
  %88 = phi i32 [ %.pr, %80 ], [ %20, %12 ]
  switch i32 %88, label %264 [
    i32 1, label %89
    i32 2, label %189
  ]

89:                                               ; preds = %87
  %90 = getelementptr inbounds i8, ptr %0, i64 400
  %91 = getelementptr inbounds i8, ptr %0, i64 364
  %92 = load i32, ptr %91, align 4, !tbaa !48
  %.not115 = icmp eq i32 %92, 0
  %.pre126 = load i32, ptr %90, align 8, !tbaa !57
  br i1 %.not115, label %._crit_edge111, label %.lr.ph110

.lr.ph110:                                        ; preds = %89
  %93 = mul i32 %92, %.pre126
  %94 = getelementptr inbounds i8, ptr %0, i64 404
  %95 = getelementptr inbounds i8, ptr %0, i64 312
  %96 = getelementptr inbounds i8, ptr %0, i64 444
  %97 = getelementptr inbounds i8, ptr %0, i64 532
  %98 = getelementptr inbounds i8, ptr %0, i64 476
  %99 = getelementptr inbounds i8, ptr %0, i64 232
  %100 = getelementptr inbounds i8, ptr %0, i64 356
  br label %106

._crit_edge111.loopexit:                          ; preds = %179
  %.pre125 = load i32, ptr %90, align 8, !tbaa !57
  br label %._crit_edge111

._crit_edge111:                                   ; preds = %._crit_edge111.loopexit, %89
  %101 = phi i32 [ %.pre125, %._crit_edge111.loopexit ], [ %.pre126, %89 ]
  %102 = add i32 %101, 1
  store i32 %102, ptr %90, align 8, !tbaa !57
  %103 = getelementptr inbounds i8, ptr %0, i64 372
  %104 = load i32, ptr %103, align 4, !tbaa !49
  %105 = icmp eq i32 %102, %104
  br i1 %105, label %188, label %264

106:                                              ; preds = %.lr.ph110, %179
  %107 = phi i32 [ %92, %.lr.ph110 ], [ %182, %179 ]
  %.063108 = phi i32 [ %93, %.lr.ph110 ], [ %180, %179 ]
  %.064107 = phi i32 [ 0, %.lr.ph110 ], [ %181, %179 ]
  %108 = load i32, ptr %94, align 4, !tbaa !46
  %109 = icmp ult i32 %.063108, %108
  br i1 %109, label %110, label %121

110:                                              ; preds = %106
  %111 = load ptr, ptr %95, align 8, !tbaa !59
  %112 = load i32, ptr %96, align 4, !tbaa !47
  %113 = add i32 %112, %.063108
  %114 = zext i32 %113 to i64
  %115 = getelementptr inbounds float, ptr %111, i64 %114
  %116 = load float, ptr %115, align 4, !tbaa !60
  %117 = load i32, ptr %97, align 4, !tbaa !62
  %118 = add i32 %117, 1
  store i32 %118, ptr %97, align 4, !tbaa !62
  %119 = load i32, ptr %98, align 4, !tbaa !63
  %120 = add i32 %119, 1
  store i32 %120, ptr %98, align 4, !tbaa !63
  br label %121

121:                                              ; preds = %106, %110
  %.065 = phi float [ %116, %110 ], [ 0.000000e+00, %106 ]
  %122 = load i32, ptr %99, align 8, !tbaa !56
  %123 = zext i32 %122 to i64
  %124 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %123) #11
          to label %.preheader89 unwind label %151

.preheader89:                                     ; preds = %121
  %.not116 = icmp eq i32 %122, 0
  br i1 %.not116, label %.preheader88, label %.lr.ph103.preheader

.lr.ph103.preheader:                              ; preds = %.preheader89
  call void @llvm.memset.p0.i64(ptr nonnull align 1 %124, i8 0, i64 %123, i1 false), !tbaa !64
  br label %.preheader88

.preheader88:                                     ; preds = %.lr.ph103.preheader, %.preheader89
  %125 = load i32, ptr %100, align 4, !tbaa !50
  %.not117 = icmp eq i32 %125, 0
  br i1 %.not117, label %._crit_edge106, label %iter.check

iter.check:                                       ; preds = %.preheader88
  %wide.trip.count = zext i32 %125 to i64
  %min.iters.check = icmp ult i32 %125, 8
  br i1 %min.iters.check, label %.lr.ph105.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %iter.check
  %ident.check = icmp ne i32 %107, 1
  %126 = add nsw i64 %wide.trip.count, -1
  %127 = trunc i64 %126 to i32
  %128 = xor i32 %.064107, -1
  %129 = icmp ult i32 %128, %127
  %130 = icmp ugt i64 %126, 4294967295
  %131 = or i1 %129, %130
  %132 = or i1 %ident.check, %131
  br i1 %132, label %.lr.ph105.preheader, label %vector.main.loop.iter.check

vector.main.loop.iter.check:                      ; preds = %vector.scevcheck
  %min.iters.check138 = icmp ult i32 %125, 32
  br i1 %min.iters.check138, label %vec.epilog.ph, label %vector.ph

vector.ph:                                        ; preds = %vector.main.loop.iter.check
  %n.vec = and i64 %wide.trip.count, 4294967264
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %133 = trunc i64 %index to i32
  %134 = add i32 %.064107, %133
  %135 = zext i32 %134 to i64
  %136 = getelementptr inbounds i8, ptr %124, i64 %135
  %137 = getelementptr inbounds i8, ptr %136, i64 16
  store <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>, ptr %136, align 1, !tbaa !64
  store <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>, ptr %137, align 1, !tbaa !64
  %index.next = add nuw i64 %index, 32
  %138 = icmp eq i64 %index.next, %n.vec
  br i1 %138, label %middle.block, label %vector.body, !llvm.loop !65

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count
  br i1 %cmp.n, label %._crit_edge106, label %vec.epilog.iter.check

vec.epilog.iter.check:                            ; preds = %middle.block
  %n.vec.remaining = and i64 %wide.trip.count, 24
  %min.epilog.iters.check = icmp eq i64 %n.vec.remaining, 0
  br i1 %min.epilog.iters.check, label %.lr.ph105.preheader, label %vec.epilog.ph

.lr.ph105.preheader:                              ; preds = %vec.epilog.middle.block, %vector.scevcheck, %iter.check, %vec.epilog.iter.check
  %indvars.iv.ph = phi i64 [ 0, %iter.check ], [ 0, %vector.scevcheck ], [ %n.vec, %vec.epilog.iter.check ], [ %n.vec140, %vec.epilog.middle.block ]
  %xtraiter = and i64 %wide.trip.count, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph105.prol.loopexit, label %.lr.ph105.prol

.lr.ph105.prol:                                   ; preds = %.lr.ph105.preheader, %.lr.ph105.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %.lr.ph105.prol ], [ %indvars.iv.ph, %.lr.ph105.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph105.prol ], [ 0, %.lr.ph105.preheader ]
  %139 = trunc nuw nsw i64 %indvars.iv.prol to i32
  %140 = mul i32 %107, %139
  %141 = add i32 %140, %.064107
  %142 = zext i32 %141 to i64
  %143 = getelementptr inbounds i8, ptr %124, i64 %142
  store i8 1, ptr %143, align 1, !tbaa !64
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph105.prol.loopexit, label %.lr.ph105.prol, !llvm.loop !69

.lr.ph105.prol.loopexit:                          ; preds = %.lr.ph105.prol, %.lr.ph105.preheader
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph105.preheader ], [ %indvars.iv.next.prol, %.lr.ph105.prol ]
  %144 = sub nsw i64 %indvars.iv.ph, %wide.trip.count
  %145 = icmp ugt i64 %144, -4
  br i1 %145, label %._crit_edge106, label %.lr.ph105

vec.epilog.ph:                                    ; preds = %vector.main.loop.iter.check, %vec.epilog.iter.check
  %vec.epilog.resume.val = phi i64 [ %n.vec, %vec.epilog.iter.check ], [ 0, %vector.main.loop.iter.check ]
  %n.vec140 = and i64 %wide.trip.count, 4294967288
  br label %vec.epilog.vector.body

vec.epilog.vector.body:                           ; preds = %vec.epilog.vector.body, %vec.epilog.ph
  %index141 = phi i64 [ %vec.epilog.resume.val, %vec.epilog.ph ], [ %index.next142, %vec.epilog.vector.body ]
  %146 = trunc i64 %index141 to i32
  %147 = add i32 %.064107, %146
  %148 = zext i32 %147 to i64
  %149 = getelementptr inbounds i8, ptr %124, i64 %148
  store <8 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>, ptr %149, align 1, !tbaa !64
  %index.next142 = add nuw i64 %index141, 8
  %150 = icmp eq i64 %index.next142, %n.vec140
  br i1 %150, label %vec.epilog.middle.block, label %vec.epilog.vector.body, !llvm.loop !71

vec.epilog.middle.block:                          ; preds = %vec.epilog.vector.body
  %cmp.n143 = icmp eq i64 %n.vec140, %wide.trip.count
  br i1 %cmp.n143, label %._crit_edge106, label %.lr.ph105.preheader

151:                                              ; preds = %121
  %152 = landingpad { ptr, i32 }
          cleanup
  br label %403

._crit_edge106:                                   ; preds = %.lr.ph105.prol.loopexit, %.lr.ph105, %middle.block, %vec.epilog.middle.block, %.preheader88
  %153 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #11
          to label %177 unwind label %184

.lr.ph105:                                        ; preds = %.lr.ph105.prol.loopexit, %.lr.ph105
  %indvars.iv = phi i64 [ %indvars.iv.next.3, %.lr.ph105 ], [ %indvars.iv.unr, %.lr.ph105.prol.loopexit ]
  %154 = trunc nuw nsw i64 %indvars.iv to i32
  %155 = mul i32 %107, %154
  %156 = add i32 %155, %.064107
  %157 = zext i32 %156 to i64
  %158 = getelementptr inbounds i8, ptr %124, i64 %157
  store i8 1, ptr %158, align 1, !tbaa !64
  %159 = trunc i64 %indvars.iv to i32
  %160 = add i32 %159, 1
  %161 = mul i32 %107, %160
  %162 = add i32 %161, %.064107
  %163 = zext i32 %162 to i64
  %164 = getelementptr inbounds i8, ptr %124, i64 %163
  store i8 1, ptr %164, align 1, !tbaa !64
  %165 = trunc i64 %indvars.iv to i32
  %166 = add i32 %165, 2
  %167 = mul i32 %107, %166
  %168 = add i32 %167, %.064107
  %169 = zext i32 %168 to i64
  %170 = getelementptr inbounds i8, ptr %124, i64 %169
  store i8 1, ptr %170, align 1, !tbaa !64
  %171 = trunc i64 %indvars.iv to i32
  %172 = add i32 %171, 3
  %173 = mul i32 %107, %172
  %174 = add i32 %173, %.064107
  %175 = zext i32 %174 to i64
  %176 = getelementptr inbounds i8, ptr %124, i64 %175
  store i8 1, ptr %176, align 1, !tbaa !64
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next.3, %wide.trip.count
  br i1 %exitcond.not.3, label %._crit_edge106, label %.lr.ph105, !llvm.loop !72

177:                                              ; preds = %._crit_edge106
  invoke void @_ZN11DataPackageC1Emf9operand_tj9traffic_tPbj(ptr noundef nonnull align 8 dereferenceable(64) %153, i64 noundef 4, float noundef %.065, i32 noundef 0, i32 noundef 0, i32 noundef 1, ptr noundef nonnull %124, i32 noundef %122)
          to label %178 unwind label %186

178:                                              ; preds = %177
  invoke void @_ZN19SparseDenseSDMemory23sendPackageToInputFifosEP11DataPackage(ptr noundef nonnull align 8 dereferenceable(672) %0, ptr noundef nonnull %153)
          to label %179 unwind label %184

179:                                              ; preds = %178
  %180 = add i32 %.063108, 1
  %181 = add nuw nsw i32 %.064107, 1
  %182 = load i32, ptr %91, align 4, !tbaa !48
  %183 = icmp ult i32 %181, %182
  br i1 %183, label %106, label %._crit_edge111.loopexit, !llvm.loop !73

184:                                              ; preds = %178, %._crit_edge106
  %185 = landingpad { ptr, i32 }
          cleanup
  br label %403

186:                                              ; preds = %177
  %187 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %153, i64 noundef 64) #12
  br label %403

188:                                              ; preds = %._crit_edge111
  store i32 0, ptr %90, align 8, !tbaa !57
  br label %.sink.split

189:                                              ; preds = %87
  %190 = getelementptr inbounds i8, ptr %0, i64 396
  %191 = getelementptr inbounds i8, ptr %0, i64 356
  %192 = load i32, ptr %191, align 4, !tbaa !50
  %.not112 = icmp eq i32 %192, 0
  br i1 %.not112, label %._crit_edge101, label %.lr.ph100

.lr.ph100:                                        ; preds = %189
  %193 = getelementptr inbounds i8, ptr %0, i64 400
  %194 = getelementptr inbounds i8, ptr %0, i64 364
  %195 = getelementptr inbounds i8, ptr %0, i64 404
  %196 = getelementptr inbounds i8, ptr %0, i64 76
  %197 = getelementptr inbounds i8, ptr %0, i64 320
  %198 = getelementptr inbounds i8, ptr %0, i64 336
  %199 = getelementptr inbounds i8, ptr %0, i64 444
  %200 = getelementptr inbounds i8, ptr %0, i64 536
  %201 = load i32, ptr %194, align 4, !tbaa !48
  %.not113 = icmp eq i32 %201, 0
  br i1 %.not113, label %._crit_edge101, label %.lr.ph100.split.preheader

.lr.ph100.split.preheader:                        ; preds = %.lr.ph100
  %202 = load i32, ptr %190, align 4, !tbaa !74
  %203 = mul i32 %192, %202
  br label %.lr.ph100.split

._crit_edge101:                                   ; preds = %._crit_edge, %.lr.ph100, %189
  %204 = getelementptr inbounds i8, ptr %0, i64 400
  %205 = load i32, ptr %204, align 8, !tbaa !57
  %206 = add i32 %205, 1
  store i32 %206, ptr %204, align 8, !tbaa !57
  %207 = getelementptr inbounds i8, ptr %0, i64 372
  %208 = load i32, ptr %207, align 4, !tbaa !49
  %209 = icmp eq i32 %206, %208
  br i1 %209, label %253, label %264

.lr.ph100.split:                                  ; preds = %.lr.ph100.split.preheader, %._crit_edge
  %210 = phi i32 [ %214, %._crit_edge ], [ %192, %.lr.ph100.split.preheader ]
  %211 = phi i32 [ %215, %._crit_edge ], [ %201, %.lr.ph100.split.preheader ]
  %.06998 = phi i32 [ %.170.lcssa, %._crit_edge ], [ 0, %.lr.ph100.split.preheader ]
  %.07497 = phi i32 [ %217, %._crit_edge ], [ 0, %.lr.ph100.split.preheader ]
  %.07596 = phi i32 [ %216, %._crit_edge ], [ %203, %.lr.ph100.split.preheader ]
  %.not114 = icmp eq i32 %211, 0
  br i1 %.not114, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %.lr.ph100.split
  %212 = load i32, ptr %193, align 8, !tbaa !57
  %213 = mul i32 %211, %212
  br label %.lr.ph

._crit_edge.loopexit:                             ; preds = %243
  %.pre = load i32, ptr %191, align 4, !tbaa !50
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.lr.ph100.split
  %214 = phi i32 [ %210, %.lr.ph100.split ], [ %.pre, %._crit_edge.loopexit ]
  %215 = phi i32 [ 0, %.lr.ph100.split ], [ %247, %._crit_edge.loopexit ]
  %.170.lcssa = phi i32 [ %.06998, %.lr.ph100.split ], [ %245, %._crit_edge.loopexit ]
  %216 = add i32 %.07596, 1
  %217 = add nuw nsw i32 %.07497, 1
  %218 = icmp ult i32 %217, %214
  br i1 %218, label %.lr.ph100.split, label %._crit_edge101, !llvm.loop !75

.lr.ph:                                           ; preds = %.lr.ph.preheader, %243
  %.17095 = phi i32 [ %245, %243 ], [ %.06998, %.lr.ph.preheader ]
  %.07294 = phi i32 [ %246, %243 ], [ 0, %.lr.ph.preheader ]
  %.07393 = phi i32 [ %244, %243 ], [ %213, %.lr.ph.preheader ]
  %219 = load i32, ptr %195, align 4, !tbaa !46
  %220 = icmp ult i32 %.07393, %219
  br i1 %220, label %221, label %239

221:                                              ; preds = %.lr.ph
  %222 = load i32, ptr %196, align 4, !tbaa !77
  %223 = icmp ult i32 %.07596, %222
  br i1 %223, label %224, label %239

224:                                              ; preds = %221
  %225 = load ptr, ptr %197, align 8, !tbaa !78
  %226 = load ptr, ptr %198, align 8, !tbaa !79
  %227 = load i32, ptr %199, align 4, !tbaa !47
  %228 = add i32 %227, %.07393
  %229 = zext i32 %228 to i64
  %230 = getelementptr inbounds i32, ptr %226, i64 %229
  %231 = load i32, ptr %230, align 4, !tbaa !45
  %232 = mul i32 %231, %222
  %233 = add i32 %232, %.07596
  %234 = zext i32 %233 to i64
  %235 = getelementptr inbounds float, ptr %225, i64 %234
  %236 = load float, ptr %235, align 4, !tbaa !60
  %237 = load i32, ptr %200, align 8, !tbaa !80
  %238 = add i32 %237, 1
  store i32 %238, ptr %200, align 8, !tbaa !80
  br label %239

239:                                              ; preds = %.lr.ph, %221, %224
  %.071 = phi float [ %236, %224 ], [ 0.000000e+00, %221 ], [ 0.000000e+00, %.lr.ph ]
  %240 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #11
          to label %241 unwind label %249

241:                                              ; preds = %239
  invoke void @_ZN11DataPackageC1Emf9operand_tj9traffic_tj(ptr noundef nonnull align 8 dereferenceable(64) %240, i64 noundef 4, float noundef %.071, i32 noundef 1, i32 noundef 0, i32 noundef 2, i32 noundef %.17095)
          to label %242 unwind label %251

242:                                              ; preds = %241
  invoke void @_ZN19SparseDenseSDMemory23sendPackageToInputFifosEP11DataPackage(ptr noundef nonnull align 8 dereferenceable(672) %0, ptr noundef nonnull %240)
          to label %243 unwind label %249

243:                                              ; preds = %242
  %244 = add i32 %.07393, 1
  %245 = add i32 %.17095, 1
  %246 = add nuw nsw i32 %.07294, 1
  %247 = load i32, ptr %194, align 4, !tbaa !48
  %248 = icmp ult i32 %246, %247
  br i1 %248, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !81

249:                                              ; preds = %242, %239
  %250 = landingpad { ptr, i32 }
          cleanup
  br label %403

251:                                              ; preds = %241
  %252 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %240, i64 noundef 64) #12
  br label %403

253:                                              ; preds = %._crit_edge101
  store i32 0, ptr %204, align 8, !tbaa !57
  %254 = load i32, ptr %190, align 4, !tbaa !74
  %255 = add i32 %254, 1
  store i32 %255, ptr %190, align 4, !tbaa !74
  %256 = getelementptr inbounds i8, ptr %0, i64 368
  %257 = load i32, ptr %256, align 8, !tbaa !82
  %258 = icmp eq i32 %255, %257
  br i1 %258, label %259, label %264

259:                                              ; preds = %253
  store i32 0, ptr %190, align 4, !tbaa !74
  %260 = getelementptr inbounds i8, ptr %0, i64 392
  %261 = load i32, ptr %260, align 8, !tbaa !44
  %262 = add i32 %261, 1
  store i32 %262, ptr %260, align 8, !tbaa !44
  br label %.sink.split

.sink.split:                                      ; preds = %188, %259
  %263 = getelementptr inbounds i8, ptr %0, i64 454
  store i8 1, ptr %263, align 2, !tbaa !58
  br label %264

264:                                              ; preds = %.sink.split, %._crit_edge101, %253, %87, %._crit_edge111
  invoke void @_ZN19SparseDenseSDMemory7receiveEv(ptr noundef nonnull align 8 dereferenceable(672) %0)
          to label %265 unwind label %288

265:                                              ; preds = %264
  %266 = getelementptr inbounds i8, ptr %0, i64 256
  %267 = load ptr, ptr %266, align 8, !tbaa !83
  %268 = invoke noundef zeroext i1 @_ZN4Fifo7isEmptyEv(ptr noundef nonnull align 8 dereferenceable(120) %267)
          to label %269 unwind label %288

269:                                              ; preds = %265
  br i1 %268, label %.loopexit, label %.preheader

.preheader:                                       ; preds = %269
  %270 = getelementptr inbounds i8, ptr %0, i64 184
  %271 = getelementptr inbounds i8, ptr %0, i64 76
  %272 = getelementptr inbounds i8, ptr %0, i64 160
  %273 = getelementptr inbounds i8, ptr %0, i64 356
  %274 = getelementptr inbounds i8, ptr %0, i64 328
  %275 = getelementptr inbounds i8, ptr %0, i64 384
  %276 = getelementptr inbounds i8, ptr %0, i64 544
  %277 = getelementptr inbounds i8, ptr %0, i64 368
  %278 = getelementptr inbounds i8, ptr %0, i64 460
  %279 = getelementptr inbounds i8, ptr %0, i64 72
  %280 = getelementptr inbounds i8, ptr %0, i64 452
  %281 = getelementptr inbounds i8, ptr %0, i64 468
  %282 = getelementptr inbounds i8, ptr %0, i64 454
  br label %283

283:                                              ; preds = %.preheader, %358
  %.068 = phi i32 [ %359, %358 ], [ 0, %.preheader ]
  %284 = load ptr, ptr %266, align 8, !tbaa !83
  %285 = invoke noundef i32 @_ZN4Fifo4sizeEv(ptr noundef nonnull align 8 dereferenceable(120) %284)
          to label %286 unwind label %290

286:                                              ; preds = %283
  %287 = icmp ult i32 %.068, %285
  br i1 %287, label %292, label %.loopexit

288:                                              ; preds = %401, %265, %264
  %289 = landingpad { ptr, i32 }
          cleanup
  br label %403

290:                                              ; preds = %283
  %291 = landingpad { ptr, i32 }
          cleanup
  br label %403

292:                                              ; preds = %286
  %293 = load ptr, ptr %266, align 8, !tbaa !83
  %294 = invoke noundef ptr @_ZN4Fifo3popEv(ptr noundef nonnull align 8 dereferenceable(120) %293)
          to label %295 unwind label %325

295:                                              ; preds = %292
  %296 = call noundef i32 @_ZNK11DataPackage6get_vnEv(ptr noundef nonnull align 8 dereferenceable(64) %294)
  %297 = call noundef float @_ZNK11DataPackage8get_dataEv(ptr noundef nonnull align 8 dereferenceable(64) %294)
  %298 = zext i32 %296 to i64
  %299 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %270, i64 noundef %298) #10
  %300 = load i32, ptr %299, align 4, !tbaa !45
  %301 = load i32, ptr %271, align 4, !tbaa !77
  %302 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %272, i64 noundef %298) #10
  %303 = load i32, ptr %302, align 4, !tbaa !45
  %304 = load i32, ptr %273, align 4, !tbaa !50
  %305 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %272, i64 noundef %298) #10
  %306 = load i32, ptr %305, align 4, !tbaa !45
  %307 = load i32, ptr %273, align 4, !tbaa !50
  %308 = mul i32 %307, %306
  %309 = add i32 %308, %296
  %310 = load i32, ptr %271, align 4, !tbaa !77
  %311 = icmp ult i32 %309, %310
  br i1 %311, label %312, label %327

312:                                              ; preds = %295
  %313 = mul i32 %301, %300
  %314 = mul i32 %304, %303
  %315 = add i32 %313, %296
  %316 = add i32 %315, %314
  %317 = load ptr, ptr %274, align 8, !tbaa !84
  %318 = zext i32 %316 to i64
  %319 = getelementptr inbounds float, ptr %317, i64 %318
  store float %297, ptr %319, align 4, !tbaa !60
  %320 = load i32, ptr %13, align 8, !tbaa !40
  %321 = load ptr, ptr %275, align 8, !tbaa !85
  %322 = getelementptr inbounds i32, ptr %321, i64 %318
  store i32 %320, ptr %322, align 4, !tbaa !45
  %323 = load i32, ptr %276, align 8, !tbaa !86
  %324 = add i32 %323, 1
  store i32 %324, ptr %276, align 8, !tbaa !86
  br label %327

325:                                              ; preds = %292
  %326 = landingpad { ptr, i32 }
          cleanup
  br label %403

327:                                              ; preds = %312, %295
  %328 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %272, i64 noundef %298) #10
  %329 = load i32, ptr %328, align 4, !tbaa !45
  %330 = add i32 %329, 1
  store i32 %330, ptr %328, align 4, !tbaa !45
  %331 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %272, i64 noundef %298) #10
  %332 = load i32, ptr %331, align 4, !tbaa !45
  %333 = load i32, ptr %277, align 8, !tbaa !82
  %334 = icmp eq i32 %332, %333
  br i1 %334, label %335, label %340

335:                                              ; preds = %327
  %336 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %272, i64 noundef %298) #10
  store i32 0, ptr %336, align 4, !tbaa !45
  %337 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %270, i64 noundef %298) #10
  %338 = load i32, ptr %337, align 4, !tbaa !45
  %339 = add i32 %338, 1
  store i32 %339, ptr %337, align 4, !tbaa !45
  %.pre127 = load i32, ptr %277, align 8, !tbaa !82
  br label %340

340:                                              ; preds = %335, %327
  %341 = phi i32 [ %.pre127, %335 ], [ %333, %327 ]
  %342 = load i32, ptr %278, align 4, !tbaa !87
  %343 = add i32 %342, 1
  store i32 %343, ptr %278, align 4, !tbaa !87
  %344 = load i32, ptr %273, align 4, !tbaa !50
  %345 = mul i32 %344, %341
  %346 = load i32, ptr %279, align 8, !tbaa !88
  %347 = mul i32 %346, %345
  %348 = icmp eq i32 %343, %347
  br i1 %348, label %349, label %350

349:                                              ; preds = %340
  store i8 1, ptr %280, align 4, !tbaa !89
  br label %350

350:                                              ; preds = %349, %340
  %351 = load i32, ptr %281, align 4, !tbaa !90
  %352 = add i32 %351, 1
  store i32 %352, ptr %281, align 4, !tbaa !90
  %353 = icmp eq i32 %352, %345
  br i1 %353, label %354, label %358

354:                                              ; preds = %350
  store i32 0, ptr %281, align 4, !tbaa !90
  %355 = load i32, ptr %19, align 8, !tbaa !42
  %356 = icmp eq i32 %355, 3
  br i1 %356, label %357, label %358

357:                                              ; preds = %354
  store i8 1, ptr %282, align 2, !tbaa !58
  br label %358

358:                                              ; preds = %350, %357, %354
  call void @_ZN11DataPackageD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %294) #10
  call void @_ZdlPvm(ptr noundef %294, i64 noundef 64) #12
  %359 = add nuw nsw i32 %.068, 1
  br label %283, !llvm.loop !91

.loopexit:                                        ; preds = %286, %269
  %360 = load i32, ptr %19, align 8, !tbaa !42
  switch i32 %360, label %401 [
    i32 0, label %361
    i32 1, label %362
    i32 2, label %367
    i32 3, label %378
    i32 4, label %383
  ]

361:                                              ; preds = %.loopexit
  store i32 1, ptr %19, align 8, !tbaa !42
  br label %401

362:                                              ; preds = %.loopexit
  %363 = getelementptr inbounds i8, ptr %0, i64 454
  %364 = load i8, ptr %363, align 2, !tbaa !58, !range !37, !noundef !38
  %365 = trunc nuw i8 %364 to i1
  br i1 %365, label %366, label %401

366:                                              ; preds = %362
  store i32 2, ptr %19, align 8, !tbaa !42
  store i8 0, ptr %363, align 2, !tbaa !58
  br label %401

367:                                              ; preds = %.loopexit
  %368 = getelementptr inbounds i8, ptr %0, i64 392
  %369 = load i32, ptr %368, align 8, !tbaa !44
  %370 = getelementptr inbounds i8, ptr %0, i64 376
  %371 = load i32, ptr %370, align 8, !tbaa !92
  %.not = icmp ult i32 %369, %371
  br i1 %.not, label %373, label %372

372:                                              ; preds = %367
  store i32 4, ptr %19, align 8, !tbaa !42
  br label %401

373:                                              ; preds = %367
  %374 = getelementptr inbounds i8, ptr %0, i64 454
  %375 = load i8, ptr %374, align 2, !tbaa !58, !range !37, !noundef !38
  %376 = trunc nuw i8 %375 to i1
  br i1 %376, label %377, label %401

377:                                              ; preds = %373
  store i32 3, ptr %19, align 8, !tbaa !42
  store i8 0, ptr %374, align 2, !tbaa !58
  br label %401

378:                                              ; preds = %.loopexit
  %379 = getelementptr inbounds i8, ptr %0, i64 454
  %380 = load i8, ptr %379, align 2, !tbaa !58, !range !37, !noundef !38
  %381 = trunc nuw i8 %380 to i1
  br i1 %381, label %382, label %401

382:                                              ; preds = %378
  store i32 0, ptr %19, align 8, !tbaa !42
  br label %401

383:                                              ; preds = %.loopexit
  %384 = getelementptr inbounds i8, ptr %0, i64 72
  %385 = load i32, ptr %384, align 8, !tbaa !88
  %386 = getelementptr inbounds i8, ptr %0, i64 84
  %387 = load i32, ptr %386, align 4, !tbaa !93
  %388 = mul i32 %387, %385
  %389 = getelementptr inbounds i8, ptr %0, i64 476
  %390 = load i32, ptr %389, align 4, !tbaa !63
  %391 = sub i32 %388, %390
  %392 = mul i32 %391, 100
  %393 = udiv i32 %392, %388
  %394 = getelementptr inbounds i8, ptr %0, i64 548
  store i32 %393, ptr %394, align 4, !tbaa !94
  %395 = getelementptr inbounds i8, ptr %0, i64 552
  store i32 0, ptr %395, align 8, !tbaa !95
  %396 = getelementptr inbounds i8, ptr %0, i64 556
  %397 = load i32, ptr %396, align 4, !tbaa !96
  %398 = getelementptr inbounds i8, ptr %0, i64 564
  %399 = load i32, ptr %398, align 4, !tbaa !97
  %400 = udiv i32 %397, %399
  store i32 %400, ptr %396, align 4, !tbaa !96
  store i32 4, ptr %19, align 8, !tbaa !42
  br label %401

401:                                              ; preds = %.loopexit, %366, %362, %382, %378, %383, %372, %377, %373, %361
  invoke void @_ZN19SparseDenseSDMemory4sendEv(ptr noundef nonnull align 8 dereferenceable(672) %0)
          to label %402 unwind label %288

402:                                              ; preds = %401
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #10
  ret void

403:                                              ; preds = %290, %325, %249, %251, %151, %186, %184, %83, %85, %288
  %.pn84.pn.pn = phi { ptr, i32 } [ %289, %288 ], [ %84, %83 ], [ %86, %85 ], [ %152, %151 ], [ %185, %184 ], [ %187, %186 ], [ %250, %249 ], [ %252, %251 ], [ %326, %325 ], [ %291, %290 ]
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #10
  resume { ptr, i32 } %.pn84.pn.pn
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5 align 2

declare void @_ZN4TileC1Ejjjjjjjjb(ptr noundef nonnull align 4 dereferenceable(41), i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i1 noundef zeroext) unnamed_addr #6

declare void @_ZN11DataPackageC1Emf9operand_tj9traffic_tPbj(ptr noundef nonnull align 8 dereferenceable(64), i64 noundef, float noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef) unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN19SparseDenseSDMemory23sendPackageToInputFifosEP11DataPackage(ptr noundef nonnull align 8 dereferenceable(672), ptr noundef) local_unnamed_addr #4 align 2

declare void @_ZN11DataPackageC1Emf9operand_tj9traffic_tj(ptr noundef nonnull align 8 dereferenceable(64), i64 noundef, float noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN19SparseDenseSDMemory7receiveEv(ptr noundef nonnull align 8 dereferenceable(672)) local_unnamed_addr #4 align 2

declare noundef zeroext i1 @_ZN4Fifo7isEmptyEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #6

declare noundef i32 @_ZN4Fifo4sizeEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #6

declare noundef ptr @_ZN4Fifo3popEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK11DataPackage6get_vnEv(ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK11DataPackage8get_dataEv(ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #5 align 2

; Function Attrs: nounwind
declare void @_ZN11DataPackageD1Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN19SparseDenseSDMemory4sendEv(ptr noundef nonnull align 8 dereferenceable(672)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5 align 2

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

attributes #0 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress 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 = { mustprogress 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 #6 = { "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 #7 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { noreturn nounwind }
attributes #10 = { nounwind }
attributes #11 = { builtin allocsize(0) }
attributes #12 = { builtin 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, !33, i64 456}
!6 = !{!"_ZTS19SparseDenseSDMemory", !7, i64 0, !14, i64 48, !14, i64 56, !14, i64 64, !9, i64 72, !9, i64 76, !9, i64 80, !9, i64 84, !9, i64 88, !9, i64 92, !9, i64 96, !9, i64 100, !9, i64 104, !9, i64 108, !9, i64 112, !14, i64 120, !16, i64 128, !17, i64 136, !21, i64 160, !21, i64 184, !25, i64 208, !9, i64 232, !9, i64 236, !9, i64 240, !9, i64 244, !9, i64 248, !9, i64 252, !14, i64 256, !29, i64 264, !29, i64 288, !14, i64 312, !14, i64 320, !14, i64 328, !14, i64 336, !14, i64 344, !9, i64 352, !9, i64 356, !9, i64 360, !9, i64 364, !9, i64 368, !9, i64 372, !9, i64 376, !14, i64 384, !9, i64 392, !9, i64 396, !9, i64 400, !9, i64 404, !14, i64 408, !14, i64 416, !9, i64 424, !9, i64 428, !9, i64 432, !9, i64 436, !9, i64 440, !9, i64 444, !33, i64 448, !33, i64 449, !33, i64 450, !33, i64 451, !33, i64 452, !33, i64 453, !33, i64 454, !33, i64 455, !33, i64 456, !9, i64 460, !9, i64 464, !9, i64 468, !9, i64 472, !9, i64 476, !9, i64 480, !25, i64 488, !9, i64 512, !34, i64 520}
!7 = !{!"_ZTS16MemoryController", !8, i64 0}
!8 = !{!"_ZTS4Unit", !9, i64 8, !12, i64 16}
!9 = !{!"int", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !13, i64 0, !15, i64 8, !10, i64 16}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !14, i64 0}
!14 = !{!"any pointer", !10, i64 0}
!15 = !{!"long", !10, i64 0}
!16 = !{!"_ZTS23SparsityControllerState", !10, i64 0}
!17 = !{!"_ZTSSt6vectorI8SparseVNSaIS0_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseI8SparseVNSaIS0_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseI8SparseVNSaIS0_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseI8SparseVNSaIS0_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!21 = !{!"_ZTSSt6vectorIjSaIjEE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!25 = !{!"_ZTSSt6vectorIP10ConnectionSaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIP10ConnectionSaIS1_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIP10ConnectionSaIS1_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIP10ConnectionSaIS1_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!29 = !{!"_ZTSSt6vectorIP4FifoSaIS1_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIP4FifoSaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIP4FifoSaIS1_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIP4FifoSaIS1_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!33 = !{!"bool", !10, i64 0}
!34 = !{!"_ZTS13SDMemoryStats", !35, i64 0, !9, i64 8, !9, i64 12, !9, i64 16, !9, i64 20, !9, i64 24, !9, i64 28, !9, i64 32, !9, i64 36, !9, i64 40, !9, i64 44, !36, i64 48, !21, i64 56, !21, i64 80, !21, i64 104, !21, i64 128}
!35 = !{!"_ZTS5Stats"}
!36 = !{!"_ZTS8Dataflow", !10, i64 0}
!37 = !{i8 0, i8 2}
!38 = !{}
!39 = !{!6, !33, i64 455}
!40 = !{!6, !9, i64 512}
!41 = !{!6, !9, i64 528}
!42 = !{!6, !16, i64 128}
!43 = !{!6, !14, i64 344}
!44 = !{!6, !9, i64 392}
!45 = !{!9, !9, i64 0}
!46 = !{!6, !9, i64 404}
!47 = !{!6, !9, i64 444}
!48 = !{!6, !9, i64 364}
!49 = !{!6, !9, i64 372}
!50 = !{!6, !9, i64 356}
!51 = !{!6, !14, i64 64}
!52 = !{!53, !53, i64 0}
!53 = !{!"vtable pointer", !11, i64 0}
!54 = !{!6, !14, i64 56}
!55 = !{!6, !14, i64 48}
!56 = !{!6, !9, i64 232}
!57 = !{!6, !9, i64 400}
!58 = !{!6, !33, i64 454}
!59 = !{!6, !14, i64 312}
!60 = !{!61, !61, i64 0}
!61 = !{!"float", !10, i64 0}
!62 = !{!6, !9, i64 532}
!63 = !{!6, !9, i64 476}
!64 = !{!33, !33, i64 0}
!65 = distinct !{!65, !66, !67, !68}
!66 = !{!"llvm.loop.mustprogress"}
!67 = !{!"llvm.loop.isvectorized", i32 1}
!68 = !{!"llvm.loop.unroll.runtime.disable"}
!69 = distinct !{!69, !70}
!70 = !{!"llvm.loop.unroll.disable"}
!71 = distinct !{!71, !66, !67, !68}
!72 = distinct !{!72, !66, !67}
!73 = distinct !{!73, !66}
!74 = !{!6, !9, i64 396}
!75 = distinct !{!75, !66, !76}
!76 = !{!"llvm.loop.unswitch.partial.disable"}
!77 = !{!6, !9, i64 76}
!78 = !{!6, !14, i64 320}
!79 = !{!6, !14, i64 336}
!80 = !{!6, !9, i64 536}
!81 = distinct !{!81, !66}
!82 = !{!6, !9, i64 368}
!83 = !{!6, !14, i64 256}
!84 = !{!6, !14, i64 328}
!85 = !{!6, !14, i64 384}
!86 = !{!6, !9, i64 544}
!87 = !{!6, !9, i64 460}
!88 = !{!6, !9, i64 72}
!89 = !{!6, !33, i64 452}
!90 = !{!6, !9, i64 468}
!91 = distinct !{!91, !66}
!92 = !{!6, !9, i64 376}
!93 = !{!6, !9, i64 84}
!94 = !{!6, !9, i64 548}
!95 = !{!6, !9, i64 552}
!96 = !{!6, !9, i64 556}
!97 = !{!6, !9, i64 564}


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