; LLVM IR from simbody/simbody :: SimTKmath/Optimizers/src/c-cmaes (cmaes)

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

%struct.cmaes_t = type { ptr, %struct.cmaes_readpara_t, %struct.cmaes_random_t, double, ptr, ptr, ptr, ptr, ptr, i16, i16, double, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, double, double, double, double, double, double, double, [330 x i8], i16, i16, double, %struct.cmaes_timings_t, double, double, i16, i64, i64, i64, i64 }
%struct.cmaes_readpara_t = type { ptr, i16, i32, i32, ptr, ptr, i32, ptr, ptr, double, double, double, %struct.anon, double, double, double, double, i32, i32, double, double, ptr, double, double, double, double, double, %struct.anon.0, double, ptr, [99 x i8], ptr, ptr, ptr, ptr, i32, i32, i32 }
%struct.anon = type { i32, double }
%struct.anon.0 = type { i32, double, double }
%struct.cmaes_random_t = type { i64, i64, i64, ptr, i16, double }
%struct.cmaes_timings_t = type { double, double, double, double, i64, i64, i64, i64, i16, i16, double, double }

@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [53 x i8], align 1

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

; Function Attrs: nounwind uwtable
declare hidden void @ERRORMESSAGE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind
declare double @sqrt(double noundef) #2

; Function Attrs: nounwind uwtable
declare hidden ptr @new_void(i32 noundef, i64 noundef) #1

; Function Attrs: nounwind uwtable
declare hidden double @rgdouMin(ptr noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare hidden double @rgdouMax(ptr noundef, i32 noundef) #1

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

; Function Attrs: nounwind uwtable
declare hidden void @FATAL(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

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

; Function Attrs: nounwind uwtable
declare hidden void @Sorted_index(ptr noundef, ptr noundef, i32 noundef) #1

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #2

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strncmp(ptr noundef, ptr noundef, i64 noundef) #3

; Function Attrs: nounwind uwtable
define dso_local void @cmaes_WriteToFilePtr(ptr noundef %0, ptr noundef %1, ptr noundef %2) #1 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i64, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  %19 = load ptr, ptr %4, align 8, !tbaa !5
  %20 = icmp ne ptr %19, null
  br i1 %20, label %21, label %26

21:                                               ; preds = %3
  %22 = load ptr, ptr %4, align 8, !tbaa !5
  %23 = getelementptr inbounds %struct.cmaes_t, ptr %22, i32 0, i32 1
  %24 = getelementptr inbounds %struct.cmaes_readpara_t, ptr %23, i32 0, i32 2
  %25 = load i32, ptr %24, align 4, !tbaa !9
  br label %27

26:                                               ; preds = %3
  br label %27

27:                                               ; preds = %26, %21
  %28 = phi i32 [ %25, %21 ], [ 0, %26 ]
  store i32 %28, ptr %9, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  store ptr @.str.55, ptr %11, align 8, !tbaa !5
  %29 = load ptr, ptr %5, align 8, !tbaa !5
  %30 = icmp eq ptr %29, null
  br i1 %30, label %31, label %33

31:                                               ; preds = %27
  %32 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %32, ptr %5, align 8, !tbaa !5
  br label %33

33:                                               ; preds = %31, %27
  %34 = load ptr, ptr %5, align 8, !tbaa !5
  %35 = load ptr, ptr %5, align 8, !tbaa !5
  %36 = call i64 @strlen(ptr noundef %35) #6
  %37 = getelementptr inbounds i8, ptr %34, i64 %36
  store ptr %37, ptr %10, align 8, !tbaa !5
  br label %38

38:                                               ; preds = %2078, %33
  %39 = load ptr, ptr %5, align 8, !tbaa !5
  %40 = load ptr, ptr %10, align 8, !tbaa !5
  %41 = icmp ult ptr %39, %40
  br i1 %41, label %42, label %2079

42:                                               ; preds = %38
  %43 = load ptr, ptr %5, align 8, !tbaa !5
  %44 = call i32 @strncmp(ptr noundef %43, ptr noundef @.str.56, i64 noundef 9) #6
  %45 = icmp eq i32 %44, 0
  br i1 %45, label %46, label %85

46:                                               ; preds = %42
  %47 = load ptr, ptr %6, align 8, !tbaa !5
  %48 = load ptr, ptr %4, align 8, !tbaa !5
  %49 = getelementptr inbounds %struct.cmaes_t, ptr %48, i32 0, i32 28
  %50 = load double, ptr %49, align 8, !tbaa !21
  %51 = load ptr, ptr %4, align 8, !tbaa !5
  %52 = getelementptr inbounds %struct.cmaes_t, ptr %51, i32 0, i32 29
  %53 = load double, ptr %52, align 8, !tbaa !22
  %54 = fdiv double %50, %53
  %55 = call double @sqrt(double noundef %54) #5
  %56 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %47, ptr noundef @.str.57, double noundef %55) #5
  br label %57

57:                                               ; preds = %73, %46
  %58 = load ptr, ptr %5, align 8, !tbaa !5
  %59 = load i8, ptr %58, align 1, !tbaa !23
  %60 = sext i8 %59 to i32
  %61 = icmp ne i32 %60, 43
  br i1 %61, label %62, label %71

62:                                               ; preds = %57
  %63 = load ptr, ptr %5, align 8, !tbaa !5
  %64 = load i8, ptr %63, align 1, !tbaa !23
  %65 = sext i8 %64 to i32
  %66 = icmp ne i32 %65, 0
  br i1 %66, label %67, label %71

67:                                               ; preds = %62
  %68 = load ptr, ptr %5, align 8, !tbaa !5
  %69 = load ptr, ptr %10, align 8, !tbaa !5
  %70 = icmp ult ptr %68, %69
  br label %71

71:                                               ; preds = %67, %62, %57
  %72 = phi i1 [ false, %62 ], [ false, %57 ], [ %70, %67 ]
  br i1 %72, label %73, label %76

73:                                               ; preds = %71
  %74 = load ptr, ptr %5, align 8, !tbaa !5
  %75 = getelementptr inbounds i8, ptr %74, i32 1
  store ptr %75, ptr %5, align 8, !tbaa !5
  br label %57, !llvm.loop !24

76:                                               ; preds = %71
  %77 = load ptr, ptr %6, align 8, !tbaa !5
  %78 = load ptr, ptr %5, align 8, !tbaa !5
  %79 = load i8, ptr %78, align 1, !tbaa !23
  %80 = sext i8 %79 to i32
  %81 = icmp eq i32 %80, 43
  %82 = zext i1 %81 to i64
  %83 = select i1 %81, i32 9, i32 10
  %84 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %77, ptr noundef @.str.58, i32 noundef %83) #5
  br label %85

85:                                               ; preds = %76, %42
  %86 = load ptr, ptr %5, align 8, !tbaa !5
  %87 = call i32 @strncmp(ptr noundef %86, ptr noundef @.str.59, i64 noundef 8) #6
  %88 = icmp eq i32 %87, 0
  br i1 %88, label %89, label %150

89:                                               ; preds = %85
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  store i32 0, ptr %12, align 4, !tbaa !20
  %90 = load i32, ptr %9, align 4, !tbaa !20
  %91 = sub nsw i32 %90, 1
  store i32 %91, ptr %7, align 4, !tbaa !20
  br label %92

92:                                               ; preds = %114, %89
  %93 = load i32, ptr %7, align 4, !tbaa !20
  %94 = icmp sgt i32 %93, 0
  br i1 %94, label %95, label %117

95:                                               ; preds = %92
  %96 = load ptr, ptr %4, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.cmaes_t, ptr %96, i32 0, i32 27
  %98 = load double, ptr %97, align 8, !tbaa !26
  %99 = load ptr, ptr %4, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct.cmaes_t, ptr %99, i32 0, i32 12
  %101 = load ptr, ptr %100, align 8, !tbaa !27
  %102 = load i32, ptr %7, align 4, !tbaa !20
  %103 = sext i32 %102 to i64
  %104 = getelementptr inbounds ptr, ptr %101, i64 %103
  %105 = load ptr, ptr %104, align 8, !tbaa !5
  %106 = load i32, ptr %7, align 4, !tbaa !20
  %107 = sext i32 %106 to i64
  %108 = getelementptr inbounds double, ptr %105, i64 %107
  %109 = load double, ptr %108, align 8, !tbaa !28
  %110 = fcmp oeq double %98, %109
  br i1 %110, label %111, label %113

111:                                              ; preds = %95
  %112 = load i32, ptr %7, align 4, !tbaa !20
  store i32 %112, ptr %12, align 4, !tbaa !20
  br label %113

113:                                              ; preds = %111, %95
  br label %114

114:                                              ; preds = %113
  %115 = load i32, ptr %7, align 4, !tbaa !20
  %116 = add nsw i32 %115, -1
  store i32 %116, ptr %7, align 4, !tbaa !20
  br label %92, !llvm.loop !29

117:                                              ; preds = %92
  %118 = load ptr, ptr %6, align 8, !tbaa !5
  %119 = load i32, ptr %12, align 4, !tbaa !20
  %120 = add nsw i32 %119, 1
  %121 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %118, ptr noundef @.str.60, i32 noundef %120) #5
  br label %122

122:                                              ; preds = %138, %117
  %123 = load ptr, ptr %5, align 8, !tbaa !5
  %124 = load i8, ptr %123, align 1, !tbaa !23
  %125 = sext i8 %124 to i32
  %126 = icmp ne i32 %125, 43
  br i1 %126, label %127, label %136

127:                                              ; preds = %122
  %128 = load ptr, ptr %5, align 8, !tbaa !5
  %129 = load i8, ptr %128, align 1, !tbaa !23
  %130 = sext i8 %129 to i32
  %131 = icmp ne i32 %130, 0
  br i1 %131, label %132, label %136

132:                                              ; preds = %127
  %133 = load ptr, ptr %5, align 8, !tbaa !5
  %134 = load ptr, ptr %10, align 8, !tbaa !5
  %135 = icmp ult ptr %133, %134
  br label %136

136:                                              ; preds = %132, %127, %122
  %137 = phi i1 [ false, %127 ], [ false, %122 ], [ %135, %132 ]
  br i1 %137, label %138, label %141

138:                                              ; preds = %136
  %139 = load ptr, ptr %5, align 8, !tbaa !5
  %140 = getelementptr inbounds i8, ptr %139, i32 1
  store ptr %140, ptr %5, align 8, !tbaa !5
  br label %122, !llvm.loop !30

141:                                              ; preds = %136
  %142 = load ptr, ptr %6, align 8, !tbaa !5
  %143 = load ptr, ptr %5, align 8, !tbaa !5
  %144 = load i8, ptr %143, align 1, !tbaa !23
  %145 = sext i8 %144 to i32
  %146 = icmp eq i32 %145, 43
  %147 = zext i1 %146 to i64
  %148 = select i1 %146, i32 9, i32 10
  %149 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %142, ptr noundef @.str.58, i32 noundef %148) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  br label %150

150:                                              ; preds = %141, %85
  %151 = load ptr, ptr %5, align 8, !tbaa !5
  %152 = call i32 @strncmp(ptr noundef %151, ptr noundef @.str.61, i64 noundef 8) #6
  %153 = icmp eq i32 %152, 0
  br i1 %153, label %154, label %215

154:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  store i32 0, ptr %13, align 4, !tbaa !20
  %155 = load i32, ptr %9, align 4, !tbaa !20
  %156 = sub nsw i32 %155, 1
  store i32 %156, ptr %7, align 4, !tbaa !20
  br label %157

157:                                              ; preds = %179, %154
  %158 = load i32, ptr %7, align 4, !tbaa !20
  %159 = icmp sgt i32 %158, 0
  br i1 %159, label %160, label %182

160:                                              ; preds = %157
  %161 = load ptr, ptr %4, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.cmaes_t, ptr %161, i32 0, i32 26
  %163 = load double, ptr %162, align 8, !tbaa !31
  %164 = load ptr, ptr %4, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.cmaes_t, ptr %164, i32 0, i32 12
  %166 = load ptr, ptr %165, align 8, !tbaa !27
  %167 = load i32, ptr %7, align 4, !tbaa !20
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds ptr, ptr %166, i64 %168
  %170 = load ptr, ptr %169, align 8, !tbaa !5
  %171 = load i32, ptr %7, align 4, !tbaa !20
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds double, ptr %170, i64 %172
  %174 = load double, ptr %173, align 8, !tbaa !28
  %175 = fcmp oeq double %163, %174
  br i1 %175, label %176, label %178

176:                                              ; preds = %160
  %177 = load i32, ptr %7, align 4, !tbaa !20
  store i32 %177, ptr %13, align 4, !tbaa !20
  br label %178

178:                                              ; preds = %176, %160
  br label %179

179:                                              ; preds = %178
  %180 = load i32, ptr %7, align 4, !tbaa !20
  %181 = add nsw i32 %180, -1
  store i32 %181, ptr %7, align 4, !tbaa !20
  br label %157, !llvm.loop !32

182:                                              ; preds = %157
  %183 = load ptr, ptr %6, align 8, !tbaa !5
  %184 = load i32, ptr %13, align 4, !tbaa !20
  %185 = add nsw i32 %184, 1
  %186 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %183, ptr noundef @.str.60, i32 noundef %185) #5
  br label %187

187:                                              ; preds = %203, %182
  %188 = load ptr, ptr %5, align 8, !tbaa !5
  %189 = load i8, ptr %188, align 1, !tbaa !23
  %190 = sext i8 %189 to i32
  %191 = icmp ne i32 %190, 43
  br i1 %191, label %192, label %201

192:                                              ; preds = %187
  %193 = load ptr, ptr %5, align 8, !tbaa !5
  %194 = load i8, ptr %193, align 1, !tbaa !23
  %195 = sext i8 %194 to i32
  %196 = icmp ne i32 %195, 0
  br i1 %196, label %197, label %201

197:                                              ; preds = %192
  %198 = load ptr, ptr %5, align 8, !tbaa !5
  %199 = load ptr, ptr %10, align 8, !tbaa !5
  %200 = icmp ult ptr %198, %199
  br label %201

201:                                              ; preds = %197, %192, %187
  %202 = phi i1 [ false, %192 ], [ false, %187 ], [ %200, %197 ]
  br i1 %202, label %203, label %206

203:                                              ; preds = %201
  %204 = load ptr, ptr %5, align 8, !tbaa !5
  %205 = getelementptr inbounds i8, ptr %204, i32 1
  store ptr %205, ptr %5, align 8, !tbaa !5
  br label %187, !llvm.loop !33

206:                                              ; preds = %201
  %207 = load ptr, ptr %6, align 8, !tbaa !5
  %208 = load ptr, ptr %5, align 8, !tbaa !5
  %209 = load i8, ptr %208, align 1, !tbaa !23
  %210 = sext i8 %209 to i32
  %211 = icmp eq i32 %210, 43
  %212 = zext i1 %211 to i64
  %213 = select i1 %211, i32 9, i32 10
  %214 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %207, ptr noundef @.str.58, i32 noundef %213) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  br label %215

215:                                              ; preds = %206, %150
  %216 = load ptr, ptr %5, align 8, !tbaa !5
  %217 = call i32 @strncmp(ptr noundef %216, ptr noundef @.str.62, i64 noundef 1) #6
  %218 = icmp eq i32 %217, 0
  br i1 %218, label %219, label %274

219:                                              ; preds = %215
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  %220 = load i32, ptr %9, align 4, !tbaa !20
  %221 = call ptr @new_void(i32 noundef %220, i64 noundef 4)
  store ptr %221, ptr %15, align 8, !tbaa !5
  %222 = load ptr, ptr %4, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.cmaes_t, ptr %222, i32 0, i32 14
  %224 = load ptr, ptr %223, align 8, !tbaa !34
  %225 = load ptr, ptr %15, align 8, !tbaa !5
  %226 = load i32, ptr %9, align 4, !tbaa !20
  call void @Sorted_index(ptr noundef %224, ptr noundef %225, i32 noundef %226)
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %227

227:                                              ; preds = %267, %219
  %228 = load i32, ptr %7, align 4, !tbaa !20
  %229 = load i32, ptr %9, align 4, !tbaa !20
  %230 = icmp slt i32 %228, %229
  br i1 %230, label %231, label %270

231:                                              ; preds = %227
  store i32 0, ptr %14, align 4, !tbaa !20
  br label %232

232:                                              ; preds = %263, %231
  %233 = load i32, ptr %14, align 4, !tbaa !20
  %234 = load i32, ptr %9, align 4, !tbaa !20
  %235 = icmp slt i32 %233, %234
  br i1 %235, label %236, label %266

236:                                              ; preds = %232
  %237 = load ptr, ptr %6, align 8, !tbaa !5
  %238 = load ptr, ptr %4, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.cmaes_t, ptr %238, i32 0, i32 13
  %240 = load ptr, ptr %239, align 8, !tbaa !35
  %241 = load i32, ptr %14, align 4, !tbaa !20
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds ptr, ptr %240, i64 %242
  %244 = load ptr, ptr %243, align 8, !tbaa !5
  %245 = load ptr, ptr %15, align 8, !tbaa !5
  %246 = load i32, ptr %9, align 4, !tbaa !20
  %247 = sub nsw i32 %246, 1
  %248 = load i32, ptr %7, align 4, !tbaa !20
  %249 = sub nsw i32 %247, %248
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds i32, ptr %245, i64 %250
  %252 = load i32, ptr %251, align 4, !tbaa !20
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds double, ptr %244, i64 %253
  %255 = load double, ptr %254, align 8, !tbaa !28
  %256 = load i32, ptr %14, align 4, !tbaa !20
  %257 = load i32, ptr %9, align 4, !tbaa !20
  %258 = sub nsw i32 %257, 1
  %259 = icmp eq i32 %256, %258
  %260 = zext i1 %259 to i64
  %261 = select i1 %259, i32 10, i32 9
  %262 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %237, ptr noundef @.str.63, double noundef %255, i32 noundef %261) #5
  br label %263

263:                                              ; preds = %236
  %264 = load i32, ptr %14, align 4, !tbaa !20
  %265 = add nsw i32 %264, 1
  store i32 %265, ptr %14, align 4, !tbaa !20
  br label %232, !llvm.loop !36

266:                                              ; preds = %232
  br label %267

267:                                              ; preds = %266
  %268 = load i32, ptr %7, align 4, !tbaa !20
  %269 = add nsw i32 %268, 1
  store i32 %269, ptr %7, align 4, !tbaa !20
  br label %227, !llvm.loop !37

270:                                              ; preds = %227
  %271 = load ptr, ptr %5, align 8, !tbaa !5
  %272 = getelementptr inbounds i8, ptr %271, i32 1
  store ptr %272, ptr %5, align 8, !tbaa !5
  %273 = load ptr, ptr %15, align 8, !tbaa !5
  call void @free(ptr noundef %273) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  br label %274

274:                                              ; preds = %270, %215
  %275 = load ptr, ptr %5, align 8, !tbaa !5
  %276 = call i32 @strncmp(ptr noundef %275, ptr noundef @.str.64, i64 noundef 1) #6
  %277 = icmp eq i32 %276, 0
  br i1 %277, label %278, label %317

278:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %279

279:                                              ; preds = %311, %278
  %280 = load i32, ptr %7, align 4, !tbaa !20
  %281 = load i32, ptr %9, align 4, !tbaa !20
  %282 = icmp slt i32 %280, %281
  br i1 %282, label %283, label %314

283:                                              ; preds = %279
  store i32 0, ptr %16, align 4, !tbaa !20
  br label %284

284:                                              ; preds = %307, %283
  %285 = load i32, ptr %16, align 4, !tbaa !20
  %286 = load i32, ptr %7, align 4, !tbaa !20
  %287 = icmp sle i32 %285, %286
  br i1 %287, label %288, label %310

288:                                              ; preds = %284
  %289 = load ptr, ptr %6, align 8, !tbaa !5
  %290 = load ptr, ptr %4, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.cmaes_t, ptr %290, i32 0, i32 12
  %292 = load ptr, ptr %291, align 8, !tbaa !27
  %293 = load i32, ptr %7, align 4, !tbaa !20
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds ptr, ptr %292, i64 %294
  %296 = load ptr, ptr %295, align 8, !tbaa !5
  %297 = load i32, ptr %16, align 4, !tbaa !20
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds double, ptr %296, i64 %298
  %300 = load double, ptr %299, align 8, !tbaa !28
  %301 = load i32, ptr %16, align 4, !tbaa !20
  %302 = load i32, ptr %7, align 4, !tbaa !20
  %303 = icmp eq i32 %301, %302
  %304 = zext i1 %303 to i64
  %305 = select i1 %303, i32 10, i32 9
  %306 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %289, ptr noundef @.str.63, double noundef %300, i32 noundef %305) #5
  br label %307

307:                                              ; preds = %288
  %308 = load i32, ptr %16, align 4, !tbaa !20
  %309 = add nsw i32 %308, 1
  store i32 %309, ptr %16, align 4, !tbaa !20
  br label %284, !llvm.loop !38

310:                                              ; preds = %284
  br label %311

311:                                              ; preds = %310
  %312 = load i32, ptr %7, align 4, !tbaa !20
  %313 = add nsw i32 %312, 1
  store i32 %313, ptr %7, align 4, !tbaa !20
  br label %279, !llvm.loop !39

314:                                              ; preds = %279
  %315 = load ptr, ptr %5, align 8, !tbaa !5
  %316 = getelementptr inbounds i8, ptr %315, i32 1
  store ptr %316, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  br label %317

317:                                              ; preds = %314, %274
  %318 = load ptr, ptr %5, align 8, !tbaa !5
  %319 = call i32 @strncmp(ptr noundef %318, ptr noundef @.str.65, i64 noundef 4) #6
  %320 = icmp eq i32 %319, 0
  br i1 %320, label %321, label %363

321:                                              ; preds = %317
  %322 = load ptr, ptr %4, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.cmaes_t, ptr %322, i32 0, i32 34
  %324 = call double @cmaes_timings_update(ptr noundef %323)
  %325 = load ptr, ptr %6, align 8, !tbaa !5
  %326 = load ptr, ptr %4, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.cmaes_t, ptr %326, i32 0, i32 34
  %328 = getelementptr inbounds %struct.cmaes_timings_t, ptr %327, i32 0, i32 1
  %329 = load double, ptr %328, align 8, !tbaa !40
  %330 = load ptr, ptr %4, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.cmaes_t, ptr %330, i32 0, i32 34
  %332 = getelementptr inbounds %struct.cmaes_timings_t, ptr %331, i32 0, i32 2
  %333 = load double, ptr %332, align 8, !tbaa !41
  %334 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %325, ptr noundef @.str.66, double noundef %329, double noundef %333) #5
  br label %335

335:                                              ; preds = %351, %321
  %336 = load ptr, ptr %5, align 8, !tbaa !5
  %337 = load i8, ptr %336, align 1, !tbaa !23
  %338 = sext i8 %337 to i32
  %339 = icmp ne i32 %338, 43
  br i1 %339, label %340, label %349

340:                                              ; preds = %335
  %341 = load ptr, ptr %5, align 8, !tbaa !5
  %342 = load i8, ptr %341, align 1, !tbaa !23
  %343 = sext i8 %342 to i32
  %344 = icmp ne i32 %343, 0
  br i1 %344, label %345, label %349

345:                                              ; preds = %340
  %346 = load ptr, ptr %5, align 8, !tbaa !5
  %347 = load ptr, ptr %10, align 8, !tbaa !5
  %348 = icmp ult ptr %346, %347
  br label %349

349:                                              ; preds = %345, %340, %335
  %350 = phi i1 [ false, %340 ], [ false, %335 ], [ %348, %345 ]
  br i1 %350, label %351, label %354

351:                                              ; preds = %349
  %352 = load ptr, ptr %5, align 8, !tbaa !5
  %353 = getelementptr inbounds i8, ptr %352, i32 1
  store ptr %353, ptr %5, align 8, !tbaa !5
  br label %335, !llvm.loop !42

354:                                              ; preds = %349
  %355 = load ptr, ptr %6, align 8, !tbaa !5
  %356 = load ptr, ptr %5, align 8, !tbaa !5
  %357 = load i8, ptr %356, align 1, !tbaa !23
  %358 = sext i8 %357 to i32
  %359 = icmp eq i32 %358, 43
  %360 = zext i1 %359 to i64
  %361 = select i1 %359, i32 9, i32 10
  %362 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %355, ptr noundef @.str.58, i32 noundef %361) #5
  br label %363

363:                                              ; preds = %354, %317
  %364 = load ptr, ptr %5, align 8, !tbaa !5
  %365 = call i32 @strncmp(ptr noundef %364, ptr noundef @.str.67, i64 noundef 11) #6
  %366 = icmp eq i32 %365, 0
  br i1 %366, label %367, label %406

367:                                              ; preds = %363
  %368 = load ptr, ptr %6, align 8, !tbaa !5
  %369 = load ptr, ptr %4, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.cmaes_t, ptr %369, i32 0, i32 26
  %371 = load double, ptr %370, align 8, !tbaa !31
  %372 = load ptr, ptr %4, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.cmaes_t, ptr %372, i32 0, i32 27
  %374 = load double, ptr %373, align 8, !tbaa !26
  %375 = fdiv double %371, %374
  %376 = call double @sqrt(double noundef %375) #5
  %377 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %368, ptr noundef @.str.68, double noundef %376) #5
  br label %378

378:                                              ; preds = %394, %367
  %379 = load ptr, ptr %5, align 8, !tbaa !5
  %380 = load i8, ptr %379, align 1, !tbaa !23
  %381 = sext i8 %380 to i32
  %382 = icmp ne i32 %381, 43
  br i1 %382, label %383, label %392

383:                                              ; preds = %378
  %384 = load ptr, ptr %5, align 8, !tbaa !5
  %385 = load i8, ptr %384, align 1, !tbaa !23
  %386 = sext i8 %385 to i32
  %387 = icmp ne i32 %386, 0
  br i1 %387, label %388, label %392

388:                                              ; preds = %383
  %389 = load ptr, ptr %5, align 8, !tbaa !5
  %390 = load ptr, ptr %10, align 8, !tbaa !5
  %391 = icmp ult ptr %389, %390
  br label %392

392:                                              ; preds = %388, %383, %378
  %393 = phi i1 [ false, %383 ], [ false, %378 ], [ %391, %388 ]
  br i1 %393, label %394, label %397

394:                                              ; preds = %392
  %395 = load ptr, ptr %5, align 8, !tbaa !5
  %396 = getelementptr inbounds i8, ptr %395, i32 1
  store ptr %396, ptr %5, align 8, !tbaa !5
  br label %378, !llvm.loop !43

397:                                              ; preds = %392
  %398 = load ptr, ptr %6, align 8, !tbaa !5
  %399 = load ptr, ptr %5, align 8, !tbaa !5
  %400 = load i8, ptr %399, align 1, !tbaa !23
  %401 = sext i8 %400 to i32
  %402 = icmp eq i32 %401, 43
  %403 = zext i1 %402 to i64
  %404 = select i1 %402, i32 9, i32 10
  %405 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %398, ptr noundef @.str.58, i32 noundef %404) #5
  br label %406

406:                                              ; preds = %397, %363
  %407 = load ptr, ptr %5, align 8, !tbaa !5
  %408 = call i32 @strncmp(ptr noundef %407, ptr noundef @.str.69, i64 noundef 10) #6
  %409 = icmp eq i32 %408, 0
  br i1 %409, label %414, label %410

410:                                              ; preds = %406
  %411 = load ptr, ptr %5, align 8, !tbaa !5
  %412 = call i32 @strncmp(ptr noundef %411, ptr noundef @.str.70, i64 noundef 6) #6
  %413 = icmp eq i32 %412, 0
  br i1 %413, label %414, label %474

414:                                              ; preds = %410, %406
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %415

415:                                              ; preds = %442, %414
  %416 = load i32, ptr %7, align 4, !tbaa !20
  %417 = load i32, ptr %9, align 4, !tbaa !20
  %418 = icmp slt i32 %416, %417
  br i1 %418, label %419, label %445

419:                                              ; preds = %415
  %420 = load ptr, ptr %6, align 8, !tbaa !5
  %421 = load i32, ptr %7, align 4, !tbaa !20
  %422 = icmp eq i32 %421, 0
  %423 = zext i1 %422 to i64
  %424 = select i1 %422, ptr @.str.72, ptr @.str.73
  %425 = load ptr, ptr %4, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.cmaes_t, ptr %425, i32 0, i32 3
  %427 = load double, ptr %426, align 8, !tbaa !44
  %428 = load ptr, ptr %4, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct.cmaes_t, ptr %428, i32 0, i32 12
  %430 = load ptr, ptr %429, align 8, !tbaa !27
  %431 = load i32, ptr %7, align 4, !tbaa !20
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds ptr, ptr %430, i64 %432
  %434 = load ptr, ptr %433, align 8, !tbaa !5
  %435 = load i32, ptr %7, align 4, !tbaa !20
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds double, ptr %434, i64 %436
  %438 = load double, ptr %437, align 8, !tbaa !28
  %439 = call double @sqrt(double noundef %438) #5
  %440 = fmul double %427, %439
  %441 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %420, ptr noundef @.str.71, ptr noundef %424, double noundef %440) #5
  br label %442

442:                                              ; preds = %419
  %443 = load i32, ptr %7, align 4, !tbaa !20
  %444 = add nsw i32 %443, 1
  store i32 %444, ptr %7, align 4, !tbaa !20
  br label %415, !llvm.loop !45

445:                                              ; preds = %415
  br label %446

446:                                              ; preds = %462, %445
  %447 = load ptr, ptr %5, align 8, !tbaa !5
  %448 = load i8, ptr %447, align 1, !tbaa !23
  %449 = sext i8 %448 to i32
  %450 = icmp ne i32 %449, 43
  br i1 %450, label %451, label %460

451:                                              ; preds = %446
  %452 = load ptr, ptr %5, align 8, !tbaa !5
  %453 = load i8, ptr %452, align 1, !tbaa !23
  %454 = sext i8 %453 to i32
  %455 = icmp ne i32 %454, 0
  br i1 %455, label %456, label %460

456:                                              ; preds = %451
  %457 = load ptr, ptr %5, align 8, !tbaa !5
  %458 = load ptr, ptr %10, align 8, !tbaa !5
  %459 = icmp ult ptr %457, %458
  br label %460

460:                                              ; preds = %456, %451, %446
  %461 = phi i1 [ false, %451 ], [ false, %446 ], [ %459, %456 ]
  br i1 %461, label %462, label %465

462:                                              ; preds = %460
  %463 = load ptr, ptr %5, align 8, !tbaa !5
  %464 = getelementptr inbounds i8, ptr %463, i32 1
  store ptr %464, ptr %5, align 8, !tbaa !5
  br label %446, !llvm.loop !46

465:                                              ; preds = %460
  %466 = load ptr, ptr %6, align 8, !tbaa !5
  %467 = load ptr, ptr %5, align 8, !tbaa !5
  %468 = load i8, ptr %467, align 1, !tbaa !23
  %469 = sext i8 %468 to i32
  %470 = icmp eq i32 %469, 43
  %471 = zext i1 %470 to i64
  %472 = select i1 %470, i32 9, i32 10
  %473 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %466, ptr noundef @.str.58, i32 noundef %472) #5
  br label %474

474:                                              ; preds = %465, %410
  %475 = load ptr, ptr %5, align 8, !tbaa !5
  %476 = call i32 @strncmp(ptr noundef %475, ptr noundef @.str.74, i64 noundef 7) #6
  %477 = icmp eq i32 %476, 0
  br i1 %477, label %478, label %556

478:                                              ; preds = %474
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %479

479:                                              ; preds = %497, %478
  %480 = load i32, ptr %7, align 4, !tbaa !20
  %481 = load i32, ptr %9, align 4, !tbaa !20
  %482 = icmp slt i32 %480, %481
  br i1 %482, label %483, label %500

483:                                              ; preds = %479
  %484 = load ptr, ptr %4, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.cmaes_t, ptr %484, i32 0, i32 14
  %486 = load ptr, ptr %485, align 8, !tbaa !34
  %487 = load i32, ptr %7, align 4, !tbaa !20
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds double, ptr %486, i64 %488
  %490 = load double, ptr %489, align 8, !tbaa !28
  %491 = load ptr, ptr %4, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.cmaes_t, ptr %491, i32 0, i32 20
  %493 = load ptr, ptr %492, align 8, !tbaa !47
  %494 = load i32, ptr %7, align 4, !tbaa !20
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds double, ptr %493, i64 %495
  store double %490, ptr %496, align 8, !tbaa !28
  br label %497

497:                                              ; preds = %483
  %498 = load i32, ptr %7, align 4, !tbaa !20
  %499 = add nsw i32 %498, 1
  store i32 %499, ptr %7, align 4, !tbaa !20
  br label %479, !llvm.loop !48

500:                                              ; preds = %479
  %501 = load ptr, ptr %4, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.cmaes_t, ptr %501, i32 0, i32 20
  %503 = load ptr, ptr %502, align 8, !tbaa !47
  %504 = load i32, ptr %9, align 4, !tbaa !20
  %505 = zext i32 %504 to i64
  call void @qsort(ptr noundef %503, i64 noundef %505, i64 noundef 8, ptr noundef @SignOfDiff)
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %506

506:                                              ; preds = %524, %500
  %507 = load i32, ptr %7, align 4, !tbaa !20
  %508 = load i32, ptr %9, align 4, !tbaa !20
  %509 = icmp slt i32 %507, %508
  br i1 %509, label %510, label %527

510:                                              ; preds = %506
  %511 = load ptr, ptr %6, align 8, !tbaa !5
  %512 = load i32, ptr %7, align 4, !tbaa !20
  %513 = icmp eq i32 %512, 0
  %514 = zext i1 %513 to i64
  %515 = select i1 %513, ptr @.str.72, ptr @.str.73
  %516 = load ptr, ptr %4, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.cmaes_t, ptr %516, i32 0, i32 20
  %518 = load ptr, ptr %517, align 8, !tbaa !47
  %519 = load i32, ptr %7, align 4, !tbaa !20
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds double, ptr %518, i64 %520
  %522 = load double, ptr %521, align 8, !tbaa !28
  %523 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %511, ptr noundef @.str.71, ptr noundef %515, double noundef %522) #5
  br label %524

524:                                              ; preds = %510
  %525 = load i32, ptr %7, align 4, !tbaa !20
  %526 = add nsw i32 %525, 1
  store i32 %526, ptr %7, align 4, !tbaa !20
  br label %506, !llvm.loop !49

527:                                              ; preds = %506
  br label %528

528:                                              ; preds = %544, %527
  %529 = load ptr, ptr %5, align 8, !tbaa !5
  %530 = load i8, ptr %529, align 1, !tbaa !23
  %531 = sext i8 %530 to i32
  %532 = icmp ne i32 %531, 43
  br i1 %532, label %533, label %542

533:                                              ; preds = %528
  %534 = load ptr, ptr %5, align 8, !tbaa !5
  %535 = load i8, ptr %534, align 1, !tbaa !23
  %536 = sext i8 %535 to i32
  %537 = icmp ne i32 %536, 0
  br i1 %537, label %538, label %542

538:                                              ; preds = %533
  %539 = load ptr, ptr %5, align 8, !tbaa !5
  %540 = load ptr, ptr %10, align 8, !tbaa !5
  %541 = icmp ult ptr %539, %540
  br label %542

542:                                              ; preds = %538, %533, %528
  %543 = phi i1 [ false, %533 ], [ false, %528 ], [ %541, %538 ]
  br i1 %543, label %544, label %547

544:                                              ; preds = %542
  %545 = load ptr, ptr %5, align 8, !tbaa !5
  %546 = getelementptr inbounds i8, ptr %545, i32 1
  store ptr %546, ptr %5, align 8, !tbaa !5
  br label %528, !llvm.loop !50

547:                                              ; preds = %542
  %548 = load ptr, ptr %6, align 8, !tbaa !5
  %549 = load ptr, ptr %5, align 8, !tbaa !5
  %550 = load i8, ptr %549, align 1, !tbaa !23
  %551 = sext i8 %550 to i32
  %552 = icmp eq i32 %551, 43
  %553 = zext i1 %552 to i64
  %554 = select i1 %552, i32 9, i32 10
  %555 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %548, ptr noundef @.str.58, i32 noundef %554) #5
  br label %556

556:                                              ; preds = %547, %474
  %557 = load ptr, ptr %5, align 8, !tbaa !5
  %558 = call i32 @strncmp(ptr noundef %557, ptr noundef @.str.75, i64 noundef 3) #6
  %559 = icmp eq i32 %558, 0
  br i1 %559, label %560, label %592

560:                                              ; preds = %556
  %561 = load ptr, ptr %6, align 8, !tbaa !5
  %562 = load i32, ptr %9, align 4, !tbaa !20
  %563 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %561, ptr noundef @.str.60, i32 noundef %562) #5
  br label %564

564:                                              ; preds = %580, %560
  %565 = load ptr, ptr %5, align 8, !tbaa !5
  %566 = load i8, ptr %565, align 1, !tbaa !23
  %567 = sext i8 %566 to i32
  %568 = icmp ne i32 %567, 43
  br i1 %568, label %569, label %578

569:                                              ; preds = %564
  %570 = load ptr, ptr %5, align 8, !tbaa !5
  %571 = load i8, ptr %570, align 1, !tbaa !23
  %572 = sext i8 %571 to i32
  %573 = icmp ne i32 %572, 0
  br i1 %573, label %574, label %578

574:                                              ; preds = %569
  %575 = load ptr, ptr %5, align 8, !tbaa !5
  %576 = load ptr, ptr %10, align 8, !tbaa !5
  %577 = icmp ult ptr %575, %576
  br label %578

578:                                              ; preds = %574, %569, %564
  %579 = phi i1 [ false, %569 ], [ false, %564 ], [ %577, %574 ]
  br i1 %579, label %580, label %583

580:                                              ; preds = %578
  %581 = load ptr, ptr %5, align 8, !tbaa !5
  %582 = getelementptr inbounds i8, ptr %581, i32 1
  store ptr %582, ptr %5, align 8, !tbaa !5
  br label %564, !llvm.loop !51

583:                                              ; preds = %578
  %584 = load ptr, ptr %6, align 8, !tbaa !5
  %585 = load ptr, ptr %5, align 8, !tbaa !5
  %586 = load i8, ptr %585, align 1, !tbaa !23
  %587 = sext i8 %586 to i32
  %588 = icmp eq i32 %587, 43
  %589 = zext i1 %588 to i64
  %590 = select i1 %588, i32 9, i32 10
  %591 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %584, ptr noundef @.str.58, i32 noundef %590) #5
  br label %592

592:                                              ; preds = %583, %556
  %593 = load ptr, ptr %5, align 8, !tbaa !5
  %594 = call i32 @strncmp(ptr noundef %593, ptr noundef @.str.76, i64 noundef 4) #6
  %595 = icmp eq i32 %594, 0
  br i1 %595, label %596, label %630

596:                                              ; preds = %592
  %597 = load ptr, ptr %6, align 8, !tbaa !5
  %598 = load ptr, ptr %4, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.cmaes_t, ptr %598, i32 0, i32 24
  %600 = load double, ptr %599, align 8, !tbaa !52
  %601 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %597, ptr noundef @.str.77, double noundef %600) #5
  br label %602

602:                                              ; preds = %618, %596
  %603 = load ptr, ptr %5, align 8, !tbaa !5
  %604 = load i8, ptr %603, align 1, !tbaa !23
  %605 = sext i8 %604 to i32
  %606 = icmp ne i32 %605, 43
  br i1 %606, label %607, label %616

607:                                              ; preds = %602
  %608 = load ptr, ptr %5, align 8, !tbaa !5
  %609 = load i8, ptr %608, align 1, !tbaa !23
  %610 = sext i8 %609 to i32
  %611 = icmp ne i32 %610, 0
  br i1 %611, label %612, label %616

612:                                              ; preds = %607
  %613 = load ptr, ptr %5, align 8, !tbaa !5
  %614 = load ptr, ptr %10, align 8, !tbaa !5
  %615 = icmp ult ptr %613, %614
  br label %616

616:                                              ; preds = %612, %607, %602
  %617 = phi i1 [ false, %607 ], [ false, %602 ], [ %615, %612 ]
  br i1 %617, label %618, label %621

618:                                              ; preds = %616
  %619 = load ptr, ptr %5, align 8, !tbaa !5
  %620 = getelementptr inbounds i8, ptr %619, i32 1
  store ptr %620, ptr %5, align 8, !tbaa !5
  br label %602, !llvm.loop !53

621:                                              ; preds = %616
  %622 = load ptr, ptr %6, align 8, !tbaa !5
  %623 = load ptr, ptr %5, align 8, !tbaa !5
  %624 = load i8, ptr %623, align 1, !tbaa !23
  %625 = sext i8 %624 to i32
  %626 = icmp eq i32 %625, 43
  %627 = zext i1 %626 to i64
  %628 = select i1 %626, i32 9, i32 10
  %629 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %622, ptr noundef @.str.58, i32 noundef %628) #5
  br label %630

630:                                              ; preds = %621, %592
  %631 = load ptr, ptr %5, align 8, !tbaa !5
  %632 = call i32 @strncmp(ptr noundef %631, ptr noundef @.str.78, i64 noundef 12) #6
  %633 = icmp eq i32 %632, 0
  br i1 %633, label %634, label %702

634:                                              ; preds = %630
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  %635 = load i32, ptr %9, align 4, !tbaa !20
  %636 = sitofp i32 %635 to double
  %637 = fadd double %636, 1.000000e+00
  %638 = fdiv double %637, 5.000000e+00
  %639 = fadd double 5.000000e-01, %638
  %640 = fptosi double %639 to i32
  store i32 %640, ptr %17, align 4, !tbaa !20
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %641

641:                                              ; preds = %659, %634
  %642 = load i32, ptr %7, align 4, !tbaa !20
  %643 = load i32, ptr %9, align 4, !tbaa !20
  %644 = icmp slt i32 %642, %643
  br i1 %644, label %645, label %662

645:                                              ; preds = %641
  %646 = load ptr, ptr %4, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.cmaes_t, ptr %646, i32 0, i32 14
  %648 = load ptr, ptr %647, align 8, !tbaa !34
  %649 = load i32, ptr %7, align 4, !tbaa !20
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds double, ptr %648, i64 %650
  %652 = load double, ptr %651, align 8, !tbaa !28
  %653 = load ptr, ptr %4, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.cmaes_t, ptr %653, i32 0, i32 20
  %655 = load ptr, ptr %654, align 8, !tbaa !47
  %656 = load i32, ptr %7, align 4, !tbaa !20
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds double, ptr %655, i64 %657
  store double %652, ptr %658, align 8, !tbaa !28
  br label %659

659:                                              ; preds = %645
  %660 = load i32, ptr %7, align 4, !tbaa !20
  %661 = add nsw i32 %660, 1
  store i32 %661, ptr %7, align 4, !tbaa !20
  br label %641, !llvm.loop !54

662:                                              ; preds = %641
  %663 = load ptr, ptr %4, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.cmaes_t, ptr %663, i32 0, i32 20
  %665 = load ptr, ptr %664, align 8, !tbaa !47
  %666 = load i32, ptr %9, align 4, !tbaa !20
  %667 = zext i32 %666 to i64
  call void @qsort(ptr noundef %665, i64 noundef %667, i64 noundef 8, ptr noundef @SignOfDiff)
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %668

668:                                              ; preds = %690, %662
  %669 = load i32, ptr %7, align 4, !tbaa !20
  %670 = load i32, ptr %9, align 4, !tbaa !20
  %671 = sub nsw i32 %670, 1
  %672 = icmp slt i32 %669, %671
  br i1 %672, label %673, label %694

673:                                              ; preds = %668
  %674 = load ptr, ptr %6, align 8, !tbaa !5
  %675 = load i32, ptr %7, align 4, !tbaa !20
  %676 = icmp eq i32 %675, 0
  %677 = zext i1 %676 to i64
  %678 = select i1 %676, ptr @.str.72, ptr @.str.73
  %679 = load ptr, ptr %4, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.cmaes_t, ptr %679, i32 0, i32 20
  %681 = load ptr, ptr %680, align 8, !tbaa !47
  %682 = load i32, ptr %9, align 4, !tbaa !20
  %683 = sub nsw i32 %682, 1
  %684 = load i32, ptr %7, align 4, !tbaa !20
  %685 = sub nsw i32 %683, %684
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds double, ptr %681, i64 %686
  %688 = load double, ptr %687, align 8, !tbaa !28
  %689 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %674, ptr noundef @.str.71, ptr noundef %678, double noundef %688) #5
  br label %690

690:                                              ; preds = %673
  %691 = load i32, ptr %17, align 4, !tbaa !20
  %692 = load i32, ptr %7, align 4, !tbaa !20
  %693 = add nsw i32 %692, %691
  store i32 %693, ptr %7, align 4, !tbaa !20
  br label %668, !llvm.loop !55

694:                                              ; preds = %668
  %695 = load ptr, ptr %6, align 8, !tbaa !5
  %696 = load ptr, ptr %4, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.cmaes_t, ptr %696, i32 0, i32 20
  %698 = load ptr, ptr %697, align 8, !tbaa !47
  %699 = getelementptr inbounds double, ptr %698, i64 0
  %700 = load double, ptr %699, align 8, !tbaa !28
  %701 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %695, ptr noundef @.str.79, double noundef %700) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  br label %2079

702:                                              ; preds = %630
  %703 = load ptr, ptr %5, align 8, !tbaa !5
  %704 = call i32 @strncmp(ptr noundef %703, ptr noundef @.str.80, i64 noundef 7) #6
  %705 = icmp eq i32 %704, 0
  br i1 %705, label %706, label %731

706:                                              ; preds = %702
  %707 = load ptr, ptr %6, align 8, !tbaa !5
  %708 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %707, ptr noundef @.str.81) #5
  %709 = load ptr, ptr %6, align 8, !tbaa !5
  %710 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %709, ptr noundef @.str.82) #5
  br label %711

711:                                              ; preds = %727, %706
  %712 = load ptr, ptr %5, align 8, !tbaa !5
  %713 = load i8, ptr %712, align 1, !tbaa !23
  %714 = sext i8 %713 to i32
  %715 = icmp ne i32 %714, 43
  br i1 %715, label %716, label %725

716:                                              ; preds = %711
  %717 = load ptr, ptr %5, align 8, !tbaa !5
  %718 = load i8, ptr %717, align 1, !tbaa !23
  %719 = sext i8 %718 to i32
  %720 = icmp ne i32 %719, 0
  br i1 %720, label %721, label %725

721:                                              ; preds = %716
  %722 = load ptr, ptr %5, align 8, !tbaa !5
  %723 = load ptr, ptr %10, align 8, !tbaa !5
  %724 = icmp ult ptr %722, %723
  br label %725

725:                                              ; preds = %721, %716, %711
  %726 = phi i1 [ false, %716 ], [ false, %711 ], [ %724, %721 ]
  br i1 %726, label %727, label %730

727:                                              ; preds = %725
  %728 = load ptr, ptr %5, align 8, !tbaa !5
  %729 = getelementptr inbounds i8, ptr %728, i32 1
  store ptr %729, ptr %5, align 8, !tbaa !5
  br label %711, !llvm.loop !56

730:                                              ; preds = %725
  br label %731

731:                                              ; preds = %730, %702
  %732 = load ptr, ptr %5, align 8, !tbaa !5
  %733 = call i32 @strncmp(ptr noundef %732, ptr noundef @.str.55, i64 noundef 3) #6
  %734 = icmp eq i32 %733, 0
  br i1 %734, label %735, label %822

735:                                              ; preds = %731
  %736 = load ptr, ptr %6, align 8, !tbaa !5
  %737 = load ptr, ptr %4, align 8, !tbaa !5
  %738 = getelementptr inbounds %struct.cmaes_t, ptr %737, i32 0, i32 23
  %739 = load double, ptr %738, align 8, !tbaa !57
  %740 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %736, ptr noundef @.str.83, double noundef %739) #5
  %741 = load ptr, ptr %6, align 8, !tbaa !5
  %742 = load ptr, ptr %4, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.cmaes_t, ptr %742, i32 0, i32 24
  %744 = load double, ptr %743, align 8, !tbaa !52
  %745 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %741, ptr noundef @.str.84, double noundef %744) #5
  %746 = load ptr, ptr %6, align 8, !tbaa !5
  %747 = load ptr, ptr %4, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.cmaes_t, ptr %747, i32 0, i32 21
  %749 = load ptr, ptr %748, align 8, !tbaa !58
  %750 = load ptr, ptr %4, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.cmaes_t, ptr %750, i32 0, i32 7
  %752 = load ptr, ptr %751, align 8, !tbaa !59
  %753 = getelementptr inbounds i32, ptr %752, i64 0
  %754 = load i32, ptr %753, align 4, !tbaa !20
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds double, ptr %749, i64 %755
  %757 = load double, ptr %756, align 8, !tbaa !28
  %758 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %746, ptr noundef @.str.85, double noundef %757) #5
  %759 = load ptr, ptr %6, align 8, !tbaa !5
  %760 = load ptr, ptr %4, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.cmaes_t, ptr %760, i32 0, i32 3
  %762 = load double, ptr %761, align 8, !tbaa !44
  %763 = load ptr, ptr %4, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.cmaes_t, ptr %763, i32 0, i32 3
  %765 = load double, ptr %764, align 8, !tbaa !44
  %766 = load ptr, ptr %4, align 8, !tbaa !5
  %767 = getelementptr inbounds %struct.cmaes_t, ptr %766, i32 0, i32 26
  %768 = load double, ptr %767, align 8, !tbaa !31
  %769 = call double @sqrt(double noundef %768) #5
  %770 = fmul double %765, %769
  %771 = load ptr, ptr %4, align 8, !tbaa !5
  %772 = getelementptr inbounds %struct.cmaes_t, ptr %771, i32 0, i32 3
  %773 = load double, ptr %772, align 8, !tbaa !44
  %774 = load ptr, ptr %4, align 8, !tbaa !5
  %775 = getelementptr inbounds %struct.cmaes_t, ptr %774, i32 0, i32 27
  %776 = load double, ptr %775, align 8, !tbaa !26
  %777 = call double @sqrt(double noundef %776) #5
  %778 = fmul double %773, %777
  %779 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %759, ptr noundef @.str.86, double noundef %762, double noundef %770, double noundef %778) #5
  %780 = load ptr, ptr %6, align 8, !tbaa !5
  %781 = load ptr, ptr %4, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct.cmaes_t, ptr %781, i32 0, i32 28
  %783 = load double, ptr %782, align 8, !tbaa !21
  %784 = load ptr, ptr %4, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.cmaes_t, ptr %784, i32 0, i32 29
  %786 = load double, ptr %785, align 8, !tbaa !22
  %787 = fdiv double %783, %786
  %788 = call double @sqrt(double noundef %787) #5
  %789 = load ptr, ptr %4, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.cmaes_t, ptr %789, i32 0, i32 29
  %791 = load double, ptr %790, align 8, !tbaa !22
  %792 = call double @sqrt(double noundef %791) #5
  %793 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %780, ptr noundef @.str.87, double noundef %788, double noundef %792) #5
  br label %794

794:                                              ; preds = %810, %735
  %795 = load ptr, ptr %5, align 8, !tbaa !5
  %796 = load i8, ptr %795, align 1, !tbaa !23
  %797 = sext i8 %796 to i32
  %798 = icmp ne i32 %797, 43
  br i1 %798, label %799, label %808

799:                                              ; preds = %794
  %800 = load ptr, ptr %5, align 8, !tbaa !5
  %801 = load i8, ptr %800, align 1, !tbaa !23
  %802 = sext i8 %801 to i32
  %803 = icmp ne i32 %802, 0
  br i1 %803, label %804, label %808

804:                                              ; preds = %799
  %805 = load ptr, ptr %5, align 8, !tbaa !5
  %806 = load ptr, ptr %10, align 8, !tbaa !5
  %807 = icmp ult ptr %805, %806
  br label %808

808:                                              ; preds = %804, %799, %794
  %809 = phi i1 [ false, %799 ], [ false, %794 ], [ %807, %804 ]
  br i1 %809, label %810, label %813

810:                                              ; preds = %808
  %811 = load ptr, ptr %5, align 8, !tbaa !5
  %812 = getelementptr inbounds i8, ptr %811, i32 1
  store ptr %812, ptr %5, align 8, !tbaa !5
  br label %794, !llvm.loop !60

813:                                              ; preds = %808
  %814 = load ptr, ptr %6, align 8, !tbaa !5
  %815 = load ptr, ptr %5, align 8, !tbaa !5
  %816 = load i8, ptr %815, align 1, !tbaa !23
  %817 = sext i8 %816 to i32
  %818 = icmp eq i32 %817, 43
  %819 = zext i1 %818 to i64
  %820 = select i1 %818, i32 9, i32 10
  %821 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %814, ptr noundef @.str.58, i32 noundef %820) #5
  br label %822

822:                                              ; preds = %813, %731
  %823 = load ptr, ptr %5, align 8, !tbaa !5
  %824 = call i32 @strncmp(ptr noundef %823, ptr noundef @.str.88, i64 noundef 6) #6
  %825 = icmp eq i32 %824, 0
  br i1 %825, label %830, label %826

826:                                              ; preds = %822
  %827 = load ptr, ptr %5, align 8, !tbaa !5
  %828 = call i32 @strncmp(ptr noundef %827, ptr noundef @.str.89, i64 noundef 6) #6
  %829 = icmp eq i32 %828, 0
  br i1 %829, label %830, label %872

830:                                              ; preds = %826, %822
  %831 = load ptr, ptr %6, align 8, !tbaa !5
  %832 = load ptr, ptr %4, align 8, !tbaa !5
  %833 = getelementptr inbounds %struct.cmaes_t, ptr %832, i32 0, i32 21
  %834 = load ptr, ptr %833, align 8, !tbaa !58
  %835 = load ptr, ptr %4, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.cmaes_t, ptr %835, i32 0, i32 7
  %837 = load ptr, ptr %836, align 8, !tbaa !59
  %838 = getelementptr inbounds i32, ptr %837, i64 0
  %839 = load i32, ptr %838, align 4, !tbaa !20
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds double, ptr %834, i64 %840
  %842 = load double, ptr %841, align 8, !tbaa !28
  %843 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %831, ptr noundef @.str.85, double noundef %842) #5
  br label %844

844:                                              ; preds = %860, %830
  %845 = load ptr, ptr %5, align 8, !tbaa !5
  %846 = load i8, ptr %845, align 1, !tbaa !23
  %847 = sext i8 %846 to i32
  %848 = icmp ne i32 %847, 43
  br i1 %848, label %849, label %858

849:                                              ; preds = %844
  %850 = load ptr, ptr %5, align 8, !tbaa !5
  %851 = load i8, ptr %850, align 1, !tbaa !23
  %852 = sext i8 %851 to i32
  %853 = icmp ne i32 %852, 0
  br i1 %853, label %854, label %858

854:                                              ; preds = %849
  %855 = load ptr, ptr %5, align 8, !tbaa !5
  %856 = load ptr, ptr %10, align 8, !tbaa !5
  %857 = icmp ult ptr %855, %856
  br label %858

858:                                              ; preds = %854, %849, %844
  %859 = phi i1 [ false, %849 ], [ false, %844 ], [ %857, %854 ]
  br i1 %859, label %860, label %863

860:                                              ; preds = %858
  %861 = load ptr, ptr %5, align 8, !tbaa !5
  %862 = getelementptr inbounds i8, ptr %861, i32 1
  store ptr %862, ptr %5, align 8, !tbaa !5
  br label %844, !llvm.loop !61

863:                                              ; preds = %858
  %864 = load ptr, ptr %6, align 8, !tbaa !5
  %865 = load ptr, ptr %5, align 8, !tbaa !5
  %866 = load i8, ptr %865, align 1, !tbaa !23
  %867 = sext i8 %866 to i32
  %868 = icmp eq i32 %867, 43
  %869 = zext i1 %868 to i64
  %870 = select i1 %868, i32 9, i32 10
  %871 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %864, ptr noundef @.str.58, i32 noundef %870) #5
  br label %872

872:                                              ; preds = %863, %826
  %873 = load ptr, ptr %5, align 8, !tbaa !5
  %874 = call i32 @strncmp(ptr noundef %873, ptr noundef @.str.90, i64 noundef 9) #6
  %875 = icmp eq i32 %874, 0
  br i1 %875, label %876, label %914

876:                                              ; preds = %872
  %877 = load ptr, ptr %6, align 8, !tbaa !5
  %878 = load ptr, ptr %4, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.cmaes_t, ptr %878, i32 0, i32 5
  %880 = load ptr, ptr %879, align 8, !tbaa !62
  %881 = load i32, ptr %9, align 4, !tbaa !20
  %882 = sext i32 %881 to i64
  %883 = getelementptr inbounds double, ptr %880, i64 %882
  %884 = load double, ptr %883, align 8, !tbaa !28
  %885 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %877, ptr noundef @.str.85, double noundef %884) #5
  br label %886

886:                                              ; preds = %902, %876
  %887 = load ptr, ptr %5, align 8, !tbaa !5
  %888 = load i8, ptr %887, align 1, !tbaa !23
  %889 = sext i8 %888 to i32
  %890 = icmp ne i32 %889, 43
  br i1 %890, label %891, label %900

891:                                              ; preds = %886
  %892 = load ptr, ptr %5, align 8, !tbaa !5
  %893 = load i8, ptr %892, align 1, !tbaa !23
  %894 = sext i8 %893 to i32
  %895 = icmp ne i32 %894, 0
  br i1 %895, label %896, label %900

896:                                              ; preds = %891
  %897 = load ptr, ptr %5, align 8, !tbaa !5
  %898 = load ptr, ptr %10, align 8, !tbaa !5
  %899 = icmp ult ptr %897, %898
  br label %900

900:                                              ; preds = %896, %891, %886
  %901 = phi i1 [ false, %891 ], [ false, %886 ], [ %899, %896 ]
  br i1 %901, label %902, label %905

902:                                              ; preds = %900
  %903 = load ptr, ptr %5, align 8, !tbaa !5
  %904 = getelementptr inbounds i8, ptr %903, i32 1
  store ptr %904, ptr %5, align 8, !tbaa !5
  br label %886, !llvm.loop !63

905:                                              ; preds = %900
  %906 = load ptr, ptr %6, align 8, !tbaa !5
  %907 = load ptr, ptr %5, align 8, !tbaa !5
  %908 = load i8, ptr %907, align 1, !tbaa !23
  %909 = sext i8 %908 to i32
  %910 = icmp eq i32 %909, 43
  %911 = zext i1 %910 to i64
  %912 = select i1 %910, i32 9, i32 10
  %913 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %906, ptr noundef @.str.58, i32 noundef %912) #5
  br label %914

914:                                              ; preds = %905, %872
  %915 = load ptr, ptr %5, align 8, !tbaa !5
  %916 = call i32 @strncmp(ptr noundef %915, ptr noundef @.str.91, i64 noundef 7) #6
  %917 = icmp eq i32 %916, 0
  br i1 %917, label %918, label %966

918:                                              ; preds = %914
  %919 = load ptr, ptr %6, align 8, !tbaa !5
  %920 = load ptr, ptr %4, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.cmaes_t, ptr %920, i32 0, i32 21
  %922 = load ptr, ptr %921, align 8, !tbaa !58
  %923 = load ptr, ptr %4, align 8, !tbaa !5
  %924 = getelementptr inbounds %struct.cmaes_t, ptr %923, i32 0, i32 7
  %925 = load ptr, ptr %924, align 8, !tbaa !59
  %926 = load ptr, ptr %4, align 8, !tbaa !5
  %927 = getelementptr inbounds %struct.cmaes_t, ptr %926, i32 0, i32 1
  %928 = getelementptr inbounds %struct.cmaes_readpara_t, ptr %927, i32 0, i32 17
  %929 = load i32, ptr %928, align 8, !tbaa !64
  %930 = sdiv i32 %929, 2
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds i32, ptr %925, i64 %931
  %933 = load i32, ptr %932, align 4, !tbaa !20
  %934 = sext i32 %933 to i64
  %935 = getelementptr inbounds double, ptr %922, i64 %934
  %936 = load double, ptr %935, align 8, !tbaa !28
  %937 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %919, ptr noundef @.str.85, double noundef %936) #5
  br label %938

938:                                              ; preds = %954, %918
  %939 = load ptr, ptr %5, align 8, !tbaa !5
  %940 = load i8, ptr %939, align 1, !tbaa !23
  %941 = sext i8 %940 to i32
  %942 = icmp ne i32 %941, 43
  br i1 %942, label %943, label %952

943:                                              ; preds = %938
  %944 = load ptr, ptr %5, align 8, !tbaa !5
  %945 = load i8, ptr %944, align 1, !tbaa !23
  %946 = sext i8 %945 to i32
  %947 = icmp ne i32 %946, 0
  br i1 %947, label %948, label %952

948:                                              ; preds = %943
  %949 = load ptr, ptr %5, align 8, !tbaa !5
  %950 = load ptr, ptr %10, align 8, !tbaa !5
  %951 = icmp ult ptr %949, %950
  br label %952

952:                                              ; preds = %948, %943, %938
  %953 = phi i1 [ false, %943 ], [ false, %938 ], [ %951, %948 ]
  br i1 %953, label %954, label %957

954:                                              ; preds = %952
  %955 = load ptr, ptr %5, align 8, !tbaa !5
  %956 = getelementptr inbounds i8, ptr %955, i32 1
  store ptr %956, ptr %5, align 8, !tbaa !5
  br label %938, !llvm.loop !65

957:                                              ; preds = %952
  %958 = load ptr, ptr %6, align 8, !tbaa !5
  %959 = load ptr, ptr %5, align 8, !tbaa !5
  %960 = load i8, ptr %959, align 1, !tbaa !23
  %961 = sext i8 %960 to i32
  %962 = icmp eq i32 %961, 43
  %963 = zext i1 %962 to i64
  %964 = select i1 %962, i32 9, i32 10
  %965 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %958, ptr noundef @.str.58, i32 noundef %964) #5
  br label %966

966:                                              ; preds = %957, %914
  %967 = load ptr, ptr %5, align 8, !tbaa !5
  %968 = call i32 @strncmp(ptr noundef %967, ptr noundef @.str.92, i64 noundef 6) #6
  %969 = icmp eq i32 %968, 0
  br i1 %969, label %970, label %1018

970:                                              ; preds = %966
  %971 = load ptr, ptr %6, align 8, !tbaa !5
  %972 = load ptr, ptr %4, align 8, !tbaa !5
  %973 = getelementptr inbounds %struct.cmaes_t, ptr %972, i32 0, i32 21
  %974 = load ptr, ptr %973, align 8, !tbaa !58
  %975 = load ptr, ptr %4, align 8, !tbaa !5
  %976 = getelementptr inbounds %struct.cmaes_t, ptr %975, i32 0, i32 7
  %977 = load ptr, ptr %976, align 8, !tbaa !59
  %978 = load ptr, ptr %4, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.cmaes_t, ptr %978, i32 0, i32 1
  %980 = getelementptr inbounds %struct.cmaes_readpara_t, ptr %979, i32 0, i32 17
  %981 = load i32, ptr %980, align 8, !tbaa !64
  %982 = sub nsw i32 %981, 1
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds i32, ptr %977, i64 %983
  %985 = load i32, ptr %984, align 4, !tbaa !20
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds double, ptr %974, i64 %986
  %988 = load double, ptr %987, align 8, !tbaa !28
  %989 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %971, ptr noundef @.str.85, double noundef %988) #5
  br label %990

990:                                              ; preds = %1006, %970
  %991 = load ptr, ptr %5, align 8, !tbaa !5
  %992 = load i8, ptr %991, align 1, !tbaa !23
  %993 = sext i8 %992 to i32
  %994 = icmp ne i32 %993, 43
  br i1 %994, label %995, label %1004

995:                                              ; preds = %990
  %996 = load ptr, ptr %5, align 8, !tbaa !5
  %997 = load i8, ptr %996, align 1, !tbaa !23
  %998 = sext i8 %997 to i32
  %999 = icmp ne i32 %998, 0
  br i1 %999, label %1000, label %1004

1000:                                             ; preds = %995
  %1001 = load ptr, ptr %5, align 8, !tbaa !5
  %1002 = load ptr, ptr %10, align 8, !tbaa !5
  %1003 = icmp ult ptr %1001, %1002
  br label %1004

1004:                                             ; preds = %1000, %995, %990
  %1005 = phi i1 [ false, %995 ], [ false, %990 ], [ %1003, %1000 ]
  br i1 %1005, label %1006, label %1009

1006:                                             ; preds = %1004
  %1007 = load ptr, ptr %5, align 8, !tbaa !5
  %1008 = getelementptr inbounds i8, ptr %1007, i32 1
  store ptr %1008, ptr %5, align 8, !tbaa !5
  br label %990, !llvm.loop !66

1009:                                             ; preds = %1004
  %1010 = load ptr, ptr %6, align 8, !tbaa !5
  %1011 = load ptr, ptr %5, align 8, !tbaa !5
  %1012 = load i8, ptr %1011, align 1, !tbaa !23
  %1013 = sext i8 %1012 to i32
  %1014 = icmp eq i32 %1013, 43
  %1015 = zext i1 %1014 to i64
  %1016 = select i1 %1014, i32 9, i32 10
  %1017 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1010, ptr noundef @.str.58, i32 noundef %1016) #5
  br label %1018

1018:                                             ; preds = %1009, %966
  %1019 = load ptr, ptr %5, align 8, !tbaa !5
  %1020 = call i32 @strncmp(ptr noundef %1019, ptr noundef @.str.93, i64 noundef 8) #6
  %1021 = icmp eq i32 %1020, 0
  br i1 %1021, label %1026, label %1022

1022:                                             ; preds = %1018
  %1023 = load ptr, ptr %5, align 8, !tbaa !5
  %1024 = call i32 @strncmp(ptr noundef %1023, ptr noundef @.str.94, i64 noundef 8) #6
  %1025 = icmp eq i32 %1024, 0
  br i1 %1025, label %1026, label %1083

1026:                                             ; preds = %1022, %1018
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %1027

1027:                                             ; preds = %1051, %1026
  %1028 = load i32, ptr %7, align 4, !tbaa !20
  %1029 = load i32, ptr %9, align 4, !tbaa !20
  %1030 = icmp slt i32 %1028, %1029
  br i1 %1030, label %1031, label %1054

1031:                                             ; preds = %1027
  %1032 = load ptr, ptr %6, align 8, !tbaa !5
  %1033 = load i32, ptr %7, align 4, !tbaa !20
  %1034 = icmp eq i32 %1033, 0
  %1035 = zext i1 %1034 to i64
  %1036 = select i1 %1034, ptr @.str.72, ptr @.str.73
  %1037 = load ptr, ptr %4, align 8, !tbaa !5
  %1038 = getelementptr inbounds %struct.cmaes_t, ptr %1037, i32 0, i32 21
  %1039 = load ptr, ptr %1038, align 8, !tbaa !58
  %1040 = load ptr, ptr %4, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.cmaes_t, ptr %1040, i32 0, i32 7
  %1042 = load ptr, ptr %1041, align 8, !tbaa !59
  %1043 = load i32, ptr %7, align 4, !tbaa !20
  %1044 = sext i32 %1043 to i64
  %1045 = getelementptr inbounds i32, ptr %1042, i64 %1044
  %1046 = load i32, ptr %1045, align 4, !tbaa !20
  %1047 = sext i32 %1046 to i64
  %1048 = getelementptr inbounds double, ptr %1039, i64 %1047
  %1049 = load double, ptr %1048, align 8, !tbaa !28
  %1050 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1032, ptr noundef @.str.95, ptr noundef %1036, double noundef %1049) #5
  br label %1051

1051:                                             ; preds = %1031
  %1052 = load i32, ptr %7, align 4, !tbaa !20
  %1053 = add nsw i32 %1052, 1
  store i32 %1053, ptr %7, align 4, !tbaa !20
  br label %1027, !llvm.loop !67

1054:                                             ; preds = %1027
  br label %1055

1055:                                             ; preds = %1071, %1054
  %1056 = load ptr, ptr %5, align 8, !tbaa !5
  %1057 = load i8, ptr %1056, align 1, !tbaa !23
  %1058 = sext i8 %1057 to i32
  %1059 = icmp ne i32 %1058, 43
  br i1 %1059, label %1060, label %1069

1060:                                             ; preds = %1055
  %1061 = load ptr, ptr %5, align 8, !tbaa !5
  %1062 = load i8, ptr %1061, align 1, !tbaa !23
  %1063 = sext i8 %1062 to i32
  %1064 = icmp ne i32 %1063, 0
  br i1 %1064, label %1065, label %1069

1065:                                             ; preds = %1060
  %1066 = load ptr, ptr %5, align 8, !tbaa !5
  %1067 = load ptr, ptr %10, align 8, !tbaa !5
  %1068 = icmp ult ptr %1066, %1067
  br label %1069

1069:                                             ; preds = %1065, %1060, %1055
  %1070 = phi i1 [ false, %1060 ], [ false, %1055 ], [ %1068, %1065 ]
  br i1 %1070, label %1071, label %1074

1071:                                             ; preds = %1069
  %1072 = load ptr, ptr %5, align 8, !tbaa !5
  %1073 = getelementptr inbounds i8, ptr %1072, i32 1
  store ptr %1073, ptr %5, align 8, !tbaa !5
  br label %1055, !llvm.loop !68

1074:                                             ; preds = %1069
  %1075 = load ptr, ptr %6, align 8, !tbaa !5
  %1076 = load ptr, ptr %5, align 8, !tbaa !5
  %1077 = load i8, ptr %1076, align 1, !tbaa !23
  %1078 = sext i8 %1077 to i32
  %1079 = icmp eq i32 %1078, 43
  %1080 = zext i1 %1079 to i64
  %1081 = select i1 %1079, i32 9, i32 10
  %1082 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1075, ptr noundef @.str.58, i32 noundef %1081) #5
  br label %1083

1083:                                             ; preds = %1074, %1022
  %1084 = load ptr, ptr %5, align 8, !tbaa !5
  %1085 = call i32 @strncmp(ptr noundef %1084, ptr noundef @.str.96, i64 noundef 3) #6
  %1086 = icmp eq i32 %1085, 0
  br i1 %1086, label %1087, label %1121

1087:                                             ; preds = %1083
  %1088 = load ptr, ptr %6, align 8, !tbaa !5
  %1089 = load ptr, ptr %4, align 8, !tbaa !5
  %1090 = getelementptr inbounds %struct.cmaes_t, ptr %1089, i32 0, i32 23
  %1091 = load double, ptr %1090, align 8, !tbaa !57
  %1092 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1088, ptr noundef @.str.77, double noundef %1091) #5
  br label %1093

1093:                                             ; preds = %1109, %1087
  %1094 = load ptr, ptr %5, align 8, !tbaa !5
  %1095 = load i8, ptr %1094, align 1, !tbaa !23
  %1096 = sext i8 %1095 to i32
  %1097 = icmp ne i32 %1096, 43
  br i1 %1097, label %1098, label %1107

1098:                                             ; preds = %1093
  %1099 = load ptr, ptr %5, align 8, !tbaa !5
  %1100 = load i8, ptr %1099, align 1, !tbaa !23
  %1101 = sext i8 %1100 to i32
  %1102 = icmp ne i32 %1101, 0
  br i1 %1102, label %1103, label %1107

1103:                                             ; preds = %1098
  %1104 = load ptr, ptr %5, align 8, !tbaa !5
  %1105 = load ptr, ptr %10, align 8, !tbaa !5
  %1106 = icmp ult ptr %1104, %1105
  br label %1107

1107:                                             ; preds = %1103, %1098, %1093
  %1108 = phi i1 [ false, %1098 ], [ false, %1093 ], [ %1106, %1103 ]
  br i1 %1108, label %1109, label %1112

1109:                                             ; preds = %1107
  %1110 = load ptr, ptr %5, align 8, !tbaa !5
  %1111 = getelementptr inbounds i8, ptr %1110, i32 1
  store ptr %1111, ptr %5, align 8, !tbaa !5
  br label %1093, !llvm.loop !69

1112:                                             ; preds = %1107
  %1113 = load ptr, ptr %6, align 8, !tbaa !5
  %1114 = load ptr, ptr %5, align 8, !tbaa !5
  %1115 = load i8, ptr %1114, align 1, !tbaa !23
  %1116 = sext i8 %1115 to i32
  %1117 = icmp eq i32 %1116, 43
  %1118 = zext i1 %1117 to i64
  %1119 = select i1 %1117, i32 9, i32 10
  %1120 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1113, ptr noundef @.str.58, i32 noundef %1119) #5
  br label %1121

1121:                                             ; preds = %1112, %1083
  %1122 = load ptr, ptr %5, align 8, !tbaa !5
  %1123 = call i32 @strncmp(ptr noundef %1122, ptr noundef @.str.97, i64 noundef 4) #6
  %1124 = icmp eq i32 %1123, 0
  br i1 %1124, label %1125, label %1159

1125:                                             ; preds = %1121
  %1126 = load ptr, ptr %6, align 8, !tbaa !5
  %1127 = load ptr, ptr %4, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.cmaes_t, ptr %1127, i32 0, i32 23
  %1129 = load double, ptr %1128, align 8, !tbaa !57
  %1130 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1126, ptr noundef @.str.77, double noundef %1129) #5
  br label %1131

1131:                                             ; preds = %1147, %1125
  %1132 = load ptr, ptr %5, align 8, !tbaa !5
  %1133 = load i8, ptr %1132, align 1, !tbaa !23
  %1134 = sext i8 %1133 to i32
  %1135 = icmp ne i32 %1134, 43
  br i1 %1135, label %1136, label %1145

1136:                                             ; preds = %1131
  %1137 = load ptr, ptr %5, align 8, !tbaa !5
  %1138 = load i8, ptr %1137, align 1, !tbaa !23
  %1139 = sext i8 %1138 to i32
  %1140 = icmp ne i32 %1139, 0
  br i1 %1140, label %1141, label %1145

1141:                                             ; preds = %1136
  %1142 = load ptr, ptr %5, align 8, !tbaa !5
  %1143 = load ptr, ptr %10, align 8, !tbaa !5
  %1144 = icmp ult ptr %1142, %1143
  br label %1145

1145:                                             ; preds = %1141, %1136, %1131
  %1146 = phi i1 [ false, %1136 ], [ false, %1131 ], [ %1144, %1141 ]
  br i1 %1146, label %1147, label %1150

1147:                                             ; preds = %1145
  %1148 = load ptr, ptr %5, align 8, !tbaa !5
  %1149 = getelementptr inbounds i8, ptr %1148, i32 1
  store ptr %1149, ptr %5, align 8, !tbaa !5
  br label %1131, !llvm.loop !70

1150:                                             ; preds = %1145
  %1151 = load ptr, ptr %6, align 8, !tbaa !5
  %1152 = load ptr, ptr %5, align 8, !tbaa !5
  %1153 = load i8, ptr %1152, align 1, !tbaa !23
  %1154 = sext i8 %1153 to i32
  %1155 = icmp eq i32 %1154, 43
  %1156 = zext i1 %1155 to i64
  %1157 = select i1 %1155, i32 9, i32 10
  %1158 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1151, ptr noundef @.str.58, i32 noundef %1157) #5
  br label %1159

1159:                                             ; preds = %1150, %1121
  %1160 = load ptr, ptr %5, align 8, !tbaa !5
  %1161 = call i32 @strncmp(ptr noundef %1160, ptr noundef @.str.98, i64 noundef 5) #6
  %1162 = icmp eq i32 %1161, 0
  br i1 %1162, label %1163, label %1197

1163:                                             ; preds = %1159
  %1164 = load ptr, ptr %6, align 8, !tbaa !5
  %1165 = load ptr, ptr %4, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.cmaes_t, ptr %1165, i32 0, i32 3
  %1167 = load double, ptr %1166, align 8, !tbaa !44
  %1168 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1164, ptr noundef @.str.99, double noundef %1167) #5
  br label %1169

1169:                                             ; preds = %1185, %1163
  %1170 = load ptr, ptr %5, align 8, !tbaa !5
  %1171 = load i8, ptr %1170, align 1, !tbaa !23
  %1172 = sext i8 %1171 to i32
  %1173 = icmp ne i32 %1172, 43
  br i1 %1173, label %1174, label %1183

1174:                                             ; preds = %1169
  %1175 = load ptr, ptr %5, align 8, !tbaa !5
  %1176 = load i8, ptr %1175, align 1, !tbaa !23
  %1177 = sext i8 %1176 to i32
  %1178 = icmp ne i32 %1177, 0
  br i1 %1178, label %1179, label %1183

1179:                                             ; preds = %1174
  %1180 = load ptr, ptr %5, align 8, !tbaa !5
  %1181 = load ptr, ptr %10, align 8, !tbaa !5
  %1182 = icmp ult ptr %1180, %1181
  br label %1183

1183:                                             ; preds = %1179, %1174, %1169
  %1184 = phi i1 [ false, %1174 ], [ false, %1169 ], [ %1182, %1179 ]
  br i1 %1184, label %1185, label %1188

1185:                                             ; preds = %1183
  %1186 = load ptr, ptr %5, align 8, !tbaa !5
  %1187 = getelementptr inbounds i8, ptr %1186, i32 1
  store ptr %1187, ptr %5, align 8, !tbaa !5
  br label %1169, !llvm.loop !71

1188:                                             ; preds = %1183
  %1189 = load ptr, ptr %6, align 8, !tbaa !5
  %1190 = load ptr, ptr %5, align 8, !tbaa !5
  %1191 = load i8, ptr %1190, align 1, !tbaa !23
  %1192 = sext i8 %1191 to i32
  %1193 = icmp eq i32 %1192, 43
  %1194 = zext i1 %1193 to i64
  %1195 = select i1 %1193, i32 9, i32 10
  %1196 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1189, ptr noundef @.str.58, i32 noundef %1195) #5
  br label %1197

1197:                                             ; preds = %1188, %1159
  %1198 = load ptr, ptr %5, align 8, !tbaa !5
  %1199 = call i32 @strncmp(ptr noundef %1198, ptr noundef @.str.100, i64 noundef 5) #6
  %1200 = icmp eq i32 %1199, 0
  br i1 %1200, label %1201, label %1236

1201:                                             ; preds = %1197
  %1202 = load ptr, ptr %6, align 8, !tbaa !5
  %1203 = load ptr, ptr %4, align 8, !tbaa !5
  %1204 = getelementptr inbounds %struct.cmaes_t, ptr %1203, i32 0, i32 27
  %1205 = load double, ptr %1204, align 8, !tbaa !26
  %1206 = call double @sqrt(double noundef %1205) #5
  %1207 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1202, ptr noundef @.str.99, double noundef %1206) #5
  br label %1208

1208:                                             ; preds = %1224, %1201
  %1209 = load ptr, ptr %5, align 8, !tbaa !5
  %1210 = load i8, ptr %1209, align 1, !tbaa !23
  %1211 = sext i8 %1210 to i32
  %1212 = icmp ne i32 %1211, 43
  br i1 %1212, label %1213, label %1222

1213:                                             ; preds = %1208
  %1214 = load ptr, ptr %5, align 8, !tbaa !5
  %1215 = load i8, ptr %1214, align 1, !tbaa !23
  %1216 = sext i8 %1215 to i32
  %1217 = icmp ne i32 %1216, 0
  br i1 %1217, label %1218, label %1222

1218:                                             ; preds = %1213
  %1219 = load ptr, ptr %5, align 8, !tbaa !5
  %1220 = load ptr, ptr %10, align 8, !tbaa !5
  %1221 = icmp ult ptr %1219, %1220
  br label %1222

1222:                                             ; preds = %1218, %1213, %1208
  %1223 = phi i1 [ false, %1213 ], [ false, %1208 ], [ %1221, %1218 ]
  br i1 %1223, label %1224, label %1227

1224:                                             ; preds = %1222
  %1225 = load ptr, ptr %5, align 8, !tbaa !5
  %1226 = getelementptr inbounds i8, ptr %1225, i32 1
  store ptr %1226, ptr %5, align 8, !tbaa !5
  br label %1208, !llvm.loop !72

1227:                                             ; preds = %1222
  %1228 = load ptr, ptr %6, align 8, !tbaa !5
  %1229 = load ptr, ptr %5, align 8, !tbaa !5
  %1230 = load i8, ptr %1229, align 1, !tbaa !23
  %1231 = sext i8 %1230 to i32
  %1232 = icmp eq i32 %1231, 43
  %1233 = zext i1 %1232 to i64
  %1234 = select i1 %1232, i32 9, i32 10
  %1235 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1228, ptr noundef @.str.58, i32 noundef %1234) #5
  br label %1236

1236:                                             ; preds = %1227, %1197
  %1237 = load ptr, ptr %5, align 8, !tbaa !5
  %1238 = call i32 @strncmp(ptr noundef %1237, ptr noundef @.str.101, i64 noundef 5) #6
  %1239 = icmp eq i32 %1238, 0
  br i1 %1239, label %1240, label %1275

1240:                                             ; preds = %1236
  %1241 = load ptr, ptr %6, align 8, !tbaa !5
  %1242 = load ptr, ptr %4, align 8, !tbaa !5
  %1243 = getelementptr inbounds %struct.cmaes_t, ptr %1242, i32 0, i32 26
  %1244 = load double, ptr %1243, align 8, !tbaa !31
  %1245 = call double @sqrt(double noundef %1244) #5
  %1246 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1241, ptr noundef @.str.99, double noundef %1245) #5
  br label %1247

1247:                                             ; preds = %1263, %1240
  %1248 = load ptr, ptr %5, align 8, !tbaa !5
  %1249 = load i8, ptr %1248, align 1, !tbaa !23
  %1250 = sext i8 %1249 to i32
  %1251 = icmp ne i32 %1250, 43
  br i1 %1251, label %1252, label %1261

1252:                                             ; preds = %1247
  %1253 = load ptr, ptr %5, align 8, !tbaa !5
  %1254 = load i8, ptr %1253, align 1, !tbaa !23
  %1255 = sext i8 %1254 to i32
  %1256 = icmp ne i32 %1255, 0
  br i1 %1256, label %1257, label %1261

1257:                                             ; preds = %1252
  %1258 = load ptr, ptr %5, align 8, !tbaa !5
  %1259 = load ptr, ptr %10, align 8, !tbaa !5
  %1260 = icmp ult ptr %1258, %1259
  br label %1261

1261:                                             ; preds = %1257, %1252, %1247
  %1262 = phi i1 [ false, %1252 ], [ false, %1247 ], [ %1260, %1257 ]
  br i1 %1262, label %1263, label %1266

1263:                                             ; preds = %1261
  %1264 = load ptr, ptr %5, align 8, !tbaa !5
  %1265 = getelementptr inbounds i8, ptr %1264, i32 1
  store ptr %1265, ptr %5, align 8, !tbaa !5
  br label %1247, !llvm.loop !73

1266:                                             ; preds = %1261
  %1267 = load ptr, ptr %6, align 8, !tbaa !5
  %1268 = load ptr, ptr %5, align 8, !tbaa !5
  %1269 = load i8, ptr %1268, align 1, !tbaa !23
  %1270 = sext i8 %1269 to i32
  %1271 = icmp eq i32 %1270, 43
  %1272 = zext i1 %1271 to i64
  %1273 = select i1 %1271, i32 9, i32 10
  %1274 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1267, ptr noundef @.str.58, i32 noundef %1273) #5
  br label %1275

1275:                                             ; preds = %1266, %1236
  %1276 = load ptr, ptr %5, align 8, !tbaa !5
  %1277 = call i32 @strncmp(ptr noundef %1276, ptr noundef @.str.102, i64 noundef 6) #6
  %1278 = icmp eq i32 %1277, 0
  br i1 %1278, label %1279, label %1314

1279:                                             ; preds = %1275
  %1280 = load ptr, ptr %6, align 8, !tbaa !5
  %1281 = load ptr, ptr %4, align 8, !tbaa !5
  %1282 = getelementptr inbounds %struct.cmaes_t, ptr %1281, i32 0, i32 29
  %1283 = load double, ptr %1282, align 8, !tbaa !22
  %1284 = call double @sqrt(double noundef %1283) #5
  %1285 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1280, ptr noundef @.str.99, double noundef %1284) #5
  br label %1286

1286:                                             ; preds = %1302, %1279
  %1287 = load ptr, ptr %5, align 8, !tbaa !5
  %1288 = load i8, ptr %1287, align 1, !tbaa !23
  %1289 = sext i8 %1288 to i32
  %1290 = icmp ne i32 %1289, 43
  br i1 %1290, label %1291, label %1300

1291:                                             ; preds = %1286
  %1292 = load ptr, ptr %5, align 8, !tbaa !5
  %1293 = load i8, ptr %1292, align 1, !tbaa !23
  %1294 = sext i8 %1293 to i32
  %1295 = icmp ne i32 %1294, 0
  br i1 %1295, label %1296, label %1300

1296:                                             ; preds = %1291
  %1297 = load ptr, ptr %5, align 8, !tbaa !5
  %1298 = load ptr, ptr %10, align 8, !tbaa !5
  %1299 = icmp ult ptr %1297, %1298
  br label %1300

1300:                                             ; preds = %1296, %1291, %1286
  %1301 = phi i1 [ false, %1291 ], [ false, %1286 ], [ %1299, %1296 ]
  br i1 %1301, label %1302, label %1305

1302:                                             ; preds = %1300
  %1303 = load ptr, ptr %5, align 8, !tbaa !5
  %1304 = getelementptr inbounds i8, ptr %1303, i32 1
  store ptr %1304, ptr %5, align 8, !tbaa !5
  br label %1286, !llvm.loop !74

1305:                                             ; preds = %1300
  %1306 = load ptr, ptr %6, align 8, !tbaa !5
  %1307 = load ptr, ptr %5, align 8, !tbaa !5
  %1308 = load i8, ptr %1307, align 1, !tbaa !23
  %1309 = sext i8 %1308 to i32
  %1310 = icmp eq i32 %1309, 43
  %1311 = zext i1 %1310 to i64
  %1312 = select i1 %1310, i32 9, i32 10
  %1313 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1306, ptr noundef @.str.58, i32 noundef %1312) #5
  br label %1314

1314:                                             ; preds = %1305, %1275
  %1315 = load ptr, ptr %5, align 8, !tbaa !5
  %1316 = call i32 @strncmp(ptr noundef %1315, ptr noundef @.str.103, i64 noundef 1) #6
  %1317 = icmp eq i32 %1316, 0
  br i1 %1317, label %1318, label %1331

1318:                                             ; preds = %1314
  %1319 = load ptr, ptr %6, align 8, !tbaa !5
  %1320 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1319, ptr noundef @.str.103) #5
  %1321 = load ptr, ptr %5, align 8, !tbaa !5
  %1322 = getelementptr inbounds i8, ptr %1321, i32 1
  store ptr %1322, ptr %5, align 8, !tbaa !5
  %1323 = load ptr, ptr %6, align 8, !tbaa !5
  %1324 = load ptr, ptr %5, align 8, !tbaa !5
  %1325 = load i8, ptr %1324, align 1, !tbaa !23
  %1326 = sext i8 %1325 to i32
  %1327 = icmp eq i32 %1326, 43
  %1328 = zext i1 %1327 to i64
  %1329 = select i1 %1327, i32 9, i32 10
  %1330 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1323, ptr noundef @.str.58, i32 noundef %1329) #5
  br label %1331

1331:                                             ; preds = %1318, %1314
  %1332 = load ptr, ptr %5, align 8, !tbaa !5
  %1333 = call i32 @strncmp(ptr noundef %1332, ptr noundef @.str.104, i64 noundef 6) #6
  %1334 = icmp eq i32 %1333, 0
  br i1 %1334, label %1343, label %1335

1335:                                             ; preds = %1331
  %1336 = load ptr, ptr %5, align 8, !tbaa !5
  %1337 = call i32 @strncmp(ptr noundef %1336, ptr noundef @.str.105, i64 noundef 5) #6
  %1338 = icmp eq i32 %1337, 0
  br i1 %1338, label %1343, label %1339

1339:                                             ; preds = %1335
  %1340 = load ptr, ptr %5, align 8, !tbaa !5
  %1341 = call i32 @strncmp(ptr noundef %1340, ptr noundef @.str.106, i64 noundef 12) #6
  %1342 = icmp eq i32 %1341, 0
  br i1 %1342, label %1343, label %1378

1343:                                             ; preds = %1339, %1335, %1331
  %1344 = load ptr, ptr %6, align 8, !tbaa !5
  %1345 = load ptr, ptr %4, align 8, !tbaa !5
  %1346 = getelementptr inbounds %struct.cmaes_t, ptr %1345, i32 0, i32 1
  %1347 = getelementptr inbounds %struct.cmaes_readpara_t, ptr %1346, i32 0, i32 17
  %1348 = load i32, ptr %1347, align 8, !tbaa !64
  %1349 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1344, ptr noundef @.str.60, i32 noundef %1348) #5
  br label %1350

1350:                                             ; preds = %1366, %1343
  %1351 = load ptr, ptr %5, align 8, !tbaa !5
  %1352 = load i8, ptr %1351, align 1, !tbaa !23
  %1353 = sext i8 %1352 to i32
  %1354 = icmp ne i32 %1353, 43
  br i1 %1354, label %1355, label %1364

1355:                                             ; preds = %1350
  %1356 = load ptr, ptr %5, align 8, !tbaa !5
  %1357 = load i8, ptr %1356, align 1, !tbaa !23
  %1358 = sext i8 %1357 to i32
  %1359 = icmp ne i32 %1358, 0
  br i1 %1359, label %1360, label %1364

1360:                                             ; preds = %1355
  %1361 = load ptr, ptr %5, align 8, !tbaa !5
  %1362 = load ptr, ptr %10, align 8, !tbaa !5
  %1363 = icmp ult ptr %1361, %1362
  br label %1364

1364:                                             ; preds = %1360, %1355, %1350
  %1365 = phi i1 [ false, %1355 ], [ false, %1350 ], [ %1363, %1360 ]
  br i1 %1365, label %1366, label %1369

1366:                                             ; preds = %1364
  %1367 = load ptr, ptr %5, align 8, !tbaa !5
  %1368 = getelementptr inbounds i8, ptr %1367, i32 1
  store ptr %1368, ptr %5, align 8, !tbaa !5
  br label %1350, !llvm.loop !75

1369:                                             ; preds = %1364
  %1370 = load ptr, ptr %6, align 8, !tbaa !5
  %1371 = load ptr, ptr %5, align 8, !tbaa !5
  %1372 = load i8, ptr %1371, align 1, !tbaa !23
  %1373 = sext i8 %1372 to i32
  %1374 = icmp eq i32 %1373, 43
  %1375 = zext i1 %1374 to i64
  %1376 = select i1 %1374, i32 9, i32 10
  %1377 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1370, ptr noundef @.str.58, i32 noundef %1376) #5
  br label %1378

1378:                                             ; preds = %1369, %1339
  %1379 = load ptr, ptr %5, align 8, !tbaa !5
  %1380 = call i32 @strncmp(ptr noundef %1379, ptr noundef @.str.107, i64 noundef 1) #6
  %1381 = icmp eq i32 %1380, 0
  br i1 %1381, label %1382, label %1396

1382:                                             ; preds = %1378
  %1383 = load ptr, ptr %6, align 8, !tbaa !5
  %1384 = load i32, ptr %9, align 4, !tbaa !20
  %1385 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1383, ptr noundef @.str.60, i32 noundef %1384) #5
  %1386 = load ptr, ptr %5, align 8, !tbaa !5
  %1387 = getelementptr inbounds i8, ptr %1386, i32 1
  store ptr %1387, ptr %5, align 8, !tbaa !5
  %1388 = load ptr, ptr %6, align 8, !tbaa !5
  %1389 = load ptr, ptr %5, align 8, !tbaa !5
  %1390 = load i8, ptr %1389, align 1, !tbaa !23
  %1391 = sext i8 %1390 to i32
  %1392 = icmp eq i32 %1391, 43
  %1393 = zext i1 %1392 to i64
  %1394 = select i1 %1392, i32 9, i32 10
  %1395 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1388, ptr noundef @.str.58, i32 noundef %1394) #5
  br label %1396

1396:                                             ; preds = %1382, %1378
  %1397 = load ptr, ptr %5, align 8, !tbaa !5
  %1398 = call i32 @strncmp(ptr noundef %1397, ptr noundef @.str.108, i64 noundef 6) #6
  %1399 = icmp eq i32 %1398, 0
  br i1 %1399, label %1400, label %1489

1400:                                             ; preds = %1396
  %1401 = load ptr, ptr %6, align 8, !tbaa !5
  %1402 = load i32, ptr %9, align 4, !tbaa !20
  %1403 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1401, ptr noundef @.str.109, i32 noundef %1402) #5
  %1404 = load ptr, ptr %6, align 8, !tbaa !5
  %1405 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1404, ptr noundef @.str.110) #5
  %1406 = load ptr, ptr %4, align 8, !tbaa !5
  %1407 = load ptr, ptr %6, align 8, !tbaa !5
  call void @cmaes_WriteToFilePtr(ptr noundef %1406, ptr noundef @.str.111, ptr noundef %1407)
  %1408 = load ptr, ptr %6, align 8, !tbaa !5
  %1409 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1408, ptr noundef @.str.112) #5
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %1410

1410:                                             ; preds = %1430, %1400
  %1411 = load i32, ptr %7, align 4, !tbaa !20
  %1412 = load i32, ptr %9, align 4, !tbaa !20
  %1413 = icmp slt i32 %1411, %1412
  br i1 %1413, label %1414, label %1433

1414:                                             ; preds = %1410
  %1415 = load ptr, ptr %6, align 8, !tbaa !5
  %1416 = load ptr, ptr %4, align 8, !tbaa !5
  %1417 = getelementptr inbounds %struct.cmaes_t, ptr %1416, i32 0, i32 16
  %1418 = load ptr, ptr %1417, align 8, !tbaa !76
  %1419 = load i32, ptr %7, align 4, !tbaa !20
  %1420 = sext i32 %1419 to i64
  %1421 = getelementptr inbounds double, ptr %1418, i64 %1420
  %1422 = load double, ptr %1421, align 8, !tbaa !28
  %1423 = load i32, ptr %7, align 4, !tbaa !20
  %1424 = load i32, ptr %9, align 4, !tbaa !20
  %1425 = sub nsw i32 %1424, 1
  %1426 = icmp eq i32 %1423, %1425
  %1427 = zext i1 %1426 to i64
  %1428 = select i1 %1426, ptr @.str.114, ptr @.str.73
  %1429 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1415, ptr noundef @.str.113, double noundef %1422, ptr noundef %1428) #5
  br label %1430

1430:                                             ; preds = %1414
  %1431 = load i32, ptr %7, align 4, !tbaa !20
  %1432 = add nsw i32 %1431, 1
  store i32 %1432, ptr %7, align 4, !tbaa !20
  br label %1410, !llvm.loop !77

1433:                                             ; preds = %1410
  %1434 = load ptr, ptr %6, align 8, !tbaa !5
  %1435 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1434, ptr noundef @.str.115) #5
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %1436

1436:                                             ; preds = %1456, %1433
  %1437 = load i32, ptr %7, align 4, !tbaa !20
  %1438 = load i32, ptr %9, align 4, !tbaa !20
  %1439 = icmp slt i32 %1437, %1438
  br i1 %1439, label %1440, label %1459

1440:                                             ; preds = %1436
  %1441 = load ptr, ptr %6, align 8, !tbaa !5
  %1442 = load ptr, ptr %4, align 8, !tbaa !5
  %1443 = getelementptr inbounds %struct.cmaes_t, ptr %1442, i32 0, i32 15
  %1444 = load ptr, ptr %1443, align 8, !tbaa !78
  %1445 = load i32, ptr %7, align 4, !tbaa !20
  %1446 = sext i32 %1445 to i64
  %1447 = getelementptr inbounds double, ptr %1444, i64 %1446
  %1448 = load double, ptr %1447, align 8, !tbaa !28
  %1449 = load i32, ptr %7, align 4, !tbaa !20
  %1450 = load i32, ptr %9, align 4, !tbaa !20
  %1451 = sub nsw i32 %1450, 1
  %1452 = icmp eq i32 %1449, %1451
  %1453 = zext i1 %1452 to i64
  %1454 = select i1 %1452, ptr @.str.114, ptr @.str.73
  %1455 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1441, ptr noundef @.str.113, double noundef %1448, ptr noundef %1454) #5
  br label %1456

1456:                                             ; preds = %1440
  %1457 = load i32, ptr %7, align 4, !tbaa !20
  %1458 = add nsw i32 %1457, 1
  store i32 %1458, ptr %7, align 4, !tbaa !20
  br label %1436, !llvm.loop !79

1459:                                             ; preds = %1436
  %1460 = load ptr, ptr %6, align 8, !tbaa !5
  %1461 = load ptr, ptr %4, align 8, !tbaa !5
  %1462 = getelementptr inbounds %struct.cmaes_t, ptr %1461, i32 0, i32 3
  %1463 = load double, ptr %1462, align 8, !tbaa !44
  %1464 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1460, ptr noundef @.str.116, double noundef %1463) #5
  %1465 = load ptr, ptr %6, align 8, !tbaa !5
  %1466 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1465, ptr noundef @.str.117) #5
  %1467 = load ptr, ptr %4, align 8, !tbaa !5
  %1468 = load ptr, ptr %6, align 8, !tbaa !5
  call void @cmaes_WriteToFilePtr(ptr noundef %1467, ptr noundef @.str.64, ptr noundef %1468)
  br label %1469

1469:                                             ; preds = %1485, %1459
  %1470 = load ptr, ptr %5, align 8, !tbaa !5
  %1471 = load i8, ptr %1470, align 1, !tbaa !23
  %1472 = sext i8 %1471 to i32
  %1473 = icmp ne i32 %1472, 43
  br i1 %1473, label %1474, label %1483

1474:                                             ; preds = %1469
  %1475 = load ptr, ptr %5, align 8, !tbaa !5
  %1476 = load i8, ptr %1475, align 1, !tbaa !23
  %1477 = sext i8 %1476 to i32
  %1478 = icmp ne i32 %1477, 0
  br i1 %1478, label %1479, label %1483

1479:                                             ; preds = %1474
  %1480 = load ptr, ptr %5, align 8, !tbaa !5
  %1481 = load ptr, ptr %10, align 8, !tbaa !5
  %1482 = icmp ult ptr %1480, %1481
  br label %1483

1483:                                             ; preds = %1479, %1474, %1469
  %1484 = phi i1 [ false, %1474 ], [ false, %1469 ], [ %1482, %1479 ]
  br i1 %1484, label %1485, label %1488

1485:                                             ; preds = %1483
  %1486 = load ptr, ptr %5, align 8, !tbaa !5
  %1487 = getelementptr inbounds i8, ptr %1486, i32 1
  store ptr %1487, ptr %5, align 8, !tbaa !5
  br label %1469, !llvm.loop !80

1488:                                             ; preds = %1483
  br label %1489

1489:                                             ; preds = %1488, %1396
  %1490 = load ptr, ptr %5, align 8, !tbaa !5
  %1491 = call i32 @strncmp(ptr noundef %1490, ptr noundef @.str.118, i64 noundef 5) #6
  %1492 = icmp eq i32 %1491, 0
  br i1 %1492, label %1493, label %1552

1493:                                             ; preds = %1489
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %1494

1494:                                             ; preds = %1520, %1493
  %1495 = load i32, ptr %7, align 4, !tbaa !20
  %1496 = load i32, ptr %9, align 4, !tbaa !20
  %1497 = icmp slt i32 %1495, %1496
  br i1 %1497, label %1498, label %1523

1498:                                             ; preds = %1494
  %1499 = load ptr, ptr %6, align 8, !tbaa !5
  %1500 = load i32, ptr %7, align 4, !tbaa !20
  %1501 = icmp eq i32 %1500, 0
  %1502 = zext i1 %1501 to i64
  %1503 = select i1 %1501, ptr @.str.72, ptr @.str.73
  %1504 = load ptr, ptr %4, align 8, !tbaa !5
  %1505 = getelementptr inbounds %struct.cmaes_t, ptr %1504, i32 0, i32 6
  %1506 = load ptr, ptr %1505, align 8, !tbaa !81
  %1507 = load ptr, ptr %4, align 8, !tbaa !5
  %1508 = getelementptr inbounds %struct.cmaes_t, ptr %1507, i32 0, i32 7
  %1509 = load ptr, ptr %1508, align 8, !tbaa !59
  %1510 = getelementptr inbounds i32, ptr %1509, i64 0
  %1511 = load i32, ptr %1510, align 4, !tbaa !20
  %1512 = sext i32 %1511 to i64
  %1513 = getelementptr inbounds ptr, ptr %1506, i64 %1512
  %1514 = load ptr, ptr %1513, align 8, !tbaa !5
  %1515 = load i32, ptr %7, align 4, !tbaa !20
  %1516 = sext i32 %1515 to i64
  %1517 = getelementptr inbounds double, ptr %1514, i64 %1516
  %1518 = load double, ptr %1517, align 8, !tbaa !28
  %1519 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1499, ptr noundef @.str.71, ptr noundef %1503, double noundef %1518) #5
  br label %1520

1520:                                             ; preds = %1498
  %1521 = load i32, ptr %7, align 4, !tbaa !20
  %1522 = add nsw i32 %1521, 1
  store i32 %1522, ptr %7, align 4, !tbaa !20
  br label %1494, !llvm.loop !82

1523:                                             ; preds = %1494
  br label %1524

1524:                                             ; preds = %1540, %1523
  %1525 = load ptr, ptr %5, align 8, !tbaa !5
  %1526 = load i8, ptr %1525, align 1, !tbaa !23
  %1527 = sext i8 %1526 to i32
  %1528 = icmp ne i32 %1527, 43
  br i1 %1528, label %1529, label %1538

1529:                                             ; preds = %1524
  %1530 = load ptr, ptr %5, align 8, !tbaa !5
  %1531 = load i8, ptr %1530, align 1, !tbaa !23
  %1532 = sext i8 %1531 to i32
  %1533 = icmp ne i32 %1532, 0
  br i1 %1533, label %1534, label %1538

1534:                                             ; preds = %1529
  %1535 = load ptr, ptr %5, align 8, !tbaa !5
  %1536 = load ptr, ptr %10, align 8, !tbaa !5
  %1537 = icmp ult ptr %1535, %1536
  br label %1538

1538:                                             ; preds = %1534, %1529, %1524
  %1539 = phi i1 [ false, %1529 ], [ false, %1524 ], [ %1537, %1534 ]
  br i1 %1539, label %1540, label %1543

1540:                                             ; preds = %1538
  %1541 = load ptr, ptr %5, align 8, !tbaa !5
  %1542 = getelementptr inbounds i8, ptr %1541, i32 1
  store ptr %1542, ptr %5, align 8, !tbaa !5
  br label %1524, !llvm.loop !83

1543:                                             ; preds = %1538
  %1544 = load ptr, ptr %6, align 8, !tbaa !5
  %1545 = load ptr, ptr %5, align 8, !tbaa !5
  %1546 = load i8, ptr %1545, align 1, !tbaa !23
  %1547 = sext i8 %1546 to i32
  %1548 = icmp eq i32 %1547, 43
  %1549 = zext i1 %1548 to i64
  %1550 = select i1 %1548, i32 9, i32 10
  %1551 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1544, ptr noundef @.str.58, i32 noundef %1550) #5
  br label %1552

1552:                                             ; preds = %1543, %1489
  %1553 = load ptr, ptr %5, align 8, !tbaa !5
  %1554 = call i32 @strncmp(ptr noundef %1553, ptr noundef @.str.111, i64 noundef 5) #6
  %1555 = icmp eq i32 %1554, 0
  br i1 %1555, label %1556, label %1607

1556:                                             ; preds = %1552
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %1557

1557:                                             ; preds = %1575, %1556
  %1558 = load i32, ptr %7, align 4, !tbaa !20
  %1559 = load i32, ptr %9, align 4, !tbaa !20
  %1560 = icmp slt i32 %1558, %1559
  br i1 %1560, label %1561, label %1578

1561:                                             ; preds = %1557
  %1562 = load ptr, ptr %6, align 8, !tbaa !5
  %1563 = load i32, ptr %7, align 4, !tbaa !20
  %1564 = icmp eq i32 %1563, 0
  %1565 = zext i1 %1564 to i64
  %1566 = select i1 %1564, ptr @.str.72, ptr @.str.73
  %1567 = load ptr, ptr %4, align 8, !tbaa !5
  %1568 = getelementptr inbounds %struct.cmaes_t, ptr %1567, i32 0, i32 4
  %1569 = load ptr, ptr %1568, align 8, !tbaa !84
  %1570 = load i32, ptr %7, align 4, !tbaa !20
  %1571 = sext i32 %1570 to i64
  %1572 = getelementptr inbounds double, ptr %1569, i64 %1571
  %1573 = load double, ptr %1572, align 8, !tbaa !28
  %1574 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1562, ptr noundef @.str.71, ptr noundef %1566, double noundef %1573) #5
  br label %1575

1575:                                             ; preds = %1561
  %1576 = load i32, ptr %7, align 4, !tbaa !20
  %1577 = add nsw i32 %1576, 1
  store i32 %1577, ptr %7, align 4, !tbaa !20
  br label %1557, !llvm.loop !85

1578:                                             ; preds = %1557
  br label %1579

1579:                                             ; preds = %1595, %1578
  %1580 = load ptr, ptr %5, align 8, !tbaa !5
  %1581 = load i8, ptr %1580, align 1, !tbaa !23
  %1582 = sext i8 %1581 to i32
  %1583 = icmp ne i32 %1582, 43
  br i1 %1583, label %1584, label %1593

1584:                                             ; preds = %1579
  %1585 = load ptr, ptr %5, align 8, !tbaa !5
  %1586 = load i8, ptr %1585, align 1, !tbaa !23
  %1587 = sext i8 %1586 to i32
  %1588 = icmp ne i32 %1587, 0
  br i1 %1588, label %1589, label %1593

1589:                                             ; preds = %1584
  %1590 = load ptr, ptr %5, align 8, !tbaa !5
  %1591 = load ptr, ptr %10, align 8, !tbaa !5
  %1592 = icmp ult ptr %1590, %1591
  br label %1593

1593:                                             ; preds = %1589, %1584, %1579
  %1594 = phi i1 [ false, %1584 ], [ false, %1579 ], [ %1592, %1589 ]
  br i1 %1594, label %1595, label %1598

1595:                                             ; preds = %1593
  %1596 = load ptr, ptr %5, align 8, !tbaa !5
  %1597 = getelementptr inbounds i8, ptr %1596, i32 1
  store ptr %1597, ptr %5, align 8, !tbaa !5
  br label %1579, !llvm.loop !86

1598:                                             ; preds = %1593
  %1599 = load ptr, ptr %6, align 8, !tbaa !5
  %1600 = load ptr, ptr %5, align 8, !tbaa !5
  %1601 = load i8, ptr %1600, align 1, !tbaa !23
  %1602 = sext i8 %1601 to i32
  %1603 = icmp eq i32 %1602, 43
  %1604 = zext i1 %1603 to i64
  %1605 = select i1 %1603, i32 9, i32 10
  %1606 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1599, ptr noundef @.str.58, i32 noundef %1605) #5
  br label %1607

1607:                                             ; preds = %1598, %1552
  %1608 = load ptr, ptr %5, align 8, !tbaa !5
  %1609 = call i32 @strncmp(ptr noundef %1608, ptr noundef @.str.39, i64 noundef 3) #6
  %1610 = icmp eq i32 %1609, 0
  br i1 %1610, label %1611, label %2035

1611:                                             ; preds = %1607
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  %1612 = call i64 @time(ptr noundef null) #5
  store i64 %1612, ptr %18, align 8, !tbaa !87
  %1613 = load ptr, ptr %6, align 8, !tbaa !5
  %1614 = call ptr @localtime(ptr noundef %18) #5
  %1615 = call ptr @asctime(ptr noundef %1614) #5
  %1616 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1613, ptr noundef @.str.119, ptr noundef %1615) #5
  %1617 = load ptr, ptr %6, align 8, !tbaa !5
  %1618 = load i32, ptr %9, align 4, !tbaa !20
  %1619 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1617, ptr noundef @.str.120, i32 noundef %1618) #5
  %1620 = load ptr, ptr %6, align 8, !tbaa !5
  %1621 = load ptr, ptr %4, align 8, !tbaa !5
  %1622 = getelementptr inbounds %struct.cmaes_t, ptr %1621, i32 0, i32 1
  %1623 = getelementptr inbounds %struct.cmaes_readpara_t, ptr %1622, i32 0, i32 3
  %1624 = load i32, ptr %1623, align 8, !tbaa !88
  %1625 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1620, ptr noundef @.str.121, i32 noundef %1624) #5
  %1626 = load ptr, ptr %6, align 8, !tbaa !5
  %1627 = load ptr, ptr %4, align 8, !tbaa !5
  %1628 = getelementptr inbounds %struct.cmaes_t, ptr %1627, i32 0, i32 24
  %1629 = load double, ptr %1628, align 8, !tbaa !52
  %1630 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1626, ptr noundef @.str.122, double noundef %1629) #5
  %1631 = load ptr, ptr %6, align 8, !tbaa !5
  %1632 = load ptr, ptr %4, align 8, !tbaa !5
  %1633 = getelementptr inbounds %struct.cmaes_t, ptr %1632, i32 0, i32 34
  %1634 = getelementptr inbounds %struct.cmaes_timings_t, ptr %1633, i32 0, i32 1
  %1635 = load double, ptr %1634, align 8, !tbaa !40
  %1636 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1631, ptr noundef @.str.123, double noundef %1635) #5
  %1637 = load ptr, ptr %6, align 8, !tbaa !5
  %1638 = load ptr, ptr %4, align 8, !tbaa !5
  %1639 = getelementptr inbounds %struct.cmaes_t, ptr %1638, i32 0, i32 6
  %1640 = load ptr, ptr %1639, align 8, !tbaa !81
  %1641 = load ptr, ptr %4, align 8, !tbaa !5
  %1642 = getelementptr inbounds %struct.cmaes_t, ptr %1641, i32 0, i32 7
  %1643 = load ptr, ptr %1642, align 8, !tbaa !59
  %1644 = getelementptr inbounds i32, ptr %1643, i64 0
  %1645 = load i32, ptr %1644, align 4, !tbaa !20
  %1646 = sext i32 %1645 to i64
  %1647 = getelementptr inbounds ptr, ptr %1640, i64 %1646
  %1648 = load ptr, ptr %1647, align 8, !tbaa !5
  %1649 = load i32, ptr %9, align 4, !tbaa !20
  %1650 = sext i32 %1649 to i64
  %1651 = getelementptr inbounds double, ptr %1648, i64 %1650
  %1652 = load double, ptr %1651, align 8, !tbaa !28
  %1653 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1637, ptr noundef @.str.124, double noundef %1652) #5
  %1654 = load ptr, ptr %6, align 8, !tbaa !5
  %1655 = load ptr, ptr %4, align 8, !tbaa !5
  %1656 = getelementptr inbounds %struct.cmaes_t, ptr %1655, i32 0, i32 3
  %1657 = load double, ptr %1656, align 8, !tbaa !44
  %1658 = load ptr, ptr %4, align 8, !tbaa !5
  %1659 = getelementptr inbounds %struct.cmaes_t, ptr %1658, i32 0, i32 26
  %1660 = load double, ptr %1659, align 8, !tbaa !31
  %1661 = call double @sqrt(double noundef %1660) #5
  %1662 = fmul double %1657, %1661
  %1663 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1654, ptr noundef @.str.125, double noundef %1662) #5
  %1664 = load ptr, ptr %6, align 8, !tbaa !5
  %1665 = load ptr, ptr %4, align 8, !tbaa !5
  %1666 = getelementptr inbounds %struct.cmaes_t, ptr %1665, i32 0, i32 3
  %1667 = load double, ptr %1666, align 8, !tbaa !44
  %1668 = load ptr, ptr %4, align 8, !tbaa !5
  %1669 = getelementptr inbounds %struct.cmaes_t, ptr %1668, i32 0, i32 27
  %1670 = load double, ptr %1669, align 8, !tbaa !26
  %1671 = call double @sqrt(double noundef %1670) #5
  %1672 = fmul double %1667, %1671
  %1673 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1664, ptr noundef @.str.126, double noundef %1672) #5
  %1674 = load ptr, ptr %6, align 8, !tbaa !5
  %1675 = load ptr, ptr %4, align 8, !tbaa !5
  %1676 = getelementptr inbounds %struct.cmaes_t, ptr %1675, i32 0, i32 3
  %1677 = load double, ptr %1676, align 8, !tbaa !44
  %1678 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1674, ptr noundef @.str.116, double noundef %1677) #5
  %1679 = load ptr, ptr %6, align 8, !tbaa !5
  %1680 = load ptr, ptr %4, align 8, !tbaa !5
  %1681 = getelementptr inbounds %struct.cmaes_t, ptr %1680, i32 0, i32 14
  %1682 = load ptr, ptr %1681, align 8, !tbaa !34
  %1683 = load i32, ptr %9, align 4, !tbaa !20
  %1684 = call double @rgdouMax(ptr noundef %1682, i32 noundef %1683)
  %1685 = load ptr, ptr %4, align 8, !tbaa !5
  %1686 = getelementptr inbounds %struct.cmaes_t, ptr %1685, i32 0, i32 14
  %1687 = load ptr, ptr %1686, align 8, !tbaa !34
  %1688 = load i32, ptr %9, align 4, !tbaa !20
  %1689 = call double @rgdouMin(ptr noundef %1687, i32 noundef %1688)
  %1690 = fdiv double %1684, %1689
  %1691 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1679, ptr noundef @.str.127, double noundef %1690) #5
  %1692 = load ptr, ptr %6, align 8, !tbaa !5
  %1693 = load ptr, ptr %4, align 8, !tbaa !5
  %1694 = getelementptr inbounds %struct.cmaes_t, ptr %1693, i32 0, i32 5
  %1695 = load ptr, ptr %1694, align 8, !tbaa !62
  %1696 = load i32, ptr %9, align 4, !tbaa !20
  %1697 = add nsw i32 %1696, 1
  %1698 = sext i32 %1697 to i64
  %1699 = getelementptr inbounds double, ptr %1695, i64 %1698
  %1700 = load double, ptr %1699, align 8, !tbaa !28
  %1701 = load ptr, ptr %4, align 8, !tbaa !5
  %1702 = getelementptr inbounds %struct.cmaes_t, ptr %1701, i32 0, i32 5
  %1703 = load ptr, ptr %1702, align 8, !tbaa !62
  %1704 = load i32, ptr %9, align 4, !tbaa !20
  %1705 = sext i32 %1704 to i64
  %1706 = getelementptr inbounds double, ptr %1703, i64 %1705
  %1707 = load double, ptr %1706, align 8, !tbaa !28
  %1708 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1692, ptr noundef @.str.128, double noundef %1700, double noundef %1707) #5
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %1709

1709:                                             ; preds = %1735, %1611
  %1710 = load i32, ptr %7, align 4, !tbaa !20
  %1711 = load i32, ptr %9, align 4, !tbaa !20
  %1712 = icmp slt i32 %1710, %1711
  br i1 %1712, label %1713, label %1738

1713:                                             ; preds = %1709
  %1714 = load ptr, ptr %6, align 8, !tbaa !5
  %1715 = load ptr, ptr %4, align 8, !tbaa !5
  %1716 = getelementptr inbounds %struct.cmaes_t, ptr %1715, i32 0, i32 5
  %1717 = load ptr, ptr %1716, align 8, !tbaa !62
  %1718 = load i32, ptr %7, align 4, !tbaa !20
  %1719 = sext i32 %1718 to i64
  %1720 = getelementptr inbounds double, ptr %1717, i64 %1719
  %1721 = load double, ptr %1720, align 8, !tbaa !28
  %1722 = load i32, ptr %7, align 4, !tbaa !20
  %1723 = srem i32 %1722, 5
  %1724 = icmp eq i32 %1723, 4
  br i1 %1724, label %1730, label %1725

1725:                                             ; preds = %1713
  %1726 = load i32, ptr %7, align 4, !tbaa !20
  %1727 = load i32, ptr %9, align 4, !tbaa !20
  %1728 = sub nsw i32 %1727, 1
  %1729 = icmp eq i32 %1726, %1728
  br label %1730

1730:                                             ; preds = %1725, %1713
  %1731 = phi i1 [ true, %1713 ], [ %1729, %1725 ]
  %1732 = zext i1 %1731 to i64
  %1733 = select i1 %1731, i32 10, i32 32
  %1734 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1714, ptr noundef @.str.129, double noundef %1721, i32 noundef %1733) #5
  br label %1735

1735:                                             ; preds = %1730
  %1736 = load i32, ptr %7, align 4, !tbaa !20
  %1737 = add nsw i32 %1736, 1
  store i32 %1737, ptr %7, align 4, !tbaa !20
  br label %1709, !llvm.loop !89

1738:                                             ; preds = %1709
  %1739 = load ptr, ptr %6, align 8, !tbaa !5
  %1740 = load ptr, ptr %4, align 8, !tbaa !5
  %1741 = getelementptr inbounds %struct.cmaes_t, ptr %1740, i32 0, i32 6
  %1742 = load ptr, ptr %1741, align 8, !tbaa !81
  %1743 = load ptr, ptr %4, align 8, !tbaa !5
  %1744 = getelementptr inbounds %struct.cmaes_t, ptr %1743, i32 0, i32 7
  %1745 = load ptr, ptr %1744, align 8, !tbaa !59
  %1746 = getelementptr inbounds i32, ptr %1745, i64 0
  %1747 = load i32, ptr %1746, align 4, !tbaa !20
  %1748 = sext i32 %1747 to i64
  %1749 = getelementptr inbounds ptr, ptr %1742, i64 %1748
  %1750 = load ptr, ptr %1749, align 8, !tbaa !5
  %1751 = load i32, ptr %9, align 4, !tbaa !20
  %1752 = sext i32 %1751 to i64
  %1753 = getelementptr inbounds double, ptr %1750, i64 %1752
  %1754 = load double, ptr %1753, align 8, !tbaa !28
  %1755 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1739, ptr noundef @.str.130, double noundef %1754) #5
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %1756

1756:                                             ; preds = %1790, %1738
  %1757 = load i32, ptr %7, align 4, !tbaa !20
  %1758 = load i32, ptr %9, align 4, !tbaa !20
  %1759 = icmp slt i32 %1757, %1758
  br i1 %1759, label %1760, label %1793

1760:                                             ; preds = %1756
  %1761 = load ptr, ptr %6, align 8, !tbaa !5
  %1762 = load ptr, ptr %4, align 8, !tbaa !5
  %1763 = getelementptr inbounds %struct.cmaes_t, ptr %1762, i32 0, i32 6
  %1764 = load ptr, ptr %1763, align 8, !tbaa !81
  %1765 = load ptr, ptr %4, align 8, !tbaa !5
  %1766 = getelementptr inbounds %struct.cmaes_t, ptr %1765, i32 0, i32 7
  %1767 = load ptr, ptr %1766, align 8, !tbaa !59
  %1768 = getelementptr inbounds i32, ptr %1767, i64 0
  %1769 = load i32, ptr %1768, align 4, !tbaa !20
  %1770 = sext i32 %1769 to i64
  %1771 = getelementptr inbounds ptr, ptr %1764, i64 %1770
  %1772 = load ptr, ptr %1771, align 8, !tbaa !5
  %1773 = load i32, ptr %7, align 4, !tbaa !20
  %1774 = sext i32 %1773 to i64
  %1775 = getelementptr inbounds double, ptr %1772, i64 %1774
  %1776 = load double, ptr %1775, align 8, !tbaa !28
  %1777 = load i32, ptr %7, align 4, !tbaa !20
  %1778 = srem i32 %1777, 5
  %1779 = icmp eq i32 %1778, 4
  br i1 %1779, label %1785, label %1780

1780:                                             ; preds = %1760
  %1781 = load i32, ptr %7, align 4, !tbaa !20
  %1782 = load i32, ptr %9, align 4, !tbaa !20
  %1783 = sub nsw i32 %1782, 1
  %1784 = icmp eq i32 %1781, %1783
  br label %1785

1785:                                             ; preds = %1780, %1760
  %1786 = phi i1 [ true, %1760 ], [ %1784, %1780 ]
  %1787 = zext i1 %1786 to i64
  %1788 = select i1 %1786, i32 10, i32 32
  %1789 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1761, ptr noundef @.str.129, double noundef %1776, i32 noundef %1788) #5
  br label %1790

1790:                                             ; preds = %1785
  %1791 = load i32, ptr %7, align 4, !tbaa !20
  %1792 = add nsw i32 %1791, 1
  store i32 %1792, ptr %7, align 4, !tbaa !20
  br label %1756, !llvm.loop !90

1793:                                             ; preds = %1756
  %1794 = load ptr, ptr %6, align 8, !tbaa !5
  %1795 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1794, ptr noundef @.str.131) #5
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %1796

1796:                                             ; preds = %1822, %1793
  %1797 = load i32, ptr %7, align 4, !tbaa !20
  %1798 = load i32, ptr %9, align 4, !tbaa !20
  %1799 = icmp slt i32 %1797, %1798
  br i1 %1799, label %1800, label %1825

1800:                                             ; preds = %1796
  %1801 = load ptr, ptr %6, align 8, !tbaa !5
  %1802 = load ptr, ptr %4, align 8, !tbaa !5
  %1803 = getelementptr inbounds %struct.cmaes_t, ptr %1802, i32 0, i32 4
  %1804 = load ptr, ptr %1803, align 8, !tbaa !84
  %1805 = load i32, ptr %7, align 4, !tbaa !20
  %1806 = sext i32 %1805 to i64
  %1807 = getelementptr inbounds double, ptr %1804, i64 %1806
  %1808 = load double, ptr %1807, align 8, !tbaa !28
  %1809 = load i32, ptr %7, align 4, !tbaa !20
  %1810 = srem i32 %1809, 5
  %1811 = icmp eq i32 %1810, 4
  br i1 %1811, label %1817, label %1812

1812:                                             ; preds = %1800
  %1813 = load i32, ptr %7, align 4, !tbaa !20
  %1814 = load i32, ptr %9, align 4, !tbaa !20
  %1815 = sub nsw i32 %1814, 1
  %1816 = icmp eq i32 %1813, %1815
  br label %1817

1817:                                             ; preds = %1812, %1800
  %1818 = phi i1 [ true, %1800 ], [ %1816, %1812 ]
  %1819 = zext i1 %1818 to i64
  %1820 = select i1 %1818, i32 10, i32 32
  %1821 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1801, ptr noundef @.str.129, double noundef %1808, i32 noundef %1820) #5
  br label %1822

1822:                                             ; preds = %1817
  %1823 = load i32, ptr %7, align 4, !tbaa !20
  %1824 = add nsw i32 %1823, 1
  store i32 %1824, ptr %7, align 4, !tbaa !20
  br label %1796, !llvm.loop !91

1825:                                             ; preds = %1796
  %1826 = load ptr, ptr %6, align 8, !tbaa !5
  %1827 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1826, ptr noundef @.str.132) #5
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %1828

1828:                                             ; preds = %1863, %1825
  %1829 = load i32, ptr %7, align 4, !tbaa !20
  %1830 = load i32, ptr %9, align 4, !tbaa !20
  %1831 = icmp slt i32 %1829, %1830
  br i1 %1831, label %1832, label %1866

1832:                                             ; preds = %1828
  %1833 = load ptr, ptr %6, align 8, !tbaa !5
  %1834 = load ptr, ptr %4, align 8, !tbaa !5
  %1835 = getelementptr inbounds %struct.cmaes_t, ptr %1834, i32 0, i32 3
  %1836 = load double, ptr %1835, align 8, !tbaa !44
  %1837 = load ptr, ptr %4, align 8, !tbaa !5
  %1838 = getelementptr inbounds %struct.cmaes_t, ptr %1837, i32 0, i32 12
  %1839 = load ptr, ptr %1838, align 8, !tbaa !27
  %1840 = load i32, ptr %7, align 4, !tbaa !20
  %1841 = sext i32 %1840 to i64
  %1842 = getelementptr inbounds ptr, ptr %1839, i64 %1841
  %1843 = load ptr, ptr %1842, align 8, !tbaa !5
  %1844 = load i32, ptr %7, align 4, !tbaa !20
  %1845 = sext i32 %1844 to i64
  %1846 = getelementptr inbounds double, ptr %1843, i64 %1845
  %1847 = load double, ptr %1846, align 8, !tbaa !28
  %1848 = call double @sqrt(double noundef %1847) #5
  %1849 = fmul double %1836, %1848
  %1850 = load i32, ptr %7, align 4, !tbaa !20
  %1851 = srem i32 %1850, 5
  %1852 = icmp eq i32 %1851, 4
  br i1 %1852, label %1858, label %1853

1853:                                             ; preds = %1832
  %1854 = load i32, ptr %7, align 4, !tbaa !20
  %1855 = load i32, ptr %9, align 4, !tbaa !20
  %1856 = sub nsw i32 %1855, 1
  %1857 = icmp eq i32 %1854, %1856
  br label %1858

1858:                                             ; preds = %1853, %1832
  %1859 = phi i1 [ true, %1832 ], [ %1857, %1853 ]
  %1860 = zext i1 %1859 to i64
  %1861 = select i1 %1859, i32 10, i32 32
  %1862 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1833, ptr noundef @.str.129, double noundef %1849, i32 noundef %1861) #5
  br label %1863

1863:                                             ; preds = %1858
  %1864 = load i32, ptr %7, align 4, !tbaa !20
  %1865 = add nsw i32 %1864, 1
  store i32 %1865, ptr %7, align 4, !tbaa !20
  br label %1828, !llvm.loop !92

1866:                                             ; preds = %1828
  %1867 = load ptr, ptr %6, align 8, !tbaa !5
  %1868 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1867, ptr noundef @.str.133) #5
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %1869

1869:                                             ; preds = %1887, %1866
  %1870 = load i32, ptr %7, align 4, !tbaa !20
  %1871 = load i32, ptr %9, align 4, !tbaa !20
  %1872 = icmp slt i32 %1870, %1871
  br i1 %1872, label %1873, label %1890

1873:                                             ; preds = %1869
  %1874 = load ptr, ptr %4, align 8, !tbaa !5
  %1875 = getelementptr inbounds %struct.cmaes_t, ptr %1874, i32 0, i32 14
  %1876 = load ptr, ptr %1875, align 8, !tbaa !34
  %1877 = load i32, ptr %7, align 4, !tbaa !20
  %1878 = sext i32 %1877 to i64
  %1879 = getelementptr inbounds double, ptr %1876, i64 %1878
  %1880 = load double, ptr %1879, align 8, !tbaa !28
  %1881 = load ptr, ptr %4, align 8, !tbaa !5
  %1882 = getelementptr inbounds %struct.cmaes_t, ptr %1881, i32 0, i32 20
  %1883 = load ptr, ptr %1882, align 8, !tbaa !47
  %1884 = load i32, ptr %7, align 4, !tbaa !20
  %1885 = sext i32 %1884 to i64
  %1886 = getelementptr inbounds double, ptr %1883, i64 %1885
  store double %1880, ptr %1886, align 8, !tbaa !28
  br label %1887

1887:                                             ; preds = %1873
  %1888 = load i32, ptr %7, align 4, !tbaa !20
  %1889 = add nsw i32 %1888, 1
  store i32 %1889, ptr %7, align 4, !tbaa !20
  br label %1869, !llvm.loop !93

1890:                                             ; preds = %1869
  %1891 = load ptr, ptr %4, align 8, !tbaa !5
  %1892 = getelementptr inbounds %struct.cmaes_t, ptr %1891, i32 0, i32 20
  %1893 = load ptr, ptr %1892, align 8, !tbaa !47
  %1894 = load i32, ptr %9, align 4, !tbaa !20
  %1895 = zext i32 %1894 to i64
  call void @qsort(ptr noundef %1893, i64 noundef %1895, i64 noundef 8, ptr noundef @SignOfDiff)
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %1896

1896:                                             ; preds = %1929, %1890
  %1897 = load i32, ptr %7, align 4, !tbaa !20
  %1898 = load i32, ptr %9, align 4, !tbaa !20
  %1899 = icmp slt i32 %1897, %1898
  br i1 %1899, label %1900, label %1932

1900:                                             ; preds = %1896
  %1901 = load ptr, ptr %6, align 8, !tbaa !5
  %1902 = load ptr, ptr %4, align 8, !tbaa !5
  %1903 = getelementptr inbounds %struct.cmaes_t, ptr %1902, i32 0, i32 3
  %1904 = load double, ptr %1903, align 8, !tbaa !44
  %1905 = load ptr, ptr %4, align 8, !tbaa !5
  %1906 = getelementptr inbounds %struct.cmaes_t, ptr %1905, i32 0, i32 20
  %1907 = load ptr, ptr %1906, align 8, !tbaa !47
  %1908 = load i32, ptr %9, align 4, !tbaa !20
  %1909 = sub nsw i32 %1908, 1
  %1910 = load i32, ptr %7, align 4, !tbaa !20
  %1911 = sub nsw i32 %1909, %1910
  %1912 = sext i32 %1911 to i64
  %1913 = getelementptr inbounds double, ptr %1907, i64 %1912
  %1914 = load double, ptr %1913, align 8, !tbaa !28
  %1915 = fmul double %1904, %1914
  %1916 = load i32, ptr %7, align 4, !tbaa !20
  %1917 = srem i32 %1916, 5
  %1918 = icmp eq i32 %1917, 4
  br i1 %1918, label %1924, label %1919

1919:                                             ; preds = %1900
  %1920 = load i32, ptr %7, align 4, !tbaa !20
  %1921 = load i32, ptr %9, align 4, !tbaa !20
  %1922 = sub nsw i32 %1921, 1
  %1923 = icmp eq i32 %1920, %1922
  br label %1924

1924:                                             ; preds = %1919, %1900
  %1925 = phi i1 [ true, %1900 ], [ %1923, %1919 ]
  %1926 = zext i1 %1925 to i64
  %1927 = select i1 %1925, i32 10, i32 32
  %1928 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1901, ptr noundef @.str.129, double noundef %1915, i32 noundef %1927) #5
  br label %1929

1929:                                             ; preds = %1924
  %1930 = load i32, ptr %7, align 4, !tbaa !20
  %1931 = add nsw i32 %1930, 1
  store i32 %1931, ptr %7, align 4, !tbaa !20
  br label %1896, !llvm.loop !94

1932:                                             ; preds = %1896
  %1933 = load ptr, ptr %6, align 8, !tbaa !5
  %1934 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1933, ptr noundef @.str.134) #5
  %1935 = load ptr, ptr %4, align 8, !tbaa !5
  %1936 = getelementptr inbounds %struct.cmaes_t, ptr %1935, i32 0, i32 14
  %1937 = load ptr, ptr %1936, align 8, !tbaa !34
  %1938 = load i32, ptr %9, align 4, !tbaa !20
  %1939 = call i32 @MaxIdx(ptr noundef %1937, i32 noundef %1938)
  store i32 %1939, ptr %8, align 4, !tbaa !20
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %1940

1940:                                             ; preds = %1970, %1932
  %1941 = load i32, ptr %7, align 4, !tbaa !20
  %1942 = load i32, ptr %9, align 4, !tbaa !20
  %1943 = icmp slt i32 %1941, %1942
  br i1 %1943, label %1944, label %1973

1944:                                             ; preds = %1940
  %1945 = load ptr, ptr %6, align 8, !tbaa !5
  %1946 = load ptr, ptr %4, align 8, !tbaa !5
  %1947 = getelementptr inbounds %struct.cmaes_t, ptr %1946, i32 0, i32 13
  %1948 = load ptr, ptr %1947, align 8, !tbaa !35
  %1949 = load i32, ptr %7, align 4, !tbaa !20
  %1950 = sext i32 %1949 to i64
  %1951 = getelementptr inbounds ptr, ptr %1948, i64 %1950
  %1952 = load ptr, ptr %1951, align 8, !tbaa !5
  %1953 = load i32, ptr %8, align 4, !tbaa !20
  %1954 = sext i32 %1953 to i64
  %1955 = getelementptr inbounds double, ptr %1952, i64 %1954
  %1956 = load double, ptr %1955, align 8, !tbaa !28
  %1957 = load i32, ptr %7, align 4, !tbaa !20
  %1958 = srem i32 %1957, 5
  %1959 = icmp eq i32 %1958, 4
  br i1 %1959, label %1965, label %1960

1960:                                             ; preds = %1944
  %1961 = load i32, ptr %7, align 4, !tbaa !20
  %1962 = load i32, ptr %9, align 4, !tbaa !20
  %1963 = sub nsw i32 %1962, 1
  %1964 = icmp eq i32 %1961, %1963
  br label %1965

1965:                                             ; preds = %1960, %1944
  %1966 = phi i1 [ true, %1944 ], [ %1964, %1960 ]
  %1967 = zext i1 %1966 to i64
  %1968 = select i1 %1966, i32 10, i32 32
  %1969 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1945, ptr noundef @.str.129, double noundef %1956, i32 noundef %1968) #5
  br label %1970

1970:                                             ; preds = %1965
  %1971 = load i32, ptr %7, align 4, !tbaa !20
  %1972 = add nsw i32 %1971, 1
  store i32 %1972, ptr %7, align 4, !tbaa !20
  br label %1940, !llvm.loop !95

1973:                                             ; preds = %1940
  %1974 = load ptr, ptr %6, align 8, !tbaa !5
  %1975 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1974, ptr noundef @.str.135) #5
  %1976 = load ptr, ptr %4, align 8, !tbaa !5
  %1977 = getelementptr inbounds %struct.cmaes_t, ptr %1976, i32 0, i32 14
  %1978 = load ptr, ptr %1977, align 8, !tbaa !34
  %1979 = load i32, ptr %9, align 4, !tbaa !20
  %1980 = call i32 @MinIdx(ptr noundef %1978, i32 noundef %1979)
  store i32 %1980, ptr %8, align 4, !tbaa !20
  store i32 0, ptr %7, align 4, !tbaa !20
  br label %1981

1981:                                             ; preds = %2011, %1973
  %1982 = load i32, ptr %7, align 4, !tbaa !20
  %1983 = load i32, ptr %9, align 4, !tbaa !20
  %1984 = icmp slt i32 %1982, %1983
  br i1 %1984, label %1985, label %2014

1985:                                             ; preds = %1981
  %1986 = load ptr, ptr %6, align 8, !tbaa !5
  %1987 = load ptr, ptr %4, align 8, !tbaa !5
  %1988 = getelementptr inbounds %struct.cmaes_t, ptr %1987, i32 0, i32 13
  %1989 = load ptr, ptr %1988, align 8, !tbaa !35
  %1990 = load i32, ptr %7, align 4, !tbaa !20
  %1991 = sext i32 %1990 to i64
  %1992 = getelementptr inbounds ptr, ptr %1989, i64 %1991
  %1993 = load ptr, ptr %1992, align 8, !tbaa !5
  %1994 = load i32, ptr %8, align 4, !tbaa !20
  %1995 = sext i32 %1994 to i64
  %1996 = getelementptr inbounds double, ptr %1993, i64 %1995
  %1997 = load double, ptr %1996, align 8, !tbaa !28
  %1998 = load i32, ptr %7, align 4, !tbaa !20
  %1999 = srem i32 %1998, 5
  %2000 = icmp eq i32 %1999, 4
  br i1 %2000, label %2006, label %2001

2001:                                             ; preds = %1985
  %2002 = load i32, ptr %7, align 4, !tbaa !20
  %2003 = load i32, ptr %9, align 4, !tbaa !20
  %2004 = sub nsw i32 %2003, 1
  %2005 = icmp eq i32 %2002, %2004
  br label %2006

2006:                                             ; preds = %2001, %1985
  %2007 = phi i1 [ true, %1985 ], [ %2005, %2001 ]
  %2008 = zext i1 %2007 to i64
  %2009 = select i1 %2007, i32 10, i32 32
  %2010 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1986, ptr noundef @.str.129, double noundef %1997, i32 noundef %2009) #5
  br label %2011

2011:                                             ; preds = %2006
  %2012 = load i32, ptr %7, align 4, !tbaa !20
  %2013 = add nsw i32 %2012, 1
  store i32 %2013, ptr %7, align 4, !tbaa !20
  br label %1981, !llvm.loop !96

2014:                                             ; preds = %1981
  br label %2015

2015:                                             ; preds = %2031, %2014
  %2016 = load ptr, ptr %5, align 8, !tbaa !5
  %2017 = load i8, ptr %2016, align 1, !tbaa !23
  %2018 = sext i8 %2017 to i32
  %2019 = icmp ne i32 %2018, 43
  br i1 %2019, label %2020, label %2029

2020:                                             ; preds = %2015
  %2021 = load ptr, ptr %5, align 8, !tbaa !5
  %2022 = load i8, ptr %2021, align 1, !tbaa !23
  %2023 = sext i8 %2022 to i32
  %2024 = icmp ne i32 %2023, 0
  br i1 %2024, label %2025, label %2029

2025:                                             ; preds = %2020
  %2026 = load ptr, ptr %5, align 8, !tbaa !5
  %2027 = load ptr, ptr %10, align 8, !tbaa !5
  %2028 = icmp ult ptr %2026, %2027
  br label %2029

2029:                                             ; preds = %2025, %2020, %2015
  %2030 = phi i1 [ false, %2020 ], [ false, %2015 ], [ %2028, %2025 ]
  br i1 %2030, label %2031, label %2034

2031:                                             ; preds = %2029
  %2032 = load ptr, ptr %5, align 8, !tbaa !5
  %2033 = getelementptr inbounds i8, ptr %2032, i32 1
  store ptr %2033, ptr %5, align 8, !tbaa !5
  br label %2015, !llvm.loop !97

2034:                                             ; preds = %2029
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  br label %2035

2035:                                             ; preds = %2034, %1607
  %2036 = load ptr, ptr %5, align 8, !tbaa !5
  %2037 = load i8, ptr %2036, align 1, !tbaa !23
  %2038 = sext i8 %2037 to i32
  %2039 = icmp eq i32 %2038, 0
  br i1 %2039, label %2040, label %2041

2040:                                             ; preds = %2035
  br label %2079

2041:                                             ; preds = %2035
  %2042 = load ptr, ptr %5, align 8, !tbaa !5
  %2043 = load i8, ptr %2042, align 1, !tbaa !23
  %2044 = sext i8 %2043 to i32
  %2045 = icmp ne i32 %2044, 43
  br i1 %2045, label %2046, label %2068

2046:                                             ; preds = %2041
  %2047 = load ptr, ptr %5, align 8, !tbaa !5
  call void @ERRORMESSAGE(ptr noundef @.str.136, ptr noundef %2047, ptr noundef @.str.11, ptr noundef null)
  br label %2048

2048:                                             ; preds = %2064, %2046
  %2049 = load ptr, ptr %5, align 8, !tbaa !5
  %2050 = load i8, ptr %2049, align 1, !tbaa !23
  %2051 = sext i8 %2050 to i32
  %2052 = icmp ne i32 %2051, 43
  br i1 %2052, label %2053, label %2062

2053:                                             ; preds = %2048
  %2054 = load ptr, ptr %5, align 8, !tbaa !5
  %2055 = load i8, ptr %2054, align 1, !tbaa !23
  %2056 = sext i8 %2055 to i32
  %2057 = icmp ne i32 %2056, 0
  br i1 %2057, label %2058, label %2062

2058:                                             ; preds = %2053
  %2059 = load ptr, ptr %5, align 8, !tbaa !5
  %2060 = load ptr, ptr %10, align 8, !tbaa !5
  %2061 = icmp ult ptr %2059, %2060
  br label %2062

2062:                                             ; preds = %2058, %2053, %2048
  %2063 = phi i1 [ false, %2053 ], [ false, %2048 ], [ %2061, %2058 ]
  br i1 %2063, label %2064, label %2067

2064:                                             ; preds = %2062
  %2065 = load ptr, ptr %5, align 8, !tbaa !5
  %2066 = getelementptr inbounds i8, ptr %2065, i32 1
  store ptr %2066, ptr %5, align 8, !tbaa !5
  br label %2048, !llvm.loop !98

2067:                                             ; preds = %2062
  br label %2068

2068:                                             ; preds = %2067, %2041
  br label %2069

2069:                                             ; preds = %2068
  br label %2070

2070:                                             ; preds = %2075, %2069
  %2071 = load ptr, ptr %5, align 8, !tbaa !5
  %2072 = load i8, ptr %2071, align 1, !tbaa !23
  %2073 = sext i8 %2072 to i32
  %2074 = icmp eq i32 %2073, 43
  br i1 %2074, label %2075, label %2078

2075:                                             ; preds = %2070
  %2076 = load ptr, ptr %5, align 8, !tbaa !5
  %2077 = getelementptr inbounds i8, ptr %2076, i32 1
  store ptr %2077, ptr %5, align 8, !tbaa !5
  br label %2070, !llvm.loop !99

2078:                                             ; preds = %2070
  br label %38, !llvm.loop !100

2079:                                             ; preds = %2040, %694, %38
  %2080 = load ptr, ptr %5, align 8, !tbaa !5
  %2081 = load ptr, ptr %10, align 8, !tbaa !5
  %2082 = icmp ugt ptr %2080, %2081
  br i1 %2082, label %2083, label %2084

2083:                                             ; preds = %2079
  call void @FATAL(ptr noundef @.str.137, ptr noundef null, ptr noundef null, ptr noundef null)
  br label %2084

2084:                                             ; preds = %2083, %2079
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #5
  ret void
}

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local double @cmaes_timings_update(ptr noundef) #1

declare void @qsort(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare hidden i32 @SignOfDiff(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind
declare i64 @time(ptr noundef) #2

; Function Attrs: nounwind
declare ptr @asctime(ptr noundef) #2

; Function Attrs: nounwind
declare ptr @localtime(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden i32 @MaxIdx(ptr noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @MinIdx(ptr noundef, i32 noundef) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind willreturn memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }
attributes #6 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !13, i64 20}
!10 = !{!"", !6, i64 0, !11, i64 8, !17, i64 408, !14, i64 456, !6, i64 464, !6, i64 472, !6, i64 480, !6, i64 488, !6, i64 496, !12, i64 504, !12, i64 506, !14, i64 512, !6, i64 520, !6, i64 528, !6, i64 536, !6, i64 544, !6, i64 552, !6, i64 560, !6, i64 568, !6, i64 576, !6, i64 584, !6, i64 592, !6, i64 600, !14, i64 608, !14, i64 616, !14, i64 624, !14, i64 632, !14, i64 640, !14, i64 648, !14, i64 656, !7, i64 664, !12, i64 994, !12, i64 996, !14, i64 1000, !19, i64 1008, !14, i64 1096, !14, i64 1104, !12, i64 1112, !18, i64 1120, !18, i64 1128, !18, i64 1136, !18, i64 1144}
!11 = !{!"", !6, i64 0, !12, i64 8, !13, i64 12, !13, i64 16, !6, i64 24, !6, i64 32, !13, i64 40, !6, i64 48, !6, i64 56, !14, i64 64, !14, i64 72, !14, i64 80, !15, i64 88, !14, i64 104, !14, i64 112, !14, i64 120, !14, i64 128, !13, i64 136, !13, i64 140, !14, i64 144, !14, i64 152, !6, i64 160, !14, i64 168, !14, i64 176, !14, i64 184, !14, i64 192, !14, i64 200, !16, i64 208, !14, i64 232, !6, i64 240, !7, i64 248, !6, i64 352, !6, i64 360, !6, i64 368, !6, i64 376, !13, i64 384, !13, i64 388, !13, i64 392}
!12 = !{!"short", !7, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!"", !13, i64 0, !14, i64 8}
!16 = !{!"", !13, i64 0, !14, i64 8, !14, i64 16}
!17 = !{!"", !18, i64 0, !18, i64 8, !18, i64 16, !6, i64 24, !12, i64 32, !14, i64 40}
!18 = !{!"long", !7, i64 0}
!19 = !{!"", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !18, i64 32, !18, i64 40, !18, i64 48, !18, i64 56, !12, i64 64, !12, i64 66, !14, i64 72, !14, i64 80}
!20 = !{!13, !13, i64 0}
!21 = !{!10, !14, i64 648}
!22 = !{!10, !14, i64 656}
!23 = !{!7, !7, i64 0}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!10, !14, i64 640}
!27 = !{!10, !6, i64 520}
!28 = !{!14, !14, i64 0}
!29 = distinct !{!29, !25}
!30 = distinct !{!30, !25}
!31 = !{!10, !14, i64 632}
!32 = distinct !{!32, !25}
!33 = distinct !{!33, !25}
!34 = !{!10, !6, i64 536}
!35 = !{!10, !6, i64 528}
!36 = distinct !{!36, !25}
!37 = distinct !{!37, !25}
!38 = distinct !{!38, !25}
!39 = distinct !{!39, !25}
!40 = !{!10, !14, i64 1016}
!41 = !{!10, !14, i64 1024}
!42 = distinct !{!42, !25}
!43 = distinct !{!43, !25}
!44 = !{!10, !14, i64 456}
!45 = distinct !{!45, !25}
!46 = distinct !{!46, !25}
!47 = !{!10, !6, i64 584}
!48 = distinct !{!48, !25}
!49 = distinct !{!49, !25}
!50 = distinct !{!50, !25}
!51 = distinct !{!51, !25}
!52 = !{!10, !14, i64 616}
!53 = distinct !{!53, !25}
!54 = distinct !{!54, !25}
!55 = distinct !{!55, !25}
!56 = distinct !{!56, !25}
!57 = !{!10, !14, i64 608}
!58 = !{!10, !6, i64 592}
!59 = !{!10, !6, i64 488}
!60 = distinct !{!60, !25}
!61 = distinct !{!61, !25}
!62 = !{!10, !6, i64 472}
!63 = distinct !{!63, !25}
!64 = !{!10, !13, i64 144}
!65 = distinct !{!65, !25}
!66 = distinct !{!66, !25}
!67 = distinct !{!67, !25}
!68 = distinct !{!68, !25}
!69 = distinct !{!69, !25}
!70 = distinct !{!70, !25}
!71 = distinct !{!71, !25}
!72 = distinct !{!72, !25}
!73 = distinct !{!73, !25}
!74 = distinct !{!74, !25}
!75 = distinct !{!75, !25}
!76 = !{!10, !6, i64 552}
!77 = distinct !{!77, !25}
!78 = !{!10, !6, i64 544}
!79 = distinct !{!79, !25}
!80 = distinct !{!80, !25}
!81 = !{!10, !6, i64 480}
!82 = distinct !{!82, !25}
!83 = distinct !{!83, !25}
!84 = !{!10, !6, i64 464}
!85 = distinct !{!85, !25}
!86 = distinct !{!86, !25}
!87 = !{!18, !18, i64 0}
!88 = !{!10, !13, i64 24}
!89 = distinct !{!89, !25}
!90 = distinct !{!90, !25}
!91 = distinct !{!91, !25}
!92 = distinct !{!92, !25}
!93 = distinct !{!93, !25}
!94 = distinct !{!94, !25}
!95 = distinct !{!95, !25}
!96 = distinct !{!96, !25}
!97 = distinct !{!97, !25}
!98 = distinct !{!98, !25}
!99 = distinct !{!99, !25}
!100 = distinct !{!100, !25}


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

@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [53 x i8], align 1

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

; Function Attrs: nounwind uwtable
declare hidden void @ERRORMESSAGE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden ptr @new_void(i32 noundef, i64 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden double @rgdouMin(ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden double @rgdouMax(ptr noundef, i32 noundef) local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
declare hidden void @FATAL(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
declare hidden void @Sorted_index(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #4

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strncmp(ptr nocapture noundef, ptr nocapture noundef, i64 noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
define dso_local void @cmaes_WriteToFilePtr(ptr noundef %0, ptr noundef %1, ptr noundef %2) local_unnamed_addr #1 {
  %4 = alloca i64, align 8
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %8, label %5

5:                                                ; preds = %3
  %6 = getelementptr inbounds i8, ptr %0, i64 20
  %7 = load i32, ptr %6, align 4, !tbaa !5
  br label %8

8:                                                ; preds = %3, %5
  %9 = phi i32 [ %7, %5 ], [ 0, %3 ]
  %10 = icmp eq ptr %1, null
  %spec.select = select i1 %10, ptr @.str.55, ptr %1
  %11 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %spec.select) #8
  %12 = getelementptr inbounds i8, ptr %spec.select, i64 %11
  %13 = icmp sgt i64 %11, 0
  br i1 %13, label %.lr.ph877, label %.loopexit781

.lr.ph877:                                        ; preds = %8
  %14 = getelementptr inbounds i8, ptr %0, i64 648
  %15 = getelementptr inbounds i8, ptr %0, i64 656
  %16 = icmp sgt i32 %9, 1
  %17 = getelementptr inbounds i8, ptr %0, i64 640
  %18 = getelementptr inbounds i8, ptr %0, i64 520
  %19 = getelementptr inbounds i8, ptr %0, i64 632
  %rhsc = load i8, ptr @.str.62, align 1
  %20 = getelementptr inbounds i8, ptr %0, i64 536
  %21 = icmp sgt i32 %9, 0
  %22 = getelementptr inbounds i8, ptr %0, i64 528
  %23 = add nsw i32 %9, -1
  %rhsc711 = load i8, ptr @.str.64, align 1
  %24 = getelementptr inbounds i8, ptr %0, i64 1008
  %25 = getelementptr inbounds i8, ptr %0, i64 1016
  %26 = getelementptr inbounds i8, ptr %0, i64 1024
  %27 = getelementptr inbounds i8, ptr %0, i64 456
  %28 = getelementptr inbounds i8, ptr %0, i64 584
  %29 = zext i32 %9 to i64
  %30 = getelementptr inbounds i8, ptr %0, i64 616
  %31 = getelementptr inbounds i8, ptr %0, i64 608
  %32 = getelementptr inbounds i8, ptr %0, i64 592
  %33 = getelementptr inbounds i8, ptr %0, i64 488
  %34 = getelementptr inbounds i8, ptr %0, i64 472
  %35 = sext i32 %9 to i64
  %36 = getelementptr inbounds i8, ptr %0, i64 144
  %rhsc751 = load i8, ptr @.str.103, align 1
  %rhsc755 = load i8, ptr @.str.107, align 1
  %37 = getelementptr inbounds i8, ptr %0, i64 552
  %38 = getelementptr inbounds i8, ptr %0, i64 544
  %39 = getelementptr inbounds i8, ptr %0, i64 480
  %40 = getelementptr inbounds i8, ptr %0, i64 464
  %41 = getelementptr inbounds i8, ptr %0, i64 24
  %42 = zext i32 %23 to i64
  %43 = sext i32 %23 to i64
  %exitcond945.peel.not = icmp eq i32 %9, 1
  %exitcond956.peel.not = icmp eq i32 %9, 1
  %exitcond962.peel.not = icmp eq i32 %9, 1
  %exitcond978.peel.not = icmp eq i32 %9, 1
  %exitcond984.peel.not = icmp eq i32 %9, 1
  %44 = add nsw i64 %29, -1
  %45 = add nsw i64 %29, -2
  %xtraiter = and i64 %44, 3
  %46 = icmp ult i64 %45, 3
  %unroll_iter = and i64 %44, -4
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %xtraiter1163 = and i64 %44, 3
  %47 = icmp ult i64 %45, 3
  %unroll_iter1167 = and i64 %44, -4
  %lcmp.mod1165.not = icmp eq i64 %xtraiter1163, 0
  %min.iters.check1100 = icmp ult i32 %9, 4
  %n.vec1103 = and i64 %29, 2147483644
  %cmp.n1110 = icmp eq i64 %n.vec1103, %29
  %xtraiter1169 = and i64 %29, 3
  %lcmp.mod1170.not = icmp eq i64 %xtraiter1169, 0
  %min.iters.check = icmp ult i32 %9, 4
  %n.vec = and i64 %29, 2147483644
  %cmp.n = icmp eq i64 %n.vec, %29
  %xtraiter1171 = and i64 %29, 3
  %lcmp.mod1172.not = icmp eq i64 %xtraiter1171, 0
  br label %49

.loopexit:                                        ; preds = %.critedge54
  %48 = icmp ult ptr %.62, %12
  br i1 %48, label %49, label %.loopexit781, !llvm.loop !19

49:                                               ; preds = %.lr.ph877, %.loopexit
  %.1875 = phi ptr [ %spec.select, %.lr.ph877 ], [ %.62, %.loopexit ]
  %50 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.1875, ptr noundef nonnull dereferenceable(1) @.str.56, i64 noundef 9) #8
  %51 = icmp eq i32 %50, 0
  br i1 %51, label %52, label %67

52:                                               ; preds = %49
  %53 = load double, ptr %14, align 8, !tbaa !21
  %54 = load double, ptr %15, align 8, !tbaa !22
  %55 = fdiv double %53, %54
  %56 = call double @sqrt(double noundef %55) #9
  %57 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.57, double noundef %56) #9
  br label %58

58:                                               ; preds = %62, %52
  %.2 = phi ptr [ %.1875, %52 ], [ %63, %62 ]
  %59 = load i8, ptr %.2, align 1, !tbaa !23
  switch i8 %59, label %60 [
    i8 43, label %.critedge
    i8 0, label %.critedge
  ]

60:                                               ; preds = %58
  %61 = icmp ult ptr %.2, %12
  br i1 %61, label %62, label %.critedge

62:                                               ; preds = %60
  %63 = getelementptr inbounds i8, ptr %.2, i64 1
  br label %58, !llvm.loop !24

.critedge:                                        ; preds = %58, %58, %60
  %64 = icmp eq i8 %59, 43
  %65 = select i1 %64, i32 9, i32 10
  %66 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %65) #9
  br label %67

67:                                               ; preds = %.critedge, %49
  %.3 = phi ptr [ %.2, %.critedge ], [ %.1875, %49 ]
  %68 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.3, ptr noundef nonnull dereferenceable(1) @.str.59, i64 noundef 8) #8
  %69 = icmp eq i32 %68, 0
  br i1 %69, label %.preheader780, label %113

.preheader780:                                    ; preds = %67
  br i1 %16, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader780
  %70 = load double, ptr %17, align 8, !tbaa !25
  %71 = load ptr, ptr %18, align 8, !tbaa !26
  br i1 %46, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.new

.lr.ph.new:                                       ; preds = %.lr.ph, %.lr.ph.new
  %indvars.iv = phi i64 [ %indvars.iv.next.3, %.lr.ph.new ], [ %29, %.lr.ph ]
  %.0662805 = phi i32 [ %.1663.3, %.lr.ph.new ], [ 0, %.lr.ph ]
  %niter = phi i64 [ %niter.next.3, %.lr.ph.new ], [ 0, %.lr.ph ]
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %72 = getelementptr inbounds ptr, ptr %71, i64 %indvars.iv.next
  %73 = load ptr, ptr %72, align 8, !tbaa !27
  %74 = getelementptr inbounds double, ptr %73, i64 %indvars.iv.next
  %75 = load double, ptr %74, align 8, !tbaa !28
  %76 = fcmp oeq double %70, %75
  %77 = trunc nuw nsw i64 %indvars.iv.next to i32
  %.1663 = select i1 %76, i32 %77, i32 %.0662805
  %indvars.iv.next.1 = add nsw i64 %indvars.iv, -2
  %78 = getelementptr inbounds ptr, ptr %71, i64 %indvars.iv.next.1
  %79 = load ptr, ptr %78, align 8, !tbaa !27
  %80 = getelementptr inbounds double, ptr %79, i64 %indvars.iv.next.1
  %81 = load double, ptr %80, align 8, !tbaa !28
  %82 = fcmp oeq double %70, %81
  %83 = trunc nuw nsw i64 %indvars.iv.next.1 to i32
  %.1663.1 = select i1 %82, i32 %83, i32 %.1663
  %indvars.iv.next.2 = add nsw i64 %indvars.iv, -3
  %84 = getelementptr inbounds ptr, ptr %71, i64 %indvars.iv.next.2
  %85 = load ptr, ptr %84, align 8, !tbaa !27
  %86 = getelementptr inbounds double, ptr %85, i64 %indvars.iv.next.2
  %87 = load double, ptr %86, align 8, !tbaa !28
  %88 = fcmp oeq double %70, %87
  %89 = trunc nuw nsw i64 %indvars.iv.next.2 to i32
  %.1663.2 = select i1 %88, i32 %89, i32 %.1663.1
  %indvars.iv.next.3 = add nsw i64 %indvars.iv, -4
  %90 = getelementptr inbounds ptr, ptr %71, i64 %indvars.iv.next.3
  %91 = load ptr, ptr %90, align 8, !tbaa !27
  %92 = getelementptr inbounds double, ptr %91, i64 %indvars.iv.next.3
  %93 = load double, ptr %92, align 8, !tbaa !28
  %94 = fcmp oeq double %70, %93
  %95 = trunc nuw nsw i64 %indvars.iv.next.3 to i32
  %.1663.3 = select i1 %94, i32 %95, i32 %.1663.2
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3.not = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3.not, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.new, !llvm.loop !29

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph.new, %.lr.ph
  %.1663.lcssa.ph = phi i32 [ poison, %.lr.ph ], [ %.1663.3, %.lr.ph.new ]
  %indvars.iv.unr = phi i64 [ %29, %.lr.ph ], [ %indvars.iv.next.3, %.lr.ph.new ]
  %.0662805.unr = phi i32 [ 0, %.lr.ph ], [ %.1663.3, %.lr.ph.new ]
  br i1 %lcmp.mod.not, label %._crit_edge, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge.loopexit.unr-lcssa, %.epil.preheader
  %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %.epil.preheader ], [ %indvars.iv.unr, %._crit_edge.loopexit.unr-lcssa ]
  %.0662805.epil = phi i32 [ %.1663.epil, %.epil.preheader ], [ %.0662805.unr, %._crit_edge.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %._crit_edge.loopexit.unr-lcssa ]
  %indvars.iv.next.epil = add nsw i64 %indvars.iv.epil, -1
  %96 = getelementptr inbounds ptr, ptr %71, i64 %indvars.iv.next.epil
  %97 = load ptr, ptr %96, align 8, !tbaa !27
  %98 = getelementptr inbounds double, ptr %97, i64 %indvars.iv.next.epil
  %99 = load double, ptr %98, align 8, !tbaa !28
  %100 = fcmp oeq double %70, %99
  %101 = trunc nuw nsw i64 %indvars.iv.next.epil to i32
  %.1663.epil = select i1 %100, i32 %101, i32 %.0662805.epil
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge, label %.epil.preheader, !llvm.loop !30

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.epil.preheader, %.preheader780
  %.0662.lcssa = phi i32 [ 0, %.preheader780 ], [ %.1663.lcssa.ph, %._crit_edge.loopexit.unr-lcssa ], [ %.1663.epil, %.epil.preheader ]
  %102 = add nuw nsw i32 %.0662.lcssa, 1
  %103 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.60, i32 noundef %102) #9
  br label %104

104:                                              ; preds = %108, %._crit_edge
  %.4 = phi ptr [ %.3, %._crit_edge ], [ %109, %108 ]
  %105 = load i8, ptr %.4, align 1, !tbaa !23
  switch i8 %105, label %106 [
    i8 43, label %.critedge2
    i8 0, label %.critedge2
  ]

106:                                              ; preds = %104
  %107 = icmp ult ptr %.4, %12
  br i1 %107, label %108, label %.critedge2

108:                                              ; preds = %106
  %109 = getelementptr inbounds i8, ptr %.4, i64 1
  br label %104, !llvm.loop !32

.critedge2:                                       ; preds = %104, %104, %106
  %110 = icmp eq i8 %105, 43
  %111 = select i1 %110, i32 9, i32 10
  %112 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %111) #9
  br label %113

113:                                              ; preds = %.critedge2, %67
  %.5 = phi ptr [ %.4, %.critedge2 ], [ %.3, %67 ]
  %114 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.5, ptr noundef nonnull dereferenceable(1) @.str.61, i64 noundef 8) #8
  %115 = icmp eq i32 %114, 0
  br i1 %115, label %.preheader779, label %159

.preheader779:                                    ; preds = %113
  br i1 %16, label %.lr.ph809, label %._crit_edge810

.lr.ph809:                                        ; preds = %.preheader779
  %116 = load double, ptr %19, align 8, !tbaa !33
  %117 = load ptr, ptr %18, align 8, !tbaa !26
  br i1 %47, label %._crit_edge810.loopexit.unr-lcssa, label %.lr.ph809.new

.lr.ph809.new:                                    ; preds = %.lr.ph809, %.lr.ph809.new
  %indvars.iv914 = phi i64 [ %indvars.iv.next915.3, %.lr.ph809.new ], [ %29, %.lr.ph809 ]
  %.0660807 = phi i32 [ %.1661.3, %.lr.ph809.new ], [ 0, %.lr.ph809 ]
  %niter1168 = phi i64 [ %niter1168.next.3, %.lr.ph809.new ], [ 0, %.lr.ph809 ]
  %indvars.iv.next915 = add nsw i64 %indvars.iv914, -1
  %118 = getelementptr inbounds ptr, ptr %117, i64 %indvars.iv.next915
  %119 = load ptr, ptr %118, align 8, !tbaa !27
  %120 = getelementptr inbounds double, ptr %119, i64 %indvars.iv.next915
  %121 = load double, ptr %120, align 8, !tbaa !28
  %122 = fcmp oeq double %116, %121
  %123 = trunc nuw nsw i64 %indvars.iv.next915 to i32
  %.1661 = select i1 %122, i32 %123, i32 %.0660807
  %indvars.iv.next915.1 = add nsw i64 %indvars.iv914, -2
  %124 = getelementptr inbounds ptr, ptr %117, i64 %indvars.iv.next915.1
  %125 = load ptr, ptr %124, align 8, !tbaa !27
  %126 = getelementptr inbounds double, ptr %125, i64 %indvars.iv.next915.1
  %127 = load double, ptr %126, align 8, !tbaa !28
  %128 = fcmp oeq double %116, %127
  %129 = trunc nuw nsw i64 %indvars.iv.next915.1 to i32
  %.1661.1 = select i1 %128, i32 %129, i32 %.1661
  %indvars.iv.next915.2 = add nsw i64 %indvars.iv914, -3
  %130 = getelementptr inbounds ptr, ptr %117, i64 %indvars.iv.next915.2
  %131 = load ptr, ptr %130, align 8, !tbaa !27
  %132 = getelementptr inbounds double, ptr %131, i64 %indvars.iv.next915.2
  %133 = load double, ptr %132, align 8, !tbaa !28
  %134 = fcmp oeq double %116, %133
  %135 = trunc nuw nsw i64 %indvars.iv.next915.2 to i32
  %.1661.2 = select i1 %134, i32 %135, i32 %.1661.1
  %indvars.iv.next915.3 = add nsw i64 %indvars.iv914, -4
  %136 = getelementptr inbounds ptr, ptr %117, i64 %indvars.iv.next915.3
  %137 = load ptr, ptr %136, align 8, !tbaa !27
  %138 = getelementptr inbounds double, ptr %137, i64 %indvars.iv.next915.3
  %139 = load double, ptr %138, align 8, !tbaa !28
  %140 = fcmp oeq double %116, %139
  %141 = trunc nuw nsw i64 %indvars.iv.next915.3 to i32
  %.1661.3 = select i1 %140, i32 %141, i32 %.1661.2
  %niter1168.next.3 = add i64 %niter1168, 4
  %niter1168.ncmp.3.not = icmp eq i64 %niter1168.next.3, %unroll_iter1167
  br i1 %niter1168.ncmp.3.not, label %._crit_edge810.loopexit.unr-lcssa, label %.lr.ph809.new, !llvm.loop !34

._crit_edge810.loopexit.unr-lcssa:                ; preds = %.lr.ph809.new, %.lr.ph809
  %.1661.lcssa.ph = phi i32 [ poison, %.lr.ph809 ], [ %.1661.3, %.lr.ph809.new ]
  %indvars.iv914.unr = phi i64 [ %29, %.lr.ph809 ], [ %indvars.iv.next915.3, %.lr.ph809.new ]
  %.0660807.unr = phi i32 [ 0, %.lr.ph809 ], [ %.1661.3, %.lr.ph809.new ]
  br i1 %lcmp.mod1165.not, label %._crit_edge810, label %.epil.preheader1162

.epil.preheader1162:                              ; preds = %._crit_edge810.loopexit.unr-lcssa, %.epil.preheader1162
  %indvars.iv914.epil = phi i64 [ %indvars.iv.next915.epil, %.epil.preheader1162 ], [ %indvars.iv914.unr, %._crit_edge810.loopexit.unr-lcssa ]
  %.0660807.epil = phi i32 [ %.1661.epil, %.epil.preheader1162 ], [ %.0660807.unr, %._crit_edge810.loopexit.unr-lcssa ]
  %epil.iter1164 = phi i64 [ %epil.iter1164.next, %.epil.preheader1162 ], [ 0, %._crit_edge810.loopexit.unr-lcssa ]
  %indvars.iv.next915.epil = add nsw i64 %indvars.iv914.epil, -1
  %142 = getelementptr inbounds ptr, ptr %117, i64 %indvars.iv.next915.epil
  %143 = load ptr, ptr %142, align 8, !tbaa !27
  %144 = getelementptr inbounds double, ptr %143, i64 %indvars.iv.next915.epil
  %145 = load double, ptr %144, align 8, !tbaa !28
  %146 = fcmp oeq double %116, %145
  %147 = trunc nuw nsw i64 %indvars.iv.next915.epil to i32
  %.1661.epil = select i1 %146, i32 %147, i32 %.0660807.epil
  %epil.iter1164.next = add i64 %epil.iter1164, 1
  %epil.iter1164.cmp.not = icmp eq i64 %epil.iter1164.next, %xtraiter1163
  br i1 %epil.iter1164.cmp.not, label %._crit_edge810, label %.epil.preheader1162, !llvm.loop !35

._crit_edge810:                                   ; preds = %._crit_edge810.loopexit.unr-lcssa, %.epil.preheader1162, %.preheader779
  %.0660.lcssa = phi i32 [ 0, %.preheader779 ], [ %.1661.lcssa.ph, %._crit_edge810.loopexit.unr-lcssa ], [ %.1661.epil, %.epil.preheader1162 ]
  %148 = add nuw nsw i32 %.0660.lcssa, 1
  %149 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.60, i32 noundef %148) #9
  br label %150

150:                                              ; preds = %154, %._crit_edge810
  %.6 = phi ptr [ %.5, %._crit_edge810 ], [ %155, %154 ]
  %151 = load i8, ptr %.6, align 1, !tbaa !23
  switch i8 %151, label %152 [
    i8 43, label %.critedge4
    i8 0, label %.critedge4
  ]

152:                                              ; preds = %150
  %153 = icmp ult ptr %.6, %12
  br i1 %153, label %154, label %.critedge4

154:                                              ; preds = %152
  %155 = getelementptr inbounds i8, ptr %.6, i64 1
  br label %150, !llvm.loop !36

.critedge4:                                       ; preds = %150, %150, %152
  %156 = icmp eq i8 %151, 43
  %157 = select i1 %156, i32 9, i32 10
  %158 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %157) #9
  br label %159

159:                                              ; preds = %.critedge4, %113
  %.7 = phi ptr [ %.6, %.critedge4 ], [ %.5, %113 ]
  %lhsc = load i8, ptr %.7, align 1
  %160 = icmp eq i8 %lhsc, %rhsc
  br i1 %160, label %161, label %178

161:                                              ; preds = %159
  %162 = call ptr @new_void(i32 noundef %9, i64 noundef 4)
  %163 = load ptr, ptr %20, align 8, !tbaa !37
  call void @Sorted_index(ptr noundef %163, ptr noundef %162, i32 noundef %9)
  br i1 %21, label %.preheader768, label %._crit_edge816

.preheader768:                                    ; preds = %161, %._crit_edge814
  %indvars.iv920 = phi i64 [ %indvars.iv.next921, %._crit_edge814 ], [ 0, %161 ]
  %164 = sub nsw i64 %43, %indvars.iv920
  %165 = getelementptr inbounds i32, ptr %162, i64 %164
  br label %166

166:                                              ; preds = %.preheader768, %166
  %indvars.iv917 = phi i64 [ 0, %.preheader768 ], [ %indvars.iv.next918, %166 ]
  %167 = load ptr, ptr %22, align 8, !tbaa !38
  %168 = getelementptr inbounds ptr, ptr %167, i64 %indvars.iv917
  %169 = load ptr, ptr %168, align 8, !tbaa !27
  %170 = load i32, ptr %165, align 4, !tbaa !39
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds double, ptr %169, i64 %171
  %173 = load double, ptr %172, align 8, !tbaa !28
  %174 = icmp eq i64 %indvars.iv917, %42
  %175 = select i1 %174, i32 10, i32 9
  %176 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.63, double noundef %173, i32 noundef %175) #9
  %indvars.iv.next918 = add nuw nsw i64 %indvars.iv917, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next918, %29
  br i1 %exitcond.not, label %._crit_edge814, label %166, !llvm.loop !40

._crit_edge814:                                   ; preds = %166
  %indvars.iv.next921 = add nuw nsw i64 %indvars.iv920, 1
  %exitcond924.not = icmp eq i64 %indvars.iv.next921, %29
  br i1 %exitcond924.not, label %._crit_edge816, label %.preheader768, !llvm.loop !41

._crit_edge816:                                   ; preds = %._crit_edge814, %161
  %177 = getelementptr inbounds i8, ptr %.7, i64 1
  call void @free(ptr noundef %162) #9
  %lhsc710.pre = load i8, ptr %177, align 1
  br label %178

178:                                              ; preds = %._crit_edge816, %159
  %lhsc710 = phi i8 [ %lhsc710.pre, %._crit_edge816 ], [ %lhsc, %159 ]
  %.8 = phi ptr [ %177, %._crit_edge816 ], [ %.7, %159 ]
  %179 = icmp eq i8 %lhsc710, %rhsc711
  br i1 %179, label %.preheader778, label %191

.preheader778:                                    ; preds = %178
  br i1 %21, label %.preheader, label %._crit_edge819

.preheader:                                       ; preds = %.preheader778, %189
  %indvars.iv934 = phi i64 [ %indvars.iv.next935, %189 ], [ 0, %.preheader778 ]
  %indvars.iv932 = phi i64 [ %indvars.iv.next933, %189 ], [ 1, %.preheader778 ]
  br label %180

180:                                              ; preds = %.preheader, %180
  %indvars.iv925 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next926, %180 ]
  %181 = load ptr, ptr %18, align 8, !tbaa !26
  %182 = getelementptr inbounds ptr, ptr %181, i64 %indvars.iv934
  %183 = load ptr, ptr %182, align 8, !tbaa !27
  %184 = getelementptr inbounds double, ptr %183, i64 %indvars.iv925
  %185 = load double, ptr %184, align 8, !tbaa !28
  %186 = icmp eq i64 %indvars.iv925, %indvars.iv934
  %187 = select i1 %186, i32 10, i32 9
  %188 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.63, double noundef %185, i32 noundef %187) #9
  %indvars.iv.next926 = add nuw nsw i64 %indvars.iv925, 1
  %exitcond931.not = icmp eq i64 %indvars.iv.next926, %indvars.iv932
  br i1 %exitcond931.not, label %189, label %180, !llvm.loop !42

189:                                              ; preds = %180
  %indvars.iv.next935 = add nuw nsw i64 %indvars.iv934, 1
  %indvars.iv.next933 = add nuw nsw i64 %indvars.iv932, 1
  %exitcond940.not = icmp eq i64 %indvars.iv.next935, %29
  br i1 %exitcond940.not, label %._crit_edge819, label %.preheader, !llvm.loop !43

._crit_edge819:                                   ; preds = %189, %.preheader778
  %190 = getelementptr inbounds i8, ptr %.8, i64 1
  br label %191

191:                                              ; preds = %._crit_edge819, %178
  %.9 = phi ptr [ %190, %._crit_edge819 ], [ %.8, %178 ]
  %192 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.9, ptr noundef nonnull dereferenceable(1) @.str.65, i64 noundef 4) #8
  %193 = icmp eq i32 %192, 0
  br i1 %193, label %194, label %208

194:                                              ; preds = %191
  %195 = call double @cmaes_timings_update(ptr noundef nonnull %24)
  %196 = load double, ptr %25, align 8, !tbaa !44
  %197 = load double, ptr %26, align 8, !tbaa !45
  %198 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.66, double noundef %196, double noundef %197) #9
  br label %199

199:                                              ; preds = %203, %194
  %.10 = phi ptr [ %.9, %194 ], [ %204, %203 ]
  %200 = load i8, ptr %.10, align 1, !tbaa !23
  switch i8 %200, label %201 [
    i8 43, label %.critedge6
    i8 0, label %.critedge6
  ]

201:                                              ; preds = %199
  %202 = icmp ult ptr %.10, %12
  br i1 %202, label %203, label %.critedge6

203:                                              ; preds = %201
  %204 = getelementptr inbounds i8, ptr %.10, i64 1
  br label %199, !llvm.loop !46

.critedge6:                                       ; preds = %199, %199, %201
  %205 = icmp eq i8 %200, 43
  %206 = select i1 %205, i32 9, i32 10
  %207 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %206) #9
  br label %208

208:                                              ; preds = %.critedge6, %191
  %.11 = phi ptr [ %.10, %.critedge6 ], [ %.9, %191 ]
  %209 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.11, ptr noundef nonnull dereferenceable(1) @.str.67, i64 noundef 11) #8
  %210 = icmp eq i32 %209, 0
  br i1 %210, label %211, label %226

211:                                              ; preds = %208
  %212 = load double, ptr %19, align 8, !tbaa !33
  %213 = load double, ptr %17, align 8, !tbaa !25
  %214 = fdiv double %212, %213
  %215 = call double @sqrt(double noundef %214) #9
  %216 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.68, double noundef %215) #9
  br label %217

217:                                              ; preds = %221, %211
  %.12 = phi ptr [ %.11, %211 ], [ %222, %221 ]
  %218 = load i8, ptr %.12, align 1, !tbaa !23
  switch i8 %218, label %219 [
    i8 43, label %.critedge8
    i8 0, label %.critedge8
  ]

219:                                              ; preds = %217
  %220 = icmp ult ptr %.12, %12
  br i1 %220, label %221, label %.critedge8

221:                                              ; preds = %219
  %222 = getelementptr inbounds i8, ptr %.12, i64 1
  br label %217, !llvm.loop !47

.critedge8:                                       ; preds = %217, %217, %219
  %223 = icmp eq i8 %218, 43
  %224 = select i1 %223, i32 9, i32 10
  %225 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %224) #9
  br label %226

226:                                              ; preds = %.critedge8, %208
  %.13 = phi ptr [ %.12, %.critedge8 ], [ %.11, %208 ]
  %227 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.13, ptr noundef nonnull dereferenceable(1) @.str.69, i64 noundef 10) #8
  %228 = icmp eq i32 %227, 0
  br i1 %228, label %232, label %229

229:                                              ; preds = %226
  %230 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.13, ptr noundef nonnull dereferenceable(1) @.str.70, i64 noundef 6) #8
  %231 = icmp eq i32 %230, 0
  br i1 %231, label %232, label %257

232:                                              ; preds = %229, %226
  br i1 %21, label %.lr.ph822.preheader, label %.preheader777.preheader

.lr.ph822.preheader:                              ; preds = %232
  %233 = load double, ptr %27, align 8, !tbaa !48
  %234 = load ptr, ptr %18, align 8, !tbaa !26
  %235 = load ptr, ptr %234, align 8, !tbaa !27
  %236 = load double, ptr %235, align 8, !tbaa !28
  %237 = call double @sqrt(double noundef %236) #9
  %238 = fmul double %233, %237
  %239 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.72, double noundef %238) #9
  br i1 %exitcond945.peel.not, label %.preheader777.preheader, label %.lr.ph822

.lr.ph822:                                        ; preds = %.lr.ph822.preheader, %.lr.ph822
  %indvars.iv941 = phi i64 [ %indvars.iv.next942, %.lr.ph822 ], [ 1, %.lr.ph822.preheader ]
  %240 = load double, ptr %27, align 8, !tbaa !48
  %241 = load ptr, ptr %18, align 8, !tbaa !26
  %242 = getelementptr inbounds ptr, ptr %241, i64 %indvars.iv941
  %243 = load ptr, ptr %242, align 8, !tbaa !27
  %244 = getelementptr inbounds double, ptr %243, i64 %indvars.iv941
  %245 = load double, ptr %244, align 8, !tbaa !28
  %246 = call double @sqrt(double noundef %245) #9
  %247 = fmul double %240, %246
  %248 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.73, double noundef %247) #9
  %indvars.iv.next942 = add nuw nsw i64 %indvars.iv941, 1
  %exitcond945.not = icmp eq i64 %indvars.iv.next942, %29
  br i1 %exitcond945.not, label %.preheader777.preheader, label %.lr.ph822, !llvm.loop !49

.preheader777.preheader:                          ; preds = %.lr.ph822, %.lr.ph822.preheader, %232
  br label %.preheader777

.preheader777:                                    ; preds = %.preheader777.preheader, %252
  %.14 = phi ptr [ %253, %252 ], [ %.13, %.preheader777.preheader ]
  %249 = load i8, ptr %.14, align 1, !tbaa !23
  switch i8 %249, label %250 [
    i8 43, label %.critedge10
    i8 0, label %.critedge10
  ]

250:                                              ; preds = %.preheader777
  %251 = icmp ult ptr %.14, %12
  br i1 %251, label %252, label %.critedge10

252:                                              ; preds = %250
  %253 = getelementptr inbounds i8, ptr %.14, i64 1
  br label %.preheader777, !llvm.loop !51

.critedge10:                                      ; preds = %.preheader777, %.preheader777, %250
  %254 = icmp eq i8 %249, 43
  %255 = select i1 %254, i32 9, i32 10
  %256 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %255) #9
  br label %257

257:                                              ; preds = %.critedge10, %229
  %.15 = phi ptr [ %.14, %.critedge10 ], [ %.13, %229 ]
  %258 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.15, ptr noundef nonnull dereferenceable(1) @.str.74, i64 noundef 7) #8
  %259 = icmp eq i32 %258, 0
  br i1 %259, label %.preheader776, label %300

.preheader776:                                    ; preds = %257
  %.pre = load ptr, ptr %28, align 8, !tbaa !52
  br i1 %21, label %.lr.ph824, label %._crit_edge825.thread

._crit_edge825.thread:                            ; preds = %.preheader776
  call void @qsort(ptr noundef %.pre, i64 noundef %29, i64 noundef 8, ptr noundef nonnull @SignOfDiff) #9
  br label %.preheader775.preheader

.lr.ph824:                                        ; preds = %.preheader776
  %.pre1096 = ptrtoint ptr %.pre to i64
  %260 = load ptr, ptr %20, align 8, !tbaa !37
  %261 = ptrtoint ptr %260 to i64
  %262 = sub i64 %.pre1096, %261
  %diff.check1097 = icmp ult i64 %262, 32
  %or.cond = select i1 %min.iters.check1100, i1 true, i1 %diff.check1097
  br i1 %or.cond, label %scalar.ph1099.preheader, label %vector.body1105

vector.body1105:                                  ; preds = %.lr.ph824, %vector.body1105
  %index1106 = phi i64 [ %index.next1109, %vector.body1105 ], [ 0, %.lr.ph824 ]
  %263 = getelementptr inbounds double, ptr %260, i64 %index1106
  %264 = getelementptr inbounds i8, ptr %263, i64 16
  %wide.load1107 = load <2 x double>, ptr %263, align 8, !tbaa !28
  %wide.load1108 = load <2 x double>, ptr %264, align 8, !tbaa !28
  %265 = getelementptr inbounds double, ptr %.pre, i64 %index1106
  %266 = getelementptr inbounds i8, ptr %265, i64 16
  store <2 x double> %wide.load1107, ptr %265, align 8, !tbaa !28
  store <2 x double> %wide.load1108, ptr %266, align 8, !tbaa !28
  %index.next1109 = add nuw i64 %index1106, 4
  %267 = icmp eq i64 %index.next1109, %n.vec1103
  br i1 %267, label %middle.block1098, label %vector.body1105, !llvm.loop !53

middle.block1098:                                 ; preds = %vector.body1105
  br i1 %cmp.n1110, label %._crit_edge825, label %scalar.ph1099.preheader

scalar.ph1099.preheader:                          ; preds = %middle.block1098, %.lr.ph824
  %indvars.iv947.ph = phi i64 [ 0, %.lr.ph824 ], [ %n.vec1103, %middle.block1098 ]
  br i1 %lcmp.mod1170.not, label %scalar.ph1099.prol.loopexit, label %scalar.ph1099.prol

scalar.ph1099.prol:                               ; preds = %scalar.ph1099.preheader, %scalar.ph1099.prol
  %indvars.iv947.prol = phi i64 [ %indvars.iv.next948.prol, %scalar.ph1099.prol ], [ %indvars.iv947.ph, %scalar.ph1099.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph1099.prol ], [ 0, %scalar.ph1099.preheader ]
  %268 = getelementptr inbounds double, ptr %260, i64 %indvars.iv947.prol
  %269 = load double, ptr %268, align 8, !tbaa !28
  %270 = getelementptr inbounds double, ptr %.pre, i64 %indvars.iv947.prol
  store double %269, ptr %270, align 8, !tbaa !28
  %indvars.iv.next948.prol = add nuw nsw i64 %indvars.iv947.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter1169
  br i1 %prol.iter.cmp.not, label %scalar.ph1099.prol.loopexit, label %scalar.ph1099.prol, !llvm.loop !56

scalar.ph1099.prol.loopexit:                      ; preds = %scalar.ph1099.prol, %scalar.ph1099.preheader
  %indvars.iv947.unr = phi i64 [ %indvars.iv947.ph, %scalar.ph1099.preheader ], [ %indvars.iv.next948.prol, %scalar.ph1099.prol ]
  %271 = sub nsw i64 %indvars.iv947.ph, %29
  %272 = icmp ugt i64 %271, -4
  br i1 %272, label %._crit_edge825, label %scalar.ph1099

scalar.ph1099:                                    ; preds = %scalar.ph1099.prol.loopexit, %scalar.ph1099
  %indvars.iv947 = phi i64 [ %indvars.iv.next948.3, %scalar.ph1099 ], [ %indvars.iv947.unr, %scalar.ph1099.prol.loopexit ]
  %273 = getelementptr inbounds double, ptr %260, i64 %indvars.iv947
  %274 = load double, ptr %273, align 8, !tbaa !28
  %275 = getelementptr inbounds double, ptr %.pre, i64 %indvars.iv947
  store double %274, ptr %275, align 8, !tbaa !28
  %indvars.iv.next948 = add nuw nsw i64 %indvars.iv947, 1
  %276 = getelementptr inbounds double, ptr %260, i64 %indvars.iv.next948
  %277 = load double, ptr %276, align 8, !tbaa !28
  %278 = getelementptr inbounds double, ptr %.pre, i64 %indvars.iv.next948
  store double %277, ptr %278, align 8, !tbaa !28
  %indvars.iv.next948.1 = add nuw nsw i64 %indvars.iv947, 2
  %279 = getelementptr inbounds double, ptr %260, i64 %indvars.iv.next948.1
  %280 = load double, ptr %279, align 8, !tbaa !28
  %281 = getelementptr inbounds double, ptr %.pre, i64 %indvars.iv.next948.1
  store double %280, ptr %281, align 8, !tbaa !28
  %indvars.iv.next948.2 = add nuw nsw i64 %indvars.iv947, 3
  %282 = getelementptr inbounds double, ptr %260, i64 %indvars.iv.next948.2
  %283 = load double, ptr %282, align 8, !tbaa !28
  %284 = getelementptr inbounds double, ptr %.pre, i64 %indvars.iv.next948.2
  store double %283, ptr %284, align 8, !tbaa !28
  %indvars.iv.next948.3 = add nuw nsw i64 %indvars.iv947, 4
  %exitcond951.not.3 = icmp eq i64 %indvars.iv.next948.3, %29
  br i1 %exitcond951.not.3, label %._crit_edge825, label %scalar.ph1099, !llvm.loop !57

._crit_edge825:                                   ; preds = %scalar.ph1099.prol.loopexit, %scalar.ph1099, %middle.block1098
  call void @qsort(ptr noundef nonnull %.pre, i64 noundef %29, i64 noundef 8, ptr noundef nonnull @SignOfDiff) #9
  br i1 %21, label %.lr.ph828.preheader, label %.preheader775.preheader

.lr.ph828.preheader:                              ; preds = %._crit_edge825
  %285 = load ptr, ptr %28, align 8, !tbaa !52
  %286 = load double, ptr %285, align 8, !tbaa !28
  %287 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.72, double noundef %286) #9
  br i1 %exitcond956.peel.not, label %.preheader775.preheader, label %.lr.ph828

.lr.ph828:                                        ; preds = %.lr.ph828.preheader, %.lr.ph828
  %indvars.iv952 = phi i64 [ %indvars.iv.next953, %.lr.ph828 ], [ 1, %.lr.ph828.preheader ]
  %288 = load ptr, ptr %28, align 8, !tbaa !52
  %289 = getelementptr inbounds double, ptr %288, i64 %indvars.iv952
  %290 = load double, ptr %289, align 8, !tbaa !28
  %291 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.73, double noundef %290) #9
  %indvars.iv.next953 = add nuw nsw i64 %indvars.iv952, 1
  %exitcond956.not = icmp eq i64 %indvars.iv.next953, %29
  br i1 %exitcond956.not, label %.preheader775.preheader, label %.lr.ph828, !llvm.loop !58

.preheader775.preheader:                          ; preds = %.lr.ph828, %.lr.ph828.preheader, %._crit_edge825.thread, %._crit_edge825
  br label %.preheader775

.preheader775:                                    ; preds = %.preheader775.preheader, %295
  %.16 = phi ptr [ %296, %295 ], [ %.15, %.preheader775.preheader ]
  %292 = load i8, ptr %.16, align 1, !tbaa !23
  switch i8 %292, label %293 [
    i8 43, label %.critedge12
    i8 0, label %.critedge12
  ]

293:                                              ; preds = %.preheader775
  %294 = icmp ult ptr %.16, %12
  br i1 %294, label %295, label %.critedge12

295:                                              ; preds = %293
  %296 = getelementptr inbounds i8, ptr %.16, i64 1
  br label %.preheader775, !llvm.loop !59

.critedge12:                                      ; preds = %.preheader775, %.preheader775, %293
  %297 = icmp eq i8 %292, 43
  %298 = select i1 %297, i32 9, i32 10
  %299 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %298) #9
  br label %300

300:                                              ; preds = %.critedge12, %257
  %.17 = phi ptr [ %.16, %.critedge12 ], [ %.15, %257 ]
  %301 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.17, ptr noundef nonnull dereferenceable(1) @.str.75, i64 noundef 3) #8
  %302 = icmp eq i32 %301, 0
  br i1 %302, label %303, label %314

303:                                              ; preds = %300
  %304 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.60, i32 noundef %9) #9
  br label %305

305:                                              ; preds = %309, %303
  %.18 = phi ptr [ %.17, %303 ], [ %310, %309 ]
  %306 = load i8, ptr %.18, align 1, !tbaa !23
  switch i8 %306, label %307 [
    i8 43, label %.critedge14
    i8 0, label %.critedge14
  ]

307:                                              ; preds = %305
  %308 = icmp ult ptr %.18, %12
  br i1 %308, label %309, label %.critedge14

309:                                              ; preds = %307
  %310 = getelementptr inbounds i8, ptr %.18, i64 1
  br label %305, !llvm.loop !60

.critedge14:                                      ; preds = %305, %305, %307
  %311 = icmp eq i8 %306, 43
  %312 = select i1 %311, i32 9, i32 10
  %313 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %312) #9
  br label %314

314:                                              ; preds = %.critedge14, %300
  %.19 = phi ptr [ %.18, %.critedge14 ], [ %.17, %300 ]
  %315 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.19, ptr noundef nonnull dereferenceable(1) @.str.76, i64 noundef 4) #8
  %316 = icmp eq i32 %315, 0
  br i1 %316, label %317, label %329

317:                                              ; preds = %314
  %318 = load double, ptr %30, align 8, !tbaa !61
  %319 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.77, double noundef %318) #9
  br label %320

320:                                              ; preds = %324, %317
  %.20 = phi ptr [ %.19, %317 ], [ %325, %324 ]
  %321 = load i8, ptr %.20, align 1, !tbaa !23
  switch i8 %321, label %322 [
    i8 43, label %.critedge16
    i8 0, label %.critedge16
  ]

322:                                              ; preds = %320
  %323 = icmp ult ptr %.20, %12
  br i1 %323, label %324, label %.critedge16

324:                                              ; preds = %322
  %325 = getelementptr inbounds i8, ptr %.20, i64 1
  br label %320, !llvm.loop !62

.critedge16:                                      ; preds = %320, %320, %322
  %326 = icmp eq i8 %321, 43
  %327 = select i1 %326, i32 9, i32 10
  %328 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %327) #9
  br label %329

329:                                              ; preds = %.critedge16, %314
  %.21 = phi ptr [ %.20, %.critedge16 ], [ %.19, %314 ]
  %330 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.21, ptr noundef nonnull dereferenceable(1) @.str.78, i64 noundef 12) #8
  %331 = icmp eq i32 %330, 0
  br i1 %331, label %332, label %375

332:                                              ; preds = %329
  %333 = sitofp i32 %9 to double
  %334 = fadd double %333, 1.000000e+00
  %335 = fdiv double %334, 5.000000e+00
  %336 = fadd double %335, 5.000000e-01
  %337 = fptosi double %336 to i32
  %.pre1036 = load ptr, ptr %28, align 8, !tbaa !52
  br i1 %21, label %.lr.ph883, label %._crit_edge884.thread

._crit_edge884.thread:                            ; preds = %332
  call void @qsort(ptr noundef %.pre1036, i64 noundef %29, i64 noundef 8, ptr noundef nonnull @SignOfDiff) #9
  br label %._crit_edge888

.lr.ph883:                                        ; preds = %332
  %.pre10361112 = ptrtoint ptr %.pre1036 to i64
  %338 = load ptr, ptr %20, align 8, !tbaa !37
  %min.iters.check1116 = icmp ult i32 %9, 6
  %339 = ptrtoint ptr %338 to i64
  %340 = sub i64 %.pre10361112, %339
  %diff.check1113 = icmp ult i64 %340, 32
  %or.cond1129 = select i1 %min.iters.check1116, i1 true, i1 %diff.check1113
  br i1 %or.cond1129, label %scalar.ph1115.preheader, label %vector.ph1117

vector.ph1117:                                    ; preds = %.lr.ph883
  %n.vec1119 = and i64 %29, 2147483644
  br label %vector.body1121

vector.body1121:                                  ; preds = %vector.body1121, %vector.ph1117
  %index1122 = phi i64 [ 0, %vector.ph1117 ], [ %index.next1125, %vector.body1121 ]
  %341 = getelementptr inbounds double, ptr %338, i64 %index1122
  %342 = getelementptr inbounds i8, ptr %341, i64 16
  %wide.load1123 = load <2 x double>, ptr %341, align 8, !tbaa !28
  %wide.load1124 = load <2 x double>, ptr %342, align 8, !tbaa !28
  %343 = getelementptr inbounds double, ptr %.pre1036, i64 %index1122
  %344 = getelementptr inbounds i8, ptr %343, i64 16
  store <2 x double> %wide.load1123, ptr %343, align 8, !tbaa !28
  store <2 x double> %wide.load1124, ptr %344, align 8, !tbaa !28
  %index.next1125 = add nuw i64 %index1122, 4
  %345 = icmp eq i64 %index.next1125, %n.vec1119
  br i1 %345, label %middle.block1114, label %vector.body1121, !llvm.loop !63

middle.block1114:                                 ; preds = %vector.body1121
  %cmp.n1126 = icmp eq i64 %n.vec1119, %29
  br i1 %cmp.n1126, label %._crit_edge884, label %scalar.ph1115.preheader

scalar.ph1115.preheader:                          ; preds = %middle.block1114, %.lr.ph883
  %indvars.iv1026.ph = phi i64 [ 0, %.lr.ph883 ], [ %n.vec1119, %middle.block1114 ]
  %xtraiter1174 = and i64 %29, 3
  %lcmp.mod1175.not = icmp eq i64 %xtraiter1174, 0
  br i1 %lcmp.mod1175.not, label %scalar.ph1115.prol.loopexit, label %scalar.ph1115.prol

scalar.ph1115.prol:                               ; preds = %scalar.ph1115.preheader, %scalar.ph1115.prol
  %indvars.iv1026.prol = phi i64 [ %indvars.iv.next1027.prol, %scalar.ph1115.prol ], [ %indvars.iv1026.ph, %scalar.ph1115.preheader ]
  %prol.iter1176 = phi i64 [ %prol.iter1176.next, %scalar.ph1115.prol ], [ 0, %scalar.ph1115.preheader ]
  %346 = getelementptr inbounds double, ptr %338, i64 %indvars.iv1026.prol
  %347 = load double, ptr %346, align 8, !tbaa !28
  %348 = getelementptr inbounds double, ptr %.pre1036, i64 %indvars.iv1026.prol
  store double %347, ptr %348, align 8, !tbaa !28
  %indvars.iv.next1027.prol = add nuw nsw i64 %indvars.iv1026.prol, 1
  %prol.iter1176.next = add i64 %prol.iter1176, 1
  %prol.iter1176.cmp.not = icmp eq i64 %prol.iter1176.next, %xtraiter1174
  br i1 %prol.iter1176.cmp.not, label %scalar.ph1115.prol.loopexit, label %scalar.ph1115.prol, !llvm.loop !64

scalar.ph1115.prol.loopexit:                      ; preds = %scalar.ph1115.prol, %scalar.ph1115.preheader
  %indvars.iv1026.unr = phi i64 [ %indvars.iv1026.ph, %scalar.ph1115.preheader ], [ %indvars.iv.next1027.prol, %scalar.ph1115.prol ]
  %349 = sub nsw i64 %indvars.iv1026.ph, %29
  %350 = icmp ugt i64 %349, -4
  br i1 %350, label %._crit_edge884, label %scalar.ph1115

scalar.ph1115:                                    ; preds = %scalar.ph1115.prol.loopexit, %scalar.ph1115
  %indvars.iv1026 = phi i64 [ %indvars.iv.next1027.3, %scalar.ph1115 ], [ %indvars.iv1026.unr, %scalar.ph1115.prol.loopexit ]
  %351 = getelementptr inbounds double, ptr %338, i64 %indvars.iv1026
  %352 = load double, ptr %351, align 8, !tbaa !28
  %353 = getelementptr inbounds double, ptr %.pre1036, i64 %indvars.iv1026
  store double %352, ptr %353, align 8, !tbaa !28
  %indvars.iv.next1027 = add nuw nsw i64 %indvars.iv1026, 1
  %354 = getelementptr inbounds double, ptr %338, i64 %indvars.iv.next1027
  %355 = load double, ptr %354, align 8, !tbaa !28
  %356 = getelementptr inbounds double, ptr %.pre1036, i64 %indvars.iv.next1027
  store double %355, ptr %356, align 8, !tbaa !28
  %indvars.iv.next1027.1 = add nuw nsw i64 %indvars.iv1026, 2
  %357 = getelementptr inbounds double, ptr %338, i64 %indvars.iv.next1027.1
  %358 = load double, ptr %357, align 8, !tbaa !28
  %359 = getelementptr inbounds double, ptr %.pre1036, i64 %indvars.iv.next1027.1
  store double %358, ptr %359, align 8, !tbaa !28
  %indvars.iv.next1027.2 = add nuw nsw i64 %indvars.iv1026, 3
  %360 = getelementptr inbounds double, ptr %338, i64 %indvars.iv.next1027.2
  %361 = load double, ptr %360, align 8, !tbaa !28
  %362 = getelementptr inbounds double, ptr %.pre1036, i64 %indvars.iv.next1027.2
  store double %361, ptr %362, align 8, !tbaa !28
  %indvars.iv.next1027.3 = add nuw nsw i64 %indvars.iv1026, 4
  %exitcond1030.not.3 = icmp eq i64 %indvars.iv.next1027.3, %29
  br i1 %exitcond1030.not.3, label %._crit_edge884, label %scalar.ph1115, !llvm.loop !65

._crit_edge884:                                   ; preds = %scalar.ph1115.prol.loopexit, %scalar.ph1115, %middle.block1114
  call void @qsort(ptr noundef nonnull %.pre1036, i64 noundef %29, i64 noundef 8, ptr noundef nonnull @SignOfDiff) #9
  br i1 %16, label %.lr.ph887.preheader, label %._crit_edge888

.lr.ph887.preheader:                              ; preds = %._crit_edge884
  %363 = sext i32 %337 to i64
  br label %.lr.ph887

.lr.ph887:                                        ; preds = %.lr.ph887.preheader, %.lr.ph887
  %indvars.iv1031 = phi i64 [ 0, %.lr.ph887.preheader ], [ %indvars.iv.next1032, %.lr.ph887 ]
  %364 = icmp eq i64 %indvars.iv1031, 0
  %365 = select i1 %364, ptr @.str.72, ptr @.str.73
  %366 = load ptr, ptr %28, align 8, !tbaa !52
  %367 = sub nsw i64 %43, %indvars.iv1031
  %368 = getelementptr inbounds double, ptr %366, i64 %367
  %369 = load double, ptr %368, align 8, !tbaa !28
  %370 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.71, ptr noundef nonnull %365, double noundef %369) #9
  %indvars.iv.next1032 = add nsw i64 %indvars.iv1031, %363
  %371 = icmp slt i64 %indvars.iv.next1032, %43
  br i1 %371, label %.lr.ph887, label %._crit_edge888, !llvm.loop !66

._crit_edge888:                                   ; preds = %.lr.ph887, %._crit_edge884.thread, %._crit_edge884
  %372 = load ptr, ptr %28, align 8, !tbaa !52
  %373 = load double, ptr %372, align 8, !tbaa !28
  %374 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.79, double noundef %373) #9
  br label %.loopexit781

375:                                              ; preds = %329
  %376 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.21, ptr noundef nonnull dereferenceable(1) @.str.80, i64 noundef 7) #8
  %377 = icmp eq i32 %376, 0
  br i1 %377, label %378, label %.critedge18

378:                                              ; preds = %375
  %379 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.81) #9
  %380 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.82) #9
  br label %381

381:                                              ; preds = %385, %378
  %.22 = phi ptr [ %.21, %378 ], [ %386, %385 ]
  %382 = load i8, ptr %.22, align 1, !tbaa !23
  switch i8 %382, label %383 [
    i8 43, label %.critedge18
    i8 0, label %.critedge18
  ]

383:                                              ; preds = %381
  %384 = icmp ult ptr %.22, %12
  br i1 %384, label %385, label %.critedge18

385:                                              ; preds = %383
  %386 = getelementptr inbounds i8, ptr %.22, i64 1
  br label %381, !llvm.loop !67

.critedge18:                                      ; preds = %381, %381, %383, %375
  %.23 = phi ptr [ %.21, %375 ], [ %.22, %383 ], [ %.22, %381 ], [ %.22, %381 ]
  %387 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.23, ptr noundef nonnull dereferenceable(1) @.str.55, i64 noundef 3) #8
  %388 = icmp eq i32 %387, 0
  br i1 %388, label %389, label %426

389:                                              ; preds = %.critedge18
  %390 = load double, ptr %31, align 8, !tbaa !68
  %391 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.83, double noundef %390) #9
  %392 = load double, ptr %30, align 8, !tbaa !61
  %393 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.84, double noundef %392) #9
  %394 = load ptr, ptr %32, align 8, !tbaa !69
  %395 = load ptr, ptr %33, align 8, !tbaa !70
  %396 = load i32, ptr %395, align 4, !tbaa !39
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds double, ptr %394, i64 %397
  %399 = load double, ptr %398, align 8, !tbaa !28
  %400 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.85, double noundef %399) #9
  %401 = load double, ptr %27, align 8, !tbaa !48
  %402 = load double, ptr %19, align 8, !tbaa !33
  %403 = call double @sqrt(double noundef %402) #9
  %404 = fmul double %401, %403
  %405 = load double, ptr %27, align 8, !tbaa !48
  %406 = load double, ptr %17, align 8, !tbaa !25
  %407 = call double @sqrt(double noundef %406) #9
  %408 = fmul double %405, %407
  %409 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.86, double noundef %401, double noundef %404, double noundef %408) #9
  %410 = load double, ptr %14, align 8, !tbaa !21
  %411 = load double, ptr %15, align 8, !tbaa !22
  %412 = fdiv double %410, %411
  %413 = call double @sqrt(double noundef %412) #9
  %414 = load double, ptr %15, align 8, !tbaa !22
  %415 = call double @sqrt(double noundef %414) #9
  %416 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.87, double noundef %413, double noundef %415) #9
  br label %417

417:                                              ; preds = %421, %389
  %.24 = phi ptr [ %.23, %389 ], [ %422, %421 ]
  %418 = load i8, ptr %.24, align 1, !tbaa !23
  switch i8 %418, label %419 [
    i8 43, label %.critedge20
    i8 0, label %.critedge20
  ]

419:                                              ; preds = %417
  %420 = icmp ult ptr %.24, %12
  br i1 %420, label %421, label %.critedge20

421:                                              ; preds = %419
  %422 = getelementptr inbounds i8, ptr %.24, i64 1
  br label %417, !llvm.loop !71

.critedge20:                                      ; preds = %417, %417, %419
  %423 = icmp eq i8 %418, 43
  %424 = select i1 %423, i32 9, i32 10
  %425 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %424) #9
  br label %426

426:                                              ; preds = %.critedge20, %.critedge18
  %.25 = phi ptr [ %.24, %.critedge20 ], [ %.23, %.critedge18 ]
  %427 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.25, ptr noundef nonnull dereferenceable(1) @.str.88, i64 noundef 6) #8
  %428 = icmp eq i32 %427, 0
  br i1 %428, label %432, label %429

429:                                              ; preds = %426
  %430 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.25, ptr noundef nonnull dereferenceable(1) @.str.89, i64 noundef 6) #8
  %431 = icmp eq i32 %430, 0
  br i1 %431, label %432, label %449

432:                                              ; preds = %429, %426
  %433 = load ptr, ptr %32, align 8, !tbaa !69
  %434 = load ptr, ptr %33, align 8, !tbaa !70
  %435 = load i32, ptr %434, align 4, !tbaa !39
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds double, ptr %433, i64 %436
  %438 = load double, ptr %437, align 8, !tbaa !28
  %439 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.85, double noundef %438) #9
  br label %440

440:                                              ; preds = %444, %432
  %.26 = phi ptr [ %.25, %432 ], [ %445, %444 ]
  %441 = load i8, ptr %.26, align 1, !tbaa !23
  switch i8 %441, label %442 [
    i8 43, label %.critedge22
    i8 0, label %.critedge22
  ]

442:                                              ; preds = %440
  %443 = icmp ult ptr %.26, %12
  br i1 %443, label %444, label %.critedge22

444:                                              ; preds = %442
  %445 = getelementptr inbounds i8, ptr %.26, i64 1
  br label %440, !llvm.loop !72

.critedge22:                                      ; preds = %440, %440, %442
  %446 = icmp eq i8 %441, 43
  %447 = select i1 %446, i32 9, i32 10
  %448 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %447) #9
  br label %449

449:                                              ; preds = %.critedge22, %429
  %.27 = phi ptr [ %.26, %.critedge22 ], [ %.25, %429 ]
  %450 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.27, ptr noundef nonnull dereferenceable(1) @.str.90, i64 noundef 9) #8
  %451 = icmp eq i32 %450, 0
  br i1 %451, label %452, label %466

452:                                              ; preds = %449
  %453 = load ptr, ptr %34, align 8, !tbaa !73
  %454 = getelementptr inbounds double, ptr %453, i64 %35
  %455 = load double, ptr %454, align 8, !tbaa !28
  %456 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.85, double noundef %455) #9
  br label %457

457:                                              ; preds = %461, %452
  %.28 = phi ptr [ %.27, %452 ], [ %462, %461 ]
  %458 = load i8, ptr %.28, align 1, !tbaa !23
  switch i8 %458, label %459 [
    i8 43, label %.critedge24
    i8 0, label %.critedge24
  ]

459:                                              ; preds = %457
  %460 = icmp ult ptr %.28, %12
  br i1 %460, label %461, label %.critedge24

461:                                              ; preds = %459
  %462 = getelementptr inbounds i8, ptr %.28, i64 1
  br label %457, !llvm.loop !74

.critedge24:                                      ; preds = %457, %457, %459
  %463 = icmp eq i8 %458, 43
  %464 = select i1 %463, i32 9, i32 10
  %465 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %464) #9
  br label %466

466:                                              ; preds = %.critedge24, %449
  %.29 = phi ptr [ %.28, %.critedge24 ], [ %.27, %449 ]
  %467 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.29, ptr noundef nonnull dereferenceable(1) @.str.91, i64 noundef 7) #8
  %468 = icmp eq i32 %467, 0
  br i1 %468, label %469, label %490

469:                                              ; preds = %466
  %470 = load ptr, ptr %32, align 8, !tbaa !69
  %471 = load ptr, ptr %33, align 8, !tbaa !70
  %472 = load i32, ptr %36, align 8, !tbaa !75
  %473 = sdiv i32 %472, 2
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds i32, ptr %471, i64 %474
  %476 = load i32, ptr %475, align 4, !tbaa !39
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds double, ptr %470, i64 %477
  %479 = load double, ptr %478, align 8, !tbaa !28
  %480 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.85, double noundef %479) #9
  br label %481

481:                                              ; preds = %485, %469
  %.30 = phi ptr [ %.29, %469 ], [ %486, %485 ]
  %482 = load i8, ptr %.30, align 1, !tbaa !23
  switch i8 %482, label %483 [
    i8 43, label %.critedge26
    i8 0, label %.critedge26
  ]

483:                                              ; preds = %481
  %484 = icmp ult ptr %.30, %12
  br i1 %484, label %485, label %.critedge26

485:                                              ; preds = %483
  %486 = getelementptr inbounds i8, ptr %.30, i64 1
  br label %481, !llvm.loop !76

.critedge26:                                      ; preds = %481, %481, %483
  %487 = icmp eq i8 %482, 43
  %488 = select i1 %487, i32 9, i32 10
  %489 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %488) #9
  br label %490

490:                                              ; preds = %.critedge26, %466
  %.31 = phi ptr [ %.30, %.critedge26 ], [ %.29, %466 ]
  %491 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.31, ptr noundef nonnull dereferenceable(1) @.str.92, i64 noundef 6) #8
  %492 = icmp eq i32 %491, 0
  br i1 %492, label %493, label %514

493:                                              ; preds = %490
  %494 = load ptr, ptr %32, align 8, !tbaa !69
  %495 = load ptr, ptr %33, align 8, !tbaa !70
  %496 = load i32, ptr %36, align 8, !tbaa !75
  %497 = sext i32 %496 to i64
  %498 = getelementptr i32, ptr %495, i64 %497
  %499 = getelementptr i8, ptr %498, i64 -4
  %500 = load i32, ptr %499, align 4, !tbaa !39
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds double, ptr %494, i64 %501
  %503 = load double, ptr %502, align 8, !tbaa !28
  %504 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.85, double noundef %503) #9
  br label %505

505:                                              ; preds = %509, %493
  %.32 = phi ptr [ %.31, %493 ], [ %510, %509 ]
  %506 = load i8, ptr %.32, align 1, !tbaa !23
  switch i8 %506, label %507 [
    i8 43, label %.critedge28
    i8 0, label %.critedge28
  ]

507:                                              ; preds = %505
  %508 = icmp ult ptr %.32, %12
  br i1 %508, label %509, label %.critedge28

509:                                              ; preds = %507
  %510 = getelementptr inbounds i8, ptr %.32, i64 1
  br label %505, !llvm.loop !77

.critedge28:                                      ; preds = %505, %505, %507
  %511 = icmp eq i8 %506, 43
  %512 = select i1 %511, i32 9, i32 10
  %513 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %512) #9
  br label %514

514:                                              ; preds = %.critedge28, %490
  %.33 = phi ptr [ %.32, %.critedge28 ], [ %.31, %490 ]
  %515 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.33, ptr noundef nonnull dereferenceable(1) @.str.93, i64 noundef 8) #8
  %516 = icmp eq i32 %515, 0
  br i1 %516, label %520, label %517

517:                                              ; preds = %514
  %518 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.33, ptr noundef nonnull dereferenceable(1) @.str.94, i64 noundef 8) #8
  %519 = icmp eq i32 %518, 0
  br i1 %519, label %520, label %544

520:                                              ; preds = %517, %514
  br i1 %21, label %.lr.ph831.preheader, label %.preheader774.preheader

.lr.ph831.preheader:                              ; preds = %520
  %521 = load ptr, ptr %32, align 8, !tbaa !69
  %522 = load ptr, ptr %33, align 8, !tbaa !70
  %523 = load i32, ptr %522, align 4, !tbaa !39
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds double, ptr %521, i64 %524
  %526 = load double, ptr %525, align 8, !tbaa !28
  %527 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.95, ptr noundef nonnull @.str.72, double noundef %526) #9
  br i1 %exitcond962.peel.not, label %.preheader774.preheader, label %.lr.ph831

.lr.ph831:                                        ; preds = %.lr.ph831.preheader, %.lr.ph831
  %indvars.iv958 = phi i64 [ %indvars.iv.next959, %.lr.ph831 ], [ 1, %.lr.ph831.preheader ]
  %528 = load ptr, ptr %32, align 8, !tbaa !69
  %529 = load ptr, ptr %33, align 8, !tbaa !70
  %530 = getelementptr inbounds i32, ptr %529, i64 %indvars.iv958
  %531 = load i32, ptr %530, align 4, !tbaa !39
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds double, ptr %528, i64 %532
  %534 = load double, ptr %533, align 8, !tbaa !28
  %535 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.95, ptr noundef nonnull @.str.73, double noundef %534) #9
  %indvars.iv.next959 = add nuw nsw i64 %indvars.iv958, 1
  %exitcond962.not = icmp eq i64 %indvars.iv.next959, %29
  br i1 %exitcond962.not, label %.preheader774.preheader, label %.lr.ph831, !llvm.loop !78

.preheader774.preheader:                          ; preds = %.lr.ph831, %.lr.ph831.preheader, %520
  br label %.preheader774

.preheader774:                                    ; preds = %.preheader774.preheader, %539
  %.34 = phi ptr [ %540, %539 ], [ %.33, %.preheader774.preheader ]
  %536 = load i8, ptr %.34, align 1, !tbaa !23
  switch i8 %536, label %537 [
    i8 43, label %.critedge30
    i8 0, label %.critedge30
  ]

537:                                              ; preds = %.preheader774
  %538 = icmp ult ptr %.34, %12
  br i1 %538, label %539, label %.critedge30

539:                                              ; preds = %537
  %540 = getelementptr inbounds i8, ptr %.34, i64 1
  br label %.preheader774, !llvm.loop !79

.critedge30:                                      ; preds = %.preheader774, %.preheader774, %537
  %541 = icmp eq i8 %536, 43
  %542 = select i1 %541, i32 9, i32 10
  %543 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %542) #9
  br label %544

544:                                              ; preds = %.critedge30, %517
  %.35 = phi ptr [ %.34, %.critedge30 ], [ %.33, %517 ]
  %545 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.35, ptr noundef nonnull dereferenceable(1) @.str.96, i64 noundef 3) #8
  %546 = icmp eq i32 %545, 0
  br i1 %546, label %547, label %559

547:                                              ; preds = %544
  %548 = load double, ptr %31, align 8, !tbaa !68
  %549 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.77, double noundef %548) #9
  br label %550

550:                                              ; preds = %554, %547
  %.36 = phi ptr [ %.35, %547 ], [ %555, %554 ]
  %551 = load i8, ptr %.36, align 1, !tbaa !23
  switch i8 %551, label %552 [
    i8 43, label %.critedge32
    i8 0, label %.critedge32
  ]

552:                                              ; preds = %550
  %553 = icmp ult ptr %.36, %12
  br i1 %553, label %554, label %.critedge32

554:                                              ; preds = %552
  %555 = getelementptr inbounds i8, ptr %.36, i64 1
  br label %550, !llvm.loop !80

.critedge32:                                      ; preds = %550, %550, %552
  %556 = icmp eq i8 %551, 43
  %557 = select i1 %556, i32 9, i32 10
  %558 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %557) #9
  br label %559

559:                                              ; preds = %.critedge32, %544
  %.37 = phi ptr [ %.36, %.critedge32 ], [ %.35, %544 ]
  %560 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.37, ptr noundef nonnull dereferenceable(1) @.str.97, i64 noundef 4) #8
  %561 = icmp eq i32 %560, 0
  br i1 %561, label %562, label %574

562:                                              ; preds = %559
  %563 = load double, ptr %31, align 8, !tbaa !68
  %564 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.77, double noundef %563) #9
  br label %565

565:                                              ; preds = %569, %562
  %.38 = phi ptr [ %.37, %562 ], [ %570, %569 ]
  %566 = load i8, ptr %.38, align 1, !tbaa !23
  switch i8 %566, label %567 [
    i8 43, label %.critedge34
    i8 0, label %.critedge34
  ]

567:                                              ; preds = %565
  %568 = icmp ult ptr %.38, %12
  br i1 %568, label %569, label %.critedge34

569:                                              ; preds = %567
  %570 = getelementptr inbounds i8, ptr %.38, i64 1
  br label %565, !llvm.loop !81

.critedge34:                                      ; preds = %565, %565, %567
  %571 = icmp eq i8 %566, 43
  %572 = select i1 %571, i32 9, i32 10
  %573 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %572) #9
  br label %574

574:                                              ; preds = %.critedge34, %559
  %.39 = phi ptr [ %.38, %.critedge34 ], [ %.37, %559 ]
  %575 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.39, ptr noundef nonnull dereferenceable(1) @.str.98, i64 noundef 5) #8
  %576 = icmp eq i32 %575, 0
  br i1 %576, label %577, label %589

577:                                              ; preds = %574
  %578 = load double, ptr %27, align 8, !tbaa !48
  %579 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.99, double noundef %578) #9
  br label %580

580:                                              ; preds = %584, %577
  %.40 = phi ptr [ %.39, %577 ], [ %585, %584 ]
  %581 = load i8, ptr %.40, align 1, !tbaa !23
  switch i8 %581, label %582 [
    i8 43, label %.critedge36
    i8 0, label %.critedge36
  ]

582:                                              ; preds = %580
  %583 = icmp ult ptr %.40, %12
  br i1 %583, label %584, label %.critedge36

584:                                              ; preds = %582
  %585 = getelementptr inbounds i8, ptr %.40, i64 1
  br label %580, !llvm.loop !82

.critedge36:                                      ; preds = %580, %580, %582
  %586 = icmp eq i8 %581, 43
  %587 = select i1 %586, i32 9, i32 10
  %588 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %587) #9
  br label %589

589:                                              ; preds = %.critedge36, %574
  %.41 = phi ptr [ %.40, %.critedge36 ], [ %.39, %574 ]
  %590 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.41, ptr noundef nonnull dereferenceable(1) @.str.100, i64 noundef 5) #8
  %591 = icmp eq i32 %590, 0
  br i1 %591, label %592, label %605

592:                                              ; preds = %589
  %593 = load double, ptr %17, align 8, !tbaa !25
  %594 = call double @sqrt(double noundef %593) #9
  %595 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.99, double noundef %594) #9
  br label %596

596:                                              ; preds = %600, %592
  %.42 = phi ptr [ %.41, %592 ], [ %601, %600 ]
  %597 = load i8, ptr %.42, align 1, !tbaa !23
  switch i8 %597, label %598 [
    i8 43, label %.critedge38
    i8 0, label %.critedge38
  ]

598:                                              ; preds = %596
  %599 = icmp ult ptr %.42, %12
  br i1 %599, label %600, label %.critedge38

600:                                              ; preds = %598
  %601 = getelementptr inbounds i8, ptr %.42, i64 1
  br label %596, !llvm.loop !83

.critedge38:                                      ; preds = %596, %596, %598
  %602 = icmp eq i8 %597, 43
  %603 = select i1 %602, i32 9, i32 10
  %604 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %603) #9
  br label %605

605:                                              ; preds = %.critedge38, %589
  %.43 = phi ptr [ %.42, %.critedge38 ], [ %.41, %589 ]
  %606 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.43, ptr noundef nonnull dereferenceable(1) @.str.101, i64 noundef 5) #8
  %607 = icmp eq i32 %606, 0
  br i1 %607, label %608, label %621

608:                                              ; preds = %605
  %609 = load double, ptr %19, align 8, !tbaa !33
  %610 = call double @sqrt(double noundef %609) #9
  %611 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.99, double noundef %610) #9
  br label %612

612:                                              ; preds = %616, %608
  %.44 = phi ptr [ %.43, %608 ], [ %617, %616 ]
  %613 = load i8, ptr %.44, align 1, !tbaa !23
  switch i8 %613, label %614 [
    i8 43, label %.critedge40
    i8 0, label %.critedge40
  ]

614:                                              ; preds = %612
  %615 = icmp ult ptr %.44, %12
  br i1 %615, label %616, label %.critedge40

616:                                              ; preds = %614
  %617 = getelementptr inbounds i8, ptr %.44, i64 1
  br label %612, !llvm.loop !84

.critedge40:                                      ; preds = %612, %612, %614
  %618 = icmp eq i8 %613, 43
  %619 = select i1 %618, i32 9, i32 10
  %620 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %619) #9
  br label %621

621:                                              ; preds = %.critedge40, %605
  %.45 = phi ptr [ %.44, %.critedge40 ], [ %.43, %605 ]
  %622 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.45, ptr noundef nonnull dereferenceable(1) @.str.102, i64 noundef 6) #8
  %623 = icmp eq i32 %622, 0
  br i1 %623, label %624, label %637

624:                                              ; preds = %621
  %625 = load double, ptr %15, align 8, !tbaa !22
  %626 = call double @sqrt(double noundef %625) #9
  %627 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.99, double noundef %626) #9
  br label %628

628:                                              ; preds = %632, %624
  %.46 = phi ptr [ %.45, %624 ], [ %633, %632 ]
  %629 = load i8, ptr %.46, align 1, !tbaa !23
  switch i8 %629, label %630 [
    i8 43, label %.critedge42
    i8 0, label %.critedge42
  ]

630:                                              ; preds = %628
  %631 = icmp ult ptr %.46, %12
  br i1 %631, label %632, label %.critedge42

632:                                              ; preds = %630
  %633 = getelementptr inbounds i8, ptr %.46, i64 1
  br label %628, !llvm.loop !85

.critedge42:                                      ; preds = %628, %628, %630
  %634 = icmp eq i8 %629, 43
  %635 = select i1 %634, i32 9, i32 10
  %636 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %635) #9
  br label %637

637:                                              ; preds = %.critedge42, %621
  %.47 = phi ptr [ %.46, %.critedge42 ], [ %.45, %621 ]
  %lhsc750 = load i8, ptr %.47, align 1
  %638 = icmp eq i8 %lhsc750, %rhsc751
  br i1 %638, label %639, label %646

639:                                              ; preds = %637
  %640 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.103) #9
  %641 = getelementptr inbounds i8, ptr %.47, i64 1
  %642 = load i8, ptr %641, align 1, !tbaa !23
  %643 = icmp eq i8 %642, 43
  %644 = select i1 %643, i32 9, i32 10
  %645 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %644) #9
  br label %646

646:                                              ; preds = %639, %637
  %.48 = phi ptr [ %641, %639 ], [ %.47, %637 ]
  %647 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.48, ptr noundef nonnull dereferenceable(1) @.str.104, i64 noundef 6) #8
  %648 = icmp eq i32 %647, 0
  br i1 %648, label %655, label %649

649:                                              ; preds = %646
  %650 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.48, ptr noundef nonnull dereferenceable(1) @.str.105, i64 noundef 5) #8
  %651 = icmp eq i32 %650, 0
  br i1 %651, label %655, label %652

652:                                              ; preds = %649
  %653 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.48, ptr noundef nonnull dereferenceable(1) @.str.106, i64 noundef 12) #8
  %654 = icmp eq i32 %653, 0
  br i1 %654, label %655, label %667

655:                                              ; preds = %652, %649, %646
  %656 = load i32, ptr %36, align 8, !tbaa !75
  %657 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.60, i32 noundef %656) #9
  br label %658

658:                                              ; preds = %662, %655
  %.49 = phi ptr [ %.48, %655 ], [ %663, %662 ]
  %659 = load i8, ptr %.49, align 1, !tbaa !23
  switch i8 %659, label %660 [
    i8 43, label %.critedge44
    i8 0, label %.critedge44
  ]

660:                                              ; preds = %658
  %661 = icmp ult ptr %.49, %12
  br i1 %661, label %662, label %.critedge44

662:                                              ; preds = %660
  %663 = getelementptr inbounds i8, ptr %.49, i64 1
  br label %658, !llvm.loop !86

.critedge44:                                      ; preds = %658, %658, %660
  %664 = icmp eq i8 %659, 43
  %665 = select i1 %664, i32 9, i32 10
  %666 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %665) #9
  br label %667

667:                                              ; preds = %.critedge44, %652
  %.50 = phi ptr [ %.49, %.critedge44 ], [ %.48, %652 ]
  %lhsc754 = load i8, ptr %.50, align 1
  %668 = icmp eq i8 %lhsc754, %rhsc755
  br i1 %668, label %669, label %676

669:                                              ; preds = %667
  %670 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.60, i32 noundef %9) #9
  %671 = getelementptr inbounds i8, ptr %.50, i64 1
  %672 = load i8, ptr %671, align 1, !tbaa !23
  %673 = icmp eq i8 %672, 43
  %674 = select i1 %673, i32 9, i32 10
  %675 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %674) #9
  br label %676

676:                                              ; preds = %669, %667
  %.51 = phi ptr [ %671, %669 ], [ %.50, %667 ]
  %677 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.51, ptr noundef nonnull dereferenceable(1) @.str.108, i64 noundef 6) #8
  %678 = icmp eq i32 %677, 0
  br i1 %678, label %679, label %.critedge46

679:                                              ; preds = %676
  %680 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.109, i32 noundef %9) #9
  %681 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.110) #9
  call void @cmaes_WriteToFilePtr(ptr noundef %0, ptr noundef nonnull @.str.111, ptr noundef %2)
  %682 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.112) #9
  br i1 %21, label %.lr.ph834, label %._crit_edge835.thread

._crit_edge835.thread:                            ; preds = %679
  %683 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.115) #9
  br label %._crit_edge839

.lr.ph834:                                        ; preds = %679, %.lr.ph834
  %indvars.iv964 = phi i64 [ %indvars.iv.next965, %.lr.ph834 ], [ 0, %679 ]
  %684 = load ptr, ptr %37, align 8, !tbaa !87
  %685 = getelementptr inbounds double, ptr %684, i64 %indvars.iv964
  %686 = load double, ptr %685, align 8, !tbaa !28
  %687 = icmp eq i64 %indvars.iv964, %42
  %688 = select i1 %687, ptr @.str.114, ptr @.str.73
  %689 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.113, double noundef %686, ptr noundef nonnull %688) #9
  %indvars.iv.next965 = add nuw nsw i64 %indvars.iv964, 1
  %exitcond968.not = icmp eq i64 %indvars.iv.next965, %29
  br i1 %exitcond968.not, label %._crit_edge835, label %.lr.ph834, !llvm.loop !88

._crit_edge835:                                   ; preds = %.lr.ph834
  %690 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.115) #9
  br i1 %21, label %.lr.ph838, label %._crit_edge839

.lr.ph838:                                        ; preds = %._crit_edge835, %.lr.ph838
  %indvars.iv969 = phi i64 [ %indvars.iv.next970, %.lr.ph838 ], [ 0, %._crit_edge835 ]
  %691 = load ptr, ptr %38, align 8, !tbaa !89
  %692 = getelementptr inbounds double, ptr %691, i64 %indvars.iv969
  %693 = load double, ptr %692, align 8, !tbaa !28
  %694 = icmp eq i64 %indvars.iv969, %42
  %695 = select i1 %694, ptr @.str.114, ptr @.str.73
  %696 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.113, double noundef %693, ptr noundef nonnull %695) #9
  %indvars.iv.next970 = add nuw nsw i64 %indvars.iv969, 1
  %exitcond973.not = icmp eq i64 %indvars.iv.next970, %29
  br i1 %exitcond973.not, label %._crit_edge839, label %.lr.ph838, !llvm.loop !90

._crit_edge839:                                   ; preds = %.lr.ph838, %._crit_edge835.thread, %._crit_edge835
  %697 = load double, ptr %27, align 8, !tbaa !48
  %698 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.116, double noundef %697) #9
  %699 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.117) #9
  call void @cmaes_WriteToFilePtr(ptr noundef %0, ptr noundef nonnull @.str.64, ptr noundef %2)
  br label %700

700:                                              ; preds = %704, %._crit_edge839
  %.52 = phi ptr [ %.51, %._crit_edge839 ], [ %705, %704 ]
  %701 = load i8, ptr %.52, align 1, !tbaa !23
  switch i8 %701, label %702 [
    i8 43, label %.critedge46
    i8 0, label %.critedge46
  ]

702:                                              ; preds = %700
  %703 = icmp ult ptr %.52, %12
  br i1 %703, label %704, label %.critedge46

704:                                              ; preds = %702
  %705 = getelementptr inbounds i8, ptr %.52, i64 1
  br label %700, !llvm.loop !91

.critedge46:                                      ; preds = %700, %700, %702, %676
  %.53 = phi ptr [ %.51, %676 ], [ %.52, %702 ], [ %.52, %700 ], [ %.52, %700 ]
  %706 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.53, ptr noundef nonnull dereferenceable(1) @.str.118, i64 noundef 5) #8
  %707 = icmp eq i32 %706, 0
  br i1 %707, label %.preheader773, label %733

.preheader773:                                    ; preds = %.critedge46
  br i1 %21, label %.lr.ph841.preheader, label %.preheader772.preheader

.lr.ph841.preheader:                              ; preds = %.preheader773
  %708 = load ptr, ptr %39, align 8, !tbaa !92
  %709 = load ptr, ptr %33, align 8, !tbaa !70
  %710 = load i32, ptr %709, align 4, !tbaa !39
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds ptr, ptr %708, i64 %711
  %713 = load ptr, ptr %712, align 8, !tbaa !27
  %714 = load double, ptr %713, align 8, !tbaa !28
  %715 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.72, double noundef %714) #9
  br i1 %exitcond978.peel.not, label %.preheader772.preheader, label %.lr.ph841

.lr.ph841:                                        ; preds = %.lr.ph841.preheader, %.lr.ph841
  %indvars.iv974 = phi i64 [ %indvars.iv.next975, %.lr.ph841 ], [ 1, %.lr.ph841.preheader ]
  %716 = load ptr, ptr %39, align 8, !tbaa !92
  %717 = load ptr, ptr %33, align 8, !tbaa !70
  %718 = load i32, ptr %717, align 4, !tbaa !39
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds ptr, ptr %716, i64 %719
  %721 = load ptr, ptr %720, align 8, !tbaa !27
  %722 = getelementptr inbounds double, ptr %721, i64 %indvars.iv974
  %723 = load double, ptr %722, align 8, !tbaa !28
  %724 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.73, double noundef %723) #9
  %indvars.iv.next975 = add nuw nsw i64 %indvars.iv974, 1
  %exitcond978.not = icmp eq i64 %indvars.iv.next975, %29
  br i1 %exitcond978.not, label %.preheader772.preheader, label %.lr.ph841, !llvm.loop !93

.preheader772.preheader:                          ; preds = %.lr.ph841, %.lr.ph841.preheader, %.preheader773
  br label %.preheader772

.preheader772:                                    ; preds = %.preheader772.preheader, %728
  %.54 = phi ptr [ %729, %728 ], [ %.53, %.preheader772.preheader ]
  %725 = load i8, ptr %.54, align 1, !tbaa !23
  switch i8 %725, label %726 [
    i8 43, label %.critedge48
    i8 0, label %.critedge48
  ]

726:                                              ; preds = %.preheader772
  %727 = icmp ult ptr %.54, %12
  br i1 %727, label %728, label %.critedge48

728:                                              ; preds = %726
  %729 = getelementptr inbounds i8, ptr %.54, i64 1
  br label %.preheader772, !llvm.loop !94

.critedge48:                                      ; preds = %.preheader772, %.preheader772, %726
  %730 = icmp eq i8 %725, 43
  %731 = select i1 %730, i32 9, i32 10
  %732 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %731) #9
  br label %733

733:                                              ; preds = %.critedge48, %.critedge46
  %.55 = phi ptr [ %.54, %.critedge48 ], [ %.53, %.critedge46 ]
  %734 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.55, ptr noundef nonnull dereferenceable(1) @.str.111, i64 noundef 5) #8
  %735 = icmp eq i32 %734, 0
  br i1 %735, label %.preheader771, label %751

.preheader771:                                    ; preds = %733
  br i1 %21, label %.lr.ph843.preheader, label %.preheader770.preheader

.lr.ph843.preheader:                              ; preds = %.preheader771
  %736 = load ptr, ptr %40, align 8, !tbaa !95
  %737 = load double, ptr %736, align 8, !tbaa !28
  %738 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.72, double noundef %737) #9
  br i1 %exitcond984.peel.not, label %.preheader770.preheader, label %.lr.ph843

.lr.ph843:                                        ; preds = %.lr.ph843.preheader, %.lr.ph843
  %indvars.iv980 = phi i64 [ %indvars.iv.next981, %.lr.ph843 ], [ 1, %.lr.ph843.preheader ]
  %739 = load ptr, ptr %40, align 8, !tbaa !95
  %740 = getelementptr inbounds double, ptr %739, i64 %indvars.iv980
  %741 = load double, ptr %740, align 8, !tbaa !28
  %742 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.73, double noundef %741) #9
  %indvars.iv.next981 = add nuw nsw i64 %indvars.iv980, 1
  %exitcond984.not = icmp eq i64 %indvars.iv.next981, %29
  br i1 %exitcond984.not, label %.preheader770.preheader, label %.lr.ph843, !llvm.loop !96

.preheader770.preheader:                          ; preds = %.lr.ph843, %.lr.ph843.preheader, %.preheader771
  br label %.preheader770

.preheader770:                                    ; preds = %.preheader770.preheader, %746
  %.56 = phi ptr [ %747, %746 ], [ %.55, %.preheader770.preheader ]
  %743 = load i8, ptr %.56, align 1, !tbaa !23
  switch i8 %743, label %744 [
    i8 43, label %.critedge50
    i8 0, label %.critedge50
  ]

744:                                              ; preds = %.preheader770
  %745 = icmp ult ptr %.56, %12
  br i1 %745, label %746, label %.critedge50

746:                                              ; preds = %744
  %747 = getelementptr inbounds i8, ptr %.56, i64 1
  br label %.preheader770, !llvm.loop !97

.critedge50:                                      ; preds = %.preheader770, %.preheader770, %744
  %748 = icmp eq i8 %743, 43
  %749 = select i1 %748, i32 9, i32 10
  %750 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.58, i32 noundef %749) #9
  br label %751

751:                                              ; preds = %.critedge50, %733
  %.57 = phi ptr [ %.56, %.critedge50 ], [ %.55, %733 ]
  %752 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %.57, ptr noundef nonnull dereferenceable(1) @.str.39, i64 noundef 3) #8
  %753 = icmp eq i32 %752, 0
  br i1 %753, label %754, label %950

754:                                              ; preds = %751
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #9
  %755 = call i64 @time(ptr noundef null) #9
  store i64 %755, ptr %4, align 8, !tbaa !98
  %756 = call ptr @localtime(ptr noundef nonnull %4) #9
  %757 = call ptr @asctime(ptr noundef %756) #9
  %758 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.119, ptr noundef %757) #9
  %759 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.120, i32 noundef %9) #9
  %760 = load i32, ptr %41, align 8, !tbaa !99
  %761 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.121, i32 noundef %760) #9
  %762 = load double, ptr %30, align 8, !tbaa !61
  %763 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.122, double noundef %762) #9
  %764 = load double, ptr %25, align 8, !tbaa !44
  %765 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.123, double noundef %764) #9
  %766 = load ptr, ptr %39, align 8, !tbaa !92
  %767 = load ptr, ptr %33, align 8, !tbaa !70
  %768 = load i32, ptr %767, align 4, !tbaa !39
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds ptr, ptr %766, i64 %769
  %771 = load ptr, ptr %770, align 8, !tbaa !27
  %772 = getelementptr inbounds double, ptr %771, i64 %35
  %773 = load double, ptr %772, align 8, !tbaa !28
  %774 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.124, double noundef %773) #9
  %775 = load double, ptr %27, align 8, !tbaa !48
  %776 = load double, ptr %19, align 8, !tbaa !33
  %777 = call double @sqrt(double noundef %776) #9
  %778 = fmul double %775, %777
  %779 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.125, double noundef %778) #9
  %780 = load double, ptr %27, align 8, !tbaa !48
  %781 = load double, ptr %17, align 8, !tbaa !25
  %782 = call double @sqrt(double noundef %781) #9
  %783 = fmul double %780, %782
  %784 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.126, double noundef %783) #9
  %785 = load double, ptr %27, align 8, !tbaa !48
  %786 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.116, double noundef %785) #9
  %787 = load ptr, ptr %20, align 8, !tbaa !37
  %788 = call double @rgdouMax(ptr noundef %787, i32 noundef %9)
  %789 = load ptr, ptr %20, align 8, !tbaa !37
  %790 = call double @rgdouMin(ptr noundef %789, i32 noundef %9)
  %791 = fdiv double %788, %790
  %792 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.127, double noundef %791) #9
  %793 = load ptr, ptr %34, align 8, !tbaa !73
  %794 = getelementptr double, ptr %793, i64 %35
  %795 = getelementptr i8, ptr %794, i64 8
  %796 = load double, ptr %795, align 8, !tbaa !28
  %797 = load double, ptr %794, align 8, !tbaa !28
  %798 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.128, double noundef %796, double noundef %797) #9
  br i1 %21, label %.lr.ph846, label %._crit_edge851.thread.critedge

.lr.ph846:                                        ; preds = %754, %.lr.ph846
  %indvars.iv986 = phi i64 [ %indvars.iv.next987, %.lr.ph846 ], [ 0, %754 ]
  %799 = load ptr, ptr %34, align 8, !tbaa !73
  %800 = getelementptr inbounds double, ptr %799, i64 %indvars.iv986
  %801 = load double, ptr %800, align 8, !tbaa !28
  %802 = trunc nuw nsw i64 %indvars.iv986 to i32
  %803 = urem i32 %802, 5
  %804 = icmp eq i32 %803, 4
  %805 = icmp eq i64 %indvars.iv986, %42
  %806 = select i1 %804, i1 true, i1 %805
  %807 = select i1 %806, i32 10, i32 32
  %808 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.129, double noundef %801, i32 noundef %807) #9
  %indvars.iv.next987 = add nuw nsw i64 %indvars.iv986, 1
  %exitcond990.not = icmp eq i64 %indvars.iv.next987, %29
  br i1 %exitcond990.not, label %._crit_edge847, label %.lr.ph846, !llvm.loop !100

._crit_edge847:                                   ; preds = %.lr.ph846
  %809 = load ptr, ptr %39, align 8, !tbaa !92
  %810 = load ptr, ptr %33, align 8, !tbaa !70
  %811 = load i32, ptr %810, align 4, !tbaa !39
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds ptr, ptr %809, i64 %812
  %814 = load ptr, ptr %813, align 8, !tbaa !27
  %815 = getelementptr inbounds double, ptr %814, i64 %35
  %816 = load double, ptr %815, align 8, !tbaa !28
  %817 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.130, double noundef %816) #9
  br i1 %21, label %.lr.ph850, label %._crit_edge851.thread

._crit_edge851.thread.critedge:                   ; preds = %754
  %818 = load ptr, ptr %39, align 8, !tbaa !92
  %819 = load ptr, ptr %33, align 8, !tbaa !70
  %820 = load i32, ptr %819, align 4, !tbaa !39
  %821 = sext i32 %820 to i64
  %822 = getelementptr inbounds ptr, ptr %818, i64 %821
  %823 = load ptr, ptr %822, align 8, !tbaa !27
  %824 = getelementptr inbounds double, ptr %823, i64 %35
  %825 = load double, ptr %824, align 8, !tbaa !28
  %826 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.130, double noundef %825) #9
  br label %._crit_edge851.thread

._crit_edge851.thread:                            ; preds = %._crit_edge851.thread.critedge, %._crit_edge847
  %827 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.131) #9
  br label %._crit_edge855.thread

.lr.ph850:                                        ; preds = %._crit_edge847, %.lr.ph850
  %indvars.iv991 = phi i64 [ %indvars.iv.next992, %.lr.ph850 ], [ 0, %._crit_edge847 ]
  %828 = load ptr, ptr %39, align 8, !tbaa !92
  %829 = load ptr, ptr %33, align 8, !tbaa !70
  %830 = load i32, ptr %829, align 4, !tbaa !39
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds ptr, ptr %828, i64 %831
  %833 = load ptr, ptr %832, align 8, !tbaa !27
  %834 = getelementptr inbounds double, ptr %833, i64 %indvars.iv991
  %835 = load double, ptr %834, align 8, !tbaa !28
  %836 = trunc nuw nsw i64 %indvars.iv991 to i32
  %837 = urem i32 %836, 5
  %838 = icmp eq i32 %837, 4
  %839 = icmp eq i64 %indvars.iv991, %42
  %840 = select i1 %838, i1 true, i1 %839
  %841 = select i1 %840, i32 10, i32 32
  %842 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.129, double noundef %835, i32 noundef %841) #9
  %indvars.iv.next992 = add nuw nsw i64 %indvars.iv991, 1
  %exitcond995.not = icmp eq i64 %indvars.iv.next992, %29
  br i1 %exitcond995.not, label %._crit_edge851, label %.lr.ph850, !llvm.loop !101

._crit_edge851:                                   ; preds = %.lr.ph850
  %843 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.131) #9
  br i1 %21, label %.lr.ph854, label %._crit_edge855.thread

.lr.ph854:                                        ; preds = %._crit_edge851, %.lr.ph854
  %indvars.iv996 = phi i64 [ %indvars.iv.next997, %.lr.ph854 ], [ 0, %._crit_edge851 ]
  %844 = load ptr, ptr %40, align 8, !tbaa !95
  %845 = getelementptr inbounds double, ptr %844, i64 %indvars.iv996
  %846 = load double, ptr %845, align 8, !tbaa !28
  %847 = trunc nuw nsw i64 %indvars.iv996 to i32
  %848 = urem i32 %847, 5
  %849 = icmp eq i32 %848, 4
  %850 = icmp eq i64 %indvars.iv996, %42
  %851 = select i1 %849, i1 true, i1 %850
  %852 = select i1 %851, i32 10, i32 32
  %853 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.129, double noundef %846, i32 noundef %852) #9
  %indvars.iv.next997 = add nuw nsw i64 %indvars.iv996, 1
  %exitcond1000.not = icmp eq i64 %indvars.iv.next997, %29
  br i1 %exitcond1000.not, label %._crit_edge855, label %.lr.ph854, !llvm.loop !102

._crit_edge855.thread:                            ; preds = %._crit_edge851.thread, %._crit_edge851
  %854 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.132) #9
  br label %._crit_edge859.thread

._crit_edge855:                                   ; preds = %.lr.ph854
  %855 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.132) #9
  br i1 %21, label %.lr.ph858, label %._crit_edge859.thread

.lr.ph858:                                        ; preds = %._crit_edge855, %.lr.ph858
  %indvars.iv1001 = phi i64 [ %indvars.iv.next1002, %.lr.ph858 ], [ 0, %._crit_edge855 ]
  %856 = load double, ptr %27, align 8, !tbaa !48
  %857 = load ptr, ptr %18, align 8, !tbaa !26
  %858 = getelementptr inbounds ptr, ptr %857, i64 %indvars.iv1001
  %859 = load ptr, ptr %858, align 8, !tbaa !27
  %860 = getelementptr inbounds double, ptr %859, i64 %indvars.iv1001
  %861 = load double, ptr %860, align 8, !tbaa !28
  %862 = call double @sqrt(double noundef %861) #9
  %863 = fmul double %856, %862
  %864 = trunc nuw nsw i64 %indvars.iv1001 to i32
  %865 = urem i32 %864, 5
  %866 = icmp eq i32 %865, 4
  %867 = icmp eq i64 %indvars.iv1001, %42
  %868 = select i1 %866, i1 true, i1 %867
  %869 = select i1 %868, i32 10, i32 32
  %870 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.129, double noundef %863, i32 noundef %869) #9
  %indvars.iv.next1002 = add nuw nsw i64 %indvars.iv1001, 1
  %exitcond1005.not = icmp eq i64 %indvars.iv.next1002, %29
  br i1 %exitcond1005.not, label %._crit_edge859, label %.lr.ph858, !llvm.loop !103

._crit_edge859.thread:                            ; preds = %._crit_edge855.thread, %._crit_edge855
  %871 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.133) #9
  %.pre10351037 = load ptr, ptr %28, align 8, !tbaa !52
  br label %._crit_edge863.thread

._crit_edge859:                                   ; preds = %.lr.ph858
  %872 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.133) #9
  %.pre1035 = load ptr, ptr %28, align 8, !tbaa !52
  br i1 %21, label %.lr.ph862, label %._crit_edge863.thread

.lr.ph862:                                        ; preds = %._crit_edge859
  %.pre10351093 = ptrtoint ptr %.pre1035 to i64
  %873 = load ptr, ptr %20, align 8, !tbaa !37
  %874 = ptrtoint ptr %873 to i64
  %875 = sub i64 %.pre10351093, %874
  %diff.check = icmp ult i64 %875, 32
  %or.cond1131 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond1131, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph862, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph862 ]
  %876 = getelementptr inbounds double, ptr %873, i64 %index
  %877 = getelementptr inbounds i8, ptr %876, i64 16
  %wide.load = load <2 x double>, ptr %876, align 8, !tbaa !28
  %wide.load1094 = load <2 x double>, ptr %877, align 8, !tbaa !28
  %878 = getelementptr inbounds double, ptr %.pre1035, i64 %index
  %879 = getelementptr inbounds i8, ptr %878, i64 16
  store <2 x double> %wide.load, ptr %878, align 8, !tbaa !28
  store <2 x double> %wide.load1094, ptr %879, align 8, !tbaa !28
  %index.next = add nuw i64 %index, 4
  %880 = icmp eq i64 %index.next, %n.vec
  br i1 %880, label %middle.block, label %vector.body, !llvm.loop !104

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge863, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph862
  %indvars.iv1006.ph = phi i64 [ 0, %.lr.ph862 ], [ %n.vec, %middle.block ]
  br i1 %lcmp.mod1172.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %indvars.iv1006.prol = phi i64 [ %indvars.iv.next1007.prol, %scalar.ph.prol ], [ %indvars.iv1006.ph, %scalar.ph.preheader ]
  %prol.iter1173 = phi i64 [ %prol.iter1173.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %881 = getelementptr inbounds double, ptr %873, i64 %indvars.iv1006.prol
  %882 = load double, ptr %881, align 8, !tbaa !28
  %883 = getelementptr inbounds double, ptr %.pre1035, i64 %indvars.iv1006.prol
  store double %882, ptr %883, align 8, !tbaa !28
  %indvars.iv.next1007.prol = add nuw nsw i64 %indvars.iv1006.prol, 1
  %prol.iter1173.next = add i64 %prol.iter1173, 1
  %prol.iter1173.cmp.not = icmp eq i64 %prol.iter1173.next, %xtraiter1171
  br i1 %prol.iter1173.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !105

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv1006.unr = phi i64 [ %indvars.iv1006.ph, %scalar.ph.preheader ], [ %indvars.iv.next1007.prol, %scalar.ph.prol ]
  %884 = sub nsw i64 %indvars.iv1006.ph, %29
  %885 = icmp ugt i64 %884, -4
  br i1 %885, label %._crit_edge863, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv1006 = phi i64 [ %indvars.iv.next1007.3, %scalar.ph ], [ %indvars.iv1006.unr, %scalar.ph.prol.loopexit ]
  %886 = getelementptr inbounds double, ptr %873, i64 %indvars.iv1006
  %887 = load double, ptr %886, align 8, !tbaa !28
  %888 = getelementptr inbounds double, ptr %.pre1035, i64 %indvars.iv1006
  store double %887, ptr %888, align 8, !tbaa !28
  %indvars.iv.next1007 = add nuw nsw i64 %indvars.iv1006, 1
  %889 = getelementptr inbounds double, ptr %873, i64 %indvars.iv.next1007
  %890 = load double, ptr %889, align 8, !tbaa !28
  %891 = getelementptr inbounds double, ptr %.pre1035, i64 %indvars.iv.next1007
  store double %890, ptr %891, align 8, !tbaa !28
  %indvars.iv.next1007.1 = add nuw nsw i64 %indvars.iv1006, 2
  %892 = getelementptr inbounds double, ptr %873, i64 %indvars.iv.next1007.1
  %893 = load double, ptr %892, align 8, !tbaa !28
  %894 = getelementptr inbounds double, ptr %.pre1035, i64 %indvars.iv.next1007.1
  store double %893, ptr %894, align 8, !tbaa !28
  %indvars.iv.next1007.2 = add nuw nsw i64 %indvars.iv1006, 3
  %895 = getelementptr inbounds double, ptr %873, i64 %indvars.iv.next1007.2
  %896 = load double, ptr %895, align 8, !tbaa !28
  %897 = getelementptr inbounds double, ptr %.pre1035, i64 %indvars.iv.next1007.2
  store double %896, ptr %897, align 8, !tbaa !28
  %indvars.iv.next1007.3 = add nuw nsw i64 %indvars.iv1006, 4
  %exitcond1010.not.3 = icmp eq i64 %indvars.iv.next1007.3, %29
  br i1 %exitcond1010.not.3, label %._crit_edge863, label %scalar.ph, !llvm.loop !106

._crit_edge863.thread:                            ; preds = %._crit_edge859.thread, %._crit_edge859
  %.pre10351038.ph = phi ptr [ %.pre1035, %._crit_edge859 ], [ %.pre10351037, %._crit_edge859.thread ]
  call void @qsort(ptr noundef %.pre10351038.ph, i64 noundef %29, i64 noundef 8, ptr noundef nonnull @SignOfDiff) #9
  br label %._crit_edge867

._crit_edge863:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  call void @qsort(ptr noundef nonnull %.pre1035, i64 noundef %29, i64 noundef 8, ptr noundef nonnull @SignOfDiff) #9
  br i1 %21, label %.lr.ph866, label %._crit_edge867

.lr.ph866:                                        ; preds = %._crit_edge863, %.lr.ph866
  %indvars.iv1011 = phi i64 [ %indvars.iv.next1012, %.lr.ph866 ], [ 0, %._crit_edge863 ]
  %898 = load double, ptr %27, align 8, !tbaa !48
  %899 = load ptr, ptr %28, align 8, !tbaa !52
  %900 = sub nsw i64 %43, %indvars.iv1011
  %901 = getelementptr inbounds double, ptr %899, i64 %900
  %902 = load double, ptr %901, align 8, !tbaa !28
  %903 = fmul double %898, %902
  %904 = trunc nuw nsw i64 %indvars.iv1011 to i32
  %905 = urem i32 %904, 5
  %906 = icmp eq i32 %905, 4
  %907 = icmp eq i64 %indvars.iv1011, %42
  %908 = or i1 %907, %906
  %909 = select i1 %908, i32 10, i32 32
  %910 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.129, double noundef %903, i32 noundef %909) #9
  %indvars.iv.next1012 = add nuw nsw i64 %indvars.iv1011, 1
  %exitcond1015.not = icmp eq i64 %indvars.iv.next1012, %29
  br i1 %exitcond1015.not, label %._crit_edge867, label %.lr.ph866, !llvm.loop !107

._crit_edge867:                                   ; preds = %.lr.ph866, %._crit_edge863.thread, %._crit_edge863
  %911 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.134) #9
  %912 = load ptr, ptr %20, align 8, !tbaa !37
  %913 = call i32 @MaxIdx(ptr noundef %912, i32 noundef %9)
  br i1 %21, label %.lr.ph870, label %._crit_edge871

.lr.ph870:                                        ; preds = %._crit_edge867
  %914 = sext i32 %913 to i64
  br label %915

915:                                              ; preds = %.lr.ph870, %915
  %indvars.iv1016 = phi i64 [ 0, %.lr.ph870 ], [ %indvars.iv.next1017, %915 ]
  %916 = load ptr, ptr %22, align 8, !tbaa !38
  %917 = getelementptr inbounds ptr, ptr %916, i64 %indvars.iv1016
  %918 = load ptr, ptr %917, align 8, !tbaa !27
  %919 = getelementptr inbounds double, ptr %918, i64 %914
  %920 = load double, ptr %919, align 8, !tbaa !28
  %921 = trunc nuw nsw i64 %indvars.iv1016 to i32
  %922 = urem i32 %921, 5
  %923 = icmp eq i32 %922, 4
  %924 = icmp eq i64 %indvars.iv1016, %42
  %925 = select i1 %923, i1 true, i1 %924
  %926 = select i1 %925, i32 10, i32 32
  %927 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.129, double noundef %920, i32 noundef %926) #9
  %indvars.iv.next1017 = add nuw nsw i64 %indvars.iv1016, 1
  %exitcond1020.not = icmp eq i64 %indvars.iv.next1017, %29
  br i1 %exitcond1020.not, label %._crit_edge871, label %915, !llvm.loop !108

._crit_edge871:                                   ; preds = %915, %._crit_edge867
  %928 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.135) #9
  %929 = load ptr, ptr %20, align 8, !tbaa !37
  %930 = call i32 @MinIdx(ptr noundef %929, i32 noundef %9)
  br i1 %21, label %.lr.ph874, label %.preheader769.preheader

.lr.ph874:                                        ; preds = %._crit_edge871
  %931 = sext i32 %930 to i64
  br label %932

932:                                              ; preds = %.lr.ph874, %932
  %indvars.iv1021 = phi i64 [ 0, %.lr.ph874 ], [ %indvars.iv.next1022, %932 ]
  %933 = load ptr, ptr %22, align 8, !tbaa !38
  %934 = getelementptr inbounds ptr, ptr %933, i64 %indvars.iv1021
  %935 = load ptr, ptr %934, align 8, !tbaa !27
  %936 = getelementptr inbounds double, ptr %935, i64 %931
  %937 = load double, ptr %936, align 8, !tbaa !28
  %938 = trunc nuw nsw i64 %indvars.iv1021 to i32
  %939 = urem i32 %938, 5
  %940 = icmp eq i32 %939, 4
  %941 = icmp eq i64 %indvars.iv1021, %42
  %942 = select i1 %940, i1 true, i1 %941
  %943 = select i1 %942, i32 10, i32 32
  %944 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.129, double noundef %937, i32 noundef %943) #9
  %indvars.iv.next1022 = add nuw nsw i64 %indvars.iv1021, 1
  %exitcond1025.not = icmp eq i64 %indvars.iv.next1022, %29
  br i1 %exitcond1025.not, label %.preheader769.preheader, label %932, !llvm.loop !109

.preheader769.preheader:                          ; preds = %932, %._crit_edge871
  br label %.preheader769

.preheader769:                                    ; preds = %.preheader769.preheader, %948
  %.58 = phi ptr [ %949, %948 ], [ %.57, %.preheader769.preheader ]
  %945 = load i8, ptr %.58, align 1, !tbaa !23
  switch i8 %945, label %946 [
    i8 43, label %.critedge52
    i8 0, label %.critedge52
  ]

946:                                              ; preds = %.preheader769
  %947 = icmp ult ptr %.58, %12
  br i1 %947, label %948, label %.critedge52

948:                                              ; preds = %946
  %949 = getelementptr inbounds i8, ptr %.58, i64 1
  br label %.preheader769, !llvm.loop !110

.critedge52:                                      ; preds = %.preheader769, %.preheader769, %946
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9
  br label %950

950:                                              ; preds = %.critedge52, %751
  %.59 = phi ptr [ %.58, %.critedge52 ], [ %.57, %751 ]
  %951 = load i8, ptr %.59, align 1, !tbaa !23
  switch i8 %951, label %952 [
    i8 0, label %.loopexit781
    i8 43, label %.critedge54.preheader
  ]

.critedge54.preheader:                            ; preds = %953, %953, %955, %950
  %.62.ph = phi ptr [ %.59, %950 ], [ %.60, %955 ], [ %.60, %953 ], [ %.60, %953 ]
  br label %.critedge54

952:                                              ; preds = %950
  call void @ERRORMESSAGE(ptr noundef nonnull @.str.136, ptr noundef nonnull %.59, ptr noundef nonnull @.str.11, ptr noundef null)
  br label %953

953:                                              ; preds = %957, %952
  %.60 = phi ptr [ %.59, %952 ], [ %958, %957 ]
  %954 = load i8, ptr %.60, align 1, !tbaa !23
  switch i8 %954, label %955 [
    i8 43, label %.critedge54.preheader
    i8 0, label %.critedge54.preheader
  ]

955:                                              ; preds = %953
  %956 = icmp ult ptr %.60, %12
  br i1 %956, label %957, label %.critedge54.preheader

957:                                              ; preds = %955
  %958 = getelementptr inbounds i8, ptr %.60, i64 1
  br label %953, !llvm.loop !111

.critedge54:                                      ; preds = %.critedge54.preheader, %.critedge54
  %.62 = phi ptr [ %961, %.critedge54 ], [ %.62.ph, %.critedge54.preheader ]
  %959 = load i8, ptr %.62, align 1, !tbaa !23
  %960 = icmp eq i8 %959, 43
  %961 = getelementptr inbounds i8, ptr %.62, i64 1
  br i1 %960, label %.critedge54, label %.loopexit, !llvm.loop !112

.loopexit781:                                     ; preds = %.loopexit, %950, %8, %._crit_edge888
  %.63 = phi ptr [ %.21, %._crit_edge888 ], [ %spec.select, %8 ], [ %.62, %.loopexit ], [ %.59, %950 ]
  %962 = icmp ugt ptr %.63, %12
  br i1 %962, label %963, label %964

963:                                              ; preds = %.loopexit781
  call void @FATAL(ptr noundef nonnull @.str.137, ptr noundef null, ptr noundef null, ptr noundef null)
  br label %964

964:                                              ; preds = %963, %.loopexit781
  ret void
}

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare dso_local double @cmaes_timings_update(ptr noundef) local_unnamed_addr #1

; Function Attrs: nofree
declare void @qsort(ptr noundef, i64 noundef, i64 noundef, ptr nocapture noundef) local_unnamed_addr #6

; Function Attrs: nounwind uwtable
declare hidden i32 @SignOfDiff(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind
declare i64 @time(ptr noundef) local_unnamed_addr #7

; Function Attrs: nounwind
declare ptr @asctime(ptr noundef) local_unnamed_addr #7

; Function Attrs: nounwind
declare ptr @localtime(ptr noundef) local_unnamed_addr #7

; Function Attrs: nounwind uwtable
declare hidden i32 @MaxIdx(ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @MinIdx(ptr noundef, i32 noundef) local_unnamed_addr #1

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nofree nounwind willreturn memory(write) "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 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 #4 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nofree nounwind willreturn memory(argmem: read) "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 = { nofree "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind willreturn memory(read) }
attributes #9 = { 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, !12, i64 20}
!6 = !{!"", !7, i64 0, !10, i64 8, !16, i64 408, !13, i64 456, !7, i64 464, !7, i64 472, !7, i64 480, !7, i64 488, !7, i64 496, !11, i64 504, !11, i64 506, !13, i64 512, !7, i64 520, !7, i64 528, !7, i64 536, !7, i64 544, !7, i64 552, !7, i64 560, !7, i64 568, !7, i64 576, !7, i64 584, !7, i64 592, !7, i64 600, !13, i64 608, !13, i64 616, !13, i64 624, !13, i64 632, !13, i64 640, !13, i64 648, !13, i64 656, !8, i64 664, !11, i64 994, !11, i64 996, !13, i64 1000, !18, i64 1008, !13, i64 1096, !13, i64 1104, !11, i64 1112, !17, i64 1120, !17, i64 1128, !17, i64 1136, !17, i64 1144}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"", !7, i64 0, !11, i64 8, !12, i64 12, !12, i64 16, !7, i64 24, !7, i64 32, !12, i64 40, !7, i64 48, !7, i64 56, !13, i64 64, !13, i64 72, !13, i64 80, !14, i64 88, !13, i64 104, !13, i64 112, !13, i64 120, !13, i64 128, !12, i64 136, !12, i64 140, !13, i64 144, !13, i64 152, !7, i64 160, !13, i64 168, !13, i64 176, !13, i64 184, !13, i64 192, !13, i64 200, !15, i64 208, !13, i64 232, !7, i64 240, !8, i64 248, !7, i64 352, !7, i64 360, !7, i64 368, !7, i64 376, !12, i64 384, !12, i64 388, !12, i64 392}
!11 = !{!"short", !8, i64 0}
!12 = !{!"int", !8, i64 0}
!13 = !{!"double", !8, i64 0}
!14 = !{!"", !12, i64 0, !13, i64 8}
!15 = !{!"", !12, i64 0, !13, i64 8, !13, i64 16}
!16 = !{!"", !17, i64 0, !17, i64 8, !17, i64 16, !7, i64 24, !11, i64 32, !13, i64 40}
!17 = !{!"long", !8, i64 0}
!18 = !{!"", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !17, i64 32, !17, i64 40, !17, i64 48, !17, i64 56, !11, i64 64, !11, i64 66, !13, i64 72, !13, i64 80}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = !{!6, !13, i64 648}
!22 = !{!6, !13, i64 656}
!23 = !{!8, !8, i64 0}
!24 = distinct !{!24, !20}
!25 = !{!6, !13, i64 640}
!26 = !{!6, !7, i64 520}
!27 = !{!7, !7, i64 0}
!28 = !{!13, !13, i64 0}
!29 = distinct !{!29, !20}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.unroll.disable"}
!32 = distinct !{!32, !20}
!33 = !{!6, !13, i64 632}
!34 = distinct !{!34, !20}
!35 = distinct !{!35, !31}
!36 = distinct !{!36, !20}
!37 = !{!6, !7, i64 536}
!38 = !{!6, !7, i64 528}
!39 = !{!12, !12, i64 0}
!40 = distinct !{!40, !20}
!41 = distinct !{!41, !20}
!42 = distinct !{!42, !20}
!43 = distinct !{!43, !20}
!44 = !{!6, !13, i64 1016}
!45 = !{!6, !13, i64 1024}
!46 = distinct !{!46, !20}
!47 = distinct !{!47, !20}
!48 = !{!6, !13, i64 456}
!49 = distinct !{!49, !20, !50}
!50 = !{!"llvm.loop.peeled.count", i32 1}
!51 = distinct !{!51, !20}
!52 = !{!6, !7, i64 584}
!53 = distinct !{!53, !20, !54, !55}
!54 = !{!"llvm.loop.isvectorized", i32 1}
!55 = !{!"llvm.loop.unroll.runtime.disable"}
!56 = distinct !{!56, !31}
!57 = distinct !{!57, !20, !54}
!58 = distinct !{!58, !20, !50}
!59 = distinct !{!59, !20}
!60 = distinct !{!60, !20}
!61 = !{!6, !13, i64 616}
!62 = distinct !{!62, !20}
!63 = distinct !{!63, !20, !54, !55}
!64 = distinct !{!64, !31}
!65 = distinct !{!65, !20, !54}
!66 = distinct !{!66, !20}
!67 = distinct !{!67, !20}
!68 = !{!6, !13, i64 608}
!69 = !{!6, !7, i64 592}
!70 = !{!6, !7, i64 488}
!71 = distinct !{!71, !20}
!72 = distinct !{!72, !20}
!73 = !{!6, !7, i64 472}
!74 = distinct !{!74, !20}
!75 = !{!6, !12, i64 144}
!76 = distinct !{!76, !20}
!77 = distinct !{!77, !20}
!78 = distinct !{!78, !20, !50}
!79 = distinct !{!79, !20}
!80 = distinct !{!80, !20}
!81 = distinct !{!81, !20}
!82 = distinct !{!82, !20}
!83 = distinct !{!83, !20}
!84 = distinct !{!84, !20}
!85 = distinct !{!85, !20}
!86 = distinct !{!86, !20}
!87 = !{!6, !7, i64 552}
!88 = distinct !{!88, !20}
!89 = !{!6, !7, i64 544}
!90 = distinct !{!90, !20}
!91 = distinct !{!91, !20}
!92 = !{!6, !7, i64 480}
!93 = distinct !{!93, !20, !50}
!94 = distinct !{!94, !20}
!95 = !{!6, !7, i64 464}
!96 = distinct !{!96, !20, !50}
!97 = distinct !{!97, !20}
!98 = !{!17, !17, i64 0}
!99 = !{!6, !12, i64 24}
!100 = distinct !{!100, !20}
!101 = distinct !{!101, !20}
!102 = distinct !{!102, !20}
!103 = distinct !{!103, !20}
!104 = distinct !{!104, !20, !54, !55}
!105 = distinct !{!105, !31}
!106 = distinct !{!106, !20, !54}
!107 = distinct !{!107, !20}
!108 = distinct !{!108, !20}
!109 = distinct !{!109, !20}
!110 = distinct !{!110, !20}
!111 = distinct !{!111, !20}
!112 = distinct !{!112, !20}


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