; LLVM IR from OriginQ/QPanda-2 :: ThirdParty/mpfit/src (mpfit)

; 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.mp_config_struct = type { double, double, double, double, double, double, i32, i32, i32, i32, i32, ptr }
%struct.mp_par_struct = type { i32, [2 x i32], [2 x double], ptr, double, double, i32, i32, double, double }
%struct.mp_result_struct = type { double, double, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, [20 x i8] }

@mpfit.one = external hidden global double, align 8
@mpfit.p1 = external hidden global double, align 8
@mpfit.p5 = external hidden global double, align 8
@mpfit.p25 = external hidden global double, align 8
@mpfit.p75 = external hidden global double, align 8
@mpfit.p0001 = external hidden global double, align 8
@mpfit.zero = external hidden global double, align 8
@.str = external hidden unnamed_addr constant [4 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @mpfit(ptr noundef %0, i32 noundef %1, i32 noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7) #0 {
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca %struct.mp_config_struct, align 8
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca i32, align 4
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca ptr, align 8
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca ptr, align 8
  %64 = alloca ptr, align 8
  %65 = alloca ptr, align 8
  %66 = alloca ptr, align 8
  %67 = alloca ptr, align 8
  %68 = alloca ptr, align 8
  %69 = alloca ptr, align 8
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca ptr, align 8
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca i32, align 4
  %89 = alloca i32, align 4
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca i32, align 4
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca i32, align 4
  %97 = alloca i32, align 4
  %98 = alloca i32, align 4
  %99 = alloca i32, align 4
  %100 = alloca i32, align 4
  %101 = alloca i32, align 4
  %102 = alloca i32, align 4
  %103 = alloca i32, align 4
  %104 = alloca i32, align 4
  %105 = alloca i32, align 4
  %106 = alloca double, align 8
  %107 = alloca double, align 8
  %108 = alloca double, align 8
  %109 = alloca double, align 8
  %110 = alloca double, align 8
  store ptr %0, ptr %10, align 8, !tbaa !5
  store i32 %1, ptr %11, align 4, !tbaa !9
  store i32 %2, ptr %12, align 4, !tbaa !9
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store ptr %5, ptr %15, align 8, !tbaa !5
  store ptr %6, ptr %16, align 8, !tbaa !5
  store ptr %7, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 80, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  store i32 0, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #5
  store i32 0, ptr %48, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #5
  store ptr null, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #5
  store ptr null, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #5
  store ptr null, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #5
  store ptr null, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  store ptr null, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  store ptr null, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  store ptr null, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #5
  store ptr null, ptr %56, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #5
  store ptr null, ptr %57, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #5
  store ptr null, ptr %58, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #5
  store ptr null, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #5
  store ptr null, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #5
  store ptr null, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #5
  store ptr null, ptr %62, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #5
  store ptr null, ptr %63, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #5
  store ptr null, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #5
  store ptr null, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #5
  store ptr null, ptr %66, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #5
  store ptr null, ptr %67, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #5
  store ptr null, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #5
  store ptr null, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #5
  store ptr null, ptr %70, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #5
  store ptr null, ptr %71, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #5
  store ptr null, ptr %72, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #5
  %111 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 0
  store double 1.000000e-10, ptr %111, align 8, !tbaa !11
  %112 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 1
  store double 1.000000e-10, ptr %112, align 8, !tbaa !14
  %113 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 2
  store double 1.000000e-10, ptr %113, align 8, !tbaa !15
  %114 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 4
  store double 1.000000e+02, ptr %114, align 8, !tbaa !16
  %115 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 8
  store i32 1, ptr %115, align 8, !tbaa !17
  %116 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 3
  store double 0x3CAFFFFFF4178DA3, ptr %116, align 8, !tbaa !18
  %117 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 6
  store i32 200, ptr %117, align 8, !tbaa !19
  %118 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 9
  store i32 0, ptr %118, align 4, !tbaa !20
  %119 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 7
  store i32 0, ptr %119, align 4, !tbaa !21
  %120 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 5
  store double 0x3D06849B86A12B9B, ptr %120, align 8, !tbaa !22
  %121 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 10
  store i32 0, ptr %121, align 8, !tbaa !23
  %122 = load ptr, ptr %15, align 8, !tbaa !5
  %123 = icmp ne ptr %122, null
  br i1 %123, label %124, label %236

124:                                              ; preds = %8
  %125 = load ptr, ptr %15, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.mp_config_struct, ptr %125, i32 0, i32 0
  %127 = load double, ptr %126, align 8, !tbaa !11
  %128 = fcmp ogt double %127, 0.000000e+00
  br i1 %128, label %129, label %134

129:                                              ; preds = %124
  %130 = load ptr, ptr %15, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.mp_config_struct, ptr %130, i32 0, i32 0
  %132 = load double, ptr %131, align 8, !tbaa !11
  %133 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 0
  store double %132, ptr %133, align 8, !tbaa !11
  br label %134

134:                                              ; preds = %129, %124
  %135 = load ptr, ptr %15, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.mp_config_struct, ptr %135, i32 0, i32 1
  %137 = load double, ptr %136, align 8, !tbaa !14
  %138 = fcmp ogt double %137, 0.000000e+00
  br i1 %138, label %139, label %144

139:                                              ; preds = %134
  %140 = load ptr, ptr %15, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.mp_config_struct, ptr %140, i32 0, i32 1
  %142 = load double, ptr %141, align 8, !tbaa !14
  %143 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 1
  store double %142, ptr %143, align 8, !tbaa !14
  br label %144

144:                                              ; preds = %139, %134
  %145 = load ptr, ptr %15, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.mp_config_struct, ptr %145, i32 0, i32 2
  %147 = load double, ptr %146, align 8, !tbaa !15
  %148 = fcmp ogt double %147, 0.000000e+00
  br i1 %148, label %149, label %154

149:                                              ; preds = %144
  %150 = load ptr, ptr %15, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.mp_config_struct, ptr %150, i32 0, i32 2
  %152 = load double, ptr %151, align 8, !tbaa !15
  %153 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 2
  store double %152, ptr %153, align 8, !tbaa !15
  br label %154

154:                                              ; preds = %149, %144
  %155 = load ptr, ptr %15, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.mp_config_struct, ptr %155, i32 0, i32 4
  %157 = load double, ptr %156, align 8, !tbaa !16
  %158 = fcmp ogt double %157, 0.000000e+00
  br i1 %158, label %159, label %164

159:                                              ; preds = %154
  %160 = load ptr, ptr %15, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.mp_config_struct, ptr %160, i32 0, i32 4
  %162 = load double, ptr %161, align 8, !tbaa !16
  %163 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 4
  store double %162, ptr %163, align 8, !tbaa !16
  br label %164

164:                                              ; preds = %159, %154
  %165 = load ptr, ptr %15, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.mp_config_struct, ptr %165, i32 0, i32 8
  %167 = load i32, ptr %166, align 8, !tbaa !17
  %168 = icmp sge i32 %167, 0
  br i1 %168, label %169, label %174

169:                                              ; preds = %164
  %170 = load ptr, ptr %15, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.mp_config_struct, ptr %170, i32 0, i32 8
  %172 = load i32, ptr %171, align 8, !tbaa !17
  %173 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 8
  store i32 %172, ptr %173, align 8, !tbaa !17
  br label %174

174:                                              ; preds = %169, %164
  %175 = load ptr, ptr %15, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.mp_config_struct, ptr %175, i32 0, i32 3
  %177 = load double, ptr %176, align 8, !tbaa !18
  %178 = fcmp ogt double %177, 0.000000e+00
  br i1 %178, label %179, label %184

179:                                              ; preds = %174
  %180 = load ptr, ptr %15, align 8, !tbaa !5
  %181 = getelementptr inbounds %struct.mp_config_struct, ptr %180, i32 0, i32 3
  %182 = load double, ptr %181, align 8, !tbaa !18
  %183 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 3
  store double %182, ptr %183, align 8, !tbaa !18
  br label %184

184:                                              ; preds = %179, %174
  %185 = load ptr, ptr %15, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.mp_config_struct, ptr %185, i32 0, i32 6
  %187 = load i32, ptr %186, align 8, !tbaa !19
  %188 = icmp sgt i32 %187, 0
  br i1 %188, label %189, label %194

189:                                              ; preds = %184
  %190 = load ptr, ptr %15, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.mp_config_struct, ptr %190, i32 0, i32 6
  %192 = load i32, ptr %191, align 8, !tbaa !19
  %193 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 6
  store i32 %192, ptr %193, align 8, !tbaa !19
  br label %194

194:                                              ; preds = %189, %184
  %195 = load ptr, ptr %15, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.mp_config_struct, ptr %195, i32 0, i32 6
  %197 = load i32, ptr %196, align 8, !tbaa !19
  %198 = icmp eq i32 %197, -1
  br i1 %198, label %199, label %201

199:                                              ; preds = %194
  %200 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 6
  store i32 0, ptr %200, align 8, !tbaa !19
  br label %201

201:                                              ; preds = %199, %194
  %202 = load ptr, ptr %15, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.mp_config_struct, ptr %202, i32 0, i32 9
  %204 = load i32, ptr %203, align 4, !tbaa !20
  %205 = icmp ne i32 %204, 0
  br i1 %205, label %206, label %211

206:                                              ; preds = %201
  %207 = load ptr, ptr %15, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.mp_config_struct, ptr %207, i32 0, i32 9
  %209 = load i32, ptr %208, align 4, !tbaa !20
  %210 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 9
  store i32 %209, ptr %210, align 4, !tbaa !20
  br label %211

211:                                              ; preds = %206, %201
  %212 = load ptr, ptr %15, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.mp_config_struct, ptr %212, i32 0, i32 5
  %214 = load double, ptr %213, align 8, !tbaa !22
  %215 = fcmp ogt double %214, 0.000000e+00
  br i1 %215, label %216, label %221

216:                                              ; preds = %211
  %217 = load ptr, ptr %15, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.mp_config_struct, ptr %217, i32 0, i32 5
  %219 = load double, ptr %218, align 8, !tbaa !22
  %220 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 5
  store double %219, ptr %220, align 8, !tbaa !22
  br label %221

221:                                              ; preds = %216, %211
  %222 = load ptr, ptr %15, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.mp_config_struct, ptr %222, i32 0, i32 10
  %224 = load i32, ptr %223, align 8, !tbaa !23
  %225 = icmp sgt i32 %224, 0
  br i1 %225, label %226, label %231

226:                                              ; preds = %221
  %227 = load ptr, ptr %15, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.mp_config_struct, ptr %227, i32 0, i32 10
  %229 = load i32, ptr %228, align 8, !tbaa !23
  %230 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 10
  store i32 %229, ptr %230, align 8, !tbaa !23
  br label %231

231:                                              ; preds = %226, %221
  %232 = load ptr, ptr %15, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.mp_config_struct, ptr %232, i32 0, i32 7
  %234 = load i32, ptr %233, align 4, !tbaa !21
  %235 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 7
  store i32 %234, ptr %235, align 4, !tbaa !21
  br label %236

236:                                              ; preds = %231, %8
  store i32 0, ptr %21, align 4, !tbaa !9
  store i32 0, ptr %22, align 4, !tbaa !9
  store i32 0, ptr %23, align 4, !tbaa !9
  store i32 0, ptr %24, align 4, !tbaa !9
  %237 = load ptr, ptr %10, align 8, !tbaa !5
  %238 = icmp eq ptr %237, null
  br i1 %238, label %239, label %240

239:                                              ; preds = %236
  store i32 -17, ptr %9, align 4
  store i32 1, ptr %74, align 4
  br label %3005

240:                                              ; preds = %236
  %241 = load i32, ptr %11, align 4, !tbaa !9
  %242 = icmp sle i32 %241, 0
  br i1 %242, label %246, label %243

243:                                              ; preds = %240
  %244 = load ptr, ptr %13, align 8, !tbaa !5
  %245 = icmp eq ptr %244, null
  br i1 %245, label %246, label %247

246:                                              ; preds = %243, %240
  store i32 -18, ptr %9, align 4
  store i32 1, ptr %74, align 4
  br label %3005

247:                                              ; preds = %243
  %248 = load i32, ptr %12, align 4, !tbaa !9
  %249 = icmp sle i32 %248, 0
  br i1 %249, label %250, label %251

250:                                              ; preds = %247
  store i32 -19, ptr %9, align 4
  store i32 1, ptr %74, align 4
  br label %3005

251:                                              ; preds = %247
  store double -1.000000e+00, ptr %33, align 8, !tbaa !24
  store double -1.000000e+00, ptr %34, align 8, !tbaa !24
  store double -1.000000e+00, ptr %46, align 8, !tbaa !24
  store double 0.000000e+00, ptr %31, align 8, !tbaa !24
  %252 = load i32, ptr %12, align 4, !tbaa !9
  %253 = sext i32 %252 to i64
  %254 = mul i64 4, %253
  %255 = call noalias ptr @malloc(i64 noundef %254) #6
  store ptr %255, ptr %53, align 8, !tbaa !5
  %256 = load ptr, ptr %53, align 8, !tbaa !5
  %257 = icmp eq ptr %256, null
  br i1 %257, label %258, label %259

258:                                              ; preds = %251
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

259:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #5
  store i32 0, ptr %75, align 4, !tbaa !9
  br label %260

260:                                              ; preds = %269, %259
  %261 = load i32, ptr %75, align 4, !tbaa !9
  %262 = load i32, ptr %12, align 4, !tbaa !9
  %263 = icmp slt i32 %261, %262
  br i1 %263, label %264, label %272

264:                                              ; preds = %260
  %265 = load ptr, ptr %53, align 8, !tbaa !5
  %266 = load i32, ptr %75, align 4, !tbaa !9
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds i32, ptr %265, i64 %267
  store i32 0, ptr %268, align 4, !tbaa !9
  br label %269

269:                                              ; preds = %264
  %270 = load i32, ptr %75, align 4, !tbaa !9
  %271 = add nsw i32 %270, 1
  store i32 %271, ptr %75, align 4, !tbaa !9
  br label %260, !llvm.loop !25

272:                                              ; preds = %260
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #5
  br label %273

273:                                              ; preds = %272
  %274 = load ptr, ptr %14, align 8, !tbaa !5
  %275 = icmp ne ptr %274, null
  br i1 %275, label %276, label %299

276:                                              ; preds = %273
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %277

277:                                              ; preds = %295, %276
  %278 = load i32, ptr %19, align 4, !tbaa !9
  %279 = load i32, ptr %12, align 4, !tbaa !9
  %280 = icmp slt i32 %278, %279
  br i1 %280, label %281, label %298

281:                                              ; preds = %277
  %282 = load ptr, ptr %14, align 8, !tbaa !5
  %283 = load i32, ptr %19, align 4, !tbaa !9
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds %struct.mp_par_struct, ptr %282, i64 %284
  %286 = getelementptr inbounds %struct.mp_par_struct, ptr %285, i32 0, i32 0
  %287 = load i32, ptr %286, align 8, !tbaa !27
  %288 = icmp ne i32 %287, 0
  %289 = zext i1 %288 to i64
  %290 = select i1 %288, i32 1, i32 0
  %291 = load ptr, ptr %53, align 8, !tbaa !5
  %292 = load i32, ptr %19, align 4, !tbaa !9
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds i32, ptr %291, i64 %293
  store i32 %290, ptr %294, align 4, !tbaa !9
  br label %295

295:                                              ; preds = %281
  %296 = load i32, ptr %19, align 4, !tbaa !9
  %297 = add nsw i32 %296, 1
  store i32 %297, ptr %19, align 4, !tbaa !9
  br label %277, !llvm.loop !29

298:                                              ; preds = %277
  br label %299

299:                                              ; preds = %298, %273
  %300 = load i32, ptr %12, align 4, !tbaa !9
  %301 = sext i32 %300 to i64
  %302 = mul i64 8, %301
  %303 = call noalias ptr @malloc(i64 noundef %302) #6
  store ptr %303, ptr %49, align 8, !tbaa !5
  %304 = load ptr, ptr %49, align 8, !tbaa !5
  %305 = icmp eq ptr %304, null
  br i1 %305, label %306, label %307

306:                                              ; preds = %299
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

307:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #5
  store i32 0, ptr %76, align 4, !tbaa !9
  br label %308

308:                                              ; preds = %317, %307
  %309 = load i32, ptr %76, align 4, !tbaa !9
  %310 = load i32, ptr %12, align 4, !tbaa !9
  %311 = icmp slt i32 %309, %310
  br i1 %311, label %312, label %320

312:                                              ; preds = %308
  %313 = load ptr, ptr %49, align 8, !tbaa !5
  %314 = load i32, ptr %76, align 4, !tbaa !9
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds double, ptr %313, i64 %315
  store double 0.000000e+00, ptr %316, align 8, !tbaa !24
  br label %317

317:                                              ; preds = %312
  %318 = load i32, ptr %76, align 4, !tbaa !9
  %319 = add nsw i32 %318, 1
  store i32 %319, ptr %76, align 4, !tbaa !9
  br label %308, !llvm.loop !30

320:                                              ; preds = %308
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #5
  br label %321

321:                                              ; preds = %320
  %322 = load i32, ptr %12, align 4, !tbaa !9
  %323 = sext i32 %322 to i64
  %324 = mul i64 8, %323
  %325 = call noalias ptr @malloc(i64 noundef %324) #6
  store ptr %325, ptr %50, align 8, !tbaa !5
  %326 = load ptr, ptr %50, align 8, !tbaa !5
  %327 = icmp eq ptr %326, null
  br i1 %327, label %328, label %329

328:                                              ; preds = %321
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

329:                                              ; preds = %321
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #5
  store i32 0, ptr %77, align 4, !tbaa !9
  br label %330

330:                                              ; preds = %339, %329
  %331 = load i32, ptr %77, align 4, !tbaa !9
  %332 = load i32, ptr %12, align 4, !tbaa !9
  %333 = icmp slt i32 %331, %332
  br i1 %333, label %334, label %342

334:                                              ; preds = %330
  %335 = load ptr, ptr %50, align 8, !tbaa !5
  %336 = load i32, ptr %77, align 4, !tbaa !9
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds double, ptr %335, i64 %337
  store double 0.000000e+00, ptr %338, align 8, !tbaa !24
  br label %339

339:                                              ; preds = %334
  %340 = load i32, ptr %77, align 4, !tbaa !9
  %341 = add nsw i32 %340, 1
  store i32 %341, ptr %77, align 4, !tbaa !9
  br label %330, !llvm.loop !31

342:                                              ; preds = %330
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #5
  br label %343

343:                                              ; preds = %342
  %344 = load i32, ptr %12, align 4, !tbaa !9
  %345 = sext i32 %344 to i64
  %346 = mul i64 4, %345
  %347 = call noalias ptr @malloc(i64 noundef %346) #6
  store ptr %347, ptr %54, align 8, !tbaa !5
  %348 = load ptr, ptr %54, align 8, !tbaa !5
  %349 = icmp eq ptr %348, null
  br i1 %349, label %350, label %351

350:                                              ; preds = %343
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

351:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #5
  store i32 0, ptr %78, align 4, !tbaa !9
  br label %352

352:                                              ; preds = %361, %351
  %353 = load i32, ptr %78, align 4, !tbaa !9
  %354 = load i32, ptr %12, align 4, !tbaa !9
  %355 = icmp slt i32 %353, %354
  br i1 %355, label %356, label %364

356:                                              ; preds = %352
  %357 = load ptr, ptr %54, align 8, !tbaa !5
  %358 = load i32, ptr %78, align 4, !tbaa !9
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds i32, ptr %357, i64 %359
  store i32 0, ptr %360, align 4, !tbaa !9
  br label %361

361:                                              ; preds = %356
  %362 = load i32, ptr %78, align 4, !tbaa !9
  %363 = add nsw i32 %362, 1
  store i32 %363, ptr %78, align 4, !tbaa !9
  br label %352, !llvm.loop !32

364:                                              ; preds = %352
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #5
  br label %365

365:                                              ; preds = %364
  %366 = load i32, ptr %12, align 4, !tbaa !9
  %367 = sext i32 %366 to i64
  %368 = mul i64 4, %367
  %369 = call noalias ptr @malloc(i64 noundef %368) #6
  store ptr %369, ptr %58, align 8, !tbaa !5
  %370 = load ptr, ptr %58, align 8, !tbaa !5
  %371 = icmp eq ptr %370, null
  br i1 %371, label %372, label %373

372:                                              ; preds = %365
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

373:                                              ; preds = %365
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #5
  store i32 0, ptr %79, align 4, !tbaa !9
  br label %374

374:                                              ; preds = %383, %373
  %375 = load i32, ptr %79, align 4, !tbaa !9
  %376 = load i32, ptr %12, align 4, !tbaa !9
  %377 = icmp slt i32 %375, %376
  br i1 %377, label %378, label %386

378:                                              ; preds = %374
  %379 = load ptr, ptr %58, align 8, !tbaa !5
  %380 = load i32, ptr %79, align 4, !tbaa !9
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds i32, ptr %379, i64 %381
  store i32 0, ptr %382, align 4, !tbaa !9
  br label %383

383:                                              ; preds = %378
  %384 = load i32, ptr %79, align 4, !tbaa !9
  %385 = add nsw i32 %384, 1
  store i32 %385, ptr %79, align 4, !tbaa !9
  br label %374, !llvm.loop !33

386:                                              ; preds = %374
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #5
  br label %387

387:                                              ; preds = %386
  %388 = load i32, ptr %12, align 4, !tbaa !9
  %389 = sext i32 %388 to i64
  %390 = mul i64 8, %389
  %391 = call noalias ptr @malloc(i64 noundef %390) #6
  store ptr %391, ptr %59, align 8, !tbaa !5
  %392 = load ptr, ptr %59, align 8, !tbaa !5
  %393 = icmp eq ptr %392, null
  br i1 %393, label %394, label %395

394:                                              ; preds = %387
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

395:                                              ; preds = %387
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #5
  store i32 0, ptr %80, align 4, !tbaa !9
  br label %396

396:                                              ; preds = %405, %395
  %397 = load i32, ptr %80, align 4, !tbaa !9
  %398 = load i32, ptr %12, align 4, !tbaa !9
  %399 = icmp slt i32 %397, %398
  br i1 %399, label %400, label %408

400:                                              ; preds = %396
  %401 = load ptr, ptr %59, align 8, !tbaa !5
  %402 = load i32, ptr %80, align 4, !tbaa !9
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds double, ptr %401, i64 %403
  store double 0.000000e+00, ptr %404, align 8, !tbaa !24
  br label %405

405:                                              ; preds = %400
  %406 = load i32, ptr %80, align 4, !tbaa !9
  %407 = add nsw i32 %406, 1
  store i32 %407, ptr %80, align 4, !tbaa !9
  br label %396, !llvm.loop !34

408:                                              ; preds = %396
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #5
  br label %409

409:                                              ; preds = %408
  %410 = load i32, ptr %12, align 4, !tbaa !9
  %411 = sext i32 %410 to i64
  %412 = mul i64 8, %411
  %413 = call noalias ptr @malloc(i64 noundef %412) #6
  store ptr %413, ptr %60, align 8, !tbaa !5
  %414 = load ptr, ptr %60, align 8, !tbaa !5
  %415 = icmp eq ptr %414, null
  br i1 %415, label %416, label %417

416:                                              ; preds = %409
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

417:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #5
  store i32 0, ptr %81, align 4, !tbaa !9
  br label %418

418:                                              ; preds = %427, %417
  %419 = load i32, ptr %81, align 4, !tbaa !9
  %420 = load i32, ptr %12, align 4, !tbaa !9
  %421 = icmp slt i32 %419, %420
  br i1 %421, label %422, label %430

422:                                              ; preds = %418
  %423 = load ptr, ptr %60, align 8, !tbaa !5
  %424 = load i32, ptr %81, align 4, !tbaa !9
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds double, ptr %423, i64 %425
  store double 0.000000e+00, ptr %426, align 8, !tbaa !24
  br label %427

427:                                              ; preds = %422
  %428 = load i32, ptr %81, align 4, !tbaa !9
  %429 = add nsw i32 %428, 1
  store i32 %429, ptr %81, align 4, !tbaa !9
  br label %418, !llvm.loop !35

430:                                              ; preds = %418
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #5
  br label %431

431:                                              ; preds = %430
  %432 = load ptr, ptr %14, align 8, !tbaa !5
  %433 = icmp ne ptr %432, null
  br i1 %433, label %434, label %504

434:                                              ; preds = %431
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %435

435:                                              ; preds = %500, %434
  %436 = load i32, ptr %19, align 4, !tbaa !9
  %437 = load i32, ptr %12, align 4, !tbaa !9
  %438 = icmp slt i32 %436, %437
  br i1 %438, label %439, label %503

439:                                              ; preds = %435
  %440 = load ptr, ptr %14, align 8, !tbaa !5
  %441 = load i32, ptr %19, align 4, !tbaa !9
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds %struct.mp_par_struct, ptr %440, i64 %442
  %444 = getelementptr inbounds %struct.mp_par_struct, ptr %443, i32 0, i32 4
  %445 = load double, ptr %444, align 8, !tbaa !36
  %446 = load ptr, ptr %49, align 8, !tbaa !5
  %447 = load i32, ptr %19, align 4, !tbaa !9
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds double, ptr %446, i64 %448
  store double %445, ptr %449, align 8, !tbaa !24
  %450 = load ptr, ptr %14, align 8, !tbaa !5
  %451 = load i32, ptr %19, align 4, !tbaa !9
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds %struct.mp_par_struct, ptr %450, i64 %452
  %454 = getelementptr inbounds %struct.mp_par_struct, ptr %453, i32 0, i32 5
  %455 = load double, ptr %454, align 8, !tbaa !37
  %456 = load ptr, ptr %50, align 8, !tbaa !5
  %457 = load i32, ptr %19, align 4, !tbaa !9
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds double, ptr %456, i64 %458
  store double %455, ptr %459, align 8, !tbaa !24
  %460 = load ptr, ptr %14, align 8, !tbaa !5
  %461 = load i32, ptr %19, align 4, !tbaa !9
  %462 = sext i32 %461 to i64
  %463 = getelementptr inbounds %struct.mp_par_struct, ptr %460, i64 %462
  %464 = getelementptr inbounds %struct.mp_par_struct, ptr %463, i32 0, i32 6
  %465 = load i32, ptr %464, align 8, !tbaa !38
  %466 = load ptr, ptr %54, align 8, !tbaa !5
  %467 = load i32, ptr %19, align 4, !tbaa !9
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds i32, ptr %466, i64 %468
  store i32 %465, ptr %469, align 4, !tbaa !9
  %470 = load ptr, ptr %14, align 8, !tbaa !5
  %471 = load i32, ptr %19, align 4, !tbaa !9
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds %struct.mp_par_struct, ptr %470, i64 %472
  %474 = getelementptr inbounds %struct.mp_par_struct, ptr %473, i32 0, i32 7
  %475 = load i32, ptr %474, align 4, !tbaa !39
  %476 = load ptr, ptr %58, align 8, !tbaa !5
  %477 = load i32, ptr %19, align 4, !tbaa !9
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds i32, ptr %476, i64 %478
  store i32 %475, ptr %479, align 4, !tbaa !9
  %480 = load ptr, ptr %14, align 8, !tbaa !5
  %481 = load i32, ptr %19, align 4, !tbaa !9
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds %struct.mp_par_struct, ptr %480, i64 %482
  %484 = getelementptr inbounds %struct.mp_par_struct, ptr %483, i32 0, i32 8
  %485 = load double, ptr %484, align 8, !tbaa !40
  %486 = load ptr, ptr %59, align 8, !tbaa !5
  %487 = load i32, ptr %19, align 4, !tbaa !9
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds double, ptr %486, i64 %488
  store double %485, ptr %489, align 8, !tbaa !24
  %490 = load ptr, ptr %14, align 8, !tbaa !5
  %491 = load i32, ptr %19, align 4, !tbaa !9
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds %struct.mp_par_struct, ptr %490, i64 %492
  %494 = getelementptr inbounds %struct.mp_par_struct, ptr %493, i32 0, i32 9
  %495 = load double, ptr %494, align 8, !tbaa !41
  %496 = load ptr, ptr %60, align 8, !tbaa !5
  %497 = load i32, ptr %19, align 4, !tbaa !9
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds double, ptr %496, i64 %498
  store double %495, ptr %499, align 8, !tbaa !24
  br label %500

500:                                              ; preds = %439
  %501 = load i32, ptr %19, align 4, !tbaa !9
  %502 = add nsw i32 %501, 1
  store i32 %502, ptr %19, align 4, !tbaa !9
  br label %435, !llvm.loop !42

503:                                              ; preds = %435
  br label %504

504:                                              ; preds = %503, %431
  store i32 0, ptr %23, align 4, !tbaa !9
  %505 = load i32, ptr %12, align 4, !tbaa !9
  %506 = sext i32 %505 to i64
  %507 = mul i64 4, %506
  %508 = call noalias ptr @malloc(i64 noundef %507) #6
  store ptr %508, ptr %55, align 8, !tbaa !5
  %509 = load ptr, ptr %55, align 8, !tbaa !5
  %510 = icmp eq ptr %509, null
  br i1 %510, label %511, label %512

511:                                              ; preds = %504
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

512:                                              ; preds = %504
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #5
  store i32 0, ptr %82, align 4, !tbaa !9
  br label %513

513:                                              ; preds = %522, %512
  %514 = load i32, ptr %82, align 4, !tbaa !9
  %515 = load i32, ptr %12, align 4, !tbaa !9
  %516 = icmp slt i32 %514, %515
  br i1 %516, label %517, label %525

517:                                              ; preds = %513
  %518 = load ptr, ptr %55, align 8, !tbaa !5
  %519 = load i32, ptr %82, align 4, !tbaa !9
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds i32, ptr %518, i64 %520
  store i32 0, ptr %521, align 4, !tbaa !9
  br label %522

522:                                              ; preds = %517
  %523 = load i32, ptr %82, align 4, !tbaa !9
  %524 = add nsw i32 %523, 1
  store i32 %524, ptr %82, align 4, !tbaa !9
  br label %513, !llvm.loop !43

525:                                              ; preds = %513
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #5
  br label %526

526:                                              ; preds = %525
  store i32 0, ptr %19, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %527

527:                                              ; preds = %548, %526
  %528 = load i32, ptr %19, align 4, !tbaa !9
  %529 = load i32, ptr %12, align 4, !tbaa !9
  %530 = icmp slt i32 %528, %529
  br i1 %530, label %531, label %551

531:                                              ; preds = %527
  %532 = load ptr, ptr %53, align 8, !tbaa !5
  %533 = load i32, ptr %19, align 4, !tbaa !9
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds i32, ptr %532, i64 %534
  %536 = load i32, ptr %535, align 4, !tbaa !9
  %537 = icmp eq i32 %536, 0
  br i1 %537, label %538, label %547

538:                                              ; preds = %531
  %539 = load i32, ptr %23, align 4, !tbaa !9
  %540 = add nsw i32 %539, 1
  store i32 %540, ptr %23, align 4, !tbaa !9
  %541 = load i32, ptr %19, align 4, !tbaa !9
  %542 = load ptr, ptr %55, align 8, !tbaa !5
  %543 = load i32, ptr %20, align 4, !tbaa !9
  %544 = add nsw i32 %543, 1
  store i32 %544, ptr %20, align 4, !tbaa !9
  %545 = sext i32 %543 to i64
  %546 = getelementptr inbounds i32, ptr %542, i64 %545
  store i32 %541, ptr %546, align 4, !tbaa !9
  br label %547

547:                                              ; preds = %538, %531
  br label %548

548:                                              ; preds = %547
  %549 = load i32, ptr %19, align 4, !tbaa !9
  %550 = add nsw i32 %549, 1
  store i32 %550, ptr %19, align 4, !tbaa !9
  br label %527, !llvm.loop !44

551:                                              ; preds = %527
  %552 = load i32, ptr %23, align 4, !tbaa !9
  %553 = icmp eq i32 %552, 0
  br i1 %553, label %554, label %555

554:                                              ; preds = %551
  store i32 -19, ptr %21, align 4, !tbaa !9
  br label %2883

555:                                              ; preds = %551
  %556 = load ptr, ptr %14, align 8, !tbaa !5
  %557 = icmp ne ptr %556, null
  br i1 %557, label %558, label %830

558:                                              ; preds = %555
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %559

559:                                              ; preds = %654, %558
  %560 = load i32, ptr %19, align 4, !tbaa !9
  %561 = load i32, ptr %12, align 4, !tbaa !9
  %562 = icmp slt i32 %560, %561
  br i1 %562, label %563, label %657

563:                                              ; preds = %559
  %564 = load ptr, ptr %14, align 8, !tbaa !5
  %565 = load i32, ptr %19, align 4, !tbaa !9
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds %struct.mp_par_struct, ptr %564, i64 %566
  %568 = getelementptr inbounds %struct.mp_par_struct, ptr %567, i32 0, i32 1
  %569 = getelementptr inbounds [2 x i32], ptr %568, i64 0, i64 0
  %570 = load i32, ptr %569, align 4, !tbaa !9
  %571 = icmp ne i32 %570, 0
  br i1 %571, label %572, label %586

572:                                              ; preds = %563
  %573 = load ptr, ptr %13, align 8, !tbaa !5
  %574 = load i32, ptr %19, align 4, !tbaa !9
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds double, ptr %573, i64 %575
  %577 = load double, ptr %576, align 8, !tbaa !24
  %578 = load ptr, ptr %14, align 8, !tbaa !5
  %579 = load i32, ptr %19, align 4, !tbaa !9
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds %struct.mp_par_struct, ptr %578, i64 %580
  %582 = getelementptr inbounds %struct.mp_par_struct, ptr %581, i32 0, i32 2
  %583 = getelementptr inbounds [2 x double], ptr %582, i64 0, i64 0
  %584 = load double, ptr %583, align 8, !tbaa !24
  %585 = fcmp olt double %577, %584
  br i1 %585, label %609, label %586

586:                                              ; preds = %572, %563
  %587 = load ptr, ptr %14, align 8, !tbaa !5
  %588 = load i32, ptr %19, align 4, !tbaa !9
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds %struct.mp_par_struct, ptr %587, i64 %589
  %591 = getelementptr inbounds %struct.mp_par_struct, ptr %590, i32 0, i32 1
  %592 = getelementptr inbounds [2 x i32], ptr %591, i64 0, i64 1
  %593 = load i32, ptr %592, align 4, !tbaa !9
  %594 = icmp ne i32 %593, 0
  br i1 %594, label %595, label %610

595:                                              ; preds = %586
  %596 = load ptr, ptr %13, align 8, !tbaa !5
  %597 = load i32, ptr %19, align 4, !tbaa !9
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds double, ptr %596, i64 %598
  %600 = load double, ptr %599, align 8, !tbaa !24
  %601 = load ptr, ptr %14, align 8, !tbaa !5
  %602 = load i32, ptr %19, align 4, !tbaa !9
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds %struct.mp_par_struct, ptr %601, i64 %603
  %605 = getelementptr inbounds %struct.mp_par_struct, ptr %604, i32 0, i32 2
  %606 = getelementptr inbounds [2 x double], ptr %605, i64 0, i64 1
  %607 = load double, ptr %606, align 8, !tbaa !24
  %608 = fcmp ogt double %600, %607
  br i1 %608, label %609, label %610

609:                                              ; preds = %595, %572
  store i32 -21, ptr %21, align 4, !tbaa !9
  br label %2883

610:                                              ; preds = %595, %586
  %611 = load ptr, ptr %14, align 8, !tbaa !5
  %612 = load i32, ptr %19, align 4, !tbaa !9
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds %struct.mp_par_struct, ptr %611, i64 %613
  %615 = getelementptr inbounds %struct.mp_par_struct, ptr %614, i32 0, i32 0
  %616 = load i32, ptr %615, align 8, !tbaa !27
  %617 = icmp eq i32 %616, 0
  br i1 %617, label %618, label %653

618:                                              ; preds = %610
  %619 = load ptr, ptr %14, align 8, !tbaa !5
  %620 = load i32, ptr %19, align 4, !tbaa !9
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds %struct.mp_par_struct, ptr %619, i64 %621
  %623 = getelementptr inbounds %struct.mp_par_struct, ptr %622, i32 0, i32 1
  %624 = getelementptr inbounds [2 x i32], ptr %623, i64 0, i64 0
  %625 = load i32, ptr %624, align 4, !tbaa !9
  %626 = icmp ne i32 %625, 0
  br i1 %626, label %627, label %653

627:                                              ; preds = %618
  %628 = load ptr, ptr %14, align 8, !tbaa !5
  %629 = load i32, ptr %19, align 4, !tbaa !9
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds %struct.mp_par_struct, ptr %628, i64 %630
  %632 = getelementptr inbounds %struct.mp_par_struct, ptr %631, i32 0, i32 1
  %633 = getelementptr inbounds [2 x i32], ptr %632, i64 0, i64 1
  %634 = load i32, ptr %633, align 4, !tbaa !9
  %635 = icmp ne i32 %634, 0
  br i1 %635, label %636, label %653

636:                                              ; preds = %627
  %637 = load ptr, ptr %14, align 8, !tbaa !5
  %638 = load i32, ptr %19, align 4, !tbaa !9
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds %struct.mp_par_struct, ptr %637, i64 %639
  %641 = getelementptr inbounds %struct.mp_par_struct, ptr %640, i32 0, i32 2
  %642 = getelementptr inbounds [2 x double], ptr %641, i64 0, i64 0
  %643 = load double, ptr %642, align 8, !tbaa !24
  %644 = load ptr, ptr %14, align 8, !tbaa !5
  %645 = load i32, ptr %19, align 4, !tbaa !9
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds %struct.mp_par_struct, ptr %644, i64 %646
  %648 = getelementptr inbounds %struct.mp_par_struct, ptr %647, i32 0, i32 2
  %649 = getelementptr inbounds [2 x double], ptr %648, i64 0, i64 1
  %650 = load double, ptr %649, align 8, !tbaa !24
  %651 = fcmp oge double %643, %650
  br i1 %651, label %652, label %653

652:                                              ; preds = %636
  store i32 -22, ptr %21, align 4, !tbaa !9
  br label %2883

653:                                              ; preds = %636, %627, %618, %610
  br label %654

654:                                              ; preds = %653
  %655 = load i32, ptr %19, align 4, !tbaa !9
  %656 = add nsw i32 %655, 1
  store i32 %656, ptr %19, align 4, !tbaa !9
  br label %559, !llvm.loop !45

657:                                              ; preds = %559
  %658 = load i32, ptr %23, align 4, !tbaa !9
  %659 = sext i32 %658 to i64
  %660 = mul i64 4, %659
  %661 = call noalias ptr @malloc(i64 noundef %660) #6
  store ptr %661, ptr %57, align 8, !tbaa !5
  %662 = load ptr, ptr %57, align 8, !tbaa !5
  %663 = icmp eq ptr %662, null
  br i1 %663, label %664, label %665

664:                                              ; preds = %657
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

665:                                              ; preds = %657
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #5
  store i32 0, ptr %83, align 4, !tbaa !9
  br label %666

666:                                              ; preds = %675, %665
  %667 = load i32, ptr %83, align 4, !tbaa !9
  %668 = load i32, ptr %23, align 4, !tbaa !9
  %669 = icmp slt i32 %667, %668
  br i1 %669, label %670, label %678

670:                                              ; preds = %666
  %671 = load ptr, ptr %57, align 8, !tbaa !5
  %672 = load i32, ptr %83, align 4, !tbaa !9
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds i32, ptr %671, i64 %673
  store i32 0, ptr %674, align 4, !tbaa !9
  br label %675

675:                                              ; preds = %670
  %676 = load i32, ptr %83, align 4, !tbaa !9
  %677 = add nsw i32 %676, 1
  store i32 %677, ptr %83, align 4, !tbaa !9
  br label %666, !llvm.loop !46

678:                                              ; preds = %666
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #5
  br label %679

679:                                              ; preds = %678
  %680 = load i32, ptr %23, align 4, !tbaa !9
  %681 = sext i32 %680 to i64
  %682 = mul i64 4, %681
  %683 = call noalias ptr @malloc(i64 noundef %682) #6
  store ptr %683, ptr %56, align 8, !tbaa !5
  %684 = load ptr, ptr %56, align 8, !tbaa !5
  %685 = icmp eq ptr %684, null
  br i1 %685, label %686, label %687

686:                                              ; preds = %679
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

687:                                              ; preds = %679
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #5
  store i32 0, ptr %84, align 4, !tbaa !9
  br label %688

688:                                              ; preds = %697, %687
  %689 = load i32, ptr %84, align 4, !tbaa !9
  %690 = load i32, ptr %23, align 4, !tbaa !9
  %691 = icmp slt i32 %689, %690
  br i1 %691, label %692, label %700

692:                                              ; preds = %688
  %693 = load ptr, ptr %56, align 8, !tbaa !5
  %694 = load i32, ptr %84, align 4, !tbaa !9
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds i32, ptr %693, i64 %695
  store i32 0, ptr %696, align 4, !tbaa !9
  br label %697

697:                                              ; preds = %692
  %698 = load i32, ptr %84, align 4, !tbaa !9
  %699 = add nsw i32 %698, 1
  store i32 %699, ptr %84, align 4, !tbaa !9
  br label %688, !llvm.loop !47

700:                                              ; preds = %688
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #5
  br label %701

701:                                              ; preds = %700
  %702 = load i32, ptr %23, align 4, !tbaa !9
  %703 = sext i32 %702 to i64
  %704 = mul i64 8, %703
  %705 = call noalias ptr @malloc(i64 noundef %704) #6
  store ptr %705, ptr %52, align 8, !tbaa !5
  %706 = load ptr, ptr %52, align 8, !tbaa !5
  %707 = icmp eq ptr %706, null
  br i1 %707, label %708, label %709

708:                                              ; preds = %701
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

709:                                              ; preds = %701
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #5
  store i32 0, ptr %85, align 4, !tbaa !9
  br label %710

710:                                              ; preds = %719, %709
  %711 = load i32, ptr %85, align 4, !tbaa !9
  %712 = load i32, ptr %23, align 4, !tbaa !9
  %713 = icmp slt i32 %711, %712
  br i1 %713, label %714, label %722

714:                                              ; preds = %710
  %715 = load ptr, ptr %52, align 8, !tbaa !5
  %716 = load i32, ptr %85, align 4, !tbaa !9
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds double, ptr %715, i64 %717
  store double 0.000000e+00, ptr %718, align 8, !tbaa !24
  br label %719

719:                                              ; preds = %714
  %720 = load i32, ptr %85, align 4, !tbaa !9
  %721 = add nsw i32 %720, 1
  store i32 %721, ptr %85, align 4, !tbaa !9
  br label %710, !llvm.loop !48

722:                                              ; preds = %710
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #5
  br label %723

723:                                              ; preds = %722
  %724 = load i32, ptr %23, align 4, !tbaa !9
  %725 = sext i32 %724 to i64
  %726 = mul i64 8, %725
  %727 = call noalias ptr @malloc(i64 noundef %726) #6
  store ptr %727, ptr %51, align 8, !tbaa !5
  %728 = load ptr, ptr %51, align 8, !tbaa !5
  %729 = icmp eq ptr %728, null
  br i1 %729, label %730, label %731

730:                                              ; preds = %723
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

731:                                              ; preds = %723
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #5
  store i32 0, ptr %86, align 4, !tbaa !9
  br label %732

732:                                              ; preds = %741, %731
  %733 = load i32, ptr %86, align 4, !tbaa !9
  %734 = load i32, ptr %23, align 4, !tbaa !9
  %735 = icmp slt i32 %733, %734
  br i1 %735, label %736, label %744

736:                                              ; preds = %732
  %737 = load ptr, ptr %51, align 8, !tbaa !5
  %738 = load i32, ptr %86, align 4, !tbaa !9
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds double, ptr %737, i64 %739
  store double 0.000000e+00, ptr %740, align 8, !tbaa !24
  br label %741

741:                                              ; preds = %736
  %742 = load i32, ptr %86, align 4, !tbaa !9
  %743 = add nsw i32 %742, 1
  store i32 %743, ptr %86, align 4, !tbaa !9
  br label %732, !llvm.loop !49

744:                                              ; preds = %732
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #5
  br label %745

745:                                              ; preds = %744
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %746

746:                                              ; preds = %826, %745
  %747 = load i32, ptr %19, align 4, !tbaa !9
  %748 = load i32, ptr %23, align 4, !tbaa !9
  %749 = icmp slt i32 %747, %748
  br i1 %749, label %750, label %829

750:                                              ; preds = %746
  %751 = load ptr, ptr %14, align 8, !tbaa !5
  %752 = load ptr, ptr %55, align 8, !tbaa !5
  %753 = load i32, ptr %19, align 4, !tbaa !9
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds i32, ptr %752, i64 %754
  %756 = load i32, ptr %755, align 4, !tbaa !9
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds %struct.mp_par_struct, ptr %751, i64 %757
  %759 = getelementptr inbounds %struct.mp_par_struct, ptr %758, i32 0, i32 1
  %760 = getelementptr inbounds [2 x i32], ptr %759, i64 0, i64 0
  %761 = load i32, ptr %760, align 4, !tbaa !9
  %762 = load ptr, ptr %56, align 8, !tbaa !5
  %763 = load i32, ptr %19, align 4, !tbaa !9
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds i32, ptr %762, i64 %764
  store i32 %761, ptr %765, align 4, !tbaa !9
  %766 = load ptr, ptr %14, align 8, !tbaa !5
  %767 = load ptr, ptr %55, align 8, !tbaa !5
  %768 = load i32, ptr %19, align 4, !tbaa !9
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds i32, ptr %767, i64 %769
  %771 = load i32, ptr %770, align 4, !tbaa !9
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds %struct.mp_par_struct, ptr %766, i64 %772
  %774 = getelementptr inbounds %struct.mp_par_struct, ptr %773, i32 0, i32 1
  %775 = getelementptr inbounds [2 x i32], ptr %774, i64 0, i64 1
  %776 = load i32, ptr %775, align 4, !tbaa !9
  %777 = load ptr, ptr %57, align 8, !tbaa !5
  %778 = load i32, ptr %19, align 4, !tbaa !9
  %779 = sext i32 %778 to i64
  %780 = getelementptr inbounds i32, ptr %777, i64 %779
  store i32 %776, ptr %780, align 4, !tbaa !9
  %781 = load ptr, ptr %14, align 8, !tbaa !5
  %782 = load ptr, ptr %55, align 8, !tbaa !5
  %783 = load i32, ptr %19, align 4, !tbaa !9
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds i32, ptr %782, i64 %784
  %786 = load i32, ptr %785, align 4, !tbaa !9
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds %struct.mp_par_struct, ptr %781, i64 %787
  %789 = getelementptr inbounds %struct.mp_par_struct, ptr %788, i32 0, i32 2
  %790 = getelementptr inbounds [2 x double], ptr %789, i64 0, i64 0
  %791 = load double, ptr %790, align 8, !tbaa !24
  %792 = load ptr, ptr %51, align 8, !tbaa !5
  %793 = load i32, ptr %19, align 4, !tbaa !9
  %794 = sext i32 %793 to i64
  %795 = getelementptr inbounds double, ptr %792, i64 %794
  store double %791, ptr %795, align 8, !tbaa !24
  %796 = load ptr, ptr %14, align 8, !tbaa !5
  %797 = load ptr, ptr %55, align 8, !tbaa !5
  %798 = load i32, ptr %19, align 4, !tbaa !9
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds i32, ptr %797, i64 %799
  %801 = load i32, ptr %800, align 4, !tbaa !9
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds %struct.mp_par_struct, ptr %796, i64 %802
  %804 = getelementptr inbounds %struct.mp_par_struct, ptr %803, i32 0, i32 2
  %805 = getelementptr inbounds [2 x double], ptr %804, i64 0, i64 1
  %806 = load double, ptr %805, align 8, !tbaa !24
  %807 = load ptr, ptr %52, align 8, !tbaa !5
  %808 = load i32, ptr %19, align 4, !tbaa !9
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds double, ptr %807, i64 %809
  store double %806, ptr %810, align 8, !tbaa !24
  %811 = load ptr, ptr %56, align 8, !tbaa !5
  %812 = load i32, ptr %19, align 4, !tbaa !9
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds i32, ptr %811, i64 %813
  %815 = load i32, ptr %814, align 4, !tbaa !9
  %816 = icmp ne i32 %815, 0
  br i1 %816, label %824, label %817

817:                                              ; preds = %750
  %818 = load ptr, ptr %57, align 8, !tbaa !5
  %819 = load i32, ptr %19, align 4, !tbaa !9
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds i32, ptr %818, i64 %820
  %822 = load i32, ptr %821, align 4, !tbaa !9
  %823 = icmp ne i32 %822, 0
  br i1 %823, label %824, label %825

824:                                              ; preds = %817, %750
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %825

825:                                              ; preds = %824, %817
  br label %826

826:                                              ; preds = %825
  %827 = load i32, ptr %19, align 4, !tbaa !9
  %828 = add nsw i32 %827, 1
  store i32 %828, ptr %19, align 4, !tbaa !9
  br label %746, !llvm.loop !50

829:                                              ; preds = %746
  br label %830

830:                                              ; preds = %829, %555
  %831 = load i32, ptr %12, align 4, !tbaa !9
  %832 = icmp sle i32 %831, 0
  br i1 %832, label %853, label %833

833:                                              ; preds = %830
  %834 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 0
  %835 = load double, ptr %834, align 8, !tbaa !11
  %836 = fcmp ole double %835, 0.000000e+00
  br i1 %836, label %853, label %837

837:                                              ; preds = %833
  %838 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 1
  %839 = load double, ptr %838, align 8, !tbaa !14
  %840 = fcmp ole double %839, 0.000000e+00
  br i1 %840, label %853, label %841

841:                                              ; preds = %837
  %842 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 2
  %843 = load double, ptr %842, align 8, !tbaa !15
  %844 = fcmp ole double %843, 0.000000e+00
  br i1 %844, label %853, label %845

845:                                              ; preds = %841
  %846 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 6
  %847 = load i32, ptr %846, align 8, !tbaa !19
  %848 = icmp slt i32 %847, 0
  br i1 %848, label %853, label %849

849:                                              ; preds = %845
  %850 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 4
  %851 = load double, ptr %850, align 8, !tbaa !16
  %852 = fcmp ole double %851, 0.000000e+00
  br i1 %852, label %853, label %854

853:                                              ; preds = %849, %845, %841, %837, %833, %830
  store i32 -23, ptr %21, align 4, !tbaa !9
  br label %2883

854:                                              ; preds = %849
  %855 = load i32, ptr %11, align 4, !tbaa !9
  %856 = load i32, ptr %23, align 4, !tbaa !9
  %857 = icmp slt i32 %855, %856
  br i1 %857, label %858, label %859

858:                                              ; preds = %854
  store i32 -24, ptr %21, align 4, !tbaa !9
  br label %2883

859:                                              ; preds = %854
  %860 = load i32, ptr %11, align 4, !tbaa !9
  %861 = sext i32 %860 to i64
  %862 = mul i64 8, %861
  %863 = call noalias ptr @malloc(i64 noundef %862) #6
  store ptr %863, ptr %61, align 8, !tbaa !5
  %864 = load ptr, ptr %61, align 8, !tbaa !5
  %865 = icmp eq ptr %864, null
  br i1 %865, label %866, label %867

866:                                              ; preds = %859
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

867:                                              ; preds = %859
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #5
  store i32 0, ptr %87, align 4, !tbaa !9
  br label %868

868:                                              ; preds = %877, %867
  %869 = load i32, ptr %87, align 4, !tbaa !9
  %870 = load i32, ptr %11, align 4, !tbaa !9
  %871 = icmp slt i32 %869, %870
  br i1 %871, label %872, label %880

872:                                              ; preds = %868
  %873 = load ptr, ptr %61, align 8, !tbaa !5
  %874 = load i32, ptr %87, align 4, !tbaa !9
  %875 = sext i32 %874 to i64
  %876 = getelementptr inbounds double, ptr %873, i64 %875
  store double 0.000000e+00, ptr %876, align 8, !tbaa !24
  br label %877

877:                                              ; preds = %872
  %878 = load i32, ptr %87, align 4, !tbaa !9
  %879 = add nsw i32 %878, 1
  store i32 %879, ptr %87, align 4, !tbaa !9
  br label %868, !llvm.loop !51

880:                                              ; preds = %868
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #5
  br label %881

881:                                              ; preds = %880
  %882 = load i32, ptr %23, align 4, !tbaa !9
  %883 = sext i32 %882 to i64
  %884 = mul i64 8, %883
  %885 = call noalias ptr @malloc(i64 noundef %884) #6
  store ptr %885, ptr %62, align 8, !tbaa !5
  %886 = load ptr, ptr %62, align 8, !tbaa !5
  %887 = icmp eq ptr %886, null
  br i1 %887, label %888, label %889

888:                                              ; preds = %881
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

889:                                              ; preds = %881
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #5
  store i32 0, ptr %88, align 4, !tbaa !9
  br label %890

890:                                              ; preds = %899, %889
  %891 = load i32, ptr %88, align 4, !tbaa !9
  %892 = load i32, ptr %23, align 4, !tbaa !9
  %893 = icmp slt i32 %891, %892
  br i1 %893, label %894, label %902

894:                                              ; preds = %890
  %895 = load ptr, ptr %62, align 8, !tbaa !5
  %896 = load i32, ptr %88, align 4, !tbaa !9
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds double, ptr %895, i64 %897
  store double 0.000000e+00, ptr %898, align 8, !tbaa !24
  br label %899

899:                                              ; preds = %894
  %900 = load i32, ptr %88, align 4, !tbaa !9
  %901 = add nsw i32 %900, 1
  store i32 %901, ptr %88, align 4, !tbaa !9
  br label %890, !llvm.loop !52

902:                                              ; preds = %890
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #5
  br label %903

903:                                              ; preds = %902
  %904 = load i32, ptr %23, align 4, !tbaa !9
  %905 = sext i32 %904 to i64
  %906 = mul i64 8, %905
  %907 = call noalias ptr @malloc(i64 noundef %906) #6
  store ptr %907, ptr %63, align 8, !tbaa !5
  %908 = load ptr, ptr %63, align 8, !tbaa !5
  %909 = icmp eq ptr %908, null
  br i1 %909, label %910, label %911

910:                                              ; preds = %903
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

911:                                              ; preds = %903
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #5
  store i32 0, ptr %89, align 4, !tbaa !9
  br label %912

912:                                              ; preds = %921, %911
  %913 = load i32, ptr %89, align 4, !tbaa !9
  %914 = load i32, ptr %23, align 4, !tbaa !9
  %915 = icmp slt i32 %913, %914
  br i1 %915, label %916, label %924

916:                                              ; preds = %912
  %917 = load ptr, ptr %63, align 8, !tbaa !5
  %918 = load i32, ptr %89, align 4, !tbaa !9
  %919 = sext i32 %918 to i64
  %920 = getelementptr inbounds double, ptr %917, i64 %919
  store double 0.000000e+00, ptr %920, align 8, !tbaa !24
  br label %921

921:                                              ; preds = %916
  %922 = load i32, ptr %89, align 4, !tbaa !9
  %923 = add nsw i32 %922, 1
  store i32 %923, ptr %89, align 4, !tbaa !9
  br label %912, !llvm.loop !53

924:                                              ; preds = %912
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #5
  br label %925

925:                                              ; preds = %924
  %926 = load i32, ptr %12, align 4, !tbaa !9
  %927 = sext i32 %926 to i64
  %928 = mul i64 8, %927
  %929 = call noalias ptr @malloc(i64 noundef %928) #6
  store ptr %929, ptr %64, align 8, !tbaa !5
  %930 = load ptr, ptr %64, align 8, !tbaa !5
  %931 = icmp eq ptr %930, null
  br i1 %931, label %932, label %933

932:                                              ; preds = %925
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

933:                                              ; preds = %925
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #5
  store i32 0, ptr %90, align 4, !tbaa !9
  br label %934

934:                                              ; preds = %943, %933
  %935 = load i32, ptr %90, align 4, !tbaa !9
  %936 = load i32, ptr %12, align 4, !tbaa !9
  %937 = icmp slt i32 %935, %936
  br i1 %937, label %938, label %946

938:                                              ; preds = %934
  %939 = load ptr, ptr %64, align 8, !tbaa !5
  %940 = load i32, ptr %90, align 4, !tbaa !9
  %941 = sext i32 %940 to i64
  %942 = getelementptr inbounds double, ptr %939, i64 %941
  store double 0.000000e+00, ptr %942, align 8, !tbaa !24
  br label %943

943:                                              ; preds = %938
  %944 = load i32, ptr %90, align 4, !tbaa !9
  %945 = add nsw i32 %944, 1
  store i32 %945, ptr %90, align 4, !tbaa !9
  br label %934, !llvm.loop !54

946:                                              ; preds = %934
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #5
  br label %947

947:                                              ; preds = %946
  %948 = load i32, ptr %11, align 4, !tbaa !9
  %949 = sext i32 %948 to i64
  %950 = mul i64 8, %949
  %951 = load i32, ptr %23, align 4, !tbaa !9
  %952 = sext i32 %951 to i64
  %953 = mul i64 %950, %952
  %954 = call noalias ptr @malloc(i64 noundef %953) #6
  store ptr %954, ptr %65, align 8, !tbaa !5
  %955 = load ptr, ptr %65, align 8, !tbaa !5
  %956 = icmp eq ptr %955, null
  br i1 %956, label %957, label %958

957:                                              ; preds = %947
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

958:                                              ; preds = %947
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #5
  store i32 0, ptr %91, align 4, !tbaa !9
  br label %959

959:                                              ; preds = %970, %958
  %960 = load i32, ptr %91, align 4, !tbaa !9
  %961 = load i32, ptr %11, align 4, !tbaa !9
  %962 = load i32, ptr %23, align 4, !tbaa !9
  %963 = mul nsw i32 %961, %962
  %964 = icmp slt i32 %960, %963
  br i1 %964, label %965, label %973

965:                                              ; preds = %959
  %966 = load ptr, ptr %65, align 8, !tbaa !5
  %967 = load i32, ptr %91, align 4, !tbaa !9
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds double, ptr %966, i64 %968
  store double 0.000000e+00, ptr %969, align 8, !tbaa !24
  br label %970

970:                                              ; preds = %965
  %971 = load i32, ptr %91, align 4, !tbaa !9
  %972 = add nsw i32 %971, 1
  store i32 %972, ptr %91, align 4, !tbaa !9
  br label %959, !llvm.loop !55

973:                                              ; preds = %959
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #5
  br label %974

974:                                              ; preds = %973
  %975 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %975, ptr %73, align 4, !tbaa !9
  %976 = load i32, ptr %12, align 4, !tbaa !9
  %977 = sext i32 %976 to i64
  %978 = mul i64 8, %977
  %979 = call noalias ptr @malloc(i64 noundef %978) #6
  store ptr %979, ptr %66, align 8, !tbaa !5
  %980 = load ptr, ptr %66, align 8, !tbaa !5
  %981 = icmp eq ptr %980, null
  br i1 %981, label %982, label %983

982:                                              ; preds = %974
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

983:                                              ; preds = %974
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #5
  store i32 0, ptr %92, align 4, !tbaa !9
  br label %984

984:                                              ; preds = %993, %983
  %985 = load i32, ptr %92, align 4, !tbaa !9
  %986 = load i32, ptr %12, align 4, !tbaa !9
  %987 = icmp slt i32 %985, %986
  br i1 %987, label %988, label %996

988:                                              ; preds = %984
  %989 = load ptr, ptr %66, align 8, !tbaa !5
  %990 = load i32, ptr %92, align 4, !tbaa !9
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds double, ptr %989, i64 %991
  store double 0.000000e+00, ptr %992, align 8, !tbaa !24
  br label %993

993:                                              ; preds = %988
  %994 = load i32, ptr %92, align 4, !tbaa !9
  %995 = add nsw i32 %994, 1
  store i32 %995, ptr %92, align 4, !tbaa !9
  br label %984, !llvm.loop !56

996:                                              ; preds = %984
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #5
  br label %997

997:                                              ; preds = %996
  %998 = load i32, ptr %12, align 4, !tbaa !9
  %999 = sext i32 %998 to i64
  %1000 = mul i64 8, %999
  %1001 = call noalias ptr @malloc(i64 noundef %1000) #6
  store ptr %1001, ptr %67, align 8, !tbaa !5
  %1002 = load ptr, ptr %67, align 8, !tbaa !5
  %1003 = icmp eq ptr %1002, null
  br i1 %1003, label %1004, label %1005

1004:                                             ; preds = %997
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

1005:                                             ; preds = %997
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #5
  store i32 0, ptr %93, align 4, !tbaa !9
  br label %1006

1006:                                             ; preds = %1015, %1005
  %1007 = load i32, ptr %93, align 4, !tbaa !9
  %1008 = load i32, ptr %12, align 4, !tbaa !9
  %1009 = icmp slt i32 %1007, %1008
  br i1 %1009, label %1010, label %1018

1010:                                             ; preds = %1006
  %1011 = load ptr, ptr %67, align 8, !tbaa !5
  %1012 = load i32, ptr %93, align 4, !tbaa !9
  %1013 = sext i32 %1012 to i64
  %1014 = getelementptr inbounds double, ptr %1011, i64 %1013
  store double 0.000000e+00, ptr %1014, align 8, !tbaa !24
  br label %1015

1015:                                             ; preds = %1010
  %1016 = load i32, ptr %93, align 4, !tbaa !9
  %1017 = add nsw i32 %1016, 1
  store i32 %1017, ptr %93, align 4, !tbaa !9
  br label %1006, !llvm.loop !57

1018:                                             ; preds = %1006
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #5
  br label %1019

1019:                                             ; preds = %1018
  %1020 = load i32, ptr %11, align 4, !tbaa !9
  %1021 = sext i32 %1020 to i64
  %1022 = mul i64 8, %1021
  %1023 = call noalias ptr @malloc(i64 noundef %1022) #6
  store ptr %1023, ptr %68, align 8, !tbaa !5
  %1024 = load ptr, ptr %68, align 8, !tbaa !5
  %1025 = icmp eq ptr %1024, null
  br i1 %1025, label %1026, label %1027

1026:                                             ; preds = %1019
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

1027:                                             ; preds = %1019
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #5
  store i32 0, ptr %94, align 4, !tbaa !9
  br label %1028

1028:                                             ; preds = %1037, %1027
  %1029 = load i32, ptr %94, align 4, !tbaa !9
  %1030 = load i32, ptr %11, align 4, !tbaa !9
  %1031 = icmp slt i32 %1029, %1030
  br i1 %1031, label %1032, label %1040

1032:                                             ; preds = %1028
  %1033 = load ptr, ptr %68, align 8, !tbaa !5
  %1034 = load i32, ptr %94, align 4, !tbaa !9
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds double, ptr %1033, i64 %1035
  store double 0.000000e+00, ptr %1036, align 8, !tbaa !24
  br label %1037

1037:                                             ; preds = %1032
  %1038 = load i32, ptr %94, align 4, !tbaa !9
  %1039 = add nsw i32 %1038, 1
  store i32 %1039, ptr %94, align 4, !tbaa !9
  br label %1028, !llvm.loop !58

1040:                                             ; preds = %1028
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #5
  br label %1041

1041:                                             ; preds = %1040
  %1042 = load i32, ptr %12, align 4, !tbaa !9
  %1043 = sext i32 %1042 to i64
  %1044 = mul i64 8, %1043
  %1045 = call noalias ptr @malloc(i64 noundef %1044) #6
  store ptr %1045, ptr %69, align 8, !tbaa !5
  %1046 = load ptr, ptr %69, align 8, !tbaa !5
  %1047 = icmp eq ptr %1046, null
  br i1 %1047, label %1048, label %1049

1048:                                             ; preds = %1041
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

1049:                                             ; preds = %1041
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #5
  store i32 0, ptr %95, align 4, !tbaa !9
  br label %1050

1050:                                             ; preds = %1059, %1049
  %1051 = load i32, ptr %95, align 4, !tbaa !9
  %1052 = load i32, ptr %12, align 4, !tbaa !9
  %1053 = icmp slt i32 %1051, %1052
  br i1 %1053, label %1054, label %1062

1054:                                             ; preds = %1050
  %1055 = load ptr, ptr %69, align 8, !tbaa !5
  %1056 = load i32, ptr %95, align 4, !tbaa !9
  %1057 = sext i32 %1056 to i64
  %1058 = getelementptr inbounds double, ptr %1055, i64 %1057
  store double 0.000000e+00, ptr %1058, align 8, !tbaa !24
  br label %1059

1059:                                             ; preds = %1054
  %1060 = load i32, ptr %95, align 4, !tbaa !9
  %1061 = add nsw i32 %1060, 1
  store i32 %1061, ptr %95, align 4, !tbaa !9
  br label %1050, !llvm.loop !59

1062:                                             ; preds = %1050
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #5
  br label %1063

1063:                                             ; preds = %1062
  %1064 = load i32, ptr %11, align 4, !tbaa !9
  %1065 = sext i32 %1064 to i64
  %1066 = mul i64 8, %1065
  %1067 = call noalias ptr @malloc(i64 noundef %1066) #6
  store ptr %1067, ptr %70, align 8, !tbaa !5
  %1068 = load ptr, ptr %70, align 8, !tbaa !5
  %1069 = icmp eq ptr %1068, null
  br i1 %1069, label %1070, label %1071

1070:                                             ; preds = %1063
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

1071:                                             ; preds = %1063
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #5
  store i32 0, ptr %96, align 4, !tbaa !9
  br label %1072

1072:                                             ; preds = %1081, %1071
  %1073 = load i32, ptr %96, align 4, !tbaa !9
  %1074 = load i32, ptr %11, align 4, !tbaa !9
  %1075 = icmp slt i32 %1073, %1074
  br i1 %1075, label %1076, label %1084

1076:                                             ; preds = %1072
  %1077 = load ptr, ptr %70, align 8, !tbaa !5
  %1078 = load i32, ptr %96, align 4, !tbaa !9
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds double, ptr %1077, i64 %1079
  store double 0.000000e+00, ptr %1080, align 8, !tbaa !24
  br label %1081

1081:                                             ; preds = %1076
  %1082 = load i32, ptr %96, align 4, !tbaa !9
  %1083 = add nsw i32 %1082, 1
  store i32 %1083, ptr %96, align 4, !tbaa !9
  br label %1072, !llvm.loop !60

1084:                                             ; preds = %1072
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #5
  br label %1085

1085:                                             ; preds = %1084
  %1086 = load i32, ptr %12, align 4, !tbaa !9
  %1087 = sext i32 %1086 to i64
  %1088 = mul i64 4, %1087
  %1089 = call noalias ptr @malloc(i64 noundef %1088) #6
  store ptr %1089, ptr %72, align 8, !tbaa !5
  %1090 = load ptr, ptr %72, align 8, !tbaa !5
  %1091 = icmp eq ptr %1090, null
  br i1 %1091, label %1092, label %1093

1092:                                             ; preds = %1085
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

1093:                                             ; preds = %1085
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #5
  store i32 0, ptr %97, align 4, !tbaa !9
  br label %1094

1094:                                             ; preds = %1103, %1093
  %1095 = load i32, ptr %97, align 4, !tbaa !9
  %1096 = load i32, ptr %12, align 4, !tbaa !9
  %1097 = icmp slt i32 %1095, %1096
  br i1 %1097, label %1098, label %1106

1098:                                             ; preds = %1094
  %1099 = load ptr, ptr %72, align 8, !tbaa !5
  %1100 = load i32, ptr %97, align 4, !tbaa !9
  %1101 = sext i32 %1100 to i64
  %1102 = getelementptr inbounds i32, ptr %1099, i64 %1101
  store i32 0, ptr %1102, align 4, !tbaa !9
  br label %1103

1103:                                             ; preds = %1098
  %1104 = load i32, ptr %97, align 4, !tbaa !9
  %1105 = add nsw i32 %1104, 1
  store i32 %1105, ptr %97, align 4, !tbaa !9
  br label %1094, !llvm.loop !61

1106:                                             ; preds = %1094
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #5
  br label %1107

1107:                                             ; preds = %1106
  %1108 = load i32, ptr %12, align 4, !tbaa !9
  %1109 = sext i32 %1108 to i64
  %1110 = mul i64 8, %1109
  %1111 = call noalias ptr @malloc(i64 noundef %1110) #6
  store ptr %1111, ptr %71, align 8, !tbaa !5
  %1112 = load ptr, ptr %71, align 8, !tbaa !5
  %1113 = icmp eq ptr %1112, null
  br i1 %1113, label %1114, label %1115

1114:                                             ; preds = %1107
  store i32 -20, ptr %21, align 4, !tbaa !9
  br label %2883

1115:                                             ; preds = %1107
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #5
  store i32 0, ptr %98, align 4, !tbaa !9
  br label %1116

1116:                                             ; preds = %1125, %1115
  %1117 = load i32, ptr %98, align 4, !tbaa !9
  %1118 = load i32, ptr %12, align 4, !tbaa !9
  %1119 = icmp slt i32 %1117, %1118
  br i1 %1119, label %1120, label %1128

1120:                                             ; preds = %1116
  %1121 = load ptr, ptr %71, align 8, !tbaa !5
  %1122 = load i32, ptr %98, align 4, !tbaa !9
  %1123 = sext i32 %1122 to i64
  %1124 = getelementptr inbounds ptr, ptr %1121, i64 %1123
  store ptr null, ptr %1124, align 8, !tbaa !5
  br label %1125

1125:                                             ; preds = %1120
  %1126 = load i32, ptr %98, align 4, !tbaa !9
  %1127 = add nsw i32 %1126, 1
  store i32 %1127, ptr %98, align 4, !tbaa !9
  br label %1116, !llvm.loop !62

1128:                                             ; preds = %1116
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #5
  br label %1129

1129:                                             ; preds = %1128
  %1130 = load ptr, ptr %10, align 8, !tbaa !5
  %1131 = load i32, ptr %11, align 4, !tbaa !9
  %1132 = load i32, ptr %12, align 4, !tbaa !9
  %1133 = load ptr, ptr %13, align 8, !tbaa !5
  %1134 = load ptr, ptr %61, align 8, !tbaa !5
  %1135 = load ptr, ptr %16, align 8, !tbaa !5
  %1136 = call i32 %1130(i32 noundef %1131, i32 noundef %1132, ptr noundef %1133, ptr noundef %1134, ptr noundef null, ptr noundef %1135)
  store i32 %1136, ptr %22, align 4, !tbaa !9
  %1137 = load i32, ptr %48, align 4, !tbaa !9
  %1138 = add nsw i32 %1137, 1
  store i32 %1138, ptr %48, align 4, !tbaa !9
  %1139 = load i32, ptr %22, align 4, !tbaa !9
  %1140 = icmp slt i32 %1139, 0
  br i1 %1140, label %1141, label %1142

1141:                                             ; preds = %1129
  br label %2883

1142:                                             ; preds = %1129
  %1143 = load i32, ptr %11, align 4, !tbaa !9
  %1144 = load ptr, ptr %61, align 8, !tbaa !5
  %1145 = call double @mp_enorm(i32 noundef %1143, ptr noundef %1144)
  store double %1145, ptr %33, align 8, !tbaa !24
  %1146 = load double, ptr %33, align 8, !tbaa !24
  %1147 = load double, ptr %33, align 8, !tbaa !24
  %1148 = fmul double %1146, %1147
  store double %1148, ptr %36, align 8, !tbaa !24
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1149

1149:                                             ; preds = %1163, %1142
  %1150 = load i32, ptr %19, align 4, !tbaa !9
  %1151 = load i32, ptr %12, align 4, !tbaa !9
  %1152 = icmp slt i32 %1150, %1151
  br i1 %1152, label %1153, label %1166

1153:                                             ; preds = %1149
  %1154 = load ptr, ptr %13, align 8, !tbaa !5
  %1155 = load i32, ptr %19, align 4, !tbaa !9
  %1156 = sext i32 %1155 to i64
  %1157 = getelementptr inbounds double, ptr %1154, i64 %1156
  %1158 = load double, ptr %1157, align 8, !tbaa !24
  %1159 = load ptr, ptr %64, align 8, !tbaa !5
  %1160 = load i32, ptr %19, align 4, !tbaa !9
  %1161 = sext i32 %1160 to i64
  %1162 = getelementptr inbounds double, ptr %1159, i64 %1161
  store double %1158, ptr %1162, align 8, !tbaa !24
  br label %1163

1163:                                             ; preds = %1153
  %1164 = load i32, ptr %19, align 4, !tbaa !9
  %1165 = add nsw i32 %1164, 1
  store i32 %1165, ptr %19, align 4, !tbaa !9
  br label %1149, !llvm.loop !63

1166:                                             ; preds = %1149
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1167

1167:                                             ; preds = %1185, %1166
  %1168 = load i32, ptr %19, align 4, !tbaa !9
  %1169 = load i32, ptr %23, align 4, !tbaa !9
  %1170 = icmp slt i32 %1168, %1169
  br i1 %1170, label %1171, label %1188

1171:                                             ; preds = %1167
  %1172 = load ptr, ptr %13, align 8, !tbaa !5
  %1173 = load ptr, ptr %55, align 8, !tbaa !5
  %1174 = load i32, ptr %19, align 4, !tbaa !9
  %1175 = sext i32 %1174 to i64
  %1176 = getelementptr inbounds i32, ptr %1173, i64 %1175
  %1177 = load i32, ptr %1176, align 4, !tbaa !9
  %1178 = sext i32 %1177 to i64
  %1179 = getelementptr inbounds double, ptr %1172, i64 %1178
  %1180 = load double, ptr %1179, align 8, !tbaa !24
  %1181 = load ptr, ptr %63, align 8, !tbaa !5
  %1182 = load i32, ptr %19, align 4, !tbaa !9
  %1183 = sext i32 %1182 to i64
  %1184 = getelementptr inbounds double, ptr %1181, i64 %1183
  store double %1180, ptr %1184, align 8, !tbaa !24
  br label %1185

1185:                                             ; preds = %1171
  %1186 = load i32, ptr %19, align 4, !tbaa !9
  %1187 = add nsw i32 %1186, 1
  store i32 %1187, ptr %19, align 4, !tbaa !9
  br label %1167, !llvm.loop !64

1188:                                             ; preds = %1167
  store double 0.000000e+00, ptr %37, align 8, !tbaa !24
  store i32 1, ptr %25, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1189

1189:                                             ; preds = %1198, %1188
  %1190 = load i32, ptr %19, align 4, !tbaa !9
  %1191 = load i32, ptr %23, align 4, !tbaa !9
  %1192 = icmp slt i32 %1190, %1191
  br i1 %1192, label %1193, label %1201

1193:                                             ; preds = %1189
  %1194 = load ptr, ptr %62, align 8, !tbaa !5
  %1195 = load i32, ptr %19, align 4, !tbaa !9
  %1196 = sext i32 %1195 to i64
  %1197 = getelementptr inbounds double, ptr %1194, i64 %1196
  store double 0.000000e+00, ptr %1197, align 8, !tbaa !24
  br label %1198

1198:                                             ; preds = %1193
  %1199 = load i32, ptr %19, align 4, !tbaa !9
  %1200 = add nsw i32 %1199, 1
  store i32 %1200, ptr %19, align 4, !tbaa !9
  br label %1189, !llvm.loop !65

1201:                                             ; preds = %1189
  br label %1202

1202:                                             ; preds = %2560, %1201
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1203

1203:                                             ; preds = %1221, %1202
  %1204 = load i32, ptr %19, align 4, !tbaa !9
  %1205 = load i32, ptr %23, align 4, !tbaa !9
  %1206 = icmp slt i32 %1204, %1205
  br i1 %1206, label %1207, label %1224

1207:                                             ; preds = %1203
  %1208 = load ptr, ptr %63, align 8, !tbaa !5
  %1209 = load i32, ptr %19, align 4, !tbaa !9
  %1210 = sext i32 %1209 to i64
  %1211 = getelementptr inbounds double, ptr %1208, i64 %1210
  %1212 = load double, ptr %1211, align 8, !tbaa !24
  %1213 = load ptr, ptr %64, align 8, !tbaa !5
  %1214 = load ptr, ptr %55, align 8, !tbaa !5
  %1215 = load i32, ptr %19, align 4, !tbaa !9
  %1216 = sext i32 %1215 to i64
  %1217 = getelementptr inbounds i32, ptr %1214, i64 %1216
  %1218 = load i32, ptr %1217, align 4, !tbaa !9
  %1219 = sext i32 %1218 to i64
  %1220 = getelementptr inbounds double, ptr %1213, i64 %1219
  store double %1212, ptr %1220, align 8, !tbaa !24
  br label %1221

1221:                                             ; preds = %1207
  %1222 = load i32, ptr %19, align 4, !tbaa !9
  %1223 = add nsw i32 %1222, 1
  store i32 %1223, ptr %19, align 4, !tbaa !9
  br label %1203, !llvm.loop !66

1224:                                             ; preds = %1203
  %1225 = load ptr, ptr %10, align 8, !tbaa !5
  %1226 = load i32, ptr %11, align 4, !tbaa !9
  %1227 = load i32, ptr %23, align 4, !tbaa !9
  %1228 = load ptr, ptr %55, align 8, !tbaa !5
  %1229 = load i32, ptr %12, align 4, !tbaa !9
  %1230 = load ptr, ptr %64, align 8, !tbaa !5
  %1231 = load ptr, ptr %61, align 8, !tbaa !5
  %1232 = load ptr, ptr %65, align 8, !tbaa !5
  %1233 = load i32, ptr %73, align 4, !tbaa !9
  %1234 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 3
  %1235 = load double, ptr %1234, align 8, !tbaa !18
  %1236 = load ptr, ptr %70, align 8, !tbaa !5
  %1237 = load ptr, ptr %16, align 8, !tbaa !5
  %1238 = load ptr, ptr %49, align 8, !tbaa !5
  %1239 = load ptr, ptr %50, align 8, !tbaa !5
  %1240 = load ptr, ptr %54, align 8, !tbaa !5
  %1241 = load ptr, ptr %57, align 8, !tbaa !5
  %1242 = load ptr, ptr %52, align 8, !tbaa !5
  %1243 = load ptr, ptr %58, align 8, !tbaa !5
  %1244 = load ptr, ptr %59, align 8, !tbaa !5
  %1245 = load ptr, ptr %60, align 8, !tbaa !5
  %1246 = load ptr, ptr %68, align 8, !tbaa !5
  %1247 = load ptr, ptr %71, align 8, !tbaa !5
  %1248 = call i32 @mp_fdjac2(ptr noundef %1225, i32 noundef %1226, i32 noundef %1227, ptr noundef %1228, i32 noundef %1229, ptr noundef %1230, ptr noundef %1231, ptr noundef %1232, i32 noundef %1233, double noundef %1235, ptr noundef %1236, ptr noundef %1237, ptr noundef %48, ptr noundef %1238, ptr noundef %1239, ptr noundef %1240, ptr noundef %1241, ptr noundef %1242, ptr noundef %1243, ptr noundef %1244, ptr noundef %1245, ptr noundef %1246, ptr noundef %1247)
  store i32 %1248, ptr %22, align 4, !tbaa !9
  %1249 = load i32, ptr %22, align 4, !tbaa !9
  %1250 = icmp slt i32 %1249, 0
  br i1 %1250, label %1251, label %1252

1251:                                             ; preds = %1224
  br label %2883

1252:                                             ; preds = %1224
  %1253 = load i32, ptr %26, align 4, !tbaa !9
  %1254 = icmp ne i32 %1253, 0
  br i1 %1254, label %1255, label %1390

1255:                                             ; preds = %1252
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %1256

1256:                                             ; preds = %1386, %1255
  %1257 = load i32, ptr %20, align 4, !tbaa !9
  %1258 = load i32, ptr %23, align 4, !tbaa !9
  %1259 = icmp slt i32 %1257, %1258
  br i1 %1259, label %1260, label %1389

1260:                                             ; preds = %1256
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #5
  %1261 = load ptr, ptr %56, align 8, !tbaa !5
  %1262 = load i32, ptr %20, align 4, !tbaa !9
  %1263 = sext i32 %1262 to i64
  %1264 = getelementptr inbounds i32, ptr %1261, i64 %1263
  %1265 = load i32, ptr %1264, align 4, !tbaa !9
  %1266 = icmp ne i32 %1265, 0
  br i1 %1266, label %1267, label %1279

1267:                                             ; preds = %1260
  %1268 = load ptr, ptr %63, align 8, !tbaa !5
  %1269 = load i32, ptr %20, align 4, !tbaa !9
  %1270 = sext i32 %1269 to i64
  %1271 = getelementptr inbounds double, ptr %1268, i64 %1270
  %1272 = load double, ptr %1271, align 8, !tbaa !24
  %1273 = load ptr, ptr %51, align 8, !tbaa !5
  %1274 = load i32, ptr %20, align 4, !tbaa !9
  %1275 = sext i32 %1274 to i64
  %1276 = getelementptr inbounds double, ptr %1273, i64 %1275
  %1277 = load double, ptr %1276, align 8, !tbaa !24
  %1278 = fcmp oeq double %1272, %1277
  br label %1279

1279:                                             ; preds = %1267, %1260
  %1280 = phi i1 [ false, %1260 ], [ %1278, %1267 ]
  %1281 = zext i1 %1280 to i32
  store i32 %1281, ptr %99, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #5
  %1282 = load ptr, ptr %57, align 8, !tbaa !5
  %1283 = load i32, ptr %20, align 4, !tbaa !9
  %1284 = sext i32 %1283 to i64
  %1285 = getelementptr inbounds i32, ptr %1282, i64 %1284
  %1286 = load i32, ptr %1285, align 4, !tbaa !9
  %1287 = icmp ne i32 %1286, 0
  br i1 %1287, label %1288, label %1300

1288:                                             ; preds = %1279
  %1289 = load ptr, ptr %63, align 8, !tbaa !5
  %1290 = load i32, ptr %20, align 4, !tbaa !9
  %1291 = sext i32 %1290 to i64
  %1292 = getelementptr inbounds double, ptr %1289, i64 %1291
  %1293 = load double, ptr %1292, align 8, !tbaa !24
  %1294 = load ptr, ptr %52, align 8, !tbaa !5
  %1295 = load i32, ptr %20, align 4, !tbaa !9
  %1296 = sext i32 %1295 to i64
  %1297 = getelementptr inbounds double, ptr %1294, i64 %1296
  %1298 = load double, ptr %1297, align 8, !tbaa !24
  %1299 = fcmp oeq double %1293, %1298
  br label %1300

1300:                                             ; preds = %1288, %1279
  %1301 = phi i1 [ false, %1279 ], [ %1299, %1288 ]
  %1302 = zext i1 %1301 to i32
  store i32 %1302, ptr %100, align 4, !tbaa !9
  store double 0.000000e+00, ptr %41, align 8, !tbaa !24
  %1303 = load i32, ptr %99, align 4, !tbaa !9
  %1304 = icmp ne i32 %1303, 0
  br i1 %1304, label %1308, label %1305

1305:                                             ; preds = %1300
  %1306 = load i32, ptr %100, align 4, !tbaa !9
  %1307 = icmp ne i32 %1306, 0
  br i1 %1307, label %1308, label %1335

1308:                                             ; preds = %1305, %1300
  %1309 = load i32, ptr %20, align 4, !tbaa !9
  %1310 = load i32, ptr %73, align 4, !tbaa !9
  %1311 = mul nsw i32 %1309, %1310
  store i32 %1311, ptr %27, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1312

1312:                                             ; preds = %1329, %1308
  %1313 = load i32, ptr %19, align 4, !tbaa !9
  %1314 = load i32, ptr %11, align 4, !tbaa !9
  %1315 = icmp slt i32 %1313, %1314
  br i1 %1315, label %1316, label %1334

1316:                                             ; preds = %1312
  %1317 = load ptr, ptr %61, align 8, !tbaa !5
  %1318 = load i32, ptr %19, align 4, !tbaa !9
  %1319 = sext i32 %1318 to i64
  %1320 = getelementptr inbounds double, ptr %1317, i64 %1319
  %1321 = load double, ptr %1320, align 8, !tbaa !24
  %1322 = load ptr, ptr %65, align 8, !tbaa !5
  %1323 = load i32, ptr %27, align 4, !tbaa !9
  %1324 = sext i32 %1323 to i64
  %1325 = getelementptr inbounds double, ptr %1322, i64 %1324
  %1326 = load double, ptr %1325, align 8, !tbaa !24
  %1327 = load double, ptr %41, align 8, !tbaa !24
  %1328 = call double @llvm.fmuladd.f64(double %1321, double %1326, double %1327)
  store double %1328, ptr %41, align 8, !tbaa !24
  br label %1329

1329:                                             ; preds = %1316
  %1330 = load i32, ptr %19, align 4, !tbaa !9
  %1331 = add nsw i32 %1330, 1
  store i32 %1331, ptr %19, align 4, !tbaa !9
  %1332 = load i32, ptr %27, align 4, !tbaa !9
  %1333 = add nsw i32 %1332, 1
  store i32 %1333, ptr %27, align 4, !tbaa !9
  br label %1312, !llvm.loop !67

1334:                                             ; preds = %1312
  br label %1335

1335:                                             ; preds = %1334, %1305
  %1336 = load i32, ptr %99, align 4, !tbaa !9
  %1337 = icmp ne i32 %1336, 0
  br i1 %1337, label %1338, label %1360

1338:                                             ; preds = %1335
  %1339 = load double, ptr %41, align 8, !tbaa !24
  %1340 = fcmp ogt double %1339, 0.000000e+00
  br i1 %1340, label %1341, label %1360

1341:                                             ; preds = %1338
  %1342 = load i32, ptr %20, align 4, !tbaa !9
  %1343 = load i32, ptr %73, align 4, !tbaa !9
  %1344 = mul nsw i32 %1342, %1343
  store i32 %1344, ptr %27, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1345

1345:                                             ; preds = %1354, %1341
  %1346 = load i32, ptr %19, align 4, !tbaa !9
  %1347 = load i32, ptr %11, align 4, !tbaa !9
  %1348 = icmp slt i32 %1346, %1347
  br i1 %1348, label %1349, label %1359

1349:                                             ; preds = %1345
  %1350 = load ptr, ptr %65, align 8, !tbaa !5
  %1351 = load i32, ptr %27, align 4, !tbaa !9
  %1352 = sext i32 %1351 to i64
  %1353 = getelementptr inbounds double, ptr %1350, i64 %1352
  store double 0.000000e+00, ptr %1353, align 8, !tbaa !24
  br label %1354

1354:                                             ; preds = %1349
  %1355 = load i32, ptr %19, align 4, !tbaa !9
  %1356 = add nsw i32 %1355, 1
  store i32 %1356, ptr %19, align 4, !tbaa !9
  %1357 = load i32, ptr %27, align 4, !tbaa !9
  %1358 = add nsw i32 %1357, 1
  store i32 %1358, ptr %27, align 4, !tbaa !9
  br label %1345, !llvm.loop !68

1359:                                             ; preds = %1345
  br label %1360

1360:                                             ; preds = %1359, %1338, %1335
  %1361 = load i32, ptr %100, align 4, !tbaa !9
  %1362 = icmp ne i32 %1361, 0
  br i1 %1362, label %1363, label %1385

1363:                                             ; preds = %1360
  %1364 = load double, ptr %41, align 8, !tbaa !24
  %1365 = fcmp olt double %1364, 0.000000e+00
  br i1 %1365, label %1366, label %1385

1366:                                             ; preds = %1363
  %1367 = load i32, ptr %20, align 4, !tbaa !9
  %1368 = load i32, ptr %73, align 4, !tbaa !9
  %1369 = mul nsw i32 %1367, %1368
  store i32 %1369, ptr %27, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1370

1370:                                             ; preds = %1379, %1366
  %1371 = load i32, ptr %19, align 4, !tbaa !9
  %1372 = load i32, ptr %11, align 4, !tbaa !9
  %1373 = icmp slt i32 %1371, %1372
  br i1 %1373, label %1374, label %1384

1374:                                             ; preds = %1370
  %1375 = load ptr, ptr %65, align 8, !tbaa !5
  %1376 = load i32, ptr %27, align 4, !tbaa !9
  %1377 = sext i32 %1376 to i64
  %1378 = getelementptr inbounds double, ptr %1375, i64 %1377
  store double 0.000000e+00, ptr %1378, align 8, !tbaa !24
  br label %1379

1379:                                             ; preds = %1374
  %1380 = load i32, ptr %19, align 4, !tbaa !9
  %1381 = add nsw i32 %1380, 1
  store i32 %1381, ptr %19, align 4, !tbaa !9
  %1382 = load i32, ptr %27, align 4, !tbaa !9
  %1383 = add nsw i32 %1382, 1
  store i32 %1383, ptr %27, align 4, !tbaa !9
  br label %1370, !llvm.loop !69

1384:                                             ; preds = %1370
  br label %1385

1385:                                             ; preds = %1384, %1363, %1360
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #5
  br label %1386

1386:                                             ; preds = %1385
  %1387 = load i32, ptr %20, align 4, !tbaa !9
  %1388 = add nsw i32 %1387, 1
  store i32 %1388, ptr %20, align 4, !tbaa !9
  br label %1256, !llvm.loop !70

1389:                                             ; preds = %1256
  br label %1390

1390:                                             ; preds = %1389, %1252
  %1391 = load i32, ptr %11, align 4, !tbaa !9
  %1392 = load i32, ptr %23, align 4, !tbaa !9
  %1393 = load ptr, ptr %65, align 8, !tbaa !5
  %1394 = load i32, ptr %73, align 4, !tbaa !9
  %1395 = load ptr, ptr %72, align 8, !tbaa !5
  %1396 = load i32, ptr %23, align 4, !tbaa !9
  %1397 = load ptr, ptr %67, align 8, !tbaa !5
  %1398 = load ptr, ptr %68, align 8, !tbaa !5
  %1399 = load ptr, ptr %69, align 8, !tbaa !5
  call void @mp_qrfac(i32 noundef %1391, i32 noundef %1392, ptr noundef %1393, i32 noundef %1394, i32 noundef 1, ptr noundef %1395, i32 noundef %1396, ptr noundef %1397, ptr noundef %1398, ptr noundef %1399)
  %1400 = load i32, ptr %25, align 4, !tbaa !9
  %1401 = icmp eq i32 %1400, 1
  br i1 %1401, label %1402, label %1490

1402:                                             ; preds = %1390
  %1403 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 9
  %1404 = load i32, ptr %1403, align 4, !tbaa !20
  %1405 = icmp eq i32 %1404, 0
  br i1 %1405, label %1406, label %1447

1406:                                             ; preds = %1402
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %1407

1407:                                             ; preds = %1443, %1406
  %1408 = load i32, ptr %20, align 4, !tbaa !9
  %1409 = load i32, ptr %23, align 4, !tbaa !9
  %1410 = icmp slt i32 %1408, %1409
  br i1 %1410, label %1411, label %1446

1411:                                             ; preds = %1407
  %1412 = load ptr, ptr %68, align 8, !tbaa !5
  %1413 = load i32, ptr %20, align 4, !tbaa !9
  %1414 = sext i32 %1413 to i64
  %1415 = getelementptr inbounds double, ptr %1412, i64 %1414
  %1416 = load double, ptr %1415, align 8, !tbaa !24
  %1417 = load ptr, ptr %66, align 8, !tbaa !5
  %1418 = load ptr, ptr %55, align 8, !tbaa !5
  %1419 = load i32, ptr %20, align 4, !tbaa !9
  %1420 = sext i32 %1419 to i64
  %1421 = getelementptr inbounds i32, ptr %1418, i64 %1420
  %1422 = load i32, ptr %1421, align 4, !tbaa !9
  %1423 = sext i32 %1422 to i64
  %1424 = getelementptr inbounds double, ptr %1417, i64 %1423
  store double %1416, ptr %1424, align 8, !tbaa !24
  %1425 = load ptr, ptr %68, align 8, !tbaa !5
  %1426 = load i32, ptr %20, align 4, !tbaa !9
  %1427 = sext i32 %1426 to i64
  %1428 = getelementptr inbounds double, ptr %1425, i64 %1427
  %1429 = load double, ptr %1428, align 8, !tbaa !24
  %1430 = load double, ptr @mpfit.zero, align 8, !tbaa !24
  %1431 = fcmp oeq double %1429, %1430
  br i1 %1431, label %1432, label %1442

1432:                                             ; preds = %1411
  %1433 = load double, ptr @mpfit.one, align 8, !tbaa !24
  %1434 = load ptr, ptr %66, align 8, !tbaa !5
  %1435 = load ptr, ptr %55, align 8, !tbaa !5
  %1436 = load i32, ptr %20, align 4, !tbaa !9
  %1437 = sext i32 %1436 to i64
  %1438 = getelementptr inbounds i32, ptr %1435, i64 %1437
  %1439 = load i32, ptr %1438, align 4, !tbaa !9
  %1440 = sext i32 %1439 to i64
  %1441 = getelementptr inbounds double, ptr %1434, i64 %1440
  store double %1433, ptr %1441, align 8, !tbaa !24
  br label %1442

1442:                                             ; preds = %1432, %1411
  br label %1443

1443:                                             ; preds = %1442
  %1444 = load i32, ptr %20, align 4, !tbaa !9
  %1445 = add nsw i32 %1444, 1
  store i32 %1445, ptr %20, align 4, !tbaa !9
  br label %1407, !llvm.loop !71

1446:                                             ; preds = %1407
  br label %1447

1447:                                             ; preds = %1446, %1402
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %1448

1448:                                             ; preds = %1472, %1447
  %1449 = load i32, ptr %20, align 4, !tbaa !9
  %1450 = load i32, ptr %23, align 4, !tbaa !9
  %1451 = icmp slt i32 %1449, %1450
  br i1 %1451, label %1452, label %1475

1452:                                             ; preds = %1448
  %1453 = load ptr, ptr %66, align 8, !tbaa !5
  %1454 = load ptr, ptr %55, align 8, !tbaa !5
  %1455 = load i32, ptr %20, align 4, !tbaa !9
  %1456 = sext i32 %1455 to i64
  %1457 = getelementptr inbounds i32, ptr %1454, i64 %1456
  %1458 = load i32, ptr %1457, align 4, !tbaa !9
  %1459 = sext i32 %1458 to i64
  %1460 = getelementptr inbounds double, ptr %1453, i64 %1459
  %1461 = load double, ptr %1460, align 8, !tbaa !24
  %1462 = load ptr, ptr %63, align 8, !tbaa !5
  %1463 = load i32, ptr %20, align 4, !tbaa !9
  %1464 = sext i32 %1463 to i64
  %1465 = getelementptr inbounds double, ptr %1462, i64 %1464
  %1466 = load double, ptr %1465, align 8, !tbaa !24
  %1467 = fmul double %1461, %1466
  %1468 = load ptr, ptr %69, align 8, !tbaa !5
  %1469 = load i32, ptr %20, align 4, !tbaa !9
  %1470 = sext i32 %1469 to i64
  %1471 = getelementptr inbounds double, ptr %1468, i64 %1470
  store double %1467, ptr %1471, align 8, !tbaa !24
  br label %1472

1472:                                             ; preds = %1452
  %1473 = load i32, ptr %20, align 4, !tbaa !9
  %1474 = add nsw i32 %1473, 1
  store i32 %1474, ptr %20, align 4, !tbaa !9
  br label %1448, !llvm.loop !72

1475:                                             ; preds = %1448
  %1476 = load i32, ptr %23, align 4, !tbaa !9
  %1477 = load ptr, ptr %69, align 8, !tbaa !5
  %1478 = call double @mp_enorm(i32 noundef %1476, ptr noundef %1477)
  store double %1478, ptr %46, align 8, !tbaa !24
  %1479 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 4
  %1480 = load double, ptr %1479, align 8, !tbaa !16
  %1481 = load double, ptr %46, align 8, !tbaa !24
  %1482 = fmul double %1480, %1481
  store double %1482, ptr %31, align 8, !tbaa !24
  %1483 = load double, ptr %31, align 8, !tbaa !24
  %1484 = load double, ptr @mpfit.zero, align 8, !tbaa !24
  %1485 = fcmp oeq double %1483, %1484
  br i1 %1485, label %1486, label %1489

1486:                                             ; preds = %1475
  %1487 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 4
  %1488 = load double, ptr %1487, align 8, !tbaa !16
  store double %1488, ptr %31, align 8, !tbaa !24
  br label %1489

1489:                                             ; preds = %1486, %1475
  br label %1490

1490:                                             ; preds = %1489, %1390
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1491

1491:                                             ; preds = %1505, %1490
  %1492 = load i32, ptr %19, align 4, !tbaa !9
  %1493 = load i32, ptr %11, align 4, !tbaa !9
  %1494 = icmp slt i32 %1492, %1493
  br i1 %1494, label %1495, label %1508

1495:                                             ; preds = %1491
  %1496 = load ptr, ptr %61, align 8, !tbaa !5
  %1497 = load i32, ptr %19, align 4, !tbaa !9
  %1498 = sext i32 %1497 to i64
  %1499 = getelementptr inbounds double, ptr %1496, i64 %1498
  %1500 = load double, ptr %1499, align 8, !tbaa !24
  %1501 = load ptr, ptr %70, align 8, !tbaa !5
  %1502 = load i32, ptr %19, align 4, !tbaa !9
  %1503 = sext i32 %1502 to i64
  %1504 = getelementptr inbounds double, ptr %1501, i64 %1503
  store double %1500, ptr %1504, align 8, !tbaa !24
  br label %1505

1505:                                             ; preds = %1495
  %1506 = load i32, ptr %19, align 4, !tbaa !9
  %1507 = add nsw i32 %1506, 1
  store i32 %1507, ptr %19, align 4, !tbaa !9
  br label %1491, !llvm.loop !73

1508:                                             ; preds = %1491
  store i32 0, ptr %28, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %1509

1509:                                             ; preds = %1601, %1508
  %1510 = load i32, ptr %20, align 4, !tbaa !9
  %1511 = load i32, ptr %23, align 4, !tbaa !9
  %1512 = icmp slt i32 %1510, %1511
  br i1 %1512, label %1513, label %1604

1513:                                             ; preds = %1509
  %1514 = load ptr, ptr %65, align 8, !tbaa !5
  %1515 = load i32, ptr %28, align 4, !tbaa !9
  %1516 = sext i32 %1515 to i64
  %1517 = getelementptr inbounds double, ptr %1514, i64 %1516
  %1518 = load double, ptr %1517, align 8, !tbaa !24
  store double %1518, ptr %45, align 8, !tbaa !24
  %1519 = load double, ptr %45, align 8, !tbaa !24
  %1520 = load double, ptr @mpfit.zero, align 8, !tbaa !24
  %1521 = fcmp une double %1519, %1520
  br i1 %1521, label %1522, label %1578

1522:                                             ; preds = %1513
  %1523 = load double, ptr @mpfit.zero, align 8, !tbaa !24
  store double %1523, ptr %41, align 8, !tbaa !24
  %1524 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %1524, ptr %27, align 4, !tbaa !9
  %1525 = load i32, ptr %20, align 4, !tbaa !9
  store i32 %1525, ptr %19, align 4, !tbaa !9
  br label %1526

1526:                                             ; preds = %1545, %1522
  %1527 = load i32, ptr %19, align 4, !tbaa !9
  %1528 = load i32, ptr %11, align 4, !tbaa !9
  %1529 = icmp slt i32 %1527, %1528
  br i1 %1529, label %1530, label %1548

1530:                                             ; preds = %1526
  %1531 = load ptr, ptr %65, align 8, !tbaa !5
  %1532 = load i32, ptr %27, align 4, !tbaa !9
  %1533 = sext i32 %1532 to i64
  %1534 = getelementptr inbounds double, ptr %1531, i64 %1533
  %1535 = load double, ptr %1534, align 8, !tbaa !24
  %1536 = load ptr, ptr %70, align 8, !tbaa !5
  %1537 = load i32, ptr %19, align 4, !tbaa !9
  %1538 = sext i32 %1537 to i64
  %1539 = getelementptr inbounds double, ptr %1536, i64 %1538
  %1540 = load double, ptr %1539, align 8, !tbaa !24
  %1541 = load double, ptr %41, align 8, !tbaa !24
  %1542 = call double @llvm.fmuladd.f64(double %1535, double %1540, double %1541)
  store double %1542, ptr %41, align 8, !tbaa !24
  %1543 = load i32, ptr %27, align 4, !tbaa !9
  %1544 = add nsw i32 %1543, 1
  store i32 %1544, ptr %27, align 4, !tbaa !9
  br label %1545

1545:                                             ; preds = %1530
  %1546 = load i32, ptr %19, align 4, !tbaa !9
  %1547 = add nsw i32 %1546, 1
  store i32 %1547, ptr %19, align 4, !tbaa !9
  br label %1526, !llvm.loop !74

1548:                                             ; preds = %1526
  %1549 = load double, ptr %41, align 8, !tbaa !24
  %1550 = fneg double %1549
  %1551 = load double, ptr %45, align 8, !tbaa !24
  %1552 = fdiv double %1550, %1551
  store double %1552, ptr %42, align 8, !tbaa !24
  %1553 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %1553, ptr %27, align 4, !tbaa !9
  %1554 = load i32, ptr %20, align 4, !tbaa !9
  store i32 %1554, ptr %19, align 4, !tbaa !9
  br label %1555

1555:                                             ; preds = %1574, %1548
  %1556 = load i32, ptr %19, align 4, !tbaa !9
  %1557 = load i32, ptr %11, align 4, !tbaa !9
  %1558 = icmp slt i32 %1556, %1557
  br i1 %1558, label %1559, label %1577

1559:                                             ; preds = %1555
  %1560 = load ptr, ptr %65, align 8, !tbaa !5
  %1561 = load i32, ptr %27, align 4, !tbaa !9
  %1562 = sext i32 %1561 to i64
  %1563 = getelementptr inbounds double, ptr %1560, i64 %1562
  %1564 = load double, ptr %1563, align 8, !tbaa !24
  %1565 = load double, ptr %42, align 8, !tbaa !24
  %1566 = load ptr, ptr %70, align 8, !tbaa !5
  %1567 = load i32, ptr %19, align 4, !tbaa !9
  %1568 = sext i32 %1567 to i64
  %1569 = getelementptr inbounds double, ptr %1566, i64 %1568
  %1570 = load double, ptr %1569, align 8, !tbaa !24
  %1571 = call double @llvm.fmuladd.f64(double %1564, double %1565, double %1570)
  store double %1571, ptr %1569, align 8, !tbaa !24
  %1572 = load i32, ptr %27, align 4, !tbaa !9
  %1573 = add nsw i32 %1572, 1
  store i32 %1573, ptr %27, align 4, !tbaa !9
  br label %1574

1574:                                             ; preds = %1559
  %1575 = load i32, ptr %19, align 4, !tbaa !9
  %1576 = add nsw i32 %1575, 1
  store i32 %1576, ptr %19, align 4, !tbaa !9
  br label %1555, !llvm.loop !75

1577:                                             ; preds = %1555
  br label %1578

1578:                                             ; preds = %1577, %1513
  %1579 = load ptr, ptr %67, align 8, !tbaa !5
  %1580 = load i32, ptr %20, align 4, !tbaa !9
  %1581 = sext i32 %1580 to i64
  %1582 = getelementptr inbounds double, ptr %1579, i64 %1581
  %1583 = load double, ptr %1582, align 8, !tbaa !24
  %1584 = load ptr, ptr %65, align 8, !tbaa !5
  %1585 = load i32, ptr %28, align 4, !tbaa !9
  %1586 = sext i32 %1585 to i64
  %1587 = getelementptr inbounds double, ptr %1584, i64 %1586
  store double %1583, ptr %1587, align 8, !tbaa !24
  %1588 = load i32, ptr %11, align 4, !tbaa !9
  %1589 = add nsw i32 %1588, 1
  %1590 = load i32, ptr %28, align 4, !tbaa !9
  %1591 = add nsw i32 %1590, %1589
  store i32 %1591, ptr %28, align 4, !tbaa !9
  %1592 = load ptr, ptr %70, align 8, !tbaa !5
  %1593 = load i32, ptr %20, align 4, !tbaa !9
  %1594 = sext i32 %1593 to i64
  %1595 = getelementptr inbounds double, ptr %1592, i64 %1594
  %1596 = load double, ptr %1595, align 8, !tbaa !24
  %1597 = load ptr, ptr %62, align 8, !tbaa !5
  %1598 = load i32, ptr %20, align 4, !tbaa !9
  %1599 = sext i32 %1598 to i64
  %1600 = getelementptr inbounds double, ptr %1597, i64 %1599
  store double %1596, ptr %1600, align 8, !tbaa !24
  br label %1601

1601:                                             ; preds = %1578
  %1602 = load i32, ptr %20, align 4, !tbaa !9
  %1603 = add nsw i32 %1602, 1
  store i32 %1603, ptr %20, align 4, !tbaa !9
  br label %1509, !llvm.loop !76

1604:                                             ; preds = %1509
  %1605 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 10
  %1606 = load i32, ptr %1605, align 8, !tbaa !23
  %1607 = icmp ne i32 %1606, 0
  br i1 %1607, label %1608, label %1649

1608:                                             ; preds = %1604
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #5
  store i32 0, ptr %101, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #5
  store i32 0, ptr %102, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %1609

1609:                                             ; preds = %1638, %1608
  %1610 = load i32, ptr %20, align 4, !tbaa !9
  %1611 = load i32, ptr %23, align 4, !tbaa !9
  %1612 = icmp slt i32 %1610, %1611
  br i1 %1612, label %1613, label %1641

1613:                                             ; preds = %1609
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1614

1614:                                             ; preds = %1631, %1613
  %1615 = load i32, ptr %19, align 4, !tbaa !9
  %1616 = load i32, ptr %23, align 4, !tbaa !9
  %1617 = icmp slt i32 %1615, %1616
  br i1 %1617, label %1618, label %1634

1618:                                             ; preds = %1614
  %1619 = load ptr, ptr %65, align 8, !tbaa !5
  %1620 = load i32, ptr %101, align 4, !tbaa !9
  %1621 = load i32, ptr %19, align 4, !tbaa !9
  %1622 = add nsw i32 %1620, %1621
  %1623 = sext i32 %1622 to i64
  %1624 = getelementptr inbounds double, ptr %1619, i64 %1623
  %1625 = load double, ptr %1624, align 8, !tbaa !24
  %1626 = call i1 @llvm.is.fpclass.f64(double %1625, i32 504)
  %1627 = zext i1 %1626 to i32
  %1628 = icmp eq i32 %1627, 0
  br i1 %1628, label %1629, label %1630

1629:                                             ; preds = %1618
  store i32 1, ptr %102, align 4, !tbaa !9
  br label %1630

1630:                                             ; preds = %1629, %1618
  br label %1631

1631:                                             ; preds = %1630
  %1632 = load i32, ptr %19, align 4, !tbaa !9
  %1633 = add nsw i32 %1632, 1
  store i32 %1633, ptr %19, align 4, !tbaa !9
  br label %1614, !llvm.loop !77

1634:                                             ; preds = %1614
  %1635 = load i32, ptr %73, align 4, !tbaa !9
  %1636 = load i32, ptr %101, align 4, !tbaa !9
  %1637 = add nsw i32 %1636, %1635
  store i32 %1637, ptr %101, align 4, !tbaa !9
  br label %1638

1638:                                             ; preds = %1634
  %1639 = load i32, ptr %20, align 4, !tbaa !9
  %1640 = add nsw i32 %1639, 1
  store i32 %1640, ptr %20, align 4, !tbaa !9
  br label %1609, !llvm.loop !78

1641:                                             ; preds = %1609
  %1642 = load i32, ptr %102, align 4, !tbaa !9
  %1643 = icmp ne i32 %1642, 0
  br i1 %1643, label %1644, label %1645

1644:                                             ; preds = %1641
  store i32 -16, ptr %21, align 4, !tbaa !9
  store i32 2, ptr %74, align 4
  br label %1646

1645:                                             ; preds = %1641
  store i32 0, ptr %74, align 4
  br label %1646

1646:                                             ; preds = %1645, %1644
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #5
  %1647 = load i32, ptr %74, align 4
  switch i32 %1647, label %3005 [
    i32 0, label %1648
    i32 2, label %2883
  ]

1648:                                             ; preds = %1646
  br label %1649

1649:                                             ; preds = %1648, %1604
  %1650 = load double, ptr @mpfit.zero, align 8, !tbaa !24
  store double %1650, ptr %35, align 8, !tbaa !24
  %1651 = load double, ptr %33, align 8, !tbaa !24
  %1652 = load double, ptr @mpfit.zero, align 8, !tbaa !24
  %1653 = fcmp une double %1651, %1652
  br i1 %1653, label %1654, label %1718

1654:                                             ; preds = %1649
  store i32 0, ptr %28, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %1655

1655:                                             ; preds = %1714, %1654
  %1656 = load i32, ptr %20, align 4, !tbaa !9
  %1657 = load i32, ptr %23, align 4, !tbaa !9
  %1658 = icmp slt i32 %1656, %1657
  br i1 %1658, label %1659, label %1717

1659:                                             ; preds = %1655
  %1660 = load ptr, ptr %72, align 8, !tbaa !5
  %1661 = load i32, ptr %20, align 4, !tbaa !9
  %1662 = sext i32 %1661 to i64
  %1663 = getelementptr inbounds i32, ptr %1660, i64 %1662
  %1664 = load i32, ptr %1663, align 4, !tbaa !9
  store i32 %1664, ptr %29, align 4, !tbaa !9
  %1665 = load ptr, ptr %68, align 8, !tbaa !5
  %1666 = load i32, ptr %29, align 4, !tbaa !9
  %1667 = sext i32 %1666 to i64
  %1668 = getelementptr inbounds double, ptr %1665, i64 %1667
  %1669 = load double, ptr %1668, align 8, !tbaa !24
  %1670 = load double, ptr @mpfit.zero, align 8, !tbaa !24
  %1671 = fcmp une double %1669, %1670
  br i1 %1671, label %1672, label %1710

1672:                                             ; preds = %1659
  %1673 = load double, ptr @mpfit.zero, align 8, !tbaa !24
  store double %1673, ptr %41, align 8, !tbaa !24
  %1674 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %1674, ptr %27, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1675

1675:                                             ; preds = %1696, %1672
  %1676 = load i32, ptr %19, align 4, !tbaa !9
  %1677 = load i32, ptr %20, align 4, !tbaa !9
  %1678 = icmp sle i32 %1676, %1677
  br i1 %1678, label %1679, label %1699

1679:                                             ; preds = %1675
  %1680 = load ptr, ptr %65, align 8, !tbaa !5
  %1681 = load i32, ptr %27, align 4, !tbaa !9
  %1682 = sext i32 %1681 to i64
  %1683 = getelementptr inbounds double, ptr %1680, i64 %1682
  %1684 = load double, ptr %1683, align 8, !tbaa !24
  %1685 = load ptr, ptr %62, align 8, !tbaa !5
  %1686 = load i32, ptr %19, align 4, !tbaa !9
  %1687 = sext i32 %1686 to i64
  %1688 = getelementptr inbounds double, ptr %1685, i64 %1687
  %1689 = load double, ptr %1688, align 8, !tbaa !24
  %1690 = load double, ptr %33, align 8, !tbaa !24
  %1691 = fdiv double %1689, %1690
  %1692 = load double, ptr %41, align 8, !tbaa !24
  %1693 = call double @llvm.fmuladd.f64(double %1684, double %1691, double %1692)
  store double %1693, ptr %41, align 8, !tbaa !24
  %1694 = load i32, ptr %27, align 4, !tbaa !9
  %1695 = add nsw i32 %1694, 1
  store i32 %1695, ptr %27, align 4, !tbaa !9
  br label %1696

1696:                                             ; preds = %1679
  %1697 = load i32, ptr %19, align 4, !tbaa !9
  %1698 = add nsw i32 %1697, 1
  store i32 %1698, ptr %19, align 4, !tbaa !9
  br label %1675, !llvm.loop !79

1699:                                             ; preds = %1675
  %1700 = load double, ptr %35, align 8, !tbaa !24
  %1701 = load double, ptr %41, align 8, !tbaa !24
  %1702 = load ptr, ptr %68, align 8, !tbaa !5
  %1703 = load i32, ptr %29, align 4, !tbaa !9
  %1704 = sext i32 %1703 to i64
  %1705 = getelementptr inbounds double, ptr %1702, i64 %1704
  %1706 = load double, ptr %1705, align 8, !tbaa !24
  %1707 = fdiv double %1701, %1706
  %1708 = call double @llvm.fabs.f64(double %1707)
  %1709 = call double @mp_dmax1(double noundef %1700, double noundef %1708)
  store double %1709, ptr %35, align 8, !tbaa !24
  br label %1710

1710:                                             ; preds = %1699, %1659
  %1711 = load i32, ptr %11, align 4, !tbaa !9
  %1712 = load i32, ptr %28, align 4, !tbaa !9
  %1713 = add nsw i32 %1712, %1711
  store i32 %1713, ptr %28, align 4, !tbaa !9
  br label %1714

1714:                                             ; preds = %1710
  %1715 = load i32, ptr %20, align 4, !tbaa !9
  %1716 = add nsw i32 %1715, 1
  store i32 %1716, ptr %20, align 4, !tbaa !9
  br label %1655, !llvm.loop !80

1717:                                             ; preds = %1655
  br label %1718

1718:                                             ; preds = %1717, %1649
  %1719 = load double, ptr %35, align 8, !tbaa !24
  %1720 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 2
  %1721 = load double, ptr %1720, align 8, !tbaa !15
  %1722 = fcmp ole double %1719, %1721
  br i1 %1722, label %1723, label %1724

1723:                                             ; preds = %1718
  store i32 4, ptr %21, align 4, !tbaa !9
  br label %1724

1724:                                             ; preds = %1723, %1718
  %1725 = load i32, ptr %21, align 4, !tbaa !9
  %1726 = icmp ne i32 %1725, 0
  br i1 %1726, label %1727, label %1728

1727:                                             ; preds = %1724
  br label %2561

1728:                                             ; preds = %1724
  %1729 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 6
  %1730 = load i32, ptr %1729, align 8, !tbaa !19
  %1731 = icmp eq i32 %1730, 0
  br i1 %1731, label %1732, label %1733

1732:                                             ; preds = %1728
  store i32 5, ptr %21, align 4, !tbaa !9
  br label %2561

1733:                                             ; preds = %1728
  %1734 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 9
  %1735 = load i32, ptr %1734, align 4, !tbaa !20
  %1736 = icmp eq i32 %1735, 0
  br i1 %1736, label %1737, label %1770

1737:                                             ; preds = %1733
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %1738

1738:                                             ; preds = %1766, %1737
  %1739 = load i32, ptr %20, align 4, !tbaa !9
  %1740 = load i32, ptr %23, align 4, !tbaa !9
  %1741 = icmp slt i32 %1739, %1740
  br i1 %1741, label %1742, label %1769

1742:                                             ; preds = %1738
  %1743 = load ptr, ptr %66, align 8, !tbaa !5
  %1744 = load ptr, ptr %55, align 8, !tbaa !5
  %1745 = load i32, ptr %20, align 4, !tbaa !9
  %1746 = sext i32 %1745 to i64
  %1747 = getelementptr inbounds i32, ptr %1744, i64 %1746
  %1748 = load i32, ptr %1747, align 4, !tbaa !9
  %1749 = sext i32 %1748 to i64
  %1750 = getelementptr inbounds double, ptr %1743, i64 %1749
  %1751 = load double, ptr %1750, align 8, !tbaa !24
  %1752 = load ptr, ptr %68, align 8, !tbaa !5
  %1753 = load i32, ptr %20, align 4, !tbaa !9
  %1754 = sext i32 %1753 to i64
  %1755 = getelementptr inbounds double, ptr %1752, i64 %1754
  %1756 = load double, ptr %1755, align 8, !tbaa !24
  %1757 = call double @mp_dmax1(double noundef %1751, double noundef %1756)
  %1758 = load ptr, ptr %66, align 8, !tbaa !5
  %1759 = load ptr, ptr %55, align 8, !tbaa !5
  %1760 = load i32, ptr %20, align 4, !tbaa !9
  %1761 = sext i32 %1760 to i64
  %1762 = getelementptr inbounds i32, ptr %1759, i64 %1761
  %1763 = load i32, ptr %1762, align 4, !tbaa !9
  %1764 = sext i32 %1763 to i64
  %1765 = getelementptr inbounds double, ptr %1758, i64 %1764
  store double %1757, ptr %1765, align 8, !tbaa !24
  br label %1766

1766:                                             ; preds = %1742
  %1767 = load i32, ptr %20, align 4, !tbaa !9
  %1768 = add nsw i32 %1767, 1
  store i32 %1768, ptr %20, align 4, !tbaa !9
  br label %1738, !llvm.loop !81

1769:                                             ; preds = %1738
  br label %1770

1770:                                             ; preds = %1769, %1733
  br label %1771

1771:                                             ; preds = %2559, %1770
  %1772 = load i32, ptr %23, align 4, !tbaa !9
  %1773 = load ptr, ptr %65, align 8, !tbaa !5
  %1774 = load i32, ptr %73, align 4, !tbaa !9
  %1775 = load ptr, ptr %72, align 8, !tbaa !5
  %1776 = load ptr, ptr %55, align 8, !tbaa !5
  %1777 = load ptr, ptr %66, align 8, !tbaa !5
  %1778 = load ptr, ptr %62, align 8, !tbaa !5
  %1779 = load double, ptr %31, align 8, !tbaa !24
  %1780 = load ptr, ptr %67, align 8, !tbaa !5
  %1781 = load ptr, ptr %68, align 8, !tbaa !5
  %1782 = load ptr, ptr %69, align 8, !tbaa !5
  %1783 = load ptr, ptr %70, align 8, !tbaa !5
  call void @mp_lmpar(i32 noundef %1772, ptr noundef %1773, i32 noundef %1774, ptr noundef %1775, ptr noundef %1776, ptr noundef %1777, ptr noundef %1778, double noundef %1779, ptr noundef %37, ptr noundef %1780, ptr noundef %1781, ptr noundef %1782, ptr noundef %1783)
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %1784

1784:                                             ; preds = %1799, %1771
  %1785 = load i32, ptr %20, align 4, !tbaa !9
  %1786 = load i32, ptr %23, align 4, !tbaa !9
  %1787 = icmp slt i32 %1785, %1786
  br i1 %1787, label %1788, label %1802

1788:                                             ; preds = %1784
  %1789 = load ptr, ptr %67, align 8, !tbaa !5
  %1790 = load i32, ptr %20, align 4, !tbaa !9
  %1791 = sext i32 %1790 to i64
  %1792 = getelementptr inbounds double, ptr %1789, i64 %1791
  %1793 = load double, ptr %1792, align 8, !tbaa !24
  %1794 = fneg double %1793
  %1795 = load ptr, ptr %67, align 8, !tbaa !5
  %1796 = load i32, ptr %20, align 4, !tbaa !9
  %1797 = sext i32 %1796 to i64
  %1798 = getelementptr inbounds double, ptr %1795, i64 %1797
  store double %1794, ptr %1798, align 8, !tbaa !24
  br label %1799

1799:                                             ; preds = %1788
  %1800 = load i32, ptr %20, align 4, !tbaa !9
  %1801 = add nsw i32 %1800, 1
  store i32 %1801, ptr %20, align 4, !tbaa !9
  br label %1784, !llvm.loop !82

1802:                                             ; preds = %1784
  store double 1.000000e+00, ptr %47, align 8, !tbaa !24
  %1803 = load i32, ptr %26, align 4, !tbaa !9
  %1804 = icmp eq i32 %1803, 0
  br i1 %1804, label %1805, label %1830

1805:                                             ; preds = %1802
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %1806

1806:                                             ; preds = %1826, %1805
  %1807 = load i32, ptr %20, align 4, !tbaa !9
  %1808 = load i32, ptr %23, align 4, !tbaa !9
  %1809 = icmp slt i32 %1807, %1808
  br i1 %1809, label %1810, label %1829

1810:                                             ; preds = %1806
  %1811 = load ptr, ptr %63, align 8, !tbaa !5
  %1812 = load i32, ptr %20, align 4, !tbaa !9
  %1813 = sext i32 %1812 to i64
  %1814 = getelementptr inbounds double, ptr %1811, i64 %1813
  %1815 = load double, ptr %1814, align 8, !tbaa !24
  %1816 = load ptr, ptr %67, align 8, !tbaa !5
  %1817 = load i32, ptr %20, align 4, !tbaa !9
  %1818 = sext i32 %1817 to i64
  %1819 = getelementptr inbounds double, ptr %1816, i64 %1818
  %1820 = load double, ptr %1819, align 8, !tbaa !24
  %1821 = fadd double %1815, %1820
  %1822 = load ptr, ptr %68, align 8, !tbaa !5
  %1823 = load i32, ptr %20, align 4, !tbaa !9
  %1824 = sext i32 %1823 to i64
  %1825 = getelementptr inbounds double, ptr %1822, i64 %1824
  store double %1821, ptr %1825, align 8, !tbaa !24
  br label %1826

1826:                                             ; preds = %1810
  %1827 = load i32, ptr %20, align 4, !tbaa !9
  %1828 = add nsw i32 %1827, 1
  store i32 %1828, ptr %20, align 4, !tbaa !9
  br label %1806, !llvm.loop !83

1829:                                             ; preds = %1806
  br label %2153

1830:                                             ; preds = %1802
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %1831

1831:                                             ; preds = %2012, %1830
  %1832 = load i32, ptr %20, align 4, !tbaa !9
  %1833 = load i32, ptr %23, align 4, !tbaa !9
  %1834 = icmp slt i32 %1832, %1833
  br i1 %1834, label %1835, label %2015

1835:                                             ; preds = %1831
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #5
  %1836 = load ptr, ptr %56, align 8, !tbaa !5
  %1837 = load i32, ptr %20, align 4, !tbaa !9
  %1838 = sext i32 %1837 to i64
  %1839 = getelementptr inbounds i32, ptr %1836, i64 %1838
  %1840 = load i32, ptr %1839, align 4, !tbaa !9
  %1841 = icmp ne i32 %1840, 0
  br i1 %1841, label %1842, label %1854

1842:                                             ; preds = %1835
  %1843 = load ptr, ptr %63, align 8, !tbaa !5
  %1844 = load i32, ptr %20, align 4, !tbaa !9
  %1845 = sext i32 %1844 to i64
  %1846 = getelementptr inbounds double, ptr %1843, i64 %1845
  %1847 = load double, ptr %1846, align 8, !tbaa !24
  %1848 = load ptr, ptr %51, align 8, !tbaa !5
  %1849 = load i32, ptr %20, align 4, !tbaa !9
  %1850 = sext i32 %1849 to i64
  %1851 = getelementptr inbounds double, ptr %1848, i64 %1850
  %1852 = load double, ptr %1851, align 8, !tbaa !24
  %1853 = fcmp ole double %1847, %1852
  br label %1854

1854:                                             ; preds = %1842, %1835
  %1855 = phi i1 [ false, %1835 ], [ %1853, %1842 ]
  %1856 = zext i1 %1855 to i32
  store i32 %1856, ptr %103, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #5
  %1857 = load ptr, ptr %57, align 8, !tbaa !5
  %1858 = load i32, ptr %20, align 4, !tbaa !9
  %1859 = sext i32 %1858 to i64
  %1860 = getelementptr inbounds i32, ptr %1857, i64 %1859
  %1861 = load i32, ptr %1860, align 4, !tbaa !9
  %1862 = icmp ne i32 %1861, 0
  br i1 %1862, label %1863, label %1875

1863:                                             ; preds = %1854
  %1864 = load ptr, ptr %63, align 8, !tbaa !5
  %1865 = load i32, ptr %20, align 4, !tbaa !9
  %1866 = sext i32 %1865 to i64
  %1867 = getelementptr inbounds double, ptr %1864, i64 %1866
  %1868 = load double, ptr %1867, align 8, !tbaa !24
  %1869 = load ptr, ptr %52, align 8, !tbaa !5
  %1870 = load i32, ptr %20, align 4, !tbaa !9
  %1871 = sext i32 %1870 to i64
  %1872 = getelementptr inbounds double, ptr %1869, i64 %1871
  %1873 = load double, ptr %1872, align 8, !tbaa !24
  %1874 = fcmp oge double %1868, %1873
  br label %1875

1875:                                             ; preds = %1863, %1854
  %1876 = phi i1 [ false, %1854 ], [ %1874, %1863 ]
  %1877 = zext i1 %1876 to i32
  store i32 %1877, ptr %104, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #5
  %1878 = load ptr, ptr %67, align 8, !tbaa !5
  %1879 = load i32, ptr %20, align 4, !tbaa !9
  %1880 = sext i32 %1879 to i64
  %1881 = getelementptr inbounds double, ptr %1878, i64 %1880
  %1882 = load double, ptr %1881, align 8, !tbaa !24
  %1883 = call double @llvm.fabs.f64(double %1882)
  %1884 = fcmp ogt double %1883, 0x3CAFFFFFF4178DA3
  %1885 = zext i1 %1884 to i32
  store i32 %1885, ptr %105, align 4, !tbaa !9
  %1886 = load i32, ptr %103, align 4, !tbaa !9
  %1887 = icmp ne i32 %1886, 0
  br i1 %1887, label %1888, label %1900

1888:                                             ; preds = %1875
  %1889 = load ptr, ptr %67, align 8, !tbaa !5
  %1890 = load i32, ptr %20, align 4, !tbaa !9
  %1891 = sext i32 %1890 to i64
  %1892 = getelementptr inbounds double, ptr %1889, i64 %1891
  %1893 = load double, ptr %1892, align 8, !tbaa !24
  %1894 = fcmp olt double %1893, 0.000000e+00
  br i1 %1894, label %1895, label %1900

1895:                                             ; preds = %1888
  %1896 = load ptr, ptr %67, align 8, !tbaa !5
  %1897 = load i32, ptr %20, align 4, !tbaa !9
  %1898 = sext i32 %1897 to i64
  %1899 = getelementptr inbounds double, ptr %1896, i64 %1898
  store double 0.000000e+00, ptr %1899, align 8, !tbaa !24
  br label %1900

1900:                                             ; preds = %1895, %1888, %1875
  %1901 = load i32, ptr %104, align 4, !tbaa !9
  %1902 = icmp ne i32 %1901, 0
  br i1 %1902, label %1903, label %1915

1903:                                             ; preds = %1900
  %1904 = load ptr, ptr %67, align 8, !tbaa !5
  %1905 = load i32, ptr %20, align 4, !tbaa !9
  %1906 = sext i32 %1905 to i64
  %1907 = getelementptr inbounds double, ptr %1904, i64 %1906
  %1908 = load double, ptr %1907, align 8, !tbaa !24
  %1909 = fcmp ogt double %1908, 0.000000e+00
  br i1 %1909, label %1910, label %1915

1910:                                             ; preds = %1903
  %1911 = load ptr, ptr %67, align 8, !tbaa !5
  %1912 = load i32, ptr %20, align 4, !tbaa !9
  %1913 = sext i32 %1912 to i64
  %1914 = getelementptr inbounds double, ptr %1911, i64 %1913
  store double 0.000000e+00, ptr %1914, align 8, !tbaa !24
  br label %1915

1915:                                             ; preds = %1910, %1903, %1900
  %1916 = load i32, ptr %105, align 4, !tbaa !9
  %1917 = icmp ne i32 %1916, 0
  br i1 %1917, label %1918, label %1963

1918:                                             ; preds = %1915
  %1919 = load ptr, ptr %56, align 8, !tbaa !5
  %1920 = load i32, ptr %20, align 4, !tbaa !9
  %1921 = sext i32 %1920 to i64
  %1922 = getelementptr inbounds i32, ptr %1919, i64 %1921
  %1923 = load i32, ptr %1922, align 4, !tbaa !9
  %1924 = icmp ne i32 %1923, 0
  br i1 %1924, label %1925, label %1963

1925:                                             ; preds = %1918
  %1926 = load ptr, ptr %63, align 8, !tbaa !5
  %1927 = load i32, ptr %20, align 4, !tbaa !9
  %1928 = sext i32 %1927 to i64
  %1929 = getelementptr inbounds double, ptr %1926, i64 %1928
  %1930 = load double, ptr %1929, align 8, !tbaa !24
  %1931 = load ptr, ptr %67, align 8, !tbaa !5
  %1932 = load i32, ptr %20, align 4, !tbaa !9
  %1933 = sext i32 %1932 to i64
  %1934 = getelementptr inbounds double, ptr %1931, i64 %1933
  %1935 = load double, ptr %1934, align 8, !tbaa !24
  %1936 = fadd double %1930, %1935
  %1937 = load ptr, ptr %51, align 8, !tbaa !5
  %1938 = load i32, ptr %20, align 4, !tbaa !9
  %1939 = sext i32 %1938 to i64
  %1940 = getelementptr inbounds double, ptr %1937, i64 %1939
  %1941 = load double, ptr %1940, align 8, !tbaa !24
  %1942 = fcmp olt double %1936, %1941
  br i1 %1942, label %1943, label %1963

1943:                                             ; preds = %1925
  %1944 = load double, ptr %47, align 8, !tbaa !24
  %1945 = load ptr, ptr %51, align 8, !tbaa !5
  %1946 = load i32, ptr %20, align 4, !tbaa !9
  %1947 = sext i32 %1946 to i64
  %1948 = getelementptr inbounds double, ptr %1945, i64 %1947
  %1949 = load double, ptr %1948, align 8, !tbaa !24
  %1950 = load ptr, ptr %63, align 8, !tbaa !5
  %1951 = load i32, ptr %20, align 4, !tbaa !9
  %1952 = sext i32 %1951 to i64
  %1953 = getelementptr inbounds double, ptr %1950, i64 %1952
  %1954 = load double, ptr %1953, align 8, !tbaa !24
  %1955 = fsub double %1949, %1954
  %1956 = load ptr, ptr %67, align 8, !tbaa !5
  %1957 = load i32, ptr %20, align 4, !tbaa !9
  %1958 = sext i32 %1957 to i64
  %1959 = getelementptr inbounds double, ptr %1956, i64 %1958
  %1960 = load double, ptr %1959, align 8, !tbaa !24
  %1961 = fdiv double %1955, %1960
  %1962 = call double @mp_dmin1(double noundef %1944, double noundef %1961)
  store double %1962, ptr %47, align 8, !tbaa !24
  br label %1963

1963:                                             ; preds = %1943, %1925, %1918, %1915
  %1964 = load i32, ptr %105, align 4, !tbaa !9
  %1965 = icmp ne i32 %1964, 0
  br i1 %1965, label %1966, label %2011

1966:                                             ; preds = %1963
  %1967 = load ptr, ptr %57, align 8, !tbaa !5
  %1968 = load i32, ptr %20, align 4, !tbaa !9
  %1969 = sext i32 %1968 to i64
  %1970 = getelementptr inbounds i32, ptr %1967, i64 %1969
  %1971 = load i32, ptr %1970, align 4, !tbaa !9
  %1972 = icmp ne i32 %1971, 0
  br i1 %1972, label %1973, label %2011

1973:                                             ; preds = %1966
  %1974 = load ptr, ptr %63, align 8, !tbaa !5
  %1975 = load i32, ptr %20, align 4, !tbaa !9
  %1976 = sext i32 %1975 to i64
  %1977 = getelementptr inbounds double, ptr %1974, i64 %1976
  %1978 = load double, ptr %1977, align 8, !tbaa !24
  %1979 = load ptr, ptr %67, align 8, !tbaa !5
  %1980 = load i32, ptr %20, align 4, !tbaa !9
  %1981 = sext i32 %1980 to i64
  %1982 = getelementptr inbounds double, ptr %1979, i64 %1981
  %1983 = load double, ptr %1982, align 8, !tbaa !24
  %1984 = fadd double %1978, %1983
  %1985 = load ptr, ptr %52, align 8, !tbaa !5
  %1986 = load i32, ptr %20, align 4, !tbaa !9
  %1987 = sext i32 %1986 to i64
  %1988 = getelementptr inbounds double, ptr %1985, i64 %1987
  %1989 = load double, ptr %1988, align 8, !tbaa !24
  %1990 = fcmp ogt double %1984, %1989
  br i1 %1990, label %1991, label %2011

1991:                                             ; preds = %1973
  %1992 = load double, ptr %47, align 8, !tbaa !24
  %1993 = load ptr, ptr %52, align 8, !tbaa !5
  %1994 = load i32, ptr %20, align 4, !tbaa !9
  %1995 = sext i32 %1994 to i64
  %1996 = getelementptr inbounds double, ptr %1993, i64 %1995
  %1997 = load double, ptr %1996, align 8, !tbaa !24
  %1998 = load ptr, ptr %63, align 8, !tbaa !5
  %1999 = load i32, ptr %20, align 4, !tbaa !9
  %2000 = sext i32 %1999 to i64
  %2001 = getelementptr inbounds double, ptr %1998, i64 %2000
  %2002 = load double, ptr %2001, align 8, !tbaa !24
  %2003 = fsub double %1997, %2002
  %2004 = load ptr, ptr %67, align 8, !tbaa !5
  %2005 = load i32, ptr %20, align 4, !tbaa !9
  %2006 = sext i32 %2005 to i64
  %2007 = getelementptr inbounds double, ptr %2004, i64 %2006
  %2008 = load double, ptr %2007, align 8, !tbaa !24
  %2009 = fdiv double %2003, %2008
  %2010 = call double @mp_dmin1(double noundef %1992, double noundef %2009)
  store double %2010, ptr %47, align 8, !tbaa !24
  br label %2011

2011:                                             ; preds = %1991, %1973, %1966, %1963
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #5
  br label %2012

2012:                                             ; preds = %2011
  %2013 = load i32, ptr %20, align 4, !tbaa !9
  %2014 = add nsw i32 %2013, 1
  store i32 %2014, ptr %20, align 4, !tbaa !9
  br label %1831, !llvm.loop !84

2015:                                             ; preds = %1831
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %2016

2016:                                             ; preds = %2149, %2015
  %2017 = load i32, ptr %20, align 4, !tbaa !9
  %2018 = load i32, ptr %23, align 4, !tbaa !9
  %2019 = icmp slt i32 %2017, %2018
  br i1 %2019, label %2020, label %2152

2020:                                             ; preds = %2016
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #5
  %2021 = load ptr, ptr %67, align 8, !tbaa !5
  %2022 = load i32, ptr %20, align 4, !tbaa !9
  %2023 = sext i32 %2022 to i64
  %2024 = getelementptr inbounds double, ptr %2021, i64 %2023
  %2025 = load double, ptr %2024, align 8, !tbaa !24
  %2026 = load double, ptr %47, align 8, !tbaa !24
  %2027 = fmul double %2025, %2026
  %2028 = load ptr, ptr %67, align 8, !tbaa !5
  %2029 = load i32, ptr %20, align 4, !tbaa !9
  %2030 = sext i32 %2029 to i64
  %2031 = getelementptr inbounds double, ptr %2028, i64 %2030
  store double %2027, ptr %2031, align 8, !tbaa !24
  %2032 = load ptr, ptr %63, align 8, !tbaa !5
  %2033 = load i32, ptr %20, align 4, !tbaa !9
  %2034 = sext i32 %2033 to i64
  %2035 = getelementptr inbounds double, ptr %2032, i64 %2034
  %2036 = load double, ptr %2035, align 8, !tbaa !24
  %2037 = load ptr, ptr %67, align 8, !tbaa !5
  %2038 = load i32, ptr %20, align 4, !tbaa !9
  %2039 = sext i32 %2038 to i64
  %2040 = getelementptr inbounds double, ptr %2037, i64 %2039
  %2041 = load double, ptr %2040, align 8, !tbaa !24
  %2042 = fadd double %2036, %2041
  %2043 = load ptr, ptr %68, align 8, !tbaa !5
  %2044 = load i32, ptr %20, align 4, !tbaa !9
  %2045 = sext i32 %2044 to i64
  %2046 = getelementptr inbounds double, ptr %2043, i64 %2045
  store double %2042, ptr %2046, align 8, !tbaa !24
  %2047 = load ptr, ptr %52, align 8, !tbaa !5
  %2048 = load i32, ptr %20, align 4, !tbaa !9
  %2049 = sext i32 %2048 to i64
  %2050 = getelementptr inbounds double, ptr %2047, i64 %2049
  %2051 = load double, ptr %2050, align 8, !tbaa !24
  %2052 = fcmp oge double %2051, 0.000000e+00
  %2053 = zext i1 %2052 to i64
  %2054 = select i1 %2052, i32 1, i32 -1
  %2055 = sitofp i32 %2054 to double
  store double %2055, ptr %106, align 8, !tbaa !24
  %2056 = load ptr, ptr %51, align 8, !tbaa !5
  %2057 = load i32, ptr %20, align 4, !tbaa !9
  %2058 = sext i32 %2057 to i64
  %2059 = getelementptr inbounds double, ptr %2056, i64 %2058
  %2060 = load double, ptr %2059, align 8, !tbaa !24
  %2061 = fcmp oge double %2060, 0.000000e+00
  %2062 = zext i1 %2061 to i64
  %2063 = select i1 %2061, i32 1, i32 -1
  %2064 = sitofp i32 %2063 to double
  store double %2064, ptr %107, align 8, !tbaa !24
  %2065 = load ptr, ptr %52, align 8, !tbaa !5
  %2066 = load i32, ptr %20, align 4, !tbaa !9
  %2067 = sext i32 %2066 to i64
  %2068 = getelementptr inbounds double, ptr %2065, i64 %2067
  %2069 = load double, ptr %2068, align 8, !tbaa !24
  %2070 = load double, ptr %106, align 8, !tbaa !24
  %2071 = fneg double %2070
  %2072 = call double @llvm.fmuladd.f64(double %2071, double 0x3CAFFFFFF4178DA3, double 1.000000e+00)
  %2073 = load ptr, ptr %52, align 8, !tbaa !5
  %2074 = load i32, ptr %20, align 4, !tbaa !9
  %2075 = sext i32 %2074 to i64
  %2076 = getelementptr inbounds double, ptr %2073, i64 %2075
  %2077 = load double, ptr %2076, align 8, !tbaa !24
  %2078 = fcmp oeq double %2077, 0.000000e+00
  %2079 = zext i1 %2078 to i64
  %2080 = select i1 %2078, double 0x3CAFFFFFF4178DA3, double 0.000000e+00
  %2081 = fneg double %2080
  %2082 = call double @llvm.fmuladd.f64(double %2069, double %2072, double %2081)
  store double %2082, ptr %108, align 8, !tbaa !24
  %2083 = load ptr, ptr %51, align 8, !tbaa !5
  %2084 = load i32, ptr %20, align 4, !tbaa !9
  %2085 = sext i32 %2084 to i64
  %2086 = getelementptr inbounds double, ptr %2083, i64 %2085
  %2087 = load double, ptr %2086, align 8, !tbaa !24
  %2088 = load double, ptr %107, align 8, !tbaa !24
  %2089 = call double @llvm.fmuladd.f64(double %2088, double 0x3CAFFFFFF4178DA3, double 1.000000e+00)
  %2090 = load ptr, ptr %51, align 8, !tbaa !5
  %2091 = load i32, ptr %20, align 4, !tbaa !9
  %2092 = sext i32 %2091 to i64
  %2093 = getelementptr inbounds double, ptr %2090, i64 %2092
  %2094 = load double, ptr %2093, align 8, !tbaa !24
  %2095 = fcmp oeq double %2094, 0.000000e+00
  %2096 = zext i1 %2095 to i64
  %2097 = select i1 %2095, double 0x3CAFFFFFF4178DA3, double 0.000000e+00
  %2098 = call double @llvm.fmuladd.f64(double %2087, double %2089, double %2097)
  store double %2098, ptr %109, align 8, !tbaa !24
  %2099 = load ptr, ptr %57, align 8, !tbaa !5
  %2100 = load i32, ptr %20, align 4, !tbaa !9
  %2101 = sext i32 %2100 to i64
  %2102 = getelementptr inbounds i32, ptr %2099, i64 %2101
  %2103 = load i32, ptr %2102, align 4, !tbaa !9
  %2104 = icmp ne i32 %2103, 0
  br i1 %2104, label %2105, label %2123

2105:                                             ; preds = %2020
  %2106 = load ptr, ptr %68, align 8, !tbaa !5
  %2107 = load i32, ptr %20, align 4, !tbaa !9
  %2108 = sext i32 %2107 to i64
  %2109 = getelementptr inbounds double, ptr %2106, i64 %2108
  %2110 = load double, ptr %2109, align 8, !tbaa !24
  %2111 = load double, ptr %108, align 8, !tbaa !24
  %2112 = fcmp oge double %2110, %2111
  br i1 %2112, label %2113, label %2123

2113:                                             ; preds = %2105
  %2114 = load ptr, ptr %52, align 8, !tbaa !5
  %2115 = load i32, ptr %20, align 4, !tbaa !9
  %2116 = sext i32 %2115 to i64
  %2117 = getelementptr inbounds double, ptr %2114, i64 %2116
  %2118 = load double, ptr %2117, align 8, !tbaa !24
  %2119 = load ptr, ptr %68, align 8, !tbaa !5
  %2120 = load i32, ptr %20, align 4, !tbaa !9
  %2121 = sext i32 %2120 to i64
  %2122 = getelementptr inbounds double, ptr %2119, i64 %2121
  store double %2118, ptr %2122, align 8, !tbaa !24
  br label %2123

2123:                                             ; preds = %2113, %2105, %2020
  %2124 = load ptr, ptr %56, align 8, !tbaa !5
  %2125 = load i32, ptr %20, align 4, !tbaa !9
  %2126 = sext i32 %2125 to i64
  %2127 = getelementptr inbounds i32, ptr %2124, i64 %2126
  %2128 = load i32, ptr %2127, align 4, !tbaa !9
  %2129 = icmp ne i32 %2128, 0
  br i1 %2129, label %2130, label %2148

2130:                                             ; preds = %2123
  %2131 = load ptr, ptr %68, align 8, !tbaa !5
  %2132 = load i32, ptr %20, align 4, !tbaa !9
  %2133 = sext i32 %2132 to i64
  %2134 = getelementptr inbounds double, ptr %2131, i64 %2133
  %2135 = load double, ptr %2134, align 8, !tbaa !24
  %2136 = load double, ptr %109, align 8, !tbaa !24
  %2137 = fcmp ole double %2135, %2136
  br i1 %2137, label %2138, label %2148

2138:                                             ; preds = %2130
  %2139 = load ptr, ptr %51, align 8, !tbaa !5
  %2140 = load i32, ptr %20, align 4, !tbaa !9
  %2141 = sext i32 %2140 to i64
  %2142 = getelementptr inbounds double, ptr %2139, i64 %2141
  %2143 = load double, ptr %2142, align 8, !tbaa !24
  %2144 = load ptr, ptr %68, align 8, !tbaa !5
  %2145 = load i32, ptr %20, align 4, !tbaa !9
  %2146 = sext i32 %2145 to i64
  %2147 = getelementptr inbounds double, ptr %2144, i64 %2146
  store double %2143, ptr %2147, align 8, !tbaa !24
  br label %2148

2148:                                             ; preds = %2138, %2130, %2123
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #5
  br label %2149

2149:                                             ; preds = %2148
  %2150 = load i32, ptr %20, align 4, !tbaa !9
  %2151 = add nsw i32 %2150, 1
  store i32 %2151, ptr %20, align 4, !tbaa !9
  br label %2016, !llvm.loop !85

2152:                                             ; preds = %2016
  br label %2153

2153:                                             ; preds = %2152, %1829
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %2154

2154:                                             ; preds = %2178, %2153
  %2155 = load i32, ptr %20, align 4, !tbaa !9
  %2156 = load i32, ptr %23, align 4, !tbaa !9
  %2157 = icmp slt i32 %2155, %2156
  br i1 %2157, label %2158, label %2181

2158:                                             ; preds = %2154
  %2159 = load ptr, ptr %66, align 8, !tbaa !5
  %2160 = load ptr, ptr %55, align 8, !tbaa !5
  %2161 = load i32, ptr %20, align 4, !tbaa !9
  %2162 = sext i32 %2161 to i64
  %2163 = getelementptr inbounds i32, ptr %2160, i64 %2162
  %2164 = load i32, ptr %2163, align 4, !tbaa !9
  %2165 = sext i32 %2164 to i64
  %2166 = getelementptr inbounds double, ptr %2159, i64 %2165
  %2167 = load double, ptr %2166, align 8, !tbaa !24
  %2168 = load ptr, ptr %67, align 8, !tbaa !5
  %2169 = load i32, ptr %20, align 4, !tbaa !9
  %2170 = sext i32 %2169 to i64
  %2171 = getelementptr inbounds double, ptr %2168, i64 %2170
  %2172 = load double, ptr %2171, align 8, !tbaa !24
  %2173 = fmul double %2167, %2172
  %2174 = load ptr, ptr %69, align 8, !tbaa !5
  %2175 = load i32, ptr %20, align 4, !tbaa !9
  %2176 = sext i32 %2175 to i64
  %2177 = getelementptr inbounds double, ptr %2174, i64 %2176
  store double %2173, ptr %2177, align 8, !tbaa !24
  br label %2178

2178:                                             ; preds = %2158
  %2179 = load i32, ptr %20, align 4, !tbaa !9
  %2180 = add nsw i32 %2179, 1
  store i32 %2180, ptr %20, align 4, !tbaa !9
  br label %2154, !llvm.loop !86

2181:                                             ; preds = %2154
  %2182 = load i32, ptr %23, align 4, !tbaa !9
  %2183 = load ptr, ptr %69, align 8, !tbaa !5
  %2184 = call double @mp_enorm(i32 noundef %2182, ptr noundef %2183)
  store double %2184, ptr %38, align 8, !tbaa !24
  %2185 = load i32, ptr %25, align 4, !tbaa !9
  %2186 = icmp eq i32 %2185, 1
  br i1 %2186, label %2187, label %2191

2187:                                             ; preds = %2181
  %2188 = load double, ptr %31, align 8, !tbaa !24
  %2189 = load double, ptr %38, align 8, !tbaa !24
  %2190 = call double @mp_dmin1(double noundef %2188, double noundef %2189)
  store double %2190, ptr %31, align 8, !tbaa !24
  br label %2191

2191:                                             ; preds = %2187, %2181
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %2192

2192:                                             ; preds = %2210, %2191
  %2193 = load i32, ptr %19, align 4, !tbaa !9
  %2194 = load i32, ptr %23, align 4, !tbaa !9
  %2195 = icmp slt i32 %2193, %2194
  br i1 %2195, label %2196, label %2213

2196:                                             ; preds = %2192
  %2197 = load ptr, ptr %68, align 8, !tbaa !5
  %2198 = load i32, ptr %19, align 4, !tbaa !9
  %2199 = sext i32 %2198 to i64
  %2200 = getelementptr inbounds double, ptr %2197, i64 %2199
  %2201 = load double, ptr %2200, align 8, !tbaa !24
  %2202 = load ptr, ptr %64, align 8, !tbaa !5
  %2203 = load ptr, ptr %55, align 8, !tbaa !5
  %2204 = load i32, ptr %19, align 4, !tbaa !9
  %2205 = sext i32 %2204 to i64
  %2206 = getelementptr inbounds i32, ptr %2203, i64 %2205
  %2207 = load i32, ptr %2206, align 4, !tbaa !9
  %2208 = sext i32 %2207 to i64
  %2209 = getelementptr inbounds double, ptr %2202, i64 %2208
  store double %2201, ptr %2209, align 8, !tbaa !24
  br label %2210

2210:                                             ; preds = %2196
  %2211 = load i32, ptr %19, align 4, !tbaa !9
  %2212 = add nsw i32 %2211, 1
  store i32 %2212, ptr %19, align 4, !tbaa !9
  br label %2192, !llvm.loop !87

2213:                                             ; preds = %2192
  %2214 = load ptr, ptr %10, align 8, !tbaa !5
  %2215 = load i32, ptr %11, align 4, !tbaa !9
  %2216 = load i32, ptr %12, align 4, !tbaa !9
  %2217 = load ptr, ptr %64, align 8, !tbaa !5
  %2218 = load ptr, ptr %70, align 8, !tbaa !5
  %2219 = load ptr, ptr %16, align 8, !tbaa !5
  %2220 = call i32 %2214(i32 noundef %2215, i32 noundef %2216, ptr noundef %2217, ptr noundef %2218, ptr noundef null, ptr noundef %2219)
  store i32 %2220, ptr %22, align 4, !tbaa !9
  %2221 = load i32, ptr %48, align 4, !tbaa !9
  %2222 = add nsw i32 %2221, 1
  store i32 %2222, ptr %48, align 4, !tbaa !9
  %2223 = load i32, ptr %22, align 4, !tbaa !9
  %2224 = icmp slt i32 %2223, 0
  br i1 %2224, label %2225, label %2226

2225:                                             ; preds = %2213
  br label %2561

2226:                                             ; preds = %2213
  %2227 = load i32, ptr %11, align 4, !tbaa !9
  %2228 = load ptr, ptr %70, align 8, !tbaa !5
  %2229 = call double @mp_enorm(i32 noundef %2227, ptr noundef %2228)
  store double %2229, ptr %34, align 8, !tbaa !24
  %2230 = load double, ptr @mpfit.one, align 8, !tbaa !24
  %2231 = fneg double %2230
  store double %2231, ptr %30, align 8, !tbaa !24
  %2232 = load double, ptr @mpfit.p1, align 8, !tbaa !24
  %2233 = load double, ptr %34, align 8, !tbaa !24
  %2234 = fmul double %2232, %2233
  %2235 = load double, ptr %33, align 8, !tbaa !24
  %2236 = fcmp olt double %2234, %2235
  br i1 %2236, label %2237, label %2246

2237:                                             ; preds = %2226
  %2238 = load double, ptr %34, align 8, !tbaa !24
  %2239 = load double, ptr %33, align 8, !tbaa !24
  %2240 = fdiv double %2238, %2239
  store double %2240, ptr %42, align 8, !tbaa !24
  %2241 = load double, ptr @mpfit.one, align 8, !tbaa !24
  %2242 = load double, ptr %42, align 8, !tbaa !24
  %2243 = load double, ptr %42, align 8, !tbaa !24
  %2244 = fneg double %2242
  %2245 = call double @llvm.fmuladd.f64(double %2244, double %2243, double %2241)
  store double %2245, ptr %30, align 8, !tbaa !24
  br label %2246

2246:                                             ; preds = %2237, %2226
  store i32 0, ptr %28, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %2247

2247:                                             ; preds = %2294, %2246
  %2248 = load i32, ptr %20, align 4, !tbaa !9
  %2249 = load i32, ptr %23, align 4, !tbaa !9
  %2250 = icmp slt i32 %2248, %2249
  br i1 %2250, label %2251, label %2297

2251:                                             ; preds = %2247
  %2252 = load double, ptr @mpfit.zero, align 8, !tbaa !24
  %2253 = load ptr, ptr %69, align 8, !tbaa !5
  %2254 = load i32, ptr %20, align 4, !tbaa !9
  %2255 = sext i32 %2254 to i64
  %2256 = getelementptr inbounds double, ptr %2253, i64 %2255
  store double %2252, ptr %2256, align 8, !tbaa !24
  %2257 = load ptr, ptr %72, align 8, !tbaa !5
  %2258 = load i32, ptr %20, align 4, !tbaa !9
  %2259 = sext i32 %2258 to i64
  %2260 = getelementptr inbounds i32, ptr %2257, i64 %2259
  %2261 = load i32, ptr %2260, align 4, !tbaa !9
  store i32 %2261, ptr %29, align 4, !tbaa !9
  %2262 = load ptr, ptr %67, align 8, !tbaa !5
  %2263 = load i32, ptr %29, align 4, !tbaa !9
  %2264 = sext i32 %2263 to i64
  %2265 = getelementptr inbounds double, ptr %2262, i64 %2264
  %2266 = load double, ptr %2265, align 8, !tbaa !24
  store double %2266, ptr %42, align 8, !tbaa !24
  %2267 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %2267, ptr %27, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %2268

2268:                                             ; preds = %2287, %2251
  %2269 = load i32, ptr %19, align 4, !tbaa !9
  %2270 = load i32, ptr %20, align 4, !tbaa !9
  %2271 = icmp sle i32 %2269, %2270
  br i1 %2271, label %2272, label %2290

2272:                                             ; preds = %2268
  %2273 = load ptr, ptr %65, align 8, !tbaa !5
  %2274 = load i32, ptr %27, align 4, !tbaa !9
  %2275 = sext i32 %2274 to i64
  %2276 = getelementptr inbounds double, ptr %2273, i64 %2275
  %2277 = load double, ptr %2276, align 8, !tbaa !24
  %2278 = load double, ptr %42, align 8, !tbaa !24
  %2279 = load ptr, ptr %69, align 8, !tbaa !5
  %2280 = load i32, ptr %19, align 4, !tbaa !9
  %2281 = sext i32 %2280 to i64
  %2282 = getelementptr inbounds double, ptr %2279, i64 %2281
  %2283 = load double, ptr %2282, align 8, !tbaa !24
  %2284 = call double @llvm.fmuladd.f64(double %2277, double %2278, double %2283)
  store double %2284, ptr %2282, align 8, !tbaa !24
  %2285 = load i32, ptr %27, align 4, !tbaa !9
  %2286 = add nsw i32 %2285, 1
  store i32 %2286, ptr %27, align 4, !tbaa !9
  br label %2287

2287:                                             ; preds = %2272
  %2288 = load i32, ptr %19, align 4, !tbaa !9
  %2289 = add nsw i32 %2288, 1
  store i32 %2289, ptr %19, align 4, !tbaa !9
  br label %2268, !llvm.loop !88

2290:                                             ; preds = %2268
  %2291 = load i32, ptr %11, align 4, !tbaa !9
  %2292 = load i32, ptr %28, align 4, !tbaa !9
  %2293 = add nsw i32 %2292, %2291
  store i32 %2293, ptr %28, align 4, !tbaa !9
  br label %2294

2294:                                             ; preds = %2290
  %2295 = load i32, ptr %20, align 4, !tbaa !9
  %2296 = add nsw i32 %2295, 1
  store i32 %2296, ptr %20, align 4, !tbaa !9
  br label %2247, !llvm.loop !89

2297:                                             ; preds = %2247
  %2298 = load i32, ptr %23, align 4, !tbaa !9
  %2299 = load ptr, ptr %69, align 8, !tbaa !5
  %2300 = call double @mp_enorm(i32 noundef %2298, ptr noundef %2299)
  %2301 = load double, ptr %47, align 8, !tbaa !24
  %2302 = fmul double %2300, %2301
  %2303 = load double, ptr %33, align 8, !tbaa !24
  %2304 = fdiv double %2302, %2303
  store double %2304, ptr %43, align 8, !tbaa !24
  %2305 = load double, ptr %47, align 8, !tbaa !24
  %2306 = load double, ptr %37, align 8, !tbaa !24
  %2307 = fmul double %2305, %2306
  %2308 = call double @sqrt(double noundef %2307) #5
  %2309 = load double, ptr %38, align 8, !tbaa !24
  %2310 = fmul double %2308, %2309
  %2311 = load double, ptr %33, align 8, !tbaa !24
  %2312 = fdiv double %2310, %2311
  store double %2312, ptr %44, align 8, !tbaa !24
  %2313 = load double, ptr %43, align 8, !tbaa !24
  %2314 = load double, ptr %43, align 8, !tbaa !24
  %2315 = load double, ptr %44, align 8, !tbaa !24
  %2316 = load double, ptr %44, align 8, !tbaa !24
  %2317 = fmul double %2315, %2316
  %2318 = load double, ptr @mpfit.p5, align 8, !tbaa !24
  %2319 = fdiv double %2317, %2318
  %2320 = call double @llvm.fmuladd.f64(double %2313, double %2314, double %2319)
  store double %2320, ptr %39, align 8, !tbaa !24
  %2321 = load double, ptr %43, align 8, !tbaa !24
  %2322 = load double, ptr %43, align 8, !tbaa !24
  %2323 = load double, ptr %44, align 8, !tbaa !24
  %2324 = load double, ptr %44, align 8, !tbaa !24
  %2325 = fmul double %2323, %2324
  %2326 = call double @llvm.fmuladd.f64(double %2321, double %2322, double %2325)
  %2327 = fneg double %2326
  store double %2327, ptr %32, align 8, !tbaa !24
  %2328 = load double, ptr @mpfit.zero, align 8, !tbaa !24
  store double %2328, ptr %40, align 8, !tbaa !24
  %2329 = load double, ptr %39, align 8, !tbaa !24
  %2330 = load double, ptr @mpfit.zero, align 8, !tbaa !24
  %2331 = fcmp une double %2329, %2330
  br i1 %2331, label %2332, label %2336

2332:                                             ; preds = %2297
  %2333 = load double, ptr %30, align 8, !tbaa !24
  %2334 = load double, ptr %39, align 8, !tbaa !24
  %2335 = fdiv double %2333, %2334
  store double %2335, ptr %40, align 8, !tbaa !24
  br label %2336

2336:                                             ; preds = %2332, %2297
  %2337 = load double, ptr %40, align 8, !tbaa !24
  %2338 = load double, ptr @mpfit.p25, align 8, !tbaa !24
  %2339 = fcmp ole double %2337, %2338
  br i1 %2339, label %2340, label %2378

2340:                                             ; preds = %2336
  %2341 = load double, ptr %30, align 8, !tbaa !24
  %2342 = load double, ptr @mpfit.zero, align 8, !tbaa !24
  %2343 = fcmp oge double %2341, %2342
  br i1 %2343, label %2344, label %2346

2344:                                             ; preds = %2340
  %2345 = load double, ptr @mpfit.p5, align 8, !tbaa !24
  store double %2345, ptr %42, align 8, !tbaa !24
  br label %2355

2346:                                             ; preds = %2340
  %2347 = load double, ptr @mpfit.p5, align 8, !tbaa !24
  %2348 = load double, ptr %32, align 8, !tbaa !24
  %2349 = fmul double %2347, %2348
  %2350 = load double, ptr %32, align 8, !tbaa !24
  %2351 = load double, ptr @mpfit.p5, align 8, !tbaa !24
  %2352 = load double, ptr %30, align 8, !tbaa !24
  %2353 = call double @llvm.fmuladd.f64(double %2351, double %2352, double %2350)
  %2354 = fdiv double %2349, %2353
  store double %2354, ptr %42, align 8, !tbaa !24
  br label %2355

2355:                                             ; preds = %2346, %2344
  %2356 = load double, ptr @mpfit.p1, align 8, !tbaa !24
  %2357 = load double, ptr %34, align 8, !tbaa !24
  %2358 = fmul double %2356, %2357
  %2359 = load double, ptr %33, align 8, !tbaa !24
  %2360 = fcmp oge double %2358, %2359
  br i1 %2360, label %2365, label %2361

2361:                                             ; preds = %2355
  %2362 = load double, ptr %42, align 8, !tbaa !24
  %2363 = load double, ptr @mpfit.p1, align 8, !tbaa !24
  %2364 = fcmp olt double %2362, %2363
  br i1 %2364, label %2365, label %2367

2365:                                             ; preds = %2361, %2355
  %2366 = load double, ptr @mpfit.p1, align 8, !tbaa !24
  store double %2366, ptr %42, align 8, !tbaa !24
  br label %2367

2367:                                             ; preds = %2365, %2361
  %2368 = load double, ptr %42, align 8, !tbaa !24
  %2369 = load double, ptr %31, align 8, !tbaa !24
  %2370 = load double, ptr %38, align 8, !tbaa !24
  %2371 = load double, ptr @mpfit.p1, align 8, !tbaa !24
  %2372 = fdiv double %2370, %2371
  %2373 = call double @mp_dmin1(double noundef %2369, double noundef %2372)
  %2374 = fmul double %2368, %2373
  store double %2374, ptr %31, align 8, !tbaa !24
  %2375 = load double, ptr %37, align 8, !tbaa !24
  %2376 = load double, ptr %42, align 8, !tbaa !24
  %2377 = fdiv double %2375, %2376
  store double %2377, ptr %37, align 8, !tbaa !24
  br label %2394

2378:                                             ; preds = %2336
  %2379 = load double, ptr %37, align 8, !tbaa !24
  %2380 = load double, ptr @mpfit.zero, align 8, !tbaa !24
  %2381 = fcmp oeq double %2379, %2380
  br i1 %2381, label %2386, label %2382

2382:                                             ; preds = %2378
  %2383 = load double, ptr %40, align 8, !tbaa !24
  %2384 = load double, ptr @mpfit.p75, align 8, !tbaa !24
  %2385 = fcmp oge double %2383, %2384
  br i1 %2385, label %2386, label %2393

2386:                                             ; preds = %2382, %2378
  %2387 = load double, ptr %38, align 8, !tbaa !24
  %2388 = load double, ptr @mpfit.p5, align 8, !tbaa !24
  %2389 = fdiv double %2387, %2388
  store double %2389, ptr %31, align 8, !tbaa !24
  %2390 = load double, ptr @mpfit.p5, align 8, !tbaa !24
  %2391 = load double, ptr %37, align 8, !tbaa !24
  %2392 = fmul double %2390, %2391
  store double %2392, ptr %37, align 8, !tbaa !24
  br label %2393

2393:                                             ; preds = %2386, %2382
  br label %2394

2394:                                             ; preds = %2393, %2367
  %2395 = load double, ptr %40, align 8, !tbaa !24
  %2396 = load double, ptr @mpfit.p0001, align 8, !tbaa !24
  %2397 = fcmp oge double %2395, %2396
  br i1 %2397, label %2398, label %2460

2398:                                             ; preds = %2394
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %2399

2399:                                             ; preds = %2432, %2398
  %2400 = load i32, ptr %20, align 4, !tbaa !9
  %2401 = load i32, ptr %23, align 4, !tbaa !9
  %2402 = icmp slt i32 %2400, %2401
  br i1 %2402, label %2403, label %2435

2403:                                             ; preds = %2399
  %2404 = load ptr, ptr %68, align 8, !tbaa !5
  %2405 = load i32, ptr %20, align 4, !tbaa !9
  %2406 = sext i32 %2405 to i64
  %2407 = getelementptr inbounds double, ptr %2404, i64 %2406
  %2408 = load double, ptr %2407, align 8, !tbaa !24
  %2409 = load ptr, ptr %63, align 8, !tbaa !5
  %2410 = load i32, ptr %20, align 4, !tbaa !9
  %2411 = sext i32 %2410 to i64
  %2412 = getelementptr inbounds double, ptr %2409, i64 %2411
  store double %2408, ptr %2412, align 8, !tbaa !24
  %2413 = load ptr, ptr %66, align 8, !tbaa !5
  %2414 = load ptr, ptr %55, align 8, !tbaa !5
  %2415 = load i32, ptr %20, align 4, !tbaa !9
  %2416 = sext i32 %2415 to i64
  %2417 = getelementptr inbounds i32, ptr %2414, i64 %2416
  %2418 = load i32, ptr %2417, align 4, !tbaa !9
  %2419 = sext i32 %2418 to i64
  %2420 = getelementptr inbounds double, ptr %2413, i64 %2419
  %2421 = load double, ptr %2420, align 8, !tbaa !24
  %2422 = load ptr, ptr %63, align 8, !tbaa !5
  %2423 = load i32, ptr %20, align 4, !tbaa !9
  %2424 = sext i32 %2423 to i64
  %2425 = getelementptr inbounds double, ptr %2422, i64 %2424
  %2426 = load double, ptr %2425, align 8, !tbaa !24
  %2427 = fmul double %2421, %2426
  %2428 = load ptr, ptr %68, align 8, !tbaa !5
  %2429 = load i32, ptr %20, align 4, !tbaa !9
  %2430 = sext i32 %2429 to i64
  %2431 = getelementptr inbounds double, ptr %2428, i64 %2430
  store double %2427, ptr %2431, align 8, !tbaa !24
  br label %2432

2432:                                             ; preds = %2403
  %2433 = load i32, ptr %20, align 4, !tbaa !9
  %2434 = add nsw i32 %2433, 1
  store i32 %2434, ptr %20, align 4, !tbaa !9
  br label %2399, !llvm.loop !90

2435:                                             ; preds = %2399
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %2436

2436:                                             ; preds = %2450, %2435
  %2437 = load i32, ptr %19, align 4, !tbaa !9
  %2438 = load i32, ptr %11, align 4, !tbaa !9
  %2439 = icmp slt i32 %2437, %2438
  br i1 %2439, label %2440, label %2453

2440:                                             ; preds = %2436
  %2441 = load ptr, ptr %70, align 8, !tbaa !5
  %2442 = load i32, ptr %19, align 4, !tbaa !9
  %2443 = sext i32 %2442 to i64
  %2444 = getelementptr inbounds double, ptr %2441, i64 %2443
  %2445 = load double, ptr %2444, align 8, !tbaa !24
  %2446 = load ptr, ptr %61, align 8, !tbaa !5
  %2447 = load i32, ptr %19, align 4, !tbaa !9
  %2448 = sext i32 %2447 to i64
  %2449 = getelementptr inbounds double, ptr %2446, i64 %2448
  store double %2445, ptr %2449, align 8, !tbaa !24
  br label %2450

2450:                                             ; preds = %2440
  %2451 = load i32, ptr %19, align 4, !tbaa !9
  %2452 = add nsw i32 %2451, 1
  store i32 %2452, ptr %19, align 4, !tbaa !9
  br label %2436, !llvm.loop !91

2453:                                             ; preds = %2436
  %2454 = load i32, ptr %23, align 4, !tbaa !9
  %2455 = load ptr, ptr %68, align 8, !tbaa !5
  %2456 = call double @mp_enorm(i32 noundef %2454, ptr noundef %2455)
  store double %2456, ptr %46, align 8, !tbaa !24
  %2457 = load double, ptr %34, align 8, !tbaa !24
  store double %2457, ptr %33, align 8, !tbaa !24
  %2458 = load i32, ptr %25, align 4, !tbaa !9
  %2459 = add nsw i32 %2458, 1
  store i32 %2459, ptr %25, align 4, !tbaa !9
  br label %2460

2460:                                             ; preds = %2453, %2394
  %2461 = load double, ptr %30, align 8, !tbaa !24
  %2462 = call double @llvm.fabs.f64(double %2461)
  %2463 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 0
  %2464 = load double, ptr %2463, align 8, !tbaa !11
  %2465 = fcmp ole double %2462, %2464
  br i1 %2465, label %2466, label %2478

2466:                                             ; preds = %2460
  %2467 = load double, ptr %39, align 8, !tbaa !24
  %2468 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 0
  %2469 = load double, ptr %2468, align 8, !tbaa !11
  %2470 = fcmp ole double %2467, %2469
  br i1 %2470, label %2471, label %2478

2471:                                             ; preds = %2466
  %2472 = load double, ptr @mpfit.p5, align 8, !tbaa !24
  %2473 = load double, ptr %40, align 8, !tbaa !24
  %2474 = fmul double %2472, %2473
  %2475 = load double, ptr @mpfit.one, align 8, !tbaa !24
  %2476 = fcmp ole double %2474, %2475
  br i1 %2476, label %2477, label %2478

2477:                                             ; preds = %2471
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %2478

2478:                                             ; preds = %2477, %2471, %2466, %2460
  %2479 = load double, ptr %31, align 8, !tbaa !24
  %2480 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 1
  %2481 = load double, ptr %2480, align 8, !tbaa !14
  %2482 = load double, ptr %46, align 8, !tbaa !24
  %2483 = fmul double %2481, %2482
  %2484 = fcmp ole double %2479, %2483
  br i1 %2484, label %2485, label %2486

2485:                                             ; preds = %2478
  store i32 2, ptr %21, align 4, !tbaa !9
  br label %2486

2486:                                             ; preds = %2485, %2478
  %2487 = load double, ptr %30, align 8, !tbaa !24
  %2488 = call double @llvm.fabs.f64(double %2487)
  %2489 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 0
  %2490 = load double, ptr %2489, align 8, !tbaa !11
  %2491 = fcmp ole double %2488, %2490
  br i1 %2491, label %2492, label %2507

2492:                                             ; preds = %2486
  %2493 = load double, ptr %39, align 8, !tbaa !24
  %2494 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 0
  %2495 = load double, ptr %2494, align 8, !tbaa !11
  %2496 = fcmp ole double %2493, %2495
  br i1 %2496, label %2497, label %2507

2497:                                             ; preds = %2492
  %2498 = load double, ptr @mpfit.p5, align 8, !tbaa !24
  %2499 = load double, ptr %40, align 8, !tbaa !24
  %2500 = fmul double %2498, %2499
  %2501 = load double, ptr @mpfit.one, align 8, !tbaa !24
  %2502 = fcmp ole double %2500, %2501
  br i1 %2502, label %2503, label %2507

2503:                                             ; preds = %2497
  %2504 = load i32, ptr %21, align 4, !tbaa !9
  %2505 = icmp eq i32 %2504, 2
  br i1 %2505, label %2506, label %2507

2506:                                             ; preds = %2503
  store i32 3, ptr %21, align 4, !tbaa !9
  br label %2507

2507:                                             ; preds = %2506, %2503, %2497, %2492, %2486
  %2508 = load i32, ptr %21, align 4, !tbaa !9
  %2509 = icmp ne i32 %2508, 0
  br i1 %2509, label %2510, label %2511

2510:                                             ; preds = %2507
  br label %2561

2511:                                             ; preds = %2507
  %2512 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 7
  %2513 = load i32, ptr %2512, align 4, !tbaa !21
  %2514 = icmp sgt i32 %2513, 0
  br i1 %2514, label %2515, label %2521

2515:                                             ; preds = %2511
  %2516 = load i32, ptr %48, align 4, !tbaa !9
  %2517 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 7
  %2518 = load i32, ptr %2517, align 4, !tbaa !21
  %2519 = icmp sge i32 %2516, %2518
  br i1 %2519, label %2520, label %2521

2520:                                             ; preds = %2515
  store i32 5, ptr %21, align 4, !tbaa !9
  br label %2521

2521:                                             ; preds = %2520, %2515, %2511
  %2522 = load i32, ptr %25, align 4, !tbaa !9
  %2523 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 6
  %2524 = load i32, ptr %2523, align 8, !tbaa !19
  %2525 = icmp sge i32 %2522, %2524
  br i1 %2525, label %2526, label %2527

2526:                                             ; preds = %2521
  store i32 5, ptr %21, align 4, !tbaa !9
  br label %2527

2527:                                             ; preds = %2526, %2521
  %2528 = load double, ptr %30, align 8, !tbaa !24
  %2529 = call double @llvm.fabs.f64(double %2528)
  %2530 = fcmp ole double %2529, 0x3CAFFFFFF4178DA3
  br i1 %2530, label %2531, label %2541

2531:                                             ; preds = %2527
  %2532 = load double, ptr %39, align 8, !tbaa !24
  %2533 = fcmp ole double %2532, 0x3CAFFFFFF4178DA3
  br i1 %2533, label %2534, label %2541

2534:                                             ; preds = %2531
  %2535 = load double, ptr @mpfit.p5, align 8, !tbaa !24
  %2536 = load double, ptr %40, align 8, !tbaa !24
  %2537 = fmul double %2535, %2536
  %2538 = load double, ptr @mpfit.one, align 8, !tbaa !24
  %2539 = fcmp ole double %2537, %2538
  br i1 %2539, label %2540, label %2541

2540:                                             ; preds = %2534
  store i32 6, ptr %21, align 4, !tbaa !9
  br label %2541

2541:                                             ; preds = %2540, %2534, %2531, %2527
  %2542 = load double, ptr %31, align 8, !tbaa !24
  %2543 = load double, ptr %46, align 8, !tbaa !24
  %2544 = fmul double 0x3CAFFFFFF4178DA3, %2543
  %2545 = fcmp ole double %2542, %2544
  br i1 %2545, label %2546, label %2547

2546:                                             ; preds = %2541
  store i32 7, ptr %21, align 4, !tbaa !9
  br label %2547

2547:                                             ; preds = %2546, %2541
  %2548 = load double, ptr %35, align 8, !tbaa !24
  %2549 = fcmp ole double %2548, 0x3CAFFFFFF4178DA3
  br i1 %2549, label %2550, label %2551

2550:                                             ; preds = %2547
  store i32 8, ptr %21, align 4, !tbaa !9
  br label %2551

2551:                                             ; preds = %2550, %2547
  %2552 = load i32, ptr %21, align 4, !tbaa !9
  %2553 = icmp ne i32 %2552, 0
  br i1 %2553, label %2554, label %2555

2554:                                             ; preds = %2551
  br label %2561

2555:                                             ; preds = %2551
  %2556 = load double, ptr %40, align 8, !tbaa !24
  %2557 = load double, ptr @mpfit.p0001, align 8, !tbaa !24
  %2558 = fcmp olt double %2556, %2557
  br i1 %2558, label %2559, label %2560

2559:                                             ; preds = %2555
  br label %1771

2560:                                             ; preds = %2555
  br label %1202

2561:                                             ; preds = %2554, %2510, %2225, %1732, %1727
  %2562 = load i32, ptr %22, align 4, !tbaa !9
  %2563 = icmp slt i32 %2562, 0
  br i1 %2563, label %2564, label %2566

2564:                                             ; preds = %2561
  %2565 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %2565, ptr %21, align 4, !tbaa !9
  br label %2566

2566:                                             ; preds = %2564, %2561
  store i32 0, ptr %22, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %2567

2567:                                             ; preds = %2585, %2566
  %2568 = load i32, ptr %19, align 4, !tbaa !9
  %2569 = load i32, ptr %23, align 4, !tbaa !9
  %2570 = icmp slt i32 %2568, %2569
  br i1 %2570, label %2571, label %2588

2571:                                             ; preds = %2567
  %2572 = load ptr, ptr %63, align 8, !tbaa !5
  %2573 = load i32, ptr %19, align 4, !tbaa !9
  %2574 = sext i32 %2573 to i64
  %2575 = getelementptr inbounds double, ptr %2572, i64 %2574
  %2576 = load double, ptr %2575, align 8, !tbaa !24
  %2577 = load ptr, ptr %13, align 8, !tbaa !5
  %2578 = load ptr, ptr %55, align 8, !tbaa !5
  %2579 = load i32, ptr %19, align 4, !tbaa !9
  %2580 = sext i32 %2579 to i64
  %2581 = getelementptr inbounds i32, ptr %2578, i64 %2580
  %2582 = load i32, ptr %2581, align 4, !tbaa !9
  %2583 = sext i32 %2582 to i64
  %2584 = getelementptr inbounds double, ptr %2577, i64 %2583
  store double %2576, ptr %2584, align 8, !tbaa !24
  br label %2585

2585:                                             ; preds = %2571
  %2586 = load i32, ptr %19, align 4, !tbaa !9
  %2587 = add nsw i32 %2586, 1
  store i32 %2587, ptr %19, align 4, !tbaa !9
  br label %2567, !llvm.loop !92

2588:                                             ; preds = %2567
  %2589 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 8
  %2590 = load i32, ptr %2589, align 8, !tbaa !17
  %2591 = icmp sgt i32 %2590, 0
  br i1 %2591, label %2592, label %2605

2592:                                             ; preds = %2588
  %2593 = load i32, ptr %21, align 4, !tbaa !9
  %2594 = icmp sgt i32 %2593, 0
  br i1 %2594, label %2595, label %2605

2595:                                             ; preds = %2592
  %2596 = load ptr, ptr %10, align 8, !tbaa !5
  %2597 = load i32, ptr %11, align 4, !tbaa !9
  %2598 = load i32, ptr %12, align 4, !tbaa !9
  %2599 = load ptr, ptr %13, align 8, !tbaa !5
  %2600 = load ptr, ptr %61, align 8, !tbaa !5
  %2601 = load ptr, ptr %16, align 8, !tbaa !5
  %2602 = call i32 %2596(i32 noundef %2597, i32 noundef %2598, ptr noundef %2599, ptr noundef %2600, ptr noundef null, ptr noundef %2601)
  store i32 %2602, ptr %22, align 4, !tbaa !9
  %2603 = load i32, ptr %48, align 4, !tbaa !9
  %2604 = add nsw i32 %2603, 1
  store i32 %2604, ptr %48, align 4, !tbaa !9
  br label %2605

2605:                                             ; preds = %2595, %2592, %2588
  store i32 0, ptr %24, align 4, !tbaa !9
  %2606 = load ptr, ptr %14, align 8, !tbaa !5
  %2607 = icmp ne ptr %2606, null
  br i1 %2607, label %2608, label %2667

2608:                                             ; preds = %2605
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %2609

2609:                                             ; preds = %2663, %2608
  %2610 = load i32, ptr %19, align 4, !tbaa !9
  %2611 = load i32, ptr %12, align 4, !tbaa !9
  %2612 = icmp slt i32 %2610, %2611
  br i1 %2612, label %2613, label %2666

2613:                                             ; preds = %2609
  %2614 = load ptr, ptr %14, align 8, !tbaa !5
  %2615 = load i32, ptr %19, align 4, !tbaa !9
  %2616 = sext i32 %2615 to i64
  %2617 = getelementptr inbounds %struct.mp_par_struct, ptr %2614, i64 %2616
  %2618 = getelementptr inbounds %struct.mp_par_struct, ptr %2617, i32 0, i32 1
  %2619 = getelementptr inbounds [2 x i32], ptr %2618, i64 0, i64 0
  %2620 = load i32, ptr %2619, align 4, !tbaa !9
  %2621 = icmp ne i32 %2620, 0
  br i1 %2621, label %2622, label %2636

2622:                                             ; preds = %2613
  %2623 = load ptr, ptr %14, align 8, !tbaa !5
  %2624 = load i32, ptr %19, align 4, !tbaa !9
  %2625 = sext i32 %2624 to i64
  %2626 = getelementptr inbounds %struct.mp_par_struct, ptr %2623, i64 %2625
  %2627 = getelementptr inbounds %struct.mp_par_struct, ptr %2626, i32 0, i32 2
  %2628 = getelementptr inbounds [2 x double], ptr %2627, i64 0, i64 0
  %2629 = load double, ptr %2628, align 8, !tbaa !24
  %2630 = load ptr, ptr %13, align 8, !tbaa !5
  %2631 = load i32, ptr %19, align 4, !tbaa !9
  %2632 = sext i32 %2631 to i64
  %2633 = getelementptr inbounds double, ptr %2630, i64 %2632
  %2634 = load double, ptr %2633, align 8, !tbaa !24
  %2635 = fcmp oeq double %2629, %2634
  br i1 %2635, label %2659, label %2636

2636:                                             ; preds = %2622, %2613
  %2637 = load ptr, ptr %14, align 8, !tbaa !5
  %2638 = load i32, ptr %19, align 4, !tbaa !9
  %2639 = sext i32 %2638 to i64
  %2640 = getelementptr inbounds %struct.mp_par_struct, ptr %2637, i64 %2639
  %2641 = getelementptr inbounds %struct.mp_par_struct, ptr %2640, i32 0, i32 1
  %2642 = getelementptr inbounds [2 x i32], ptr %2641, i64 0, i64 1
  %2643 = load i32, ptr %2642, align 4, !tbaa !9
  %2644 = icmp ne i32 %2643, 0
  br i1 %2644, label %2645, label %2662

2645:                                             ; preds = %2636
  %2646 = load ptr, ptr %14, align 8, !tbaa !5
  %2647 = load i32, ptr %19, align 4, !tbaa !9
  %2648 = sext i32 %2647 to i64
  %2649 = getelementptr inbounds %struct.mp_par_struct, ptr %2646, i64 %2648
  %2650 = getelementptr inbounds %struct.mp_par_struct, ptr %2649, i32 0, i32 2
  %2651 = getelementptr inbounds [2 x double], ptr %2650, i64 0, i64 1
  %2652 = load double, ptr %2651, align 8, !tbaa !24
  %2653 = load ptr, ptr %13, align 8, !tbaa !5
  %2654 = load i32, ptr %19, align 4, !tbaa !9
  %2655 = sext i32 %2654 to i64
  %2656 = getelementptr inbounds double, ptr %2653, i64 %2655
  %2657 = load double, ptr %2656, align 8, !tbaa !24
  %2658 = fcmp oeq double %2652, %2657
  br i1 %2658, label %2659, label %2662

2659:                                             ; preds = %2645, %2622
  %2660 = load i32, ptr %24, align 4, !tbaa !9
  %2661 = add nsw i32 %2660, 1
  store i32 %2661, ptr %24, align 4, !tbaa !9
  br label %2662

2662:                                             ; preds = %2659, %2645, %2636
  br label %2663

2663:                                             ; preds = %2662
  %2664 = load i32, ptr %19, align 4, !tbaa !9
  %2665 = add nsw i32 %2664, 1
  store i32 %2665, ptr %19, align 4, !tbaa !9
  br label %2609, !llvm.loop !93

2666:                                             ; preds = %2609
  br label %2667

2667:                                             ; preds = %2666, %2605
  %2668 = load ptr, ptr %17, align 8, !tbaa !5
  %2669 = icmp ne ptr %2668, null
  br i1 %2669, label %2670, label %2812

2670:                                             ; preds = %2667
  %2671 = load ptr, ptr %17, align 8, !tbaa !5
  %2672 = getelementptr inbounds %struct.mp_result_struct, ptr %2671, i32 0, i32 11
  %2673 = load ptr, ptr %2672, align 8, !tbaa !94
  %2674 = icmp ne ptr %2673, null
  br i1 %2674, label %2680, label %2675

2675:                                             ; preds = %2670
  %2676 = load ptr, ptr %17, align 8, !tbaa !5
  %2677 = getelementptr inbounds %struct.mp_result_struct, ptr %2676, i32 0, i32 10
  %2678 = load ptr, ptr %2677, align 8, !tbaa !96
  %2679 = icmp ne ptr %2678, null
  br i1 %2679, label %2680, label %2812

2680:                                             ; preds = %2675, %2670
  %2681 = load i32, ptr %23, align 4, !tbaa !9
  %2682 = load ptr, ptr %65, align 8, !tbaa !5
  %2683 = load i32, ptr %73, align 4, !tbaa !9
  %2684 = load ptr, ptr %72, align 8, !tbaa !5
  %2685 = getelementptr inbounds %struct.mp_config_struct, ptr %18, i32 0, i32 5
  %2686 = load double, ptr %2685, align 8, !tbaa !22
  %2687 = load ptr, ptr %68, align 8, !tbaa !5
  %2688 = call i32 @mp_covar(i32 noundef %2681, ptr noundef %2682, i32 noundef %2683, ptr noundef %2684, double noundef %2686, ptr noundef %2687)
  %2689 = load ptr, ptr %17, align 8, !tbaa !5
  %2690 = getelementptr inbounds %struct.mp_result_struct, ptr %2689, i32 0, i32 11
  %2691 = load ptr, ptr %2690, align 8, !tbaa !94
  %2692 = icmp ne ptr %2691, null
  br i1 %2692, label %2693, label %2756

2693:                                             ; preds = %2680
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %2694

2694:                                             ; preds = %2707, %2693
  %2695 = load i32, ptr %20, align 4, !tbaa !9
  %2696 = load i32, ptr %12, align 4, !tbaa !9
  %2697 = load i32, ptr %12, align 4, !tbaa !9
  %2698 = mul nsw i32 %2696, %2697
  %2699 = icmp slt i32 %2695, %2698
  br i1 %2699, label %2700, label %2710

2700:                                             ; preds = %2694
  %2701 = load ptr, ptr %17, align 8, !tbaa !5
  %2702 = getelementptr inbounds %struct.mp_result_struct, ptr %2701, i32 0, i32 11
  %2703 = load ptr, ptr %2702, align 8, !tbaa !94
  %2704 = load i32, ptr %20, align 4, !tbaa !9
  %2705 = sext i32 %2704 to i64
  %2706 = getelementptr inbounds double, ptr %2703, i64 %2705
  store double 0.000000e+00, ptr %2706, align 8, !tbaa !24
  br label %2707

2707:                                             ; preds = %2700
  %2708 = load i32, ptr %20, align 4, !tbaa !9
  %2709 = add nsw i32 %2708, 1
  store i32 %2709, ptr %20, align 4, !tbaa !9
  br label %2694, !llvm.loop !97

2710:                                             ; preds = %2694
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %2711

2711:                                             ; preds = %2752, %2710
  %2712 = load i32, ptr %20, align 4, !tbaa !9
  %2713 = load i32, ptr %23, align 4, !tbaa !9
  %2714 = icmp slt i32 %2712, %2713
  br i1 %2714, label %2715, label %2755

2715:                                             ; preds = %2711
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %2716

2716:                                             ; preds = %2748, %2715
  %2717 = load i32, ptr %19, align 4, !tbaa !9
  %2718 = load i32, ptr %23, align 4, !tbaa !9
  %2719 = icmp slt i32 %2717, %2718
  br i1 %2719, label %2720, label %2751

2720:                                             ; preds = %2716
  %2721 = load ptr, ptr %65, align 8, !tbaa !5
  %2722 = load i32, ptr %20, align 4, !tbaa !9
  %2723 = load i32, ptr %73, align 4, !tbaa !9
  %2724 = mul nsw i32 %2722, %2723
  %2725 = load i32, ptr %19, align 4, !tbaa !9
  %2726 = add nsw i32 %2724, %2725
  %2727 = sext i32 %2726 to i64
  %2728 = getelementptr inbounds double, ptr %2721, i64 %2727
  %2729 = load double, ptr %2728, align 8, !tbaa !24
  %2730 = load ptr, ptr %17, align 8, !tbaa !5
  %2731 = getelementptr inbounds %struct.mp_result_struct, ptr %2730, i32 0, i32 11
  %2732 = load ptr, ptr %2731, align 8, !tbaa !94
  %2733 = load ptr, ptr %55, align 8, !tbaa !5
  %2734 = load i32, ptr %20, align 4, !tbaa !9
  %2735 = sext i32 %2734 to i64
  %2736 = getelementptr inbounds i32, ptr %2733, i64 %2735
  %2737 = load i32, ptr %2736, align 4, !tbaa !9
  %2738 = load i32, ptr %12, align 4, !tbaa !9
  %2739 = mul nsw i32 %2737, %2738
  %2740 = load ptr, ptr %55, align 8, !tbaa !5
  %2741 = load i32, ptr %19, align 4, !tbaa !9
  %2742 = sext i32 %2741 to i64
  %2743 = getelementptr inbounds i32, ptr %2740, i64 %2742
  %2744 = load i32, ptr %2743, align 4, !tbaa !9
  %2745 = add nsw i32 %2739, %2744
  %2746 = sext i32 %2745 to i64
  %2747 = getelementptr inbounds double, ptr %2732, i64 %2746
  store double %2729, ptr %2747, align 8, !tbaa !24
  br label %2748

2748:                                             ; preds = %2720
  %2749 = load i32, ptr %19, align 4, !tbaa !9
  %2750 = add nsw i32 %2749, 1
  store i32 %2750, ptr %19, align 4, !tbaa !9
  br label %2716, !llvm.loop !98

2751:                                             ; preds = %2716
  br label %2752

2752:                                             ; preds = %2751
  %2753 = load i32, ptr %20, align 4, !tbaa !9
  %2754 = add nsw i32 %2753, 1
  store i32 %2754, ptr %20, align 4, !tbaa !9
  br label %2711, !llvm.loop !99

2755:                                             ; preds = %2711
  br label %2756

2756:                                             ; preds = %2755, %2680
  %2757 = load ptr, ptr %17, align 8, !tbaa !5
  %2758 = getelementptr inbounds %struct.mp_result_struct, ptr %2757, i32 0, i32 10
  %2759 = load ptr, ptr %2758, align 8, !tbaa !96
  %2760 = icmp ne ptr %2759, null
  br i1 %2760, label %2761, label %2811

2761:                                             ; preds = %2756
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %2762

2762:                                             ; preds = %2773, %2761
  %2763 = load i32, ptr %20, align 4, !tbaa !9
  %2764 = load i32, ptr %12, align 4, !tbaa !9
  %2765 = icmp slt i32 %2763, %2764
  br i1 %2765, label %2766, label %2776

2766:                                             ; preds = %2762
  %2767 = load ptr, ptr %17, align 8, !tbaa !5
  %2768 = getelementptr inbounds %struct.mp_result_struct, ptr %2767, i32 0, i32 10
  %2769 = load ptr, ptr %2768, align 8, !tbaa !96
  %2770 = load i32, ptr %20, align 4, !tbaa !9
  %2771 = sext i32 %2770 to i64
  %2772 = getelementptr inbounds double, ptr %2769, i64 %2771
  store double 0.000000e+00, ptr %2772, align 8, !tbaa !24
  br label %2773

2773:                                             ; preds = %2766
  %2774 = load i32, ptr %20, align 4, !tbaa !9
  %2775 = add nsw i32 %2774, 1
  store i32 %2775, ptr %20, align 4, !tbaa !9
  br label %2762, !llvm.loop !100

2776:                                             ; preds = %2762
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %2777

2777:                                             ; preds = %2807, %2776
  %2778 = load i32, ptr %20, align 4, !tbaa !9
  %2779 = load i32, ptr %23, align 4, !tbaa !9
  %2780 = icmp slt i32 %2778, %2779
  br i1 %2780, label %2781, label %2810

2781:                                             ; preds = %2777
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #5
  %2782 = load ptr, ptr %65, align 8, !tbaa !5
  %2783 = load i32, ptr %20, align 4, !tbaa !9
  %2784 = load i32, ptr %73, align 4, !tbaa !9
  %2785 = mul nsw i32 %2783, %2784
  %2786 = load i32, ptr %20, align 4, !tbaa !9
  %2787 = add nsw i32 %2785, %2786
  %2788 = sext i32 %2787 to i64
  %2789 = getelementptr inbounds double, ptr %2782, i64 %2788
  %2790 = load double, ptr %2789, align 8, !tbaa !24
  store double %2790, ptr %110, align 8, !tbaa !24
  %2791 = load double, ptr %110, align 8, !tbaa !24
  %2792 = fcmp ogt double %2791, 0.000000e+00
  br i1 %2792, label %2793, label %2806

2793:                                             ; preds = %2781
  %2794 = load double, ptr %110, align 8, !tbaa !24
  %2795 = call double @sqrt(double noundef %2794) #5
  %2796 = load ptr, ptr %17, align 8, !tbaa !5
  %2797 = getelementptr inbounds %struct.mp_result_struct, ptr %2796, i32 0, i32 10
  %2798 = load ptr, ptr %2797, align 8, !tbaa !96
  %2799 = load ptr, ptr %55, align 8, !tbaa !5
  %2800 = load i32, ptr %20, align 4, !tbaa !9
  %2801 = sext i32 %2800 to i64
  %2802 = getelementptr inbounds i32, ptr %2799, i64 %2801
  %2803 = load i32, ptr %2802, align 4, !tbaa !9
  %2804 = sext i32 %2803 to i64
  %2805 = getelementptr inbounds double, ptr %2798, i64 %2804
  store double %2795, ptr %2805, align 8, !tbaa !24
  br label %2806

2806:                                             ; preds = %2793, %2781
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #5
  br label %2807

2807:                                             ; preds = %2806
  %2808 = load i32, ptr %20, align 4, !tbaa !9
  %2809 = add nsw i32 %2808, 1
  store i32 %2809, ptr %20, align 4, !tbaa !9
  br label %2777, !llvm.loop !101

2810:                                             ; preds = %2777
  br label %2811

2811:                                             ; preds = %2810, %2756
  br label %2812

2812:                                             ; preds = %2811, %2675, %2667
  %2813 = load ptr, ptr %17, align 8, !tbaa !5
  %2814 = icmp ne ptr %2813, null
  br i1 %2814, label %2815, label %2882

2815:                                             ; preds = %2812
  %2816 = load ptr, ptr %17, align 8, !tbaa !5
  %2817 = getelementptr inbounds %struct.mp_result_struct, ptr %2816, i32 0, i32 12
  %2818 = getelementptr inbounds [20 x i8], ptr %2817, i64 0, i64 0
  %2819 = call ptr @strcpy(ptr noundef %2818, ptr noundef @.str) #5
  %2820 = load double, ptr %33, align 8, !tbaa !24
  %2821 = load double, ptr %34, align 8, !tbaa !24
  %2822 = call double @mp_dmax1(double noundef %2820, double noundef %2821)
  %2823 = load ptr, ptr %17, align 8, !tbaa !5
  %2824 = getelementptr inbounds %struct.mp_result_struct, ptr %2823, i32 0, i32 0
  store double %2822, ptr %2824, align 8, !tbaa !102
  %2825 = load ptr, ptr %17, align 8, !tbaa !5
  %2826 = getelementptr inbounds %struct.mp_result_struct, ptr %2825, i32 0, i32 0
  %2827 = load double, ptr %2826, align 8, !tbaa !102
  %2828 = load ptr, ptr %17, align 8, !tbaa !5
  %2829 = getelementptr inbounds %struct.mp_result_struct, ptr %2828, i32 0, i32 0
  %2830 = load double, ptr %2829, align 8, !tbaa !102
  %2831 = fmul double %2830, %2827
  store double %2831, ptr %2829, align 8, !tbaa !102
  %2832 = load double, ptr %36, align 8, !tbaa !24
  %2833 = load ptr, ptr %17, align 8, !tbaa !5
  %2834 = getelementptr inbounds %struct.mp_result_struct, ptr %2833, i32 0, i32 1
  store double %2832, ptr %2834, align 8, !tbaa !103
  %2835 = load i32, ptr %21, align 4, !tbaa !9
  %2836 = load ptr, ptr %17, align 8, !tbaa !5
  %2837 = getelementptr inbounds %struct.mp_result_struct, ptr %2836, i32 0, i32 4
  store i32 %2835, ptr %2837, align 8, !tbaa !104
  %2838 = load i32, ptr %25, align 4, !tbaa !9
  %2839 = load ptr, ptr %17, align 8, !tbaa !5
  %2840 = getelementptr inbounds %struct.mp_result_struct, ptr %2839, i32 0, i32 2
  store i32 %2838, ptr %2840, align 8, !tbaa !105
  %2841 = load i32, ptr %48, align 4, !tbaa !9
  %2842 = load ptr, ptr %17, align 8, !tbaa !5
  %2843 = getelementptr inbounds %struct.mp_result_struct, ptr %2842, i32 0, i32 3
  store i32 %2841, ptr %2843, align 4, !tbaa !106
  %2844 = load i32, ptr %12, align 4, !tbaa !9
  %2845 = load ptr, ptr %17, align 8, !tbaa !5
  %2846 = getelementptr inbounds %struct.mp_result_struct, ptr %2845, i32 0, i32 5
  store i32 %2844, ptr %2846, align 4, !tbaa !107
  %2847 = load i32, ptr %23, align 4, !tbaa !9
  %2848 = load ptr, ptr %17, align 8, !tbaa !5
  %2849 = getelementptr inbounds %struct.mp_result_struct, ptr %2848, i32 0, i32 6
  store i32 %2847, ptr %2849, align 8, !tbaa !108
  %2850 = load i32, ptr %24, align 4, !tbaa !9
  %2851 = load ptr, ptr %17, align 8, !tbaa !5
  %2852 = getelementptr inbounds %struct.mp_result_struct, ptr %2851, i32 0, i32 7
  store i32 %2850, ptr %2852, align 4, !tbaa !109
  %2853 = load i32, ptr %11, align 4, !tbaa !9
  %2854 = load ptr, ptr %17, align 8, !tbaa !5
  %2855 = getelementptr inbounds %struct.mp_result_struct, ptr %2854, i32 0, i32 8
  store i32 %2853, ptr %2855, align 8, !tbaa !110
  %2856 = load ptr, ptr %17, align 8, !tbaa !5
  %2857 = getelementptr inbounds %struct.mp_result_struct, ptr %2856, i32 0, i32 9
  %2858 = load ptr, ptr %2857, align 8, !tbaa !111
  %2859 = icmp ne ptr %2858, null
  br i1 %2859, label %2860, label %2881

2860:                                             ; preds = %2815
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %2861

2861:                                             ; preds = %2877, %2860
  %2862 = load i32, ptr %20, align 4, !tbaa !9
  %2863 = load i32, ptr %11, align 4, !tbaa !9
  %2864 = icmp slt i32 %2862, %2863
  br i1 %2864, label %2865, label %2880

2865:                                             ; preds = %2861
  %2866 = load ptr, ptr %61, align 8, !tbaa !5
  %2867 = load i32, ptr %20, align 4, !tbaa !9
  %2868 = sext i32 %2867 to i64
  %2869 = getelementptr inbounds double, ptr %2866, i64 %2868
  %2870 = load double, ptr %2869, align 8, !tbaa !24
  %2871 = load ptr, ptr %17, align 8, !tbaa !5
  %2872 = getelementptr inbounds %struct.mp_result_struct, ptr %2871, i32 0, i32 9
  %2873 = load ptr, ptr %2872, align 8, !tbaa !111
  %2874 = load i32, ptr %20, align 4, !tbaa !9
  %2875 = sext i32 %2874 to i64
  %2876 = getelementptr inbounds double, ptr %2873, i64 %2875
  store double %2870, ptr %2876, align 8, !tbaa !24
  br label %2877

2877:                                             ; preds = %2865
  %2878 = load i32, ptr %20, align 4, !tbaa !9
  %2879 = add nsw i32 %2878, 1
  store i32 %2879, ptr %20, align 4, !tbaa !9
  br label %2861, !llvm.loop !112

2880:                                             ; preds = %2861
  br label %2881

2881:                                             ; preds = %2880, %2815
  br label %2882

2882:                                             ; preds = %2881, %2812
  br label %2883

2883:                                             ; preds = %2882, %1646, %1251, %1141, %1114, %1092, %1070, %1048, %1026, %1004, %982, %957, %932, %910, %888, %866, %858, %853, %730, %708, %686, %664, %652, %609, %554, %511, %416, %394, %372, %350, %328, %306, %258
  %2884 = load ptr, ptr %61, align 8, !tbaa !5
  %2885 = icmp ne ptr %2884, null
  br i1 %2885, label %2886, label %2888

2886:                                             ; preds = %2883
  %2887 = load ptr, ptr %61, align 8, !tbaa !5
  call void @free(ptr noundef %2887) #5
  br label %2888

2888:                                             ; preds = %2886, %2883
  %2889 = load ptr, ptr %62, align 8, !tbaa !5
  %2890 = icmp ne ptr %2889, null
  br i1 %2890, label %2891, label %2893

2891:                                             ; preds = %2888
  %2892 = load ptr, ptr %62, align 8, !tbaa !5
  call void @free(ptr noundef %2892) #5
  br label %2893

2893:                                             ; preds = %2891, %2888
  %2894 = load ptr, ptr %63, align 8, !tbaa !5
  %2895 = icmp ne ptr %2894, null
  br i1 %2895, label %2896, label %2898

2896:                                             ; preds = %2893
  %2897 = load ptr, ptr %63, align 8, !tbaa !5
  call void @free(ptr noundef %2897) #5
  br label %2898

2898:                                             ; preds = %2896, %2893
  %2899 = load ptr, ptr %64, align 8, !tbaa !5
  %2900 = icmp ne ptr %2899, null
  br i1 %2900, label %2901, label %2903

2901:                                             ; preds = %2898
  %2902 = load ptr, ptr %64, align 8, !tbaa !5
  call void @free(ptr noundef %2902) #5
  br label %2903

2903:                                             ; preds = %2901, %2898
  %2904 = load ptr, ptr %65, align 8, !tbaa !5
  %2905 = icmp ne ptr %2904, null
  br i1 %2905, label %2906, label %2908

2906:                                             ; preds = %2903
  %2907 = load ptr, ptr %65, align 8, !tbaa !5
  call void @free(ptr noundef %2907) #5
  br label %2908

2908:                                             ; preds = %2906, %2903
  %2909 = load ptr, ptr %66, align 8, !tbaa !5
  %2910 = icmp ne ptr %2909, null
  br i1 %2910, label %2911, label %2913

2911:                                             ; preds = %2908
  %2912 = load ptr, ptr %66, align 8, !tbaa !5
  call void @free(ptr noundef %2912) #5
  br label %2913

2913:                                             ; preds = %2911, %2908
  %2914 = load ptr, ptr %67, align 8, !tbaa !5
  %2915 = icmp ne ptr %2914, null
  br i1 %2915, label %2916, label %2918

2916:                                             ; preds = %2913
  %2917 = load ptr, ptr %67, align 8, !tbaa !5
  call void @free(ptr noundef %2917) #5
  br label %2918

2918:                                             ; preds = %2916, %2913
  %2919 = load ptr, ptr %68, align 8, !tbaa !5
  %2920 = icmp ne ptr %2919, null
  br i1 %2920, label %2921, label %2923

2921:                                             ; preds = %2918
  %2922 = load ptr, ptr %68, align 8, !tbaa !5
  call void @free(ptr noundef %2922) #5
  br label %2923

2923:                                             ; preds = %2921, %2918
  %2924 = load ptr, ptr %69, align 8, !tbaa !5
  %2925 = icmp ne ptr %2924, null
  br i1 %2925, label %2926, label %2928

2926:                                             ; preds = %2923
  %2927 = load ptr, ptr %69, align 8, !tbaa !5
  call void @free(ptr noundef %2927) #5
  br label %2928

2928:                                             ; preds = %2926, %2923
  %2929 = load ptr, ptr %70, align 8, !tbaa !5
  %2930 = icmp ne ptr %2929, null
  br i1 %2930, label %2931, label %2933

2931:                                             ; preds = %2928
  %2932 = load ptr, ptr %70, align 8, !tbaa !5
  call void @free(ptr noundef %2932) #5
  br label %2933

2933:                                             ; preds = %2931, %2928
  %2934 = load ptr, ptr %72, align 8, !tbaa !5
  %2935 = icmp ne ptr %2934, null
  br i1 %2935, label %2936, label %2938

2936:                                             ; preds = %2933
  %2937 = load ptr, ptr %72, align 8, !tbaa !5
  call void @free(ptr noundef %2937) #5
  br label %2938

2938:                                             ; preds = %2936, %2933
  %2939 = load ptr, ptr %53, align 8, !tbaa !5
  %2940 = icmp ne ptr %2939, null
  br i1 %2940, label %2941, label %2943

2941:                                             ; preds = %2938
  %2942 = load ptr, ptr %53, align 8, !tbaa !5
  call void @free(ptr noundef %2942) #5
  br label %2943

2943:                                             ; preds = %2941, %2938
  %2944 = load ptr, ptr %49, align 8, !tbaa !5
  %2945 = icmp ne ptr %2944, null
  br i1 %2945, label %2946, label %2948

2946:                                             ; preds = %2943
  %2947 = load ptr, ptr %49, align 8, !tbaa !5
  call void @free(ptr noundef %2947) #5
  br label %2948

2948:                                             ; preds = %2946, %2943
  %2949 = load ptr, ptr %50, align 8, !tbaa !5
  %2950 = icmp ne ptr %2949, null
  br i1 %2950, label %2951, label %2953

2951:                                             ; preds = %2948
  %2952 = load ptr, ptr %50, align 8, !tbaa !5
  call void @free(ptr noundef %2952) #5
  br label %2953

2953:                                             ; preds = %2951, %2948
  %2954 = load ptr, ptr %54, align 8, !tbaa !5
  %2955 = icmp ne ptr %2954, null
  br i1 %2955, label %2956, label %2958

2956:                                             ; preds = %2953
  %2957 = load ptr, ptr %54, align 8, !tbaa !5
  call void @free(ptr noundef %2957) #5
  br label %2958

2958:                                             ; preds = %2956, %2953
  %2959 = load ptr, ptr %58, align 8, !tbaa !5
  %2960 = icmp ne ptr %2959, null
  br i1 %2960, label %2961, label %2963

2961:                                             ; preds = %2958
  %2962 = load ptr, ptr %58, align 8, !tbaa !5
  call void @free(ptr noundef %2962) #5
  br label %2963

2963:                                             ; preds = %2961, %2958
  %2964 = load ptr, ptr %59, align 8, !tbaa !5
  %2965 = icmp ne ptr %2964, null
  br i1 %2965, label %2966, label %2968

2966:                                             ; preds = %2963
  %2967 = load ptr, ptr %59, align 8, !tbaa !5
  call void @free(ptr noundef %2967) #5
  br label %2968

2968:                                             ; preds = %2966, %2963
  %2969 = load ptr, ptr %60, align 8, !tbaa !5
  %2970 = icmp ne ptr %2969, null
  br i1 %2970, label %2971, label %2973

2971:                                             ; preds = %2968
  %2972 = load ptr, ptr %60, align 8, !tbaa !5
  call void @free(ptr noundef %2972) #5
  br label %2973

2973:                                             ; preds = %2971, %2968
  %2974 = load ptr, ptr %55, align 8, !tbaa !5
  %2975 = icmp ne ptr %2974, null
  br i1 %2975, label %2976, label %2978

2976:                                             ; preds = %2973
  %2977 = load ptr, ptr %55, align 8, !tbaa !5
  call void @free(ptr noundef %2977) #5
  br label %2978

2978:                                             ; preds = %2976, %2973
  %2979 = load ptr, ptr %56, align 8, !tbaa !5
  %2980 = icmp ne ptr %2979, null
  br i1 %2980, label %2981, label %2983

2981:                                             ; preds = %2978
  %2982 = load ptr, ptr %56, align 8, !tbaa !5
  call void @free(ptr noundef %2982) #5
  br label %2983

2983:                                             ; preds = %2981, %2978
  %2984 = load ptr, ptr %57, align 8, !tbaa !5
  %2985 = icmp ne ptr %2984, null
  br i1 %2985, label %2986, label %2988

2986:                                             ; preds = %2983
  %2987 = load ptr, ptr %57, align 8, !tbaa !5
  call void @free(ptr noundef %2987) #5
  br label %2988

2988:                                             ; preds = %2986, %2983
  %2989 = load ptr, ptr %51, align 8, !tbaa !5
  %2990 = icmp ne ptr %2989, null
  br i1 %2990, label %2991, label %2993

2991:                                             ; preds = %2988
  %2992 = load ptr, ptr %51, align 8, !tbaa !5
  call void @free(ptr noundef %2992) #5
  br label %2993

2993:                                             ; preds = %2991, %2988
  %2994 = load ptr, ptr %52, align 8, !tbaa !5
  %2995 = icmp ne ptr %2994, null
  br i1 %2995, label %2996, label %2998

2996:                                             ; preds = %2993
  %2997 = load ptr, ptr %52, align 8, !tbaa !5
  call void @free(ptr noundef %2997) #5
  br label %2998

2998:                                             ; preds = %2996, %2993
  %2999 = load ptr, ptr %71, align 8, !tbaa !5
  %3000 = icmp ne ptr %2999, null
  br i1 %3000, label %3001, label %3003

3001:                                             ; preds = %2998
  %3002 = load ptr, ptr %71, align 8, !tbaa !5
  call void @free(ptr noundef %3002) #5
  br label %3003

3003:                                             ; preds = %3001, %2998
  %3004 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %3004, ptr %9, align 4
  store i32 1, ptr %74, align 4
  br label %3005

3005:                                             ; preds = %3003, %1646, %250, %246, %239
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %18) #5
  %3006 = load i32, ptr %9, align 4
  ret i32 %3006
}

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i1 @llvm.is.fpclass.f64(double, i32 immarg) #3

; Function Attrs: nounwind uwtable
declare hidden double @mp_dmax1(double noundef, double noundef) #0

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

; Function Attrs: nounwind uwtable
declare hidden void @mp_lmpar(i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare hidden double @mp_dmin1(double noundef, double noundef) #0

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

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

; Function Attrs: nounwind
declare ptr @strcpy(ptr noundef, ptr noundef) #4

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

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

!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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"mp_config_struct", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !6, i64 72}
!13 = !{!"double", !7, i64 0}
!14 = !{!12, !13, i64 8}
!15 = !{!12, !13, i64 16}
!16 = !{!12, !13, i64 32}
!17 = !{!12, !10, i64 56}
!18 = !{!12, !13, i64 24}
!19 = !{!12, !10, i64 48}
!20 = !{!12, !10, i64 60}
!21 = !{!12, !10, i64 52}
!22 = !{!12, !13, i64 40}
!23 = !{!12, !10, i64 64}
!24 = !{!13, !13, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!28, !10, i64 0}
!28 = !{!"mp_par_struct", !10, i64 0, !7, i64 4, !7, i64 16, !6, i64 32, !13, i64 40, !13, i64 48, !10, i64 56, !10, i64 60, !13, i64 64, !13, i64 72}
!29 = distinct !{!29, !26}
!30 = distinct !{!30, !26}
!31 = distinct !{!31, !26}
!32 = distinct !{!32, !26}
!33 = distinct !{!33, !26}
!34 = distinct !{!34, !26}
!35 = distinct !{!35, !26}
!36 = !{!28, !13, i64 40}
!37 = !{!28, !13, i64 48}
!38 = !{!28, !10, i64 56}
!39 = !{!28, !10, i64 60}
!40 = !{!28, !13, i64 64}
!41 = !{!28, !13, i64 72}
!42 = distinct !{!42, !26}
!43 = distinct !{!43, !26}
!44 = distinct !{!44, !26}
!45 = distinct !{!45, !26}
!46 = distinct !{!46, !26}
!47 = distinct !{!47, !26}
!48 = distinct !{!48, !26}
!49 = distinct !{!49, !26}
!50 = distinct !{!50, !26}
!51 = distinct !{!51, !26}
!52 = distinct !{!52, !26}
!53 = distinct !{!53, !26}
!54 = distinct !{!54, !26}
!55 = distinct !{!55, !26}
!56 = distinct !{!56, !26}
!57 = distinct !{!57, !26}
!58 = distinct !{!58, !26}
!59 = distinct !{!59, !26}
!60 = distinct !{!60, !26}
!61 = distinct !{!61, !26}
!62 = distinct !{!62, !26}
!63 = distinct !{!63, !26}
!64 = distinct !{!64, !26}
!65 = distinct !{!65, !26}
!66 = distinct !{!66, !26}
!67 = distinct !{!67, !26}
!68 = distinct !{!68, !26}
!69 = distinct !{!69, !26}
!70 = distinct !{!70, !26}
!71 = distinct !{!71, !26}
!72 = distinct !{!72, !26}
!73 = distinct !{!73, !26}
!74 = distinct !{!74, !26}
!75 = distinct !{!75, !26}
!76 = distinct !{!76, !26}
!77 = distinct !{!77, !26}
!78 = distinct !{!78, !26}
!79 = distinct !{!79, !26}
!80 = distinct !{!80, !26}
!81 = distinct !{!81, !26}
!82 = distinct !{!82, !26}
!83 = distinct !{!83, !26}
!84 = distinct !{!84, !26}
!85 = distinct !{!85, !26}
!86 = distinct !{!86, !26}
!87 = distinct !{!87, !26}
!88 = distinct !{!88, !26}
!89 = distinct !{!89, !26}
!90 = distinct !{!90, !26}
!91 = distinct !{!91, !26}
!92 = distinct !{!92, !26}
!93 = distinct !{!93, !26}
!94 = !{!95, !6, i64 64}
!95 = !{!"mp_result_struct", !13, i64 0, !13, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !7, i64 72}
!96 = !{!95, !6, i64 56}
!97 = distinct !{!97, !26}
!98 = distinct !{!98, !26}
!99 = distinct !{!99, !26}
!100 = distinct !{!100, !26}
!101 = distinct !{!101, !26}
!102 = !{!95, !13, i64 0}
!103 = !{!95, !13, i64 8}
!104 = !{!95, !10, i64 24}
!105 = !{!95, !10, i64 16}
!106 = !{!95, !10, i64 20}
!107 = !{!95, !10, i64 28}
!108 = !{!95, !10, i64 32}
!109 = !{!95, !10, i64 36}
!110 = !{!95, !10, i64 40}
!111 = !{!95, !6, i64 48}
!112 = distinct !{!112, !26}


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

%struct.mp_par_struct = type { i32, [2 x i32], [2 x double], ptr, double, double, i32, i32, double, double }

@mpfit.one = external hidden local_unnamed_addr global double, align 8
@mpfit.p1 = external hidden local_unnamed_addr global double, align 8
@mpfit.p5 = external hidden local_unnamed_addr global double, align 8
@mpfit.p25 = external hidden local_unnamed_addr global double, align 8
@mpfit.p75 = external hidden local_unnamed_addr global double, align 8
@mpfit.p0001 = external hidden local_unnamed_addr global double, align 8
@mpfit.zero = external hidden local_unnamed_addr global double, align 8
@.str = external hidden unnamed_addr constant [4 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @mpfit(ptr noundef %0, i32 noundef %1, i32 noundef %2, ptr noundef %3, ptr noundef readonly %4, ptr noundef readonly %5, ptr noundef %6, ptr noundef %7) local_unnamed_addr #0 {
  %9 = alloca double, align 8
  %10 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #11
  store i32 0, ptr %10, align 4, !tbaa !5
  %.not = icmp eq ptr %5, null
  br i1 %.not, label %34, label %11

11:                                               ; preds = %8
  %12 = getelementptr inbounds i8, ptr %5, i64 32
  %13 = load double, ptr %12, align 8, !tbaa !9
  %14 = fcmp ogt double %13, 0.000000e+00
  %.sroa.20.0 = select i1 %14, double %13, double 1.000000e+02
  %15 = getelementptr inbounds i8, ptr %5, i64 56
  %16 = load i32, ptr %15, align 8, !tbaa !13
  %17 = icmp sgt i32 %16, -1
  %.sroa.38.0 = select i1 %17, i32 %16, i32 1
  %18 = load <4 x double>, ptr %5, align 8, !tbaa !14
  %19 = fcmp ogt <4 x double> %18, zeroinitializer
  %20 = select <4 x i1> %19, <4 x double> %18, <4 x double> <double 1.000000e-10, double 1.000000e-10, double 1.000000e-10, double 0x3CAFFFFFF4178DA3>
  %21 = getelementptr inbounds i8, ptr %5, i64 48
  %22 = load i32, ptr %21, align 8, !tbaa !15
  %23 = icmp sgt i32 %22, 0
  %.sroa.28.0 = select i1 %23, i32 %22, i32 200
  %24 = icmp eq i32 %22, -1
  %.sroa.28.1 = select i1 %24, i32 0, i32 %.sroa.28.0
  %25 = getelementptr inbounds i8, ptr %5, i64 60
  %26 = load i32, ptr %25, align 4, !tbaa !16
  %27 = getelementptr inbounds i8, ptr %5, i64 40
  %28 = load double, ptr %27, align 8, !tbaa !17
  %29 = fcmp ogt double %28, 0.000000e+00
  %.sroa.25.0 = select i1 %29, double %28, double 0x3D06849B86A12B9B
  %30 = getelementptr inbounds i8, ptr %5, i64 64
  %31 = load i32, ptr %30, align 8, !tbaa !18
  %.sroa.45.0 = tail call i32 @llvm.smax.i32(i32 %31, i32 0)
  %32 = getelementptr inbounds i8, ptr %5, i64 52
  %33 = load i32, ptr %32, align 4, !tbaa !19
  br label %34

34:                                               ; preds = %11, %8
  %.sroa.20.1 = phi double [ %.sroa.20.0, %11 ], [ 1.000000e+02, %8 ]
  %.sroa.25.1 = phi double [ %.sroa.25.0, %11 ], [ 0x3D06849B86A12B9B, %8 ]
  %.sroa.28.2 = phi i32 [ %.sroa.28.1, %11 ], [ 200, %8 ]
  %.sroa.34.0 = phi i32 [ %33, %11 ], [ 0, %8 ]
  %.sroa.38.1 = phi i32 [ %.sroa.38.0, %11 ], [ 1, %8 ]
  %.sroa.41.1 = phi i32 [ %26, %11 ], [ 0, %8 ]
  %.sroa.45.1 = phi i32 [ %.sroa.45.0, %11 ], [ 0, %8 ]
  %35 = phi <4 x double> [ %20, %11 ], [ <double 1.000000e-10, double 1.000000e-10, double 1.000000e-10, double 0x3CAFFFFFF4178DA3>, %8 ]
  %36 = icmp eq ptr %0, null
  br i1 %36, label %.thread2058, label %37

37:                                               ; preds = %34
  %38 = icmp slt i32 %1, 1
  %39 = icmp eq ptr %3, null
  %or.cond = or i1 %38, %39
  br i1 %or.cond, label %.thread2058, label %40

40:                                               ; preds = %37
  %41 = icmp slt i32 %2, 1
  br i1 %41, label %.thread2058, label %42

42:                                               ; preds = %40
  %43 = zext nneg i32 %2 to i64
  %44 = shl nuw nsw i64 %43, 2
  %calloc = tail call ptr @calloc(i64 1, i64 %44)
  %45 = icmp eq ptr %calloc, null
  br i1 %45, label %.thread2058, label %._crit_edge

._crit_edge:                                      ; preds = %42
  %.not1249.not = icmp eq ptr %4, null
  br i1 %.not1249.not, label %.loopexit2131, label %.lr.ph2146.preheader

.lr.ph2146.preheader:                             ; preds = %._crit_edge
  %wide.trip.count = zext nneg i32 %2 to i64
  %min.iters.check = icmp ult i32 %2, 8
  br i1 %min.iters.check, label %.lr.ph2146.preheader3344, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph2146.preheader
  %n.vec = and i64 %wide.trip.count, 2147483640
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %46 = or disjoint i64 %index, 1
  %47 = or disjoint i64 %index, 2
  %48 = or disjoint i64 %index, 3
  %49 = or disjoint i64 %index, 4
  %50 = or disjoint i64 %index, 5
  %51 = or disjoint i64 %index, 6
  %52 = or disjoint i64 %index, 7
  %53 = getelementptr inbounds %struct.mp_par_struct, ptr %4, i64 %index
  %54 = getelementptr inbounds %struct.mp_par_struct, ptr %4, i64 %46
  %55 = getelementptr inbounds %struct.mp_par_struct, ptr %4, i64 %47
  %56 = getelementptr inbounds %struct.mp_par_struct, ptr %4, i64 %48
  %57 = getelementptr inbounds %struct.mp_par_struct, ptr %4, i64 %49
  %58 = getelementptr inbounds %struct.mp_par_struct, ptr %4, i64 %50
  %59 = getelementptr inbounds %struct.mp_par_struct, ptr %4, i64 %51
  %60 = getelementptr inbounds %struct.mp_par_struct, ptr %4, i64 %52
  %61 = load i32, ptr %53, align 8, !tbaa !20
  %62 = load i32, ptr %54, align 8, !tbaa !20
  %63 = load i32, ptr %55, align 8, !tbaa !20
  %64 = load i32, ptr %56, align 8, !tbaa !20
  %65 = insertelement <4 x i32> poison, i32 %61, i64 0
  %66 = insertelement <4 x i32> %65, i32 %62, i64 1
  %67 = insertelement <4 x i32> %66, i32 %63, i64 2
  %68 = insertelement <4 x i32> %67, i32 %64, i64 3
  %69 = load i32, ptr %57, align 8, !tbaa !20
  %70 = load i32, ptr %58, align 8, !tbaa !20
  %71 = load i32, ptr %59, align 8, !tbaa !20
  %72 = load i32, ptr %60, align 8, !tbaa !20
  %73 = insertelement <4 x i32> poison, i32 %69, i64 0
  %74 = insertelement <4 x i32> %73, i32 %70, i64 1
  %75 = insertelement <4 x i32> %74, i32 %71, i64 2
  %76 = insertelement <4 x i32> %75, i32 %72, i64 3
  %77 = icmp ne <4 x i32> %68, zeroinitializer
  %78 = icmp ne <4 x i32> %76, zeroinitializer
  %79 = zext <4 x i1> %77 to <4 x i32>
  %80 = zext <4 x i1> %78 to <4 x i32>
  %81 = getelementptr inbounds i32, ptr %calloc, i64 %index
  %82 = getelementptr inbounds i8, ptr %81, i64 16
  store <4 x i32> %79, ptr %81, align 4, !tbaa !5
  store <4 x i32> %80, ptr %82, align 4, !tbaa !5
  %index.next = add nuw i64 %index, 8
  %83 = icmp eq i64 %index.next, %n.vec
  br i1 %83, label %middle.block, label %vector.body, !llvm.loop !22

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count
  br i1 %cmp.n, label %.loopexit2131, label %.lr.ph2146.preheader3344

.lr.ph2146.preheader3344:                         ; preds = %middle.block, %.lr.ph2146.preheader
  %indvars.iv.ph = phi i64 [ 0, %.lr.ph2146.preheader ], [ %n.vec, %middle.block ]
  br label %.lr.ph2146

.lr.ph2146:                                       ; preds = %.lr.ph2146.preheader3344, %.lr.ph2146
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph2146 ], [ %indvars.iv.ph, %.lr.ph2146.preheader3344 ]
  %84 = getelementptr inbounds %struct.mp_par_struct, ptr %4, i64 %indvars.iv
  %85 = load i32, ptr %84, align 8, !tbaa !20
  %.not1283 = icmp ne i32 %85, 0
  %86 = zext i1 %.not1283 to i32
  %87 = getelementptr inbounds i32, ptr %calloc, i64 %indvars.iv
  store i32 %86, ptr %87, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit2131, label %.lr.ph2146, !llvm.loop !26

.loopexit2131:                                    ; preds = %.lr.ph2146, %middle.block, %._crit_edge
  %88 = shl nuw nsw i64 %43, 3
  %89 = tail call noalias ptr @malloc(i64 noundef %88) #12
  %90 = icmp eq ptr %89, null
  br i1 %90, label %.thread2058.sink.split, label %._crit_edge2149

._crit_edge2149:                                  ; preds = %.loopexit2131
  %smax2391 = tail call i32 @llvm.smax.i32(i32 %2, i32 1)
  %91 = zext nneg i32 %smax2391 to i64
  %92 = shl nuw nsw i64 %91, 3
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %89, i8 0, i64 %92, i1 false), !tbaa !14
  %93 = tail call noalias ptr @malloc(i64 noundef %88) #12
  %94 = icmp eq ptr %93, null
  br i1 %94, label %.thread1789.thread1844.thread, label %._crit_edge2152

._crit_edge2152:                                  ; preds = %._crit_edge2149
  %smax2395 = tail call i32 @llvm.smax.i32(i32 %2, i32 1)
  %95 = zext nneg i32 %smax2395 to i64
  %96 = shl nuw nsw i64 %95, 3
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %93, i8 0, i64 %96, i1 false), !tbaa !14
  %97 = tail call noalias ptr @malloc(i64 noundef %44) #12
  %98 = icmp eq ptr %97, null
  br i1 %98, label %.thread1789.thread1844.thread, label %._crit_edge2155

._crit_edge2155:                                  ; preds = %._crit_edge2152
  %smax2399 = tail call i32 @llvm.smax.i32(i32 %2, i32 1)
  %99 = zext nneg i32 %smax2399 to i64
  %100 = shl nuw nsw i64 %99, 2
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %97, i8 0, i64 %100, i1 false), !tbaa !5
  %101 = tail call noalias ptr @malloc(i64 noundef %44) #12
  %102 = icmp eq ptr %101, null
  br i1 %102, label %.thread1789.thread1844.thread, label %._crit_edge2158

._crit_edge2158:                                  ; preds = %._crit_edge2155
  %smax2403 = tail call i32 @llvm.smax.i32(i32 %2, i32 1)
  %103 = zext nneg i32 %smax2403 to i64
  %104 = shl nuw nsw i64 %103, 2
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %101, i8 0, i64 %104, i1 false), !tbaa !5
  %105 = tail call noalias ptr @malloc(i64 noundef %88) #12
  %106 = icmp eq ptr %105, null
  br i1 %106, label %.thread1789.thread1844.thread, label %._crit_edge2161

._crit_edge2161:                                  ; preds = %._crit_edge2158
  %smax2407 = tail call i32 @llvm.smax.i32(i32 %2, i32 1)
  %107 = zext nneg i32 %smax2407 to i64
  %108 = shl nuw nsw i64 %107, 3
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %105, i8 0, i64 %108, i1 false), !tbaa !14
  %109 = tail call noalias ptr @malloc(i64 noundef %88) #12
  %110 = icmp eq ptr %109, null
  br i1 %110, label %.thread1789.thread1844.thread, label %._crit_edge2164

._crit_edge2164:                                  ; preds = %._crit_edge2161
  %smax2411 = tail call i32 @llvm.smax.i32(i32 %2, i32 1)
  %111 = zext nneg i32 %smax2411 to i64
  %112 = shl nuw nsw i64 %111, 3
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %109, i8 0, i64 %112, i1 false), !tbaa !14
  br i1 %.not1249.not, label %.loopexit2123, label %.lr.ph2166.preheader

.lr.ph2166.preheader:                             ; preds = %._crit_edge2164
  %smax2418 = tail call i32 @llvm.smax.i32(i32 %2, i32 1)
  %wide.trip.count2419 = zext nneg i32 %smax2418 to i64
  br label %.lr.ph2166

.lr.ph2166:                                       ; preds = %.lr.ph2166.preheader, %.lr.ph2166
  %indvars.iv2415 = phi i64 [ 0, %.lr.ph2166.preheader ], [ %indvars.iv.next2416, %.lr.ph2166 ]
  %113 = getelementptr inbounds %struct.mp_par_struct, ptr %4, i64 %indvars.iv2415
  %114 = getelementptr inbounds i8, ptr %113, i64 40
  %115 = load double, ptr %114, align 8, !tbaa !27
  %116 = getelementptr inbounds double, ptr %89, i64 %indvars.iv2415
  store double %115, ptr %116, align 8, !tbaa !14
  %117 = getelementptr inbounds i8, ptr %113, i64 48
  %118 = load double, ptr %117, align 8, !tbaa !28
  %119 = getelementptr inbounds double, ptr %93, i64 %indvars.iv2415
  store double %118, ptr %119, align 8, !tbaa !14
  %120 = getelementptr inbounds i8, ptr %113, i64 56
  %121 = load i32, ptr %120, align 8, !tbaa !29
  %122 = getelementptr inbounds i32, ptr %97, i64 %indvars.iv2415
  store i32 %121, ptr %122, align 4, !tbaa !5
  %123 = getelementptr inbounds i8, ptr %113, i64 60
  %124 = load i32, ptr %123, align 4, !tbaa !30
  %125 = getelementptr inbounds i32, ptr %101, i64 %indvars.iv2415
  store i32 %124, ptr %125, align 4, !tbaa !5
  %126 = getelementptr inbounds i8, ptr %113, i64 64
  %127 = load double, ptr %126, align 8, !tbaa !31
  %128 = getelementptr inbounds double, ptr %105, i64 %indvars.iv2415
  store double %127, ptr %128, align 8, !tbaa !14
  %129 = getelementptr inbounds i8, ptr %113, i64 72
  %130 = load double, ptr %129, align 8, !tbaa !32
  %131 = getelementptr inbounds double, ptr %109, i64 %indvars.iv2415
  store double %130, ptr %131, align 8, !tbaa !14
  %indvars.iv.next2416 = add nuw nsw i64 %indvars.iv2415, 1
  %exitcond2420.not = icmp eq i64 %indvars.iv.next2416, %wide.trip.count2419
  br i1 %exitcond2420.not, label %.loopexit2123, label %.lr.ph2166, !llvm.loop !33

.loopexit2123:                                    ; preds = %.lr.ph2166, %._crit_edge2164
  %132 = tail call noalias ptr @malloc(i64 noundef %44) #12
  %133 = icmp eq ptr %132, null
  br i1 %133, label %.thread1789.thread1844.thread, label %.lr.ph2172.preheader

.lr.ph2172.preheader:                             ; preds = %.loopexit2123
  %smax2421 = tail call i32 @llvm.smax.i32(i32 %2, i32 1)
  %134 = zext nneg i32 %smax2421 to i64
  %135 = shl nuw nsw i64 %134, 2
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %132, i8 0, i64 %135, i1 false), !tbaa !5
  %smax2428 = tail call i32 @llvm.smax.i32(i32 %2, i32 1)
  %wide.trip.count2429 = zext nneg i32 %smax2428 to i64
  %xtraiter = and i64 %wide.trip.count2429, 1
  %136 = icmp eq i32 %2, 1
  br i1 %136, label %._crit_edge2173.unr-lcssa, label %.lr.ph2172.preheader.new

.lr.ph2172.preheader.new:                         ; preds = %.lr.ph2172.preheader
  %unroll_iter = and i64 %wide.trip.count2429, 2147483646
  br label %.lr.ph2172

.lr.ph2172:                                       ; preds = %155, %.lr.ph2172.preheader.new
  %indvars.iv2425 = phi i64 [ 0, %.lr.ph2172.preheader.new ], [ %indvars.iv.next2426.1, %155 ]
  %.010822170 = phi i32 [ 0, %.lr.ph2172.preheader.new ], [ %.11083.1, %155 ]
  %.011272169 = phi i32 [ 0, %.lr.ph2172.preheader.new ], [ %.11128.1, %155 ]
  %niter = phi i64 [ 0, %.lr.ph2172.preheader.new ], [ %niter.next.1, %155 ]
  %137 = getelementptr inbounds i32, ptr %calloc, i64 %indvars.iv2425
  %138 = load i32, ptr %137, align 4, !tbaa !5
  %139 = icmp eq i32 %138, 0
  br i1 %139, label %140, label %.lr.ph2172.1

140:                                              ; preds = %.lr.ph2172
  %141 = add nsw i32 %.011272169, 1
  %142 = add nsw i32 %.010822170, 1
  %143 = sext i32 %.010822170 to i64
  %144 = getelementptr inbounds i32, ptr %132, i64 %143
  %145 = trunc nuw nsw i64 %indvars.iv2425 to i32
  store i32 %145, ptr %144, align 4, !tbaa !5
  br label %.lr.ph2172.1

.lr.ph2172.1:                                     ; preds = %.lr.ph2172, %140
  %.11128 = phi i32 [ %141, %140 ], [ %.011272169, %.lr.ph2172 ]
  %.11083 = phi i32 [ %142, %140 ], [ %.010822170, %.lr.ph2172 ]
  %indvars.iv.next2426 = or disjoint i64 %indvars.iv2425, 1
  %146 = getelementptr inbounds i32, ptr %calloc, i64 %indvars.iv.next2426
  %147 = load i32, ptr %146, align 4, !tbaa !5
  %148 = icmp eq i32 %147, 0
  br i1 %148, label %149, label %155

149:                                              ; preds = %.lr.ph2172.1
  %150 = add nsw i32 %.11128, 1
  %151 = add nsw i32 %.11083, 1
  %152 = sext i32 %.11083 to i64
  %153 = getelementptr inbounds i32, ptr %132, i64 %152
  %154 = trunc nuw nsw i64 %indvars.iv.next2426 to i32
  store i32 %154, ptr %153, align 4, !tbaa !5
  br label %155

155:                                              ; preds = %149, %.lr.ph2172.1
  %.11128.1 = phi i32 [ %150, %149 ], [ %.11128, %.lr.ph2172.1 ]
  %.11083.1 = phi i32 [ %151, %149 ], [ %.11083, %.lr.ph2172.1 ]
  %indvars.iv.next2426.1 = add nuw nsw i64 %indvars.iv2425, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge2173.unr-lcssa, label %.lr.ph2172, !llvm.loop !34

._crit_edge2173.unr-lcssa:                        ; preds = %155, %.lr.ph2172.preheader
  %.11128.lcssa.ph = phi i32 [ poison, %.lr.ph2172.preheader ], [ %.11128.1, %155 ]
  %indvars.iv2425.unr = phi i64 [ 0, %.lr.ph2172.preheader ], [ %indvars.iv.next2426.1, %155 ]
  %.010822170.unr = phi i32 [ 0, %.lr.ph2172.preheader ], [ %.11083.1, %155 ]
  %.011272169.unr = phi i32 [ 0, %.lr.ph2172.preheader ], [ %.11128.1, %155 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge2173, label %.lr.ph2172.epil

.lr.ph2172.epil:                                  ; preds = %._crit_edge2173.unr-lcssa
  %156 = getelementptr inbounds i32, ptr %calloc, i64 %indvars.iv2425.unr
  %157 = load i32, ptr %156, align 4, !tbaa !5
  %158 = icmp eq i32 %157, 0
  br i1 %158, label %159, label %._crit_edge2173

159:                                              ; preds = %.lr.ph2172.epil
  %160 = add nsw i32 %.011272169.unr, 1
  %161 = sext i32 %.010822170.unr to i64
  %162 = getelementptr inbounds i32, ptr %132, i64 %161
  %163 = trunc nuw nsw i64 %indvars.iv2425.unr to i32
  store i32 %163, ptr %162, align 4, !tbaa !5
  br label %._crit_edge2173

._crit_edge2173:                                  ; preds = %.lr.ph2172.epil, %159, %._crit_edge2173.unr-lcssa
  %.11128.lcssa = phi i32 [ %.11128.lcssa.ph, %._crit_edge2173.unr-lcssa ], [ %160, %159 ], [ %.011272169.unr, %.lr.ph2172.epil ]
  %164 = icmp eq i32 %.11128.lcssa, 0
  br i1 %164, label %.thread1789.thread1844.thread, label %165

165:                                              ; preds = %._crit_edge2173
  br i1 %.not1249.not, label %.loopexit2114, label %.lr.ph2175.preheader

.lr.ph2175.preheader:                             ; preds = %165
  %smax2434 = tail call i32 @llvm.smax.i32(i32 %2, i32 1)
  %wide.trip.count2435 = zext nneg i32 %smax2434 to i64
  br label %.lr.ph2175

.lr.ph2175:                                       ; preds = %.lr.ph2175.preheader, %.thread
  %indvars.iv2431 = phi i64 [ 0, %.lr.ph2175.preheader ], [ %indvars.iv.next2432, %.thread ]
  %166 = getelementptr inbounds %struct.mp_par_struct, ptr %4, i64 %indvars.iv2431
  %167 = getelementptr inbounds i8, ptr %166, i64 4
  %168 = load i32, ptr %167, align 4, !tbaa !5
  %.not1279 = icmp eq i32 %168, 0
  br i1 %.not1279, label %175, label %169

169:                                              ; preds = %.lr.ph2175
  %170 = getelementptr inbounds double, ptr %3, i64 %indvars.iv2431
  %171 = load double, ptr %170, align 8, !tbaa !14
  %172 = getelementptr inbounds i8, ptr %166, i64 16
  %173 = load double, ptr %172, align 8, !tbaa !14
  %174 = fcmp olt double %171, %173
  br i1 %174, label %.thread1789.thread1844.thread, label %175

175:                                              ; preds = %169, %.lr.ph2175
  %176 = getelementptr inbounds i8, ptr %166, i64 8
  %177 = load i32, ptr %176, align 4, !tbaa !5
  %.not1280 = icmp eq i32 %177, 0
  br i1 %.not1280, label %.thread, label %178

178:                                              ; preds = %175
  %179 = getelementptr inbounds double, ptr %3, i64 %indvars.iv2431
  %180 = load double, ptr %179, align 8, !tbaa !14
  %181 = getelementptr inbounds i8, ptr %166, i64 24
  %182 = load double, ptr %181, align 8, !tbaa !14
  %183 = fcmp ogt double %180, %182
  br i1 %183, label %.thread1789.thread1844.thread, label %184

184:                                              ; preds = %178
  %185 = load i32, ptr %166, align 8, !tbaa !20
  %186 = icmp ne i32 %185, 0
  %brmerge = or i1 %.not1279, %186
  %brmerge2063 = or i1 %.not1280, %brmerge
  br i1 %brmerge2063, label %.thread, label %187

187:                                              ; preds = %184
  %188 = getelementptr inbounds i8, ptr %166, i64 16
  %189 = load double, ptr %188, align 8, !tbaa !14
  %190 = getelementptr inbounds i8, ptr %166, i64 24
  %191 = load double, ptr %190, align 8, !tbaa !14
  %192 = fcmp ult double %189, %191
  br i1 %192, label %.thread, label %.thread1789.thread1844.thread

.thread:                                          ; preds = %175, %184, %187
  %indvars.iv.next2432 = add nuw nsw i64 %indvars.iv2431, 1
  %exitcond2436.not = icmp eq i64 %indvars.iv.next2432, %wide.trip.count2435
  br i1 %exitcond2436.not, label %._crit_edge2176, label %.lr.ph2175, !llvm.loop !35

._crit_edge2176:                                  ; preds = %.thread
  %193 = sext i32 %.11128.lcssa to i64
  %194 = shl nsw i64 %193, 2
  %195 = tail call noalias ptr @malloc(i64 noundef %194) #12
  %196 = icmp eq ptr %195, null
  br i1 %196, label %.thread1789.thread1844.thread, label %.preheader2118

.preheader2118:                                   ; preds = %._crit_edge2176
  %197 = icmp sgt i32 %.11128.lcssa, 0
  br i1 %197, label %._crit_edge2179, label %._crit_edge2179.thread

._crit_edge2179:                                  ; preds = %.preheader2118
  %198 = zext nneg i32 %.11128.lcssa to i64
  %199 = shl nuw nsw i64 %198, 2
  tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %195, i8 0, i64 %199, i1 false), !tbaa !5
  %200 = tail call noalias ptr @malloc(i64 noundef %194) #12
  %201 = icmp eq ptr %200, null
  br i1 %201, label %.thread1789.thread1844.thread, label %._crit_edge2182.thread

._crit_edge2179.thread:                           ; preds = %.preheader2118
  %202 = tail call noalias ptr @malloc(i64 noundef %194) #12
  %203 = icmp eq ptr %202, null
  br i1 %203, label %.thread1789.thread1844.thread, label %._crit_edge2182

._crit_edge2182:                                  ; preds = %._crit_edge2179.thread
  %204 = shl nsw i64 %193, 3
  %205 = tail call noalias ptr @malloc(i64 noundef %204) #12
  %206 = icmp eq ptr %205, null
  br i1 %206, label %.thread1789.thread1844.thread, label %._crit_edge2185.thread

._crit_edge2182.thread:                           ; preds = %._crit_edge2179
  %207 = zext nneg i32 %.11128.lcssa to i64
  %208 = shl nuw nsw i64 %207, 2
  tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %200, i8 0, i64 %208, i1 false), !tbaa !5
  %209 = shl nuw nsw i64 %193, 3
  %210 = tail call noalias ptr @malloc(i64 noundef %209) #12
  %211 = icmp eq ptr %210, null
  br i1 %211, label %.thread1789.thread1844.thread, label %._crit_edge2185

._crit_edge2185:                                  ; preds = %._crit_edge2182.thread
  %212 = zext nneg i32 %.11128.lcssa to i64
  %213 = shl nuw nsw i64 %212, 3
  tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %210, i8 0, i64 %213, i1 false), !tbaa !14
  %214 = tail call noalias ptr @malloc(i64 noundef %209) #12
  %215 = icmp eq ptr %214, null
  br i1 %215, label %.thread1789.thread1844.thread, label %.preheader2115

._crit_edge2185.thread:                           ; preds = %._crit_edge2182
  %216 = tail call noalias ptr @malloc(i64 noundef %204) #12
  %217 = icmp eq ptr %216, null
  br i1 %217, label %.thread1789.thread1844.thread, label %.loopexit2114

.preheader2115:                                   ; preds = %._crit_edge2185
  br i1 %197, label %.lr.ph2190.preheader, label %.loopexit2114

.lr.ph2190.preheader:                             ; preds = %.preheader2115
  %218 = zext nneg i32 %.11128.lcssa to i64
  %219 = shl nuw nsw i64 %218, 3
  tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %214, i8 0, i64 %219, i1 false), !tbaa !14
  %wide.trip.count2452 = zext nneg i32 %.11128.lcssa to i64
  br label %.lr.ph2190

.lr.ph2190:                                       ; preds = %.lr.ph2190.preheader, %.lr.ph2190
  %indvars.iv2449 = phi i64 [ 0, %.lr.ph2190.preheader ], [ %indvars.iv.next2450, %.lr.ph2190 ]
  %.011582188 = phi i32 [ 0, %.lr.ph2190.preheader ], [ %.11159, %.lr.ph2190 ]
  %220 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2449
  %221 = load i32, ptr %220, align 4, !tbaa !5
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds %struct.mp_par_struct, ptr %4, i64 %222, i32 1
  %224 = load i32, ptr %223, align 4, !tbaa !5
  %225 = getelementptr inbounds i32, ptr %200, i64 %indvars.iv2449
  store i32 %224, ptr %225, align 4, !tbaa !5
  %226 = getelementptr inbounds %struct.mp_par_struct, ptr %4, i64 %222, i32 1, i64 1
  %227 = load i32, ptr %226, align 4, !tbaa !5
  %228 = getelementptr inbounds i32, ptr %195, i64 %indvars.iv2449
  store i32 %227, ptr %228, align 4, !tbaa !5
  %229 = getelementptr inbounds %struct.mp_par_struct, ptr %4, i64 %222, i32 2
  %230 = load double, ptr %229, align 8, !tbaa !14
  %231 = getelementptr inbounds double, ptr %214, i64 %indvars.iv2449
  store double %230, ptr %231, align 8, !tbaa !14
  %232 = getelementptr inbounds %struct.mp_par_struct, ptr %4, i64 %222, i32 2, i64 1
  %233 = load double, ptr %232, align 8, !tbaa !14
  %234 = getelementptr inbounds double, ptr %210, i64 %indvars.iv2449
  store double %233, ptr %234, align 8, !tbaa !14
  %.not1277 = icmp eq i32 %224, 0
  %.not1278 = icmp eq i32 %227, 0
  %or.cond2064 = select i1 %.not1277, i1 %.not1278, i1 false
  %.11159 = select i1 %or.cond2064, i32 %.011582188, i32 1
  %indvars.iv.next2450 = add nuw nsw i64 %indvars.iv2449, 1
  %exitcond2453.not = icmp eq i64 %indvars.iv.next2450, %wide.trip.count2452
  br i1 %exitcond2453.not, label %.loopexit2114, label %.lr.ph2190, !llvm.loop !36

.loopexit2114:                                    ; preds = %.lr.ph2190, %._crit_edge2185.thread, %.preheader2115, %165
  %.21160 = phi i32 [ 0, %165 ], [ 0, %.preheader2115 ], [ 0, %._crit_edge2185.thread ], [ %.11159, %.lr.ph2190 ]
  %.01067 = phi ptr [ null, %165 ], [ %214, %.preheader2115 ], [ %216, %._crit_edge2185.thread ], [ %214, %.lr.ph2190 ]
  %.01065 = phi ptr [ null, %165 ], [ %210, %.preheader2115 ], [ %205, %._crit_edge2185.thread ], [ %210, %.lr.ph2190 ]
  %.01061 = phi ptr [ null, %165 ], [ %200, %.preheader2115 ], [ %202, %._crit_edge2185.thread ], [ %200, %.lr.ph2190 ]
  %.01059 = phi ptr [ null, %165 ], [ %195, %.preheader2115 ], [ %195, %._crit_edge2185.thread ], [ %195, %.lr.ph2190 ]
  %235 = icmp sgt i32 %.11128.lcssa, %1
  br i1 %235, label %.thread1789.thread1844.thread, label %236

236:                                              ; preds = %.loopexit2114
  %237 = zext nneg i32 %1 to i64
  %238 = shl nuw nsw i64 %237, 3
  %239 = tail call noalias ptr @malloc(i64 noundef %238) #12
  %240 = ptrtoint ptr %239 to i64
  %241 = icmp eq ptr %239, null
  br i1 %241, label %.thread1789.thread1844.thread, label %.preheader2112

.preheader2112:                                   ; preds = %236
  %242 = icmp sgt i32 %1, 0
  br i1 %242, label %.lr.ph2193.preheader, label %._crit_edge2194

.lr.ph2193.preheader:                             ; preds = %.preheader2112
  tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %239, i8 0, i64 %238, i1 false), !tbaa !14
  br label %._crit_edge2194

._crit_edge2194:                                  ; preds = %.lr.ph2193.preheader, %.preheader2112
  %243 = sext i32 %.11128.lcssa to i64
  %244 = shl nsw i64 %243, 3
  %245 = tail call noalias ptr @malloc(i64 noundef %244) #12
  %246 = icmp eq ptr %245, null
  br i1 %246, label %.thread1789.thread1844.sink.split, label %.preheader2111

.preheader2111:                                   ; preds = %._crit_edge2194
  %247 = icmp sgt i32 %.11128.lcssa, 0
  br i1 %247, label %._crit_edge2197, label %._crit_edge2197.thread

._crit_edge2197:                                  ; preds = %.preheader2111
  %248 = zext nneg i32 %.11128.lcssa to i64
  %249 = shl nuw nsw i64 %248, 3
  tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %245, i8 0, i64 %249, i1 false), !tbaa !14
  %250 = tail call noalias ptr @malloc(i64 noundef %244) #12
  %251 = icmp eq ptr %250, null
  br i1 %251, label %1082, label %.lr.ph2199.preheader

._crit_edge2197.thread:                           ; preds = %.preheader2111
  %252 = tail call noalias ptr @malloc(i64 noundef %244) #12
  %253 = icmp eq ptr %252, null
  br i1 %253, label %1082, label %._crit_edge2200

.lr.ph2199.preheader:                             ; preds = %._crit_edge2197
  %254 = zext nneg i32 %.11128.lcssa to i64
  %255 = shl nuw nsw i64 %254, 3
  tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %250, i8 0, i64 %255, i1 false), !tbaa !14
  br label %._crit_edge2200

._crit_edge2200:                                  ; preds = %._crit_edge2197.thread, %.lr.ph2199.preheader
  %256 = phi ptr [ %250, %.lr.ph2199.preheader ], [ %252, %._crit_edge2197.thread ]
  %257 = tail call noalias ptr @malloc(i64 noundef %88) #12
  %258 = icmp eq ptr %257, null
  br i1 %258, label %1082, label %._crit_edge2203

._crit_edge2203:                                  ; preds = %._crit_edge2200
  %smax2463 = tail call i32 @llvm.smax.i32(i32 %2, i32 1)
  %259 = zext nneg i32 %smax2463 to i64
  %260 = shl nuw nsw i64 %259, 3
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %257, i8 0, i64 %260, i1 false), !tbaa !14
  %261 = mul i64 %238, %243
  %262 = tail call noalias ptr @malloc(i64 noundef %261) #12
  %263 = icmp eq ptr %262, null
  br i1 %263, label %1082, label %.preheader2108

.preheader2108:                                   ; preds = %._crit_edge2203
  %264 = mul nsw i32 %.11128.lcssa, %1
  %265 = icmp sgt i32 %264, 0
  br i1 %265, label %.lr.ph2205.preheader, label %._crit_edge2206

.lr.ph2205.preheader:                             ; preds = %.preheader2108
  %266 = zext nneg i32 %264 to i64
  %267 = shl nuw nsw i64 %266, 3
  tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %262, i8 0, i64 %267, i1 false), !tbaa !14
  br label %._crit_edge2206

._crit_edge2206:                                  ; preds = %.lr.ph2205.preheader, %.preheader2108
  %268 = tail call noalias ptr @malloc(i64 noundef %88) #12
  %269 = icmp eq ptr %268, null
  br i1 %269, label %1082, label %._crit_edge2209

._crit_edge2209:                                  ; preds = %._crit_edge2206
  %smax2470 = tail call i32 @llvm.smax.i32(i32 %2, i32 1)
  %270 = zext nneg i32 %smax2470 to i64
  %271 = shl nuw nsw i64 %270, 3
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %268, i8 0, i64 %271, i1 false), !tbaa !14
  %272 = tail call noalias ptr @malloc(i64 noundef %88) #12
  %273 = icmp eq ptr %272, null
  br i1 %273, label %1082, label %._crit_edge2212

._crit_edge2212:                                  ; preds = %._crit_edge2209
  %smax2474 = tail call i32 @llvm.smax.i32(i32 %2, i32 1)
  %274 = zext nneg i32 %smax2474 to i64
  %275 = shl nuw nsw i64 %274, 3
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %272, i8 0, i64 %275, i1 false), !tbaa !14
  %276 = tail call noalias ptr @malloc(i64 noundef %238) #12
  %277 = icmp eq ptr %276, null
  br i1 %277, label %1082, label %.preheader2105

.preheader2105:                                   ; preds = %._crit_edge2212
  br i1 %242, label %.lr.ph2214.preheader, label %._crit_edge2215

.lr.ph2214.preheader:                             ; preds = %.preheader2105
  tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %276, i8 0, i64 %238, i1 false), !tbaa !14
  br label %._crit_edge2215

._crit_edge2215:                                  ; preds = %.lr.ph2214.preheader, %.preheader2105
  %278 = tail call noalias ptr @malloc(i64 noundef %88) #12
  %279 = icmp eq ptr %278, null
  br i1 %279, label %1082, label %._crit_edge2218

._crit_edge2218:                                  ; preds = %._crit_edge2215
  %smax2481 = tail call i32 @llvm.smax.i32(i32 %2, i32 1)
  %280 = zext nneg i32 %smax2481 to i64
  %281 = shl nuw nsw i64 %280, 3
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %278, i8 0, i64 %281, i1 false), !tbaa !14
  %282 = tail call noalias ptr @malloc(i64 noundef %238) #12
  %283 = icmp eq ptr %282, null
  br i1 %283, label %1082, label %.preheader2103

.preheader2103:                                   ; preds = %._crit_edge2218
  br i1 %242, label %.lr.ph2220.preheader, label %._crit_edge2221

.lr.ph2220.preheader:                             ; preds = %.preheader2103
  tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %282, i8 0, i64 %238, i1 false), !tbaa !14
  br label %._crit_edge2221

._crit_edge2221:                                  ; preds = %.lr.ph2220.preheader, %.preheader2103
  %284 = tail call noalias ptr @malloc(i64 noundef %44) #12
  %285 = icmp eq ptr %284, null
  br i1 %285, label %1082, label %._crit_edge2224

._crit_edge2224:                                  ; preds = %._crit_edge2221
  %smax2488 = tail call i32 @llvm.smax.i32(i32 %2, i32 1)
  %286 = zext nneg i32 %smax2488 to i64
  %287 = shl nuw nsw i64 %286, 2
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %284, i8 0, i64 %287, i1 false), !tbaa !5
  %288 = tail call noalias ptr @malloc(i64 noundef %88) #12
  %289 = icmp eq ptr %288, null
  br i1 %289, label %1082, label %._crit_edge2227

._crit_edge2227:                                  ; preds = %._crit_edge2224
  %smax2492 = tail call i32 @llvm.smax.i32(i32 %2, i32 1)
  %290 = zext nneg i32 %smax2492 to i64
  %291 = shl nuw nsw i64 %290, 3
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %288, i8 0, i64 %291, i1 false), !tbaa !37
  %292 = tail call i32 %0(i32 noundef %1, i32 noundef %2, ptr noundef %3, ptr noundef nonnull %239, ptr noundef null, ptr noundef %6) #11
  store i32 1, ptr %10, align 4, !tbaa !5
  %293 = icmp slt i32 %292, 0
  br i1 %293, label %1082, label %.preheader2100

.preheader2100:                                   ; preds = %._crit_edge2227
  %294 = tail call double @mp_enorm(i32 noundef %1, ptr noundef nonnull %239)
  %295 = fmul double %294, %294
  %smax2496 = tail call i32 @llvm.smax.i32(i32 %2, i32 1)
  %296 = zext nneg i32 %smax2496 to i64
  %297 = shl nuw nsw i64 %296, 3
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %257, ptr noundef nonnull align 8 dereferenceable(1) %3, i64 %297, i1 false), !tbaa !14
  br i1 %247, label %.lr.ph2232.preheader, label %._crit_edge2233.thread

._crit_edge2233.thread:                           ; preds = %.preheader2100
  store double 0.000000e+00, ptr %9, align 8, !tbaa !14
  br label %.preheader2096

.lr.ph2232.preheader:                             ; preds = %.preheader2100
  %wide.trip.count2503 = zext nneg i32 %.11128.lcssa to i64
  %298 = add nsw i64 %wide.trip.count2503, -1
  %xtraiter3346 = and i64 %wide.trip.count2503, 3
  %299 = icmp ult i64 %298, 3
  br i1 %299, label %._crit_edge2233.unr-lcssa, label %.lr.ph2232.preheader.new

.lr.ph2232.preheader.new:                         ; preds = %.lr.ph2232.preheader
  %unroll_iter3348 = and i64 %wide.trip.count2503, 2147483644
  br label %.lr.ph2232

.lr.ph2232:                                       ; preds = %.lr.ph2232, %.lr.ph2232.preheader.new
  %indvars.iv2500 = phi i64 [ 0, %.lr.ph2232.preheader.new ], [ %indvars.iv.next2501.3, %.lr.ph2232 ]
  %niter3349 = phi i64 [ 0, %.lr.ph2232.preheader.new ], [ %niter3349.next.3, %.lr.ph2232 ]
  %300 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2500
  %301 = load i32, ptr %300, align 4, !tbaa !5
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds double, ptr %3, i64 %302
  %304 = load double, ptr %303, align 8, !tbaa !14
  %305 = getelementptr inbounds double, ptr %256, i64 %indvars.iv2500
  store double %304, ptr %305, align 8, !tbaa !14
  %indvars.iv.next2501 = or disjoint i64 %indvars.iv2500, 1
  %306 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv.next2501
  %307 = load i32, ptr %306, align 4, !tbaa !5
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds double, ptr %3, i64 %308
  %310 = load double, ptr %309, align 8, !tbaa !14
  %311 = getelementptr inbounds double, ptr %256, i64 %indvars.iv.next2501
  store double %310, ptr %311, align 8, !tbaa !14
  %indvars.iv.next2501.1 = or disjoint i64 %indvars.iv2500, 2
  %312 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv.next2501.1
  %313 = load i32, ptr %312, align 4, !tbaa !5
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds double, ptr %3, i64 %314
  %316 = load double, ptr %315, align 8, !tbaa !14
  %317 = getelementptr inbounds double, ptr %256, i64 %indvars.iv.next2501.1
  store double %316, ptr %317, align 8, !tbaa !14
  %indvars.iv.next2501.2 = or disjoint i64 %indvars.iv2500, 3
  %318 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv.next2501.2
  %319 = load i32, ptr %318, align 4, !tbaa !5
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds double, ptr %3, i64 %320
  %322 = load double, ptr %321, align 8, !tbaa !14
  %323 = getelementptr inbounds double, ptr %256, i64 %indvars.iv.next2501.2
  store double %322, ptr %323, align 8, !tbaa !14
  %indvars.iv.next2501.3 = add nuw nsw i64 %indvars.iv2500, 4
  %niter3349.next.3 = add i64 %niter3349, 4
  %niter3349.ncmp.3 = icmp eq i64 %niter3349.next.3, %unroll_iter3348
  br i1 %niter3349.ncmp.3, label %._crit_edge2233.unr-lcssa, label %.lr.ph2232, !llvm.loop !38

._crit_edge2233.unr-lcssa:                        ; preds = %.lr.ph2232, %.lr.ph2232.preheader
  %indvars.iv2500.unr = phi i64 [ 0, %.lr.ph2232.preheader ], [ %indvars.iv.next2501.3, %.lr.ph2232 ]
  %lcmp.mod3347.not = icmp eq i64 %xtraiter3346, 0
  br i1 %lcmp.mod3347.not, label %._crit_edge2233, label %.lr.ph2232.epil

.lr.ph2232.epil:                                  ; preds = %._crit_edge2233.unr-lcssa, %.lr.ph2232.epil
  %indvars.iv2500.epil = phi i64 [ %indvars.iv.next2501.epil, %.lr.ph2232.epil ], [ %indvars.iv2500.unr, %._crit_edge2233.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph2232.epil ], [ 0, %._crit_edge2233.unr-lcssa ]
  %324 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2500.epil
  %325 = load i32, ptr %324, align 4, !tbaa !5
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds double, ptr %3, i64 %326
  %328 = load double, ptr %327, align 8, !tbaa !14
  %329 = getelementptr inbounds double, ptr %256, i64 %indvars.iv2500.epil
  store double %328, ptr %329, align 8, !tbaa !14
  %indvars.iv.next2501.epil = add nuw nsw i64 %indvars.iv2500.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter3346
  br i1 %epil.iter.cmp.not, label %._crit_edge2233, label %.lr.ph2232.epil, !llvm.loop !39

._crit_edge2233:                                  ; preds = %.lr.ph2232.epil, %._crit_edge2233.unr-lcssa
  store double 0.000000e+00, ptr %9, align 8, !tbaa !14
  br i1 %247, label %.lr.ph2236.preheader, label %.preheader2096

.lr.ph2236.preheader:                             ; preds = %._crit_edge2233
  %330 = zext nneg i32 %.11128.lcssa to i64
  %331 = shl nuw nsw i64 %330, 3
  tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %245, i8 0, i64 %331, i1 false), !tbaa !14
  br label %.preheader2096

.preheader2096:                                   ; preds = %._crit_edge2233.thread, %.lr.ph2236.preheader, %._crit_edge2233
  %.not1250 = icmp eq i32 %.21160, 0
  %332 = icmp slt i32 %.11128.lcssa, 1
  %333 = icmp ne i32 %.sroa.41.1, 0
  %334 = add nuw i32 %1, 1
  %.not1251 = icmp eq i32 %.sroa.45.1, 0
  %335 = icmp eq i32 %.sroa.28.2, 0
  %336 = icmp slt i32 %.sroa.34.0, 1
  %337 = zext i32 %334 to i64
  %338 = zext nneg i32 %1 to i64
  %wide.trip.count2511 = zext i32 %.11128.lcssa to i64
  %brmerge2358 = or i1 %.not1250, %332
  %wide.trip.count2534 = zext nneg i32 %.11128.lcssa to i64
  %brmerge2361 = or i1 %333, %332
  %wide.trip.count2574 = zext nneg i32 %.11128.lcssa to i64
  %wide.trip.count2579 = zext nneg i32 %.11128.lcssa to i64
  %wide.trip.count2607 = zext nneg i32 %.11128.lcssa to i64
  %brmerge2367 = or i1 %333, %332
  %wide.trip.count2612 = zext nneg i32 %.11128.lcssa to i64
  %wide.trip.count2617 = zext nneg i32 %.11128.lcssa to i64
  %wide.trip.count2622 = zext nneg i32 %.11128.lcssa to i64
  %wide.trip.count2627 = zext nneg i32 %.11128.lcssa to i64
  %wide.trip.count2632 = zext nneg i32 %.11128.lcssa to i64
  %wide.trip.count2666 = zext nneg i32 %.11128.lcssa to i64
  %339 = extractelement <4 x double> %35, i64 2
  %340 = extractelement <4 x double> %35, i64 3
  %341 = add nsw i64 %wide.trip.count2511, -1
  %xtraiter3350 = and i64 %wide.trip.count2511, 3
  %342 = icmp ult i64 %341, 3
  %unroll_iter3353 = and i64 %wide.trip.count2511, 2147483644
  %lcmp.mod3352.not = icmp eq i64 %xtraiter3350, 0
  %xtraiter3355 = and i64 %237, 3
  %343 = icmp ult i32 %1, 4
  %unroll_iter3359 = and i64 %237, 2147483644
  %invariant.gep3424 = getelementptr inbounds i8, ptr %262, i64 8
  %invariant.gep3426 = getelementptr inbounds i8, ptr %262, i64 16
  %invariant.gep3428 = getelementptr inbounds i8, ptr %262, i64 24
  %lcmp.mod3357.not = icmp eq i64 %xtraiter3355, 0
  %xtraiter3361 = and i64 %wide.trip.count2511, 1
  %344 = icmp eq i64 %341, 0
  %unroll_iter3364 = and i64 %wide.trip.count2511, 2147483646
  %lcmp.mod3363.not = icmp eq i64 %xtraiter3361, 0
  %xtraiter3366 = and i64 %wide.trip.count2511, 1
  %345 = icmp eq i64 %341, 0
  %unroll_iter3369 = and i64 %wide.trip.count2511, 2147483646
  %lcmp.mod3368.not = icmp eq i64 %xtraiter3366, 0
  %min.iters.check3271 = icmp ult i32 %.11128.lcssa, 4
  %n.vec3274 = and i64 %wide.trip.count2511, 2147483644
  %cmp.n3282 = icmp eq i64 %n.vec3274, %wide.trip.count2511
  %invariant.gep3430 = getelementptr inbounds i8, ptr %262, i64 8
  %346 = extractelement <4 x double> %35, i64 0
  %347 = extractelement <4 x double> %35, i64 1
  %min.iters.check3258 = icmp ult i32 %.11128.lcssa, 4
  %n.vec3261 = and i64 %wide.trip.count2511, 2147483644
  %cmp.n3268 = icmp eq i64 %n.vec3261, %wide.trip.count2511
  %min.iters.check3243 = icmp ult i32 %.11128.lcssa, 4
  %n.vec3246 = and i64 %wide.trip.count2511, 2147483644
  %cmp.n3255 = icmp eq i64 %n.vec3246, %wide.trip.count2511
  %xtraiter3377 = and i64 %wide.trip.count2511, 1
  %348 = icmp eq i64 %341, 0
  %unroll_iter3380 = and i64 %wide.trip.count2511, 2147483646
  %lcmp.mod3379.not = icmp eq i64 %xtraiter3377, 0
  %xtraiter3382 = and i64 %wide.trip.count2511, 3
  %349 = icmp ult i64 %341, 3
  %unroll_iter3385 = and i64 %wide.trip.count2511, 2147483644
  %lcmp.mod3384.not = icmp eq i64 %xtraiter3382, 0
  %xtraiter3387 = and i64 %wide.trip.count2511, 1
  %350 = icmp eq i64 %341, 0
  %unroll_iter3390 = and i64 %wide.trip.count2511, 2147483646
  %lcmp.mod3389.not = icmp eq i64 %xtraiter3387, 0
  br label %.loopexit2085

.loopexit2085:                                    ; preds = %898, %.preheader2096
  %.01161 = phi i32 [ 1, %.preheader2096 ], [ %.21163, %898 ]
  %.01142 = phi double [ 0.000000e+00, %.preheader2096 ], [ %.41146, %898 ]
  %.01135 = phi double [ %294, %.preheader2096 ], [ %.21137, %898 ]
  %.01132 = phi double [ -1.000000e+00, %.preheader2096 ], [ %768, %898 ]
  %.01074 = phi double [ -1.000000e+00, %.preheader2096 ], [ %.31077, %898 ]
  br i1 %247, label %.lr.ph2239.preheader, label %._crit_edge2240

.lr.ph2239.preheader:                             ; preds = %.loopexit2085
  br i1 %342, label %._crit_edge2240.loopexit.unr-lcssa, label %.lr.ph2239

.lr.ph2239:                                       ; preds = %.lr.ph2239.preheader, %.lr.ph2239
  %indvars.iv2508 = phi i64 [ %indvars.iv.next2509.3, %.lr.ph2239 ], [ 0, %.lr.ph2239.preheader ]
  %niter3354 = phi i64 [ %niter3354.next.3, %.lr.ph2239 ], [ 0, %.lr.ph2239.preheader ]
  %351 = getelementptr inbounds double, ptr %256, i64 %indvars.iv2508
  %352 = load double, ptr %351, align 8, !tbaa !14
  %353 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2508
  %354 = load i32, ptr %353, align 4, !tbaa !5
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds double, ptr %257, i64 %355
  store double %352, ptr %356, align 8, !tbaa !14
  %indvars.iv.next2509 = or disjoint i64 %indvars.iv2508, 1
  %357 = getelementptr inbounds double, ptr %256, i64 %indvars.iv.next2509
  %358 = load double, ptr %357, align 8, !tbaa !14
  %359 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv.next2509
  %360 = load i32, ptr %359, align 4, !tbaa !5
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds double, ptr %257, i64 %361
  store double %358, ptr %362, align 8, !tbaa !14
  %indvars.iv.next2509.1 = or disjoint i64 %indvars.iv2508, 2
  %363 = getelementptr inbounds double, ptr %256, i64 %indvars.iv.next2509.1
  %364 = load double, ptr %363, align 8, !tbaa !14
  %365 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv.next2509.1
  %366 = load i32, ptr %365, align 4, !tbaa !5
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds double, ptr %257, i64 %367
  store double %364, ptr %368, align 8, !tbaa !14
  %indvars.iv.next2509.2 = or disjoint i64 %indvars.iv2508, 3
  %369 = getelementptr inbounds double, ptr %256, i64 %indvars.iv.next2509.2
  %370 = load double, ptr %369, align 8, !tbaa !14
  %371 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv.next2509.2
  %372 = load i32, ptr %371, align 4, !tbaa !5
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds double, ptr %257, i64 %373
  store double %370, ptr %374, align 8, !tbaa !14
  %indvars.iv.next2509.3 = add nuw nsw i64 %indvars.iv2508, 4
  %niter3354.next.3 = add i64 %niter3354, 4
  %niter3354.ncmp.3 = icmp eq i64 %niter3354.next.3, %unroll_iter3353
  br i1 %niter3354.ncmp.3, label %._crit_edge2240.loopexit.unr-lcssa, label %.lr.ph2239, !llvm.loop !41

._crit_edge2240.loopexit.unr-lcssa:               ; preds = %.lr.ph2239, %.lr.ph2239.preheader
  %indvars.iv2508.unr = phi i64 [ 0, %.lr.ph2239.preheader ], [ %indvars.iv.next2509.3, %.lr.ph2239 ]
  br i1 %lcmp.mod3352.not, label %._crit_edge2240, label %.lr.ph2239.epil

.lr.ph2239.epil:                                  ; preds = %._crit_edge2240.loopexit.unr-lcssa, %.lr.ph2239.epil
  %indvars.iv2508.epil = phi i64 [ %indvars.iv.next2509.epil, %.lr.ph2239.epil ], [ %indvars.iv2508.unr, %._crit_edge2240.loopexit.unr-lcssa ]
  %epil.iter3351 = phi i64 [ %epil.iter3351.next, %.lr.ph2239.epil ], [ 0, %._crit_edge2240.loopexit.unr-lcssa ]
  %375 = getelementptr inbounds double, ptr %256, i64 %indvars.iv2508.epil
  %376 = load double, ptr %375, align 8, !tbaa !14
  %377 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2508.epil
  %378 = load i32, ptr %377, align 4, !tbaa !5
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds double, ptr %257, i64 %379
  store double %376, ptr %380, align 8, !tbaa !14
  %indvars.iv.next2509.epil = add nuw nsw i64 %indvars.iv2508.epil, 1
  %epil.iter3351.next = add i64 %epil.iter3351, 1
  %epil.iter3351.cmp.not = icmp eq i64 %epil.iter3351.next, %xtraiter3350
  br i1 %epil.iter3351.cmp.not, label %._crit_edge2240, label %.lr.ph2239.epil, !llvm.loop !42

._crit_edge2240:                                  ; preds = %._crit_edge2240.loopexit.unr-lcssa, %.lr.ph2239.epil, %.loopexit2085
  %381 = call i32 @mp_fdjac2(ptr noundef nonnull %0, i32 noundef %1, i32 noundef %.11128.lcssa, ptr noundef nonnull %132, i32 noundef %2, ptr noundef nonnull %257, ptr noundef nonnull %239, ptr noundef %262, i32 noundef %1, double noundef %340, ptr noundef nonnull %282, ptr noundef %6, ptr noundef nonnull %10, ptr noundef nonnull %89, ptr noundef nonnull %93, ptr noundef nonnull %97, ptr noundef %.01059, ptr noundef %.01065, ptr noundef nonnull %101, ptr noundef nonnull %105, ptr noundef nonnull %109, ptr noundef %276, ptr noundef nonnull %288)
  %382 = icmp slt i32 %381, 0
  br i1 %382, label %.critedge.thread1388, label %383

383:                                              ; preds = %._crit_edge2240
  br i1 %brmerge2358, label %.loopexit2095, label %.lr.ph2257

.lr.ph2257:                                       ; preds = %383, %.thread1321
  %indvars.iv2531 = phi i64 [ %indvars.iv.next2532, %.thread1321 ], [ 0, %383 ]
  %indvars.iv2515 = phi i32 [ %indvars.iv.next2516, %.thread1321 ], [ 0, %383 ]
  %384 = zext i32 %indvars.iv2515 to i64
  %385 = shl nuw nsw i64 %384, 3
  %scevgep2527 = getelementptr i8, ptr %262, i64 %385
  %386 = getelementptr inbounds i32, ptr %.01061, i64 %indvars.iv2531
  %387 = load i32, ptr %386, align 4, !tbaa !5
  %.not1275 = icmp eq i32 %387, 0
  br i1 %.not1275, label %394, label %388

388:                                              ; preds = %.lr.ph2257
  %389 = getelementptr inbounds double, ptr %256, i64 %indvars.iv2531
  %390 = load double, ptr %389, align 8, !tbaa !14
  %391 = getelementptr inbounds double, ptr %.01067, i64 %indvars.iv2531
  %392 = load double, ptr %391, align 8, !tbaa !14
  %393 = fcmp oeq double %390, %392
  br label %394

394:                                              ; preds = %388, %.lr.ph2257
  %395 = phi i1 [ false, %.lr.ph2257 ], [ %393, %388 ]
  %396 = getelementptr inbounds i32, ptr %.01059, i64 %indvars.iv2531
  %397 = load i32, ptr %396, align 4, !tbaa !5
  %.not1276 = icmp eq i32 %397, 0
  br i1 %.not1276, label %404, label %398

398:                                              ; preds = %394
  %399 = getelementptr inbounds double, ptr %256, i64 %indvars.iv2531
  %400 = load double, ptr %399, align 8, !tbaa !14
  %401 = getelementptr inbounds double, ptr %.01065, i64 %indvars.iv2531
  %402 = load double, ptr %401, align 8, !tbaa !14
  %403 = fcmp oeq double %400, %402
  br label %404

404:                                              ; preds = %398, %394
  %405 = phi i1 [ false, %394 ], [ %403, %398 ]
  %or.cond18 = select i1 %395, i1 true, i1 %405
  %brmerge3203.demorgan = and i1 %or.cond18, %242
  br i1 %brmerge3203.demorgan, label %.lr.ph2245.preheader, label %.thread1321

.lr.ph2245.preheader:                             ; preds = %404
  br i1 %343, label %._crit_edge2246.unr-lcssa, label %.lr.ph2245

.lr.ph2245:                                       ; preds = %.lr.ph2245.preheader, %.lr.ph2245
  %indvars.iv2517 = phi i64 [ %indvars.iv.next2518.3, %.lr.ph2245 ], [ %384, %.lr.ph2245.preheader ]
  %indvars.iv2513 = phi i64 [ %indvars.iv.next2514.3, %.lr.ph2245 ], [ 0, %.lr.ph2245.preheader ]
  %.011052242 = phi double [ %422, %.lr.ph2245 ], [ 0.000000e+00, %.lr.ph2245.preheader ]
  %niter3360 = phi i64 [ %niter3360.next.3, %.lr.ph2245 ], [ 0, %.lr.ph2245.preheader ]
  %406 = getelementptr inbounds double, ptr %239, i64 %indvars.iv2513
  %407 = load double, ptr %406, align 8, !tbaa !14
  %408 = getelementptr inbounds double, ptr %262, i64 %indvars.iv2517
  %409 = load double, ptr %408, align 8, !tbaa !14
  %410 = call double @llvm.fmuladd.f64(double %407, double %409, double %.011052242)
  %indvars.iv.next2514 = or disjoint i64 %indvars.iv2513, 1
  %411 = getelementptr inbounds double, ptr %239, i64 %indvars.iv.next2514
  %412 = load double, ptr %411, align 8, !tbaa !14
  %gep3425 = getelementptr inbounds double, ptr %invariant.gep3424, i64 %indvars.iv2517
  %413 = load double, ptr %gep3425, align 8, !tbaa !14
  %414 = call double @llvm.fmuladd.f64(double %412, double %413, double %410)
  %indvars.iv.next2514.1 = or disjoint i64 %indvars.iv2513, 2
  %415 = getelementptr inbounds double, ptr %239, i64 %indvars.iv.next2514.1
  %416 = load double, ptr %415, align 8, !tbaa !14
  %gep3427 = getelementptr inbounds double, ptr %invariant.gep3426, i64 %indvars.iv2517
  %417 = load double, ptr %gep3427, align 8, !tbaa !14
  %418 = call double @llvm.fmuladd.f64(double %416, double %417, double %414)
  %indvars.iv.next2514.2 = or disjoint i64 %indvars.iv2513, 3
  %419 = getelementptr inbounds double, ptr %239, i64 %indvars.iv.next2514.2
  %420 = load double, ptr %419, align 8, !tbaa !14
  %gep3429 = getelementptr inbounds double, ptr %invariant.gep3428, i64 %indvars.iv2517
  %421 = load double, ptr %gep3429, align 8, !tbaa !14
  %422 = call double @llvm.fmuladd.f64(double %420, double %421, double %418)
  %indvars.iv.next2514.3 = add nuw nsw i64 %indvars.iv2513, 4
  %indvars.iv.next2518.3 = add nuw nsw i64 %indvars.iv2517, 4
  %niter3360.next.3 = add i64 %niter3360, 4
  %niter3360.ncmp.3 = icmp eq i64 %niter3360.next.3, %unroll_iter3359
  br i1 %niter3360.ncmp.3, label %._crit_edge2246.unr-lcssa, label %.lr.ph2245, !llvm.loop !43

._crit_edge2246.unr-lcssa:                        ; preds = %.lr.ph2245, %.lr.ph2245.preheader
  %.lcssa.ph = phi double [ poison, %.lr.ph2245.preheader ], [ %422, %.lr.ph2245 ]
  %indvars.iv2517.unr = phi i64 [ %384, %.lr.ph2245.preheader ], [ %indvars.iv.next2518.3, %.lr.ph2245 ]
  %indvars.iv2513.unr = phi i64 [ 0, %.lr.ph2245.preheader ], [ %indvars.iv.next2514.3, %.lr.ph2245 ]
  %.011052242.unr = phi double [ 0.000000e+00, %.lr.ph2245.preheader ], [ %422, %.lr.ph2245 ]
  br i1 %lcmp.mod3357.not, label %._crit_edge2246, label %.lr.ph2245.epil

.lr.ph2245.epil:                                  ; preds = %._crit_edge2246.unr-lcssa, %.lr.ph2245.epil
  %indvars.iv2517.epil = phi i64 [ %indvars.iv.next2518.epil, %.lr.ph2245.epil ], [ %indvars.iv2517.unr, %._crit_edge2246.unr-lcssa ]
  %indvars.iv2513.epil = phi i64 [ %indvars.iv.next2514.epil, %.lr.ph2245.epil ], [ %indvars.iv2513.unr, %._crit_edge2246.unr-lcssa ]
  %.011052242.epil = phi double [ %427, %.lr.ph2245.epil ], [ %.011052242.unr, %._crit_edge2246.unr-lcssa ]
  %epil.iter3356 = phi i64 [ %epil.iter3356.next, %.lr.ph2245.epil ], [ 0, %._crit_edge2246.unr-lcssa ]
  %423 = getelementptr inbounds double, ptr %239, i64 %indvars.iv2513.epil
  %424 = load double, ptr %423, align 8, !tbaa !14
  %425 = getelementptr inbounds double, ptr %262, i64 %indvars.iv2517.epil
  %426 = load double, ptr %425, align 8, !tbaa !14
  %427 = call double @llvm.fmuladd.f64(double %424, double %426, double %.011052242.epil)
  %indvars.iv.next2514.epil = add nuw nsw i64 %indvars.iv2513.epil, 1
  %indvars.iv.next2518.epil = add nuw nsw i64 %indvars.iv2517.epil, 1
  %epil.iter3356.next = add i64 %epil.iter3356, 1
  %epil.iter3356.cmp.not = icmp eq i64 %epil.iter3356.next, %xtraiter3355
  br i1 %epil.iter3356.cmp.not, label %._crit_edge2246, label %.lr.ph2245.epil, !llvm.loop !44

._crit_edge2246:                                  ; preds = %.lr.ph2245.epil, %._crit_edge2246.unr-lcssa
  %.lcssa = phi double [ %.lcssa.ph, %._crit_edge2246.unr-lcssa ], [ %427, %.lr.ph2245.epil ]
  %428 = fcmp ogt double %.lcssa, 0.000000e+00
  %or.cond20 = select i1 %395, i1 %428, i1 false
  br i1 %or.cond20, label %429, label %.loopexit2084

429:                                              ; preds = %._crit_edge2246
  br i1 %242, label %.loopexit2084.thread2729, label %.thread1321

.loopexit2084:                                    ; preds = %._crit_edge2246
  %430 = fcmp olt double %.lcssa, 0.000000e+00
  %or.cond22.not = select i1 %405, i1 %430, i1 false
  %brmerge3205.not = and i1 %or.cond22.not, %242
  br i1 %brmerge3205.not, label %.lr.ph2255.preheader, label %.thread1321

.loopexit2084.thread2729:                         ; preds = %429
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep2527, i8 0, i64 %238, i1 false), !tbaa !14
  %431 = fcmp olt double %.lcssa, 0.000000e+00
  %or.cond222730 = select i1 %405, i1 %431, i1 false
  br i1 %or.cond222730, label %.lr.ph2255.preheader, label %.thread1321

.lr.ph2255.preheader:                             ; preds = %.loopexit2084, %.loopexit2084.thread2729
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep2527, i8 0, i64 %238, i1 false), !tbaa !14
  br label %.thread1321

.thread1321:                                      ; preds = %.loopexit2084, %429, %404, %.loopexit2084.thread2729, %.lr.ph2255.preheader
  %indvars.iv.next2532 = add nuw nsw i64 %indvars.iv2531, 1
  %indvars.iv.next2516 = add i32 %indvars.iv2515, %1
  %exitcond2535.not = icmp eq i64 %indvars.iv.next2532, %wide.trip.count2534
  br i1 %exitcond2535.not, label %.loopexit2095, label %.lr.ph2257, !llvm.loop !45

.loopexit2095:                                    ; preds = %.thread1321, %383
  call void @mp_qrfac(i32 noundef %1, i32 noundef %.11128.lcssa, ptr noundef %262, i32 noundef %1, i32 noundef 1, ptr noundef nonnull %284, i32 noundef %.11128.lcssa, ptr noundef nonnull %272, ptr noundef %276, ptr noundef nonnull %278)
  %432 = icmp eq i32 %.01161, 1
  br i1 %432, label %433, label %489

433:                                              ; preds = %.loopexit2095
  br i1 %brmerge2361, label %.loopexit2093, label %.lr.ph2259

.lr.ph2259:                                       ; preds = %433
  %434 = load double, ptr @mpfit.zero, align 8, !tbaa !14
  %435 = load double, ptr @mpfit.one, align 8
  br i1 %344, label %.loopexit2093.loopexit.unr-lcssa, label %.lr.ph2259.new

.lr.ph2259.new:                                   ; preds = %.lr.ph2259, %.lr.ph2259.new
  %indvars.iv2536 = phi i64 [ %indvars.iv.next2537.1, %.lr.ph2259.new ], [ 0, %.lr.ph2259 ]
  %niter3365 = phi i64 [ %niter3365.next.1, %.lr.ph2259.new ], [ 0, %.lr.ph2259 ]
  %436 = getelementptr inbounds double, ptr %276, i64 %indvars.iv2536
  %437 = load double, ptr %436, align 8, !tbaa !14
  %438 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2536
  %439 = load i32, ptr %438, align 4, !tbaa !5
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds double, ptr %268, i64 %440
  %442 = fcmp oeq double %437, %434
  %storemerge = select i1 %442, double %435, double %437
  store double %storemerge, ptr %441, align 8, !tbaa !14
  %indvars.iv.next2537 = or disjoint i64 %indvars.iv2536, 1
  %443 = getelementptr inbounds double, ptr %276, i64 %indvars.iv.next2537
  %444 = load double, ptr %443, align 8, !tbaa !14
  %445 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv.next2537
  %446 = load i32, ptr %445, align 4, !tbaa !5
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds double, ptr %268, i64 %447
  %449 = fcmp oeq double %444, %434
  %storemerge.1 = select i1 %449, double %435, double %444
  store double %storemerge.1, ptr %448, align 8, !tbaa !14
  %indvars.iv.next2537.1 = add nuw nsw i64 %indvars.iv2536, 2
  %niter3365.next.1 = add i64 %niter3365, 2
  %niter3365.ncmp.1 = icmp eq i64 %niter3365.next.1, %unroll_iter3364
  br i1 %niter3365.ncmp.1, label %.loopexit2093.loopexit.unr-lcssa, label %.lr.ph2259.new, !llvm.loop !46

.loopexit2093.loopexit.unr-lcssa:                 ; preds = %.lr.ph2259.new, %.lr.ph2259
  %indvars.iv2536.unr = phi i64 [ 0, %.lr.ph2259 ], [ %indvars.iv.next2537.1, %.lr.ph2259.new ]
  br i1 %lcmp.mod3363.not, label %.loopexit2093, label %.loopexit2093.loopexit.epilog-lcssa

.loopexit2093.loopexit.epilog-lcssa:              ; preds = %.loopexit2093.loopexit.unr-lcssa
  %450 = getelementptr inbounds double, ptr %276, i64 %indvars.iv2536.unr
  %451 = load double, ptr %450, align 8, !tbaa !14
  %452 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2536.unr
  %453 = load i32, ptr %452, align 4, !tbaa !5
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds double, ptr %268, i64 %454
  %456 = fcmp oeq double %451, %434
  %storemerge.epil = select i1 %456, double %435, double %451
  store double %storemerge.epil, ptr %455, align 8, !tbaa !14
  br label %.loopexit2093

.loopexit2093:                                    ; preds = %.loopexit2093.loopexit.epilog-lcssa, %.loopexit2093.loopexit.unr-lcssa, %433
  br i1 %247, label %.lr.ph2262.preheader, label %._crit_edge2263

.lr.ph2262.preheader:                             ; preds = %.loopexit2093
  br i1 %345, label %._crit_edge2263.loopexit.unr-lcssa, label %.lr.ph2262

.lr.ph2262:                                       ; preds = %.lr.ph2262.preheader, %.lr.ph2262
  %indvars.iv2541 = phi i64 [ %indvars.iv.next2542.1, %.lr.ph2262 ], [ 0, %.lr.ph2262.preheader ]
  %niter3370 = phi i64 [ %niter3370.next.1, %.lr.ph2262 ], [ 0, %.lr.ph2262.preheader ]
  %457 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2541
  %458 = load i32, ptr %457, align 4, !tbaa !5
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds double, ptr %268, i64 %459
  %461 = load double, ptr %460, align 8, !tbaa !14
  %462 = getelementptr inbounds double, ptr %256, i64 %indvars.iv2541
  %463 = load double, ptr %462, align 8, !tbaa !14
  %464 = fmul double %461, %463
  %465 = getelementptr inbounds double, ptr %278, i64 %indvars.iv2541
  store double %464, ptr %465, align 8, !tbaa !14
  %indvars.iv.next2542 = or disjoint i64 %indvars.iv2541, 1
  %466 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv.next2542
  %467 = load i32, ptr %466, align 4, !tbaa !5
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds double, ptr %268, i64 %468
  %470 = load double, ptr %469, align 8, !tbaa !14
  %471 = getelementptr inbounds double, ptr %256, i64 %indvars.iv.next2542
  %472 = load double, ptr %471, align 8, !tbaa !14
  %473 = fmul double %470, %472
  %474 = getelementptr inbounds double, ptr %278, i64 %indvars.iv.next2542
  store double %473, ptr %474, align 8, !tbaa !14
  %indvars.iv.next2542.1 = add nuw nsw i64 %indvars.iv2541, 2
  %niter3370.next.1 = add i64 %niter3370, 2
  %niter3370.ncmp.1 = icmp eq i64 %niter3370.next.1, %unroll_iter3369
  br i1 %niter3370.ncmp.1, label %._crit_edge2263.loopexit.unr-lcssa, label %.lr.ph2262, !llvm.loop !47

._crit_edge2263.loopexit.unr-lcssa:               ; preds = %.lr.ph2262, %.lr.ph2262.preheader
  %indvars.iv2541.unr = phi i64 [ 0, %.lr.ph2262.preheader ], [ %indvars.iv.next2542.1, %.lr.ph2262 ]
  br i1 %lcmp.mod3368.not, label %._crit_edge2263, label %.lr.ph2262.epil

.lr.ph2262.epil:                                  ; preds = %._crit_edge2263.loopexit.unr-lcssa
  %475 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2541.unr
  %476 = load i32, ptr %475, align 4, !tbaa !5
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds double, ptr %268, i64 %477
  %479 = load double, ptr %478, align 8, !tbaa !14
  %480 = getelementptr inbounds double, ptr %256, i64 %indvars.iv2541.unr
  %481 = load double, ptr %480, align 8, !tbaa !14
  %482 = fmul double %479, %481
  %483 = getelementptr inbounds double, ptr %278, i64 %indvars.iv2541.unr
  store double %482, ptr %483, align 8, !tbaa !14
  br label %._crit_edge2263

._crit_edge2263:                                  ; preds = %.lr.ph2262.epil, %._crit_edge2263.loopexit.unr-lcssa, %.loopexit2093
  %484 = call double @mp_enorm(i32 noundef %.11128.lcssa, ptr noundef nonnull %278)
  %485 = fmul double %.sroa.20.1, %484
  %486 = load double, ptr @mpfit.zero, align 8, !tbaa !14
  %487 = fcmp oeq double %485, %486
  br i1 %487, label %488, label %489

488:                                              ; preds = %._crit_edge2263
  br label %489

489:                                              ; preds = %._crit_edge2263, %488, %.loopexit2095
  %.11143 = phi double [ %.sroa.20.1, %488 ], [ %485, %._crit_edge2263 ], [ %.01142, %.loopexit2095 ]
  %.11075 = phi double [ %484, %488 ], [ %484, %._crit_edge2263 ], [ %.01074, %.loopexit2095 ]
  br i1 %242, label %.lr.ph2266.preheader, label %.preheader2091

.lr.ph2266.preheader:                             ; preds = %489
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %282, ptr nonnull align 8 %239, i64 %238, i1 false), !tbaa !14
  br label %.preheader2091

.preheader2091:                                   ; preds = %.lr.ph2266.preheader, %489
  br i1 %247, label %.lr.ph2281, label %.thread2735

.lr.ph2281:                                       ; preds = %.preheader2091
  %490 = load double, ptr @mpfit.zero, align 8, !tbaa !14
  br label %491

491:                                              ; preds = %.lr.ph2281, %.loopexit2082
  %indvars.iv2553 = phi i64 [ 0, %.lr.ph2281 ], [ %indvars.iv.next2554, %.loopexit2082 ]
  %indvars.iv2549 = phi i64 [ 0, %.lr.ph2281 ], [ %indvars.iv.next2550, %.loopexit2082 ]
  %492 = sub nsw i64 %237, %indvars.iv2549
  %493 = getelementptr inbounds double, ptr %262, i64 %indvars.iv2553
  %494 = load double, ptr %493, align 8, !tbaa !14
  %495 = fcmp une double %494, %490
  br i1 %495, label %.preheader2083, label %.loopexit2082

.preheader2083:                                   ; preds = %491
  %496 = icmp ult i64 %indvars.iv2549, %338
  br i1 %496, label %.lr.ph2270, label %.loopexit2082

.lr.ph2270:                                       ; preds = %.preheader2083, %.lr.ph2270
  %indvars.iv2555 = phi i64 [ %indvars.iv.next2556, %.lr.ph2270 ], [ %indvars.iv2553, %.preheader2083 ]
  %indvars.iv2551 = phi i64 [ %indvars.iv.next2552, %.lr.ph2270 ], [ %indvars.iv2549, %.preheader2083 ]
  %.211072268 = phi double [ %501, %.lr.ph2270 ], [ %490, %.preheader2083 ]
  %497 = getelementptr inbounds double, ptr %262, i64 %indvars.iv2555
  %498 = load double, ptr %497, align 8, !tbaa !14
  %499 = getelementptr inbounds double, ptr %282, i64 %indvars.iv2551
  %500 = load double, ptr %499, align 8, !tbaa !14
  %501 = call double @llvm.fmuladd.f64(double %498, double %500, double %.211072268)
  %indvars.iv.next2556 = add nuw nsw i64 %indvars.iv2555, 1
  %indvars.iv.next2552 = add nuw nsw i64 %indvars.iv2551, 1
  %exitcond2561.not = icmp eq i64 %indvars.iv.next2552, %237
  br i1 %exitcond2561.not, label %._crit_edge2271, label %.lr.ph2270, !llvm.loop !48

._crit_edge2271:                                  ; preds = %.lr.ph2270
  %502 = fneg double %501
  %503 = fdiv double %502, %494
  br i1 %496, label %.lr.ph2276.preheader, label %.loopexit2082

.lr.ph2276.preheader:                             ; preds = %._crit_edge2271
  %min.iters.check3285 = icmp ult i64 %492, 4
  br i1 %min.iters.check3285, label %.lr.ph2276.preheader3325, label %vector.ph3286

vector.ph3286:                                    ; preds = %.lr.ph2276.preheader
  %n.vec3288 = and i64 %492, -4
  %ind.end3289 = add i64 %indvars.iv2553, %n.vec3288
  %ind.end3291 = add i64 %indvars.iv2549, %n.vec3288
  %broadcast.splatinsert3301 = insertelement <2 x double> poison, double %503, i64 0
  %broadcast.splat3302 = shufflevector <2 x double> %broadcast.splatinsert3301, <2 x double> poison, <2 x i32> zeroinitializer
  %504 = getelementptr double, ptr %262, i64 %indvars.iv2553
  %505 = getelementptr double, ptr %282, i64 %indvars.iv2549
  br label %vector.body3293

vector.body3293:                                  ; preds = %vector.body3293, %vector.ph3286
  %index3294 = phi i64 [ 0, %vector.ph3286 ], [ %index.next3303, %vector.body3293 ]
  %506 = getelementptr double, ptr %504, i64 %index3294
  %507 = getelementptr inbounds i8, ptr %506, i64 16
  %wide.load3297 = load <2 x double>, ptr %506, align 8, !tbaa !14
  %wide.load3298 = load <2 x double>, ptr %507, align 8, !tbaa !14
  %508 = getelementptr double, ptr %505, i64 %index3294
  %509 = getelementptr inbounds i8, ptr %508, i64 16
  %wide.load3299 = load <2 x double>, ptr %508, align 8, !tbaa !14
  %wide.load3300 = load <2 x double>, ptr %509, align 8, !tbaa !14
  %510 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load3297, <2 x double> %broadcast.splat3302, <2 x double> %wide.load3299)
  %511 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load3298, <2 x double> %broadcast.splat3302, <2 x double> %wide.load3300)
  store <2 x double> %510, ptr %508, align 8, !tbaa !14
  store <2 x double> %511, ptr %509, align 8, !tbaa !14
  %index.next3303 = add nuw i64 %index3294, 4
  %512 = icmp eq i64 %index.next3303, %n.vec3288
  br i1 %512, label %middle.block3283, label %vector.body3293, !llvm.loop !49

middle.block3283:                                 ; preds = %vector.body3293
  %cmp.n3304 = icmp eq i64 %492, %n.vec3288
  br i1 %cmp.n3304, label %.loopexit2082, label %.lr.ph2276.preheader3325

.lr.ph2276.preheader3325:                         ; preds = %middle.block3283, %.lr.ph2276.preheader
  %indvars.iv2564.ph = phi i64 [ %indvars.iv2553, %.lr.ph2276.preheader ], [ %ind.end3289, %middle.block3283 ]
  %indvars.iv2562.ph = phi i64 [ %indvars.iv2549, %.lr.ph2276.preheader ], [ %ind.end3291, %middle.block3283 ]
  br label %.lr.ph2276

.lr.ph2276:                                       ; preds = %.lr.ph2276.preheader3325, %.lr.ph2276
  %indvars.iv2564 = phi i64 [ %indvars.iv.next2565, %.lr.ph2276 ], [ %indvars.iv2564.ph, %.lr.ph2276.preheader3325 ]
  %indvars.iv2562 = phi i64 [ %indvars.iv.next2563, %.lr.ph2276 ], [ %indvars.iv2562.ph, %.lr.ph2276.preheader3325 ]
  %513 = getelementptr inbounds double, ptr %262, i64 %indvars.iv2564
  %514 = load double, ptr %513, align 8, !tbaa !14
  %515 = getelementptr inbounds double, ptr %282, i64 %indvars.iv2562
  %516 = load double, ptr %515, align 8, !tbaa !14
  %517 = call double @llvm.fmuladd.f64(double %514, double %503, double %516)
  store double %517, ptr %515, align 8, !tbaa !14
  %indvars.iv.next2565 = add nuw nsw i64 %indvars.iv2564, 1
  %indvars.iv.next2563 = add nuw nsw i64 %indvars.iv2562, 1
  %exitcond2570.not = icmp eq i64 %indvars.iv.next2563, %237
  br i1 %exitcond2570.not, label %.loopexit2082, label %.lr.ph2276, !llvm.loop !50

.loopexit2082:                                    ; preds = %.lr.ph2276, %middle.block3283, %.preheader2083, %._crit_edge2271, %491
  %518 = getelementptr inbounds double, ptr %272, i64 %indvars.iv2549
  %519 = load double, ptr %518, align 8, !tbaa !14
  store double %519, ptr %493, align 8, !tbaa !14
  %indvars.iv.next2554 = add nuw nsw i64 %indvars.iv2553, %337
  %520 = getelementptr inbounds double, ptr %282, i64 %indvars.iv2549
  %521 = load double, ptr %520, align 8, !tbaa !14
  %522 = getelementptr inbounds double, ptr %245, i64 %indvars.iv2549
  store double %521, ptr %522, align 8, !tbaa !14
  %indvars.iv.next2550 = add nuw nsw i64 %indvars.iv2549, 1
  %exitcond2575.not = icmp eq i64 %indvars.iv.next2550, %wide.trip.count2574
  br i1 %exitcond2575.not, label %._crit_edge2282, label %491, !llvm.loop !51

._crit_edge2282:                                  ; preds = %.loopexit2082
  br i1 %.not1251, label %538, label %.preheader2090

.preheader2090:                                   ; preds = %._crit_edge2282
  br i1 %247, label %.preheader2081, label %.thread2735

.preheader2081:                                   ; preds = %.preheader2090, %._crit_edge2286
  %indvars.iv2581 = phi i64 [ %indvars.iv.next2582, %._crit_edge2286 ], [ 0, %.preheader2090 ]
  %.010172290 = phi i32 [ %.2.lcssa, %._crit_edge2286 ], [ 0, %.preheader2090 ]
  %.610882288 = phi i32 [ %536, %._crit_edge2286 ], [ 0, %.preheader2090 ]
  %invariant.gep = getelementptr inbounds double, ptr %262, i64 %indvars.iv2581
  br i1 %min.iters.check3271, label %scalar.ph3270.preheader, label %vector.body3276

vector.body3276:                                  ; preds = %.preheader2081, %vector.body3276
  %index3277 = phi i64 [ %index.next3281, %vector.body3276 ], [ 0, %.preheader2081 ]
  %vec.phi = phi <2 x i1> [ %529, %vector.body3276 ], [ zeroinitializer, %.preheader2081 ]
  %vec.phi3278 = phi <2 x i1> [ %530, %vector.body3276 ], [ zeroinitializer, %.preheader2081 ]
  %523 = getelementptr inbounds double, ptr %invariant.gep, i64 %index3277
  %524 = getelementptr inbounds i8, ptr %523, i64 16
  %wide.load3279 = load <2 x double>, ptr %523, align 8, !tbaa !14
  %wide.load3280 = load <2 x double>, ptr %524, align 8, !tbaa !14
  %525 = call <2 x double> @llvm.fabs.v2f64(<2 x double> %wide.load3279)
  %526 = call <2 x double> @llvm.fabs.v2f64(<2 x double> %wide.load3280)
  %527 = fcmp ueq <2 x double> %525, <double 0x7FF0000000000000, double 0x7FF0000000000000>
  %528 = fcmp ueq <2 x double> %526, <double 0x7FF0000000000000, double 0x7FF0000000000000>
  %529 = or <2 x i1> %vec.phi, %527
  %530 = or <2 x i1> %vec.phi3278, %528
  %index.next3281 = add nuw i64 %index3277, 4
  %531 = icmp eq i64 %index.next3281, %n.vec3274
  br i1 %531, label %middle.block3269, label %vector.body3276, !llvm.loop !52

middle.block3269:                                 ; preds = %vector.body3276
  %bin.rdx = or <2 x i1> %530, %529
  %bin.rdx.fr = freeze <2 x i1> %bin.rdx
  %532 = bitcast <2 x i1> %bin.rdx.fr to i2
  %.not3319 = icmp eq i2 %532, 0
  %rdx.select = select i1 %.not3319, i32 %.010172290, i32 1
  br i1 %cmp.n3282, label %._crit_edge2286, label %scalar.ph3270.preheader

scalar.ph3270.preheader:                          ; preds = %middle.block3269, %.preheader2081
  %indvars.iv2576.ph = phi i64 [ 0, %.preheader2081 ], [ %n.vec3274, %middle.block3269 ]
  %.12284.ph = phi i32 [ %.010172290, %.preheader2081 ], [ %rdx.select, %middle.block3269 ]
  br label %scalar.ph3270

scalar.ph3270:                                    ; preds = %scalar.ph3270.preheader, %scalar.ph3270
  %indvars.iv2576 = phi i64 [ %indvars.iv.next2577, %scalar.ph3270 ], [ %indvars.iv2576.ph, %scalar.ph3270.preheader ]
  %.12284 = phi i32 [ %.2, %scalar.ph3270 ], [ %.12284.ph, %scalar.ph3270.preheader ]
  %gep = getelementptr inbounds double, ptr %invariant.gep, i64 %indvars.iv2576
  %533 = load double, ptr %gep, align 8, !tbaa !14
  %534 = call double @llvm.fabs.f64(double %533)
  %535 = fcmp ueq double %534, 0x7FF0000000000000
  %.2 = select i1 %535, i32 1, i32 %.12284
  %indvars.iv.next2577 = add nuw nsw i64 %indvars.iv2576, 1
  %exitcond2580.not = icmp eq i64 %indvars.iv.next2577, %wide.trip.count2579
  br i1 %exitcond2580.not, label %._crit_edge2286, label %scalar.ph3270, !llvm.loop !53

._crit_edge2286:                                  ; preds = %scalar.ph3270, %middle.block3269
  %.2.lcssa = phi i32 [ %rdx.select, %middle.block3269 ], [ %.2, %scalar.ph3270 ]
  %indvars.iv.next2582 = add nuw nsw i64 %indvars.iv2581, %237
  %536 = add nuw nsw i32 %.610882288, 1
  %exitcond2584.not = icmp eq i32 %536, %.11128.lcssa
  br i1 %exitcond2584.not, label %._crit_edge2291, label %.preheader2081, !llvm.loop !54

._crit_edge2291:                                  ; preds = %._crit_edge2286
  %.not1252 = icmp eq i32 %.2.lcssa, 0
  br i1 %.not1252, label %538, label %.critedge.thread1388

.thread2735:                                      ; preds = %.preheader2091, %.preheader2090
  %537 = load double, ptr @mpfit.zero, align 8, !tbaa !14
  br label %.loopexit2089

538:                                              ; preds = %._crit_edge2291, %._crit_edge2282
  %539 = load double, ptr @mpfit.zero, align 8, !tbaa !14
  %540 = fcmp oeq double %.01135, %539
  %brmerge2364 = or i1 %540, %332
  br i1 %brmerge2364, label %.loopexit2089, label %.lr.ph2299

.lr.ph2299:                                       ; preds = %538, %570
  %541 = phi double [ %571, %570 ], [ %539, %538 ]
  %indvars.iv2600 = phi i64 [ %indvars.iv.next2601, %570 ], [ 0, %538 ]
  %indvars.iv2598 = phi i64 [ %indvars.iv.next2599, %570 ], [ 1, %538 ]
  %indvars.iv2587 = phi i64 [ %indvars.iv.next2588, %570 ], [ 0, %538 ]
  %.011292297 = phi double [ %.11130, %570 ], [ %539, %538 ]
  %542 = getelementptr inbounds i32, ptr %284, i64 %indvars.iv2600
  %543 = load i32, ptr %542, align 4, !tbaa !5
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds double, ptr %276, i64 %544
  %546 = load double, ptr %545, align 8, !tbaa !14
  %547 = fcmp une double %546, %541
  br i1 %547, label %.preheader2080.preheader, label %570

.preheader2080.preheader:                         ; preds = %.lr.ph2299
  %xtraiter3371 = and i64 %indvars.iv2598, 1
  %548 = icmp eq i64 %indvars.iv2600, 0
  br i1 %548, label %.unr-lcssa, label %.preheader2080.preheader.new

.preheader2080.preheader.new:                     ; preds = %.preheader2080.preheader
  %unroll_iter3375 = and i64 %indvars.iv2598, 9223372036854775806
  br label %.preheader2080

.preheader2080:                                   ; preds = %.preheader2080, %.preheader2080.preheader.new
  %indvars.iv2589 = phi i64 [ %indvars.iv2587, %.preheader2080.preheader.new ], [ %indvars.iv.next2590.1, %.preheader2080 ]
  %indvars.iv2585 = phi i64 [ 0, %.preheader2080.preheader.new ], [ %indvars.iv.next2586.1, %.preheader2080 ]
  %.311082294 = phi double [ %541, %.preheader2080.preheader.new ], [ %559, %.preheader2080 ]
  %niter3376 = phi i64 [ 0, %.preheader2080.preheader.new ], [ %niter3376.next.1, %.preheader2080 ]
  %549 = getelementptr inbounds double, ptr %262, i64 %indvars.iv2589
  %550 = load double, ptr %549, align 8, !tbaa !14
  %551 = getelementptr inbounds double, ptr %245, i64 %indvars.iv2585
  %552 = load double, ptr %551, align 8, !tbaa !14
  %553 = fdiv double %552, %.01135
  %554 = call double @llvm.fmuladd.f64(double %550, double %553, double %.311082294)
  %indvars.iv.next2586 = or disjoint i64 %indvars.iv2585, 1
  %gep3431 = getelementptr inbounds double, ptr %invariant.gep3430, i64 %indvars.iv2589
  %555 = load double, ptr %gep3431, align 8, !tbaa !14
  %556 = getelementptr inbounds double, ptr %245, i64 %indvars.iv.next2586
  %557 = load double, ptr %556, align 8, !tbaa !14
  %558 = fdiv double %557, %.01135
  %559 = call double @llvm.fmuladd.f64(double %555, double %558, double %554)
  %indvars.iv.next2590.1 = add nuw nsw i64 %indvars.iv2589, 2
  %indvars.iv.next2586.1 = add nuw nsw i64 %indvars.iv2585, 2
  %niter3376.next.1 = add i64 %niter3376, 2
  %niter3376.ncmp.1 = icmp eq i64 %niter3376.next.1, %unroll_iter3375
  br i1 %niter3376.ncmp.1, label %.unr-lcssa, label %.preheader2080, !llvm.loop !55

.unr-lcssa:                                       ; preds = %.preheader2080, %.preheader2080.preheader
  %.lcssa3337.ph = phi double [ poison, %.preheader2080.preheader ], [ %559, %.preheader2080 ]
  %indvars.iv2589.unr = phi i64 [ %indvars.iv2587, %.preheader2080.preheader ], [ %indvars.iv.next2590.1, %.preheader2080 ]
  %indvars.iv2585.unr = phi i64 [ 0, %.preheader2080.preheader ], [ %indvars.iv.next2586.1, %.preheader2080 ]
  %.311082294.unr = phi double [ %541, %.preheader2080.preheader ], [ %559, %.preheader2080 ]
  %lcmp.mod3373.not = icmp eq i64 %xtraiter3371, 0
  br i1 %lcmp.mod3373.not, label %566, label %.preheader2080.epil

.preheader2080.epil:                              ; preds = %.unr-lcssa
  %560 = getelementptr inbounds double, ptr %262, i64 %indvars.iv2589.unr
  %561 = load double, ptr %560, align 8, !tbaa !14
  %562 = getelementptr inbounds double, ptr %245, i64 %indvars.iv2585.unr
  %563 = load double, ptr %562, align 8, !tbaa !14
  %564 = fdiv double %563, %.01135
  %565 = call double @llvm.fmuladd.f64(double %561, double %564, double %.311082294.unr)
  br label %566

566:                                              ; preds = %.unr-lcssa, %.preheader2080.epil
  %.lcssa3337 = phi double [ %.lcssa3337.ph, %.unr-lcssa ], [ %565, %.preheader2080.epil ]
  %567 = fdiv double %.lcssa3337, %546
  %568 = call double @llvm.fabs.f64(double %567)
  %569 = call double @mp_dmax1(double noundef %.011292297, double noundef %568)
  %.pre = load double, ptr @mpfit.zero, align 8, !tbaa !14
  br label %570

570:                                              ; preds = %566, %.lr.ph2299
  %571 = phi double [ %.pre, %566 ], [ %541, %.lr.ph2299 ]
  %.11130 = phi double [ %569, %566 ], [ %.011292297, %.lr.ph2299 ]
  %indvars.iv.next2588 = add nuw nsw i64 %indvars.iv2587, %237
  %indvars.iv.next2601 = add nuw nsw i64 %indvars.iv2600, 1
  %indvars.iv.next2599 = add nuw nsw i64 %indvars.iv2598, 1
  %exitcond2608.not = icmp eq i64 %indvars.iv.next2601, %wide.trip.count2607
  br i1 %exitcond2608.not, label %.loopexit2089, label %.lr.ph2299, !llvm.loop !56

.loopexit2089:                                    ; preds = %570, %.thread2735, %538
  %.21131 = phi double [ %539, %538 ], [ %537, %.thread2735 ], [ %.11130, %570 ]
  %572 = fcmp ugt double %.21131, %339
  br i1 %572, label %573, label %.thread1334

573:                                              ; preds = %.loopexit2089
  br i1 %335, label %.thread1334, label %574

574:                                              ; preds = %573
  br i1 %brmerge2367, label %.loopexit2087, label %.lr.ph2302

.lr.ph2302:                                       ; preds = %574, %.lr.ph2302
  %indvars.iv2609 = phi i64 [ %indvars.iv.next2610, %.lr.ph2302 ], [ 0, %574 ]
  %575 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2609
  %576 = load i32, ptr %575, align 4, !tbaa !5
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds double, ptr %268, i64 %577
  %579 = load double, ptr %578, align 8, !tbaa !14
  %580 = getelementptr inbounds double, ptr %276, i64 %indvars.iv2609
  %581 = load double, ptr %580, align 8, !tbaa !14
  %582 = call double @mp_dmax1(double noundef %579, double noundef %581)
  %583 = load i32, ptr %575, align 4, !tbaa !5
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds double, ptr %268, i64 %584
  store double %582, ptr %585, align 8, !tbaa !14
  %indvars.iv.next2610 = add nuw nsw i64 %indvars.iv2609, 1
  %exitcond2613.not = icmp eq i64 %indvars.iv.next2610, %wide.trip.count2612
  br i1 %exitcond2613.not, label %.loopexit2087, label %.lr.ph2302, !llvm.loop !57

.loopexit2087:                                    ; preds = %.lr.ph2302, %574
  %586 = fcmp ugt double %.21131, 0x3CAFFFFFF4178DA3
  br label %587

587:                                              ; preds = %898, %.loopexit2087
  %.11162 = phi i32 [ %.01161, %.loopexit2087 ], [ %.21163, %898 ]
  %.21144 = phi double [ %.11143, %.loopexit2087 ], [ %.41146, %898 ]
  %.11136 = phi double [ %.01135, %.loopexit2087 ], [ %.21137, %898 ]
  %.11133 = phi double [ %.01132, %.loopexit2087 ], [ %768, %898 ]
  %.21076 = phi double [ %.11075, %.loopexit2087 ], [ %.31077, %898 ]
  call void @mp_lmpar(i32 noundef %.11128.lcssa, ptr noundef %262, i32 noundef %1, ptr noundef nonnull %284, ptr noundef nonnull %132, ptr noundef nonnull %268, ptr noundef nonnull %245, double noundef %.21144, ptr noundef nonnull %9, ptr noundef nonnull %272, ptr noundef %276, ptr noundef nonnull %278, ptr noundef nonnull %282)
  br i1 %247, label %.lr.ph2305.preheader, label %._crit_edge2318

.lr.ph2305.preheader:                             ; preds = %587
  br i1 %min.iters.check3258, label %.lr.ph2305.preheader3324, label %vector.body3263

vector.body3263:                                  ; preds = %.lr.ph2305.preheader, %vector.body3263
  %index3264 = phi i64 [ %index.next3267, %vector.body3263 ], [ 0, %.lr.ph2305.preheader ]
  %588 = getelementptr inbounds double, ptr %272, i64 %index3264
  %589 = getelementptr inbounds i8, ptr %588, i64 16
  %wide.load3265 = load <2 x double>, ptr %588, align 8, !tbaa !14
  %wide.load3266 = load <2 x double>, ptr %589, align 8, !tbaa !14
  %590 = fneg <2 x double> %wide.load3265
  %591 = fneg <2 x double> %wide.load3266
  store <2 x double> %590, ptr %588, align 8, !tbaa !14
  store <2 x double> %591, ptr %589, align 8, !tbaa !14
  %index.next3267 = add nuw i64 %index3264, 4
  %592 = icmp eq i64 %index.next3267, %n.vec3261
  br i1 %592, label %middle.block3256, label %vector.body3263, !llvm.loop !58

middle.block3256:                                 ; preds = %vector.body3263
  br i1 %cmp.n3268, label %._crit_edge2306, label %.lr.ph2305.preheader3324

.lr.ph2305.preheader3324:                         ; preds = %middle.block3256, %.lr.ph2305.preheader
  %indvars.iv2614.ph = phi i64 [ 0, %.lr.ph2305.preheader ], [ %n.vec3261, %middle.block3256 ]
  br label %.lr.ph2305

.lr.ph2305:                                       ; preds = %.lr.ph2305.preheader3324, %.lr.ph2305
  %indvars.iv2614 = phi i64 [ %indvars.iv.next2615, %.lr.ph2305 ], [ %indvars.iv2614.ph, %.lr.ph2305.preheader3324 ]
  %593 = getelementptr inbounds double, ptr %272, i64 %indvars.iv2614
  %594 = load double, ptr %593, align 8, !tbaa !14
  %595 = fneg double %594
  store double %595, ptr %593, align 8, !tbaa !14
  %indvars.iv.next2615 = add nuw nsw i64 %indvars.iv2614, 1
  %exitcond2618.not = icmp eq i64 %indvars.iv.next2615, %wide.trip.count2617
  br i1 %exitcond2618.not, label %._crit_edge2306, label %.lr.ph2305, !llvm.loop !59

._crit_edge2306:                                  ; preds = %.lr.ph2305, %middle.block3256
  br i1 %.not1250, label %.preheader2075, label %.preheader2079

.preheader2079:                                   ; preds = %._crit_edge2306
  br i1 %247, label %.lr.ph2309, label %._crit_edge2318

.preheader2075:                                   ; preds = %._crit_edge2306
  br i1 %247, label %.lr.ph2314.preheader, label %._crit_edge2318

.lr.ph2314.preheader:                             ; preds = %.preheader2075
  br i1 %min.iters.check3243, label %.lr.ph2314.preheader3322, label %vector.body3248

vector.body3248:                                  ; preds = %.lr.ph2314.preheader, %vector.body3248
  %index3249 = phi i64 [ %index.next3254, %vector.body3248 ], [ 0, %.lr.ph2314.preheader ]
  %596 = getelementptr inbounds double, ptr %256, i64 %index3249
  %597 = getelementptr inbounds i8, ptr %596, i64 16
  %wide.load3250 = load <2 x double>, ptr %596, align 8, !tbaa !14
  %wide.load3251 = load <2 x double>, ptr %597, align 8, !tbaa !14
  %598 = getelementptr inbounds double, ptr %272, i64 %index3249
  %599 = getelementptr inbounds i8, ptr %598, i64 16
  %wide.load3252 = load <2 x double>, ptr %598, align 8, !tbaa !14
  %wide.load3253 = load <2 x double>, ptr %599, align 8, !tbaa !14
  %600 = fadd <2 x double> %wide.load3250, %wide.load3252
  %601 = fadd <2 x double> %wide.load3251, %wide.load3253
  %602 = getelementptr inbounds double, ptr %276, i64 %index3249
  %603 = getelementptr inbounds i8, ptr %602, i64 16
  store <2 x double> %600, ptr %602, align 8, !tbaa !14
  store <2 x double> %601, ptr %603, align 8, !tbaa !14
  %index.next3254 = add nuw i64 %index3249, 4
  %604 = icmp eq i64 %index.next3254, %n.vec3246
  br i1 %604, label %middle.block3241, label %vector.body3248, !llvm.loop !60

middle.block3241:                                 ; preds = %vector.body3248
  br i1 %cmp.n3255, label %.loopexit2076, label %.lr.ph2314.preheader3322

.lr.ph2314.preheader3322:                         ; preds = %middle.block3241, %.lr.ph2314.preheader
  %indvars.iv2629.ph = phi i64 [ 0, %.lr.ph2314.preheader ], [ %n.vec3246, %middle.block3241 ]
  br label %.lr.ph2314

.lr.ph2314:                                       ; preds = %.lr.ph2314.preheader3322, %.lr.ph2314
  %indvars.iv2629 = phi i64 [ %indvars.iv.next2630, %.lr.ph2314 ], [ %indvars.iv2629.ph, %.lr.ph2314.preheader3322 ]
  %605 = getelementptr inbounds double, ptr %256, i64 %indvars.iv2629
  %606 = load double, ptr %605, align 8, !tbaa !14
  %607 = getelementptr inbounds double, ptr %272, i64 %indvars.iv2629
  %608 = load double, ptr %607, align 8, !tbaa !14
  %609 = fadd double %606, %608
  %610 = getelementptr inbounds double, ptr %276, i64 %indvars.iv2629
  store double %609, ptr %610, align 8, !tbaa !14
  %indvars.iv.next2630 = add nuw nsw i64 %indvars.iv2629, 1
  %exitcond2633.not = icmp eq i64 %indvars.iv.next2630, %wide.trip.count2632
  br i1 %exitcond2633.not, label %.loopexit2076, label %.lr.ph2314, !llvm.loop !61

.preheader2077:                                   ; preds = %665
  br i1 %247, label %.lr.ph2312, label %._crit_edge2318

.lr.ph2309:                                       ; preds = %.preheader2079, %665
  %indvars.iv2619 = phi i64 [ %indvars.iv.next2620, %665 ], [ 0, %.preheader2079 ]
  %.010712308 = phi double [ %.21073, %665 ], [ 1.000000e+00, %.preheader2079 ]
  %611 = getelementptr inbounds i32, ptr %.01061, i64 %indvars.iv2619
  %612 = load i32, ptr %611, align 4, !tbaa !5
  %.not1256 = icmp eq i32 %612, 0
  br i1 %.not1256, label %619, label %613

613:                                              ; preds = %.lr.ph2309
  %614 = getelementptr inbounds double, ptr %256, i64 %indvars.iv2619
  %615 = load double, ptr %614, align 8, !tbaa !14
  %616 = getelementptr inbounds double, ptr %.01067, i64 %indvars.iv2619
  %617 = load double, ptr %616, align 8, !tbaa !14
  %618 = fcmp ole double %615, %617
  br label %619

619:                                              ; preds = %613, %.lr.ph2309
  %620 = phi i1 [ false, %.lr.ph2309 ], [ %618, %613 ]
  %621 = getelementptr inbounds i32, ptr %.01059, i64 %indvars.iv2619
  %622 = load i32, ptr %621, align 4, !tbaa !5
  %.not1257 = icmp eq i32 %622, 0
  %623 = getelementptr inbounds double, ptr %272, i64 %indvars.iv2619
  %624 = load double, ptr %623, align 8, !tbaa !14
  %625 = call double @llvm.fabs.f64(double %624)
  %626 = fcmp ogt double %625, 0x3CAFFFFFF4178DA3
  %627 = fcmp olt double %624, 0.000000e+00
  %or.cond13093182 = select i1 %620, i1 %627, i1 false
  br i1 %.not1257, label %.thread3181, label %628

628:                                              ; preds = %619
  br i1 %or.cond13093182, label %.thread2738, label %629

.thread3181:                                      ; preds = %619
  br i1 %or.cond13093182, label %.thread2738.thread, label %.thread3183

.thread2738.thread:                               ; preds = %.thread3181
  store double 0.000000e+00, ptr %623, align 8, !tbaa !14
  br i1 %626, label %638, label %665

.thread3183:                                      ; preds = %.thread3181
  br i1 %626, label %638, label %665

629:                                              ; preds = %628
  %630 = getelementptr inbounds double, ptr %256, i64 %indvars.iv2619
  %631 = load double, ptr %630, align 8, !tbaa !14
  %632 = getelementptr inbounds double, ptr %.01065, i64 %indvars.iv2619
  %633 = load double, ptr %632, align 8, !tbaa !14
  %634 = fcmp oge double %631, %633
  %635 = fcmp ogt double %624, 0.000000e+00
  %or.cond3206 = select i1 %634, i1 %635, i1 false
  br i1 %or.cond3206, label %636, label %.thread2739

.thread2738:                                      ; preds = %628
  store double 0.000000e+00, ptr %623, align 8, !tbaa !14
  br label %.thread2739

636:                                              ; preds = %629
  store double 0.000000e+00, ptr %623, align 8, !tbaa !14
  br i1 %626, label %638, label %665

.thread2739:                                      ; preds = %.thread2738, %629
  %637 = phi double [ %624, %629 ], [ 0.000000e+00, %.thread2738 ]
  br i1 %626, label %638, label %665

638:                                              ; preds = %.thread2738.thread, %.thread3183, %636, %.thread2739
  %639 = phi double [ 0.000000e+00, %636 ], [ %637, %.thread2739 ], [ %624, %.thread3183 ], [ 0.000000e+00, %.thread2738.thread ]
  br i1 %.not1256, label %651, label %640

640:                                              ; preds = %638
  %641 = getelementptr inbounds double, ptr %256, i64 %indvars.iv2619
  %642 = load double, ptr %641, align 8, !tbaa !14
  %643 = fadd double %642, %639
  %644 = getelementptr inbounds double, ptr %.01067, i64 %indvars.iv2619
  %645 = load double, ptr %644, align 8, !tbaa !14
  %646 = fcmp olt double %643, %645
  br i1 %646, label %647, label %651

647:                                              ; preds = %640
  %648 = fsub double %645, %642
  %649 = fdiv double %648, %639
  %650 = call double @mp_dmin1(double noundef %.010712308, double noundef %649)
  %.pre2715 = load i32, ptr %621, align 4, !tbaa !5
  br label %651

651:                                              ; preds = %647, %640, %638
  %652 = phi i32 [ %622, %638 ], [ %622, %640 ], [ %.pre2715, %647 ]
  %.11072.ph = phi double [ %.010712308, %638 ], [ %.010712308, %640 ], [ %650, %647 ]
  %.not1259 = icmp eq i32 %652, 0
  br i1 %.not1259, label %665, label %653

653:                                              ; preds = %651
  %654 = getelementptr inbounds double, ptr %256, i64 %indvars.iv2619
  %655 = load double, ptr %654, align 8, !tbaa !14
  %656 = load double, ptr %623, align 8, !tbaa !14
  %657 = fadd double %655, %656
  %658 = getelementptr inbounds double, ptr %.01065, i64 %indvars.iv2619
  %659 = load double, ptr %658, align 8, !tbaa !14
  %660 = fcmp ogt double %657, %659
  br i1 %660, label %661, label %665

661:                                              ; preds = %653
  %662 = fsub double %659, %655
  %663 = fdiv double %662, %656
  %664 = call double @mp_dmin1(double noundef %.11072.ph, double noundef %663)
  br label %665

665:                                              ; preds = %.thread2738.thread, %.thread3183, %636, %.thread2739, %661, %653, %651
  %.21073 = phi double [ %664, %661 ], [ %.11072.ph, %653 ], [ %.11072.ph, %651 ], [ %.010712308, %.thread2739 ], [ %.010712308, %636 ], [ %.010712308, %.thread3183 ], [ %.010712308, %.thread2738.thread ]
  %indvars.iv.next2620 = add nuw nsw i64 %indvars.iv2619, 1
  %exitcond2623.not = icmp eq i64 %indvars.iv.next2620, %wide.trip.count2622
  br i1 %exitcond2623.not, label %.preheader2077, label %.lr.ph2309, !llvm.loop !62

.lr.ph2312:                                       ; preds = %.preheader2077, %700
  %indvars.iv2624 = phi i64 [ %indvars.iv.next2625, %700 ], [ 0, %.preheader2077 ]
  %666 = getelementptr inbounds double, ptr %272, i64 %indvars.iv2624
  %667 = load double, ptr %666, align 8, !tbaa !14
  %668 = fmul double %.21073, %667
  store double %668, ptr %666, align 8, !tbaa !14
  %669 = getelementptr inbounds double, ptr %256, i64 %indvars.iv2624
  %670 = load double, ptr %669, align 8, !tbaa !14
  %671 = fadd double %668, %670
  %672 = getelementptr inbounds double, ptr %276, i64 %indvars.iv2624
  store double %671, ptr %672, align 8, !tbaa !14
  %673 = getelementptr inbounds double, ptr %.01065, i64 %indvars.iv2624
  %674 = load double, ptr %673, align 8, !tbaa !14
  %675 = getelementptr inbounds double, ptr %.01067, i64 %indvars.iv2624
  %676 = load double, ptr %675, align 8, !tbaa !14
  %677 = fcmp oge double %676, 0.000000e+00
  %678 = select i1 %677, double 1.000000e+00, double -1.000000e+00
  %679 = call double @llvm.fmuladd.f64(double %678, double 0x3CAFFFFFF4178DA3, double 1.000000e+00)
  %680 = fcmp oeq double %676, 0.000000e+00
  %681 = select i1 %680, double 0x3CAFFFFFF4178DA3, double 0.000000e+00
  %682 = call double @llvm.fmuladd.f64(double %676, double %679, double %681)
  %683 = getelementptr inbounds i32, ptr %.01059, i64 %indvars.iv2624
  %684 = load i32, ptr %683, align 4, !tbaa !5
  %.not1254 = icmp eq i32 %684, 0
  br i1 %.not1254, label %694, label %685

685:                                              ; preds = %.lr.ph2312
  %686 = fcmp oge double %674, 0.000000e+00
  %687 = select i1 %686, double -1.000000e+00, double 1.000000e+00
  %688 = call double @llvm.fmuladd.f64(double %687, double 0x3CAFFFFFF4178DA3, double 1.000000e+00)
  %689 = fcmp oeq double %674, 0.000000e+00
  %690 = select i1 %689, double 0xBCAFFFFFF4178DA3, double -0.000000e+00
  %691 = call double @llvm.fmuladd.f64(double %674, double %688, double %690)
  %692 = fcmp ult double %671, %691
  br i1 %692, label %694, label %693

693:                                              ; preds = %685
  store double %674, ptr %672, align 8, !tbaa !14
  br label %694

694:                                              ; preds = %693, %685, %.lr.ph2312
  %695 = phi double [ %674, %693 ], [ %671, %685 ], [ %671, %.lr.ph2312 ]
  %696 = getelementptr inbounds i32, ptr %.01061, i64 %indvars.iv2624
  %697 = load i32, ptr %696, align 4, !tbaa !5
  %.not1255 = icmp eq i32 %697, 0
  %698 = fcmp ugt double %695, %682
  %or.cond3207 = select i1 %.not1255, i1 true, i1 %698
  br i1 %or.cond3207, label %700, label %699

699:                                              ; preds = %694
  store double %676, ptr %672, align 8, !tbaa !14
  br label %700

700:                                              ; preds = %699, %694
  %indvars.iv.next2625 = add nuw nsw i64 %indvars.iv2624, 1
  %exitcond2628.not = icmp eq i64 %indvars.iv.next2625, %wide.trip.count2627
  br i1 %exitcond2628.not, label %.loopexit2076, label %.lr.ph2312, !llvm.loop !63

.loopexit2076:                                    ; preds = %700, %.lr.ph2314, %middle.block3241
  %.3 = phi double [ 1.000000e+00, %middle.block3241 ], [ 1.000000e+00, %.lr.ph2314 ], [ %.21073, %700 ]
  br i1 %247, label %.lr.ph2317.preheader, label %._crit_edge2318

.lr.ph2317.preheader:                             ; preds = %.loopexit2076
  br i1 %348, label %._crit_edge2318.loopexit.unr-lcssa, label %.lr.ph2317

.lr.ph2317:                                       ; preds = %.lr.ph2317.preheader, %.lr.ph2317
  %indvars.iv2634 = phi i64 [ %indvars.iv.next2635.1, %.lr.ph2317 ], [ 0, %.lr.ph2317.preheader ]
  %niter3381 = phi i64 [ %niter3381.next.1, %.lr.ph2317 ], [ 0, %.lr.ph2317.preheader ]
  %701 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2634
  %702 = load i32, ptr %701, align 4, !tbaa !5
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds double, ptr %268, i64 %703
  %705 = load double, ptr %704, align 8, !tbaa !14
  %706 = getelementptr inbounds double, ptr %272, i64 %indvars.iv2634
  %707 = load double, ptr %706, align 8, !tbaa !14
  %708 = fmul double %705, %707
  %709 = getelementptr inbounds double, ptr %278, i64 %indvars.iv2634
  store double %708, ptr %709, align 8, !tbaa !14
  %indvars.iv.next2635 = or disjoint i64 %indvars.iv2634, 1
  %710 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv.next2635
  %711 = load i32, ptr %710, align 4, !tbaa !5
  %712 = sext i32 %711 to i64
  %713 = getelementptr inbounds double, ptr %268, i64 %712
  %714 = load double, ptr %713, align 8, !tbaa !14
  %715 = getelementptr inbounds double, ptr %272, i64 %indvars.iv.next2635
  %716 = load double, ptr %715, align 8, !tbaa !14
  %717 = fmul double %714, %716
  %718 = getelementptr inbounds double, ptr %278, i64 %indvars.iv.next2635
  store double %717, ptr %718, align 8, !tbaa !14
  %indvars.iv.next2635.1 = add nuw nsw i64 %indvars.iv2634, 2
  %niter3381.next.1 = add i64 %niter3381, 2
  %niter3381.ncmp.1 = icmp eq i64 %niter3381.next.1, %unroll_iter3380
  br i1 %niter3381.ncmp.1, label %._crit_edge2318.loopexit.unr-lcssa, label %.lr.ph2317, !llvm.loop !64

._crit_edge2318.loopexit.unr-lcssa:               ; preds = %.lr.ph2317, %.lr.ph2317.preheader
  %indvars.iv2634.unr = phi i64 [ 0, %.lr.ph2317.preheader ], [ %indvars.iv.next2635.1, %.lr.ph2317 ]
  br i1 %lcmp.mod3379.not, label %._crit_edge2318, label %.lr.ph2317.epil

.lr.ph2317.epil:                                  ; preds = %._crit_edge2318.loopexit.unr-lcssa
  %719 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2634.unr
  %720 = load i32, ptr %719, align 4, !tbaa !5
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds double, ptr %268, i64 %721
  %723 = load double, ptr %722, align 8, !tbaa !14
  %724 = getelementptr inbounds double, ptr %272, i64 %indvars.iv2634.unr
  %725 = load double, ptr %724, align 8, !tbaa !14
  %726 = fmul double %723, %725
  %727 = getelementptr inbounds double, ptr %278, i64 %indvars.iv2634.unr
  store double %726, ptr %727, align 8, !tbaa !14
  br label %._crit_edge2318

._crit_edge2318:                                  ; preds = %.lr.ph2317.epil, %._crit_edge2318.loopexit.unr-lcssa, %587, %.preheader2079, %.preheader2075, %.preheader2077, %.loopexit2076
  %.32741 = phi double [ %.3, %.loopexit2076 ], [ %.21073, %.preheader2077 ], [ 1.000000e+00, %.preheader2075 ], [ 1.000000e+00, %.preheader2079 ], [ 1.000000e+00, %587 ], [ %.3, %._crit_edge2318.loopexit.unr-lcssa ], [ %.3, %.lr.ph2317.epil ]
  %728 = call double @mp_enorm(i32 noundef %.11128.lcssa, ptr noundef nonnull %278)
  %729 = icmp eq i32 %.11162, 1
  br i1 %729, label %730, label %732

730:                                              ; preds = %._crit_edge2318
  %731 = call double @mp_dmin1(double noundef %.21144, double noundef %728)
  br label %732

732:                                              ; preds = %730, %._crit_edge2318
  %.31145 = phi double [ %731, %730 ], [ %.21144, %._crit_edge2318 ]
  br i1 %247, label %.lr.ph2321.preheader, label %._crit_edge2322

.lr.ph2321.preheader:                             ; preds = %732
  br i1 %349, label %._crit_edge2322.loopexit.unr-lcssa, label %.lr.ph2321

.lr.ph2321:                                       ; preds = %.lr.ph2321.preheader, %.lr.ph2321
  %indvars.iv2639 = phi i64 [ %indvars.iv.next2640.3, %.lr.ph2321 ], [ 0, %.lr.ph2321.preheader ]
  %niter3386 = phi i64 [ %niter3386.next.3, %.lr.ph2321 ], [ 0, %.lr.ph2321.preheader ]
  %733 = getelementptr inbounds double, ptr %276, i64 %indvars.iv2639
  %734 = load double, ptr %733, align 8, !tbaa !14
  %735 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2639
  %736 = load i32, ptr %735, align 4, !tbaa !5
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds double, ptr %257, i64 %737
  store double %734, ptr %738, align 8, !tbaa !14
  %indvars.iv.next2640 = or disjoint i64 %indvars.iv2639, 1
  %739 = getelementptr inbounds double, ptr %276, i64 %indvars.iv.next2640
  %740 = load double, ptr %739, align 8, !tbaa !14
  %741 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv.next2640
  %742 = load i32, ptr %741, align 4, !tbaa !5
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds double, ptr %257, i64 %743
  store double %740, ptr %744, align 8, !tbaa !14
  %indvars.iv.next2640.1 = or disjoint i64 %indvars.iv2639, 2
  %745 = getelementptr inbounds double, ptr %276, i64 %indvars.iv.next2640.1
  %746 = load double, ptr %745, align 8, !tbaa !14
  %747 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv.next2640.1
  %748 = load i32, ptr %747, align 4, !tbaa !5
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds double, ptr %257, i64 %749
  store double %746, ptr %750, align 8, !tbaa !14
  %indvars.iv.next2640.2 = or disjoint i64 %indvars.iv2639, 3
  %751 = getelementptr inbounds double, ptr %276, i64 %indvars.iv.next2640.2
  %752 = load double, ptr %751, align 8, !tbaa !14
  %753 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv.next2640.2
  %754 = load i32, ptr %753, align 4, !tbaa !5
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds double, ptr %257, i64 %755
  store double %752, ptr %756, align 8, !tbaa !14
  %indvars.iv.next2640.3 = add nuw nsw i64 %indvars.iv2639, 4
  %niter3386.next.3 = add i64 %niter3386, 4
  %niter3386.ncmp.3 = icmp eq i64 %niter3386.next.3, %unroll_iter3385
  br i1 %niter3386.ncmp.3, label %._crit_edge2322.loopexit.unr-lcssa, label %.lr.ph2321, !llvm.loop !65

._crit_edge2322.loopexit.unr-lcssa:               ; preds = %.lr.ph2321, %.lr.ph2321.preheader
  %indvars.iv2639.unr = phi i64 [ 0, %.lr.ph2321.preheader ], [ %indvars.iv.next2640.3, %.lr.ph2321 ]
  br i1 %lcmp.mod3384.not, label %._crit_edge2322, label %.lr.ph2321.epil

.lr.ph2321.epil:                                  ; preds = %._crit_edge2322.loopexit.unr-lcssa, %.lr.ph2321.epil
  %indvars.iv2639.epil = phi i64 [ %indvars.iv.next2640.epil, %.lr.ph2321.epil ], [ %indvars.iv2639.unr, %._crit_edge2322.loopexit.unr-lcssa ]
  %epil.iter3383 = phi i64 [ %epil.iter3383.next, %.lr.ph2321.epil ], [ 0, %._crit_edge2322.loopexit.unr-lcssa ]
  %757 = getelementptr inbounds double, ptr %276, i64 %indvars.iv2639.epil
  %758 = load double, ptr %757, align 8, !tbaa !14
  %759 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2639.epil
  %760 = load i32, ptr %759, align 4, !tbaa !5
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds double, ptr %257, i64 %761
  store double %758, ptr %762, align 8, !tbaa !14
  %indvars.iv.next2640.epil = add nuw nsw i64 %indvars.iv2639.epil, 1
  %epil.iter3383.next = add i64 %epil.iter3383, 1
  %epil.iter3383.cmp.not = icmp eq i64 %epil.iter3383.next, %xtraiter3382
  br i1 %epil.iter3383.cmp.not, label %._crit_edge2322, label %.lr.ph2321.epil, !llvm.loop !66

._crit_edge2322:                                  ; preds = %._crit_edge2322.loopexit.unr-lcssa, %.lr.ph2321.epil, %732
  %763 = call i32 %0(i32 noundef %1, i32 noundef %2, ptr noundef nonnull %257, ptr noundef nonnull %282, ptr noundef null, ptr noundef %6) #11
  %764 = load i32, ptr %10, align 4, !tbaa !5
  %765 = add nsw i32 %764, 1
  store i32 %765, ptr %10, align 4, !tbaa !5
  %766 = icmp slt i32 %763, 0
  br i1 %766, label %.thread1334, label %767

767:                                              ; preds = %._crit_edge2322
  %768 = call double @mp_enorm(i32 noundef %1, ptr noundef nonnull %282)
  %769 = load double, ptr @mpfit.one, align 8, !tbaa !14
  %770 = fneg double %769
  %771 = load double, ptr @mpfit.p1, align 8, !tbaa !14
  %772 = fmul double %768, %771
  %773 = fcmp olt double %772, %.11136
  %774 = fdiv double %768, %.11136
  %775 = fneg double %774
  %776 = call double @llvm.fmuladd.f64(double %775, double %774, double %769)
  %.01147 = select i1 %773, double %776, double %770
  br i1 %247, label %.lr.ph2328, label %._crit_edge2329

.lr.ph2328:                                       ; preds = %767
  %777 = load double, ptr @mpfit.zero, align 8, !tbaa !14
  br label %778

778:                                              ; preds = %.lr.ph2328, %.loopexit3318
  %indvars.iv2659 = phi i64 [ 0, %.lr.ph2328 ], [ %indvars.iv.next2660, %.loopexit3318 ]
  %indvars.iv2657 = phi i64 [ 1, %.lr.ph2328 ], [ %indvars.iv.next2658, %.loopexit3318 ]
  %indvars.iv2646 = phi i64 [ 0, %.lr.ph2328 ], [ %indvars.iv.next2647, %.loopexit3318 ]
  %779 = getelementptr inbounds double, ptr %278, i64 %indvars.iv2659
  store double %777, ptr %779, align 8, !tbaa !14
  %780 = getelementptr inbounds i32, ptr %284, i64 %indvars.iv2659
  %781 = load i32, ptr %780, align 4, !tbaa !5
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds double, ptr %272, i64 %782
  %784 = load double, ptr %783, align 8, !tbaa !14
  %min.iters.check3228 = icmp ult i64 %indvars.iv2657, 4
  br i1 %min.iters.check3228, label %scalar.ph3227.preheader, label %vector.ph3229

vector.ph3229:                                    ; preds = %778
  %n.vec3231 = and i64 %indvars.iv2657, 9223372036854775804
  %ind.end = add nuw i64 %indvars.iv2646, %n.vec3231
  %broadcast.splatinsert = insertelement <2 x double> poison, double %784, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %785 = getelementptr double, ptr %262, i64 %indvars.iv2646
  br label %vector.body3234

vector.body3234:                                  ; preds = %vector.body3234, %vector.ph3229
  %index3235 = phi i64 [ 0, %vector.ph3229 ], [ %index.next3239, %vector.body3234 ]
  %786 = getelementptr double, ptr %785, i64 %index3235
  %787 = getelementptr inbounds i8, ptr %786, i64 16
  %wide.load = load <2 x double>, ptr %786, align 8, !tbaa !14
  %wide.load3236 = load <2 x double>, ptr %787, align 8, !tbaa !14
  %788 = getelementptr inbounds double, ptr %278, i64 %index3235
  %789 = getelementptr inbounds i8, ptr %788, i64 16
  %wide.load3237 = load <2 x double>, ptr %788, align 8, !tbaa !14
  %wide.load3238 = load <2 x double>, ptr %789, align 8, !tbaa !14
  %790 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load, <2 x double> %broadcast.splat, <2 x double> %wide.load3237)
  %791 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load3236, <2 x double> %broadcast.splat, <2 x double> %wide.load3238)
  store <2 x double> %790, ptr %788, align 8, !tbaa !14
  store <2 x double> %791, ptr %789, align 8, !tbaa !14
  %index.next3239 = add nuw i64 %index3235, 4
  %792 = icmp eq i64 %index.next3239, %n.vec3231
  br i1 %792, label %middle.block3226, label %vector.body3234, !llvm.loop !67

middle.block3226:                                 ; preds = %vector.body3234
  %cmp.n3240 = icmp eq i64 %indvars.iv2657, %n.vec3231
  br i1 %cmp.n3240, label %.loopexit3318, label %scalar.ph3227.preheader

scalar.ph3227.preheader:                          ; preds = %middle.block3226, %778
  %indvars.iv2648.ph = phi i64 [ %indvars.iv2646, %778 ], [ %ind.end, %middle.block3226 ]
  %indvars.iv2644.ph = phi i64 [ 0, %778 ], [ %n.vec3231, %middle.block3226 ]
  br label %scalar.ph3227

scalar.ph3227:                                    ; preds = %scalar.ph3227.preheader, %scalar.ph3227
  %indvars.iv2648 = phi i64 [ %indvars.iv.next2649, %scalar.ph3227 ], [ %indvars.iv2648.ph, %scalar.ph3227.preheader ]
  %indvars.iv2644 = phi i64 [ %indvars.iv.next2645, %scalar.ph3227 ], [ %indvars.iv2644.ph, %scalar.ph3227.preheader ]
  %793 = getelementptr inbounds double, ptr %262, i64 %indvars.iv2648
  %794 = load double, ptr %793, align 8, !tbaa !14
  %795 = getelementptr inbounds double, ptr %278, i64 %indvars.iv2644
  %796 = load double, ptr %795, align 8, !tbaa !14
  %797 = call double @llvm.fmuladd.f64(double %794, double %784, double %796)
  store double %797, ptr %795, align 8, !tbaa !14
  %indvars.iv.next2649 = add nuw nsw i64 %indvars.iv2648, 1
  %indvars.iv.next2645 = add nuw nsw i64 %indvars.iv2644, 1
  %exitcond2656.not = icmp eq i64 %indvars.iv.next2645, %indvars.iv2657
  br i1 %exitcond2656.not, label %.loopexit3318, label %scalar.ph3227, !llvm.loop !68

.loopexit3318:                                    ; preds = %scalar.ph3227, %middle.block3226
  %indvars.iv.next2647 = add nuw nsw i64 %indvars.iv2646, %237
  %indvars.iv.next2660 = add nuw nsw i64 %indvars.iv2659, 1
  %indvars.iv.next2658 = add nuw nsw i64 %indvars.iv2657, 1
  %exitcond2667.not = icmp eq i64 %indvars.iv.next2660, %wide.trip.count2666
  br i1 %exitcond2667.not, label %._crit_edge2329, label %778, !llvm.loop !69

._crit_edge2329:                                  ; preds = %.loopexit3318, %767
  %798 = call double @mp_enorm(i32 noundef %.11128.lcssa, ptr noundef nonnull %278)
  %799 = fmul double %.32741, %798
  %800 = fdiv double %799, %.11136
  %801 = load double, ptr %9, align 8, !tbaa !14
  %802 = fmul double %.32741, %801
  %803 = call double @sqrt(double noundef %802) #11
  %804 = fmul double %728, %803
  %805 = fdiv double %804, %.11136
  %806 = fmul double %805, %805
  %807 = load double, ptr @mpfit.p5, align 8, !tbaa !14
  %808 = fdiv double %806, %807
  %809 = call double @llvm.fmuladd.f64(double %800, double %800, double %808)
  %810 = load double, ptr @mpfit.zero, align 8, !tbaa !14
  %811 = fcmp une double %809, %810
  %812 = fdiv double %.01147, %809
  %.01109 = select i1 %811, double %812, double %810
  %813 = load double, ptr @mpfit.p25, align 8, !tbaa !14
  %814 = fcmp ugt double %.01109, %813
  br i1 %814, label %831, label %815

815:                                              ; preds = %._crit_edge2329
  %816 = call double @llvm.fmuladd.f64(double %800, double %800, double %806)
  %817 = fneg double %816
  %818 = fcmp ult double %.01147, %810
  %819 = fmul double %807, %817
  %820 = call double @llvm.fmuladd.f64(double %807, double %.01147, double %817)
  %821 = fdiv double %819, %820
  %.01103 = select i1 %818, double %821, double %807
  %822 = load double, ptr @mpfit.p1, align 8
  %823 = fmul double %768, %822
  %824 = fcmp oge double %823, %.11136
  %825 = fcmp olt double %.01103, %822
  %or.cond1310 = select i1 %824, i1 true, i1 %825
  %.11104 = select i1 %or.cond1310, double %822, double %.01103
  %826 = fdiv double %728, %822
  %827 = call double @mp_dmin1(double noundef %.31145, double noundef %826)
  %828 = fmul double %827, %.11104
  %829 = load double, ptr %9, align 8, !tbaa !14
  %830 = fdiv double %829, %.11104
  store double %830, ptr %9, align 8, !tbaa !14
  br label %839

831:                                              ; preds = %._crit_edge2329
  %832 = load double, ptr %9, align 8, !tbaa !14
  %833 = fcmp une double %832, %810
  %834 = load double, ptr @mpfit.p75, align 8
  %835 = fcmp ult double %.01109, %834
  %or.cond1312 = select i1 %833, i1 %835, i1 false
  br i1 %or.cond1312, label %839, label %836

836:                                              ; preds = %831
  %837 = fdiv double %728, %807
  %838 = fmul double %807, %832
  store double %838, ptr %9, align 8, !tbaa !14
  br label %839

839:                                              ; preds = %831, %836, %815
  %.41146 = phi double [ %828, %815 ], [ %837, %836 ], [ %.31145, %831 ]
  %840 = load double, ptr @mpfit.p0001, align 8, !tbaa !14
  %841 = fcmp ult double %.01109, %840
  br i1 %841, label %871, label %.preheader2074

.preheader2074:                                   ; preds = %839
  br i1 %247, label %.lr.ph2331.preheader, label %.preheader2073

.lr.ph2331.preheader:                             ; preds = %.preheader2074
  br i1 %350, label %.preheader2073.loopexit.unr-lcssa, label %.lr.ph2331

.preheader2073.loopexit.unr-lcssa:                ; preds = %.lr.ph2331, %.lr.ph2331.preheader
  %indvars.iv2668.unr = phi i64 [ 0, %.lr.ph2331.preheader ], [ %indvars.iv.next2669.1, %.lr.ph2331 ]
  br i1 %lcmp.mod3389.not, label %.preheader2073, label %.lr.ph2331.epil

.lr.ph2331.epil:                                  ; preds = %.preheader2073.loopexit.unr-lcssa
  %842 = getelementptr inbounds double, ptr %276, i64 %indvars.iv2668.unr
  %843 = load double, ptr %842, align 8, !tbaa !14
  %844 = getelementptr inbounds double, ptr %256, i64 %indvars.iv2668.unr
  store double %843, ptr %844, align 8, !tbaa !14
  %845 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2668.unr
  %846 = load i32, ptr %845, align 4, !tbaa !5
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds double, ptr %268, i64 %847
  %849 = load double, ptr %848, align 8, !tbaa !14
  %850 = fmul double %843, %849
  store double %850, ptr %842, align 8, !tbaa !14
  br label %.preheader2073

.preheader2073:                                   ; preds = %.lr.ph2331.epil, %.preheader2073.loopexit.unr-lcssa, %.preheader2074
  br i1 %242, label %.lr.ph2333.preheader, label %._crit_edge2334

.lr.ph2333.preheader:                             ; preds = %.preheader2073
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %239, ptr nonnull align 8 %282, i64 %238, i1 false), !tbaa !14
  br label %._crit_edge2334

.lr.ph2331:                                       ; preds = %.lr.ph2331.preheader, %.lr.ph2331
  %indvars.iv2668 = phi i64 [ %indvars.iv.next2669.1, %.lr.ph2331 ], [ 0, %.lr.ph2331.preheader ]
  %niter3391 = phi i64 [ %niter3391.next.1, %.lr.ph2331 ], [ 0, %.lr.ph2331.preheader ]
  %851 = getelementptr inbounds double, ptr %276, i64 %indvars.iv2668
  %852 = load double, ptr %851, align 8, !tbaa !14
  %853 = getelementptr inbounds double, ptr %256, i64 %indvars.iv2668
  store double %852, ptr %853, align 8, !tbaa !14
  %854 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2668
  %855 = load i32, ptr %854, align 4, !tbaa !5
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds double, ptr %268, i64 %856
  %858 = load double, ptr %857, align 8, !tbaa !14
  %859 = fmul double %852, %858
  store double %859, ptr %851, align 8, !tbaa !14
  %indvars.iv.next2669 = or disjoint i64 %indvars.iv2668, 1
  %860 = getelementptr inbounds double, ptr %276, i64 %indvars.iv.next2669
  %861 = load double, ptr %860, align 8, !tbaa !14
  %862 = getelementptr inbounds double, ptr %256, i64 %indvars.iv.next2669
  store double %861, ptr %862, align 8, !tbaa !14
  %863 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv.next2669
  %864 = load i32, ptr %863, align 4, !tbaa !5
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds double, ptr %268, i64 %865
  %867 = load double, ptr %866, align 8, !tbaa !14
  %868 = fmul double %861, %867
  store double %868, ptr %860, align 8, !tbaa !14
  %indvars.iv.next2669.1 = add nuw nsw i64 %indvars.iv2668, 2
  %niter3391.next.1 = add i64 %niter3391, 2
  %niter3391.ncmp.1 = icmp eq i64 %niter3391.next.1, %unroll_iter3390
  br i1 %niter3391.ncmp.1, label %.preheader2073.loopexit.unr-lcssa, label %.lr.ph2331, !llvm.loop !70

._crit_edge2334:                                  ; preds = %.lr.ph2333.preheader, %.preheader2073
  %869 = call double @mp_enorm(i32 noundef %.11128.lcssa, ptr noundef %276)
  %870 = add nsw i32 %.11162, 1
  br label %871

871:                                              ; preds = %._crit_edge2334, %839
  %.21163 = phi i32 [ %870, %._crit_edge2334 ], [ %.11162, %839 ]
  %.21137 = phi double [ %768, %._crit_edge2334 ], [ %.11136, %839 ]
  %.31077 = phi double [ %869, %._crit_edge2334 ], [ %.21076, %839 ]
  %872 = call double @llvm.fabs.f64(double %.01147)
  %873 = fcmp ugt double %872, %346
  %874 = fcmp ugt double %809, %346
  %or.cond1314 = or i1 %873, %874
  %875 = fmul double %347, %.31077
  br i1 %or.cond1314, label %882, label %876

876:                                              ; preds = %871
  %877 = fcmp ole double %.41146, %875
  %878 = load double, ptr @mpfit.p5, align 8, !tbaa !14
  %879 = fmul double %.01109, %878
  %880 = load double, ptr @mpfit.one, align 8, !tbaa !14
  %881 = fcmp ole double %879, %880
  %or.cond24 = and i1 %877, %881
  br i1 %or.cond24, label %.thread1334, label %884

882:                                              ; preds = %871
  %883 = fcmp ugt double %.41146, %875
  br i1 %883, label %.thread1337, label %.thread1334

884:                                              ; preds = %876
  %.51115.ph = zext i1 %881 to i32
  %.611161330 = select i1 %877, i32 2, i32 %.51115.ph
  %.not1260 = icmp eq i32 %.611161330, 0
  br i1 %.not1260, label %.thread1337, label %.thread1334

.thread1337:                                      ; preds = %882, %884
  %885 = load i32, ptr %10, align 4
  %.not1261 = icmp slt i32 %885, %.sroa.34.0
  %or.cond1317 = select i1 %336, i1 true, i1 %.not1261
  %.not1262 = icmp slt i32 %.21163, %.sroa.28.2
  %886 = select i1 %.not1262, i1 %or.cond1317, i1 false
  %.91119 = select i1 %886, i32 0, i32 5
  %887 = fcmp ole double %872, 0x3CAFFFFFF4178DA3
  %888 = fcmp ole double %809, 0x3CAFFFFFF4178DA3
  %or.cond26 = and i1 %887, %888
  br i1 %or.cond26, label %889, label %895

889:                                              ; preds = %.thread1337
  %890 = load double, ptr @mpfit.p5, align 8, !tbaa !14
  %891 = fmul double %.01109, %890
  %892 = load double, ptr @mpfit.one, align 8, !tbaa !14
  %893 = fcmp ugt double %891, %892
  br i1 %893, label %895, label %894

894:                                              ; preds = %889
  br label %895

895:                                              ; preds = %894, %889, %.thread1337
  %.101120 = phi i32 [ 6, %894 ], [ %.91119, %889 ], [ %.91119, %.thread1337 ]
  %896 = fmul double %.31077, 0x3CAFFFFFF4178DA3
  %897 = fcmp ugt double %.41146, %896
  %.111121 = select i1 %897, i32 %.101120, i32 7
  %.121122 = select i1 %586, i32 %.111121, i32 8
  %.not1263 = icmp eq i32 %.121122, 0
  br i1 %.not1263, label %898, label %.thread1334

898:                                              ; preds = %895
  %899 = load double, ptr @mpfit.p0001, align 8, !tbaa !14
  %900 = fcmp olt double %.01109, %899
  br i1 %900, label %587, label %.loopexit2085

.thread1334:                                      ; preds = %573, %.loopexit2089, %876, %882, %895, %884, %._crit_edge2322
  %.31164 = phi i32 [ %.21163, %876 ], [ %.21163, %882 ], [ %.21163, %895 ], [ %.21163, %884 ], [ %.11162, %._crit_edge2322 ], [ 1, %573 ], [ %.01161, %.loopexit2089 ]
  %.31138 = phi double [ %.21137, %876 ], [ %.21137, %882 ], [ %.21137, %895 ], [ %.21137, %884 ], [ %.11136, %._crit_edge2322 ], [ %294, %573 ], [ %.01135, %.loopexit2089 ]
  %.21134 = phi double [ %768, %876 ], [ %768, %882 ], [ %768, %895 ], [ %768, %884 ], [ %.11133, %._crit_edge2322 ], [ -1.000000e+00, %573 ], [ %.01132, %.loopexit2089 ]
  %.01126 = phi i32 [ %763, %._crit_edge2322 ], [ %763, %884 ], [ %763, %895 ], [ %763, %882 ], [ %763, %876 ], [ %381, %.loopexit2089 ], [ %381, %573 ]
  %.131123 = phi i32 [ 3, %876 ], [ 2, %882 ], [ %.121122, %895 ], [ %.611161330, %884 ], [ 0, %._crit_edge2322 ], [ 5, %573 ], [ 4, %.loopexit2089 ]
  %901 = icmp slt i32 %.01126, 0
  %spec.select = select i1 %901, i32 %.01126, i32 %.131123
  br i1 %247, label %.lr.ph2336.preheader, label %._crit_edge2337

.lr.ph2336.preheader:                             ; preds = %.thread1334
  %xtraiter3392 = and i64 %wide.trip.count2511, 3
  %902 = icmp ult i64 %341, 3
  br i1 %902, label %._crit_edge2337.loopexit.unr-lcssa, label %.lr.ph2336.preheader.new

.lr.ph2336.preheader.new:                         ; preds = %.lr.ph2336.preheader
  %unroll_iter3395 = and i64 %wide.trip.count2511, 2147483644
  br label %.lr.ph2336

.lr.ph2336:                                       ; preds = %.lr.ph2336, %.lr.ph2336.preheader.new
  %indvars.iv2676 = phi i64 [ 0, %.lr.ph2336.preheader.new ], [ %indvars.iv.next2677.3, %.lr.ph2336 ]
  %niter3396 = phi i64 [ 0, %.lr.ph2336.preheader.new ], [ %niter3396.next.3, %.lr.ph2336 ]
  %903 = getelementptr inbounds double, ptr %256, i64 %indvars.iv2676
  %904 = load double, ptr %903, align 8, !tbaa !14
  %905 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2676
  %906 = load i32, ptr %905, align 4, !tbaa !5
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds double, ptr %3, i64 %907
  store double %904, ptr %908, align 8, !tbaa !14
  %indvars.iv.next2677 = or disjoint i64 %indvars.iv2676, 1
  %909 = getelementptr inbounds double, ptr %256, i64 %indvars.iv.next2677
  %910 = load double, ptr %909, align 8, !tbaa !14
  %911 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv.next2677
  %912 = load i32, ptr %911, align 4, !tbaa !5
  %913 = sext i32 %912 to i64
  %914 = getelementptr inbounds double, ptr %3, i64 %913
  store double %910, ptr %914, align 8, !tbaa !14
  %indvars.iv.next2677.1 = or disjoint i64 %indvars.iv2676, 2
  %915 = getelementptr inbounds double, ptr %256, i64 %indvars.iv.next2677.1
  %916 = load double, ptr %915, align 8, !tbaa !14
  %917 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv.next2677.1
  %918 = load i32, ptr %917, align 4, !tbaa !5
  %919 = sext i32 %918 to i64
  %920 = getelementptr inbounds double, ptr %3, i64 %919
  store double %916, ptr %920, align 8, !tbaa !14
  %indvars.iv.next2677.2 = or disjoint i64 %indvars.iv2676, 3
  %921 = getelementptr inbounds double, ptr %256, i64 %indvars.iv.next2677.2
  %922 = load double, ptr %921, align 8, !tbaa !14
  %923 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv.next2677.2
  %924 = load i32, ptr %923, align 4, !tbaa !5
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds double, ptr %3, i64 %925
  store double %922, ptr %926, align 8, !tbaa !14
  %indvars.iv.next2677.3 = add nuw nsw i64 %indvars.iv2676, 4
  %niter3396.next.3 = add i64 %niter3396, 4
  %niter3396.ncmp.3 = icmp eq i64 %niter3396.next.3, %unroll_iter3395
  br i1 %niter3396.ncmp.3, label %._crit_edge2337.loopexit.unr-lcssa, label %.lr.ph2336, !llvm.loop !71

._crit_edge2337.loopexit.unr-lcssa:               ; preds = %.lr.ph2336, %.lr.ph2336.preheader
  %indvars.iv2676.unr = phi i64 [ 0, %.lr.ph2336.preheader ], [ %indvars.iv.next2677.3, %.lr.ph2336 ]
  %lcmp.mod3394.not = icmp eq i64 %xtraiter3392, 0
  br i1 %lcmp.mod3394.not, label %._crit_edge2337, label %.lr.ph2336.epil

.lr.ph2336.epil:                                  ; preds = %._crit_edge2337.loopexit.unr-lcssa, %.lr.ph2336.epil
  %indvars.iv2676.epil = phi i64 [ %indvars.iv.next2677.epil, %.lr.ph2336.epil ], [ %indvars.iv2676.unr, %._crit_edge2337.loopexit.unr-lcssa ]
  %epil.iter3393 = phi i64 [ %epil.iter3393.next, %.lr.ph2336.epil ], [ 0, %._crit_edge2337.loopexit.unr-lcssa ]
  %927 = getelementptr inbounds double, ptr %256, i64 %indvars.iv2676.epil
  %928 = load double, ptr %927, align 8, !tbaa !14
  %929 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2676.epil
  %930 = load i32, ptr %929, align 4, !tbaa !5
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds double, ptr %3, i64 %931
  store double %928, ptr %932, align 8, !tbaa !14
  %indvars.iv.next2677.epil = add nuw nsw i64 %indvars.iv2676.epil, 1
  %epil.iter3393.next = add i64 %epil.iter3393, 1
  %epil.iter3393.cmp.not = icmp eq i64 %epil.iter3393.next, %xtraiter3392
  br i1 %epil.iter3393.cmp.not, label %._crit_edge2337, label %.lr.ph2336.epil, !llvm.loop !72

._crit_edge2337:                                  ; preds = %._crit_edge2337.loopexit.unr-lcssa, %.lr.ph2336.epil, %.thread1334
  %933 = icmp sgt i32 %.sroa.38.1, 0
  %934 = icmp sgt i32 %spec.select, 0
  %or.cond28 = and i1 %933, %934
  br i1 %or.cond28, label %935, label %939

935:                                              ; preds = %._crit_edge2337
  %936 = call i32 %0(i32 noundef %1, i32 noundef %2, ptr noundef %3, ptr noundef nonnull %239, ptr noundef null, ptr noundef %6) #11
  %937 = load i32, ptr %10, align 4, !tbaa !5
  %938 = add nsw i32 %937, 1
  store i32 %938, ptr %10, align 4, !tbaa !5
  br label %939

939:                                              ; preds = %935, %._crit_edge2337
  br i1 %.not1249.not, label %.loopexit2072, label %.lr.ph2340.preheader

.lr.ph2340.preheader:                             ; preds = %939
  %smax2684 = call i32 @llvm.smax.i32(i32 %2, i32 1)
  %wide.trip.count2685 = zext nneg i32 %smax2684 to i64
  br label %.lr.ph2340

.lr.ph2340:                                       ; preds = %.lr.ph2340.preheader, %960
  %indvars.iv2681 = phi i64 [ 0, %.lr.ph2340.preheader ], [ %indvars.iv.next2682, %960 ]
  %.011392338 = phi i32 [ 0, %.lr.ph2340.preheader ], [ %.11140, %960 ]
  %940 = getelementptr inbounds %struct.mp_par_struct, ptr %4, i64 %indvars.iv2681
  %941 = getelementptr inbounds i8, ptr %940, i64 4
  %942 = load i32, ptr %941, align 4, !tbaa !5
  %.not1272 = icmp eq i32 %942, 0
  br i1 %.not1272, label %949, label %943

943:                                              ; preds = %.lr.ph2340
  %944 = getelementptr inbounds i8, ptr %940, i64 16
  %945 = load double, ptr %944, align 8, !tbaa !14
  %946 = getelementptr inbounds double, ptr %3, i64 %indvars.iv2681
  %947 = load double, ptr %946, align 8, !tbaa !14
  %948 = fcmp oeq double %945, %947
  br i1 %948, label %958, label %949

949:                                              ; preds = %943, %.lr.ph2340
  %950 = getelementptr inbounds i8, ptr %940, i64 8
  %951 = load i32, ptr %950, align 4, !tbaa !5
  %.not1273 = icmp eq i32 %951, 0
  br i1 %.not1273, label %960, label %952

952:                                              ; preds = %949
  %953 = getelementptr inbounds i8, ptr %940, i64 24
  %954 = load double, ptr %953, align 8, !tbaa !14
  %955 = getelementptr inbounds double, ptr %3, i64 %indvars.iv2681
  %956 = load double, ptr %955, align 8, !tbaa !14
  %957 = fcmp oeq double %954, %956
  br i1 %957, label %958, label %960

958:                                              ; preds = %952, %943
  %959 = add nsw i32 %.011392338, 1
  br label %960

960:                                              ; preds = %949, %952, %958
  %.11140 = phi i32 [ %959, %958 ], [ %.011392338, %952 ], [ %.011392338, %949 ]
  %indvars.iv.next2682 = add nuw nsw i64 %indvars.iv2681, 1
  %exitcond2686.not = icmp eq i64 %indvars.iv.next2682, %wide.trip.count2685
  br i1 %exitcond2686.not, label %.loopexit2072, label %.lr.ph2340, !llvm.loop !73

.loopexit2072:                                    ; preds = %960, %939
  %.21141 = phi i32 [ 0, %939 ], [ %.11140, %960 ]
  %.not1265 = icmp eq ptr %7, null
  br i1 %.not1265, label %.critedge.thread1388, label %961

961:                                              ; preds = %.loopexit2072
  %962 = getelementptr inbounds i8, ptr %7, i64 64
  %963 = load ptr, ptr %962, align 8, !tbaa !74
  %.not1266 = icmp eq ptr %963, null
  br i1 %.not1266, label %964, label %967

964:                                              ; preds = %961
  %965 = getelementptr inbounds i8, ptr %7, i64 56
  %966 = load ptr, ptr %965, align 8, !tbaa !76
  %.not1267 = icmp eq ptr %966, null
  br i1 %.not1267, label %.loopexit, label %967

967:                                              ; preds = %964, %961
  %968 = call i32 @mp_covar(i32 noundef %.11128.lcssa, ptr noundef %262, i32 noundef %1, ptr noundef nonnull %284, double noundef %.sroa.25.1, ptr noundef %276)
  %969 = load ptr, ptr %962, align 8, !tbaa !74
  %.not1268 = icmp eq ptr %969, null
  br i1 %.not1268, label %.loopexit2069, label %.preheader2068

.preheader2068:                                   ; preds = %967
  %970 = mul i32 %2, %2
  %971 = call i32 @llvm.umax.i32(i32 %970, i32 1)
  %umax = zext i32 %971 to i64
  %972 = shl nuw nsw i64 %umax, 3
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %969, i8 0, i64 %972, i1 false), !tbaa !14
  br i1 %247, label %.preheader2067.lr.ph, label %.loopexit2069

.preheader2067.lr.ph:                             ; preds = %.preheader2068
  %wide.trip.count2698 = zext nneg i32 %.11128.lcssa to i64
  %xtraiter3398 = and i64 %wide.trip.count2511, 1
  %973 = icmp eq i64 %341, 0
  %unroll_iter3401 = and i64 %wide.trip.count2511, 2147483646
  %lcmp.mod3400.not = icmp eq i64 %xtraiter3398, 0
  br label %.lr.ph2345

.lr.ph2345:                                       ; preds = %._crit_edge2346, %.preheader2067.lr.ph
  %indvars.iv2695 = phi i64 [ 0, %.preheader2067.lr.ph ], [ %indvars.iv.next2696, %._crit_edge2346 ]
  %974 = mul nuw nsw i64 %indvars.iv2695, %237
  %975 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2695
  %976 = load i32, ptr %975, align 4, !tbaa !5
  %977 = mul nsw i32 %976, %2
  %invariant.gep3200 = getelementptr inbounds double, ptr %262, i64 %974
  br i1 %973, label %._crit_edge2346.unr-lcssa, label %.lr.ph2345.new

.lr.ph2345.new:                                   ; preds = %.lr.ph2345, %.lr.ph2345.new
  %indvars.iv2690 = phi i64 [ %indvars.iv.next2691.1, %.lr.ph2345.new ], [ 0, %.lr.ph2345 ]
  %niter3402 = phi i64 [ %niter3402.next.1, %.lr.ph2345.new ], [ 0, %.lr.ph2345 ]
  %gep3201 = getelementptr inbounds double, ptr %invariant.gep3200, i64 %indvars.iv2690
  %978 = load double, ptr %gep3201, align 8, !tbaa !14
  %979 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2690
  %980 = load i32, ptr %979, align 4, !tbaa !5
  %981 = add nsw i32 %977, %980
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds double, ptr %969, i64 %982
  store double %978, ptr %983, align 8, !tbaa !14
  %indvars.iv.next2691 = or disjoint i64 %indvars.iv2690, 1
  %gep3201.1 = getelementptr inbounds double, ptr %invariant.gep3200, i64 %indvars.iv.next2691
  %984 = load double, ptr %gep3201.1, align 8, !tbaa !14
  %985 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv.next2691
  %986 = load i32, ptr %985, align 4, !tbaa !5
  %987 = add nsw i32 %977, %986
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds double, ptr %969, i64 %988
  store double %984, ptr %989, align 8, !tbaa !14
  %indvars.iv.next2691.1 = add nuw nsw i64 %indvars.iv2690, 2
  %niter3402.next.1 = add i64 %niter3402, 2
  %niter3402.ncmp.1 = icmp eq i64 %niter3402.next.1, %unroll_iter3401
  br i1 %niter3402.ncmp.1, label %._crit_edge2346.unr-lcssa, label %.lr.ph2345.new, !llvm.loop !77

._crit_edge2346.unr-lcssa:                        ; preds = %.lr.ph2345.new, %.lr.ph2345
  %indvars.iv2690.unr = phi i64 [ 0, %.lr.ph2345 ], [ %indvars.iv.next2691.1, %.lr.ph2345.new ]
  br i1 %lcmp.mod3400.not, label %._crit_edge2346, label %._crit_edge2346.epilog-lcssa

._crit_edge2346.epilog-lcssa:                     ; preds = %._crit_edge2346.unr-lcssa
  %gep3201.epil = getelementptr inbounds double, ptr %invariant.gep3200, i64 %indvars.iv2690.unr
  %990 = load double, ptr %gep3201.epil, align 8, !tbaa !14
  %991 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2690.unr
  %992 = load i32, ptr %991, align 4, !tbaa !5
  %993 = add nsw i32 %977, %992
  %994 = sext i32 %993 to i64
  %995 = getelementptr inbounds double, ptr %969, i64 %994
  store double %990, ptr %995, align 8, !tbaa !14
  br label %._crit_edge2346

._crit_edge2346:                                  ; preds = %._crit_edge2346.unr-lcssa, %._crit_edge2346.epilog-lcssa
  %indvars.iv.next2696 = add nuw nsw i64 %indvars.iv2695, 1
  %exitcond2699.not = icmp eq i64 %indvars.iv.next2696, %wide.trip.count2698
  br i1 %exitcond2699.not, label %.loopexit2069, label %.lr.ph2345, !llvm.loop !78

.loopexit2069:                                    ; preds = %._crit_edge2346, %.preheader2068, %967
  %996 = getelementptr inbounds i8, ptr %7, i64 56
  %997 = load ptr, ptr %996, align 8, !tbaa !76
  %.not1269 = icmp eq ptr %997, null
  br i1 %.not1269, label %.loopexit, label %.preheader2065

.preheader2065:                                   ; preds = %.loopexit2069
  %smax2700 = call i32 @llvm.smax.i32(i32 %2, i32 1)
  %998 = zext nneg i32 %smax2700 to i64
  %999 = shl nuw nsw i64 %998, 3
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %997, i8 0, i64 %999, i1 false), !tbaa !14
  br i1 %247, label %.lr.ph2351, label %.loopexit

.lr.ph2351:                                       ; preds = %.preheader2065
  %xtraiter3404 = and i64 %wide.trip.count2511, 1
  %1000 = icmp eq i64 %341, 0
  br i1 %1000, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph2351.new

.lr.ph2351.new:                                   ; preds = %.lr.ph2351
  %unroll_iter3407 = and i64 %wide.trip.count2511, 2147483646
  br label %1001

1001:                                             ; preds = %1029, %.lr.ph2351.new
  %indvars.iv2704 = phi i64 [ 0, %.lr.ph2351.new ], [ %indvars.iv.next2705.1, %1029 ]
  %niter3408 = phi i64 [ 0, %.lr.ph2351.new ], [ %niter3408.next.1, %1029 ]
  %1002 = trunc nuw nsw i64 %indvars.iv2704 to i32
  %1003 = mul i32 %334, %1002
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds double, ptr %262, i64 %1004
  %1006 = load double, ptr %1005, align 8, !tbaa !14
  %1007 = fcmp ogt double %1006, 0.000000e+00
  br i1 %1007, label %1008, label %1015

1008:                                             ; preds = %1001
  %1009 = call double @sqrt(double noundef %1006) #11
  %1010 = load ptr, ptr %996, align 8, !tbaa !76
  %1011 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2704
  %1012 = load i32, ptr %1011, align 4, !tbaa !5
  %1013 = sext i32 %1012 to i64
  %1014 = getelementptr inbounds double, ptr %1010, i64 %1013
  store double %1009, ptr %1014, align 8, !tbaa !14
  br label %1015

1015:                                             ; preds = %1008, %1001
  %indvars.iv.next2705 = or disjoint i64 %indvars.iv2704, 1
  %1016 = trunc nuw nsw i64 %indvars.iv.next2705 to i32
  %1017 = mul i32 %334, %1016
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds double, ptr %262, i64 %1018
  %1020 = load double, ptr %1019, align 8, !tbaa !14
  %1021 = fcmp ogt double %1020, 0.000000e+00
  br i1 %1021, label %1022, label %1029

1022:                                             ; preds = %1015
  %1023 = call double @sqrt(double noundef %1020) #11
  %1024 = load ptr, ptr %996, align 8, !tbaa !76
  %1025 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv.next2705
  %1026 = load i32, ptr %1025, align 4, !tbaa !5
  %1027 = sext i32 %1026 to i64
  %1028 = getelementptr inbounds double, ptr %1024, i64 %1027
  store double %1023, ptr %1028, align 8, !tbaa !14
  br label %1029

1029:                                             ; preds = %1022, %1015
  %indvars.iv.next2705.1 = add nuw nsw i64 %indvars.iv2704, 2
  %niter3408.next.1 = add i64 %niter3408, 2
  %niter3408.ncmp.1 = icmp eq i64 %niter3408.next.1, %unroll_iter3407
  br i1 %niter3408.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %1001, !llvm.loop !79

.loopexit.loopexit.unr-lcssa:                     ; preds = %1029, %.lr.ph2351
  %indvars.iv2704.unr = phi i64 [ 0, %.lr.ph2351 ], [ %indvars.iv.next2705.1, %1029 ]
  %lcmp.mod3406.not = icmp eq i64 %xtraiter3404, 0
  br i1 %lcmp.mod3406.not, label %.loopexit, label %.epil.preheader3403

.epil.preheader3403:                              ; preds = %.loopexit.loopexit.unr-lcssa
  %1030 = trunc nuw nsw i64 %indvars.iv2704.unr to i32
  %1031 = mul i32 %334, %1030
  %1032 = sext i32 %1031 to i64
  %1033 = getelementptr inbounds double, ptr %262, i64 %1032
  %1034 = load double, ptr %1033, align 8, !tbaa !14
  %1035 = fcmp ogt double %1034, 0.000000e+00
  br i1 %1035, label %1036, label %.loopexit

1036:                                             ; preds = %.epil.preheader3403
  %1037 = call double @sqrt(double noundef %1034) #11
  %1038 = load ptr, ptr %996, align 8, !tbaa !76
  %1039 = getelementptr inbounds i32, ptr %132, i64 %indvars.iv2704.unr
  %1040 = load i32, ptr %1039, align 4, !tbaa !5
  %1041 = sext i32 %1040 to i64
  %1042 = getelementptr inbounds double, ptr %1038, i64 %1041
  store double %1037, ptr %1042, align 8, !tbaa !14
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit.unr-lcssa, %1036, %.epil.preheader3403, %.preheader2065, %964, %.loopexit2069
  %1043 = getelementptr inbounds i8, ptr %7, i64 72
  %1044 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %1043, ptr noundef nonnull dereferenceable(1) @.str) #11
  %1045 = call double @mp_dmax1(double noundef %.31138, double noundef %.21134)
  %1046 = fmul double %1045, %1045
  store double %1046, ptr %7, align 8, !tbaa !80
  %1047 = getelementptr inbounds i8, ptr %7, i64 8
  store double %295, ptr %1047, align 8, !tbaa !81
  %1048 = getelementptr inbounds i8, ptr %7, i64 24
  store i32 %spec.select, ptr %1048, align 8, !tbaa !82
  %1049 = getelementptr inbounds i8, ptr %7, i64 16
  store i32 %.31164, ptr %1049, align 8, !tbaa !83
  %1050 = load i32, ptr %10, align 4, !tbaa !5
  %1051 = getelementptr inbounds i8, ptr %7, i64 20
  store i32 %1050, ptr %1051, align 4, !tbaa !84
  %1052 = getelementptr inbounds i8, ptr %7, i64 28
  store i32 %2, ptr %1052, align 4, !tbaa !85
  %1053 = getelementptr inbounds i8, ptr %7, i64 32
  store i32 %.11128.lcssa, ptr %1053, align 8, !tbaa !86
  %1054 = getelementptr inbounds i8, ptr %7, i64 36
  store i32 %.21141, ptr %1054, align 4, !tbaa !87
  %1055 = getelementptr inbounds i8, ptr %7, i64 40
  store i32 %1, ptr %1055, align 8, !tbaa !88
  %1056 = getelementptr inbounds i8, ptr %7, i64 48
  %1057 = load ptr, ptr %1056, align 8, !tbaa !89
  %.not1270 = icmp ne ptr %1057, null
  %or.cond2370 = and i1 %.not1270, %242
  br i1 %or.cond2370, label %.lr.ph2353.preheader, label %.critedge.thread1388

.lr.ph2353.preheader:                             ; preds = %.loopexit
  %1058 = ptrtoint ptr %1057 to i64
  %min.iters.check3307 = icmp ult i32 %1, 6
  %1059 = sub i64 %1058, %240
  %diff.check = icmp ult i64 %1059, 32
  %or.cond3320 = or i1 %min.iters.check3307, %diff.check
  br i1 %or.cond3320, label %.lr.ph2353.preheader3321, label %vector.ph3308

vector.ph3308:                                    ; preds = %.lr.ph2353.preheader
  %n.vec3310 = and i64 %237, 2147483644
  br label %vector.body3312

vector.body3312:                                  ; preds = %vector.body3312, %vector.ph3308
  %index3313 = phi i64 [ 0, %vector.ph3308 ], [ %index.next3316, %vector.body3312 ]
  %1060 = getelementptr inbounds double, ptr %239, i64 %index3313
  %1061 = getelementptr inbounds i8, ptr %1060, i64 16
  %wide.load3314 = load <2 x double>, ptr %1060, align 8, !tbaa !14
  %wide.load3315 = load <2 x double>, ptr %1061, align 8, !tbaa !14
  %1062 = getelementptr inbounds double, ptr %1057, i64 %index3313
  %1063 = getelementptr inbounds i8, ptr %1062, i64 16
  store <2 x double> %wide.load3314, ptr %1062, align 8, !tbaa !14
  store <2 x double> %wide.load3315, ptr %1063, align 8, !tbaa !14
  %index.next3316 = add nuw i64 %index3313, 4
  %1064 = icmp eq i64 %index.next3316, %n.vec3310
  br i1 %1064, label %middle.block3305, label %vector.body3312, !llvm.loop !90

middle.block3305:                                 ; preds = %vector.body3312
  %cmp.n3317 = icmp eq i64 %n.vec3310, %237
  br i1 %cmp.n3317, label %.critedge.thread1388, label %.lr.ph2353.preheader3321

.lr.ph2353.preheader3321:                         ; preds = %middle.block3305, %.lr.ph2353.preheader
  %indvars.iv2709.ph = phi i64 [ 0, %.lr.ph2353.preheader ], [ %n.vec3310, %middle.block3305 ]
  %xtraiter3409 = and i64 %237, 3
  %lcmp.mod3410.not = icmp eq i64 %xtraiter3409, 0
  br i1 %lcmp.mod3410.not, label %.lr.ph2353.prol.loopexit, label %.lr.ph2353.prol

.lr.ph2353.prol:                                  ; preds = %.lr.ph2353.preheader3321, %.lr.ph2353.prol
  %indvars.iv2709.prol = phi i64 [ %indvars.iv.next2710.prol, %.lr.ph2353.prol ], [ %indvars.iv2709.ph, %.lr.ph2353.preheader3321 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph2353.prol ], [ 0, %.lr.ph2353.preheader3321 ]
  %1065 = getelementptr inbounds double, ptr %239, i64 %indvars.iv2709.prol
  %1066 = load double, ptr %1065, align 8, !tbaa !14
  %1067 = getelementptr inbounds double, ptr %1057, i64 %indvars.iv2709.prol
  store double %1066, ptr %1067, align 8, !tbaa !14
  %indvars.iv.next2710.prol = add nuw nsw i64 %indvars.iv2709.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter3409
  br i1 %prol.iter.cmp.not, label %.lr.ph2353.prol.loopexit, label %.lr.ph2353.prol, !llvm.loop !91

.lr.ph2353.prol.loopexit:                         ; preds = %.lr.ph2353.prol, %.lr.ph2353.preheader3321
  %indvars.iv2709.unr = phi i64 [ %indvars.iv2709.ph, %.lr.ph2353.preheader3321 ], [ %indvars.iv.next2710.prol, %.lr.ph2353.prol ]
  %1068 = sub nsw i64 %indvars.iv2709.ph, %237
  %1069 = icmp ugt i64 %1068, -4
  br i1 %1069, label %.critedge.thread1388, label %.lr.ph2353

.lr.ph2353:                                       ; preds = %.lr.ph2353.prol.loopexit, %.lr.ph2353
  %indvars.iv2709 = phi i64 [ %indvars.iv.next2710.3, %.lr.ph2353 ], [ %indvars.iv2709.unr, %.lr.ph2353.prol.loopexit ]
  %1070 = getelementptr inbounds double, ptr %239, i64 %indvars.iv2709
  %1071 = load double, ptr %1070, align 8, !tbaa !14
  %1072 = getelementptr inbounds double, ptr %1057, i64 %indvars.iv2709
  store double %1071, ptr %1072, align 8, !tbaa !14
  %indvars.iv.next2710 = add nuw nsw i64 %indvars.iv2709, 1
  %1073 = getelementptr inbounds double, ptr %239, i64 %indvars.iv.next2710
  %1074 = load double, ptr %1073, align 8, !tbaa !14
  %1075 = getelementptr inbounds double, ptr %1057, i64 %indvars.iv.next2710
  store double %1074, ptr %1075, align 8, !tbaa !14
  %indvars.iv.next2710.1 = add nuw nsw i64 %indvars.iv2709, 2
  %1076 = getelementptr inbounds double, ptr %239, i64 %indvars.iv.next2710.1
  %1077 = load double, ptr %1076, align 8, !tbaa !14
  %1078 = getelementptr inbounds double, ptr %1057, i64 %indvars.iv.next2710.1
  store double %1077, ptr %1078, align 8, !tbaa !14
  %indvars.iv.next2710.2 = add nuw nsw i64 %indvars.iv2709, 3
  %1079 = getelementptr inbounds double, ptr %239, i64 %indvars.iv.next2710.2
  %1080 = load double, ptr %1079, align 8, !tbaa !14
  %1081 = getelementptr inbounds double, ptr %1057, i64 %indvars.iv.next2710.2
  store double %1080, ptr %1081, align 8, !tbaa !14
  %indvars.iv.next2710.3 = add nuw nsw i64 %indvars.iv2709, 4
  %exitcond2713.not.3 = icmp eq i64 %indvars.iv.next2710.3, %237
  br i1 %exitcond2713.not.3, label %.critedge.thread1388, label %.lr.ph2353, !llvm.loop !92

.critedge.thread1388:                             ; preds = %._crit_edge2240, %._crit_edge2291, %.lr.ph2353.prol.loopexit, %.lr.ph2353, %middle.block3305, %.loopexit, %.loopexit2072
  %.1511251414 = phi i32 [ %spec.select, %.loopexit ], [ %spec.select, %.loopexit2072 ], [ %spec.select, %middle.block3305 ], [ %spec.select, %.lr.ph2353 ], [ %spec.select, %.lr.ph2353.prol.loopexit ], [ -16, %._crit_edge2291 ], [ 0, %._crit_edge2240 ]
  call void @free(ptr noundef nonnull %239) #11
  call void @free(ptr noundef nonnull %245) #11
  br label %.thread2815

1082:                                             ; preds = %._crit_edge2227, %._crit_edge2197, %._crit_edge2200, %._crit_edge2203, %._crit_edge2206, %._crit_edge2209, %._crit_edge2212, %._crit_edge2215, %._crit_edge2218, %._crit_edge2221, %._crit_edge2224, %._crit_edge2197.thread
  %.010441437.ph = phi ptr [ null, %._crit_edge2197.thread ], [ %284, %._crit_edge2224 ], [ null, %._crit_edge2221 ], [ null, %._crit_edge2218 ], [ null, %._crit_edge2215 ], [ null, %._crit_edge2212 ], [ null, %._crit_edge2209 ], [ null, %._crit_edge2206 ], [ null, %._crit_edge2203 ], [ null, %._crit_edge2200 ], [ null, %._crit_edge2197 ], [ %284, %._crit_edge2227 ]
  %.010451436.ph = phi ptr [ null, %._crit_edge2197.thread ], [ null, %._crit_edge2224 ], [ null, %._crit_edge2221 ], [ null, %._crit_edge2218 ], [ null, %._crit_edge2215 ], [ null, %._crit_edge2212 ], [ null, %._crit_edge2209 ], [ null, %._crit_edge2206 ], [ null, %._crit_edge2203 ], [ null, %._crit_edge2200 ], [ null, %._crit_edge2197 ], [ %288, %._crit_edge2227 ]
  %.010461435.ph = phi ptr [ null, %._crit_edge2197.thread ], [ %282, %._crit_edge2224 ], [ %282, %._crit_edge2221 ], [ null, %._crit_edge2218 ], [ null, %._crit_edge2215 ], [ null, %._crit_edge2212 ], [ null, %._crit_edge2209 ], [ null, %._crit_edge2206 ], [ null, %._crit_edge2203 ], [ null, %._crit_edge2200 ], [ null, %._crit_edge2197 ], [ %282, %._crit_edge2227 ]
  %.010471434.ph = phi ptr [ null, %._crit_edge2197.thread ], [ %278, %._crit_edge2224 ], [ %278, %._crit_edge2221 ], [ %278, %._crit_edge2218 ], [ null, %._crit_edge2215 ], [ null, %._crit_edge2212 ], [ null, %._crit_edge2209 ], [ null, %._crit_edge2206 ], [ null, %._crit_edge2203 ], [ null, %._crit_edge2200 ], [ null, %._crit_edge2197 ], [ %278, %._crit_edge2227 ]
  %.010481433.ph = phi ptr [ null, %._crit_edge2197.thread ], [ %276, %._crit_edge2224 ], [ %276, %._crit_edge2221 ], [ %276, %._crit_edge2218 ], [ %276, %._crit_edge2215 ], [ null, %._crit_edge2212 ], [ null, %._crit_edge2209 ], [ null, %._crit_edge2206 ], [ null, %._crit_edge2203 ], [ null, %._crit_edge2200 ], [ null, %._crit_edge2197 ], [ %276, %._crit_edge2227 ]
  %.010491432.ph = phi ptr [ null, %._crit_edge2197.thread ], [ %272, %._crit_edge2224 ], [ %272, %._crit_edge2221 ], [ %272, %._crit_edge2218 ], [ %272, %._crit_edge2215 ], [ %272, %._crit_edge2212 ], [ null, %._crit_edge2209 ], [ null, %._crit_edge2206 ], [ null, %._crit_edge2203 ], [ null, %._crit_edge2200 ], [ null, %._crit_edge2197 ], [ %272, %._crit_edge2227 ]
  %.010501431.ph = phi ptr [ null, %._crit_edge2197.thread ], [ %268, %._crit_edge2224 ], [ %268, %._crit_edge2221 ], [ %268, %._crit_edge2218 ], [ %268, %._crit_edge2215 ], [ %268, %._crit_edge2212 ], [ %268, %._crit_edge2209 ], [ null, %._crit_edge2206 ], [ null, %._crit_edge2203 ], [ null, %._crit_edge2200 ], [ null, %._crit_edge2197 ], [ %268, %._crit_edge2227 ]
  %.010511430.ph = phi ptr [ null, %._crit_edge2197.thread ], [ %262, %._crit_edge2224 ], [ %262, %._crit_edge2221 ], [ %262, %._crit_edge2218 ], [ %262, %._crit_edge2215 ], [ %262, %._crit_edge2212 ], [ %262, %._crit_edge2209 ], [ %262, %._crit_edge2206 ], [ null, %._crit_edge2203 ], [ null, %._crit_edge2200 ], [ null, %._crit_edge2197 ], [ %262, %._crit_edge2227 ]
  %.010521429.ph = phi ptr [ null, %._crit_edge2197.thread ], [ %257, %._crit_edge2224 ], [ %257, %._crit_edge2221 ], [ %257, %._crit_edge2218 ], [ %257, %._crit_edge2215 ], [ %257, %._crit_edge2212 ], [ %257, %._crit_edge2209 ], [ %257, %._crit_edge2206 ], [ %257, %._crit_edge2203 ], [ null, %._crit_edge2200 ], [ null, %._crit_edge2197 ], [ %257, %._crit_edge2227 ]
  %.010531428.ph = phi ptr [ null, %._crit_edge2197.thread ], [ %256, %._crit_edge2224 ], [ %256, %._crit_edge2221 ], [ %256, %._crit_edge2218 ], [ %256, %._crit_edge2215 ], [ %256, %._crit_edge2212 ], [ %256, %._crit_edge2209 ], [ %256, %._crit_edge2206 ], [ %256, %._crit_edge2203 ], [ %256, %._crit_edge2200 ], [ null, %._crit_edge2197 ], [ %256, %._crit_edge2227 ]
  %.1511251414.ph = phi i32 [ -20, %._crit_edge2197.thread ], [ -20, %._crit_edge2224 ], [ -20, %._crit_edge2221 ], [ -20, %._crit_edge2218 ], [ -20, %._crit_edge2215 ], [ -20, %._crit_edge2212 ], [ -20, %._crit_edge2209 ], [ -20, %._crit_edge2206 ], [ -20, %._crit_edge2203 ], [ -20, %._crit_edge2200 ], [ -20, %._crit_edge2197 ], [ 0, %._crit_edge2227 ]
  tail call void @free(ptr noundef nonnull %239) #11
  tail call void @free(ptr noundef nonnull %245) #11
  %.not1286 = icmp eq ptr %.010531428.ph, null
  br i1 %.not1286, label %1083, label %.thread2815

.thread2815:                                      ; preds = %.critedge.thread1388, %1082
  %.01044143727562838 = phi ptr [ %.010441437.ph, %1082 ], [ %284, %.critedge.thread1388 ]
  %.01045143627582837 = phi ptr [ %.010451436.ph, %1082 ], [ %288, %.critedge.thread1388 ]
  %.01046143527602836 = phi ptr [ %.010461435.ph, %1082 ], [ %282, %.critedge.thread1388 ]
  %.01047143427622835 = phi ptr [ %.010471434.ph, %1082 ], [ %278, %.critedge.thread1388 ]
  %.01048143327642834 = phi ptr [ %.010481433.ph, %1082 ], [ %276, %.critedge.thread1388 ]
  %.01049143227662833 = phi ptr [ %.010491432.ph, %1082 ], [ %272, %.critedge.thread1388 ]
  %.01050143127682832 = phi ptr [ %.010501431.ph, %1082 ], [ %268, %.critedge.thread1388 ]
  %.01051143027702831 = phi ptr [ %.010511430.ph, %1082 ], [ %262, %.critedge.thread1388 ]
  %.01052142927722830 = phi ptr [ %.010521429.ph, %1082 ], [ %257, %.critedge.thread1388 ]
  %.01053142827742829 = phi ptr [ %.010531428.ph, %1082 ], [ %256, %.critedge.thread1388 ]
  %.151125141427772828 = phi i32 [ %.1511251414.ph, %1082 ], [ %.1511251414, %.critedge.thread1388 ]
  call void @free(ptr noundef nonnull %.01053142827742829) #11
  br label %1083

1083:                                             ; preds = %.thread2815, %1082
  %.01044143727562814 = phi ptr [ %.01044143727562838, %.thread2815 ], [ %.010441437.ph, %1082 ]
  %.01045143627582813 = phi ptr [ %.01045143627582837, %.thread2815 ], [ %.010451436.ph, %1082 ]
  %.01046143527602812 = phi ptr [ %.01046143527602836, %.thread2815 ], [ %.010461435.ph, %1082 ]
  %.01047143427622811 = phi ptr [ %.01047143427622835, %.thread2815 ], [ %.010471434.ph, %1082 ]
  %.01048143327642810 = phi ptr [ %.01048143327642834, %.thread2815 ], [ %.010481433.ph, %1082 ]
  %.01049143227662809 = phi ptr [ %.01049143227662833, %.thread2815 ], [ %.010491432.ph, %1082 ]
  %.01050143127682808 = phi ptr [ %.01050143127682832, %.thread2815 ], [ %.010501431.ph, %1082 ]
  %.01051143027702807 = phi ptr [ %.01051143027702831, %.thread2815 ], [ %.010511430.ph, %1082 ]
  %.01052142927722806 = phi ptr [ %.01052142927722830, %.thread2815 ], [ %.010521429.ph, %1082 ]
  %.151125141427772805 = phi i32 [ %.151125141427772828, %.thread2815 ], [ %.1511251414.ph, %1082 ]
  %.not1287 = icmp eq ptr %.01052142927722806, null
  br i1 %.not1287, label %1085, label %1084

1084:                                             ; preds = %1083
  call void @free(ptr noundef nonnull %.01052142927722806) #11
  br label %1085

1085:                                             ; preds = %1084, %1083
  %.not1288 = icmp eq ptr %.01051143027702807, null
  br i1 %.not1288, label %1087, label %1086

1086:                                             ; preds = %1085
  call void @free(ptr noundef nonnull %.01051143027702807) #11
  br label %1087

1087:                                             ; preds = %1086, %1085
  %.not1289 = icmp eq ptr %.01050143127682808, null
  br i1 %.not1289, label %1089, label %1088

1088:                                             ; preds = %1087
  call void @free(ptr noundef nonnull %.01050143127682808) #11
  br label %1089

1089:                                             ; preds = %1088, %1087
  %.not1290 = icmp eq ptr %.01049143227662809, null
  br i1 %.not1290, label %1091, label %1090

1090:                                             ; preds = %1089
  call void @free(ptr noundef nonnull %.01049143227662809) #11
  br label %1091

1091:                                             ; preds = %1090, %1089
  %.not1291 = icmp eq ptr %.01048143327642810, null
  br i1 %.not1291, label %1093, label %1092

1092:                                             ; preds = %1091
  call void @free(ptr noundef nonnull %.01048143327642810) #11
  br label %1093

1093:                                             ; preds = %1092, %1091
  %.not1292 = icmp eq ptr %.01047143427622811, null
  br i1 %.not1292, label %1095, label %1094

1094:                                             ; preds = %1093
  call void @free(ptr noundef nonnull %.01047143427622811) #11
  br label %1095

1095:                                             ; preds = %1094, %1093
  %.not1293 = icmp eq ptr %.01046143527602812, null
  br i1 %.not1293, label %1097, label %1096

1096:                                             ; preds = %1095
  call void @free(ptr noundef nonnull %.01046143527602812) #11
  br label %1097

1097:                                             ; preds = %1096, %1095
  %.not1294 = icmp eq ptr %.01044143727562814, null
  br i1 %.not1294, label %.thread1789.thread1844.thread, label %.thread1789.thread1844.sink.split

.thread1789.thread1844.sink.split:                ; preds = %1097, %._crit_edge2194
  %.sink = phi ptr [ %239, %._crit_edge2194 ], [ %.01044143727562814, %1097 ]
  %.151125136514841509157215951652167317241743178818051870.ph = phi i32 [ -20, %._crit_edge2194 ], [ %.151125141427772805, %1097 ]
  %.01045138614641528155416121636168817101756177618171858.ph = phi ptr [ null, %._crit_edge2194 ], [ %.01045143627582813, %1097 ]
  call void @free(ptr noundef nonnull %.sink) #11
  br label %.thread1789.thread1844.thread

.thread1789.thread1844.thread:                    ; preds = %187, %169, %178, %236, %.loopexit2114, %._crit_edge2185, %._crit_edge2182, %._crit_edge2179, %._crit_edge2176, %._crit_edge2173, %1097, %._crit_edge2179.thread, %._crit_edge2182.thread, %._crit_edge2185.thread, %.thread1789.thread1844.sink.split, %.loopexit2123, %._crit_edge2161, %._crit_edge2158, %._crit_edge2155, %._crit_edge2152, %._crit_edge2149
  %.010451386146415281554161216361688171017561776181718583000 = phi ptr [ null, %._crit_edge2149 ], [ null, %._crit_edge2152 ], [ null, %._crit_edge2155 ], [ null, %._crit_edge2158 ], [ null, %._crit_edge2161 ], [ null, %.loopexit2123 ], [ %.01045143627582813, %1097 ], [ null, %._crit_edge2173 ], [ null, %._crit_edge2176 ], [ null, %._crit_edge2179 ], [ null, %._crit_edge2182 ], [ null, %._crit_edge2185 ], [ null, %.loopexit2114 ], [ null, %236 ], [ null, %._crit_edge2179.thread ], [ null, %._crit_edge2182.thread ], [ null, %._crit_edge2185.thread ], [ %.01045138614641528155416121636168817101756177618171858.ph, %.thread1789.thread1844.sink.split ], [ null, %178 ], [ null, %169 ], [ null, %187 ]
  %.010561376147315201561160616411684171317541777181618592998 = phi ptr [ null, %._crit_edge2149 ], [ null, %._crit_edge2152 ], [ null, %._crit_edge2155 ], [ null, %._crit_edge2158 ], [ null, %._crit_edge2161 ], [ %109, %.loopexit2123 ], [ %109, %1097 ], [ %109, %._crit_edge2173 ], [ %109, %._crit_edge2176 ], [ %109, %._crit_edge2179 ], [ %109, %._crit_edge2182 ], [ %109, %._crit_edge2185 ], [ %109, %.loopexit2114 ], [ %109, %236 ], [ %109, %._crit_edge2179.thread ], [ %109, %._crit_edge2182.thread ], [ %109, %._crit_edge2185.thread ], [ %109, %.thread1789.thread1844.sink.split ], [ %109, %178 ], [ %109, %169 ], [ %109, %187 ]
  %.010571375147415191562160516421683171417531778181518602996 = phi ptr [ null, %._crit_edge2149 ], [ null, %._crit_edge2152 ], [ null, %._crit_edge2155 ], [ null, %._crit_edge2158 ], [ %105, %._crit_edge2161 ], [ %105, %.loopexit2123 ], [ %105, %1097 ], [ %105, %._crit_edge2173 ], [ %105, %._crit_edge2176 ], [ %105, %._crit_edge2179 ], [ %105, %._crit_edge2182 ], [ %105, %._crit_edge2185 ], [ %105, %.loopexit2114 ], [ %105, %236 ], [ %105, %._crit_edge2179.thread ], [ %105, %._crit_edge2182.thread ], [ %105, %._crit_edge2185.thread ], [ %105, %.thread1789.thread1844.sink.split ], [ %105, %178 ], [ %105, %169 ], [ %105, %187 ]
  %.010581374147515181563160416431682171517521779181418612994 = phi ptr [ null, %._crit_edge2149 ], [ null, %._crit_edge2152 ], [ null, %._crit_edge2155 ], [ %101, %._crit_edge2158 ], [ %101, %._crit_edge2161 ], [ %101, %.loopexit2123 ], [ %101, %1097 ], [ %101, %._crit_edge2173 ], [ %101, %._crit_edge2176 ], [ %101, %._crit_edge2179 ], [ %101, %._crit_edge2182 ], [ %101, %._crit_edge2185 ], [ %101, %.loopexit2114 ], [ %101, %236 ], [ %101, %._crit_edge2179.thread ], [ %101, %._crit_edge2182.thread ], [ %101, %._crit_edge2185.thread ], [ %101, %.thread1789.thread1844.sink.split ], [ %101, %178 ], [ %101, %169 ], [ %101, %187 ]
  %.110601373147615171564160316441681171617511780181318622992 = phi ptr [ null, %._crit_edge2149 ], [ null, %._crit_edge2152 ], [ null, %._crit_edge2155 ], [ null, %._crit_edge2158 ], [ null, %._crit_edge2161 ], [ null, %.loopexit2123 ], [ %.01059, %1097 ], [ null, %._crit_edge2173 ], [ null, %._crit_edge2176 ], [ %195, %._crit_edge2179 ], [ %195, %._crit_edge2182 ], [ %195, %._crit_edge2185 ], [ %.01059, %.loopexit2114 ], [ %.01059, %236 ], [ %195, %._crit_edge2179.thread ], [ %195, %._crit_edge2182.thread ], [ %195, %._crit_edge2185.thread ], [ %.01059, %.thread1789.thread1844.sink.split ], [ null, %178 ], [ null, %169 ], [ null, %187 ]
  %.110621372147715161565160216451680171717501781181218632990 = phi ptr [ null, %._crit_edge2149 ], [ null, %._crit_edge2152 ], [ null, %._crit_edge2155 ], [ null, %._crit_edge2158 ], [ null, %._crit_edge2161 ], [ null, %.loopexit2123 ], [ %.01061, %1097 ], [ null, %._crit_edge2173 ], [ null, %._crit_edge2176 ], [ null, %._crit_edge2179 ], [ %202, %._crit_edge2182 ], [ %200, %._crit_edge2185 ], [ %.01061, %.loopexit2114 ], [ %.01061, %236 ], [ null, %._crit_edge2179.thread ], [ %200, %._crit_edge2182.thread ], [ %202, %._crit_edge2185.thread ], [ %.01061, %.thread1789.thread1844.sink.split ], [ null, %178 ], [ null, %169 ], [ null, %187 ]
  %.010631371147815151566160116461679171817491782181118642988 = phi ptr [ null, %._crit_edge2149 ], [ null, %._crit_edge2152 ], [ null, %._crit_edge2155 ], [ null, %._crit_edge2158 ], [ null, %._crit_edge2161 ], [ null, %.loopexit2123 ], [ %132, %1097 ], [ %132, %._crit_edge2173 ], [ %132, %._crit_edge2176 ], [ %132, %._crit_edge2179 ], [ %132, %._crit_edge2182 ], [ %132, %._crit_edge2185 ], [ %132, %.loopexit2114 ], [ %132, %236 ], [ %132, %._crit_edge2179.thread ], [ %132, %._crit_edge2182.thread ], [ %132, %._crit_edge2185.thread ], [ %132, %.thread1789.thread1844.sink.split ], [ %132, %178 ], [ %132, %169 ], [ %132, %187 ]
  %.010641370147915141567160016471678171917481783181018652986 = phi ptr [ null, %._crit_edge2149 ], [ null, %._crit_edge2152 ], [ %97, %._crit_edge2155 ], [ %97, %._crit_edge2158 ], [ %97, %._crit_edge2161 ], [ %97, %.loopexit2123 ], [ %97, %1097 ], [ %97, %._crit_edge2173 ], [ %97, %._crit_edge2176 ], [ %97, %._crit_edge2179 ], [ %97, %._crit_edge2182 ], [ %97, %._crit_edge2185 ], [ %97, %.loopexit2114 ], [ %97, %236 ], [ %97, %._crit_edge2179.thread ], [ %97, %._crit_edge2182.thread ], [ %97, %._crit_edge2185.thread ], [ %97, %.thread1789.thread1844.sink.split ], [ %97, %178 ], [ %97, %169 ], [ %97, %187 ]
  %.110661369148015131568159916481677172017471784180918662984 = phi ptr [ null, %._crit_edge2149 ], [ null, %._crit_edge2152 ], [ null, %._crit_edge2155 ], [ null, %._crit_edge2158 ], [ null, %._crit_edge2161 ], [ null, %.loopexit2123 ], [ %.01065, %1097 ], [ null, %._crit_edge2173 ], [ null, %._crit_edge2176 ], [ null, %._crit_edge2179 ], [ null, %._crit_edge2182 ], [ %210, %._crit_edge2185 ], [ %.01065, %.loopexit2114 ], [ %.01065, %236 ], [ null, %._crit_edge2179.thread ], [ null, %._crit_edge2182.thread ], [ %205, %._crit_edge2185.thread ], [ %.01065, %.thread1789.thread1844.sink.split ], [ null, %178 ], [ null, %169 ], [ null, %187 ]
  %.110681368148115121569159816491676172117461785180818672982 = phi ptr [ null, %._crit_edge2149 ], [ null, %._crit_edge2152 ], [ null, %._crit_edge2155 ], [ null, %._crit_edge2158 ], [ null, %._crit_edge2161 ], [ null, %.loopexit2123 ], [ %.01067, %1097 ], [ null, %._crit_edge2173 ], [ null, %._crit_edge2176 ], [ null, %._crit_edge2179 ], [ null, %._crit_edge2182 ], [ null, %._crit_edge2185 ], [ %.01067, %.loopexit2114 ], [ %.01067, %236 ], [ null, %._crit_edge2179.thread ], [ null, %._crit_edge2182.thread ], [ null, %._crit_edge2185.thread ], [ %.01067, %.thread1789.thread1844.sink.split ], [ null, %178 ], [ null, %169 ], [ null, %187 ]
  %.1511251365148415091572159516521673172417431788180518702977 = phi i32 [ -20, %._crit_edge2149 ], [ -20, %._crit_edge2152 ], [ -20, %._crit_edge2155 ], [ -20, %._crit_edge2158 ], [ -20, %._crit_edge2161 ], [ -20, %.loopexit2123 ], [ %.151125141427772805, %1097 ], [ -19, %._crit_edge2173 ], [ -20, %._crit_edge2176 ], [ -20, %._crit_edge2179 ], [ -20, %._crit_edge2182 ], [ -20, %._crit_edge2185 ], [ -24, %.loopexit2114 ], [ -20, %236 ], [ -20, %._crit_edge2179.thread ], [ -20, %._crit_edge2182.thread ], [ -20, %._crit_edge2185.thread ], [ %.151125136514841509157215951652167317241743178818051870.ph, %.thread1789.thread1844.sink.split ], [ -21, %178 ], [ -21, %169 ], [ -22, %187 ]
  call void @free(ptr noundef nonnull %calloc) #11
  call void @free(ptr noundef nonnull %89) #11
  %.not1297 = icmp eq ptr %93, null
  br i1 %.not1297, label %1099, label %1098

1098:                                             ; preds = %.thread1789.thread1844.thread
  call void @free(ptr noundef nonnull %93) #11
  br label %1099

1099:                                             ; preds = %1098, %.thread1789.thread1844.thread
  %.not1298 = icmp eq ptr %.010641370147915141567160016471678171917481783181018652986, null
  br i1 %.not1298, label %1101, label %1100

1100:                                             ; preds = %1099
  call void @free(ptr noundef nonnull %.010641370147915141567160016471678171917481783181018652986) #11
  br label %1101

1101:                                             ; preds = %1100, %1099
  %.not1299 = icmp eq ptr %.010581374147515181563160416431682171517521779181418612994, null
  br i1 %.not1299, label %1103, label %1102

1102:                                             ; preds = %1101
  call void @free(ptr noundef nonnull %.010581374147515181563160416431682171517521779181418612994) #11
  br label %1103

1103:                                             ; preds = %1102, %1101
  %.not1300 = icmp eq ptr %.010571375147415191562160516421683171417531778181518602996, null
  br i1 %.not1300, label %1105, label %1104

1104:                                             ; preds = %1103
  call void @free(ptr noundef nonnull %.010571375147415191562160516421683171417531778181518602996) #11
  br label %1105

1105:                                             ; preds = %1104, %1103
  %.not1301 = icmp eq ptr %.010561376147315201561160616411684171317541777181618592998, null
  br i1 %.not1301, label %1107, label %1106

1106:                                             ; preds = %1105
  call void @free(ptr noundef nonnull %.010561376147315201561160616411684171317541777181618592998) #11
  br label %1107

1107:                                             ; preds = %1106, %1105
  %.not1302 = icmp eq ptr %.010631371147815151566160116461679171817491782181118642988, null
  br i1 %.not1302, label %1109, label %1108

1108:                                             ; preds = %1107
  call void @free(ptr noundef nonnull %.010631371147815151566160116461679171817491782181118642988) #11
  br label %1109

1109:                                             ; preds = %1108, %1107
  %.not1303 = icmp eq ptr %.110621372147715161565160216451680171717501781181218632990, null
  br i1 %.not1303, label %1111, label %1110

1110:                                             ; preds = %1109
  call void @free(ptr noundef nonnull %.110621372147715161565160216451680171717501781181218632990) #11
  br label %1111

1111:                                             ; preds = %1110, %1109
  %.not1304 = icmp eq ptr %.110601373147615171564160316441681171617511780181318622992, null
  br i1 %.not1304, label %1113, label %1112

1112:                                             ; preds = %1111
  call void @free(ptr noundef nonnull %.110601373147615171564160316441681171617511780181318622992) #11
  br label %1113

1113:                                             ; preds = %1112, %1111
  %.not1305 = icmp eq ptr %.110681368148115121569159816491676172117461785180818672982, null
  br i1 %.not1305, label %1115, label %1114

1114:                                             ; preds = %1113
  call void @free(ptr noundef nonnull %.110681368148115121569159816491676172117461785180818672982) #11
  br label %1115

1115:                                             ; preds = %1114, %1113
  %.not1306 = icmp eq ptr %.110661369148015131568159916481677172017471784180918662984, null
  br i1 %.not1306, label %1117, label %1116

1116:                                             ; preds = %1115
  call void @free(ptr noundef nonnull %.110661369148015131568159916481677172017471784180918662984) #11
  br label %1117

1117:                                             ; preds = %1116, %1115
  %.not1307 = icmp eq ptr %.010451386146415281554161216361688171017561776181718583000, null
  br i1 %.not1307, label %.thread2058, label %.thread2058.sink.split

.thread2058.sink.split:                           ; preds = %1117, %.loopexit2131
  %calloc.sink = phi ptr [ %calloc, %.loopexit2131 ], [ %.010451386146415281554161216361688171017561776181718583000, %1117 ]
  %.0.ph = phi i32 [ -20, %.loopexit2131 ], [ %.1511251365148415091572159516521673172417431788180518702977, %1117 ]
  call void @free(ptr noundef nonnull %calloc.sink) #11
  br label %.thread2058

.thread2058:                                      ; preds = %.thread2058.sink.split, %42, %1117, %40, %37, %34
  %.0 = phi i32 [ -17, %34 ], [ -18, %37 ], [ -19, %40 ], [ %.1511251365148415091572159516521673172417431788180518702977, %1117 ], [ -20, %42 ], [ %.0.ph, %.thread2058.sink.split ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #11
  ret i32 %.0
}

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
declare hidden double @mp_dmax1(double noundef, double noundef) local_unnamed_addr #0

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

; Function Attrs: nounwind uwtable
declare hidden void @mp_lmpar(i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden double @mp_dmin1(double noundef, double noundef) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strcpy(ptr noalias noundef returned writeonly, ptr noalias nocapture noundef readonly) local_unnamed_addr #5

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #7

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.i32(i32, i32) #7

; Function Attrs: nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #10

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #7

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fabs.v2f64(<2 x double>) #7

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 32}
!10 = !{!"mp_config_struct", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !6, i64 48, !6, i64 52, !6, i64 56, !6, i64 60, !6, i64 64, !12, i64 72}
!11 = !{!"double", !7, i64 0}
!12 = !{!"any pointer", !7, i64 0}
!13 = !{!10, !6, i64 56}
!14 = !{!11, !11, i64 0}
!15 = !{!10, !6, i64 48}
!16 = !{!10, !6, i64 60}
!17 = !{!10, !11, i64 40}
!18 = !{!10, !6, i64 64}
!19 = !{!10, !6, i64 52}
!20 = !{!21, !6, i64 0}
!21 = !{!"mp_par_struct", !6, i64 0, !7, i64 4, !7, i64 16, !12, i64 32, !11, i64 40, !11, i64 48, !6, i64 56, !6, i64 60, !11, i64 64, !11, i64 72}
!22 = distinct !{!22, !23, !24, !25}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!"llvm.loop.isvectorized", i32 1}
!25 = !{!"llvm.loop.unroll.runtime.disable"}
!26 = distinct !{!26, !23, !25, !24}
!27 = !{!21, !11, i64 40}
!28 = !{!21, !11, i64 48}
!29 = !{!21, !6, i64 56}
!30 = !{!21, !6, i64 60}
!31 = !{!21, !11, i64 64}
!32 = !{!21, !11, i64 72}
!33 = distinct !{!33, !23}
!34 = distinct !{!34, !23}
!35 = distinct !{!35, !23}
!36 = distinct !{!36, !23}
!37 = !{!12, !12, i64 0}
!38 = distinct !{!38, !23}
!39 = distinct !{!39, !40}
!40 = !{!"llvm.loop.unroll.disable"}
!41 = distinct !{!41, !23}
!42 = distinct !{!42, !40}
!43 = distinct !{!43, !23}
!44 = distinct !{!44, !40}
!45 = distinct !{!45, !23}
!46 = distinct !{!46, !23}
!47 = distinct !{!47, !23}
!48 = distinct !{!48, !23}
!49 = distinct !{!49, !23, !24, !25}
!50 = distinct !{!50, !23, !25, !24}
!51 = distinct !{!51, !23}
!52 = distinct !{!52, !23, !24, !25}
!53 = distinct !{!53, !23, !25, !24}
!54 = distinct !{!54, !23}
!55 = distinct !{!55, !23}
!56 = distinct !{!56, !23}
!57 = distinct !{!57, !23}
!58 = distinct !{!58, !23, !24, !25}
!59 = distinct !{!59, !23, !25, !24}
!60 = distinct !{!60, !23, !24, !25}
!61 = distinct !{!61, !23, !25, !24}
!62 = distinct !{!62, !23}
!63 = distinct !{!63, !23}
!64 = distinct !{!64, !23}
!65 = distinct !{!65, !23}
!66 = distinct !{!66, !40}
!67 = distinct !{!67, !23, !24, !25}
!68 = distinct !{!68, !23, !25, !24}
!69 = distinct !{!69, !23}
!70 = distinct !{!70, !23}
!71 = distinct !{!71, !23}
!72 = distinct !{!72, !40}
!73 = distinct !{!73, !23}
!74 = !{!75, !12, i64 64}
!75 = !{!"mp_result_struct", !11, i64 0, !11, i64 8, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !12, i64 48, !12, i64 56, !12, i64 64, !7, i64 72}
!76 = !{!75, !12, i64 56}
!77 = distinct !{!77, !23}
!78 = distinct !{!78, !23}
!79 = distinct !{!79, !23}
!80 = !{!75, !11, i64 0}
!81 = !{!75, !11, i64 8}
!82 = !{!75, !6, i64 24}
!83 = !{!75, !6, i64 16}
!84 = !{!75, !6, i64 20}
!85 = !{!75, !6, i64 28}
!86 = !{!75, !6, i64 32}
!87 = !{!75, !6, i64 36}
!88 = !{!75, !6, i64 40}
!89 = !{!75, !12, i64 48}
!90 = distinct !{!90, !23, !24, !25}
!91 = distinct !{!91, !40}
!92 = distinct !{!92, !23, !24}


; Effective O3 passes: ADCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass