; LLVM IR from rdguez-mariano/fast_imas_IPOL :: libSimuTilts/fproj.ll (Z5fprojRKSt6vectorIfSaIfEERS1_iiPiS5_PfS5_S6_PcffffffS6_S6_)

; 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::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }

@.str = external hidden unnamed_addr constant [35 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z5fprojRKSt6vectorIfSaIfEERS1_iiPiS5_PfS5_S6_PcffffffS6_S6_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, float noundef %10, float noundef %11, float noundef %12, float noundef %13, float noundef %14, float noundef %15, ptr noundef %16, ptr noundef %17) #0 personality ptr @__gxx_personality_v0 {
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %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 float, align 4
  %30 = alloca float, align 4
  %31 = alloca float, align 4
  %32 = alloca float, align 4
  %33 = alloca float, align 4
  %34 = alloca float, align 4
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %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 float, align 4
  %47 = alloca float, align 4
  %48 = alloca float, align 4
  %49 = alloca float, align 4
  %50 = alloca float, align 4
  %51 = alloca float, align 4
  %52 = alloca float, align 4
  %53 = alloca float, align 4
  %54 = alloca float, align 4
  %55 = alloca float, align 4
  %56 = alloca float, align 4
  %57 = alloca float, align 4
  %58 = alloca float, align 4
  %59 = alloca float, align 4
  %60 = alloca float, align 4
  %61 = alloca float, align 4
  %62 = alloca [12 x float], align 16
  %63 = alloca [12 x float], align 16
  %64 = alloca [13 x float], align 16
  %65 = alloca %"class.std::vector", align 8
  %66 = alloca %"class.std::vector", align 8
  %67 = alloca ptr, align 8
  %68 = alloca i32, align 4
  %69 = alloca %"class.std::vector", align 8
  %70 = alloca %"class.std::allocator", align 1
  store ptr %0, ptr %19, align 8, !tbaa !5
  store ptr %1, ptr %20, align 8, !tbaa !5
  store i32 %2, ptr %21, align 4, !tbaa !9
  store i32 %3, ptr %22, align 4, !tbaa !9
  store ptr %4, ptr %23, align 8, !tbaa !5
  store ptr %5, ptr %24, align 8, !tbaa !5
  store ptr %6, ptr %25, align 8, !tbaa !5
  store ptr %7, ptr %26, align 8, !tbaa !5
  store ptr %8, ptr %27, align 8, !tbaa !5
  store ptr %9, ptr %28, align 8, !tbaa !5
  store float %10, ptr %29, align 4, !tbaa !11
  store float %11, ptr %30, align 4, !tbaa !11
  store float %12, ptr %31, align 4, !tbaa !11
  store float %13, ptr %32, align 4, !tbaa !11
  store float %14, ptr %33, align 4, !tbaa !11
  store float %15, ptr %34, align 4, !tbaa !11
  store ptr %16, ptr %35, align 8, !tbaa !5
  store ptr %17, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr %62) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr %63) #6
  call void @llvm.lifetime.start.p0(i64 52, ptr %64) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %65) #6
  call void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %66) #6
  call void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #6
  %71 = load ptr, ptr %26, align 8, !tbaa !5
  %72 = load i32, ptr %71, align 4, !tbaa !9
  %73 = icmp ne i32 %72, 0
  br i1 %73, label %74, label %109

74:                                               ; preds = %18
  %75 = load ptr, ptr %26, align 8, !tbaa !5
  %76 = load i32, ptr %75, align 4, !tbaa !9
  %77 = icmp ne i32 %76, 1
  br i1 %77, label %78, label %109

78:                                               ; preds = %74
  %79 = load ptr, ptr %26, align 8, !tbaa !5
  %80 = load i32, ptr %79, align 4, !tbaa !9
  %81 = icmp ne i32 %80, -3
  br i1 %81, label %82, label %109

82:                                               ; preds = %78
  %83 = load ptr, ptr %26, align 8, !tbaa !5
  %84 = load i32, ptr %83, align 4, !tbaa !9
  %85 = icmp ne i32 %84, 3
  br i1 %85, label %86, label %109

86:                                               ; preds = %82
  %87 = load ptr, ptr %26, align 8, !tbaa !5
  %88 = load i32, ptr %87, align 4, !tbaa !9
  %89 = icmp ne i32 %88, 5
  br i1 %89, label %90, label %109

90:                                               ; preds = %86
  %91 = load ptr, ptr %26, align 8, !tbaa !5
  %92 = load i32, ptr %91, align 4, !tbaa !9
  %93 = icmp ne i32 %92, 7
  br i1 %93, label %94, label %109

94:                                               ; preds = %90
  %95 = load ptr, ptr %26, align 8, !tbaa !5
  %96 = load i32, ptr %95, align 4, !tbaa !9
  %97 = icmp ne i32 %96, 9
  br i1 %97, label %98, label %109

98:                                               ; preds = %94
  %99 = load ptr, ptr %26, align 8, !tbaa !5
  %100 = load i32, ptr %99, align 4, !tbaa !9
  %101 = icmp ne i32 %100, 11
  br i1 %101, label %102, label %109

102:                                              ; preds = %98
  %103 = invoke i32 (ptr, ...) @printf(ptr noundef @.str)
          to label %104 unwind label %105

104:                                              ; preds = %102
  call void @exit(i32 noundef -1) #7
  unreachable

105:                                              ; preds = %696, %602, %592, %588, %585, %579, %574, %141, %131, %125, %118, %102
  %106 = landingpad { ptr, i32 }
          cleanup
  %107 = extractvalue { ptr, i32 } %106, 0
  store ptr %107, ptr %67, align 8
  %108 = extractvalue { ptr, i32 } %106, 1
  store i32 %108, ptr %68, align 4
  br label %753

109:                                              ; preds = %98, %94, %90, %86, %82, %78, %74, %18
  %110 = load ptr, ptr %26, align 8, !tbaa !5
  %111 = load i32, ptr %110, align 4, !tbaa !9
  %112 = icmp sge i32 %111, 3
  br i1 %112, label %113, label %141

113:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 24, ptr %69) #6
  %114 = load i32, ptr %21, align 4, !tbaa !9
  %115 = load i32, ptr %22, align 4, !tbaa !9
  %116 = mul nsw i32 %114, %115
  %117 = sext i32 %116 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #6
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #6
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %69, i64 noundef %117, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %118 unwind label %136

118:                                              ; preds = %113
  %119 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIfSaIfEEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %66, ptr noundef nonnull align 8 dereferenceable(24) %69) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #6
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %69) #6
  %120 = load ptr, ptr %19, align 8, !tbaa !5
  %121 = load ptr, ptr %26, align 8, !tbaa !5
  %122 = load i32, ptr %121, align 4, !tbaa !9
  %123 = load i32, ptr %21, align 4, !tbaa !9
  %124 = load i32, ptr %22, align 4, !tbaa !9
  invoke void @_Z10finvsplineRKSt6vectorIfSaIfEEiRS1_ii(ptr noundef nonnull align 8 dereferenceable(24) %120, i32 noundef %122, ptr noundef nonnull align 8 dereferenceable(24) %66, i32 noundef %123, i32 noundef %124)
          to label %125 unwind label %105

125:                                              ; preds = %118
  %126 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIfSaIfEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef nonnull align 8 dereferenceable(24) %66)
          to label %127 unwind label %105

127:                                              ; preds = %125
  %128 = load ptr, ptr %26, align 8, !tbaa !5
  %129 = load i32, ptr %128, align 4, !tbaa !9
  %130 = icmp sgt i32 %129, 3
  br i1 %130, label %131, label %140

131:                                              ; preds = %127
  %132 = getelementptr inbounds [13 x float], ptr %64, i64 0, i64 0
  %133 = load ptr, ptr %26, align 8, !tbaa !5
  %134 = load i32, ptr %133, align 4, !tbaa !9
  invoke void @_Z12init_splinenPfi(ptr noundef %132, i32 noundef %134)
          to label %135 unwind label %105

135:                                              ; preds = %131
  br label %140

136:                                              ; preds = %113
  %137 = landingpad { ptr, i32 }
          cleanup
  %138 = extractvalue { ptr, i32 } %137, 0
  store ptr %138, ptr %67, align 8
  %139 = extractvalue { ptr, i32 } %137, 1
  store i32 %139, ptr %68, align 4
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %69) #6
  br label %753

140:                                              ; preds = %135, %127
  br label %145

141:                                              ; preds = %109
  %142 = load ptr, ptr %19, align 8, !tbaa !5
  %143 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIfSaIfEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef nonnull align 8 dereferenceable(24) %142)
          to label %144 unwind label %105

144:                                              ; preds = %141
  br label %145

145:                                              ; preds = %144, %140
  %146 = load ptr, ptr %28, align 8, !tbaa !5
  %147 = icmp ne ptr %146, null
  br i1 %147, label %148, label %173

148:                                              ; preds = %145
  %149 = load float, ptr %31, align 4, !tbaa !11
  %150 = load float, ptr %29, align 4, !tbaa !11
  %151 = fsub float %149, %150
  %152 = load i32, ptr %21, align 4, !tbaa !9
  %153 = sitofp i32 %152 to float
  %154 = fdiv float %151, %153
  store float %154, ptr %58, align 4, !tbaa !11
  %155 = load float, ptr %32, align 4, !tbaa !11
  %156 = load float, ptr %30, align 4, !tbaa !11
  %157 = fsub float %155, %156
  %158 = load i32, ptr %21, align 4, !tbaa !9
  %159 = sitofp i32 %158 to float
  %160 = fdiv float %157, %159
  store float %160, ptr %60, align 4, !tbaa !11
  %161 = load float, ptr %33, align 4, !tbaa !11
  %162 = load float, ptr %29, align 4, !tbaa !11
  %163 = fsub float %161, %162
  %164 = load i32, ptr %22, align 4, !tbaa !9
  %165 = sitofp i32 %164 to float
  %166 = fdiv float %163, %165
  store float %166, ptr %59, align 4, !tbaa !11
  %167 = load float, ptr %34, align 4, !tbaa !11
  %168 = load float, ptr %30, align 4, !tbaa !11
  %169 = fsub float %167, %168
  %170 = load i32, ptr %22, align 4, !tbaa !9
  %171 = sitofp i32 %170 to float
  %172 = fdiv float %169, %171
  store float %172, ptr %61, align 4, !tbaa !11
  br label %202

173:                                              ; preds = %145
  %174 = load float, ptr %31, align 4, !tbaa !11
  %175 = load float, ptr %29, align 4, !tbaa !11
  %176 = fsub float %174, %175
  %177 = load ptr, ptr %23, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = sitofp i32 %178 to float
  %180 = fdiv float %176, %179
  store float %180, ptr %58, align 4, !tbaa !11
  %181 = load float, ptr %32, align 4, !tbaa !11
  %182 = load float, ptr %30, align 4, !tbaa !11
  %183 = fsub float %181, %182
  %184 = load ptr, ptr %23, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  %186 = sitofp i32 %185 to float
  %187 = fdiv float %183, %186
  store float %187, ptr %60, align 4, !tbaa !11
  %188 = load float, ptr %33, align 4, !tbaa !11
  %189 = load float, ptr %29, align 4, !tbaa !11
  %190 = fsub float %188, %189
  %191 = load ptr, ptr %24, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !9
  %193 = sitofp i32 %192 to float
  %194 = fdiv float %190, %193
  store float %194, ptr %59, align 4, !tbaa !11
  %195 = load float, ptr %34, align 4, !tbaa !11
  %196 = load float, ptr %30, align 4, !tbaa !11
  %197 = fsub float %195, %196
  %198 = load ptr, ptr %24, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = sitofp i32 %199 to float
  %201 = fdiv float %197, %200
  store float %201, ptr %61, align 4, !tbaa !11
  br label %202

202:                                              ; preds = %173, %148
  %203 = load ptr, ptr %36, align 8, !tbaa !5
  %204 = icmp ne ptr %203, null
  br i1 %204, label %205, label %294

205:                                              ; preds = %202
  %206 = load ptr, ptr %35, align 8, !tbaa !5
  %207 = load float, ptr %206, align 4, !tbaa !11
  %208 = load float, ptr %29, align 4, !tbaa !11
  %209 = fsub float %207, %208
  %210 = load float, ptr %34, align 4, !tbaa !11
  %211 = load float, ptr %30, align 4, !tbaa !11
  %212 = fsub float %210, %211
  %213 = load ptr, ptr %36, align 8, !tbaa !5
  %214 = load float, ptr %213, align 4, !tbaa !11
  %215 = load float, ptr %30, align 4, !tbaa !11
  %216 = fsub float %214, %215
  %217 = load float, ptr %33, align 4, !tbaa !11
  %218 = load float, ptr %29, align 4, !tbaa !11
  %219 = fsub float %217, %218
  %220 = fmul float %216, %219
  %221 = fneg float %220
  %222 = call float @llvm.fmuladd.f32(float %209, float %212, float %221)
  %223 = load float, ptr %31, align 4, !tbaa !11
  %224 = load float, ptr %29, align 4, !tbaa !11
  %225 = fsub float %223, %224
  %226 = load float, ptr %34, align 4, !tbaa !11
  %227 = load float, ptr %30, align 4, !tbaa !11
  %228 = fsub float %226, %227
  %229 = load float, ptr %32, align 4, !tbaa !11
  %230 = load float, ptr %30, align 4, !tbaa !11
  %231 = fsub float %229, %230
  %232 = load float, ptr %33, align 4, !tbaa !11
  %233 = load float, ptr %29, align 4, !tbaa !11
  %234 = fsub float %232, %233
  %235 = fmul float %231, %234
  %236 = fneg float %235
  %237 = call float @llvm.fmuladd.f32(float %225, float %228, float %236)
  %238 = fdiv float %222, %237
  store float %238, ptr %47, align 4, !tbaa !11
  %239 = load ptr, ptr %35, align 8, !tbaa !5
  %240 = load float, ptr %239, align 4, !tbaa !11
  %241 = load float, ptr %29, align 4, !tbaa !11
  %242 = fsub float %240, %241
  %243 = load float, ptr %32, align 4, !tbaa !11
  %244 = load float, ptr %30, align 4, !tbaa !11
  %245 = fsub float %243, %244
  %246 = load ptr, ptr %36, align 8, !tbaa !5
  %247 = load float, ptr %246, align 4, !tbaa !11
  %248 = load float, ptr %30, align 4, !tbaa !11
  %249 = fsub float %247, %248
  %250 = load float, ptr %31, align 4, !tbaa !11
  %251 = load float, ptr %29, align 4, !tbaa !11
  %252 = fsub float %250, %251
  %253 = fmul float %249, %252
  %254 = fneg float %253
  %255 = call float @llvm.fmuladd.f32(float %242, float %245, float %254)
  %256 = load float, ptr %33, align 4, !tbaa !11
  %257 = load float, ptr %29, align 4, !tbaa !11
  %258 = fsub float %256, %257
  %259 = load float, ptr %32, align 4, !tbaa !11
  %260 = load float, ptr %30, align 4, !tbaa !11
  %261 = fsub float %259, %260
  %262 = load float, ptr %34, align 4, !tbaa !11
  %263 = load float, ptr %30, align 4, !tbaa !11
  %264 = fsub float %262, %263
  %265 = load float, ptr %31, align 4, !tbaa !11
  %266 = load float, ptr %29, align 4, !tbaa !11
  %267 = fsub float %265, %266
  %268 = fmul float %264, %267
  %269 = fneg float %268
  %270 = call float @llvm.fmuladd.f32(float %258, float %261, float %269)
  %271 = fdiv float %255, %270
  store float %271, ptr %48, align 4, !tbaa !11
  %272 = load float, ptr %48, align 4, !tbaa !11
  %273 = fpext float %272 to double
  %274 = fsub double %273, 1.000000e+00
  %275 = load float, ptr %47, align 4, !tbaa !11
  %276 = fpext float %275 to double
  %277 = fsub double 1.000000e+00, %276
  %278 = load float, ptr %48, align 4, !tbaa !11
  %279 = fpext float %278 to double
  %280 = fsub double %277, %279
  %281 = fdiv double %274, %280
  %282 = fptrunc double %281 to float
  store float %282, ptr %53, align 4, !tbaa !11
  %283 = load float, ptr %47, align 4, !tbaa !11
  %284 = fpext float %283 to double
  %285 = fsub double %284, 1.000000e+00
  %286 = load float, ptr %47, align 4, !tbaa !11
  %287 = fpext float %286 to double
  %288 = fsub double 1.000000e+00, %287
  %289 = load float, ptr %48, align 4, !tbaa !11
  %290 = fpext float %289 to double
  %291 = fsub double %288, %290
  %292 = fdiv double %285, %291
  %293 = fptrunc double %292 to float
  store float %293, ptr %54, align 4, !tbaa !11
  br label %295

294:                                              ; preds = %202
  store float 0.000000e+00, ptr %54, align 4, !tbaa !11
  store float 0.000000e+00, ptr %53, align 4, !tbaa !11
  br label %295

295:                                              ; preds = %294, %205
  store i32 0, ptr %39, align 4, !tbaa !9
  br label %296

296:                                              ; preds = %749, %295
  %297 = load i32, ptr %39, align 4, !tbaa !9
  %298 = load ptr, ptr %23, align 8, !tbaa !5
  %299 = load i32, ptr %298, align 4, !tbaa !9
  %300 = icmp slt i32 %297, %299
  br i1 %300, label %301, label %752

301:                                              ; preds = %296
  store i32 0, ptr %40, align 4, !tbaa !9
  br label %302

302:                                              ; preds = %745, %301
  %303 = load i32, ptr %40, align 4, !tbaa !9
  %304 = load ptr, ptr %24, align 8, !tbaa !5
  %305 = load i32, ptr %304, align 4, !tbaa !9
  %306 = icmp slt i32 %303, %305
  br i1 %306, label %307, label %748

307:                                              ; preds = %302
  %308 = load ptr, ptr %28, align 8, !tbaa !5
  %309 = icmp ne ptr %308, null
  br i1 %309, label %310, label %408

310:                                              ; preds = %307
  %311 = load i32, ptr %39, align 4, !tbaa !9
  %312 = sitofp i32 %311 to float
  %313 = load float, ptr %29, align 4, !tbaa !11
  %314 = fsub float %312, %313
  %315 = load float, ptr %61, align 4, !tbaa !11
  %316 = load i32, ptr %40, align 4, !tbaa !9
  %317 = sitofp i32 %316 to float
  %318 = load float, ptr %30, align 4, !tbaa !11
  %319 = fsub float %317, %318
  %320 = load float, ptr %59, align 4, !tbaa !11
  %321 = fmul float %319, %320
  %322 = fneg float %321
  %323 = call float @llvm.fmuladd.f32(float %314, float %315, float %322)
  %324 = load float, ptr %58, align 4, !tbaa !11
  %325 = load float, ptr %61, align 4, !tbaa !11
  %326 = load float, ptr %60, align 4, !tbaa !11
  %327 = load float, ptr %59, align 4, !tbaa !11
  %328 = fmul float %326, %327
  %329 = fneg float %328
  %330 = call float @llvm.fmuladd.f32(float %324, float %325, float %329)
  %331 = fdiv float %323, %330
  %332 = fpext float %331 to double
  %333 = fadd double 5.000000e-01, %332
  %334 = fptrunc double %333 to float
  store float %334, ptr %47, align 4, !tbaa !11
  %335 = load i32, ptr %39, align 4, !tbaa !9
  %336 = sitofp i32 %335 to float
  %337 = load float, ptr %29, align 4, !tbaa !11
  %338 = fsub float %336, %337
  %339 = load float, ptr %60, align 4, !tbaa !11
  %340 = load i32, ptr %40, align 4, !tbaa !9
  %341 = sitofp i32 %340 to float
  %342 = load float, ptr %30, align 4, !tbaa !11
  %343 = fsub float %341, %342
  %344 = load float, ptr %58, align 4, !tbaa !11
  %345 = fmul float %343, %344
  %346 = fneg float %345
  %347 = call float @llvm.fmuladd.f32(float %338, float %339, float %346)
  %348 = load float, ptr %58, align 4, !tbaa !11
  %349 = load float, ptr %61, align 4, !tbaa !11
  %350 = load float, ptr %60, align 4, !tbaa !11
  %351 = load float, ptr %59, align 4, !tbaa !11
  %352 = fmul float %350, %351
  %353 = fneg float %352
  %354 = call float @llvm.fmuladd.f32(float %348, float %349, float %353)
  %355 = fdiv float %347, %354
  %356 = fpext float %355 to double
  %357 = fsub double 5.000000e-01, %356
  %358 = fptrunc double %357 to float
  store float %358, ptr %48, align 4, !tbaa !11
  %359 = load float, ptr %53, align 4, !tbaa !11
  %360 = fpext float %359 to double
  %361 = load float, ptr %53, align 4, !tbaa !11
  %362 = fpext float %361 to double
  %363 = fadd double %362, 1.000000e+00
  %364 = fdiv double %360, %363
  %365 = load float, ptr %47, align 4, !tbaa !11
  %366 = fpext float %365 to double
  %367 = fmul double %364, %366
  %368 = load i32, ptr %21, align 4, !tbaa !9
  %369 = sitofp i32 %368 to float
  %370 = fpext float %369 to double
  %371 = fdiv double %367, %370
  %372 = fsub double 1.000000e+00, %371
  %373 = load float, ptr %54, align 4, !tbaa !11
  %374 = fpext float %373 to double
  %375 = load float, ptr %54, align 4, !tbaa !11
  %376 = fpext float %375 to double
  %377 = fadd double %376, 1.000000e+00
  %378 = fdiv double %374, %377
  %379 = load float, ptr %48, align 4, !tbaa !11
  %380 = fpext float %379 to double
  %381 = fmul double %378, %380
  %382 = load i32, ptr %22, align 4, !tbaa !9
  %383 = sitofp i32 %382 to float
  %384 = fpext float %383 to double
  %385 = fdiv double %381, %384
  %386 = fsub double %372, %385
  %387 = fptrunc double %386 to float
  store float %387, ptr %55, align 4, !tbaa !11
  %388 = load float, ptr %47, align 4, !tbaa !11
  %389 = fpext float %388 to double
  %390 = load float, ptr %53, align 4, !tbaa !11
  %391 = fpext float %390 to double
  %392 = fadd double %391, 1.000000e+00
  %393 = load float, ptr %55, align 4, !tbaa !11
  %394 = fpext float %393 to double
  %395 = fmul double %392, %394
  %396 = fdiv double %389, %395
  %397 = fptrunc double %396 to float
  store float %397, ptr %49, align 4, !tbaa !11
  %398 = load float, ptr %48, align 4, !tbaa !11
  %399 = fpext float %398 to double
  %400 = load float, ptr %54, align 4, !tbaa !11
  %401 = fpext float %400 to double
  %402 = fadd double %401, 1.000000e+00
  %403 = load float, ptr %55, align 4, !tbaa !11
  %404 = fpext float %403 to double
  %405 = fmul double %402, %404
  %406 = fdiv double %399, %405
  %407 = fptrunc double %406 to float
  store float %407, ptr %50, align 4, !tbaa !11
  br label %471

408:                                              ; preds = %307
  %409 = load i32, ptr %39, align 4, !tbaa !9
  %410 = sitofp i32 %409 to float
  %411 = fpext float %410 to double
  %412 = fadd double %411, 5.000000e-01
  %413 = fptrunc double %412 to float
  store float %413, ptr %56, align 4, !tbaa !11
  %414 = load i32, ptr %40, align 4, !tbaa !9
  %415 = sitofp i32 %414 to float
  %416 = fpext float %415 to double
  %417 = fadd double %416, 5.000000e-01
  %418 = fptrunc double %417 to float
  store float %418, ptr %57, align 4, !tbaa !11
  %419 = load float, ptr %53, align 4, !tbaa !11
  %420 = load float, ptr %56, align 4, !tbaa !11
  %421 = fmul float %419, %420
  %422 = load ptr, ptr %23, align 8, !tbaa !5
  %423 = load i32, ptr %422, align 4, !tbaa !9
  %424 = sitofp i32 %423 to float
  %425 = fdiv float %421, %424
  %426 = load float, ptr %54, align 4, !tbaa !11
  %427 = load float, ptr %57, align 4, !tbaa !11
  %428 = fmul float %426, %427
  %429 = load ptr, ptr %24, align 8, !tbaa !5
  %430 = load i32, ptr %429, align 4, !tbaa !9
  %431 = sitofp i32 %430 to float
  %432 = fdiv float %428, %431
  %433 = fadd float %425, %432
  %434 = fpext float %433 to double
  %435 = fadd double %434, 1.000000e+00
  %436 = fptrunc double %435 to float
  store float %436, ptr %55, align 4, !tbaa !11
  %437 = load float, ptr %53, align 4, !tbaa !11
  %438 = fpext float %437 to double
  %439 = fadd double %438, 1.000000e+00
  %440 = load float, ptr %56, align 4, !tbaa !11
  %441 = fpext float %440 to double
  %442 = fmul double %439, %441
  %443 = load float, ptr %55, align 4, !tbaa !11
  %444 = fpext float %443 to double
  %445 = fdiv double %442, %444
  %446 = fptrunc double %445 to float
  store float %446, ptr %47, align 4, !tbaa !11
  %447 = load float, ptr %54, align 4, !tbaa !11
  %448 = fpext float %447 to double
  %449 = fadd double %448, 1.000000e+00
  %450 = load float, ptr %57, align 4, !tbaa !11
  %451 = fpext float %450 to double
  %452 = fmul double %449, %451
  %453 = load float, ptr %55, align 4, !tbaa !11
  %454 = fpext float %453 to double
  %455 = fdiv double %452, %454
  %456 = fptrunc double %455 to float
  store float %456, ptr %48, align 4, !tbaa !11
  %457 = load float, ptr %29, align 4, !tbaa !11
  %458 = load float, ptr %47, align 4, !tbaa !11
  %459 = load float, ptr %58, align 4, !tbaa !11
  %460 = call float @llvm.fmuladd.f32(float %458, float %459, float %457)
  %461 = load float, ptr %48, align 4, !tbaa !11
  %462 = load float, ptr %59, align 4, !tbaa !11
  %463 = call float @llvm.fmuladd.f32(float %461, float %462, float %460)
  store float %463, ptr %49, align 4, !tbaa !11
  %464 = load float, ptr %30, align 4, !tbaa !11
  %465 = load float, ptr %47, align 4, !tbaa !11
  %466 = load float, ptr %60, align 4, !tbaa !11
  %467 = call float @llvm.fmuladd.f32(float %465, float %466, float %464)
  %468 = load float, ptr %48, align 4, !tbaa !11
  %469 = load float, ptr %61, align 4, !tbaa !11
  %470 = call float @llvm.fmuladd.f32(float %468, float %469, float %467)
  store float %470, ptr %50, align 4, !tbaa !11
  br label %471

471:                                              ; preds = %408, %310
  %472 = load ptr, ptr %26, align 8, !tbaa !5
  %473 = load i32, ptr %472, align 4, !tbaa !9
  %474 = icmp eq i32 %473, 0
  br i1 %474, label %475, label %511

475:                                              ; preds = %471
  %476 = load float, ptr %49, align 4, !tbaa !11
  %477 = fpext float %476 to double
  %478 = call double @llvm.floor.f64(double %477)
  %479 = fptosi double %478 to i32
  store i32 %479, ptr %41, align 4, !tbaa !9
  %480 = load float, ptr %50, align 4, !tbaa !11
  %481 = fpext float %480 to double
  %482 = call double @llvm.floor.f64(double %481)
  %483 = fptosi double %482 to i32
  store i32 %483, ptr %42, align 4, !tbaa !9
  %484 = load i32, ptr %41, align 4, !tbaa !9
  %485 = icmp slt i32 %484, 0
  br i1 %485, label %497, label %486

486:                                              ; preds = %475
  %487 = load i32, ptr %41, align 4, !tbaa !9
  %488 = load i32, ptr %21, align 4, !tbaa !9
  %489 = icmp sge i32 %487, %488
  br i1 %489, label %497, label %490

490:                                              ; preds = %486
  %491 = load i32, ptr %42, align 4, !tbaa !9
  %492 = icmp slt i32 %491, 0
  br i1 %492, label %497, label %493

493:                                              ; preds = %490
  %494 = load i32, ptr %42, align 4, !tbaa !9
  %495 = load i32, ptr %22, align 4, !tbaa !9
  %496 = icmp sge i32 %494, %495
  br i1 %496, label %497, label %500

497:                                              ; preds = %493, %490, %486, %475
  %498 = load ptr, ptr %25, align 8, !tbaa !5
  %499 = load float, ptr %498, align 4, !tbaa !11
  store float %499, ptr %46, align 4, !tbaa !11
  br label %510

500:                                              ; preds = %493
  %501 = load ptr, ptr %19, align 8, !tbaa !5
  %502 = load i32, ptr %42, align 4, !tbaa !9
  %503 = load i32, ptr %21, align 4, !tbaa !9
  %504 = mul nsw i32 %502, %503
  %505 = load i32, ptr %41, align 4, !tbaa !9
  %506 = add nsw i32 %504, %505
  %507 = sext i32 %506 to i64
  %508 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %501, i64 noundef %507) #6
  %509 = load float, ptr %508, align 4, !tbaa !11
  store float %509, ptr %46, align 4, !tbaa !11
  br label %510

510:                                              ; preds = %500, %497
  br label %734

511:                                              ; preds = %471
  %512 = load float, ptr %49, align 4, !tbaa !11
  %513 = fpext float %512 to double
  %514 = fcmp olt double %513, 0.000000e+00
  br i1 %514, label %529, label %515

515:                                              ; preds = %511
  %516 = load float, ptr %49, align 4, !tbaa !11
  %517 = load i32, ptr %21, align 4, !tbaa !9
  %518 = sitofp i32 %517 to float
  %519 = fcmp ogt float %516, %518
  br i1 %519, label %529, label %520

520:                                              ; preds = %515
  %521 = load float, ptr %50, align 4, !tbaa !11
  %522 = fpext float %521 to double
  %523 = fcmp olt double %522, 0.000000e+00
  br i1 %523, label %529, label %524

524:                                              ; preds = %520
  %525 = load float, ptr %50, align 4, !tbaa !11
  %526 = load i32, ptr %22, align 4, !tbaa !9
  %527 = sitofp i32 %526 to float
  %528 = fcmp ogt float %525, %527
  br i1 %528, label %529, label %532

529:                                              ; preds = %524, %520, %515, %511
  %530 = load ptr, ptr %25, align 8, !tbaa !5
  %531 = load float, ptr %530, align 4, !tbaa !11
  store float %531, ptr %46, align 4, !tbaa !11
  br label %733

532:                                              ; preds = %524
  %533 = load float, ptr %49, align 4, !tbaa !11
  %534 = fpext float %533 to double
  %535 = fsub double %534, 5.000000e-01
  %536 = fptrunc double %535 to float
  store float %536, ptr %49, align 4, !tbaa !11
  %537 = load float, ptr %50, align 4, !tbaa !11
  %538 = fpext float %537 to double
  %539 = fsub double %538, 5.000000e-01
  %540 = fptrunc double %539 to float
  store float %540, ptr %50, align 4, !tbaa !11
  %541 = load float, ptr %49, align 4, !tbaa !11
  %542 = fpext float %541 to double
  %543 = call double @llvm.floor.f64(double %542)
  %544 = fptosi double %543 to i32
  store i32 %544, ptr %41, align 4, !tbaa !9
  %545 = load float, ptr %50, align 4, !tbaa !11
  %546 = fpext float %545 to double
  %547 = call double @llvm.floor.f64(double %546)
  %548 = fptosi double %547 to i32
  store i32 %548, ptr %42, align 4, !tbaa !9
  %549 = load float, ptr %49, align 4, !tbaa !11
  %550 = load i32, ptr %41, align 4, !tbaa !9
  %551 = sitofp i32 %550 to float
  %552 = fsub float %549, %551
  store float %552, ptr %51, align 4, !tbaa !11
  %553 = load float, ptr %50, align 4, !tbaa !11
  %554 = load i32, ptr %42, align 4, !tbaa !9
  %555 = sitofp i32 %554 to float
  %556 = fsub float %553, %555
  store float %556, ptr %52, align 4, !tbaa !11
  %557 = load ptr, ptr %26, align 8, !tbaa !5
  %558 = load i32, ptr %557, align 4, !tbaa !9
  switch i32 %558, label %592 [
    i32 1, label %559
    i32 -3, label %574
    i32 3, label %585
  ]

559:                                              ; preds = %532
  store i32 1, ptr %38, align 4, !tbaa !9
  %560 = load float, ptr %51, align 4, !tbaa !11
  %561 = getelementptr inbounds [12 x float], ptr %62, i64 0, i64 0
  store float %560, ptr %561, align 16, !tbaa !11
  %562 = load float, ptr %51, align 4, !tbaa !11
  %563 = fpext float %562 to double
  %564 = fsub double 1.000000e+00, %563
  %565 = fptrunc double %564 to float
  %566 = getelementptr inbounds [12 x float], ptr %62, i64 0, i64 1
  store float %565, ptr %566, align 4, !tbaa !11
  %567 = load float, ptr %52, align 4, !tbaa !11
  %568 = getelementptr inbounds [12 x float], ptr %63, i64 0, i64 0
  store float %567, ptr %568, align 16, !tbaa !11
  %569 = load float, ptr %52, align 4, !tbaa !11
  %570 = fpext float %569 to double
  %571 = fsub double 1.000000e+00, %570
  %572 = fptrunc double %571 to float
  %573 = getelementptr inbounds [12 x float], ptr %63, i64 0, i64 1
  store float %572, ptr %573, align 4, !tbaa !11
  br label %609

574:                                              ; preds = %532
  store i32 2, ptr %38, align 4, !tbaa !9
  %575 = getelementptr inbounds [12 x float], ptr %62, i64 0, i64 0
  %576 = load float, ptr %51, align 4, !tbaa !11
  %577 = load ptr, ptr %27, align 8, !tbaa !5
  %578 = load float, ptr %577, align 4, !tbaa !11
  invoke void @_Z4keysPfff(ptr noundef %575, float noundef %576, float noundef %578)
          to label %579 unwind label %105

579:                                              ; preds = %574
  %580 = getelementptr inbounds [12 x float], ptr %63, i64 0, i64 0
  %581 = load float, ptr %52, align 4, !tbaa !11
  %582 = load ptr, ptr %27, align 8, !tbaa !5
  %583 = load float, ptr %582, align 4, !tbaa !11
  invoke void @_Z4keysPfff(ptr noundef %580, float noundef %581, float noundef %583)
          to label %584 unwind label %105

584:                                              ; preds = %579
  br label %609

585:                                              ; preds = %532
  store i32 2, ptr %38, align 4, !tbaa !9
  %586 = getelementptr inbounds [12 x float], ptr %62, i64 0, i64 0
  %587 = load float, ptr %51, align 4, !tbaa !11
  invoke void @_Z7spline3Pff(ptr noundef %586, float noundef %587)
          to label %588 unwind label %105

588:                                              ; preds = %585
  %589 = getelementptr inbounds [12 x float], ptr %63, i64 0, i64 0
  %590 = load float, ptr %52, align 4, !tbaa !11
  invoke void @_Z7spline3Pff(ptr noundef %589, float noundef %590)
          to label %591 unwind label %105

591:                                              ; preds = %588
  br label %609

592:                                              ; preds = %532
  %593 = load ptr, ptr %26, align 8, !tbaa !5
  %594 = load i32, ptr %593, align 4, !tbaa !9
  %595 = add nsw i32 1, %594
  %596 = sdiv i32 %595, 2
  store i32 %596, ptr %38, align 4, !tbaa !9
  %597 = getelementptr inbounds [12 x float], ptr %62, i64 0, i64 0
  %598 = load float, ptr %51, align 4, !tbaa !11
  %599 = getelementptr inbounds [13 x float], ptr %64, i64 0, i64 0
  %600 = load ptr, ptr %26, align 8, !tbaa !5
  %601 = load i32, ptr %600, align 4, !tbaa !9
  invoke void @_Z7splinenPffS_i(ptr noundef %597, float noundef %598, ptr noundef %599, i32 noundef %601)
          to label %602 unwind label %105

602:                                              ; preds = %592
  %603 = getelementptr inbounds [12 x float], ptr %63, i64 0, i64 0
  %604 = load float, ptr %52, align 4, !tbaa !11
  %605 = getelementptr inbounds [13 x float], ptr %64, i64 0, i64 0
  %606 = load ptr, ptr %26, align 8, !tbaa !5
  %607 = load i32, ptr %606, align 4, !tbaa !9
  invoke void @_Z7splinenPffS_i(ptr noundef %603, float noundef %604, ptr noundef %605, i32 noundef %607)
          to label %608 unwind label %105

608:                                              ; preds = %602
  br label %609

609:                                              ; preds = %608, %591, %584, %559
  store float 0.000000e+00, ptr %46, align 4, !tbaa !11
  %610 = load i32, ptr %38, align 4, !tbaa !9
  %611 = sub nsw i32 1, %610
  store i32 %611, ptr %37, align 4, !tbaa !9
  %612 = load i32, ptr %41, align 4, !tbaa !9
  %613 = load i32, ptr %37, align 4, !tbaa !9
  %614 = add nsw i32 %612, %613
  %615 = icmp sge i32 %614, 0
  br i1 %615, label %616, label %684

616:                                              ; preds = %609
  %617 = load i32, ptr %41, align 4, !tbaa !9
  %618 = load i32, ptr %38, align 4, !tbaa !9
  %619 = add nsw i32 %617, %618
  %620 = load i32, ptr %21, align 4, !tbaa !9
  %621 = icmp slt i32 %619, %620
  br i1 %621, label %622, label %684

622:                                              ; preds = %616
  %623 = load i32, ptr %42, align 4, !tbaa !9
  %624 = load i32, ptr %37, align 4, !tbaa !9
  %625 = add nsw i32 %623, %624
  %626 = icmp sge i32 %625, 0
  br i1 %626, label %627, label %684

627:                                              ; preds = %622
  %628 = load i32, ptr %42, align 4, !tbaa !9
  %629 = load i32, ptr %38, align 4, !tbaa !9
  %630 = add nsw i32 %628, %629
  %631 = load i32, ptr %22, align 4, !tbaa !9
  %632 = icmp slt i32 %630, %631
  br i1 %632, label %633, label %684

633:                                              ; preds = %627
  %634 = load i32, ptr %42, align 4, !tbaa !9
  %635 = load i32, ptr %21, align 4, !tbaa !9
  %636 = mul nsw i32 %634, %635
  %637 = load i32, ptr %41, align 4, !tbaa !9
  %638 = add nsw i32 %636, %637
  store i32 %638, ptr %43, align 4, !tbaa !9
  %639 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %639, ptr %45, align 4, !tbaa !9
  br label %640

640:                                              ; preds = %680, %633
  %641 = load i32, ptr %45, align 4, !tbaa !9
  %642 = load i32, ptr %38, align 4, !tbaa !9
  %643 = icmp sle i32 %641, %642
  br i1 %643, label %644, label %683

644:                                              ; preds = %640
  %645 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %645, ptr %44, align 4, !tbaa !9
  br label %646

646:                                              ; preds = %676, %644
  %647 = load i32, ptr %44, align 4, !tbaa !9
  %648 = load i32, ptr %38, align 4, !tbaa !9
  %649 = icmp sle i32 %647, %648
  br i1 %649, label %650, label %679

650:                                              ; preds = %646
  %651 = load i32, ptr %38, align 4, !tbaa !9
  %652 = load i32, ptr %45, align 4, !tbaa !9
  %653 = sub nsw i32 %651, %652
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds [12 x float], ptr %63, i64 0, i64 %654
  %656 = load float, ptr %655, align 4, !tbaa !11
  %657 = load i32, ptr %38, align 4, !tbaa !9
  %658 = load i32, ptr %44, align 4, !tbaa !9
  %659 = sub nsw i32 %657, %658
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds [12 x float], ptr %62, i64 0, i64 %660
  %662 = load float, ptr %661, align 4, !tbaa !11
  %663 = fmul float %656, %662
  %664 = load i32, ptr %43, align 4, !tbaa !9
  %665 = load i32, ptr %21, align 4, !tbaa !9
  %666 = load i32, ptr %45, align 4, !tbaa !9
  %667 = mul nsw i32 %665, %666
  %668 = add nsw i32 %664, %667
  %669 = load i32, ptr %44, align 4, !tbaa !9
  %670 = add nsw i32 %668, %669
  %671 = sext i32 %670 to i64
  %672 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef %671) #6
  %673 = load float, ptr %672, align 4, !tbaa !11
  %674 = load float, ptr %46, align 4, !tbaa !11
  %675 = call float @llvm.fmuladd.f32(float %663, float %673, float %674)
  store float %675, ptr %46, align 4, !tbaa !11
  br label %676

676:                                              ; preds = %650
  %677 = load i32, ptr %44, align 4, !tbaa !9
  %678 = add nsw i32 %677, 1
  store i32 %678, ptr %44, align 4, !tbaa !9
  br label %646, !llvm.loop !13

679:                                              ; preds = %646
  br label %680

680:                                              ; preds = %679
  %681 = load i32, ptr %45, align 4, !tbaa !9
  %682 = add nsw i32 %681, 1
  store i32 %682, ptr %45, align 4, !tbaa !9
  br label %640, !llvm.loop !15

683:                                              ; preds = %640
  br label %732

684:                                              ; preds = %627, %622, %616, %609
  %685 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %685, ptr %45, align 4, !tbaa !9
  br label %686

686:                                              ; preds = %728, %684
  %687 = load i32, ptr %45, align 4, !tbaa !9
  %688 = load i32, ptr %38, align 4, !tbaa !9
  %689 = icmp sle i32 %687, %688
  br i1 %689, label %690, label %731

690:                                              ; preds = %686
  %691 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %691, ptr %44, align 4, !tbaa !9
  br label %692

692:                                              ; preds = %724, %690
  %693 = load i32, ptr %44, align 4, !tbaa !9
  %694 = load i32, ptr %38, align 4, !tbaa !9
  %695 = icmp sle i32 %693, %694
  br i1 %695, label %696, label %727

696:                                              ; preds = %692
  %697 = load i32, ptr %38, align 4, !tbaa !9
  %698 = load i32, ptr %45, align 4, !tbaa !9
  %699 = sub nsw i32 %697, %698
  %700 = sext i32 %699 to i64
  %701 = getelementptr inbounds [12 x float], ptr %63, i64 0, i64 %700
  %702 = load float, ptr %701, align 4, !tbaa !11
  %703 = load i32, ptr %38, align 4, !tbaa !9
  %704 = load i32, ptr %44, align 4, !tbaa !9
  %705 = sub nsw i32 %703, %704
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds [12 x float], ptr %62, i64 0, i64 %706
  %708 = load float, ptr %707, align 4, !tbaa !11
  %709 = fmul float %702, %708
  %710 = load i32, ptr %41, align 4, !tbaa !9
  %711 = load i32, ptr %44, align 4, !tbaa !9
  %712 = add nsw i32 %710, %711
  %713 = load i32, ptr %42, align 4, !tbaa !9
  %714 = load i32, ptr %45, align 4, !tbaa !9
  %715 = add nsw i32 %713, %714
  %716 = load ptr, ptr %25, align 8, !tbaa !5
  %717 = load float, ptr %716, align 4, !tbaa !11
  %718 = load i32, ptr %21, align 4, !tbaa !9
  %719 = load i32, ptr %22, align 4, !tbaa !9
  %720 = invoke noundef float @_Z1vRSt6vectorIfSaIfEEiifii(ptr noundef nonnull align 8 dereferenceable(24) %65, i32 noundef %712, i32 noundef %715, float noundef %717, i32 noundef %718, i32 noundef %719)
          to label %721 unwind label %105

721:                                              ; preds = %696
  %722 = load float, ptr %46, align 4, !tbaa !11
  %723 = call float @llvm.fmuladd.f32(float %709, float %720, float %722)
  store float %723, ptr %46, align 4, !tbaa !11
  br label %724

724:                                              ; preds = %721
  %725 = load i32, ptr %44, align 4, !tbaa !9
  %726 = add nsw i32 %725, 1
  store i32 %726, ptr %44, align 4, !tbaa !9
  br label %692, !llvm.loop !16

727:                                              ; preds = %692
  br label %728

728:                                              ; preds = %727
  %729 = load i32, ptr %45, align 4, !tbaa !9
  %730 = add nsw i32 %729, 1
  store i32 %730, ptr %45, align 4, !tbaa !9
  br label %686, !llvm.loop !17

731:                                              ; preds = %686
  br label %732

732:                                              ; preds = %731, %683
  br label %733

733:                                              ; preds = %732, %529
  br label %734

734:                                              ; preds = %733, %510
  %735 = load float, ptr %46, align 4, !tbaa !11
  %736 = load ptr, ptr %20, align 8, !tbaa !5
  %737 = load i32, ptr %40, align 4, !tbaa !9
  %738 = load ptr, ptr %23, align 8, !tbaa !5
  %739 = load i32, ptr %738, align 4, !tbaa !9
  %740 = mul nsw i32 %737, %739
  %741 = load i32, ptr %39, align 4, !tbaa !9
  %742 = add nsw i32 %740, %741
  %743 = sext i32 %742 to i64
  %744 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %736, i64 noundef %743) #6
  store float %735, ptr %744, align 4, !tbaa !11
  br label %745

745:                                              ; preds = %734
  %746 = load i32, ptr %40, align 4, !tbaa !9
  %747 = add nsw i32 %746, 1
  store i32 %747, ptr %40, align 4, !tbaa !9
  br label %302, !llvm.loop !18

748:                                              ; preds = %302
  br label %749

749:                                              ; preds = %748
  %750 = load i32, ptr %39, align 4, !tbaa !9
  %751 = add nsw i32 %750, 1
  store i32 %751, ptr %39, align 4, !tbaa !9
  br label %296, !llvm.loop !19

752:                                              ; preds = %296
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %66) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 52, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  ret void

753:                                              ; preds = %136, %105
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %66) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 52, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  br label %754

754:                                              ; preds = %753
  %755 = load ptr, ptr %67, align 8
  %756 = load i32, ptr %68, align 4
  %757 = insertvalue { ptr, i32 } poison, ptr %755, 0
  %758 = insertvalue { ptr, i32 } %757, i32 %756, 1
  resume { ptr, i32 } %758
}

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

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

declare i32 @printf(ptr noundef, ...) #3

declare i32 @__gxx_personality_v0(...)

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

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

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

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

declare void @_Z10finvsplineRKSt6vectorIfSaIfEEiRS1_ii(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIfSaIfEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

declare void @_Z12init_splinenPfi(ptr noundef, i32 noundef) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #5

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

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

declare void @_Z4keysPfff(ptr noundef, float noundef, float noundef) #3

declare void @_Z7spline3Pff(ptr noundef, float noundef) #3

declare void @_Z7splinenPffS_i(ptr noundef, float noundef, ptr noundef, i32 noundef) #3

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

declare noundef float @_Z1vRSt6vectorIfSaIfEEiifii(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, float noundef, i32 noundef, i32 noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

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

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

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


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

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }

@.str = external hidden unnamed_addr constant [35 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z5fprojRKSt6vectorIfSaIfEERS1_iiPiS5_PfS5_S6_PcffffffS6_S6_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %2, i32 noundef %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6, ptr nocapture noundef readonly %7, ptr nocapture noundef readonly %8, ptr noundef readnone %9, float noundef %10, float noundef %11, float noundef %12, float noundef %13, float noundef %14, float noundef %15, ptr nocapture noundef readonly %16, ptr noundef readonly %17) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %19 = alloca [12 x float], align 16
  %20 = alloca [12 x float], align 16
  %21 = alloca [13 x float], align 16
  %22 = alloca %"class.std::vector", align 8
  %23 = alloca %"class.std::vector", align 8
  %24 = alloca %"class.std::vector", align 8
  %25 = alloca %"class.std::allocator", align 1
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %19) #8
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %20) #8
  call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %21) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #8
  call void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #8
  call void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #8
  %26 = load i32, ptr %7, align 4, !tbaa !5
  switch i32 %26, label %27 [
    i32 0, label %29
    i32 1, label %29
    i32 -3, label %29
    i32 3, label %29
    i32 5, label %29
    i32 7, label %29
    i32 9, label %29
    i32 11, label %29
  ]

27:                                               ; preds = %18
  %28 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str)
  call void @exit(i32 noundef -1) #9
  unreachable

.loopexit:                                        ; preds = %302
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit:                      ; preds = %257, %256, %255, %254, %252, %250
  %lpad.loopexit312 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp:             ; preds = %45, %42, %37, %34
  %lpad.loopexit.split-lp313 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

29:                                               ; preds = %18, %18, %18, %18, %18, %18, %18, %18
  %30 = icmp sgt i32 %26, 2
  br i1 %30, label %31, label %45

31:                                               ; preds = %29
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #8
  %32 = mul nsw i32 %3, %2
  %33 = sext i32 %32 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #8
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %33, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %34 unwind label %43

34:                                               ; preds = %31
  %35 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIfSaIfEEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(24) %24) #8
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #8
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #8
  %36 = load i32, ptr %7, align 4, !tbaa !5
  invoke void @_Z10finvsplineRKSt6vectorIfSaIfEEiRS1_ii(ptr noundef nonnull align 8 dereferenceable(24) %0, i32 noundef %36, ptr noundef nonnull align 8 dereferenceable(24) %23, i32 noundef %2, i32 noundef %3)
          to label %37 unwind label %.loopexit.split-lp.loopexit.split-lp

37:                                               ; preds = %34
  %38 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIfSaIfEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %39 unwind label %.loopexit.split-lp.loopexit.split-lp

39:                                               ; preds = %37
  %40 = load i32, ptr %7, align 4, !tbaa !5
  %41 = icmp sgt i32 %40, 3
  br i1 %41, label %42, label %47

42:                                               ; preds = %39
  invoke void @_Z12init_splinenPfi(ptr noundef nonnull %21, i32 noundef %40)
          to label %47 unwind label %.loopexit.split-lp.loopexit.split-lp

43:                                               ; preds = %31
  %44 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #8
  br label %.loopexit.split-lp

45:                                               ; preds = %29
  %46 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIfSaIfEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %47 unwind label %.loopexit.split-lp.loopexit.split-lp

47:                                               ; preds = %45, %39, %42
  %.not285 = icmp eq ptr %9, null
  %48 = fsub float %12, %10
  br i1 %.not285, label %53, label %49

49:                                               ; preds = %47
  %50 = sitofp i32 %2 to float
  %51 = fsub float %13, %11
  %52 = fdiv float %51, %50
  br label %59

53:                                               ; preds = %47
  %54 = load i32, ptr %4, align 4, !tbaa !5
  %55 = sitofp i32 %54 to float
  %56 = fsub float %13, %11
  %57 = fdiv float %56, %55
  %58 = load i32, ptr %5, align 4, !tbaa !5
  br label %59

59:                                               ; preds = %53, %49
  %.sink363 = phi i32 [ %58, %53 ], [ %3, %49 ]
  %.pn365 = phi float [ %55, %53 ], [ %50, %49 ]
  %.0252 = phi float [ %57, %53 ], [ %52, %49 ]
  %.sink = fsub float %14, %10
  %60 = sitofp i32 %.sink363 to float
  %61 = insertelement <2 x float> poison, float %48, i64 0
  %62 = insertelement <2 x float> %61, float %.sink, i64 1
  %63 = insertelement <2 x float> poison, float %.pn365, i64 0
  %64 = insertelement <2 x float> %63, float %60, i64 1
  %65 = fdiv <2 x float> %62, %64
  %66 = fsub float %15, %11
  %67 = fdiv float %66, %60
  %.not286 = icmp eq ptr %17, null
  br i1 %.not286, label %107, label %68

68:                                               ; preds = %59
  %69 = load float, ptr %16, align 4, !tbaa !9
  %70 = fsub float %69, %10
  %71 = insertelement <2 x float> poison, float %13, i64 0
  %72 = insertelement <2 x float> %71, float %15, i64 1
  %73 = insertelement <2 x float> poison, float %11, i64 0
  %74 = shufflevector <2 x float> %73, <2 x float> poison, <2 x i32> zeroinitializer
  %75 = fsub <2 x float> %72, %74
  %76 = load float, ptr %17, align 4, !tbaa !9
  %77 = fsub float %76, %11
  %78 = insertelement <2 x float> poison, float %12, i64 0
  %79 = insertelement <2 x float> %78, float %14, i64 1
  %80 = insertelement <2 x float> poison, float %10, i64 0
  %81 = shufflevector <2 x float> %80, <2 x float> poison, <2 x i32> zeroinitializer
  %82 = fsub <2 x float> %79, %81
  %83 = fneg float %77
  %84 = insertelement <2 x float> poison, float %83, i64 0
  %85 = shufflevector <2 x float> %84, <2 x float> poison, <2 x i32> zeroinitializer
  %86 = fmul <2 x float> %82, %85
  %87 = insertelement <2 x float> poison, float %70, i64 0
  %88 = shufflevector <2 x float> %87, <2 x float> poison, <2 x i32> zeroinitializer
  %89 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %88, <2 x float> %75, <2 x float> %86)
  %90 = shufflevector <2 x float> %75, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %91 = fneg <2 x float> %90
  %92 = fmul <2 x float> %82, %91
  %93 = shufflevector <2 x float> %82, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %94 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %93, <2 x float> %75, <2 x float> %92)
  %95 = fdiv <2 x float> %89, %94
  %96 = fpext <2 x float> %95 to <2 x double>
  %97 = extractelement <2 x double> %96, i64 1
  %98 = fsub double 1.000000e+00, %97
  %99 = extractelement <2 x double> %96, i64 0
  %100 = fsub double %98, %99
  %101 = fadd <2 x double> %96, <double -1.000000e+00, double -1.000000e+00>
  %102 = shufflevector <2 x double> %101, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %103 = insertelement <2 x double> poison, double %100, i64 0
  %104 = shufflevector <2 x double> %103, <2 x double> poison, <2 x i32> zeroinitializer
  %105 = fdiv <2 x double> %102, %104
  %106 = fptrunc <2 x double> %105 to <2 x float>
  br label %107

107:                                              ; preds = %59, %68
  %108 = phi <2 x float> [ %106, %68 ], [ zeroinitializer, %59 ]
  %109 = load i32, ptr %4, align 4, !tbaa !5
  %110 = icmp sgt i32 %109, 0
  br i1 %110, label %.preheader311.lr.ph, label %._crit_edge337

.preheader311.lr.ph:                              ; preds = %107
  %111 = fneg float %.0252
  %112 = extractelement <2 x float> %65, i64 1
  %113 = fmul float %112, %111
  %114 = extractelement <2 x float> %65, i64 0
  %115 = call float @llvm.fmuladd.f32(float %114, float %67, float %113)
  %116 = fpext <2 x float> %108 to <2 x double>
  %117 = insertelement <2 x i32> poison, i32 %3, i64 0
  %118 = insertelement <2 x i32> %117, i32 %2, i64 1
  %119 = sitofp <2 x i32> %118 to <2 x float>
  %120 = fadd <2 x double> %116, <double 1.000000e+00, double 1.000000e+00>
  %121 = fdiv <2 x double> %116, %120
  %122 = fpext <2 x float> %119 to <2 x double>
  %123 = getelementptr inbounds i8, ptr %19, i64 4
  %124 = getelementptr inbounds i8, ptr %20, i64 4
  %125 = load i32, ptr %5, align 4, !tbaa !5
  %126 = icmp sgt i32 %125, 0
  br i1 %126, label %.preheader311.preheader, label %._crit_edge337

.preheader311.preheader:                          ; preds = %.preheader311.lr.ph
  %127 = extractelement <2 x float> %108, i64 1
  %128 = extractelement <2 x double> %120, i64 1
  %129 = insertelement <2 x float> poison, float %.0252, i64 0
  %130 = insertelement <2 x float> %129, float %67, i64 1
  %131 = insertelement <2 x float> poison, float %115, i64 0
  %132 = shufflevector <2 x float> %131, <2 x float> poison, <2 x i32> zeroinitializer
  %133 = insertelement <2 x float> %65, float %67, i64 0
  %134 = shufflevector <2 x float> %65, <2 x float> poison, <2 x i32> <i32 poison, i32 0>
  %135 = insertelement <2 x float> %134, float %.0252, i64 0
  %136 = insertelement <2 x float> poison, float %11, i64 0
  %137 = insertelement <2 x float> %136, float %10, i64 1
  %138 = extractelement <2 x double> %120, i64 0
  %139 = extractelement <2 x float> %108, i64 0
  %140 = extractelement <2 x float> %119, i64 0
  %141 = extractelement <2 x float> %119, i64 1
  br label %.preheader311

.preheader311:                                    ; preds = %.preheader311.preheader, %._crit_edge335
  %142 = phi i32 [ %323, %._crit_edge335 ], [ %109, %.preheader311.preheader ]
  %143 = phi i32 [ %324, %._crit_edge335 ], [ %125, %.preheader311.preheader ]
  %.0256336 = phi i32 [ %325, %._crit_edge335 ], [ 0, %.preheader311.preheader ]
  %144 = icmp sgt i32 %143, 0
  br i1 %144, label %.lr.ph, label %._crit_edge335

.lr.ph:                                           ; preds = %.preheader311
  %145 = uitofp nneg i32 %.0256336 to float
  %146 = fsub float %145, %10
  %147 = fadd float %145, 5.000000e-01
  %148 = fmul float %127, %147
  %149 = fpext float %147 to double
  %150 = fmul double %128, %149
  %151 = insertelement <2 x float> poison, float %146, i64 0
  %152 = shufflevector <2 x float> %151, <2 x float> poison, <2 x i32> zeroinitializer
  br label %153

153:                                              ; preds = %.lr.ph, %.loopexit308
  %154 = phi i32 [ %143, %.lr.ph ], [ %321, %.loopexit308 ]
  %.0259334 = phi i32 [ 0, %.lr.ph ], [ %320, %.loopexit308 ]
  %155 = uitofp nneg i32 %.0259334 to float
  br i1 %.not285, label %181, label %156

156:                                              ; preds = %153
  %157 = fsub float %155, %11
  %158 = fneg float %157
  %159 = insertelement <2 x float> poison, float %158, i64 0
  %160 = shufflevector <2 x float> %159, <2 x float> poison, <2 x i32> zeroinitializer
  %161 = fmul <2 x float> %65, %160
  %162 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %152, <2 x float> %130, <2 x float> %161)
  %163 = fdiv <2 x float> %162, %132
  %164 = fsub <2 x float> <float 5.000000e-01, float poison>, %163
  %165 = fadd <2 x float> %163, <float poison, float 5.000000e-01>
  %166 = shufflevector <2 x float> %164, <2 x float> %165, <2 x i32> <i32 0, i32 3>
  %167 = fpext <2 x float> %166 to <2 x double>
  %168 = fmul <2 x double> %121, %167
  %169 = fdiv <2 x double> %168, %122
  %170 = extractelement <2 x double> %169, i64 1
  %171 = fsub double 1.000000e+00, %170
  %172 = extractelement <2 x double> %169, i64 0
  %173 = fsub double %171, %172
  %174 = fptrunc double %173 to float
  %175 = fpext float %174 to double
  %176 = insertelement <2 x double> poison, double %175, i64 0
  %177 = shufflevector <2 x double> %176, <2 x double> poison, <2 x i32> zeroinitializer
  %178 = fmul <2 x double> %120, %177
  %179 = fdiv <2 x double> %167, %178
  %180 = fptrunc <2 x double> %179 to <2 x float>
  br label %207

181:                                              ; preds = %153
  %182 = fadd float %155, 5.000000e-01
  %183 = load i32, ptr %4, align 4, !tbaa !5
  %184 = fmul float %139, %182
  %185 = insertelement <2 x i32> poison, i32 %154, i64 0
  %186 = insertelement <2 x i32> %185, i32 %183, i64 1
  %187 = sitofp <2 x i32> %186 to <2 x float>
  %188 = insertelement <2 x float> poison, float %184, i64 0
  %189 = insertelement <2 x float> %188, float %148, i64 1
  %190 = fdiv <2 x float> %189, %187
  %shift = shufflevector <2 x float> %190, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %191 = fadd <2 x float> %190, %shift
  %192 = extractelement <2 x float> %191, i64 0
  %193 = fadd float %192, 1.000000e+00
  %194 = fpext float %193 to double
  %195 = fdiv double %150, %194
  %196 = fptrunc double %195 to float
  %197 = fpext float %182 to double
  %198 = fmul double %138, %197
  %199 = fdiv double %198, %194
  %200 = fptrunc double %199 to float
  %201 = insertelement <2 x float> poison, float %196, i64 0
  %202 = shufflevector <2 x float> %201, <2 x float> poison, <2 x i32> zeroinitializer
  %203 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %202, <2 x float> %135, <2 x float> %137)
  %204 = insertelement <2 x float> poison, float %200, i64 0
  %205 = shufflevector <2 x float> %204, <2 x float> poison, <2 x i32> zeroinitializer
  %206 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %205, <2 x float> %133, <2 x float> %203)
  br label %207

207:                                              ; preds = %181, %156
  %208 = phi <2 x float> [ %180, %156 ], [ %206, %181 ]
  %209 = load i32, ptr %7, align 4, !tbaa !5
  %210 = icmp eq i32 %209, 0
  br i1 %210, label %211, label %228

211:                                              ; preds = %207
  %212 = call <2 x float> @llvm.floor.v2f32(<2 x float> %208)
  %213 = fptosi <2 x float> %212 to <2 x i32>
  %214 = extractelement <2 x i32> %213, i64 1
  %215 = icmp slt i32 %214, 0
  br i1 %215, label %.loopexit308.sink.split, label %216

216:                                              ; preds = %211
  %217 = icmp sgt <2 x i32> %118, %213
  %218 = extractelement <2 x i32> %213, i64 0
  %219 = icmp sgt i32 %218, -1
  %220 = extractelement <2 x i1> %217, i64 0
  %221 = and i1 %219, %220
  %222 = extractelement <2 x i1> %217, i64 1
  %or.cond293 = select i1 %222, i1 %221, i1 false
  br i1 %or.cond293, label %223, label %.loopexit308.sink.split

223:                                              ; preds = %216
  %224 = mul nsw i32 %218, %2
  %225 = add nuw nsw i32 %224, %214
  %226 = zext nneg i32 %225 to i64
  %227 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %226) #8
  br label %.loopexit308.sink.split

228:                                              ; preds = %207
  %229 = extractelement <2 x float> %208, i64 1
  %230 = fcmp olt float %229, 0.000000e+00
  %231 = fcmp ogt float %229, %141
  %or.cond295 = or i1 %230, %231
  %232 = extractelement <2 x float> %208, i64 0
  %233 = fcmp olt float %232, 0.000000e+00
  %234 = fcmp ogt float %232, %140
  %235 = or i1 %233, %234
  %or.cond298 = select i1 %or.cond295, i1 true, i1 %235
  br i1 %or.cond298, label %.loopexit308.sink.split, label %236

236:                                              ; preds = %228
  %237 = fadd float %229, -5.000000e-01
  %238 = fadd float %232, -5.000000e-01
  %239 = call float @llvm.floor.f32(float %237)
  %240 = fptosi float %239 to i32
  %241 = call float @llvm.floor.f32(float %238)
  %242 = fptosi float %241 to i32
  %243 = sitofp i32 %240 to float
  %244 = fsub float %237, %243
  %245 = sitofp i32 %242 to float
  %246 = fsub float %238, %245
  switch i32 %209, label %256 [
    i32 1, label %247
    i32 -3, label %250
    i32 3, label %254
  ]

247:                                              ; preds = %236
  store float %244, ptr %19, align 16, !tbaa !9
  %248 = fsub float 1.000000e+00, %244
  store float %248, ptr %123, align 4, !tbaa !9
  store float %246, ptr %20, align 16, !tbaa !9
  %249 = fsub float 1.000000e+00, %246
  store float %249, ptr %124, align 4, !tbaa !9
  br label %261

250:                                              ; preds = %236
  %251 = load float, ptr %8, align 4, !tbaa !9
  invoke void @_Z4keysPfff(ptr noundef nonnull %19, float noundef %244, float noundef %251)
          to label %252 unwind label %.loopexit.split-lp.loopexit

252:                                              ; preds = %250
  %253 = load float, ptr %8, align 4, !tbaa !9
  invoke void @_Z4keysPfff(ptr noundef nonnull %20, float noundef %246, float noundef %253)
          to label %261 unwind label %.loopexit.split-lp.loopexit

254:                                              ; preds = %236
  invoke void @_Z7spline3Pff(ptr noundef nonnull %19, float noundef %244)
          to label %255 unwind label %.loopexit.split-lp.loopexit

255:                                              ; preds = %254
  invoke void @_Z7spline3Pff(ptr noundef nonnull %20, float noundef %246)
          to label %261 unwind label %.loopexit.split-lp.loopexit

256:                                              ; preds = %236
  invoke void @_Z7splinenPffS_i(ptr noundef nonnull %19, float noundef %244, ptr noundef nonnull %21, i32 noundef %209)
          to label %257 unwind label %.loopexit.split-lp.loopexit

257:                                              ; preds = %256
  %258 = add nsw i32 %209, 1
  %259 = sdiv i32 %258, 2
  %260 = load i32, ptr %7, align 4, !tbaa !5
  invoke void @_Z7splinenPffS_i(ptr noundef nonnull %20, float noundef %246, ptr noundef nonnull %21, i32 noundef %260)
          to label %261 unwind label %.loopexit.split-lp.loopexit

261:                                              ; preds = %257, %255, %252, %247
  %.0255 = phi i32 [ %259, %257 ], [ 2, %255 ], [ 2, %252 ], [ 1, %247 ]
  %262 = sub nsw i32 1, %.0255
  %263 = add nsw i32 %262, %240
  %264 = icmp sgt i32 %263, -1
  %265 = add nsw i32 %.0255, %240
  %266 = icmp slt i32 %265, %2
  %or.cond300 = select i1 %264, i1 %266, i1 false
  %267 = add nsw i32 %262, %242
  %268 = icmp sgt i32 %267, -1
  %or.cond302 = select i1 %or.cond300, i1 %268, i1 false
  %269 = add nsw i32 %.0255, %242
  %270 = icmp slt i32 %269, %3
  %or.cond304 = select i1 %or.cond302, i1 %270, i1 false
  %.not290329 = icmp sgt i32 %262, %.0255
  br i1 %or.cond304, label %276, label %.preheader309

.preheader309:                                    ; preds = %261
  br i1 %.not290329, label %.loopexit308, label %.preheader307.preheader

.preheader307.preheader:                          ; preds = %.preheader309
  %271 = sub nsw i32 0, %.0255
  %272 = sext i32 %271 to i64
  %273 = add nsw i64 %272, 1
  %274 = sext i32 %.0255 to i64
  %275 = add nsw i32 %.0255, 1
  br label %.preheader307

276:                                              ; preds = %261
  br i1 %.not290329, label %.loopexit308, label %.preheader.preheader

.preheader.preheader:                             ; preds = %276
  %277 = sub nsw i32 0, %.0255
  %278 = sext i32 %277 to i64
  %279 = add nsw i64 %278, 1
  %280 = sext i32 %.0255 to i64
  %281 = add nsw i32 %.0255, 1
  br label %.preheader

.preheader:                                       ; preds = %.preheader.preheader, %._crit_edge327
  %indvars.iv353 = phi i64 [ %279, %.preheader.preheader ], [ %indvars.iv.next354, %._crit_edge327 ]
  %.0262331 = phi float [ 0.000000e+00, %.preheader.preheader ], [ %297, %._crit_edge327 ]
  %282 = sub nsw i64 %280, %indvars.iv353
  %283 = getelementptr inbounds [12 x float], ptr %20, i64 0, i64 %282
  %284 = trunc nsw i64 %indvars.iv353 to i32
  %reass.add = add i32 %284, %242
  %reass.mul = mul i32 %reass.add, %2
  %285 = add i32 %reass.mul, %240
  br label %286

286:                                              ; preds = %.preheader, %286
  %indvars.iv347 = phi i64 [ %279, %.preheader ], [ %indvars.iv.next348, %286 ]
  %.1326 = phi float [ %.0262331, %.preheader ], [ %297, %286 ]
  %287 = load float, ptr %283, align 4, !tbaa !9
  %288 = sub nsw i64 %280, %indvars.iv347
  %289 = getelementptr inbounds [12 x float], ptr %19, i64 0, i64 %288
  %290 = load float, ptr %289, align 4, !tbaa !9
  %291 = fmul float %287, %290
  %292 = trunc nsw i64 %indvars.iv347 to i32
  %293 = add i32 %285, %292
  %294 = sext i32 %293 to i64
  %295 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %294) #8
  %296 = load float, ptr %295, align 4, !tbaa !9
  %297 = call float @llvm.fmuladd.f32(float %291, float %296, float %.1326)
  %indvars.iv.next348 = add nsw i64 %indvars.iv347, 1
  %lftr.wideiv351 = trunc i64 %indvars.iv.next348 to i32
  %exitcond352.not = icmp eq i32 %281, %lftr.wideiv351
  br i1 %exitcond352.not, label %._crit_edge327, label %286, !llvm.loop !11

._crit_edge327:                                   ; preds = %286
  %indvars.iv.next354 = add nsw i64 %indvars.iv353, 1
  %lftr.wideiv356 = trunc i64 %indvars.iv.next354 to i32
  %exitcond357.not = icmp eq i32 %281, %lftr.wideiv356
  br i1 %exitcond357.not, label %.loopexit308, label %.preheader, !llvm.loop !13

.preheader307:                                    ; preds = %.preheader307.preheader, %._crit_edge
  %indvars.iv342 = phi i64 [ %273, %.preheader307.preheader ], [ %indvars.iv.next343, %._crit_edge ]
  %.2322 = phi float [ 0.000000e+00, %.preheader307.preheader ], [ %313, %._crit_edge ]
  %298 = sub nsw i64 %274, %indvars.iv342
  %299 = getelementptr inbounds [12 x float], ptr %20, i64 0, i64 %298
  %300 = trunc i64 %indvars.iv342 to i32
  %301 = add i32 %300, %242
  br label %302

302:                                              ; preds = %.preheader307, %311
  %indvars.iv = phi i64 [ %273, %.preheader307 ], [ %indvars.iv.next, %311 ]
  %.3319 = phi float [ %.2322, %.preheader307 ], [ %313, %311 ]
  %303 = load float, ptr %299, align 4, !tbaa !9
  %304 = sub nsw i64 %274, %indvars.iv
  %305 = getelementptr inbounds [12 x float], ptr %19, i64 0, i64 %304
  %306 = load float, ptr %305, align 4, !tbaa !9
  %307 = load float, ptr %6, align 4, !tbaa !9
  %308 = trunc i64 %indvars.iv to i32
  %309 = add i32 %308, %240
  %310 = invoke noundef float @_Z1vRSt6vectorIfSaIfEEiifii(ptr noundef nonnull align 8 dereferenceable(24) %22, i32 noundef %309, i32 noundef %301, float noundef %307, i32 noundef %2, i32 noundef %3)
          to label %311 unwind label %.loopexit

311:                                              ; preds = %302
  %312 = fmul float %303, %306
  %313 = call float @llvm.fmuladd.f32(float %312, float %310, float %.3319)
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next to i32
  %exitcond.not = icmp eq i32 %275, %lftr.wideiv
  br i1 %exitcond.not, label %._crit_edge, label %302, !llvm.loop !14

._crit_edge:                                      ; preds = %311
  %indvars.iv.next343 = add nsw i64 %indvars.iv342, 1
  %lftr.wideiv345 = trunc i64 %indvars.iv.next343 to i32
  %exitcond346.not = icmp eq i32 %275, %lftr.wideiv345
  br i1 %exitcond346.not, label %.loopexit308, label %.preheader307, !llvm.loop !15

.loopexit308.sink.split:                          ; preds = %228, %211, %216, %223
  %.sink364 = phi ptr [ %227, %223 ], [ %6, %216 ], [ %6, %211 ], [ %6, %228 ]
  %314 = load float, ptr %.sink364, align 4, !tbaa !9
  br label %.loopexit308

.loopexit308:                                     ; preds = %._crit_edge, %._crit_edge327, %.loopexit308.sink.split, %.preheader309, %276
  %.4 = phi float [ 0.000000e+00, %276 ], [ 0.000000e+00, %.preheader309 ], [ %314, %.loopexit308.sink.split ], [ %297, %._crit_edge327 ], [ %313, %._crit_edge ]
  %315 = load i32, ptr %4, align 4, !tbaa !5
  %316 = mul nsw i32 %315, %.0259334
  %317 = add nsw i32 %316, %.0256336
  %318 = sext i32 %317 to i64
  %319 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %318) #8
  store float %.4, ptr %319, align 4, !tbaa !9
  %320 = add nuw nsw i32 %.0259334, 1
  %321 = load i32, ptr %5, align 4, !tbaa !5
  %322 = icmp slt i32 %320, %321
  br i1 %322, label %153, label %._crit_edge335.loopexit, !llvm.loop !16

._crit_edge335.loopexit:                          ; preds = %.loopexit308
  %.pre = load i32, ptr %4, align 4, !tbaa !5
  br label %._crit_edge335

._crit_edge335:                                   ; preds = %._crit_edge335.loopexit, %.preheader311
  %323 = phi i32 [ %.pre, %._crit_edge335.loopexit ], [ %142, %.preheader311 ]
  %324 = phi i32 [ %321, %._crit_edge335.loopexit ], [ %143, %.preheader311 ]
  %325 = add nuw nsw i32 %.0256336, 1
  %326 = icmp slt i32 %325, %323
  br i1 %326, label %.preheader311, label %._crit_edge337, !llvm.loop !17

._crit_edge337:                                   ; preds = %._crit_edge335, %.preheader311.lr.ph, %107
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #8
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %19) #8
  ret void

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %43
  %.pn = phi { ptr, i32 } [ %44, %43 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit312, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp313, %.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #8
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %19) #8
  resume { ptr, i32 } %.pn
}

; 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 nounwind uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

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

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

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

declare void @_Z10finvsplineRKSt6vectorIfSaIfEEiRS1_ii(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIfSaIfEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

declare void @_Z12init_splinenPfi(ptr noundef, i32 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #6

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

declare void @_Z4keysPfff(ptr noundef, float noundef, float noundef) local_unnamed_addr #5

declare void @_Z7spline3Pff(ptr noundef, float noundef) local_unnamed_addr #5

declare void @_Z7splinenPffS_i(ptr noundef, float noundef, ptr noundef, i32 noundef) local_unnamed_addr #5

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

declare noundef float @_Z1vRSt6vectorIfSaIfEEiifii(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, float noundef, i32 noundef, i32 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.floor.f32(float) #7

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x float> @llvm.floor.v2f32(<2 x float>) #7

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x float> @llvm.fmuladd.v2f32(<2 x float>, <2 x float>, <2 x float>) #7

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

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

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


; Effective O3 passes: BDCEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass,VectorCombinePass