; LLVM IR from ERGO-Code/HiGHS :: src/ipm/ipx/iterate.ll (ZN3ipx7Iterate18assert_consistencyEv)

; 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.ipx::Iterate" = type { ptr, %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::vector", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", double, double, double, double, double, double, double, double, double, i8, i8, double, double, double }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<ipx::Iterate::StateDetail, std::allocator<ipx::Iterate::StateDetail>>::_Vector_impl" }
%"struct.std::_Vector_base<ipx::Iterate::StateDetail, std::allocator<ipx::Iterate::StateDetail>>::_Vector_impl" = type { %"struct.std::_Vector_base<ipx::Iterate::StateDetail, std::allocator<ipx::Iterate::StateDetail>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ipx::Iterate::StateDetail, std::allocator<ipx::Iterate::StateDetail>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::valarray" = type { i64, ptr }

@.str.12 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [14 x i8], align 1
@__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv = external hidden unnamed_addr constant [40 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [6 x i8], align 1

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3ipx5Model4rowsEv(ptr noundef nonnull align 8 dereferenceable(704)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3ipx5Model4colsEv(ptr noundef nonnull align 8 dereferenceable(704)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model2lbEv(ptr noundef nonnull align 8 dereferenceable(704)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model2ubEv(ptr noundef nonnull align 8 dereferenceable(704)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt8isfinited(double noundef) #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #2 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3ipx7Iterate18assert_consistencyEv(ptr noundef nonnull align 8 dereferenceable(296) %0) #3 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %8 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #6
  %9 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 0
  %10 = load ptr, ptr %9, align 8, !tbaa !9
  %11 = call noundef i32 @_ZNK3ipx5Model4rowsEv(ptr noundef nonnull align 8 dereferenceable(704) %10)
  store i32 %11, ptr %3, align 4, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #6
  %12 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 0
  %13 = load ptr, ptr %12, align 8, !tbaa !9
  %14 = call noundef i32 @_ZNK3ipx5Model4colsEv(ptr noundef nonnull align 8 dereferenceable(704) %13)
  store i32 %14, ptr %4, align 4, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #6
  %15 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 0
  %16 = load ptr, ptr %15, align 8, !tbaa !9
  %17 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model2lbEv(ptr noundef nonnull align 8 dereferenceable(704) %16)
  store ptr %17, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #6
  %18 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 0
  %19 = load ptr, ptr %18, align 8, !tbaa !9
  %20 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model2ubEv(ptr noundef nonnull align 8 dereferenceable(704) %19)
  store ptr %20, ptr %6, align 8, !tbaa !5
  %21 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 1
  %22 = call noundef zeroext i1 @_ZN3ipx9AllFiniteERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %21)
  br i1 %22, label %23, label %24

23:                                               ; preds = %1
  br label %26

24:                                               ; preds = %1
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str.12, i32 noundef 473, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

25:                                               ; No predecessors!
  br label %26

26:                                               ; preds = %25, %23
  %27 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 4
  %28 = call noundef zeroext i1 @_ZN3ipx9AllFiniteERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %27)
  br i1 %28, label %29, label %30

29:                                               ; preds = %26
  br label %32

30:                                               ; preds = %26
  call void @__assert_fail(ptr noundef @.str.33, ptr noundef @.str.12, i32 noundef 474, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

31:                                               ; No predecessors!
  br label %32

32:                                               ; preds = %31, %29
  %33 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 5
  %34 = call noundef zeroext i1 @_ZN3ipx9AllFiniteERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %33)
  br i1 %34, label %35, label %36

35:                                               ; preds = %32
  br label %38

36:                                               ; preds = %32
  call void @__assert_fail(ptr noundef @.str.34, ptr noundef @.str.12, i32 noundef 475, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

37:                                               ; No predecessors!
  br label %38

38:                                               ; preds = %37, %35
  %39 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 6
  %40 = call noundef zeroext i1 @_ZN3ipx9AllFiniteERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %39)
  br i1 %40, label %41, label %42

41:                                               ; preds = %38
  br label %44

42:                                               ; preds = %38
  call void @__assert_fail(ptr noundef @.str.35, ptr noundef @.str.12, i32 noundef 476, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

43:                                               ; No predecessors!
  br label %44

44:                                               ; preds = %43, %41
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  store i32 0, ptr %7, align 4, !tbaa !19
  br label %45

45:                                               ; preds = %539, %44
  %46 = load i32, ptr %7, align 4, !tbaa !19
  %47 = load i32, ptr %4, align 4, !tbaa !19
  %48 = load i32, ptr %3, align 4, !tbaa !19
  %49 = add nsw i32 %47, %48
  %50 = icmp slt i32 %46, %49
  br i1 %50, label %52, label %51

51:                                               ; preds = %45
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  br label %542

52:                                               ; preds = %45
  %53 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 7
  %54 = load i32, ptr %7, align 4, !tbaa !19
  %55 = sext i32 %54 to i64
  %56 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN3ipx7Iterate11StateDetailESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef %55) #6
  %57 = load i32, ptr %56, align 4, !tbaa !21
  switch i32 %57, label %537 [
    i32 0, label %58
    i32 1, label %128
    i32 2, label %198
    i32 3, label %277
    i32 4, label %338
    i32 5, label %379
    i32 6, label %430
    i32 7, label %481
  ]

58:                                               ; preds = %52
  %59 = load ptr, ptr %5, align 8, !tbaa !5
  %60 = load i32, ptr %7, align 4, !tbaa !19
  %61 = sext i32 %60 to i64
  %62 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %59, i64 noundef %61) #6
  %63 = load double, ptr %62, align 8, !tbaa !23
  %64 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %63)
  br i1 %64, label %65, label %66

65:                                               ; preds = %58
  br label %68

66:                                               ; preds = %58
  call void @__assert_fail(ptr noundef @.str.36, ptr noundef @.str.12, i32 noundef 481, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

67:                                               ; No predecessors!
  br label %68

68:                                               ; preds = %67, %65
  %69 = load ptr, ptr %6, align 8, !tbaa !5
  %70 = load i32, ptr %7, align 4, !tbaa !19
  %71 = sext i32 %70 to i64
  %72 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %69, i64 noundef %71) #6
  %73 = load double, ptr %72, align 8, !tbaa !23
  %74 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %73)
  br i1 %74, label %75, label %76

75:                                               ; preds = %68
  br label %78

76:                                               ; preds = %68
  call void @__assert_fail(ptr noundef @.str.37, ptr noundef @.str.12, i32 noundef 482, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

77:                                               ; No predecessors!
  br label %78

78:                                               ; preds = %77, %75
  %79 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 2
  %80 = load i32, ptr %7, align 4, !tbaa !19
  %81 = sext i32 %80 to i64
  %82 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %79, i64 noundef %81) #6
  %83 = load double, ptr %82, align 8, !tbaa !23
  %84 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %83)
  br i1 %84, label %85, label %92

85:                                               ; preds = %78
  %86 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 2
  %87 = load i32, ptr %7, align 4, !tbaa !19
  %88 = sext i32 %87 to i64
  %89 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %86, i64 noundef %88) #6
  %90 = load double, ptr %89, align 8, !tbaa !23
  %91 = fcmp ogt double %90, 0.000000e+00
  br label %92

92:                                               ; preds = %85, %78
  %93 = phi i1 [ false, %78 ], [ %91, %85 ]
  br i1 %93, label %94, label %95

