; LLVM IR from liaojing/MorphLib :: MorphLib/Morph.ll (ZN8MorphLib6CMorph21optimize_highestlevelEi)

; 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.Eigen::Matrix.9" = type { %"class.Eigen::PlainObjectBase.10" }
%"class.Eigen::PlainObjectBase.10" = type { %"class.Eigen::DenseStorage.18" }
%"class.Eigen::DenseStorage.18" = type { ptr, i64, i64 }
%"class.Eigen::FullPivLU" = type <{ %"class.Eigen::Matrix.9", %"class.Eigen::PermutationMatrix", %"class.Eigen::PermutationMatrix", %"class.Eigen::Matrix.30", %"class.Eigen::Matrix.40", i64, i64, float, float, i8, i8, [6 x i8] }>
%"class.Eigen::PermutationMatrix" = type { %"class.Eigen::Matrix.20" }
%"class.Eigen::Matrix.20" = type { %"class.Eigen::PlainObjectBase.21" }
%"class.Eigen::PlainObjectBase.21" = type { %"class.Eigen::DenseStorage.29" }
%"class.Eigen::DenseStorage.29" = type { ptr, i64 }
%"class.Eigen::Matrix.30" = type { %"class.Eigen::PlainObjectBase.31" }
%"class.Eigen::PlainObjectBase.31" = type { %"class.Eigen::DenseStorage.39" }
%"class.Eigen::DenseStorage.39" = type { ptr, i64 }
%"class.Eigen::Matrix.40" = type { %"class.Eigen::PlainObjectBase.41" }
%"class.Eigen::PlainObjectBase.41" = type { %"class.Eigen::DenseStorage.49" }
%"class.Eigen::DenseStorage.49" = type { ptr, i64 }
%"struct.Eigen::internal::solve_retval" = type { %"struct.Eigen::internal::solve_retval_base" }
%"struct.Eigen::internal::solve_retval_base" = type { ptr, ptr }
%"class.MorphLib::CMorph" = type <{ ptr, ptr, i32, i32, i32, i32, i32, [4 x i8], ptr, i8, [7 x i8] }>
%class.CPyramid = type { %"class.std::vector.0" }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<CPyramidLevel, std::allocator<CPyramidLevel>>::_Vector_impl" }
%"struct.std::_Vector_base<CPyramidLevel, std::allocator<CPyramidLevel>>::_Vector_impl" = type { %"struct.std::_Vector_base<CPyramidLevel, std::allocator<CPyramidLevel>>::_Vector_impl_data" }
%"struct.std::_Vector_base<CPyramidLevel, std::allocator<CPyramidLevel>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.CPyramidLevel = type { i32, i32, float, i32, i32, i32, ptr, ptr, ptr, ptr }
%"class.MorphLib::CParameters" = type { i32, i32, ptr, ptr, ptr, ptr, float, float, float, float, float, i32, i32, float, i32, %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<MorphLib::ConstraintPoint, std::allocator<MorphLib::ConstraintPoint>>::_Vector_impl" }
%"struct.std::_Vector_base<MorphLib::ConstraintPoint, std::allocator<MorphLib::ConstraintPoint>>::_Vector_impl" = type { %"struct.std::_Vector_base<MorphLib::ConstraintPoint, std::allocator<MorphLib::ConstraintPoint>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MorphLib::ConstraintPoint, std::allocator<MorphLib::ConstraintPoint>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.MorphLib::ConstraintPoint" = type { %"class.Eigen::Matrix", %"class.Eigen::Matrix" }
%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { %"struct.Eigen::internal::plain_array" }
%"struct.Eigen::internal::plain_array" = type { [2 x float] }
%"struct.MorphLib::CData" = type { %struct.anon, %struct.anon.5, %struct.anon.6, ptr, ptr, ptr, ptr, i32 }
%struct.anon = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.anon.5 = type { ptr, ptr, ptr }
%struct.anon.6 = type { ptr, ptr, ptr }

declare i32 @__gxx_personality_v0(...)

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

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

; 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 i64 @_ZNKSt6vectorIN8MorphLib15ConstraintPointESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8MorphLib6CMorph21optimize_highestlevelEi(ptr noundef nonnull align 8 dereferenceable(49) %0, i32 noundef %1) #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca %"class.Eigen::Matrix.9", align 8
  %9 = alloca %"class.Eigen::Matrix.9", align 8
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca %"class.Eigen::Matrix.9", align 8
  %14 = alloca i32, align 4
  %15 = alloca %"class.Eigen::Matrix.9", align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.Eigen::Matrix.9", align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i64, align 8
  %24 = alloca float, align 4
  %25 = alloca float, align 4
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca float, align 4
  %29 = alloca float, align 4
  %30 = alloca float, align 4
  %31 = alloca float, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca float, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca %"class.Eigen::FullPivLU", align 8
  %40 = alloca %"struct.Eigen::internal::solve_retval", align 8
  %41 = alloca %"struct.Eigen::internal::solve_retval", align 8
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store i32 %1, ptr %4, align 4, !tbaa !9
  %45 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #6
  %46 = getelementptr inbounds %"class.MorphLib::CMorph", ptr %45, i32 0, i32 1
  %47 = load ptr, ptr %46, align 8, !tbaa !11
  %48 = getelementptr inbounds %class.CPyramid, ptr %47, i32 0, i32 0
  %49 = load i32, ptr %4, align 4, !tbaa !9
  %50 = sext i32 %49 to i64
  %51 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorI13CPyramidLevelSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %48, i64 noundef %50) #6
  %52 = getelementptr inbounds %class.CPyramidLevel, ptr %51, i32 0, i32 0
  %53 = load i32, ptr %52, align 8, !tbaa !14
  store i32 %53, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  %54 = getelementptr inbounds %"class.MorphLib::CMorph", ptr %45, i32 0, i32 1
  %55 = load ptr, ptr %54, align 8, !tbaa !11
  %56 = getelementptr inbounds %class.CPyramid, ptr %55, i32 0, i32 0
  %57 = load i32, ptr %4, align 4, !tbaa !9
  %58 = sext i32 %57 to i64
  %59 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorI13CPyramidLevelSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %58) #6
  %60 = getelementptr inbounds %class.CPyramidLevel, ptr %59, i32 0, i32 1
  %61 = load i32, ptr %60, align 4, !tbaa !17
  store i32 %61, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  %62 = load i32, ptr %5, align 4, !tbaa !9
  %63 = load i32, ptr %6, align 4, !tbaa !9
  %64 = mul nsw i32 %62, %63
  store i32 %64, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %8) #6
  call void @_ZN5Eigen6MatrixIfLin1ELin1ELi0ELin1ELin1EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %7)
  call void @llvm.lifetime.start.p0(i64 24, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  store i32 1, ptr %10, align 4, !tbaa !9
  invoke void @_ZN5Eigen6MatrixIfLin1ELin1ELi0ELin1ELin1EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %65 unwind label %84

65:                                               ; preds = %2
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  store i32 1, ptr %14, align 4, !tbaa !9
  invoke void @_ZN5Eigen6MatrixIfLin1ELin1ELi0ELin1ELin1EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %14)
          to label %66 unwind label %88

66:                                               ; preds = %65
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  store i32 1, ptr %16, align 4, !tbaa !9
  invoke void @_ZN5Eigen6MatrixIfLin1ELin1ELi0ELin1ELin1EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %67 unwind label %92

67:                                               ; preds = %66
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  store i32 1, ptr %18, align 4, !tbaa !9
  invoke void @_ZN5Eigen6MatrixIfLin1ELin1ELi0ELin1ELin1EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %68 unwind label %96

68:                                               ; preds = %67
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  %69 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %70 unwind label %100

70:                                               ; preds = %68
  %71 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %72 unwind label %100

72:                                               ; preds = %70
  %73 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %74 unwind label %100

74:                                               ; preds = %72
  %75 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %76 unwind label %100

76:                                               ; preds = %74
  %77 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %78 unwind label %100

78:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %79

79:                                               ; preds = %514, %78
  %80 = load i32, ptr %19, align 4, !tbaa !9
  %81 = load i32, ptr %6, align 4, !tbaa !9
  %82 = icmp slt i32 %80, %81
  br i1 %82, label %104, label %83

83:                                               ; preds = %79
  store i32 2, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  br label %517

84:                                               ; preds = %2
  %85 = landingpad { ptr, i32 }
          cleanup
  %86 = extractvalue { ptr, i32 } %85, 0
  store ptr %86, ptr %11, align 8
  %87 = extractvalue { ptr, i32 } %85, 1
  store i32 %87, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  br label %992

88:                                               ; preds = %65
  %89 = landingpad { ptr, i32 }
          cleanup
  %90 = extractvalue { ptr, i32 } %89, 0
  store ptr %90, ptr %11, align 8
  %91 = extractvalue { ptr, i32 } %89, 1
  store i32 %91, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  br label %991

92:                                               ; preds = %66
  %93 = landingpad { ptr, i32 }
          cleanup
  %94 = extractvalue { ptr, i32 } %93, 0
  store ptr %94, ptr %11, align 8
  %95 = extractvalue { ptr, i32 } %93, 1
  store i32 %95, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  br label %990

96:                                               ; preds = %67
  %97 = landingpad { ptr, i32 }
          cleanup
  %98 = extractvalue { ptr, i32 } %97, 0
  store ptr %98, ptr %11, align 8
  %99 = extractvalue { ptr, i32 } %97, 1
  store i32 %99, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  br label %989

100:                                              ; preds = %76, %74, %72, %70, %68
  %101 = landingpad { ptr, i32 }
          cleanup
  %102 = extractvalue { ptr, i32 } %101, 0
  store ptr %102, ptr %11, align 8
  %103 = extractvalue { ptr, i32 } %101, 1
  store i32 %103, ptr %12, align 4
  br label %988

104:                                              ; preds = %79
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %105

105:                                              ; preds = %510, %104
  %106 = load i32, ptr %21, align 4, !tbaa !9
  %107 = load i32, ptr %5, align 4, !tbaa !9
  %108 = icmp slt i32 %106, %107
  br i1 %108, label %110, label %109

109:                                              ; preds = %105
  store i32 5, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  br label %513

110:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  %111 = load i32, ptr %19, align 4, !tbaa !9
  %112 = load i32, ptr %5, align 4, !tbaa !9
  %113 = mul nsw i32 %111, %112
  %114 = load i32, ptr %21, align 4, !tbaa !9
  %115 = add nsw i32 %113, %114
  store i32 %115, ptr %22, align 4, !tbaa !9
  %116 = load i32, ptr %21, align 4, !tbaa !9
  %117 = icmp sgt i32 %116, 1
  br i1 %117, label %118, label %149

118:                                              ; preds = %110
  %119 = load i32, ptr %22, align 4, !tbaa !9
  %120 = sext i32 %119 to i64
  %121 = load i32, ptr %22, align 4, !tbaa !9
  %122 = sub nsw i32 %121, 2
  %123 = sext i32 %122 to i64
  %124 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %120, i64 noundef %123)
          to label %125 unwind label %145

125:                                              ; preds = %118
  %126 = load float, ptr %124, align 4, !tbaa !18
  %127 = fadd float %126, 1.000000e+00
  store float %127, ptr %124, align 4, !tbaa !18
  %128 = load i32, ptr %22, align 4, !tbaa !9
  %129 = sext i32 %128 to i64
  %130 = load i32, ptr %22, align 4, !tbaa !9
  %131 = sub nsw i32 %130, 1
  %132 = sext i32 %131 to i64
  %133 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %129, i64 noundef %132)
          to label %134 unwind label %145

134:                                              ; preds = %125
  %135 = load float, ptr %133, align 4, !tbaa !18
  %136 = fadd float %135, -2.000000e+00
  store float %136, ptr %133, align 4, !tbaa !18
  %137 = load i32, ptr %22, align 4, !tbaa !9
  %138 = sext i32 %137 to i64
  %139 = load i32, ptr %22, align 4, !tbaa !9
  %140 = sext i32 %139 to i64
  %141 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %138, i64 noundef %140)
          to label %142 unwind label %145

142:                                              ; preds = %134
  %143 = load float, ptr %141, align 4, !tbaa !18
  %144 = fadd float %143, 1.000000e+00
  store float %144, ptr %141, align 4, !tbaa !18
  br label %149

145:                                              ; preds = %495, %485, %476, %470, %447, %436, %428, %421, %401, %393, %382, %374, %355, %346, %336, %327, %307, %297, %291, %273, %265, %257, %238, %228, %219, %204, %195, %189, %172, %164, %157, %134, %125, %118
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %11, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  br label %988

149:                                              ; preds = %142, %110
  %150 = load i32, ptr %21, align 4, !tbaa !9
  %151 = icmp sgt i32 %150, 0
  br i1 %151, label %152, label %184

152:                                              ; preds = %149
  %153 = load i32, ptr %21, align 4, !tbaa !9
  %154 = load i32, ptr %5, align 4, !tbaa !9
  %155 = sub nsw i32 %154, 1
  %156 = icmp slt i32 %153, %155
  br i1 %156, label %157, label %184

157:                                              ; preds = %152
  %158 = load i32, ptr %22, align 4, !tbaa !9
  %159 = sext i32 %158 to i64
  %160 = load i32, ptr %22, align 4, !tbaa !9
  %161 = sub nsw i32 %160, 1
  %162 = sext i32 %161 to i64
  %163 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %159, i64 noundef %162)
          to label %164 unwind label %145

164:                                              ; preds = %157
  %165 = load float, ptr %163, align 4, !tbaa !18
  %166 = fadd float %165, -2.000000e+00
  store float %166, ptr %163, align 4, !tbaa !18
  %167 = load i32, ptr %22, align 4, !tbaa !9
  %168 = sext i32 %167 to i64
  %169 = load i32, ptr %22, align 4, !tbaa !9
  %170 = sext i32 %169 to i64
  %171 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %168, i64 noundef %170)
          to label %172 unwind label %145

172:                                              ; preds = %164
  %173 = load float, ptr %171, align 4, !tbaa !18
  %174 = fadd float %173, 4.000000e+00
  store float %174, ptr %171, align 4, !tbaa !18
  %175 = load i32, ptr %22, align 4, !tbaa !9
  %176 = sext i32 %175 to i64
  %177 = load i32, ptr %22, align 4, !tbaa !9
  %178 = add nsw i32 %177, 1
  %179 = sext i32 %178 to i64
  %180 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %176, i64 noundef %179)
          to label %181 unwind label %145

181:                                              ; preds = %172
  %182 = load float, ptr %180, align 4, !tbaa !18
  %183 = fadd float %182, -2.000000e+00
  store float %183, ptr %180, align 4, !tbaa !18
  br label %184

184:                                              ; preds = %181, %152, %149
  %185 = load i32, ptr %21, align 4, !tbaa !9
  %186 = load i32, ptr %5, align 4, !tbaa !9
  %187 = sub nsw i32 %186, 2
  %188 = icmp slt i32 %185, %187
  br i1 %188, label %189, label %216

189:                                              ; preds = %184
  %190 = load i32, ptr %22, align 4, !tbaa !9
  %191 = sext i32 %190 to i64
  %192 = load i32, ptr %22, align 4, !tbaa !9
  %193 = sext i32 %192 to i64
  %194 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %191, i64 noundef %193)
          to label %195 unwind label %145

195:                                              ; preds = %189
  %196 = load float, ptr %194, align 4, !tbaa !18
  %197 = fadd float %196, 1.000000e+00
  store float %197, ptr %194, align 4, !tbaa !18
  %198 = load i32, ptr %22, align 4, !tbaa !9
  %199 = sext i32 %198 to i64
  %200 = load i32, ptr %22, align 4, !tbaa !9
  %201 = add nsw i32 %200, 1
  %202 = sext i32 %201 to i64
  %203 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %199, i64 noundef %202)
          to label %204 unwind label %145

204:                                              ; preds = %195
  %205 = load float, ptr %203, align 4, !tbaa !18
  %206 = fadd float %205, -2.000000e+00
  store float %206, ptr %203, align 4, !tbaa !18
  %207 = load i32, ptr %22, align 4, !tbaa !9
  %208 = sext i32 %207 to i64
  %209 = load i32, ptr %22, align 4, !tbaa !9
  %210 = add nsw i32 %209, 2
  %211 = sext i32 %210 to i64
  %212 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %208, i64 noundef %211)
          to label %213 unwind label %145

213:                                              ; preds = %204
  %214 = load float, ptr %212, align 4, !tbaa !18
  %215 = fadd float %214, 1.000000e+00
  store float %215, ptr %212, align 4, !tbaa !18
  br label %216

216:                                              ; preds = %213, %184
  %217 = load i32, ptr %19, align 4, !tbaa !9
  %218 = icmp sgt i32 %217, 1
  br i1 %218, label %219, label %249

219:                                              ; preds = %216
  %220 = load i32, ptr %22, align 4, !tbaa !9
  %221 = sext i32 %220 to i64
  %222 = load i32, ptr %22, align 4, !tbaa !9
  %223 = load i32, ptr %5, align 4, !tbaa !9
  %224 = mul nsw i32 2, %223
  %225 = sub nsw i32 %222, %224
  %226 = sext i32 %225 to i64
  %227 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %221, i64 noundef %226)
          to label %228 unwind label %145

228:                                              ; preds = %219
  %229 = load float, ptr %227, align 4, !tbaa !18
  %230 = fadd float %229, 1.000000e+00
  store float %230, ptr %227, align 4, !tbaa !18
  %231 = load i32, ptr %22, align 4, !tbaa !9
  %232 = sext i32 %231 to i64
  %233 = load i32, ptr %22, align 4, !tbaa !9
  %234 = load i32, ptr %5, align 4, !tbaa !9
  %235 = sub nsw i32 %233, %234
  %236 = sext i32 %235 to i64
  %237 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %232, i64 noundef %236)
          to label %238 unwind label %145

238:                                              ; preds = %228
  %239 = load float, ptr %237, align 4, !tbaa !18
  %240 = fadd float %239, -2.000000e+00
  store float %240, ptr %237, align 4, !tbaa !18
  %241 = load i32, ptr %22, align 4, !tbaa !9
  %242 = sext i32 %241 to i64
  %243 = load i32, ptr %22, align 4, !tbaa !9
  %244 = sext i32 %243 to i64
  %245 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %242, i64 noundef %244)
          to label %246 unwind label %145

246:                                              ; preds = %238
  %247 = load float, ptr %245, align 4, !tbaa !18
  %248 = fadd float %247, 1.000000e+00
  store float %248, ptr %245, align 4, !tbaa !18
  br label %249

249:                                              ; preds = %246, %216
  %250 = load i32, ptr %19, align 4, !tbaa !9
  %251 = icmp sgt i32 %250, 0
  br i1 %251, label %252, label %286

252:                                              ; preds = %249
  %253 = load i32, ptr %19, align 4, !tbaa !9
  %254 = load i32, ptr %6, align 4, !tbaa !9
  %255 = sub nsw i32 %254, 1
  %256 = icmp slt i32 %253, %255
  br i1 %256, label %257, label %286

257:                                              ; preds = %252
  %258 = load i32, ptr %22, align 4, !tbaa !9
  %259 = sext i32 %258 to i64
  %260 = load i32, ptr %22, align 4, !tbaa !9
  %261 = load i32, ptr %5, align 4, !tbaa !9
  %262 = sub nsw i32 %260, %261
  %263 = sext i32 %262 to i64
  %264 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %259, i64 noundef %263)
          to label %265 unwind label %145

265:                                              ; preds = %257
  %266 = load float, ptr %264, align 4, !tbaa !18
  %267 = fadd float %266, -2.000000e+00
  store float %267, ptr %264, align 4, !tbaa !18
  %268 = load i32, ptr %22, align 4, !tbaa !9
  %269 = sext i32 %268 to i64
  %270 = load i32, ptr %22, align 4, !tbaa !9
  %271 = sext i32 %270 to i64
  %272 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %269, i64 noundef %271)
          to label %273 unwind label %145

273:                                              ; preds = %265
  %274 = load float, ptr %272, align 4, !tbaa !18
  %275 = fadd float %274, 4.000000e+00
  store float %275, ptr %272, align 4, !tbaa !18
  %276 = load i32, ptr %22, align 4, !tbaa !9
  %277 = sext i32 %276 to i64
  %278 = load i32, ptr %22, align 4, !tbaa !9
  %279 = load i32, ptr %5, align 4, !tbaa !9
  %280 = add nsw i32 %278, %279
  %281 = sext i32 %280 to i64
  %282 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %277, i64 noundef %281)
          to label %283 unwind label %145

283:                                              ; preds = %273
  %284 = load float, ptr %282, align 4, !tbaa !18
  %285 = fadd float %284, -2.000000e+00
  store float %285, ptr %282, align 4, !tbaa !18
  br label %286

286:                                              ; preds = %283, %252, %249
  %287 = load i32, ptr %19, align 4, !tbaa !9
  %288 = load i32, ptr %6, align 4, !tbaa !9
  %289 = sub nsw i32 %288, 2
  %290 = icmp slt i32 %287, %289
  br i1 %290, label %291, label %321

291:                                              ; preds = %286
  %292 = load i32, ptr %22, align 4, !tbaa !9
  %293 = sext i32 %292 to i64
  %294 = load i32, ptr %22, align 4, !tbaa !9
  %295 = sext i32 %294 to i64
  %296 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %293, i64 noundef %295)
          to label %297 unwind label %145

297:                                              ; preds = %291
  %298 = load float, ptr %296, align 4, !tbaa !18
  %299 = fadd float %298, 1.000000e+00
  store float %299, ptr %296, align 4, !tbaa !18
  %300 = load i32, ptr %22, align 4, !tbaa !9
  %301 = sext i32 %300 to i64
  %302 = load i32, ptr %22, align 4, !tbaa !9
  %303 = load i32, ptr %5, align 4, !tbaa !9
  %304 = add nsw i32 %302, %303
  %305 = sext i32 %304 to i64
  %306 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %301, i64 noundef %305)
          to label %307 unwind label %145

307:                                              ; preds = %297
  %308 = load float, ptr %306, align 4, !tbaa !18
  %309 = fadd float %308, -2.000000e+00
  store float %309, ptr %306, align 4, !tbaa !18
  %310 = load i32, ptr %22, align 4, !tbaa !9
  %311 = sext i32 %310 to i64
  %312 = load i32, ptr %22, align 4, !tbaa !9
  %313 = load i32, ptr %5, align 4, !tbaa !9
  %314 = mul nsw i32 2, %313
  %315 = add nsw i32 %312, %314
  %316 = sext i32 %315 to i64
  %317 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %311, i64 noundef %316)
          to label %318 unwind label %145

318:                                              ; preds = %307
  %319 = load float, ptr %317, align 4, !tbaa !18
  %320 = fadd float %319, 1.000000e+00
  store float %320, ptr %317, align 4, !tbaa !18
  br label %321

321:                                              ; preds = %318, %286
  %322 = load i32, ptr %21, align 4, !tbaa !9
  %323 = icmp sgt i32 %322, 0
  br i1 %323, label %324, label %366

324:                                              ; preds = %321
  %325 = load i32, ptr %19, align 4, !tbaa !9
  %326 = icmp sgt i32 %325, 0
  br i1 %326, label %327, label %366

327:                                              ; preds = %324
  %328 = load i32, ptr %22, align 4, !tbaa !9
  %329 = sext i32 %328 to i64
  %330 = load i32, ptr %22, align 4, !tbaa !9
  %331 = load i32, ptr %5, align 4, !tbaa !9
  %332 = sub nsw i32 %330, %331
  %333 = sub nsw i32 %332, 1
  %334 = sext i32 %333 to i64
  %335 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %329, i64 noundef %334)
          to label %336 unwind label %145

336:                                              ; preds = %327
  %337 = load float, ptr %335, align 4, !tbaa !18
  %338 = fadd float %337, 2.000000e+00
  store float %338, ptr %335, align 4, !tbaa !18
  %339 = load i32, ptr %22, align 4, !tbaa !9
  %340 = sext i32 %339 to i64
  %341 = load i32, ptr %22, align 4, !tbaa !9
  %342 = load i32, ptr %5, align 4, !tbaa !9
  %343 = sub nsw i32 %341, %342
  %344 = sext i32 %343 to i64
  %345 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %340, i64 noundef %344)
          to label %346 unwind label %145

346:                                              ; preds = %336
  %347 = load float, ptr %345, align 4, !tbaa !18
  %348 = fadd float %347, -2.000000e+00
  store float %348, ptr %345, align 4, !tbaa !18
  %349 = load i32, ptr %22, align 4, !tbaa !9
  %350 = sext i32 %349 to i64
  %351 = load i32, ptr %22, align 4, !tbaa !9
  %352 = sub nsw i32 %351, 1
  %353 = sext i32 %352 to i64
  %354 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %350, i64 noundef %353)
          to label %355 unwind label %145

355:                                              ; preds = %346
  %356 = load float, ptr %354, align 4, !tbaa !18
  %357 = fadd float %356, -2.000000e+00
  store float %357, ptr %354, align 4, !tbaa !18
  %358 = load i32, ptr %22, align 4, !tbaa !9
  %359 = sext i32 %358 to i64
  %360 = load i32, ptr %22, align 4, !tbaa !9
  %361 = sext i32 %360 to i64
  %362 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %359, i64 noundef %361)
          to label %363 unwind label %145

363:                                              ; preds = %355
  %364 = load float, ptr %362, align 4, !tbaa !18
  %365 = fadd float %364, 2.000000e+00
  store float %365, ptr %362, align 4, !tbaa !18
  br label %366

366:                                              ; preds = %363, %324, %321
  %367 = load i32, ptr %21, align 4, !tbaa !9
  %368 = load i32, ptr %5, align 4, !tbaa !9
  %369 = sub nsw i32 %368, 1
  %370 = icmp slt i32 %367, %369
  br i1 %370, label %371, label %413

371:                                              ; preds = %366
  %372 = load i32, ptr %19, align 4, !tbaa !9
  %373 = icmp sgt i32 %372, 0
  br i1 %373, label %374, label %413

374:                                              ; preds = %371
  %375 = load i32, ptr %22, align 4, !tbaa !9
  %376 = sext i32 %375 to i64
  %377 = load i32, ptr %22, align 4, !tbaa !9
  %378 = load i32, ptr %5, align 4, !tbaa !9
  %379 = sub nsw i32 %377, %378
  %380 = sext i32 %379 to i64
  %381 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %376, i64 noundef %380)
          to label %382 unwind label %145

382:                                              ; preds = %374
  %383 = load float, ptr %381, align 4, !tbaa !18
  %384 = fadd float %383, -2.000000e+00
  store float %384, ptr %381, align 4, !tbaa !18
  %385 = load i32, ptr %22, align 4, !tbaa !9
  %386 = sext i32 %385 to i64
  %387 = load i32, ptr %22, align 4, !tbaa !9
  %388 = load i32, ptr %5, align 4, !tbaa !9
  %389 = sub nsw i32 %387, %388
  %390 = add nsw i32 %389, 1
  %391 = sext i32 %390 to i64
  %392 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %386, i64 noundef %391)
          to label %393 unwind label %145

393:                                              ; preds = %382
  %394 = load float, ptr %392, align 4, !tbaa !18
  %395 = fadd float %394, 2.000000e+00
  store float %395, ptr %392, align 4, !tbaa !18
  %396 = load i32, ptr %22, align 4, !tbaa !9
  %397 = sext i32 %396 to i64
  %398 = load i32, ptr %22, align 4, !tbaa !9
  %399 = sext i32 %398 to i64
  %400 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %397, i64 noundef %399)
          to label %401 unwind label %145

401:                                              ; preds = %393
  %402 = load float, ptr %400, align 4, !tbaa !18
  %403 = fadd float %402, 2.000000e+00
  store float %403, ptr %400, align 4, !tbaa !18
  %404 = load i32, ptr %22, align 4, !tbaa !9
  %405 = sext i32 %404 to i64
  %406 = load i32, ptr %22, align 4, !tbaa !9
  %407 = add nsw i32 %406, 1
  %408 = sext i32 %407 to i64
  %409 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %405, i64 noundef %408)
          to label %410 unwind label %145

410:                                              ; preds = %401
  %411 = load float, ptr %409, align 4, !tbaa !18
  %412 = fadd float %411, -2.000000e+00
  store float %412, ptr %409, align 4, !tbaa !18
  br label %413

413:                                              ; preds = %410, %371, %366
  %414 = load i32, ptr %21, align 4, !tbaa !9
  %415 = icmp sgt i32 %414, 0
  br i1 %415, label %416, label %460

416:                                              ; preds = %413
  %417 = load i32, ptr %19, align 4, !tbaa !9
  %418 = load i32, ptr %6, align 4, !tbaa !9
  %419 = sub nsw i32 %418, 1
  %420 = icmp slt i32 %417, %419
  br i1 %420, label %421, label %460

421:                                              ; preds = %416
  %422 = load i32, ptr %22, align 4, !tbaa !9
  %423 = sext i32 %422 to i64
  %424 = load i32, ptr %22, align 4, !tbaa !9
  %425 = sub nsw i32 %424, 1
  %426 = sext i32 %425 to i64
  %427 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %423, i64 noundef %426)
          to label %428 unwind label %145

428:                                              ; preds = %421
  %429 = load float, ptr %427, align 4, !tbaa !18
  %430 = fadd float %429, -2.000000e+00
  store float %430, ptr %427, align 4, !tbaa !18
  %431 = load i32, ptr %22, align 4, !tbaa !9
  %432 = sext i32 %431 to i64
  %433 = load i32, ptr %22, align 4, !tbaa !9
  %434 = sext i32 %433 to i64
  %435 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %432, i64 noundef %434)
          to label %436 unwind label %145

436:                                              ; preds = %428
  %437 = load float, ptr %435, align 4, !tbaa !18
  %438 = fadd float %437, 2.000000e+00
  store float %438, ptr %435, align 4, !tbaa !18
  %439 = load i32, ptr %22, align 4, !tbaa !9
  %440 = sext i32 %439 to i64
  %441 = load i32, ptr %22, align 4, !tbaa !9
  %442 = load i32, ptr %5, align 4, !tbaa !9
  %443 = add nsw i32 %441, %442
  %444 = sub nsw i32 %443, 1
  %445 = sext i32 %444 to i64
  %446 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %440, i64 noundef %445)
          to label %447 unwind label %145

447:                                              ; preds = %436
  %448 = load float, ptr %446, align 4, !tbaa !18
  %449 = fadd float %448, 2.000000e+00
  store float %449, ptr %446, align 4, !tbaa !18
  %450 = load i32, ptr %22, align 4, !tbaa !9
  %451 = sext i32 %450 to i64
  %452 = load i32, ptr %22, align 4, !tbaa !9
  %453 = load i32, ptr %5, align 4, !tbaa !9
  %454 = add nsw i32 %452, %453
  %455 = sext i32 %454 to i64
  %456 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %451, i64 noundef %455)
          to label %457 unwind label %145

457:                                              ; preds = %447
  %458 = load float, ptr %456, align 4, !tbaa !18
  %459 = fadd float %458, -2.000000e+00
  store float %459, ptr %456, align 4, !tbaa !18
  br label %460

460:                                              ; preds = %457, %416, %413
  %461 = load i32, ptr %21, align 4, !tbaa !9
  %462 = load i32, ptr %5, align 4, !tbaa !9
  %463 = sub nsw i32 %462, 1
  %464 = icmp slt i32 %461, %463
  br i1 %464, label %465, label %509

465:                                              ; preds = %460
  %466 = load i32, ptr %19, align 4, !tbaa !9
  %467 = load i32, ptr %6, align 4, !tbaa !9
  %468 = sub nsw i32 %467, 1
  %469 = icmp slt i32 %466, %468
  br i1 %469, label %470, label %509

470:                                              ; preds = %465
  %471 = load i32, ptr %22, align 4, !tbaa !9
  %472 = sext i32 %471 to i64
  %473 = load i32, ptr %22, align 4, !tbaa !9
  %474 = sext i32 %473 to i64
  %475 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %472, i64 noundef %474)
          to label %476 unwind label %145

476:                                              ; preds = %470
  %477 = load float, ptr %475, align 4, !tbaa !18
  %478 = fadd float %477, 2.000000e+00
  store float %478, ptr %475, align 4, !tbaa !18
  %479 = load i32, ptr %22, align 4, !tbaa !9
  %480 = sext i32 %479 to i64
  %481 = load i32, ptr %22, align 4, !tbaa !9
  %482 = add nsw i32 %481, 1
  %483 = sext i32 %482 to i64
  %484 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %480, i64 noundef %483)
          to label %485 unwind label %145

485:                                              ; preds = %476
  %486 = load float, ptr %484, align 4, !tbaa !18
  %487 = fadd float %486, -2.000000e+00
  store float %487, ptr %484, align 4, !tbaa !18
  %488 = load i32, ptr %22, align 4, !tbaa !9
  %489 = sext i32 %488 to i64
  %490 = load i32, ptr %22, align 4, !tbaa !9
  %491 = load i32, ptr %5, align 4, !tbaa !9
  %492 = add nsw i32 %490, %491
  %493 = sext i32 %492 to i64
  %494 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %489, i64 noundef %493)
          to label %495 unwind label %145

495:                                              ; preds = %485
  %496 = load float, ptr %494, align 4, !tbaa !18
  %497 = fadd float %496, -2.000000e+00
  store float %497, ptr %494, align 4, !tbaa !18
  %498 = load i32, ptr %22, align 4, !tbaa !9
  %499 = sext i32 %498 to i64
  %500 = load i32, ptr %22, align 4, !tbaa !9
  %501 = load i32, ptr %5, align 4, !tbaa !9
  %502 = add nsw i32 %500, %501
  %503 = add nsw i32 %502, 1
  %504 = sext i32 %503 to i64
  %505 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %499, i64 noundef %504)
          to label %506 unwind label %145

506:                                              ; preds = %495
  %507 = load float, ptr %505, align 4, !tbaa !18
  %508 = fadd float %507, 2.000000e+00
  store float %508, ptr %505, align 4, !tbaa !18
  br label %509

509:                                              ; preds = %506, %465, %460
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  br label %510

510:                                              ; preds = %509
  %511 = load i32, ptr %21, align 4, !tbaa !9
  %512 = add nsw i32 %511, 1
  store i32 %512, ptr %21, align 4, !tbaa !9
  br label %105, !llvm.loop !19

513:                                              ; preds = %109
  br label %514

514:                                              ; preds = %513
  %515 = load i32, ptr %19, align 4, !tbaa !9
  %516 = add nsw i32 %515, 1
  store i32 %516, ptr %19, align 4, !tbaa !9
  br label %79, !llvm.loop !21

517:                                              ; preds = %83
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #6
  store i64 0, ptr %23, align 8, !tbaa !22
  br label %518

518:                                              ; preds = %733, %517
  %519 = load i64, ptr %23, align 8, !tbaa !22
  %520 = getelementptr inbounds %"class.MorphLib::CMorph", ptr %45, i32 0, i32 0
  %521 = load ptr, ptr %520, align 8, !tbaa !24
  %522 = getelementptr inbounds %"class.MorphLib::CParameters", ptr %521, i32 0, i32 15
  %523 = call noundef i64 @_ZNKSt6vectorIN8MorphLib15ConstraintPointESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %522) #6
  %524 = icmp ult i64 %519, %523
  br i1 %524, label %526, label %525

525:                                              ; preds = %518
  store i32 8, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  br label %740

526:                                              ; preds = %518
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  %527 = getelementptr inbounds %"class.MorphLib::CMorph", ptr %45, i32 0, i32 0
  %528 = load ptr, ptr %527, align 8, !tbaa !24
  %529 = getelementptr inbounds %"class.MorphLib::CParameters", ptr %528, i32 0, i32 15
  %530 = load i64, ptr %23, align 8, !tbaa !22
  %531 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorIN8MorphLib15ConstraintPointESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %529, i64 noundef %530) #6
  %532 = getelementptr inbounds %"struct.MorphLib::ConstraintPoint", ptr %531, i32 0, i32 0
  %533 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLi2ELi1ELi0ELi2ELi1EEELi1EE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %532)
          to label %534 unwind label %631

534:                                              ; preds = %526
  %535 = load float, ptr %533, align 4, !tbaa !18
  %536 = getelementptr inbounds %"class.MorphLib::CMorph", ptr %45, i32 0, i32 1
  %537 = load ptr, ptr %536, align 8, !tbaa !11
  %538 = getelementptr inbounds %class.CPyramid, ptr %537, i32 0, i32 0
  %539 = load i32, ptr %4, align 4, !tbaa !9
  %540 = sext i32 %539 to i64
  %541 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorI13CPyramidLevelSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %538, i64 noundef %540) #6
  %542 = getelementptr inbounds %class.CPyramidLevel, ptr %541, i32 0, i32 0
  %543 = load i32, ptr %542, align 8, !tbaa !14
  %544 = sitofp i32 %543 to float
  %545 = call float @llvm.fmuladd.f32(float %535, float %544, float -5.000000e-01)
  store float %545, ptr %24, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  %546 = getelementptr inbounds %"class.MorphLib::CMorph", ptr %45, i32 0, i32 0
  %547 = load ptr, ptr %546, align 8, !tbaa !24
  %548 = getelementptr inbounds %"class.MorphLib::CParameters", ptr %547, i32 0, i32 15
  %549 = load i64, ptr %23, align 8, !tbaa !22
  %550 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorIN8MorphLib15ConstraintPointESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %548, i64 noundef %549) #6
  %551 = getelementptr inbounds %"struct.MorphLib::ConstraintPoint", ptr %550, i32 0, i32 0
  %552 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLi2ELi1ELi0ELi2ELi1EEELi1EE1yEv(ptr noundef nonnull align 1 dereferenceable(1) %551)
          to label %553 unwind label %635

553:                                              ; preds = %534
  %554 = load float, ptr %552, align 4, !tbaa !18
  %555 = getelementptr inbounds %"class.MorphLib::CMorph", ptr %45, i32 0, i32 1
  %556 = load ptr, ptr %555, align 8, !tbaa !11
  %557 = getelementptr inbounds %class.CPyramid, ptr %556, i32 0, i32 0
  %558 = load i32, ptr %4, align 4, !tbaa !9
  %559 = sext i32 %558 to i64
  %560 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorI13CPyramidLevelSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %557, i64 noundef %559) #6
  %561 = getelementptr inbounds %class.CPyramidLevel, ptr %560, i32 0, i32 1
  %562 = load i32, ptr %561, align 4, !tbaa !17
  %563 = sitofp i32 %562 to float
  %564 = call float @llvm.fmuladd.f32(float %554, float %563, float -5.000000e-01)
  store float %564, ptr %25, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  %565 = getelementptr inbounds %"class.MorphLib::CMorph", ptr %45, i32 0, i32 0
  %566 = load ptr, ptr %565, align 8, !tbaa !24
  %567 = getelementptr inbounds %"class.MorphLib::CParameters", ptr %566, i32 0, i32 15
  %568 = load i64, ptr %23, align 8, !tbaa !22
  %569 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorIN8MorphLib15ConstraintPointESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %567, i64 noundef %568) #6
  %570 = getelementptr inbounds %"struct.MorphLib::ConstraintPoint", ptr %569, i32 0, i32 1
  %571 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLi2ELi1ELi0ELi2ELi1EEELi1EE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %570)
          to label %572 unwind label %639

572:                                              ; preds = %553
  %573 = load float, ptr %571, align 4, !tbaa !18
  %574 = getelementptr inbounds %"class.MorphLib::CMorph", ptr %45, i32 0, i32 1
  %575 = load ptr, ptr %574, align 8, !tbaa !11
  %576 = getelementptr inbounds %class.CPyramid, ptr %575, i32 0, i32 0
  %577 = load i32, ptr %4, align 4, !tbaa !9
  %578 = sext i32 %577 to i64
  %579 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorI13CPyramidLevelSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %576, i64 noundef %578) #6
  %580 = getelementptr inbounds %class.CPyramidLevel, ptr %579, i32 0, i32 0
  %581 = load i32, ptr %580, align 8, !tbaa !14
  %582 = sitofp i32 %581 to float
  %583 = call float @llvm.fmuladd.f32(float %573, float %582, float -5.000000e-01)
  store float %583, ptr %26, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  %584 = getelementptr inbounds %"class.MorphLib::CMorph", ptr %45, i32 0, i32 0
  %585 = load ptr, ptr %584, align 8, !tbaa !24
  %586 = getelementptr inbounds %"class.MorphLib::CParameters", ptr %585, i32 0, i32 15
  %587 = load i64, ptr %23, align 8, !tbaa !22
  %588 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorIN8MorphLib15ConstraintPointESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %586, i64 noundef %587) #6
  %589 = getelementptr inbounds %"struct.MorphLib::ConstraintPoint", ptr %588, i32 0, i32 1
  %590 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLi2ELi1ELi0ELi2ELi1EEELi1EE1yEv(ptr noundef nonnull align 1 dereferenceable(1) %589)
          to label %591 unwind label %643

591:                                              ; preds = %572
  %592 = load float, ptr %590, align 4, !tbaa !18
  %593 = getelementptr inbounds %"class.MorphLib::CMorph", ptr %45, i32 0, i32 1
  %594 = load ptr, ptr %593, align 8, !tbaa !11
  %595 = getelementptr inbounds %class.CPyramid, ptr %594, i32 0, i32 0
  %596 = load i32, ptr %4, align 4, !tbaa !9
  %597 = sext i32 %596 to i64
  %598 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorI13CPyramidLevelSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %595, i64 noundef %597) #6
  %599 = getelementptr inbounds %class.CPyramidLevel, ptr %598, i32 0, i32 1
  %600 = load i32, ptr %599, align 4, !tbaa !17
  %601 = sitofp i32 %600 to float
  %602 = call float @llvm.fmuladd.f32(float %592, float %601, float -5.000000e-01)
  store float %602, ptr %27, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  %603 = load float, ptr %24, align 4, !tbaa !18
  %604 = load float, ptr %26, align 4, !tbaa !18
  %605 = fadd float %603, %604
  %606 = fdiv float %605, 2.000000e+00
  store float %606, ptr %28, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  %607 = load float, ptr %25, align 4, !tbaa !18
  %608 = load float, ptr %27, align 4, !tbaa !18
  %609 = fadd float %607, %608
  %610 = fdiv float %609, 2.000000e+00
  store float %610, ptr %29, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  %611 = load float, ptr %26, align 4, !tbaa !18
  %612 = load float, ptr %24, align 4, !tbaa !18
  %613 = fsub float %611, %612
  %614 = fdiv float %613, 2.000000e+00
  store float %614, ptr %30, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  %615 = load float, ptr %27, align 4, !tbaa !18
  %616 = load float, ptr %25, align 4, !tbaa !18
  %617 = fsub float %615, %616
  %618 = fdiv float %617, 2.000000e+00
  store float %618, ptr %31, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  %619 = load float, ptr %29, align 4, !tbaa !18
  %620 = fpext float %619 to double
  %621 = call double @llvm.floor.f64(double %620)
  %622 = fptosi double %621 to i32
  store i32 %622, ptr %32, align 4, !tbaa !9
  br label %623

623:                                              ; preds = %729, %591
  %624 = load i32, ptr %32, align 4, !tbaa !9
  %625 = load float, ptr %29, align 4, !tbaa !18
  %626 = fpext float %625 to double
  %627 = call double @llvm.ceil.f64(double %626)
  %628 = fptosi double %627 to i32
  %629 = icmp sle i32 %624, %628
  br i1 %629, label %647, label %630

630:                                              ; preds = %623
  store i32 11, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  br label %732

631:                                              ; preds = %526
  %632 = landingpad { ptr, i32 }
          cleanup
  %633 = extractvalue { ptr, i32 } %632, 0
  store ptr %633, ptr %11, align 8
  %634 = extractvalue { ptr, i32 } %632, 1
  store i32 %634, ptr %12, align 4
  br label %739

635:                                              ; preds = %534
  %636 = landingpad { ptr, i32 }
          cleanup
  %637 = extractvalue { ptr, i32 } %636, 0
  store ptr %637, ptr %11, align 8
  %638 = extractvalue { ptr, i32 } %636, 1
  store i32 %638, ptr %12, align 4
  br label %738

639:                                              ; preds = %553
  %640 = landingpad { ptr, i32 }
          cleanup
  %641 = extractvalue { ptr, i32 } %640, 0
  store ptr %641, ptr %11, align 8
  %642 = extractvalue { ptr, i32 } %640, 1
  store i32 %642, ptr %12, align 4
  br label %737

643:                                              ; preds = %572
  %644 = landingpad { ptr, i32 }
          cleanup
  %645 = extractvalue { ptr, i32 } %644, 0
  store ptr %645, ptr %11, align 8
  %646 = extractvalue { ptr, i32 } %644, 1
  store i32 %646, ptr %12, align 4
  br label %736

647:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  %648 = load float, ptr %28, align 4, !tbaa !18
  %649 = fpext float %648 to double
  %650 = call double @llvm.floor.f64(double %649)
  %651 = fptosi double %650 to i32
  store i32 %651, ptr %33, align 4, !tbaa !9
  br label %652

652:                                              ; preds = %724, %647
  %653 = load i32, ptr %33, align 4, !tbaa !9
  %654 = load float, ptr %28, align 4, !tbaa !18
  %655 = fpext float %654 to double
  %656 = call double @llvm.ceil.f64(double %655)
  %657 = fptosi double %656 to i32
  %658 = icmp sle i32 %653, %657
  br i1 %658, label %660, label %659

659:                                              ; preds = %652
  store i32 14, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  br label %728

660:                                              ; preds = %652
  %661 = load i32, ptr %33, align 4, !tbaa !9
  %662 = sitofp i32 %661 to float
  %663 = load i32, ptr %32, align 4, !tbaa !9
  %664 = sitofp i32 %663 to float
  %665 = load i32, ptr %4, align 4, !tbaa !9
  %666 = invoke noundef zeroext i1 @_ZN8MorphLib6CMorph6insideEffi(ptr noundef nonnull align 8 dereferenceable(49) %45, float noundef %662, float noundef %664, i32 noundef %665)
          to label %667 unwind label %715

667:                                              ; preds = %660
  br i1 %666, label %668, label %723

668:                                              ; preds = %667
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  %669 = load i32, ptr %32, align 4, !tbaa !9
  %670 = sitofp i32 %669 to float
  %671 = load float, ptr %29, align 4, !tbaa !18
  %672 = fsub float %670, %671
  %673 = fpext float %672 to double
  %674 = call double @llvm.fabs.f64(double %673)
  %675 = fsub double 1.000000e+00, %674
  %676 = load i32, ptr %33, align 4, !tbaa !9
  %677 = sitofp i32 %676 to float
  %678 = load float, ptr %28, align 4, !tbaa !18
  %679 = fsub float %677, %678
  %680 = fpext float %679 to double
  %681 = call double @llvm.fabs.f64(double %680)
  %682 = fsub double 1.000000e+00, %681
  %683 = fmul double %675, %682
  %684 = fptrunc double %683 to float
  store float %684, ptr %34, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  %685 = load i32, ptr %32, align 4, !tbaa !9
  %686 = load i32, ptr %5, align 4, !tbaa !9
  %687 = mul nsw i32 %685, %686
  %688 = load i32, ptr %33, align 4, !tbaa !9
  %689 = add nsw i32 %687, %688
  store i32 %689, ptr %35, align 4, !tbaa !9
  %690 = load float, ptr %34, align 4, !tbaa !18
  %691 = load i32, ptr %35, align 4, !tbaa !9
  %692 = sext i32 %691 to i64
  %693 = load i32, ptr %35, align 4, !tbaa !9
  %694 = sext i32 %693 to i64
  %695 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %692, i64 noundef %694)
          to label %696 unwind label %719

696:                                              ; preds = %668
  %697 = load float, ptr %695, align 4, !tbaa !18
  %698 = fadd float %697, %690
  store float %698, ptr %695, align 4, !tbaa !18
  %699 = load float, ptr %34, align 4, !tbaa !18
  %700 = load float, ptr %30, align 4, !tbaa !18
  %701 = load i32, ptr %35, align 4, !tbaa !9
  %702 = sext i32 %701 to i64
  %703 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %9, i64 noundef %702, i64 noundef 0)
          to label %704 unwind label %719

704:                                              ; preds = %696
  %705 = load float, ptr %703, align 4, !tbaa !18
  %706 = call float @llvm.fmuladd.f32(float %699, float %700, float %705)
  store float %706, ptr %703, align 4, !tbaa !18
  %707 = load float, ptr %34, align 4, !tbaa !18
  %708 = load float, ptr %31, align 4, !tbaa !18
  %709 = load i32, ptr %35, align 4, !tbaa !9
  %710 = sext i32 %709 to i64
  %711 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %13, i64 noundef %710, i64 noundef 0)
          to label %712 unwind label %719

712:                                              ; preds = %704
  %713 = load float, ptr %711, align 4, !tbaa !18
  %714 = call float @llvm.fmuladd.f32(float %707, float %708, float %713)
  store float %714, ptr %711, align 4, !tbaa !18
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  br label %723

715:                                              ; preds = %660
  %716 = landingpad { ptr, i32 }
          cleanup
  %717 = extractvalue { ptr, i32 } %716, 0
  store ptr %717, ptr %11, align 8
  %718 = extractvalue { ptr, i32 } %716, 1
  store i32 %718, ptr %12, align 4
  br label %727

719:                                              ; preds = %704, %696, %668
  %720 = landingpad { ptr, i32 }
          cleanup
  %721 = extractvalue { ptr, i32 } %720, 0
  store ptr %721, ptr %11, align 8
  %722 = extractvalue { ptr, i32 } %720, 1
  store i32 %722, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  br label %727

723:                                              ; preds = %712, %667
  br label %724

724:                                              ; preds = %723
  %725 = load i32, ptr %33, align 4, !tbaa !9
  %726 = add nsw i32 %725, 1
  store i32 %726, ptr %33, align 4, !tbaa !9
  br label %652, !llvm.loop !25

727:                                              ; preds = %719, %715
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  br label %736

728:                                              ; preds = %659
  br label %729

729:                                              ; preds = %728
  %730 = load i32, ptr %32, align 4, !tbaa !9
  %731 = add nsw i32 %730, 1
  store i32 %731, ptr %32, align 4, !tbaa !9
  br label %623, !llvm.loop !26

732:                                              ; preds = %630
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  br label %733

733:                                              ; preds = %732
  %734 = load i64, ptr %23, align 8, !tbaa !22
  %735 = add i64 %734, 1
  store i64 %735, ptr %23, align 8, !tbaa !22
  br label %518, !llvm.loop !27

736:                                              ; preds = %727, %643
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %737

737:                                              ; preds = %736, %639
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  br label %738

738:                                              ; preds = %737, %635
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %739

739:                                              ; preds = %738, %631
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  br label %988

740:                                              ; preds = %525
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  %741 = getelementptr inbounds %"class.MorphLib::CMorph", ptr %45, i32 0, i32 0
  %742 = load ptr, ptr %741, align 8, !tbaa !24
  %743 = getelementptr inbounds %"class.MorphLib::CParameters", ptr %742, i32 0, i32 14
  %744 = load i32, ptr %743, align 8, !tbaa !28
  switch i32 %744, label %886 [
    i32 0, label %886
    i32 1, label %745
    i32 2, label %810
  ]

745:                                              ; preds = %740
  store i32 0, ptr %36, align 4, !tbaa !9
  store i32 0, ptr %37, align 4, !tbaa !9
  %746 = load i32, ptr %37, align 4, !tbaa !9
  %747 = load i32, ptr %5, align 4, !tbaa !9
  %748 = mul nsw i32 %746, %747
  %749 = load i32, ptr %36, align 4, !tbaa !9
  %750 = add nsw i32 %748, %749
  store i32 %750, ptr %38, align 4, !tbaa !9
  %751 = load i32, ptr %38, align 4, !tbaa !9
  %752 = sext i32 %751 to i64
  %753 = load i32, ptr %38, align 4, !tbaa !9
  %754 = sext i32 %753 to i64
  %755 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %752, i64 noundef %754)
          to label %756 unwind label %806

756:                                              ; preds = %745
  %757 = load float, ptr %755, align 4, !tbaa !18
  %758 = fadd float %757, 1.000000e+01
  store float %758, ptr %755, align 4, !tbaa !18
  store i32 0, ptr %36, align 4, !tbaa !9
  %759 = load i32, ptr %6, align 4, !tbaa !9
  %760 = sub nsw i32 %759, 1
  store i32 %760, ptr %37, align 4, !tbaa !9
  %761 = load i32, ptr %37, align 4, !tbaa !9
  %762 = load i32, ptr %5, align 4, !tbaa !9
  %763 = mul nsw i32 %761, %762
  %764 = load i32, ptr %36, align 4, !tbaa !9
  %765 = add nsw i32 %763, %764
  store i32 %765, ptr %38, align 4, !tbaa !9
  %766 = load i32, ptr %38, align 4, !tbaa !9
  %767 = sext i32 %766 to i64
  %768 = load i32, ptr %38, align 4, !tbaa !9
  %769 = sext i32 %768 to i64
  %770 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %767, i64 noundef %769)
          to label %771 unwind label %806

771:                                              ; preds = %756
  %772 = load float, ptr %770, align 4, !tbaa !18
  %773 = fadd float %772, 1.000000e+01
  store float %773, ptr %770, align 4, !tbaa !18
  %774 = load i32, ptr %5, align 4, !tbaa !9
  %775 = sub nsw i32 %774, 1
  store i32 %775, ptr %36, align 4, !tbaa !9
  %776 = load i32, ptr %6, align 4, !tbaa !9
  %777 = sub nsw i32 %776, 1
  store i32 %777, ptr %37, align 4, !tbaa !9
  %778 = load i32, ptr %37, align 4, !tbaa !9
  %779 = load i32, ptr %5, align 4, !tbaa !9
  %780 = mul nsw i32 %778, %779
  %781 = load i32, ptr %36, align 4, !tbaa !9
  %782 = add nsw i32 %780, %781
  store i32 %782, ptr %38, align 4, !tbaa !9
  %783 = load i32, ptr %38, align 4, !tbaa !9
  %784 = sext i32 %783 to i64
  %785 = load i32, ptr %38, align 4, !tbaa !9
  %786 = sext i32 %785 to i64
  %787 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %784, i64 noundef %786)
          to label %788 unwind label %806

788:                                              ; preds = %771
  %789 = load float, ptr %787, align 4, !tbaa !18
  %790 = fadd float %789, 1.000000e+01
  store float %790, ptr %787, align 4, !tbaa !18
  %791 = load i32, ptr %5, align 4, !tbaa !9
  %792 = sub nsw i32 %791, 1
  store i32 %792, ptr %36, align 4, !tbaa !9
  store i32 0, ptr %37, align 4, !tbaa !9
  %793 = load i32, ptr %37, align 4, !tbaa !9
  %794 = load i32, ptr %5, align 4, !tbaa !9
  %795 = mul nsw i32 %793, %794
  %796 = load i32, ptr %36, align 4, !tbaa !9
  %797 = add nsw i32 %795, %796
  store i32 %797, ptr %38, align 4, !tbaa !9
  %798 = load i32, ptr %38, align 4, !tbaa !9
  %799 = sext i32 %798 to i64
  %800 = load i32, ptr %38, align 4, !tbaa !9
  %801 = sext i32 %800 to i64
  %802 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %799, i64 noundef %801)
          to label %803 unwind label %806

803:                                              ; preds = %788
  %804 = load float, ptr %802, align 4, !tbaa !18
  %805 = fadd float %804, 1.000000e+01
  store float %805, ptr %802, align 4, !tbaa !18
  br label %886

806:                                              ; preds = %864, %853, %826, %815, %788, %771, %756, %745
  %807 = landingpad { ptr, i32 }
          cleanup
  %808 = extractvalue { ptr, i32 } %807, 0
  store ptr %808, ptr %11, align 8
  %809 = extractvalue { ptr, i32 } %807, 1
  store i32 %809, ptr %12, align 4
  br label %987

810:                                              ; preds = %740
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %811

811:                                              ; preds = %844, %810
  %812 = load i32, ptr %36, align 4, !tbaa !9
  %813 = load i32, ptr %5, align 4, !tbaa !9
  %814 = icmp slt i32 %812, %813
  br i1 %814, label %815, label %847

815:                                              ; preds = %811
  store i32 0, ptr %37, align 4, !tbaa !9
  %816 = load i32, ptr %37, align 4, !tbaa !9
  %817 = load i32, ptr %5, align 4, !tbaa !9
  %818 = mul nsw i32 %816, %817
  %819 = load i32, ptr %36, align 4, !tbaa !9
  %820 = add nsw i32 %818, %819
  store i32 %820, ptr %38, align 4, !tbaa !9
  %821 = load i32, ptr %38, align 4, !tbaa !9
  %822 = sext i32 %821 to i64
  %823 = load i32, ptr %38, align 4, !tbaa !9
  %824 = sext i32 %823 to i64
  %825 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %822, i64 noundef %824)
          to label %826 unwind label %806

826:                                              ; preds = %815
  %827 = load float, ptr %825, align 4, !tbaa !18
  %828 = fadd float %827, 1.000000e+01
  store float %828, ptr %825, align 4, !tbaa !18
  %829 = load i32, ptr %6, align 4, !tbaa !9
  %830 = sub nsw i32 %829, 1
  store i32 %830, ptr %37, align 4, !tbaa !9
  %831 = load i32, ptr %37, align 4, !tbaa !9
  %832 = load i32, ptr %5, align 4, !tbaa !9
  %833 = mul nsw i32 %831, %832
  %834 = load i32, ptr %36, align 4, !tbaa !9
  %835 = add nsw i32 %833, %834
  store i32 %835, ptr %38, align 4, !tbaa !9
  %836 = load i32, ptr %38, align 4, !tbaa !9
  %837 = sext i32 %836 to i64
  %838 = load i32, ptr %38, align 4, !tbaa !9
  %839 = sext i32 %838 to i64
  %840 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %837, i64 noundef %839)
          to label %841 unwind label %806

841:                                              ; preds = %826
  %842 = load float, ptr %840, align 4, !tbaa !18
  %843 = fadd float %842, 1.000000e+01
  store float %843, ptr %840, align 4, !tbaa !18
  br label %844

844:                                              ; preds = %841
  %845 = load i32, ptr %36, align 4, !tbaa !9
  %846 = add nsw i32 %845, 1
  store i32 %846, ptr %36, align 4, !tbaa !9
  br label %811, !llvm.loop !35

847:                                              ; preds = %811
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %848

848:                                              ; preds = %882, %847
  %849 = load i32, ptr %37, align 4, !tbaa !9
  %850 = load i32, ptr %6, align 4, !tbaa !9
  %851 = sub nsw i32 %850, 1
  %852 = icmp slt i32 %849, %851
  br i1 %852, label %853, label %885

853:                                              ; preds = %848
  store i32 0, ptr %36, align 4, !tbaa !9
  %854 = load i32, ptr %37, align 4, !tbaa !9
  %855 = load i32, ptr %5, align 4, !tbaa !9
  %856 = mul nsw i32 %854, %855
  %857 = load i32, ptr %36, align 4, !tbaa !9
  %858 = add nsw i32 %856, %857
  store i32 %858, ptr %38, align 4, !tbaa !9
  %859 = load i32, ptr %38, align 4, !tbaa !9
  %860 = sext i32 %859 to i64
  %861 = load i32, ptr %38, align 4, !tbaa !9
  %862 = sext i32 %861 to i64
  %863 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %860, i64 noundef %862)
          to label %864 unwind label %806

864:                                              ; preds = %853
  %865 = load float, ptr %863, align 4, !tbaa !18
  %866 = fadd float %865, 1.000000e+01
  store float %866, ptr %863, align 4, !tbaa !18
  %867 = load i32, ptr %5, align 4, !tbaa !9
  %868 = sub nsw i32 %867, 1
  store i32 %868, ptr %36, align 4, !tbaa !9
  %869 = load i32, ptr %37, align 4, !tbaa !9
  %870 = load i32, ptr %5, align 4, !tbaa !9
  %871 = mul nsw i32 %869, %870
  %872 = load i32, ptr %36, align 4, !tbaa !9
  %873 = add nsw i32 %871, %872
  store i32 %873, ptr %38, align 4, !tbaa !9
  %874 = load i32, ptr %38, align 4, !tbaa !9
  %875 = sext i32 %874 to i64
  %876 = load i32, ptr %38, align 4, !tbaa !9
  %877 = sext i32 %876 to i64
  %878 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef %875, i64 noundef %877)
          to label %879 unwind label %806

879:                                              ; preds = %864
  %880 = load float, ptr %878, align 4, !tbaa !18
  %881 = fadd float %880, 1.000000e+01
  store float %881, ptr %878, align 4, !tbaa !18
  br label %882

882:                                              ; preds = %879
  %883 = load i32, ptr %37, align 4, !tbaa !9
  %884 = add nsw i32 %883, 1
  store i32 %884, ptr %37, align 4, !tbaa !9
  br label %848, !llvm.loop !36

885:                                              ; preds = %848
  br label %886

886:                                              ; preds = %885, %803, %740, %740
  call void @llvm.lifetime.start.p0(i64 120, ptr %39) #6
  invoke void @_ZN5Eigen9FullPivLUINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(114) %39, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %887 unwind label %911

887:                                              ; preds = %886
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #6
  %888 = invoke { ptr, ptr } @_ZNK5Eigen9FullPivLUINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEE5solveIS2_EEKNS_8internal12solve_retvalIS3_T_EERKNS_10MatrixBaseIS7_EE(ptr noundef nonnull align 8 dereferenceable(114) %39, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %889 unwind label %915

889:                                              ; preds = %887
  %890 = getelementptr inbounds %"struct.Eigen::internal::solve_retval", ptr %40, i32 0, i32 0
  %891 = getelementptr inbounds { ptr, ptr }, ptr %890, i32 0, i32 0
  %892 = extractvalue { ptr, ptr } %888, 0
  store ptr %892, ptr %891, align 8
  %893 = getelementptr inbounds { ptr, ptr }, ptr %890, i32 0, i32 1
  %894 = extractvalue { ptr, ptr } %888, 1
  store ptr %894, ptr %893, align 8
  %895 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen6MatrixIfLin1ELin1ELi0ELin1ELin1EEaSINS_8internal17solve_retval_baseINS_9FullPivLUIS1_EES1_EEEERS1_RKNS_13ReturnByValueIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %896 unwind label %915

896:                                              ; preds = %889
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #6
  %897 = invoke { ptr, ptr } @_ZNK5Eigen9FullPivLUINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEE5solveIS2_EEKNS_8internal12solve_retvalIS3_T_EERKNS_10MatrixBaseIS7_EE(ptr noundef nonnull align 8 dereferenceable(114) %39, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %898 unwind label %919

898:                                              ; preds = %896
  %899 = getelementptr inbounds %"struct.Eigen::internal::solve_retval", ptr %41, i32 0, i32 0
  %900 = getelementptr inbounds { ptr, ptr }, ptr %899, i32 0, i32 0
  %901 = extractvalue { ptr, ptr } %897, 0
  store ptr %901, ptr %900, align 8
  %902 = getelementptr inbounds { ptr, ptr }, ptr %899, i32 0, i32 1
  %903 = extractvalue { ptr, ptr } %897, 1
  store ptr %903, ptr %902, align 8
  %904 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen6MatrixIfLin1ELin1ELi0ELin1ELin1EEaSINS_8internal17solve_retval_baseINS_9FullPivLUIS1_EES1_EEEERS1_RKNS_13ReturnByValueIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %905 unwind label %919

905:                                              ; preds = %898
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  store i32 0, ptr %42, align 4, !tbaa !9
  br label %906

906:                                              ; preds = %981, %905
  %907 = load i32, ptr %42, align 4, !tbaa !9
  %908 = load i32, ptr %6, align 4, !tbaa !9
  %909 = icmp slt i32 %907, %908
  br i1 %909, label %923, label %910

910:                                              ; preds = %906
  store i32 24, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  br label %984

911:                                              ; preds = %886
  %912 = landingpad { ptr, i32 }
          cleanup
  %913 = extractvalue { ptr, i32 } %912, 0
  store ptr %913, ptr %11, align 8
  %914 = extractvalue { ptr, i32 } %912, 1
  store i32 %914, ptr %12, align 4
  br label %986

915:                                              ; preds = %889, %887
  %916 = landingpad { ptr, i32 }
          cleanup
  %917 = extractvalue { ptr, i32 } %916, 0
  store ptr %917, ptr %11, align 8
  %918 = extractvalue { ptr, i32 } %916, 1
  store i32 %918, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #6
  br label %985

919:                                              ; preds = %898, %896
  %920 = landingpad { ptr, i32 }
          cleanup
  %921 = extractvalue { ptr, i32 } %920, 0
  store ptr %921, ptr %11, align 8
  %922 = extractvalue { ptr, i32 } %920, 1
  store i32 %922, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #6
  br label %985

923:                                              ; preds = %906
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  store i32 0, ptr %43, align 4, !tbaa !9
  br label %924

924:                                              ; preds = %973, %923
  %925 = load i32, ptr %43, align 4, !tbaa !9
  %926 = load i32, ptr %5, align 4, !tbaa !9
  %927 = icmp slt i32 %925, %926
  br i1 %927, label %929, label %928

928:                                              ; preds = %924
  store i32 27, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  br label %980

929:                                              ; preds = %924
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  %930 = load i32, ptr %43, align 4, !tbaa !9
  %931 = load i32, ptr %42, align 4, !tbaa !9
  %932 = load i32, ptr %4, align 4, !tbaa !9
  %933 = invoke noundef i32 @_ZN8MorphLib6CMorph9mem_indexEiii(ptr noundef nonnull align 8 dereferenceable(49) %45, i32 noundef %930, i32 noundef %931, i32 noundef %932)
          to label %934 unwind label %976

934:                                              ; preds = %929
  store i32 %933, ptr %44, align 4, !tbaa !9
  %935 = load i32, ptr %42, align 4, !tbaa !9
  %936 = load i32, ptr %5, align 4, !tbaa !9
  %937 = mul nsw i32 %935, %936
  %938 = load i32, ptr %43, align 4, !tbaa !9
  %939 = add nsw i32 %937, %938
  %940 = sext i32 %939 to i64
  %941 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %15, i64 noundef %940, i64 noundef 0)
          to label %942 unwind label %976

942:                                              ; preds = %934
  %943 = load float, ptr %941, align 4, !tbaa !18
  %944 = getelementptr inbounds %"class.MorphLib::CMorph", ptr %45, i32 0, i32 8
  %945 = load ptr, ptr %944, align 8, !tbaa !37
  %946 = load i32, ptr %4, align 4, !tbaa !9
  %947 = sext i32 %946 to i64
  %948 = getelementptr inbounds %"struct.MorphLib::CData", ptr %945, i64 %947
  %949 = getelementptr inbounds %"struct.MorphLib::CData", ptr %948, i32 0, i32 4
  %950 = load ptr, ptr %949, align 8, !tbaa !38
  %951 = load i32, ptr %44, align 4, !tbaa !9
  %952 = sext i32 %951 to i64
  %953 = getelementptr inbounds float, ptr %950, i64 %952
  store float %943, ptr %953, align 4, !tbaa !18
  %954 = load i32, ptr %42, align 4, !tbaa !9
  %955 = load i32, ptr %5, align 4, !tbaa !9
  %956 = mul nsw i32 %954, %955
  %957 = load i32, ptr %43, align 4, !tbaa !9
  %958 = add nsw i32 %956, %957
  %959 = sext i32 %958 to i64
  %960 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %17, i64 noundef %959, i64 noundef 0)
          to label %961 unwind label %976

961:                                              ; preds = %942
  %962 = load float, ptr %960, align 4, !tbaa !18
  %963 = getelementptr inbounds %"class.MorphLib::CMorph", ptr %45, i32 0, i32 8
  %964 = load ptr, ptr %963, align 8, !tbaa !37
  %965 = load i32, ptr %4, align 4, !tbaa !9
  %966 = sext i32 %965 to i64
  %967 = getelementptr inbounds %"struct.MorphLib::CData", ptr %964, i64 %966
  %968 = getelementptr inbounds %"struct.MorphLib::CData", ptr %967, i32 0, i32 5
  %969 = load ptr, ptr %968, align 8, !tbaa !43
  %970 = load i32, ptr %44, align 4, !tbaa !9
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds float, ptr %969, i64 %971
  store float %962, ptr %972, align 4, !tbaa !18
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  br label %973

973:                                              ; preds = %961
  %974 = load i32, ptr %43, align 4, !tbaa !9
  %975 = add nsw i32 %974, 1
  store i32 %975, ptr %43, align 4, !tbaa !9
  br label %924, !llvm.loop !44

976:                                              ; preds = %942, %934, %929
  %977 = landingpad { ptr, i32 }
          cleanup
  %978 = extractvalue { ptr, i32 } %977, 0
  store ptr %978, ptr %11, align 8
  %979 = extractvalue { ptr, i32 } %977, 1
  store i32 %979, ptr %12, align 4
  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
  br label %985

980:                                              ; preds = %928
  br label %981

981:                                              ; preds = %980
  %982 = load i32, ptr %42, align 4, !tbaa !9
  %983 = add nsw i32 %982, 1
  store i32 %983, ptr %42, align 4, !tbaa !9
  br label %906, !llvm.loop !45

984:                                              ; preds = %910
  call void @_ZN5Eigen9FullPivLUINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(114) %39) #6
  call void @llvm.lifetime.end.p0(i64 120, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #6
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #6
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #6
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #6
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #6
  ret void

985:                                              ; preds = %976, %919, %915
  call void @_ZN5Eigen9FullPivLUINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(114) %39) #6
  br label %986

986:                                              ; preds = %985, %911
  call void @llvm.lifetime.end.p0(i64 120, ptr %39) #6
  br label %987

987:                                              ; preds = %986, %806
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  br label %988

988:                                              ; preds = %987, %739, %145, %100
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #6
  br label %989

989:                                              ; preds = %988, %96
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #6
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #6
  br label %990

990:                                              ; preds = %989, %92
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #6
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #6
  br label %991

991:                                              ; preds = %990, %88
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #6
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #6
  br label %992

992:                                              ; preds = %991, %84
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #6
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #6
  br label %993

993:                                              ; preds = %992
  %994 = load ptr, ptr %11, align 8
  %995 = load i32, ptr %12, align 4
  %996 = insertvalue { ptr, i32 } poison, ptr %994, 0
  %997 = insertvalue { ptr, i32 } %996, i32 %995, 1
  resume { ptr, i32 } %997
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN8MorphLib6CMorph9mem_indexEiii(ptr noundef nonnull align 8 dereferenceable(49), i32 noundef, i32 noundef, i32 noundef) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLi2ELi1ELi0ELi2ELi1EEELi1EE1xEv(ptr noundef nonnull align 1 dereferenceable(1)) #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLi2ELi1ELi0ELi2ELi1EEELi1EE1yEv(ptr noundef nonnull align 1 dereferenceable(1)) #4 align 2

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

; 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: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.ceil.f64(double) #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8MorphLib6CMorph6insideEffi(ptr noundef nonnull align 8 dereferenceable(49), float noundef, float noundef, i32 noundef) #3 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1)) #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1), i64 noundef, i64 noundef) #4 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen9FullPivLUINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEE5solveIS2_EEKNS_8internal12solve_retvalIS3_T_EERKNS_10MatrixBaseIS7_EE(ptr noundef nonnull align 8 dereferenceable(114), ptr noundef nonnull align 1 dereferenceable(1)) #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen6MatrixIfLin1ELin1ELi0ELin1ELin1EEaSINS_8internal17solve_retval_baseINS_9FullPivLUIS1_EES1_EEEERS1_RKNS_13ReturnByValueIT_EE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 1 dereferenceable(1)) #4 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #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 = { 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 #3 = { 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 #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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, !6, i64 8}
!12 = !{!"_ZTSN8MorphLib6CMorphE", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !6, i64 40, !13, i64 48}
!13 = !{!"bool", !7, i64 0}
!14 = !{!15, !10, i64 0}
!15 = !{!"_ZTS13CPyramidLevel", !10, i64 0, !10, i64 4, !16, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!16 = !{!"float", !7, i64 0}
!17 = !{!15, !10, i64 4}
!18 = !{!16, !16, i64 0}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = !{!23, !23, i64 0}
!23 = !{!"long", !7, i64 0}
!24 = !{!12, !6, i64 0}
!25 = distinct !{!25, !20}
!26 = distinct !{!26, !20}
!27 = distinct !{!27, !20}
!28 = !{!29, !30, i64 72}
!29 = !{!"_ZTSN8MorphLib11CParametersE", !10, i64 0, !10, i64 4, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !16, i64 40, !16, i64 44, !16, i64 48, !16, i64 52, !16, i64 56, !10, i64 60, !10, i64 64, !16, i64 68, !30, i64 72, !31, i64 80}
!30 = !{!"_ZTSN8MorphLib17BoundaryConditionE", !7, i64 0}
!31 = !{!"_ZTSSt6vectorIN8MorphLib15ConstraintPointESaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIN8MorphLib15ConstraintPointESaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN8MorphLib15ConstraintPointESaIS1_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIN8MorphLib15ConstraintPointESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = distinct !{!35, !20}
!36 = distinct !{!36, !20}
!37 = !{!12, !6, i64 40}
!38 = !{!39, !6, i64 128}
!39 = !{!"_ZTSN8MorphLib5CDataE", !40, i64 0, !41, i64 72, !42, i64 96, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !10, i64 152}
!40 = !{!"_ZTSN8MorphLib5CDataUt_E", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64}
!41 = !{!"_ZTSN8MorphLib5CDataUt0_E", !6, i64 0, !6, i64 8, !6, i64 16}
!42 = !{!"_ZTSN8MorphLib5CDataUt1_E", !6, i64 0, !6, i64 8, !6, i64 16}
!43 = !{!39, !6, i64 136}
!44 = distinct !{!44, !20}
!45 = distinct !{!45, !20}


; 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.Eigen::Matrix.9" = type { %"class.Eigen::PlainObjectBase.10" }
%"class.Eigen::PlainObjectBase.10" = type { %"class.Eigen::DenseStorage.18" }
%"class.Eigen::DenseStorage.18" = type { ptr, i64, i64 }
%"class.Eigen::FullPivLU" = type <{ %"class.Eigen::Matrix.9", %"class.Eigen::PermutationMatrix", %"class.Eigen::PermutationMatrix", %"class.Eigen::Matrix.30", %"class.Eigen::Matrix.40", i64, i64, float, float, i8, i8, [6 x i8] }>
%"class.Eigen::PermutationMatrix" = type { %"class.Eigen::Matrix.20" }
%"class.Eigen::Matrix.20" = type { %"class.Eigen::PlainObjectBase.21" }
%"class.Eigen::PlainObjectBase.21" = type { %"class.Eigen::DenseStorage.29" }
%"class.Eigen::DenseStorage.29" = type { ptr, i64 }
%"class.Eigen::Matrix.30" = type { %"class.Eigen::PlainObjectBase.31" }
%"class.Eigen::PlainObjectBase.31" = type { %"class.Eigen::DenseStorage.39" }
%"class.Eigen::DenseStorage.39" = type { ptr, i64 }
%"class.Eigen::Matrix.40" = type { %"class.Eigen::PlainObjectBase.41" }
%"class.Eigen::PlainObjectBase.41" = type { %"class.Eigen::DenseStorage.49" }
%"class.Eigen::DenseStorage.49" = type { ptr, i64 }
%"struct.Eigen::internal::solve_retval" = type { %"struct.Eigen::internal::solve_retval_base" }
%"struct.Eigen::internal::solve_retval_base" = type { ptr, ptr }
%"struct.MorphLib::CData" = type { %struct.anon, %struct.anon.5, %struct.anon.6, ptr, ptr, ptr, ptr, i32 }
%struct.anon = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.anon.5 = type { ptr, ptr, ptr }
%struct.anon.6 = type { ptr, ptr, ptr }

declare i32 @__gxx_personality_v0(...)

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

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

; 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 i64 @_ZNKSt6vectorIN8MorphLib15ConstraintPointESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8MorphLib6CMorph21optimize_highestlevelEi(ptr noundef nonnull align 8 dereferenceable(49) %0, i32 noundef %1) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca %"class.Eigen::Matrix.9", align 8
  %5 = alloca %"class.Eigen::Matrix.9", align 8
  %6 = alloca i32, align 4
  %7 = alloca %"class.Eigen::Matrix.9", align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.Eigen::Matrix.9", align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.Eigen::Matrix.9", align 8
  %12 = alloca i32, align 4
  %13 = alloca %"class.Eigen::FullPivLU", align 8
  %14 = alloca %"struct.Eigen::internal::solve_retval", align 8
  %15 = alloca %"struct.Eigen::internal::solve_retval", align 8
  %16 = getelementptr inbounds i8, ptr %0, i64 8
  %17 = load ptr, ptr %16, align 8, !tbaa !5
  %18 = sext i32 %1 to i64
  %19 = tail call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorI13CPyramidLevelSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %18) #7
  %20 = load i32, ptr %19, align 8, !tbaa !12
  %21 = load ptr, ptr %16, align 8, !tbaa !5
  %22 = tail call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorI13CPyramidLevelSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %18) #7
  %23 = getelementptr inbounds i8, ptr %22, i64 4
  %24 = load i32, ptr %23, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #7
  %25 = mul nsw i32 %24, %20
  store i32 %25, ptr %3, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #7
  call void @_ZN5Eigen6MatrixIfLin1ELin1ELi0ELin1ELin1EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %3)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #7
  store i32 1, ptr %6, align 4, !tbaa !16
  invoke void @_ZN5Eigen6MatrixIfLin1ELin1ELi0ELin1ELin1EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %6)
          to label %26 unwind label %248

26:                                               ; preds = %2
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #7
  store i32 1, ptr %8, align 4, !tbaa !16
  invoke void @_ZN5Eigen6MatrixIfLin1ELin1ELi0ELin1ELin1EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %8)
          to label %27 unwind label %250

27:                                               ; preds = %26
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #7
  store i32 1, ptr %10, align 4, !tbaa !16
  invoke void @_ZN5Eigen6MatrixIfLin1ELin1ELi0ELin1ELin1EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %28 unwind label %252

28:                                               ; preds = %27
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #7
  store i32 1, ptr %12, align 4, !tbaa !16
  invoke void @_ZN5Eigen6MatrixIfLin1ELin1ELi0ELin1ELin1EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %29 unwind label %254

29:                                               ; preds = %28
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7
  %30 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %31 unwind label %256

31:                                               ; preds = %29
  %32 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %33 unwind label %256

33:                                               ; preds = %31
  %34 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %35 unwind label %256

35:                                               ; preds = %33
  %36 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %37 unwind label %256

37:                                               ; preds = %35
  %38 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %.preheader298 unwind label %256

.preheader298:                                    ; preds = %37
  %39 = icmp sgt i32 %24, 0
  %40 = icmp sgt i32 %20, 0
  %or.cond = select i1 %39, i1 %40, i1 false
  br i1 %or.cond, label %.preheader297.us.preheader, label %.preheader296

.preheader297.us.preheader:                       ; preds = %.preheader298
  %41 = add nsw i32 %24, -2
  %42 = add nsw i32 %24, -1
  %43 = shl nuw nsw i32 %20, 1
  %44 = add nsw i32 %20, -2
  %45 = add nsw i32 %20, -1
  %46 = zext nneg i32 %43 to i64
  %47 = zext nneg i32 %20 to i64
  %48 = zext nneg i32 %45 to i64
  %49 = sext i32 %44 to i64
  %50 = zext nneg i32 %42 to i64
  %51 = sext i32 %41 to i64
  %wide.trip.count329 = zext nneg i32 %24 to i64
  %wide.trip.count = zext nneg i32 %20 to i64
  br label %.preheader297.us

.preheader297.us:                                 ; preds = %.preheader297.us.preheader, %._crit_edge.us
  %indvars.iv326 = phi i64 [ 0, %.preheader297.us.preheader ], [ %indvars.iv.next327, %._crit_edge.us ]
  %52 = mul nuw nsw i64 %indvars.iv326, %47
  %53 = icmp ugt i64 %indvars.iv326, 1
  %54 = icmp ne i64 %indvars.iv326, 0
  %55 = icmp ult i64 %indvars.iv326, %50
  %or.cond285.us = select i1 %54, i1 %55, i1 false
  %56 = icmp slt i64 %indvars.iv326, %51
  br label %57

57:                                               ; preds = %.preheader297.us, %242
  %indvars.iv = phi i64 [ 0, %.preheader297.us ], [ %indvars.iv.next, %242 ]
  %58 = add nuw nsw i64 %indvars.iv, %52
  %59 = icmp ugt i64 %indvars.iv, 1
  br i1 %59, label %60, label %75

60:                                               ; preds = %57
  %61 = add nsw i64 %58, -2
  %62 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %61)
          to label %63 unwind label %.split.us

63:                                               ; preds = %60
  %64 = load float, ptr %62, align 4, !tbaa !17
  %65 = fadd float %64, 1.000000e+00
  store float %65, ptr %62, align 4, !tbaa !17
  %66 = add nsw i64 %58, -1
  %67 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %66)
          to label %68 unwind label %.split.us

68:                                               ; preds = %63
  %69 = load float, ptr %67, align 4, !tbaa !17
  %70 = fadd float %69, -2.000000e+00
  store float %70, ptr %67, align 4, !tbaa !17
  %71 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %58)
          to label %72 unwind label %.split.us

72:                                               ; preds = %68
  %73 = load float, ptr %71, align 4, !tbaa !17
  %74 = fadd float %73, 1.000000e+00
  store float %74, ptr %71, align 4, !tbaa !17
  br label %75

75:                                               ; preds = %72, %57
  %76 = icmp ne i64 %indvars.iv, 0
  %77 = icmp ult i64 %indvars.iv, %48
  %or.cond283.us = select i1 %76, i1 %77, i1 false
  br i1 %or.cond283.us, label %78, label %93

78:                                               ; preds = %75
  %79 = add nsw i64 %58, -1
  %80 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %79)
          to label %81 unwind label %.split.us

81:                                               ; preds = %78
  %82 = load float, ptr %80, align 4, !tbaa !17
  %83 = fadd float %82, -2.000000e+00
  store float %83, ptr %80, align 4, !tbaa !17
  %84 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %58)
          to label %85 unwind label %.split.us

85:                                               ; preds = %81
  %86 = load float, ptr %84, align 4, !tbaa !17
  %87 = fadd float %86, 4.000000e+00
  store float %87, ptr %84, align 4, !tbaa !17
  %88 = add nuw nsw i64 %58, 1
  %89 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %88)
          to label %90 unwind label %.split.us

90:                                               ; preds = %85
  %91 = load float, ptr %89, align 4, !tbaa !17
  %92 = fadd float %91, -2.000000e+00
  store float %92, ptr %89, align 4, !tbaa !17
  br label %93

93:                                               ; preds = %90, %75
  %94 = icmp slt i64 %indvars.iv, %49
  br i1 %94, label %95, label %110

95:                                               ; preds = %93
  %96 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %58)
          to label %97 unwind label %.split.us

97:                                               ; preds = %95
  %98 = load float, ptr %96, align 4, !tbaa !17
  %99 = fadd float %98, 1.000000e+00
  store float %99, ptr %96, align 4, !tbaa !17
  %100 = add nuw nsw i64 %58, 1
  %101 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %100)
          to label %102 unwind label %.split.us

102:                                              ; preds = %97
  %103 = load float, ptr %101, align 4, !tbaa !17
  %104 = fadd float %103, -2.000000e+00
  store float %104, ptr %101, align 4, !tbaa !17
  %105 = add nuw nsw i64 %58, 2
  %106 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %105)
          to label %107 unwind label %.split.us

107:                                              ; preds = %102
  %108 = load float, ptr %106, align 4, !tbaa !17
  %109 = fadd float %108, 1.000000e+00
  store float %109, ptr %106, align 4, !tbaa !17
  br label %110

110:                                              ; preds = %107, %93
  br i1 %53, label %111, label %126

111:                                              ; preds = %110
  %112 = sub nsw i64 %58, %46
  %113 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %112)
          to label %114 unwind label %.split.us

114:                                              ; preds = %111
  %115 = load float, ptr %113, align 4, !tbaa !17
  %116 = fadd float %115, 1.000000e+00
  store float %116, ptr %113, align 4, !tbaa !17
  %117 = sub nsw i64 %58, %47
  %118 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %117)
          to label %119 unwind label %.split.us

119:                                              ; preds = %114
  %120 = load float, ptr %118, align 4, !tbaa !17
  %121 = fadd float %120, -2.000000e+00
  store float %121, ptr %118, align 4, !tbaa !17
  %122 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %58)
          to label %123 unwind label %.split.us

123:                                              ; preds = %119
  %124 = load float, ptr %122, align 4, !tbaa !17
  %125 = fadd float %124, 1.000000e+00
  store float %125, ptr %122, align 4, !tbaa !17
  br label %126

126:                                              ; preds = %123, %110
  br i1 %or.cond285.us, label %127, label %142

127:                                              ; preds = %126
  %128 = sub nsw i64 %58, %47
  %129 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %128)
          to label %130 unwind label %.split.us

130:                                              ; preds = %127
  %131 = load float, ptr %129, align 4, !tbaa !17
  %132 = fadd float %131, -2.000000e+00
  store float %132, ptr %129, align 4, !tbaa !17
  %133 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %58)
          to label %134 unwind label %.split.us

134:                                              ; preds = %130
  %135 = load float, ptr %133, align 4, !tbaa !17
  %136 = fadd float %135, 4.000000e+00
  store float %136, ptr %133, align 4, !tbaa !17
  %137 = add nuw nsw i64 %58, %47
  %138 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %137)
          to label %139 unwind label %.split.us

139:                                              ; preds = %134
  %140 = load float, ptr %138, align 4, !tbaa !17
  %141 = fadd float %140, -2.000000e+00
  store float %141, ptr %138, align 4, !tbaa !17
  br label %142

142:                                              ; preds = %139, %126
  br i1 %56, label %143, label %158

143:                                              ; preds = %142
  %144 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %58)
          to label %145 unwind label %.split.us

145:                                              ; preds = %143
  %146 = load float, ptr %144, align 4, !tbaa !17
  %147 = fadd float %146, 1.000000e+00
  store float %147, ptr %144, align 4, !tbaa !17
  %148 = add nuw nsw i64 %58, %47
  %149 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %148)
          to label %150 unwind label %.split.us

150:                                              ; preds = %145
  %151 = load float, ptr %149, align 4, !tbaa !17
  %152 = fadd float %151, -2.000000e+00
  store float %152, ptr %149, align 4, !tbaa !17
  %153 = add nuw nsw i64 %58, %46
  %154 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %153)
          to label %155 unwind label %.split.us

155:                                              ; preds = %150
  %156 = load float, ptr %154, align 4, !tbaa !17
  %157 = fadd float %156, 1.000000e+00
  store float %157, ptr %154, align 4, !tbaa !17
  br label %158

158:                                              ; preds = %155, %142
  %or.cond.us = and i1 %54, %76
  br i1 %or.cond.us, label %159, label %179

159:                                              ; preds = %158
  %160 = sub nsw i64 %58, %47
  %161 = add nsw i64 %160, -1
  %162 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %161)
          to label %163 unwind label %.split.us

163:                                              ; preds = %159
  %164 = load float, ptr %162, align 4, !tbaa !17
  %165 = fadd float %164, 2.000000e+00
  store float %165, ptr %162, align 4, !tbaa !17
  %166 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %160)
          to label %167 unwind label %.split.us

167:                                              ; preds = %163
  %168 = load float, ptr %166, align 4, !tbaa !17
  %169 = fadd float %168, -2.000000e+00
  store float %169, ptr %166, align 4, !tbaa !17
  %170 = add nsw i64 %58, -1
  %171 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %170)
          to label %172 unwind label %.split.us

172:                                              ; preds = %167
  %173 = load float, ptr %171, align 4, !tbaa !17
  %174 = fadd float %173, -2.000000e+00
  store float %174, ptr %171, align 4, !tbaa !17
  %175 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %58)
          to label %176 unwind label %.split.us

176:                                              ; preds = %172
  %177 = load float, ptr %175, align 4, !tbaa !17
  %178 = fadd float %177, 2.000000e+00
  store float %178, ptr %175, align 4, !tbaa !17
  br label %179

179:                                              ; preds = %176, %158
  %or.cond3.us = and i1 %54, %77
  br i1 %or.cond3.us, label %180, label %200

180:                                              ; preds = %179
  %181 = sub nsw i64 %58, %47
  %182 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %181)
          to label %183 unwind label %.split.us

183:                                              ; preds = %180
  %184 = load float, ptr %182, align 4, !tbaa !17
  %185 = fadd float %184, -2.000000e+00
  store float %185, ptr %182, align 4, !tbaa !17
  %186 = add nsw i64 %181, 1
  %187 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %186)
          to label %188 unwind label %.split.us

188:                                              ; preds = %183
  %189 = load float, ptr %187, align 4, !tbaa !17
  %190 = fadd float %189, 2.000000e+00
  store float %190, ptr %187, align 4, !tbaa !17
  %191 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %58)
          to label %192 unwind label %.split.us

192:                                              ; preds = %188
  %193 = load float, ptr %191, align 4, !tbaa !17
  %194 = fadd float %193, 2.000000e+00
  store float %194, ptr %191, align 4, !tbaa !17
  %195 = add nuw nsw i64 %58, 1
  %196 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %195)
          to label %197 unwind label %.split.us

197:                                              ; preds = %192
  %198 = load float, ptr %196, align 4, !tbaa !17
  %199 = fadd float %198, -2.000000e+00
  store float %199, ptr %196, align 4, !tbaa !17
  br label %200

200:                                              ; preds = %197, %179
  %or.cond287.us = select i1 %76, i1 %55, i1 false
  br i1 %or.cond287.us, label %201, label %221

201:                                              ; preds = %200
  %202 = add nsw i64 %58, -1
  %203 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %202)
          to label %204 unwind label %.split.us

204:                                              ; preds = %201
  %205 = load float, ptr %203, align 4, !tbaa !17
  %206 = fadd float %205, -2.000000e+00
  store float %206, ptr %203, align 4, !tbaa !17
  %207 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %58)
          to label %208 unwind label %.split.us

208:                                              ; preds = %204
  %209 = load float, ptr %207, align 4, !tbaa !17
  %210 = fadd float %209, 2.000000e+00
  store float %210, ptr %207, align 4, !tbaa !17
  %211 = add nuw nsw i64 %58, %47
  %212 = add nsw i64 %211, -1
  %213 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %212)
          to label %214 unwind label %.split.us

214:                                              ; preds = %208
  %215 = load float, ptr %213, align 4, !tbaa !17
  %216 = fadd float %215, 2.000000e+00
  store float %216, ptr %213, align 4, !tbaa !17
  %217 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %211)
          to label %218 unwind label %.split.us

218:                                              ; preds = %214
  %219 = load float, ptr %217, align 4, !tbaa !17
  %220 = fadd float %219, -2.000000e+00
  store float %220, ptr %217, align 4, !tbaa !17
  br label %221

221:                                              ; preds = %218, %200
  %or.cond289.us = select i1 %77, i1 %55, i1 false
  br i1 %or.cond289.us, label %222, label %242

222:                                              ; preds = %221
  %223 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %58)
          to label %224 unwind label %.split.us

224:                                              ; preds = %222
  %225 = load float, ptr %223, align 4, !tbaa !17
  %226 = fadd float %225, 2.000000e+00
  store float %226, ptr %223, align 4, !tbaa !17
  %227 = add nuw nsw i64 %58, 1
  %228 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %227)
          to label %229 unwind label %.split.us

229:                                              ; preds = %224
  %230 = load float, ptr %228, align 4, !tbaa !17
  %231 = fadd float %230, -2.000000e+00
  store float %231, ptr %228, align 4, !tbaa !17
  %232 = add nuw nsw i64 %58, %47
  %233 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %232)
          to label %234 unwind label %.split.us

234:                                              ; preds = %229
  %235 = load float, ptr %233, align 4, !tbaa !17
  %236 = fadd float %235, -2.000000e+00
  store float %236, ptr %233, align 4, !tbaa !17
  %237 = add nuw nsw i64 %232, 1
  %238 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %58, i64 noundef %237)
          to label %239 unwind label %.split.us

239:                                              ; preds = %234
  %240 = load float, ptr %238, align 4, !tbaa !17
  %241 = fadd float %240, 2.000000e+00
  store float %241, ptr %238, align 4, !tbaa !17
  br label %242

242:                                              ; preds = %239, %221
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge.us, label %57, !llvm.loop !18

._crit_edge.us:                                   ; preds = %242
  %indvars.iv.next327 = add nuw nsw i64 %indvars.iv326, 1
  %exitcond330.not = icmp eq i64 %indvars.iv.next327, %wide.trip.count329
  br i1 %exitcond330.not, label %.preheader296, label %.preheader297.us, !llvm.loop !20

.split.us:                                        ; preds = %234, %229, %224, %222, %214, %208, %204, %201, %192, %188, %183, %180, %172, %167, %163, %159, %150, %145, %143, %134, %130, %127, %119, %114, %111, %102, %97, %95, %85, %81, %78, %68, %63, %60
  %243 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.preheader296:                                    ; preds = %._crit_edge.us, %.preheader298
  %244 = load ptr, ptr %0, align 8, !tbaa !21
  %245 = getelementptr inbounds i8, ptr %244, i64 80
  %246 = call noundef i64 @_ZNKSt6vectorIN8MorphLib15ConstraintPointESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %245) #7
  %.not321 = icmp eq i64 %246, 0
  br i1 %.not321, label %._crit_edge310, label %.lr.ph309.preheader

.lr.ph309.preheader:                              ; preds = %.preheader296
  %247 = sext i32 %20 to i64
  br label %.lr.ph309

248:                                              ; preds = %2
  %249 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #7
  br label %482

250:                                              ; preds = %26
  %251 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  br label %481

252:                                              ; preds = %27
  %253 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  br label %480

254:                                              ; preds = %28
  %255 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7
  br label %479

256:                                              ; preds = %37, %35, %33, %31, %29
  %257 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

._crit_edge310:                                   ; preds = %._crit_edge307, %.preheader296
  %258 = load ptr, ptr %0, align 8, !tbaa !21
  %259 = getelementptr inbounds i8, ptr %258, i64 72
  %260 = load i32, ptr %259, align 8, !tbaa !22
  switch i32 %260, label %.loopexit [
    i32 2, label %.preheader292
    i32 1, label %382
  ]

.preheader292:                                    ; preds = %._crit_edge310
  %261 = icmp sgt i32 %20, 0
  %262 = add i32 %24, -1
  br i1 %261, label %.lr.ph312, label %.preheader290

.lr.ph312:                                        ; preds = %.preheader292
  %263 = mul nsw i32 %262, %20
  %264 = sext i32 %263 to i64
  %wide.trip.count343 = zext nneg i32 %20 to i64
  br label %410

.lr.ph309:                                        ; preds = %.lr.ph309.preheader, %._crit_edge307
  %.0260308 = phi i64 [ %335, %._crit_edge307 ], [ 0, %.lr.ph309.preheader ]
  %265 = load ptr, ptr %0, align 8, !tbaa !21
  %266 = getelementptr inbounds i8, ptr %265, i64 80
  %267 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorIN8MorphLib15ConstraintPointESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %266, i64 noundef %.0260308) #7
  %268 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLi2ELi1ELi0ELi2ELi1EEELi1EE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %267)
          to label %269 unwind label %340

269:                                              ; preds = %.lr.ph309
  %270 = load float, ptr %268, align 4, !tbaa !17
  %271 = load ptr, ptr %16, align 8, !tbaa !5
  %272 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorI13CPyramidLevelSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %271, i64 noundef %18) #7
  %273 = load i32, ptr %272, align 8, !tbaa !12
  %274 = sitofp i32 %273 to float
  %275 = call float @llvm.fmuladd.f32(float %270, float %274, float -5.000000e-01)
  %276 = load ptr, ptr %0, align 8, !tbaa !21
  %277 = getelementptr inbounds i8, ptr %276, i64 80
  %278 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorIN8MorphLib15ConstraintPointESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %277, i64 noundef %.0260308) #7
  %279 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLi2ELi1ELi0ELi2ELi1EEELi1EE1yEv(ptr noundef nonnull align 1 dereferenceable(1) %278)
          to label %280 unwind label %342

280:                                              ; preds = %269
  %281 = load float, ptr %279, align 4, !tbaa !17
  %282 = load ptr, ptr %16, align 8, !tbaa !5
  %283 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorI13CPyramidLevelSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %282, i64 noundef %18) #7
  %284 = getelementptr inbounds i8, ptr %283, i64 4
  %285 = load i32, ptr %284, align 4, !tbaa !15
  %286 = sitofp i32 %285 to float
  %287 = call float @llvm.fmuladd.f32(float %281, float %286, float -5.000000e-01)
  %288 = load ptr, ptr %0, align 8, !tbaa !21
  %289 = getelementptr inbounds i8, ptr %288, i64 80
  %290 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorIN8MorphLib15ConstraintPointESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %289, i64 noundef %.0260308) #7
  %291 = getelementptr inbounds i8, ptr %290, i64 8
  %292 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLi2ELi1ELi0ELi2ELi1EEELi1EE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %291)
          to label %293 unwind label %344

293:                                              ; preds = %280
  %294 = load float, ptr %292, align 4, !tbaa !17
  %295 = load ptr, ptr %16, align 8, !tbaa !5
  %296 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorI13CPyramidLevelSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %295, i64 noundef %18) #7
  %297 = load i32, ptr %296, align 8, !tbaa !12
  %298 = load ptr, ptr %0, align 8, !tbaa !21
  %299 = getelementptr inbounds i8, ptr %298, i64 80
  %300 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorIN8MorphLib15ConstraintPointESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %299, i64 noundef %.0260308) #7
  %301 = getelementptr inbounds i8, ptr %300, i64 8
  %302 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLi2ELi1ELi0ELi2ELi1EEELi1EE1yEv(ptr noundef nonnull align 1 dereferenceable(1) %301)
          to label %303 unwind label %346

303:                                              ; preds = %293
  %304 = sitofp i32 %297 to float
  %305 = call float @llvm.fmuladd.f32(float %294, float %304, float -5.000000e-01)
  %306 = load float, ptr %302, align 4, !tbaa !17
  %307 = load ptr, ptr %16, align 8, !tbaa !5
  %308 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorI13CPyramidLevelSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %307, i64 noundef %18) #7
  %309 = getelementptr inbounds i8, ptr %308, i64 4
  %310 = load i32, ptr %309, align 4, !tbaa !15
  %311 = sitofp i32 %310 to float
  %312 = call float @llvm.fmuladd.f32(float %306, float %311, float -5.000000e-01)
  %313 = fadd float %275, %305
  %314 = fmul float %313, 5.000000e-01
  %315 = fadd float %287, %312
  %316 = fmul float %315, 5.000000e-01
  %317 = fsub float %305, %275
  %318 = fmul float %317, 5.000000e-01
  %319 = fsub float %312, %287
  %320 = fmul float %319, 5.000000e-01
  %321 = fpext float %316 to double
  %322 = call double @llvm.floor.f64(double %321)
  %323 = fptosi double %322 to i32
  %324 = call double @llvm.ceil.f64(double %321)
  %325 = fptosi double %324 to i32
  %.not303 = icmp sgt i32 %323, %325
  br i1 %.not303, label %._crit_edge307, label %.lr.ph306

.lr.ph306:                                        ; preds = %303
  %326 = fpext float %314 to double
  %327 = call double @llvm.floor.f64(double %326)
  %328 = fptosi double %327 to i32
  %329 = call double @llvm.ceil.f64(double %326)
  %330 = fptosi double %329 to i32
  %.not270301 = icmp sgt i32 %328, %330
  br i1 %.not270301, label %._crit_edge307, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %.lr.ph306
  %331 = sext i32 %328 to i64
  %332 = add i32 %330, 1
  %333 = sext i32 %323 to i64
  %334 = add i32 %325, 1
  br label %.lr.ph

._crit_edge307:                                   ; preds = %._crit_edge, %.lr.ph306, %303
  %335 = add nuw i64 %.0260308, 1
  %336 = load ptr, ptr %0, align 8, !tbaa !21
  %337 = getelementptr inbounds i8, ptr %336, i64 80
  %338 = call noundef i64 @_ZNKSt6vectorIN8MorphLib15ConstraintPointESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %337) #7
  %339 = icmp ult i64 %335, %338
  br i1 %339, label %.lr.ph309, label %._crit_edge310, !llvm.loop !29

340:                                              ; preds = %.lr.ph309
  %341 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

342:                                              ; preds = %269
  %343 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

344:                                              ; preds = %280
  %345 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

346:                                              ; preds = %293
  %347 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.lr.ph:                                           ; preds = %.lr.ph.preheader, %._crit_edge
  %indvars.iv335 = phi i64 [ %333, %.lr.ph.preheader ], [ %indvars.iv.next336, %._crit_edge ]
  %348 = trunc nsw i64 %indvars.iv335 to i32
  %349 = sitofp i32 %348 to float
  %350 = fsub float %349, %316
  %351 = call float @llvm.fabs.f32(float %350)
  %352 = fpext float %351 to double
  %353 = fsub double 1.000000e+00, %352
  %354 = mul nsw i64 %indvars.iv335, %247
  br label %355

._crit_edge:                                      ; preds = %381
  %indvars.iv.next336 = add nsw i64 %indvars.iv335, 1
  %lftr.wideiv338 = trunc i64 %indvars.iv.next336 to i32
  %exitcond339.not = icmp eq i32 %334, %lftr.wideiv338
  br i1 %exitcond339.not, label %._crit_edge307, label %.lr.ph, !llvm.loop !30

355:                                              ; preds = %.lr.ph, %381
  %indvars.iv331 = phi i64 [ %331, %.lr.ph ], [ %indvars.iv.next332, %381 ]
  %356 = trunc nsw i64 %indvars.iv331 to i32
  %357 = sitofp i32 %356 to float
  %358 = call noundef zeroext i1 @_ZN8MorphLib6CMorph6insideEffi(ptr noundef nonnull align 8 dereferenceable(49) %0, float noundef %357, float noundef %349, i32 noundef %1)
  br i1 %358, label %359, label %381

359:                                              ; preds = %355
  %360 = fsub float %357, %314
  %361 = call float @llvm.fabs.f32(float %360)
  %362 = fpext float %361 to double
  %363 = fsub double 1.000000e+00, %362
  %364 = fmul double %353, %363
  %365 = fptrunc double %364 to float
  %366 = add nsw i64 %indvars.iv331, %354
  %367 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %366, i64 noundef %366)
          to label %368 unwind label %379

368:                                              ; preds = %359
  %369 = load float, ptr %367, align 4, !tbaa !17
  %370 = fadd float %369, %365
  store float %370, ptr %367, align 4, !tbaa !17
  %371 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %5, i64 noundef %366, i64 noundef 0)
          to label %372 unwind label %379

372:                                              ; preds = %368
  %373 = load float, ptr %371, align 4, !tbaa !17
  %374 = call float @llvm.fmuladd.f32(float %365, float %318, float %373)
  store float %374, ptr %371, align 4, !tbaa !17
  %375 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 noundef %366, i64 noundef 0)
          to label %376 unwind label %379

376:                                              ; preds = %372
  %377 = load float, ptr %375, align 4, !tbaa !17
  %378 = call float @llvm.fmuladd.f32(float %365, float %320, float %377)
  store float %378, ptr %375, align 4, !tbaa !17
  br label %381

379:                                              ; preds = %372, %368, %359
  %380 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

381:                                              ; preds = %355, %376
  %indvars.iv.next332 = add nsw i64 %indvars.iv331, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next332 to i32
  %exitcond334.not = icmp eq i32 %332, %lftr.wideiv
  br i1 %exitcond334.not, label %._crit_edge, label %355, !llvm.loop !31

382:                                              ; preds = %._crit_edge310
  %383 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef 0, i64 noundef 0)
          to label %384 unwind label %.loopexit.split-lp.loopexit.split-lp

384:                                              ; preds = %382
  %385 = load float, ptr %383, align 4, !tbaa !17
  %386 = fadd float %385, 1.000000e+01
  store float %386, ptr %383, align 4, !tbaa !17
  %387 = add nsw i32 %24, -1
  %388 = mul nsw i32 %387, %20
  %389 = sext i32 %388 to i64
  %390 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %389, i64 noundef %389)
          to label %391 unwind label %.loopexit.split-lp.loopexit.split-lp

391:                                              ; preds = %384
  %392 = load float, ptr %390, align 4, !tbaa !17
  %393 = fadd float %392, 1.000000e+01
  store float %393, ptr %390, align 4, !tbaa !17
  %394 = add nsw i32 %20, -1
  %395 = add nsw i32 %388, %394
  %396 = sext i32 %395 to i64
  %397 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %396, i64 noundef %396)
          to label %398 unwind label %.loopexit.split-lp.loopexit.split-lp

398:                                              ; preds = %391
  %399 = load float, ptr %397, align 4, !tbaa !17
  %400 = fadd float %399, 1.000000e+01
  store float %400, ptr %397, align 4, !tbaa !17
  %401 = sext i32 %394 to i64
  %402 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %401, i64 noundef %401)
          to label %403 unwind label %.loopexit.split-lp.loopexit.split-lp

403:                                              ; preds = %398
  %404 = load float, ptr %402, align 4, !tbaa !17
  %405 = fadd float %404, 1.000000e+01
  store float %405, ptr %402, align 4, !tbaa !17
  br label %.loopexit

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

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

.loopexit.split-lp.loopexit.split-lp:             ; preds = %398, %391, %384, %382
  %lpad.loopexit.split-lp294 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.preheader290:                                    ; preds = %417, %.preheader292
  %406 = icmp sgt i32 %24, 2
  br i1 %406, label %.lr.ph314, label %.loopexit

.lr.ph314:                                        ; preds = %.preheader290
  %407 = add nsw i32 %20, -1
  %408 = sext i32 %20 to i64
  %409 = sext i32 %407 to i64
  %wide.trip.count348 = zext i32 %262 to i64
  br label %420

410:                                              ; preds = %.lr.ph312, %417
  %indvars.iv340 = phi i64 [ 0, %.lr.ph312 ], [ %indvars.iv.next341, %417 ]
  %411 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %indvars.iv340, i64 noundef %indvars.iv340)
          to label %412 unwind label %.loopexit.split-lp.loopexit

412:                                              ; preds = %410
  %413 = load float, ptr %411, align 4, !tbaa !17
  %414 = fadd float %413, 1.000000e+01
  store float %414, ptr %411, align 4, !tbaa !17
  %415 = add nsw i64 %indvars.iv340, %264
  %416 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %415, i64 noundef %415)
          to label %417 unwind label %.loopexit.split-lp.loopexit

417:                                              ; preds = %412
  %418 = load float, ptr %416, align 4, !tbaa !17
  %419 = fadd float %418, 1.000000e+01
  store float %419, ptr %416, align 4, !tbaa !17
  %indvars.iv.next341 = add nuw nsw i64 %indvars.iv340, 1
  %exitcond344.not = icmp eq i64 %indvars.iv.next341, %wide.trip.count343
  br i1 %exitcond344.not, label %.preheader290, label %410, !llvm.loop !32

420:                                              ; preds = %.lr.ph314, %428
  %indvars.iv345 = phi i64 [ 1, %.lr.ph314 ], [ %indvars.iv.next346, %428 ]
  %421 = mul nsw i64 %indvars.iv345, %408
  %422 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %421, i64 noundef %421)
          to label %423 unwind label %.loopexit291

423:                                              ; preds = %420
  %424 = load float, ptr %422, align 4, !tbaa !17
  %425 = fadd float %424, 1.000000e+01
  store float %425, ptr %422, align 4, !tbaa !17
  %426 = add nsw i64 %421, %409
  %427 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %4, i64 noundef %426, i64 noundef %426)
          to label %428 unwind label %.loopexit291

428:                                              ; preds = %423
  %429 = load float, ptr %427, align 4, !tbaa !17
  %430 = fadd float %429, 1.000000e+01
  store float %430, ptr %427, align 4, !tbaa !17
  %indvars.iv.next346 = add nuw nsw i64 %indvars.iv345, 1
  %exitcond349.not = icmp eq i64 %indvars.iv.next346, %wide.trip.count348
  br i1 %exitcond349.not, label %.loopexit, label %420, !llvm.loop !33

.loopexit:                                        ; preds = %428, %.preheader290, %403, %._crit_edge310
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %13) #7
  invoke void @_ZN5Eigen9FullPivLUINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(114) %13, ptr noundef nonnull align 8 dereferenceable(24) %4)
          to label %431 unwind label %471

431:                                              ; preds = %.loopexit
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #7
  %432 = invoke { ptr, ptr } @_ZNK5Eigen9FullPivLUINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEE5solveIS2_EEKNS_8internal12solve_retvalIS3_T_EERKNS_10MatrixBaseIS7_EE(ptr noundef nonnull align 8 dereferenceable(114) %13, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %433 unwind label %473

433:                                              ; preds = %431
  %434 = extractvalue { ptr, ptr } %432, 0
  store ptr %434, ptr %14, align 8
  %435 = getelementptr inbounds i8, ptr %14, i64 8
  %436 = extractvalue { ptr, ptr } %432, 1
  store ptr %436, ptr %435, align 8
  %437 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen6MatrixIfLin1ELin1ELi0ELin1ELin1EEaSINS_8internal17solve_retval_baseINS_9FullPivLUIS1_EES1_EEEERS1_RKNS_13ReturnByValueIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %438 unwind label %473

438:                                              ; preds = %433
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #7
  %439 = invoke { ptr, ptr } @_ZNK5Eigen9FullPivLUINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEE5solveIS2_EEKNS_8internal12solve_retvalIS3_T_EERKNS_10MatrixBaseIS7_EE(ptr noundef nonnull align 8 dereferenceable(114) %13, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %440 unwind label %475

440:                                              ; preds = %438
  %441 = extractvalue { ptr, ptr } %439, 0
  store ptr %441, ptr %15, align 8
  %442 = getelementptr inbounds i8, ptr %15, i64 8
  %443 = extractvalue { ptr, ptr } %439, 1
  store ptr %443, ptr %442, align 8
  %444 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen6MatrixIfLin1ELin1ELi0ELin1ELin1EEaSINS_8internal17solve_retval_baseINS_9FullPivLUIS1_EES1_EEEERS1_RKNS_13ReturnByValueIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %445 unwind label %475

445:                                              ; preds = %440
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #7
  br i1 %39, label %.preheader.lr.ph, label %._crit_edge319

.preheader.lr.ph:                                 ; preds = %445
  %446 = icmp sgt i32 %20, 0
  %447 = getelementptr inbounds i8, ptr %0, i64 40
  br i1 %446, label %.preheader.us.preheader, label %._crit_edge319

.preheader.us.preheader:                          ; preds = %.preheader.lr.ph
  %448 = zext nneg i32 %20 to i64
  %wide.trip.count358 = zext nneg i32 %24 to i64
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.preheader, %._crit_edge317.us
  %indvars.iv355 = phi i64 [ 0, %.preheader.us.preheader ], [ %indvars.iv.next356, %._crit_edge317.us ]
  %449 = mul nuw nsw i64 %indvars.iv355, %448
  %450 = trunc nuw nsw i64 %indvars.iv355 to i32
  br label %451

451:                                              ; preds = %.preheader.us, %464
  %indvars.iv350 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next351, %464 ]
  %452 = trunc nuw nsw i64 %indvars.iv350 to i32
  %453 = call noundef i32 @_ZN8MorphLib6CMorph9mem_indexEiii(ptr noundef nonnull align 8 dereferenceable(49) %0, i32 noundef %452, i32 noundef %450, i32 noundef %1)
  %454 = add nuw nsw i64 %indvars.iv350, %449
  %455 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %9, i64 noundef %454, i64 noundef 0)
          to label %456 unwind label %.split.us320

456:                                              ; preds = %451
  %457 = load float, ptr %455, align 4, !tbaa !17
  %458 = load ptr, ptr %447, align 8, !tbaa !34
  %459 = getelementptr inbounds %"struct.MorphLib::CData", ptr %458, i64 %18, i32 4
  %460 = load ptr, ptr %459, align 8, !tbaa !35
  %461 = sext i32 %453 to i64
  %462 = getelementptr inbounds float, ptr %460, i64 %461
  store float %457, ptr %462, align 4, !tbaa !17
  %463 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %11, i64 noundef %454, i64 noundef 0)
          to label %464 unwind label %.split.us320

464:                                              ; preds = %456
  %465 = load float, ptr %463, align 4, !tbaa !17
  %466 = load ptr, ptr %447, align 8, !tbaa !34
  %467 = getelementptr inbounds %"struct.MorphLib::CData", ptr %466, i64 %18, i32 5
  %468 = load ptr, ptr %467, align 8, !tbaa !40
  %469 = getelementptr inbounds float, ptr %468, i64 %461
  store float %465, ptr %469, align 4, !tbaa !17
  %indvars.iv.next351 = add nuw nsw i64 %indvars.iv350, 1
  %exitcond354.not = icmp eq i64 %indvars.iv.next351, %448
  br i1 %exitcond354.not, label %._crit_edge317.us, label %451, !llvm.loop !41

._crit_edge317.us:                                ; preds = %464
  %indvars.iv.next356 = add nuw nsw i64 %indvars.iv355, 1
  %exitcond359.not = icmp eq i64 %indvars.iv.next356, %wide.trip.count358
  br i1 %exitcond359.not, label %._crit_edge319, label %.preheader.us, !llvm.loop !42

.split.us320:                                     ; preds = %456, %451
  %470 = landingpad { ptr, i32 }
          cleanup
  br label %477

._crit_edge319:                                   ; preds = %._crit_edge317.us, %.preheader.lr.ph, %445
  call void @_ZN5Eigen9FullPivLUINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(114) %13) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %13) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #7
  ret void

471:                                              ; preds = %.loopexit
  %472 = landingpad { ptr, i32 }
          cleanup
  br label %478

473:                                              ; preds = %433, %431
  %474 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  br label %477

475:                                              ; preds = %440, %438
  %476 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #7
  br label %477

477:                                              ; preds = %.split.us320, %475, %473
  %.pn = phi { ptr, i32 } [ %470, %.split.us320 ], [ %476, %475 ], [ %474, %473 ]
  call void @_ZN5Eigen9FullPivLUINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(114) %13) #7
  br label %478

478:                                              ; preds = %477, %471
  %.pn.pn = phi { ptr, i32 } [ %.pn, %477 ], [ %472, %471 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %13) #7
  br label %.loopexit.split-lp

.loopexit.split-lp:                               ; preds = %.loopexit291, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %478, %340, %344, %379, %346, %342, %.split.us, %256
  %.pn276 = phi { ptr, i32 } [ %243, %.split.us ], [ %257, %256 ], [ %341, %340 ], [ %343, %342 ], [ %345, %344 ], [ %380, %379 ], [ %347, %346 ], [ %.pn.pn, %478 ], [ %lpad.loopexit, %.loopexit291 ], [ %lpad.loopexit293, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp294, %.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  br label %479

479:                                              ; preds = %.loopexit.split-lp, %254
  %.pn276.pn = phi { ptr, i32 } [ %.pn276, %.loopexit.split-lp ], [ %255, %254 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  br label %480

480:                                              ; preds = %479, %252
  %.pn276.pn.pn = phi { ptr, i32 } [ %.pn276.pn, %479 ], [ %253, %252 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  br label %481

481:                                              ; preds = %480, %250
  %.pn276.pn.pn.pn = phi { ptr, i32 } [ %.pn276.pn.pn, %480 ], [ %251, %250 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  br label %482

482:                                              ; preds = %481, %248
  %.pn276.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn276.pn.pn.pn, %481 ], [ %249, %248 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #7
  resume { ptr, i32 } %.pn276.pn.pn.pn.pn
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN8MorphLib6CMorph9mem_indexEiii(ptr noundef nonnull align 8 dereferenceable(49), i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLi2ELi1ELi0ELi2ELi1EEELi1EE1xEv(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLi2ELi1ELi0ELi2ELi1EEELi1EE1yEv(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #4 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8MorphLib6CMorph6insideEffi(ptr noundef nonnull align 8 dereferenceable(49), float noundef, float noundef, i32 noundef) local_unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1), i64 noundef, i64 noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen9FullPivLUINS_6MatrixIfLin1ELin1ELi0ELin1ELin1EEEE5solveIS2_EEKNS_8internal12solve_retvalIS3_T_EERKNS_10MatrixBaseIS7_EE(ptr noundef nonnull align 8 dereferenceable(114), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen6MatrixIfLin1ELin1ELi0ELin1ELin1EEaSINS_8internal17solve_retval_baseINS_9FullPivLUIS1_EES1_EEEERS1_RKNS_13ReturnByValueIT_EE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #4 align 2

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

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

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

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 = { 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 #3 = { 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 #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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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 8}
!6 = !{!"_ZTSN8MorphLib6CMorphE", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !7, i64 40, !11, i64 48}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"bool", !8, i64 0}
!12 = !{!13, !10, i64 0}
!13 = !{!"_ZTS13CPyramidLevel", !10, i64 0, !10, i64 4, !14, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48}
!14 = !{!"float", !8, i64 0}
!15 = !{!13, !10, i64 4}
!16 = !{!10, !10, i64 0}
!17 = !{!14, !14, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = distinct !{!20, !19}
!21 = !{!6, !7, i64 0}
!22 = !{!23, !24, i64 72}
!23 = !{!"_ZTSN8MorphLib11CParametersE", !10, i64 0, !10, i64 4, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !14, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !14, i64 56, !10, i64 60, !10, i64 64, !14, i64 68, !24, i64 72, !25, i64 80}
!24 = !{!"_ZTSN8MorphLib17BoundaryConditionE", !8, i64 0}
!25 = !{!"_ZTSSt6vectorIN8MorphLib15ConstraintPointESaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIN8MorphLib15ConstraintPointESaIS1_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN8MorphLib15ConstraintPointESaIS1_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIN8MorphLib15ConstraintPointESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!29 = distinct !{!29, !19}
!30 = distinct !{!30, !19}
!31 = distinct !{!31, !19}
!32 = distinct !{!32, !19}
!33 = distinct !{!33, !19}
!34 = !{!6, !7, i64 40}
!35 = !{!36, !7, i64 128}
!36 = !{!"_ZTSN8MorphLib5CDataE", !37, i64 0, !38, i64 72, !39, i64 96, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !10, i64 152}
!37 = !{!"_ZTSN8MorphLib5CDataUt_E", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64}
!38 = !{!"_ZTSN8MorphLib5CDataUt0_E", !7, i64 0, !7, i64 8, !7, i64 16}
!39 = !{!"_ZTSN8MorphLib5CDataUt1_E", !7, i64 0, !7, i64 8, !7, i64 16}
!40 = !{!36, !7, i64 136}
!41 = distinct !{!41, !19}
!42 = distinct !{!42, !19}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass