; LLVM IR from JoshuaSBrown/QC_Tools :: src/tests (test_qc_functions)

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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [87 x i8], align 1
@__PRETTY_FUNCTION__.main = external hidden unnamed_addr constant [11 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [18 x i8], align 1
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.7 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [47 x i8], align 1

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() #0 personality ptr @__gxx_personality_v0 {
  %1 = alloca i32, align 4
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %"class.std::vector", align 8
  %10 = alloca %"class.std::vector", align 8
  %11 = alloca %"class.std::vector", align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %20 = alloca i32, align 4
  %21 = alloca ptr, align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %24 = alloca i32, align 4
  %25 = alloca ptr, align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %28 = alloca i32, align 4
  %29 = alloca ptr, align 8
  %30 = alloca i32, align 4
  %31 = alloca ptr, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca %"class.std::vector", align 8
  %38 = alloca %"class.std::vector", align 8
  %39 = alloca %"class.std::vector", align 8
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca ptr, align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %48 = alloca i32, align 4
  %49 = alloca ptr, align 8
  %50 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %51 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %52 = alloca i32, align 4
  %53 = alloca ptr, align 8
  %54 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %56 = alloca i32, align 4
  %57 = alloca ptr, align 8
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  store i32 0, ptr %1, align 4
  %60 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str)
  %61 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @llvm.lifetime.start.p0(i64 8, ptr %2) #10
  %62 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #11
  invoke void @_ZN6catnip6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %62, i32 noundef 8, i32 noundef 8)
          to label %63 unwind label %68

63:                                               ; preds = %0
  store ptr %62, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #10
  store i32 1, ptr %5, align 4, !tbaa !9
  br label %64

64:                                               ; preds = %85, %63
  %65 = load i32, ptr %5, align 4, !tbaa !9
  %66 = icmp sle i32 %65, 8
  br i1 %66, label %72, label %67

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

68:                                               ; preds = %0
  %69 = landingpad { ptr, i32 }
          cleanup
  %70 = extractvalue { ptr, i32 } %69, 0
  store ptr %70, ptr %3, align 8
  %71 = extractvalue { ptr, i32 } %69, 1
  store i32 %71, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %62, i64 noundef 24) #12
  br label %406

72:                                               ; preds = %64
  %73 = load ptr, ptr %2, align 8, !tbaa !5
  %74 = load i32, ptr %5, align 4, !tbaa !9
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %73, double noundef 1.300000e+00, i32 noundef %74, i32 noundef 1)
  %75 = load ptr, ptr %2, align 8, !tbaa !5
  %76 = load i32, ptr %5, align 4, !tbaa !9
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %75, double noundef 2.000000e-01, i32 noundef %76, i32 noundef 3)
  %77 = load ptr, ptr %2, align 8, !tbaa !5
  %78 = load i32, ptr %5, align 4, !tbaa !9
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %77, double noundef 8.240000e+01, i32 noundef %78, i32 noundef 4)
  %79 = load ptr, ptr %2, align 8, !tbaa !5
  %80 = load i32, ptr %5, align 4, !tbaa !9
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %79, double noundef 9.400000e+00, i32 noundef %80, i32 noundef 5)
  %81 = load ptr, ptr %2, align 8, !tbaa !5
  %82 = load i32, ptr %5, align 4, !tbaa !9
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %81, double noundef 3.400000e+00, i32 noundef %82, i32 noundef 6)
  %83 = load ptr, ptr %2, align 8, !tbaa !5
  %84 = load i32, ptr %5, align 4, !tbaa !9
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %83, double noundef -3.000000e+00, i32 noundef %84, i32 noundef 8)
  br label %85

85:                                               ; preds = %72
  %86 = load i32, ptr %5, align 4, !tbaa !9
  %87 = add nsw i32 %86, 1
  store i32 %87, ptr %5, align 4, !tbaa !9
  br label %64, !llvm.loop !11

88:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #10
  %89 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #11
  invoke void @_ZN6catnip6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %89, i32 noundef 2, i32 noundef 3)
          to label %90 unwind label %118

90:                                               ; preds = %88
  store ptr %89, ptr %6, align 8, !tbaa !5
  %91 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %91, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 1)
  %92 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %92, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 2)
  %93 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %93, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 3)
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #10
  %94 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #11
  invoke void @_ZN6catnip6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %94, i32 noundef 3, i32 noundef 3)
          to label %95 unwind label %122

95:                                               ; preds = %90
  store ptr %94, ptr %7, align 8, !tbaa !5
  %96 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %96, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 1)
  %97 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %97, double noundef 2.000000e+00, i32 noundef 2, i32 noundef 1)
  %98 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %98, double noundef 3.000000e+00, i32 noundef 3, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #10
  %99 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #11
  invoke void @_ZN6catnip6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %99, i32 noundef 5, i32 noundef 3)
          to label %100 unwind label %126

100:                                              ; preds = %95
  store ptr %99, ptr %8, align 8, !tbaa !5
  %101 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %101, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 1)
  %102 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %102, double noundef 1.000000e+00, i32 noundef 2, i32 noundef 1)
  %103 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %103, double noundef 1.000000e+00, i32 noundef 2, i32 noundef 2)
  %104 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %104, double noundef 1.000000e+00, i32 noundef 2, i32 noundef 3)
  %105 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %105, double noundef 3.000000e+00, i32 noundef 3, i32 noundef 1)
  %106 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %106, double noundef 2.000000e+00, i32 noundef 4, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 24, ptr %9) #10
  %107 = load ptr, ptr %6, align 8, !tbaa !5
  %108 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8matchRowERKS0_i(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %9, ptr noundef nonnull align 8 dereferenceable(24) %107, ptr noundef nonnull align 8 dereferenceable(24) %108, i32 noundef 2)
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #10
  %109 = load ptr, ptr %7, align 8, !tbaa !5
  %110 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN6catnip6Matrix8matchRowERKS0_i(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %10, ptr noundef nonnull align 8 dereferenceable(24) %109, ptr noundef nonnull align 8 dereferenceable(24) %110, i32 noundef 2)
          to label %111 unwind label %130

111:                                              ; preds = %100
  %112 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef 0)
          to label %113 unwind label %134

113:                                              ; preds = %111
  %114 = load i32, ptr %112, align 4, !tbaa !9
  %115 = icmp eq i32 %114, 2
  br i1 %115, label %116, label %117

116:                                              ; preds = %113
  br label %139

117:                                              ; preds = %113
  call void @__assert_fail(ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 74, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

118:                                              ; preds = %88
  %119 = landingpad { ptr, i32 }
          cleanup
  %120 = extractvalue { ptr, i32 } %119, 0
  store ptr %120, ptr %3, align 8
  %121 = extractvalue { ptr, i32 } %119, 1
  store i32 %121, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %89, i64 noundef 24) #12
  br label %405

122:                                              ; preds = %90
  %123 = landingpad { ptr, i32 }
          cleanup
  %124 = extractvalue { ptr, i32 } %123, 0
  store ptr %124, ptr %3, align 8
  %125 = extractvalue { ptr, i32 } %123, 1
  store i32 %125, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %94, i64 noundef 24) #12
  br label %404

126:                                              ; preds = %95
  %127 = landingpad { ptr, i32 }
          cleanup
  %128 = extractvalue { ptr, i32 } %127, 0
  store ptr %128, ptr %3, align 8
  %129 = extractvalue { ptr, i32 } %127, 1
  store i32 %129, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %99, i64 noundef 24) #12
  br label %403

130:                                              ; preds = %100
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %3, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %4, align 4
  br label %402

134:                                              ; preds = %163, %155, %147, %139, %111
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %3, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %4, align 4
  br label %401

138:                                              ; No predecessors!
  br label %139

139:                                              ; preds = %138, %116
  %140 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef 1)
          to label %141 unwind label %134

141:                                              ; preds = %139
  %142 = load i32, ptr %140, align 4, !tbaa !9
  %143 = icmp eq i32 %142, 5
  br i1 %143, label %144, label %145

144:                                              ; preds = %141
  br label %147

145:                                              ; preds = %141
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.2, i32 noundef 75, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

146:                                              ; No predecessors!
  br label %147

147:                                              ; preds = %146, %144
  %148 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 0)
          to label %149 unwind label %134

149:                                              ; preds = %147
  %150 = load i32, ptr %148, align 4, !tbaa !9
  %151 = icmp eq i32 %150, 1
  br i1 %151, label %152, label %153

152:                                              ; preds = %149
  br label %155

153:                                              ; preds = %149
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.2, i32 noundef 77, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

154:                                              ; No predecessors!
  br label %155

155:                                              ; preds = %154, %152
  %156 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 1)
          to label %157 unwind label %134

157:                                              ; preds = %155
  %158 = load i32, ptr %156, align 4, !tbaa !9
  %159 = icmp eq i32 %158, 4
  br i1 %159, label %160, label %161

160:                                              ; preds = %157
  br label %163

161:                                              ; preds = %157
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str.2, i32 noundef 78, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

162:                                              ; No predecessors!
  br label %163

163:                                              ; preds = %162, %160
  %164 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 2)
          to label %165 unwind label %134

165:                                              ; preds = %163
  %166 = load i32, ptr %164, align 4, !tbaa !9
  %167 = icmp eq i32 %166, 3
  br i1 %167, label %168, label %169

168:                                              ; preds = %165
  br label %171

169:                                              ; preds = %165
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.2, i32 noundef 79, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

170:                                              ; No predecessors!
  br label %171

171:                                              ; preds = %170, %168
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #10
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #10
  store i32 1, ptr %12, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %172 unwind label %190

172:                                              ; preds = %171
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #10
  store i32 2, ptr %13, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %173 unwind label %194

173:                                              ; preds = %172
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #10
  store i32 1, ptr %14, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(4) %14)
          to label %174 unwind label %198

174:                                              ; preds = %173
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #10
  store i32 2, ptr %15, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %175 unwind label %202

175:                                              ; preds = %174
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #10
  store i32 2, ptr %16, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %176 unwind label %206

176:                                              ; preds = %175
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  %177 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.7)
          to label %178 unwind label %210

178:                                              ; preds = %176
  %179 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %177, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %180 unwind label %210

180:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #10
  store ptr %9, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #10
  %181 = load ptr, ptr %17, align 8, !tbaa !5
  %182 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %181) #10
  %183 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %18, i32 0, i32 0
  store ptr %182, ptr %183, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  %184 = load ptr, ptr %17, align 8, !tbaa !5
  %185 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %184) #10
  %186 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %19, i32 0, i32 0
  store ptr %185, ptr %186, align 8
  br label %187

187:                                              ; preds = %222, %180
  %188 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #10
  br i1 %188, label %214, label %189

189:                                              ; preds = %187
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  br label %228

190:                                              ; preds = %171
  %191 = landingpad { ptr, i32 }
          cleanup
  %192 = extractvalue { ptr, i32 } %191, 0
  store ptr %192, ptr %3, align 8
  %193 = extractvalue { ptr, i32 } %191, 1
  store i32 %193, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  br label %400

194:                                              ; preds = %172
  %195 = landingpad { ptr, i32 }
          cleanup
  %196 = extractvalue { ptr, i32 } %195, 0
  store ptr %196, ptr %3, align 8
  %197 = extractvalue { ptr, i32 } %195, 1
  store i32 %197, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  br label %400

198:                                              ; preds = %173
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %3, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #10
  br label %400

202:                                              ; preds = %174
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %3, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #10
  br label %400

206:                                              ; preds = %175
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %3, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  br label %400

210:                                              ; preds = %278, %276, %178, %176
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %3, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %4, align 4
  br label %400

214:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #10
  %215 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #10
  %216 = load i32, ptr %215, align 4, !tbaa !9
  store i32 %216, ptr %20, align 4, !tbaa !9
  %217 = load i32, ptr %20, align 4, !tbaa !9
  %218 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, i32 noundef %217)
          to label %219 unwind label %224

219:                                              ; preds = %214
  %220 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %221 unwind label %224

221:                                              ; preds = %219
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  br label %222

222:                                              ; preds = %221
  %223 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #10
  br label %187

224:                                              ; preds = %219, %214
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %3, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  br label %400

228:                                              ; preds = %189
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #10
  store ptr %10, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #10
  %229 = load ptr, ptr %21, align 8, !tbaa !5
  %230 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %229) #10
  %231 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %22, i32 0, i32 0
  store ptr %230, ptr %231, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  %232 = load ptr, ptr %21, align 8, !tbaa !5
  %233 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %232) #10
  %234 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %23, i32 0, i32 0
  store ptr %233, ptr %234, align 8
  br label %235

235:                                              ; preds = %246, %228
  %236 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  br i1 %236, label %238, label %237

237:                                              ; preds = %235
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  br label %252

238:                                              ; preds = %235
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #10
  %239 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #10
  %240 = load i32, ptr %239, align 4, !tbaa !9
  store i32 %240, ptr %24, align 4, !tbaa !9
  %241 = load i32, ptr %24, align 4, !tbaa !9
  %242 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, i32 noundef %241)
          to label %243 unwind label %248

243:                                              ; preds = %238
  %244 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %242, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %245 unwind label %248

245:                                              ; preds = %243
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  br label %246

246:                                              ; preds = %245
  %247 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #10
  br label %235

248:                                              ; preds = %243, %238
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %3, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  br label %400

252:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #10
  store ptr %11, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  %253 = load ptr, ptr %25, align 8, !tbaa !5
  %254 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %253) #10
  %255 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %26, i32 0, i32 0
  store ptr %254, ptr %255, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #10
  %256 = load ptr, ptr %25, align 8, !tbaa !5
  %257 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %256) #10
  %258 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %27, i32 0, i32 0
  store ptr %257, ptr %258, align 8
  br label %259

259:                                              ; preds = %270, %252
  %260 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #10
  br i1 %260, label %262, label %261

261:                                              ; preds = %259
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  br label %276

262:                                              ; preds = %259
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #10
  %263 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #10
  %264 = load i32, ptr %263, align 4, !tbaa !9
  store i32 %264, ptr %28, align 4, !tbaa !9
  %265 = load i32, ptr %28, align 4, !tbaa !9
  %266 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, i32 noundef %265)
          to label %267 unwind label %272

267:                                              ; preds = %262
  %268 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %266, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %269 unwind label %272

269:                                              ; preds = %267
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #10
  br label %270

270:                                              ; preds = %269
  %271 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #10
  br label %259

272:                                              ; preds = %267, %262
  %273 = landingpad { ptr, i32 }
          cleanup
  %274 = extractvalue { ptr, i32 } %273, 0
  store ptr %274, ptr %3, align 8
  %275 = extractvalue { ptr, i32 } %273, 1
  store i32 %275, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  br label %400

276:                                              ; preds = %261
  %277 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.8)
          to label %278 unwind label %210

278:                                              ; preds = %276
  %279 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %277, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %280 unwind label %210

280:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %281 = load ptr, ptr %2, align 8, !tbaa !5
  %282 = invoke noundef ptr @_ZN6catnip15unscramble_CoefERKSt6vectorIiSaIiEES4_S4_PNS_6MatrixE(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef %281)
          to label %283 unwind label %293

283:                                              ; preds = %280
  store ptr %282, ptr %29, align 8, !tbaa !5
  %284 = load ptr, ptr %29, align 8, !tbaa !5
  %285 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6catniplsERSoRNS_6MatrixE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull align 8 dereferenceable(24) %284)
          to label %286 unwind label %293

286:                                              ; preds = %283
  %287 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %285, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %288 unwind label %293

288:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #10
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %289

289:                                              ; preds = %387, %288
  %290 = load i32, ptr %30, align 4, !tbaa !9
  %291 = icmp sle i32 %290, 8
  br i1 %291, label %297, label %292

292:                                              ; preds = %289
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  br label %390

293:                                              ; preds = %286, %283, %280
  %294 = landingpad { ptr, i32 }
          cleanup
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %3, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %4, align 4
  br label %399

297:                                              ; preds = %289
  %298 = load ptr, ptr %29, align 8, !tbaa !5
  %299 = load i32, ptr %30, align 4, !tbaa !9
  %300 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %298, i32 noundef %299, i32 noundef 1)
          to label %301 unwind label %307

301:                                              ; preds = %297
  %302 = fmul double %300, 1.000000e+01
  %303 = fptosi double %302 to i32
  %304 = icmp eq i32 %303, 13
  br i1 %304, label %305, label %306

305:                                              ; preds = %301
  br label %312

306:                                              ; preds = %301
  call void @__assert_fail(ptr noundef @.str.9, ptr noundef @.str.2, i32 noundef 141, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

307:                                              ; preds = %376, %366, %355, %345, %334, %323, %312, %297
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %3, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  br label %399

311:                                              ; No predecessors!
  br label %312

312:                                              ; preds = %311, %305
  %313 = load ptr, ptr %29, align 8, !tbaa !5
  %314 = load i32, ptr %30, align 4, !tbaa !9
  %315 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %313, i32 noundef %314, i32 noundef 2)
          to label %316 unwind label %307

316:                                              ; preds = %312
  %317 = fmul double %315, 1.000000e+01
  %318 = fptosi double %317 to i32
  %319 = icmp eq i32 %318, 94
  br i1 %319, label %320, label %321

320:                                              ; preds = %316
  br label %323

321:                                              ; preds = %316
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str.2, i32 noundef 142, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

322:                                              ; No predecessors!
  br label %323

323:                                              ; preds = %322, %320
  %324 = load ptr, ptr %29, align 8, !tbaa !5
  %325 = load i32, ptr %30, align 4, !tbaa !9
  %326 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %324, i32 noundef %325, i32 noundef 3)
          to label %327 unwind label %307

327:                                              ; preds = %323
  %328 = fmul double %326, 1.000000e+01
  %329 = fptosi double %328 to i32
  %330 = icmp eq i32 %329, 34
  br i1 %330, label %331, label %332

331:                                              ; preds = %327
  br label %334

332:                                              ; preds = %327
  call void @__assert_fail(ptr noundef @.str.11, ptr noundef @.str.2, i32 noundef 143, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

333:                                              ; No predecessors!
  br label %334

334:                                              ; preds = %333, %331
  %335 = load ptr, ptr %29, align 8, !tbaa !5
  %336 = load i32, ptr %30, align 4, !tbaa !9
  %337 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %335, i32 noundef %336, i32 noundef 4)
          to label %338 unwind label %307

338:                                              ; preds = %334
  %339 = fmul double %337, 1.000000e+01
  %340 = fptosi double %339 to i32
  %341 = icmp eq i32 %340, 824
  br i1 %341, label %342, label %343

342:                                              ; preds = %338
  br label %345

343:                                              ; preds = %338
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str.2, i32 noundef 144, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

344:                                              ; No predecessors!
  br label %345

345:                                              ; preds = %344, %342
  %346 = load ptr, ptr %29, align 8, !tbaa !5
  %347 = load i32, ptr %30, align 4, !tbaa !9
  %348 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %346, i32 noundef %347, i32 noundef 5)
          to label %349 unwind label %307

349:                                              ; preds = %345
  %350 = fptosi double %348 to i32
  %351 = icmp eq i32 %350, 0
  br i1 %351, label %352, label %353

352:                                              ; preds = %349
  br label %355

353:                                              ; preds = %349
  call void @__assert_fail(ptr noundef @.str.13, ptr noundef @.str.2, i32 noundef 145, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

354:                                              ; No predecessors!
  br label %355

355:                                              ; preds = %354, %352
  %356 = load ptr, ptr %29, align 8, !tbaa !5
  %357 = load i32, ptr %30, align 4, !tbaa !9
  %358 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %356, i32 noundef %357, i32 noundef 6)
          to label %359 unwind label %307

359:                                              ; preds = %355
  %360 = fmul double %358, 1.000000e+01
  %361 = fptosi double %360 to i32
  %362 = icmp eq i32 %361, 2
  br i1 %362, label %363, label %364

363:                                              ; preds = %359
  br label %366

364:                                              ; preds = %359
  call void @__assert_fail(ptr noundef @.str.14, ptr noundef @.str.2, i32 noundef 146, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

365:                                              ; No predecessors!
  br label %366

366:                                              ; preds = %365, %363
  %367 = load ptr, ptr %29, align 8, !tbaa !5
  %368 = load i32, ptr %30, align 4, !tbaa !9
  %369 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %367, i32 noundef %368, i32 noundef 7)
          to label %370 unwind label %307

370:                                              ; preds = %366
  %371 = fptosi double %369 to i32
  %372 = icmp eq i32 %371, 0
  br i1 %372, label %373, label %374

373:                                              ; preds = %370
  br label %376

374:                                              ; preds = %370
  call void @__assert_fail(ptr noundef @.str.15, ptr noundef @.str.2, i32 noundef 147, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

375:                                              ; No predecessors!
  br label %376

376:                                              ; preds = %375, %373
  %377 = load ptr, ptr %29, align 8, !tbaa !5
  %378 = load i32, ptr %30, align 4, !tbaa !9
  %379 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %377, i32 noundef %378, i32 noundef 8)
          to label %380 unwind label %307

380:                                              ; preds = %376
  %381 = fptosi double %379 to i32
  %382 = icmp eq i32 %381, -3
  br i1 %382, label %383, label %384

383:                                              ; preds = %380
  br label %386

384:                                              ; preds = %380
  call void @__assert_fail(ptr noundef @.str.16, ptr noundef @.str.2, i32 noundef 148, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

385:                                              ; No predecessors!
  br label %386

386:                                              ; preds = %385, %383
  br label %387

387:                                              ; preds = %386
  %388 = load i32, ptr %30, align 4, !tbaa !9
  %389 = add nsw i32 %388, 1
  store i32 %389, ptr %30, align 4, !tbaa !9
  br label %289, !llvm.loop !13

390:                                              ; preds = %292
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %2) #10
  %391 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.17)
  %392 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %391, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  %393 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #11
  invoke void @_ZN6catnip6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %393, i32 noundef 8, i32 noundef 8)
          to label %394 unwind label %407

394:                                              ; preds = %390
  store ptr %393, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #10
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %395

395:                                              ; preds = %418, %394
  %396 = load i32, ptr %32, align 4, !tbaa !9
  %397 = icmp sle i32 %396, 8
  br i1 %397, label %411, label %398

398:                                              ; preds = %395
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  br label %421

399:                                              ; preds = %307, %293
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %400

400:                                              ; preds = %399, %272, %248, %224, %210, %206, %202, %198, %194, %190
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #10
  br label %401

401:                                              ; preds = %400, %134
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  br label %402

402:                                              ; preds = %401, %130
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #10
  br label %403

403:                                              ; preds = %402, %126
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  br label %404

404:                                              ; preds = %403, %122
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  br label %405

405:                                              ; preds = %404, %118
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #10
  br label %406

406:                                              ; preds = %405, %68
  call void @llvm.lifetime.end.p0(i64 8, ptr %2) #10
  br label %775

407:                                              ; preds = %390
  %408 = landingpad { ptr, i32 }
          cleanup
  %409 = extractvalue { ptr, i32 } %408, 0
  store ptr %409, ptr %3, align 8
  %410 = extractvalue { ptr, i32 } %408, 1
  store i32 %410, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %393, i64 noundef 24) #12
  br label %774

411:                                              ; preds = %395
  %412 = load ptr, ptr %31, align 8, !tbaa !5
  %413 = load i32, ptr %32, align 4, !tbaa !9
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %412, double noundef 1.300000e+00, i32 noundef %413, i32 noundef 2)
  %414 = load ptr, ptr %31, align 8, !tbaa !5
  %415 = load i32, ptr %32, align 4, !tbaa !9
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %414, double noundef 1.300000e+00, i32 noundef %415, i32 noundef 3)
  %416 = load ptr, ptr %31, align 8, !tbaa !5
  %417 = load i32, ptr %32, align 4, !tbaa !9
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %416, double noundef 4.000000e+00, i32 noundef %417, i32 noundef 4)
  br label %418

418:                                              ; preds = %411
  %419 = load i32, ptr %32, align 4, !tbaa !9
  %420 = add nsw i32 %419, 1
  store i32 %420, ptr %32, align 4, !tbaa !9
  br label %395, !llvm.loop !14

421:                                              ; preds = %398
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #10
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %422

422:                                              ; preds = %433, %421
  %423 = load i32, ptr %33, align 4, !tbaa !9
  %424 = icmp sle i32 %423, 8
  br i1 %424, label %426, label %425

425:                                              ; preds = %422
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  br label %436

426:                                              ; preds = %422
  %427 = load ptr, ptr %31, align 8, !tbaa !5
  %428 = load i32, ptr %33, align 4, !tbaa !9
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %427, double noundef 1.300000e+00, i32 noundef 2, i32 noundef %428)
  %429 = load ptr, ptr %31, align 8, !tbaa !5
  %430 = load i32, ptr %33, align 4, !tbaa !9
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %429, double noundef 1.300000e+00, i32 noundef 3, i32 noundef %430)
  %431 = load ptr, ptr %31, align 8, !tbaa !5
  %432 = load i32, ptr %33, align 4, !tbaa !9
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %431, double noundef 4.000000e+00, i32 noundef 4, i32 noundef %432)
  br label %433

433:                                              ; preds = %426
  %434 = load i32, ptr %33, align 4, !tbaa !9
  %435 = add nsw i32 %434, 1
  store i32 %435, ptr %33, align 4, !tbaa !9
  br label %422, !llvm.loop !15

436:                                              ; preds = %425
  %437 = load ptr, ptr %31, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %437, double noundef 6.000000e+00, i32 noundef 2, i32 noundef 4)
  %438 = load ptr, ptr %31, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %438, double noundef 6.000000e+00, i32 noundef 3, i32 noundef 4)
  %439 = load ptr, ptr %31, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %439, double noundef 6.000000e+00, i32 noundef 4, i32 noundef 2)
  %440 = load ptr, ptr %31, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %440, double noundef 6.000000e+00, i32 noundef 4, i32 noundef 3)
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  %441 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #11
  invoke void @_ZN6catnip6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %441, i32 noundef 2, i32 noundef 3)
          to label %442 unwind label %470

442:                                              ; preds = %436
  store ptr %441, ptr %34, align 8, !tbaa !5
  %443 = load ptr, ptr %34, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %443, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 1)
  %444 = load ptr, ptr %34, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %444, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 2)
  %445 = load ptr, ptr %34, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %445, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 3)
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  %446 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #11
  invoke void @_ZN6catnip6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %446, i32 noundef 3, i32 noundef 3)
          to label %447 unwind label %474

447:                                              ; preds = %442
  store ptr %446, ptr %35, align 8, !tbaa !5
  %448 = load ptr, ptr %35, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %448, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 1)
  %449 = load ptr, ptr %35, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %449, double noundef 2.000000e+00, i32 noundef 2, i32 noundef 1)
  %450 = load ptr, ptr %35, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %450, double noundef 3.000000e+00, i32 noundef 3, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #10
  %451 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #11
  invoke void @_ZN6catnip6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %451, i32 noundef 5, i32 noundef 3)
          to label %452 unwind label %478

452:                                              ; preds = %447
  store ptr %451, ptr %36, align 8, !tbaa !5
  %453 = load ptr, ptr %36, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %453, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 1)
  %454 = load ptr, ptr %36, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %454, double noundef 1.000000e+00, i32 noundef 2, i32 noundef 1)
  %455 = load ptr, ptr %36, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %455, double noundef 1.000000e+00, i32 noundef 2, i32 noundef 2)
  %456 = load ptr, ptr %36, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %456, double noundef 1.000000e+00, i32 noundef 2, i32 noundef 3)
  %457 = load ptr, ptr %36, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %457, double noundef 3.000000e+00, i32 noundef 3, i32 noundef 1)
  %458 = load ptr, ptr %36, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %458, double noundef 2.000000e+00, i32 noundef 4, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 24, ptr %37) #10
  %459 = load ptr, ptr %34, align 8, !tbaa !5
  %460 = load ptr, ptr %36, align 8, !tbaa !5
  call void @_ZN6catnip6Matrix8matchRowERKS0_i(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %37, ptr noundef nonnull align 8 dereferenceable(24) %459, ptr noundef nonnull align 8 dereferenceable(24) %460, i32 noundef 2)
  call void @llvm.lifetime.start.p0(i64 24, ptr %38) #10
  %461 = load ptr, ptr %35, align 8, !tbaa !5
  %462 = load ptr, ptr %36, align 8, !tbaa !5
  invoke void @_ZN6catnip6Matrix8matchRowERKS0_i(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %38, ptr noundef nonnull align 8 dereferenceable(24) %461, ptr noundef nonnull align 8 dereferenceable(24) %462, i32 noundef 2)
          to label %463 unwind label %482

463:                                              ; preds = %452
  %464 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %37, i64 noundef 0)
          to label %465 unwind label %486

465:                                              ; preds = %463
  %466 = load i32, ptr %464, align 4, !tbaa !9
  %467 = icmp eq i32 %466, 2
  br i1 %467, label %468, label %469

468:                                              ; preds = %465
  br label %491

469:                                              ; preds = %465
  call void @__assert_fail(ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 222, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

470:                                              ; preds = %436
  %471 = landingpad { ptr, i32 }
          cleanup
  %472 = extractvalue { ptr, i32 } %471, 0
  store ptr %472, ptr %3, align 8
  %473 = extractvalue { ptr, i32 } %471, 1
  store i32 %473, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %441, i64 noundef 24) #12
  br label %773

474:                                              ; preds = %442
  %475 = landingpad { ptr, i32 }
          cleanup
  %476 = extractvalue { ptr, i32 } %475, 0
  store ptr %476, ptr %3, align 8
  %477 = extractvalue { ptr, i32 } %475, 1
  store i32 %477, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %446, i64 noundef 24) #12
  br label %772

478:                                              ; preds = %447
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %3, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %451, i64 noundef 24) #12
  br label %771

482:                                              ; preds = %452
  %483 = landingpad { ptr, i32 }
          cleanup
  %484 = extractvalue { ptr, i32 } %483, 0
  store ptr %484, ptr %3, align 8
  %485 = extractvalue { ptr, i32 } %483, 1
  store i32 %485, ptr %4, align 4
  br label %770

486:                                              ; preds = %515, %507, %499, %491, %463
  %487 = landingpad { ptr, i32 }
          cleanup
  %488 = extractvalue { ptr, i32 } %487, 0
  store ptr %488, ptr %3, align 8
  %489 = extractvalue { ptr, i32 } %487, 1
  store i32 %489, ptr %4, align 4
  br label %769

490:                                              ; No predecessors!
  br label %491

491:                                              ; preds = %490, %468
  %492 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %37, i64 noundef 1)
          to label %493 unwind label %486

493:                                              ; preds = %491
  %494 = load i32, ptr %492, align 4, !tbaa !9
  %495 = icmp eq i32 %494, 5
  br i1 %495, label %496, label %497

496:                                              ; preds = %493
  br label %499

497:                                              ; preds = %493
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.2, i32 noundef 223, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

498:                                              ; No predecessors!
  br label %499

499:                                              ; preds = %498, %496
  %500 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef 0)
          to label %501 unwind label %486

501:                                              ; preds = %499
  %502 = load i32, ptr %500, align 4, !tbaa !9
  %503 = icmp eq i32 %502, 1
  br i1 %503, label %504, label %505

504:                                              ; preds = %501
  br label %507

505:                                              ; preds = %501
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.2, i32 noundef 225, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

506:                                              ; No predecessors!
  br label %507

507:                                              ; preds = %506, %504
  %508 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef 1)
          to label %509 unwind label %486

509:                                              ; preds = %507
  %510 = load i32, ptr %508, align 4, !tbaa !9
  %511 = icmp eq i32 %510, 4
  br i1 %511, label %512, label %513

512:                                              ; preds = %509
  br label %515

513:                                              ; preds = %509
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str.2, i32 noundef 226, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

514:                                              ; No predecessors!
  br label %515

515:                                              ; preds = %514, %512
  %516 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef 2)
          to label %517 unwind label %486

517:                                              ; preds = %515
  %518 = load i32, ptr %516, align 4, !tbaa !9
  %519 = icmp eq i32 %518, 3
  br i1 %519, label %520, label %521

520:                                              ; preds = %517
  br label %523

521:                                              ; preds = %517
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.2, i32 noundef 227, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

522:                                              ; No predecessors!
  br label %523

523:                                              ; preds = %522, %520
  call void @llvm.lifetime.start.p0(i64 24, ptr %39) #10
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #10
  store i32 1, ptr %40, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 4 dereferenceable(4) %40)
          to label %524 unwind label %542

524:                                              ; preds = %523
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #10
  store i32 2, ptr %41, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 4 dereferenceable(4) %41)
          to label %525 unwind label %546

525:                                              ; preds = %524
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #10
  store i32 1, ptr %42, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 4 dereferenceable(4) %42)
          to label %526 unwind label %550

526:                                              ; preds = %525
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #10
  store i32 2, ptr %43, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 4 dereferenceable(4) %43)
          to label %527 unwind label %554

527:                                              ; preds = %526
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #10
  store i32 2, ptr %44, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 4 dereferenceable(4) %44)
          to label %528 unwind label %558

528:                                              ; preds = %527
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #10
  %529 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.7)
          to label %530 unwind label %562

530:                                              ; preds = %528
  %531 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %529, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %532 unwind label %562

532:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #10
  store ptr %37, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #10
  %533 = load ptr, ptr %45, align 8, !tbaa !5
  %534 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %533) #10
  %535 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %46, i32 0, i32 0
  store ptr %534, ptr %535, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #10
  %536 = load ptr, ptr %45, align 8, !tbaa !5
  %537 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %536) #10
  %538 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %47, i32 0, i32 0
  store ptr %537, ptr %538, align 8
  br label %539

539:                                              ; preds = %574, %532
  %540 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #10
  br i1 %540, label %566, label %541

541:                                              ; preds = %539
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  br label %580

542:                                              ; preds = %523
  %543 = landingpad { ptr, i32 }
          cleanup
  %544 = extractvalue { ptr, i32 } %543, 0
  store ptr %544, ptr %3, align 8
  %545 = extractvalue { ptr, i32 } %543, 1
  store i32 %545, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  br label %768

546:                                              ; preds = %524
  %547 = landingpad { ptr, i32 }
          cleanup
  %548 = extractvalue { ptr, i32 } %547, 0
  store ptr %548, ptr %3, align 8
  %549 = extractvalue { ptr, i32 } %547, 1
  store i32 %549, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  br label %768

550:                                              ; preds = %525
  %551 = landingpad { ptr, i32 }
          cleanup
  %552 = extractvalue { ptr, i32 } %551, 0
  store ptr %552, ptr %3, align 8
  %553 = extractvalue { ptr, i32 } %551, 1
  store i32 %553, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #10
  br label %768

554:                                              ; preds = %526
  %555 = landingpad { ptr, i32 }
          cleanup
  %556 = extractvalue { ptr, i32 } %555, 0
  store ptr %556, ptr %3, align 8
  %557 = extractvalue { ptr, i32 } %555, 1
  store i32 %557, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  br label %768

558:                                              ; preds = %527
  %559 = landingpad { ptr, i32 }
          cleanup
  %560 = extractvalue { ptr, i32 } %559, 0
  store ptr %560, ptr %3, align 8
  %561 = extractvalue { ptr, i32 } %559, 1
  store i32 %561, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #10
  br label %768

562:                                              ; preds = %630, %628, %530, %528
  %563 = landingpad { ptr, i32 }
          cleanup
  %564 = extractvalue { ptr, i32 } %563, 0
  store ptr %564, ptr %3, align 8
  %565 = extractvalue { ptr, i32 } %563, 1
  store i32 %565, ptr %4, align 4
  br label %768

566:                                              ; preds = %539
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #10
  %567 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #10
  %568 = load i32, ptr %567, align 4, !tbaa !9
  store i32 %568, ptr %48, align 4, !tbaa !9
  %569 = load i32, ptr %48, align 4, !tbaa !9
  %570 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, i32 noundef %569)
          to label %571 unwind label %576

571:                                              ; preds = %566
  %572 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %570, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %573 unwind label %576

573:                                              ; preds = %571
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  br label %574

574:                                              ; preds = %573
  %575 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #10
  br label %539

576:                                              ; preds = %571, %566
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %3, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  br label %768

580:                                              ; preds = %541
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #10
  store ptr %38, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #10
  %581 = load ptr, ptr %49, align 8, !tbaa !5
  %582 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %581) #10
  %583 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %50, i32 0, i32 0
  store ptr %582, ptr %583, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #10
  %584 = load ptr, ptr %49, align 8, !tbaa !5
  %585 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %584) #10
  %586 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %51, i32 0, i32 0
  store ptr %585, ptr %586, align 8
  br label %587

587:                                              ; preds = %598, %580
  %588 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %51) #10
  br i1 %588, label %590, label %589

589:                                              ; preds = %587
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %604

590:                                              ; preds = %587
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #10
  %591 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #10
  %592 = load i32, ptr %591, align 4, !tbaa !9
  store i32 %592, ptr %52, align 4, !tbaa !9
  %593 = load i32, ptr %52, align 4, !tbaa !9
  %594 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, i32 noundef %593)
          to label %595 unwind label %600

595:                                              ; preds = %590
  %596 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %594, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %597 unwind label %600

597:                                              ; preds = %595
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #10
  br label %598

598:                                              ; preds = %597
  %599 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #10
  br label %587

600:                                              ; preds = %595, %590
  %601 = landingpad { ptr, i32 }
          cleanup
  %602 = extractvalue { ptr, i32 } %601, 0
  store ptr %602, ptr %3, align 8
  %603 = extractvalue { ptr, i32 } %601, 1
  store i32 %603, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %768

604:                                              ; preds = %589
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #10
  store ptr %39, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #10
  %605 = load ptr, ptr %53, align 8, !tbaa !5
  %606 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %605) #10
  %607 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %54, i32 0, i32 0
  store ptr %606, ptr %607, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #10
  %608 = load ptr, ptr %53, align 8, !tbaa !5
  %609 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %608) #10
  %610 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %55, i32 0, i32 0
  store ptr %609, ptr %610, align 8
  br label %611

611:                                              ; preds = %622, %604
  %612 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %55) #10
  br i1 %612, label %614, label %613

613:                                              ; preds = %611
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  br label %628

614:                                              ; preds = %611
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #10
  %615 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %54) #10
  %616 = load i32, ptr %615, align 4, !tbaa !9
  store i32 %616, ptr %56, align 4, !tbaa !9
  %617 = load i32, ptr %56, align 4, !tbaa !9
  %618 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, i32 noundef %617)
          to label %619 unwind label %624

619:                                              ; preds = %614
  %620 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %618, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %621 unwind label %624

621:                                              ; preds = %619
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #10
  br label %622

622:                                              ; preds = %621
  %623 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %54) #10
  br label %611

624:                                              ; preds = %619, %614
  %625 = landingpad { ptr, i32 }
          cleanup
  %626 = extractvalue { ptr, i32 } %625, 0
  store ptr %626, ptr %3, align 8
  %627 = extractvalue { ptr, i32 } %625, 1
  store i32 %627, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  br label %768

628:                                              ; preds = %613
  %629 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.8)
          to label %630 unwind label %562

630:                                              ; preds = %628
  %631 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %629, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %632 unwind label %562

632:                                              ; preds = %630
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #10
  %633 = load ptr, ptr %31, align 8, !tbaa !5
  %634 = invoke noundef ptr @_ZN6catnip12unscramble_SERKSt6vectorIiSaIiEES4_S4_PNS_6MatrixE(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef %633)
          to label %635 unwind label %645

635:                                              ; preds = %632
  store ptr %634, ptr %57, align 8, !tbaa !5
  %636 = load ptr, ptr %57, align 8, !tbaa !5
  %637 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6catniplsERSoRNS_6MatrixE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull align 8 dereferenceable(24) %636)
          to label %638 unwind label %645

638:                                              ; preds = %635
  %639 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %637, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %640 unwind label %645

640:                                              ; preds = %638
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #10
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %641

641:                                              ; preds = %702, %640
  %642 = load i32, ptr %58, align 4, !tbaa !9
  %643 = icmp sle i32 %642, 8
  br i1 %643, label %649, label %644

644:                                              ; preds = %641
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #10
  br label %705

645:                                              ; preds = %638, %635, %632
  %646 = landingpad { ptr, i32 }
          cleanup
  %647 = extractvalue { ptr, i32 } %646, 0
  store ptr %647, ptr %3, align 8
  %648 = extractvalue { ptr, i32 } %646, 1
  store i32 %648, ptr %4, align 4
  br label %767

649:                                              ; preds = %641
  %650 = load i32, ptr %58, align 4, !tbaa !9
  %651 = icmp ne i32 %650, 4
  br i1 %651, label %652, label %701

652:                                              ; preds = %649
  %653 = load ptr, ptr %57, align 8, !tbaa !5
  %654 = load i32, ptr %58, align 4, !tbaa !9
  %655 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %653, i32 noundef %654, i32 noundef 5)
          to label %656 unwind label %662

656:                                              ; preds = %652
  %657 = fmul double %655, 1.000000e+01
  %658 = fptosi double %657 to i32
  %659 = icmp eq i32 %658, 13
  br i1 %659, label %660, label %661

660:                                              ; preds = %656
  br label %667

661:                                              ; preds = %656
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str.2, i32 noundef 275, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

662:                                              ; preds = %689, %678, %667, %652
  %663 = landingpad { ptr, i32 }
          cleanup
  %664 = extractvalue { ptr, i32 } %663, 0
  store ptr %664, ptr %3, align 8
  %665 = extractvalue { ptr, i32 } %663, 1
  store i32 %665, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #10
  br label %767

666:                                              ; No predecessors!
  br label %667

667:                                              ; preds = %666, %660
  %668 = load ptr, ptr %57, align 8, !tbaa !5
  %669 = load i32, ptr %58, align 4, !tbaa !9
  %670 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %668, i32 noundef %669, i32 noundef 6)
          to label %671 unwind label %662

671:                                              ; preds = %667
  %672 = fmul double %670, 1.000000e+01
  %673 = fptosi double %672 to i32
  %674 = icmp eq i32 %673, 13
  br i1 %674, label %675, label %676

675:                                              ; preds = %671
  br label %678

676:                                              ; preds = %671
  call void @__assert_fail(ptr noundef @.str.19, ptr noundef @.str.2, i32 noundef 276, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

677:                                              ; No predecessors!
  br label %678

678:                                              ; preds = %677, %675
  %679 = load ptr, ptr %57, align 8, !tbaa !5
  %680 = load i32, ptr %58, align 4, !tbaa !9
  %681 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %679, i32 noundef 5, i32 noundef %680)
          to label %682 unwind label %662

682:                                              ; preds = %678
  %683 = fmul double %681, 1.000000e+01
  %684 = fptosi double %683 to i32
  %685 = icmp eq i32 %684, 13
  br i1 %685, label %686, label %687

686:                                              ; preds = %682
  br label %689

687:                                              ; preds = %682
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 278, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

688:                                              ; No predecessors!
  br label %689

689:                                              ; preds = %688, %686
  %690 = load ptr, ptr %57, align 8, !tbaa !5
  %691 = load i32, ptr %58, align 4, !tbaa !9
  %692 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %690, i32 noundef 6, i32 noundef %691)
          to label %693 unwind label %662

693:                                              ; preds = %689
  %694 = fmul double %692, 1.000000e+01
  %695 = fptosi double %694 to i32
  %696 = icmp eq i32 %695, 13
  br i1 %696, label %697, label %698

697:                                              ; preds = %693
  br label %700

698:                                              ; preds = %693
  call void @__assert_fail(ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 279, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

699:                                              ; No predecessors!
  br label %700

700:                                              ; preds = %699, %697
  br label %701

701:                                              ; preds = %700, %649
  br label %702

702:                                              ; preds = %701
  %703 = load i32, ptr %58, align 4, !tbaa !9
  %704 = add nsw i32 %703, 1
  store i32 %704, ptr %58, align 4, !tbaa !9
  br label %641, !llvm.loop !16

705:                                              ; preds = %644
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #10
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %706

706:                                              ; preds = %763, %705
  %707 = load i32, ptr %59, align 4, !tbaa !9
  %708 = icmp sle i32 %707, 8
  br i1 %708, label %710, label %709

709:                                              ; preds = %706
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #10
  br label %766

710:                                              ; preds = %706
  %711 = load i32, ptr %59, align 4, !tbaa !9
  %712 = icmp eq i32 %711, 5
  br i1 %712, label %716, label %713

713:                                              ; preds = %710
  %714 = load i32, ptr %59, align 4, !tbaa !9
  %715 = icmp eq i32 %714, 6
  br i1 %715, label %716, label %741

716:                                              ; preds = %713, %710
  %717 = load ptr, ptr %57, align 8, !tbaa !5
  %718 = load i32, ptr %59, align 4, !tbaa !9
  %719 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %717, i32 noundef %718, i32 noundef 4)
          to label %720 unwind label %725

720:                                              ; preds = %716
  %721 = fptosi double %719 to i32
  %722 = icmp eq i32 %721, 6
  br i1 %722, label %723, label %724

723:                                              ; preds = %720
  br label %730

724:                                              ; preds = %720
  call void @__assert_fail(ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 285, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

725:                                              ; preds = %751, %741, %730, %716
  %726 = landingpad { ptr, i32 }
          cleanup
  %727 = extractvalue { ptr, i32 } %726, 0
  store ptr %727, ptr %3, align 8
  %728 = extractvalue { ptr, i32 } %726, 1
  store i32 %728, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #10
  br label %767

729:                                              ; No predecessors!
  br label %730

730:                                              ; preds = %729, %723
  %731 = load ptr, ptr %57, align 8, !tbaa !5
  %732 = load i32, ptr %59, align 4, !tbaa !9
  %733 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %731, i32 noundef 4, i32 noundef %732)
          to label %734 unwind label %725

734:                                              ; preds = %730
  %735 = fptosi double %733 to i32
  %736 = icmp eq i32 %735, 6
  br i1 %736, label %737, label %738

737:                                              ; preds = %734
  br label %740

738:                                              ; preds = %734
  call void @__assert_fail(ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 286, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

739:                                              ; No predecessors!
  br label %740

740:                                              ; preds = %739, %737
  br label %762

741:                                              ; preds = %713
  %742 = load ptr, ptr %57, align 8, !tbaa !5
  %743 = load i32, ptr %59, align 4, !tbaa !9
  %744 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %742, i32 noundef 4, i32 noundef %743)
          to label %745 unwind label %725

745:                                              ; preds = %741
  %746 = fptosi double %744 to i32
  %747 = icmp eq i32 %746, 4
  br i1 %747, label %748, label %749

748:                                              ; preds = %745
  br label %751

749:                                              ; preds = %745
  call void @__assert_fail(ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 288, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

750:                                              ; No predecessors!
  br label %751

751:                                              ; preds = %750, %748
  %752 = load ptr, ptr %57, align 8, !tbaa !5
  %753 = load i32, ptr %59, align 4, !tbaa !9
  %754 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %752, i32 noundef %753, i32 noundef 4)
          to label %755 unwind label %725

755:                                              ; preds = %751
  %756 = fptosi double %754 to i32
  %757 = icmp eq i32 %756, 4
  br i1 %757, label %758, label %759

758:                                              ; preds = %755
  br label %761

759:                                              ; preds = %755
  call void @__assert_fail(ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 289, ptr noundef @__PRETTY_FUNCTION__.main) #13
  unreachable

760:                                              ; No predecessors!
  br label %761

761:                                              ; preds = %760, %758
  br label %762

762:                                              ; preds = %761, %740
  br label %763

763:                                              ; preds = %762
  %764 = load i32, ptr %59, align 4, !tbaa !9
  %765 = add nsw i32 %764, 1
  store i32 %765, ptr %59, align 4, !tbaa !9
  br label %706, !llvm.loop !17

766:                                              ; preds = %709
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  ret i32 0

767:                                              ; preds = %725, %662, %645
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #10
  br label %768

768:                                              ; preds = %767, %624, %600, %576, %562, %558, %554, %550, %546, %542
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #10
  br label %769

769:                                              ; preds = %768, %486
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #10
  br label %770

770:                                              ; preds = %769, %482
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #10
  br label %771

771:                                              ; preds = %770, %478
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  br label %772

772:                                              ; preds = %771, %474
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  br label %773

773:                                              ; preds = %772, %470
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  br label %774

774:                                              ; preds = %773, %407
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  br label %775

775:                                              ; preds = %774, %406
  %776 = load ptr, ptr %3, align 8
  %777 = load i32, ptr %4, align 4
  %778 = insertvalue { ptr, i32 } poison, ptr %776, 0
  %779 = insertvalue { ptr, i32 } %778, i32 %777, 1
  resume { ptr, i32 } %779
}

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #1

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #4

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #6

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

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

declare void @_ZN6catnip6Matrix8matchRowERKS0_i(ptr dead_on_unwind writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) #5

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #7

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #9

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #5

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

declare noundef ptr @_ZN6catnip15unscramble_CoefERKSt6vectorIiSaIiEES4_S4_PNS_6MatrixE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #5

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN6catniplsERSoRNS_6MatrixE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24)) #5

declare noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) #5

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

declare noundef ptr @_ZN6catnip12unscramble_SERKSt6vectorIiSaIiEES4_S4_PNS_6MatrixE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #5

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

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

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


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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [87 x i8], align 1
@__PRETTY_FUNCTION__.main = external hidden unnamed_addr constant [11 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [18 x i8], align 1
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.7 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [47 x i8], align 1

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %1 = alloca %"class.std::vector", align 8
  %2 = alloca %"class.std::vector", align 8
  %3 = alloca %"class.std::vector", align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %15 = alloca %"class.std::vector", align 8
  %16 = alloca %"class.std::vector", align 8
  %17 = alloca %"class.std::vector", 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 %"class.__gnu_cxx::__normal_iterator", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %29 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str)
  %30 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %31 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #10
  invoke void @_ZN6catnip6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 8, i32 noundef 8)
          to label %.preheader178.preheader unwind label %33

.preheader178.preheader:                          ; preds = %0
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 1.300000e+00, i32 noundef 1, i32 noundef 1)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 2.000000e-01, i32 noundef 1, i32 noundef 3)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 8.240000e+01, i32 noundef 1, i32 noundef 4)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 9.400000e+00, i32 noundef 1, i32 noundef 5)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 3.400000e+00, i32 noundef 1, i32 noundef 6)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef -3.000000e+00, i32 noundef 1, i32 noundef 8)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 1.300000e+00, i32 noundef 2, i32 noundef 1)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 2.000000e-01, i32 noundef 2, i32 noundef 3)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 8.240000e+01, i32 noundef 2, i32 noundef 4)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 9.400000e+00, i32 noundef 2, i32 noundef 5)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 3.400000e+00, i32 noundef 2, i32 noundef 6)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef -3.000000e+00, i32 noundef 2, i32 noundef 8)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 1.300000e+00, i32 noundef 3, i32 noundef 1)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 2.000000e-01, i32 noundef 3, i32 noundef 3)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 8.240000e+01, i32 noundef 3, i32 noundef 4)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 9.400000e+00, i32 noundef 3, i32 noundef 5)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 3.400000e+00, i32 noundef 3, i32 noundef 6)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef -3.000000e+00, i32 noundef 3, i32 noundef 8)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 1.300000e+00, i32 noundef 4, i32 noundef 1)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 2.000000e-01, i32 noundef 4, i32 noundef 3)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 8.240000e+01, i32 noundef 4, i32 noundef 4)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 9.400000e+00, i32 noundef 4, i32 noundef 5)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 3.400000e+00, i32 noundef 4, i32 noundef 6)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef -3.000000e+00, i32 noundef 4, i32 noundef 8)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 1.300000e+00, i32 noundef 5, i32 noundef 1)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 2.000000e-01, i32 noundef 5, i32 noundef 3)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 8.240000e+01, i32 noundef 5, i32 noundef 4)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 9.400000e+00, i32 noundef 5, i32 noundef 5)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 3.400000e+00, i32 noundef 5, i32 noundef 6)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef -3.000000e+00, i32 noundef 5, i32 noundef 8)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 1.300000e+00, i32 noundef 6, i32 noundef 1)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 2.000000e-01, i32 noundef 6, i32 noundef 3)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 8.240000e+01, i32 noundef 6, i32 noundef 4)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 9.400000e+00, i32 noundef 6, i32 noundef 5)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 3.400000e+00, i32 noundef 6, i32 noundef 6)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef -3.000000e+00, i32 noundef 6, i32 noundef 8)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 1.300000e+00, i32 noundef 7, i32 noundef 1)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 2.000000e-01, i32 noundef 7, i32 noundef 3)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 8.240000e+01, i32 noundef 7, i32 noundef 4)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 9.400000e+00, i32 noundef 7, i32 noundef 5)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 3.400000e+00, i32 noundef 7, i32 noundef 6)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef -3.000000e+00, i32 noundef 7, i32 noundef 8)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 1.300000e+00, i32 noundef 8, i32 noundef 1)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 2.000000e-01, i32 noundef 8, i32 noundef 3)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 8.240000e+01, i32 noundef 8, i32 noundef 4)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 9.400000e+00, i32 noundef 8, i32 noundef 5)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef 3.400000e+00, i32 noundef 8, i32 noundef 6)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef -3.000000e+00, i32 noundef 8, i32 noundef 8)
  %32 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #10
  invoke void @_ZN6catnip6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %32, i32 noundef 2, i32 noundef 3)
          to label %35 unwind label %46

33:                                               ; preds = %0
  %34 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %31, i64 noundef 24) #11
  br label %584

35:                                               ; preds = %.preheader178.preheader
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %32, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 1)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %32, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 2)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %32, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 3)
  %36 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #10
  invoke void @_ZN6catnip6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %36, i32 noundef 3, i32 noundef 3)
          to label %37 unwind label %48

37:                                               ; preds = %35
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %36, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 1)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %36, double noundef 2.000000e+00, i32 noundef 2, i32 noundef 1)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %36, double noundef 3.000000e+00, i32 noundef 3, i32 noundef 1)
  %38 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #10
  invoke void @_ZN6catnip6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %38, i32 noundef 5, i32 noundef 3)
          to label %39 unwind label %50

39:                                               ; preds = %37
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %38, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 1)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %38, double noundef 1.000000e+00, i32 noundef 2, i32 noundef 1)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %38, double noundef 1.000000e+00, i32 noundef 2, i32 noundef 2)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %38, double noundef 1.000000e+00, i32 noundef 2, i32 noundef 3)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %38, double noundef 3.000000e+00, i32 noundef 3, i32 noundef 1)
  tail call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %38, double noundef 2.000000e+00, i32 noundef 4, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %1) #12
  call void @_ZN6catnip6Matrix8matchRowERKS0_i(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %1, ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(24) %38, i32 noundef 2)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) #12
  invoke void @_ZN6catnip6Matrix8matchRowERKS0_i(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %2, ptr noundef nonnull align 8 dereferenceable(24) %36, ptr noundef nonnull align 8 dereferenceable(24) %38, i32 noundef 2)
          to label %40 unwind label %52

40:                                               ; preds = %39
  %41 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0)
          to label %42 unwind label %54

42:                                               ; preds = %40
  %43 = load i32, ptr %41, align 4, !tbaa !5
  %44 = icmp eq i32 %43, 2
  br i1 %44, label %56, label %45

45:                                               ; preds = %42
  call void @__assert_fail(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, i32 noundef 74, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

46:                                               ; preds = %.preheader178.preheader
  %47 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %32, i64 noundef 24) #11
  br label %584

48:                                               ; preds = %35
  %49 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %36, i64 noundef 24) #11
  br label %584

50:                                               ; preds = %37
  %51 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %38, i64 noundef 24) #11
  br label %584

52:                                               ; preds = %39
  %53 = landingpad { ptr, i32 }
          cleanup
  br label %215

54:                                               ; preds = %74, %68, %62, %56, %40
  %55 = landingpad { ptr, i32 }
          cleanup
  br label %214

56:                                               ; preds = %42
  %57 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 1)
          to label %58 unwind label %54

58:                                               ; preds = %56
  %59 = load i32, ptr %57, align 4, !tbaa !5
  %60 = icmp eq i32 %59, 5
  br i1 %60, label %62, label %61

61:                                               ; preds = %58
  call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.2, i32 noundef 75, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

62:                                               ; preds = %58
  %63 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 0)
          to label %64 unwind label %54

64:                                               ; preds = %62
  %65 = load i32, ptr %63, align 4, !tbaa !5
  %66 = icmp eq i32 %65, 1
  br i1 %66, label %68, label %67

67:                                               ; preds = %64
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.2, i32 noundef 77, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

68:                                               ; preds = %64
  %69 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 1)
          to label %70 unwind label %54

70:                                               ; preds = %68
  %71 = load i32, ptr %69, align 4, !tbaa !5
  %72 = icmp eq i32 %71, 4
  br i1 %72, label %74, label %73

73:                                               ; preds = %70
  call void @__assert_fail(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, i32 noundef 78, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

74:                                               ; preds = %70
  %75 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 2)
          to label %76 unwind label %54

76:                                               ; preds = %74
  %77 = load i32, ptr %75, align 4, !tbaa !5
  %78 = icmp eq i32 %77, 3
  br i1 %78, label %80, label %79

79:                                               ; preds = %76
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.2, i32 noundef 79, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

80:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #12
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #12
  store i32 1, ptr %4, align 4, !tbaa !5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(4) %4)
          to label %81 unwind label %96

81:                                               ; preds = %80
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #12
  store i32 2, ptr %5, align 4, !tbaa !5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %82 unwind label %98

82:                                               ; preds = %81
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #12
  store i32 1, ptr %6, align 4, !tbaa !5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(4) %6)
          to label %83 unwind label %100

83:                                               ; preds = %82
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #12
  store i32 2, ptr %7, align 4, !tbaa !5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %84 unwind label %102

84:                                               ; preds = %83
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #12
  store i32 2, ptr %8, align 4, !tbaa !5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(4) %8)
          to label %85 unwind label %104

85:                                               ; preds = %84
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #12
  %86 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.7)
          to label %87 unwind label %106

87:                                               ; preds = %85
  %88 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %89 unwind label %106

89:                                               ; preds = %87
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #12
  %90 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #12
  store ptr %90, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #12
  %91 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #12
  store ptr %91, ptr %10, align 8
  %92 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #12
  br i1 %92, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %113, %89
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #12
  %93 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #12
  store ptr %93, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #12
  %94 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #12
  store ptr %94, ptr %12, align 8
  %95 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #12
  br i1 %95, label %.lr.ph181, label %._crit_edge182

96:                                               ; preds = %80
  %97 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #12
  br label %213

98:                                               ; preds = %81
  %99 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #12
  br label %213

100:                                              ; preds = %82
  %101 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #12
  br label %213

102:                                              ; preds = %83
  %103 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #12
  br label %213

104:                                              ; preds = %84
  %105 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #12
  br label %213

106:                                              ; preds = %142, %._crit_edge185, %87, %85
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %213

.lr.ph:                                           ; preds = %89, %113
  %108 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #12
  %109 = load i32, ptr %108, align 4, !tbaa !5
  %110 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, i32 noundef %109)
          to label %111 unwind label %116

111:                                              ; preds = %.lr.ph
  %112 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %113 unwind label %116

113:                                              ; preds = %111
  %114 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #12
  %115 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #12
  br i1 %115, label %.lr.ph, label %._crit_edge

116:                                              ; preds = %111, %.lr.ph
  %117 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #12
  br label %213

._crit_edge182:                                   ; preds = %126, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #12
  %118 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #12
  store ptr %118, ptr %13, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #12
  %119 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #12
  store ptr %119, ptr %14, align 8
  %120 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #12
  br i1 %120, label %.lr.ph184, label %._crit_edge185

.lr.ph181:                                        ; preds = %._crit_edge, %126
  %121 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #12
  %122 = load i32, ptr %121, align 4, !tbaa !5
  %123 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, i32 noundef %122)
          to label %124 unwind label %129

124:                                              ; preds = %.lr.ph181
  %125 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %126 unwind label %129

126:                                              ; preds = %124
  %127 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #12
  %128 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #12
  br i1 %128, label %.lr.ph181, label %._crit_edge182

129:                                              ; preds = %124, %.lr.ph181
  %130 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #12
  br label %213

._crit_edge185:                                   ; preds = %137, %._crit_edge182
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #12
  %131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.8)
          to label %142 unwind label %106

.lr.ph184:                                        ; preds = %._crit_edge182, %137
  %132 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #12
  %133 = load i32, ptr %132, align 4, !tbaa !5
  %134 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, i32 noundef %133)
          to label %135 unwind label %140

135:                                              ; preds = %.lr.ph184
  %136 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %134, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %137 unwind label %140

137:                                              ; preds = %135
  %138 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #12
  %139 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #12
  br i1 %139, label %.lr.ph184, label %._crit_edge185

140:                                              ; preds = %135, %.lr.ph184
  %141 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #12
  br label %213

142:                                              ; preds = %._crit_edge185
  %143 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %131, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %144 unwind label %106

144:                                              ; preds = %142
  %145 = invoke noundef ptr @_ZN6catnip15unscramble_CoefERKSt6vectorIiSaIiEES4_S4_PNS_6MatrixE(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull %31)
          to label %146 unwind label %157

146:                                              ; preds = %144
  %147 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6catniplsERSoRNS_6MatrixE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull align 8 dereferenceable(24) %145)
          to label %148 unwind label %157

148:                                              ; preds = %146
  %149 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.preheader177 unwind label %157

150:                                              ; preds = %209
  %151 = add nuw nsw i32 %.0151186, 1
  %exitcond.not = icmp eq i32 %151, 9
  br i1 %exitcond.not, label %152, label %.preheader177, !llvm.loop !9

152:                                              ; preds = %150
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %1) #12
  %153 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.17)
  %154 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %155 = call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #10
  invoke void @_ZN6catnip6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %155, i32 noundef 8, i32 noundef 8)
          to label %.preheader176.preheader unwind label %216

.preheader176.preheader:                          ; preds = %152
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 1, i32 noundef 2)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 1, i32 noundef 3)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 4.000000e+00, i32 noundef 1, i32 noundef 4)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 2, i32 noundef 2)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 2, i32 noundef 3)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 4.000000e+00, i32 noundef 2, i32 noundef 4)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 3, i32 noundef 2)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 3, i32 noundef 3)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 4.000000e+00, i32 noundef 3, i32 noundef 4)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 4, i32 noundef 2)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 4, i32 noundef 3)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 4.000000e+00, i32 noundef 4, i32 noundef 4)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 5, i32 noundef 2)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 5, i32 noundef 3)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 4.000000e+00, i32 noundef 5, i32 noundef 4)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 6, i32 noundef 2)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 6, i32 noundef 3)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 4.000000e+00, i32 noundef 6, i32 noundef 4)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 7, i32 noundef 2)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 7, i32 noundef 3)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 4.000000e+00, i32 noundef 7, i32 noundef 4)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 8, i32 noundef 2)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 8, i32 noundef 3)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 4.000000e+00, i32 noundef 8, i32 noundef 4)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 2, i32 noundef 1)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 3, i32 noundef 1)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 4.000000e+00, i32 noundef 4, i32 noundef 1)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 2, i32 noundef 2)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 3, i32 noundef 2)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 4.000000e+00, i32 noundef 4, i32 noundef 2)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 2, i32 noundef 3)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 3, i32 noundef 3)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 4.000000e+00, i32 noundef 4, i32 noundef 3)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 2, i32 noundef 4)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 3, i32 noundef 4)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 4.000000e+00, i32 noundef 4, i32 noundef 4)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 2, i32 noundef 5)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 3, i32 noundef 5)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 4.000000e+00, i32 noundef 4, i32 noundef 5)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 2, i32 noundef 6)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 3, i32 noundef 6)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 4.000000e+00, i32 noundef 4, i32 noundef 6)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 2, i32 noundef 7)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 3, i32 noundef 7)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 4.000000e+00, i32 noundef 4, i32 noundef 7)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 2, i32 noundef 8)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 1.300000e+00, i32 noundef 3, i32 noundef 8)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 4.000000e+00, i32 noundef 4, i32 noundef 8)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 6.000000e+00, i32 noundef 2, i32 noundef 4)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 6.000000e+00, i32 noundef 3, i32 noundef 4)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 6.000000e+00, i32 noundef 4, i32 noundef 2)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %155, double noundef 6.000000e+00, i32 noundef 4, i32 noundef 3)
  %156 = call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #10
  invoke void @_ZN6catnip6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %156, i32 noundef 2, i32 noundef 3)
          to label %218 unwind label %229

157:                                              ; preds = %148, %146, %144
  %158 = landingpad { ptr, i32 }
          cleanup
  br label %213

.preheader177:                                    ; preds = %148, %150
  %.0151186 = phi i32 [ %151, %150 ], [ 1, %148 ]
  %159 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %145, i32 noundef %.0151186, i32 noundef 1)
          to label %160 unwind label %165

160:                                              ; preds = %.preheader177
  %161 = fmul double %159, 1.000000e+01
  %162 = fptosi double %161 to i32
  %163 = icmp eq i32 %162, 13
  br i1 %163, label %167, label %164

164:                                              ; preds = %160
  call void @__assert_fail(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.2, i32 noundef 141, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

165:                                              ; preds = %207, %201, %194, %188, %181, %174, %167, %.preheader177
  %166 = landingpad { ptr, i32 }
          cleanup
  br label %213

167:                                              ; preds = %160
  %168 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %145, i32 noundef %.0151186, i32 noundef 2)
          to label %169 unwind label %165

169:                                              ; preds = %167
  %170 = fmul double %168, 1.000000e+01
  %171 = fptosi double %170 to i32
  %172 = icmp eq i32 %171, 94
  br i1 %172, label %174, label %173

173:                                              ; preds = %169
  call void @__assert_fail(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.2, i32 noundef 142, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

174:                                              ; preds = %169
  %175 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %145, i32 noundef %.0151186, i32 noundef 3)
          to label %176 unwind label %165

176:                                              ; preds = %174
  %177 = fmul double %175, 1.000000e+01
  %178 = fptosi double %177 to i32
  %179 = icmp eq i32 %178, 34
  br i1 %179, label %181, label %180

180:                                              ; preds = %176
  call void @__assert_fail(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.2, i32 noundef 143, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

181:                                              ; preds = %176
  %182 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %145, i32 noundef %.0151186, i32 noundef 4)
          to label %183 unwind label %165

183:                                              ; preds = %181
  %184 = fmul double %182, 1.000000e+01
  %185 = fptosi double %184 to i32
  %186 = icmp eq i32 %185, 824
  br i1 %186, label %188, label %187

187:                                              ; preds = %183
  call void @__assert_fail(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2, i32 noundef 144, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

188:                                              ; preds = %183
  %189 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %145, i32 noundef %.0151186, i32 noundef 5)
          to label %190 unwind label %165

190:                                              ; preds = %188
  %191 = fptosi double %189 to i32
  %192 = icmp eq i32 %191, 0
  br i1 %192, label %194, label %193

193:                                              ; preds = %190
  call void @__assert_fail(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.2, i32 noundef 145, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

194:                                              ; preds = %190
  %195 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %145, i32 noundef %.0151186, i32 noundef 6)
          to label %196 unwind label %165

196:                                              ; preds = %194
  %197 = fmul double %195, 1.000000e+01
  %198 = fptosi double %197 to i32
  %199 = icmp eq i32 %198, 2
  br i1 %199, label %201, label %200

200:                                              ; preds = %196
  call void @__assert_fail(ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.2, i32 noundef 146, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

201:                                              ; preds = %196
  %202 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %145, i32 noundef %.0151186, i32 noundef 7)
          to label %203 unwind label %165

203:                                              ; preds = %201
  %204 = fptosi double %202 to i32
  %205 = icmp eq i32 %204, 0
  br i1 %205, label %207, label %206

206:                                              ; preds = %203
  call void @__assert_fail(ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.2, i32 noundef 147, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

207:                                              ; preds = %203
  %208 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %145, i32 noundef %.0151186, i32 noundef 8)
          to label %209 unwind label %165

209:                                              ; preds = %207
  %210 = fptosi double %208 to i32
  %211 = icmp eq i32 %210, -3
  br i1 %211, label %150, label %212

212:                                              ; preds = %209
  call void @__assert_fail(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.2, i32 noundef 148, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

213:                                              ; preds = %157, %165, %140, %129, %116, %106, %104, %102, %100, %98, %96
  %.pn165 = phi { ptr, i32 } [ %117, %116 ], [ %130, %129 ], [ %141, %140 ], [ %107, %106 ], [ %105, %104 ], [ %103, %102 ], [ %101, %100 ], [ %99, %98 ], [ %97, %96 ], [ %166, %165 ], [ %158, %157 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #12
  br label %214

214:                                              ; preds = %213, %54
  %.pn165.pn = phi { ptr, i32 } [ %.pn165, %213 ], [ %55, %54 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #12
  br label %215

215:                                              ; preds = %214, %52
  %.pn165.pn.pn = phi { ptr, i32 } [ %.pn165.pn, %214 ], [ %53, %52 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %1) #12
  br label %584

216:                                              ; preds = %152
  %217 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %155, i64 noundef 24) #11
  br label %584

218:                                              ; preds = %.preheader176.preheader
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %156, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 1)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %156, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 2)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %156, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 3)
  %219 = call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #10
  invoke void @_ZN6catnip6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %219, i32 noundef 3, i32 noundef 3)
          to label %220 unwind label %231

220:                                              ; preds = %218
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %219, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 1)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %219, double noundef 2.000000e+00, i32 noundef 2, i32 noundef 1)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %219, double noundef 3.000000e+00, i32 noundef 3, i32 noundef 1)
  %221 = call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #10
  invoke void @_ZN6catnip6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %221, i32 noundef 5, i32 noundef 3)
          to label %222 unwind label %233

222:                                              ; preds = %220
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %221, double noundef 1.000000e+00, i32 noundef 1, i32 noundef 1)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %221, double noundef 1.000000e+00, i32 noundef 2, i32 noundef 1)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %221, double noundef 1.000000e+00, i32 noundef 2, i32 noundef 2)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %221, double noundef 1.000000e+00, i32 noundef 2, i32 noundef 3)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %221, double noundef 3.000000e+00, i32 noundef 3, i32 noundef 1)
  call void @_ZN6catnip6Matrix8set_elemEdii(ptr noundef nonnull align 8 dereferenceable(24) %221, double noundef 2.000000e+00, i32 noundef 4, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #12
  call void @_ZN6catnip6Matrix8matchRowERKS0_i(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %15, ptr noundef nonnull align 8 dereferenceable(24) %156, ptr noundef nonnull align 8 dereferenceable(24) %221, i32 noundef 2)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #12
  invoke void @_ZN6catnip6Matrix8matchRowERKS0_i(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %16, ptr noundef nonnull align 8 dereferenceable(24) %219, ptr noundef nonnull align 8 dereferenceable(24) %221, i32 noundef 2)
          to label %223 unwind label %235

223:                                              ; preds = %222
  %224 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef 0)
          to label %225 unwind label %237

225:                                              ; preds = %223
  %226 = load i32, ptr %224, align 4, !tbaa !5
  %227 = icmp eq i32 %226, 2
  br i1 %227, label %239, label %228

228:                                              ; preds = %225
  call void @__assert_fail(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, i32 noundef 222, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

229:                                              ; preds = %.preheader176.preheader
  %230 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %156, i64 noundef 24) #11
  br label %584

231:                                              ; preds = %218
  %232 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %219, i64 noundef 24) #11
  br label %584

233:                                              ; preds = %220
  %234 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %221, i64 noundef 24) #11
  br label %584

235:                                              ; preds = %222
  %236 = landingpad { ptr, i32 }
          cleanup
  br label %583

237:                                              ; preds = %257, %251, %245, %239, %223
  %238 = landingpad { ptr, i32 }
          cleanup
  br label %582

239:                                              ; preds = %225
  %240 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef 1)
          to label %241 unwind label %237

241:                                              ; preds = %239
  %242 = load i32, ptr %240, align 4, !tbaa !5
  %243 = icmp eq i32 %242, 5
  br i1 %243, label %245, label %244

244:                                              ; preds = %241
  call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.2, i32 noundef 223, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

245:                                              ; preds = %241
  %246 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef 0)
          to label %247 unwind label %237

247:                                              ; preds = %245
  %248 = load i32, ptr %246, align 4, !tbaa !5
  %249 = icmp eq i32 %248, 1
  br i1 %249, label %251, label %250

250:                                              ; preds = %247
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.2, i32 noundef 225, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

251:                                              ; preds = %247
  %252 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef 1)
          to label %253 unwind label %237

253:                                              ; preds = %251
  %254 = load i32, ptr %252, align 4, !tbaa !5
  %255 = icmp eq i32 %254, 4
  br i1 %255, label %257, label %256

256:                                              ; preds = %253
  call void @__assert_fail(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, i32 noundef 226, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

257:                                              ; preds = %253
  %258 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef 2)
          to label %259 unwind label %237

259:                                              ; preds = %257
  %260 = load i32, ptr %258, align 4, !tbaa !5
  %261 = icmp eq i32 %260, 3
  br i1 %261, label %263, label %262

262:                                              ; preds = %259
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.2, i32 noundef 227, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

263:                                              ; preds = %259
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #12
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #12
  store i32 1, ptr %18, align 4, !tbaa !5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %264 unwind label %279

264:                                              ; preds = %263
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #12
  store i32 2, ptr %19, align 4, !tbaa !5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %265 unwind label %281

265:                                              ; preds = %264
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #12
  store i32 1, ptr %20, align 4, !tbaa !5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 4 dereferenceable(4) %20)
          to label %266 unwind label %283

266:                                              ; preds = %265
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #12
  store i32 2, ptr %21, align 4, !tbaa !5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 4 dereferenceable(4) %21)
          to label %267 unwind label %285

267:                                              ; preds = %266
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #12
  store i32 2, ptr %22, align 4, !tbaa !5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %268 unwind label %287

268:                                              ; preds = %267
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #12
  %269 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.7)
          to label %270 unwind label %289

270:                                              ; preds = %268
  %271 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %269, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %272 unwind label %289

272:                                              ; preds = %270
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #12
  %273 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  store ptr %273, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #12
  %274 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  store ptr %274, ptr %24, align 8
  %275 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #12
  br i1 %275, label %.lr.ph190, label %._crit_edge191

._crit_edge191:                                   ; preds = %296, %272
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #12
  %276 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #12
  store ptr %276, ptr %25, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #12
  %277 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #12
  store ptr %277, ptr %26, align 8
  %278 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #12
  br i1 %278, label %.lr.ph193, label %._crit_edge194

279:                                              ; preds = %263
  %280 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #12
  br label %581

281:                                              ; preds = %264
  %282 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #12
  br label %581

283:                                              ; preds = %265
  %284 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #12
  br label %581

285:                                              ; preds = %266
  %286 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #12
  br label %581

287:                                              ; preds = %267
  %288 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #12
  br label %581

289:                                              ; preds = %325, %._crit_edge197, %270, %268
  %290 = landingpad { ptr, i32 }
          cleanup
  br label %581

.lr.ph190:                                        ; preds = %272, %296
  %291 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #12
  %292 = load i32, ptr %291, align 4, !tbaa !5
  %293 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, i32 noundef %292)
          to label %294 unwind label %299

294:                                              ; preds = %.lr.ph190
  %295 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %293, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %296 unwind label %299

296:                                              ; preds = %294
  %297 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #12
  %298 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #12
  br i1 %298, label %.lr.ph190, label %._crit_edge191

299:                                              ; preds = %294, %.lr.ph190
  %300 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #12
  br label %581

._crit_edge194:                                   ; preds = %309, %._crit_edge191
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #12
  %301 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  store ptr %301, ptr %27, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #12
  %302 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  store ptr %302, ptr %28, align 8
  %303 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #12
  br i1 %303, label %.lr.ph196, label %._crit_edge197

.lr.ph193:                                        ; preds = %._crit_edge191, %309
  %304 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #12
  %305 = load i32, ptr %304, align 4, !tbaa !5
  %306 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, i32 noundef %305)
          to label %307 unwind label %312

307:                                              ; preds = %.lr.ph193
  %308 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %306, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %309 unwind label %312

309:                                              ; preds = %307
  %310 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #12
  %311 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #12
  br i1 %311, label %.lr.ph193, label %._crit_edge194

312:                                              ; preds = %307, %.lr.ph193
  %313 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #12
  br label %581

._crit_edge197:                                   ; preds = %320, %._crit_edge194
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #12
  %314 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.8)
          to label %325 unwind label %289

.lr.ph196:                                        ; preds = %._crit_edge194, %320
  %315 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #12
  %316 = load i32, ptr %315, align 4, !tbaa !5
  %317 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, i32 noundef %316)
          to label %318 unwind label %323

318:                                              ; preds = %.lr.ph196
  %319 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %317, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %320 unwind label %323

320:                                              ; preds = %318
  %321 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #12
  %322 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #12
  br i1 %322, label %.lr.ph196, label %._crit_edge197

323:                                              ; preds = %318, %.lr.ph196
  %324 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #12
  br label %581

325:                                              ; preds = %._crit_edge197
  %326 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %314, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %327 unwind label %289

327:                                              ; preds = %325
  %328 = invoke noundef ptr @_ZN6catnip12unscramble_SERKSt6vectorIiSaIiEES4_S4_PNS_6MatrixE(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull %155)
          to label %329 unwind label %333

329:                                              ; preds = %327
  %330 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6catniplsERSoRNS_6MatrixE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull align 8 dereferenceable(24) %328)
          to label %331 unwind label %333

331:                                              ; preds = %329
  %332 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %330, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.preheader174.preheader unwind label %333

333:                                              ; preds = %331, %329, %327
  %334 = landingpad { ptr, i32 }
          cleanup
  br label %581

.preheader174.preheader:                          ; preds = %331
  %335 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 1, i32 noundef 5)
          to label %336 unwind label %341

336:                                              ; preds = %.preheader174.preheader
  %337 = fmul double %335, 1.000000e+01
  %338 = fptosi double %337 to i32
  %339 = icmp eq i32 %338, 13
  br i1 %339, label %343, label %340

340:                                              ; preds = %480, %457, %434, %411, %388, %365, %336
  call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.2, i32 noundef 275, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

341:                                              ; preds = %496, %490, %484, %.preheader174.7, %473, %467, %461, %.preheader174.6, %450, %444, %438, %.preheader174.5, %427, %421, %415, %.preheader174.4, %404, %398, %392, %.preheader174.2, %381, %375, %369, %.preheader174.1, %357, %350, %343, %.preheader174.preheader
  %342 = landingpad { ptr, i32 }
          cleanup
  br label %581

343:                                              ; preds = %336
  %344 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 1, i32 noundef 6)
          to label %345 unwind label %341

345:                                              ; preds = %343
  %346 = fmul double %344, 1.000000e+01
  %347 = fptosi double %346 to i32
  %348 = icmp eq i32 %347, 13
  br i1 %348, label %350, label %349

349:                                              ; preds = %486, %463, %440, %417, %394, %371, %345
  call void @__assert_fail(ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.2, i32 noundef 276, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

350:                                              ; preds = %345
  %351 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 5, i32 noundef 1)
          to label %352 unwind label %341

352:                                              ; preds = %350
  %353 = fmul double %351, 1.000000e+01
  %354 = fptosi double %353 to i32
  %355 = icmp eq i32 %354, 13
  br i1 %355, label %357, label %356

356:                                              ; preds = %492, %469, %446, %423, %400, %377, %352
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.2, i32 noundef 278, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

357:                                              ; preds = %352
  %358 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 6, i32 noundef 1)
          to label %359 unwind label %341

359:                                              ; preds = %357
  %360 = fmul double %358, 1.000000e+01
  %361 = fptosi double %360 to i32
  %362 = icmp eq i32 %361, 13
  br i1 %362, label %.preheader174.1, label %363

363:                                              ; preds = %498, %475, %452, %429, %406, %383, %359
  call void @__assert_fail(ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.2, i32 noundef 279, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

.preheader174.1:                                  ; preds = %359
  %364 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 2, i32 noundef 5)
          to label %365 unwind label %341

365:                                              ; preds = %.preheader174.1
  %366 = fmul double %364, 1.000000e+01
  %367 = fptosi double %366 to i32
  %368 = icmp eq i32 %367, 13
  br i1 %368, label %369, label %340

369:                                              ; preds = %365
  %370 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 2, i32 noundef 6)
          to label %371 unwind label %341

371:                                              ; preds = %369
  %372 = fmul double %370, 1.000000e+01
  %373 = fptosi double %372 to i32
  %374 = icmp eq i32 %373, 13
  br i1 %374, label %375, label %349

375:                                              ; preds = %371
  %376 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 5, i32 noundef 2)
          to label %377 unwind label %341

377:                                              ; preds = %375
  %378 = fmul double %376, 1.000000e+01
  %379 = fptosi double %378 to i32
  %380 = icmp eq i32 %379, 13
  br i1 %380, label %381, label %356

381:                                              ; preds = %377
  %382 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 6, i32 noundef 2)
          to label %383 unwind label %341

383:                                              ; preds = %381
  %384 = fmul double %382, 1.000000e+01
  %385 = fptosi double %384 to i32
  %386 = icmp eq i32 %385, 13
  br i1 %386, label %.preheader174.2, label %363

.preheader174.2:                                  ; preds = %383
  %387 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 3, i32 noundef 5)
          to label %388 unwind label %341

388:                                              ; preds = %.preheader174.2
  %389 = fmul double %387, 1.000000e+01
  %390 = fptosi double %389 to i32
  %391 = icmp eq i32 %390, 13
  br i1 %391, label %392, label %340

392:                                              ; preds = %388
  %393 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 3, i32 noundef 6)
          to label %394 unwind label %341

394:                                              ; preds = %392
  %395 = fmul double %393, 1.000000e+01
  %396 = fptosi double %395 to i32
  %397 = icmp eq i32 %396, 13
  br i1 %397, label %398, label %349

398:                                              ; preds = %394
  %399 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 5, i32 noundef 3)
          to label %400 unwind label %341

400:                                              ; preds = %398
  %401 = fmul double %399, 1.000000e+01
  %402 = fptosi double %401 to i32
  %403 = icmp eq i32 %402, 13
  br i1 %403, label %404, label %356

404:                                              ; preds = %400
  %405 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 6, i32 noundef 3)
          to label %406 unwind label %341

406:                                              ; preds = %404
  %407 = fmul double %405, 1.000000e+01
  %408 = fptosi double %407 to i32
  %409 = icmp eq i32 %408, 13
  br i1 %409, label %.preheader174.4, label %363

.preheader174.4:                                  ; preds = %406
  %410 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 5, i32 noundef 5)
          to label %411 unwind label %341

411:                                              ; preds = %.preheader174.4
  %412 = fmul double %410, 1.000000e+01
  %413 = fptosi double %412 to i32
  %414 = icmp eq i32 %413, 13
  br i1 %414, label %415, label %340

415:                                              ; preds = %411
  %416 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 5, i32 noundef 6)
          to label %417 unwind label %341

417:                                              ; preds = %415
  %418 = fmul double %416, 1.000000e+01
  %419 = fptosi double %418 to i32
  %420 = icmp eq i32 %419, 13
  br i1 %420, label %421, label %349

421:                                              ; preds = %417
  %422 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 5, i32 noundef 5)
          to label %423 unwind label %341

423:                                              ; preds = %421
  %424 = fmul double %422, 1.000000e+01
  %425 = fptosi double %424 to i32
  %426 = icmp eq i32 %425, 13
  br i1 %426, label %427, label %356

427:                                              ; preds = %423
  %428 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 6, i32 noundef 5)
          to label %429 unwind label %341

429:                                              ; preds = %427
  %430 = fmul double %428, 1.000000e+01
  %431 = fptosi double %430 to i32
  %432 = icmp eq i32 %431, 13
  br i1 %432, label %.preheader174.5, label %363

.preheader174.5:                                  ; preds = %429
  %433 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 6, i32 noundef 5)
          to label %434 unwind label %341

434:                                              ; preds = %.preheader174.5
  %435 = fmul double %433, 1.000000e+01
  %436 = fptosi double %435 to i32
  %437 = icmp eq i32 %436, 13
  br i1 %437, label %438, label %340

438:                                              ; preds = %434
  %439 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 6, i32 noundef 6)
          to label %440 unwind label %341

440:                                              ; preds = %438
  %441 = fmul double %439, 1.000000e+01
  %442 = fptosi double %441 to i32
  %443 = icmp eq i32 %442, 13
  br i1 %443, label %444, label %349

444:                                              ; preds = %440
  %445 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 5, i32 noundef 6)
          to label %446 unwind label %341

446:                                              ; preds = %444
  %447 = fmul double %445, 1.000000e+01
  %448 = fptosi double %447 to i32
  %449 = icmp eq i32 %448, 13
  br i1 %449, label %450, label %356

450:                                              ; preds = %446
  %451 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 6, i32 noundef 6)
          to label %452 unwind label %341

452:                                              ; preds = %450
  %453 = fmul double %451, 1.000000e+01
  %454 = fptosi double %453 to i32
  %455 = icmp eq i32 %454, 13
  br i1 %455, label %.preheader174.6, label %363

.preheader174.6:                                  ; preds = %452
  %456 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 7, i32 noundef 5)
          to label %457 unwind label %341

457:                                              ; preds = %.preheader174.6
  %458 = fmul double %456, 1.000000e+01
  %459 = fptosi double %458 to i32
  %460 = icmp eq i32 %459, 13
  br i1 %460, label %461, label %340

461:                                              ; preds = %457
  %462 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 7, i32 noundef 6)
          to label %463 unwind label %341

463:                                              ; preds = %461
  %464 = fmul double %462, 1.000000e+01
  %465 = fptosi double %464 to i32
  %466 = icmp eq i32 %465, 13
  br i1 %466, label %467, label %349

467:                                              ; preds = %463
  %468 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 5, i32 noundef 7)
          to label %469 unwind label %341

469:                                              ; preds = %467
  %470 = fmul double %468, 1.000000e+01
  %471 = fptosi double %470 to i32
  %472 = icmp eq i32 %471, 13
  br i1 %472, label %473, label %356

473:                                              ; preds = %469
  %474 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 6, i32 noundef 7)
          to label %475 unwind label %341

475:                                              ; preds = %473
  %476 = fmul double %474, 1.000000e+01
  %477 = fptosi double %476 to i32
  %478 = icmp eq i32 %477, 13
  br i1 %478, label %.preheader174.7, label %363

.preheader174.7:                                  ; preds = %475
  %479 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 8, i32 noundef 5)
          to label %480 unwind label %341

480:                                              ; preds = %.preheader174.7
  %481 = fmul double %479, 1.000000e+01
  %482 = fptosi double %481 to i32
  %483 = icmp eq i32 %482, 13
  br i1 %483, label %484, label %340

484:                                              ; preds = %480
  %485 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 8, i32 noundef 6)
          to label %486 unwind label %341

486:                                              ; preds = %484
  %487 = fmul double %485, 1.000000e+01
  %488 = fptosi double %487 to i32
  %489 = icmp eq i32 %488, 13
  br i1 %489, label %490, label %349

490:                                              ; preds = %486
  %491 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 5, i32 noundef 8)
          to label %492 unwind label %341

492:                                              ; preds = %490
  %493 = fmul double %491, 1.000000e+01
  %494 = fptosi double %493 to i32
  %495 = icmp eq i32 %494, 13
  br i1 %495, label %496, label %356

496:                                              ; preds = %492
  %497 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 6, i32 noundef 8)
          to label %498 unwind label %341

498:                                              ; preds = %496
  %499 = fmul double %497, 1.000000e+01
  %500 = fptosi double %499 to i32
  %501 = icmp eq i32 %500, 13
  br i1 %501, label %.preheader.preheader, label %363

502:                                              ; preds = %554, %545
  call void @__assert_fail(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.2, i32 noundef 285, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

503:                                              ; preds = %575, %.preheader.7, %566, %.preheader.6, %557, %.preheader.5, %548, %.preheader.4, %539, %.preheader.3, %530, %.preheader.2, %521, %.preheader.1, %511, %.preheader.preheader
  %504 = landingpad { ptr, i32 }
          cleanup
  br label %581

505:                                              ; preds = %559, %550
  call void @__assert_fail(ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.2, i32 noundef 286, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

.preheader.preheader:                             ; preds = %498
  %506 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 4, i32 noundef 1)
          to label %507 unwind label %503

507:                                              ; preds = %.preheader.preheader
  %508 = fptosi double %506 to i32
  %509 = icmp eq i32 %508, 4
  br i1 %509, label %511, label %510

510:                                              ; preds = %572, %563, %536, %527, %518, %507
  call void @__assert_fail(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.2, i32 noundef 288, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

511:                                              ; preds = %507
  %512 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 1, i32 noundef 4)
          to label %513 unwind label %503

513:                                              ; preds = %511
  %514 = fptosi double %512 to i32
  %515 = icmp eq i32 %514, 4
  br i1 %515, label %.preheader.1, label %516

516:                                              ; preds = %577, %568, %541, %532, %523, %513
  call void @__assert_fail(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.2, i32 noundef 289, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #13
  unreachable

.preheader.1:                                     ; preds = %513
  %517 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 4, i32 noundef 2)
          to label %518 unwind label %503

518:                                              ; preds = %.preheader.1
  %519 = fptosi double %517 to i32
  %520 = icmp eq i32 %519, 4
  br i1 %520, label %521, label %510

521:                                              ; preds = %518
  %522 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 2, i32 noundef 4)
          to label %523 unwind label %503

523:                                              ; preds = %521
  %524 = fptosi double %522 to i32
  %525 = icmp eq i32 %524, 4
  br i1 %525, label %.preheader.2, label %516

.preheader.2:                                     ; preds = %523
  %526 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 4, i32 noundef 3)
          to label %527 unwind label %503

527:                                              ; preds = %.preheader.2
  %528 = fptosi double %526 to i32
  %529 = icmp eq i32 %528, 4
  br i1 %529, label %530, label %510

530:                                              ; preds = %527
  %531 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 3, i32 noundef 4)
          to label %532 unwind label %503

532:                                              ; preds = %530
  %533 = fptosi double %531 to i32
  %534 = icmp eq i32 %533, 4
  br i1 %534, label %.preheader.3, label %516

.preheader.3:                                     ; preds = %532
  %535 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 4, i32 noundef 4)
          to label %536 unwind label %503

536:                                              ; preds = %.preheader.3
  %537 = fptosi double %535 to i32
  %538 = icmp eq i32 %537, 4
  br i1 %538, label %539, label %510

539:                                              ; preds = %536
  %540 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 4, i32 noundef 4)
          to label %541 unwind label %503

541:                                              ; preds = %539
  %542 = fptosi double %540 to i32
  %543 = icmp eq i32 %542, 4
  br i1 %543, label %.preheader.4, label %516

.preheader.4:                                     ; preds = %541
  %544 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 5, i32 noundef 4)
          to label %545 unwind label %503

545:                                              ; preds = %.preheader.4
  %546 = fptosi double %544 to i32
  %547 = icmp eq i32 %546, 6
  br i1 %547, label %548, label %502

548:                                              ; preds = %545
  %549 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 4, i32 noundef 5)
          to label %550 unwind label %503

550:                                              ; preds = %548
  %551 = fptosi double %549 to i32
  %552 = icmp eq i32 %551, 6
  br i1 %552, label %.preheader.5, label %505

.preheader.5:                                     ; preds = %550
  %553 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 6, i32 noundef 4)
          to label %554 unwind label %503

554:                                              ; preds = %.preheader.5
  %555 = fptosi double %553 to i32
  %556 = icmp eq i32 %555, 6
  br i1 %556, label %557, label %502

557:                                              ; preds = %554
  %558 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 4, i32 noundef 6)
          to label %559 unwind label %503

559:                                              ; preds = %557
  %560 = fptosi double %558 to i32
  %561 = icmp eq i32 %560, 6
  br i1 %561, label %.preheader.6, label %505

.preheader.6:                                     ; preds = %559
  %562 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 4, i32 noundef 7)
          to label %563 unwind label %503

563:                                              ; preds = %.preheader.6
  %564 = fptosi double %562 to i32
  %565 = icmp eq i32 %564, 4
  br i1 %565, label %566, label %510

566:                                              ; preds = %563
  %567 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 7, i32 noundef 4)
          to label %568 unwind label %503

568:                                              ; preds = %566
  %569 = fptosi double %567 to i32
  %570 = icmp eq i32 %569, 4
  br i1 %570, label %.preheader.7, label %516

.preheader.7:                                     ; preds = %568
  %571 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 4, i32 noundef 8)
          to label %572 unwind label %503

572:                                              ; preds = %.preheader.7
  %573 = fptosi double %571 to i32
  %574 = icmp eq i32 %573, 4
  br i1 %574, label %575, label %510

575:                                              ; preds = %572
  %576 = invoke noundef double @_ZNK6catnip6Matrix8get_elemEii(ptr noundef nonnull align 8 dereferenceable(24) %328, i32 noundef 8, i32 noundef 4)
          to label %577 unwind label %503

577:                                              ; preds = %575
  %578 = fptosi double %576 to i32
  %579 = icmp eq i32 %578, 4
  br i1 %579, label %580, label %516

580:                                              ; preds = %577
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #12
  ret i32 0

581:                                              ; preds = %333, %341, %503, %323, %312, %299, %289, %287, %285, %283, %281, %279
  %.pn155 = phi { ptr, i32 } [ %300, %299 ], [ %313, %312 ], [ %324, %323 ], [ %290, %289 ], [ %288, %287 ], [ %286, %285 ], [ %284, %283 ], [ %282, %281 ], [ %280, %279 ], [ %342, %341 ], [ %504, %503 ], [ %334, %333 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #12
  br label %582

582:                                              ; preds = %581, %237
  %.pn155.pn = phi { ptr, i32 } [ %.pn155, %581 ], [ %238, %237 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #12
  br label %583

583:                                              ; preds = %582, %235
  %.pn155.pn.pn = phi { ptr, i32 } [ %.pn155.pn, %582 ], [ %236, %235 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #12
  br label %584

584:                                              ; preds = %216, %231, %583, %233, %229, %33, %48, %215, %50, %46
  %.pn165.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %34, %33 ], [ %47, %46 ], [ %49, %48 ], [ %.pn165.pn.pn, %215 ], [ %51, %50 ], [ %217, %216 ], [ %230, %229 ], [ %232, %231 ], [ %.pn155.pn.pn, %583 ], [ %234, %233 ]
  resume { ptr, i32 } %.pn165.pn.pn.pn.pn.pn.pn.pn
}

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #1

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #1

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #4

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #6

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

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

declare void @_ZN6catnip6Matrix8matchRowERKS0_i(ptr dead_on_unwind writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) local_unnamed_addr #5

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #7

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #9

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #5

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

declare noundef ptr @_ZN6catnip15unscramble_CoefERKSt6vectorIiSaIiEES4_S4_PNS_6MatrixE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #5

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN6catniplsERSoRNS_6MatrixE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5

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

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

declare noundef ptr @_ZN6catnip12unscramble_SERKSt6vectorIiSaIiEES4_S4_PNS_6MatrixE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #5

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

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

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


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