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

; 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
@_ZN14NAMESPACE_MAINL24g_cLogEnterCutWinsorizedE = external hidden global i32, align 4
@_ZZ13CutWinsorizedE13LOG__sMessage = external hidden constant [106 x i8], align 16
@_ZZ13CutWinsorizedE13LOG__sMessage_0 = external hidden constant [46 x i8], align 16
@_ZZ13CutWinsorizedE13LOG__sMessage_1 = external hidden constant [48 x i8], align 16
@_ZZ13CutWinsorizedE13LOG__sMessage_2 = external hidden constant [59 x i8], align 16
@_ZZ13CutWinsorizedE13LOG__sMessage_3 = external hidden constant [43 x i8], align 16
@_ZZ13CutWinsorizedE13LOG__sMessage_4 = external hidden constant [84 x i8], align 16
@_ZZ13CutWinsorizedE13LOG__sMessage_5 = external hidden constant [44 x i8], align 16
@.str = external hidden unnamed_addr constant [87 x i8], align 1
@__func__.CutWinsorized = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [44 x i8], align 1
@__PRETTY_FUNCTION__.CutWinsorized = external hidden unnamed_addr constant [83 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [29 x i8], align 1
@_ZZ13CutWinsorizedE13LOG__sMessage_6 = external hidden constant [49 x i8], align 16
@_ZZ13CutWinsorizedE13LOG__sMessage_7 = external hidden constant [56 x i8], align 16
@_ZZ13CutWinsorizedE13LOG__sMessage_8 = external hidden constant [83 x i8], align 16
@_ZZ13CutWinsorizedE13LOG__sMessage_9 = external hidden constant [58 x i8], align 16
@.str.5 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [53 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 [19 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [29 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 [27 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [131 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [134 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [122 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [29 x i8], align 1
@_ZN14NAMESPACE_MAINL23g_cLogExitCutWinsorizedE = external hidden global i32, align 4
@_ZZ13CutWinsorizedE13LOG__sMessage__10_ = external hidden constant [47 x i8], align 16

; Function Attrs: mustprogress uwtable
define dso_local i32 @CutWinsorized(i64 noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) #0 {
  %5 = alloca i32, align 4
  %6 = alloca i64, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i64, align 8
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i64, align 8
  %24 = alloca i32, align 4
  %25 = alloca i64, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i64, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca i64, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca ptr, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca double, 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 double, align 8
  %63 = alloca ptr, align 8
  %64 = alloca i64, align 8
  %65 = alloca double, align 8
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca i64, align 8
  %70 = alloca double, align 8
  %71 = alloca i64, align 8
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca ptr, align 8
  %77 = alloca i32, align 4
  store i64 %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !9
  store ptr %2, ptr %8, align 8, !tbaa !9
  store ptr %3, ptr %9, align 8, !tbaa !9
  br label %78

78:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #13
  store i32 3, ptr %10, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #13
  store i32 4, ptr %11, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #13
  %79 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  store i32 %79, ptr %12, align 4, !tbaa !11
  %80 = load i32, ptr %12, align 4, !tbaa !11
  %81 = icmp sle i32 3, %80
  br i1 %81, label %82, label %109

82:                                               ; preds = %78
  br label %83

83:                                               ; preds = %82
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #13
  %84 = load i32, ptr %12, align 4, !tbaa !11
  %85 = icmp slt i32 %84, 4
  br i1 %85, label %86, label %97

86:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #13
  store ptr @_ZN14NAMESPACE_MAINL24g_cLogEnterCutWinsorizedE, ptr %14, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #13
  %87 = load i32, ptr @_ZN14NAMESPACE_MAINL24g_cLogEnterCutWinsorizedE, align 4, !tbaa !11
  %88 = sub nsw i32 %87, 1
  store i32 %88, ptr %15, align 4, !tbaa !11
  %89 = load i32, ptr %15, align 4, !tbaa !11
  %90 = icmp slt i32 %89, 0
  br i1 %90, label %91, label %92

91:                                               ; preds = %86
  store i32 4, ptr %16, align 4
  br label %94

92:                                               ; preds = %86
  %93 = load i32, ptr %15, align 4, !tbaa !11
  store i32 %93, ptr @_ZN14NAMESPACE_MAINL24g_cLogEnterCutWinsorizedE, align 4, !tbaa !11
  store i32 3, ptr %13, align 4, !tbaa !11
  store i32 0, ptr %16, align 4
  br label %94

94:                                               ; preds = %92, %91
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #13
  %95 = load i32, ptr %16, align 4
  switch i32 %95, label %104 [
    i32 0, label %96
  ]

96:                                               ; preds = %94
  br label %98

97:                                               ; preds = %83
  store i32 4, ptr %13, align 4, !tbaa !11
  br label %98

98:                                               ; preds = %97, %96
  %99 = load i32, ptr %13, align 4, !tbaa !11
  %100 = load i64, ptr %6, align 8, !tbaa !5
  %101 = load ptr, ptr %7, align 8, !tbaa !9
  %102 = load ptr, ptr %8, align 8, !tbaa !9
  %103 = load ptr, ptr %9, align 8, !tbaa !9
  call void (i32, ptr, ...) @InteralLogWithArguments(i32 noundef %99, ptr noundef @_ZZ13CutWinsorizedE13LOG__sMessage, i64 noundef %100, ptr noundef %101, ptr noundef %102, ptr noundef %103)
  store i32 0, ptr %16, align 4
  br label %104

104:                                              ; preds = %98, %94
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #13
  %105 = load i32, ptr %16, align 4
  switch i32 %105, label %998 [
    i32 0, label %106
    i32 4, label %108
  ]

106:                                              ; preds = %104
  br label %107

107:                                              ; preds = %106
  br label %108

108:                                              ; preds = %107, %104
  br label %109

109:                                              ; preds = %108, %78
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #13
  br label %110

110:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #13
  store i64 0, ptr %18, align 8, !tbaa !5
  %111 = load ptr, ptr %8, align 8, !tbaa !9
  %112 = icmp eq ptr null, %111
  %113 = xor i1 %112, true
  %114 = xor i1 %113, true
  %115 = zext i1 %114 to i64
  %116 = call i64 @llvm.expect.i64(i64 %115, i64 0)
  %117 = icmp ne i64 %116, 0
  br i1 %117, label %118, label %126

118:                                              ; preds = %110
  br label %119

119:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #13
  store i32 1, ptr %19, align 4, !tbaa !11
  %120 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %121 = icmp sle i32 1, %120
  br i1 %121, label %122, label %123

122:                                              ; preds = %119
  call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef @_ZZ13CutWinsorizedE13LOG__sMessage_0)
  br label %123

123:                                              ; preds = %122, %119
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #13
  br label %124

124:                                              ; preds = %123
  br label %125

125:                                              ; preds = %124
  store i32 -3, ptr %17, align 4, !tbaa !11
  br label %962

126:                                              ; preds = %110
  %127 = load i64, ptr %6, align 8, !tbaa !5
  %128 = icmp sle i64 %127, 1
  %129 = xor i1 %128, true
  %130 = xor i1 %129, true
  %131 = zext i1 %130 to i64
  %132 = call i64 @llvm.expect.i64(i64 %131, i64 0)
  %133 = icmp ne i64 %132, 0
  br i1 %133, label %134, label %151

134:                                              ; preds = %126
  store i32 0, ptr %17, align 4, !tbaa !11
  %135 = load i64, ptr %6, align 8, !tbaa !5
  %136 = icmp slt i64 %135, 0
  %137 = xor i1 %136, true
  %138 = xor i1 %137, true
  %139 = zext i1 %138 to i64
  %140 = call i64 @llvm.expect.i64(i64 %139, i64 0)
  %141 = icmp ne i64 %140, 0
  br i1 %141, label %142, label %150

142:                                              ; preds = %134
  br label %143

143:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #13
  store i32 1, ptr %20, align 4, !tbaa !11
  %144 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %145 = icmp sle i32 1, %144
  br i1 %145, label %146, label %147

146:                                              ; preds = %143
  call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef @_ZZ13CutWinsorizedE13LOG__sMessage_1)
  br label %147

147:                                              ; preds = %146, %143
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #13
  br label %148

148:                                              ; preds = %147
  br label %149

149:                                              ; preds = %148
  store i32 -3, ptr %17, align 4, !tbaa !11
  br label %150

150:                                              ; preds = %149, %134
  br label %952

151:                                              ; preds = %126
  %152 = load i64, ptr %6, align 8, !tbaa !5
  %153 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImlEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuesr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef %152) #13
  %154 = xor i1 %153, true
  %155 = xor i1 %154, true
  %156 = zext i1 %155 to i64
  %157 = call i64 @llvm.expect.i64(i64 %156, i64 0)
  %158 = icmp ne i64 %157, 0
  br i1 %158, label %159, label %167

159:                                              ; preds = %151
  br label %160

160:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #13
  store i32 2, ptr %21, align 4, !tbaa !11
  %161 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %162 = icmp sle i32 2, %161
  br i1 %162, label %163, label %164

163:                                              ; preds = %160
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ13CutWinsorizedE13LOG__sMessage_2)
  br label %164

164:                                              ; preds = %163, %160
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #13
  br label %165

165:                                              ; preds = %164
  br label %166

166:                                              ; preds = %165
  store i32 -3, ptr %17, align 4, !tbaa !11
  br label %953

167:                                              ; preds = %151
  %168 = load ptr, ptr %7, align 8, !tbaa !9
  %169 = icmp eq ptr null, %168
  %170 = xor i1 %169, true
  %171 = xor i1 %170, true
  %172 = zext i1 %171 to i64
  %173 = call i64 @llvm.expect.i64(i64 %172, i64 0)
  %174 = icmp ne i64 %173, 0
  br i1 %174, label %175, label %183

175:                                              ; preds = %167
  br label %176

176:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #13
  store i32 1, ptr %22, align 4, !tbaa !11
  %177 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %178 = icmp sle i32 1, %177
  br i1 %178, label %179, label %180

179:                                              ; preds = %176
  call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef @_ZZ13CutWinsorizedE13LOG__sMessage_3)
  br label %180

180:                                              ; preds = %179, %176
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #13
  br label %181

181:                                              ; preds = %180
  br label %182

182:                                              ; preds = %181
  store i32 -3, ptr %17, align 4, !tbaa !11
  br label %953

183:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #13
  %184 = load i64, ptr %6, align 8, !tbaa !5
  store i64 %184, ptr %23, align 8, !tbaa !5
  %185 = load i64, ptr %23, align 8, !tbaa !5
  %186 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef 8, i64 noundef %185) #13
  br i1 %186, label %187, label %195

187:                                              ; preds = %183
  br label %188

188:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #13
  store i32 2, ptr %24, align 4, !tbaa !11
  %189 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %190 = icmp sle i32 2, %189
  br i1 %190, label %191, label %192

191:                                              ; preds = %188
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ13CutWinsorizedE13LOG__sMessage_4)
  br label %192

192:                                              ; preds = %191, %188
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #13
  br label %193

193:                                              ; preds = %192
  br label %194

194:                                              ; preds = %193
  store i32 -1, ptr %17, align 4, !tbaa !11
  store i32 12, ptr %16, align 4
  br label %949

195:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #13
  %196 = load i64, ptr %23, align 8, !tbaa !5
  %197 = mul i64 8, %196
  store i64 %197, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #13
  %198 = load i64, ptr %25, align 8, !tbaa !5
  %199 = call noalias ptr @malloc(i64 noundef %198) #14
  store ptr %199, ptr %26, align 8, !tbaa !9
  %200 = load ptr, ptr %26, align 8, !tbaa !9
  %201 = icmp eq ptr null, %200
  %202 = xor i1 %201, true
  %203 = xor i1 %202, true
  %204 = zext i1 %203 to i64
  %205 = call i64 @llvm.expect.i64(i64 %204, i64 0)
  %206 = icmp ne i64 %205, 0
  br i1 %206, label %207, label %215

207:                                              ; preds = %195
  br label %208

208:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #13
  store i32 1, ptr %27, align 4, !tbaa !11
  %209 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %210 = icmp sle i32 1, %209
  br i1 %210, label %211, label %212

211:                                              ; preds = %208
  call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef @_ZZ13CutWinsorizedE13LOG__sMessage_5)
  br label %212

212:                                              ; preds = %211, %208
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #13
  br label %213

213:                                              ; preds = %212
  br label %214

214:                                              ; preds = %213
  store i32 -1, ptr %17, align 4, !tbaa !11
  store i32 12, ptr %16, align 4
  br label %948

215:                                              ; preds = %195
  %216 = load ptr, ptr %26, align 8, !tbaa !9
  %217 = load ptr, ptr %7, align 8, !tbaa !9
  %218 = load i64, ptr %25, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %216, ptr align 8 %217, i64 %218, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #13
  %219 = load i64, ptr %23, align 8, !tbaa !5
  %220 = load ptr, ptr %26, align 8, !tbaa !9
  %221 = call noundef i64 @_ZN14NAMESPACE_MAIN37RemoveMissingValsAndReplaceInfinitiesEmPd(i64 noundef %219, ptr noundef %220) #13
  store i64 %221, ptr %28, align 8, !tbaa !5
  %222 = load i64, ptr %28, align 8, !tbaa !5
  %223 = load i64, ptr %23, align 8, !tbaa !5
  %224 = icmp ule i64 %222, %223
  br i1 %224, label %227, label %225

225:                                              ; preds = %215
  call void @LogAssertFailure(i64 noundef 107, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.1)
  call void @__assert_fail(ptr noundef @.str.2, ptr noundef @.str, i32 noundef 107, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

226:                                              ; No predecessors!
  br label %227

227:                                              ; preds = %226, %215
  %228 = phi i1 [ true, %215 ], [ false, %226 ]
  %229 = load i64, ptr %28, align 8, !tbaa !5
  %230 = icmp ult i64 1, %229
  %231 = xor i1 %230, true
  %232 = xor i1 %231, true
  %233 = zext i1 %232 to i64
  %234 = call i64 @llvm.expect.i64(i64 %233, i64 1)
  %235 = icmp ne i64 %234, 0
  br i1 %235, label %236, label %945

236:                                              ; preds = %227
  %237 = load ptr, ptr %8, align 8, !tbaa !9
  %238 = icmp ne ptr null, %237
  br i1 %238, label %241, label %239

239:                                              ; preds = %236
  call void @LogAssertFailure(i64 noundef 112, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.3)
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str, i32 noundef 112, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

240:                                              ; No predecessors!
  br label %241

241:                                              ; preds = %240, %236
  %242 = phi i1 [ true, %236 ], [ false, %240 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #13
  %243 = load ptr, ptr %8, align 8, !tbaa !9
  %244 = load i64, ptr %243, align 8, !tbaa !5
  store i64 %244, ptr %29, align 8, !tbaa !5
  %245 = load i64, ptr %29, align 8, !tbaa !5
  %246 = icmp sle i64 %245, 0
  %247 = xor i1 %246, true
  %248 = xor i1 %247, true
  %249 = zext i1 %248 to i64
  %250 = call i64 @llvm.expect.i64(i64 %249, i64 0)
  %251 = icmp ne i64 %250, 0
  br i1 %251, label %252, label %270

252:                                              ; preds = %241
  %253 = load ptr, ptr %26, align 8, !tbaa !9
  call void @free(ptr noundef %253) #13
  store i32 0, ptr %17, align 4, !tbaa !11
  %254 = load i64, ptr %29, align 8, !tbaa !5
  %255 = icmp slt i64 %254, 0
  %256 = xor i1 %255, true
  %257 = xor i1 %256, true
  %258 = zext i1 %257 to i64
  %259 = call i64 @llvm.expect.i64(i64 %258, i64 0)
  %260 = icmp ne i64 %259, 0
  br i1 %260, label %261, label %269

261:                                              ; preds = %252
  br label %262

262:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #13
  store i32 1, ptr %30, align 4, !tbaa !11
  %263 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %264 = icmp sle i32 1, %263
  br i1 %264, label %265, label %266

265:                                              ; preds = %262
  call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef @_ZZ13CutWinsorizedE13LOG__sMessage_6)
  br label %266

266:                                              ; preds = %265, %262
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #13
  br label %267

267:                                              ; preds = %266
  br label %268

268:                                              ; preds = %267
  store i32 -3, ptr %17, align 4, !tbaa !11
  br label %269

269:                                              ; preds = %268, %252
  store i32 12, ptr %16, align 4
  br label %942

270:                                              ; preds = %241
  %271 = load i64, ptr %29, align 8, !tbaa !5
  %272 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImlEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuesr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef %271) #13
  %273 = xor i1 %272, true
  %274 = xor i1 %273, true
  %275 = zext i1 %274 to i64
  %276 = call i64 @llvm.expect.i64(i64 %275, i64 0)
  %277 = icmp ne i64 %276, 0
  br i1 %277, label %278, label %287

278:                                              ; preds = %270
  br label %279

279:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #13
  store i32 2, ptr %31, align 4, !tbaa !11
  %280 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %281 = icmp sle i32 2, %280
  br i1 %281, label %282, label %283

282:                                              ; preds = %279
  call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef @_ZZ13CutWinsorizedE13LOG__sMessage_7)
  br label %283

283:                                              ; preds = %282, %279
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #13
  br label %284

284:                                              ; preds = %283
  br label %285

285:                                              ; preds = %284
  %286 = load ptr, ptr %26, align 8, !tbaa !9
  call void @free(ptr noundef %286) #13
  store i32 -3, ptr %17, align 4, !tbaa !11
  store i32 12, ptr %16, align 4
  br label %942

287:                                              ; preds = %270
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #13
  %288 = load i64, ptr %29, align 8, !tbaa !5
  store i64 %288, ptr %32, align 8, !tbaa !5
  %289 = load i64, ptr %32, align 8, !tbaa !5
  %290 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef 8, i64 noundef %289) #13
  %291 = xor i1 %290, true
  %292 = xor i1 %291, true
  %293 = zext i1 %292 to i64
  %294 = call i64 @llvm.expect.i64(i64 %293, i64 0)
  %295 = icmp ne i64 %294, 0
  br i1 %295, label %296, label %305

296:                                              ; preds = %287
  br label %297

297:                                              ; preds = %296
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #13
  store i32 1, ptr %33, align 4, !tbaa !11
  %298 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %299 = icmp sle i32 1, %298
  br i1 %299, label %300, label %301

300:                                              ; preds = %297
  call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef @_ZZ13CutWinsorizedE13LOG__sMessage_8)
  br label %301

301:                                              ; preds = %300, %297
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #13
  br label %302

302:                                              ; preds = %301
  br label %303

303:                                              ; preds = %302
  %304 = load ptr, ptr %26, align 8, !tbaa !9
  call void @free(ptr noundef %304) #13
  store i32 -3, ptr %17, align 4, !tbaa !11
  store i32 12, ptr %16, align 4
  br label %941

305:                                              ; preds = %287
  %306 = load ptr, ptr %9, align 8, !tbaa !9
  %307 = icmp eq ptr null, %306
  %308 = xor i1 %307, true
  %309 = xor i1 %308, true
  %310 = zext i1 %309 to i64
  %311 = call i64 @llvm.expect.i64(i64 %310, i64 0)
  %312 = icmp ne i64 %311, 0
  br i1 %312, label %313, label %322

313:                                              ; preds = %305
  br label %314

314:                                              ; preds = %313
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #13
  store i32 1, ptr %34, align 4, !tbaa !11
  %315 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  %316 = icmp sle i32 1, %315
  br i1 %316, label %317, label %318

317:                                              ; preds = %314
  call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef @_ZZ13CutWinsorizedE13LOG__sMessage_9)
  br label %318

318:                                              ; preds = %317, %314
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #13
  br label %319

319:                                              ; preds = %318
  br label %320

320:                                              ; preds = %319
  %321 = load ptr, ptr %26, align 8, !tbaa !9
  call void @free(ptr noundef %321) #13
  store i32 -3, ptr %17, align 4, !tbaa !11
  store i32 12, ptr %16, align 4
  br label %941

322:                                              ; preds = %305
  %323 = load ptr, ptr %26, align 8, !tbaa !9
  %324 = load ptr, ptr %26, align 8, !tbaa !9
  %325 = load i64, ptr %28, align 8, !tbaa !5
  %326 = getelementptr inbounds double, ptr %324, i64 %325
  call void @_ZSt4sortIPdEvT_S1_(ptr noundef %323, ptr noundef %326)
  %327 = load i64, ptr %32, align 8, !tbaa !5
  %328 = icmp eq i64 1, %327
  %329 = xor i1 %328, true
  %330 = xor i1 %329, true
  %331 = zext i1 %330 to i64
  %332 = call i64 @llvm.expect.i64(i64 %331, i64 0)
  %333 = icmp ne i64 %332, 0
  br i1 %333, label %334, label %421

334:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #13
  %335 = load ptr, ptr %26, align 8, !tbaa !9
  %336 = getelementptr inbounds double, ptr %335, i64 0
  %337 = load double, ptr %336, align 8, !tbaa !13
  store double %337, ptr %35, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #13
  %338 = load ptr, ptr %26, align 8, !tbaa !9
  %339 = load i64, ptr %28, align 8, !tbaa !5
  %340 = sub i64 %339, 1
  %341 = getelementptr inbounds double, ptr %338, i64 %340
  %342 = load double, ptr %341, align 8, !tbaa !13
  store double %342, ptr %36, align 8, !tbaa !13
  %343 = load double, ptr %35, align 8, !tbaa !13
  %344 = load double, ptr %36, align 8, !tbaa !13
  %345 = fcmp une double %343, %344
  %346 = xor i1 %345, true
  %347 = xor i1 %346, true
  %348 = zext i1 %347 to i64
  %349 = call i64 @llvm.expect.i64(i64 %348, i64 1)
  %350 = icmp ne i64 %349, 0
  br i1 %350, label %351, label %420

351:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #13
  %352 = load i64, ptr %28, align 8, !tbaa !5
  %353 = lshr i64 %352, 1
  store i64 %353, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #13
  %354 = load ptr, ptr %26, align 8, !tbaa !9
  %355 = load i64, ptr %37, align 8, !tbaa !5
  %356 = getelementptr inbounds double, ptr %354, i64 %355
  store ptr %356, ptr %38, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #13
  %357 = load ptr, ptr %38, align 8, !tbaa !9
  %358 = load i64, ptr %28, align 8, !tbaa !5
  %359 = sub i64 %358, 1
  %360 = and i64 1, %359
  %361 = sub i64 0, %360
  %362 = getelementptr inbounds double, ptr %357, i64 %361
  store ptr %362, ptr %39, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #13
  br label %363

363:                                              ; preds = %398, %351
  %364 = load ptr, ptr %38, align 8, !tbaa !9
  %365 = getelementptr inbounds double, ptr %364, i32 -1
  store ptr %365, ptr %38, align 8, !tbaa !9
  %366 = load ptr, ptr %39, align 8, !tbaa !9
  %367 = getelementptr inbounds double, ptr %366, i32 1
  store ptr %367, ptr %39, align 8, !tbaa !9
  %368 = load ptr, ptr %26, align 8, !tbaa !9
  %369 = load ptr, ptr %38, align 8, !tbaa !9
  %370 = icmp ule ptr %368, %369
  br i1 %370, label %371, label %377

371:                                              ; preds = %363
  %372 = load ptr, ptr %38, align 8, !tbaa !9
  %373 = load ptr, ptr %26, align 8, !tbaa !9
  %374 = load i64, ptr %28, align 8, !tbaa !5
  %375 = getelementptr inbounds double, ptr %373, i64 %374
  %376 = icmp ult ptr %372, %375
  br i1 %376, label %379, label %377

377:                                              ; preds = %371, %363
  call void @LogAssertFailure(i64 noundef 176, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.5)
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 176, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

378:                                              ; No predecessors!
  br label %379

379:                                              ; preds = %378, %371
  %380 = phi i1 [ true, %371 ], [ false, %378 ]
  %381 = load ptr, ptr %38, align 8, !tbaa !9
  %382 = load double, ptr %381, align 8, !tbaa !13
  store double %382, ptr %40, align 8, !tbaa !13
  %383 = load ptr, ptr %26, align 8, !tbaa !9
  %384 = load ptr, ptr %39, align 8, !tbaa !9
  %385 = icmp ule ptr %383, %384
  br i1 %385, label %386, label %392

386:                                              ; preds = %379
  %387 = load ptr, ptr %39, align 8, !tbaa !9
  %388 = load ptr, ptr %26, align 8, !tbaa !9
  %389 = load i64, ptr %28, align 8, !tbaa !5
  %390 = getelementptr inbounds double, ptr %388, i64 %389
  %391 = icmp ult ptr %387, %390
  br i1 %391, label %394, label %392

392:                                              ; preds = %386, %379
  call void @LogAssertFailure(i64 noundef 178, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.7)
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str, i32 noundef 178, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

393:                                              ; No predecessors!
  br label %394

394:                                              ; preds = %393, %386
  %395 = phi i1 [ true, %386 ], [ false, %393 ]
  %396 = load ptr, ptr %39, align 8, !tbaa !9
  %397 = load double, ptr %396, align 8, !tbaa !13
  store double %397, ptr %41, align 8, !tbaa !13
  br label %398

398:                                              ; preds = %394
  %399 = load double, ptr %40, align 8, !tbaa !13
  %400 = load double, ptr %41, align 8, !tbaa !13
  %401 = fcmp oeq double %399, %400
  %402 = xor i1 %401, true
  %403 = xor i1 %402, true
  %404 = zext i1 %403 to i64
  %405 = call i64 @llvm.expect.i64(i64 %404, i64 1)
  %406 = icmp ne i64 %405, 0
  br i1 %406, label %363, label %407, !llvm.loop !15

407:                                              ; preds = %398
  %408 = load double, ptr %40, align 8, !tbaa !13
  %409 = load double, ptr %41, align 8, !tbaa !13
  %410 = fcmp olt double %408, %409
  br i1 %410, label %413, label %411

411:                                              ; preds = %407
  call void @LogAssertFailure(i64 noundef 182, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.9)
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str, i32 noundef 182, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

412:                                              ; No predecessors!
  br label %413

413:                                              ; preds = %412, %407
  %414 = phi i1 [ true, %407 ], [ false, %412 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #13
  %415 = load double, ptr %40, align 8, !tbaa !13
  %416 = load double, ptr %41, align 8, !tbaa !13
  %417 = call noundef double @_ZN14NAMESPACE_MAIN14ArithmeticMeanEdd(double noundef %415, double noundef %416) #13
  store double %417, ptr %42, align 8, !tbaa !13
  %418 = load double, ptr %42, align 8, !tbaa !13
  %419 = load ptr, ptr %9, align 8, !tbaa !9
  store double %418, ptr %419, align 8, !tbaa !13
  store i64 1, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #13
  br label %420

420:                                              ; preds = %413, %334
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #13
  br label %940

421:                                              ; preds = %322
  %422 = load i64, ptr %32, align 8, !tbaa !5
  %423 = call noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef 1, i64 noundef %422) #13
  br i1 %423, label %424, label %426

424:                                              ; preds = %421
  call void @LogAssertFailure(i64 noundef 196, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.11)
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str, i32 noundef 196, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

425:                                              ; No predecessors!
  br label %426

426:                                              ; preds = %425, %421
  %427 = phi i1 [ true, %421 ], [ false, %425 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #13
  %428 = load i64, ptr %32, align 8, !tbaa !5
  %429 = add i64 %428, 1
  store i64 %429, ptr %43, align 8, !tbaa !5
  %430 = load i64, ptr %28, align 8, !tbaa !5
  %431 = icmp ult i64 1, %430
  br i1 %431, label %434, label %432

432:                                              ; preds = %426
  call void @LogAssertFailure(i64 noundef 198, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.13)
  call void @__assert_fail(ptr noundef @.str.14, ptr noundef @.str, i32 noundef 198, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

433:                                              ; No predecessors!
  br label %434

434:                                              ; preds = %433, %426
  %435 = phi i1 [ true, %426 ], [ false, %433 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #13
  %436 = load i64, ptr %28, align 8, !tbaa !5
  %437 = sub i64 %436, 1
  %438 = load i64, ptr %43, align 8, !tbaa !5
  %439 = udiv i64 %437, %438
  store i64 %439, ptr %44, align 8, !tbaa !5
  %440 = load i64, ptr %44, align 8, !tbaa !5
  %441 = load i64, ptr %28, align 8, !tbaa !5
  %442 = icmp ult i64 %440, %441
  br i1 %442, label %445, label %443

443:                                              ; preds = %434
  call void @LogAssertFailure(i64 noundef 200, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.15)
  call void @__assert_fail(ptr noundef @.str.16, ptr noundef @.str, i32 noundef 200, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

444:                                              ; No predecessors!
  br label %445

445:                                              ; preds = %444, %434
  %446 = phi i1 [ true, %434 ], [ false, %444 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #13
  %447 = load ptr, ptr %26, align 8, !tbaa !9
  %448 = load i64, ptr %44, align 8, !tbaa !5
  %449 = getelementptr inbounds double, ptr %447, i64 %448
  store ptr %449, ptr %45, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #13
  %450 = load ptr, ptr %26, align 8, !tbaa !9
  %451 = load i64, ptr %28, align 8, !tbaa !5
  %452 = load i64, ptr %44, align 8, !tbaa !5
  %453 = sub i64 %451, %452
  %454 = sub i64 %453, 1
  %455 = getelementptr inbounds double, ptr %450, i64 %454
  store ptr %455, ptr %46, align 8, !tbaa !9
  %456 = load ptr, ptr %26, align 8, !tbaa !9
  %457 = load ptr, ptr %45, align 8, !tbaa !9
  %458 = icmp ule ptr %456, %457
  br i1 %458, label %459, label %465

459:                                              ; preds = %445
  %460 = load ptr, ptr %45, align 8, !tbaa !9
  %461 = load ptr, ptr %26, align 8, !tbaa !9
  %462 = load i64, ptr %28, align 8, !tbaa !5
  %463 = getelementptr inbounds double, ptr %461, i64 %462
  %464 = icmp ult ptr %460, %463
  br i1 %464, label %467, label %465

465:                                              ; preds = %459, %445
  call void @LogAssertFailure(i64 noundef 207, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.5)
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 207, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

466:                                              ; No predecessors!
  br label %467

467:                                              ; preds = %466, %459
  %468 = phi i1 [ true, %459 ], [ false, %466 ]
  %469 = load ptr, ptr %26, align 8, !tbaa !9
  %470 = load ptr, ptr %46, align 8, !tbaa !9
  %471 = icmp ule ptr %469, %470
  br i1 %471, label %472, label %478

472:                                              ; preds = %467
  %473 = load ptr, ptr %46, align 8, !tbaa !9
  %474 = load ptr, ptr %26, align 8, !tbaa !9
  %475 = load i64, ptr %28, align 8, !tbaa !5
  %476 = getelementptr inbounds double, ptr %474, i64 %475
  %477 = icmp ult ptr %473, %476
  br i1 %477, label %480, label %478

478:                                              ; preds = %472, %467
  call void @LogAssertFailure(i64 noundef 208, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.7)
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str, i32 noundef 208, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

479:                                              ; No predecessors!
  br label %480

480:                                              ; preds = %479, %472
  %481 = phi i1 [ true, %472 ], [ false, %479 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #13
  %482 = load ptr, ptr %45, align 8, !tbaa !9
  %483 = load double, ptr %482, align 8, !tbaa !13
  store double %483, ptr %47, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #13
  %484 = load ptr, ptr %46, align 8, !tbaa !9
  %485 = load double, ptr %484, align 8, !tbaa !13
  store double %485, ptr %48, align 8, !tbaa !13
  %486 = load double, ptr %47, align 8, !tbaa !13
  %487 = load double, ptr %48, align 8, !tbaa !13
  %488 = fcmp ole double %486, %487
  br i1 %488, label %491, label %489

489:                                              ; preds = %480
  call void @LogAssertFailure(i64 noundef 212, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.17)
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str, i32 noundef 212, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

490:                                              ; No predecessors!
  br label %491

491:                                              ; preds = %490, %480
  %492 = phi i1 [ true, %480 ], [ false, %490 ]
  %493 = load double, ptr %47, align 8, !tbaa !13
  %494 = load double, ptr %48, align 8, !tbaa !13
  %495 = fcmp oeq double %493, %494
  %496 = xor i1 %495, true
  %497 = xor i1 %496, true
  %498 = zext i1 %497 to i64
  %499 = call i64 @llvm.expect.i64(i64 %498, i64 0)
  %500 = icmp ne i64 %499, 0
  br i1 %500, label %501, label %626

501:                                              ; preds = %491
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #13
  %502 = load double, ptr %47, align 8, !tbaa !13
  store double %502, ptr %49, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #13
  %503 = load ptr, ptr %26, align 8, !tbaa !9
  %504 = getelementptr inbounds double, ptr %503, i64 0
  %505 = load double, ptr %504, align 8, !tbaa !13
  store double %505, ptr %50, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #13
  %506 = load ptr, ptr %26, align 8, !tbaa !9
  %507 = load i64, ptr %28, align 8, !tbaa !5
  %508 = sub i64 %507, 1
  %509 = getelementptr inbounds double, ptr %506, i64 %508
  %510 = load double, ptr %509, align 8, !tbaa !13
  store double %510, ptr %51, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #13
  %511 = load ptr, ptr %9, align 8, !tbaa !9
  store ptr %511, ptr %52, align 8, !tbaa !9
  %512 = load double, ptr %50, align 8, !tbaa !13
  %513 = load double, ptr %49, align 8, !tbaa !13
  %514 = fcmp une double %512, %513
  br i1 %514, label %515, label %569

515:                                              ; preds = %501
  %516 = call noundef double @_ZNSt14numeric_limitsIdE6lowestEv() #13
  %517 = load double, ptr %49, align 8, !tbaa !13
  %518 = fcmp olt double %516, %517
  br i1 %518, label %521, label %519

519:                                              ; preds = %515
  call void @LogAssertFailure(i64 noundef 228, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.19)
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str, i32 noundef 228, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

520:                                              ; No predecessors!
  br label %521

521:                                              ; preds = %520, %515
  %522 = phi i1 [ true, %515 ], [ false, %520 ]
  %523 = load double, ptr %50, align 8, !tbaa !13
  %524 = load double, ptr %49, align 8, !tbaa !13
  %525 = fcmp olt double %523, %524
  br i1 %525, label %528, label %526

526:                                              ; preds = %521
  call void @LogAssertFailure(i64 noundef 229, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.21)
  call void @__assert_fail(ptr noundef @.str.22, ptr noundef @.str, i32 noundef 229, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

527:                                              ; No predecessors!
  br label %528

528:                                              ; preds = %527, %521
  %529 = phi i1 [ true, %521 ], [ false, %527 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #13
  br label %530

530:                                              ; preds = %548, %528
  %531 = load ptr, ptr %45, align 8, !tbaa !9
  %532 = getelementptr inbounds double, ptr %531, i32 -1
  store ptr %532, ptr %45, align 8, !tbaa !9
  %533 = load ptr, ptr %26, align 8, !tbaa !9
  %534 = load ptr, ptr %45, align 8, !tbaa !9
  %535 = icmp ule ptr %533, %534
  br i1 %535, label %536, label %542

536:                                              ; preds = %530
  %537 = load ptr, ptr %45, align 8, !tbaa !9
  %538 = load ptr, ptr %26, align 8, !tbaa !9
  %539 = load i64, ptr %28, align 8, !tbaa !5
  %540 = getelementptr inbounds double, ptr %538, i64 %539
  %541 = icmp ult ptr %537, %540
  br i1 %541, label %544, label %542

542:                                              ; preds = %536, %530
  call void @LogAssertFailure(i64 noundef 234, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.5)
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 234, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

543:                                              ; No predecessors!
  br label %544

544:                                              ; preds = %543, %536
  %545 = phi i1 [ true, %536 ], [ false, %543 ]
  %546 = load ptr, ptr %45, align 8, !tbaa !9
  %547 = load double, ptr %546, align 8, !tbaa !13
  store double %547, ptr %53, align 8, !tbaa !13
  br label %548

548:                                              ; preds = %544
  %549 = load double, ptr %49, align 8, !tbaa !13
  %550 = load double, ptr %53, align 8, !tbaa !13
  %551 = fcmp oeq double %549, %550
  br i1 %551, label %530, label %552, !llvm.loop !17

552:                                              ; preds = %548
  %553 = load double, ptr %53, align 8, !tbaa !13
  %554 = load double, ptr %49, align 8, !tbaa !13
  %555 = fcmp olt double %553, %554
  br i1 %555, label %558, label %556

556:                                              ; preds = %552
  call void @LogAssertFailure(i64 noundef 237, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.23)
  call void @__assert_fail(ptr noundef @.str.24, ptr noundef @.str, i32 noundef 237, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

557:                                              ; No predecessors!
  br label %558

558:                                              ; preds = %557, %552
  %559 = phi i1 [ true, %552 ], [ false, %557 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #13
  %560 = load double, ptr %53, align 8, !tbaa !13
  %561 = load double, ptr %49, align 8, !tbaa !13
  %562 = call noundef double @_ZN14NAMESPACE_MAIN14ArithmeticMeanEdd(double noundef %560, double noundef %561) #13
  store double %562, ptr %54, align 8, !tbaa !13
  %563 = load double, ptr %54, align 8, !tbaa !13
  %564 = load ptr, ptr %52, align 8, !tbaa !9
  store double %563, ptr %564, align 8, !tbaa !13
  %565 = load ptr, ptr %52, align 8, !tbaa !9
  %566 = getelementptr inbounds double, ptr %565, i32 1
  store ptr %566, ptr %52, align 8, !tbaa !9
  %567 = load i64, ptr %18, align 8, !tbaa !5
  %568 = add nsw i64 %567, 1
  store i64 %568, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #13
  br label %569

569:                                              ; preds = %558, %501
  %570 = load double, ptr %51, align 8, !tbaa !13
  %571 = load double, ptr %49, align 8, !tbaa !13
  %572 = fcmp une double %570, %571
  br i1 %572, label %573, label %625

573:                                              ; preds = %569
  %574 = load double, ptr %49, align 8, !tbaa !13
  %575 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #13
  %576 = fcmp olt double %574, %575
  br i1 %576, label %579, label %577

577:                                              ; preds = %573
  call void @LogAssertFailure(i64 noundef 246, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.25)
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str, i32 noundef 246, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

578:                                              ; No predecessors!
  br label %579

579:                                              ; preds = %578, %573
  %580 = phi i1 [ true, %573 ], [ false, %578 ]
  %581 = load double, ptr %49, align 8, !tbaa !13
  %582 = load double, ptr %51, align 8, !tbaa !13
  %583 = fcmp olt double %581, %582
  br i1 %583, label %586, label %584

584:                                              ; preds = %579
  call void @LogAssertFailure(i64 noundef 247, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.27)
  call void @__assert_fail(ptr noundef @.str.28, ptr noundef @.str, i32 noundef 247, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

585:                                              ; No predecessors!
  br label %586

586:                                              ; preds = %585, %579
  %587 = phi i1 [ true, %579 ], [ false, %585 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #13
  br label %588

588:                                              ; preds = %606, %586
  %589 = load ptr, ptr %46, align 8, !tbaa !9
  %590 = getelementptr inbounds double, ptr %589, i32 1
  store ptr %590, ptr %46, align 8, !tbaa !9
  %591 = load ptr, ptr %26, align 8, !tbaa !9
  %592 = load ptr, ptr %46, align 8, !tbaa !9
  %593 = icmp ule ptr %591, %592
  br i1 %593, label %594, label %600

594:                                              ; preds = %588
  %595 = load ptr, ptr %46, align 8, !tbaa !9
  %596 = load ptr, ptr %26, align 8, !tbaa !9
  %597 = load i64, ptr %28, align 8, !tbaa !5
  %598 = getelementptr inbounds double, ptr %596, i64 %597
  %599 = icmp ult ptr %595, %598
  br i1 %599, label %602, label %600

600:                                              ; preds = %594, %588
  call void @LogAssertFailure(i64 noundef 252, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.7)
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str, i32 noundef 252, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

601:                                              ; No predecessors!
  br label %602

602:                                              ; preds = %601, %594
  %603 = phi i1 [ true, %594 ], [ false, %601 ]
  %604 = load ptr, ptr %46, align 8, !tbaa !9
  %605 = load double, ptr %604, align 8, !tbaa !13
  store double %605, ptr %55, align 8, !tbaa !13
  br label %606

606:                                              ; preds = %602
  %607 = load double, ptr %49, align 8, !tbaa !13
  %608 = load double, ptr %55, align 8, !tbaa !13
  %609 = fcmp oeq double %607, %608
  br i1 %609, label %588, label %610, !llvm.loop !18

610:                                              ; preds = %606
  %611 = load double, ptr %49, align 8, !tbaa !13
  %612 = load double, ptr %55, align 8, !tbaa !13
  %613 = fcmp olt double %611, %612
  br i1 %613, label %616, label %614

614:                                              ; preds = %610
  call void @LogAssertFailure(i64 noundef 255, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.29)
  call void @__assert_fail(ptr noundef @.str.30, ptr noundef @.str, i32 noundef 255, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

615:                                              ; No predecessors!
  br label %616

616:                                              ; preds = %615, %610
  %617 = phi i1 [ true, %610 ], [ false, %615 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #13
  %618 = load double, ptr %49, align 8, !tbaa !13
  %619 = load double, ptr %55, align 8, !tbaa !13
  %620 = call noundef double @_ZN14NAMESPACE_MAIN14ArithmeticMeanEdd(double noundef %618, double noundef %619) #13
  store double %620, ptr %56, align 8, !tbaa !13
  %621 = load double, ptr %56, align 8, !tbaa !13
  %622 = load ptr, ptr %52, align 8, !tbaa !9
  store double %621, ptr %622, align 8, !tbaa !13
  %623 = load i64, ptr %18, align 8, !tbaa !5
  %624 = add nsw i64 %623, 1
  store i64 %624, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #13
  br label %625

625:                                              ; preds = %616, %569
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #13
  br label %939

626:                                              ; preds = %491
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #13
  br label %627

627:                                              ; preds = %645, %626
  %628 = load ptr, ptr %45, align 8, !tbaa !9
  %629 = getelementptr inbounds double, ptr %628, i32 1
  store ptr %629, ptr %45, align 8, !tbaa !9
  %630 = load ptr, ptr %26, align 8, !tbaa !9
  %631 = load ptr, ptr %45, align 8, !tbaa !9
  %632 = icmp ule ptr %630, %631
  br i1 %632, label %633, label %639

633:                                              ; preds = %627
  %634 = load ptr, ptr %45, align 8, !tbaa !9
  %635 = load ptr, ptr %26, align 8, !tbaa !9
  %636 = load i64, ptr %28, align 8, !tbaa !5
  %637 = getelementptr inbounds double, ptr %635, i64 %636
  %638 = icmp ult ptr %634, %637
  br i1 %638, label %641, label %639

639:                                              ; preds = %633, %627
  call void @LogAssertFailure(i64 noundef 267, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.5)
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 267, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

640:                                              ; No predecessors!
  br label %641

641:                                              ; preds = %640, %633
  %642 = phi i1 [ true, %633 ], [ false, %640 ]
  %643 = load ptr, ptr %45, align 8, !tbaa !9
  %644 = load double, ptr %643, align 8, !tbaa !13
  store double %644, ptr %57, align 8, !tbaa !13
  br label %645

645:                                              ; preds = %641
  %646 = load double, ptr %47, align 8, !tbaa !13
  %647 = load double, ptr %57, align 8, !tbaa !13
  %648 = fcmp oeq double %646, %647
  br i1 %648, label %627, label %649, !llvm.loop !19

649:                                              ; preds = %645
  %650 = call noundef double @_ZNSt14numeric_limitsIdE6lowestEv() #13
  %651 = load double, ptr %57, align 8, !tbaa !13
  %652 = fcmp olt double %650, %651
  br i1 %652, label %655, label %653

653:                                              ; preds = %649
  call void @LogAssertFailure(i64 noundef 270, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.31)
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str, i32 noundef 270, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

654:                                              ; No predecessors!
  br label %655

655:                                              ; preds = %654, %649
  %656 = phi i1 [ true, %649 ], [ false, %654 ]
  %657 = load double, ptr %47, align 8, !tbaa !13
  %658 = load double, ptr %57, align 8, !tbaa !13
  %659 = fcmp olt double %657, %658
  br i1 %659, label %662, label %660

660:                                              ; preds = %655
  call void @LogAssertFailure(i64 noundef 271, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.33)
  call void @__assert_fail(ptr noundef @.str.34, ptr noundef @.str, i32 noundef 271, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

661:                                              ; No predecessors!
  br label %662

662:                                              ; preds = %661, %655
  %663 = phi i1 [ true, %655 ], [ false, %661 ]
  %664 = load double, ptr %57, align 8, !tbaa !13
  %665 = load double, ptr %48, align 8, !tbaa !13
  %666 = fcmp ole double %664, %665
  br i1 %666, label %669, label %667

667:                                              ; preds = %662
  call void @LogAssertFailure(i64 noundef 272, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.35)
  call void @__assert_fail(ptr noundef @.str.36, ptr noundef @.str, i32 noundef 272, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

668:                                              ; No predecessors!
  br label %669

669:                                              ; preds = %668, %662
  %670 = phi i1 [ true, %662 ], [ false, %668 ]
  %671 = load double, ptr %57, align 8, !tbaa !13
  %672 = load double, ptr %48, align 8, !tbaa !13
  %673 = fcmp oeq double %671, %672
  br i1 %673, label %674, label %687

674:                                              ; preds = %669
  %675 = load double, ptr %47, align 8, !tbaa !13
  %676 = load double, ptr %48, align 8, !tbaa !13
  %677 = fcmp olt double %675, %676
  br i1 %677, label %680, label %678

678:                                              ; preds = %674
  call void @LogAssertFailure(i64 noundef 279, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.37)
  call void @__assert_fail(ptr noundef @.str.38, ptr noundef @.str, i32 noundef 279, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

679:                                              ; No predecessors!
  br label %680

680:                                              ; preds = %679, %674
  %681 = phi i1 [ true, %674 ], [ false, %679 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #13
  %682 = load double, ptr %47, align 8, !tbaa !13
  %683 = load double, ptr %48, align 8, !tbaa !13
  %684 = call noundef double @_ZN14NAMESPACE_MAIN14ArithmeticMeanEdd(double noundef %682, double noundef %683) #13
  store double %684, ptr %58, align 8, !tbaa !13
  %685 = load double, ptr %58, align 8, !tbaa !13
  %686 = load ptr, ptr %9, align 8, !tbaa !9
  store double %685, ptr %686, align 8, !tbaa !13
  store i64 1, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #13
  br label %938

687:                                              ; preds = %669
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #13
  br label %688

688:                                              ; preds = %706, %687
  %689 = load ptr, ptr %46, align 8, !tbaa !9
  %690 = getelementptr inbounds double, ptr %689, i32 -1
  store ptr %690, ptr %46, align 8, !tbaa !9
  %691 = load ptr, ptr %26, align 8, !tbaa !9
  %692 = load ptr, ptr %46, align 8, !tbaa !9
  %693 = icmp ule ptr %691, %692
  br i1 %693, label %694, label %700

694:                                              ; preds = %688
  %695 = load ptr, ptr %46, align 8, !tbaa !9
  %696 = load ptr, ptr %26, align 8, !tbaa !9
  %697 = load i64, ptr %28, align 8, !tbaa !5
  %698 = getelementptr inbounds double, ptr %696, i64 %697
  %699 = icmp ult ptr %695, %698
  br i1 %699, label %702, label %700

700:                                              ; preds = %694, %688
  call void @LogAssertFailure(i64 noundef 287, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.7)
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str, i32 noundef 287, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

701:                                              ; No predecessors!
  br label %702

702:                                              ; preds = %701, %694
  %703 = phi i1 [ true, %694 ], [ false, %701 ]
  %704 = load ptr, ptr %46, align 8, !tbaa !9
  %705 = load double, ptr %704, align 8, !tbaa !13
  store double %705, ptr %59, align 8, !tbaa !13
  br label %706

706:                                              ; preds = %702
  %707 = load double, ptr %48, align 8, !tbaa !13
  %708 = load double, ptr %59, align 8, !tbaa !13
  %709 = fcmp oeq double %707, %708
  br i1 %709, label %688, label %710, !llvm.loop !20

710:                                              ; preds = %706
  %711 = load double, ptr %59, align 8, !tbaa !13
  %712 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #13
  %713 = fcmp olt double %711, %712
  br i1 %713, label %716, label %714

714:                                              ; preds = %710
  call void @LogAssertFailure(i64 noundef 290, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.39)
  call void @__assert_fail(ptr noundef @.str.40, ptr noundef @.str, i32 noundef 290, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

715:                                              ; No predecessors!
  br label %716

716:                                              ; preds = %715, %710
  %717 = phi i1 [ true, %710 ], [ false, %715 ]
  %718 = load double, ptr %59, align 8, !tbaa !13
  %719 = load double, ptr %48, align 8, !tbaa !13
  %720 = fcmp olt double %718, %719
  br i1 %720, label %723, label %721

721:                                              ; preds = %716
  call void @LogAssertFailure(i64 noundef 291, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.41)
  call void @__assert_fail(ptr noundef @.str.42, ptr noundef @.str, i32 noundef 291, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

722:                                              ; No predecessors!
  br label %723

723:                                              ; preds = %722, %716
  %724 = phi i1 [ true, %716 ], [ false, %722 ]
  %725 = load double, ptr %57, align 8, !tbaa !13
  %726 = load double, ptr %59, align 8, !tbaa !13
  %727 = fcmp ole double %725, %726
  br i1 %727, label %730, label %728

728:                                              ; preds = %723
  call void @LogAssertFailure(i64 noundef 292, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.43)
  call void @__assert_fail(ptr noundef @.str.44, ptr noundef @.str, i32 noundef 292, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

729:                                              ; No predecessors!
  br label %730

730:                                              ; preds = %729, %723
  %731 = phi i1 [ true, %723 ], [ false, %729 ]
  %732 = load double, ptr %47, align 8, !tbaa !13
  %733 = load double, ptr %59, align 8, !tbaa !13
  %734 = fcmp olt double %732, %733
  br i1 %734, label %737, label %735

735:                                              ; preds = %730
  call void @LogAssertFailure(i64 noundef 293, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.45)
  call void @__assert_fail(ptr noundef @.str.46, ptr noundef @.str, i32 noundef 293, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

736:                                              ; No predecessors!
  br label %737

737:                                              ; preds = %736, %730
  %738 = phi i1 [ true, %730 ], [ false, %736 ]
  %739 = load double, ptr %57, align 8, !tbaa !13
  %740 = load double, ptr %59, align 8, !tbaa !13
  %741 = fcmp oeq double %739, %740
  br i1 %741, label %742, label %770

742:                                              ; preds = %737
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #13
  %743 = load double, ptr %57, align 8, !tbaa !13
  store double %743, ptr %60, align 8, !tbaa !13
  %744 = load double, ptr %47, align 8, !tbaa !13
  %745 = load double, ptr %60, align 8, !tbaa !13
  %746 = fcmp olt double %744, %745
  br i1 %746, label %749, label %747

747:                                              ; preds = %742
  call void @LogAssertFailure(i64 noundef 301, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.47)
  call void @__assert_fail(ptr noundef @.str.48, ptr noundef @.str, i32 noundef 301, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

748:                                              ; No predecessors!
  br label %749

749:                                              ; preds = %748, %742
  %750 = phi i1 [ true, %742 ], [ false, %748 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #13
  %751 = load double, ptr %47, align 8, !tbaa !13
  %752 = load double, ptr %60, align 8, !tbaa !13
  %753 = call noundef double @_ZN14NAMESPACE_MAIN14ArithmeticMeanEdd(double noundef %751, double noundef %752) #13
  store double %753, ptr %61, align 8, !tbaa !13
  %754 = load double, ptr %61, align 8, !tbaa !13
  %755 = load ptr, ptr %9, align 8, !tbaa !9
  %756 = getelementptr inbounds double, ptr %755, i64 0
  store double %754, ptr %756, align 8, !tbaa !13
  %757 = load double, ptr %60, align 8, !tbaa !13
  %758 = load double, ptr %48, align 8, !tbaa !13
  %759 = fcmp olt double %757, %758
  br i1 %759, label %762, label %760

760:                                              ; preds = %749
  call void @LogAssertFailure(i64 noundef 305, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.49)
  call void @__assert_fail(ptr noundef @.str.50, ptr noundef @.str, i32 noundef 305, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

761:                                              ; No predecessors!
  br label %762

762:                                              ; preds = %761, %749
  %763 = phi i1 [ true, %749 ], [ false, %761 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #13
  %764 = load double, ptr %60, align 8, !tbaa !13
  %765 = load double, ptr %48, align 8, !tbaa !13
  %766 = call noundef double @_ZN14NAMESPACE_MAIN14ArithmeticMeanEdd(double noundef %764, double noundef %765) #13
  store double %766, ptr %62, align 8, !tbaa !13
  %767 = load double, ptr %62, align 8, !tbaa !13
  %768 = load ptr, ptr %9, align 8, !tbaa !9
  %769 = getelementptr inbounds double, ptr %768, i64 1
  store double %767, ptr %769, align 8, !tbaa !13
  store i64 2, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #13
  br label %937

770:                                              ; preds = %737
  %771 = load double, ptr %59, align 8, !tbaa !13
  %772 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #13
  %773 = fcmp olt double %771, %772
  br i1 %773, label %776, label %774

774:                                              ; preds = %770
  call void @LogAssertFailure(i64 noundef 317, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.39)
  call void @__assert_fail(ptr noundef @.str.40, ptr noundef @.str, i32 noundef 317, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

775:                                              ; No predecessors!
  br label %776

776:                                              ; preds = %775, %770
  %777 = phi i1 [ true, %770 ], [ false, %775 ]
  %778 = load double, ptr %59, align 8, !tbaa !13
  %779 = call noundef double @_ZN14NAMESPACE_MAINL18FloatTickIncrementEd(double noundef %778) #13
  store double %779, ptr %59, align 8, !tbaa !13
  %780 = load double, ptr %57, align 8, !tbaa !13
  %781 = load double, ptr %59, align 8, !tbaa !13
  %782 = fcmp olt double %780, %781
  br i1 %782, label %785, label %783

783:                                              ; preds = %776
  call void @LogAssertFailure(i64 noundef 320, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.51)
  call void @__assert_fail(ptr noundef @.str.52, ptr noundef @.str, i32 noundef 320, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

784:                                              ; No predecessors!
  br label %785

785:                                              ; preds = %784, %776
  %786 = phi i1 [ true, %776 ], [ false, %784 ]
  %787 = load i64, ptr %32, align 8, !tbaa !5
  %788 = icmp ule i64 2, %787
  br i1 %788, label %791, label %789

789:                                              ; preds = %785
  call void @LogAssertFailure(i64 noundef 321, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.53)
  call void @__assert_fail(ptr noundef @.str.54, ptr noundef @.str, i32 noundef 321, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

790:                                              ; No predecessors!
  br label %791

791:                                              ; preds = %790, %785
  %792 = phi i1 [ true, %785 ], [ false, %790 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #13
  %793 = load ptr, ptr %9, align 8, !tbaa !9
  store ptr %793, ptr %63, align 8, !tbaa !9
  %794 = load double, ptr %57, align 8, !tbaa !13
  %795 = load ptr, ptr %63, align 8, !tbaa !9
  store double %794, ptr %795, align 8, !tbaa !13
  %796 = load ptr, ptr %63, align 8, !tbaa !9
  %797 = getelementptr inbounds double, ptr %796, i32 1
  store ptr %797, ptr %63, align 8, !tbaa !9
  %798 = load i64, ptr %32, align 8, !tbaa !5
  %799 = icmp ult i64 2, %798
  br i1 %799, label %800, label %906

800:                                              ; preds = %791
  br label %801

801:                                              ; preds = %800
  br label %802

802:                                              ; preds = %801
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #13
  %803 = load i64, ptr %32, align 8, !tbaa !5
  %804 = sub i64 %803, 1
  store i64 %804, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #13
  %805 = load i64, ptr %64, align 8, !tbaa !5
  %806 = uitofp i64 %805 to double
  store double %806, ptr %65, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #13
  %807 = load double, ptr %59, align 8, !tbaa !13
  %808 = load double, ptr %57, align 8, !tbaa !13
  %809 = fsub double %807, %808
  %810 = load double, ptr %65, align 8, !tbaa !13
  %811 = fdiv double %809, %810
  store double %811, ptr %66, align 8, !tbaa !13
  %812 = load double, ptr %66, align 8, !tbaa !13
  %813 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %812)
  br i1 %813, label %814, label %840

814:                                              ; preds = %802
  %815 = load double, ptr %59, align 8, !tbaa !13
  %816 = load double, ptr %65, align 8, !tbaa !13
  %817 = fdiv double %815, %816
  %818 = load double, ptr %57, align 8, !tbaa !13
  %819 = load double, ptr %65, align 8, !tbaa !13
  %820 = fdiv double %818, %819
  %821 = fsub double %817, %820
  store double %821, ptr %66, align 8, !tbaa !13
  %822 = load double, ptr %66, align 8, !tbaa !13
  %823 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %822)
  br i1 %823, label %824, label %839

824:                                              ; preds = %814
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #13
  %825 = load double, ptr %57, align 8, !tbaa !13
  %826 = load double, ptr %59, align 8, !tbaa !13
  %827 = call noundef double @_ZN14NAMESPACE_MAIN14ArithmeticMeanEdd(double noundef %825, double noundef %826) #13
  store double %827, ptr %67, align 8, !tbaa !13
  %828 = load double, ptr %59, align 8, !tbaa !13
  %829 = load double, ptr %67, align 8, !tbaa !13
  %830 = fcmp une double %828, %829
  br i1 %830, label %833, label %831

831:                                              ; preds = %824
  call void @LogAssertFailure(i64 noundef 349, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.55)
  call void @__assert_fail(ptr noundef @.str.56, ptr noundef @.str, i32 noundef 349, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

832:                                              ; No predecessors!
  br label %833

833:                                              ; preds = %832, %824
  %834 = phi i1 [ true, %824 ], [ false, %832 ]
  %835 = load double, ptr %67, align 8, !tbaa !13
  %836 = load ptr, ptr %63, align 8, !tbaa !9
  store double %835, ptr %836, align 8, !tbaa !13
  %837 = load ptr, ptr %63, align 8, !tbaa !9
  %838 = getelementptr inbounds double, ptr %837, i32 1
  store ptr %838, ptr %63, align 8, !tbaa !9
  store i32 38, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #13
  br label %904

839:                                              ; preds = %814
  br label %840

840:                                              ; preds = %839, %802
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #13
  %841 = load double, ptr %57, align 8, !tbaa !13
  store double %841, ptr %68, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #13
  store i64 1, ptr %69, align 8, !tbaa !5
  br label %842

842:                                              ; preds = %899, %840
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #13
  %843 = load double, ptr %57, align 8, !tbaa !13
  %844 = load double, ptr %66, align 8, !tbaa !13
  %845 = load i64, ptr %69, align 8, !tbaa !5
  %846 = uitofp i64 %845 to double
  %847 = call double @llvm.fmuladd.f64(double %844, double %846, double %843)
  store double %847, ptr %70, align 8, !tbaa !13
  %848 = load double, ptr %59, align 8, !tbaa !13
  %849 = load double, ptr %70, align 8, !tbaa !13
  %850 = fcmp ole double %848, %849
  %851 = xor i1 %850, true
  %852 = xor i1 %851, true
  %853 = zext i1 %852 to i64
  %854 = call i64 @llvm.expect.i64(i64 %853, i64 0)
  %855 = icmp ne i64 %854, 0
  br i1 %855, label %856, label %857

856:                                              ; preds = %842
  store i32 39, ptr %16, align 4
  br label %896

857:                                              ; preds = %842
  %858 = load double, ptr %68, align 8, !tbaa !13
  %859 = load double, ptr %70, align 8, !tbaa !13
  %860 = fcmp une double %858, %859
  %861 = xor i1 %860, true
  %862 = xor i1 %861, true
  %863 = zext i1 %862 to i64
  %864 = call i64 @llvm.expect.i64(i64 %863, i64 1)
  %865 = icmp ne i64 %864, 0
  br i1 %865, label %866, label %893

866:                                              ; preds = %857
  %867 = load double, ptr %68, align 8, !tbaa !13
  %868 = load double, ptr %70, align 8, !tbaa !13
  %869 = fcmp olt double %867, %868
  br i1 %869, label %872, label %870

870:                                              ; preds = %866
  call void @LogAssertFailure(i64 noundef 365, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.57)
  call void @__assert_fail(ptr noundef @.str.58, ptr noundef @.str, i32 noundef 365, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

871:                                              ; No predecessors!
  br label %872

872:                                              ; preds = %871, %866
  %873 = phi i1 [ true, %866 ], [ false, %871 ]
  %874 = load ptr, ptr %9, align 8, !tbaa !9
  %875 = load ptr, ptr %63, align 8, !tbaa !9
  %876 = icmp ult ptr %874, %875
  br i1 %876, label %877, label %884

877:                                              ; preds = %872
  %878 = load ptr, ptr %63, align 8, !tbaa !9
  %879 = load ptr, ptr %9, align 8, !tbaa !9
  %880 = load i64, ptr %32, align 8, !tbaa !5
  %881 = getelementptr inbounds double, ptr %879, i64 %880
  %882 = getelementptr inbounds double, ptr %881, i64 -1
  %883 = icmp ult ptr %878, %882
  br i1 %883, label %886, label %884

884:                                              ; preds = %877, %872
  call void @LogAssertFailure(i64 noundef 367, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.59)
  call void @__assert_fail(ptr noundef @.str.60, ptr noundef @.str, i32 noundef 367, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

885:                                              ; No predecessors!
  br label %886

886:                                              ; preds = %885, %877
  %887 = phi i1 [ true, %877 ], [ false, %885 ]
  %888 = load double, ptr %70, align 8, !tbaa !13
  %889 = load ptr, ptr %63, align 8, !tbaa !9
  store double %888, ptr %889, align 8, !tbaa !13
  %890 = load ptr, ptr %63, align 8, !tbaa !9
  %891 = getelementptr inbounds double, ptr %890, i32 1
  store ptr %891, ptr %63, align 8, !tbaa !9
  %892 = load double, ptr %70, align 8, !tbaa !13
  store double %892, ptr %68, align 8, !tbaa !13
  br label %893

893:                                              ; preds = %886, %857
  %894 = load i64, ptr %69, align 8, !tbaa !5
  %895 = add i64 %894, 1
  store i64 %895, ptr %69, align 8, !tbaa !5
  store i32 0, ptr %16, align 4
  br label %896

896:                                              ; preds = %893, %856
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #13
  %897 = load i32, ptr %16, align 4
  switch i32 %897, label %998 [
    i32 0, label %898
    i32 39, label %903
  ]

898:                                              ; preds = %896
  br label %899

899:                                              ; preds = %898
  %900 = load i64, ptr %64, align 8, !tbaa !5
  %901 = load i64, ptr %69, align 8, !tbaa !5
  %902 = icmp ne i64 %900, %901
  br i1 %902, label %842, label %903, !llvm.loop !21

903:                                              ; preds = %899, %896
  store i32 38, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #13
  br label %904

904:                                              ; preds = %903, %833
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #13
  br label %905

905:                                              ; preds = %904
  br label %906

906:                                              ; preds = %905, %791
  %907 = load ptr, ptr %9, align 8, !tbaa !9
  %908 = load ptr, ptr %63, align 8, !tbaa !9
  %909 = icmp ult ptr %907, %908
  br i1 %909, label %910, label %916

910:                                              ; preds = %906
  %911 = load ptr, ptr %63, align 8, !tbaa !9
  %912 = load ptr, ptr %9, align 8, !tbaa !9
  %913 = load i64, ptr %32, align 8, !tbaa !5
  %914 = getelementptr inbounds double, ptr %912, i64 %913
  %915 = icmp ult ptr %911, %914
  br i1 %915, label %918, label %916

916:                                              ; preds = %910, %906
  call void @LogAssertFailure(i64 noundef 380, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.61)
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str, i32 noundef 380, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

917:                                              ; No predecessors!
  br label %918

918:                                              ; preds = %917, %910
  %919 = phi i1 [ true, %910 ], [ false, %917 ]
  %920 = load double, ptr %59, align 8, !tbaa !13
  %921 = load ptr, ptr %63, align 8, !tbaa !9
  store double %920, ptr %921, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #13
  %922 = load ptr, ptr %63, align 8, !tbaa !9
  %923 = load ptr, ptr %9, align 8, !tbaa !9
  %924 = ptrtoint ptr %922 to i64
  %925 = ptrtoint ptr %923 to i64
  %926 = sub i64 %924, %925
  %927 = sdiv exact i64 %926, 8
  %928 = add i64 %927, 1
  store i64 %928, ptr %71, align 8, !tbaa !5
  %929 = load i64, ptr %71, align 8, !tbaa !5
  store i64 %929, ptr %18, align 8, !tbaa !5
  %930 = load i64, ptr %18, align 8, !tbaa !5
  %931 = load i64, ptr %29, align 8, !tbaa !5
  %932 = icmp sle i64 %930, %931
  br i1 %932, label %935, label %933

933:                                              ; preds = %918
  call void @LogAssertFailure(i64 noundef 391, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.63)
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str, i32 noundef 391, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

934:                                              ; No predecessors!
  br label %935

935:                                              ; preds = %934, %918
  %936 = phi i1 [ true, %918 ], [ false, %934 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #13
  br label %937

937:                                              ; preds = %935, %762
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #13
  br label %938

938:                                              ; preds = %937, %680
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #13
  br label %939

939:                                              ; preds = %938, %625
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #13
  br label %940

940:                                              ; preds = %939, %420
  store i32 0, ptr %16, align 4
  br label %941

941:                                              ; preds = %940, %320, %303
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #13
  br label %942

942:                                              ; preds = %941, %285, %269
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #13
  %943 = load i32, ptr %16, align 4
  switch i32 %943, label %947 [
    i32 0, label %944
  ]

944:                                              ; preds = %942
  br label %945

945:                                              ; preds = %944, %227
  %946 = load ptr, ptr %26, align 8, !tbaa !9
  call void @free(ptr noundef %946) #13
  store i32 0, ptr %17, align 4, !tbaa !11
  store i32 0, ptr %16, align 4
  br label %947

947:                                              ; preds = %945, %942
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #13
  br label %948

948:                                              ; preds = %947, %214
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #13
  br label %949

949:                                              ; preds = %948, %194
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #13
  %950 = load i32, ptr %16, align 4
  switch i32 %950, label %996 [
    i32 0, label %951
    i32 12, label %953
  ]

951:                                              ; preds = %949
  br label %952

952:                                              ; preds = %951, %150
  br label %953

953:                                              ; preds = %952, %949, %182, %166
  %954 = load ptr, ptr %8, align 8, !tbaa !9
  %955 = icmp ne ptr null, %954
  br i1 %955, label %958, label %956

956:                                              ; preds = %953
  call void @LogAssertFailure(i64 noundef 403, ptr noundef @.str, ptr noundef @__func__.CutWinsorized, ptr noundef @.str.3)
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str, i32 noundef 403, ptr noundef @__PRETTY_FUNCTION__.CutWinsorized) #15
  unreachable

957:                                              ; No predecessors!
  br label %958

958:                                              ; preds = %957, %953
  %959 = phi i1 [ true, %953 ], [ false, %957 ]
  %960 = load i64, ptr %18, align 8, !tbaa !5
  %961 = load ptr, ptr %8, align 8, !tbaa !9
  store i64 %960, ptr %961, align 8, !tbaa !5
  br label %962

962:                                              ; preds = %958, %125
  br label %963

963:                                              ; preds = %962
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #13
  store i32 3, ptr %72, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #13
  store i32 4, ptr %73, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #13
  %964 = load i32, ptr @g_traceLevel, align 4, !tbaa !11
  store i32 %964, ptr %74, align 4, !tbaa !11
  %965 = load i32, ptr %74, align 4, !tbaa !11
  %966 = icmp sle i32 3, %965
  br i1 %966, label %967, label %992

967:                                              ; preds = %963
  br label %968

968:                                              ; preds = %967
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #13
  %969 = load i32, ptr %74, align 4, !tbaa !11
  %970 = icmp slt i32 %969, 4
  br i1 %970, label %971, label %982

971:                                              ; preds = %968
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #13
  store ptr @_ZN14NAMESPACE_MAINL23g_cLogExitCutWinsorizedE, ptr %76, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #13
  %972 = load i32, ptr @_ZN14NAMESPACE_MAINL23g_cLogExitCutWinsorizedE, align 4, !tbaa !11
  %973 = sub nsw i32 %972, 1
  store i32 %973, ptr %77, align 4, !tbaa !11
  %974 = load i32, ptr %77, align 4, !tbaa !11
  %975 = icmp slt i32 %974, 0
  br i1 %975, label %976, label %977

976:                                              ; preds = %971
  store i32 43, ptr %16, align 4
  br label %979

977:                                              ; preds = %971
  %978 = load i32, ptr %77, align 4, !tbaa !11
  store i32 %978, ptr @_ZN14NAMESPACE_MAINL23g_cLogExitCutWinsorizedE, align 4, !tbaa !11
  store i32 3, ptr %75, align 4, !tbaa !11
  store i32 0, ptr %16, align 4
  br label %979

979:                                              ; preds = %977, %976
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #13
  %980 = load i32, ptr %16, align 4
  switch i32 %980, label %987 [
    i32 0, label %981
  ]

981:                                              ; preds = %979
  br label %983

982:                                              ; preds = %968
  store i32 4, ptr %75, align 4, !tbaa !11
  br label %983

983:                                              ; preds = %982, %981
  %984 = load i32, ptr %75, align 4, !tbaa !11
  %985 = load i64, ptr %18, align 8, !tbaa !5
  %986 = load i32, ptr %17, align 4, !tbaa !11
  call void (i32, ptr, ...) @InteralLogWithArguments(i32 noundef %984, ptr noundef @_ZZ13CutWinsorizedE13LOG__sMessage__10_, i64 noundef %985, i32 noundef %986)
  store i32 0, ptr %16, align 4
  br label %987

987:                                              ; preds = %983, %979
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #13
  %988 = load i32, ptr %16, align 4
  switch i32 %988, label %998 [
    i32 0, label %989
    i32 43, label %991
  ]

989:                                              ; preds = %987
  br label %990

990:                                              ; preds = %989
  br label %991

991:                                              ; preds = %990, %987
  br label %992

992:                                              ; preds = %991, %963
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #13
  br label %993

993:                                              ; preds = %992
  br label %994

994:                                              ; preds = %993
  %995 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %995, ptr %5, align 4
  store i32 1, ptr %16, align 4
  br label %996

996:                                              ; preds = %994, %949
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #13
  %997 = load i32, ptr %5, align 4
  ret i32 %997

998:                                              ; preds = %987, %896, %104
  unreachable
}

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

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

declare void @InteralLogWithArguments(i32 noundef, ptr noundef, ...) #2

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none)
declare i64 @llvm.expect.i64(i64, i64) #3

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImlEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuesr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef, i64 noundef) #4

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #5

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #6

; Function Attrs: nounwind
declare noundef i64 @_ZN14NAMESPACE_MAIN37RemoveMissingValsAndReplaceInfinitiesEmPd(i64 noundef, ptr noundef) #7

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

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

; Function Attrs: nounwind
declare void @free(ptr noundef) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIPdEvT_S1_(ptr noundef, ptr noundef) #9

; Function Attrs: nounwind
declare noundef double @_ZN14NAMESPACE_MAIN14ArithmeticMeanEdd(double noundef, double noundef) #7

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef, i64 noundef) #4

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare hidden noundef double @_ZN14NAMESPACE_MAINL18FloatTickIncrementEd(double noundef) #11

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #12

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind willreturn memory(none) }
attributes #4 = { 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 #5 = { nounwind allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { 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 #11 = { alwaysinline 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 #12 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #13 = { nounwind }
attributes #14 = { nounwind allocsize(0) }
attributes #15 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}
!20 = distinct !{!20, !16}
!21 = distinct !{!21, !16}


; 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
@_ZN14NAMESPACE_MAINL24g_cLogEnterCutWinsorizedE = external hidden local_unnamed_addr global i32, align 4
@_ZZ13CutWinsorizedE13LOG__sMessage = external hidden constant [106 x i8], align 16
@_ZZ13CutWinsorizedE13LOG__sMessage_0 = external hidden constant [46 x i8], align 16
@_ZZ13CutWinsorizedE13LOG__sMessage_1 = external hidden constant [48 x i8], align 16
@_ZZ13CutWinsorizedE13LOG__sMessage_2 = external hidden constant [59 x i8], align 16
@_ZZ13CutWinsorizedE13LOG__sMessage_3 = external hidden constant [43 x i8], align 16
@_ZZ13CutWinsorizedE13LOG__sMessage_4 = external hidden constant [84 x i8], align 16
@_ZZ13CutWinsorizedE13LOG__sMessage_5 = external hidden constant [44 x i8], align 16
@.str = external hidden unnamed_addr constant [87 x i8], align 1
@__func__.CutWinsorized = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [44 x i8], align 1
@__PRETTY_FUNCTION__.CutWinsorized = external hidden unnamed_addr constant [83 x i8], align 1
@_ZZ13CutWinsorizedE13LOG__sMessage_6 = external hidden constant [49 x i8], align 16
@_ZZ13CutWinsorizedE13LOG__sMessage_7 = external hidden constant [56 x i8], align 16
@_ZZ13CutWinsorizedE13LOG__sMessage_8 = external hidden constant [83 x i8], align 16
@_ZZ13CutWinsorizedE13LOG__sMessage_9 = external hidden constant [58 x i8], align 16
@.str.5 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [53 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 [19 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [29 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 [27 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [131 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [134 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [122 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [29 x i8], align 1
@_ZN14NAMESPACE_MAINL23g_cLogExitCutWinsorizedE = external hidden local_unnamed_addr global i32, align 4
@_ZZ13CutWinsorizedE13LOG__sMessage__10_ = external hidden constant [47 x i8], align 16

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @CutWinsorized(i64 noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) local_unnamed_addr #0 {
  %5 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %6 = icmp sgt i32 %5, 2
  br i1 %6, label %7, label %.critedge

7:                                                ; preds = %4
  %8 = icmp eq i32 %5, 3
  br i1 %8, label %9, label %14

9:                                                ; preds = %7
  %10 = load i32, ptr @_ZN14NAMESPACE_MAINL24g_cLogEnterCutWinsorizedE, align 4, !tbaa !5
  %11 = icmp sgt i32 %10, 0
  br i1 %11, label %12, label %.critedge

12:                                               ; preds = %9
  %13 = add nsw i32 %10, -1
  store i32 %13, ptr @_ZN14NAMESPACE_MAINL24g_cLogEnterCutWinsorizedE, align 4, !tbaa !5
  br label %14

14:                                               ; preds = %12, %7
  %.1 = phi i32 [ 3, %12 ], [ 4, %7 ]
  tail call void (i32, ptr, ...) @InteralLogWithArguments(i32 noundef %.1, ptr noundef nonnull @_ZZ13CutWinsorizedE13LOG__sMessage, i64 noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3)
  br label %.critedge

.critedge:                                        ; preds = %14, %9, %4
  %15 = icmp eq ptr %2, null
  br i1 %15, label %16, label %20, !prof !9

16:                                               ; preds = %.critedge
  %17 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %18 = icmp sgt i32 %17, 0
  br i1 %18, label %19, label %.critedge386

19:                                               ; preds = %16
  tail call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef nonnull @_ZZ13CutWinsorizedE13LOG__sMessage_0)
  br label %304

20:                                               ; preds = %.critedge
  %21 = icmp slt i64 %0, 2
  br i1 %21, label %22, label %28, !prof !9

22:                                               ; preds = %20
  %23 = icmp slt i64 %0, 0
  br i1 %23, label %24, label %303, !prof !9

24:                                               ; preds = %22
  %25 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %26 = icmp sgt i32 %25, 0
  br i1 %26, label %27, label %303

27:                                               ; preds = %24
  tail call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef nonnull @_ZZ13CutWinsorizedE13LOG__sMessage_1)
  br label %303

28:                                               ; preds = %20
  %29 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImlEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuesr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef %0) #12
  br i1 %29, label %30, label %34, !prof !9

30:                                               ; preds = %28
  %31 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %32 = icmp sgt i32 %31, 1
  br i1 %32, label %33, label %303

33:                                               ; preds = %30
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ13CutWinsorizedE13LOG__sMessage_2)
  br label %303

34:                                               ; preds = %28
  %35 = icmp eq ptr %1, null
  br i1 %35, label %36, label %40, !prof !9

36:                                               ; preds = %34
  %37 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %38 = icmp sgt i32 %37, 0
  br i1 %38, label %39, label %303

39:                                               ; preds = %36
  tail call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef nonnull @_ZZ13CutWinsorizedE13LOG__sMessage_3)
  br label %303

40:                                               ; preds = %34
  %41 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef 8, i64 noundef %0) #12
  br i1 %41, label %42, label %46

42:                                               ; preds = %40
  %43 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %44 = icmp sgt i32 %43, 1
  br i1 %44, label %45, label %303

45:                                               ; preds = %42
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ13CutWinsorizedE13LOG__sMessage_4)
  br label %303

46:                                               ; preds = %40
  %47 = shl i64 %0, 3
  %48 = tail call noalias ptr @malloc(i64 noundef %47) #13
  %49 = icmp eq ptr %48, null
  br i1 %49, label %50, label %54, !prof !9

50:                                               ; preds = %46
  %51 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %52 = icmp sgt i32 %51, 0
  br i1 %52, label %53, label %303

53:                                               ; preds = %50
  tail call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef nonnull @_ZZ13CutWinsorizedE13LOG__sMessage_5)
  br label %303

54:                                               ; preds = %46
  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %48, ptr nonnull align 8 %1, i64 %47, i1 false)
  %55 = tail call noundef i64 @_ZN14NAMESPACE_MAIN37RemoveMissingValsAndReplaceInfinitiesEmPd(i64 noundef %0, ptr noundef nonnull %48) #12
  %.not = icmp ugt i64 %55, %0
  br i1 %.not, label %56, label %57

56:                                               ; preds = %54
  tail call void @LogAssertFailure(i64 noundef 107, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.1)
  tail call void @__assert_fail(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, i32 noundef 107, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

57:                                               ; preds = %54
  %58 = icmp ugt i64 %55, 1
  br i1 %58, label %59, label %.thread394, !prof !10

59:                                               ; preds = %57
  %60 = load i64, ptr %2, align 8, !tbaa !11
  %61 = icmp slt i64 %60, 1
  br i1 %61, label %62, label %68, !prof !9

62:                                               ; preds = %59
  tail call void @free(ptr noundef nonnull %48) #12
  %63 = icmp slt i64 %60, 0
  br i1 %63, label %64, label %303, !prof !9

64:                                               ; preds = %62
  %65 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %66 = icmp sgt i32 %65, 0
  br i1 %66, label %67, label %303

67:                                               ; preds = %64
  tail call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef nonnull @_ZZ13CutWinsorizedE13LOG__sMessage_6)
  br label %303

68:                                               ; preds = %59
  %69 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImlEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuesr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef %60) #12
  br i1 %69, label %70, label %75, !prof !9

70:                                               ; preds = %68
  %71 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %72 = icmp sgt i32 %71, 1
  br i1 %72, label %73, label %74

73:                                               ; preds = %70
  tail call void @InteralLogWithoutArguments(i32 noundef 2, ptr noundef nonnull @_ZZ13CutWinsorizedE13LOG__sMessage_7)
  br label %74

74:                                               ; preds = %73, %70
  tail call void @free(ptr noundef nonnull %48) #12
  br label %303

75:                                               ; preds = %68
  %76 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef 8, i64 noundef %60) #12
  br i1 %76, label %77, label %82, !prof !9

77:                                               ; preds = %75
  %78 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %79 = icmp sgt i32 %78, 0
  br i1 %79, label %80, label %81

80:                                               ; preds = %77
  tail call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef nonnull @_ZZ13CutWinsorizedE13LOG__sMessage_8)
  br label %81

81:                                               ; preds = %80, %77
  tail call void @free(ptr noundef nonnull %48) #12
  br label %303

82:                                               ; preds = %75
  %83 = icmp eq ptr %3, null
  br i1 %83, label %84, label %89, !prof !9

84:                                               ; preds = %82
  %85 = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %86 = icmp sgt i32 %85, 0
  br i1 %86, label %87, label %88

87:                                               ; preds = %84
  tail call void @InteralLogWithoutArguments(i32 noundef 1, ptr noundef nonnull @_ZZ13CutWinsorizedE13LOG__sMessage_9)
  br label %88

88:                                               ; preds = %87, %84
  tail call void @free(ptr noundef nonnull %48) #12
  br label %303

89:                                               ; preds = %82
  %90 = getelementptr inbounds double, ptr %48, i64 %55
  tail call void @_ZSt4sortIPdEvT_S1_(ptr noundef nonnull %48, ptr noundef nonnull %90)
  %91 = icmp eq i64 %60, 1
  br i1 %91, label %92, label %121, !prof !9

92:                                               ; preds = %89
  %93 = load double, ptr %48, align 8, !tbaa !13
  %94 = add nsw i64 %55, -1
  %95 = getelementptr inbounds double, ptr %48, i64 %94
  %96 = load double, ptr %95, align 8, !tbaa !13
  %97 = fcmp une double %93, %96
  br i1 %97, label %98, label %.thread394, !prof !10

98:                                               ; preds = %92
  %99 = lshr i64 %55, 1
  %100 = getelementptr inbounds double, ptr %48, i64 %99
  %101 = and i64 %94, 1
  %102 = sub nsw i64 0, %101
  %103 = getelementptr inbounds double, ptr %100, i64 %102
  br label %104

104:                                              ; preds = %112, %98
  %.0307 = phi ptr [ %103, %98 ], [ %106, %112 ]
  %.0306 = phi ptr [ %100, %98 ], [ %105, %112 ]
  %105 = getelementptr inbounds i8, ptr %.0306, i64 -8
  %106 = getelementptr inbounds i8, ptr %.0307, i64 8
  %.not370 = icmp ule ptr %48, %105
  %107 = icmp ult ptr %105, %90
  %or.cond = and i1 %.not370, %107
  br i1 %or.cond, label %109, label %108

108:                                              ; preds = %104
  tail call void @LogAssertFailure(i64 noundef 176, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.5)
  tail call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str, i32 noundef 176, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

109:                                              ; preds = %104
  %.not371 = icmp ule ptr %48, %106
  %110 = icmp ult ptr %106, %90
  %or.cond372 = and i1 %.not371, %110
  br i1 %or.cond372, label %112, label %111

111:                                              ; preds = %109
  tail call void @LogAssertFailure(i64 noundef 178, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.7)
  tail call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str, i32 noundef 178, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

112:                                              ; preds = %109
  %113 = load double, ptr %105, align 8, !tbaa !13
  %114 = load double, ptr %106, align 8, !tbaa !13
  %115 = fcmp oeq double %113, %114
  br i1 %115, label %104, label %116, !prof !10, !llvm.loop !15

116:                                              ; preds = %112
  %117 = fcmp olt double %113, %114
  br i1 %117, label %119, label %118

118:                                              ; preds = %116
  tail call void @LogAssertFailure(i64 noundef 182, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.9)
  tail call void @__assert_fail(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, i32 noundef 182, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

119:                                              ; preds = %116
  %120 = tail call noundef double @_ZN14NAMESPACE_MAIN14ArithmeticMeanEdd(double noundef %113, double noundef %114) #12
  store double %120, ptr %3, align 8, !tbaa !13
  br label %.thread394

121:                                              ; preds = %89
  %122 = tail call noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef 1, i64 noundef %60) #12
  br i1 %122, label %123, label %124

123:                                              ; preds = %121
  tail call void @LogAssertFailure(i64 noundef 196, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.11)
  tail call void @__assert_fail(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str, i32 noundef 196, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

124:                                              ; preds = %121
  %125 = add nuw i64 %60, 1
  %126 = add nsw i64 %55, -1
  %127 = udiv i64 %126, %125
  %128 = icmp ult i64 %127, %55
  br i1 %128, label %130, label %129

129:                                              ; preds = %124
  tail call void @LogAssertFailure(i64 noundef 200, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.15)
  tail call void @__assert_fail(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str, i32 noundef 200, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

130:                                              ; preds = %124
  %131 = getelementptr inbounds double, ptr %48, i64 %127
  %132 = xor i64 %127, -1
  %133 = getelementptr double, ptr %90, i64 %132
  %.not363 = icmp ule ptr %48, %133
  %134 = icmp ult ptr %133, %90
  %or.cond374 = and i1 %.not363, %134
  br i1 %or.cond374, label %136, label %135

135:                                              ; preds = %130
  tail call void @LogAssertFailure(i64 noundef 208, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.7)
  tail call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str, i32 noundef 208, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

136:                                              ; preds = %130
  %137 = load double, ptr %131, align 8, !tbaa !13
  %138 = load double, ptr %133, align 8, !tbaa !13
  %139 = fcmp ugt double %137, %138
  br i1 %139, label %140, label %141

140:                                              ; preds = %136
  tail call void @LogAssertFailure(i64 noundef 212, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.17)
  tail call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str, i32 noundef 212, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

141:                                              ; preds = %136
  %142 = fcmp oeq double %137, %138
  br i1 %142, label %143, label %.preheader404, !prof !9

143:                                              ; preds = %141
  %144 = load double, ptr %48, align 8, !tbaa !13
  %145 = getelementptr inbounds double, ptr %48, i64 %126
  %146 = load double, ptr %145, align 8, !tbaa !13
  %147 = fcmp une double %144, %137
  br i1 %147, label %148, label %167

148:                                              ; preds = %143
  %149 = tail call noundef double @_ZNSt14numeric_limitsIdE6lowestEv() #12
  %150 = fcmp olt double %149, %137
  br i1 %150, label %152, label %151

151:                                              ; preds = %148
  tail call void @LogAssertFailure(i64 noundef 228, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.19)
  tail call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str, i32 noundef 228, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

152:                                              ; preds = %148
  %153 = fcmp olt double %144, %137
  br i1 %153, label %.preheader402, label %154

154:                                              ; preds = %152
  tail call void @LogAssertFailure(i64 noundef 229, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.21)
  tail call void @__assert_fail(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str, i32 noundef 229, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

.preheader402:                                    ; preds = %152, %158
  %.0313 = phi ptr [ %155, %158 ], [ %131, %152 ]
  %155 = getelementptr inbounds i8, ptr %.0313, i64 -8
  %.not368 = icmp ule ptr %48, %155
  %156 = icmp ult ptr %155, %90
  %or.cond375 = and i1 %.not368, %156
  br i1 %or.cond375, label %158, label %157

157:                                              ; preds = %.preheader402
  tail call void @LogAssertFailure(i64 noundef 234, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.5)
  tail call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str, i32 noundef 234, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

158:                                              ; preds = %.preheader402
  %159 = load double, ptr %155, align 8, !tbaa !13
  %160 = fcmp oeq double %137, %159
  br i1 %160, label %.preheader402, label %161, !llvm.loop !17

161:                                              ; preds = %158
  %162 = fcmp olt double %159, %137
  br i1 %162, label %164, label %163

163:                                              ; preds = %161
  tail call void @LogAssertFailure(i64 noundef 237, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.23)
  tail call void @__assert_fail(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str, i32 noundef 237, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

164:                                              ; preds = %161
  %165 = tail call noundef double @_ZN14NAMESPACE_MAIN14ArithmeticMeanEdd(double noundef %159, double noundef %137) #12
  store double %165, ptr %3, align 8, !tbaa !13
  %166 = getelementptr inbounds i8, ptr %3, i64 8
  br label %167

167:                                              ; preds = %164, %143
  %.0318 = phi ptr [ %166, %164 ], [ %3, %143 ]
  %.1299 = phi i64 [ 1, %164 ], [ 0, %143 ]
  %168 = fcmp une double %146, %137
  br i1 %168, label %169, label %.thread394

169:                                              ; preds = %167
  %170 = tail call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #12
  %171 = fcmp olt double %137, %170
  br i1 %171, label %173, label %172

172:                                              ; preds = %169
  tail call void @LogAssertFailure(i64 noundef 246, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.25)
  tail call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str, i32 noundef 246, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

173:                                              ; preds = %169
  %174 = fcmp olt double %137, %146
  br i1 %174, label %.preheader, label %175

175:                                              ; preds = %173
  tail call void @LogAssertFailure(i64 noundef 247, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.27)
  tail call void @__assert_fail(ptr noundef nonnull @.str.28, ptr noundef nonnull @.str, i32 noundef 247, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

.preheader:                                       ; preds = %173, %179
  %.0316 = phi ptr [ %176, %179 ], [ %133, %173 ]
  %176 = getelementptr inbounds i8, ptr %.0316, i64 8
  %.not369 = icmp ule ptr %48, %176
  %177 = icmp ult ptr %176, %90
  %or.cond376 = and i1 %.not369, %177
  br i1 %or.cond376, label %179, label %178

178:                                              ; preds = %.preheader
  tail call void @LogAssertFailure(i64 noundef 252, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.7)
  tail call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str, i32 noundef 252, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

179:                                              ; preds = %.preheader
  %180 = load double, ptr %176, align 8, !tbaa !13
  %181 = fcmp oeq double %137, %180
  br i1 %181, label %.preheader, label %182, !llvm.loop !18

182:                                              ; preds = %179
  %183 = fcmp olt double %137, %180
  br i1 %183, label %185, label %184

184:                                              ; preds = %182
  tail call void @LogAssertFailure(i64 noundef 255, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.29)
  tail call void @__assert_fail(ptr noundef nonnull @.str.30, ptr noundef nonnull @.str, i32 noundef 255, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

185:                                              ; preds = %182
  %186 = tail call noundef double @_ZN14NAMESPACE_MAIN14ArithmeticMeanEdd(double noundef %137, double noundef %180) #12
  store double %186, ptr %.0318, align 8, !tbaa !13
  %187 = add nuw nsw i64 %.1299, 1
  br label %.thread394

.preheader404:                                    ; preds = %141, %191
  %.1314 = phi ptr [ %188, %191 ], [ %131, %141 ]
  %188 = getelementptr inbounds i8, ptr %.1314, i64 8
  %.not364 = icmp ule ptr %48, %188
  %189 = icmp ult ptr %188, %90
  %or.cond377 = and i1 %.not364, %189
  br i1 %or.cond377, label %191, label %190

190:                                              ; preds = %.preheader404
  tail call void @LogAssertFailure(i64 noundef 267, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.5)
  tail call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str, i32 noundef 267, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

191:                                              ; preds = %.preheader404
  %192 = load double, ptr %188, align 8, !tbaa !13
  %193 = fcmp oeq double %137, %192
  br i1 %193, label %.preheader404, label %194, !llvm.loop !19

194:                                              ; preds = %191
  %195 = tail call noundef double @_ZNSt14numeric_limitsIdE6lowestEv() #12
  %196 = fcmp olt double %195, %192
  br i1 %196, label %198, label %197

197:                                              ; preds = %194
  tail call void @LogAssertFailure(i64 noundef 270, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.31)
  tail call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str, i32 noundef 270, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

198:                                              ; preds = %194
  %199 = fcmp olt double %137, %192
  br i1 %199, label %201, label %200

200:                                              ; preds = %198
  tail call void @LogAssertFailure(i64 noundef 271, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.33)
  tail call void @__assert_fail(ptr noundef nonnull @.str.34, ptr noundef nonnull @.str, i32 noundef 271, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

201:                                              ; preds = %198
  %202 = fcmp ugt double %192, %138
  br i1 %202, label %203, label %204

203:                                              ; preds = %201
  tail call void @LogAssertFailure(i64 noundef 272, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.35)
  tail call void @__assert_fail(ptr noundef nonnull @.str.36, ptr noundef nonnull @.str, i32 noundef 272, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

204:                                              ; preds = %201
  %205 = fcmp oeq double %192, %138
  br i1 %205, label %206, label %.preheader403

206:                                              ; preds = %204
  %207 = fcmp olt double %137, %138
  br i1 %207, label %209, label %208

208:                                              ; preds = %206
  tail call void @LogAssertFailure(i64 noundef 279, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.37)
  tail call void @__assert_fail(ptr noundef nonnull @.str.38, ptr noundef nonnull @.str, i32 noundef 279, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

209:                                              ; preds = %206
  %210 = tail call noundef double @_ZN14NAMESPACE_MAIN14ArithmeticMeanEdd(double noundef %137, double noundef %138) #12
  store double %210, ptr %3, align 8, !tbaa !13
  br label %.thread394

.preheader403:                                    ; preds = %204, %214
  %.1317 = phi ptr [ %211, %214 ], [ %133, %204 ]
  %211 = getelementptr inbounds i8, ptr %.1317, i64 -8
  %.not365 = icmp ule ptr %48, %211
  %212 = icmp ult ptr %211, %90
  %or.cond378 = and i1 %.not365, %212
  br i1 %or.cond378, label %214, label %213

213:                                              ; preds = %.preheader403
  tail call void @LogAssertFailure(i64 noundef 287, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.7)
  tail call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str, i32 noundef 287, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

214:                                              ; preds = %.preheader403
  %215 = load double, ptr %211, align 8, !tbaa !13
  %216 = fcmp oeq double %138, %215
  br i1 %216, label %.preheader403, label %217, !llvm.loop !20

217:                                              ; preds = %214
  %218 = tail call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #12
  %219 = fcmp olt double %215, %218
  br i1 %219, label %221, label %220

220:                                              ; preds = %217
  tail call void @LogAssertFailure(i64 noundef 290, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.39)
  tail call void @__assert_fail(ptr noundef nonnull @.str.40, ptr noundef nonnull @.str, i32 noundef 290, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

221:                                              ; preds = %217
  %222 = fcmp olt double %215, %138
  br i1 %222, label %224, label %223

223:                                              ; preds = %221
  tail call void @LogAssertFailure(i64 noundef 291, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.41)
  tail call void @__assert_fail(ptr noundef nonnull @.str.42, ptr noundef nonnull @.str, i32 noundef 291, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

224:                                              ; preds = %221
  %225 = fcmp ugt double %192, %215
  br i1 %225, label %226, label %227

226:                                              ; preds = %224
  tail call void @LogAssertFailure(i64 noundef 292, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.43)
  tail call void @__assert_fail(ptr noundef nonnull @.str.44, ptr noundef nonnull @.str, i32 noundef 292, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

227:                                              ; preds = %224
  %228 = fcmp olt double %137, %215
  br i1 %228, label %230, label %229

229:                                              ; preds = %227
  tail call void @LogAssertFailure(i64 noundef 293, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.45)
  tail call void @__assert_fail(ptr noundef nonnull @.str.46, ptr noundef nonnull @.str, i32 noundef 293, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

230:                                              ; preds = %227
  %231 = fcmp oeq double %192, %215
  br i1 %231, label %232, label %239

232:                                              ; preds = %230
  %233 = tail call noundef double @_ZN14NAMESPACE_MAIN14ArithmeticMeanEdd(double noundef %137, double noundef %192) #12
  store double %233, ptr %3, align 8, !tbaa !13
  %234 = fcmp olt double %192, %138
  br i1 %234, label %236, label %235

235:                                              ; preds = %232
  tail call void @LogAssertFailure(i64 noundef 305, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.49)
  tail call void @__assert_fail(ptr noundef nonnull @.str.50, ptr noundef nonnull @.str, i32 noundef 305, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

236:                                              ; preds = %232
  %237 = tail call noundef double @_ZN14NAMESPACE_MAIN14ArithmeticMeanEdd(double noundef %192, double noundef %138) #12
  %238 = getelementptr inbounds i8, ptr %3, i64 8
  store double %237, ptr %238, align 8, !tbaa !13
  br label %.thread394

239:                                              ; preds = %230
  %240 = tail call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #12
  %241 = fcmp olt double %215, %240
  br i1 %241, label %243, label %242

242:                                              ; preds = %239
  tail call void @LogAssertFailure(i64 noundef 317, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.39)
  tail call void @__assert_fail(ptr noundef nonnull @.str.40, ptr noundef nonnull @.str, i32 noundef 317, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

243:                                              ; preds = %239
  %244 = tail call noundef double @_ZN14NAMESPACE_MAINL18FloatTickIncrementEd(double noundef %215) #12
  %245 = fcmp olt double %192, %244
  br i1 %245, label %247, label %246

246:                                              ; preds = %243
  tail call void @LogAssertFailure(i64 noundef 320, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.51)
  tail call void @__assert_fail(ptr noundef nonnull @.str.52, ptr noundef nonnull @.str, i32 noundef 320, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

247:                                              ; preds = %243
  store double %192, ptr %3, align 8, !tbaa !13
  %248 = getelementptr inbounds i8, ptr %3, i64 8
  %249 = icmp ugt i64 %60, 2
  br i1 %249, label %250, label %.thread

250:                                              ; preds = %247
  %251 = add nsw i64 %60, -1
  %252 = uitofp nneg i64 %251 to double
  %253 = fsub double %244, %192
  %254 = fdiv double %253, %252
  %255 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %254)
  br i1 %255, label %256, label %271

256:                                              ; preds = %250
  %257 = insertelement <2 x double> poison, double %244, i64 0
  %258 = insertelement <2 x double> %257, double %192, i64 1
  %259 = insertelement <2 x double> poison, double %252, i64 0
  %260 = shufflevector <2 x double> %259, <2 x double> poison, <2 x i32> zeroinitializer
  %261 = fdiv <2 x double> %258, %260
  %shift = shufflevector <2 x double> %261, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %262 = fsub <2 x double> %261, %shift
  %263 = extractelement <2 x double> %262, i64 0
  %264 = tail call noundef zeroext i1 @_ZSt5isinfd(double noundef %263)
  br i1 %264, label %265, label %271

265:                                              ; preds = %256
  %266 = tail call noundef double @_ZN14NAMESPACE_MAIN14ArithmeticMeanEdd(double noundef %192, double noundef %244) #12
  %267 = fcmp une double %244, %266
  br i1 %267, label %269, label %268

268:                                              ; preds = %265
  tail call void @LogAssertFailure(i64 noundef 349, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.55)
  tail call void @__assert_fail(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str, i32 noundef 349, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

269:                                              ; preds = %265
  store double %266, ptr %248, align 8, !tbaa !13
  %270 = getelementptr inbounds i8, ptr %3, i64 16
  br label %.thread

271:                                              ; preds = %256, %250
  %.0315 = phi double [ %263, %256 ], [ %254, %250 ]
  %272 = getelementptr inbounds double, ptr %3, i64 %60
  %273 = getelementptr inbounds i8, ptr %272, i64 -8
  br label %274

274:                                              ; preds = %289, %271
  %.0319 = phi ptr [ %248, %271 ], [ %.1320, %289 ]
  %.0310 = phi double [ %192, %271 ], [ %.1311, %289 ]
  %.0308 = phi i64 [ 1, %271 ], [ %290, %289 ]
  %275 = uitofp i64 %.0308 to double
  %276 = tail call double @llvm.fmuladd.f64(double %.0315, double %275, double %192)
  %277 = fcmp ugt double %244, %276
  br i1 %277, label %278, label %.thread, !prof !10

278:                                              ; preds = %274
  %279 = fcmp une double %.0310, %276
  br i1 %279, label %280, label %289, !prof !10

280:                                              ; preds = %278
  %281 = fcmp olt double %.0310, %276
  br i1 %281, label %283, label %282

282:                                              ; preds = %280
  tail call void @LogAssertFailure(i64 noundef 365, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.57)
  tail call void @__assert_fail(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str, i32 noundef 365, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

283:                                              ; preds = %280
  %284 = icmp ugt ptr %.0319, %3
  %285 = icmp ult ptr %.0319, %273
  %or.cond381 = select i1 %284, i1 %285, i1 false
  br i1 %or.cond381, label %287, label %286

286:                                              ; preds = %283
  tail call void @LogAssertFailure(i64 noundef 367, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.59)
  tail call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str, i32 noundef 367, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

287:                                              ; preds = %283
  store double %276, ptr %.0319, align 8, !tbaa !13
  %288 = getelementptr inbounds i8, ptr %.0319, i64 8
  br label %289

289:                                              ; preds = %278, %287
  %.1320 = phi ptr [ %288, %287 ], [ %.0319, %278 ]
  %.1311 = phi double [ %276, %287 ], [ %.0310, %278 ]
  %290 = add i64 %.0308, 1
  %.not366 = icmp eq i64 %251, %290
  br i1 %.not366, label %.thread, label %274, !llvm.loop !21

.thread:                                          ; preds = %274, %289, %269, %247
  %.4323 = phi ptr [ %248, %247 ], [ %270, %269 ], [ %.0319, %274 ], [ %.1320, %289 ]
  %291 = icmp ugt ptr %.4323, %3
  %292 = getelementptr inbounds double, ptr %3, i64 %60
  %293 = icmp ult ptr %.4323, %292
  %or.cond384 = select i1 %291, i1 %293, i1 false
  br i1 %or.cond384, label %295, label %294

294:                                              ; preds = %.thread
  tail call void @LogAssertFailure(i64 noundef 380, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.61)
  tail call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str, i32 noundef 380, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

295:                                              ; preds = %.thread
  store double %244, ptr %.4323, align 8, !tbaa !13
  %296 = ptrtoint ptr %.4323 to i64
  %297 = ptrtoint ptr %3 to i64
  %298 = sub i64 %296, %297
  %299 = ashr exact i64 %298, 3
  %.not367.not = icmp slt i64 %299, %60
  br i1 %.not367.not, label %301, label %300

300:                                              ; preds = %295
  tail call void @LogAssertFailure(i64 noundef 391, ptr noundef nonnull @.str, ptr noundef nonnull @__func__.CutWinsorized, ptr noundef nonnull @.str.63)
  tail call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str, i32 noundef 391, ptr noundef nonnull @__PRETTY_FUNCTION__.CutWinsorized) #14
  unreachable

301:                                              ; preds = %295
  %302 = add nsw i64 %299, 1
  br label %.thread394

.thread394:                                       ; preds = %119, %92, %209, %301, %236, %167, %185, %57
  %.9 = phi i64 [ 0, %57 ], [ %302, %301 ], [ 2, %236 ], [ 1, %209 ], [ %.1299, %167 ], [ %187, %185 ], [ 0, %92 ], [ 1, %119 ]
  tail call void @free(ptr noundef %48) #12
  br label %303

303:                                              ; preds = %45, %42, %.thread394, %50, %53, %81, %88, %62, %67, %64, %74, %22, %27, %24, %33, %30, %39, %36
  %.13 = phi i64 [ 0, %22 ], [ 0, %27 ], [ 0, %24 ], [ 0, %33 ], [ 0, %30 ], [ 0, %39 ], [ 0, %36 ], [ 0, %45 ], [ 0, %42 ], [ 0, %53 ], [ 0, %50 ], [ %.9, %.thread394 ], [ 0, %74 ], [ 0, %64 ], [ 0, %67 ], [ 0, %62 ], [ 0, %81 ], [ 0, %88 ]
  %.6296 = phi i32 [ 0, %22 ], [ -3, %27 ], [ -3, %24 ], [ -3, %33 ], [ -3, %30 ], [ -3, %39 ], [ -3, %36 ], [ -1, %45 ], [ -1, %42 ], [ -1, %53 ], [ -1, %50 ], [ 0, %.thread394 ], [ -3, %74 ], [ -3, %64 ], [ -3, %67 ], [ 0, %62 ], [ -3, %81 ], [ -3, %88 ]
  store i64 %.13, ptr %2, align 8, !tbaa !11
  br label %304

304:                                              ; preds = %19, %303
  %.14.ph = phi i64 [ 0, %19 ], [ %.13, %303 ]
  %.7297.ph = phi i32 [ -3, %19 ], [ %.6296, %303 ]
  %.pr = load i32, ptr @g_traceLevel, align 4, !tbaa !5
  %305 = icmp sgt i32 %.pr, 2
  br i1 %305, label %306, label %.critedge386

306:                                              ; preds = %304
  %307 = icmp eq i32 %.pr, 3
  br i1 %307, label %308, label %313

308:                                              ; preds = %306
  %309 = load i32, ptr @_ZN14NAMESPACE_MAINL23g_cLogExitCutWinsorizedE, align 4, !tbaa !5
  %310 = icmp sgt i32 %309, 0
  br i1 %310, label %311, label %.critedge386

311:                                              ; preds = %308
  %312 = add nsw i32 %309, -1
  store i32 %312, ptr @_ZN14NAMESPACE_MAINL23g_cLogExitCutWinsorizedE, align 4, !tbaa !5
  br label %313

313:                                              ; preds = %311, %306
  %.1287 = phi i32 [ 3, %311 ], [ 4, %306 ]
  tail call void (i32, ptr, ...) @InteralLogWithArguments(i32 noundef %.1287, ptr noundef nonnull @_ZZ13CutWinsorizedE13LOG__sMessage__10_, i64 noundef %.14.ph, i32 noundef %.7297.ph)
  br label %.critedge386

.critedge386:                                     ; preds = %16, %304, %308, %313
  %.0 = phi i32 [ %.7297.ph, %313 ], [ %.7297.ph, %308 ], [ %.7297.ph, %304 ], [ -3, %16 ]
  ret i32 %.0
}

declare void @InteralLogWithArguments(i32 noundef, ptr noundef, ...) local_unnamed_addr #1

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN14NAMESPACE_MAINL14IsConvertErrorImlEENSt9enable_ifIXaaaantsr3std9is_signedIT_EE5valuesr3std9is_signedIT0_EE5valueleclsr3std14numeric_limitsIS3_EE3maxEclsr3std14numeric_limitsIS2_EE3maxEEbE4typeES3_(i64 noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN14NAMESPACE_MAINL15IsMultiplyErrorImEEbT_S1_(i64 noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4

; Function Attrs: nounwind
declare noundef i64 @_ZN14NAMESPACE_MAIN37RemoveMissingValsAndReplaceInfinitiesEmPd(i64 noundef, ptr noundef) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIPdEvT_S1_(ptr noundef, ptr noundef) local_unnamed_addr #8

; Function Attrs: nounwind
declare noundef double @_ZN14NAMESPACE_MAIN14ArithmeticMeanEdd(double noundef, double noundef) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN14NAMESPACE_MAINL10IsAddErrorImEEbT_S1_(i64 noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE6lowestEv() local_unnamed_addr #9 align 2

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare hidden noundef double @_ZN14NAMESPACE_MAINL18FloatTickIncrementEd(double noundef) local_unnamed_addr #10

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #11

attributes #0 = { 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 #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 = { 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 nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "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 nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { 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 #10 = { alwaysinline 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 #11 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #12 = { nounwind }
attributes #13 = { nounwind allocsize(0) }
attributes #14 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!"branch_weights", !"expected", i32 1, i32 2000}
!10 = !{!"branch_weights", !"expected", i32 2000, i32 1}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}
!20 = distinct !{!20, !16}
!21 = distinct !{!21, !16}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopSimplifyPass,LoopUnrollPass,LowerExpectIntrinsicPass,PostOrderFunctionAttrsPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass