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

; 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::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"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.SparseVN = type <{ i32, i8, [3 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.SparseSDMemory = type { %class.MemoryController, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, %"class.std::vector", %"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, ptr, ptr, ptr, i32, i32, i32, i32, i32, 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.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 [97 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [19 x i8], align 1
@__PRETTY_FUNCTION__._ZN14SparseSDMemory5cycleEv = external hidden unnamed_addr constant [37 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [2 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: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) #3 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #3 align 2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #6

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN14SparseSDMemory5cycleEv(ptr noundef nonnull align 8 dereferenceable(592) %0) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.std::vector.21", align 8
  %4 = alloca %"class.std::vector.21", align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %class.SparseVN, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca %class.SparseVN, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca %class.SparseVN, align 4
  %20 = alloca i32, align 4
  %21 = alloca %class.SparseVN, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca %"class.std::vector", align 8
  %31 = alloca %"class.std::vector", align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca float, align 4
  %37 = alloca ptr, align 8
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca ptr, align 8
  %42 = alloca i32, align 4
  %43 = alloca float, align 4
  %44 = alloca ptr, align 8
  %45 = alloca i32, align 4
  %46 = alloca ptr, align 8
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca float, align 4
  %53 = alloca i32, align 4
  %54 = alloca ptr, align 8
  %55 = alloca i32, align 4
  %56 = alloca ptr, align 8
  %57 = alloca i32, align 4
  %58 = alloca float, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %66 = load ptr, ptr %2, align 8
  %67 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 50
  %68 = load i8, ptr %67, align 1, !tbaa !9, !range !38, !noundef !39
  %69 = trunc i8 %68 to i1
  br i1 %69, label %70, label %71

70:                                               ; preds = %1
  br label %73

71:                                               ; preds = %1
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 182, ptr noundef @__PRETTY_FUNCTION__._ZN14SparseSDMemory5cycleEv) #9
  unreachable

72:                                               ; No predecessors!
  br label %73

73:                                               ; preds = %72, %70
  %74 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 49
  %75 = load i8, ptr %74, align 2, !tbaa !40, !range !38, !noundef !39
  %76 = trunc i8 %75 to i1
  br i1 %76, label %77, label %78

77:                                               ; preds = %73
  br label %80

78:                                               ; preds = %73
  call void @__assert_fail(ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 183, ptr noundef @__PRETTY_FUNCTION__._ZN14SparseSDMemory5cycleEv) #9
  unreachable

79:                                               ; No predecessors!
  br label %80

80:                                               ; preds = %79, %77
  call void @llvm.lifetime.start.p0(i64 24, ptr %3) #10
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %4) #10
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #10
  %81 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 58
  %82 = load i32, ptr %81, align 8, !tbaa !41
  %83 = add i32 %82, 1
  store i32 %83, ptr %81, align 8, !tbaa !41
  %84 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 59
  %85 = getelementptr inbounds %class.SDMemoryStats, ptr %84, i32 0, i32 1
  %86 = load i32, ptr %85, align 8, !tbaa !42
  %87 = add i32 %86, 1
  store i32 %87, ptr %85, align 8, !tbaa !42
  %88 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 17
  %89 = load i32, ptr %88, align 8, !tbaa !43
  %90 = icmp eq i32 %89, 0
  br i1 %90, label %91, label %618

91:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #10
  %92 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 39
  %93 = load i32, ptr %92, align 4, !tbaa !44
  store i32 %93, ptr %5, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #10
  store i32 0, ptr %6, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #10
  store i32 0, ptr %7, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #10
  store i32 0, ptr %8, align 4, !tbaa !45
  %94 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  call void @_ZNSt6vectorI8SparseVNSaIS0_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %94) #10
  %95 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 19
  call void @_ZNSt6vectorIjSaIjEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %95) #10
  %96 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 41
  %97 = load i32, ptr %96, align 4, !tbaa !46
  %98 = icmp ugt i32 %97, 0
  br i1 %98, label %99, label %211

99:                                               ; preds = %91
  %100 = load i32, ptr %7, align 4, !tbaa !45
  %101 = add nsw i32 %100, 1
  store i32 %101, ptr %7, align 4, !tbaa !45
  %102 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 41
  %103 = load i32, ptr %102, align 4, !tbaa !46
  store i32 %103, ptr %6, align 4, !tbaa !45
  br label %104

104:                                              ; preds = %151, %99
  %105 = load i32, ptr %7, align 4, !tbaa !45
  %106 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 21
  %107 = load i32, ptr %106, align 8, !tbaa !47
  %108 = icmp ult i32 %105, %107
  br i1 %108, label %109, label %114

109:                                              ; preds = %104
  %110 = load i32, ptr %6, align 4, !tbaa !45
  %111 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 8
  %112 = load i32, ptr %111, align 8, !tbaa !48
  %113 = icmp ult i32 %110, %112
  br label %114

114:                                              ; preds = %109, %104
  %115 = phi i1 [ false, %104 ], [ %113, %109 ]
  br i1 %115, label %116, label %154

116:                                              ; preds = %114
  %117 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 33
  %118 = load ptr, ptr %117, align 8, !tbaa !49
  %119 = load i32, ptr %5, align 4, !tbaa !45
  %120 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 11
  %121 = load i32, ptr %120, align 4, !tbaa !50
  %122 = mul i32 %119, %121
  %123 = load i32, ptr %6, align 4, !tbaa !45
  %124 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 10
  %125 = load i32, ptr %124, align 8, !tbaa !51
  %126 = mul i32 %123, %125
  %127 = add i32 %122, %126
  %128 = zext i32 %127 to i64
  %129 = getelementptr inbounds i32, ptr %118, i64 %128
  %130 = load i32, ptr %129, align 4, !tbaa !45
  %131 = icmp ne i32 %130, 0
  br i1 %131, label %132, label %151

132:                                              ; preds = %116
  %133 = load i32, ptr %7, align 4, !tbaa !45
  %134 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 36
  %135 = load ptr, ptr %134, align 8, !tbaa !52
  %136 = load i32, ptr %5, align 4, !tbaa !45
  %137 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 11
  %138 = load i32, ptr %137, align 4, !tbaa !50
  %139 = mul i32 %136, %138
  %140 = load i32, ptr %6, align 4, !tbaa !45
  %141 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 10
  %142 = load i32, ptr %141, align 8, !tbaa !51
  %143 = mul i32 %140, %142
  %144 = add i32 %139, %143
  %145 = zext i32 %144 to i64
  %146 = getelementptr inbounds i32, ptr %135, i64 %145
  store i32 %133, ptr %146, align 4, !tbaa !45
  %147 = load i32, ptr %7, align 4, !tbaa !45
  %148 = add nsw i32 %147, 1
  store i32 %148, ptr %7, align 4, !tbaa !45
  %149 = load i32, ptr %8, align 4, !tbaa !45
  %150 = add nsw i32 %149, 1
  store i32 %150, ptr %8, align 4, !tbaa !45
  br label %151

151:                                              ; preds = %132, %116
  %152 = load i32, ptr %6, align 4, !tbaa !45
  %153 = add nsw i32 %152, 1
  store i32 %153, ptr %6, align 4, !tbaa !45
  br label %104, !llvm.loop !53

154:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #10
  %155 = load i32, ptr %8, align 4, !tbaa !45
  invoke void @_ZN8SparseVNC2Ejb(ptr noundef nonnull align 4 dereferenceable(5) %9, i32 noundef %155, i1 noundef zeroext true)
          to label %156 unwind label %168

156:                                              ; preds = %154
  %157 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  invoke void @_ZNSt6vectorI8SparseVNSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %157, ptr noundef nonnull align 4 dereferenceable(5) %9)
          to label %158 unwind label %168

158:                                              ; preds = %156
  %159 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 19
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #10
  store i32 0, ptr %12, align 4, !tbaa !45
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %159, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %160 unwind label %172

160:                                              ; preds = %158
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #10
  store i32 0, ptr %13, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #10
  %161 = load i32, ptr %6, align 4, !tbaa !45
  store i32 %161, ptr %14, align 4, !tbaa !45
  br label %162

162:                                              ; preds = %196, %160
  %163 = load i32, ptr %14, align 4, !tbaa !45
  %164 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 8
  %165 = load i32, ptr %164, align 8, !tbaa !48
  %166 = icmp ult i32 %163, %165
  br i1 %166, label %176, label %167

167:                                              ; preds = %162
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #10
  br label %199

168:                                              ; preds = %156, %154
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %10, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %11, align 4
  br label %210

172:                                              ; preds = %158
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %10, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  br label %210

176:                                              ; preds = %162
  %177 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 33
  %178 = load ptr, ptr %177, align 8, !tbaa !49
  %179 = load i32, ptr %5, align 4, !tbaa !45
  %180 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 11
  %181 = load i32, ptr %180, align 4, !tbaa !50
  %182 = mul i32 %179, %181
  %183 = load i32, ptr %14, align 4, !tbaa !45
  %184 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 10
  %185 = load i32, ptr %184, align 8, !tbaa !51
  %186 = mul i32 %183, %185
  %187 = add i32 %182, %186
  %188 = zext i32 %187 to i64
  %189 = getelementptr inbounds i32, ptr %178, i64 %188
  %190 = load i32, ptr %189, align 4, !tbaa !45
  %191 = icmp ne i32 %190, 0
  br i1 %191, label %192, label %195

192:                                              ; preds = %176
  %193 = load i32, ptr %13, align 4, !tbaa !45
  %194 = add nsw i32 %193, 1
  store i32 %194, ptr %13, align 4, !tbaa !45
  br label %195

195:                                              ; preds = %192, %176
  br label %196

196:                                              ; preds = %195
  %197 = load i32, ptr %14, align 4, !tbaa !45
  %198 = add nsw i32 %197, 1
  store i32 %198, ptr %14, align 4, !tbaa !45
  br label %162, !llvm.loop !55

199:                                              ; preds = %167
  %200 = load i32, ptr %13, align 4, !tbaa !45
  %201 = icmp sgt i32 %200, 0
  br i1 %201, label %202, label %205

202:                                              ; preds = %199
  %203 = load i32, ptr %6, align 4, !tbaa !45
  %204 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 42
  store i32 %203, ptr %204, align 8, !tbaa !56
  br label %209

205:                                              ; preds = %199
  %206 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 8
  %207 = load i32, ptr %206, align 8, !tbaa !48
  %208 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 42
  store i32 %207, ptr %208, align 8, !tbaa !56
  br label %209

209:                                              ; preds = %205, %202
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  br label %427

210:                                              ; preds = %172, %168
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  br label %617

211:                                              ; preds = %91
  br label %212

212:                                              ; preds = %296, %211
  %213 = load i32, ptr %7, align 4, !tbaa !45
  %214 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 21
  %215 = load i32, ptr %214, align 8, !tbaa !47
  %216 = icmp ult i32 %213, %215
  br i1 %216, label %217, label %230

217:                                              ; preds = %212
  %218 = load i32, ptr %5, align 4, !tbaa !45
  %219 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 8
  %220 = load i32, ptr %219, align 8, !tbaa !48
  %221 = mul i32 %218, %220
  %222 = load i32, ptr %6, align 4, !tbaa !45
  %223 = add i32 %221, %222
  %224 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 7
  %225 = load i32, ptr %224, align 4, !tbaa !57
  %226 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 8
  %227 = load i32, ptr %226, align 8, !tbaa !48
  %228 = mul i32 %225, %227
  %229 = icmp ult i32 %223, %228
  br label %230

230:                                              ; preds = %217, %212
  %231 = phi i1 [ false, %212 ], [ %229, %217 ]
  br i1 %231, label %232, label %297

232:                                              ; preds = %230
  %233 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 33
  %234 = load ptr, ptr %233, align 8, !tbaa !49
  %235 = load i32, ptr %5, align 4, !tbaa !45
  %236 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 11
  %237 = load i32, ptr %236, align 4, !tbaa !50
  %238 = mul i32 %235, %237
  %239 = load i32, ptr %6, align 4, !tbaa !45
  %240 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 10
  %241 = load i32, ptr %240, align 8, !tbaa !51
  %242 = mul i32 %239, %241
  %243 = add i32 %238, %242
  %244 = zext i32 %243 to i64
  %245 = getelementptr inbounds i32, ptr %234, i64 %244
  %246 = load i32, ptr %245, align 4, !tbaa !45
  %247 = icmp ne i32 %246, 0
  br i1 %247, label %248, label %267

248:                                              ; preds = %232
  %249 = load i32, ptr %7, align 4, !tbaa !45
  %250 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 36
  %251 = load ptr, ptr %250, align 8, !tbaa !52
  %252 = load i32, ptr %5, align 4, !tbaa !45
  %253 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 11
  %254 = load i32, ptr %253, align 4, !tbaa !50
  %255 = mul i32 %252, %254
  %256 = load i32, ptr %6, align 4, !tbaa !45
  %257 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 10
  %258 = load i32, ptr %257, align 8, !tbaa !51
  %259 = mul i32 %256, %258
  %260 = add i32 %255, %259
  %261 = zext i32 %260 to i64
  %262 = getelementptr inbounds i32, ptr %251, i64 %261
  store i32 %249, ptr %262, align 4, !tbaa !45
  %263 = load i32, ptr %7, align 4, !tbaa !45
  %264 = add nsw i32 %263, 1
  store i32 %264, ptr %7, align 4, !tbaa !45
  %265 = load i32, ptr %8, align 4, !tbaa !45
  %266 = add nsw i32 %265, 1
  store i32 %266, ptr %8, align 4, !tbaa !45
  br label %267

267:                                              ; preds = %248, %232
  %268 = load i32, ptr %6, align 4, !tbaa !45
  %269 = add nsw i32 %268, 1
  store i32 %269, ptr %6, align 4, !tbaa !45
  %270 = load i32, ptr %6, align 4, !tbaa !45
  %271 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 8
  %272 = load i32, ptr %271, align 8, !tbaa !48
  %273 = icmp eq i32 %270, %272
  br i1 %273, label %274, label %296

274:                                              ; preds = %267
  store i32 0, ptr %6, align 4, !tbaa !45
  %275 = load i32, ptr %5, align 4, !tbaa !45
  %276 = add nsw i32 %275, 1
  store i32 %276, ptr %5, align 4, !tbaa !45
  %277 = load i32, ptr %8, align 4, !tbaa !45
  %278 = icmp sgt i32 %277, 0
  br i1 %278, label %279, label %295

279:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #10
  %280 = load i32, ptr %8, align 4, !tbaa !45
  invoke void @_ZN8SparseVNC2Ejb(ptr noundef nonnull align 4 dereferenceable(5) %15, i32 noundef %280, i1 noundef zeroext false)
          to label %281 unwind label %286

281:                                              ; preds = %279
  %282 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  invoke void @_ZNSt6vectorI8SparseVNSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %282, ptr noundef nonnull align 4 dereferenceable(5) %15)
          to label %283 unwind label %286

283:                                              ; preds = %281
  %284 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 19
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #10
  store i32 0, ptr %16, align 4, !tbaa !45
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %284, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %285 unwind label %290

285:                                              ; preds = %283
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  store i32 0, ptr %8, align 4, !tbaa !45
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  br label %295

286:                                              ; preds = %281, %279
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %10, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %11, align 4
  br label %294

290:                                              ; preds = %283
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %10, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  br label %294

294:                                              ; preds = %290, %286
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  br label %617

295:                                              ; preds = %285, %274
  br label %296

296:                                              ; preds = %295, %267
  br label %212, !llvm.loop !58

297:                                              ; preds = %230
  %298 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %299 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %298) #10
  %300 = icmp ugt i64 %299, 0
  br i1 %300, label %301, label %361

301:                                              ; preds = %297
  %302 = load i32, ptr %6, align 4, !tbaa !45
  %303 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 8
  %304 = load i32, ptr %303, align 8, !tbaa !48
  %305 = icmp ult i32 %302, %304
  br i1 %305, label %306, label %361

306:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #10
  store i32 0, ptr %17, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #10
  %307 = load i32, ptr %6, align 4, !tbaa !45
  store i32 %307, ptr %18, align 4, !tbaa !45
  br label %308

308:                                              ; preds = %334, %306
  %309 = load i32, ptr %18, align 4, !tbaa !45
  %310 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 8
  %311 = load i32, ptr %310, align 8, !tbaa !48
  %312 = icmp ult i32 %309, %311
  br i1 %312, label %314, label %313

313:                                              ; preds = %308
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  br label %337

314:                                              ; preds = %308
  %315 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 33
  %316 = load ptr, ptr %315, align 8, !tbaa !49
  %317 = load i32, ptr %5, align 4, !tbaa !45
  %318 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 11
  %319 = load i32, ptr %318, align 4, !tbaa !50
  %320 = mul i32 %317, %319
  %321 = load i32, ptr %18, align 4, !tbaa !45
  %322 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 10
  %323 = load i32, ptr %322, align 8, !tbaa !51
  %324 = mul i32 %321, %323
  %325 = add i32 %320, %324
  %326 = zext i32 %325 to i64
  %327 = getelementptr inbounds i32, ptr %316, i64 %326
  %328 = load i32, ptr %327, align 4, !tbaa !45
  %329 = icmp ne i32 %328, 0
  br i1 %329, label %330, label %333

330:                                              ; preds = %314
  %331 = load i32, ptr %17, align 4, !tbaa !45
  %332 = add nsw i32 %331, 1
  store i32 %332, ptr %17, align 4, !tbaa !45
  br label %333

333:                                              ; preds = %330, %314
  br label %334

334:                                              ; preds = %333
  %335 = load i32, ptr %18, align 4, !tbaa !45
  %336 = add nsw i32 %335, 1
  store i32 %336, ptr %18, align 4, !tbaa !45
  br label %308, !llvm.loop !59

337:                                              ; preds = %313
  %338 = load i32, ptr %17, align 4, !tbaa !45
  %339 = icmp eq i32 %338, 0
  br i1 %339, label %340, label %360

340:                                              ; preds = %337
  %341 = load i32, ptr %8, align 4, !tbaa !45
  %342 = icmp sgt i32 %341, 0
  br i1 %342, label %343, label %359

343:                                              ; preds = %340
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  %344 = load i32, ptr %8, align 4, !tbaa !45
  invoke void @_ZN8SparseVNC2Ejb(ptr noundef nonnull align 4 dereferenceable(5) %19, i32 noundef %344, i1 noundef zeroext false)
          to label %345 unwind label %350

345:                                              ; preds = %343
  %346 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  invoke void @_ZNSt6vectorI8SparseVNSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %346, ptr noundef nonnull align 4 dereferenceable(5) %19)
          to label %347 unwind label %350

347:                                              ; preds = %345
  %348 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 19
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #10
  store i32 0, ptr %20, align 4, !tbaa !45
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %348, ptr noundef nonnull align 4 dereferenceable(4) %20)
          to label %349 unwind label %354

349:                                              ; preds = %347
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  br label %359

350:                                              ; preds = %345, %343
  %351 = landingpad { ptr, i32 }
          cleanup
  %352 = extractvalue { ptr, i32 } %351, 0
  store ptr %352, ptr %10, align 8
  %353 = extractvalue { ptr, i32 } %351, 1
  store i32 %353, ptr %11, align 4
  br label %358

354:                                              ; preds = %347
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %10, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  br label %358

358:                                              ; preds = %354, %350
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  br label %617

359:                                              ; preds = %349, %340
  br label %360

360:                                              ; preds = %359, %337
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  br label %361

361:                                              ; preds = %360, %301, %297
  %362 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %363 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %362) #10
  %364 = icmp eq i64 %363, 0
  br i1 %364, label %365, label %422

365:                                              ; preds = %361
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #10
  %366 = load i32, ptr %8, align 4, !tbaa !45
  invoke void @_ZN8SparseVNC2Ejb(ptr noundef nonnull align 4 dereferenceable(5) %21, i32 noundef %366, i1 noundef zeroext false)
          to label %367 unwind label %379

367:                                              ; preds = %365
  %368 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  invoke void @_ZNSt6vectorI8SparseVNSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %368, ptr noundef nonnull align 4 dereferenceable(5) %21)
          to label %369 unwind label %379

369:                                              ; preds = %367
  %370 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 19
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #10
  store i32 0, ptr %22, align 4, !tbaa !45
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %370, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %371 unwind label %383

371:                                              ; preds = %369
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #10
  store i32 0, ptr %23, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #10
  %372 = load i32, ptr %6, align 4, !tbaa !45
  store i32 %372, ptr %24, align 4, !tbaa !45
  br label %373

373:                                              ; preds = %407, %371
  %374 = load i32, ptr %24, align 4, !tbaa !45
  %375 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 8
  %376 = load i32, ptr %375, align 8, !tbaa !48
  %377 = icmp ult i32 %374, %376
  br i1 %377, label %387, label %378

378:                                              ; preds = %373
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  br label %410

379:                                              ; preds = %367, %365
  %380 = landingpad { ptr, i32 }
          cleanup
  %381 = extractvalue { ptr, i32 } %380, 0
  store ptr %381, ptr %10, align 8
  %382 = extractvalue { ptr, i32 } %380, 1
  store i32 %382, ptr %11, align 4
  br label %421

383:                                              ; preds = %369
  %384 = landingpad { ptr, i32 }
          cleanup
  %385 = extractvalue { ptr, i32 } %384, 0
  store ptr %385, ptr %10, align 8
  %386 = extractvalue { ptr, i32 } %384, 1
  store i32 %386, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  br label %421

387:                                              ; preds = %373
  %388 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 33
  %389 = load ptr, ptr %388, align 8, !tbaa !49
  %390 = load i32, ptr %5, align 4, !tbaa !45
  %391 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 11
  %392 = load i32, ptr %391, align 4, !tbaa !50
  %393 = mul i32 %390, %392
  %394 = load i32, ptr %24, align 4, !tbaa !45
  %395 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 10
  %396 = load i32, ptr %395, align 8, !tbaa !51
  %397 = mul i32 %394, %396
  %398 = add i32 %393, %397
  %399 = zext i32 %398 to i64
  %400 = getelementptr inbounds i32, ptr %389, i64 %399
  %401 = load i32, ptr %400, align 4, !tbaa !45
  %402 = icmp ne i32 %401, 0
  br i1 %402, label %403, label %406

403:                                              ; preds = %387
  %404 = load i32, ptr %23, align 4, !tbaa !45
  %405 = add nsw i32 %404, 1
  store i32 %405, ptr %23, align 4, !tbaa !45
  br label %406

406:                                              ; preds = %403, %387
  br label %407

407:                                              ; preds = %406
  %408 = load i32, ptr %24, align 4, !tbaa !45
  %409 = add nsw i32 %408, 1
  store i32 %409, ptr %24, align 4, !tbaa !45
  br label %373, !llvm.loop !60

410:                                              ; preds = %378
  %411 = load i32, ptr %23, align 4, !tbaa !45
  %412 = icmp sgt i32 %411, 0
  br i1 %412, label %413, label %416

413:                                              ; preds = %410
  %414 = load i32, ptr %6, align 4, !tbaa !45
  %415 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 42
  store i32 %414, ptr %415, align 8, !tbaa !56
  br label %420

416:                                              ; preds = %410
  %417 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 8
  %418 = load i32, ptr %417, align 8, !tbaa !48
  %419 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 42
  store i32 %418, ptr %419, align 8, !tbaa !56
  br label %420

420:                                              ; preds = %416, %413
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  br label %426

421:                                              ; preds = %383, %379
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  br label %617

422:                                              ; preds = %361
  %423 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 8
  %424 = load i32, ptr %423, align 8, !tbaa !48
  %425 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 42
  store i32 %424, ptr %425, align 8, !tbaa !56
  br label %426

426:                                              ; preds = %422, %420
  br label %427

427:                                              ; preds = %426, %209
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #10
  store i32 0, ptr %25, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #10
  store i32 0, ptr %26, align 4, !tbaa !45
  br label %428

428:                                              ; preds = %479, %427
  %429 = load i32, ptr %26, align 4, !tbaa !45
  %430 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 9
  %431 = load i32, ptr %430, align 4, !tbaa !61
  %432 = icmp ult i32 %429, %431
  br i1 %432, label %434, label %433

433:                                              ; preds = %428
  store i32 15, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  br label %482

434:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #10
  store i32 0, ptr %28, align 4, !tbaa !45
  br label %435

435:                                              ; preds = %475, %434
  %436 = load i32, ptr %28, align 4, !tbaa !45
  %437 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 8
  %438 = load i32, ptr %437, align 8, !tbaa !48
  %439 = icmp ult i32 %436, %438
  br i1 %439, label %441, label %440

440:                                              ; preds = %435
  store i32 18, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #10
  br label %478

441:                                              ; preds = %435
  %442 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 34
  %443 = load ptr, ptr %442, align 8, !tbaa !62
  %444 = load i32, ptr %26, align 4, !tbaa !45
  %445 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 13
  %446 = load i32, ptr %445, align 4, !tbaa !63
  %447 = mul i32 %444, %446
  %448 = load i32, ptr %28, align 4, !tbaa !45
  %449 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 12
  %450 = load i32, ptr %449, align 8, !tbaa !64
  %451 = mul i32 %448, %450
  %452 = add i32 %447, %451
  %453 = zext i32 %452 to i64
  %454 = getelementptr inbounds i32, ptr %443, i64 %453
  %455 = load i32, ptr %454, align 4, !tbaa !45
  %456 = icmp ne i32 %455, 0
  br i1 %456, label %457, label %474

457:                                              ; preds = %441
  %458 = load i32, ptr %25, align 4, !tbaa !45
  %459 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 37
  %460 = load ptr, ptr %459, align 8, !tbaa !65
  %461 = load i32, ptr %26, align 4, !tbaa !45
  %462 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 13
  %463 = load i32, ptr %462, align 4, !tbaa !63
  %464 = mul i32 %461, %463
  %465 = load i32, ptr %28, align 4, !tbaa !45
  %466 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 12
  %467 = load i32, ptr %466, align 8, !tbaa !64
  %468 = mul i32 %465, %467
  %469 = add i32 %464, %468
  %470 = zext i32 %469 to i64
  %471 = getelementptr inbounds i32, ptr %460, i64 %470
  store i32 %458, ptr %471, align 4, !tbaa !45
  %472 = load i32, ptr %25, align 4, !tbaa !45
  %473 = add i32 %472, 1
  store i32 %473, ptr %25, align 4, !tbaa !45
  br label %474

474:                                              ; preds = %457, %441
  br label %475

475:                                              ; preds = %474
  %476 = load i32, ptr %28, align 4, !tbaa !45
  %477 = add nsw i32 %476, 1
  store i32 %477, ptr %28, align 4, !tbaa !45
  br label %435, !llvm.loop !66

478:                                              ; preds = %440
  br label %479

479:                                              ; preds = %478
  %480 = load i32, ptr %26, align 4, !tbaa !45
  %481 = add nsw i32 %480, 1
  store i32 %481, ptr %26, align 4, !tbaa !45
  br label %428, !llvm.loop !67

482:                                              ; preds = %433
  %483 = load i32, ptr %25, align 4, !tbaa !45
  %484 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 56
  store i32 %483, ptr %484, align 8, !tbaa !68
  %485 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %486 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %485) #10
  %487 = icmp eq i64 %486, 0
  br i1 %487, label %488, label %501

488:                                              ; preds = %482
  %489 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.12)
          to label %490 unwind label %497

490:                                              ; preds = %488
  %491 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 39
  %492 = load i32, ptr %491, align 4, !tbaa !44
  %493 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %489, i32 noundef %492)
          to label %494 unwind label %497

494:                                              ; preds = %490
  %495 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %493, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %496 unwind label %497

496:                                              ; preds = %494
  call void @__assert_fail(ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 347, ptr noundef @__PRETTY_FUNCTION__._ZN14SparseSDMemory5cycleEv) #9
  unreachable

497:                                              ; preds = %597, %595, %583, %577, %565, %559, %557, %551, %494, %490, %488
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %10, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %11, align 4
  br label %616

501:                                              ; preds = %482
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #10
  store i32 0, ptr %29, align 4, !tbaa !45
  br label %502

502:                                              ; preds = %522, %501
  %503 = load i32, ptr %29, align 4, !tbaa !45
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %506 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %505) #10
  %507 = icmp ult i64 %504, %506
  br i1 %507, label %509, label %508

508:                                              ; preds = %502
  store i32 21, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #10
  br label %529

509:                                              ; preds = %502
  %510 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.13)
          to label %511 unwind label %525

511:                                              ; preds = %509
  %512 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %513 = load i32, ptr %29, align 4, !tbaa !45
  %514 = sext i32 %513 to i64
  %515 = call noundef nonnull align 4 dereferenceable(5) ptr @_ZNSt6vectorI8SparseVNSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %512, i64 noundef %514) #10
  %516 = invoke noundef i32 @_ZN8SparseVN11get_VN_SizeEv(ptr noundef nonnull align 4 dereferenceable(5) %515)
          to label %517 unwind label %525

517:                                              ; preds = %511
  %518 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %510, i32 noundef %516)
          to label %519 unwind label %525

519:                                              ; preds = %517
  %520 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %518, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %521 unwind label %525

521:                                              ; preds = %519
  br label %522

522:                                              ; preds = %521
  %523 = load i32, ptr %29, align 4, !tbaa !45
  %524 = add nsw i32 %523, 1
  store i32 %524, ptr %29, align 4, !tbaa !45
  br label %502, !llvm.loop !69

525:                                              ; preds = %519, %517, %511, %509
  %526 = landingpad { ptr, i32 }
          cleanup
  %527 = extractvalue { ptr, i32 } %526, 0
  store ptr %527, ptr %10, align 8
  %528 = extractvalue { ptr, i32 } %526, 1
  store i32 %528, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #10
  br label %616

529:                                              ; preds = %508
  %530 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %531 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %530) #10
  %532 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 59
  %533 = getelementptr inbounds %class.SDMemoryStats, ptr %532, i32 0, i32 8
  %534 = load i32, ptr %533, align 4, !tbaa !70
  %535 = zext i32 %534 to i64
  %536 = add i64 %535, %531
  %537 = trunc i64 %536 to i32
  store i32 %537, ptr %533, align 4, !tbaa !70
  %538 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %539 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %538) #10
  %540 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 59
  %541 = getelementptr inbounds %class.SDMemoryStats, ptr %540, i32 0, i32 9
  %542 = load i32, ptr %541, align 8, !tbaa !71
  %543 = zext i32 %542 to i64
  %544 = icmp ugt i64 %539, %543
  br i1 %544, label %545, label %551

545:                                              ; preds = %529
  %546 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %547 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %546) #10
  %548 = trunc i64 %547 to i32
  %549 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 59
  %550 = getelementptr inbounds %class.SDMemoryStats, ptr %549, i32 0, i32 9
  store i32 %548, ptr %550, align 8, !tbaa !71
  br label %551

551:                                              ; preds = %545, %529
  %552 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 59
  %553 = getelementptr inbounds %class.SDMemoryStats, ptr %552, i32 0, i32 10
  %554 = load i32, ptr %553, align 4, !tbaa !72
  %555 = add i32 %554, 1
  store i32 %555, ptr %553, align 4, !tbaa !72
  %556 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.14)
          to label %557 unwind label %497

557:                                              ; preds = %551
  %558 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %556, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %559 unwind label %497

559:                                              ; preds = %557
  %560 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 3
  %561 = load ptr, ptr %560, align 8, !tbaa !73
  %562 = load ptr, ptr %561, align 8, !tbaa !74
  %563 = getelementptr inbounds ptr, ptr %562, i64 8
  %564 = load ptr, ptr %563, align 8
  invoke void %564(ptr noundef nonnull align 8 dereferenceable(48) %561)
          to label %565 unwind label %497

565:                                              ; preds = %559
  %566 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 3
  %567 = load ptr, ptr %566, align 8, !tbaa !73
  %568 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  invoke void @_ZNSt6vectorI8SparseVNSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef nonnull align 8 dereferenceable(24) %568)
          to label %569 unwind label %497

569:                                              ; preds = %565
  %570 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 1
  %571 = load ptr, ptr %570, align 8, !tbaa !76
  %572 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 21
  %573 = load i32, ptr %572, align 8, !tbaa !47
  %574 = load ptr, ptr %567, align 8, !tbaa !74
  %575 = getelementptr inbounds ptr, ptr %574, i64 7
  %576 = load ptr, ptr %575, align 8
  invoke void %576(ptr noundef nonnull align 8 dereferenceable(48) %567, ptr noundef %30, ptr noundef %571, i32 noundef %573)
          to label %577 unwind label %608

577:                                              ; preds = %569
  call void @_ZNSt6vectorI8SparseVNSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #10
  %578 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 2
  %579 = load ptr, ptr %578, align 8, !tbaa !77
  %580 = load ptr, ptr %579, align 8, !tbaa !74
  %581 = getelementptr inbounds ptr, ptr %580, i64 9
  %582 = load ptr, ptr %581, align 8
  invoke void %582(ptr noundef nonnull align 8 dereferenceable(48) %579)
          to label %583 unwind label %497

583:                                              ; preds = %577
  %584 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 2
  %585 = load ptr, ptr %584, align 8, !tbaa !77
  %586 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  invoke void @_ZNSt6vectorI8SparseVNSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 8 dereferenceable(24) %586)
          to label %587 unwind label %497

587:                                              ; preds = %583
  %588 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 1
  %589 = load ptr, ptr %588, align 8, !tbaa !76
  %590 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 21
  %591 = load i32, ptr %590, align 8, !tbaa !47
  %592 = load ptr, ptr %585, align 8, !tbaa !74
  %593 = getelementptr inbounds ptr, ptr %592, i64 8
  %594 = load ptr, ptr %593, align 8
  invoke void %594(ptr noundef nonnull align 8 dereferenceable(48) %585, ptr noundef %31, ptr noundef %589, i32 noundef %591)
          to label %595 unwind label %612

595:                                              ; preds = %587
  call void @_ZNSt6vectorI8SparseVNSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #10
  %596 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.15)
          to label %597 unwind label %497

597:                                              ; preds = %595
  %598 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %596, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %599 unwind label %497

599:                                              ; preds = %597
  %600 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %601 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %600) #10
  %602 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 9
  %603 = load i32, ptr %602, align 4, !tbaa !61
  %604 = zext i32 %603 to i64
  %605 = mul i64 %601, %604
  %606 = trunc i64 %605 to i32
  %607 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 54
  store i32 %606, ptr %607, align 8, !tbaa !78
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #10
  br label %946

608:                                              ; preds = %569
  %609 = landingpad { ptr, i32 }
          cleanup
  %610 = extractvalue { ptr, i32 } %609, 0
  store ptr %610, ptr %10, align 8
  %611 = extractvalue { ptr, i32 } %609, 1
  store i32 %611, ptr %11, align 4
  call void @_ZNSt6vectorI8SparseVNSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #10
  br label %616

612:                                              ; preds = %587
  %613 = landingpad { ptr, i32 }
          cleanup
  %614 = extractvalue { ptr, i32 } %613, 0
  store ptr %614, ptr %10, align 8
  %615 = extractvalue { ptr, i32 } %613, 1
  store i32 %615, ptr %11, align 4
  call void @_ZNSt6vectorI8SparseVNSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #10
  br label %616

616:                                              ; preds = %612, %608, %525, %497
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  br label %617

617:                                              ; preds = %616, %421, %358, %294, %210
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #10
  br label %1238

618:                                              ; preds = %80
  %619 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 17
  %620 = load i32, ptr %619, align 8, !tbaa !43
  %621 = icmp eq i32 %620, 1
  br i1 %621, label %622, label %700

622:                                              ; preds = %618
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #10
  store i32 0, ptr %32, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #10
  store i32 0, ptr %33, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #10
  store i32 0, ptr %34, align 4, !tbaa !45
  br label %623

623:                                              ; preds = %695, %622
  %624 = load i32, ptr %34, align 4, !tbaa !45
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %627 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %626) #10
  %628 = icmp ult i64 %625, %627
  br i1 %628, label %630, label %629

629:                                              ; preds = %623
  store i32 24, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  br label %699

630:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #10
  store i32 0, ptr %35, align 4, !tbaa !45
  %631 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %632 = load i32, ptr %34, align 4, !tbaa !45
  %633 = sext i32 %632 to i64
  %634 = call noundef nonnull align 4 dereferenceable(5) ptr @_ZNSt6vectorI8SparseVNSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %631, i64 noundef %633) #10
  %635 = invoke noundef zeroext i1 @_ZN8SparseVN10getFoldingEv(ptr noundef nonnull align 4 dereferenceable(5) %634)
          to label %636 unwind label %640

636:                                              ; preds = %630
  br i1 %635, label %637, label %644

637:                                              ; preds = %636
  store i32 1, ptr %35, align 4, !tbaa !45
  %638 = load i32, ptr %32, align 4, !tbaa !45
  %639 = add i32 %638, 1
  store i32 %639, ptr %32, align 4, !tbaa !45
  br label %644

640:                                              ; preds = %645, %630
  %641 = landingpad { ptr, i32 }
          cleanup
  %642 = extractvalue { ptr, i32 } %641, 0
  store ptr %642, ptr %10, align 8
  %643 = extractvalue { ptr, i32 } %641, 1
  store i32 %643, ptr %11, align 4
  br label %698

644:                                              ; preds = %637, %636
  br label %645

645:                                              ; preds = %682, %644
  %646 = load i32, ptr %35, align 4, !tbaa !45
  %647 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %648 = load i32, ptr %34, align 4, !tbaa !45
  %649 = sext i32 %648 to i64
  %650 = call noundef nonnull align 4 dereferenceable(5) ptr @_ZNSt6vectorI8SparseVNSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %647, i64 noundef %649) #10
  %651 = invoke noundef i32 @_ZN8SparseVN11get_VN_SizeEv(ptr noundef nonnull align 4 dereferenceable(5) %650)
          to label %652 unwind label %640

652:                                              ; preds = %645
  %653 = icmp ult i32 %646, %651
  br i1 %653, label %654, label %694

654:                                              ; preds = %652
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #10
  %655 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 30
  %656 = load ptr, ptr %655, align 8, !tbaa !79
  %657 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 40
  %658 = load i32, ptr %657, align 8, !tbaa !80
  %659 = load i32, ptr %33, align 4, !tbaa !45
  %660 = add i32 %658, %659
  %661 = zext i32 %660 to i64
  %662 = getelementptr inbounds float, ptr %656, i64 %661
  %663 = load float, ptr %662, align 4, !tbaa !81
  store float %663, ptr %36, align 4, !tbaa !81
  %664 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 59
  %665 = getelementptr inbounds %class.SDMemoryStats, ptr %664, i32 0, i32 2
  %666 = load i32, ptr %665, align 4, !tbaa !83
  %667 = add i32 %666, 1
  store i32 %667, ptr %665, align 4, !tbaa !83
  %668 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 55
  %669 = load i32, ptr %668, align 4, !tbaa !84
  %670 = add i32 %669, 1
  store i32 %670, ptr %668, align 4, !tbaa !84
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #10
  %671 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #11
          to label %672 unwind label %685

672:                                              ; preds = %654
  %673 = load float, ptr %36, align 4, !tbaa !81
  %674 = load i32, ptr %32, align 4, !tbaa !45
  invoke void @_ZN11DataPackageC1Emf9operand_tj9traffic_tj(ptr noundef nonnull align 8 dereferenceable(64) %671, i64 noundef 4, float noundef %673, i32 noundef 0, i32 noundef 0, i32 noundef 2, i32 noundef %674)
          to label %675 unwind label %689

675:                                              ; preds = %672
  store ptr %671, ptr %37, align 8, !tbaa !5
  %676 = load ptr, ptr %37, align 8, !tbaa !5
  invoke void @_ZN14SparseSDMemory23sendPackageToInputFifosEP11DataPackage(ptr noundef nonnull align 8 dereferenceable(592) %66, ptr noundef %676)
          to label %677 unwind label %685

677:                                              ; preds = %675
  %678 = load i32, ptr %32, align 4, !tbaa !45
  %679 = add i32 %678, 1
  store i32 %679, ptr %32, align 4, !tbaa !45
  %680 = load i32, ptr %33, align 4, !tbaa !45
  %681 = add i32 %680, 1
  store i32 %681, ptr %33, align 4, !tbaa !45
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  br label %682

682:                                              ; preds = %677
  %683 = load i32, ptr %35, align 4, !tbaa !45
  %684 = add nsw i32 %683, 1
  store i32 %684, ptr %35, align 4, !tbaa !45
  br label %645, !llvm.loop !85

685:                                              ; preds = %675, %654
  %686 = landingpad { ptr, i32 }
          cleanup
  %687 = extractvalue { ptr, i32 } %686, 0
  store ptr %687, ptr %10, align 8
  %688 = extractvalue { ptr, i32 } %686, 1
  store i32 %688, ptr %11, align 4
  br label %693

689:                                              ; preds = %672
  %690 = landingpad { ptr, i32 }
          cleanup
  %691 = extractvalue { ptr, i32 } %690, 0
  store ptr %691, ptr %10, align 8
  %692 = extractvalue { ptr, i32 } %690, 1
  store i32 %692, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %671, i64 noundef 64) #12
  br label %693

693:                                              ; preds = %689, %685
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  br label %698

694:                                              ; preds = %652
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #10
  br label %695

695:                                              ; preds = %694
  %696 = load i32, ptr %34, align 4, !tbaa !45
  %697 = add nsw i32 %696, 1
  store i32 %697, ptr %34, align 4, !tbaa !45
  br label %623, !llvm.loop !86

698:                                              ; preds = %693, %640
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  br label %1238

699:                                              ; preds = %629
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  br label %945

700:                                              ; preds = %618
  %701 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 17
  %702 = load i32, ptr %701, align 8, !tbaa !43
  %703 = icmp eq i32 %702, 2
  br i1 %703, label %704, label %944

704:                                              ; preds = %700
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #10
  %705 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 41
  %706 = load i32, ptr %705, align 4, !tbaa !46
  store i32 %706, ptr %38, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #10
  %707 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 42
  %708 = load i32, ptr %707, align 8, !tbaa !56
  store i32 %708, ptr %39, align 4, !tbaa !45
  %709 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 41
  %710 = load i32, ptr %709, align 4, !tbaa !46
  %711 = icmp ugt i32 %710, 0
  br i1 %711, label %712, label %786

712:                                              ; preds = %704
  %713 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %714 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %713) #10
  %715 = icmp eq i64 %714, 1
  br i1 %715, label %716, label %717

716:                                              ; preds = %712
  br label %719

717:                                              ; preds = %712
  call void @__assert_fail(ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 399, ptr noundef @__PRETTY_FUNCTION__._ZN14SparseSDMemory5cycleEv) #9
  unreachable

718:                                              ; No predecessors!
  br label %719

719:                                              ; preds = %718, %716
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #10
  %720 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 39
  %721 = load i32, ptr %720, align 4, !tbaa !44
  %722 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 14
  %723 = load i32, ptr %722, align 8, !tbaa !87
  %724 = mul i32 %721, %723
  %725 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 38
  %726 = load i32, ptr %725, align 8, !tbaa !88
  %727 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 15
  %728 = load i32, ptr %727, align 4, !tbaa !89
  %729 = mul i32 %726, %728
  %730 = add i32 %724, %729
  store i32 %730, ptr %40, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #10
  %731 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 21
  %732 = load i32, ptr %731, align 8, !tbaa !47
  %733 = zext i32 %732 to i64
  %734 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %733) #11
          to label %735 unwind label %742

735:                                              ; preds = %719
  store ptr %734, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #10
  store i32 0, ptr %42, align 4, !tbaa !45
  br label %736

736:                                              ; preds = %751, %735
  %737 = load i32, ptr %42, align 4, !tbaa !45
  %738 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 21
  %739 = load i32, ptr %738, align 8, !tbaa !47
  %740 = icmp ult i32 %737, %739
  br i1 %740, label %746, label %741

741:                                              ; preds = %736
  store i32 30, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #10
  br label %754

742:                                              ; preds = %719
  %743 = landingpad { ptr, i32 }
          cleanup
  %744 = extractvalue { ptr, i32 } %743, 0
  store ptr %744, ptr %10, align 8
  %745 = extractvalue { ptr, i32 } %743, 1
  store i32 %745, ptr %11, align 4
  br label %785

746:                                              ; preds = %736
  %747 = load ptr, ptr %41, align 8, !tbaa !5
  %748 = load i32, ptr %42, align 4, !tbaa !45
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds i8, ptr %747, i64 %749
  store i8 0, ptr %750, align 1, !tbaa !90
  br label %751

751:                                              ; preds = %746
  %752 = load i32, ptr %42, align 4, !tbaa !45
  %753 = add nsw i32 %752, 1
  store i32 %753, ptr %42, align 4, !tbaa !45
  br label %736, !llvm.loop !91

754:                                              ; preds = %741
  %755 = load ptr, ptr %41, align 8, !tbaa !5
  %756 = getelementptr inbounds i8, ptr %755, i64 0
  store i8 1, ptr %756, align 1, !tbaa !90
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #10
  %757 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 32
  %758 = load ptr, ptr %757, align 8, !tbaa !92
  %759 = load i32, ptr %40, align 4, !tbaa !45
  %760 = zext i32 %759 to i64
  %761 = getelementptr inbounds float, ptr %758, i64 %760
  %762 = load float, ptr %761, align 4, !tbaa !81
  store float %762, ptr %43, align 4, !tbaa !81
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  %763 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #11
          to label %764 unwind label %776

764:                                              ; preds = %754
  %765 = load float, ptr %43, align 4, !tbaa !81
  %766 = load ptr, ptr %41, align 8, !tbaa !5
  %767 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 21
  %768 = load i32, ptr %767, align 8, !tbaa !47
  invoke void @_ZN11DataPackageC1Emf9operand_tj9traffic_tPbj(ptr noundef nonnull align 8 dereferenceable(64) %763, i64 noundef 4, float noundef %765, i32 noundef 3, i32 noundef 0, i32 noundef 1, ptr noundef %766, i32 noundef %768)
          to label %769 unwind label %780

769:                                              ; preds = %764
  store ptr %763, ptr %44, align 8, !tbaa !5
  %770 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 59
  %771 = getelementptr inbounds %class.SDMemoryStats, ptr %770, i32 0, i32 4
  %772 = load i32, ptr %771, align 4, !tbaa !93
  %773 = add i32 %772, 1
  store i32 %773, ptr %771, align 4, !tbaa !93
  %774 = load ptr, ptr %44, align 8, !tbaa !5
  invoke void @_ZN14SparseSDMemory23sendPackageToInputFifosEP11DataPackage(ptr noundef nonnull align 8 dereferenceable(592) %66, ptr noundef %774)
          to label %775 unwind label %776

775:                                              ; preds = %769
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  br label %786

776:                                              ; preds = %769, %754
  %777 = landingpad { ptr, i32 }
          cleanup
  %778 = extractvalue { ptr, i32 } %777, 0
  store ptr %778, ptr %10, align 8
  %779 = extractvalue { ptr, i32 } %777, 1
  store i32 %779, ptr %11, align 4
  br label %784

780:                                              ; preds = %764
  %781 = landingpad { ptr, i32 }
          cleanup
  %782 = extractvalue { ptr, i32 } %781, 0
  store ptr %782, ptr %10, align 8
  %783 = extractvalue { ptr, i32 } %781, 1
  store i32 %783, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %763, i64 noundef 64) #12
  br label %784

784:                                              ; preds = %780, %776
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  br label %785

785:                                              ; preds = %784, %742
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  br label %943

786:                                              ; preds = %775, %704
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #10
  %787 = load i32, ptr %38, align 4, !tbaa !45
  store i32 %787, ptr %45, align 4, !tbaa !45
  br label %788

788:                                              ; preds = %926, %786
  %789 = load i32, ptr %45, align 4, !tbaa !45
  %790 = load i32, ptr %39, align 4, !tbaa !45
  %791 = icmp slt i32 %789, %790
  br i1 %791, label %793, label %792

792:                                              ; preds = %788
  store i32 33, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #10
  br label %939

793:                                              ; preds = %788
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #10
  %794 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 21
  %795 = load i32, ptr %794, align 8, !tbaa !47
  %796 = zext i32 %795 to i64
  %797 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %796) #11
          to label %798 unwind label %805

798:                                              ; preds = %793
  store ptr %797, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #10
  store i32 0, ptr %47, align 4, !tbaa !45
  br label %799

799:                                              ; preds = %814, %798
  %800 = load i32, ptr %47, align 4, !tbaa !45
  %801 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 21
  %802 = load i32, ptr %801, align 8, !tbaa !47
  %803 = icmp ult i32 %800, %802
  br i1 %803, label %809, label %804

804:                                              ; preds = %799
  store i32 36, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #10
  br label %817

805:                                              ; preds = %793
  %806 = landingpad { ptr, i32 }
          cleanup
  %807 = extractvalue { ptr, i32 } %806, 0
  store ptr %807, ptr %10, align 8
  %808 = extractvalue { ptr, i32 } %806, 1
  store i32 %808, ptr %11, align 4
  br label %938

809:                                              ; preds = %799
  %810 = load ptr, ptr %46, align 8, !tbaa !5
  %811 = load i32, ptr %47, align 4, !tbaa !45
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds i8, ptr %810, i64 %812
  store i8 0, ptr %813, align 1, !tbaa !90
  br label %814

814:                                              ; preds = %809
  %815 = load i32, ptr %47, align 4, !tbaa !45
  %816 = add nsw i32 %815, 1
  store i32 %816, ptr %47, align 4, !tbaa !45
  br label %799, !llvm.loop !94

817:                                              ; preds = %804
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #10
  %818 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 39
  %819 = load i32, ptr %818, align 4, !tbaa !44
  store i32 %819, ptr %48, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #10
  %820 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 39
  %821 = load i32, ptr %820, align 4, !tbaa !44
  %822 = zext i32 %821 to i64
  %823 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %824 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %823) #10
  %825 = add i64 %822, %824
  %826 = trunc i64 %825 to i32
  store i32 %826, ptr %49, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #10
  %827 = load i32, ptr %48, align 4, !tbaa !45
  store i32 %827, ptr %50, align 4, !tbaa !45
  br label %828

828:                                              ; preds = %869, %817
  %829 = load i32, ptr %50, align 4, !tbaa !45
  %830 = load i32, ptr %49, align 4, !tbaa !45
  %831 = icmp ult i32 %829, %830
  br i1 %831, label %833, label %832

832:                                              ; preds = %828
  store i32 39, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #10
  br label %872

833:                                              ; preds = %828
  %834 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 33
  %835 = load ptr, ptr %834, align 8, !tbaa !49
  %836 = load i32, ptr %50, align 4, !tbaa !45
  %837 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 11
  %838 = load i32, ptr %837, align 4, !tbaa !50
  %839 = mul i32 %836, %838
  %840 = load i32, ptr %45, align 4, !tbaa !45
  %841 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 10
  %842 = load i32, ptr %841, align 8, !tbaa !51
  %843 = mul i32 %840, %842
  %844 = add i32 %839, %843
  %845 = zext i32 %844 to i64
  %846 = getelementptr inbounds i32, ptr %835, i64 %845
  %847 = load i32, ptr %846, align 4, !tbaa !45
  %848 = icmp ne i32 %847, 0
  br i1 %848, label %849, label %868

849:                                              ; preds = %833
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #10
  %850 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 36
  %851 = load ptr, ptr %850, align 8, !tbaa !52
  %852 = load i32, ptr %50, align 4, !tbaa !45
  %853 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 11
  %854 = load i32, ptr %853, align 4, !tbaa !50
  %855 = mul i32 %852, %854
  %856 = load i32, ptr %45, align 4, !tbaa !45
  %857 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 10
  %858 = load i32, ptr %857, align 8, !tbaa !51
  %859 = mul i32 %856, %858
  %860 = add i32 %855, %859
  %861 = zext i32 %860 to i64
  %862 = getelementptr inbounds i32, ptr %851, i64 %861
  %863 = load i32, ptr %862, align 4, !tbaa !45
  store i32 %863, ptr %51, align 4, !tbaa !45
  %864 = load ptr, ptr %46, align 8, !tbaa !5
  %865 = load i32, ptr %51, align 4, !tbaa !45
  %866 = zext i32 %865 to i64
  %867 = getelementptr inbounds i8, ptr %864, i64 %866
  store i8 1, ptr %867, align 1, !tbaa !90
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  br label %868

868:                                              ; preds = %849, %833
  br label %869

869:                                              ; preds = %868
  %870 = load i32, ptr %50, align 4, !tbaa !45
  %871 = add nsw i32 %870, 1
  store i32 %871, ptr %50, align 4, !tbaa !45
  br label %828, !llvm.loop !95

872:                                              ; preds = %832
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #10
  %873 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 34
  %874 = load ptr, ptr %873, align 8, !tbaa !62
  %875 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 38
  %876 = load i32, ptr %875, align 8, !tbaa !88
  %877 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 13
  %878 = load i32, ptr %877, align 4, !tbaa !63
  %879 = mul i32 %876, %878
  %880 = load i32, ptr %45, align 4, !tbaa !45
  %881 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 12
  %882 = load i32, ptr %881, align 8, !tbaa !64
  %883 = mul i32 %880, %882
  %884 = add i32 %879, %883
  %885 = zext i32 %884 to i64
  %886 = getelementptr inbounds i32, ptr %874, i64 %885
  %887 = load i32, ptr %886, align 4, !tbaa !45
  %888 = icmp ne i32 %887, 0
  br i1 %888, label %889, label %915

889:                                              ; preds = %872
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #10
  %890 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 37
  %891 = load ptr, ptr %890, align 8, !tbaa !65
  %892 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 38
  %893 = load i32, ptr %892, align 8, !tbaa !88
  %894 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 13
  %895 = load i32, ptr %894, align 4, !tbaa !63
  %896 = mul i32 %893, %895
  %897 = load i32, ptr %45, align 4, !tbaa !45
  %898 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 12
  %899 = load i32, ptr %898, align 8, !tbaa !64
  %900 = mul i32 %897, %899
  %901 = add i32 %896, %900
  %902 = zext i32 %901 to i64
  %903 = getelementptr inbounds i32, ptr %891, i64 %902
  %904 = load i32, ptr %903, align 4, !tbaa !45
  store i32 %904, ptr %53, align 4, !tbaa !45
  %905 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 31
  %906 = load ptr, ptr %905, align 8, !tbaa !96
  %907 = load i32, ptr %53, align 4, !tbaa !45
  %908 = zext i32 %907 to i64
  %909 = getelementptr inbounds float, ptr %906, i64 %908
  %910 = load float, ptr %909, align 4, !tbaa !81
  store float %910, ptr %52, align 4, !tbaa !81
  %911 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 59
  %912 = getelementptr inbounds %class.SDMemoryStats, ptr %911, i32 0, i32 3
  %913 = load i32, ptr %912, align 8, !tbaa !97
  %914 = add i32 %913, 1
  store i32 %914, ptr %912, align 8, !tbaa !97
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #10
  br label %916

915:                                              ; preds = %872
  store float 0.000000e+00, ptr %52, align 4, !tbaa !81
  br label %916

916:                                              ; preds = %915, %889
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #10
  %917 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #11
          to label %918 unwind label %929

918:                                              ; preds = %916
  %919 = load float, ptr %52, align 4, !tbaa !81
  %920 = load ptr, ptr %46, align 8, !tbaa !5
  %921 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 21
  %922 = load i32, ptr %921, align 8, !tbaa !47
  invoke void @_ZN11DataPackageC1Emf9operand_tj9traffic_tPbj(ptr noundef nonnull align 8 dereferenceable(64) %917, i64 noundef 4, float noundef %919, i32 noundef 1, i32 noundef 0, i32 noundef 1, ptr noundef %920, i32 noundef %922)
          to label %923 unwind label %933

923:                                              ; preds = %918
  store ptr %917, ptr %54, align 8, !tbaa !5
  %924 = load ptr, ptr %54, align 8, !tbaa !5
  invoke void @_ZN14SparseSDMemory23sendPackageToInputFifosEP11DataPackage(ptr noundef nonnull align 8 dereferenceable(592) %66, ptr noundef %924)
          to label %925 unwind label %929

925:                                              ; preds = %923
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  br label %926

926:                                              ; preds = %925
  %927 = load i32, ptr %45, align 4, !tbaa !45
  %928 = add nsw i32 %927, 1
  store i32 %928, ptr %45, align 4, !tbaa !45
  br label %788, !llvm.loop !98

929:                                              ; preds = %923, %916
  %930 = landingpad { ptr, i32 }
          cleanup
  %931 = extractvalue { ptr, i32 } %930, 0
  store ptr %931, ptr %10, align 8
  %932 = extractvalue { ptr, i32 } %930, 1
  store i32 %932, ptr %11, align 4
  br label %937

933:                                              ; preds = %918
  %934 = landingpad { ptr, i32 }
          cleanup
  %935 = extractvalue { ptr, i32 } %934, 0
  store ptr %935, ptr %10, align 8
  %936 = extractvalue { ptr, i32 } %934, 1
  store i32 %936, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %917, i64 noundef 64) #12
  br label %937

937:                                              ; preds = %933, %929
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  br label %938

938:                                              ; preds = %937, %805
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #10
  br label %943

939:                                              ; preds = %792
  %940 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 38
  %941 = load i32, ptr %940, align 8, !tbaa !88
  %942 = add i32 %941, 1
  store i32 %942, ptr %940, align 8, !tbaa !88
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #10
  br label %944

943:                                              ; preds = %938, %785
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #10
  br label %1238

944:                                              ; preds = %939, %700
  br label %945

945:                                              ; preds = %944, %699
  br label %946

946:                                              ; preds = %945, %599
  invoke void @_ZN14SparseSDMemory7receiveEv(ptr noundef nonnull align 8 dereferenceable(592) %66)
          to label %947 unwind label %961

947:                                              ; preds = %946
  %948 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 27
  %949 = load ptr, ptr %948, align 8, !tbaa !99
  %950 = invoke noundef zeroext i1 @_ZN4Fifo7isEmptyEv(ptr noundef nonnull align 8 dereferenceable(120) %949)
          to label %951 unwind label %961

951:                                              ; preds = %947
  br i1 %950, label %1050, label %952

952:                                              ; preds = %951
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #10
  store i32 0, ptr %55, align 4, !tbaa !45
  br label %953

953:                                              ; preds = %1043, %952
  %954 = load i32, ptr %55, align 4, !tbaa !45
  %955 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 27
  %956 = load ptr, ptr %955, align 8, !tbaa !99
  %957 = invoke noundef i32 @_ZN4Fifo4sizeEv(ptr noundef nonnull align 8 dereferenceable(120) %956)
          to label %958 unwind label %965

958:                                              ; preds = %953
  %959 = icmp ult i32 %954, %957
  br i1 %959, label %969, label %960

960:                                              ; preds = %958
  store i32 42, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #10
  br label %1049

961:                                              ; preds = %1236, %1140, %1138, %1134, %1132, %1128, %1119, %1115, %1113, %1109, %1107, %1103, %1097, %947, %946
  %962 = landingpad { ptr, i32 }
          cleanup
  %963 = extractvalue { ptr, i32 } %962, 0
  store ptr %963, ptr %10, align 8
  %964 = extractvalue { ptr, i32 } %962, 1
  store i32 %964, ptr %11, align 4
  br label %1238

965:                                              ; preds = %953
  %966 = landingpad { ptr, i32 }
          cleanup
  %967 = extractvalue { ptr, i32 } %966, 0
  store ptr %967, ptr %10, align 8
  %968 = extractvalue { ptr, i32 } %966, 1
  store i32 %968, ptr %11, align 4
  br label %1048

969:                                              ; preds = %958
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #10
  %970 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 27
  %971 = load ptr, ptr %970, align 8, !tbaa !99
  %972 = invoke noundef ptr @_ZN4Fifo3popEv(ptr noundef nonnull align 8 dereferenceable(120) %971)
          to label %973 unwind label %1026

973:                                              ; preds = %969
  store ptr %972, ptr %56, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #10
  %974 = load ptr, ptr %56, align 8, !tbaa !5
  %975 = invoke noundef i32 @_ZNK11DataPackage6get_vnEv(ptr noundef nonnull align 8 dereferenceable(64) %974)
          to label %976 unwind label %1030

976:                                              ; preds = %973
  store i32 %975, ptr %57, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #10
  %977 = load ptr, ptr %56, align 8, !tbaa !5
  %978 = invoke noundef float @_ZNK11DataPackage8get_dataEv(ptr noundef nonnull align 8 dereferenceable(64) %977)
          to label %979 unwind label %1034

979:                                              ; preds = %976
  store float %978, ptr %58, align 4, !tbaa !81
  %980 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 59
  %981 = getelementptr inbounds %class.SDMemoryStats, ptr %980, i32 0, i32 5
  %982 = load i32, ptr %981, align 8, !tbaa !100
  %983 = add i32 %982, 1
  store i32 %983, ptr %981, align 8, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #10
  %984 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 39
  %985 = load i32, ptr %984, align 4, !tbaa !44
  %986 = load i32, ptr %57, align 4, !tbaa !45
  %987 = add i32 %985, %986
  %988 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 14
  %989 = load i32, ptr %988, align 8, !tbaa !87
  %990 = mul i32 %987, %989
  %991 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 19
  %992 = load i32, ptr %57, align 4, !tbaa !45
  %993 = zext i32 %992 to i64
  %994 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %991, i64 noundef %993) #10
  %995 = load i32, ptr %994, align 4, !tbaa !45
  %996 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 15
  %997 = load i32, ptr %996, align 4, !tbaa !89
  %998 = mul i32 %995, %997
  %999 = add i32 %990, %998
  store i32 %999, ptr %59, align 4, !tbaa !45
  %1000 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 19
  %1001 = load i32, ptr %57, align 4, !tbaa !45
  %1002 = zext i32 %1001 to i64
  %1003 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1000, i64 noundef %1002) #10
  %1004 = load i32, ptr %1003, align 4, !tbaa !45
  %1005 = add i32 %1004, 1
  store i32 %1005, ptr %1003, align 4, !tbaa !45
  %1006 = load float, ptr %58, align 4, !tbaa !81
  %1007 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 32
  %1008 = load ptr, ptr %1007, align 8, !tbaa !92
  %1009 = load i32, ptr %59, align 4, !tbaa !45
  %1010 = zext i32 %1009 to i64
  %1011 = getelementptr inbounds float, ptr %1008, i64 %1010
  store float %1006, ptr %1011, align 4, !tbaa !81
  %1012 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 51
  %1013 = load i32, ptr %1012, align 4, !tbaa !101
  %1014 = add i32 %1013, 1
  store i32 %1014, ptr %1012, align 4, !tbaa !101
  %1015 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 53
  %1016 = load i32, ptr %1015, align 4, !tbaa !102
  %1017 = add i32 %1016, 1
  store i32 %1017, ptr %1015, align 4, !tbaa !102
  %1018 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 53
  %1019 = load i32, ptr %1018, align 4, !tbaa !102
  %1020 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 54
  %1021 = load i32, ptr %1020, align 8, !tbaa !78
  %1022 = icmp eq i32 %1019, %1021
  br i1 %1022, label %1023, label %1038

1023:                                             ; preds = %979
  %1024 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 53
  store i32 0, ptr %1024, align 4, !tbaa !102
  %1025 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 48
  store i8 1, ptr %1025, align 1, !tbaa !103
  br label %1038

1026:                                             ; preds = %969
  %1027 = landingpad { ptr, i32 }
          cleanup
  %1028 = extractvalue { ptr, i32 } %1027, 0
  store ptr %1028, ptr %10, align 8
  %1029 = extractvalue { ptr, i32 } %1027, 1
  store i32 %1029, ptr %11, align 4
  br label %1047

1030:                                             ; preds = %973
  %1031 = landingpad { ptr, i32 }
          cleanup
  %1032 = extractvalue { ptr, i32 } %1031, 0
  store ptr %1032, ptr %10, align 8
  %1033 = extractvalue { ptr, i32 } %1031, 1
  store i32 %1033, ptr %11, align 4
  br label %1046

1034:                                             ; preds = %976
  %1035 = landingpad { ptr, i32 }
          cleanup
  %1036 = extractvalue { ptr, i32 } %1035, 0
  store ptr %1036, ptr %10, align 8
  %1037 = extractvalue { ptr, i32 } %1035, 1
  store i32 %1037, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #10
  br label %1046

1038:                                             ; preds = %1023, %979
  %1039 = load ptr, ptr %56, align 8, !tbaa !5
  %1040 = icmp eq ptr %1039, null
  br i1 %1040, label %1042, label %1041

1041:                                             ; preds = %1038
  call void @_ZN11DataPackageD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %1039) #10
  call void @_ZdlPvm(ptr noundef %1039, i64 noundef 64) #12
  br label %1042

1042:                                             ; preds = %1041, %1038
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #10
  br label %1043

1043:                                             ; preds = %1042
  %1044 = load i32, ptr %55, align 4, !tbaa !45
  %1045 = add nsw i32 %1044, 1
  store i32 %1045, ptr %55, align 4, !tbaa !45
  br label %953, !llvm.loop !104

1046:                                             ; preds = %1034, %1030
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  br label %1047

1047:                                             ; preds = %1046, %1026
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #10
  br label %1048

1048:                                             ; preds = %1047, %965
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #10
  br label %1238

1049:                                             ; preds = %960
  br label %1050

1050:                                             ; preds = %1049, %951
  %1051 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 17
  %1052 = load i32, ptr %1051, align 8, !tbaa !43
  %1053 = icmp eq i32 %1052, 0
  br i1 %1053, label %1054, label %1056

1054:                                             ; preds = %1050
  %1055 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 17
  store i32 1, ptr %1055, align 8, !tbaa !43
  br label %1236

1056:                                             ; preds = %1050
  %1057 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 17
  %1058 = load i32, ptr %1057, align 8, !tbaa !43
  %1059 = icmp eq i32 %1058, 1
  br i1 %1059, label %1060, label %1062

1060:                                             ; preds = %1056
  %1061 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 17
  store i32 2, ptr %1061, align 8, !tbaa !43
  br label %1235

1062:                                             ; preds = %1056
  %1063 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 17
  %1064 = load i32, ptr %1063, align 8, !tbaa !43
  %1065 = icmp eq i32 %1064, 2
  br i1 %1065, label %1066, label %1074

1066:                                             ; preds = %1062
  %1067 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 38
  %1068 = load i32, ptr %1067, align 8, !tbaa !88
  %1069 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 9
  %1070 = load i32, ptr %1069, align 4, !tbaa !61
  %1071 = icmp eq i32 %1068, %1070
  br i1 %1071, label %1072, label %1074

1072:                                             ; preds = %1066
  %1073 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 17
  store i32 3, ptr %1073, align 8, !tbaa !43
  br label %1234

1074:                                             ; preds = %1066, %1062
  %1075 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 17
  %1076 = load i32, ptr %1075, align 8, !tbaa !43
  %1077 = icmp eq i32 %1076, 3
  br i1 %1077, label %1078, label %1233

1078:                                             ; preds = %1074
  %1079 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 48
  %1080 = load i8, ptr %1079, align 1, !tbaa !103, !range !38, !noundef !39
  %1081 = trunc i8 %1080 to i1
  br i1 %1081, label %1082, label %1233

1082:                                             ; preds = %1078
  %1083 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 38
  store i32 0, ptr %1083, align 8, !tbaa !88
  %1084 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 48
  store i8 0, ptr %1084, align 1, !tbaa !103
  %1085 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %1086 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1085) #10
  %1087 = icmp eq i64 %1086, 1
  br i1 %1087, label %1088, label %1119

1088:                                             ; preds = %1082
  %1089 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 42
  %1090 = load i32, ptr %1089, align 8, !tbaa !56
  %1091 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 41
  store i32 %1090, ptr %1091, align 4, !tbaa !46
  %1092 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 41
  %1093 = load i32, ptr %1092, align 4, !tbaa !46
  %1094 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 8
  %1095 = load i32, ptr %1094, align 8, !tbaa !48
  %1096 = icmp eq i32 %1093, %1095
  br i1 %1096, label %1097, label %1118

1097:                                             ; preds = %1088
  %1098 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 39
  %1099 = load i32, ptr %1098, align 4, !tbaa !44
  %1100 = add i32 %1099, 1
  store i32 %1100, ptr %1098, align 4, !tbaa !44
  %1101 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 41
  store i32 0, ptr %1101, align 4, !tbaa !46
  %1102 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.17)
          to label %1103 unwind label %961

1103:                                             ; preds = %1097
  %1104 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 39
  %1105 = load i32, ptr %1104, align 4, !tbaa !44
  %1106 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %1102, i32 noundef %1105)
          to label %1107 unwind label %961

1107:                                             ; preds = %1103
  %1108 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1106, ptr noundef @.str.18)
          to label %1109 unwind label %961

1109:                                             ; preds = %1107
  %1110 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 7
  %1111 = load i32, ptr %1110, align 4, !tbaa !57
  %1112 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %1108, i32 noundef %1111)
          to label %1113 unwind label %961

1113:                                             ; preds = %1109
  %1114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1112, ptr noundef @.str.19)
          to label %1115 unwind label %961

1115:                                             ; preds = %1113
  %1116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1114, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1117 unwind label %961

1117:                                             ; preds = %1115
  br label %1118

1118:                                             ; preds = %1117, %1088
  br label %1144

1119:                                             ; preds = %1082
  %1120 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %1121 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1120) #10
  %1122 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 39
  %1123 = load i32, ptr %1122, align 4, !tbaa !44
  %1124 = zext i32 %1123 to i64
  %1125 = add i64 %1124, %1121
  %1126 = trunc i64 %1125 to i32
  store i32 %1126, ptr %1122, align 4, !tbaa !44
  %1127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.17)
          to label %1128 unwind label %961

1128:                                             ; preds = %1119
  %1129 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 39
  %1130 = load i32, ptr %1129, align 4, !tbaa !44
  %1131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %1127, i32 noundef %1130)
          to label %1132 unwind label %961

1132:                                             ; preds = %1128
  %1133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1131, ptr noundef @.str.18)
          to label %1134 unwind label %961

1134:                                             ; preds = %1132
  %1135 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 7
  %1136 = load i32, ptr %1135, align 4, !tbaa !57
  %1137 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %1133, i32 noundef %1136)
          to label %1138 unwind label %961

1138:                                             ; preds = %1134
  %1139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1137, ptr noundef @.str.19)
          to label %1140 unwind label %961

1140:                                             ; preds = %1138
  %1141 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1139, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1142 unwind label %961

1142:                                             ; preds = %1140
  %1143 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 41
  store i32 0, ptr %1143, align 4, !tbaa !46
  br label %1144

1144:                                             ; preds = %1142, %1118
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #10
  store i32 0, ptr %60, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #10
  store i32 0, ptr %61, align 4, !tbaa !45
  br label %1145

1145:                                             ; preds = %1175, %1144
  %1146 = load i32, ptr %61, align 4, !tbaa !45
  %1147 = sext i32 %1146 to i64
  %1148 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %1149 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1148) #10
  %1150 = icmp ult i64 %1147, %1149
  br i1 %1150, label %1152, label %1151

1151:                                             ; preds = %1145
  store i32 45, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #10
  br label %1178

1152:                                             ; preds = %1145
  %1153 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %1154 = load i32, ptr %61, align 4, !tbaa !45
  %1155 = sext i32 %1154 to i64
  %1156 = call noundef nonnull align 4 dereferenceable(5) ptr @_ZNSt6vectorI8SparseVNSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1153, i64 noundef %1155) #10
  %1157 = invoke noundef i32 @_ZN8SparseVN11get_VN_SizeEv(ptr noundef nonnull align 4 dereferenceable(5) %1156)
          to label %1158 unwind label %1170

1158:                                             ; preds = %1152
  %1159 = load i32, ptr %60, align 4, !tbaa !45
  %1160 = add i32 %1159, %1157
  store i32 %1160, ptr %60, align 4, !tbaa !45
  %1161 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 18
  %1162 = load i32, ptr %61, align 4, !tbaa !45
  %1163 = sext i32 %1162 to i64
  %1164 = call noundef nonnull align 4 dereferenceable(5) ptr @_ZNSt6vectorI8SparseVNSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1161, i64 noundef %1163) #10
  %1165 = invoke noundef zeroext i1 @_ZN8SparseVN10getFoldingEv(ptr noundef nonnull align 4 dereferenceable(5) %1164)
          to label %1166 unwind label %1170

1166:                                             ; preds = %1158
  br i1 %1165, label %1167, label %1174

1167:                                             ; preds = %1166
  %1168 = load i32, ptr %60, align 4, !tbaa !45
  %1169 = sub i32 %1168, 1
  store i32 %1169, ptr %60, align 4, !tbaa !45
  br label %1174

1170:                                             ; preds = %1158, %1152
  %1171 = landingpad { ptr, i32 }
          cleanup
  %1172 = extractvalue { ptr, i32 } %1171, 0
  store ptr %1172, ptr %10, align 8
  %1173 = extractvalue { ptr, i32 } %1171, 1
  store i32 %1173, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #10
  br label %1238

1174:                                             ; preds = %1167, %1166
  br label %1175

1175:                                             ; preds = %1174
  %1176 = load i32, ptr %61, align 4, !tbaa !45
  %1177 = add nsw i32 %1176, 1
  store i32 %1177, ptr %61, align 4, !tbaa !45
  br label %1145, !llvm.loop !105

1178:                                             ; preds = %1151
  %1179 = load i32, ptr %60, align 4, !tbaa !45
  %1180 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 40
  %1181 = load i32, ptr %1180, align 8, !tbaa !80
  %1182 = add i32 %1181, %1179
  store i32 %1182, ptr %1180, align 8, !tbaa !80
  %1183 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 39
  %1184 = load i32, ptr %1183, align 4, !tbaa !44
  %1185 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 7
  %1186 = load i32, ptr %1185, align 4, !tbaa !57
  %1187 = icmp uge i32 %1184, %1186
  br i1 %1187, label %1188, label %1230

1188:                                             ; preds = %1178
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #10
  %1189 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 7
  %1190 = load i32, ptr %1189, align 4, !tbaa !57
  %1191 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 8
  %1192 = load i32, ptr %1191, align 8, !tbaa !48
  %1193 = mul i32 %1190, %1192
  store i32 %1193, ptr %62, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #10
  %1194 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 9
  %1195 = load i32, ptr %1194, align 4, !tbaa !61
  %1196 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 8
  %1197 = load i32, ptr %1196, align 8, !tbaa !48
  %1198 = mul i32 %1195, %1197
  store i32 %1198, ptr %63, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #10
  %1199 = load i32, ptr %62, align 4, !tbaa !45
  %1200 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 55
  %1201 = load i32, ptr %1200, align 4, !tbaa !84
  %1202 = sub i32 %1199, %1201
  store i32 %1202, ptr %64, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #10
  %1203 = load i32, ptr %63, align 4, !tbaa !45
  %1204 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 56
  %1205 = load i32, ptr %1204, align 8, !tbaa !68
  %1206 = sub i32 %1203, %1205
  store i32 %1206, ptr %65, align 4, !tbaa !45
  %1207 = load i32, ptr %64, align 4, !tbaa !45
  %1208 = mul i32 100, %1207
  %1209 = load i32, ptr %62, align 4, !tbaa !45
  %1210 = udiv i32 %1208, %1209
  %1211 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 59
  %1212 = getelementptr inbounds %class.SDMemoryStats, ptr %1211, i32 0, i32 6
  store i32 %1210, ptr %1212, align 4, !tbaa !106
  %1213 = load i32, ptr %65, align 4, !tbaa !45
  %1214 = mul i32 100, %1213
  %1215 = load i32, ptr %63, align 4, !tbaa !45
  %1216 = udiv i32 %1214, %1215
  %1217 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 59
  %1218 = getelementptr inbounds %class.SDMemoryStats, ptr %1217, i32 0, i32 7
  store i32 %1216, ptr %1218, align 8, !tbaa !107
  %1219 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 59
  %1220 = getelementptr inbounds %class.SDMemoryStats, ptr %1219, i32 0, i32 8
  %1221 = load i32, ptr %1220, align 4, !tbaa !70
  %1222 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 59
  %1223 = getelementptr inbounds %class.SDMemoryStats, ptr %1222, i32 0, i32 10
  %1224 = load i32, ptr %1223, align 4, !tbaa !72
  %1225 = udiv i32 %1221, %1224
  %1226 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 59
  %1227 = getelementptr inbounds %class.SDMemoryStats, ptr %1226, i32 0, i32 8
  store i32 %1225, ptr %1227, align 4, !tbaa !70
  %1228 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 47
  store i8 1, ptr %1228, align 8, !tbaa !108
  %1229 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 17
  store i32 4, ptr %1229, align 8, !tbaa !43
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #10
  br label %1232

1230:                                             ; preds = %1178
  %1231 = getelementptr inbounds %class.SparseSDMemory, ptr %66, i32 0, i32 17
  store i32 0, ptr %1231, align 8, !tbaa !43
  br label %1232

1232:                                             ; preds = %1230, %1188
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #10
  br label %1233

1233:                                             ; preds = %1232, %1078, %1074
  br label %1234

1234:                                             ; preds = %1233, %1072
  br label %1235

1235:                                             ; preds = %1234, %1060
  br label %1236

1236:                                             ; preds = %1235, %1054
  invoke void @_ZN14SparseSDMemory4sendEv(ptr noundef nonnull align 8 dereferenceable(592) %66)
          to label %1237 unwind label %961

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

1238:                                             ; preds = %1170, %1048, %961, %943, %698, %617
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %4) #10
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %3) #10
  br label %1239

1239:                                             ; preds = %1238
  %1240 = load ptr, ptr %10, align 8
  %1241 = load i32, ptr %11, align 4
  %1242 = insertvalue { ptr, i32 } poison, ptr %1240, 0
  %1243 = insertvalue { ptr, i32 } %1242, i32 %1241, 1
  resume { ptr, i32 } %1243
}

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8SparseVNC2Ejb(ptr noundef nonnull align 4 dereferenceable(5), i32 noundef, i1 noundef zeroext) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI8SparseVNSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(5)) #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI8SparseVNSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8SparseVN10getFoldingEv(ptr noundef nonnull align 4 dereferenceable(5)) #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 #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN14SparseSDMemory23sendPackageToInputFifosEP11DataPackage(ptr noundef nonnull align 8 dereferenceable(592), ptr noundef) #3 align 2

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 #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN14SparseSDMemory7receiveEv(ptr noundef nonnull align 8 dereferenceable(592)) #3 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK11DataPackage8get_dataEv(ptr noundef nonnull align 8 dereferenceable(64)) #4 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) #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN14SparseSDMemory4sendEv(ptr noundef nonnull align 8 dereferenceable(592)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 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 = { 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 #4 = { 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 #5 = { 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 #6 = { inlinehint 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 #7 = { "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 = { 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 #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, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !35, i64 379}
!10 = !{!"_ZTS14SparseSDMemory", !11, i64 0, !6, i64 48, !6, i64 56, !6, i64 64, !13, i64 72, !13, i64 76, !17, 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, !13, i64 116, !6, i64 120, !18, i64 128, !19, i64 136, !23, i64 160, !27, i64 184, !13, i64 208, !13, i64 212, !13, i64 216, !13, i64 220, !13, i64 224, !13, i64 228, !6, i64 232, !31, i64 240, !31, i64 264, !6, i64 288, !6, i64 296, !6, i64 304, !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, !35, i64 372, !35, i64 373, !35, i64 374, !35, i64 375, !35, i64 376, !35, i64 377, !35, i64 378, !35, i64 379, !13, i64 380, !13, i64 384, !13, i64 388, !13, i64 392, !13, i64 396, !13, i64 400, !27, i64 408, !13, i64 432, !36, i64 440}
!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 = !{!"_ZTS8Dataflow", !7, i64 0}
!18 = !{!"_ZTS23SparsityControllerState", !7, i64 0}
!19 = !{!"_ZTSSt6vectorI8SparseVNSaIS0_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseI8SparseVNSaIS0_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseI8SparseVNSaIS0_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseI8SparseVNSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"_ZTSSt6vectorIjSaIjEE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"_ZTSSt6vectorIP10ConnectionSaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIP10ConnectionSaIS1_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIP10ConnectionSaIS1_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIP10ConnectionSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"_ZTSSt6vectorIP4FifoSaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIP4FifoSaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIP4FifoSaIS1_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIP4FifoSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!"bool", !7, i64 0}
!36 = !{!"_ZTS13SDMemoryStats", !37, 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, !17, i64 48, !23, i64 56, !23, i64 80, !23, i64 104, !23, i64 128}
!37 = !{!"_ZTS5Stats"}
!38 = !{i8 0, i8 2}
!39 = !{}
!40 = !{!10, !35, i64 378}
!41 = !{!10, !13, i64 432}
!42 = !{!10, !13, i64 448}
!43 = !{!10, !18, i64 128}
!44 = !{!10, !13, i64 356}
!45 = !{!13, !13, i64 0}
!46 = !{!10, !13, i64 364}
!47 = !{!10, !13, i64 208}
!48 = !{!10, !13, i64 88}
!49 = !{!10, !6, i64 312}
!50 = !{!10, !13, i64 100}
!51 = !{!10, !13, i64 96}
!52 = !{!10, !6, i64 336}
!53 = distinct !{!53, !54}
!54 = !{!"llvm.loop.mustprogress"}
!55 = distinct !{!55, !54}
!56 = !{!10, !13, i64 368}
!57 = !{!10, !13, i64 84}
!58 = distinct !{!58, !54}
!59 = distinct !{!59, !54}
!60 = distinct !{!60, !54}
!61 = !{!10, !13, i64 92}
!62 = !{!10, !6, i64 320}
!63 = !{!10, !13, i64 108}
!64 = !{!10, !13, i64 104}
!65 = !{!10, !6, i64 344}
!66 = distinct !{!66, !54}
!67 = distinct !{!67, !54}
!68 = !{!10, !13, i64 400}
!69 = distinct !{!69, !54}
!70 = !{!10, !13, i64 476}
!71 = !{!10, !13, i64 480}
!72 = !{!10, !13, i64 484}
!73 = !{!10, !6, i64 64}
!74 = !{!75, !75, i64 0}
!75 = !{!"vtable pointer", !8, i64 0}
!76 = !{!10, !6, i64 48}
!77 = !{!10, !6, i64 56}
!78 = !{!10, !13, i64 392}
!79 = !{!10, !6, i64 288}
!80 = !{!10, !13, i64 360}
!81 = !{!82, !82, i64 0}
!82 = !{!"float", !7, i64 0}
!83 = !{!10, !13, i64 452}
!84 = !{!10, !13, i64 396}
!85 = distinct !{!85, !54}
!86 = distinct !{!86, !54}
!87 = !{!10, !13, i64 112}
!88 = !{!10, !13, i64 352}
!89 = !{!10, !13, i64 116}
!90 = !{!35, !35, i64 0}
!91 = distinct !{!91, !54}
!92 = !{!10, !6, i64 304}
!93 = !{!10, !13, i64 460}
!94 = distinct !{!94, !54}
!95 = distinct !{!95, !54}
!96 = !{!10, !6, i64 296}
!97 = !{!10, !13, i64 456}
!98 = distinct !{!98, !54}
!99 = !{!10, !6, i64 232}
!100 = !{!10, !13, i64 464}
!101 = !{!10, !13, i64 380}
!102 = !{!10, !13, i64 388}
!103 = !{!10, !35, i64 377}
!104 = distinct !{!104, !54}
!105 = distinct !{!105, !54}
!106 = !{!10, !13, i64 468}
!107 = !{!10, !13, i64 472}
!108 = !{!10, !35, i64 376}


; 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::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"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.SparseVN = type <{ i32, i8, [3 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 }

@.str.1 = external hidden unnamed_addr constant [97 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [19 x i8], align 1
@__PRETTY_FUNCTION__._ZN14SparseSDMemory5cycleEv = external hidden unnamed_addr constant [37 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [2 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 uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 align 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: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI8SparseVNSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #6

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN14SparseSDMemory5cycleEv(ptr noundef nonnull align 8 dereferenceable(592) %0) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::vector.21", align 8
  %3 = alloca %"class.std::vector.21", align 8
  %4 = alloca %class.SparseVN, align 4
  %5 = alloca i32, align 4
  %6 = alloca %class.SparseVN, align 4
  %7 = alloca i32, align 4
  %8 = alloca %class.SparseVN, align 4
  %9 = alloca i32, align 4
  %10 = alloca %class.SparseVN, align 4
  %11 = alloca i32, align 4
  %12 = alloca %"class.std::vector", align 8
  %13 = alloca %"class.std::vector", align 8
  %14 = getelementptr inbounds i8, ptr %0, i64 379
  %15 = load i8, ptr %14, align 1, !tbaa !5, !range !37, !noundef !38
  %16 = trunc nuw i8 %15 to i1
  br i1 %16, label %18, label %17

17:                                               ; preds = %1
  tail call void @__assert_fail(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 182, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14SparseSDMemory5cycleEv) #11
  unreachable

18:                                               ; preds = %1
  %19 = getelementptr inbounds i8, ptr %0, i64 378
  %20 = load i8, ptr %19, align 2, !tbaa !39, !range !37, !noundef !38
  %21 = trunc nuw i8 %20 to i1
  br i1 %21, label %23, label %22

22:                                               ; preds = %18
  tail call void @__assert_fail(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 183, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14SparseSDMemory5cycleEv) #11
  unreachable

23:                                               ; preds = %18
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) #12
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #12
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #12
  %24 = getelementptr inbounds i8, ptr %0, i64 432
  %25 = load i32, ptr %24, align 8, !tbaa !40
  %26 = add i32 %25, 1
  store i32 %26, ptr %24, align 8, !tbaa !40
  %27 = getelementptr inbounds i8, ptr %0, i64 448
  %28 = load i32, ptr %27, align 8, !tbaa !41
  %29 = add i32 %28, 1
  store i32 %29, ptr %27, align 8, !tbaa !41
  %30 = getelementptr inbounds i8, ptr %0, i64 128
  %31 = load i32, ptr %30, align 8, !tbaa !42
  switch i32 %31, label %.loopexit259 [
    i32 0, label %38
    i32 1, label %.preheader258
    i32 2, label %500
  ]

.preheader258:                                    ; preds = %23
  %32 = getelementptr inbounds i8, ptr %0, i64 136
  %33 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %32) #12
  %.not355 = icmp eq i64 %33, 0
  br i1 %.not355, label %.loopexit259, label %.lr.ph299

.lr.ph299:                                        ; preds = %.preheader258
  %34 = getelementptr inbounds i8, ptr %0, i64 288
  %35 = getelementptr inbounds i8, ptr %0, i64 360
  %36 = getelementptr inbounds i8, ptr %0, i64 452
  %37 = getelementptr inbounds i8, ptr %0, i64 396
  br label %468

38:                                               ; preds = %23
  %39 = getelementptr inbounds i8, ptr %0, i64 356
  %40 = load i32, ptr %39, align 4, !tbaa !43
  %41 = getelementptr inbounds i8, ptr %0, i64 136
  call void @_ZNSt6vectorI8SparseVNSaIS0_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #12
  %42 = getelementptr inbounds i8, ptr %0, i64 160
  call void @_ZNSt6vectorIjSaIjEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %42) #12
  %43 = getelementptr inbounds i8, ptr %0, i64 364
  %44 = load i32, ptr %43, align 4, !tbaa !44
  %.not222 = icmp eq i32 %44, 0
  %45 = getelementptr inbounds i8, ptr %0, i64 208
  br i1 %.not222, label %.preheader256, label %.preheader257

.preheader257:                                    ; preds = %38
  %46 = getelementptr inbounds i8, ptr %0, i64 88
  %47 = load i32, ptr %45, align 8, !tbaa !45
  %48 = icmp ugt i32 %47, 1
  %49 = load i32, ptr %46, align 8
  %50 = icmp ult i32 %44, %49
  %or.cond247300 = select i1 %48, i1 %50, i1 false
  br i1 %or.cond247300, label %.lr.ph304, label %.critedge

.lr.ph304:                                        ; preds = %.preheader257
  %51 = getelementptr inbounds i8, ptr %0, i64 312
  %52 = load ptr, ptr %51, align 8, !tbaa !46
  %53 = getelementptr inbounds i8, ptr %0, i64 100
  %54 = getelementptr inbounds i8, ptr %0, i64 96
  %55 = getelementptr inbounds i8, ptr %0, i64 336
  %56 = load ptr, ptr %55, align 8
  br label %64

.preheader256:                                    ; preds = %38
  %57 = load i32, ptr %45, align 8, !tbaa !45
  %.not356 = icmp eq i32 %57, 0
  br i1 %.not356, label %.critedge2, label %.lr.ph318

.lr.ph318:                                        ; preds = %.preheader256
  %58 = getelementptr inbounds i8, ptr %0, i64 88
  %59 = getelementptr inbounds i8, ptr %0, i64 84
  %60 = getelementptr inbounds i8, ptr %0, i64 312
  %61 = getelementptr inbounds i8, ptr %0, i64 100
  %62 = getelementptr inbounds i8, ptr %0, i64 96
  %63 = getelementptr inbounds i8, ptr %0, i64 336
  br label %153

64:                                               ; preds = %.lr.ph304, %79
  %65 = phi i32 [ %49, %.lr.ph304 ], [ %80, %79 ]
  %66 = phi i32 [ %47, %.lr.ph304 ], [ %81, %79 ]
  %.0142303 = phi i32 [ %44, %.lr.ph304 ], [ %82, %79 ]
  %.0144302 = phi i32 [ 1, %.lr.ph304 ], [ %.1145, %79 ]
  %.0147301 = phi i32 [ 0, %.lr.ph304 ], [ %.1148, %79 ]
  %67 = load i32, ptr %53, align 4, !tbaa !47
  %68 = mul i32 %67, %40
  %69 = load i32, ptr %54, align 8, !tbaa !48
  %70 = mul i32 %69, %.0142303
  %71 = add i32 %70, %68
  %72 = zext i32 %71 to i64
  %73 = getelementptr inbounds i32, ptr %52, i64 %72
  %74 = load i32, ptr %73, align 4, !tbaa !49
  %.not244 = icmp eq i32 %74, 0
  br i1 %.not244, label %79, label %75

75:                                               ; preds = %64
  %76 = getelementptr inbounds i32, ptr %56, i64 %72
  store i32 %.0144302, ptr %76, align 4, !tbaa !49
  %77 = add nuw nsw i32 %.0144302, 1
  %78 = add nsw i32 %.0147301, 1
  %.pre = load i32, ptr %45, align 8, !tbaa !45
  %.pre398 = load i32, ptr %46, align 8
  br label %79

79:                                               ; preds = %75, %64
  %80 = phi i32 [ %.pre398, %75 ], [ %65, %64 ]
  %81 = phi i32 [ %.pre, %75 ], [ %66, %64 ]
  %.1148 = phi i32 [ %78, %75 ], [ %.0147301, %64 ]
  %.1145 = phi i32 [ %77, %75 ], [ %.0144302, %64 ]
  %82 = add nuw nsw i32 %.0142303, 1
  %83 = icmp ult i32 %.1145, %81
  %84 = icmp ult i32 %82, %80
  %or.cond247 = select i1 %83, i1 %84, i1 false
  br i1 %or.cond247, label %64, label %.critedge, !llvm.loop !50

.critedge:                                        ; preds = %79, %.preheader257
  %.0147.lcssa = phi i32 [ 0, %.preheader257 ], [ %.1148, %79 ]
  %.0142.lcssa = phi i32 [ %44, %.preheader257 ], [ %82, %79 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #12
  call void @_ZN8SparseVNC2Ejb(ptr noundef nonnull align 4 dereferenceable(5) %4, i32 noundef %.0147.lcssa, i1 noundef zeroext true)
  invoke void @_ZNSt6vectorI8SparseVNSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 4 dereferenceable(5) %4)
          to label %85 unwind label %131

85:                                               ; preds = %.critedge
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #12
  store i32 0, ptr %5, align 4, !tbaa !49
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %86 unwind label %133

86:                                               ; preds = %85
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #12
  %87 = load i32, ptr %46, align 8, !tbaa !52
  %88 = icmp ult i32 %.0142.lcssa, %87
  br i1 %88, label %.lr.ph310, label %._crit_edge311.thread

.lr.ph310:                                        ; preds = %86
  %89 = getelementptr inbounds i8, ptr %0, i64 312
  %90 = load ptr, ptr %89, align 8, !tbaa !46
  %91 = getelementptr inbounds i8, ptr %0, i64 100
  %92 = load i32, ptr %91, align 4, !tbaa !47
  %93 = mul i32 %92, %40
  %94 = getelementptr inbounds i8, ptr %0, i64 96
  %95 = load i32, ptr %94, align 8, !tbaa !48
  %96 = zext i32 %.0142.lcssa to i64
  %wide.trip.count379 = zext i32 %87 to i64
  %97 = sub nsw i64 %wide.trip.count379, %96
  %min.iters.check = icmp ult i64 %97, 16
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.scevcheck

scalar.ph.preheader:                              ; preds = %middle.block, %vector.scevcheck, %.lr.ph310
  %indvars.iv376.ph = phi i64 [ %96, %vector.scevcheck ], [ %96, %.lr.ph310 ], [ %ind.end, %middle.block ]
  %.0173308.ph = phi i32 [ 0, %vector.scevcheck ], [ 0, %.lr.ph310 ], [ %130, %middle.block ]
  %98 = sub nsw i64 %wide.trip.count379, %indvars.iv376.ph
  %xtraiter482 = and i64 %98, 1
  %lcmp.mod483.not = icmp eq i64 %xtraiter482, 0
  br i1 %lcmp.mod483.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %99 = trunc nuw i64 %indvars.iv376.ph to i32
  %100 = mul i32 %95, %99
  %101 = add i32 %100, %93
  %102 = zext i32 %101 to i64
  %103 = getelementptr inbounds i32, ptr %90, i64 %102
  %104 = load i32, ptr %103, align 4, !tbaa !49
  %.not243.prol = icmp ne i32 %104, 0
  %105 = zext i1 %.not243.prol to i32
  %spec.select.prol = add nuw nsw i32 %.0173308.ph, %105
  %indvars.iv.next377.prol = add nuw nsw i64 %indvars.iv376.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %spec.select.lcssa472.unr = phi i32 [ poison, %scalar.ph.preheader ], [ %spec.select.prol, %scalar.ph.prol ]
  %indvars.iv376.unr = phi i64 [ %indvars.iv376.ph, %scalar.ph.preheader ], [ %indvars.iv.next377.prol, %scalar.ph.prol ]
  %.0173308.unr = phi i32 [ %.0173308.ph, %scalar.ph.preheader ], [ %spec.select.prol, %scalar.ph.prol ]
  %106 = add nsw i64 %wide.trip.count379, -1
  %107 = icmp eq i64 %indvars.iv376.ph, %106
  br i1 %107, label %._crit_edge311, label %scalar.ph

vector.scevcheck:                                 ; preds = %.lr.ph310
  %ident.check = icmp ne i32 %95, 1
  %108 = xor i64 %96, -1
  %109 = add nsw i64 %108, %wide.trip.count379
  %110 = add i32 %.0142.lcssa, %93
  %111 = trunc i64 %109 to i32
  %112 = xor i32 %110, -1
  %113 = icmp ult i32 %112, %111
  %114 = icmp ugt i64 %109, 4294967295
  %115 = or i1 %113, %114
  %116 = or i1 %ident.check, %115
  br i1 %116, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.scevcheck
  %n.vec = and i64 %97, -8
  %ind.end = add nsw i64 %n.vec, %96
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.phi = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ %127, %vector.body ]
  %vec.phi421 = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ %128, %vector.body ]
  %117 = trunc i64 %index to i32
  %118 = add i32 %.0142.lcssa, %117
  %119 = add i32 %118, %93
  %120 = zext i32 %119 to i64
  %121 = getelementptr inbounds i32, ptr %90, i64 %120
  %122 = getelementptr inbounds i8, ptr %121, i64 16
  %wide.load = load <4 x i32>, ptr %121, align 4, !tbaa !49
  %wide.load422 = load <4 x i32>, ptr %122, align 4, !tbaa !49
  %123 = icmp ne <4 x i32> %wide.load, zeroinitializer
  %124 = icmp ne <4 x i32> %wide.load422, zeroinitializer
  %125 = zext <4 x i1> %123 to <4 x i32>
  %126 = zext <4 x i1> %124 to <4 x i32>
  %127 = add <4 x i32> %vec.phi, %125
  %128 = add <4 x i32> %vec.phi421, %126
  %index.next = add nuw i64 %index, 8
  %129 = icmp eq i64 %index.next, %n.vec
  br i1 %129, label %middle.block, label %vector.body, !llvm.loop !53

middle.block:                                     ; preds = %vector.body
  %bin.rdx = add <4 x i32> %128, %127
  %130 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx)
  %cmp.n = icmp eq i64 %97, %n.vec
  br i1 %cmp.n, label %._crit_edge311, label %scalar.ph.preheader

._crit_edge311:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %spec.select.lcssa = phi i32 [ %130, %middle.block ], [ %spec.select.lcssa472.unr, %scalar.ph.prol.loopexit ], [ %spec.select.1, %scalar.ph ]
  %.not412 = icmp eq i32 %spec.select.lcssa, 0
  br i1 %.not412, label %._crit_edge311.thread, label %150

131:                                              ; preds = %.critedge
  %132 = landingpad { ptr, i32 }
          cleanup
  br label %152

133:                                              ; preds = %85
  %134 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #12
  br label %152

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv376 = phi i64 [ %indvars.iv.next377.1, %scalar.ph ], [ %indvars.iv376.unr, %scalar.ph.prol.loopexit ]
  %.0173308 = phi i32 [ %spec.select.1, %scalar.ph ], [ %.0173308.unr, %scalar.ph.prol.loopexit ]
  %135 = trunc nuw i64 %indvars.iv376 to i32
  %136 = mul i32 %95, %135
  %137 = add i32 %136, %93
  %138 = zext i32 %137 to i64
  %139 = getelementptr inbounds i32, ptr %90, i64 %138
  %140 = load i32, ptr %139, align 4, !tbaa !49
  %.not243 = icmp ne i32 %140, 0
  %141 = zext i1 %.not243 to i32
  %spec.select = add nuw nsw i32 %.0173308, %141
  %142 = trunc i64 %indvars.iv376 to i32
  %143 = add i32 %142, 1
  %144 = mul i32 %95, %143
  %145 = add i32 %144, %93
  %146 = zext i32 %145 to i64
  %147 = getelementptr inbounds i32, ptr %90, i64 %146
  %148 = load i32, ptr %147, align 4, !tbaa !49
  %.not243.1 = icmp ne i32 %148, 0
  %149 = zext i1 %.not243.1 to i32
  %spec.select.1 = add nuw nsw i32 %spec.select, %149
  %indvars.iv.next377.1 = add nuw nsw i64 %indvars.iv376, 2
  %exitcond380.not.1 = icmp eq i64 %indvars.iv.next377.1, %wide.trip.count379
  br i1 %exitcond380.not.1, label %._crit_edge311, label %scalar.ph, !llvm.loop !56

._crit_edge311.thread:                            ; preds = %86, %._crit_edge311
  br label %150

150:                                              ; preds = %._crit_edge311, %._crit_edge311.thread
  %.sink = phi i32 [ %87, %._crit_edge311.thread ], [ %.0142.lcssa, %._crit_edge311 ]
  %151 = getelementptr inbounds i8, ptr %0, i64 368
  store i32 %.sink, ptr %151, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #12
  br label %342

152:                                              ; preds = %133, %131
  %.pn233 = phi { ptr, i32 } [ %134, %133 ], [ %132, %131 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #12
  br label %814

153:                                              ; preds = %.lr.ph318, %190
  %.0317 = phi i32 [ %40, %.lr.ph318 ], [ %.1, %190 ]
  %.1143316 = phi i32 [ 0, %.lr.ph318 ], [ %.2, %190 ]
  %.2146315 = phi i32 [ 0, %.lr.ph318 ], [ %.3, %190 ]
  %.2149314 = phi i32 [ 0, %.lr.ph318 ], [ %.4, %190 ]
  %154 = load i32, ptr %58, align 8, !tbaa !52
  %155 = mul i32 %154, %.0317
  %156 = add i32 %155, %.1143316
  %157 = load i32, ptr %59, align 4, !tbaa !57
  %158 = mul i32 %157, %154
  %159 = icmp ult i32 %156, %158
  br i1 %159, label %160, label %.critedge2

160:                                              ; preds = %153
  %161 = load ptr, ptr %60, align 8, !tbaa !46
  %162 = load i32, ptr %61, align 4, !tbaa !47
  %163 = mul i32 %162, %.0317
  %164 = load i32, ptr %62, align 8, !tbaa !48
  %165 = mul i32 %164, %.1143316
  %166 = add i32 %165, %163
  %167 = zext i32 %166 to i64
  %168 = getelementptr inbounds i32, ptr %161, i64 %167
  %169 = load i32, ptr %168, align 4, !tbaa !49
  %.not230 = icmp eq i32 %169, 0
  br i1 %.not230, label %175, label %170

170:                                              ; preds = %160
  %171 = load ptr, ptr %63, align 8, !tbaa !58
  %172 = getelementptr inbounds i32, ptr %171, i64 %167
  store i32 %.2146315, ptr %172, align 4, !tbaa !49
  %173 = add nuw nsw i32 %.2146315, 1
  %174 = add nsw i32 %.2149314, 1
  %.pre399 = load i32, ptr %58, align 8, !tbaa !52
  br label %175

175:                                              ; preds = %170, %160
  %176 = phi i32 [ %.pre399, %170 ], [ %154, %160 ]
  %.3150 = phi i32 [ %174, %170 ], [ %.2149314, %160 ]
  %.3 = phi i32 [ %173, %170 ], [ %.2146315, %160 ]
  %177 = add nsw i32 %.1143316, 1
  %178 = icmp eq i32 %177, %176
  br i1 %178, label %179, label %190

179:                                              ; preds = %175
  %180 = add nsw i32 %.0317, 1
  %181 = icmp sgt i32 %.3150, 0
  br i1 %181, label %182, label %190

182:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #12
  call void @_ZN8SparseVNC2Ejb(ptr noundef nonnull align 4 dereferenceable(5) %6, i32 noundef %.3150, i1 noundef zeroext false)
  invoke void @_ZNSt6vectorI8SparseVNSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 4 dereferenceable(5) %6)
          to label %183 unwind label %185

183:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #12
  store i32 0, ptr %7, align 4, !tbaa !49
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %184 unwind label %187

184:                                              ; preds = %183
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #12
  br label %190

185:                                              ; preds = %182
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %189

187:                                              ; preds = %183
  %188 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #12
  br label %189

189:                                              ; preds = %187, %185
  %.pn231 = phi { ptr, i32 } [ %188, %187 ], [ %186, %185 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #12
  br label %814

190:                                              ; preds = %179, %184, %175
  %.4 = phi i32 [ 0, %184 ], [ %.3150, %179 ], [ %.3150, %175 ]
  %.2 = phi i32 [ 0, %184 ], [ 0, %179 ], [ %177, %175 ]
  %.1 = phi i32 [ %180, %184 ], [ %180, %179 ], [ %.0317, %175 ]
  %191 = load i32, ptr %45, align 8, !tbaa !45
  %192 = icmp ult i32 %.3, %191
  br i1 %192, label %153, label %.critedge2, !llvm.loop !59

.critedge2:                                       ; preds = %153, %190, %.preheader256
  %.2149.lcssa = phi i32 [ 0, %.preheader256 ], [ %.4, %190 ], [ %.2149314, %153 ]
  %.1143.lcssa = phi i32 [ 0, %.preheader256 ], [ %.2, %190 ], [ %.1143316, %153 ]
  %.0.lcssa = phi i32 [ %40, %.preheader256 ], [ %.1, %190 ], [ %.0317, %153 ]
  %193 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #12
  %.not223 = icmp eq i64 %193, 0
  br i1 %.not223, label %265, label %194

194:                                              ; preds = %.critedge2
  %195 = getelementptr inbounds i8, ptr %0, i64 88
  %196 = load i32, ptr %195, align 8, !tbaa !52
  %197 = icmp ult i32 %.1143.lcssa, %196
  br i1 %197, label %.preheader255, label %265

.preheader255:                                    ; preds = %194
  %198 = getelementptr inbounds i8, ptr %0, i64 312
  %199 = load ptr, ptr %198, align 8, !tbaa !46
  %200 = getelementptr inbounds i8, ptr %0, i64 100
  %201 = load i32, ptr %200, align 4, !tbaa !47
  %202 = mul i32 %201, %.0.lcssa
  %203 = getelementptr inbounds i8, ptr %0, i64 96
  %204 = load i32, ptr %203, align 8, !tbaa !48
  %205 = zext i32 %.1143.lcssa to i64
  %wide.trip.count384 = zext i32 %196 to i64
  %206 = sub nsw i64 %wide.trip.count384, %205
  %min.iters.check427 = icmp ult i64 %206, 16
  br i1 %min.iters.check427, label %scalar.ph426.preheader, label %vector.scevcheck423

scalar.ph426.preheader:                           ; preds = %middle.block425, %vector.scevcheck423, %.preheader255
  %indvars.iv381.ph = phi i64 [ %205, %vector.scevcheck423 ], [ %205, %.preheader255 ], [ %ind.end431, %middle.block425 ]
  %.0177327.ph = phi i32 [ 0, %vector.scevcheck423 ], [ 0, %.preheader255 ], [ %239, %middle.block425 ]
  %207 = sub nsw i64 %wide.trip.count384, %indvars.iv381.ph
  %xtraiter484 = and i64 %207, 1
  %lcmp.mod485.not = icmp eq i64 %xtraiter484, 0
  br i1 %lcmp.mod485.not, label %scalar.ph426.prol.loopexit, label %scalar.ph426.prol

scalar.ph426.prol:                                ; preds = %scalar.ph426.preheader
  %208 = trunc nuw i64 %indvars.iv381.ph to i32
  %209 = mul i32 %204, %208
  %210 = add i32 %209, %202
  %211 = zext i32 %210 to i64
  %212 = getelementptr inbounds i32, ptr %199, i64 %211
  %213 = load i32, ptr %212, align 4, !tbaa !49
  %.not229.prol = icmp ne i32 %213, 0
  %214 = zext i1 %.not229.prol to i32
  %spec.select248.prol = add nuw nsw i32 %.0177327.ph, %214
  %indvars.iv.next382.prol = add nuw nsw i64 %indvars.iv381.ph, 1
  br label %scalar.ph426.prol.loopexit

scalar.ph426.prol.loopexit:                       ; preds = %scalar.ph426.prol, %scalar.ph426.preheader
  %spec.select248.lcssa469.unr = phi i32 [ poison, %scalar.ph426.preheader ], [ %spec.select248.prol, %scalar.ph426.prol ]
  %indvars.iv381.unr = phi i64 [ %indvars.iv381.ph, %scalar.ph426.preheader ], [ %indvars.iv.next382.prol, %scalar.ph426.prol ]
  %.0177327.unr = phi i32 [ %.0177327.ph, %scalar.ph426.preheader ], [ %spec.select248.prol, %scalar.ph426.prol ]
  %215 = add nsw i64 %wide.trip.count384, -1
  %216 = icmp eq i64 %indvars.iv381.ph, %215
  br i1 %216, label %.loopexit465, label %scalar.ph426

vector.scevcheck423:                              ; preds = %.preheader255
  %ident.check424 = icmp ne i32 %204, 1
  %217 = xor i64 %205, -1
  %218 = add nsw i64 %217, %wide.trip.count384
  %219 = add i32 %.1143.lcssa, %202
  %220 = trunc i64 %218 to i32
  %221 = xor i32 %219, -1
  %222 = icmp ult i32 %221, %220
  %223 = icmp ugt i64 %218, 4294967295
  %224 = or i1 %222, %223
  %225 = or i1 %ident.check424, %224
  br i1 %225, label %scalar.ph426.preheader, label %vector.ph428

vector.ph428:                                     ; preds = %vector.scevcheck423
  %n.vec430 = and i64 %206, -8
  %ind.end431 = add nsw i64 %n.vec430, %205
  br label %vector.body433

vector.body433:                                   ; preds = %vector.body433, %vector.ph428
  %index434 = phi i64 [ 0, %vector.ph428 ], [ %index.next440, %vector.body433 ]
  %vec.phi435 = phi <4 x i32> [ zeroinitializer, %vector.ph428 ], [ %236, %vector.body433 ]
  %vec.phi436 = phi <4 x i32> [ zeroinitializer, %vector.ph428 ], [ %237, %vector.body433 ]
  %226 = trunc i64 %index434 to i32
  %227 = add i32 %.1143.lcssa, %226
  %228 = add i32 %227, %202
  %229 = zext i32 %228 to i64
  %230 = getelementptr inbounds i32, ptr %199, i64 %229
  %231 = getelementptr inbounds i8, ptr %230, i64 16
  %wide.load438 = load <4 x i32>, ptr %230, align 4, !tbaa !49
  %wide.load439 = load <4 x i32>, ptr %231, align 4, !tbaa !49
  %232 = icmp ne <4 x i32> %wide.load438, zeroinitializer
  %233 = icmp ne <4 x i32> %wide.load439, zeroinitializer
  %234 = zext <4 x i1> %232 to <4 x i32>
  %235 = zext <4 x i1> %233 to <4 x i32>
  %236 = add <4 x i32> %vec.phi435, %234
  %237 = add <4 x i32> %vec.phi436, %235
  %index.next440 = add nuw i64 %index434, 8
  %238 = icmp eq i64 %index.next440, %n.vec430
  br i1 %238, label %middle.block425, label %vector.body433, !llvm.loop !60

middle.block425:                                  ; preds = %vector.body433
  %bin.rdx441 = add <4 x i32> %237, %236
  %239 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx441)
  %cmp.n442 = icmp eq i64 %206, %n.vec430
  br i1 %cmp.n442, label %.loopexit465, label %scalar.ph426.preheader

.loopexit465:                                     ; preds = %scalar.ph426.prol.loopexit, %scalar.ph426, %middle.block425
  %spec.select248.lcssa = phi i32 [ %239, %middle.block425 ], [ %spec.select248.lcssa469.unr, %scalar.ph426.prol.loopexit ], [ %spec.select248.1, %scalar.ph426 ]
  %240 = icmp eq i32 %spec.select248.lcssa, 0
  %241 = icmp sgt i32 %.2149.lcssa, 0
  %or.cond = select i1 %240, i1 %241, i1 false
  br i1 %or.cond, label %257, label %265

scalar.ph426:                                     ; preds = %scalar.ph426.prol.loopexit, %scalar.ph426
  %indvars.iv381 = phi i64 [ %indvars.iv.next382.1, %scalar.ph426 ], [ %indvars.iv381.unr, %scalar.ph426.prol.loopexit ]
  %.0177327 = phi i32 [ %spec.select248.1, %scalar.ph426 ], [ %.0177327.unr, %scalar.ph426.prol.loopexit ]
  %242 = trunc nuw i64 %indvars.iv381 to i32
  %243 = mul i32 %204, %242
  %244 = add i32 %243, %202
  %245 = zext i32 %244 to i64
  %246 = getelementptr inbounds i32, ptr %199, i64 %245
  %247 = load i32, ptr %246, align 4, !tbaa !49
  %.not229 = icmp ne i32 %247, 0
  %248 = zext i1 %.not229 to i32
  %spec.select248 = add nuw nsw i32 %.0177327, %248
  %249 = trunc i64 %indvars.iv381 to i32
  %250 = add i32 %249, 1
  %251 = mul i32 %204, %250
  %252 = add i32 %251, %202
  %253 = zext i32 %252 to i64
  %254 = getelementptr inbounds i32, ptr %199, i64 %253
  %255 = load i32, ptr %254, align 4, !tbaa !49
  %.not229.1 = icmp ne i32 %255, 0
  %256 = zext i1 %.not229.1 to i32
  %spec.select248.1 = add nuw nsw i32 %spec.select248, %256
  %indvars.iv.next382.1 = add nuw nsw i64 %indvars.iv381, 2
  %exitcond385.not.1 = icmp eq i64 %indvars.iv.next382.1, %wide.trip.count384
  br i1 %exitcond385.not.1, label %.loopexit465, label %scalar.ph426, !llvm.loop !61

257:                                              ; preds = %.loopexit465
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #12
  call void @_ZN8SparseVNC2Ejb(ptr noundef nonnull align 4 dereferenceable(5) %8, i32 noundef %.2149.lcssa, i1 noundef zeroext false)
  invoke void @_ZNSt6vectorI8SparseVNSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 4 dereferenceable(5) %8)
          to label %258 unwind label %260

258:                                              ; preds = %257
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #12
  store i32 0, ptr %9, align 4, !tbaa !49
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 4 dereferenceable(4) %9)
          to label %259 unwind label %262

259:                                              ; preds = %258
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #12
  br label %265

260:                                              ; preds = %257
  %261 = landingpad { ptr, i32 }
          cleanup
  br label %264

262:                                              ; preds = %258
  %263 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #12
  br label %264

264:                                              ; preds = %262, %260
  %.pn224 = phi { ptr, i32 } [ %263, %262 ], [ %261, %260 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #12
  br label %814

265:                                              ; preds = %.loopexit465, %259, %194, %.critedge2
  %266 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #12
  %267 = icmp eq i64 %266, 0
  br i1 %267, label %268, label %338

268:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #12
  call void @_ZN8SparseVNC2Ejb(ptr noundef nonnull align 4 dereferenceable(5) %10, i32 noundef %.2149.lcssa, i1 noundef zeroext false)
  invoke void @_ZNSt6vectorI8SparseVNSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 4 dereferenceable(5) %10)
          to label %269 unwind label %316

269:                                              ; preds = %268
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #12
  store i32 0, ptr %11, align 4, !tbaa !49
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %270 unwind label %318

270:                                              ; preds = %269
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #12
  %271 = getelementptr inbounds i8, ptr %0, i64 88
  %272 = load i32, ptr %271, align 8, !tbaa !52
  %273 = icmp ult i32 %.1143.lcssa, %272
  br i1 %273, label %.lr.ph331, label %._crit_edge332.thread

.lr.ph331:                                        ; preds = %270
  %274 = getelementptr inbounds i8, ptr %0, i64 312
  %275 = load ptr, ptr %274, align 8, !tbaa !46
  %276 = getelementptr inbounds i8, ptr %0, i64 100
  %277 = load i32, ptr %276, align 4, !tbaa !47
  %278 = mul i32 %277, %.0.lcssa
  %279 = getelementptr inbounds i8, ptr %0, i64 96
  %280 = load i32, ptr %279, align 8, !tbaa !48
  %281 = zext i32 %.1143.lcssa to i64
  %wide.trip.count389 = zext i32 %272 to i64
  %282 = sub nsw i64 %wide.trip.count389, %281
  %min.iters.check448 = icmp ult i64 %282, 16
  br i1 %min.iters.check448, label %scalar.ph447.preheader, label %vector.scevcheck444

scalar.ph447.preheader:                           ; preds = %middle.block446, %vector.scevcheck444, %.lr.ph331
  %indvars.iv386.ph = phi i64 [ %281, %vector.scevcheck444 ], [ %281, %.lr.ph331 ], [ %ind.end452, %middle.block446 ]
  %.0181329.ph = phi i32 [ 0, %vector.scevcheck444 ], [ 0, %.lr.ph331 ], [ %315, %middle.block446 ]
  %283 = sub nsw i64 %wide.trip.count389, %indvars.iv386.ph
  %xtraiter486 = and i64 %283, 1
  %lcmp.mod487.not = icmp eq i64 %xtraiter486, 0
  br i1 %lcmp.mod487.not, label %scalar.ph447.prol.loopexit, label %scalar.ph447.prol

scalar.ph447.prol:                                ; preds = %scalar.ph447.preheader
  %284 = trunc nuw i64 %indvars.iv386.ph to i32
  %285 = mul i32 %280, %284
  %286 = add i32 %285, %278
  %287 = zext i32 %286 to i64
  %288 = getelementptr inbounds i32, ptr %275, i64 %287
  %289 = load i32, ptr %288, align 4, !tbaa !49
  %.not228.prol = icmp ne i32 %289, 0
  %290 = zext i1 %.not228.prol to i32
  %spec.select249.prol = add nuw nsw i32 %.0181329.ph, %290
  %indvars.iv.next387.prol = add nuw nsw i64 %indvars.iv386.ph, 1
  br label %scalar.ph447.prol.loopexit

scalar.ph447.prol.loopexit:                       ; preds = %scalar.ph447.prol, %scalar.ph447.preheader
  %spec.select249.lcssa466.unr = phi i32 [ poison, %scalar.ph447.preheader ], [ %spec.select249.prol, %scalar.ph447.prol ]
  %indvars.iv386.unr = phi i64 [ %indvars.iv386.ph, %scalar.ph447.preheader ], [ %indvars.iv.next387.prol, %scalar.ph447.prol ]
  %.0181329.unr = phi i32 [ %.0181329.ph, %scalar.ph447.preheader ], [ %spec.select249.prol, %scalar.ph447.prol ]
  %291 = add nsw i64 %wide.trip.count389, -1
  %292 = icmp eq i64 %indvars.iv386.ph, %291
  br i1 %292, label %._crit_edge332, label %scalar.ph447

vector.scevcheck444:                              ; preds = %.lr.ph331
  %ident.check445 = icmp ne i32 %280, 1
  %293 = xor i64 %281, -1
  %294 = add nsw i64 %293, %wide.trip.count389
  %295 = add i32 %.1143.lcssa, %278
  %296 = trunc i64 %294 to i32
  %297 = xor i32 %295, -1
  %298 = icmp ult i32 %297, %296
  %299 = icmp ugt i64 %294, 4294967295
  %300 = or i1 %298, %299
  %301 = or i1 %ident.check445, %300
  br i1 %301, label %scalar.ph447.preheader, label %vector.ph449

vector.ph449:                                     ; preds = %vector.scevcheck444
  %n.vec451 = and i64 %282, -8
  %ind.end452 = add nsw i64 %n.vec451, %281
  br label %vector.body454

vector.body454:                                   ; preds = %vector.body454, %vector.ph449
  %index455 = phi i64 [ 0, %vector.ph449 ], [ %index.next461, %vector.body454 ]
  %vec.phi456 = phi <4 x i32> [ zeroinitializer, %vector.ph449 ], [ %312, %vector.body454 ]
  %vec.phi457 = phi <4 x i32> [ zeroinitializer, %vector.ph449 ], [ %313, %vector.body454 ]
  %302 = trunc i64 %index455 to i32
  %303 = add i32 %.1143.lcssa, %302
  %304 = add i32 %303, %278
  %305 = zext i32 %304 to i64
  %306 = getelementptr inbounds i32, ptr %275, i64 %305
  %307 = getelementptr inbounds i8, ptr %306, i64 16
  %wide.load459 = load <4 x i32>, ptr %306, align 4, !tbaa !49
  %wide.load460 = load <4 x i32>, ptr %307, align 4, !tbaa !49
  %308 = icmp ne <4 x i32> %wide.load459, zeroinitializer
  %309 = icmp ne <4 x i32> %wide.load460, zeroinitializer
  %310 = zext <4 x i1> %308 to <4 x i32>
  %311 = zext <4 x i1> %309 to <4 x i32>
  %312 = add <4 x i32> %vec.phi456, %310
  %313 = add <4 x i32> %vec.phi457, %311
  %index.next461 = add nuw i64 %index455, 8
  %314 = icmp eq i64 %index.next461, %n.vec451
  br i1 %314, label %middle.block446, label %vector.body454, !llvm.loop !62

middle.block446:                                  ; preds = %vector.body454
  %bin.rdx462 = add <4 x i32> %313, %312
  %315 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx462)
  %cmp.n463 = icmp eq i64 %282, %n.vec451
  br i1 %cmp.n463, label %._crit_edge332, label %scalar.ph447.preheader

._crit_edge332:                                   ; preds = %scalar.ph447.prol.loopexit, %scalar.ph447, %middle.block446
  %spec.select249.lcssa = phi i32 [ %315, %middle.block446 ], [ %spec.select249.lcssa466.unr, %scalar.ph447.prol.loopexit ], [ %spec.select249.1, %scalar.ph447 ]
  %.not413 = icmp eq i32 %spec.select249.lcssa, 0
  br i1 %.not413, label %._crit_edge332.thread, label %335

316:                                              ; preds = %268
  %317 = landingpad { ptr, i32 }
          cleanup
  br label %337

318:                                              ; preds = %269
  %319 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #12
  br label %337

scalar.ph447:                                     ; preds = %scalar.ph447.prol.loopexit, %scalar.ph447
  %indvars.iv386 = phi i64 [ %indvars.iv.next387.1, %scalar.ph447 ], [ %indvars.iv386.unr, %scalar.ph447.prol.loopexit ]
  %.0181329 = phi i32 [ %spec.select249.1, %scalar.ph447 ], [ %.0181329.unr, %scalar.ph447.prol.loopexit ]
  %320 = trunc nuw i64 %indvars.iv386 to i32
  %321 = mul i32 %280, %320
  %322 = add i32 %321, %278
  %323 = zext i32 %322 to i64
  %324 = getelementptr inbounds i32, ptr %275, i64 %323
  %325 = load i32, ptr %324, align 4, !tbaa !49
  %.not228 = icmp ne i32 %325, 0
  %326 = zext i1 %.not228 to i32
  %spec.select249 = add nuw nsw i32 %.0181329, %326
  %327 = trunc i64 %indvars.iv386 to i32
  %328 = add i32 %327, 1
  %329 = mul i32 %280, %328
  %330 = add i32 %329, %278
  %331 = zext i32 %330 to i64
  %332 = getelementptr inbounds i32, ptr %275, i64 %331
  %333 = load i32, ptr %332, align 4, !tbaa !49
  %.not228.1 = icmp ne i32 %333, 0
  %334 = zext i1 %.not228.1 to i32
  %spec.select249.1 = add nuw nsw i32 %spec.select249, %334
  %indvars.iv.next387.1 = add nuw nsw i64 %indvars.iv386, 2
  %exitcond390.not.1 = icmp eq i64 %indvars.iv.next387.1, %wide.trip.count389
  br i1 %exitcond390.not.1, label %._crit_edge332, label %scalar.ph447, !llvm.loop !63

._crit_edge332.thread:                            ; preds = %270, %._crit_edge332
  br label %335

335:                                              ; preds = %._crit_edge332, %._crit_edge332.thread
  %.sink397 = phi i32 [ %272, %._crit_edge332.thread ], [ %.1143.lcssa, %._crit_edge332 ]
  %336 = getelementptr inbounds i8, ptr %0, i64 368
  store i32 %.sink397, ptr %336, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  br label %342

337:                                              ; preds = %318, %316
  %.pn226 = phi { ptr, i32 } [ %319, %318 ], [ %317, %316 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  br label %814

338:                                              ; preds = %265
  %339 = getelementptr inbounds i8, ptr %0, i64 88
  %340 = load i32, ptr %339, align 8, !tbaa !52
  %341 = getelementptr inbounds i8, ptr %0, i64 368
  store i32 %340, ptr %341, align 8, !tbaa !64
  br label %342

342:                                              ; preds = %335, %338, %150
  %343 = phi i32 [ %272, %335 ], [ %340, %338 ], [ %87, %150 ]
  %344 = getelementptr inbounds i8, ptr %0, i64 92
  %345 = load i32, ptr %344, align 4, !tbaa !65
  %.not357 = icmp eq i32 %345, 0
  br i1 %.not357, label %._crit_edge342, label %.preheader254.lr.ph

.preheader254.lr.ph:                              ; preds = %342
  %346 = getelementptr inbounds i8, ptr %0, i64 88
  %347 = getelementptr inbounds i8, ptr %0, i64 320
  %348 = load ptr, ptr %347, align 8
  %349 = getelementptr inbounds i8, ptr %0, i64 108
  %350 = getelementptr inbounds i8, ptr %0, i64 104
  %351 = getelementptr inbounds i8, ptr %0, i64 344
  %.not358 = icmp eq i32 %343, 0
  br i1 %.not358, label %._crit_edge342, label %.preheader254

.preheader254:                                    ; preds = %.preheader254.lr.ph, %._crit_edge338
  %352 = phi i32 [ %360, %._crit_edge338 ], [ %345, %.preheader254.lr.ph ]
  %353 = phi i32 [ %361, %._crit_edge338 ], [ %343, %.preheader254.lr.ph ]
  %354 = phi i32 [ %362, %._crit_edge338 ], [ 1, %.preheader254.lr.ph ]
  %.0185341 = phi i32 [ %.1186.lcssa, %._crit_edge338 ], [ 0, %.preheader254.lr.ph ]
  %.0189340 = phi i32 [ %363, %._crit_edge338 ], [ 0, %.preheader254.lr.ph ]
  %.not359 = icmp eq i32 %354, 0
  br i1 %.not359, label %._crit_edge338, label %.lr.ph337

.lr.ph337:                                        ; preds = %.preheader254
  %355 = load ptr, ptr %351, align 8
  br label %365

._crit_edge342:                                   ; preds = %._crit_edge338, %.preheader254.lr.ph, %342
  %.0185.lcssa = phi i32 [ 0, %342 ], [ 0, %.preheader254.lr.ph ], [ %.1186.lcssa, %._crit_edge338 ]
  %356 = getelementptr inbounds i8, ptr %0, i64 400
  store i32 %.0185.lcssa, ptr %356, align 8, !tbaa !66
  %357 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #12
  %358 = icmp eq i64 %357, 0
  br i1 %358, label %382, label %.preheader253

.preheader253:                                    ; preds = %._crit_edge342
  %359 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #12
  %.not360 = icmp eq i64 %359, 0
  br i1 %.not360, label %._crit_edge346, label %.lr.ph345

._crit_edge338.loopexit:                          ; preds = %378
  %.pre401 = load i32, ptr %344, align 4, !tbaa !65
  br label %._crit_edge338

._crit_edge338:                                   ; preds = %._crit_edge338.loopexit, %.preheader254
  %360 = phi i32 [ %352, %.preheader254 ], [ %.pre401, %._crit_edge338.loopexit ]
  %361 = phi i32 [ %353, %.preheader254 ], [ %379, %._crit_edge338.loopexit ]
  %362 = phi i32 [ 0, %.preheader254 ], [ %379, %._crit_edge338.loopexit ]
  %.1186.lcssa = phi i32 [ %.0185341, %.preheader254 ], [ %.2187, %._crit_edge338.loopexit ]
  %363 = add nuw nsw i32 %.0189340, 1
  %364 = icmp ult i32 %363, %360
  br i1 %364, label %.preheader254, label %._crit_edge342, !llvm.loop !67

365:                                              ; preds = %.lr.ph337, %378
  %366 = phi i32 [ %353, %.lr.ph337 ], [ %379, %378 ]
  %.1186336 = phi i32 [ %.0185341, %.lr.ph337 ], [ %.2187, %378 ]
  %.0191335 = phi i32 [ 0, %.lr.ph337 ], [ %380, %378 ]
  %367 = load i32, ptr %349, align 4, !tbaa !69
  %368 = mul i32 %367, %.0189340
  %369 = load i32, ptr %350, align 8, !tbaa !70
  %370 = mul i32 %369, %.0191335
  %371 = add i32 %370, %368
  %372 = zext i32 %371 to i64
  %373 = getelementptr inbounds i32, ptr %348, i64 %372
  %374 = load i32, ptr %373, align 4, !tbaa !49
  %.not242 = icmp eq i32 %374, 0
  br i1 %.not242, label %378, label %375

375:                                              ; preds = %365
  %376 = getelementptr inbounds i32, ptr %355, i64 %372
  store i32 %.1186336, ptr %376, align 4, !tbaa !49
  %377 = add i32 %.1186336, 1
  %.pre400 = load i32, ptr %346, align 8, !tbaa !52
  br label %378

378:                                              ; preds = %365, %375
  %379 = phi i32 [ %.pre400, %375 ], [ %366, %365 ]
  %.2187 = phi i32 [ %377, %375 ], [ %.1186336, %365 ]
  %380 = add nuw nsw i32 %.0191335, 1
  %381 = icmp ult i32 %380, %379
  br i1 %381, label %365, label %._crit_edge338.loopexit, !llvm.loop !71

382:                                              ; preds = %._crit_edge342
  %383 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.12)
          to label %384 unwind label %390

384:                                              ; preds = %382
  %385 = load i32, ptr %39, align 4, !tbaa !43
  %386 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %383, i32 noundef %385)
          to label %387 unwind label %390

387:                                              ; preds = %384
  %388 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %386, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %389 unwind label %390

389:                                              ; preds = %387
  call void @__assert_fail(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 347, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14SparseSDMemory5cycleEv) #11
  unreachable

390:                                              ; preds = %456, %454, %446, %440, %430, %424, %422, %417, %387, %384, %382
  %391 = landingpad { ptr, i32 }
          cleanup
  br label %814

._crit_edge346:                                   ; preds = %409, %.preheader253
  %392 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #12
  %393 = getelementptr inbounds i8, ptr %0, i64 476
  %394 = load i32, ptr %393, align 4, !tbaa !72
  %395 = trunc i64 %392 to i32
  %396 = add i32 %394, %395
  store i32 %396, ptr %393, align 4, !tbaa !72
  %397 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #12
  %398 = getelementptr inbounds i8, ptr %0, i64 480
  %399 = load i32, ptr %398, align 8, !tbaa !73
  %400 = zext i32 %399 to i64
  %401 = icmp ugt i64 %397, %400
  br i1 %401, label %414, label %417

.lr.ph345:                                        ; preds = %.preheader253, %409
  %indvars.iv391 = phi i64 [ %indvars.iv.next392, %409 ], [ 0, %.preheader253 ]
  %402 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.13)
          to label %403 unwind label %412

403:                                              ; preds = %.lr.ph345
  %404 = call noundef nonnull align 4 dereferenceable(5) ptr @_ZNSt6vectorI8SparseVNSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %indvars.iv391) #12
  %405 = call noundef i32 @_ZN8SparseVN11get_VN_SizeEv(ptr noundef nonnull align 4 dereferenceable(5) %404)
  %406 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %402, i32 noundef %405)
          to label %407 unwind label %412

407:                                              ; preds = %403
  %408 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %406, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %409 unwind label %412

409:                                              ; preds = %407
  %indvars.iv.next392 = add nuw nsw i64 %indvars.iv391, 1
  %410 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #12
  %411 = icmp ugt i64 %410, %indvars.iv.next392
  br i1 %411, label %.lr.ph345, label %._crit_edge346, !llvm.loop !74

412:                                              ; preds = %407, %403, %.lr.ph345
  %413 = landingpad { ptr, i32 }
          cleanup
  br label %814

414:                                              ; preds = %._crit_edge346
  %415 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #12
  %416 = trunc i64 %415 to i32
  store i32 %416, ptr %398, align 8, !tbaa !73
  br label %417

417:                                              ; preds = %414, %._crit_edge346
  %418 = getelementptr inbounds i8, ptr %0, i64 484
  %419 = load i32, ptr %418, align 4, !tbaa !75
  %420 = add i32 %419, 1
  store i32 %420, ptr %418, align 4, !tbaa !75
  %421 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.14)
          to label %422 unwind label %390

422:                                              ; preds = %417
  %423 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %421, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %424 unwind label %390

424:                                              ; preds = %422
  %425 = getelementptr inbounds i8, ptr %0, i64 64
  %426 = load ptr, ptr %425, align 8, !tbaa !76
  %427 = load ptr, ptr %426, align 8, !tbaa !77
  %428 = getelementptr inbounds i8, ptr %427, i64 64
  %429 = load ptr, ptr %428, align 8
  invoke void %429(ptr noundef nonnull align 8 dereferenceable(48) %426)
          to label %430 unwind label %390

430:                                              ; preds = %424
  %431 = load ptr, ptr %425, align 8, !tbaa !76
  invoke void @_ZNSt6vectorI8SparseVNSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(24) %41)
          to label %432 unwind label %390

432:                                              ; preds = %430
  %433 = getelementptr inbounds i8, ptr %0, i64 48
  %434 = load ptr, ptr %433, align 8, !tbaa !79
  %435 = getelementptr inbounds i8, ptr %0, i64 208
  %436 = load i32, ptr %435, align 8, !tbaa !45
  %437 = load ptr, ptr %431, align 8, !tbaa !77
  %438 = getelementptr inbounds i8, ptr %437, i64 56
  %439 = load ptr, ptr %438, align 8
  invoke void %439(ptr noundef nonnull align 8 dereferenceable(48) %431, ptr noundef nonnull %12, ptr noundef %434, i32 noundef %436)
          to label %440 unwind label %464

440:                                              ; preds = %432
  call void @_ZNSt6vectorI8SparseVNSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #12
  %441 = getelementptr inbounds i8, ptr %0, i64 56
  %442 = load ptr, ptr %441, align 8, !tbaa !80
  %443 = load ptr, ptr %442, align 8, !tbaa !77
  %444 = getelementptr inbounds i8, ptr %443, i64 72
  %445 = load ptr, ptr %444, align 8
  invoke void %445(ptr noundef nonnull align 8 dereferenceable(48) %442)
          to label %446 unwind label %390

446:                                              ; preds = %440
  %447 = load ptr, ptr %441, align 8, !tbaa !80
  invoke void @_ZNSt6vectorI8SparseVNSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %41)
          to label %448 unwind label %390

448:                                              ; preds = %446
  %449 = load ptr, ptr %433, align 8, !tbaa !79
  %450 = load i32, ptr %435, align 8, !tbaa !45
  %451 = load ptr, ptr %447, align 8, !tbaa !77
  %452 = getelementptr inbounds i8, ptr %451, i64 64
  %453 = load ptr, ptr %452, align 8
  invoke void %453(ptr noundef nonnull align 8 dereferenceable(48) %447, ptr noundef nonnull %13, ptr noundef %449, i32 noundef %450)
          to label %454 unwind label %466

454:                                              ; preds = %448
  call void @_ZNSt6vectorI8SparseVNSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #12
  %455 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.15)
          to label %456 unwind label %390

456:                                              ; preds = %454
  %457 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %455, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %458 unwind label %390

458:                                              ; preds = %456
  %459 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #12
  %460 = load i32, ptr %344, align 4, !tbaa !65
  %461 = trunc i64 %459 to i32
  %462 = mul i32 %460, %461
  %463 = getelementptr inbounds i8, ptr %0, i64 392
  store i32 %462, ptr %463, align 8, !tbaa !81
  br label %.loopexit259

464:                                              ; preds = %432
  %465 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI8SparseVNSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #12
  br label %814

466:                                              ; preds = %448
  %467 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI8SparseVNSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #12
  br label %814

468:                                              ; preds = %.lr.ph299, %._crit_edge294
  %indvars.iv373 = phi i64 [ 0, %.lr.ph299 ], [ %indvars.iv.next374, %._crit_edge294 ]
  %.0194298 = phi i32 [ 0, %.lr.ph299 ], [ %.2196.lcssa, %._crit_edge294 ]
  %.0197297 = phi i32 [ 0, %.lr.ph299 ], [ %.1198.lcssa, %._crit_edge294 ]
  %469 = call noundef nonnull align 4 dereferenceable(5) ptr @_ZNSt6vectorI8SparseVNSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %indvars.iv373) #12
  %470 = call noundef zeroext i1 @_ZN8SparseVN10getFoldingEv(ptr noundef nonnull align 4 dereferenceable(5) %469)
  %spec.select250 = zext i1 %470 to i32
  %spec.select251 = add i32 %.0194298, %spec.select250
  %471 = call noundef nonnull align 4 dereferenceable(5) ptr @_ZNSt6vectorI8SparseVNSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %indvars.iv373) #12
  %472 = call noundef i32 @_ZN8SparseVN11get_VN_SizeEv(ptr noundef nonnull align 4 dereferenceable(5) %471)
  %473 = icmp ugt i32 %472, %spec.select250
  br i1 %473, label %.lr.ph293, label %._crit_edge294

.lr.ph293:                                        ; preds = %468, %487
  %.2196291 = phi i32 [ %488, %487 ], [ %spec.select251, %468 ]
  %.1198290 = phi i32 [ %489, %487 ], [ %.0197297, %468 ]
  %.1201289 = phi i32 [ %490, %487 ], [ %spec.select250, %468 ]
  %474 = load ptr, ptr %34, align 8, !tbaa !82
  %475 = load i32, ptr %35, align 8, !tbaa !83
  %476 = add i32 %475, %.1198290
  %477 = zext i32 %476 to i64
  %478 = getelementptr inbounds float, ptr %474, i64 %477
  %479 = load float, ptr %478, align 4, !tbaa !84
  %480 = load i32, ptr %36, align 4, !tbaa !86
  %481 = add i32 %480, 1
  store i32 %481, ptr %36, align 4, !tbaa !86
  %482 = load i32, ptr %37, align 4, !tbaa !87
  %483 = add i32 %482, 1
  store i32 %483, ptr %37, align 4, !tbaa !87
  %484 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #13
          to label %485 unwind label %494

485:                                              ; preds = %.lr.ph293
  invoke void @_ZN11DataPackageC1Emf9operand_tj9traffic_tj(ptr noundef nonnull align 8 dereferenceable(64) %484, i64 noundef 4, float noundef %479, i32 noundef 0, i32 noundef 0, i32 noundef 2, i32 noundef %.2196291)
          to label %486 unwind label %496

486:                                              ; preds = %485
  invoke void @_ZN14SparseSDMemory23sendPackageToInputFifosEP11DataPackage(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull %484)
          to label %487 unwind label %494

487:                                              ; preds = %486
  %488 = add i32 %.2196291, 1
  %489 = add i32 %.1198290, 1
  %490 = add nuw nsw i32 %.1201289, 1
  %491 = call noundef nonnull align 4 dereferenceable(5) ptr @_ZNSt6vectorI8SparseVNSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %indvars.iv373) #12
  %492 = call noundef i32 @_ZN8SparseVN11get_VN_SizeEv(ptr noundef nonnull align 4 dereferenceable(5) %491)
  %493 = icmp ult i32 %490, %492
  br i1 %493, label %.lr.ph293, label %._crit_edge294, !llvm.loop !88

494:                                              ; preds = %486, %.lr.ph293
  %495 = landingpad { ptr, i32 }
          cleanup
  br label %814

496:                                              ; preds = %485
  %497 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %484, i64 noundef 64) #14
  br label %814

._crit_edge294:                                   ; preds = %487, %468
  %.1198.lcssa = phi i32 [ %.0197297, %468 ], [ %489, %487 ]
  %.2196.lcssa = phi i32 [ %spec.select251, %468 ], [ %488, %487 ]
  %indvars.iv.next374 = add nuw nsw i64 %indvars.iv373, 1
  %498 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %32) #12
  %499 = icmp ugt i64 %498, %indvars.iv.next374
  br i1 %499, label %468, label %.loopexit259, !llvm.loop !89

500:                                              ; preds = %23
  %501 = getelementptr inbounds i8, ptr %0, i64 364
  %502 = load i32, ptr %501, align 4, !tbaa !44
  %503 = getelementptr inbounds i8, ptr %0, i64 368
  %504 = load i32, ptr %503, align 8, !tbaa !64
  %.not = icmp eq i32 %502, 0
  br i1 %.not, label %543, label %505

505:                                              ; preds = %500
  %506 = getelementptr inbounds i8, ptr %0, i64 136
  %507 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %506) #12
  %508 = icmp eq i64 %507, 1
  br i1 %508, label %510, label %509

509:                                              ; preds = %505
  call void @__assert_fail(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 399, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14SparseSDMemory5cycleEv) #11
  unreachable

510:                                              ; preds = %505
  %511 = getelementptr inbounds i8, ptr %0, i64 356
  %512 = load i32, ptr %511, align 4, !tbaa !43
  %513 = getelementptr inbounds i8, ptr %0, i64 112
  %514 = load i32, ptr %513, align 8, !tbaa !90
  %515 = mul i32 %514, %512
  %516 = getelementptr inbounds i8, ptr %0, i64 352
  %517 = load i32, ptr %516, align 8, !tbaa !91
  %518 = getelementptr inbounds i8, ptr %0, i64 116
  %519 = load i32, ptr %518, align 4, !tbaa !92
  %520 = mul i32 %519, %517
  %521 = add i32 %520, %515
  %522 = getelementptr inbounds i8, ptr %0, i64 208
  %523 = load i32, ptr %522, align 8, !tbaa !45
  %524 = zext i32 %523 to i64
  %525 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %524) #13
          to label %.preheader261 unwind label %532

.preheader261:                                    ; preds = %510
  %.not353 = icmp eq i32 %523, 0
  br i1 %.not353, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %.preheader261
  call void @llvm.memset.p0.i64(ptr nonnull align 1 %525, i8 0, i64 %524, i1 false), !tbaa !93
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.preheader, %.preheader261
  store i8 1, ptr %525, align 1, !tbaa !93
  %526 = getelementptr inbounds i8, ptr %0, i64 304
  %527 = load ptr, ptr %526, align 8, !tbaa !94
  %528 = zext i32 %521 to i64
  %529 = getelementptr inbounds float, ptr %527, i64 %528
  %530 = load float, ptr %529, align 4, !tbaa !84
  %531 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #13
          to label %534 unwind label %539

532:                                              ; preds = %510
  %533 = landingpad { ptr, i32 }
          cleanup
  br label %814

534:                                              ; preds = %._crit_edge
  invoke void @_ZN11DataPackageC1Emf9operand_tj9traffic_tPbj(ptr noundef nonnull align 8 dereferenceable(64) %531, i64 noundef 4, float noundef %530, i32 noundef 3, i32 noundef 0, i32 noundef 1, ptr noundef nonnull %525, i32 noundef %523)
          to label %535 unwind label %541

535:                                              ; preds = %534
  %536 = getelementptr inbounds i8, ptr %0, i64 460
  %537 = load i32, ptr %536, align 4, !tbaa !95
  %538 = add i32 %537, 1
  store i32 %538, ptr %536, align 4, !tbaa !95
  invoke void @_ZN14SparseSDMemory23sendPackageToInputFifosEP11DataPackage(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull %531)
          to label %543 unwind label %539

539:                                              ; preds = %535, %._crit_edge
  %540 = landingpad { ptr, i32 }
          cleanup
  br label %814

541:                                              ; preds = %534
  %542 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %531, i64 noundef 64) #14
  br label %814

543:                                              ; preds = %535, %500
  %544 = icmp slt i32 %502, %504
  br i1 %544, label %.lr.ph287, label %._crit_edge288

.lr.ph287:                                        ; preds = %543
  %545 = getelementptr inbounds i8, ptr %0, i64 208
  %546 = getelementptr inbounds i8, ptr %0, i64 356
  %547 = getelementptr inbounds i8, ptr %0, i64 136
  %548 = getelementptr inbounds i8, ptr %0, i64 312
  %549 = getelementptr inbounds i8, ptr %0, i64 100
  %550 = getelementptr inbounds i8, ptr %0, i64 96
  %551 = getelementptr inbounds i8, ptr %0, i64 336
  %552 = getelementptr inbounds i8, ptr %0, i64 320
  %553 = getelementptr inbounds i8, ptr %0, i64 352
  %554 = getelementptr inbounds i8, ptr %0, i64 108
  %555 = getelementptr inbounds i8, ptr %0, i64 104
  %556 = getelementptr inbounds i8, ptr %0, i64 344
  %557 = getelementptr inbounds i8, ptr %0, i64 296
  %558 = getelementptr inbounds i8, ptr %0, i64 456
  br label %562

._crit_edge288:                                   ; preds = %642, %543
  %559 = getelementptr inbounds i8, ptr %0, i64 352
  %560 = load i32, ptr %559, align 8, !tbaa !91
  %561 = add i32 %560, 1
  store i32 %561, ptr %559, align 8, !tbaa !91
  br label %.loopexit259

562:                                              ; preds = %.lr.ph287, %642
  %.0190285 = phi i32 [ %502, %.lr.ph287 ], [ %643, %642 ]
  %563 = load i32, ptr %545, align 8, !tbaa !45
  %564 = zext i32 %563 to i64
  %565 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %564) #13
          to label %.preheader260 unwind label %590

.preheader260:                                    ; preds = %562
  %.not354 = icmp eq i32 %563, 0
  br i1 %.not354, label %._crit_edge280, label %.lr.ph279.preheader

.lr.ph279.preheader:                              ; preds = %.preheader260
  call void @llvm.memset.p0.i64(ptr nonnull align 1 %565, i8 0, i64 %564, i1 false), !tbaa !93
  br label %._crit_edge280

._crit_edge280:                                   ; preds = %.lr.ph279.preheader, %.preheader260
  %566 = load i32, ptr %546, align 4, !tbaa !43
  %567 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %547) #12
  %568 = trunc i64 %567 to i32
  %569 = add i32 %566, %568
  %570 = icmp ult i32 %566, %569
  br i1 %570, label %.lr.ph283, label %._crit_edge284

.lr.ph283:                                        ; preds = %._crit_edge280
  %571 = load ptr, ptr %548, align 8, !tbaa !46
  %572 = load i32, ptr %549, align 4, !tbaa !47
  %573 = load i32, ptr %550, align 8, !tbaa !48
  %574 = mul i32 %573, %.0190285
  %575 = load ptr, ptr %551, align 8
  %576 = zext i32 %566 to i64
  %wide.trip.count = zext i32 %569 to i64
  %577 = sub nsw i64 %wide.trip.count, %576
  %xtraiter = and i64 %577, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.prol.loopexit, label %.prol.preheader

.prol.preheader:                                  ; preds = %.lr.ph283
  %578 = mul i32 %572, %566
  %579 = add i32 %574, %578
  %580 = zext i32 %579 to i64
  %581 = getelementptr inbounds i32, ptr %571, i64 %580
  %582 = load i32, ptr %581, align 4, !tbaa !49
  %.not219.prol = icmp eq i32 %582, 0
  br i1 %.not219.prol, label %.prol.loopexit.unr-lcssa, label %583

583:                                              ; preds = %.prol.preheader
  %584 = getelementptr inbounds i32, ptr %575, i64 %580
  %585 = load i32, ptr %584, align 4, !tbaa !49
  %586 = zext i32 %585 to i64
  %587 = getelementptr inbounds i8, ptr %565, i64 %586
  store i8 1, ptr %587, align 1, !tbaa !93
  br label %.prol.loopexit.unr-lcssa

.prol.loopexit.unr-lcssa:                         ; preds = %583, %.prol.preheader
  %indvars.iv.next.prol = add nuw nsw i64 %576, 1
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph283
  %indvars.iv.unr = phi i64 [ %576, %.lr.ph283 ], [ %indvars.iv.next.prol, %.prol.loopexit.unr-lcssa ]
  %588 = add nsw i64 %wide.trip.count, -1
  %589 = icmp eq i64 %588, %576
  br i1 %589, label %._crit_edge284, label %.lr.ph283.new

590:                                              ; preds = %562
  %591 = landingpad { ptr, i32 }
          cleanup
  br label %814

._crit_edge284:                                   ; preds = %.prol.loopexit, %626, %._crit_edge280
  %592 = load ptr, ptr %552, align 8, !tbaa !96
  %593 = load i32, ptr %553, align 8, !tbaa !91
  %594 = load i32, ptr %554, align 4, !tbaa !69
  %595 = mul i32 %594, %593
  %596 = load i32, ptr %555, align 8, !tbaa !70
  %597 = mul i32 %596, %.0190285
  %598 = add i32 %597, %595
  %599 = zext i32 %598 to i64
  %600 = getelementptr inbounds i32, ptr %592, i64 %599
  %601 = load i32, ptr %600, align 4, !tbaa !49
  %.not214 = icmp eq i32 %601, 0
  br i1 %.not214, label %637, label %627

.lr.ph283.new:                                    ; preds = %.prol.loopexit, %626
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %626 ], [ %indvars.iv.unr, %.prol.loopexit ]
  %602 = trunc nuw i64 %indvars.iv to i32
  %603 = mul i32 %572, %602
  %604 = add i32 %574, %603
  %605 = zext i32 %604 to i64
  %606 = getelementptr inbounds i32, ptr %571, i64 %605
  %607 = load i32, ptr %606, align 4, !tbaa !49
  %.not219 = icmp eq i32 %607, 0
  br i1 %.not219, label %613, label %608

608:                                              ; preds = %.lr.ph283.new
  %609 = getelementptr inbounds i32, ptr %575, i64 %605
  %610 = load i32, ptr %609, align 4, !tbaa !49
  %611 = zext i32 %610 to i64
  %612 = getelementptr inbounds i8, ptr %565, i64 %611
  store i8 1, ptr %612, align 1, !tbaa !93
  br label %613

613:                                              ; preds = %.lr.ph283.new, %608
  %614 = trunc i64 %indvars.iv to i32
  %615 = add i32 %614, 1
  %616 = mul i32 %572, %615
  %617 = add i32 %574, %616
  %618 = zext i32 %617 to i64
  %619 = getelementptr inbounds i32, ptr %571, i64 %618
  %620 = load i32, ptr %619, align 4, !tbaa !49
  %.not219.1 = icmp eq i32 %620, 0
  br i1 %.not219.1, label %626, label %621

621:                                              ; preds = %613
  %622 = getelementptr inbounds i32, ptr %575, i64 %618
  %623 = load i32, ptr %622, align 4, !tbaa !49
  %624 = zext i32 %623 to i64
  %625 = getelementptr inbounds i8, ptr %565, i64 %624
  store i8 1, ptr %625, align 1, !tbaa !93
  br label %626

626:                                              ; preds = %621, %613
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next.1, %wide.trip.count
  br i1 %exitcond.not.1, label %._crit_edge284, label %.lr.ph283.new, !llvm.loop !97

627:                                              ; preds = %._crit_edge284
  %628 = load ptr, ptr %556, align 8, !tbaa !98
  %629 = getelementptr inbounds i32, ptr %628, i64 %599
  %630 = load i32, ptr %629, align 4, !tbaa !49
  %631 = load ptr, ptr %557, align 8, !tbaa !99
  %632 = zext i32 %630 to i64
  %633 = getelementptr inbounds float, ptr %631, i64 %632
  %634 = load float, ptr %633, align 4, !tbaa !84
  %635 = load i32, ptr %558, align 8, !tbaa !100
  %636 = add i32 %635, 1
  store i32 %636, ptr %558, align 8, !tbaa !100
  br label %637

637:                                              ; preds = %._crit_edge284, %627
  %.0180 = phi float [ %634, %627 ], [ 0.000000e+00, %._crit_edge284 ]
  %638 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #13
          to label %639 unwind label %644

639:                                              ; preds = %637
  %640 = load i32, ptr %545, align 8, !tbaa !45
  invoke void @_ZN11DataPackageC1Emf9operand_tj9traffic_tPbj(ptr noundef nonnull align 8 dereferenceable(64) %638, i64 noundef 4, float noundef %.0180, i32 noundef 1, i32 noundef 0, i32 noundef 1, ptr noundef nonnull %565, i32 noundef %640)
          to label %641 unwind label %646

641:                                              ; preds = %639
  invoke void @_ZN14SparseSDMemory23sendPackageToInputFifosEP11DataPackage(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull %638)
          to label %642 unwind label %644

642:                                              ; preds = %641
  %643 = add i32 %.0190285, 1
  %exitcond372.not = icmp eq i32 %643, %504
  br i1 %exitcond372.not, label %._crit_edge288, label %562, !llvm.loop !101

644:                                              ; preds = %641, %637
  %645 = landingpad { ptr, i32 }
          cleanup
  br label %814

646:                                              ; preds = %639
  %647 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %638, i64 noundef 64) #14
  br label %814

.loopexit259:                                     ; preds = %._crit_edge294, %.preheader258, %23, %._crit_edge288, %458
  invoke void @_ZN14SparseSDMemory7receiveEv(ptr noundef nonnull align 8 dereferenceable(592) %0)
          to label %648 unwind label %668

648:                                              ; preds = %.loopexit259
  %649 = getelementptr inbounds i8, ptr %0, i64 232
  %650 = load ptr, ptr %649, align 8, !tbaa !102
  %651 = invoke noundef zeroext i1 @_ZN4Fifo7isEmptyEv(ptr noundef nonnull align 8 dereferenceable(120) %650)
          to label %652 unwind label %668

652:                                              ; preds = %648
  br i1 %651, label %.loopexit, label %.preheader

.preheader:                                       ; preds = %652
  %653 = getelementptr inbounds i8, ptr %0, i64 464
  %654 = getelementptr inbounds i8, ptr %0, i64 356
  %655 = getelementptr inbounds i8, ptr %0, i64 112
  %656 = getelementptr inbounds i8, ptr %0, i64 160
  %657 = getelementptr inbounds i8, ptr %0, i64 116
  %658 = getelementptr inbounds i8, ptr %0, i64 304
  %659 = getelementptr inbounds i8, ptr %0, i64 380
  %660 = getelementptr inbounds i8, ptr %0, i64 388
  %661 = getelementptr inbounds i8, ptr %0, i64 392
  %662 = getelementptr inbounds i8, ptr %0, i64 377
  br label %663

663:                                              ; preds = %.preheader, %705
  %.0176 = phi i32 [ %706, %705 ], [ 0, %.preheader ]
  %664 = load ptr, ptr %649, align 8, !tbaa !102
  %665 = invoke noundef i32 @_ZN4Fifo4sizeEv(ptr noundef nonnull align 8 dereferenceable(120) %664)
          to label %666 unwind label %670

666:                                              ; preds = %663
  %667 = icmp ult i32 %.0176, %665
  br i1 %667, label %672, label %.loopexit

668:                                              ; preds = %.thread, %767, %765, %761, %759, %756, %749, %747, %745, %741, %739, %736, %731, %648, %.loopexit259
  %669 = landingpad { ptr, i32 }
          cleanup
  br label %814

670:                                              ; preds = %663
  %671 = landingpad { ptr, i32 }
          cleanup
  br label %814

672:                                              ; preds = %666
  %673 = load ptr, ptr %649, align 8, !tbaa !102
  %674 = invoke noundef ptr @_ZN4Fifo3popEv(ptr noundef nonnull align 8 dereferenceable(120) %673)
          to label %675 unwind label %703

675:                                              ; preds = %672
  %676 = call noundef i32 @_ZNK11DataPackage6get_vnEv(ptr noundef nonnull align 8 dereferenceable(64) %674)
  %677 = call noundef float @_ZNK11DataPackage8get_dataEv(ptr noundef nonnull align 8 dereferenceable(64) %674)
  %678 = load i32, ptr %653, align 8, !tbaa !103
  %679 = add i32 %678, 1
  store i32 %679, ptr %653, align 8, !tbaa !103
  %680 = load i32, ptr %654, align 4, !tbaa !43
  %681 = add i32 %680, %676
  %682 = load i32, ptr %655, align 8, !tbaa !90
  %683 = mul i32 %681, %682
  %684 = zext i32 %676 to i64
  %685 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %656, i64 noundef %684) #12
  %686 = load i32, ptr %685, align 4, !tbaa !49
  %687 = load i32, ptr %657, align 4, !tbaa !92
  %688 = mul i32 %687, %686
  %689 = add i32 %688, %683
  %690 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %656, i64 noundef %684) #12
  %691 = load i32, ptr %690, align 4, !tbaa !49
  %692 = add i32 %691, 1
  store i32 %692, ptr %690, align 4, !tbaa !49
  %693 = load ptr, ptr %658, align 8, !tbaa !94
  %694 = zext i32 %689 to i64
  %695 = getelementptr inbounds float, ptr %693, i64 %694
  store float %677, ptr %695, align 4, !tbaa !84
  %696 = load i32, ptr %659, align 4, !tbaa !104
  %697 = add i32 %696, 1
  store i32 %697, ptr %659, align 4, !tbaa !104
  %698 = load i32, ptr %660, align 4, !tbaa !105
  %699 = add i32 %698, 1
  store i32 %699, ptr %660, align 4, !tbaa !105
  %700 = load i32, ptr %661, align 8, !tbaa !81
  %701 = icmp eq i32 %699, %700
  br i1 %701, label %702, label %705

702:                                              ; preds = %675
  store i32 0, ptr %660, align 4, !tbaa !105
  store i8 1, ptr %662, align 1, !tbaa !106
  br label %705

703:                                              ; preds = %672
  %704 = landingpad { ptr, i32 }
          cleanup
  br label %814

705:                                              ; preds = %675, %702
  call void @_ZN11DataPackageD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %674) #12
  call void @_ZdlPvm(ptr noundef %674, i64 noundef 64) #14
  %706 = add nuw nsw i32 %.0176, 1
  br label %663, !llvm.loop !107

.loopexit:                                        ; preds = %666, %652
  %707 = load i32, ptr %30, align 8, !tbaa !42
  switch i32 %707, label %.thread [
    i32 0, label %.thread.sink.split
    i32 1, label %708
    i32 2, label %709
    i32 3, label %715
  ]

708:                                              ; preds = %.loopexit
  br label %.thread.sink.split

709:                                              ; preds = %.loopexit
  %710 = getelementptr inbounds i8, ptr %0, i64 352
  %711 = load i32, ptr %710, align 8, !tbaa !91
  %712 = getelementptr inbounds i8, ptr %0, i64 92
  %713 = load i32, ptr %712, align 4, !tbaa !65
  %714 = icmp eq i32 %711, %713
  br i1 %714, label %.thread.sink.split, label %.thread

715:                                              ; preds = %.loopexit
  %716 = getelementptr inbounds i8, ptr %0, i64 377
  %717 = load i8, ptr %716, align 1, !tbaa !106, !range !37, !noundef !38
  %718 = trunc nuw i8 %717 to i1
  br i1 %718, label %719, label %.thread

719:                                              ; preds = %715
  %720 = getelementptr inbounds i8, ptr %0, i64 352
  store i32 0, ptr %720, align 8, !tbaa !91
  store i8 0, ptr %716, align 1, !tbaa !106
  %721 = getelementptr inbounds i8, ptr %0, i64 136
  %722 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %721) #12
  %723 = icmp eq i64 %722, 1
  br i1 %723, label %724, label %749

724:                                              ; preds = %719
  %725 = getelementptr inbounds i8, ptr %0, i64 368
  %726 = load i32, ptr %725, align 8, !tbaa !64
  %727 = getelementptr inbounds i8, ptr %0, i64 364
  store i32 %726, ptr %727, align 4, !tbaa !44
  %728 = getelementptr inbounds i8, ptr %0, i64 88
  %729 = load i32, ptr %728, align 8, !tbaa !52
  %730 = icmp eq i32 %726, %729
  br i1 %730, label %731, label %771

731:                                              ; preds = %724
  %732 = getelementptr inbounds i8, ptr %0, i64 356
  %733 = load i32, ptr %732, align 4, !tbaa !43
  %734 = add i32 %733, 1
  store i32 %734, ptr %732, align 4, !tbaa !43
  store i32 0, ptr %727, align 4, !tbaa !44
  %735 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.17)
          to label %736 unwind label %668

736:                                              ; preds = %731
  %737 = load i32, ptr %732, align 4, !tbaa !43
  %738 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %735, i32 noundef %737)
          to label %739 unwind label %668

739:                                              ; preds = %736
  %740 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %738, ptr noundef nonnull @.str.18)
          to label %741 unwind label %668

741:                                              ; preds = %739
  %742 = getelementptr inbounds i8, ptr %0, i64 84
  %743 = load i32, ptr %742, align 4, !tbaa !57
  %744 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %740, i32 noundef %743)
          to label %745 unwind label %668

745:                                              ; preds = %741
  %746 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %744, ptr noundef nonnull @.str.19)
          to label %747 unwind label %668

747:                                              ; preds = %745
  %748 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %746, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %771 unwind label %668

749:                                              ; preds = %719
  %750 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %721) #12
  %751 = getelementptr inbounds i8, ptr %0, i64 356
  %752 = load i32, ptr %751, align 4, !tbaa !43
  %753 = trunc i64 %750 to i32
  %754 = add i32 %752, %753
  store i32 %754, ptr %751, align 4, !tbaa !43
  %755 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.17)
          to label %756 unwind label %668

756:                                              ; preds = %749
  %757 = load i32, ptr %751, align 4, !tbaa !43
  %758 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %755, i32 noundef %757)
          to label %759 unwind label %668

759:                                              ; preds = %756
  %760 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %758, ptr noundef nonnull @.str.18)
          to label %761 unwind label %668

761:                                              ; preds = %759
  %762 = getelementptr inbounds i8, ptr %0, i64 84
  %763 = load i32, ptr %762, align 4, !tbaa !57
  %764 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %760, i32 noundef %763)
          to label %765 unwind label %668

765:                                              ; preds = %761
  %766 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %764, ptr noundef nonnull @.str.19)
          to label %767 unwind label %668

767:                                              ; preds = %765
  %768 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %766, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %769 unwind label %668

769:                                              ; preds = %767
  %770 = getelementptr inbounds i8, ptr %0, i64 364
  store i32 0, ptr %770, align 4, !tbaa !44
  br label %771

771:                                              ; preds = %724, %747, %769
  %772 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %721) #12
  %.not361 = icmp eq i64 %772, 0
  br i1 %.not361, label %._crit_edge351, label %.lr.ph350

._crit_edge351:                                   ; preds = %.lr.ph350, %771
  %.0152.lcssa = phi i32 [ 0, %771 ], [ %spec.select252, %.lr.ph350 ]
  %773 = getelementptr inbounds i8, ptr %0, i64 360
  %774 = load i32, ptr %773, align 8, !tbaa !83
  %775 = add i32 %774, %.0152.lcssa
  store i32 %775, ptr %773, align 8, !tbaa !83
  %776 = getelementptr inbounds i8, ptr %0, i64 356
  %777 = load i32, ptr %776, align 4, !tbaa !43
  %778 = getelementptr inbounds i8, ptr %0, i64 84
  %779 = load i32, ptr %778, align 4, !tbaa !57
  %.not237 = icmp ult i32 %777, %779
  br i1 %.not237, label %.thread.sink.split, label %788

.lr.ph350:                                        ; preds = %771, %.lr.ph350
  %indvars.iv394 = phi i64 [ %indvars.iv.next395, %.lr.ph350 ], [ 0, %771 ]
  %.0152347 = phi i32 [ %spec.select252, %.lr.ph350 ], [ 0, %771 ]
  %780 = call noundef nonnull align 4 dereferenceable(5) ptr @_ZNSt6vectorI8SparseVNSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %721, i64 noundef %indvars.iv394) #12
  %781 = call noundef i32 @_ZN8SparseVN11get_VN_SizeEv(ptr noundef nonnull align 4 dereferenceable(5) %780)
  %782 = add i32 %781, %.0152347
  %783 = call noundef nonnull align 4 dereferenceable(5) ptr @_ZNSt6vectorI8SparseVNSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %721, i64 noundef %indvars.iv394) #12
  %784 = call noundef zeroext i1 @_ZN8SparseVN10getFoldingEv(ptr noundef nonnull align 4 dereferenceable(5) %783)
  %785 = sext i1 %784 to i32
  %spec.select252 = add i32 %782, %785
  %indvars.iv.next395 = add nuw nsw i64 %indvars.iv394, 1
  %786 = call noundef i64 @_ZNKSt6vectorI8SparseVNSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %721) #12
  %787 = icmp ugt i64 %786, %indvars.iv.next395
  br i1 %787, label %.lr.ph350, label %._crit_edge351, !llvm.loop !108

788:                                              ; preds = %._crit_edge351
  %789 = getelementptr inbounds i8, ptr %0, i64 88
  %790 = load i32, ptr %789, align 8, !tbaa !52
  %791 = mul i32 %790, %779
  %792 = getelementptr inbounds i8, ptr %0, i64 92
  %793 = load i32, ptr %792, align 4, !tbaa !65
  %794 = mul i32 %793, %790
  %795 = getelementptr inbounds i8, ptr %0, i64 396
  %796 = load i32, ptr %795, align 4, !tbaa !87
  %797 = sub i32 %791, %796
  %798 = getelementptr inbounds i8, ptr %0, i64 400
  %799 = load i32, ptr %798, align 8, !tbaa !66
  %800 = sub i32 %794, %799
  %801 = mul i32 %797, 100
  %802 = udiv i32 %801, %791
  %803 = getelementptr inbounds i8, ptr %0, i64 468
  store i32 %802, ptr %803, align 4, !tbaa !109
  %804 = mul i32 %800, 100
  %805 = udiv i32 %804, %794
  %806 = getelementptr inbounds i8, ptr %0, i64 472
  store i32 %805, ptr %806, align 8, !tbaa !110
  %807 = getelementptr inbounds i8, ptr %0, i64 476
  %808 = load i32, ptr %807, align 4, !tbaa !72
  %809 = getelementptr inbounds i8, ptr %0, i64 484
  %810 = load i32, ptr %809, align 4, !tbaa !75
  %811 = udiv i32 %808, %810
  store i32 %811, ptr %807, align 4, !tbaa !72
  %812 = getelementptr inbounds i8, ptr %0, i64 376
  store i8 1, ptr %812, align 8, !tbaa !111
  br label %.thread.sink.split

.thread.sink.split:                               ; preds = %788, %._crit_edge351, %709, %.loopexit, %708
  %.sink411 = phi i32 [ 2, %708 ], [ 1, %.loopexit ], [ 3, %709 ], [ 4, %788 ], [ 0, %._crit_edge351 ]
  store i32 %.sink411, ptr %30, align 8, !tbaa !42
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %.loopexit, %709, %715
  invoke void @_ZN14SparseSDMemory4sendEv(ptr noundef nonnull align 8 dereferenceable(592) %0)
          to label %813 unwind label %668

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

814:                                              ; preds = %670, %703, %539, %541, %532, %644, %646, %590, %494, %496, %152, %189, %264, %337, %466, %464, %412, %390, %668
  %.pn238.pn.pn = phi { ptr, i32 } [ %669, %668 ], [ %.pn233, %152 ], [ %.pn231, %189 ], [ %.pn226, %337 ], [ %.pn224, %264 ], [ %391, %390 ], [ %413, %412 ], [ %467, %466 ], [ %465, %464 ], [ %495, %494 ], [ %497, %496 ], [ %533, %532 ], [ %540, %539 ], [ %542, %541 ], [ %591, %590 ], [ %645, %644 ], [ %647, %646 ], [ %704, %703 ], [ %671, %670 ]
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #12
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #12
  resume { ptr, i32 } %.pn238.pn.pn
}

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8SparseVNC2Ejb(ptr noundef nonnull align 4 dereferenceable(5), i32 noundef, i1 noundef zeroext) unnamed_addr #4 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI8SparseVNSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8SparseVN10getFoldingEv(ptr noundef nonnull align 4 dereferenceable(5)) 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 #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN14SparseSDMemory23sendPackageToInputFifosEP11DataPackage(ptr noundef nonnull align 8 dereferenceable(592), ptr noundef) local_unnamed_addr #3 align 2

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 #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN14SparseSDMemory7receiveEv(ptr noundef nonnull align 8 dereferenceable(592)) local_unnamed_addr #3 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK11DataPackage8get_dataEv(ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #4 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 #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN14SparseSDMemory4sendEv(ptr noundef nonnull align 8 dereferenceable(592)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32>) #10

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 = { 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 #4 = { 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 #5 = { 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 #6 = { inlinehint 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 #7 = { "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 = { 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 #9 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #10 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #11 = { noreturn nounwind }
attributes #12 = { nounwind }
attributes #13 = { builtin allocsize(0) }
attributes #14 = { 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, !34, i64 379}
!6 = !{!"_ZTS14SparseSDMemory", !7, i64 0, !14, i64 48, !14, i64 56, !14, i64 64, !9, i64 72, !9, i64 76, !16, 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, !9, i64 116, !14, i64 120, !17, i64 128, !18, i64 136, !22, i64 160, !26, i64 184, !9, i64 208, !9, i64 212, !9, i64 216, !9, i64 220, !9, i64 224, !9, i64 228, !14, i64 232, !30, i64 240, !30, i64 264, !14, i64 288, !14, i64 296, !14, i64 304, !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, !34, i64 372, !34, i64 373, !34, i64 374, !34, i64 375, !34, i64 376, !34, i64 377, !34, i64 378, !34, i64 379, !9, i64 380, !9, i64 384, !9, i64 388, !9, i64 392, !9, i64 396, !9, i64 400, !26, i64 408, !9, i64 432, !35, i64 440}
!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 = !{!"_ZTS8Dataflow", !10, i64 0}
!17 = !{!"_ZTS23SparsityControllerState", !10, 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", !14, i64 0, !14, i64 8, !14, 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", !14, i64 0, !14, i64 8, !14, 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", !14, i64 0, !14, i64 8, !14, 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", !14, i64 0, !14, i64 8, !14, i64 16}
!34 = !{!"bool", !10, i64 0}
!35 = !{!"_ZTS13SDMemoryStats", !36, 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, !16, i64 48, !22, i64 56, !22, i64 80, !22, i64 104, !22, i64 128}
!36 = !{!"_ZTS5Stats"}
!37 = !{i8 0, i8 2}
!38 = !{}
!39 = !{!6, !34, i64 378}
!40 = !{!6, !9, i64 432}
!41 = !{!6, !9, i64 448}
!42 = !{!6, !17, i64 128}
!43 = !{!6, !9, i64 356}
!44 = !{!6, !9, i64 364}
!45 = !{!6, !9, i64 208}
!46 = !{!6, !14, i64 312}
!47 = !{!6, !9, i64 100}
!48 = !{!6, !9, i64 96}
!49 = !{!9, !9, i64 0}
!50 = distinct !{!50, !51}
!51 = !{!"llvm.loop.mustprogress"}
!52 = !{!6, !9, i64 88}
!53 = distinct !{!53, !51, !54, !55}
!54 = !{!"llvm.loop.isvectorized", i32 1}
!55 = !{!"llvm.loop.unroll.runtime.disable"}
!56 = distinct !{!56, !51, !54}
!57 = !{!6, !9, i64 84}
!58 = !{!6, !14, i64 336}
!59 = distinct !{!59, !51}
!60 = distinct !{!60, !51, !54, !55}
!61 = distinct !{!61, !51, !54}
!62 = distinct !{!62, !51, !54, !55}
!63 = distinct !{!63, !51, !54}
!64 = !{!6, !9, i64 368}
!65 = !{!6, !9, i64 92}
!66 = !{!6, !9, i64 400}
!67 = distinct !{!67, !51, !68}
!68 = !{!"llvm.loop.unswitch.partial.disable"}
!69 = !{!6, !9, i64 108}
!70 = !{!6, !9, i64 104}
!71 = distinct !{!71, !51}
!72 = !{!6, !9, i64 476}
!73 = !{!6, !9, i64 480}
!74 = distinct !{!74, !51}
!75 = !{!6, !9, i64 484}
!76 = !{!6, !14, i64 64}
!77 = !{!78, !78, i64 0}
!78 = !{!"vtable pointer", !11, i64 0}
!79 = !{!6, !14, i64 48}
!80 = !{!6, !14, i64 56}
!81 = !{!6, !9, i64 392}
!82 = !{!6, !14, i64 288}
!83 = !{!6, !9, i64 360}
!84 = !{!85, !85, i64 0}
!85 = !{!"float", !10, i64 0}
!86 = !{!6, !9, i64 452}
!87 = !{!6, !9, i64 396}
!88 = distinct !{!88, !51}
!89 = distinct !{!89, !51}
!90 = !{!6, !9, i64 112}
!91 = !{!6, !9, i64 352}
!92 = !{!6, !9, i64 116}
!93 = !{!34, !34, i64 0}
!94 = !{!6, !14, i64 304}
!95 = !{!6, !9, i64 460}
!96 = !{!6, !14, i64 320}
!97 = distinct !{!97, !51}
!98 = !{!6, !14, i64 344}
!99 = !{!6, !14, i64 296}
!100 = !{!6, !9, i64 456}
!101 = distinct !{!101, !51}
!102 = !{!6, !14, i64 232}
!103 = !{!6, !9, i64 464}
!104 = !{!6, !9, i64 380}
!105 = !{!6, !9, i64 388}
!106 = !{!6, !34, i64 377}
!107 = distinct !{!107, !51}
!108 = distinct !{!108, !51}
!109 = !{!6, !9, i64 468}
!110 = !{!6, !9, i64 472}
!111 = !{!6, !34, i64 376}


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