94:                                               ; preds = %92
  br label %97

95:                                               ; preds = %92
  call void @__assert_fail(ptr noundef @.str.38, ptr noundef @.str.12, i32 noundef 483, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

96:                                               ; No predecessors!
  br label %97

97:                                               ; preds = %96, %94
  %98 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 3
  %99 = load i32, ptr %7, align 4, !tbaa !19
  %100 = sext i32 %99 to i64
  %101 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %98, i64 noundef %100) #6
  %102 = load double, ptr %101, align 8, !tbaa !23
  %103 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %102)
  br i1 %103, label %104, label %105

104:                                              ; preds = %97
  br label %107

105:                                              ; preds = %97
  call void @__assert_fail(ptr noundef @.str.39, ptr noundef @.str.12, i32 noundef 484, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

106:                                              ; No predecessors!
  br label %107

107:                                              ; preds = %106, %104
  %108 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 5
  %109 = load i32, ptr %7, align 4, !tbaa !19
  %110 = sext i32 %109 to i64
  %111 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %108, i64 noundef %110) #6
  %112 = load double, ptr %111, align 8, !tbaa !23
  %113 = fcmp ogt double %112, 0.000000e+00
  br i1 %113, label %114, label %115

114:                                              ; preds = %107
  br label %117

115:                                              ; preds = %107
  call void @__assert_fail(ptr noundef @.str.40, ptr noundef @.str.12, i32 noundef 485, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

116:                                              ; No predecessors!
  br label %117

117:                                              ; preds = %116, %114
  %118 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 6
  %119 = load i32, ptr %7, align 4, !tbaa !19
  %120 = sext i32 %119 to i64
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %118, i64 noundef %120) #6
  %122 = load double, ptr %121, align 8, !tbaa !23
  %123 = fcmp oeq double %122, 0.000000e+00
  br i1 %123, label %124, label %125

124:                                              ; preds = %117
  br label %127

125:                                              ; preds = %117
  call void @__assert_fail(ptr noundef @.str.23, ptr noundef @.str.12, i32 noundef 486, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

126:                                              ; No predecessors!
  br label %127

127:                                              ; preds = %126, %124
  br label %538

128:                                              ; preds = %52
  %129 = load ptr, ptr %5, align 8, !tbaa !5
  %130 = load i32, ptr %7, align 4, !tbaa !19
  %131 = sext i32 %130 to i64
  %132 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %129, i64 noundef %131) #6
  %133 = load double, ptr %132, align 8, !tbaa !23
  %134 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %133)
  br i1 %134, label %135, label %136

135:                                              ; preds = %128
  br label %138

136:                                              ; preds = %128
  call void @__assert_fail(ptr noundef @.str.41, ptr noundef @.str.12, i32 noundef 489, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

137:                                              ; No predecessors!
  br label %138

138:                                              ; preds = %137, %135
  %139 = load ptr, ptr %6, align 8, !tbaa !5
  %140 = load i32, ptr %7, align 4, !tbaa !19
  %141 = sext i32 %140 to i64
  %142 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %139, i64 noundef %141) #6
  %143 = load double, ptr %142, align 8, !tbaa !23
  %144 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %143)
  br i1 %144, label %145, label %146

145:                                              ; preds = %138
  br label %148

146:                                              ; preds = %138
  call void @__assert_fail(ptr noundef @.str.42, ptr noundef @.str.12, i32 noundef 490, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

147:                                              ; No predecessors!
  br label %148

148:                                              ; preds = %147, %145
  %149 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 2
  %150 = load i32, ptr %7, align 4, !tbaa !19
  %151 = sext i32 %150 to i64
  %152 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %149, i64 noundef %151) #6
  %153 = load double, ptr %152, align 8, !tbaa !23
  %154 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %153)
  br i1 %154, label %155, label %156

155:                                              ; preds = %148
  br label %158

156:                                              ; preds = %148
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.12, i32 noundef 491, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

157:                                              ; No predecessors!
  br label %158

158:                                              ; preds = %157, %155
  %159 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 3
  %160 = load i32, ptr %7, align 4, !tbaa !19
  %161 = sext i32 %160 to i64
  %162 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %159, i64 noundef %161) #6
  %163 = load double, ptr %162, align 8, !tbaa !23
  %164 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %163)
  br i1 %164, label %165, label %172

165:                                              ; preds = %158
  %166 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 3
  %167 = load i32, ptr %7, align 4, !tbaa !19
  %168 = sext i32 %167 to i64
  %169 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %166, i64 noundef %168) #6
  %170 = load double, ptr %169, align 8, !tbaa !23
  %171 = fcmp ogt double %170, 0.000000e+00
  br label %172

172:                                              ; preds = %165, %158
  %173 = phi i1 [ false, %158 ], [ %171, %165 ]
  br i1 %173, label %174, label %175

174:                                              ; preds = %172
  br label %177

175:                                              ; preds = %172
  call void @__assert_fail(ptr noundef @.str.44, ptr noundef @.str.12, i32 noundef 492, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

176:                                              ; No predecessors!
  br label %177

177:                                              ; preds = %176, %174
  %178 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 5
  %179 = load i32, ptr %7, align 4, !tbaa !19
  %180 = sext i32 %179 to i64
  %181 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %178, i64 noundef %180) #6
  %182 = load double, ptr %181, align 8, !tbaa !23
  %183 = fcmp oeq double %182, 0.000000e+00
  br i1 %183, label %184, label %185

184:                                              ; preds = %177
  br label %187

185:                                              ; preds = %177
  call void @__assert_fail(ptr noundef @.str.22, ptr noundef @.str.12, i32 noundef 493, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

186:                                              ; No predecessors!
  br label %187

187:                                              ; preds = %186, %184
  %188 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 6
  %189 = load i32, ptr %7, align 4, !tbaa !19
  %190 = sext i32 %189 to i64
  %191 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %188, i64 noundef %190) #6
  %192 = load double, ptr %191, align 8, !tbaa !23
  %193 = fcmp ogt double %192, 0.000000e+00
  br i1 %193, label %194, label %195

194:                                              ; preds = %187
  br label %197

195:                                              ; preds = %187
  call void @__assert_fail(ptr noundef @.str.45, ptr noundef @.str.12, i32 noundef 494, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

196:                                              ; No predecessors!
  br label %197

197:                                              ; preds = %196, %194
  br label %538

198:                                              ; preds = %52
  %199 = load ptr, ptr %5, align 8, !tbaa !5
  %200 = load i32, ptr %7, align 4, !tbaa !19
  %201 = sext i32 %200 to i64
  %202 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %199, i64 noundef %201) #6
  %203 = load double, ptr %202, align 8, !tbaa !23
  %204 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %203)
  br i1 %204, label %205, label %206

205:                                              ; preds = %198
  br label %208

206:                                              ; preds = %198
  call void @__assert_fail(ptr noundef @.str.36, ptr noundef @.str.12, i32 noundef 497, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

207:                                              ; No predecessors!
  br label %208

208:                                              ; preds = %207, %205
  %209 = load ptr, ptr %6, align 8, !tbaa !5
  %210 = load i32, ptr %7, align 4, !tbaa !19
  %211 = sext i32 %210 to i64
  %212 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %209, i64 noundef %211) #6
  %213 = load double, ptr %212, align 8, !tbaa !23
  %214 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %213)
  br i1 %214, label %215, label %216

215:                                              ; preds = %208
  br label %218

216:                                              ; preds = %208
  call void @__assert_fail(ptr noundef @.str.42, ptr noundef @.str.12, i32 noundef 498, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

217:                                              ; No predecessors!
  br label %218

218:                                              ; preds = %217, %215
  %219 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 2
  %220 = load i32, ptr %7, align 4, !tbaa !19
  %221 = sext i32 %220 to i64
  %222 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %219, i64 noundef %221) #6
  %223 = load double, ptr %222, align 8, !tbaa !23
  %224 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %223)
  br i1 %224, label %225, label %232

225:                                              ; preds = %218
  %226 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 2
  %227 = load i32, ptr %7, align 4, !tbaa !19
  %228 = sext i32 %227 to i64
  %229 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %226, i64 noundef %228) #6
  %230 = load double, ptr %229, align 8, !tbaa !23
  %231 = fcmp ogt double %230, 0.000000e+00
  br label %232

232:                                              ; preds = %225, %218
  %233 = phi i1 [ false, %218 ], [ %231, %225 ]
  br i1 %233, label %234, label %235

234:                                              ; preds = %232
  br label %237

235:                                              ; preds = %232
  call void @__assert_fail(ptr noundef @.str.38, ptr noundef @.str.12, i32 noundef 499, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

236:                                              ; No predecessors!
  br label %237

237:                                              ; preds = %236, %234
  %238 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 3
  %239 = load i32, ptr %7, align 4, !tbaa !19
  %240 = sext i32 %239 to i64
  %241 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %238, i64 noundef %240) #6
  %242 = load double, ptr %241, align 8, !tbaa !23
  %243 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %242)
  br i1 %243, label %244, label %251

244:                                              ; preds = %237
  %245 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 3
  %246 = load i32, ptr %7, align 4, !tbaa !19
  %247 = sext i32 %246 to i64
  %248 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %245, i64 noundef %247) #6
  %249 = load double, ptr %248, align 8, !tbaa !23
  %250 = fcmp ogt double %249, 0.000000e+00
  br label %251

251:                                              ; preds = %244, %237
  %252 = phi i1 [ false, %237 ], [ %250, %244 ]
  br i1 %252, label %253, label %254

253:                                              ; preds = %251
  br label %256

254:                                              ; preds = %251
  call void @__assert_fail(ptr noundef @.str.44, ptr noundef @.str.12, i32 noundef 500, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

255:                                              ; No predecessors!
  br label %256

256:                                              ; preds = %255, %253
  %257 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 5
  %258 = load i32, ptr %7, align 4, !tbaa !19
  %259 = sext i32 %258 to i64
  %260 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %257, i64 noundef %259) #6
  %261 = load double, ptr %260, align 8, !tbaa !23
  %262 = fcmp ogt double %261, 0.000000e+00
  br i1 %262, label %263, label %264

263:                                              ; preds = %256
  br label %266

264:                                              ; preds = %256
  call void @__assert_fail(ptr noundef @.str.40, ptr noundef @.str.12, i32 noundef 501, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

265:                                              ; No predecessors!
  br label %266

266:                                              ; preds = %265, %263
  %267 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 6
  %268 = load i32, ptr %7, align 4, !tbaa !19
  %269 = sext i32 %268 to i64
  %270 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %267, i64 noundef %269) #6
  %271 = load double, ptr %270, align 8, !tbaa !23
  %272 = fcmp ogt double %271, 0.000000e+00
  br i1 %272, label %273, label %274

273:                                              ; preds = %266
  br label %276

274:                                              ; preds = %266
  call void @__assert_fail(ptr noundef @.str.45, ptr noundef @.str.12, i32 noundef 502, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

275:                                              ; No predecessors!
  br label %276

276:                                              ; preds = %275, %273
  br label %538

277:                                              ; preds = %52
  %278 = load ptr, ptr %5, align 8, !tbaa !5
  %279 = load i32, ptr %7, align 4, !tbaa !19
  %280 = sext i32 %279 to i64
  %281 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %278, i64 noundef %280) #6
  %282 = load double, ptr %281, align 8, !tbaa !23
  %283 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %282)
  br i1 %283, label %284, label %285

284:                                              ; preds = %277
  br label %287

285:                                              ; preds = %277
  call void @__assert_fail(ptr noundef @.str.41, ptr noundef @.str.12, i32 noundef 505, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

286:                                              ; No predecessors!
  br label %287

287:                                              ; preds = %286, %284
  %288 = load ptr, ptr %6, align 8, !tbaa !5
  %289 = load i32, ptr %7, align 4, !tbaa !19
  %290 = sext i32 %289 to i64
  %291 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %288, i64 noundef %290) #6
  %292 = load double, ptr %291, align 8, !tbaa !23
  %293 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %292)
  br i1 %293, label %294, label %295

294:                                              ; preds = %287
  br label %297

295:                                              ; preds = %287
  call void @__assert_fail(ptr noundef @.str.37, ptr noundef @.str.12, i32 noundef 506, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

296:                                              ; No predecessors!
  br label %297

297:                                              ; preds = %296, %294
  %298 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 2
  %299 = load i32, ptr %7, align 4, !tbaa !19
  %300 = sext i32 %299 to i64
  %301 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %298, i64 noundef %300) #6
  %302 = load double, ptr %301, align 8, !tbaa !23
  %303 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %302)
  br i1 %303, label %304, label %305

304:                                              ; preds = %297
  br label %307

305:                                              ; preds = %297
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.12, i32 noundef 507, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

306:                                              ; No predecessors!
  br label %307

307:                                              ; preds = %306, %304
  %308 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 3
  %309 = load i32, ptr %7, align 4, !tbaa !19
  %310 = sext i32 %309 to i64
  %311 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %308, i64 noundef %310) #6
  %312 = load double, ptr %311, align 8, !tbaa !23
  %313 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %312)
  br i1 %313, label %314, label %315

314:                                              ; preds = %307
  br label %317

315:                                              ; preds = %307
  call void @__assert_fail(ptr noundef @.str.39, ptr noundef @.str.12, i32 noundef 508, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

316:                                              ; No predecessors!
  br label %317

317:                                              ; preds = %316, %314
  %318 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 5
  %319 = load i32, ptr %7, align 4, !tbaa !19
  %320 = sext i32 %319 to i64
  %321 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %318, i64 noundef %320) #6
  %322 = load double, ptr %321, align 8, !tbaa !23
  %323 = fcmp oeq double %322, 0.000000e+00
  br i1 %323, label %324, label %325

324:                                              ; preds = %317
  br label %327

325:                                              ; preds = %317
  call void @__assert_fail(ptr noundef @.str.22, ptr noundef @.str.12, i32 noundef 509, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

326:                                              ; No predecessors!
  br label %327

327:                                              ; preds = %326, %324
  %328 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 6
  %329 = load i32, ptr %7, align 4, !tbaa !19
  %330 = sext i32 %329 to i64
  %331 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %328, i64 noundef %330) #6
  %332 = load double, ptr %331, align 8, !tbaa !23
  %333 = fcmp oeq double %332, 0.000000e+00
  br i1 %333, label %334, label %335

334:                                              ; preds = %327
  br label %337

335:                                              ; preds = %327
  call void @__assert_fail(ptr noundef @.str.23, ptr noundef @.str.12, i32 noundef 510, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

336:                                              ; No predecessors!
  br label %337

337:                                              ; preds = %336, %334
  br label %538

338:                                              ; preds = %52
  %339 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 2
  %340 = load i32, ptr %7, align 4, !tbaa !19
  %341 = sext i32 %340 to i64
  %342 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %339, i64 noundef %341) #6
  %343 = load double, ptr %342, align 8, !tbaa !23
  %344 = fcmp oeq double %343, 0.000000e+00
  br i1 %344, label %345, label %346

345:                                              ; preds = %338
  br label %348

346:                                              ; preds = %338
  call void @__assert_fail(ptr noundef @.str.46, ptr noundef @.str.12, i32 noundef 513, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

347:                                              ; No predecessors!
  br label %348

348:                                              ; preds = %347, %345
  %349 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 3
  %350 = load i32, ptr %7, align 4, !tbaa !19
  %351 = sext i32 %350 to i64
  %352 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %349, i64 noundef %351) #6
  %353 = load double, ptr %352, align 8, !tbaa !23
  %354 = fcmp oeq double %353, 0.000000e+00
  br i1 %354, label %355, label %356

355:                                              ; preds = %348
  br label %358

356:                                              ; preds = %348
  call void @__assert_fail(ptr noundef @.str.47, ptr noundef @.str.12, i32 noundef 514, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

357:                                              ; No predecessors!
  br label %358

358:                                              ; preds = %357, %355
  %359 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 5
  %360 = load i32, ptr %7, align 4, !tbaa !19
  %361 = sext i32 %360 to i64
  %362 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %359, i64 noundef %361) #6
  %363 = load double, ptr %362, align 8, !tbaa !23
  %364 = fcmp oeq double %363, 0.000000e+00
  br i1 %364, label %365, label %366

365:                                              ; preds = %358
  br label %368

366:                                              ; preds = %358
  call void @__assert_fail(ptr noundef @.str.22, ptr noundef @.str.12, i32 noundef 515, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

367:                                              ; No predecessors!
  br label %368

368:                                              ; preds = %367, %365
  %369 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 6
  %370 = load i32, ptr %7, align 4, !tbaa !19
  %371 = sext i32 %370 to i64
  %372 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %369, i64 noundef %371) #6
  %373 = load double, ptr %372, align 8, !tbaa !23
  %374 = fcmp oeq double %373, 0.000000e+00
  br i1 %374, label %375, label %376

375:                                              ; preds = %368
  br label %378

376:                                              ; preds = %368
  call void @__assert_fail(ptr noundef @.str.23, ptr noundef @.str.12, i32 noundef 516, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

377:                                              ; No predecessors!
  br label %378

378:                                              ; preds = %377, %375
  br label %538

379:                                              ; preds = %52
  %380 = load ptr, ptr %5, align 8, !tbaa !5
  %381 = load i32, ptr %7, align 4, !tbaa !19
  %382 = sext i32 %381 to i64
  %383 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %380, i64 noundef %382) #6
  %384 = load double, ptr %383, align 8, !tbaa !23
  %385 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %384)
  br i1 %385, label %386, label %387

386:                                              ; preds = %379
  br label %389

387:                                              ; preds = %379
  call void @__assert_fail(ptr noundef @.str.36, ptr noundef @.str.12, i32 noundef 519, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

388:                                              ; No predecessors!
  br label %389

389:                                              ; preds = %388, %386
  %390 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 2
  %391 = load i32, ptr %7, align 4, !tbaa !19
  %392 = sext i32 %391 to i64
  %393 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %390, i64 noundef %392) #6
  %394 = load double, ptr %393, align 8, !tbaa !23
  %395 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %394)
  br i1 %395, label %396, label %397

396:                                              ; preds = %389
  br label %399

397:                                              ; preds = %389
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.12, i32 noundef 520, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

398:                                              ; No predecessors!
  br label %399

399:                                              ; preds = %398, %396
  %400 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 3
  %401 = load i32, ptr %7, align 4, !tbaa !19
  %402 = sext i32 %401 to i64
  %403 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %400, i64 noundef %402) #6
  %404 = load double, ptr %403, align 8, !tbaa !23
  %405 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %404)
  br i1 %405, label %406, label %407

406:                                              ; preds = %399
  br label %409

407:                                              ; preds = %399
  call void @__assert_fail(ptr noundef @.str.39, ptr noundef @.str.12, i32 noundef 521, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

408:                                              ; No predecessors!
  br label %409

409:                                              ; preds = %408, %406
  %410 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 5
  %411 = load i32, ptr %7, align 4, !tbaa !19
  %412 = sext i32 %411 to i64
  %413 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %410, i64 noundef %412) #6
  %414 = load double, ptr %413, align 8, !tbaa !23
  %415 = fcmp oge double %414, 0.000000e+00
  br i1 %415, label %416, label %417

416:                                              ; preds = %409
  br label %419

417:                                              ; preds = %409
  call void @__assert_fail(ptr noundef @.str.48, ptr noundef @.str.12, i32 noundef 522, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

418:                                              ; No predecessors!
  br label %419

419:                                              ; preds = %418, %416
  %420 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 6
  %421 = load i32, ptr %7, align 4, !tbaa !19
  %422 = sext i32 %421 to i64
  %423 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %420, i64 noundef %422) #6
  %424 = load double, ptr %423, align 8, !tbaa !23
  %425 = fcmp oge double %424, 0.000000e+00
  br i1 %425, label %426, label %427

426:                                              ; preds = %419
  br label %429

427:                                              ; preds = %419
  call void @__assert_fail(ptr noundef @.str.49, ptr noundef @.str.12, i32 noundef 523, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

428:                                              ; No predecessors!
  br label %429

429:                                              ; preds = %428, %426
  br label %538

430:                                              ; preds = %52
  %431 = load ptr, ptr %6, align 8, !tbaa !5
  %432 = load i32, ptr %7, align 4, !tbaa !19
  %433 = sext i32 %432 to i64
  %434 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %431, i64 noundef %433) #6
  %435 = load double, ptr %434, align 8, !tbaa !23
  %436 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %435)
  br i1 %436, label %437, label %438

437:                                              ; preds = %430
  br label %440

438:                                              ; preds = %430
  call void @__assert_fail(ptr noundef @.str.42, ptr noundef @.str.12, i32 noundef 526, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

439:                                              ; No predecessors!
  br label %440

440:                                              ; preds = %439, %437
  %441 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 2
  %442 = load i32, ptr %7, align 4, !tbaa !19
  %443 = sext i32 %442 to i64
  %444 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %441, i64 noundef %443) #6
  %445 = load double, ptr %444, align 8, !tbaa !23
  %446 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %445)
  br i1 %446, label %447, label %448

447:                                              ; preds = %440
  br label %450

448:                                              ; preds = %440
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.12, i32 noundef 527, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

449:                                              ; No predecessors!
  br label %450

450:                                              ; preds = %449, %447
  %451 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 3
  %452 = load i32, ptr %7, align 4, !tbaa !19
  %453 = sext i32 %452 to i64
  %454 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %451, i64 noundef %453) #6
  %455 = load double, ptr %454, align 8, !tbaa !23
  %456 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %455)
  br i1 %456, label %457, label %458

457:                                              ; preds = %450
  br label %460

458:                                              ; preds = %450
  call void @__assert_fail(ptr noundef @.str.39, ptr noundef @.str.12, i32 noundef 528, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

459:                                              ; No predecessors!
  br label %460

460:                                              ; preds = %459, %457
  %461 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 5
  %462 = load i32, ptr %7, align 4, !tbaa !19
  %463 = sext i32 %462 to i64
  %464 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %461, i64 noundef %463) #6
  %465 = load double, ptr %464, align 8, !tbaa !23
  %466 = fcmp oge double %465, 0.000000e+00
  br i1 %466, label %467, label %468

467:                                              ; preds = %460
  br label %470

468:                                              ; preds = %460
  call void @__assert_fail(ptr noundef @.str.48, ptr noundef @.str.12, i32 noundef 529, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

469:                                              ; No predecessors!
  br label %470

470:                                              ; preds = %469, %467
  %471 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 6
  %472 = load i32, ptr %7, align 4, !tbaa !19
  %473 = sext i32 %472 to i64
  %474 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %471, i64 noundef %473) #6
  %475 = load double, ptr %474, align 8, !tbaa !23
  %476 = fcmp oge double %475, 0.000000e+00
  br i1 %476, label %477, label %478

477:                                              ; preds = %470
  br label %480

478:                                              ; preds = %470
  call void @__assert_fail(ptr noundef @.str.49, ptr noundef @.str.12, i32 noundef 530, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

479:                                              ; No predecessors!
  br label %480

480:                                              ; preds = %479, %477
  br label %538

481:                                              ; preds = %52
  %482 = load ptr, ptr %5, align 8, !tbaa !5
  %483 = load i32, ptr %7, align 4, !tbaa !19
  %484 = sext i32 %483 to i64
  %485 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %482, i64 noundef %484) #6
  %486 = load double, ptr %485, align 8, !tbaa !23
  %487 = load ptr, ptr %6, align 8, !tbaa !5
  %488 = load i32, ptr %7, align 4, !tbaa !19
  %489 = sext i32 %488 to i64
  %490 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %487, i64 noundef %489) #6
  %491 = load double, ptr %490, align 8, !tbaa !23
  %492 = fcmp oeq double %486, %491
  br i1 %492, label %493, label %494

493:                                              ; preds = %481
  br label %496

494:                                              ; preds = %481
  call void @__assert_fail(ptr noundef @.str.24, ptr noundef @.str.12, i32 noundef 533, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

495:                                              ; No predecessors!
  br label %496

496:                                              ; preds = %495, %493
  %497 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 2
  %498 = load i32, ptr %7, align 4, !tbaa !19
  %499 = sext i32 %498 to i64
  %500 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %497, i64 noundef %499) #6
  %501 = load double, ptr %500, align 8, !tbaa !23
  %502 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %501)
  br i1 %502, label %503, label %504

503:                                              ; preds = %496
  br label %506

504:                                              ; preds = %496
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.12, i32 noundef 534, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

505:                                              ; No predecessors!
  br label %506

506:                                              ; preds = %505, %503
  %507 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 3
  %508 = load i32, ptr %7, align 4, !tbaa !19
  %509 = sext i32 %508 to i64
  %510 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %507, i64 noundef %509) #6
  %511 = load double, ptr %510, align 8, !tbaa !23
  %512 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %511)
  br i1 %512, label %513, label %514

513:                                              ; preds = %506
  br label %516

514:                                              ; preds = %506
  call void @__assert_fail(ptr noundef @.str.39, ptr noundef @.str.12, i32 noundef 535, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

515:                                              ; No predecessors!
  br label %516

516:                                              ; preds = %515, %513
  %517 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 5
  %518 = load i32, ptr %7, align 4, !tbaa !19
  %519 = sext i32 %518 to i64
  %520 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %517, i64 noundef %519) #6
  %521 = load double, ptr %520, align 8, !tbaa !23
  %522 = fcmp oeq double %521, 0.000000e+00
  br i1 %522, label %523, label %524

523:                                              ; preds = %516
  br label %526

524:                                              ; preds = %516
  call void @__assert_fail(ptr noundef @.str.22, ptr noundef @.str.12, i32 noundef 536, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

525:                                              ; No predecessors!
  br label %526

526:                                              ; preds = %525, %523
  %527 = getelementptr inbounds %"class.ipx::Iterate", ptr %8, i32 0, i32 6
  %528 = load i32, ptr %7, align 4, !tbaa !19
  %529 = sext i32 %528 to i64
  %530 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %527, i64 noundef %529) #6
  %531 = load double, ptr %530, align 8, !tbaa !23
  %532 = fcmp oeq double %531, 0.000000e+00
  br i1 %532, label %533, label %534

533:                                              ; preds = %526
  br label %536

534:                                              ; preds = %526
  call void @__assert_fail(ptr noundef @.str.23, ptr noundef @.str.12, i32 noundef 537, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

535:                                              ; No predecessors!
  br label %536

536:                                              ; preds = %535, %533
  br label %538

537:                                              ; preds = %52
  call void @__assert_fail(ptr noundef @.str.50, ptr noundef @.str.12, i32 noundef 540, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #7
  unreachable

538:                                              ; preds = %536, %480, %429, %378, %337, %276, %197, %127
  br label %539

539:                                              ; preds = %538
  %540 = load i32, ptr %7, align 4, !tbaa !19
  %541 = add nsw i32 %540, 1
  store i32 %541, ptr %7, align 4, !tbaa !19
  br label %45, !llvm.loop !24

542:                                              ; preds = %51
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #6
  ret void
}

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

declare noundef zeroext i1 @_ZN3ipx9AllFiniteERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16)) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isinfd(double noundef) #1

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

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 0}
!10 = !{!"_ZTSN3ipx7IterateE", !6, i64 0, !11, i64 8, !11, i64 24, !11, i64 40, !11, i64 56, !11, i64 72, !11, i64 88, !13, i64 104, !11, i64 128, !11, i64 144, !11, i64 160, !11, i64 176, !17, i64 192, !17, i64 200, !17, i64 208, !17, i64 216, !17, i64 224, !17, i64 232, !17, i64 240, !17, i64 248, !17, i64 256, !18, i64 264, !18, i64 265, !17, i64 272, !17, i64 280, !17, i64 288}
!11 = !{!"_ZTSSt8valarrayIdE", !12, i64 0, !6, i64 8}
!12 = !{!"long", !7, i64 0}
!13 = !{!"_ZTSSt6vectorIN3ipx7Iterate11StateDetailESaIS2_EE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseIN3ipx7Iterate11StateDetailESaIS2_EE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIN3ipx7Iterate11StateDetailESaIS2_EE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIN3ipx7Iterate11StateDetailESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!17 = !{!"double", !7, i64 0}
!18 = !{!"bool", !7, i64 0}
!19 = !{!20, !20, i64 0}
!20 = !{!"int", !7, i64 0}
!21 = !{!22, !22, i64 0}
!22 = !{!"_ZTSN3ipx7Iterate11StateDetailE", !7, i64 0}
!23 = !{!17, !17, i64 0}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str.12 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [14 x i8], align 1
@__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv = external hidden unnamed_addr constant [40 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [6 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3ipx5Model4rowsEv(ptr noundef nonnull align 8 dereferenceable(704)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3ipx5Model4colsEv(ptr noundef nonnull align 8 dereferenceable(704)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model2lbEv(ptr noundef nonnull align 8 dereferenceable(704)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model2ubEv(ptr noundef nonnull align 8 dereferenceable(704)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt8isfinited(double noundef) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3ipx7Iterate18assert_consistencyEv(ptr noundef nonnull align 8 dereferenceable(296) %0) local_unnamed_addr #2 align 2 {
  %2 = load ptr, ptr %0, align 8, !tbaa !5
  %3 = tail call noundef i32 @_ZNK3ipx5Model4rowsEv(ptr noundef nonnull align 8 dereferenceable(704) %2)
  %4 = load ptr, ptr %0, align 8, !tbaa !5
  %5 = tail call noundef i32 @_ZNK3ipx5Model4colsEv(ptr noundef nonnull align 8 dereferenceable(704) %4)
  %6 = load ptr, ptr %0, align 8, !tbaa !5
  %7 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model2lbEv(ptr noundef nonnull align 8 dereferenceable(704) %6)
  %8 = load ptr, ptr %0, align 8, !tbaa !5
  %9 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model2ubEv(ptr noundef nonnull align 8 dereferenceable(704) %8)
  %10 = getelementptr inbounds i8, ptr %0, i64 8
  %11 = tail call noundef zeroext i1 @_ZN3ipx9AllFiniteERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %10)
  br i1 %11, label %13, label %12

12:                                               ; preds = %1
  tail call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.12, i32 noundef 473, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

13:                                               ; preds = %1
  %14 = getelementptr inbounds i8, ptr %0, i64 56
  %15 = tail call noundef zeroext i1 @_ZN3ipx9AllFiniteERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %14)
  br i1 %15, label %17, label %16

16:                                               ; preds = %13
  tail call void @__assert_fail(ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.12, i32 noundef 474, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

17:                                               ; preds = %13
  %18 = getelementptr inbounds i8, ptr %0, i64 72
  %19 = tail call noundef zeroext i1 @_ZN3ipx9AllFiniteERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %18)
  br i1 %19, label %21, label %20

20:                                               ; preds = %17
  tail call void @__assert_fail(ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.12, i32 noundef 475, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

21:                                               ; preds = %17
  %22 = getelementptr inbounds i8, ptr %0, i64 88
  %23 = tail call noundef zeroext i1 @_ZN3ipx9AllFiniteERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16) %22)
  br i1 %23, label %.preheader, label %29

.preheader:                                       ; preds = %21
  %24 = add nsw i32 %5, %3
  %25 = icmp sgt i32 %24, 0
  br i1 %25, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader
  %26 = getelementptr inbounds i8, ptr %0, i64 104
  %27 = getelementptr inbounds i8, ptr %0, i64 24
  %28 = getelementptr inbounds i8, ptr %0, i64 40
  %wide.trip.count = zext nneg i32 %24 to i64
  br label %30

29:                                               ; preds = %21
  tail call void @__assert_fail(ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.12, i32 noundef 476, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

._crit_edge:                                      ; preds = %263, %.preheader
  ret void

30:                                               ; preds = %.lr.ph, %263
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %263 ]
  %31 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN3ipx7Iterate11StateDetailESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %indvars.iv) #6
  %32 = load i32, ptr %31, align 4, !tbaa !18
  switch i32 %32, label %262 [
    i32 0, label %33
    i32 1, label %66
    i32 2, label %99
    i32 3, label %135
    i32 4, label %165
    i32 5, label %185
    i32 6, label %210
    i32 7, label %235
  ]

33:                                               ; preds = %30
  %34 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %indvars.iv) #6
  %35 = load double, ptr %34, align 8, !tbaa !20
  %36 = tail call noundef zeroext i1 @_ZSt8isfinited(double noundef %35)
  br i1 %36, label %38, label %37

37:                                               ; preds = %33
  tail call void @__assert_fail(ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.12, i32 noundef 481, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

38:                                               ; preds = %33
  %39 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef %indvars.iv) #6
  %40 = load double, ptr %39, align 8, !tbaa !20
  %41 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %40)
  br i1 %41, label %43, label %42

42:                                               ; preds = %38
  tail call void @__assert_fail(ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.12, i32 noundef 482, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

43:                                               ; preds = %38
  %44 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %27, i64 noundef %indvars.iv) #6
  %45 = load double, ptr %44, align 8, !tbaa !20
  %46 = tail call noundef zeroext i1 @_ZSt8isfinited(double noundef %45)
  br i1 %46, label %47, label %.critedge

47:                                               ; preds = %43
  %48 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %27, i64 noundef %indvars.iv) #6
  %49 = load double, ptr %48, align 8, !tbaa !20
  %50 = fcmp ogt double %49, 0.000000e+00
  br i1 %50, label %51, label %.critedge

.critedge:                                        ; preds = %43, %47
  tail call void @__assert_fail(ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.12, i32 noundef 483, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

51:                                               ; preds = %47
  %52 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %28, i64 noundef %indvars.iv) #6
  %53 = load double, ptr %52, align 8, !tbaa !20
  %54 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %53)
  br i1 %54, label %56, label %55

55:                                               ; preds = %51
  tail call void @__assert_fail(ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.12, i32 noundef 484, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

56:                                               ; preds = %51
  %57 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %indvars.iv) #6
  %58 = load double, ptr %57, align 8, !tbaa !20
  %59 = fcmp ogt double %58, 0.000000e+00
  br i1 %59, label %61, label %60

60:                                               ; preds = %56
  tail call void @__assert_fail(ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.12, i32 noundef 485, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

61:                                               ; preds = %56
  %62 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %22, i64 noundef %indvars.iv) #6
  %63 = load double, ptr %62, align 8, !tbaa !20
  %64 = fcmp oeq double %63, 0.000000e+00
  br i1 %64, label %263, label %65

65:                                               ; preds = %61
  tail call void @__assert_fail(ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.12, i32 noundef 486, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

66:                                               ; preds = %30
  %67 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %indvars.iv) #6
  %68 = load double, ptr %67, align 8, !tbaa !20
  %69 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %68)
  br i1 %69, label %71, label %70

70:                                               ; preds = %66
  tail call void @__assert_fail(ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.12, i32 noundef 489, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

71:                                               ; preds = %66
  %72 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef %indvars.iv) #6
  %73 = load double, ptr %72, align 8, !tbaa !20
  %74 = tail call noundef zeroext i1 @_ZSt8isfinited(double noundef %73)
  br i1 %74, label %76, label %75

75:                                               ; preds = %71
  tail call void @__assert_fail(ptr noundef nonnull @.str.42, ptr noundef nonnull @.str.12, i32 noundef 490, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

76:                                               ; preds = %71
  %77 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %27, i64 noundef %indvars.iv) #6
  %78 = load double, ptr %77, align 8, !tbaa !20
  %79 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %78)
  br i1 %79, label %81, label %80

80:                                               ; preds = %76
  tail call void @__assert_fail(ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.12, i32 noundef 491, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

81:                                               ; preds = %76
  %82 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %28, i64 noundef %indvars.iv) #6
  %83 = load double, ptr %82, align 8, !tbaa !20
  %84 = tail call noundef zeroext i1 @_ZSt8isfinited(double noundef %83)
  br i1 %84, label %85, label %.critedge2

85:                                               ; preds = %81
  %86 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %28, i64 noundef %indvars.iv) #6
  %87 = load double, ptr %86, align 8, !tbaa !20
  %88 = fcmp ogt double %87, 0.000000e+00
  br i1 %88, label %89, label %.critedge2

.critedge2:                                       ; preds = %81, %85
  tail call void @__assert_fail(ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.12, i32 noundef 492, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

89:                                               ; preds = %85
  %90 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %indvars.iv) #6
  %91 = load double, ptr %90, align 8, !tbaa !20
  %92 = fcmp oeq double %91, 0.000000e+00
  br i1 %92, label %94, label %93

93:                                               ; preds = %89
  tail call void @__assert_fail(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.12, i32 noundef 493, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

94:                                               ; preds = %89
  %95 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %22, i64 noundef %indvars.iv) #6
  %96 = load double, ptr %95, align 8, !tbaa !20
  %97 = fcmp ogt double %96, 0.000000e+00
  br i1 %97, label %263, label %98

98:                                               ; preds = %94
  tail call void @__assert_fail(ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.12, i32 noundef 494, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

99:                                               ; preds = %30
  %100 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %indvars.iv) #6
  %101 = load double, ptr %100, align 8, !tbaa !20
  %102 = tail call noundef zeroext i1 @_ZSt8isfinited(double noundef %101)
  br i1 %102, label %104, label %103

103:                                              ; preds = %99
  tail call void @__assert_fail(ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.12, i32 noundef 497, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

104:                                              ; preds = %99
  %105 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef %indvars.iv) #6
  %106 = load double, ptr %105, align 8, !tbaa !20
  %107 = tail call noundef zeroext i1 @_ZSt8isfinited(double noundef %106)
  br i1 %107, label %109, label %108

108:                                              ; preds = %104
  tail call void @__assert_fail(ptr noundef nonnull @.str.42, ptr noundef nonnull @.str.12, i32 noundef 498, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

109:                                              ; preds = %104
  %110 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %27, i64 noundef %indvars.iv) #6
  %111 = load double, ptr %110, align 8, !tbaa !20
  %112 = tail call noundef zeroext i1 @_ZSt8isfinited(double noundef %111)
  br i1 %112, label %113, label %.critedge4

113:                                              ; preds = %109
  %114 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %27, i64 noundef %indvars.iv) #6
  %115 = load double, ptr %114, align 8, !tbaa !20
  %116 = fcmp ogt double %115, 0.000000e+00
  br i1 %116, label %117, label %.critedge4

.critedge4:                                       ; preds = %109, %113
  tail call void @__assert_fail(ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.12, i32 noundef 499, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

117:                                              ; preds = %113
  %118 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %28, i64 noundef %indvars.iv) #6
  %119 = load double, ptr %118, align 8, !tbaa !20
  %120 = tail call noundef zeroext i1 @_ZSt8isfinited(double noundef %119)
  br i1 %120, label %121, label %.critedge6

121:                                              ; preds = %117
  %122 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %28, i64 noundef %indvars.iv) #6
  %123 = load double, ptr %122, align 8, !tbaa !20
  %124 = fcmp ogt double %123, 0.000000e+00
  br i1 %124, label %125, label %.critedge6

.critedge6:                                       ; preds = %117, %121
  tail call void @__assert_fail(ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.12, i32 noundef 500, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

125:                                              ; preds = %121
  %126 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %indvars.iv) #6
  %127 = load double, ptr %126, align 8, !tbaa !20
  %128 = fcmp ogt double %127, 0.000000e+00
  br i1 %128, label %130, label %129

129:                                              ; preds = %125
  tail call void @__assert_fail(ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.12, i32 noundef 501, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

130:                                              ; preds = %125
  %131 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %22, i64 noundef %indvars.iv) #6
  %132 = load double, ptr %131, align 8, !tbaa !20
  %133 = fcmp ogt double %132, 0.000000e+00
  br i1 %133, label %263, label %134

134:                                              ; preds = %130
  tail call void @__assert_fail(ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.12, i32 noundef 502, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

135:                                              ; preds = %30
  %136 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %indvars.iv) #6
  %137 = load double, ptr %136, align 8, !tbaa !20
  %138 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %137)
  br i1 %138, label %140, label %139

139:                                              ; preds = %135
  tail call void @__assert_fail(ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.12, i32 noundef 505, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

140:                                              ; preds = %135
  %141 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef %indvars.iv) #6
  %142 = load double, ptr %141, align 8, !tbaa !20
  %143 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %142)
  br i1 %143, label %145, label %144

144:                                              ; preds = %140
  tail call void @__assert_fail(ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.12, i32 noundef 506, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

145:                                              ; preds = %140
  %146 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %27, i64 noundef %indvars.iv) #6
  %147 = load double, ptr %146, align 8, !tbaa !20
  %148 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %147)
  br i1 %148, label %150, label %149

149:                                              ; preds = %145
  tail call void @__assert_fail(ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.12, i32 noundef 507, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

150:                                              ; preds = %145
  %151 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %28, i64 noundef %indvars.iv) #6
  %152 = load double, ptr %151, align 8, !tbaa !20
  %153 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %152)
  br i1 %153, label %155, label %154

154:                                              ; preds = %150
  tail call void @__assert_fail(ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.12, i32 noundef 508, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

155:                                              ; preds = %150
  %156 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %indvars.iv) #6
  %157 = load double, ptr %156, align 8, !tbaa !20
  %158 = fcmp oeq double %157, 0.000000e+00
  br i1 %158, label %160, label %159

159:                                              ; preds = %155
  tail call void @__assert_fail(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.12, i32 noundef 509, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

160:                                              ; preds = %155
  %161 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %22, i64 noundef %indvars.iv) #6
  %162 = load double, ptr %161, align 8, !tbaa !20
  %163 = fcmp oeq double %162, 0.000000e+00
  br i1 %163, label %263, label %164

164:                                              ; preds = %160
  tail call void @__assert_fail(ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.12, i32 noundef 510, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

165:                                              ; preds = %30
  %166 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %27, i64 noundef %indvars.iv) #6
  %167 = load double, ptr %166, align 8, !tbaa !20
  %168 = fcmp oeq double %167, 0.000000e+00
  br i1 %168, label %170, label %169

169:                                              ; preds = %165
  tail call void @__assert_fail(ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.12, i32 noundef 513, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

170:                                              ; preds = %165
  %171 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %28, i64 noundef %indvars.iv) #6
  %172 = load double, ptr %171, align 8, !tbaa !20
  %173 = fcmp oeq double %172, 0.000000e+00
  br i1 %173, label %175, label %174

174:                                              ; preds = %170
  tail call void @__assert_fail(ptr noundef nonnull @.str.47, ptr noundef nonnull @.str.12, i32 noundef 514, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

175:                                              ; preds = %170
  %176 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %indvars.iv) #6
  %177 = load double, ptr %176, align 8, !tbaa !20
  %178 = fcmp oeq double %177, 0.000000e+00
  br i1 %178, label %180, label %179

179:                                              ; preds = %175
  tail call void @__assert_fail(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.12, i32 noundef 515, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

180:                                              ; preds = %175
  %181 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %22, i64 noundef %indvars.iv) #6
  %182 = load double, ptr %181, align 8, !tbaa !20
  %183 = fcmp oeq double %182, 0.000000e+00
  br i1 %183, label %263, label %184

184:                                              ; preds = %180
  tail call void @__assert_fail(ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.12, i32 noundef 516, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

185:                                              ; preds = %30
  %186 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %indvars.iv) #6
  %187 = load double, ptr %186, align 8, !tbaa !20
  %188 = tail call noundef zeroext i1 @_ZSt8isfinited(double noundef %187)
  br i1 %188, label %190, label %189

189:                                              ; preds = %185
  tail call void @__assert_fail(ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.12, i32 noundef 519, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

190:                                              ; preds = %185
  %191 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %27, i64 noundef %indvars.iv) #6
  %192 = load double, ptr %191, align 8, !tbaa !20
  %193 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %192)
  br i1 %193, label %195, label %194

194:                                              ; preds = %190
  tail call void @__assert_fail(ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.12, i32 noundef 520, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

195:                                              ; preds = %190
  %196 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %28, i64 noundef %indvars.iv) #6
  %197 = load double, ptr %196, align 8, !tbaa !20
  %198 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %197)
  br i1 %198, label %200, label %199

199:                                              ; preds = %195
  tail call void @__assert_fail(ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.12, i32 noundef 521, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

200:                                              ; preds = %195
  %201 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %indvars.iv) #6
  %202 = load double, ptr %201, align 8, !tbaa !20
  %203 = fcmp ult double %202, 0.000000e+00
  br i1 %203, label %204, label %205

204:                                              ; preds = %200
  tail call void @__assert_fail(ptr noundef nonnull @.str.48, ptr noundef nonnull @.str.12, i32 noundef 522, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

205:                                              ; preds = %200
  %206 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %22, i64 noundef %indvars.iv) #6
  %207 = load double, ptr %206, align 8, !tbaa !20
  %208 = fcmp ult double %207, 0.000000e+00
  br i1 %208, label %209, label %263

209:                                              ; preds = %205
  tail call void @__assert_fail(ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.12, i32 noundef 523, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

210:                                              ; preds = %30
  %211 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef %indvars.iv) #6
  %212 = load double, ptr %211, align 8, !tbaa !20
  %213 = tail call noundef zeroext i1 @_ZSt8isfinited(double noundef %212)
  br i1 %213, label %215, label %214

214:                                              ; preds = %210
  tail call void @__assert_fail(ptr noundef nonnull @.str.42, ptr noundef nonnull @.str.12, i32 noundef 526, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

215:                                              ; preds = %210
  %216 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %27, i64 noundef %indvars.iv) #6
  %217 = load double, ptr %216, align 8, !tbaa !20
  %218 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %217)
  br i1 %218, label %220, label %219

219:                                              ; preds = %215
  tail call void @__assert_fail(ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.12, i32 noundef 527, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

220:                                              ; preds = %215
  %221 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %28, i64 noundef %indvars.iv) #6
  %222 = load double, ptr %221, align 8, !tbaa !20
  %223 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %222)
  br i1 %223, label %225, label %224

224:                                              ; preds = %220
  tail call void @__assert_fail(ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.12, i32 noundef 528, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

225:                                              ; preds = %220
  %226 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %indvars.iv) #6
  %227 = load double, ptr %226, align 8, !tbaa !20
  %228 = fcmp ult double %227, 0.000000e+00
  br i1 %228, label %229, label %230

229:                                              ; preds = %225
  tail call void @__assert_fail(ptr noundef nonnull @.str.48, ptr noundef nonnull @.str.12, i32 noundef 529, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

230:                                              ; preds = %225
  %231 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %22, i64 noundef %indvars.iv) #6
  %232 = load double, ptr %231, align 8, !tbaa !20
  %233 = fcmp ult double %232, 0.000000e+00
  br i1 %233, label %234, label %263

234:                                              ; preds = %230
  tail call void @__assert_fail(ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.12, i32 noundef 530, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

235:                                              ; preds = %30
  %236 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %indvars.iv) #6
  %237 = load double, ptr %236, align 8, !tbaa !20
  %238 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef %indvars.iv) #6
  %239 = load double, ptr %238, align 8, !tbaa !20
  %240 = fcmp oeq double %237, %239
  br i1 %240, label %242, label %241

241:                                              ; preds = %235
  tail call void @__assert_fail(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.12, i32 noundef 533, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

242:                                              ; preds = %235
  %243 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %27, i64 noundef %indvars.iv) #6
  %244 = load double, ptr %243, align 8, !tbaa !20
  %245 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %244)
  br i1 %245, label %247, label %246

246:                                              ; preds = %242
  tail call void @__assert_fail(ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.12, i32 noundef 534, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

247:                                              ; preds = %242
  %248 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %28, i64 noundef %indvars.iv) #6
  %249 = load double, ptr %248, align 8, !tbaa !20
  %250 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %249)
  br i1 %250, label %252, label %251

251:                                              ; preds = %247
  tail call void @__assert_fail(ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.12, i32 noundef 535, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

252:                                              ; preds = %247
  %253 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %indvars.iv) #6
  %254 = load double, ptr %253, align 8, !tbaa !20
  %255 = fcmp oeq double %254, 0.000000e+00
  br i1 %255, label %257, label %256

256:                                              ; preds = %252
  tail call void @__assert_fail(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.12, i32 noundef 536, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

257:                                              ; preds = %252
  %258 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %22, i64 noundef %indvars.iv) #6
  %259 = load double, ptr %258, align 8, !tbaa !20
  %260 = fcmp oeq double %259, 0.000000e+00
  br i1 %260, label %263, label %261

261:                                              ; preds = %257
  tail call void @__assert_fail(ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.12, i32 noundef 537, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

262:                                              ; preds = %30
  tail call void @__assert_fail(ptr noundef nonnull @.str.50, ptr noundef nonnull @.str.12, i32 noundef 540, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx7Iterate18assert_consistencyEv) #5
  unreachable

263:                                              ; preds = %61, %94, %130, %160, %180, %205, %230, %257
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %30, !llvm.loop !21
}

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

declare noundef zeroext i1 @_ZN3ipx9AllFiniteERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isinfd(double noundef) local_unnamed_addr #0

attributes #0 = { 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 #1 = { inlinehint 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 #2 = { 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 #3 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "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 }
attributes #6 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTSN3ipx7IterateE", !7, i64 0, !10, i64 8, !10, i64 24, !10, i64 40, !10, i64 56, !10, i64 72, !10, i64 88, !12, i64 104, !10, i64 128, !10, i64 144, !10, i64 160, !10, i64 176, !16, i64 192, !16, i64 200, !16, i64 208, !16, i64 216, !16, i64 224, !16, i64 232, !16, i64 240, !16, i64 248, !16, i64 256, !17, i64 264, !17, i64 265, !16, i64 272, !16, i64 280, !16, i64 288}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSSt8valarrayIdE", !11, i64 0, !7, i64 8}
!11 = !{!"long", !8, i64 0}
!12 = !{!"_ZTSSt6vectorIN3ipx7Iterate11StateDetailESaIS2_EE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseIN3ipx7Iterate11StateDetailESaIS2_EE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIN3ipx7Iterate11StateDetailESaIS2_EE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIN3ipx7Iterate11StateDetailESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!16 = !{!"double", !8, i64 0}
!17 = !{!"bool", !8, i64 0}
!18 = !{!19, !19, i64 0}
!19 = !{!"_ZTSN3ipx7Iterate11StateDetailE", !8, i64 0}
!20 = !{!16, !16, i64 0}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass