; LLVM IR from interpretml/interpret :: shared/libebm (Purify)

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

@g_traceLevel = external global i32, align 4
@.str = external hidden unnamed_addr constant [80 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [20 x i8], align 1
@__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_ = external hidden unnamed_addr constant [15 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [26 x i8], align 1
@__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_ = external hidden unnamed_addr constant [226 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [38 x i8], align 1
@_ZZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_E13LOG__sMessage = external hidden constant [54 x i8], align 16
@.str.27 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [51 x i8], align 1
@_ZZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_E13LOG__sMessage_0 = external hidden constant [54 x i8], align 16
@.str.31 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [105 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [129 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [60 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

declare void @InteralLogWithoutArguments(i32 noundef, ptr noundef) #1

declare void @LogAssertFailure(i64 noundef, ptr noundef, ptr noundef, ptr noundef) #1

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPKT_S3_m(ptr noundef, i64 noundef) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) #3

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_(double noundef %0, i64 noundef %1, i64 noundef %2, i64 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10) #4 {
  %12 = alloca i32, align 4
  %13 = alloca double, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i64, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca i64, align 8
  %33 = alloca ptr, align 8
  %34 = alloca double, align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca ptr, align 8
  %40 = alloca double, align 8
  %41 = alloca i32, align 4
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca i64, align 8
  %47 = alloca ptr, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca i64, align 8
  %56 = alloca ptr, align 8
  %57 = alloca double, align 8
  %58 = alloca double, align 8
  %59 = alloca double, align 8
  %60 = alloca double, align 8
  %61 = alloca double, align 8
  %62 = alloca i8, align 1
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca i64, align 8
  %68 = alloca i64, align 8
  %69 = alloca i64, align 8
  %70 = alloca i64, align 8
  %71 = alloca ptr, align 8
  %72 = alloca i64, align 8
  %73 = alloca i64, align 8
  %74 = alloca i64, align 8
  %75 = alloca i64, align 8
  %76 = alloca ptr, align 8
  %77 = alloca i64, align 8
  %78 = alloca i64, align 8
  %79 = alloca i64, align 8
  %80 = alloca double, align 8
  %81 = alloca i64, align 8
  %82 = alloca double, align 8
  %83 = alloca double, align 8
  %84 = alloca i64, align 8
  %85 = alloca i64, align 8
  %86 = alloca double, align 8
  %87 = alloca i64, align 8
  %88 = alloca i64, align 8
  %89 = alloca i64, align 8
  %90 = alloca double, align 8
  %91 = alloca double, align 8
  %92 = alloca double, align 8
  %93 = alloca double, align 8
  %94 = alloca double, align 8
  %95 = alloca double, align 8
  %96 = alloca double, align 8
  %97 = alloca double, align 8
  %98 = alloca double, align 8
  %99 = alloca double, align 8
  %100 = alloca ptr, align 8
  %101 = alloca double, align 8
  %102 = alloca double, align 8
  %103 = alloca double, align 8
  %104 = alloca double, align 8
  %105 = alloca i64, align 8
  %106 = alloca ptr, align 8
  %107 = alloca double, align 8
  %108 = alloca double, align 8
  %109 = alloca i64, align 8
  %110 = alloca ptr, align 8
  %111 = alloca double, align 8
  %112 = alloca double, align 8
  %113 = alloca double, align 8
  %114 = alloca i64, align 8
  %115 = alloca i64, align 8
  %116 = alloca ptr, align 8
  %117 = alloca double, align 8
  %118 = alloca double, align 8
  %119 = alloca double, align 8
  %120 = alloca double, align 8
  %121 = alloca double, align 8
  %122 = alloca i64, align 8
  %123 = alloca ptr, align 8
  %124 = alloca double, align 8
  %125 = alloca double, align 8
  %126 = alloca double, align 8
  %127 = alloca double, align 8
  %128 = alloca double, align 8
  %129 = alloca double, align 8
  %130 = alloca double, align 8
  %131 = alloca double, align 8
  %132 = alloca i64, align 8
  %133 = alloca ptr, align 8
  %134 = alloca double, align 8
  %135 = alloca double, align 8
  store double %0, ptr %13, align 8, !tbaa !5
  store i64 %1, ptr %14, align 8, !tbaa !9
  store i64 %2, ptr %15, align 8, !tbaa !9
  store i64 %3, ptr %16, align 8, !tbaa !9
  store ptr %4, ptr %17, align 8, !tbaa !11
  store ptr %5, ptr %18, align 8, !tbaa !11
  store ptr %6, ptr %19, align 8, !tbaa !11
  store ptr %7, ptr %20, align 8, !tbaa !11
  store ptr %8, ptr %21, align 8, !tbaa !11
  store ptr %9, ptr %22, align 8, !tbaa !11
  store ptr %10, ptr %23, align 8, !tbaa !11
  %136 = load double, ptr %13, align 8, !tbaa !5
  %137 = call noundef zeroext i1 @_ZSt5isnand(double noundef %136)
  br i1 %137, label %138, label %140

138:                                              ; preds = %11
  call void @LogAssertFailure(i64 noundef 229, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.7)
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str, i32 noundef 229, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

139:                                              ; No predecessors!
  br label %140

140:                                              ; preds = %139, %11
  %141 = phi i1 [ true, %11 ], [ false, %139 ]
  %142 = load double, ptr %13, align 8, !tbaa !5
  %143 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %142)
  br i1 %143, label %144, label %146

144:                                              ; preds = %140
  call void @LogAssertFailure(i64 noundef 230, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.9)
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str, i32 noundef 230, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

145:                                              ; No predecessors!
  br label %146

146:                                              ; preds = %145, %140
  %147 = phi i1 [ true, %140 ], [ false, %145 ]
  %148 = load double, ptr %13, align 8, !tbaa !5
  %149 = fcmp oeq double 0.000000e+00, %148
  br i1 %149, label %156, label %150

150:                                              ; preds = %146
  %151 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %152 = load double, ptr %13, align 8, !tbaa !5
  %153 = fcmp ole double %151, %152
  br i1 %153, label %156, label %154

154:                                              ; preds = %150
  call void @LogAssertFailure(i64 noundef 231, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.11)
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str, i32 noundef 231, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

155:                                              ; No predecessors!
  br label %156

156:                                              ; preds = %155, %150, %146
  %157 = phi i1 [ true, %150 ], [ true, %146 ], [ false, %155 ]
  %158 = load i64, ptr %14, align 8, !tbaa !9
  %159 = icmp ule i64 1, %158
  br i1 %159, label %162, label %160

160:                                              ; preds = %156
  call void @LogAssertFailure(i64 noundef 232, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.13)
  call void @__assert_fail(ptr noundef @.str.14, ptr noundef @.str, i32 noundef 232, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

161:                                              ; No predecessors!
  br label %162

162:                                              ; preds = %161, %156
  %163 = phi i1 [ true, %156 ], [ false, %161 ]
  %164 = load i64, ptr %15, align 8, !tbaa !9
  %165 = icmp ule i64 1, %164
  br i1 %165, label %168, label %166

166:                                              ; preds = %162
  call void @LogAssertFailure(i64 noundef 233, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.3)
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str, i32 noundef 233, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

167:                                              ; No predecessors!
  br label %168

168:                                              ; preds = %167, %162
  %169 = phi i1 [ true, %162 ], [ false, %167 ]
  %170 = load ptr, ptr %17, align 8, !tbaa !11
  %171 = icmp ne ptr null, %170
  br i1 %171, label %177, label %172

172:                                              ; preds = %168
  %173 = load ptr, ptr %18, align 8, !tbaa !11
  %174 = icmp eq ptr %173, null
  br i1 %174, label %177, label %175

175:                                              ; preds = %172
  call void @LogAssertFailure(i64 noundef 234, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.15)
  call void @__assert_fail(ptr noundef @.str.16, ptr noundef @.str, i32 noundef 234, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

176:                                              ; No predecessors!
  br label %177

177:                                              ; preds = %176, %172, %168
  %178 = phi i1 [ true, %172 ], [ true, %168 ], [ false, %176 ]
  %179 = load ptr, ptr %19, align 8, !tbaa !11
  %180 = icmp ne ptr null, %179
  br i1 %180, label %183, label %181

181:                                              ; preds = %177
  call void @LogAssertFailure(i64 noundef 235, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.17)
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str, i32 noundef 235, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

182:                                              ; No predecessors!
  br label %183

183:                                              ; preds = %182, %177
  %184 = phi i1 [ true, %177 ], [ false, %182 ]
  %185 = load ptr, ptr %20, align 8, !tbaa !11
  %186 = icmp ne ptr null, %185
  br i1 %186, label %189, label %187

187:                                              ; preds = %183
  call void @LogAssertFailure(i64 noundef 236, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.19)
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str, i32 noundef 236, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

188:                                              ; No predecessors!
  br label %189

189:                                              ; preds = %188, %183
  %190 = phi i1 [ true, %183 ], [ false, %188 ]
  %191 = load ptr, ptr %21, align 8, !tbaa !11
  %192 = icmp ne ptr null, %191
  br i1 %192, label %195, label %193

193:                                              ; preds = %189
  call void @LogAssertFailure(i64 noundef 237, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.21)
  call void @__assert_fail(ptr noundef @.str.22, ptr noundef @.str, i32 noundef 237, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

194:                                              ; No predecessors!
  br label %195

195:                                              ; preds = %194, %189
  %196 = phi i1 [ true, %189 ], [ false, %194 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %197 = load i64, ptr %14, align 8, !tbaa !9
  %198 = mul i64 8, %197
  store i64 %198, ptr %24, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %199 = load i64, ptr %24, align 8, !tbaa !9
  %200 = load i64, ptr %15, align 8, !tbaa !9
  %201 = mul i64 %199, %200
  store i64 %201, ptr %25, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %202 = load ptr, ptr %20, align 8, !tbaa !11
  %203 = load i64, ptr %15, align 8, !tbaa !9
  %204 = getelementptr inbounds double, ptr %202, i64 %203
  store ptr %204, ptr %26, align 8, !tbaa !11
  %205 = load ptr, ptr %23, align 8, !tbaa !11
  %206 = icmp eq ptr null, %205
  br i1 %206, label %213, label %207

207:                                              ; preds = %195
  %208 = load ptr, ptr %23, align 8, !tbaa !11
  %209 = load double, ptr %208, align 8, !tbaa !5
  %210 = fcmp oeq double 0.000000e+00, %209
  br i1 %210, label %213, label %211

211:                                              ; preds = %207
  call void @LogAssertFailure(i64 noundef 243, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.23)
  call void @__assert_fail(ptr noundef @.str.24, ptr noundef @.str, i32 noundef 243, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

212:                                              ; No predecessors!
  br label %213

213:                                              ; preds = %212, %207, %195
  %214 = phi i1 [ true, %207 ], [ true, %195 ], [ false, %212 ]
  %215 = load ptr, ptr %22, align 8, !tbaa !11
  %216 = icmp ne ptr null, %215
  br i1 %216, label %217, label %239

217:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  store i64 0, ptr %27, align 8, !tbaa !9
  br label %218

218:                                              ; preds = %235, %217
  %219 = load i64, ptr %27, align 8, !tbaa !9
  %220 = load i64, ptr %16, align 8, !tbaa !9
  %221 = icmp ult i64 %219, %220
  br i1 %221, label %223, label %222

222:                                              ; preds = %218
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  br label %238

223:                                              ; preds = %218
  %224 = load ptr, ptr %22, align 8, !tbaa !11
  %225 = load i64, ptr %27, align 8, !tbaa !9
  %226 = load i64, ptr %14, align 8, !tbaa !9
  %227 = mul i64 %225, %226
  %228 = getelementptr inbounds double, ptr %224, i64 %227
  %229 = load double, ptr %228, align 8, !tbaa !5
  %230 = fcmp oeq double 0.000000e+00, %229
  br i1 %230, label %233, label %231

231:                                              ; preds = %223
  call void @LogAssertFailure(i64 noundef 248, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.25)
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str, i32 noundef 248, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

232:                                              ; No predecessors!
  br label %233

233:                                              ; preds = %232, %223
  %234 = phi i1 [ true, %223 ], [ false, %232 ]
  br label %235

235:                                              ; preds = %233
  %236 = load i64, ptr %27, align 8, !tbaa !9
  %237 = add i64 %236, 1
  store i64 %237, ptr %27, align 8, !tbaa !9
  br label %218, !llvm.loop !13

238:                                              ; preds = %222
  br label %239

239:                                              ; preds = %238, %213
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  store double 0.000000e+00, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  store double 0.000000e+00, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  store double 0.000000e+00, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  store double 1.000000e+00, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  store i64 0, ptr %32, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %240 = load ptr, ptr %20, align 8, !tbaa !11
  store ptr %240, ptr %33, align 8, !tbaa !11
  br label %241

241:                                              ; preds = %445, %239
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  %242 = load ptr, ptr %33, align 8, !tbaa !11
  %243 = load double, ptr %242, align 8, !tbaa !5
  store double %243, ptr %34, align 8, !tbaa !5
  %244 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %245 = load double, ptr %34, align 8, !tbaa !5
  %246 = fcmp ole double %244, %245
  br i1 %246, label %259, label %247

247:                                              ; preds = %241
  %248 = load double, ptr %34, align 8, !tbaa !5
  %249 = fcmp ole double 0.000000e+00, %248
  br i1 %249, label %258, label %250

250:                                              ; preds = %247
  br label %251

251:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  store i32 1, ptr %35, align 4, !tbaa !15
  %252 = load i32, ptr @g_traceLevel, align 4, !tbaa !15
  %253 = icmp sle i32 1, %252
  br i1 %253, label %254, label %255

254:                                              ; preds = %251
  call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef @_ZZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_E13LOG__sMessage)
  br label %255

255:                                              ; preds = %254, %251
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  br label %256

256:                                              ; preds = %255
  br label %257

257:                                              ; preds = %256
  store i32 -3, ptr %12, align 4
  store i32 1, ptr %36, align 4
  br label %442

258:                                              ; preds = %247
  store double 0.000000e+00, ptr %34, align 8, !tbaa !5
  br label %259

259:                                              ; preds = %258, %241
  %260 = load double, ptr %34, align 8, !tbaa !5
  %261 = call noundef zeroext i1 @_ZSt5isnand(double noundef %260)
  br i1 %261, label %262, label %264

262:                                              ; preds = %259
  call void @LogAssertFailure(i64 noundef 271, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.27)
  call void @__assert_fail(ptr noundef @.str.28, ptr noundef @.str, i32 noundef 271, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

263:                                              ; No predecessors!
  br label %264

264:                                              ; preds = %263, %259
  %265 = phi i1 [ true, %259 ], [ false, %263 ]
  %266 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %267 = load double, ptr %34, align 8, !tbaa !5
  %268 = fcmp oeq double %266, %267
  br i1 %268, label %269, label %382

269:                                              ; preds = %264
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  br label %281

270:                                              ; No predecessors!
  br label %271

271:                                              ; preds = %375, %270
  %272 = load double, ptr %31, align 8, !tbaa !5
  %273 = fmul double %272, 5.000000e-01
  store double %273, ptr %31, align 8, !tbaa !5
  %274 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %275 = load double, ptr %31, align 8, !tbaa !5
  %276 = fcmp ole double %274, %275
  br i1 %276, label %279, label %277

277:                                              ; preds = %271
  call void @LogAssertFailure(i64 noundef 278, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.29)
  call void @__assert_fail(ptr noundef @.str.30, ptr noundef @.str, i32 noundef 278, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

278:                                              ; No predecessors!
  br label %279

279:                                              ; preds = %278, %271
  %280 = phi i1 [ true, %271 ], [ false, %278 ]
  br label %281

281:                                              ; preds = %279, %269
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  %282 = load i64, ptr %32, align 8, !tbaa !9
  store i64 %282, ptr %38, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %283 = load ptr, ptr %33, align 8, !tbaa !11
  store ptr %283, ptr %39, align 8, !tbaa !11
  store double 0.000000e+00, ptr %29, align 8, !tbaa !5
  store i64 0, ptr %37, align 8, !tbaa !9
  br label %284

284:                                              ; preds = %367, %281
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %285 = load ptr, ptr %39, align 8, !tbaa !11
  %286 = load double, ptr %285, align 8, !tbaa !5
  store double %286, ptr %40, align 8, !tbaa !5
  %287 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %288 = load double, ptr %40, align 8, !tbaa !5
  %289 = fcmp ole double %287, %288
  br i1 %289, label %302, label %290

290:                                              ; preds = %284
  %291 = load double, ptr %40, align 8, !tbaa !5
  %292 = fcmp ole double 0.000000e+00, %291
  br i1 %292, label %301, label %293

293:                                              ; preds = %290
  br label %294

294:                                              ; preds = %293
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #8
  store i32 1, ptr %41, align 4, !tbaa !15
  %295 = load i32, ptr @g_traceLevel, align 4, !tbaa !15
  %296 = icmp sle i32 1, %295
  br i1 %296, label %297, label %298

297:                                              ; preds = %294
  call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef @_ZZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_E13LOG__sMessage_0)
  br label %298

298:                                              ; preds = %297, %294
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  br label %299

299:                                              ; preds = %298
  br label %300

300:                                              ; preds = %299
  store i32 -3, ptr %12, align 4
  store i32 1, ptr %36, align 4
  br label %364

301:                                              ; preds = %290
  store double 0.000000e+00, ptr %40, align 8, !tbaa !5
  br label %302

302:                                              ; preds = %301, %284
  %303 = load double, ptr %40, align 8, !tbaa !5
  %304 = call noundef zeroext i1 @_ZSt5isnand(double noundef %303)
  br i1 %304, label %305, label %307

305:                                              ; preds = %302
  call void @LogAssertFailure(i64 noundef 295, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.31)
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str, i32 noundef 295, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

306:                                              ; No predecessors!
  br label %307

307:                                              ; preds = %306, %302
  %308 = phi i1 [ true, %302 ], [ false, %306 ]
  %309 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %310 = load double, ptr %40, align 8, !tbaa !5
  %311 = fcmp oeq double %309, %310
  br i1 %311, label %312, label %358

312:                                              ; preds = %307
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %313 = load ptr, ptr %21, align 8, !tbaa !11
  %314 = load i64, ptr %38, align 8, !tbaa !9
  %315 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef %313, i64 noundef %314) #8
  %316 = load double, ptr %315, align 8, !tbaa !5
  store double %316, ptr %42, align 8, !tbaa !5
  %317 = load double, ptr %42, align 8, !tbaa !5
  %318 = call noundef zeroext i1 @_ZSt5isnand(double noundef %317)
  br i1 %318, label %357, label %319

319:                                              ; preds = %312
  %320 = load double, ptr %42, align 8, !tbaa !5
  %321 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %320)
  br i1 %321, label %357, label %322

322:                                              ; preds = %319
  %323 = load i64, ptr %37, align 8, !tbaa !9
  %324 = add i64 %323, 1
  store i64 %324, ptr %37, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %325 = load double, ptr %31, align 8, !tbaa !5
  %326 = load double, ptr %42, align 8, !tbaa !5
  %327 = fmul double %325, %326
  store double %327, ptr %43, align 8, !tbaa !5
  %328 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %329 = fneg double %328
  %330 = load double, ptr %43, align 8, !tbaa !5
  %331 = fcmp olt double %329, %330
  br i1 %331, label %332, label %337

332:                                              ; preds = %322
  %333 = load double, ptr %43, align 8, !tbaa !5
  %334 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %335 = fcmp olt double %333, %334
  br i1 %335, label %336, label %337

336:                                              ; preds = %332
  store double 0.000000e+00, ptr %43, align 8, !tbaa !5
  br label %337

337:                                              ; preds = %336, %332, %322
  %338 = load double, ptr %43, align 8, !tbaa !5
  %339 = load double, ptr %29, align 8, !tbaa !5
  %340 = fadd double %339, %338
  store double %340, ptr %29, align 8, !tbaa !5
  %341 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %342 = fneg double %341
  %343 = load double, ptr %29, align 8, !tbaa !5
  %344 = fcmp olt double %342, %343
  br i1 %344, label %345, label %350

345:                                              ; preds = %337
  %346 = load double, ptr %29, align 8, !tbaa !5
  %347 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %348 = fcmp olt double %346, %347
  br i1 %348, label %349, label %350

349:                                              ; preds = %345
  store double 0.000000e+00, ptr %29, align 8, !tbaa !5
  br label %350

350:                                              ; preds = %349, %345, %337
  %351 = load double, ptr %29, align 8, !tbaa !5
  %352 = call noundef zeroext i1 @_ZSt5isnand(double noundef %351)
  br i1 %352, label %353, label %355

353:                                              ; preds = %350
  call void @LogAssertFailure(i64 noundef 314, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.33)
  call void @__assert_fail(ptr noundef @.str.34, ptr noundef @.str, i32 noundef 314, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

354:                                              ; No predecessors!
  br label %355

355:                                              ; preds = %354, %350
  %356 = phi i1 [ true, %350 ], [ false, %354 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  br label %357

357:                                              ; preds = %355, %319, %312
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %358

358:                                              ; preds = %357, %307
  %359 = load i64, ptr %24, align 8, !tbaa !9
  %360 = load i64, ptr %38, align 8, !tbaa !9
  %361 = add i64 %360, %359
  store i64 %361, ptr %38, align 8, !tbaa !9
  %362 = load ptr, ptr %39, align 8, !tbaa !11
  %363 = getelementptr inbounds double, ptr %362, i32 1
  store ptr %363, ptr %39, align 8, !tbaa !11
  store i32 0, ptr %36, align 4
  br label %364

364:                                              ; preds = %358, %300
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  %365 = load i32, ptr %36, align 4
  switch i32 %365, label %372 [
    i32 0, label %366
  ]

366:                                              ; preds = %364
  br label %367

367:                                              ; preds = %366
  %368 = load ptr, ptr %26, align 8, !tbaa !11
  %369 = load ptr, ptr %39, align 8, !tbaa !11
  %370 = icmp ne ptr %368, %369
  br i1 %370, label %284, label %371, !llvm.loop !17

371:                                              ; preds = %367
  store i32 0, ptr %36, align 4
  br label %372

372:                                              ; preds = %371, %364
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  %373 = load i32, ptr %36, align 4
  switch i32 %373, label %381 [
    i32 0, label %374
  ]

374:                                              ; preds = %372
  br label %375

375:                                              ; preds = %374
  %376 = load double, ptr %29, align 8, !tbaa !5
  %377 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %376)
  br i1 %377, label %271, label %378, !llvm.loop !18

378:                                              ; preds = %375
  store double 0.000000e+00, ptr %28, align 8, !tbaa !5
  %379 = load i64, ptr %37, align 8, !tbaa !9
  %380 = uitofp i64 %379 to double
  store double %380, ptr %30, align 8, !tbaa !5
  store i32 16, ptr %36, align 4
  br label %381

381:                                              ; preds = %378, %372
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  br label %442

382:                                              ; preds = %264
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %383 = load ptr, ptr %21, align 8, !tbaa !11
  %384 = load i64, ptr %32, align 8, !tbaa !9
  %385 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef %383, i64 noundef %384) #8
  %386 = load double, ptr %385, align 8, !tbaa !5
  store double %386, ptr %44, align 8, !tbaa !5
  %387 = load double, ptr %44, align 8, !tbaa !5
  %388 = call noundef zeroext i1 @_ZSt5isnand(double noundef %387)
  br i1 %388, label %436, label %389

389:                                              ; preds = %382
  %390 = load double, ptr %44, align 8, !tbaa !5
  %391 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %390)
  br i1 %391, label %436, label %392

392:                                              ; preds = %389
  %393 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %394 = fneg double %393
  %395 = load double, ptr %44, align 8, !tbaa !5
  %396 = fcmp olt double %394, %395
  br i1 %396, label %397, label %402

397:                                              ; preds = %392
  %398 = load double, ptr %44, align 8, !tbaa !5
  %399 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %400 = fcmp olt double %398, %399
  br i1 %400, label %401, label %402

401:                                              ; preds = %397
  store double 0.000000e+00, ptr %44, align 8, !tbaa !5
  br label %402

402:                                              ; preds = %401, %397, %392
  %403 = load double, ptr %34, align 8, !tbaa !5
  %404 = load double, ptr %30, align 8, !tbaa !5
  %405 = fadd double %404, %403
  store double %405, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %406 = load double, ptr %34, align 8, !tbaa !5
  %407 = load double, ptr %44, align 8, !tbaa !5
  %408 = fmul double %406, %407
  store double %408, ptr %45, align 8, !tbaa !5
  %409 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %410 = fneg double %409
  %411 = load double, ptr %45, align 8, !tbaa !5
  %412 = fcmp olt double %410, %411
  br i1 %412, label %413, label %418

413:                                              ; preds = %402
  %414 = load double, ptr %45, align 8, !tbaa !5
  %415 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %416 = fcmp olt double %414, %415
  br i1 %416, label %417, label %418

417:                                              ; preds = %413
  store double 0.000000e+00, ptr %45, align 8, !tbaa !5
  br label %418

418:                                              ; preds = %417, %413, %402
  %419 = load double, ptr %45, align 8, !tbaa !5
  %420 = load double, ptr %29, align 8, !tbaa !5
  %421 = fadd double %420, %419
  store double %421, ptr %29, align 8, !tbaa !5
  %422 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %423 = fneg double %422
  %424 = load double, ptr %29, align 8, !tbaa !5
  %425 = fcmp olt double %423, %424
  br i1 %425, label %426, label %431

426:                                              ; preds = %418
  %427 = load double, ptr %29, align 8, !tbaa !5
  %428 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %429 = fcmp olt double %427, %428
  br i1 %429, label %430, label %431

430:                                              ; preds = %426
  store double 0.000000e+00, ptr %29, align 8, !tbaa !5
  br label %431

431:                                              ; preds = %430, %426, %418
  %432 = load double, ptr %45, align 8, !tbaa !5
  %433 = call noundef double @_ZSt3absd(double noundef %432)
  %434 = load double, ptr %28, align 8, !tbaa !5
  %435 = fadd double %434, %433
  store double %435, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  br label %436

436:                                              ; preds = %431, %389, %382
  %437 = load i64, ptr %24, align 8, !tbaa !9
  %438 = load i64, ptr %32, align 8, !tbaa !9
  %439 = add i64 %438, %437
  store i64 %439, ptr %32, align 8, !tbaa !9
  %440 = load ptr, ptr %33, align 8, !tbaa !11
  %441 = getelementptr inbounds double, ptr %440, i32 1
  store ptr %441, ptr %33, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  store i32 0, ptr %36, align 4
  br label %442

442:                                              ; preds = %436, %381, %257
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  %443 = load i32, ptr %36, align 4
  switch i32 %443, label %2023 [
    i32 0, label %444
    i32 16, label %612
  ]

444:                                              ; preds = %442
  br label %445

445:                                              ; preds = %444
  %446 = load ptr, ptr %26, align 8, !tbaa !11
  %447 = load ptr, ptr %33, align 8, !tbaa !11
  %448 = icmp ne ptr %446, %447
  br i1 %448, label %241, label %449, !llvm.loop !19

449:                                              ; preds = %445
  %450 = load double, ptr %30, align 8, !tbaa !5
  %451 = call noundef zeroext i1 @_ZSt5isnand(double noundef %450)
  br i1 %451, label %452, label %454

452:                                              ; preds = %449
  call void @LogAssertFailure(i64 noundef 350, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.35)
  call void @__assert_fail(ptr noundef @.str.36, ptr noundef @.str, i32 noundef 350, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

453:                                              ; No predecessors!
  br label %454

454:                                              ; preds = %453, %449
  %455 = phi i1 [ true, %449 ], [ false, %453 ]
  %456 = load double, ptr %30, align 8, !tbaa !5
  %457 = fcmp oeq double 0.000000e+00, %456
  br i1 %457, label %464, label %458

458:                                              ; preds = %454
  %459 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %460 = load double, ptr %30, align 8, !tbaa !5
  %461 = fcmp ole double %459, %460
  br i1 %461, label %464, label %462

462:                                              ; preds = %458
  call void @LogAssertFailure(i64 noundef 351, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.37)
  call void @__assert_fail(ptr noundef @.str.38, ptr noundef @.str, i32 noundef 351, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

463:                                              ; No predecessors!
  br label %464

464:                                              ; preds = %463, %458, %454
  %465 = phi i1 [ true, %458 ], [ true, %454 ], [ false, %463 ]
  %466 = load double, ptr %28, align 8, !tbaa !5
  %467 = call noundef zeroext i1 @_ZSt5isnand(double noundef %466)
  br i1 %467, label %468, label %470

468:                                              ; preds = %464
  call void @LogAssertFailure(i64 noundef 357, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.39)
  call void @__assert_fail(ptr noundef @.str.40, ptr noundef @.str, i32 noundef 357, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

469:                                              ; No predecessors!
  br label %470

470:                                              ; preds = %469, %464
  %471 = phi i1 [ true, %464 ], [ false, %469 ]
  %472 = load double, ptr %28, align 8, !tbaa !5
  %473 = fcmp oeq double 0.000000e+00, %472
  br i1 %473, label %480, label %474

474:                                              ; preds = %470
  %475 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %476 = load double, ptr %28, align 8, !tbaa !5
  %477 = fcmp ole double %475, %476
  br i1 %477, label %480, label %478

478:                                              ; preds = %474
  call void @LogAssertFailure(i64 noundef 358, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.41)
  call void @__assert_fail(ptr noundef @.str.42, ptr noundef @.str, i32 noundef 358, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

479:                                              ; No predecessors!
  br label %480

480:                                              ; preds = %479, %474, %470
  %481 = phi i1 [ true, %474 ], [ true, %470 ], [ false, %479 ]
  %482 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %483 = load double, ptr %28, align 8, !tbaa !5
  %484 = fcmp ole double %482, %483
  br i1 %484, label %485, label %2022

485:                                              ; preds = %480
  br label %486

486:                                              ; preds = %594, %485
  %487 = load double, ptr %29, align 8, !tbaa !5
  %488 = call noundef zeroext i1 @_ZSt5isnand(double noundef %487)
  br i1 %488, label %495, label %489

489:                                              ; preds = %486
  %490 = load double, ptr %29, align 8, !tbaa !5
  %491 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %490)
  br i1 %491, label %495, label %492

492:                                              ; preds = %489
  %493 = load double, ptr %30, align 8, !tbaa !5
  %494 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %493)
  br label %495

495:                                              ; preds = %492, %489, %486
  %496 = phi i1 [ true, %489 ], [ true, %486 ], [ %494, %492 ]
  br i1 %496, label %497, label %595

497:                                              ; preds = %495
  %498 = load double, ptr %31, align 8, !tbaa !5
  %499 = fmul double %498, 5.000000e-01
  store double %499, ptr %31, align 8, !tbaa !5
  %500 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %501 = load double, ptr %31, align 8, !tbaa !5
  %502 = fcmp ole double %500, %501
  br i1 %502, label %505, label %503

503:                                              ; preds = %497
  call void @LogAssertFailure(i64 noundef 370, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.29)
  call void @__assert_fail(ptr noundef @.str.30, ptr noundef @.str, i32 noundef 370, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

504:                                              ; No predecessors!
  br label %505

505:                                              ; preds = %504, %497
  %506 = phi i1 [ true, %497 ], [ false, %504 ]
  store double 0.000000e+00, ptr %29, align 8, !tbaa !5
  store double 0.000000e+00, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  store i64 0, ptr %46, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %507 = load ptr, ptr %20, align 8, !tbaa !11
  store ptr %507, ptr %47, align 8, !tbaa !11
  br label %508

508:                                              ; preds = %590, %505
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %509 = load ptr, ptr %47, align 8, !tbaa !11
  %510 = load double, ptr %509, align 8, !tbaa !5
  store double %510, ptr %48, align 8, !tbaa !5
  %511 = load double, ptr %48, align 8, !tbaa !5
  %512 = call noundef zeroext i1 @_ZSt5isnand(double noundef %511)
  br i1 %512, label %520, label %513

513:                                              ; preds = %508
  %514 = load double, ptr %48, align 8, !tbaa !5
  %515 = fcmp ole double 0.000000e+00, %514
  br i1 %515, label %516, label %520

516:                                              ; preds = %513
  %517 = load double, ptr %48, align 8, !tbaa !5
  %518 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %519 = fcmp une double %517, %518
  br i1 %519, label %522, label %520

520:                                              ; preds = %516, %513, %508
  call void @LogAssertFailure(i64 noundef 377, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.43)
  call void @__assert_fail(ptr noundef @.str.44, ptr noundef @.str, i32 noundef 377, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

521:                                              ; No predecessors!
  br label %522

522:                                              ; preds = %521, %516
  %523 = phi i1 [ true, %516 ], [ false, %521 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %524 = load ptr, ptr %21, align 8, !tbaa !11
  %525 = load i64, ptr %46, align 8, !tbaa !9
  %526 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef %524, i64 noundef %525) #8
  %527 = load double, ptr %526, align 8, !tbaa !5
  store double %527, ptr %49, align 8, !tbaa !5
  %528 = load double, ptr %49, align 8, !tbaa !5
  %529 = call noundef zeroext i1 @_ZSt5isnand(double noundef %528)
  br i1 %529, label %584, label %530

530:                                              ; preds = %522
  %531 = load double, ptr %49, align 8, !tbaa !5
  %532 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %531)
  br i1 %532, label %584, label %533

533:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %534 = load double, ptr %31, align 8, !tbaa !5
  %535 = load double, ptr %48, align 8, !tbaa !5
  %536 = fmul double %534, %535
  store double %536, ptr %50, align 8, !tbaa !5
  %537 = load double, ptr %50, align 8, !tbaa !5
  %538 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %539 = fcmp olt double %537, %538
  br i1 %539, label %540, label %541

540:                                              ; preds = %533
  store double 0.000000e+00, ptr %50, align 8, !tbaa !5
  br label %541

541:                                              ; preds = %540, %533
  %542 = load double, ptr %50, align 8, !tbaa !5
  %543 = load double, ptr %30, align 8, !tbaa !5
  %544 = fadd double %543, %542
  store double %544, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %545 = load double, ptr %31, align 8, !tbaa !5
  %546 = load double, ptr %49, align 8, !tbaa !5
  %547 = fmul double %545, %546
  store double %547, ptr %51, align 8, !tbaa !5
  %548 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %549 = fneg double %548
  %550 = load double, ptr %51, align 8, !tbaa !5
  %551 = fcmp olt double %549, %550
  br i1 %551, label %552, label %557

552:                                              ; preds = %541
  %553 = load double, ptr %51, align 8, !tbaa !5
  %554 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %555 = fcmp olt double %553, %554
  br i1 %555, label %556, label %557

556:                                              ; preds = %552
  store double 0.000000e+00, ptr %51, align 8, !tbaa !5
  br label %557

557:                                              ; preds = %556, %552, %541
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  %558 = load double, ptr %51, align 8, !tbaa !5
  %559 = load double, ptr %50, align 8, !tbaa !5
  %560 = fmul double %558, %559
  store double %560, ptr %52, align 8, !tbaa !5
  %561 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %562 = fneg double %561
  %563 = load double, ptr %52, align 8, !tbaa !5
  %564 = fcmp olt double %562, %563
  br i1 %564, label %565, label %570

565:                                              ; preds = %557
  %566 = load double, ptr %52, align 8, !tbaa !5
  %567 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %568 = fcmp olt double %566, %567
  br i1 %568, label %569, label %570

569:                                              ; preds = %565
  store double 0.000000e+00, ptr %52, align 8, !tbaa !5
  br label %570

570:                                              ; preds = %569, %565, %557
  %571 = load double, ptr %52, align 8, !tbaa !5
  %572 = load double, ptr %29, align 8, !tbaa !5
  %573 = fadd double %572, %571
  store double %573, ptr %29, align 8, !tbaa !5
  %574 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %575 = fneg double %574
  %576 = load double, ptr %29, align 8, !tbaa !5
  %577 = fcmp olt double %575, %576
  br i1 %577, label %578, label %583

578:                                              ; preds = %570
  %579 = load double, ptr %29, align 8, !tbaa !5
  %580 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %581 = fcmp olt double %579, %580
  br i1 %581, label %582, label %583

582:                                              ; preds = %578
  store double 0.000000e+00, ptr %29, align 8, !tbaa !5
  br label %583

583:                                              ; preds = %582, %578, %570
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %584

584:                                              ; preds = %583, %530, %522
  %585 = load i64, ptr %24, align 8, !tbaa !9
  %586 = load i64, ptr %46, align 8, !tbaa !9
  %587 = add i64 %586, %585
  store i64 %587, ptr %46, align 8, !tbaa !9
  %588 = load ptr, ptr %47, align 8, !tbaa !11
  %589 = getelementptr inbounds double, ptr %588, i32 1
  store ptr %589, ptr %47, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  br label %590

590:                                              ; preds = %584
  %591 = load ptr, ptr %26, align 8, !tbaa !11
  %592 = load ptr, ptr %47, align 8, !tbaa !11
  %593 = icmp ne ptr %591, %592
  br i1 %593, label %508, label %594, !llvm.loop !20

594:                                              ; preds = %590
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %486, !llvm.loop !21

595:                                              ; preds = %495
  %596 = load double, ptr %30, align 8, !tbaa !5
  %597 = call noundef zeroext i1 @_ZSt5isnand(double noundef %596)
  br i1 %597, label %598, label %600

598:                                              ; preds = %595
  call void @LogAssertFailure(i64 noundef 408, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.35)
  call void @__assert_fail(ptr noundef @.str.36, ptr noundef @.str, i32 noundef 408, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

599:                                              ; No predecessors!
  br label %600

600:                                              ; preds = %599, %595
  %601 = phi i1 [ true, %595 ], [ false, %599 ]
  %602 = load double, ptr %30, align 8, !tbaa !5
  %603 = fcmp oeq double 0.000000e+00, %602
  br i1 %603, label %610, label %604

604:                                              ; preds = %600
  %605 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %606 = load double, ptr %30, align 8, !tbaa !5
  %607 = fcmp ole double %605, %606
  br i1 %607, label %610, label %608

608:                                              ; preds = %604
  call void @LogAssertFailure(i64 noundef 409, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.37)
  call void @__assert_fail(ptr noundef @.str.38, ptr noundef @.str, i32 noundef 409, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

609:                                              ; No predecessors!
  br label %610

610:                                              ; preds = %609, %604, %600
  %611 = phi i1 [ true, %604 ], [ true, %600 ], [ false, %609 ]
  br label %612

612:                                              ; preds = %610, %442
  %613 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %614 = load double, ptr %30, align 8, !tbaa !5
  %615 = fcmp ole double %613, %614
  br i1 %615, label %616, label %2021

616:                                              ; preds = %612
  %617 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %618 = load double, ptr %28, align 8, !tbaa !5
  %619 = fcmp oeq double %617, %618
  br i1 %619, label %620, label %621

620:                                              ; preds = %616
  store double 0.000000e+00, ptr %28, align 8, !tbaa !5
  br label %657

621:                                              ; preds = %616
  %622 = load double, ptr %13, align 8, !tbaa !5
  %623 = load double, ptr %28, align 8, !tbaa !5
  %624 = fmul double %623, %622
  store double %624, ptr %28, align 8, !tbaa !5
  %625 = load double, ptr %28, align 8, !tbaa !5
  %626 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %627 = fcmp olt double %625, %626
  br i1 %627, label %628, label %629

628:                                              ; preds = %621
  store double 0.000000e+00, ptr %28, align 8, !tbaa !5
  br label %629

629:                                              ; preds = %628, %621
  %630 = load double, ptr %31, align 8, !tbaa !5
  %631 = load double, ptr %28, align 8, !tbaa !5
  %632 = fmul double %631, %630
  store double %632, ptr %28, align 8, !tbaa !5
  %633 = load double, ptr %28, align 8, !tbaa !5
  %634 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %635 = fcmp olt double %633, %634
  br i1 %635, label %636, label %637

636:                                              ; preds = %629
  store double 0.000000e+00, ptr %28, align 8, !tbaa !5
  br label %637

637:                                              ; preds = %636, %629
  %638 = load double, ptr %30, align 8, !tbaa !5
  %639 = load double, ptr %28, align 8, !tbaa !5
  %640 = fdiv double %639, %638
  store double %640, ptr %28, align 8, !tbaa !5
  %641 = load double, ptr %28, align 8, !tbaa !5
  %642 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %643 = fcmp olt double %641, %642
  br i1 %643, label %644, label %645

644:                                              ; preds = %637
  store double 0.000000e+00, ptr %28, align 8, !tbaa !5
  br label %645

645:                                              ; preds = %644, %637
  %646 = load double, ptr %28, align 8, !tbaa !5
  %647 = call noundef zeroext i1 @_ZSt5isnand(double noundef %646)
  br i1 %647, label %648, label %650

648:                                              ; preds = %645
  call void @LogAssertFailure(i64 noundef 442, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.39)
  call void @__assert_fail(ptr noundef @.str.40, ptr noundef @.str, i32 noundef 442, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

649:                                              ; No predecessors!
  br label %650

650:                                              ; preds = %649, %645
  %651 = phi i1 [ true, %645 ], [ false, %649 ]
  %652 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %653 = load double, ptr %28, align 8, !tbaa !5
  %654 = fcmp oeq double %652, %653
  br i1 %654, label %655, label %656

655:                                              ; preds = %650
  store double 0.000000e+00, ptr %28, align 8, !tbaa !5
  br label %656

656:                                              ; preds = %655, %650
  br label %657

657:                                              ; preds = %656, %620
  %658 = load ptr, ptr %23, align 8, !tbaa !11
  %659 = icmp ne ptr null, %658
  br i1 %659, label %660, label %766

660:                                              ; preds = %657
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %661 = load double, ptr %29, align 8, !tbaa !5
  %662 = load double, ptr %30, align 8, !tbaa !5
  %663 = fdiv double %661, %662
  store double %663, ptr %53, align 8, !tbaa !5
  %664 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %665 = fneg double %664
  %666 = load double, ptr %53, align 8, !tbaa !5
  %667 = fcmp olt double %665, %666
  br i1 %667, label %668, label %673

668:                                              ; preds = %660
  %669 = load double, ptr %53, align 8, !tbaa !5
  %670 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %671 = fcmp olt double %669, %670
  br i1 %671, label %672, label %673

672:                                              ; preds = %668
  store double 0.000000e+00, ptr %53, align 8, !tbaa !5
  br label %673

673:                                              ; preds = %672, %668, %660
  %674 = load double, ptr %31, align 8, !tbaa !5
  %675 = load double, ptr %53, align 8, !tbaa !5
  %676 = fdiv double %675, %674
  store double %676, ptr %53, align 8, !tbaa !5
  %677 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %678 = fneg double %677
  %679 = load double, ptr %53, align 8, !tbaa !5
  %680 = fcmp olt double %678, %679
  br i1 %680, label %681, label %686

681:                                              ; preds = %673
  %682 = load double, ptr %53, align 8, !tbaa !5
  %683 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %684 = fcmp olt double %682, %683
  br i1 %684, label %685, label %686

685:                                              ; preds = %681
  store double 0.000000e+00, ptr %53, align 8, !tbaa !5
  br label %686

686:                                              ; preds = %685, %681, %673
  %687 = load double, ptr %53, align 8, !tbaa !5
  %688 = call noundef zeroext i1 @_ZSt5isnand(double noundef %687)
  br i1 %688, label %689, label %691

689:                                              ; preds = %686
  call void @LogAssertFailure(i64 noundef 462, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.45)
  call void @__assert_fail(ptr noundef @.str.46, ptr noundef @.str, i32 noundef 462, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

690:                                              ; No predecessors!
  br label %691

691:                                              ; preds = %690, %686
  %692 = phi i1 [ true, %686 ], [ false, %690 ]
  %693 = load double, ptr %53, align 8, !tbaa !5
  %694 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %693)
  br i1 %694, label %695, label %713

695:                                              ; preds = %691
  %696 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %697 = load double, ptr %53, align 8, !tbaa !5
  %698 = fcmp oeq double %696, %697
  br i1 %698, label %699, label %701

699:                                              ; preds = %695
  %700 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #8
  store double %700, ptr %53, align 8, !tbaa !5
  br label %712

701:                                              ; preds = %695
  %702 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %703 = fneg double %702
  %704 = load double, ptr %53, align 8, !tbaa !5
  %705 = fcmp oeq double %703, %704
  br i1 %705, label %708, label %706

706:                                              ; preds = %701
  call void @LogAssertFailure(i64 noundef 473, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.47)
  call void @__assert_fail(ptr noundef @.str.48, ptr noundef @.str, i32 noundef 473, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

707:                                              ; No predecessors!
  br label %708

708:                                              ; preds = %707, %701
  %709 = phi i1 [ true, %701 ], [ false, %707 ]
  %710 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #8
  %711 = fneg double %710
  store double %711, ptr %53, align 8, !tbaa !5
  br label %712

712:                                              ; preds = %708, %699
  br label %713

713:                                              ; preds = %712, %691
  %714 = load double, ptr %53, align 8, !tbaa !5
  %715 = load ptr, ptr %23, align 8, !tbaa !11
  store double %714, ptr %715, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  %716 = load double, ptr %53, align 8, !tbaa !5
  %717 = fneg double %716
  store double %717, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  store i64 0, ptr %55, align 8, !tbaa !9
  br label %718

718:                                              ; preds = %761, %713
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  %719 = load ptr, ptr %21, align 8, !tbaa !11
  %720 = load i64, ptr %55, align 8, !tbaa !9
  %721 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef %719, i64 noundef %720) #8
  store ptr %721, ptr %56, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  %722 = load ptr, ptr %56, align 8, !tbaa !11
  %723 = load double, ptr %722, align 8, !tbaa !5
  store double %723, ptr %57, align 8, !tbaa !5
  %724 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %725 = fneg double %724
  %726 = load double, ptr %57, align 8, !tbaa !5
  %727 = fcmp olt double %725, %726
  br i1 %727, label %728, label %733

728:                                              ; preds = %718
  %729 = load double, ptr %57, align 8, !tbaa !5
  %730 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %731 = fcmp olt double %729, %730
  br i1 %731, label %732, label %733

732:                                              ; preds = %728
  store double 0.000000e+00, ptr %57, align 8, !tbaa !5
  br label %733

733:                                              ; preds = %732, %728, %718
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #8
  %734 = load double, ptr %57, align 8, !tbaa !5
  %735 = load double, ptr %54, align 8, !tbaa !5
  %736 = fadd double %734, %735
  store double %736, ptr %58, align 8, !tbaa !5
  %737 = load double, ptr %57, align 8, !tbaa !5
  %738 = call noundef zeroext i1 @_ZSt5isnand(double noundef %737)
  br i1 %738, label %744, label %739

739:                                              ; preds = %733
  %740 = load double, ptr %58, align 8, !tbaa !5
  %741 = call noundef zeroext i1 @_ZSt5isnand(double noundef %740)
  br i1 %741, label %742, label %744

742:                                              ; preds = %739
  call void @LogAssertFailure(i64 noundef 490, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.49)
  call void @__assert_fail(ptr noundef @.str.50, ptr noundef @.str, i32 noundef 490, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

743:                                              ; No predecessors!
  br label %744

744:                                              ; preds = %743, %739, %733
  %745 = phi i1 [ true, %739 ], [ true, %733 ], [ false, %743 ]
  %746 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %747 = fneg double %746
  %748 = load double, ptr %58, align 8, !tbaa !5
  %749 = fcmp olt double %747, %748
  br i1 %749, label %750, label %755

750:                                              ; preds = %744
  %751 = load double, ptr %58, align 8, !tbaa !5
  %752 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %753 = fcmp olt double %751, %752
  br i1 %753, label %754, label %755

754:                                              ; preds = %750
  store double 0.000000e+00, ptr %58, align 8, !tbaa !5
  br label %755

755:                                              ; preds = %754, %750, %744
  %756 = load double, ptr %58, align 8, !tbaa !5
  %757 = load ptr, ptr %56, align 8, !tbaa !11
  store double %756, ptr %757, align 8, !tbaa !5
  %758 = load i64, ptr %24, align 8, !tbaa !9
  %759 = load i64, ptr %55, align 8, !tbaa !9
  %760 = add i64 %759, %758
  store i64 %760, ptr %55, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  br label %761

761:                                              ; preds = %755
  %762 = load i64, ptr %25, align 8, !tbaa !9
  %763 = load i64, ptr %55, align 8, !tbaa !9
  %764 = icmp ne i64 %762, %763
  br i1 %764, label %718, label %765, !llvm.loop !22

765:                                              ; preds = %761
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  br label %766

766:                                              ; preds = %765, %657
  %767 = load i64, ptr %16, align 8, !tbaa !9
  %768 = icmp ne i64 0, %767
  br i1 %768, label %769, label %2020

769:                                              ; preds = %766
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  %770 = load i64, ptr %16, align 8, !tbaa !9
  %771 = uitofp i64 %770 to double
  %772 = fdiv double 5.000000e-01, %771
  store double %772, ptr %59, align 8, !tbaa !5
  %773 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %774 = load double, ptr %59, align 8, !tbaa !5
  %775 = fcmp ole double %773, %774
  br i1 %775, label %778, label %776

776:                                              ; preds = %769
  call void @LogAssertFailure(i64 noundef 507, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.51)
  call void @__assert_fail(ptr noundef @.str.52, ptr noundef @.str, i32 noundef 507, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

777:                                              ; No predecessors!
  br label %778

778:                                              ; preds = %777, %769
  %779 = phi i1 [ true, %769 ], [ false, %777 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #8
  %780 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  store double %780, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #8
  br label %781

781:                                              ; preds = %1507, %778
  %782 = load double, ptr %61, align 8, !tbaa !5
  %783 = call noundef zeroext i1 @_ZSt5isnand(double noundef %782)
  br i1 %783, label %784, label %786

784:                                              ; preds = %781
  %785 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  br label %788

786:                                              ; preds = %781
  %787 = load double, ptr %61, align 8, !tbaa !5
  br label %788

788:                                              ; preds = %786, %784
  %789 = phi double [ %785, %784 ], [ %787, %786 ]
  store double %789, ptr %61, align 8, !tbaa !5
  %790 = load double, ptr %61, align 8, !tbaa !5
  store double %790, ptr %60, align 8, !tbaa !5
  store double 0.000000e+00, ptr %61, align 8, !tbaa !5
  store i8 0, ptr %62, align 1, !tbaa !23
  %791 = load ptr, ptr %18, align 8, !tbaa !11
  %792 = icmp ne ptr null, %791
  br i1 %792, label %793, label %832

793:                                              ; preds = %788
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  %794 = load i64, ptr %16, align 8, !tbaa !9
  store i64 %794, ptr %63, align 8, !tbaa !9
  br label %795

795:                                              ; preds = %802, %793
  %796 = load i64, ptr %63, align 8, !tbaa !9
  %797 = add i64 %796, -1
  store i64 %797, ptr %63, align 8, !tbaa !9
  %798 = load i64, ptr %63, align 8, !tbaa !9
  %799 = load ptr, ptr %18, align 8, !tbaa !11
  %800 = load i64, ptr %63, align 8, !tbaa !9
  %801 = getelementptr inbounds i64, ptr %799, i64 %800
  store i64 %798, ptr %801, align 8, !tbaa !9
  br label %802

802:                                              ; preds = %795
  %803 = load i64, ptr %63, align 8, !tbaa !9
  %804 = icmp ne i64 0, %803
  br i1 %804, label %795, label %805, !llvm.loop !25

805:                                              ; preds = %802
  %806 = load i64, ptr %16, align 8, !tbaa !9
  store i64 %806, ptr %63, align 8, !tbaa !9
  br label %807

807:                                              ; preds = %828, %805
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  %808 = load ptr, ptr %17, align 8, !tbaa !11
  %809 = load i64, ptr %63, align 8, !tbaa !9
  %810 = call noundef i64 @_ZN14NAMESPACE_MAIN19RandomDeterministic8NextFastImEENSt9enable_ifIXaasr3std11is_unsignedIT_EE5valueltclL_ZNSt14numeric_limitsIjE3maxEvEEclsr3std14numeric_limitsIS3_EE3maxEES3_E4typeES3_(ptr noundef nonnull align 8 dereferenceable(24) %808, i64 noundef %809)
  store i64 %810, ptr %64, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #8
  %811 = load ptr, ptr %18, align 8, !tbaa !11
  %812 = load i64, ptr %64, align 8, !tbaa !9
  %813 = getelementptr inbounds i64, ptr %811, i64 %812
  %814 = load i64, ptr %813, align 8, !tbaa !9
  store i64 %814, ptr %65, align 8, !tbaa !9
  %815 = load i64, ptr %63, align 8, !tbaa !9
  %816 = add i64 %815, -1
  store i64 %816, ptr %63, align 8, !tbaa !9
  %817 = load ptr, ptr %18, align 8, !tbaa !11
  %818 = load i64, ptr %63, align 8, !tbaa !9
  %819 = getelementptr inbounds i64, ptr %817, i64 %818
  %820 = load i64, ptr %819, align 8, !tbaa !9
  %821 = load ptr, ptr %18, align 8, !tbaa !11
  %822 = load i64, ptr %64, align 8, !tbaa !9
  %823 = getelementptr inbounds i64, ptr %821, i64 %822
  store i64 %820, ptr %823, align 8, !tbaa !9
  %824 = load i64, ptr %65, align 8, !tbaa !9
  %825 = load ptr, ptr %18, align 8, !tbaa !11
  %826 = load i64, ptr %63, align 8, !tbaa !9
  %827 = getelementptr inbounds i64, ptr %825, i64 %826
  store i64 %824, ptr %827, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  br label %828

828:                                              ; preds = %807
  %829 = load i64, ptr %63, align 8, !tbaa !9
  %830 = icmp ne i64 0, %829
  br i1 %830, label %807, label %831, !llvm.loop !26

831:                                              ; preds = %828
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  br label %832

832:                                              ; preds = %831, %788
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #8
  store i64 0, ptr %66, align 8, !tbaa !9
  br label %833

833:                                              ; preds = %1494, %832
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #8
  %834 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %834, ptr %67, align 8, !tbaa !9
  %835 = load ptr, ptr %18, align 8, !tbaa !11
  %836 = icmp ne ptr null, %835
  br i1 %836, label %837, label %842

837:                                              ; preds = %833
  %838 = load ptr, ptr %18, align 8, !tbaa !11
  %839 = load i64, ptr %66, align 8, !tbaa !9
  %840 = getelementptr inbounds i64, ptr %838, i64 %839
  %841 = load i64, ptr %840, align 8, !tbaa !9
  store i64 %841, ptr %67, align 8, !tbaa !9
  br label %842

842:                                              ; preds = %837, %833
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #8
  store i64 8, ptr %68, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  %843 = load i64, ptr %67, align 8, !tbaa !9
  store i64 %843, ptr %70, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #8
  %844 = load ptr, ptr %19, align 8, !tbaa !11
  store ptr %844, ptr %71, align 8, !tbaa !11
  br label %845

845:                                              ; preds = %881, %842
  br label %846

846:                                              ; preds = %845
  %847 = load ptr, ptr %71, align 8, !tbaa !11
  %848 = load i64, ptr %847, align 8, !tbaa !9
  store i64 %848, ptr %69, align 8, !tbaa !9
  %849 = load i64, ptr %69, align 8, !tbaa !9
  %850 = icmp ule i64 1, %849
  br i1 %850, label %853, label %851

851:                                              ; preds = %846
  call void @LogAssertFailure(i64 noundef 556, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.53)
  call void @__assert_fail(ptr noundef @.str.54, ptr noundef @.str, i32 noundef 556, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

852:                                              ; No predecessors!
  br label %853

853:                                              ; preds = %852, %846
  %854 = phi i1 [ true, %846 ], [ false, %852 ]
  %855 = load i64, ptr %15, align 8, !tbaa !9
  %856 = load i64, ptr %69, align 8, !tbaa !9
  %857 = urem i64 %855, %856
  %858 = icmp eq i64 0, %857
  br i1 %858, label %861, label %859

859:                                              ; preds = %853
  call void @LogAssertFailure(i64 noundef 557, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.55)
  call void @__assert_fail(ptr noundef @.str.56, ptr noundef @.str, i32 noundef 557, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

860:                                              ; No predecessors!
  br label %861

861:                                              ; preds = %860, %853
  %862 = phi i1 [ true, %853 ], [ false, %860 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #8
  %863 = load i64, ptr %15, align 8, !tbaa !9
  %864 = load i64, ptr %69, align 8, !tbaa !9
  %865 = udiv i64 %863, %864
  store i64 %865, ptr %72, align 8, !tbaa !9
  %866 = load i64, ptr %70, align 8, !tbaa !9
  %867 = load i64, ptr %72, align 8, !tbaa !9
  %868 = icmp ult i64 %866, %867
  br i1 %868, label %869, label %870

869:                                              ; preds = %861
  store i32 32, ptr %36, align 4
  br label %879

870:                                              ; preds = %861
  %871 = load i64, ptr %72, align 8, !tbaa !9
  %872 = load i64, ptr %70, align 8, !tbaa !9
  %873 = sub i64 %872, %871
  store i64 %873, ptr %70, align 8, !tbaa !9
  %874 = load i64, ptr %69, align 8, !tbaa !9
  %875 = load i64, ptr %68, align 8, !tbaa !9
  %876 = mul i64 %875, %874
  store i64 %876, ptr %68, align 8, !tbaa !9
  %877 = load ptr, ptr %71, align 8, !tbaa !11
  %878 = getelementptr inbounds i64, ptr %877, i32 1
  store ptr %878, ptr %71, align 8, !tbaa !11
  store i32 0, ptr %36, align 4
  br label %879

879:                                              ; preds = %870, %869
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #8
  %880 = load i32, ptr %36, align 4
  switch i32 %880, label %2025 [
    i32 0, label %881
    i32 32, label %882
  ]

881:                                              ; preds = %879
  br label %845, !llvm.loop !27

882:                                              ; preds = %879
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #8
  %883 = load i64, ptr %68, align 8, !tbaa !9
  %884 = load i64, ptr %14, align 8, !tbaa !9
  %885 = mul i64 %883, %884
  store i64 %885, ptr %73, align 8, !tbaa !9
  %886 = load i64, ptr %69, align 8, !tbaa !9
  %887 = icmp ne i64 1, %886
  br i1 %887, label %888, label %1491

888:                                              ; preds = %882
  %889 = load i64, ptr %15, align 8, !tbaa !9
  %890 = load i64, ptr %69, align 8, !tbaa !9
  %891 = icmp ne i64 %889, %890
  br i1 %891, label %892, label %1491

892:                                              ; preds = %888
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  store i64 0, ptr %74, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #8
  store i64 8, ptr %75, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  %893 = load ptr, ptr %19, align 8, !tbaa !11
  store ptr %893, ptr %76, align 8, !tbaa !11
  br label %894

894:                                              ; preds = %921, %892
  %895 = load i64, ptr %70, align 8, !tbaa !9
  %896 = icmp ne i64 0, %895
  br i1 %896, label %897, label %927

897:                                              ; preds = %894
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #8
  %898 = load ptr, ptr %76, align 8, !tbaa !11
  %899 = load i64, ptr %898, align 8, !tbaa !9
  store i64 %899, ptr %77, align 8, !tbaa !9
  %900 = load i64, ptr %77, align 8, !tbaa !9
  %901 = icmp ule i64 1, %900
  br i1 %901, label %904, label %902

902:                                              ; preds = %897
  call void @LogAssertFailure(i64 noundef 586, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.57)
  call void @__assert_fail(ptr noundef @.str.58, ptr noundef @.str, i32 noundef 586, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

903:                                              ; No predecessors!
  br label %904

904:                                              ; preds = %903, %897
  %905 = phi i1 [ true, %897 ], [ false, %903 ]
  %906 = load ptr, ptr %76, align 8, !tbaa !11
  %907 = load ptr, ptr %71, align 8, !tbaa !11
  %908 = icmp ne ptr %906, %907
  br i1 %908, label %909, label %921

909:                                              ; preds = %904
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  %910 = load i64, ptr %70, align 8, !tbaa !9
  %911 = load i64, ptr %77, align 8, !tbaa !9
  %912 = urem i64 %910, %911
  store i64 %912, ptr %78, align 8, !tbaa !9
  %913 = load i64, ptr %77, align 8, !tbaa !9
  %914 = load i64, ptr %70, align 8, !tbaa !9
  %915 = udiv i64 %914, %913
  store i64 %915, ptr %70, align 8, !tbaa !9
  %916 = load i64, ptr %78, align 8, !tbaa !9
  %917 = load i64, ptr %75, align 8, !tbaa !9
  %918 = mul i64 %916, %917
  %919 = load i64, ptr %74, align 8, !tbaa !9
  %920 = add i64 %919, %918
  store i64 %920, ptr %74, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  br label %921

921:                                              ; preds = %909, %904
  %922 = load i64, ptr %77, align 8, !tbaa !9
  %923 = load i64, ptr %75, align 8, !tbaa !9
  %924 = mul i64 %923, %922
  store i64 %924, ptr %75, align 8, !tbaa !9
  %925 = load ptr, ptr %76, align 8, !tbaa !11
  %926 = getelementptr inbounds i64, ptr %925, i32 1
  store ptr %926, ptr %76, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  br label %894, !llvm.loop !28

927:                                              ; preds = %894
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  %928 = load i64, ptr %74, align 8, !tbaa !9
  %929 = load i64, ptr %14, align 8, !tbaa !9
  %930 = mul i64 %928, %929
  store i64 %930, ptr %79, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  store double 1.000000e+00, ptr %80, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #8
  %931 = load i64, ptr %79, align 8, !tbaa !9
  %932 = load i64, ptr %73, align 8, !tbaa !9
  %933 = load i64, ptr %69, align 8, !tbaa !9
  %934 = mul i64 %932, %933
  %935 = add i64 %931, %934
  store i64 %935, ptr %81, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #8
  store double 0.000000e+00, ptr %82, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  store double 0.000000e+00, ptr %83, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #8
  %936 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %936, ptr %84, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #8
  %937 = load i64, ptr %79, align 8, !tbaa !9
  store i64 %937, ptr %85, align 8, !tbaa !9
  br label %938

938:                                              ; preds = %1116, %927
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #8
  %939 = load ptr, ptr %20, align 8, !tbaa !11
  %940 = load i64, ptr %84, align 8, !tbaa !9
  %941 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPKT_S3_m(ptr noundef %939, i64 noundef %940) #8
  %942 = load double, ptr %941, align 8, !tbaa !5
  store double %942, ptr %86, align 8, !tbaa !5
  %943 = load double, ptr %86, align 8, !tbaa !5
  %944 = call noundef zeroext i1 @_ZSt5isnand(double noundef %943)
  br i1 %944, label %948, label %945

945:                                              ; preds = %938
  %946 = load double, ptr %86, align 8, !tbaa !5
  %947 = fcmp ole double 0.000000e+00, %946
  br i1 %947, label %950, label %948

948:                                              ; preds = %945, %938
  call void @LogAssertFailure(i64 noundef 605, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.59)
  call void @__assert_fail(ptr noundef @.str.60, ptr noundef @.str, i32 noundef 605, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

949:                                              ; No predecessors!
  br label %950

950:                                              ; preds = %949, %945
  %951 = phi i1 [ true, %945 ], [ false, %949 ]
  %952 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %953 = load double, ptr %86, align 8, !tbaa !5
  %954 = fcmp oeq double %952, %953
  br i1 %954, label %955, label %1051

955:                                              ; preds = %950
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #8
  br label %967

956:                                              ; No predecessors!
  br label %957

957:                                              ; preds = %1045, %956
  %958 = load double, ptr %80, align 8, !tbaa !5
  %959 = fmul double %958, 5.000000e-01
  store double %959, ptr %80, align 8, !tbaa !5
  %960 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %961 = load double, ptr %80, align 8, !tbaa !5
  %962 = fcmp ole double %960, %961
  br i1 %962, label %965, label %963

963:                                              ; preds = %957
  call void @LogAssertFailure(i64 noundef 612, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.61)
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str, i32 noundef 612, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

964:                                              ; No predecessors!
  br label %965

965:                                              ; preds = %964, %957
  %966 = phi i1 [ true, %957 ], [ false, %964 ]
  br label %967

967:                                              ; preds = %965, %955
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #8
  %968 = load i64, ptr %84, align 8, !tbaa !9
  store i64 %968, ptr %88, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #8
  %969 = load i64, ptr %85, align 8, !tbaa !9
  store i64 %969, ptr %89, align 8, !tbaa !9
  store double 0.000000e+00, ptr %82, align 8, !tbaa !5
  store i64 0, ptr %87, align 8, !tbaa !9
  br label %970

970:                                              ; preds = %1040, %967
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #8
  %971 = load ptr, ptr %20, align 8, !tbaa !11
  %972 = load i64, ptr %88, align 8, !tbaa !9
  %973 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPKT_S3_m(ptr noundef %971, i64 noundef %972) #8
  %974 = load double, ptr %973, align 8, !tbaa !5
  store double %974, ptr %90, align 8, !tbaa !5
  %975 = load double, ptr %90, align 8, !tbaa !5
  %976 = call noundef zeroext i1 @_ZSt5isnand(double noundef %975)
  br i1 %976, label %980, label %977

977:                                              ; preds = %970
  %978 = load double, ptr %90, align 8, !tbaa !5
  %979 = fcmp ole double 0.000000e+00, %978
  br i1 %979, label %982, label %980

980:                                              ; preds = %977, %970
  call void @LogAssertFailure(i64 noundef 620, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.63)
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str, i32 noundef 620, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

981:                                              ; No predecessors!
  br label %982

982:                                              ; preds = %981, %977
  %983 = phi i1 [ true, %977 ], [ false, %981 ]
  %984 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %985 = load double, ptr %90, align 8, !tbaa !5
  %986 = fcmp oeq double %984, %985
  br i1 %986, label %987, label %1033

987:                                              ; preds = %982
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #8
  %988 = load ptr, ptr %21, align 8, !tbaa !11
  %989 = load i64, ptr %89, align 8, !tbaa !9
  %990 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef %988, i64 noundef %989) #8
  %991 = load double, ptr %990, align 8, !tbaa !5
  store double %991, ptr %91, align 8, !tbaa !5
  %992 = load double, ptr %91, align 8, !tbaa !5
  %993 = call noundef zeroext i1 @_ZSt5isnand(double noundef %992)
  br i1 %993, label %1032, label %994

994:                                              ; preds = %987
  %995 = load double, ptr %91, align 8, !tbaa !5
  %996 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %995)
  br i1 %996, label %1032, label %997

997:                                              ; preds = %994
  %998 = load i64, ptr %87, align 8, !tbaa !9
  %999 = add i64 %998, 1
  store i64 %999, ptr %87, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #8
  %1000 = load double, ptr %80, align 8, !tbaa !5
  %1001 = load double, ptr %91, align 8, !tbaa !5
  %1002 = fmul double %1000, %1001
  store double %1002, ptr %92, align 8, !tbaa !5
  %1003 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1004 = fneg double %1003
  %1005 = load double, ptr %92, align 8, !tbaa !5
  %1006 = fcmp olt double %1004, %1005
  br i1 %1006, label %1007, label %1012

1007:                                             ; preds = %997
  %1008 = load double, ptr %92, align 8, !tbaa !5
  %1009 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1010 = fcmp olt double %1008, %1009
  br i1 %1010, label %1011, label %1012

1011:                                             ; preds = %1007
  store double 0.000000e+00, ptr %92, align 8, !tbaa !5
  br label %1012

1012:                                             ; preds = %1011, %1007, %997
  %1013 = load double, ptr %92, align 8, !tbaa !5
  %1014 = load double, ptr %82, align 8, !tbaa !5
  %1015 = fadd double %1014, %1013
  store double %1015, ptr %82, align 8, !tbaa !5
  %1016 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1017 = fneg double %1016
  %1018 = load double, ptr %82, align 8, !tbaa !5
  %1019 = fcmp olt double %1017, %1018
  br i1 %1019, label %1020, label %1025

1020:                                             ; preds = %1012
  %1021 = load double, ptr %82, align 8, !tbaa !5
  %1022 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1023 = fcmp olt double %1021, %1022
  br i1 %1023, label %1024, label %1025

1024:                                             ; preds = %1020
  store double 0.000000e+00, ptr %82, align 8, !tbaa !5
  br label %1025

1025:                                             ; preds = %1024, %1020, %1012
  %1026 = load double, ptr %82, align 8, !tbaa !5
  %1027 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1026)
  br i1 %1027, label %1028, label %1030

1028:                                             ; preds = %1025
  call void @LogAssertFailure(i64 noundef 640, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.65)
  call void @__assert_fail(ptr noundef @.str.66, ptr noundef @.str, i32 noundef 640, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1029:                                             ; No predecessors!
  br label %1030

1030:                                             ; preds = %1029, %1025
  %1031 = phi i1 [ true, %1025 ], [ false, %1029 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #8
  br label %1032

1032:                                             ; preds = %1030, %994, %987
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  br label %1033

1033:                                             ; preds = %1032, %982
  %1034 = load i64, ptr %68, align 8, !tbaa !9
  %1035 = load i64, ptr %88, align 8, !tbaa !9
  %1036 = add i64 %1035, %1034
  store i64 %1036, ptr %88, align 8, !tbaa !9
  %1037 = load i64, ptr %73, align 8, !tbaa !9
  %1038 = load i64, ptr %89, align 8, !tbaa !9
  %1039 = add i64 %1038, %1037
  store i64 %1039, ptr %89, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #8
  br label %1040

1040:                                             ; preds = %1033
  %1041 = load i64, ptr %81, align 8, !tbaa !9
  %1042 = load i64, ptr %89, align 8, !tbaa !9
  %1043 = icmp ne i64 %1041, %1042
  br i1 %1043, label %970, label %1044, !llvm.loop !29

1044:                                             ; preds = %1040
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  br label %1045

1045:                                             ; preds = %1044
  %1046 = load double, ptr %82, align 8, !tbaa !5
  %1047 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1046)
  br i1 %1047, label %957, label %1048, !llvm.loop !30

1048:                                             ; preds = %1045
  %1049 = load i64, ptr %87, align 8, !tbaa !9
  %1050 = uitofp i64 %1049 to double
  store double %1050, ptr %83, align 8, !tbaa !5
  store i32 42, ptr %36, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #8
  br label %1113

1051:                                             ; preds = %950
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #8
  %1052 = load ptr, ptr %21, align 8, !tbaa !11
  %1053 = load i64, ptr %85, align 8, !tbaa !9
  %1054 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef %1052, i64 noundef %1053) #8
  %1055 = load double, ptr %1054, align 8, !tbaa !5
  store double %1055, ptr %93, align 8, !tbaa !5
  %1056 = load double, ptr %93, align 8, !tbaa !5
  %1057 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1056)
  br i1 %1057, label %1106, label %1058

1058:                                             ; preds = %1051
  %1059 = load double, ptr %93, align 8, !tbaa !5
  %1060 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1059)
  br i1 %1060, label %1106, label %1061

1061:                                             ; preds = %1058
  %1062 = load double, ptr %86, align 8, !tbaa !5
  %1063 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1064 = fcmp olt double %1062, %1063
  br i1 %1064, label %1065, label %1066

1065:                                             ; preds = %1061
  store double 0.000000e+00, ptr %86, align 8, !tbaa !5
  br label %1066

1066:                                             ; preds = %1065, %1061
  %1067 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1068 = fneg double %1067
  %1069 = load double, ptr %93, align 8, !tbaa !5
  %1070 = fcmp olt double %1068, %1069
  br i1 %1070, label %1071, label %1076

1071:                                             ; preds = %1066
  %1072 = load double, ptr %93, align 8, !tbaa !5
  %1073 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1074 = fcmp olt double %1072, %1073
  br i1 %1074, label %1075, label %1076

1075:                                             ; preds = %1071
  store double 0.000000e+00, ptr %93, align 8, !tbaa !5
  br label %1076

1076:                                             ; preds = %1075, %1071, %1066
  %1077 = load double, ptr %86, align 8, !tbaa !5
  %1078 = load double, ptr %83, align 8, !tbaa !5
  %1079 = fadd double %1078, %1077
  store double %1079, ptr %83, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #8
  %1080 = load double, ptr %86, align 8, !tbaa !5
  %1081 = load double, ptr %93, align 8, !tbaa !5
  %1082 = fmul double %1080, %1081
  store double %1082, ptr %94, align 8, !tbaa !5
  %1083 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1084 = fneg double %1083
  %1085 = load double, ptr %94, align 8, !tbaa !5
  %1086 = fcmp olt double %1084, %1085
  br i1 %1086, label %1087, label %1092

1087:                                             ; preds = %1076
  %1088 = load double, ptr %94, align 8, !tbaa !5
  %1089 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1090 = fcmp olt double %1088, %1089
  br i1 %1090, label %1091, label %1092

1091:                                             ; preds = %1087
  store double 0.000000e+00, ptr %94, align 8, !tbaa !5
  br label %1092

1092:                                             ; preds = %1091, %1087, %1076
  %1093 = load double, ptr %94, align 8, !tbaa !5
  %1094 = load double, ptr %82, align 8, !tbaa !5
  %1095 = fadd double %1094, %1093
  store double %1095, ptr %82, align 8, !tbaa !5
  %1096 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1097 = fneg double %1096
  %1098 = load double, ptr %82, align 8, !tbaa !5
  %1099 = fcmp olt double %1097, %1098
  br i1 %1099, label %1100, label %1105

1100:                                             ; preds = %1092
  %1101 = load double, ptr %82, align 8, !tbaa !5
  %1102 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1103 = fcmp olt double %1101, %1102
  br i1 %1103, label %1104, label %1105

1104:                                             ; preds = %1100
  store double 0.000000e+00, ptr %82, align 8, !tbaa !5
  br label %1105

1105:                                             ; preds = %1104, %1100, %1092
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  br label %1106

1106:                                             ; preds = %1105, %1058, %1051
  %1107 = load i64, ptr %68, align 8, !tbaa !9
  %1108 = load i64, ptr %84, align 8, !tbaa !9
  %1109 = add i64 %1108, %1107
  store i64 %1109, ptr %84, align 8, !tbaa !9
  %1110 = load i64, ptr %73, align 8, !tbaa !9
  %1111 = load i64, ptr %85, align 8, !tbaa !9
  %1112 = add i64 %1111, %1110
  store i64 %1112, ptr %85, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  store i32 0, ptr %36, align 4
  br label %1113

1113:                                             ; preds = %1106, %1048
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  %1114 = load i32, ptr %36, align 4
  switch i32 %1114, label %2025 [
    i32 0, label %1115
    i32 42, label %1235
  ]

1115:                                             ; preds = %1113
  br label %1116

1116:                                             ; preds = %1115
  %1117 = load i64, ptr %81, align 8, !tbaa !9
  %1118 = load i64, ptr %85, align 8, !tbaa !9
  %1119 = icmp ne i64 %1117, %1118
  br i1 %1119, label %938, label %1120, !llvm.loop !31

1120:                                             ; preds = %1116
  br label %1121

1121:                                             ; preds = %1233, %1120
  %1122 = load double, ptr %82, align 8, !tbaa !5
  %1123 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1122)
  br i1 %1123, label %1130, label %1124

1124:                                             ; preds = %1121
  %1125 = load double, ptr %82, align 8, !tbaa !5
  %1126 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1125)
  br i1 %1126, label %1130, label %1127

1127:                                             ; preds = %1124
  %1128 = load double, ptr %83, align 8, !tbaa !5
  %1129 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1128)
  br label %1130

1130:                                             ; preds = %1127, %1124, %1121
  %1131 = phi i1 [ true, %1124 ], [ true, %1121 ], [ %1129, %1127 ]
  br i1 %1131, label %1132, label %1234

1132:                                             ; preds = %1130
  %1133 = load double, ptr %80, align 8, !tbaa !5
  %1134 = fmul double %1133, 5.000000e-01
  store double %1134, ptr %80, align 8, !tbaa !5
  %1135 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1136 = load double, ptr %80, align 8, !tbaa !5
  %1137 = fcmp ole double %1135, %1136
  br i1 %1137, label %1140, label %1138

1138:                                             ; preds = %1132
  call void @LogAssertFailure(i64 noundef 688, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.61)
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str, i32 noundef 688, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1139:                                             ; No predecessors!
  br label %1140

1140:                                             ; preds = %1139, %1132
  %1141 = phi i1 [ true, %1132 ], [ false, %1139 ]
  store double 0.000000e+00, ptr %82, align 8, !tbaa !5
  store double 0.000000e+00, ptr %83, align 8, !tbaa !5
  %1142 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %1142, ptr %84, align 8, !tbaa !9
  %1143 = load i64, ptr %79, align 8, !tbaa !9
  store i64 %1143, ptr %85, align 8, !tbaa !9
  br label %1144

1144:                                             ; preds = %1229, %1140
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #8
  %1145 = load ptr, ptr %20, align 8, !tbaa !11
  %1146 = load i64, ptr %84, align 8, !tbaa !9
  %1147 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPKT_S3_m(ptr noundef %1145, i64 noundef %1146) #8
  %1148 = load double, ptr %1147, align 8, !tbaa !5
  store double %1148, ptr %95, align 8, !tbaa !5
  %1149 = load double, ptr %95, align 8, !tbaa !5
  %1150 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1149)
  br i1 %1150, label %1158, label %1151

1151:                                             ; preds = %1144
  %1152 = load double, ptr %95, align 8, !tbaa !5
  %1153 = fcmp ole double 0.000000e+00, %1152
  br i1 %1153, label %1154, label %1158

1154:                                             ; preds = %1151
  %1155 = load double, ptr %95, align 8, !tbaa !5
  %1156 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %1157 = fcmp une double %1155, %1156
  br i1 %1157, label %1160, label %1158

1158:                                             ; preds = %1154, %1151, %1144
  call void @LogAssertFailure(i64 noundef 696, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.43)
  call void @__assert_fail(ptr noundef @.str.44, ptr noundef @.str, i32 noundef 696, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1159:                                             ; No predecessors!
  br label %1160

1160:                                             ; preds = %1159, %1154
  %1161 = phi i1 [ true, %1154 ], [ false, %1159 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #8
  %1162 = load ptr, ptr %21, align 8, !tbaa !11
  %1163 = load i64, ptr %85, align 8, !tbaa !9
  %1164 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef %1162, i64 noundef %1163) #8
  %1165 = load double, ptr %1164, align 8, !tbaa !5
  store double %1165, ptr %96, align 8, !tbaa !5
  %1166 = load double, ptr %96, align 8, !tbaa !5
  %1167 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1166)
  br i1 %1167, label %1222, label %1168

1168:                                             ; preds = %1160
  %1169 = load double, ptr %96, align 8, !tbaa !5
  %1170 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1169)
  br i1 %1170, label %1222, label %1171

1171:                                             ; preds = %1168
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #8
  %1172 = load double, ptr %80, align 8, !tbaa !5
  %1173 = load double, ptr %95, align 8, !tbaa !5
  %1174 = fmul double %1172, %1173
  store double %1174, ptr %97, align 8, !tbaa !5
  %1175 = load double, ptr %97, align 8, !tbaa !5
  %1176 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1177 = fcmp olt double %1175, %1176
  br i1 %1177, label %1178, label %1179

1178:                                             ; preds = %1171
  store double 0.000000e+00, ptr %97, align 8, !tbaa !5
  br label %1179

1179:                                             ; preds = %1178, %1171
  %1180 = load double, ptr %97, align 8, !tbaa !5
  %1181 = load double, ptr %83, align 8, !tbaa !5
  %1182 = fadd double %1181, %1180
  store double %1182, ptr %83, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #8
  %1183 = load double, ptr %80, align 8, !tbaa !5
  %1184 = load double, ptr %96, align 8, !tbaa !5
  %1185 = fmul double %1183, %1184
  store double %1185, ptr %98, align 8, !tbaa !5
  %1186 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1187 = fneg double %1186
  %1188 = load double, ptr %98, align 8, !tbaa !5
  %1189 = fcmp olt double %1187, %1188
  br i1 %1189, label %1190, label %1195

1190:                                             ; preds = %1179
  %1191 = load double, ptr %98, align 8, !tbaa !5
  %1192 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1193 = fcmp olt double %1191, %1192
  br i1 %1193, label %1194, label %1195

1194:                                             ; preds = %1190
  store double 0.000000e+00, ptr %98, align 8, !tbaa !5
  br label %1195

1195:                                             ; preds = %1194, %1190, %1179
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #8
  %1196 = load double, ptr %98, align 8, !tbaa !5
  %1197 = load double, ptr %97, align 8, !tbaa !5
  %1198 = fmul double %1196, %1197
  store double %1198, ptr %99, align 8, !tbaa !5
  %1199 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1200 = fneg double %1199
  %1201 = load double, ptr %99, align 8, !tbaa !5
  %1202 = fcmp olt double %1200, %1201
  br i1 %1202, label %1203, label %1208

1203:                                             ; preds = %1195
  %1204 = load double, ptr %99, align 8, !tbaa !5
  %1205 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1206 = fcmp olt double %1204, %1205
  br i1 %1206, label %1207, label %1208

1207:                                             ; preds = %1203
  store double 0.000000e+00, ptr %99, align 8, !tbaa !5
  br label %1208

1208:                                             ; preds = %1207, %1203, %1195
  %1209 = load double, ptr %99, align 8, !tbaa !5
  %1210 = load double, ptr %82, align 8, !tbaa !5
  %1211 = fadd double %1210, %1209
  store double %1211, ptr %82, align 8, !tbaa !5
  %1212 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1213 = fneg double %1212
  %1214 = load double, ptr %82, align 8, !tbaa !5
  %1215 = fcmp olt double %1213, %1214
  br i1 %1215, label %1216, label %1221

1216:                                             ; preds = %1208
  %1217 = load double, ptr %82, align 8, !tbaa !5
  %1218 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1219 = fcmp olt double %1217, %1218
  br i1 %1219, label %1220, label %1221

1220:                                             ; preds = %1216
  store double 0.000000e+00, ptr %82, align 8, !tbaa !5
  br label %1221

1221:                                             ; preds = %1220, %1216, %1208
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  br label %1222

1222:                                             ; preds = %1221, %1168, %1160
  %1223 = load i64, ptr %68, align 8, !tbaa !9
  %1224 = load i64, ptr %84, align 8, !tbaa !9
  %1225 = add i64 %1224, %1223
  store i64 %1225, ptr %84, align 8, !tbaa !9
  %1226 = load i64, ptr %73, align 8, !tbaa !9
  %1227 = load i64, ptr %85, align 8, !tbaa !9
  %1228 = add i64 %1227, %1226
  store i64 %1228, ptr %85, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  br label %1229

1229:                                             ; preds = %1222
  %1230 = load i64, ptr %81, align 8, !tbaa !9
  %1231 = load i64, ptr %85, align 8, !tbaa !9
  %1232 = icmp ne i64 %1230, %1231
  br i1 %1232, label %1144, label %1233, !llvm.loop !32

1233:                                             ; preds = %1229
  br label %1121, !llvm.loop !33

1234:                                             ; preds = %1130
  br label %1235

1235:                                             ; preds = %1234, %1113
  %1236 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1237 = load double, ptr %83, align 8, !tbaa !5
  %1238 = fcmp ole double %1236, %1237
  br i1 %1238, label %1239, label %1490

1239:                                             ; preds = %1235
  %1240 = load double, ptr %83, align 8, !tbaa !5
  %1241 = load double, ptr %82, align 8, !tbaa !5
  %1242 = fdiv double %1241, %1240
  store double %1242, ptr %82, align 8, !tbaa !5
  %1243 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1244 = fneg double %1243
  %1245 = load double, ptr %82, align 8, !tbaa !5
  %1246 = fcmp olt double %1244, %1245
  br i1 %1246, label %1247, label %1252

1247:                                             ; preds = %1239
  %1248 = load double, ptr %82, align 8, !tbaa !5
  %1249 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1250 = fcmp olt double %1248, %1249
  br i1 %1250, label %1251, label %1252

1251:                                             ; preds = %1247
  store double 0.000000e+00, ptr %82, align 8, !tbaa !5
  br label %1252

1252:                                             ; preds = %1251, %1247, %1239
  %1253 = load double, ptr %80, align 8, !tbaa !5
  %1254 = load double, ptr %82, align 8, !tbaa !5
  %1255 = fdiv double %1254, %1253
  store double %1255, ptr %82, align 8, !tbaa !5
  %1256 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1257 = fneg double %1256
  %1258 = load double, ptr %82, align 8, !tbaa !5
  %1259 = fcmp olt double %1257, %1258
  br i1 %1259, label %1260, label %1265

1260:                                             ; preds = %1252
  %1261 = load double, ptr %82, align 8, !tbaa !5
  %1262 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1263 = fcmp olt double %1261, %1262
  br i1 %1263, label %1264, label %1265

1264:                                             ; preds = %1260
  store double 0.000000e+00, ptr %82, align 8, !tbaa !5
  br label %1265

1265:                                             ; preds = %1264, %1260, %1252
  %1266 = load double, ptr %82, align 8, !tbaa !5
  %1267 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1266)
  br i1 %1267, label %1268, label %1270

1268:                                             ; preds = %1265
  call void @LogAssertFailure(i64 noundef 744, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.65)
  call void @__assert_fail(ptr noundef @.str.66, ptr noundef @.str, i32 noundef 744, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1269:                                             ; No predecessors!
  br label %1270

1270:                                             ; preds = %1269, %1265
  %1271 = phi i1 [ true, %1265 ], [ false, %1269 ]
  %1272 = load double, ptr %82, align 8, !tbaa !5
  %1273 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1272)
  br i1 %1273, label %1274, label %1292

1274:                                             ; preds = %1270
  %1275 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %1276 = load double, ptr %82, align 8, !tbaa !5
  %1277 = fcmp oeq double %1275, %1276
  br i1 %1277, label %1278, label %1280

1278:                                             ; preds = %1274
  %1279 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #8
  store double %1279, ptr %82, align 8, !tbaa !5
  br label %1291

1280:                                             ; preds = %1274
  %1281 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %1282 = fneg double %1281
  %1283 = load double, ptr %82, align 8, !tbaa !5
  %1284 = fcmp oeq double %1282, %1283
  br i1 %1284, label %1287, label %1285

1285:                                             ; preds = %1280
  call void @LogAssertFailure(i64 noundef 755, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.67)
  call void @__assert_fail(ptr noundef @.str.68, ptr noundef @.str, i32 noundef 755, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1286:                                             ; No predecessors!
  br label %1287

1287:                                             ; preds = %1286, %1280
  %1288 = phi i1 [ true, %1280 ], [ false, %1286 ]
  %1289 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #8
  %1290 = fneg double %1289
  store double %1290, ptr %82, align 8, !tbaa !5
  br label %1291

1291:                                             ; preds = %1287, %1278
  br label %1292

1292:                                             ; preds = %1291, %1270
  %1293 = load ptr, ptr %22, align 8, !tbaa !11
  %1294 = icmp ne ptr null, %1293
  br i1 %1294, label %1295, label %1404

1295:                                             ; preds = %1292
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #8
  %1296 = load ptr, ptr %22, align 8, !tbaa !11
  %1297 = load i64, ptr %67, align 8, !tbaa !9
  %1298 = load i64, ptr %24, align 8, !tbaa !9
  %1299 = mul i64 %1297, %1298
  %1300 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef %1296, i64 noundef %1299) #8
  store ptr %1300, ptr %100, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #8
  %1301 = load ptr, ptr %100, align 8, !tbaa !11
  %1302 = load double, ptr %1301, align 8, !tbaa !5
  store double %1302, ptr %101, align 8, !tbaa !5
  %1303 = load double, ptr %101, align 8, !tbaa !5
  %1304 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1303)
  br i1 %1304, label %1305, label %1307

1305:                                             ; preds = %1295
  call void @LogAssertFailure(i64 noundef 764, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.69)
  call void @__assert_fail(ptr noundef @.str.70, ptr noundef @.str, i32 noundef 764, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1306:                                             ; No predecessors!
  br label %1307

1307:                                             ; preds = %1306, %1295
  %1308 = phi i1 [ true, %1295 ], [ false, %1306 ]
  %1309 = load double, ptr %101, align 8, !tbaa !5
  %1310 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1309)
  br i1 %1310, label %1311, label %1313

1311:                                             ; preds = %1307
  call void @LogAssertFailure(i64 noundef 765, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.71)
  call void @__assert_fail(ptr noundef @.str.72, ptr noundef @.str, i32 noundef 765, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1312:                                             ; No predecessors!
  br label %1313

1313:                                             ; preds = %1312, %1307
  %1314 = phi i1 [ true, %1307 ], [ false, %1312 ]
  %1315 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1316 = fneg double %1315
  %1317 = load double, ptr %101, align 8, !tbaa !5
  %1318 = fcmp olt double %1316, %1317
  br i1 %1318, label %1319, label %1324

1319:                                             ; preds = %1313
  %1320 = load double, ptr %101, align 8, !tbaa !5
  %1321 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1322 = fcmp olt double %1320, %1321
  br i1 %1322, label %1323, label %1324

1323:                                             ; preds = %1319
  store double 0.000000e+00, ptr %101, align 8, !tbaa !5
  br label %1324

1324:                                             ; preds = %1323, %1319, %1313
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #8
  %1325 = load double, ptr %101, align 8, !tbaa !5
  %1326 = load double, ptr %82, align 8, !tbaa !5
  %1327 = fadd double %1325, %1326
  store double %1327, ptr %102, align 8, !tbaa !5
  %1328 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1329 = fneg double %1328
  %1330 = load double, ptr %102, align 8, !tbaa !5
  %1331 = fcmp olt double %1329, %1330
  br i1 %1331, label %1332, label %1337

1332:                                             ; preds = %1324
  %1333 = load double, ptr %102, align 8, !tbaa !5
  %1334 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1335 = fcmp olt double %1333, %1334
  br i1 %1335, label %1336, label %1337

1336:                                             ; preds = %1332
  store double 0.000000e+00, ptr %102, align 8, !tbaa !5
  br label %1337

1337:                                             ; preds = %1336, %1332, %1324
  %1338 = load double, ptr %102, align 8, !tbaa !5
  %1339 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1338)
  br i1 %1339, label %1340, label %1401

1340:                                             ; preds = %1337
  %1341 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %1342 = load double, ptr %102, align 8, !tbaa !5
  %1343 = fcmp oeq double %1341, %1342
  br i1 %1343, label %1344, label %1366

1344:                                             ; preds = %1340
  %1345 = load double, ptr %101, align 8, !tbaa !5
  %1346 = fcmp olt double 0.000000e+00, %1345
  br i1 %1346, label %1349, label %1347

1347:                                             ; preds = %1344
  call void @LogAssertFailure(i64 noundef 785, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.73)
  call void @__assert_fail(ptr noundef @.str.74, ptr noundef @.str, i32 noundef 785, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1348:                                             ; No predecessors!
  br label %1349

1349:                                             ; preds = %1348, %1344
  %1350 = phi i1 [ true, %1344 ], [ false, %1348 ]
  %1351 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #8
  %1352 = load double, ptr %101, align 8, !tbaa !5
  %1353 = fsub double %1351, %1352
  store double %1353, ptr %82, align 8, !tbaa !5
  %1354 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #8
  %1355 = load double, ptr %101, align 8, !tbaa !5
  %1356 = fcmp oeq double %1354, %1355
  br i1 %1356, label %1363, label %1357

1357:                                             ; preds = %1349
  %1358 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1359 = load double, ptr %82, align 8, !tbaa !5
  %1360 = fcmp ole double %1358, %1359
  br i1 %1360, label %1363, label %1361

1361:                                             ; preds = %1357
  call void @LogAssertFailure(i64 noundef 788, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.75)
  call void @__assert_fail(ptr noundef @.str.76, ptr noundef @.str, i32 noundef 788, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1362:                                             ; No predecessors!
  br label %1363

1363:                                             ; preds = %1362, %1357, %1349
  %1364 = phi i1 [ true, %1357 ], [ true, %1349 ], [ false, %1362 ]
  %1365 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #8
  store double %1365, ptr %102, align 8, !tbaa !5
  br label %1400

1366:                                             ; preds = %1340
  %1367 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %1368 = fneg double %1367
  %1369 = load double, ptr %102, align 8, !tbaa !5
  %1370 = fcmp oeq double %1368, %1369
  br i1 %1370, label %1373, label %1371

1371:                                             ; preds = %1366
  call void @LogAssertFailure(i64 noundef 791, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.77)
  call void @__assert_fail(ptr noundef @.str.78, ptr noundef @.str, i32 noundef 791, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1372:                                             ; No predecessors!
  br label %1373

1373:                                             ; preds = %1372, %1366
  %1374 = phi i1 [ true, %1366 ], [ false, %1372 ]
  %1375 = load double, ptr %101, align 8, !tbaa !5
  %1376 = fcmp olt double %1375, 0.000000e+00
  br i1 %1376, label %1379, label %1377

1377:                                             ; preds = %1373
  call void @LogAssertFailure(i64 noundef 792, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.79)
  call void @__assert_fail(ptr noundef @.str.80, ptr noundef @.str, i32 noundef 792, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1378:                                             ; No predecessors!
  br label %1379

1379:                                             ; preds = %1378, %1373
  %1380 = phi i1 [ true, %1373 ], [ false, %1378 ]
  %1381 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #8
  %1382 = fneg double %1381
  %1383 = load double, ptr %101, align 8, !tbaa !5
  %1384 = fsub double %1382, %1383
  store double %1384, ptr %82, align 8, !tbaa !5
  %1385 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #8
  %1386 = fneg double %1385
  %1387 = load double, ptr %101, align 8, !tbaa !5
  %1388 = fcmp oeq double %1386, %1387
  br i1 %1388, label %1396, label %1389

1389:                                             ; preds = %1379
  %1390 = load double, ptr %82, align 8, !tbaa !5
  %1391 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1392 = fneg double %1391
  %1393 = fcmp ole double %1390, %1392
  br i1 %1393, label %1396, label %1394

1394:                                             ; preds = %1389
  call void @LogAssertFailure(i64 noundef 795, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.81)
  call void @__assert_fail(ptr noundef @.str.82, ptr noundef @.str, i32 noundef 795, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1395:                                             ; No predecessors!
  br label %1396

1396:                                             ; preds = %1395, %1389, %1379
  %1397 = phi i1 [ true, %1389 ], [ true, %1379 ], [ false, %1395 ]
  %1398 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #8
  %1399 = fneg double %1398
  store double %1399, ptr %102, align 8, !tbaa !5
  br label %1400

1400:                                             ; preds = %1396, %1363
  br label %1401

1401:                                             ; preds = %1400, %1337
  %1402 = load double, ptr %102, align 8, !tbaa !5
  %1403 = load ptr, ptr %100, align 8, !tbaa !11
  store double %1402, ptr %1403, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #8
  br label %1404

1404:                                             ; preds = %1401, %1292
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #8
  %1405 = load double, ptr %82, align 8, !tbaa !5
  %1406 = call noundef double @_ZSt3absd(double noundef %1405)
  store double %1406, ptr %103, align 8, !tbaa !5
  %1407 = load double, ptr %103, align 8, !tbaa !5
  %1408 = fcmp oeq double 0.000000e+00, %1407
  br i1 %1408, label %1415, label %1409

1409:                                             ; preds = %1404
  %1410 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1411 = load double, ptr %103, align 8, !tbaa !5
  %1412 = fcmp ole double %1410, %1411
  br i1 %1412, label %1415, label %1413

1413:                                             ; preds = %1409
  call void @LogAssertFailure(i64 noundef 803, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.83)
  call void @__assert_fail(ptr noundef @.str.84, ptr noundef @.str, i32 noundef 803, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1414:                                             ; No predecessors!
  br label %1415

1415:                                             ; preds = %1414, %1409, %1404
  %1416 = phi i1 [ true, %1409 ], [ true, %1404 ], [ false, %1414 ]
  %1417 = load double, ptr %28, align 8, !tbaa !5
  %1418 = load double, ptr %103, align 8, !tbaa !5
  %1419 = fcmp olt double %1417, %1418
  %1420 = zext i1 %1419 to i32
  %1421 = load i8, ptr %62, align 1, !tbaa !23, !range !34, !noundef !35
  %1422 = trunc i8 %1421 to i1
  %1423 = zext i1 %1422 to i32
  %1424 = or i32 %1423, %1420
  %1425 = icmp ne i32 %1424, 0
  %1426 = zext i1 %1425 to i8
  store i8 %1426, ptr %62, align 1, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #8
  %1427 = load double, ptr %103, align 8, !tbaa !5
  %1428 = load double, ptr %59, align 8, !tbaa !5
  %1429 = fmul double %1427, %1428
  store double %1429, ptr %104, align 8, !tbaa !5
  %1430 = load double, ptr %104, align 8, !tbaa !5
  %1431 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1432 = fcmp olt double %1430, %1431
  br i1 %1432, label %1433, label %1434

1433:                                             ; preds = %1415
  store double 0.000000e+00, ptr %104, align 8, !tbaa !5
  br label %1434

1434:                                             ; preds = %1433, %1415
  %1435 = load double, ptr %104, align 8, !tbaa !5
  %1436 = load double, ptr %61, align 8, !tbaa !5
  %1437 = fadd double %1436, %1435
  store double %1437, ptr %61, align 8, !tbaa !5
  %1438 = load double, ptr %82, align 8, !tbaa !5
  %1439 = fneg double %1438
  store double %1439, ptr %82, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #8
  %1440 = load i64, ptr %79, align 8, !tbaa !9
  store i64 %1440, ptr %105, align 8, !tbaa !9
  br label %1441

1441:                                             ; preds = %1485, %1434
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #8
  %1442 = load ptr, ptr %21, align 8, !tbaa !11
  %1443 = load i64, ptr %105, align 8, !tbaa !9
  %1444 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef %1442, i64 noundef %1443) #8
  store ptr %1444, ptr %106, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #8
  %1445 = load ptr, ptr %106, align 8, !tbaa !11
  %1446 = load double, ptr %1445, align 8, !tbaa !5
  store double %1446, ptr %107, align 8, !tbaa !5
  %1447 = load double, ptr %107, align 8, !tbaa !5
  %1448 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1447)
  br i1 %1448, label %1481, label %1449

1449:                                             ; preds = %1441
  %1450 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1451 = fneg double %1450
  %1452 = load double, ptr %107, align 8, !tbaa !5
  %1453 = fcmp olt double %1451, %1452
  br i1 %1453, label %1454, label %1459

1454:                                             ; preds = %1449
  %1455 = load double, ptr %107, align 8, !tbaa !5
  %1456 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1457 = fcmp olt double %1455, %1456
  br i1 %1457, label %1458, label %1459

1458:                                             ; preds = %1454
  store double 0.000000e+00, ptr %107, align 8, !tbaa !5
  br label %1459

1459:                                             ; preds = %1458, %1454, %1449
  %1460 = load double, ptr %82, align 8, !tbaa !5
  %1461 = load double, ptr %107, align 8, !tbaa !5
  %1462 = fadd double %1461, %1460
  store double %1462, ptr %107, align 8, !tbaa !5
  %1463 = load double, ptr %107, align 8, !tbaa !5
  %1464 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1463)
  br i1 %1464, label %1465, label %1467

1465:                                             ; preds = %1459
  %1466 = call noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #8
  store double %1466, ptr %61, align 8, !tbaa !5
  br label %1478

1467:                                             ; preds = %1459
  %1468 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1469 = fneg double %1468
  %1470 = load double, ptr %107, align 8, !tbaa !5
  %1471 = fcmp olt double %1469, %1470
  br i1 %1471, label %1472, label %1477

1472:                                             ; preds = %1467
  %1473 = load double, ptr %107, align 8, !tbaa !5
  %1474 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1475 = fcmp olt double %1473, %1474
  br i1 %1475, label %1476, label %1477

1476:                                             ; preds = %1472
  store double 0.000000e+00, ptr %107, align 8, !tbaa !5
  br label %1477

1477:                                             ; preds = %1476, %1472, %1467
  br label %1478

1478:                                             ; preds = %1477, %1465
  %1479 = load double, ptr %107, align 8, !tbaa !5
  %1480 = load ptr, ptr %106, align 8, !tbaa !11
  store double %1479, ptr %1480, align 8, !tbaa !5
  br label %1481

1481:                                             ; preds = %1478, %1441
  %1482 = load i64, ptr %73, align 8, !tbaa !9
  %1483 = load i64, ptr %105, align 8, !tbaa !9
  %1484 = add i64 %1483, %1482
  store i64 %1484, ptr %105, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #8
  br label %1485

1485:                                             ; preds = %1481
  %1486 = load i64, ptr %81, align 8, !tbaa !9
  %1487 = load i64, ptr %105, align 8, !tbaa !9
  %1488 = icmp ne i64 %1486, %1487
  br i1 %1488, label %1441, label %1489, !llvm.loop !36

1489:                                             ; preds = %1485
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  br label %1490

1490:                                             ; preds = %1489, %1235
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  br label %1491

1491:                                             ; preds = %1490, %888, %882
  %1492 = load i64, ptr %66, align 8, !tbaa !9
  %1493 = add i64 %1492, 1
  store i64 %1493, ptr %66, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  br label %1494

1494:                                             ; preds = %1491
  %1495 = load i64, ptr %16, align 8, !tbaa !9
  %1496 = load i64, ptr %66, align 8, !tbaa !9
  %1497 = icmp ne i64 %1495, %1496
  br i1 %1497, label %833, label %1498, !llvm.loop !37

1498:                                             ; preds = %1494
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  br label %1499

1499:                                             ; preds = %1498
  %1500 = load i8, ptr %62, align 1, !tbaa !23, !range !34, !noundef !35
  %1501 = trunc i8 %1500 to i1
  br i1 %1501, label %1502, label %1507

1502:                                             ; preds = %1499
  %1503 = load double, ptr %60, align 8, !tbaa !5
  %1504 = load double, ptr %61, align 8, !tbaa !5
  %1505 = fcmp ole double %1503, %1504
  %1506 = xor i1 %1505, true
  br label %1507

1507:                                             ; preds = %1502, %1499
  %1508 = phi i1 [ false, %1499 ], [ %1506, %1502 ]
  br i1 %1508, label %781, label %1509, !llvm.loop !38

1509:                                             ; preds = %1507
  %1510 = load double, ptr %61, align 8, !tbaa !5
  %1511 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1510)
  br i1 %1511, label %1512, label %1514

1512:                                             ; preds = %1509
  call void @LogAssertFailure(i64 noundef 846, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.85)
  call void @__assert_fail(ptr noundef @.str.86, ptr noundef @.str, i32 noundef 846, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1513:                                             ; No predecessors!
  br label %1514

1514:                                             ; preds = %1513, %1509
  %1515 = phi i1 [ true, %1509 ], [ false, %1513 ]
  %1516 = load ptr, ptr %23, align 8, !tbaa !11
  %1517 = icmp ne ptr null, %1516
  br i1 %1517, label %1518, label %2019

1518:                                             ; preds = %1514
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #8
  store double 1.000000e+00, ptr %108, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #8
  store i64 0, ptr %109, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #8
  %1519 = load ptr, ptr %20, align 8, !tbaa !11
  store ptr %1519, ptr %110, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #8
  store double 0.000000e+00, ptr %111, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #8
  store double 0.000000e+00, ptr %112, align 8, !tbaa !5
  br label %1520

1520:                                             ; preds = %1692, %1518
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #8
  %1521 = load ptr, ptr %110, align 8, !tbaa !11
  %1522 = load double, ptr %1521, align 8, !tbaa !5
  store double %1522, ptr %113, align 8, !tbaa !5
  %1523 = load double, ptr %113, align 8, !tbaa !5
  %1524 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1523)
  br i1 %1524, label %1528, label %1525

1525:                                             ; preds = %1520
  %1526 = load double, ptr %113, align 8, !tbaa !5
  %1527 = fcmp ole double 0.000000e+00, %1526
  br i1 %1527, label %1530, label %1528

1528:                                             ; preds = %1525, %1520
  call void @LogAssertFailure(i64 noundef 857, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.59)
  call void @__assert_fail(ptr noundef @.str.60, ptr noundef @.str, i32 noundef 857, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1529:                                             ; No predecessors!
  br label %1530

1530:                                             ; preds = %1529, %1525
  %1531 = phi i1 [ true, %1525 ], [ false, %1529 ]
  %1532 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %1533 = load double, ptr %113, align 8, !tbaa !5
  %1534 = fcmp oeq double %1532, %1533
  br i1 %1534, label %1535, label %1628

1535:                                             ; preds = %1530
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #8
  br label %1547

1536:                                             ; No predecessors!
  br label %1537

1537:                                             ; preds = %1622, %1536
  %1538 = load double, ptr %108, align 8, !tbaa !5
  %1539 = fmul double %1538, 5.000000e-01
  store double %1539, ptr %108, align 8, !tbaa !5
  %1540 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1541 = load double, ptr %108, align 8, !tbaa !5
  %1542 = fcmp ole double %1540, %1541
  br i1 %1542, label %1545, label %1543

1543:                                             ; preds = %1537
  call void @LogAssertFailure(i64 noundef 864, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.87)
  call void @__assert_fail(ptr noundef @.str.88, ptr noundef @.str, i32 noundef 864, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1544:                                             ; No predecessors!
  br label %1545

1545:                                             ; preds = %1544, %1537
  %1546 = phi i1 [ true, %1537 ], [ false, %1544 ]
  br label %1547

1547:                                             ; preds = %1545, %1535
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #8
  %1548 = load i64, ptr %109, align 8, !tbaa !9
  store i64 %1548, ptr %115, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #8
  %1549 = load ptr, ptr %110, align 8, !tbaa !11
  store ptr %1549, ptr %116, align 8, !tbaa !11
  store double 0.000000e+00, ptr %111, align 8, !tbaa !5
  store i64 0, ptr %114, align 8, !tbaa !9
  br label %1550

1550:                                             ; preds = %1617, %1547
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #8
  %1551 = load ptr, ptr %116, align 8, !tbaa !11
  %1552 = load double, ptr %1551, align 8, !tbaa !5
  store double %1552, ptr %117, align 8, !tbaa !5
  %1553 = load double, ptr %117, align 8, !tbaa !5
  %1554 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1553)
  br i1 %1554, label %1558, label %1555

1555:                                             ; preds = %1550
  %1556 = load double, ptr %117, align 8, !tbaa !5
  %1557 = fcmp ole double 0.000000e+00, %1556
  br i1 %1557, label %1560, label %1558

1558:                                             ; preds = %1555, %1550
  call void @LogAssertFailure(i64 noundef 873, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.63)
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str, i32 noundef 873, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1559:                                             ; No predecessors!
  br label %1560

1560:                                             ; preds = %1559, %1555
  %1561 = phi i1 [ true, %1555 ], [ false, %1559 ]
  %1562 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %1563 = load double, ptr %117, align 8, !tbaa !5
  %1564 = fcmp oeq double %1562, %1563
  br i1 %1564, label %1565, label %1611

1565:                                             ; preds = %1560
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #8
  %1566 = load ptr, ptr %21, align 8, !tbaa !11
  %1567 = load i64, ptr %115, align 8, !tbaa !9
  %1568 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef %1566, i64 noundef %1567) #8
  %1569 = load double, ptr %1568, align 8, !tbaa !5
  store double %1569, ptr %118, align 8, !tbaa !5
  %1570 = load double, ptr %118, align 8, !tbaa !5
  %1571 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1570)
  br i1 %1571, label %1610, label %1572

1572:                                             ; preds = %1565
  %1573 = load double, ptr %118, align 8, !tbaa !5
  %1574 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1573)
  br i1 %1574, label %1610, label %1575

1575:                                             ; preds = %1572
  %1576 = load i64, ptr %114, align 8, !tbaa !9
  %1577 = add i64 %1576, 1
  store i64 %1577, ptr %114, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #8
  %1578 = load double, ptr %108, align 8, !tbaa !5
  %1579 = load double, ptr %118, align 8, !tbaa !5
  %1580 = fmul double %1578, %1579
  store double %1580, ptr %119, align 8, !tbaa !5
  %1581 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1582 = fneg double %1581
  %1583 = load double, ptr %119, align 8, !tbaa !5
  %1584 = fcmp olt double %1582, %1583
  br i1 %1584, label %1585, label %1590

1585:                                             ; preds = %1575
  %1586 = load double, ptr %119, align 8, !tbaa !5
  %1587 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1588 = fcmp olt double %1586, %1587
  br i1 %1588, label %1589, label %1590

1589:                                             ; preds = %1585
  store double 0.000000e+00, ptr %119, align 8, !tbaa !5
  br label %1590

1590:                                             ; preds = %1589, %1585, %1575
  %1591 = load double, ptr %119, align 8, !tbaa !5
  %1592 = load double, ptr %111, align 8, !tbaa !5
  %1593 = fadd double %1592, %1591
  store double %1593, ptr %111, align 8, !tbaa !5
  %1594 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1595 = fneg double %1594
  %1596 = load double, ptr %111, align 8, !tbaa !5
  %1597 = fcmp olt double %1595, %1596
  br i1 %1597, label %1598, label %1603

1598:                                             ; preds = %1590
  %1599 = load double, ptr %111, align 8, !tbaa !5
  %1600 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1601 = fcmp olt double %1599, %1600
  br i1 %1601, label %1602, label %1603

1602:                                             ; preds = %1598
  store double 0.000000e+00, ptr %111, align 8, !tbaa !5
  br label %1603

1603:                                             ; preds = %1602, %1598, %1590
  %1604 = load double, ptr %111, align 8, !tbaa !5
  %1605 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1604)
  br i1 %1605, label %1606, label %1608

1606:                                             ; preds = %1603
  call void @LogAssertFailure(i64 noundef 893, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.89)
  call void @__assert_fail(ptr noundef @.str.90, ptr noundef @.str, i32 noundef 893, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1607:                                             ; No predecessors!
  br label %1608

1608:                                             ; preds = %1607, %1603
  %1609 = phi i1 [ true, %1603 ], [ false, %1607 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #8
  br label %1610

1610:                                             ; preds = %1608, %1572, %1565
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #8
  br label %1611

1611:                                             ; preds = %1610, %1560
  %1612 = load i64, ptr %24, align 8, !tbaa !9
  %1613 = load i64, ptr %115, align 8, !tbaa !9
  %1614 = add i64 %1613, %1612
  store i64 %1614, ptr %115, align 8, !tbaa !9
  %1615 = load ptr, ptr %116, align 8, !tbaa !11
  %1616 = getelementptr inbounds double, ptr %1615, i32 1
  store ptr %1616, ptr %116, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #8
  br label %1617

1617:                                             ; preds = %1611
  %1618 = load ptr, ptr %26, align 8, !tbaa !11
  %1619 = load ptr, ptr %116, align 8, !tbaa !11
  %1620 = icmp ne ptr %1618, %1619
  br i1 %1620, label %1550, label %1621, !llvm.loop !39

1621:                                             ; preds = %1617
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #8
  br label %1622

1622:                                             ; preds = %1621
  %1623 = load double, ptr %111, align 8, !tbaa !5
  %1624 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1623)
  br i1 %1624, label %1537, label %1625, !llvm.loop !40

1625:                                             ; preds = %1622
  %1626 = load i64, ptr %114, align 8, !tbaa !9
  %1627 = uitofp i64 %1626 to double
  store double %1627, ptr %112, align 8, !tbaa !5
  store i32 56, ptr %36, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #8
  br label %1689

1628:                                             ; preds = %1530
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #8
  %1629 = load ptr, ptr %21, align 8, !tbaa !11
  %1630 = load i64, ptr %109, align 8, !tbaa !9
  %1631 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef %1629, i64 noundef %1630) #8
  %1632 = load double, ptr %1631, align 8, !tbaa !5
  store double %1632, ptr %120, align 8, !tbaa !5
  %1633 = load double, ptr %120, align 8, !tbaa !5
  %1634 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1633)
  br i1 %1634, label %1683, label %1635

1635:                                             ; preds = %1628
  %1636 = load double, ptr %120, align 8, !tbaa !5
  %1637 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1636)
  br i1 %1637, label %1683, label %1638

1638:                                             ; preds = %1635
  %1639 = load double, ptr %113, align 8, !tbaa !5
  %1640 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1641 = fcmp olt double %1639, %1640
  br i1 %1641, label %1642, label %1643

1642:                                             ; preds = %1638
  store double 0.000000e+00, ptr %113, align 8, !tbaa !5
  br label %1643

1643:                                             ; preds = %1642, %1638
  %1644 = load double, ptr %113, align 8, !tbaa !5
  %1645 = load double, ptr %112, align 8, !tbaa !5
  %1646 = fadd double %1645, %1644
  store double %1646, ptr %112, align 8, !tbaa !5
  %1647 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1648 = fneg double %1647
  %1649 = load double, ptr %120, align 8, !tbaa !5
  %1650 = fcmp olt double %1648, %1649
  br i1 %1650, label %1651, label %1656

1651:                                             ; preds = %1643
  %1652 = load double, ptr %120, align 8, !tbaa !5
  %1653 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1654 = fcmp olt double %1652, %1653
  br i1 %1654, label %1655, label %1656

1655:                                             ; preds = %1651
  store double 0.000000e+00, ptr %120, align 8, !tbaa !5
  br label %1656

1656:                                             ; preds = %1655, %1651, %1643
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #8
  %1657 = load double, ptr %113, align 8, !tbaa !5
  %1658 = load double, ptr %120, align 8, !tbaa !5
  %1659 = fmul double %1657, %1658
  store double %1659, ptr %121, align 8, !tbaa !5
  %1660 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1661 = fneg double %1660
  %1662 = load double, ptr %121, align 8, !tbaa !5
  %1663 = fcmp olt double %1661, %1662
  br i1 %1663, label %1664, label %1669

1664:                                             ; preds = %1656
  %1665 = load double, ptr %121, align 8, !tbaa !5
  %1666 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1667 = fcmp olt double %1665, %1666
  br i1 %1667, label %1668, label %1669

1668:                                             ; preds = %1664
  store double 0.000000e+00, ptr %121, align 8, !tbaa !5
  br label %1669

1669:                                             ; preds = %1668, %1664, %1656
  %1670 = load double, ptr %121, align 8, !tbaa !5
  %1671 = load double, ptr %111, align 8, !tbaa !5
  %1672 = fadd double %1671, %1670
  store double %1672, ptr %111, align 8, !tbaa !5
  %1673 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1674 = fneg double %1673
  %1675 = load double, ptr %111, align 8, !tbaa !5
  %1676 = fcmp olt double %1674, %1675
  br i1 %1676, label %1677, label %1682

1677:                                             ; preds = %1669
  %1678 = load double, ptr %111, align 8, !tbaa !5
  %1679 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1680 = fcmp olt double %1678, %1679
  br i1 %1680, label %1681, label %1682

1681:                                             ; preds = %1677
  store double 0.000000e+00, ptr %111, align 8, !tbaa !5
  br label %1682

1682:                                             ; preds = %1681, %1677, %1669
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #8
  br label %1683

1683:                                             ; preds = %1682, %1635, %1628
  %1684 = load i64, ptr %24, align 8, !tbaa !9
  %1685 = load i64, ptr %109, align 8, !tbaa !9
  %1686 = add i64 %1685, %1684
  store i64 %1686, ptr %109, align 8, !tbaa !9
  %1687 = load ptr, ptr %110, align 8, !tbaa !11
  %1688 = getelementptr inbounds double, ptr %1687, i32 1
  store ptr %1688, ptr %110, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #8
  store i32 0, ptr %36, align 4
  br label %1689

1689:                                             ; preds = %1683, %1625
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #8
  %1690 = load i32, ptr %36, align 4
  switch i32 %1690, label %2025 [
    i32 0, label %1691
    i32 56, label %1839
  ]

1691:                                             ; preds = %1689
  br label %1692

1692:                                             ; preds = %1691
  %1693 = load ptr, ptr %26, align 8, !tbaa !11
  %1694 = load ptr, ptr %110, align 8, !tbaa !11
  %1695 = icmp ne ptr %1693, %1694
  br i1 %1695, label %1520, label %1696, !llvm.loop !41

1696:                                             ; preds = %1692
  %1697 = load double, ptr %112, align 8, !tbaa !5
  %1698 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1697)
  br i1 %1698, label %1699, label %1701

1699:                                             ; preds = %1696
  call void @LogAssertFailure(i64 noundef 932, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.91)
  call void @__assert_fail(ptr noundef @.str.92, ptr noundef @.str, i32 noundef 932, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1700:                                             ; No predecessors!
  br label %1701

1701:                                             ; preds = %1700, %1696
  %1702 = phi i1 [ true, %1696 ], [ false, %1700 ]
  %1703 = load double, ptr %112, align 8, !tbaa !5
  %1704 = fcmp oeq double 0.000000e+00, %1703
  br i1 %1704, label %1711, label %1705

1705:                                             ; preds = %1701
  %1706 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1707 = load double, ptr %112, align 8, !tbaa !5
  %1708 = fcmp ole double %1706, %1707
  br i1 %1708, label %1711, label %1709

1709:                                             ; preds = %1705
  call void @LogAssertFailure(i64 noundef 933, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.93)
  call void @__assert_fail(ptr noundef @.str.94, ptr noundef @.str, i32 noundef 933, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1710:                                             ; No predecessors!
  br label %1711

1711:                                             ; preds = %1710, %1705, %1701
  %1712 = phi i1 [ true, %1705 ], [ true, %1701 ], [ false, %1710 ]
  br label %1713

1713:                                             ; preds = %1821, %1711
  %1714 = load double, ptr %111, align 8, !tbaa !5
  %1715 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1714)
  br i1 %1715, label %1722, label %1716

1716:                                             ; preds = %1713
  %1717 = load double, ptr %111, align 8, !tbaa !5
  %1718 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1717)
  br i1 %1718, label %1722, label %1719

1719:                                             ; preds = %1716
  %1720 = load double, ptr %112, align 8, !tbaa !5
  %1721 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1720)
  br label %1722

1722:                                             ; preds = %1719, %1716, %1713
  %1723 = phi i1 [ true, %1716 ], [ true, %1713 ], [ %1721, %1719 ]
  br i1 %1723, label %1724, label %1822

1724:                                             ; preds = %1722
  %1725 = load double, ptr %108, align 8, !tbaa !5
  %1726 = fmul double %1725, 5.000000e-01
  store double %1726, ptr %108, align 8, !tbaa !5
  %1727 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1728 = load double, ptr %108, align 8, !tbaa !5
  %1729 = fcmp ole double %1727, %1728
  br i1 %1729, label %1732, label %1730

1730:                                             ; preds = %1724
  call void @LogAssertFailure(i64 noundef 941, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.87)
  call void @__assert_fail(ptr noundef @.str.88, ptr noundef @.str, i32 noundef 941, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1731:                                             ; No predecessors!
  br label %1732

1732:                                             ; preds = %1731, %1724
  %1733 = phi i1 [ true, %1724 ], [ false, %1731 ]
  store double 0.000000e+00, ptr %111, align 8, !tbaa !5
  store double 0.000000e+00, ptr %112, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #8
  store i64 0, ptr %122, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #8
  %1734 = load ptr, ptr %20, align 8, !tbaa !11
  store ptr %1734, ptr %123, align 8, !tbaa !11
  br label %1735

1735:                                             ; preds = %1817, %1732
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #8
  %1736 = load ptr, ptr %123, align 8, !tbaa !11
  %1737 = load double, ptr %1736, align 8, !tbaa !5
  store double %1737, ptr %124, align 8, !tbaa !5
  %1738 = load double, ptr %124, align 8, !tbaa !5
  %1739 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1738)
  br i1 %1739, label %1747, label %1740

1740:                                             ; preds = %1735
  %1741 = load double, ptr %124, align 8, !tbaa !5
  %1742 = fcmp ole double 0.000000e+00, %1741
  br i1 %1742, label %1743, label %1747

1743:                                             ; preds = %1740
  %1744 = load double, ptr %124, align 8, !tbaa !5
  %1745 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %1746 = fcmp une double %1744, %1745
  br i1 %1746, label %1749, label %1747

1747:                                             ; preds = %1743, %1740, %1735
  call void @LogAssertFailure(i64 noundef 949, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.43)
  call void @__assert_fail(ptr noundef @.str.44, ptr noundef @.str, i32 noundef 949, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1748:                                             ; No predecessors!
  br label %1749

1749:                                             ; preds = %1748, %1743
  %1750 = phi i1 [ true, %1743 ], [ false, %1748 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #8
  %1751 = load ptr, ptr %21, align 8, !tbaa !11
  %1752 = load i64, ptr %122, align 8, !tbaa !9
  %1753 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef %1751, i64 noundef %1752) #8
  %1754 = load double, ptr %1753, align 8, !tbaa !5
  store double %1754, ptr %125, align 8, !tbaa !5
  %1755 = load double, ptr %125, align 8, !tbaa !5
  %1756 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1755)
  br i1 %1756, label %1811, label %1757

1757:                                             ; preds = %1749
  %1758 = load double, ptr %125, align 8, !tbaa !5
  %1759 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1758)
  br i1 %1759, label %1811, label %1760

1760:                                             ; preds = %1757
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #8
  %1761 = load double, ptr %108, align 8, !tbaa !5
  %1762 = load double, ptr %124, align 8, !tbaa !5
  %1763 = fmul double %1761, %1762
  store double %1763, ptr %126, align 8, !tbaa !5
  %1764 = load double, ptr %126, align 8, !tbaa !5
  %1765 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1766 = fcmp olt double %1764, %1765
  br i1 %1766, label %1767, label %1768

1767:                                             ; preds = %1760
  store double 0.000000e+00, ptr %126, align 8, !tbaa !5
  br label %1768

1768:                                             ; preds = %1767, %1760
  %1769 = load double, ptr %126, align 8, !tbaa !5
  %1770 = load double, ptr %112, align 8, !tbaa !5
  %1771 = fadd double %1770, %1769
  store double %1771, ptr %112, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #8
  %1772 = load double, ptr %108, align 8, !tbaa !5
  %1773 = load double, ptr %125, align 8, !tbaa !5
  %1774 = fmul double %1772, %1773
  store double %1774, ptr %127, align 8, !tbaa !5
  %1775 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1776 = fneg double %1775
  %1777 = load double, ptr %127, align 8, !tbaa !5
  %1778 = fcmp olt double %1776, %1777
  br i1 %1778, label %1779, label %1784

1779:                                             ; preds = %1768
  %1780 = load double, ptr %127, align 8, !tbaa !5
  %1781 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1782 = fcmp olt double %1780, %1781
  br i1 %1782, label %1783, label %1784

1783:                                             ; preds = %1779
  store double 0.000000e+00, ptr %127, align 8, !tbaa !5
  br label %1784

1784:                                             ; preds = %1783, %1779, %1768
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #8
  %1785 = load double, ptr %127, align 8, !tbaa !5
  %1786 = load double, ptr %126, align 8, !tbaa !5
  %1787 = fmul double %1785, %1786
  store double %1787, ptr %128, align 8, !tbaa !5
  %1788 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1789 = fneg double %1788
  %1790 = load double, ptr %128, align 8, !tbaa !5
  %1791 = fcmp olt double %1789, %1790
  br i1 %1791, label %1792, label %1797

1792:                                             ; preds = %1784
  %1793 = load double, ptr %128, align 8, !tbaa !5
  %1794 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1795 = fcmp olt double %1793, %1794
  br i1 %1795, label %1796, label %1797

1796:                                             ; preds = %1792
  store double 0.000000e+00, ptr %128, align 8, !tbaa !5
  br label %1797

1797:                                             ; preds = %1796, %1792, %1784
  %1798 = load double, ptr %128, align 8, !tbaa !5
  %1799 = load double, ptr %111, align 8, !tbaa !5
  %1800 = fadd double %1799, %1798
  store double %1800, ptr %111, align 8, !tbaa !5
  %1801 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1802 = fneg double %1801
  %1803 = load double, ptr %111, align 8, !tbaa !5
  %1804 = fcmp olt double %1802, %1803
  br i1 %1804, label %1805, label %1810

1805:                                             ; preds = %1797
  %1806 = load double, ptr %111, align 8, !tbaa !5
  %1807 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1808 = fcmp olt double %1806, %1807
  br i1 %1808, label %1809, label %1810

1809:                                             ; preds = %1805
  store double 0.000000e+00, ptr %111, align 8, !tbaa !5
  br label %1810

1810:                                             ; preds = %1809, %1805, %1797
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #8
  br label %1811

1811:                                             ; preds = %1810, %1757, %1749
  %1812 = load i64, ptr %24, align 8, !tbaa !9
  %1813 = load i64, ptr %122, align 8, !tbaa !9
  %1814 = add i64 %1813, %1812
  store i64 %1814, ptr %122, align 8, !tbaa !9
  %1815 = load ptr, ptr %123, align 8, !tbaa !11
  %1816 = getelementptr inbounds double, ptr %1815, i32 1
  store ptr %1816, ptr %123, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #8
  br label %1817

1817:                                             ; preds = %1811
  %1818 = load ptr, ptr %26, align 8, !tbaa !11
  %1819 = load ptr, ptr %123, align 8, !tbaa !11
  %1820 = icmp ne ptr %1818, %1819
  br i1 %1820, label %1735, label %1821, !llvm.loop !42

1821:                                             ; preds = %1817
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #8
  br label %1713, !llvm.loop !43

1822:                                             ; preds = %1722
  %1823 = load double, ptr %112, align 8, !tbaa !5
  %1824 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1823)
  br i1 %1824, label %1825, label %1827

1825:                                             ; preds = %1822
  call void @LogAssertFailure(i64 noundef 980, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.91)
  call void @__assert_fail(ptr noundef @.str.92, ptr noundef @.str, i32 noundef 980, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1826:                                             ; No predecessors!
  br label %1827

1827:                                             ; preds = %1826, %1822
  %1828 = phi i1 [ true, %1822 ], [ false, %1826 ]
  %1829 = load double, ptr %112, align 8, !tbaa !5
  %1830 = fcmp oeq double 0.000000e+00, %1829
  br i1 %1830, label %1837, label %1831

1831:                                             ; preds = %1827
  %1832 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1833 = load double, ptr %112, align 8, !tbaa !5
  %1834 = fcmp ole double %1832, %1833
  br i1 %1834, label %1837, label %1835

1835:                                             ; preds = %1831
  call void @LogAssertFailure(i64 noundef 981, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.93)
  call void @__assert_fail(ptr noundef @.str.94, ptr noundef @.str, i32 noundef 981, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1836:                                             ; No predecessors!
  br label %1837

1837:                                             ; preds = %1836, %1831, %1827
  %1838 = phi i1 [ true, %1831 ], [ true, %1827 ], [ false, %1836 ]
  br label %1839

1839:                                             ; preds = %1837, %1689
  %1840 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1841 = load double, ptr %112, align 8, !tbaa !5
  %1842 = fcmp ole double %1840, %1841
  br i1 %1842, label %1843, label %2018

1843:                                             ; preds = %1839
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #8
  %1844 = load double, ptr %111, align 8, !tbaa !5
  %1845 = load double, ptr %112, align 8, !tbaa !5
  %1846 = fdiv double %1844, %1845
  store double %1846, ptr %129, align 8, !tbaa !5
  %1847 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1848 = fneg double %1847
  %1849 = load double, ptr %129, align 8, !tbaa !5
  %1850 = fcmp olt double %1848, %1849
  br i1 %1850, label %1851, label %1856

1851:                                             ; preds = %1843
  %1852 = load double, ptr %129, align 8, !tbaa !5
  %1853 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1854 = fcmp olt double %1852, %1853
  br i1 %1854, label %1855, label %1856

1855:                                             ; preds = %1851
  store double 0.000000e+00, ptr %129, align 8, !tbaa !5
  br label %1856

1856:                                             ; preds = %1855, %1851, %1843
  %1857 = load double, ptr %108, align 8, !tbaa !5
  %1858 = load double, ptr %129, align 8, !tbaa !5
  %1859 = fdiv double %1858, %1857
  store double %1859, ptr %129, align 8, !tbaa !5
  %1860 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1861 = fneg double %1860
  %1862 = load double, ptr %129, align 8, !tbaa !5
  %1863 = fcmp olt double %1861, %1862
  br i1 %1863, label %1864, label %1869

1864:                                             ; preds = %1856
  %1865 = load double, ptr %129, align 8, !tbaa !5
  %1866 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1867 = fcmp olt double %1865, %1866
  br i1 %1867, label %1868, label %1869

1868:                                             ; preds = %1864
  store double 0.000000e+00, ptr %129, align 8, !tbaa !5
  br label %1869

1869:                                             ; preds = %1868, %1864, %1856
  %1870 = load double, ptr %129, align 8, !tbaa !5
  %1871 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1870)
  br i1 %1871, label %1872, label %1874

1872:                                             ; preds = %1869
  call void @LogAssertFailure(i64 noundef 999, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.95)
  call void @__assert_fail(ptr noundef @.str.96, ptr noundef @.str, i32 noundef 999, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1873:                                             ; No predecessors!
  br label %1874

1874:                                             ; preds = %1873, %1869
  %1875 = phi i1 [ true, %1869 ], [ false, %1873 ]
  %1876 = load double, ptr %129, align 8, !tbaa !5
  %1877 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1876)
  br i1 %1877, label %1878, label %1896

1878:                                             ; preds = %1874
  %1879 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %1880 = load double, ptr %129, align 8, !tbaa !5
  %1881 = fcmp oeq double %1879, %1880
  br i1 %1881, label %1882, label %1884

1882:                                             ; preds = %1878
  %1883 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #8
  store double %1883, ptr %129, align 8, !tbaa !5
  br label %1895

1884:                                             ; preds = %1878
  %1885 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %1886 = fneg double %1885
  %1887 = load double, ptr %129, align 8, !tbaa !5
  %1888 = fcmp oeq double %1886, %1887
  br i1 %1888, label %1891, label %1889

1889:                                             ; preds = %1884
  call void @LogAssertFailure(i64 noundef 1010, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.97)
  call void @__assert_fail(ptr noundef @.str.98, ptr noundef @.str, i32 noundef 1010, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1890:                                             ; No predecessors!
  br label %1891

1891:                                             ; preds = %1890, %1884
  %1892 = phi i1 [ true, %1884 ], [ false, %1890 ]
  %1893 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #8
  %1894 = fneg double %1893
  store double %1894, ptr %129, align 8, !tbaa !5
  br label %1895

1895:                                             ; preds = %1891, %1882
  br label %1896

1896:                                             ; preds = %1895, %1874
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #8
  %1897 = load ptr, ptr %23, align 8, !tbaa !11
  %1898 = load double, ptr %1897, align 8, !tbaa !5
  store double %1898, ptr %130, align 8, !tbaa !5
  %1899 = load double, ptr %130, align 8, !tbaa !5
  %1900 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1899)
  br i1 %1900, label %1901, label %1903

1901:                                             ; preds = %1896
  call void @LogAssertFailure(i64 noundef 1016, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.99)
  call void @__assert_fail(ptr noundef @.str.100, ptr noundef @.str, i32 noundef 1016, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1902:                                             ; No predecessors!
  br label %1903

1903:                                             ; preds = %1902, %1896
  %1904 = phi i1 [ true, %1896 ], [ false, %1902 ]
  %1905 = load double, ptr %130, align 8, !tbaa !5
  %1906 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1905)
  br i1 %1906, label %1907, label %1909

1907:                                             ; preds = %1903
  call void @LogAssertFailure(i64 noundef 1017, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.101)
  call void @__assert_fail(ptr noundef @.str.102, ptr noundef @.str, i32 noundef 1017, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1908:                                             ; No predecessors!
  br label %1909

1909:                                             ; preds = %1908, %1903
  %1910 = phi i1 [ true, %1903 ], [ false, %1908 ]
  %1911 = load double, ptr %130, align 8, !tbaa !5
  %1912 = fcmp oeq double 0.000000e+00, %1911
  br i1 %1912, label %1924, label %1913

1913:                                             ; preds = %1909
  %1914 = load double, ptr %130, align 8, !tbaa !5
  %1915 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1916 = fneg double %1915
  %1917 = fcmp ole double %1914, %1916
  br i1 %1917, label %1924, label %1918

1918:                                             ; preds = %1913
  %1919 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1920 = load double, ptr %130, align 8, !tbaa !5
  %1921 = fcmp ole double %1919, %1920
  br i1 %1921, label %1924, label %1922

1922:                                             ; preds = %1918
  call void @LogAssertFailure(i64 noundef 1021, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.103)
  call void @__assert_fail(ptr noundef @.str.104, ptr noundef @.str, i32 noundef 1021, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1923:                                             ; No predecessors!
  br label %1924

1924:                                             ; preds = %1923, %1918, %1913, %1909
  %1925 = phi i1 [ true, %1918 ], [ true, %1913 ], [ true, %1909 ], [ false, %1923 ]
  %1926 = load double, ptr %129, align 8, !tbaa !5
  %1927 = load double, ptr %130, align 8, !tbaa !5
  %1928 = fadd double %1927, %1926
  store double %1928, ptr %130, align 8, !tbaa !5
  %1929 = load double, ptr %130, align 8, !tbaa !5
  %1930 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1929)
  br i1 %1930, label %1931, label %1933

1931:                                             ; preds = %1924
  call void @LogAssertFailure(i64 noundef 1023, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.99)
  call void @__assert_fail(ptr noundef @.str.100, ptr noundef @.str, i32 noundef 1023, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1932:                                             ; No predecessors!
  br label %1933

1933:                                             ; preds = %1932, %1924
  %1934 = phi i1 [ true, %1924 ], [ false, %1932 ]
  %1935 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1936 = fneg double %1935
  %1937 = load double, ptr %130, align 8, !tbaa !5
  %1938 = fcmp olt double %1936, %1937
  br i1 %1938, label %1939, label %1944

1939:                                             ; preds = %1933
  %1940 = load double, ptr %130, align 8, !tbaa !5
  %1941 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1942 = fcmp olt double %1940, %1941
  br i1 %1942, label %1943, label %1944

1943:                                             ; preds = %1939
  store double 0.000000e+00, ptr %130, align 8, !tbaa !5
  br label %1944

1944:                                             ; preds = %1943, %1939, %1933
  %1945 = load double, ptr %130, align 8, !tbaa !5
  %1946 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %1945)
  br i1 %1946, label %1947, label %1965

1947:                                             ; preds = %1944
  %1948 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %1949 = load double, ptr %130, align 8, !tbaa !5
  %1950 = fcmp oeq double %1948, %1949
  br i1 %1950, label %1951, label %1953

1951:                                             ; preds = %1947
  %1952 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #8
  store double %1952, ptr %130, align 8, !tbaa !5
  br label %1964

1953:                                             ; preds = %1947
  %1954 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #8
  %1955 = fneg double %1954
  %1956 = load double, ptr %130, align 8, !tbaa !5
  %1957 = fcmp oeq double %1955, %1956
  br i1 %1957, label %1960, label %1958

1958:                                             ; preds = %1953
  call void @LogAssertFailure(i64 noundef 1040, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.105)
  call void @__assert_fail(ptr noundef @.str.106, ptr noundef @.str, i32 noundef 1040, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

1959:                                             ; No predecessors!
  br label %1960

1960:                                             ; preds = %1959, %1953
  %1961 = phi i1 [ true, %1953 ], [ false, %1959 ]
  %1962 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #8
  %1963 = fneg double %1962
  store double %1963, ptr %130, align 8, !tbaa !5
  br label %1964

1964:                                             ; preds = %1960, %1951
  br label %1965

1965:                                             ; preds = %1964, %1944
  %1966 = load double, ptr %130, align 8, !tbaa !5
  %1967 = load ptr, ptr %23, align 8, !tbaa !11
  store double %1966, ptr %1967, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #8
  %1968 = load double, ptr %129, align 8, !tbaa !5
  %1969 = fneg double %1968
  store double %1969, ptr %131, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #8
  store i64 0, ptr %132, align 8, !tbaa !9
  br label %1970

1970:                                             ; preds = %2013, %1965
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #8
  %1971 = load ptr, ptr %21, align 8, !tbaa !11
  %1972 = load i64, ptr %132, align 8, !tbaa !9
  %1973 = call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef %1971, i64 noundef %1972) #8
  store ptr %1973, ptr %133, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #8
  %1974 = load ptr, ptr %133, align 8, !tbaa !11
  %1975 = load double, ptr %1974, align 8, !tbaa !5
  store double %1975, ptr %134, align 8, !tbaa !5
  %1976 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1977 = fneg double %1976
  %1978 = load double, ptr %134, align 8, !tbaa !5
  %1979 = fcmp olt double %1977, %1978
  br i1 %1979, label %1980, label %1985

1980:                                             ; preds = %1970
  %1981 = load double, ptr %134, align 8, !tbaa !5
  %1982 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1983 = fcmp olt double %1981, %1982
  br i1 %1983, label %1984, label %1985

1984:                                             ; preds = %1980
  store double 0.000000e+00, ptr %134, align 8, !tbaa !5
  br label %1985

1985:                                             ; preds = %1984, %1980, %1970
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #8
  %1986 = load double, ptr %134, align 8, !tbaa !5
  %1987 = load double, ptr %131, align 8, !tbaa !5
  %1988 = fadd double %1986, %1987
  store double %1988, ptr %135, align 8, !tbaa !5
  %1989 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1990 = fneg double %1989
  %1991 = load double, ptr %135, align 8, !tbaa !5
  %1992 = fcmp olt double %1990, %1991
  br i1 %1992, label %1993, label %1998

1993:                                             ; preds = %1985
  %1994 = load double, ptr %135, align 8, !tbaa !5
  %1995 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #8
  %1996 = fcmp olt double %1994, %1995
  br i1 %1996, label %1997, label %1998

1997:                                             ; preds = %1993
  store double 0.000000e+00, ptr %135, align 8, !tbaa !5
  br label %1998

1998:                                             ; preds = %1997, %1993, %1985
  %1999 = load double, ptr %134, align 8, !tbaa !5
  %2000 = call noundef zeroext i1 @_ZSt5isnand(double noundef %1999)
  br i1 %2000, label %2006, label %2001

2001:                                             ; preds = %1998
  %2002 = load double, ptr %135, align 8, !tbaa !5
  %2003 = call noundef zeroext i1 @_ZSt5isnand(double noundef %2002)
  br i1 %2003, label %2004, label %2006

2004:                                             ; preds = %2001
  call void @LogAssertFailure(i64 noundef 1063, ptr noundef @.str, ptr noundef @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef @.str.49)
  call void @__assert_fail(ptr noundef @.str.50, ptr noundef @.str, i32 noundef 1063, ptr noundef @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #7
  unreachable

2005:                                             ; No predecessors!
  br label %2006

2006:                                             ; preds = %2005, %2001, %1998
  %2007 = phi i1 [ true, %2001 ], [ true, %1998 ], [ false, %2005 ]
  %2008 = load double, ptr %135, align 8, !tbaa !5
  %2009 = load ptr, ptr %133, align 8, !tbaa !11
  store double %2008, ptr %2009, align 8, !tbaa !5
  %2010 = load i64, ptr %24, align 8, !tbaa !9
  %2011 = load i64, ptr %132, align 8, !tbaa !9
  %2012 = add i64 %2011, %2010
  store i64 %2012, ptr %132, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #8
  br label %2013

2013:                                             ; preds = %2006
  %2014 = load i64, ptr %25, align 8, !tbaa !9
  %2015 = load i64, ptr %132, align 8, !tbaa !9
  %2016 = icmp ne i64 %2014, %2015
  br i1 %2016, label %1970, label %2017, !llvm.loop !44

2017:                                             ; preds = %2013
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #8
  br label %2018

2018:                                             ; preds = %2017, %1839
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #8
  br label %2019

2019:                                             ; preds = %2018, %1514
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br label %2020

2020:                                             ; preds = %2019, %766
  br label %2021

2021:                                             ; preds = %2020, %612
  br label %2022

2022:                                             ; preds = %2021, %480
  store i32 0, ptr %12, align 4
  store i32 1, ptr %36, align 4
  br label %2023

2023:                                             ; preds = %2022, %442
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  %2024 = load i32, ptr %12, align 4
  ret i32 %2024

2025:                                             ; preds = %1689, %1113, %879
  unreachable
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE3minEv() #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef, i64 noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE3maxEv() #5 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef i64 @_ZN14NAMESPACE_MAIN19RandomDeterministic8NextFastImEENSt9enable_ifIXaasr3std11is_unsignedIT_EE5valueltclL_ZNSt14numeric_limitsIjE3maxEvEEclsr3std14numeric_limitsIS3_EE3maxEES3_E4typeES3_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #5 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { 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 #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { alwaysinline mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { noreturn nounwind }
attributes #8 = { 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 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"any pointer", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!16, !16, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = !{!24, !24, i64 0}
!24 = !{!"bool", !7, i64 0}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = !{i8 0, i8 2}
!35 = !{}
!36 = distinct !{!36, !14}
!37 = distinct !{!37, !14}
!38 = distinct !{!38, !14}
!39 = distinct !{!39, !14}
!40 = distinct !{!40, !14}
!41 = distinct !{!41, !14}
!42 = distinct !{!42, !14}
!43 = distinct !{!43, !14}
!44 = distinct !{!44, !14}


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

@g_traceLevel = external local_unnamed_addr global i32, align 4
@.str = external hidden unnamed_addr constant [80 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [20 x i8], align 1
@__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_ = external hidden unnamed_addr constant [15 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [26 x i8], align 1
@__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_ = external hidden unnamed_addr constant [226 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [38 x i8], align 1
@_ZZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_E13LOG__sMessage = external hidden constant [54 x i8], align 16
@.str.27 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [51 x i8], align 1
@_ZZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_E13LOG__sMessage_0 = external hidden constant [54 x i8], align 16
@.str.31 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [105 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [129 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [60 x i8], align 1

declare void @InteralLogWithoutArguments(i32 noundef, ptr noundef) local_unnamed_addr #0

declare void @LogAssertFailure(i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPKT_S3_m(ptr noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_(double noundef %0, i64 noundef %1, i64 noundef %2, i64 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef readonly %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10) local_unnamed_addr #3 {
  %12 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %0)
  br i1 %12, label %13, label %14

13:                                               ; preds = %11
  tail call void @LogAssertFailure(i64 noundef 229, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.7)
  tail call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str, i32 noundef 229, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

14:                                               ; preds = %11
  %15 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %0)
  br i1 %15, label %16, label %17

16:                                               ; preds = %14
  tail call void @LogAssertFailure(i64 noundef 230, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.9)
  tail call void @__assert_fail(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, i32 noundef 230, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

17:                                               ; preds = %14
  %18 = fcmp oeq double %0, 0.000000e+00
  br i1 %18, label %23, label %19

19:                                               ; preds = %17
  %20 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %21 = fcmp ugt double %20, %0
  br i1 %21, label %22, label %23

22:                                               ; preds = %19
  tail call void @LogAssertFailure(i64 noundef 231, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.11)
  tail call void @__assert_fail(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str, i32 noundef 231, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

23:                                               ; preds = %19, %17
  %.not926 = icmp eq i64 %1, 0
  br i1 %.not926, label %24, label %25

24:                                               ; preds = %23
  tail call void @LogAssertFailure(i64 noundef 232, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.13)
  tail call void @__assert_fail(ptr noundef nonnull @.str.14, ptr noundef nonnull @.str, i32 noundef 232, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

25:                                               ; preds = %23
  %.not927 = icmp eq i64 %2, 0
  br i1 %.not927, label %26, label %27

26:                                               ; preds = %25
  tail call void @LogAssertFailure(i64 noundef 233, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.3)
  tail call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str, i32 noundef 233, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

27:                                               ; preds = %25
  %28 = icmp ne ptr %4, null
  %29 = icmp eq ptr %5, null
  %or.cond = or i1 %28, %29
  br i1 %or.cond, label %31, label %30

30:                                               ; preds = %27
  tail call void @LogAssertFailure(i64 noundef 234, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.15)
  tail call void @__assert_fail(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str, i32 noundef 234, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

31:                                               ; preds = %27
  %.not928 = icmp eq ptr %6, null
  br i1 %.not928, label %32, label %33

32:                                               ; preds = %31
  tail call void @LogAssertFailure(i64 noundef 235, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.17)
  tail call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str, i32 noundef 235, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

33:                                               ; preds = %31
  %.not929 = icmp eq ptr %7, null
  br i1 %.not929, label %34, label %35

34:                                               ; preds = %33
  tail call void @LogAssertFailure(i64 noundef 236, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.19)
  tail call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str, i32 noundef 236, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

35:                                               ; preds = %33
  %.not930 = icmp eq ptr %8, null
  br i1 %.not930, label %36, label %37

36:                                               ; preds = %35
  tail call void @LogAssertFailure(i64 noundef 237, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.21)
  tail call void @__assert_fail(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str, i32 noundef 237, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

37:                                               ; preds = %35
  %38 = shl i64 %1, 3
  %39 = mul i64 %38, %2
  %40 = getelementptr inbounds double, ptr %7, i64 %2
  %41 = icmp eq ptr %10, null
  br i1 %41, label %46, label %42

42:                                               ; preds = %37
  %43 = load double, ptr %10, align 8, !tbaa !5
  %44 = fcmp oeq double %43, 0.000000e+00
  br i1 %44, label %46, label %45

45:                                               ; preds = %42
  tail call void @LogAssertFailure(i64 noundef 243, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.23)
  tail call void @__assert_fail(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str, i32 noundef 243, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

46:                                               ; preds = %42, %37
  %.not931 = icmp ne ptr %9, null
  %47 = icmp ne i64 %3, 0
  %or.cond1118 = and i1 %.not931, %47
  br i1 %or.cond1118, label %.lr.ph, label %.loopexit1046.preheader

.loopexit1046.preheader:                          ; preds = %48, %46
  br label %.loopexit1046

48:                                               ; preds = %.lr.ph
  %49 = add nuw i64 %.06051104, 1
  %exitcond.not = icmp eq i64 %49, %3
  br i1 %exitcond.not, label %.loopexit1046.preheader, label %.lr.ph, !llvm.loop !9

.lr.ph:                                           ; preds = %46, %48
  %.06051104 = phi i64 [ %49, %48 ], [ 0, %46 ]
  %50 = mul i64 %.06051104, %1
  %51 = getelementptr inbounds double, ptr %9, i64 %50
  %52 = load double, ptr %51, align 8, !tbaa !5
  %53 = fcmp oeq double %52, 0.000000e+00
  br i1 %53, label %48, label %54

54:                                               ; preds = %.lr.ph
  tail call void @LogAssertFailure(i64 noundef 248, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.25)
  tail call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str, i32 noundef 248, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

.loopexit1046:                                    ; preds = %.loopexit1046.preheader, %159
  %.0687 = phi ptr [ %161, %159 ], [ %7, %.loopexit1046.preheader ]
  %.0683 = phi i64 [ %160, %159 ], [ 0, %.loopexit1046.preheader ]
  %.0633 = phi double [ %.2635, %159 ], [ 0.000000e+00, %.loopexit1046.preheader ]
  %.0620 = phi double [ %.7627, %159 ], [ 0.000000e+00, %.loopexit1046.preheader ]
  %.0614 = phi double [ %.2616, %159 ], [ 0.000000e+00, %.loopexit1046.preheader ]
  %55 = load double, ptr %.0687, align 8, !tbaa !5
  %56 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %57 = fcmp ugt double %56, %55
  br i1 %57, label %58, label %63

58:                                               ; preds = %.loopexit1046
  %59 = fcmp ult double %55, 0.000000e+00
  br i1 %59, label %60, label %63

60:                                               ; preds = %58
  %61 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %62 = icmp sgt i32 %61, 0
  br i1 %62, label %.critedge963.thread.sink.split, label %.critedge963.thread

63:                                               ; preds = %58, %.loopexit1046
  %.0692 = phi double [ %55, %.loopexit1046 ], [ 0.000000e+00, %58 ]
  %64 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.0692)
  br i1 %64, label %65, label %66

65:                                               ; preds = %63
  tail call void @LogAssertFailure(i64 noundef 271, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.27)
  tail call void @__assert_fail(ptr noundef nonnull @.str.28, ptr noundef nonnull @.str, i32 noundef 271, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

66:                                               ; preds = %63
  %67 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %68 = fcmp oeq double %67, %.0692
  br i1 %68, label %.preheader1042, label %122

69:                                               ; preds = %120
  %70 = fmul double %.1642, 5.000000e-01
  %71 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %72 = fcmp ugt double %71, %70
  br i1 %72, label %73, label %.preheader1042

73:                                               ; preds = %69
  tail call void @LogAssertFailure(i64 noundef 278, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.29)
  tail call void @__assert_fail(ptr noundef nonnull @.str.30, ptr noundef nonnull @.str, i32 noundef 278, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

.preheader1042:                                   ; preds = %66, %69
  %.1642 = phi double [ %70, %69 ], [ 1.000000e+00, %66 ]
  br label %74

74:                                               ; preds = %117, %.preheader1042
  %.0712 = phi ptr [ %.0687, %.preheader1042 ], [ %119, %117 ]
  %.0710 = phi i64 [ %.0683, %.preheader1042 ], [ %118, %117 ]
  %.0703 = phi i64 [ 0, %.preheader1042 ], [ %.2705, %117 ]
  %.1621 = phi double [ 0.000000e+00, %.preheader1042 ], [ %.4624, %117 ]
  %75 = load double, ptr %.0712, align 8, !tbaa !5
  %76 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %77 = fcmp ugt double %76, %75
  br i1 %77, label %78, label %83

78:                                               ; preds = %74
  %79 = fcmp ult double %75, 0.000000e+00
  br i1 %79, label %80, label %83

80:                                               ; preds = %78
  %81 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %82 = icmp sgt i32 %81, 0
  br i1 %82, label %.critedge963.thread.sink.split, label %.critedge963.thread

83:                                               ; preds = %78, %74
  %.0747 = phi double [ %75, %74 ], [ 0.000000e+00, %78 ]
  %84 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.0747)
  br i1 %84, label %85, label %86

85:                                               ; preds = %83
  tail call void @LogAssertFailure(i64 noundef 295, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.31)
  tail call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str, i32 noundef 295, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

86:                                               ; preds = %83
  %87 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %88 = fcmp oeq double %87, %.0747
  br i1 %88, label %89, label %117

89:                                               ; preds = %86
  %90 = tail call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef nonnull %8, i64 noundef %.0710) #7
  %91 = load double, ptr %90, align 8, !tbaa !5
  %92 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %91)
  br i1 %92, label %117, label %93

93:                                               ; preds = %89
  %94 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %91)
  br i1 %94, label %117, label %95

95:                                               ; preds = %93
  %96 = add i64 %.0703, 1
  %97 = fmul double %.1642, %91
  %98 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %99 = fneg double %98
  %100 = fcmp ogt double %97, %99
  br i1 %100, label %101, label %105

101:                                              ; preds = %95
  %102 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %103 = fcmp olt double %97, %102
  br i1 %103, label %104, label %105

104:                                              ; preds = %101
  br label %105

105:                                              ; preds = %104, %101, %95
  %.0753 = phi double [ 0.000000e+00, %104 ], [ %97, %101 ], [ %97, %95 ]
  %106 = fadd double %.1621, %.0753
  %107 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %108 = fneg double %107
  %109 = fcmp ogt double %106, %108
  br i1 %109, label %110, label %114

110:                                              ; preds = %105
  %111 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %112 = fcmp olt double %106, %111
  br i1 %112, label %113, label %114

113:                                              ; preds = %110
  br label %114

114:                                              ; preds = %113, %110, %105
  %.2622 = phi double [ 0.000000e+00, %113 ], [ %106, %110 ], [ %106, %105 ]
  %115 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.2622)
  br i1 %115, label %116, label %117

116:                                              ; preds = %114
  tail call void @LogAssertFailure(i64 noundef 314, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.33)
  tail call void @__assert_fail(ptr noundef nonnull @.str.34, ptr noundef nonnull @.str, i32 noundef 314, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

117:                                              ; preds = %89, %93, %114, %86
  %.2705 = phi i64 [ %.0703, %86 ], [ %.0703, %89 ], [ %.0703, %93 ], [ %96, %114 ]
  %.4624 = phi double [ %.1621, %86 ], [ %.1621, %89 ], [ %.1621, %93 ], [ %.2622, %114 ]
  %118 = add i64 %.0710, %38
  %119 = getelementptr inbounds i8, ptr %.0712, i64 8
  %.not932 = icmp eq ptr %40, %119
  br i1 %.not932, label %120, label %74, !llvm.loop !13

120:                                              ; preds = %117
  %121 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %.4624)
  br i1 %121, label %69, label %.critedge963, !llvm.loop !14

122:                                              ; preds = %66
  %123 = tail call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef nonnull %8, i64 noundef %.0683) #7
  %124 = load double, ptr %123, align 8, !tbaa !5
  %125 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %124)
  br i1 %125, label %159, label %126

126:                                              ; preds = %122
  %127 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %124)
  br i1 %127, label %159, label %128

128:                                              ; preds = %126
  %129 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %130 = fneg double %129
  %131 = fcmp ogt double %124, %130
  br i1 %131, label %132, label %136

132:                                              ; preds = %128
  %133 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %134 = fcmp olt double %124, %133
  br i1 %134, label %135, label %136

135:                                              ; preds = %132
  br label %136

136:                                              ; preds = %135, %132, %128
  %.0754 = phi double [ 0.000000e+00, %135 ], [ %124, %132 ], [ %124, %128 ]
  %137 = fadd double %.0633, %.0692
  %138 = fmul double %.0692, %.0754
  %139 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %140 = fneg double %139
  %141 = fcmp ogt double %138, %140
  br i1 %141, label %142, label %146

142:                                              ; preds = %136
  %143 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %144 = fcmp olt double %138, %143
  br i1 %144, label %145, label %146

145:                                              ; preds = %142
  br label %146

146:                                              ; preds = %145, %142, %136
  %.0755 = phi double [ 0.000000e+00, %145 ], [ %138, %142 ], [ %138, %136 ]
  %147 = fadd double %.0620, %.0755
  %148 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %149 = fneg double %148
  %150 = fcmp ogt double %147, %149
  br i1 %150, label %151, label %155

151:                                              ; preds = %146
  %152 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %153 = fcmp olt double %147, %152
  br i1 %153, label %154, label %155

154:                                              ; preds = %151
  br label %155

155:                                              ; preds = %154, %151, %146
  %.6626 = phi double [ 0.000000e+00, %154 ], [ %147, %151 ], [ %147, %146 ]
  %156 = tail call noundef double @_ZSt3absd(double noundef %.0755)
  %157 = fadd double %.0614, %156
  br label %159

.critedge963:                                     ; preds = %120
  %158 = uitofp i64 %.2705 to double
  br label %249

159:                                              ; preds = %122, %126, %155
  %.2635 = phi double [ %.0633, %122 ], [ %.0633, %126 ], [ %137, %155 ]
  %.7627 = phi double [ %.0620, %122 ], [ %.0620, %126 ], [ %.6626, %155 ]
  %.2616 = phi double [ %.0614, %122 ], [ %.0614, %126 ], [ %157, %155 ]
  %160 = add i64 %.0683, %38
  %161 = getelementptr inbounds i8, ptr %.0687, i64 8
  %.not933 = icmp eq ptr %40, %161
  br i1 %.not933, label %162, label %.loopexit1046, !llvm.loop !15

162:                                              ; preds = %159
  %163 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.2635)
  br i1 %163, label %164, label %165

164:                                              ; preds = %162
  tail call void @LogAssertFailure(i64 noundef 350, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.35)
  tail call void @__assert_fail(ptr noundef nonnull @.str.36, ptr noundef nonnull @.str, i32 noundef 350, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

165:                                              ; preds = %162
  %166 = fcmp oeq double %.2635, 0.000000e+00
  br i1 %166, label %171, label %167

167:                                              ; preds = %165
  %168 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %169 = fcmp ugt double %168, %.2635
  br i1 %169, label %170, label %171

170:                                              ; preds = %167
  tail call void @LogAssertFailure(i64 noundef 351, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.37)
  tail call void @__assert_fail(ptr noundef nonnull @.str.38, ptr noundef nonnull @.str, i32 noundef 351, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

171:                                              ; preds = %167, %165
  %172 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.2616)
  br i1 %172, label %173, label %174

173:                                              ; preds = %171
  tail call void @LogAssertFailure(i64 noundef 357, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.39)
  tail call void @__assert_fail(ptr noundef nonnull @.str.40, ptr noundef nonnull @.str, i32 noundef 357, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

174:                                              ; preds = %171
  %175 = fcmp oeq double %.2616, 0.000000e+00
  br i1 %175, label %180, label %176

176:                                              ; preds = %174
  %177 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %178 = fcmp ugt double %177, %.2616
  br i1 %178, label %179, label %180

179:                                              ; preds = %176
  tail call void @LogAssertFailure(i64 noundef 358, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.41)
  tail call void @__assert_fail(ptr noundef nonnull @.str.42, ptr noundef nonnull @.str, i32 noundef 358, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

180:                                              ; preds = %176, %174
  %181 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %182 = fcmp ugt double %181, %.2616
  br i1 %182, label %.critedge963.thread, label %.preheader1044

.preheader1044:                                   ; preds = %180, %239
  %.3644 = phi double [ %188, %239 ], [ 1.000000e+00, %180 ]
  %.4637 = phi double [ %.6639, %239 ], [ %.2635, %180 ]
  %.9 = phi double [ %.12, %239 ], [ %.7627, %180 ]
  %183 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.9)
  br i1 %183, label %.critedge, label %184

184:                                              ; preds = %.preheader1044
  %185 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %.9)
  br i1 %185, label %.critedge, label %186

186:                                              ; preds = %184
  %187 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %.4637)
  br i1 %187, label %.critedge, label %240

.critedge:                                        ; preds = %184, %.preheader1044, %186
  %188 = fmul double %.3644, 5.000000e-01
  %189 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %190 = fcmp ugt double %189, %188
  br i1 %190, label %191, label %.preheader1043

191:                                              ; preds = %.critedge
  tail call void @LogAssertFailure(i64 noundef 370, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.29)
  tail call void @__assert_fail(ptr noundef nonnull @.str.30, ptr noundef nonnull @.str, i32 noundef 370, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

.preheader1043:                                   ; preds = %.critedge, %236
  %.0761 = phi ptr [ %238, %236 ], [ %7, %.critedge ]
  %.0760 = phi i64 [ %237, %236 ], [ 0, %.critedge ]
  %.5638 = phi double [ %.6639, %236 ], [ 0.000000e+00, %.critedge ]
  %.10 = phi double [ %.12, %236 ], [ 0.000000e+00, %.critedge ]
  %192 = load double, ptr %.0761, align 8, !tbaa !5
  %193 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %192)
  %194 = fcmp ult double %192, 0.000000e+00
  %or.cond4.not = or i1 %194, %193
  br i1 %or.cond4.not, label %198, label %195

195:                                              ; preds = %.preheader1043
  %196 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %197 = fcmp une double %192, %196
  br i1 %197, label %199, label %198

198:                                              ; preds = %195, %.preheader1043
  tail call void @LogAssertFailure(i64 noundef 377, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.43)
  tail call void @__assert_fail(ptr noundef nonnull @.str.44, ptr noundef nonnull @.str, i32 noundef 377, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

199:                                              ; preds = %195
  %200 = tail call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef nonnull %8, i64 noundef %.0760) #7
  %201 = load double, ptr %200, align 8, !tbaa !5
  %202 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %201)
  br i1 %202, label %236, label %203

203:                                              ; preds = %199
  %204 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %201)
  br i1 %204, label %236, label %205

205:                                              ; preds = %203
  %206 = fmul double %188, %192
  %207 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %208 = fcmp olt double %206, %207
  %.0768 = select i1 %208, double 0.000000e+00, double %206
  %209 = fadd double %.5638, %.0768
  %210 = fmul double %188, %201
  %211 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %212 = fneg double %211
  %213 = fcmp ogt double %210, %212
  br i1 %213, label %214, label %218

214:                                              ; preds = %205
  %215 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %216 = fcmp olt double %210, %215
  br i1 %216, label %217, label %218

217:                                              ; preds = %214
  br label %218

218:                                              ; preds = %217, %214, %205
  %.0773 = phi double [ 0.000000e+00, %217 ], [ %210, %214 ], [ %210, %205 ]
  %219 = fmul double %.0768, %.0773
  %220 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %221 = fneg double %220
  %222 = fcmp ogt double %219, %221
  br i1 %222, label %223, label %227

223:                                              ; preds = %218
  %224 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %225 = fcmp olt double %219, %224
  br i1 %225, label %226, label %227

226:                                              ; preds = %223
  br label %227

227:                                              ; preds = %226, %223, %218
  %.0774 = phi double [ 0.000000e+00, %226 ], [ %219, %223 ], [ %219, %218 ]
  %228 = fadd double %.10, %.0774
  %229 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %230 = fneg double %229
  %231 = fcmp ogt double %228, %230
  br i1 %231, label %232, label %236

232:                                              ; preds = %227
  %233 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %234 = fcmp olt double %228, %233
  br i1 %234, label %235, label %236

235:                                              ; preds = %232
  br label %236

236:                                              ; preds = %227, %232, %235, %203, %199
  %.6639 = phi double [ %.5638, %199 ], [ %.5638, %203 ], [ %209, %235 ], [ %209, %232 ], [ %209, %227 ]
  %.12 = phi double [ %.10, %199 ], [ %.10, %203 ], [ 0.000000e+00, %235 ], [ %228, %232 ], [ %228, %227 ]
  %237 = add i64 %.0760, %38
  %238 = getelementptr inbounds i8, ptr %.0761, i64 8
  %.not = icmp eq ptr %40, %238
  br i1 %.not, label %239, label %.preheader1043, !llvm.loop !16

239:                                              ; preds = %236
  br label %.preheader1044, !llvm.loop !17

240:                                              ; preds = %186
  %241 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.4637)
  br i1 %241, label %242, label %243

242:                                              ; preds = %240
  tail call void @LogAssertFailure(i64 noundef 408, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.35)
  tail call void @__assert_fail(ptr noundef nonnull @.str.36, ptr noundef nonnull @.str, i32 noundef 408, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

243:                                              ; preds = %240
  %244 = fcmp oeq double %.4637, 0.000000e+00
  br i1 %244, label %249, label %245

245:                                              ; preds = %243
  %246 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %247 = fcmp ugt double %246, %.4637
  br i1 %247, label %248, label %249

248:                                              ; preds = %245
  tail call void @LogAssertFailure(i64 noundef 409, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.37)
  tail call void @__assert_fail(ptr noundef nonnull @.str.38, ptr noundef nonnull @.str, i32 noundef 409, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

249:                                              ; preds = %.critedge963, %243, %245
  %.3617994 = phi double [ 0.000000e+00, %.critedge963 ], [ %.2616, %243 ], [ %.2616, %245 ]
  %.4645 = phi double [ %.1642, %.critedge963 ], [ %.3644, %243 ], [ %.3644, %245 ]
  %.7640 = phi double [ %158, %.critedge963 ], [ %.4637, %243 ], [ %.4637, %245 ]
  %.13 = phi double [ %.4624, %.critedge963 ], [ %.9, %243 ], [ %.9, %245 ]
  %250 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %251 = fcmp ugt double %250, %.7640
  br i1 %251, label %.critedge963.thread, label %252

252:                                              ; preds = %249
  %253 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %254 = fcmp oeq double %253, %.3617994
  br i1 %254, label %271, label %255

255:                                              ; preds = %252
  %256 = fmul double %.3617994, %0
  %257 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %258 = fcmp olt double %256, %257
  %.4618 = select i1 %258, double 0.000000e+00, double %256
  %259 = fmul double %.4645, %.4618
  %260 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %261 = fcmp olt double %259, %260
  %.5619 = select i1 %261, double 0.000000e+00, double %259
  %262 = fdiv double %.5619, %.7640
  %263 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %264 = fcmp olt double %262, %263
  %.6 = select i1 %264, double 0.000000e+00, double %262
  %265 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.6)
  br i1 %265, label %266, label %267

266:                                              ; preds = %255
  tail call void @LogAssertFailure(i64 noundef 442, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.39)
  tail call void @__assert_fail(ptr noundef nonnull @.str.40, ptr noundef nonnull @.str, i32 noundef 442, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

267:                                              ; preds = %255
  %268 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %269 = fcmp oeq double %268, %.6
  br i1 %269, label %270, label %271

270:                                              ; preds = %267
  br label %271

271:                                              ; preds = %252, %267, %270
  %.7 = phi double [ 0.000000e+00, %270 ], [ %.6, %267 ], [ 0.000000e+00, %252 ]
  br i1 %41, label %.loopexit1041, label %272

272:                                              ; preds = %271
  %273 = fdiv double %.13, %.7640
  %274 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %275 = fneg double %274
  %276 = fcmp ogt double %273, %275
  br i1 %276, label %277, label %281

277:                                              ; preds = %272
  %278 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %279 = fcmp olt double %273, %278
  br i1 %279, label %280, label %281

280:                                              ; preds = %277
  br label %281

281:                                              ; preds = %280, %277, %272
  %.0787 = phi double [ 0.000000e+00, %280 ], [ %273, %277 ], [ %273, %272 ]
  %282 = fdiv double %.0787, %.4645
  %283 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %284 = fneg double %283
  %285 = fcmp ogt double %282, %284
  br i1 %285, label %286, label %290

286:                                              ; preds = %281
  %287 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %288 = fcmp olt double %282, %287
  br i1 %288, label %289, label %290

289:                                              ; preds = %286
  br label %290

290:                                              ; preds = %289, %286, %281
  %.1788 = phi double [ 0.000000e+00, %289 ], [ %282, %286 ], [ %282, %281 ]
  %291 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.1788)
  br i1 %291, label %292, label %293

292:                                              ; preds = %290
  tail call void @LogAssertFailure(i64 noundef 462, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.45)
  tail call void @__assert_fail(ptr noundef nonnull @.str.46, ptr noundef nonnull @.str, i32 noundef 462, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

293:                                              ; preds = %290
  %294 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %.1788)
  br i1 %294, label %295, label %308

295:                                              ; preds = %293
  %296 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %297 = fcmp oeq double %296, %.1788
  br i1 %297, label %298, label %300

298:                                              ; preds = %295
  %299 = tail call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #7
  br label %308

300:                                              ; preds = %295
  %301 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %302 = fneg double %301
  %303 = fcmp oeq double %.1788, %302
  br i1 %303, label %305, label %304

304:                                              ; preds = %300
  tail call void @LogAssertFailure(i64 noundef 473, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.47)
  tail call void @__assert_fail(ptr noundef nonnull @.str.48, ptr noundef nonnull @.str, i32 noundef 473, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

305:                                              ; preds = %300
  %306 = tail call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #7
  %307 = fneg double %306
  br label %308

308:                                              ; preds = %298, %305, %293
  %.2789 = phi double [ %299, %298 ], [ %307, %305 ], [ %.1788, %293 ]
  store double %.2789, ptr %10, align 8, !tbaa !5
  br label %309

309:                                              ; preds = %333, %308
  %.0790 = phi i64 [ 0, %308 ], [ %334, %333 ]
  %310 = tail call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef nonnull %8, i64 noundef %.0790) #7
  %311 = load double, ptr %310, align 8, !tbaa !5
  %312 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %313 = fneg double %312
  %314 = fcmp ogt double %311, %313
  br i1 %314, label %315, label %319

315:                                              ; preds = %309
  %316 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %317 = fcmp olt double %311, %316
  br i1 %317, label %318, label %319

318:                                              ; preds = %315
  br label %319

319:                                              ; preds = %318, %315, %309
  %.0792 = phi double [ 0.000000e+00, %318 ], [ %311, %315 ], [ %311, %309 ]
  %320 = fsub double %.0792, %.2789
  %321 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.0792)
  br i1 %321, label %325, label %322

322:                                              ; preds = %319
  %323 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %320)
  br i1 %323, label %324, label %325

324:                                              ; preds = %322
  tail call void @LogAssertFailure(i64 noundef 490, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.49)
  tail call void @__assert_fail(ptr noundef nonnull @.str.50, ptr noundef nonnull @.str, i32 noundef 490, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

325:                                              ; preds = %322, %319
  %326 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %327 = fneg double %326
  %328 = fcmp ogt double %320, %327
  br i1 %328, label %329, label %333

329:                                              ; preds = %325
  %330 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %331 = fcmp olt double %320, %330
  br i1 %331, label %332, label %333

332:                                              ; preds = %329
  br label %333

333:                                              ; preds = %332, %329, %325
  %.0791 = phi double [ 0.000000e+00, %332 ], [ %320, %329 ], [ %320, %325 ]
  store double %.0791, ptr %310, align 8, !tbaa !5
  %334 = add i64 %.0790, %38
  %.not935 = icmp eq i64 %39, %334
  br i1 %.not935, label %.loopexit1041, label %309, !llvm.loop !18

.loopexit1041:                                    ; preds = %333, %271
  %.not936 = icmp eq i64 %3, 0
  br i1 %.not936, label %.critedge963.thread, label %335

335:                                              ; preds = %.loopexit1041
  %336 = uitofp i64 %3 to double
  %337 = fdiv double 5.000000e-01, %336
  %338 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %339 = fcmp ugt double %338, %337
  br i1 %339, label %340, label %341

340:                                              ; preds = %335
  tail call void @LogAssertFailure(i64 noundef 507, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.51)
  tail call void @__assert_fail(ptr noundef nonnull @.str.52, ptr noundef nonnull @.str, i32 noundef 507, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

341:                                              ; preds = %335
  %342 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %min.iters.check = icmp ult i64 %3, 4
  %n.vec = and i64 %3, -4
  %ind.end = and i64 %3, 3
  %cmp.n = icmp eq i64 %n.vec, %3
  br label %343

343:                                              ; preds = %705, %341
  %.0780 = phi double [ %342, %341 ], [ %.6786, %705 ]
  %344 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.0780)
  br i1 %344, label %345, label %347

345:                                              ; preds = %343
  %346 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  br label %347

347:                                              ; preds = %343, %345
  %348 = phi double [ %346, %345 ], [ %.0780, %343 ]
  br i1 %29, label %.loopexit1039.preheader, label %.preheader1040.preheader

.preheader1040.preheader:                         ; preds = %347
  br i1 %min.iters.check, label %.preheader1040.preheader1308, label %vector.body

vector.body:                                      ; preds = %.preheader1040.preheader, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.preheader1040.preheader ]
  %offset.idx = sub i64 %3, %index
  %349 = add i64 %offset.idx, -1
  %350 = add i64 %offset.idx, -2
  %351 = insertelement <2 x i64> poison, i64 %350, i64 0
  %reverse = insertelement <2 x i64> %351, i64 %349, i64 1
  %352 = insertelement <2 x i64> poison, i64 %offset.idx, i64 0
  %353 = shufflevector <2 x i64> %352, <2 x i64> poison, <2 x i32> zeroinitializer
  %354 = add <2 x i64> %353, <i64 -4, i64 -3>
  %355 = getelementptr inbounds i64, ptr %5, i64 %349
  %356 = getelementptr inbounds i8, ptr %355, i64 -8
  %357 = getelementptr inbounds i8, ptr %355, i64 -24
  store <2 x i64> %reverse, ptr %356, align 8, !tbaa !19
  store <2 x i64> %354, ptr %357, align 8, !tbaa !19
  %index.next = add nuw i64 %index, 4
  %358 = icmp eq i64 %index.next, %n.vec
  br i1 %358, label %middle.block, label %vector.body, !llvm.loop !21

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %.preheader1038.preheader, label %.preheader1040.preheader1308

.preheader1040.preheader1308:                     ; preds = %middle.block, %.preheader1040.preheader
  %.0775.ph = phi i64 [ %3, %.preheader1040.preheader ], [ %ind.end, %middle.block ]
  br label %.preheader1040

.preheader1040:                                   ; preds = %.preheader1040.preheader1308, %.preheader1040
  %.0775 = phi i64 [ %359, %.preheader1040 ], [ %.0775.ph, %.preheader1040.preheader1308 ]
  %359 = add i64 %.0775, -1
  %360 = getelementptr inbounds i64, ptr %5, i64 %359
  store i64 %359, ptr %360, align 8, !tbaa !19
  %.not938 = icmp eq i64 %359, 0
  br i1 %.not938, label %.preheader1038.preheader, label %.preheader1040, !llvm.loop !24

.preheader1038.preheader:                         ; preds = %.preheader1040, %middle.block
  br label %.preheader1038

.preheader1038:                                   ; preds = %.preheader1038.preheader, %.preheader1038
  %.1776 = phi i64 [ %364, %.preheader1038 ], [ %3, %.preheader1038.preheader ]
  %361 = tail call noundef i64 @_ZN14NAMESPACE_MAIN19RandomDeterministic8NextFastImEENSt9enable_ifIXaasr3std11is_unsignedIT_EE5valueltclL_ZNSt14numeric_limitsIjE3maxEvEEclsr3std14numeric_limitsIS3_EE3maxEES3_E4typeES3_(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %.1776)
  %362 = getelementptr inbounds i64, ptr %5, i64 %361
  %363 = load i64, ptr %362, align 8, !tbaa !19
  %364 = add i64 %.1776, -1
  %365 = getelementptr inbounds i64, ptr %5, i64 %364
  %366 = load i64, ptr %365, align 8, !tbaa !19
  store i64 %366, ptr %362, align 8, !tbaa !19
  store i64 %363, ptr %365, align 8, !tbaa !19
  %.not939 = icmp eq i64 %364, 0
  br i1 %.not939, label %.loopexit1039.preheader, label %.preheader1038, !llvm.loop !25

.loopexit1039.preheader:                          ; preds = %.preheader1038, %347
  br label %.loopexit1039

.loopexit1039:                                    ; preds = %.loopexit1039.preheader, %.loopexit
  %.1781 = phi double [ %.6786, %.loopexit ], [ 0.000000e+00, %.loopexit1039.preheader ]
  %.0777 = phi i1 [ %.2779, %.loopexit ], [ false, %.loopexit1039.preheader ]
  %.0772 = phi i64 [ %704, %.loopexit ], [ 0, %.loopexit1039.preheader ]
  br i1 %29, label %370, label %367

367:                                              ; preds = %.loopexit1039
  %368 = getelementptr inbounds i64, ptr %5, i64 %.0772
  %369 = load i64, ptr %368, align 8, !tbaa !19
  br label %370

370:                                              ; preds = %367, %.loopexit1039
  %.0771 = phi i64 [ %369, %367 ], [ %.0772, %.loopexit1039 ]
  %371 = load i64, ptr %6, align 8, !tbaa !19
  %.not9401105 = icmp eq i64 %371, 0
  br i1 %.not9401105, label %._crit_edge, label %.lr.ph1109

._crit_edge:                                      ; preds = %370, %379
  tail call void @LogAssertFailure(i64 noundef 556, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.53)
  tail call void @__assert_fail(ptr noundef nonnull @.str.54, ptr noundef nonnull @.str, i32 noundef 556, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

.lr.ph1109:                                       ; preds = %370, %379
  %372 = phi i64 [ %383, %379 ], [ %371, %370 ]
  %.07621108 = phi ptr [ %382, %379 ], [ %6, %370 ]
  %.07641107 = phi i64 [ %380, %379 ], [ %.0771, %370 ]
  %.07691106 = phi i64 [ %381, %379 ], [ 8, %370 ]
  %373 = urem i64 %2, %372
  %374 = udiv i64 %2, %372
  %375 = icmp eq i64 %373, 0
  br i1 %375, label %377, label %376

376:                                              ; preds = %.lr.ph1109
  tail call void @LogAssertFailure(i64 noundef 557, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.55)
  tail call void @__assert_fail(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str, i32 noundef 557, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

377:                                              ; preds = %.lr.ph1109
  %378 = icmp ult i64 %.07641107, %374
  br i1 %378, label %384, label %379

379:                                              ; preds = %377
  %380 = sub i64 %.07641107, %374
  %381 = mul i64 %372, %.07691106
  %382 = getelementptr inbounds i8, ptr %.07621108, i64 8
  %383 = load i64, ptr %382, align 8, !tbaa !19
  %.not940 = icmp eq i64 %383, 0
  br i1 %.not940, label %._crit_edge, label %.lr.ph1109

384:                                              ; preds = %377
  %385 = mul i64 %.07691106, %1
  %.not941 = icmp eq i64 %372, 1
  %.not942 = icmp eq i64 %372, %2
  %or.cond964 = or i1 %.not941, %.not942
  br i1 %or.cond964, label %.loopexit, label %.preheader1037

.preheader1037:                                   ; preds = %384
  %.not9431111 = icmp eq i64 %.07641107, 0
  br i1 %.not9431111, label %._crit_edge1117, label %.lr.ph1116

.lr.ph1116:                                       ; preds = %.preheader1037, %394
  %.07561115 = phi ptr [ %396, %394 ], [ %6, %.preheader1037 ]
  %.07571114 = phi i64 [ %395, %394 ], [ 8, %.preheader1037 ]
  %.07581113 = phi i64 [ %.1759, %394 ], [ 0, %.preheader1037 ]
  %.27661112 = phi i64 [ %.3767, %394 ], [ %.07641107, %.preheader1037 ]
  %386 = load i64, ptr %.07561115, align 8, !tbaa !19
  %.not959 = icmp eq i64 %386, 0
  br i1 %.not959, label %387, label %388

387:                                              ; preds = %.lr.ph1116
  tail call void @LogAssertFailure(i64 noundef 586, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.57)
  tail call void @__assert_fail(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str, i32 noundef 586, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

388:                                              ; preds = %.lr.ph1116
  %.not960 = icmp eq ptr %.07561115, %.07621108
  br i1 %.not960, label %394, label %389

389:                                              ; preds = %388
  %390 = urem i64 %.27661112, %386
  %391 = udiv i64 %.27661112, %386
  %392 = mul i64 %390, %.07571114
  %393 = add i64 %392, %.07581113
  br label %394

394:                                              ; preds = %389, %388
  %.3767 = phi i64 [ %391, %389 ], [ %.27661112, %388 ]
  %.1759 = phi i64 [ %393, %389 ], [ %.07581113, %388 ]
  %395 = mul i64 %386, %.07571114
  %396 = getelementptr inbounds i8, ptr %.07561115, i64 8
  %.not943 = icmp eq i64 %.3767, 0
  br i1 %.not943, label %._crit_edge1117, label %.lr.ph1116, !llvm.loop !26

._crit_edge1117:                                  ; preds = %394, %.preheader1037
  %.0758.lcssa = phi i64 [ 0, %.preheader1037 ], [ %.1759, %394 ]
  %397 = mul i64 %.0758.lcssa, %1
  %398 = mul i64 %372, %385
  %399 = add i64 %397, %398
  br label %400

400:                                              ; preds = %493, %._crit_edge1117
  %.0733 = phi double [ 0.000000e+00, %._crit_edge1117 ], [ %.6739, %493 ]
  %.0726 = phi double [ 0.000000e+00, %._crit_edge1117 ], [ %.1727, %493 ]
  %.0723 = phi i64 [ %.0758.lcssa, %._crit_edge1117 ], [ %494, %493 ]
  %.0720 = phi i64 [ %397, %._crit_edge1117 ], [ %495, %493 ]
  %401 = tail call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPKT_S3_m(ptr noundef nonnull %7, i64 noundef %.0723) #7
  %402 = load double, ptr %401, align 8, !tbaa !5
  %403 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %402)
  %404 = fcmp ult double %402, 0.000000e+00
  %or.cond7.not = or i1 %404, %403
  br i1 %or.cond7.not, label %405, label %406

405:                                              ; preds = %400
  tail call void @LogAssertFailure(i64 noundef 605, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.59)
  tail call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str, i32 noundef 605, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

406:                                              ; preds = %400
  %407 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %408 = fcmp oeq double %407, %402
  br i1 %408, label %.preheader1034, label %456

409:                                              ; preds = %454
  %410 = fmul double %.1749, 5.000000e-01
  %411 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %412 = fcmp ugt double %411, %410
  br i1 %412, label %413, label %.preheader1034

413:                                              ; preds = %409
  tail call void @LogAssertFailure(i64 noundef 612, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.61)
  tail call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str, i32 noundef 612, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

.preheader1034:                                   ; preds = %406, %409
  %.1749 = phi double [ %410, %409 ], [ 1.000000e+00, %406 ]
  br label %414

414:                                              ; preds = %451, %.preheader1034
  %.1734 = phi double [ 0.000000e+00, %.preheader1034 ], [ %.4737, %451 ]
  %.0716 = phi i64 [ 0, %.preheader1034 ], [ %.2718, %451 ]
  %.0715 = phi i64 [ %.0723, %.preheader1034 ], [ %452, %451 ]
  %.0714 = phi i64 [ %.0720, %.preheader1034 ], [ %453, %451 ]
  %415 = tail call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPKT_S3_m(ptr noundef nonnull %7, i64 noundef %.0715) #7
  %416 = load double, ptr %415, align 8, !tbaa !5
  %417 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %416)
  %418 = fcmp ult double %416, 0.000000e+00
  %or.cond10.not = or i1 %418, %417
  br i1 %or.cond10.not, label %419, label %420

419:                                              ; preds = %414
  tail call void @LogAssertFailure(i64 noundef 620, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.63)
  tail call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str, i32 noundef 620, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

420:                                              ; preds = %414
  %421 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %422 = fcmp oeq double %421, %416
  br i1 %422, label %423, label %451

423:                                              ; preds = %420
  %424 = tail call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef nonnull %8, i64 noundef %.0714) #7
  %425 = load double, ptr %424, align 8, !tbaa !5
  %426 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %425)
  br i1 %426, label %451, label %427

427:                                              ; preds = %423
  %428 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %425)
  br i1 %428, label %451, label %429

429:                                              ; preds = %427
  %430 = add i64 %.0716, 1
  %431 = fmul double %.1749, %425
  %432 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %433 = fneg double %432
  %434 = fcmp ogt double %431, %433
  br i1 %434, label %435, label %439

435:                                              ; preds = %429
  %436 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %437 = fcmp olt double %431, %436
  br i1 %437, label %438, label %439

438:                                              ; preds = %435
  br label %439

439:                                              ; preds = %438, %435, %429
  %.0709 = phi double [ 0.000000e+00, %438 ], [ %431, %435 ], [ %431, %429 ]
  %440 = fadd double %.1734, %.0709
  %441 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %442 = fneg double %441
  %443 = fcmp ogt double %440, %442
  br i1 %443, label %444, label %448

444:                                              ; preds = %439
  %445 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %446 = fcmp olt double %440, %445
  br i1 %446, label %447, label %448

447:                                              ; preds = %444
  br label %448

448:                                              ; preds = %447, %444, %439
  %.2735 = phi double [ 0.000000e+00, %447 ], [ %440, %444 ], [ %440, %439 ]
  %449 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.2735)
  br i1 %449, label %450, label %451

450:                                              ; preds = %448
  tail call void @LogAssertFailure(i64 noundef 640, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.65)
  tail call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str, i32 noundef 640, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

451:                                              ; preds = %423, %427, %448, %420
  %.4737 = phi double [ %.1734, %420 ], [ %.1734, %423 ], [ %.1734, %427 ], [ %.2735, %448 ]
  %.2718 = phi i64 [ %.0716, %420 ], [ %.0716, %423 ], [ %.0716, %427 ], [ %430, %448 ]
  %452 = add i64 %.0715, %.07691106
  %453 = add i64 %.0714, %385
  %.not946 = icmp eq i64 %399, %453
  br i1 %.not946, label %454, label %414, !llvm.loop !27

454:                                              ; preds = %451
  %455 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %.4737)
  br i1 %455, label %409, label %491, !llvm.loop !28

456:                                              ; preds = %406
  %457 = tail call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef nonnull %8, i64 noundef %.0720) #7
  %458 = load double, ptr %457, align 8, !tbaa !5
  %459 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %458)
  br i1 %459, label %493, label %460

460:                                              ; preds = %456
  %461 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %458)
  br i1 %461, label %493, label %462

462:                                              ; preds = %460
  %463 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %464 = fcmp olt double %402, %463
  %.0719 = select i1 %464, double 0.000000e+00, double %402
  %465 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %466 = fneg double %465
  %467 = fcmp ogt double %458, %466
  br i1 %467, label %468, label %472

468:                                              ; preds = %462
  %469 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %470 = fcmp olt double %458, %469
  br i1 %470, label %471, label %472

471:                                              ; preds = %468
  br label %472

472:                                              ; preds = %471, %468, %462
  %.0708 = phi double [ 0.000000e+00, %471 ], [ %458, %468 ], [ %458, %462 ]
  %473 = fadd double %.0726, %.0719
  %474 = fmul double %.0719, %.0708
  %475 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %476 = fneg double %475
  %477 = fcmp ogt double %474, %476
  br i1 %477, label %478, label %482

478:                                              ; preds = %472
  %479 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %480 = fcmp olt double %474, %479
  br i1 %480, label %481, label %482

481:                                              ; preds = %478
  br label %482

482:                                              ; preds = %481, %478, %472
  %.0707 = phi double [ 0.000000e+00, %481 ], [ %474, %478 ], [ %474, %472 ]
  %483 = fadd double %.0733, %.0707
  %484 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %485 = fneg double %484
  %486 = fcmp ogt double %483, %485
  br i1 %486, label %487, label %493

487:                                              ; preds = %482
  %488 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %489 = fcmp olt double %483, %488
  br i1 %489, label %490, label %493

490:                                              ; preds = %487
  br label %493

491:                                              ; preds = %454
  %492 = uitofp i64 %.2718 to double
  br label %.loopexit1036

493:                                              ; preds = %456, %460, %490, %487, %482
  %.6739 = phi double [ %.0733, %456 ], [ %.0733, %460 ], [ 0.000000e+00, %490 ], [ %483, %487 ], [ %483, %482 ]
  %.1727 = phi double [ %.0726, %456 ], [ %.0726, %460 ], [ %473, %490 ], [ %473, %487 ], [ %473, %482 ]
  %494 = add i64 %.0723, %.07691106
  %495 = add i64 %.0720, %385
  %.not947 = icmp eq i64 %399, %495
  br i1 %.not947, label %.preheader1035, label %400, !llvm.loop !29

.preheader1035:                                   ; preds = %493, %553
  %.3751 = phi double [ %501, %553 ], [ 1.000000e+00, %493 ]
  %.8741 = phi double [ %.11744, %553 ], [ %.6739, %493 ]
  %.3729 = phi double [ %.5731, %553 ], [ %.1727, %493 ]
  %496 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.8741)
  br i1 %496, label %.critedge12, label %497

497:                                              ; preds = %.preheader1035
  %498 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %.8741)
  br i1 %498, label %.critedge12, label %499

499:                                              ; preds = %497
  %500 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %.3729)
  br i1 %500, label %.critedge12, label %.loopexit1036

.critedge12:                                      ; preds = %497, %.preheader1035, %499
  %501 = fmul double %.3751, 5.000000e-01
  %502 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %503 = fcmp ugt double %502, %501
  br i1 %503, label %504, label %.preheader1033

504:                                              ; preds = %.critedge12
  tail call void @LogAssertFailure(i64 noundef 688, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.61)
  tail call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str, i32 noundef 688, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

.preheader1033:                                   ; preds = %.critedge12, %550
  %.9742 = phi double [ %.11744, %550 ], [ 0.000000e+00, %.critedge12 ]
  %.4730 = phi double [ %.5731, %550 ], [ 0.000000e+00, %.critedge12 ]
  %.2725 = phi i64 [ %551, %550 ], [ %.0758.lcssa, %.critedge12 ]
  %.2722 = phi i64 [ %552, %550 ], [ %397, %.critedge12 ]
  %505 = tail call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPKT_S3_m(ptr noundef nonnull %7, i64 noundef %.2725) #7
  %506 = load double, ptr %505, align 8, !tbaa !5
  %507 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %506)
  %508 = fcmp ult double %506, 0.000000e+00
  %or.cond15.not = or i1 %508, %507
  br i1 %or.cond15.not, label %512, label %509

509:                                              ; preds = %.preheader1033
  %510 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %511 = fcmp une double %506, %510
  br i1 %511, label %513, label %512

512:                                              ; preds = %509, %.preheader1033
  tail call void @LogAssertFailure(i64 noundef 696, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.43)
  tail call void @__assert_fail(ptr noundef nonnull @.str.44, ptr noundef nonnull @.str, i32 noundef 696, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

513:                                              ; preds = %509
  %514 = tail call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef nonnull %8, i64 noundef %.2722) #7
  %515 = load double, ptr %514, align 8, !tbaa !5
  %516 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %515)
  br i1 %516, label %550, label %517

517:                                              ; preds = %513
  %518 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %515)
  br i1 %518, label %550, label %519

519:                                              ; preds = %517
  %520 = fmul double %501, %506
  %521 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %522 = fcmp olt double %520, %521
  %.0695 = select i1 %522, double 0.000000e+00, double %520
  %523 = fadd double %.4730, %.0695
  %524 = fmul double %501, %515
  %525 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %526 = fneg double %525
  %527 = fcmp ogt double %524, %526
  br i1 %527, label %528, label %532

528:                                              ; preds = %519
  %529 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %530 = fcmp olt double %524, %529
  br i1 %530, label %531, label %532

531:                                              ; preds = %528
  br label %532

532:                                              ; preds = %531, %528, %519
  %.0694 = phi double [ 0.000000e+00, %531 ], [ %524, %528 ], [ %524, %519 ]
  %533 = fmul double %.0695, %.0694
  %534 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %535 = fneg double %534
  %536 = fcmp ogt double %533, %535
  br i1 %536, label %537, label %541

537:                                              ; preds = %532
  %538 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %539 = fcmp olt double %533, %538
  br i1 %539, label %540, label %541

540:                                              ; preds = %537
  br label %541

541:                                              ; preds = %540, %537, %532
  %.0693 = phi double [ 0.000000e+00, %540 ], [ %533, %537 ], [ %533, %532 ]
  %542 = fadd double %.9742, %.0693
  %543 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %544 = fneg double %543
  %545 = fcmp ogt double %542, %544
  br i1 %545, label %546, label %550

546:                                              ; preds = %541
  %547 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %548 = fcmp olt double %542, %547
  br i1 %548, label %549, label %550

549:                                              ; preds = %546
  br label %550

550:                                              ; preds = %541, %546, %549, %517, %513
  %.11744 = phi double [ %.9742, %513 ], [ %.9742, %517 ], [ 0.000000e+00, %549 ], [ %542, %546 ], [ %542, %541 ]
  %.5731 = phi double [ %.4730, %513 ], [ %.4730, %517 ], [ %523, %549 ], [ %523, %546 ], [ %523, %541 ]
  %551 = add i64 %.2725, %.07691106
  %552 = add i64 %.2722, %385
  %.not958 = icmp eq i64 %399, %552
  br i1 %.not958, label %553, label %.preheader1033, !llvm.loop !30

553:                                              ; preds = %550
  br label %.preheader1035, !llvm.loop !31

.loopexit1036:                                    ; preds = %499, %491
  %.4752 = phi double [ %.1749, %491 ], [ %.3751, %499 ]
  %.12745 = phi double [ %.4737, %491 ], [ %.8741, %499 ]
  %.6732 = phi double [ %492, %491 ], [ %.3729, %499 ]
  %554 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %555 = fcmp ugt double %554, %.6732
  br i1 %555, label %.loopexit, label %556

556:                                              ; preds = %.loopexit1036
  %557 = fdiv double %.12745, %.6732
  %558 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %559 = fneg double %558
  %560 = fcmp ogt double %557, %559
  br i1 %560, label %561, label %565

561:                                              ; preds = %556
  %562 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %563 = fcmp olt double %557, %562
  br i1 %563, label %564, label %565

564:                                              ; preds = %561
  br label %565

565:                                              ; preds = %564, %561, %556
  %.13746 = phi double [ 0.000000e+00, %564 ], [ %557, %561 ], [ %557, %556 ]
  %566 = fdiv double %.13746, %.4752
  %567 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %568 = fneg double %567
  %569 = fcmp ogt double %566, %568
  br i1 %569, label %570, label %574

570:                                              ; preds = %565
  %571 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %572 = fcmp olt double %566, %571
  br i1 %572, label %573, label %574

573:                                              ; preds = %570
  br label %574

574:                                              ; preds = %573, %570, %565
  %.14 = phi double [ 0.000000e+00, %573 ], [ %566, %570 ], [ %566, %565 ]
  %575 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.14)
  br i1 %575, label %576, label %577

576:                                              ; preds = %574
  tail call void @LogAssertFailure(i64 noundef 744, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.65)
  tail call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str, i32 noundef 744, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

577:                                              ; preds = %574
  %578 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %.14)
  br i1 %578, label %579, label %592

579:                                              ; preds = %577
  %580 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %581 = fcmp oeq double %580, %.14
  br i1 %581, label %582, label %584

582:                                              ; preds = %579
  %583 = tail call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #7
  br label %592

584:                                              ; preds = %579
  %585 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %586 = fneg double %585
  %587 = fcmp oeq double %.14, %586
  br i1 %587, label %589, label %588

588:                                              ; preds = %584
  tail call void @LogAssertFailure(i64 noundef 755, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.67)
  tail call void @__assert_fail(ptr noundef nonnull @.str.68, ptr noundef nonnull @.str, i32 noundef 755, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

589:                                              ; preds = %584
  %590 = tail call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #7
  %591 = fneg double %590
  br label %592

592:                                              ; preds = %582, %589, %577
  %.15 = phi double [ %583, %582 ], [ %591, %589 ], [ %.14, %577 ]
  br i1 %.not931, label %593, label %662

593:                                              ; preds = %592
  %594 = mul i64 %.0771, %38
  %595 = tail call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef nonnull %9, i64 noundef %594) #7
  %596 = load double, ptr %595, align 8, !tbaa !5
  %597 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %596)
  br i1 %597, label %598, label %599

598:                                              ; preds = %593
  tail call void @LogAssertFailure(i64 noundef 764, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.69)
  tail call void @__assert_fail(ptr noundef nonnull @.str.70, ptr noundef nonnull @.str, i32 noundef 764, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

599:                                              ; preds = %593
  %600 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %596)
  br i1 %600, label %601, label %602

601:                                              ; preds = %599
  tail call void @LogAssertFailure(i64 noundef 765, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.71)
  tail call void @__assert_fail(ptr noundef nonnull @.str.72, ptr noundef nonnull @.str, i32 noundef 765, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

602:                                              ; preds = %599
  %603 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %604 = fneg double %603
  %605 = fcmp ogt double %596, %604
  br i1 %605, label %606, label %610

606:                                              ; preds = %602
  %607 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %608 = fcmp olt double %596, %607
  br i1 %608, label %609, label %610

609:                                              ; preds = %606
  br label %610

610:                                              ; preds = %609, %606, %602
  %.0691 = phi double [ 0.000000e+00, %609 ], [ %596, %606 ], [ %596, %602 ]
  %611 = fadd double %.15, %.0691
  %612 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %613 = fneg double %612
  %614 = fcmp ogt double %611, %613
  br i1 %614, label %615, label %619

615:                                              ; preds = %610
  %616 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %617 = fcmp olt double %611, %616
  br i1 %617, label %618, label %619

618:                                              ; preds = %615
  br label %619

619:                                              ; preds = %618, %615, %610
  %.0689 = phi double [ 0.000000e+00, %618 ], [ %611, %615 ], [ %611, %610 ]
  %620 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %.0689)
  br i1 %620, label %621, label %661

621:                                              ; preds = %619
  %622 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %623 = fcmp oeq double %622, %.0689
  br i1 %623, label %624, label %638

624:                                              ; preds = %621
  %625 = fcmp ogt double %.0691, 0.000000e+00
  br i1 %625, label %627, label %626

626:                                              ; preds = %624
  tail call void @LogAssertFailure(i64 noundef 785, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.73)
  tail call void @__assert_fail(ptr noundef nonnull @.str.74, ptr noundef nonnull @.str, i32 noundef 785, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

627:                                              ; preds = %624
  %628 = tail call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #7
  %629 = fsub double %628, %.0691
  %630 = tail call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #7
  %631 = fcmp oeq double %630, %.0691
  br i1 %631, label %636, label %632

632:                                              ; preds = %627
  %633 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %634 = fcmp ugt double %633, %629
  br i1 %634, label %635, label %636

635:                                              ; preds = %632
  tail call void @LogAssertFailure(i64 noundef 788, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.75)
  tail call void @__assert_fail(ptr noundef nonnull @.str.76, ptr noundef nonnull @.str, i32 noundef 788, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

636:                                              ; preds = %632, %627
  %637 = tail call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #7
  br label %661

638:                                              ; preds = %621
  %639 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %640 = fneg double %639
  %641 = fcmp oeq double %.0689, %640
  br i1 %641, label %643, label %642

642:                                              ; preds = %638
  tail call void @LogAssertFailure(i64 noundef 791, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.77)
  tail call void @__assert_fail(ptr noundef nonnull @.str.78, ptr noundef nonnull @.str, i32 noundef 791, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

643:                                              ; preds = %638
  %644 = fcmp olt double %.0691, 0.000000e+00
  br i1 %644, label %646, label %645

645:                                              ; preds = %643
  tail call void @LogAssertFailure(i64 noundef 792, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.79)
  tail call void @__assert_fail(ptr noundef nonnull @.str.80, ptr noundef nonnull @.str, i32 noundef 792, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

646:                                              ; preds = %643
  %647 = tail call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #7
  %648 = fneg double %647
  %649 = fsub double %648, %.0691
  %650 = tail call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #7
  %651 = fneg double %650
  %652 = fcmp oeq double %.0691, %651
  br i1 %652, label %658, label %653

653:                                              ; preds = %646
  %654 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %655 = fneg double %654
  %656 = fcmp ugt double %649, %655
  br i1 %656, label %657, label %658

657:                                              ; preds = %653
  tail call void @LogAssertFailure(i64 noundef 795, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.81)
  tail call void @__assert_fail(ptr noundef nonnull @.str.82, ptr noundef nonnull @.str, i32 noundef 795, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

658:                                              ; preds = %653, %646
  %659 = tail call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #7
  %660 = fneg double %659
  br label %661

661:                                              ; preds = %636, %658, %619
  %.16 = phi double [ %629, %636 ], [ %649, %658 ], [ %.15, %619 ]
  %.1690 = phi double [ %637, %636 ], [ %660, %658 ], [ %.0689, %619 ]
  store double %.1690, ptr %595, align 8, !tbaa !5
  br label %662

662:                                              ; preds = %661, %592
  %.17 = phi double [ %.16, %661 ], [ %.15, %592 ]
  %663 = tail call noundef double @_ZSt3absd(double noundef %.17)
  %664 = fcmp oeq double %663, 0.000000e+00
  br i1 %664, label %669, label %665

665:                                              ; preds = %662
  %666 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %667 = fcmp ugt double %666, %663
  br i1 %667, label %668, label %669

668:                                              ; preds = %665
  tail call void @LogAssertFailure(i64 noundef 803, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.83)
  tail call void @__assert_fail(ptr noundef nonnull @.str.84, ptr noundef nonnull @.str, i32 noundef 803, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

669:                                              ; preds = %665, %662
  %670 = fcmp olt double %.7, %663
  %671 = fmul double %337, %663
  %672 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %673 = fcmp olt double %671, %672
  %.0686 = select i1 %673, double 0.000000e+00, double %671
  %674 = fadd double %.1781, %.0686
  br label %675

675:                                              ; preds = %701, %669
  %.2782 = phi double [ %674, %669 ], [ %.4784, %701 ]
  %.0685 = phi i64 [ %397, %669 ], [ %702, %701 ]
  %676 = tail call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef nonnull %8, i64 noundef %.0685) #7
  %677 = load double, ptr %676, align 8, !tbaa !5
  %678 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %677)
  br i1 %678, label %701, label %679

679:                                              ; preds = %675
  %680 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %681 = fneg double %680
  %682 = fcmp ogt double %677, %681
  br i1 %682, label %683, label %687

683:                                              ; preds = %679
  %684 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %685 = fcmp olt double %677, %684
  br i1 %685, label %686, label %687

686:                                              ; preds = %683
  br label %687

687:                                              ; preds = %686, %683, %679
  %.0681 = phi double [ 0.000000e+00, %686 ], [ %677, %683 ], [ %677, %679 ]
  %688 = fsub double %.0681, %.17
  %689 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %688)
  br i1 %689, label %690, label %692

690:                                              ; preds = %687
  %691 = tail call noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #7
  br label %700

692:                                              ; preds = %687
  %693 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %694 = fneg double %693
  %695 = fcmp ogt double %688, %694
  br i1 %695, label %696, label %700

696:                                              ; preds = %692
  %697 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %698 = fcmp olt double %688, %697
  br i1 %698, label %699, label %700

699:                                              ; preds = %696
  br label %700

700:                                              ; preds = %692, %696, %699, %690
  %.3783 = phi double [ %691, %690 ], [ %.2782, %699 ], [ %.2782, %696 ], [ %.2782, %692 ]
  %.1682 = phi double [ %688, %690 ], [ 0.000000e+00, %699 ], [ %688, %696 ], [ %688, %692 ]
  store double %.1682, ptr %676, align 8, !tbaa !5
  br label %701

701:                                              ; preds = %700, %675
  %.4784 = phi double [ %.2782, %675 ], [ %.3783, %700 ]
  %702 = add i64 %.0685, %385
  %.not948 = icmp eq i64 %399, %702
  br i1 %.not948, label %.loopexit.loopexit, label %675, !llvm.loop !32

.loopexit.loopexit:                               ; preds = %701
  %703 = or i1 %.0777, %670
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %.loopexit1036, %384
  %.6786 = phi double [ %.1781, %384 ], [ %.1781, %.loopexit1036 ], [ %.4784, %.loopexit.loopexit ]
  %.2779 = phi i1 [ %.0777, %384 ], [ %.0777, %.loopexit1036 ], [ %703, %.loopexit.loopexit ]
  %704 = add nuw i64 %.0772, 1
  %.not949 = icmp eq i64 %704, %3
  br i1 %.not949, label %705, label %.loopexit1039, !llvm.loop !33

705:                                              ; preds = %.loopexit
  %706 = fcmp ugt double %348, %.6786
  %707 = select i1 %.2779, i1 %706, i1 false
  br i1 %707, label %343, label %708, !llvm.loop !34

708:                                              ; preds = %705
  %709 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.6786)
  br i1 %709, label %710, label %711

710:                                              ; preds = %708
  tail call void @LogAssertFailure(i64 noundef 846, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.85)
  tail call void @__assert_fail(ptr noundef nonnull @.str.86, ptr noundef nonnull @.str, i32 noundef 846, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

711:                                              ; preds = %708
  br i1 %41, label %.critedge963.thread, label %.preheader1032

.preheader1032:                                   ; preds = %711, %802
  %.0674 = phi i64 [ %803, %802 ], [ 0, %711 ]
  %.0672 = phi ptr [ %804, %802 ], [ %7, %711 ]
  %.0659 = phi double [ %.6665, %802 ], [ 0.000000e+00, %711 ]
  %.0652 = phi double [ %.1653, %802 ], [ 0.000000e+00, %711 ]
  %712 = load double, ptr %.0672, align 8, !tbaa !5
  %713 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %712)
  %714 = fcmp ult double %712, 0.000000e+00
  %or.cond18.not = or i1 %714, %713
  br i1 %or.cond18.not, label %715, label %716

715:                                              ; preds = %.preheader1032
  tail call void @LogAssertFailure(i64 noundef 857, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.59)
  tail call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str, i32 noundef 857, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

716:                                              ; preds = %.preheader1032
  %717 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %718 = fcmp oeq double %717, %712
  br i1 %718, label %.preheader, label %765

719:                                              ; preds = %763
  %720 = fmul double %.1677, 5.000000e-01
  %721 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %722 = fcmp ugt double %721, %720
  br i1 %722, label %723, label %.preheader

723:                                              ; preds = %719
  tail call void @LogAssertFailure(i64 noundef 864, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.87)
  tail call void @__assert_fail(ptr noundef nonnull @.str.88, ptr noundef nonnull @.str, i32 noundef 864, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

.preheader:                                       ; preds = %716, %719
  %.1677 = phi double [ %720, %719 ], [ 1.000000e+00, %716 ]
  br label %724

724:                                              ; preds = %760, %.preheader
  %.1660 = phi double [ 0.000000e+00, %.preheader ], [ %.4663, %760 ]
  %.0648 = phi i64 [ 0, %.preheader ], [ %.2650, %760 ]
  %.0647 = phi i64 [ %.0674, %.preheader ], [ %761, %760 ]
  %.0646 = phi ptr [ %.0672, %.preheader ], [ %762, %760 ]
  %725 = load double, ptr %.0646, align 8, !tbaa !5
  %726 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %725)
  %727 = fcmp ult double %725, 0.000000e+00
  %or.cond21.not = or i1 %727, %726
  br i1 %or.cond21.not, label %728, label %729

728:                                              ; preds = %724
  tail call void @LogAssertFailure(i64 noundef 873, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.63)
  tail call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str, i32 noundef 873, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

729:                                              ; preds = %724
  %730 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %731 = fcmp oeq double %730, %725
  br i1 %731, label %732, label %760

732:                                              ; preds = %729
  %733 = tail call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef nonnull %8, i64 noundef %.0647) #7
  %734 = load double, ptr %733, align 8, !tbaa !5
  %735 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %734)
  br i1 %735, label %760, label %736

736:                                              ; preds = %732
  %737 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %734)
  br i1 %737, label %760, label %738

738:                                              ; preds = %736
  %739 = add i64 %.0648, 1
  %740 = fmul double %.1677, %734
  %741 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %742 = fneg double %741
  %743 = fcmp ogt double %740, %742
  br i1 %743, label %744, label %748

744:                                              ; preds = %738
  %745 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %746 = fcmp olt double %740, %745
  br i1 %746, label %747, label %748

747:                                              ; preds = %744
  br label %748

748:                                              ; preds = %747, %744, %738
  %.0632 = phi double [ 0.000000e+00, %747 ], [ %740, %744 ], [ %740, %738 ]
  %749 = fadd double %.1660, %.0632
  %750 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %751 = fneg double %750
  %752 = fcmp ogt double %749, %751
  br i1 %752, label %753, label %757

753:                                              ; preds = %748
  %754 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %755 = fcmp olt double %749, %754
  br i1 %755, label %756, label %757

756:                                              ; preds = %753
  br label %757

757:                                              ; preds = %756, %753, %748
  %.2661 = phi double [ 0.000000e+00, %756 ], [ %749, %753 ], [ %749, %748 ]
  %758 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.2661)
  br i1 %758, label %759, label %760

759:                                              ; preds = %757
  tail call void @LogAssertFailure(i64 noundef 893, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.89)
  tail call void @__assert_fail(ptr noundef nonnull @.str.90, ptr noundef nonnull @.str, i32 noundef 893, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

760:                                              ; preds = %732, %736, %757, %729
  %.4663 = phi double [ %.1660, %729 ], [ %.1660, %732 ], [ %.1660, %736 ], [ %.2661, %757 ]
  %.2650 = phi i64 [ %.0648, %729 ], [ %.0648, %732 ], [ %.0648, %736 ], [ %739, %757 ]
  %761 = add i64 %.0647, %38
  %762 = getelementptr inbounds i8, ptr %.0646, i64 8
  %.not952 = icmp eq ptr %40, %762
  br i1 %.not952, label %763, label %724, !llvm.loop !35

763:                                              ; preds = %760
  %764 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %.4663)
  br i1 %764, label %719, label %800, !llvm.loop !36

765:                                              ; preds = %716
  %766 = tail call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef nonnull %8, i64 noundef %.0674) #7
  %767 = load double, ptr %766, align 8, !tbaa !5
  %768 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %767)
  br i1 %768, label %802, label %769

769:                                              ; preds = %765
  %770 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %767)
  br i1 %770, label %802, label %771

771:                                              ; preds = %769
  %772 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %773 = fcmp olt double %712, %772
  %.0651 = select i1 %773, double 0.000000e+00, double %712
  %774 = fadd double %.0652, %.0651
  %775 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %776 = fneg double %775
  %777 = fcmp ogt double %767, %776
  br i1 %777, label %778, label %782

778:                                              ; preds = %771
  %779 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %780 = fcmp olt double %767, %779
  br i1 %780, label %781, label %782

781:                                              ; preds = %778
  br label %782

782:                                              ; preds = %781, %778, %771
  %.0631 = phi double [ 0.000000e+00, %781 ], [ %767, %778 ], [ %767, %771 ]
  %783 = fmul double %.0651, %.0631
  %784 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %785 = fneg double %784
  %786 = fcmp ogt double %783, %785
  br i1 %786, label %787, label %791

787:                                              ; preds = %782
  %788 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %789 = fcmp olt double %783, %788
  br i1 %789, label %790, label %791

790:                                              ; preds = %787
  br label %791

791:                                              ; preds = %790, %787, %782
  %.0630 = phi double [ 0.000000e+00, %790 ], [ %783, %787 ], [ %783, %782 ]
  %792 = fadd double %.0659, %.0630
  %793 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %794 = fneg double %793
  %795 = fcmp ogt double %792, %794
  br i1 %795, label %796, label %802

796:                                              ; preds = %791
  %797 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %798 = fcmp olt double %792, %797
  br i1 %798, label %799, label %802

799:                                              ; preds = %796
  br label %802

800:                                              ; preds = %763
  %801 = uitofp i64 %.2650 to double
  br label %881

802:                                              ; preds = %765, %769, %799, %796, %791
  %.6665 = phi double [ %.0659, %765 ], [ %.0659, %769 ], [ 0.000000e+00, %799 ], [ %792, %796 ], [ %792, %791 ]
  %.1653 = phi double [ %.0652, %765 ], [ %.0652, %769 ], [ %774, %799 ], [ %774, %796 ], [ %774, %791 ]
  %803 = add i64 %.0674, %38
  %804 = getelementptr inbounds i8, ptr %.0672, i64 8
  %.not953 = icmp eq ptr %40, %804
  br i1 %.not953, label %805, label %.preheader1032, !llvm.loop !37

805:                                              ; preds = %802
  %806 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.1653)
  br i1 %806, label %807, label %808

807:                                              ; preds = %805
  tail call void @LogAssertFailure(i64 noundef 932, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.91)
  tail call void @__assert_fail(ptr noundef nonnull @.str.92, ptr noundef nonnull @.str, i32 noundef 932, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

808:                                              ; preds = %805
  %809 = fcmp oeq double %.1653, 0.000000e+00
  br i1 %809, label %.preheader1296, label %810

.preheader1296:                                   ; preds = %810, %808
  br label %814

810:                                              ; preds = %808
  %811 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %812 = fcmp ugt double %811, %.1653
  br i1 %812, label %813, label %.preheader1296

813:                                              ; preds = %810
  tail call void @LogAssertFailure(i64 noundef 933, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.93)
  tail call void @__assert_fail(ptr noundef nonnull @.str.94, ptr noundef nonnull @.str, i32 noundef 933, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

814:                                              ; preds = %.preheader1296, %871
  %.3679 = phi double [ %820, %871 ], [ 1.000000e+00, %.preheader1296 ]
  %.8667 = phi double [ %.11670, %871 ], [ %.6665, %.preheader1296 ]
  %.3655 = phi double [ %.5657, %871 ], [ %.1653, %.preheader1296 ]
  %815 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.8667)
  br i1 %815, label %.critedge23, label %816

816:                                              ; preds = %814
  %817 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %.8667)
  br i1 %817, label %.critedge23, label %818

818:                                              ; preds = %816
  %819 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %.3655)
  br i1 %819, label %.critedge23, label %872

.critedge23:                                      ; preds = %816, %814, %818
  %820 = fmul double %.3679, 5.000000e-01
  %821 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %822 = fcmp ugt double %821, %820
  br i1 %822, label %823, label %.preheader1031

823:                                              ; preds = %.critedge23
  tail call void @LogAssertFailure(i64 noundef 941, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.87)
  tail call void @__assert_fail(ptr noundef nonnull @.str.88, ptr noundef nonnull @.str, i32 noundef 941, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

.preheader1031:                                   ; preds = %.critedge23, %868
  %.9668 = phi double [ %.11670, %868 ], [ 0.000000e+00, %.critedge23 ]
  %.4656 = phi double [ %.5657, %868 ], [ 0.000000e+00, %.critedge23 ]
  %.0629 = phi i64 [ %869, %868 ], [ 0, %.critedge23 ]
  %.0628 = phi ptr [ %870, %868 ], [ %7, %.critedge23 ]
  %824 = load double, ptr %.0628, align 8, !tbaa !5
  %825 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %824)
  %826 = fcmp ult double %824, 0.000000e+00
  %or.cond26.not = or i1 %826, %825
  br i1 %or.cond26.not, label %830, label %827

827:                                              ; preds = %.preheader1031
  %828 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %829 = fcmp une double %824, %828
  br i1 %829, label %831, label %830

830:                                              ; preds = %827, %.preheader1031
  tail call void @LogAssertFailure(i64 noundef 949, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.43)
  tail call void @__assert_fail(ptr noundef nonnull @.str.44, ptr noundef nonnull @.str, i32 noundef 949, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

831:                                              ; preds = %827
  %832 = tail call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef nonnull %8, i64 noundef %.0629) #7
  %833 = load double, ptr %832, align 8, !tbaa !5
  %834 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %833)
  br i1 %834, label %868, label %835

835:                                              ; preds = %831
  %836 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %833)
  br i1 %836, label %868, label %837

837:                                              ; preds = %835
  %838 = fmul double %820, %824
  %839 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %840 = fcmp olt double %838, %839
  %.0613 = select i1 %840, double 0.000000e+00, double %838
  %841 = fadd double %.4656, %.0613
  %842 = fmul double %820, %833
  %843 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %844 = fneg double %843
  %845 = fcmp ogt double %842, %844
  br i1 %845, label %846, label %850

846:                                              ; preds = %837
  %847 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %848 = fcmp olt double %842, %847
  br i1 %848, label %849, label %850

849:                                              ; preds = %846
  br label %850

850:                                              ; preds = %849, %846, %837
  %.0612 = phi double [ 0.000000e+00, %849 ], [ %842, %846 ], [ %842, %837 ]
  %851 = fmul double %.0613, %.0612
  %852 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %853 = fneg double %852
  %854 = fcmp ogt double %851, %853
  br i1 %854, label %855, label %859

855:                                              ; preds = %850
  %856 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %857 = fcmp olt double %851, %856
  br i1 %857, label %858, label %859

858:                                              ; preds = %855
  br label %859

859:                                              ; preds = %858, %855, %850
  %.0611 = phi double [ 0.000000e+00, %858 ], [ %851, %855 ], [ %851, %850 ]
  %860 = fadd double %.9668, %.0611
  %861 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %862 = fneg double %861
  %863 = fcmp ogt double %860, %862
  br i1 %863, label %864, label %868

864:                                              ; preds = %859
  %865 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %866 = fcmp olt double %860, %865
  br i1 %866, label %867, label %868

867:                                              ; preds = %864
  br label %868

868:                                              ; preds = %859, %864, %867, %835, %831
  %.11670 = phi double [ %.9668, %831 ], [ %.9668, %835 ], [ 0.000000e+00, %867 ], [ %860, %864 ], [ %860, %859 ]
  %.5657 = phi double [ %.4656, %831 ], [ %.4656, %835 ], [ %841, %867 ], [ %841, %864 ], [ %841, %859 ]
  %869 = add i64 %.0629, %38
  %870 = getelementptr inbounds i8, ptr %.0628, i64 8
  %.not956 = icmp eq ptr %40, %870
  br i1 %.not956, label %871, label %.preheader1031, !llvm.loop !38

871:                                              ; preds = %868
  br label %814, !llvm.loop !39

872:                                              ; preds = %818
  %873 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.3655)
  br i1 %873, label %874, label %875

874:                                              ; preds = %872
  tail call void @LogAssertFailure(i64 noundef 980, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.91)
  tail call void @__assert_fail(ptr noundef nonnull @.str.92, ptr noundef nonnull @.str, i32 noundef 980, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

875:                                              ; preds = %872
  %876 = fcmp oeq double %.3655, 0.000000e+00
  br i1 %876, label %881, label %877

877:                                              ; preds = %875
  %878 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %879 = fcmp ugt double %878, %.3655
  br i1 %879, label %880, label %881

880:                                              ; preds = %877
  tail call void @LogAssertFailure(i64 noundef 981, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.93)
  tail call void @__assert_fail(ptr noundef nonnull @.str.94, ptr noundef nonnull @.str, i32 noundef 981, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

881:                                              ; preds = %800, %875, %877
  %.4680 = phi double [ %.1677, %800 ], [ %.3679, %875 ], [ %.3679, %877 ]
  %.12671 = phi double [ %.4663, %800 ], [ %.8667, %875 ], [ %.8667, %877 ]
  %.6658 = phi double [ %801, %800 ], [ %.3655, %875 ], [ %.3655, %877 ]
  %882 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %883 = fcmp ugt double %882, %.6658
  br i1 %883, label %.critedge963.thread, label %884

884:                                              ; preds = %881
  %885 = fdiv double %.12671, %.6658
  %886 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %887 = fneg double %886
  %888 = fcmp ogt double %885, %887
  br i1 %888, label %889, label %893

889:                                              ; preds = %884
  %890 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %891 = fcmp olt double %885, %890
  br i1 %891, label %892, label %893

892:                                              ; preds = %889
  br label %893

893:                                              ; preds = %892, %889, %884
  %.0608 = phi double [ 0.000000e+00, %892 ], [ %885, %889 ], [ %885, %884 ]
  %894 = fdiv double %.0608, %.4680
  %895 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %896 = fneg double %895
  %897 = fcmp ogt double %894, %896
  br i1 %897, label %898, label %902

898:                                              ; preds = %893
  %899 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %900 = fcmp olt double %894, %899
  br i1 %900, label %901, label %902

901:                                              ; preds = %898
  br label %902

902:                                              ; preds = %901, %898, %893
  %.1609 = phi double [ 0.000000e+00, %901 ], [ %894, %898 ], [ %894, %893 ]
  %903 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.1609)
  br i1 %903, label %904, label %905

904:                                              ; preds = %902
  tail call void @LogAssertFailure(i64 noundef 999, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.95)
  tail call void @__assert_fail(ptr noundef nonnull @.str.96, ptr noundef nonnull @.str, i32 noundef 999, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

905:                                              ; preds = %902
  %906 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %.1609)
  br i1 %906, label %907, label %920

907:                                              ; preds = %905
  %908 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %909 = fcmp oeq double %908, %.1609
  br i1 %909, label %910, label %912

910:                                              ; preds = %907
  %911 = tail call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #7
  br label %920

912:                                              ; preds = %907
  %913 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %914 = fneg double %913
  %915 = fcmp oeq double %.1609, %914
  br i1 %915, label %917, label %916

916:                                              ; preds = %912
  tail call void @LogAssertFailure(i64 noundef 1010, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.97)
  tail call void @__assert_fail(ptr noundef nonnull @.str.98, ptr noundef nonnull @.str, i32 noundef 1010, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

917:                                              ; preds = %912
  %918 = tail call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #7
  %919 = fneg double %918
  br label %920

920:                                              ; preds = %910, %917, %905
  %.2610 = phi double [ %911, %910 ], [ %919, %917 ], [ %.1609, %905 ]
  %921 = load double, ptr %10, align 8, !tbaa !5
  %922 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %921)
  br i1 %922, label %923, label %924

923:                                              ; preds = %920
  tail call void @LogAssertFailure(i64 noundef 1016, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.99)
  tail call void @__assert_fail(ptr noundef nonnull @.str.100, ptr noundef nonnull @.str, i32 noundef 1016, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

924:                                              ; preds = %920
  %925 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %921)
  br i1 %925, label %926, label %927

926:                                              ; preds = %924
  tail call void @LogAssertFailure(i64 noundef 1017, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.101)
  tail call void @__assert_fail(ptr noundef nonnull @.str.102, ptr noundef nonnull @.str, i32 noundef 1017, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

927:                                              ; preds = %924
  %928 = fcmp oeq double %921, 0.000000e+00
  br i1 %928, label %937, label %929

929:                                              ; preds = %927
  %930 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %931 = fneg double %930
  %932 = fcmp ugt double %921, %931
  br i1 %932, label %933, label %937

933:                                              ; preds = %929
  %934 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %935 = fcmp ugt double %934, %921
  br i1 %935, label %936, label %937

936:                                              ; preds = %933
  tail call void @LogAssertFailure(i64 noundef 1021, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.103)
  tail call void @__assert_fail(ptr noundef nonnull @.str.104, ptr noundef nonnull @.str, i32 noundef 1021, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

937:                                              ; preds = %933, %929, %927
  %938 = fadd double %.2610, %921
  %939 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %938)
  br i1 %939, label %940, label %941

940:                                              ; preds = %937
  tail call void @LogAssertFailure(i64 noundef 1023, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.99)
  tail call void @__assert_fail(ptr noundef nonnull @.str.100, ptr noundef nonnull @.str, i32 noundef 1023, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

941:                                              ; preds = %937
  %942 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %943 = fneg double %942
  %944 = fcmp ogt double %938, %943
  br i1 %944, label %945, label %949

945:                                              ; preds = %941
  %946 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %947 = fcmp olt double %938, %946
  br i1 %947, label %948, label %949

948:                                              ; preds = %945
  br label %949

949:                                              ; preds = %948, %945, %941
  %.0606 = phi double [ 0.000000e+00, %948 ], [ %938, %945 ], [ %938, %941 ]
  %950 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %.0606)
  br i1 %950, label %951, label %964

951:                                              ; preds = %949
  %952 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %953 = fcmp oeq double %952, %.0606
  br i1 %953, label %954, label %956

954:                                              ; preds = %951
  %955 = tail call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #7
  br label %964

956:                                              ; preds = %951
  %957 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %958 = fneg double %957
  %959 = fcmp oeq double %.0606, %958
  br i1 %959, label %961, label %960

960:                                              ; preds = %956
  tail call void @LogAssertFailure(i64 noundef 1040, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.105)
  tail call void @__assert_fail(ptr noundef nonnull @.str.106, ptr noundef nonnull @.str, i32 noundef 1040, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

961:                                              ; preds = %956
  %962 = tail call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #7
  %963 = fneg double %962
  br label %964

964:                                              ; preds = %954, %961, %949
  %.1607 = phi double [ %955, %954 ], [ %963, %961 ], [ %.0606, %949 ]
  store double %.1607, ptr %10, align 8, !tbaa !5
  br label %965

965:                                              ; preds = %989, %964
  %.0604 = phi i64 [ 0, %964 ], [ %990, %989 ]
  %966 = tail call noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef nonnull %8, i64 noundef %.0604) #7
  %967 = load double, ptr %966, align 8, !tbaa !5
  %968 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %969 = fneg double %968
  %970 = fcmp ogt double %967, %969
  br i1 %970, label %971, label %975

971:                                              ; preds = %965
  %972 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %973 = fcmp olt double %967, %972
  br i1 %973, label %974, label %975

974:                                              ; preds = %971
  br label %975

975:                                              ; preds = %974, %971, %965
  %.0602 = phi double [ 0.000000e+00, %974 ], [ %967, %971 ], [ %967, %965 ]
  %976 = fsub double %.0602, %.2610
  %977 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %978 = fneg double %977
  %979 = fcmp ogt double %976, %978
  br i1 %979, label %980, label %984

980:                                              ; preds = %975
  %981 = tail call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %982 = fcmp olt double %976, %981
  br i1 %982, label %983, label %984

983:                                              ; preds = %980
  br label %984

984:                                              ; preds = %983, %980, %975
  %.0 = phi double [ 0.000000e+00, %983 ], [ %976, %980 ], [ %976, %975 ]
  %985 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.0602)
  br i1 %985, label %989, label %986

986:                                              ; preds = %984
  %987 = tail call noundef zeroext i1 @_ZSt5isnand(double noundef %.0)
  br i1 %987, label %988, label %989

988:                                              ; preds = %986
  tail call void @LogAssertFailure(i64 noundef 1063, ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_, ptr noundef nonnull @.str.49)
  tail call void @__assert_fail(ptr noundef nonnull @.str.50, ptr noundef nonnull @.str, i32 noundef 1063, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_) #6
  unreachable

989:                                              ; preds = %986, %984
  store double %.0, ptr %966, align 8, !tbaa !5
  %990 = add i64 %.0604, %38
  %.not954 = icmp eq i64 %39, %990
  br i1 %.not954, label %.critedge963.thread, label %965, !llvm.loop !40

.critedge963.thread.sink.split:                   ; preds = %80, %60
  %_ZZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_E13LOG__sMessage_0.sink = phi ptr [ @_ZZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_E13LOG__sMessage, %60 ], [ @_ZZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_E13LOG__sMessage_0, %80 ]
  tail call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef nonnull %_ZZN14NAMESPACE_MAIN14PurifyInternalEdmmmPNS_19RandomDeterministicEPmPKmPKdPdS7_S7_E13LOG__sMessage_0.sink)
  br label %.critedge963.thread

.critedge963.thread:                              ; preds = %989, %.critedge963.thread.sink.split, %80, %60, %180, %.loopexit1041, %249, %881, %711
  %.5 = phi i32 [ 0, %711 ], [ 0, %881 ], [ 0, %249 ], [ 0, %.loopexit1041 ], [ 0, %180 ], [ -3, %60 ], [ -3, %80 ], [ -3, %.critedge963.thread.sink.split ], [ 0, %989 ]
  ret i32 %.5
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE3minEv() local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE8infinityEv() local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef ptr @_ZN14NAMESPACE_MAINL9IndexByteIdEEPT_S2_m(ptr noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE3maxEv() local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() local_unnamed_addr #4 align 2

attributes #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 = { 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 #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 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { alwaysinline 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 #6 = { noreturn nounwind }
attributes #7 = { 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 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = distinct !{!18, !10}
!19 = !{!20, !20, i64 0}
!20 = !{!"long", !7, i64 0}
!21 = distinct !{!21, !10, !22, !23}
!22 = !{!"llvm.loop.isvectorized", i32 1}
!23 = !{!"llvm.loop.unroll.runtime.disable"}
!24 = distinct !{!24, !10, !23, !22}
!25 = distinct !{!25, !10}
!26 = distinct !{!26, !10}
!27 = distinct !{!27, !10}
!28 = distinct !{!28, !10}
!29 = distinct !{!29, !10}
!30 = distinct !{!30, !10}
!31 = distinct !{!31, !10}
!32 = distinct !{!32, !10}
!33 = distinct !{!33, !10}
!34 = distinct !{!34, !10}
!35 = distinct !{!35, !10}
!36 = distinct !{!36, !10}
!37 = distinct !{!37, !10}
!38 = distinct !{!38, !10}
!39 = distinct !{!39, !10}
!40 = distinct !{!40, !10}


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