; LLVM IR from ERGO-Code/HiGHS :: src/ipm/ipx (model)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::valarray" = type { i64, ptr }
%"class.ipx::Model" = type { i8, i32, i32, i32, i32, %"class.ipx::SparseMatrix", %"class.ipx::SparseMatrix", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", double, double, i32, i32, i32, i32, i32, %"class.std::vector", %"class.std::vector.8", double, double, double, %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.std::valarray", %"class.ipx::SparseMatrix", %"class.std::vector", %"class.std::valarray", %"class.std::valarray" }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.ipx::SparseMatrix" = type { i32, %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector", %"class.std::vector.3" }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZNK3ipx5Model24PresolveIPMStartingPointEPKdS2_S2_S2_S2_S2_S2_RSt8valarrayIdES5_S5_S5_S5_S5_(ptr noundef nonnull align 8 dereferenceable(704) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %13) #3 align 2 personality ptr @__gxx_personality_v0 {
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca %"class.std::valarray", align 8
  %31 = alloca %"class.std::valarray", align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca %"class.std::valarray", align 8
  %35 = alloca %"class.std::valarray", align 8
  %36 = alloca %"class.std::valarray", align 8
  %37 = alloca %"class.std::valarray", align 8
  %38 = alloca %"class.std::valarray", align 8
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  store ptr %0, ptr %16, align 8, !tbaa !5
  store ptr %1, ptr %17, align 8, !tbaa !5
  store ptr %2, ptr %18, align 8, !tbaa !5
  store ptr %3, ptr %19, align 8, !tbaa !5
  store ptr %4, ptr %20, align 8, !tbaa !5
  store ptr %5, ptr %21, align 8, !tbaa !5
  store ptr %6, ptr %22, align 8, !tbaa !5
  store ptr %7, ptr %23, align 8, !tbaa !5
  store ptr %8, ptr %24, align 8, !tbaa !5
  store ptr %9, ptr %25, align 8, !tbaa !5
  store ptr %10, ptr %26, align 8, !tbaa !5
  store ptr %11, ptr %27, align 8, !tbaa !5
  store ptr %12, ptr %28, align 8, !tbaa !5
  store ptr %13, ptr %29, align 8, !tbaa !5
  %47 = load ptr, ptr %16, align 8
  %48 = load ptr, ptr %17, align 8, !tbaa !5
  %49 = icmp ne ptr %48, null
  br i1 %49, label %50, label %68

50:                                               ; preds = %14
  %51 = load ptr, ptr %18, align 8, !tbaa !5
  %52 = icmp ne ptr %51, null
  br i1 %52, label %53, label %68

53:                                               ; preds = %50
  %54 = load ptr, ptr %19, align 8, !tbaa !5
  %55 = icmp ne ptr %54, null
  br i1 %55, label %56, label %68

56:                                               ; preds = %53
  %57 = load ptr, ptr %20, align 8, !tbaa !5
  %58 = icmp ne ptr %57, null
  br i1 %58, label %59, label %68

59:                                               ; preds = %56
  %60 = load ptr, ptr %21, align 8, !tbaa !5
  %61 = icmp ne ptr %60, null
  br i1 %61, label %62, label %68

62:                                               ; preds = %59
  %63 = load ptr, ptr %22, align 8, !tbaa !5
  %64 = icmp ne ptr %63, null
  br i1 %64, label %65, label %68

65:                                               ; preds = %62
  %66 = load ptr, ptr %23, align 8, !tbaa !5
  %67 = icmp ne ptr %66, null
  br i1 %67, label %69, label %68

68:                                               ; preds = %65, %62, %59, %56, %53, %50, %14
  store i32 102, ptr %15, align 4
  br label %468

69:                                               ; preds = %65
  %70 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 0
  %71 = load i8, ptr %70, align 8, !tbaa !9, !range !29, !noundef !30
  %72 = trunc i8 %71 to i1
  br i1 %72, label %73, label %74

73:                                               ; preds = %69
  store i32 901, ptr %15, align 4
  br label %468

74:                                               ; preds = %69
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #5
  %75 = load ptr, ptr %17, align 8, !tbaa !5
  %76 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 15
  %77 = load i32, ptr %76, align 8, !tbaa !31
  %78 = sext i32 %77 to i64
  call void @_ZNSt8valarrayIdEC2EPKdm(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef %75, i64 noundef %78)
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #5
  %79 = load ptr, ptr %18, align 8, !tbaa !5
  %80 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 15
  %81 = load i32, ptr %80, align 8, !tbaa !31
  %82 = sext i32 %81 to i64
  invoke void @_ZNSt8valarrayIdEC2EPKdm(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef %79, i64 noundef %82)
          to label %83 unwind label %116

83:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #5
  %84 = load ptr, ptr %19, align 8, !tbaa !5
  %85 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 15
  %86 = load i32, ptr %85, align 8, !tbaa !31
  %87 = sext i32 %86 to i64
  invoke void @_ZNSt8valarrayIdEC2EPKdm(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef %84, i64 noundef %87)
          to label %88 unwind label %120

88:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #5
  %89 = load ptr, ptr %20, align 8, !tbaa !5
  %90 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 13
  %91 = load i32, ptr %90, align 8, !tbaa !32
  %92 = sext i32 %91 to i64
  invoke void @_ZNSt8valarrayIdEC2EPKdm(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef %89, i64 noundef %92)
          to label %93 unwind label %124

93:                                               ; preds = %88
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #5
  %94 = load ptr, ptr %21, align 8, !tbaa !5
  %95 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 13
  %96 = load i32, ptr %95, align 8, !tbaa !32
  %97 = sext i32 %96 to i64
  invoke void @_ZNSt8valarrayIdEC2EPKdm(ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef %94, i64 noundef %97)
          to label %98 unwind label %128

98:                                               ; preds = %93
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #5
  %99 = load ptr, ptr %22, align 8, !tbaa !5
  %100 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 15
  %101 = load i32, ptr %100, align 8, !tbaa !31
  %102 = sext i32 %101 to i64
  invoke void @_ZNSt8valarrayIdEC2EPKdm(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef %99, i64 noundef %102)
          to label %103 unwind label %132

103:                                              ; preds = %98
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #5
  %104 = load ptr, ptr %23, align 8, !tbaa !5
  %105 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 15
  %106 = load i32, ptr %105, align 8, !tbaa !31
  %107 = sext i32 %106 to i64
  invoke void @_ZNSt8valarrayIdEC2EPKdm(ptr noundef nonnull align 8 dereferenceable(16) %38, ptr noundef %104, i64 noundef %107)
          to label %108 unwind label %136

108:                                              ; preds = %103
  invoke void @_ZNK3ipx5Model10ScalePointERSt8valarrayIdES3_S3_S3_S3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(704) %47, ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull align 8 dereferenceable(16) %38)
          to label %109 unwind label %140

109:                                              ; preds = %108
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #5
  store i32 0, ptr %39, align 4, !tbaa !33
  br label %110

110:                                              ; preds = %157, %109
  %111 = load i32, ptr %39, align 4, !tbaa !33
  %112 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 15
  %113 = load i32, ptr %112, align 8, !tbaa !31
  %114 = icmp slt i32 %111, %113
  br i1 %114, label %144, label %115

115:                                              ; preds = %110
  store i32 2, ptr %40, align 4
  br label %160

116:                                              ; preds = %74
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %32, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %33, align 4
  br label %467

120:                                              ; preds = %83
  %121 = landingpad { ptr, i32 }
          cleanup
  %122 = extractvalue { ptr, i32 } %121, 0
  store ptr %122, ptr %32, align 8
  %123 = extractvalue { ptr, i32 } %121, 1
  store i32 %123, ptr %33, align 4
  br label %466

124:                                              ; preds = %88
  %125 = landingpad { ptr, i32 }
          cleanup
  %126 = extractvalue { ptr, i32 } %125, 0
  store ptr %126, ptr %32, align 8
  %127 = extractvalue { ptr, i32 } %125, 1
  store i32 %127, ptr %33, align 4
  br label %465

128:                                              ; preds = %93
  %129 = landingpad { ptr, i32 }
          cleanup
  %130 = extractvalue { ptr, i32 } %129, 0
  store ptr %130, ptr %32, align 8
  %131 = extractvalue { ptr, i32 } %129, 1
  store i32 %131, ptr %33, align 4
  br label %464

132:                                              ; preds = %98
  %133 = landingpad { ptr, i32 }
          cleanup
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %32, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %33, align 4
  br label %463

136:                                              ; preds = %103
  %137 = landingpad { ptr, i32 }
          cleanup
  %138 = extractvalue { ptr, i32 } %137, 0
  store ptr %138, ptr %32, align 8
  %139 = extractvalue { ptr, i32 } %137, 1
  store i32 %139, ptr %33, align 4
  br label %462

140:                                              ; preds = %452, %108
  %141 = landingpad { ptr, i32 }
          cleanup
  %142 = extractvalue { ptr, i32 } %141, 0
  store ptr %142, ptr %32, align 8
  %143 = extractvalue { ptr, i32 } %141, 1
  store i32 %143, ptr %33, align 4
  br label %461

144:                                              ; preds = %110
  %145 = load i32, ptr %39, align 4, !tbaa !33
  %146 = sext i32 %145 to i64
  %147 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %146) #5
  %148 = load double, ptr %147, align 8, !tbaa !34
  %149 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %148)
          to label %150 unwind label %152

150:                                              ; preds = %144
  br i1 %149, label %156, label %151

151:                                              ; preds = %150
  store i32 105, ptr %15, align 4
  store i32 1, ptr %40, align 4
  br label %160

152:                                              ; preds = %144
  %153 = landingpad { ptr, i32 }
          cleanup
  %154 = extractvalue { ptr, i32 } %153, 0
  store ptr %154, ptr %32, align 8
  %155 = extractvalue { ptr, i32 } %153, 1
  store i32 %155, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  br label %461

156:                                              ; preds = %150
  br label %157

157:                                              ; preds = %156
  %158 = load i32, ptr %39, align 4, !tbaa !33
  %159 = add nsw i32 %158, 1
  store i32 %159, ptr %39, align 4, !tbaa !33
  br label %110, !llvm.loop !35

160:                                              ; preds = %151, %115
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  %161 = load i32, ptr %40, align 4
  switch i32 %161, label %460 [
    i32 2, label %162
  ]

162:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #5
  store i32 0, ptr %41, align 4, !tbaa !33
  br label %163

163:                                              ; preds = %203, %162
  %164 = load i32, ptr %41, align 4, !tbaa !33
  %165 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 15
  %166 = load i32, ptr %165, align 8, !tbaa !31
  %167 = icmp slt i32 %164, %166
  br i1 %167, label %169, label %168

168:                                              ; preds = %163
  store i32 5, ptr %40, align 4
  br label %206

169:                                              ; preds = %163
  %170 = load i32, ptr %41, align 4, !tbaa !33
  %171 = sext i32 %170 to i64
  %172 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %31, i64 noundef %171) #5
  %173 = load double, ptr %172, align 8, !tbaa !34
  %174 = fcmp oge double %173, 0.000000e+00
  br i1 %174, label %175, label %201

175:                                              ; preds = %169
  %176 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 25
  %177 = load i32, ptr %41, align 4, !tbaa !33
  %178 = sext i32 %177 to i64
  %179 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %176, i64 noundef %178) #5
  %180 = load double, ptr %179, align 8, !tbaa !34
  %181 = fcmp oeq double %180, 0xFFF0000000000000
  br i1 %181, label %182, label %188

182:                                              ; preds = %175
  %183 = load i32, ptr %41, align 4, !tbaa !33
  %184 = sext i32 %183 to i64
  %185 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %31, i64 noundef %184) #5
  %186 = load double, ptr %185, align 8, !tbaa !34
  %187 = fcmp une double %186, 0x7FF0000000000000
  br i1 %187, label %201, label %188

188:                                              ; preds = %182, %175
  %189 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 25
  %190 = load i32, ptr %41, align 4, !tbaa !33
  %191 = sext i32 %190 to i64
  %192 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %189, i64 noundef %191) #5
  %193 = load double, ptr %192, align 8, !tbaa !34
  %194 = fcmp une double %193, 0xFFF0000000000000
  br i1 %194, label %195, label %202

195:                                              ; preds = %188
  %196 = load i32, ptr %41, align 4, !tbaa !33
  %197 = sext i32 %196 to i64
  %198 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %31, i64 noundef %197) #5
  %199 = load double, ptr %198, align 8, !tbaa !34
  %200 = fcmp oeq double %199, 0x7FF0000000000000
  br i1 %200, label %201, label %202

201:                                              ; preds = %195, %182, %169
  store i32 105, ptr %15, align 4
  store i32 1, ptr %40, align 4
  br label %206

202:                                              ; preds = %195, %188
  br label %203

203:                                              ; preds = %202
  %204 = load i32, ptr %41, align 4, !tbaa !33
  %205 = add nsw i32 %204, 1
  store i32 %205, ptr %41, align 4, !tbaa !33
  br label %163, !llvm.loop !37

206:                                              ; preds = %201, %168
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  %207 = load i32, ptr %40, align 4
  switch i32 %207, label %460 [
    i32 5, label %208
  ]

208:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #5
  store i32 0, ptr %42, align 4, !tbaa !33
  br label %209

209:                                              ; preds = %249, %208
  %210 = load i32, ptr %42, align 4, !tbaa !33
  %211 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 15
  %212 = load i32, ptr %211, align 8, !tbaa !31
  %213 = icmp slt i32 %210, %212
  br i1 %213, label %215, label %214

214:                                              ; preds = %209
  store i32 8, ptr %40, align 4
  br label %252

215:                                              ; preds = %209
  %216 = load i32, ptr %42, align 4, !tbaa !33
  %217 = sext i32 %216 to i64
  %218 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %34, i64 noundef %217) #5
  %219 = load double, ptr %218, align 8, !tbaa !34
  %220 = fcmp oge double %219, 0.000000e+00
  br i1 %220, label %221, label %247

221:                                              ; preds = %215
  %222 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 26
  %223 = load i32, ptr %42, align 4, !tbaa !33
  %224 = sext i32 %223 to i64
  %225 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %222, i64 noundef %224) #5
  %226 = load double, ptr %225, align 8, !tbaa !34
  %227 = fcmp oeq double %226, 0x7FF0000000000000
  br i1 %227, label %228, label %234

228:                                              ; preds = %221
  %229 = load i32, ptr %42, align 4, !tbaa !33
  %230 = sext i32 %229 to i64
  %231 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %34, i64 noundef %230) #5
  %232 = load double, ptr %231, align 8, !tbaa !34
  %233 = fcmp une double %232, 0x7FF0000000000000
  br i1 %233, label %247, label %234

234:                                              ; preds = %228, %221
  %235 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 26
  %236 = load i32, ptr %42, align 4, !tbaa !33
  %237 = sext i32 %236 to i64
  %238 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %235, i64 noundef %237) #5
  %239 = load double, ptr %238, align 8, !tbaa !34
  %240 = fcmp une double %239, 0x7FF0000000000000
  br i1 %240, label %241, label %248

241:                                              ; preds = %234
  %242 = load i32, ptr %42, align 4, !tbaa !33
  %243 = sext i32 %242 to i64
  %244 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %34, i64 noundef %243) #5
  %245 = load double, ptr %244, align 8, !tbaa !34
  %246 = fcmp oeq double %245, 0x7FF0000000000000
  br i1 %246, label %247, label %248

247:                                              ; preds = %241, %228, %215
  store i32 105, ptr %15, align 4
  store i32 1, ptr %40, align 4
  br label %252

248:                                              ; preds = %241, %234
  br label %249

249:                                              ; preds = %248
  %250 = load i32, ptr %42, align 4, !tbaa !33
  %251 = add nsw i32 %250, 1
  store i32 %251, ptr %42, align 4, !tbaa !33
  br label %209, !llvm.loop !38

252:                                              ; preds = %247, %214
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  %253 = load i32, ptr %40, align 4
  switch i32 %253, label %460 [
    i32 8, label %254
  ]

254:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #5
  store i32 0, ptr %43, align 4, !tbaa !33
  br label %255

255:                                              ; preds = %316, %254
  %256 = load i32, ptr %43, align 4, !tbaa !33
  %257 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 13
  %258 = load i32, ptr %257, align 8, !tbaa !32
  %259 = icmp slt i32 %256, %258
  br i1 %259, label %261, label %260

260:                                              ; preds = %255
  store i32 11, ptr %40, align 4
  br label %319

261:                                              ; preds = %255
  %262 = load i32, ptr %43, align 4, !tbaa !33
  %263 = sext i32 %262 to i64
  %264 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %35, i64 noundef %263) #5
  %265 = load double, ptr %264, align 8, !tbaa !34
  %266 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %265)
          to label %267 unwind label %311

267:                                              ; preds = %261
  br i1 %266, label %268, label %310

268:                                              ; preds = %267
  %269 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 19
  %270 = load i32, ptr %43, align 4, !tbaa !33
  %271 = sext i32 %270 to i64
  %272 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %269, i64 noundef %271) #5
  %273 = load i8, ptr %272, align 1, !tbaa !39
  %274 = sext i8 %273 to i32
  %275 = icmp eq i32 %274, 61
  br i1 %275, label %276, label %282

276:                                              ; preds = %268
  %277 = load i32, ptr %43, align 4, !tbaa !33
  %278 = sext i32 %277 to i64
  %279 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %35, i64 noundef %278) #5
  %280 = load double, ptr %279, align 8, !tbaa !34
  %281 = fcmp oeq double %280, 0.000000e+00
  br i1 %281, label %282, label %310

282:                                              ; preds = %276, %268
  %283 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 19
  %284 = load i32, ptr %43, align 4, !tbaa !33
  %285 = sext i32 %284 to i64
  %286 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %283, i64 noundef %285) #5
  %287 = load i8, ptr %286, align 1, !tbaa !39
  %288 = sext i8 %287 to i32
  %289 = icmp eq i32 %288, 60
  br i1 %289, label %290, label %296

290:                                              ; preds = %282
  %291 = load i32, ptr %43, align 4, !tbaa !33
  %292 = sext i32 %291 to i64
  %293 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %35, i64 noundef %292) #5
  %294 = load double, ptr %293, align 8, !tbaa !34
  %295 = fcmp oge double %294, 0.000000e+00
  br i1 %295, label %296, label %310

296:                                              ; preds = %290, %282
  %297 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 19
  %298 = load i32, ptr %43, align 4, !tbaa !33
  %299 = sext i32 %298 to i64
  %300 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %297, i64 noundef %299) #5
  %301 = load i8, ptr %300, align 1, !tbaa !39
  %302 = sext i8 %301 to i32
  %303 = icmp eq i32 %302, 62
  br i1 %303, label %304, label %315

304:                                              ; preds = %296
  %305 = load i32, ptr %43, align 4, !tbaa !33
  %306 = sext i32 %305 to i64
  %307 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %35, i64 noundef %306) #5
  %308 = load double, ptr %307, align 8, !tbaa !34
  %309 = fcmp ole double %308, 0.000000e+00
  br i1 %309, label %315, label %310

310:                                              ; preds = %304, %290, %276, %267
  store i32 105, ptr %15, align 4
  store i32 1, ptr %40, align 4
  br label %319

311:                                              ; preds = %261
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %32, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  br label %461

315:                                              ; preds = %304, %296
  br label %316

316:                                              ; preds = %315
  %317 = load i32, ptr %43, align 4, !tbaa !33
  %318 = add nsw i32 %317, 1
  store i32 %318, ptr %43, align 4, !tbaa !33
  br label %255, !llvm.loop !40

319:                                              ; preds = %310, %260
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  %320 = load i32, ptr %40, align 4
  switch i32 %320, label %460 [
    i32 11, label %321
  ]

321:                                              ; preds = %319
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #5
  store i32 0, ptr %44, align 4, !tbaa !33
  br label %322

322:                                              ; preds = %369, %321
  %323 = load i32, ptr %44, align 4, !tbaa !33
  %324 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 13
  %325 = load i32, ptr %324, align 8, !tbaa !32
  %326 = icmp slt i32 %323, %325
  br i1 %326, label %328, label %327

327:                                              ; preds = %322
  store i32 14, ptr %40, align 4
  br label %372

328:                                              ; preds = %322
  %329 = load i32, ptr %44, align 4, !tbaa !33
  %330 = sext i32 %329 to i64
  %331 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %330) #5
  %332 = load double, ptr %331, align 8, !tbaa !34
  %333 = invoke noundef zeroext i1 @_ZSt8isfinited(double noundef %332)
          to label %334 unwind label %364

334:                                              ; preds = %328
  br i1 %333, label %335, label %363

335:                                              ; preds = %334
  %336 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 19
  %337 = load i32, ptr %44, align 4, !tbaa !33
  %338 = sext i32 %337 to i64
  %339 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %336, i64 noundef %338) #5
  %340 = load i8, ptr %339, align 1, !tbaa !39
  %341 = sext i8 %340 to i32
  %342 = icmp eq i32 %341, 60
  br i1 %342, label %343, label %349

343:                                              ; preds = %335
  %344 = load i32, ptr %44, align 4, !tbaa !33
  %345 = sext i32 %344 to i64
  %346 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %345) #5
  %347 = load double, ptr %346, align 8, !tbaa !34
  %348 = fcmp ole double %347, 0.000000e+00
  br i1 %348, label %349, label %363

349:                                              ; preds = %343, %335
  %350 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 19
  %351 = load i32, ptr %44, align 4, !tbaa !33
  %352 = sext i32 %351 to i64
  %353 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %350, i64 noundef %352) #5
  %354 = load i8, ptr %353, align 1, !tbaa !39
  %355 = sext i8 %354 to i32
  %356 = icmp eq i32 %355, 62
  br i1 %356, label %357, label %368

357:                                              ; preds = %349
  %358 = load i32, ptr %44, align 4, !tbaa !33
  %359 = sext i32 %358 to i64
  %360 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %359) #5
  %361 = load double, ptr %360, align 8, !tbaa !34
  %362 = fcmp oge double %361, 0.000000e+00
  br i1 %362, label %368, label %363

363:                                              ; preds = %357, %343, %334
  store i32 105, ptr %15, align 4
  store i32 1, ptr %40, align 4
  br label %372

364:                                              ; preds = %328
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %32, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #5
  br label %461

368:                                              ; preds = %357, %349
  br label %369

369:                                              ; preds = %368
  %370 = load i32, ptr %44, align 4, !tbaa !33
  %371 = add nsw i32 %370, 1
  store i32 %371, ptr %44, align 4, !tbaa !33
  br label %322, !llvm.loop !41

372:                                              ; preds = %363, %327
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #5
  %373 = load i32, ptr %40, align 4
  switch i32 %373, label %460 [
    i32 14, label %374
  ]

374:                                              ; preds = %372
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #5
  store i32 0, ptr %45, align 4, !tbaa !33
  br label %375

375:                                              ; preds = %408, %374
  %376 = load i32, ptr %45, align 4, !tbaa !33
  %377 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 15
  %378 = load i32, ptr %377, align 8, !tbaa !31
  %379 = icmp slt i32 %376, %378
  br i1 %379, label %381, label %380

380:                                              ; preds = %375
  store i32 17, ptr %40, align 4
  br label %411

381:                                              ; preds = %375
  %382 = load i32, ptr %45, align 4, !tbaa !33
  %383 = sext i32 %382 to i64
  %384 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %37, i64 noundef %383) #5
  %385 = load double, ptr %384, align 8, !tbaa !34
  %386 = fcmp oge double %385, 0.000000e+00
  br i1 %386, label %387, label %406

387:                                              ; preds = %381
  %388 = load i32, ptr %45, align 4, !tbaa !33
  %389 = sext i32 %388 to i64
  %390 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %37, i64 noundef %389) #5
  %391 = load double, ptr %390, align 8, !tbaa !34
  %392 = fcmp olt double %391, 0x7FF0000000000000
  br i1 %392, label %393, label %406

393:                                              ; preds = %387
  %394 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 25
  %395 = load i32, ptr %45, align 4, !tbaa !33
  %396 = sext i32 %395 to i64
  %397 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %394, i64 noundef %396) #5
  %398 = load double, ptr %397, align 8, !tbaa !34
  %399 = fcmp oeq double %398, 0xFFF0000000000000
  br i1 %399, label %400, label %407

400:                                              ; preds = %393
  %401 = load i32, ptr %45, align 4, !tbaa !33
  %402 = sext i32 %401 to i64
  %403 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %37, i64 noundef %402) #5
  %404 = load double, ptr %403, align 8, !tbaa !34
  %405 = fcmp une double %404, 0.000000e+00
  br i1 %405, label %406, label %407

406:                                              ; preds = %400, %387, %381
  store i32 105, ptr %15, align 4
  store i32 1, ptr %40, align 4
  br label %411

407:                                              ; preds = %400, %393
  br label %408

408:                                              ; preds = %407
  %409 = load i32, ptr %45, align 4, !tbaa !33
  %410 = add nsw i32 %409, 1
  store i32 %410, ptr %45, align 4, !tbaa !33
  br label %375, !llvm.loop !42

411:                                              ; preds = %406, %380
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #5
  %412 = load i32, ptr %40, align 4
  switch i32 %412, label %460 [
    i32 17, label %413
  ]

413:                                              ; preds = %411
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #5
  store i32 0, ptr %46, align 4, !tbaa !33
  br label %414

414:                                              ; preds = %447, %413
  %415 = load i32, ptr %46, align 4, !tbaa !33
  %416 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 15
  %417 = load i32, ptr %416, align 8, !tbaa !31
  %418 = icmp slt i32 %415, %417
  br i1 %418, label %420, label %419

419:                                              ; preds = %414
  store i32 20, ptr %40, align 4
  br label %450

420:                                              ; preds = %414
  %421 = load i32, ptr %46, align 4, !tbaa !33
  %422 = sext i32 %421 to i64
  %423 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %38, i64 noundef %422) #5
  %424 = load double, ptr %423, align 8, !tbaa !34
  %425 = fcmp oge double %424, 0.000000e+00
  br i1 %425, label %426, label %445

426:                                              ; preds = %420
  %427 = load i32, ptr %46, align 4, !tbaa !33
  %428 = sext i32 %427 to i64
  %429 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %38, i64 noundef %428) #5
  %430 = load double, ptr %429, align 8, !tbaa !34
  %431 = fcmp olt double %430, 0x7FF0000000000000
  br i1 %431, label %432, label %445

432:                                              ; preds = %426
  %433 = getelementptr inbounds %"class.ipx::Model", ptr %47, i32 0, i32 26
  %434 = load i32, ptr %46, align 4, !tbaa !33
  %435 = sext i32 %434 to i64
  %436 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %433, i64 noundef %435) #5
  %437 = load double, ptr %436, align 8, !tbaa !34
  %438 = fcmp oeq double %437, 0x7FF0000000000000
  br i1 %438, label %439, label %446

439:                                              ; preds = %432
  %440 = load i32, ptr %46, align 4, !tbaa !33
  %441 = sext i32 %440 to i64
  %442 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %38, i64 noundef %441) #5
  %443 = load double, ptr %442, align 8, !tbaa !34
  %444 = fcmp une double %443, 0.000000e+00
  br i1 %444, label %445, label %446

445:                                              ; preds = %439, %426, %420
  store i32 105, ptr %15, align 4
  store i32 1, ptr %40, align 4
  br label %450

446:                                              ; preds = %439, %432
  br label %447

447:                                              ; preds = %446
  %448 = load i32, ptr %46, align 4, !tbaa !33
  %449 = add nsw i32 %448, 1
  store i32 %449, ptr %46, align 4, !tbaa !33
  br label %414, !llvm.loop !43

450:                                              ; preds = %445, %419
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #5
  %451 = load i32, ptr %40, align 4
  switch i32 %451, label %460 [
    i32 20, label %452
  ]

452:                                              ; preds = %450
  %453 = load ptr, ptr %24, align 8, !tbaa !5
  %454 = load ptr, ptr %25, align 8, !tbaa !5
  %455 = load ptr, ptr %26, align 8, !tbaa !5
  %456 = load ptr, ptr %27, align 8, !tbaa !5
  %457 = load ptr, ptr %28, align 8, !tbaa !5
  %458 = load ptr, ptr %29, align 8, !tbaa !5
  invoke void @_ZNK3ipx5Model23DualizeIPMStartingPointERKSt8valarrayIdES4_S4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_(ptr noundef nonnull align 8 dereferenceable(704) %47, ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull align 8 dereferenceable(16) %38, ptr noundef nonnull align 8 dereferenceable(16) %453, ptr noundef nonnull align 8 dereferenceable(16) %454, ptr noundef nonnull align 8 dereferenceable(16) %455, ptr noundef nonnull align 8 dereferenceable(16) %456, ptr noundef nonnull align 8 dereferenceable(16) %457, ptr noundef nonnull align 8 dereferenceable(16) %458)
          to label %459 unwind label %140

459:                                              ; preds = %452
  store i32 0, ptr %15, align 4
  store i32 1, ptr %40, align 4
  br label %460

460:                                              ; preds = %459, %450, %411, %372, %319, %252, %206, %160
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #5
  br label %468

461:                                              ; preds = %364, %311, %152, %140
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #5
  br label %462

462:                                              ; preds = %461, %136
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #5
  br label %463

463:                                              ; preds = %462, %132
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #5
  br label %464

464:                                              ; preds = %463, %128
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #5
  br label %465

465:                                              ; preds = %464, %124
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #5
  br label %466

466:                                              ; preds = %465, %120
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #5
  br label %467

467:                                              ; preds = %466, %116
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #5
  br label %470

468:                                              ; preds = %460, %73, %68
  %469 = load i32, ptr %15, align 4
  ret i32 %469

470:                                              ; preds = %467
  %471 = load ptr, ptr %32, align 8
  %472 = load i32, ptr %33, align 4
  %473 = insertvalue { ptr, i32 } poison, ptr %471, 0
  %474 = insertvalue { ptr, i32 } %473, i32 %472, 1
  resume { ptr, i32 } %474
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNSt8valarrayIdEC2EPKdm(ptr noundef nonnull align 8 dereferenceable(16), ptr noalias noundef, i64 noundef) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3ipx5Model10ScalePointERSt8valarrayIdES3_S3_S3_S3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(704), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3ipx5Model23DualizeIPMStartingPointERKSt8valarrayIdES4_S4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_(ptr noundef nonnull align 8 dereferenceable(704), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTSN3ipx5ModelE", !11, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !13, i64 24, !13, i64 152, !22, i64 280, !22, i64 296, !22, i64 312, !22, i64 328, !24, i64 344, !24, i64 352, !12, i64 360, !12, i64 364, !12, i64 368, !12, i64 372, !12, i64 376, !14, i64 384, !25, i64 408, !24, i64 432, !24, i64 440, !24, i64 448, !22, i64 456, !22, i64 472, !22, i64 488, !22, i64 504, !13, i64 520, !14, i64 648, !22, i64 672, !22, i64 688}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!"_ZTSN3ipx12SparseMatrixE", !12, i64 0, !14, i64 8, !14, i64 32, !18, i64 56, !14, i64 80, !18, i64 104}
!14 = !{!"_ZTSSt6vectorIiSaIiEE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!18 = !{!"_ZTSSt6vectorIdSaIdEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"_ZTSSt8valarrayIdE", !23, i64 0, !6, i64 8}
!23 = !{!"long", !7, i64 0}
!24 = !{!"double", !7, i64 0}
!25 = !{!"_ZTSSt6vectorIcSaIcEE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!29 = !{i8 0, i8 2}
!30 = !{}
!31 = !{!10, !12, i64 368}
!32 = !{!10, !12, i64 360}
!33 = !{!12, !12, i64 0}
!34 = !{!24, !24, i64 0}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}
!37 = distinct !{!37, !36}
!38 = distinct !{!38, !36}
!39 = !{!7, !7, i64 0}
!40 = distinct !{!40, !36}
!41 = distinct !{!41, !36}
!42 = distinct !{!42, !36}
!43 = distinct !{!43, !36}


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

%"class.std::valarray" = type { i64, ptr }

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef range(i32 0, 902) i32 @_ZNK3ipx5Model24PresolveIPMStartingPointEPKdS2_S2_S2_S2_S2_S2_RSt8valarrayIdES5_S5_S5_S5_S5_(ptr noundef nonnull align 8 dereferenceable(704) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %13) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %15 = alloca %"class.std::valarray", align 8
  %16 = alloca %"class.std::valarray", align 8
  %17 = alloca %"class.std::valarray", align 8
  %18 = alloca %"class.std::valarray", align 8
  %19 = alloca %"class.std::valarray", align 8
  %20 = alloca %"class.std::valarray", align 8
  %21 = alloca %"class.std::valarray", align 8
  %22 = insertelement <4 x ptr> poison, ptr %1, i64 0
  %23 = insertelement <4 x ptr> %22, ptr %2, i64 1
  %24 = insertelement <4 x ptr> %23, ptr %3, i64 2
  %25 = insertelement <4 x ptr> %24, ptr %4, i64 3
  %26 = icmp ne ptr %5, null
  %27 = icmp ne ptr %6, null
  %28 = icmp ne ptr %7, null
  %29 = icmp eq <4 x ptr> %25, zeroinitializer
  %30 = bitcast <4 x i1> %29 to i4
  %31 = icmp eq i4 %30, 0
  %op.rdx = and i1 %31, %26
  %op.rdx217 = and i1 %27, %28
  %op.rdx218 = and i1 %op.rdx, %op.rdx217
  br i1 %op.rdx218, label %32, label %227

32:                                               ; preds = %14
  %33 = load i8, ptr %0, align 8, !tbaa !5, !range !28, !noundef !29
  %34 = trunc nuw i8 %33 to i1
  br i1 %34, label %227, label %35

35:                                               ; preds = %32
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #5
  %36 = getelementptr inbounds i8, ptr %0, i64 368
  %37 = load i32, ptr %36, align 8, !tbaa !30
  %38 = sext i32 %37 to i64
  call void @_ZNSt8valarrayIdEC2EPKdm(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull %1, i64 noundef %38)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #5
  %39 = load i32, ptr %36, align 8, !tbaa !30
  %40 = sext i32 %39 to i64
  invoke void @_ZNSt8valarrayIdEC2EPKdm(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull %2, i64 noundef %40)
          to label %41 unwind label %63

41:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #5
  %42 = load i32, ptr %36, align 8, !tbaa !30
  %43 = sext i32 %42 to i64
  invoke void @_ZNSt8valarrayIdEC2EPKdm(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull %3, i64 noundef %43)
          to label %44 unwind label %65

44:                                               ; preds = %41
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #5
  %45 = getelementptr inbounds i8, ptr %0, i64 360
  %46 = load i32, ptr %45, align 8, !tbaa !31
  %47 = sext i32 %46 to i64
  invoke void @_ZNSt8valarrayIdEC2EPKdm(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull %4, i64 noundef %47)
          to label %48 unwind label %67

48:                                               ; preds = %44
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #5
  %49 = load i32, ptr %45, align 8, !tbaa !31
  %50 = sext i32 %49 to i64
  invoke void @_ZNSt8valarrayIdEC2EPKdm(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull %5, i64 noundef %50)
          to label %51 unwind label %69

51:                                               ; preds = %48
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #5
  %52 = load i32, ptr %36, align 8, !tbaa !30
  %53 = sext i32 %52 to i64
  invoke void @_ZNSt8valarrayIdEC2EPKdm(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull %6, i64 noundef %53)
          to label %54 unwind label %71

54:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #5
  %55 = load i32, ptr %36, align 8, !tbaa !30
  %56 = sext i32 %55 to i64
  invoke void @_ZNSt8valarrayIdEC2EPKdm(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull %7, i64 noundef %56)
          to label %57 unwind label %73

57:                                               ; preds = %54
  invoke void @_ZNK3ipx5Model10ScalePointERSt8valarrayIdES3_S3_S3_S3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(704) %0, ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %.preheader unwind label %75

.preheader:                                       ; preds = %57
  %58 = load i32, ptr %36, align 8, !tbaa !30
  %.not150 = icmp sgt i32 %58, 0
  br i1 %.not150, label %.lr.ph, label %.critedge135.preheader

59:                                               ; preds = %.lr.ph
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %60 = load i32, ptr %36, align 8, !tbaa !30
  %61 = sext i32 %60 to i64
  %.not = icmp slt i64 %indvars.iv.next, %61
  br i1 %.not, label %.lr.ph, label %.critedge.preheader, !llvm.loop !32

.critedge.preheader:                              ; preds = %59
  %.not120152 = icmp sgt i32 %60, 0
  br i1 %.not120152, label %.lr.ph154, label %.critedge135.preheader

.lr.ph154:                                        ; preds = %.critedge.preheader
  %62 = getelementptr inbounds i8, ptr %0, i64 488
  br label %81

63:                                               ; preds = %35
  %64 = landingpad { ptr, i32 }
          cleanup
  br label %226

65:                                               ; preds = %41
  %66 = landingpad { ptr, i32 }
          cleanup
  br label %225

67:                                               ; preds = %44
  %68 = landingpad { ptr, i32 }
          cleanup
  br label %224

69:                                               ; preds = %48
  %70 = landingpad { ptr, i32 }
          cleanup
  br label %223

71:                                               ; preds = %51
  %72 = landingpad { ptr, i32 }
          cleanup
  br label %222

73:                                               ; preds = %54
  %74 = landingpad { ptr, i32 }
          cleanup
  br label %221

75:                                               ; preds = %.critedge143, %57
  %76 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  br label %221

.lr.ph:                                           ; preds = %.preheader, %59
  %indvars.iv = phi i64 [ %indvars.iv.next, %59 ], [ 0, %.preheader ]
  %77 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %15, i64 noundef %indvars.iv) #5
  %78 = load double, ptr %77, align 8, !tbaa !34
  %79 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %78)
  br i1 %79, label %59, label %.loopexit

.critedge133.preheader:                           ; preds = %.critedge
  %.not121155 = icmp sgt i32 %101, 0
  br i1 %.not121155, label %.lr.ph157, label %.critedge135.preheader

.lr.ph157:                                        ; preds = %.critedge133.preheader
  %80 = getelementptr inbounds i8, ptr %0, i64 504
  br label %105

81:                                               ; preds = %.lr.ph154, %.critedge
  %indvars.iv177 = phi i64 [ 0, %.lr.ph154 ], [ %indvars.iv.next178, %.critedge ]
  %82 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %16, i64 noundef %indvars.iv177) #5
  %83 = load double, ptr %82, align 8, !tbaa !34
  %84 = fcmp ult double %83, 0.000000e+00
  br i1 %84, label %.loopexit, label %85

85:                                               ; preds = %81
  %86 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %62, i64 noundef %indvars.iv177) #5
  %87 = load double, ptr %86, align 8, !tbaa !34
  %88 = fcmp oeq double %87, 0xFFF0000000000000
  br i1 %88, label %89, label %93

89:                                               ; preds = %85
  %90 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %16, i64 noundef %indvars.iv177) #5
  %91 = load double, ptr %90, align 8, !tbaa !34
  %92 = fcmp une double %91, 0x7FF0000000000000
  br i1 %92, label %.loopexit, label %93

93:                                               ; preds = %89, %85
  %94 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %62, i64 noundef %indvars.iv177) #5
  %95 = load double, ptr %94, align 8, !tbaa !34
  %96 = fcmp une double %95, 0xFFF0000000000000
  br i1 %96, label %97, label %.critedge

97:                                               ; preds = %93
  %98 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %16, i64 noundef %indvars.iv177) #5
  %99 = load double, ptr %98, align 8, !tbaa !34
  %100 = fcmp oeq double %99, 0x7FF0000000000000
  br i1 %100, label %.loopexit, label %.critedge

.critedge:                                        ; preds = %93, %97
  %indvars.iv.next178 = add nuw nsw i64 %indvars.iv177, 1
  %101 = load i32, ptr %36, align 8, !tbaa !30
  %102 = sext i32 %101 to i64
  %.not120 = icmp slt i64 %indvars.iv.next178, %102
  br i1 %.not120, label %81, label %.critedge133.preheader, !llvm.loop !35

.critedge135.preheader:                           ; preds = %.critedge133, %.preheader, %.critedge.preheader, %.critedge133.preheader
  %103 = load i32, ptr %45, align 8, !tbaa !31
  %.not122158 = icmp sgt i32 %103, 0
  br i1 %.not122158, label %.lr.ph160, label %.critedge139.preheader

.lr.ph160:                                        ; preds = %.critedge135.preheader
  %104 = getelementptr inbounds i8, ptr %0, i64 408
  br label %129

105:                                              ; preds = %.lr.ph157, %.critedge133
  %indvars.iv180 = phi i64 [ 0, %.lr.ph157 ], [ %indvars.iv.next181, %.critedge133 ]
  %106 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %17, i64 noundef %indvars.iv180) #5
  %107 = load double, ptr %106, align 8, !tbaa !34
  %108 = fcmp ult double %107, 0.000000e+00
  br i1 %108, label %.loopexit, label %109

109:                                              ; preds = %105
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %80, i64 noundef %indvars.iv180) #5
  %111 = load double, ptr %110, align 8, !tbaa !34
  %112 = fcmp oeq double %111, 0x7FF0000000000000
  br i1 %112, label %113, label %117

113:                                              ; preds = %109
  %114 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %17, i64 noundef %indvars.iv180) #5
  %115 = load double, ptr %114, align 8, !tbaa !34
  %116 = fcmp une double %115, 0x7FF0000000000000
  br i1 %116, label %.loopexit, label %117

117:                                              ; preds = %113, %109
  %118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %80, i64 noundef %indvars.iv180) #5
  %119 = load double, ptr %118, align 8, !tbaa !34
  %120 = fcmp une double %119, 0x7FF0000000000000
  br i1 %120, label %121, label %.critedge133

121:                                              ; preds = %117
  %122 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %17, i64 noundef %indvars.iv180) #5
  %123 = load double, ptr %122, align 8, !tbaa !34
  %124 = fcmp oeq double %123, 0x7FF0000000000000
  br i1 %124, label %.loopexit, label %.critedge133

.critedge133:                                     ; preds = %117, %121
  %indvars.iv.next181 = add nuw nsw i64 %indvars.iv180, 1
  %125 = load i32, ptr %36, align 8, !tbaa !30
  %126 = sext i32 %125 to i64
  %.not121 = icmp slt i64 %indvars.iv.next181, %126
  br i1 %.not121, label %105, label %.critedge135.preheader, !llvm.loop !36

.critedge137.preheader:                           ; preds = %.critedge135
  %127 = icmp sgt i32 %157, 0
  br i1 %127, label %.lr.ph163, label %.critedge139.preheader

.lr.ph163:                                        ; preds = %.critedge137.preheader
  %128 = getelementptr inbounds i8, ptr %0, i64 408
  br label %161

129:                                              ; preds = %.lr.ph160, %.critedge135
  %indvars.iv183 = phi i64 [ 0, %.lr.ph160 ], [ %indvars.iv.next184, %.critedge135 ]
  %130 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %indvars.iv183) #5
  %131 = load double, ptr %130, align 8, !tbaa !34
  %132 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %131)
  br i1 %132, label %133, label %.loopexit

133:                                              ; preds = %129
  %134 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %104, i64 noundef %indvars.iv183) #5
  %135 = load i8, ptr %134, align 1, !tbaa !37
  %136 = icmp eq i8 %135, 61
  br i1 %136, label %137, label %141

137:                                              ; preds = %133
  %138 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %indvars.iv183) #5
  %139 = load double, ptr %138, align 8, !tbaa !34
  %140 = fcmp oeq double %139, 0.000000e+00
  br i1 %140, label %141, label %.loopexit

141:                                              ; preds = %137, %133
  %142 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %104, i64 noundef %indvars.iv183) #5
  %143 = load i8, ptr %142, align 1, !tbaa !37
  %144 = icmp eq i8 %143, 60
  br i1 %144, label %145, label %149

145:                                              ; preds = %141
  %146 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %indvars.iv183) #5
  %147 = load double, ptr %146, align 8, !tbaa !34
  %148 = fcmp ult double %147, 0.000000e+00
  br i1 %148, label %.loopexit, label %149

149:                                              ; preds = %145, %141
  %150 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %104, i64 noundef %indvars.iv183) #5
  %151 = load i8, ptr %150, align 1, !tbaa !37
  %152 = icmp eq i8 %151, 62
  br i1 %152, label %153, label %.critedge135

153:                                              ; preds = %149
  %154 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %indvars.iv183) #5
  %155 = load double, ptr %154, align 8, !tbaa !34
  %156 = fcmp ugt double %155, 0.000000e+00
  br i1 %156, label %.loopexit, label %.critedge135

.critedge135:                                     ; preds = %149, %153
  %indvars.iv.next184 = add nuw nsw i64 %indvars.iv183, 1
  %157 = load i32, ptr %45, align 8, !tbaa !31
  %158 = sext i32 %157 to i64
  %.not122 = icmp slt i64 %indvars.iv.next184, %158
  br i1 %.not122, label %129, label %.critedge137.preheader, !llvm.loop !38

.critedge139.preheader:                           ; preds = %.critedge137, %.critedge135.preheader, %.critedge137.preheader
  %159 = load i32, ptr %36, align 8, !tbaa !30
  %.not124164 = icmp sgt i32 %159, 0
  br i1 %.not124164, label %.lr.ph166, label %.critedge143

.lr.ph166:                                        ; preds = %.critedge139.preheader
  %160 = getelementptr inbounds i8, ptr %0, i64 488
  br label %185

161:                                              ; preds = %.lr.ph163, %.critedge137
  %indvars.iv186 = phi i64 [ 0, %.lr.ph163 ], [ %indvars.iv.next187, %.critedge137 ]
  %162 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %19, i64 noundef %indvars.iv186) #5
  %163 = load double, ptr %162, align 8, !tbaa !34
  %164 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %163)
  br i1 %164, label %165, label %.loopexit

165:                                              ; preds = %161
  %166 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %128, i64 noundef %indvars.iv186) #5
  %167 = load i8, ptr %166, align 1, !tbaa !37
  %168 = icmp eq i8 %167, 60
  br i1 %168, label %169, label %173

169:                                              ; preds = %165
  %170 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %19, i64 noundef %indvars.iv186) #5
  %171 = load double, ptr %170, align 8, !tbaa !34
  %172 = fcmp ugt double %171, 0.000000e+00
  br i1 %172, label %.loopexit, label %173

173:                                              ; preds = %169, %165
  %174 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %128, i64 noundef %indvars.iv186) #5
  %175 = load i8, ptr %174, align 1, !tbaa !37
  %176 = icmp eq i8 %175, 62
  br i1 %176, label %177, label %.critedge137

177:                                              ; preds = %173
  %178 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %19, i64 noundef %indvars.iv186) #5
  %179 = load double, ptr %178, align 8, !tbaa !34
  %180 = fcmp ult double %179, 0.000000e+00
  br i1 %180, label %.loopexit, label %.critedge137

.critedge137:                                     ; preds = %173, %177
  %indvars.iv.next187 = add nuw nsw i64 %indvars.iv186, 1
  %181 = load i32, ptr %45, align 8, !tbaa !31
  %182 = sext i32 %181 to i64
  %.not123 = icmp slt i64 %indvars.iv.next187, %182
  br i1 %.not123, label %161, label %.critedge139.preheader, !llvm.loop !39

.critedge141.preheader:                           ; preds = %.critedge139
  %183 = icmp sgt i32 %201, 0
  br i1 %183, label %.lr.ph169, label %.critedge143

.lr.ph169:                                        ; preds = %.critedge141.preheader
  %184 = getelementptr inbounds i8, ptr %0, i64 504
  br label %203

185:                                              ; preds = %.lr.ph166, %.critedge139
  %indvars.iv189 = phi i64 [ 0, %.lr.ph166 ], [ %indvars.iv.next190, %.critedge139 ]
  %186 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef %indvars.iv189) #5
  %187 = load double, ptr %186, align 8, !tbaa !34
  %188 = fcmp ult double %187, 0.000000e+00
  br i1 %188, label %.loopexit, label %189

189:                                              ; preds = %185
  %190 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef %indvars.iv189) #5
  %191 = load double, ptr %190, align 8, !tbaa !34
  %192 = fcmp ueq double %191, 0x7FF0000000000000
  br i1 %192, label %.loopexit, label %193

193:                                              ; preds = %189
  %194 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %160, i64 noundef %indvars.iv189) #5
  %195 = load double, ptr %194, align 8, !tbaa !34
  %196 = fcmp oeq double %195, 0xFFF0000000000000
  br i1 %196, label %197, label %.critedge139

197:                                              ; preds = %193
  %198 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef %indvars.iv189) #5
  %199 = load double, ptr %198, align 8, !tbaa !34
  %200 = fcmp une double %199, 0.000000e+00
  br i1 %200, label %.loopexit, label %.critedge139

.critedge139:                                     ; preds = %193, %197
  %indvars.iv.next190 = add nuw nsw i64 %indvars.iv189, 1
  %201 = load i32, ptr %36, align 8, !tbaa !30
  %202 = sext i32 %201 to i64
  %.not124 = icmp slt i64 %indvars.iv.next190, %202
  br i1 %.not124, label %185, label %.critedge141.preheader, !llvm.loop !40

203:                                              ; preds = %.lr.ph169, %.critedge141
  %indvars.iv192 = phi i64 [ 0, %.lr.ph169 ], [ %indvars.iv.next193, %.critedge141 ]
  %204 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %21, i64 noundef %indvars.iv192) #5
  %205 = load double, ptr %204, align 8, !tbaa !34
  %206 = fcmp ult double %205, 0.000000e+00
  br i1 %206, label %.loopexit, label %207

207:                                              ; preds = %203
  %208 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %21, i64 noundef %indvars.iv192) #5
  %209 = load double, ptr %208, align 8, !tbaa !34
  %210 = fcmp ueq double %209, 0x7FF0000000000000
  br i1 %210, label %.loopexit, label %211

211:                                              ; preds = %207
  %212 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %184, i64 noundef %indvars.iv192) #5
  %213 = load double, ptr %212, align 8, !tbaa !34
  %214 = fcmp oeq double %213, 0x7FF0000000000000
  br i1 %214, label %215, label %.critedge141

215:                                              ; preds = %211
  %216 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %21, i64 noundef %indvars.iv192) #5
  %217 = load double, ptr %216, align 8, !tbaa !34
  %218 = fcmp une double %217, 0.000000e+00
  br i1 %218, label %.loopexit, label %.critedge141

.critedge141:                                     ; preds = %211, %215
  %indvars.iv.next193 = add nuw nsw i64 %indvars.iv192, 1
  %219 = load i32, ptr %36, align 8, !tbaa !30
  %220 = sext i32 %219 to i64
  %.not125 = icmp slt i64 %indvars.iv.next193, %220
  br i1 %.not125, label %203, label %.critedge143, !llvm.loop !41

.critedge143:                                     ; preds = %.critedge141, %.critedge139.preheader, %.critedge141.preheader
  invoke void @_ZNK3ipx5Model23DualizeIPMStartingPointERKSt8valarrayIdES4_S4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_(ptr noundef nonnull align 8 dereferenceable(704) %0, ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %.loopexit unwind label %75

.loopexit:                                        ; preds = %.lr.ph, %97, %89, %81, %121, %113, %105, %153, %145, %137, %129, %177, %169, %161, %197, %189, %185, %215, %207, %203, %.critedge143
  %.7 = phi i32 [ 0, %.critedge143 ], [ 105, %203 ], [ 105, %207 ], [ 105, %215 ], [ 105, %185 ], [ 105, %189 ], [ 105, %197 ], [ 105, %161 ], [ 105, %169 ], [ 105, %177 ], [ 105, %129 ], [ 105, %137 ], [ 105, %145 ], [ 105, %153 ], [ 105, %105 ], [ 105, %113 ], [ 105, %121 ], [ 105, %81 ], [ 105, %89 ], [ 105, %97 ], [ 105, %.lr.ph ]
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #5
  br label %227

221:                                              ; preds = %75, %73
  %.pn = phi { ptr, i32 } [ %76, %75 ], [ %74, %73 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  br label %222

222:                                              ; preds = %221, %71
  %.pn.pn = phi { ptr, i32 } [ %.pn, %221 ], [ %72, %71 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #5
  br label %223

223:                                              ; preds = %222, %69
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %222 ], [ %70, %69 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #5
  br label %224

224:                                              ; preds = %223, %67
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %223 ], [ %68, %67 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #5
  br label %225

225:                                              ; preds = %224, %65
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %224 ], [ %66, %65 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #5
  br label %226

226:                                              ; preds = %225, %63
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %225 ], [ %64, %63 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #5
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #5
  resume { ptr, i32 } %.pn.pn.pn.pn.pn.pn

227:                                              ; preds = %32, %14, %.loopexit
  %.8 = phi i32 [ %.7, %.loopexit ], [ 102, %14 ], [ 901, %32 ]
  ret i32 %.8
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNSt8valarrayIdEC2EPKdm(ptr noundef nonnull align 8 dereferenceable(16), ptr noalias noundef, i64 noundef) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3ipx5Model10ScalePointERSt8valarrayIdES3_S3_S3_S3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(704), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3ipx5Model23DualizeIPMStartingPointERKSt8valarrayIdES4_S4_S4_S4_S4_S4_RS2_S5_S5_S5_S5_S5_(ptr noundef nonnull align 8 dereferenceable(704), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTSN3ipx5ModelE", !7, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !11, i64 24, !11, i64 152, !21, i64 280, !21, i64 296, !21, i64 312, !21, i64 328, !23, i64 344, !23, i64 352, !10, i64 360, !10, i64 364, !10, i64 368, !10, i64 372, !10, i64 376, !12, i64 384, !24, i64 408, !23, i64 432, !23, i64 440, !23, i64 448, !21, i64 456, !21, i64 472, !21, i64 488, !21, i64 504, !11, i64 520, !12, i64 648, !21, i64 672, !21, i64 688}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTSN3ipx12SparseMatrixE", !10, i64 0, !12, i64 8, !12, i64 32, !17, i64 56, !12, i64 80, !17, i64 104}
!12 = !{!"_ZTSSt6vectorIiSaIiEE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!16 = !{!"any pointer", !8, i64 0}
!17 = !{!"_ZTSSt6vectorIdSaIdEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!21 = !{!"_ZTSSt8valarrayIdE", !22, i64 0, !16, i64 8}
!22 = !{!"long", !8, i64 0}
!23 = !{!"double", !8, i64 0}
!24 = !{!"_ZTSSt6vectorIcSaIcEE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!28 = !{i8 0, i8 2}
!29 = !{}
!30 = !{!6, !10, i64 368}
!31 = !{!6, !10, i64 360}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = !{!23, !23, i64 0}
!35 = distinct !{!35, !33}
!36 = distinct !{!36, !33}
!37 = !{!8, !8, i64 0}
!38 = distinct !{!38, !33}
!39 = distinct !{!39, !33}
!40 = distinct !{!40, !33}
!41 = distinct !{!41, !33}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass