; LLVM IR from HRI-EU/Rcs :: src/RcsCore (Rcs_mathTests)

; 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.Rcs::CmdLineParser" = type { i8 }
%struct._MatNd = type { ptr, i32, i32, i32, i8 }

@RCS_GLOBAL_RLOG_CB = external global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [74 x i8], align 1
@RcsLogLevel = external global i32, align 4
@stderr = external global ptr, align 8
@.str.5 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [11 x i8], align 1
@__func__.testSimpleMatrixFunctions = external hidden unnamed_addr constant [26 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [27 x i8], align 1
@__const.testSimpleMatrixFunctions.cols = external hidden unnamed_addr constant [4 x i32], align 16
@.str.26 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [31 x i8], align 1
@__const.testSimpleMatrixFunctions.matrixA = external hidden unnamed_addr constant [512 x i8], align 16
@__const.testSimpleMatrixFunctions.matrixB = external hidden unnamed_addr constant [512 x i8], align 16
@.str.30 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [18 x i8], align 1
@__const.testSimpleMatrixFunctions.res = external hidden unnamed_addr constant [512 x i8], align 16
@.str.38 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [24 x i8], align 1
@__const.testSimpleMatrixFunctions.matrix = external hidden unnamed_addr constant [512 x i8], align 16
@.str.47 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [35 x i8], align 1

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

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

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #1

declare void @_ZN3Rcs13CmdLineParserC1EiPPc(ptr noundef nonnull align 1 dereferenceable(1), i32 noundef, ptr noundef) unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local zeroext i1 @testSimpleMatrixFunctions(i32 noundef %0, ptr noundef %1) #3 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca i8, align 1
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca [4 x i32], align 16
  %10 = alloca double, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca ptr, align 8
  %17 = alloca [512 x i8], align 16
  %18 = alloca ptr, align 8
  %19 = alloca [512 x i8], align 16
  %20 = alloca ptr, align 8
  %21 = alloca [512 x i8], align 16
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca double, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca [512 x i8], align 16
  %46 = alloca ptr, align 8
  %47 = alloca [256 x i8], align 16
  %48 = alloca i32, align 4
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca ptr, align 8
  %54 = alloca [256 x i8], align 16
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca %"class.Rcs::CmdLineParser", align 1
  %60 = alloca i8, align 1
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca ptr, align 8
  %64 = alloca ptr, align 8
  %65 = alloca double, align 8
  %66 = alloca i32, align 4
  %67 = alloca double, align 8
  %68 = alloca i32, align 4
  %69 = alloca double, align 8
  store i32 %0, ptr %3, align 4, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #7
  store i8 1, ptr %5, align 1, !tbaa !11
  br label %70

70:                                               ; preds = %2
  %71 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %72 = icmp ne ptr %71, null
  br i1 %72, label %73, label %75

73:                                               ; preds = %70
  %74 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %74(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 197, ptr noundef @.str.24)
  br label %75

75:                                               ; preds = %73, %70
  %76 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %77 = icmp sle i32 2, %76
  br i1 %77, label %78, label %85

78:                                               ; preds = %75
  %79 = load ptr, ptr @stderr, align 8, !tbaa !9
  %80 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %79, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 197) #7
  %81 = load ptr, ptr @stderr, align 8, !tbaa !9
  %82 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %81, ptr noundef @.str.24) #7
  %83 = load ptr, ptr @stderr, align 8, !tbaa !9
  %84 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %83, ptr noundef @.str.6) #7
  br label %85

85:                                               ; preds = %78, %75
  br label %86

86:                                               ; preds = %85
  br label %87

87:                                               ; preds = %86
  br label %88

88:                                               ; preds = %87
  %89 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %90 = icmp ne ptr %89, null
  br i1 %90, label %91, label %93

91:                                               ; preds = %88
  %92 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %92(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 198, ptr noundef @.str.25)
  br label %93

93:                                               ; preds = %91, %88
  %94 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %95 = icmp sle i32 2, %94
  br i1 %95, label %96, label %103

96:                                               ; preds = %93
  %97 = load ptr, ptr @stderr, align 8, !tbaa !9
  %98 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %97, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 198) #7
  %99 = load ptr, ptr @stderr, align 8, !tbaa !9
  %100 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %99, ptr noundef @.str.25) #7
  %101 = load ptr, ptr @stderr, align 8, !tbaa !9
  %102 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %101, ptr noundef @.str.6) #7
  br label %103

103:                                              ; preds = %96, %93
  br label %104

104:                                              ; preds = %103
  br label %105

105:                                              ; preds = %104
  br label %106

106:                                              ; preds = %105
  %107 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %108 = icmp ne ptr %107, null
  br i1 %108, label %109, label %111

109:                                              ; preds = %106
  %110 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %110(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 199, ptr noundef @.str.24)
  br label %111

111:                                              ; preds = %109, %106
  %112 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %113 = icmp sle i32 2, %112
  br i1 %113, label %114, label %121

114:                                              ; preds = %111
  %115 = load ptr, ptr @stderr, align 8, !tbaa !9
  %116 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %115, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 199) #7
  %117 = load ptr, ptr @stderr, align 8, !tbaa !9
  %118 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %117, ptr noundef @.str.24) #7
  %119 = load ptr, ptr @stderr, align 8, !tbaa !9
  %120 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %119, ptr noundef @.str.6) #7
  br label %121

121:                                              ; preds = %114, %111
  br label %122

122:                                              ; preds = %121
  br label %123

123:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #7
  store i32 5, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  %124 = load i32, ptr %6, align 4, !tbaa !5
  %125 = call ptr @MatNd_create(i32 noundef %124, i32 noundef 6)
  store ptr %125, ptr %7, align 8, !tbaa !9
  %126 = load ptr, ptr %7, align 8, !tbaa !9
  call void @MatNd_setRandom(ptr noundef %126, double noundef 0.000000e+00, double noundef 1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  %127 = load i32, ptr %6, align 4, !tbaa !5
  %128 = call ptr @MatNd_create(i32 noundef %127, i32 noundef 6)
  store ptr %128, ptr %8, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %9, ptr align 16 @__const.testSimpleMatrixFunctions.cols, i64 16, i1 false)
  %129 = load ptr, ptr %8, align 8, !tbaa !9
  %130 = load ptr, ptr %7, align 8, !tbaa !9
  %131 = getelementptr inbounds [4 x i32], ptr %9, i64 0, i64 0
  call void @MatNd_copyColumns(ptr noundef %129, ptr noundef %130, ptr noundef %131)
  %132 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %133 = icmp sle i32 2, %132
  br i1 %133, label %134, label %137

134:                                              ; preds = %123
  %135 = load ptr, ptr %7, align 8, !tbaa !9
  call void @MatNd_printCommentDigits(ptr noundef @.str.26, ptr noundef %135, i32 noundef 3)
  %136 = load ptr, ptr %8, align 8, !tbaa !9
  call void @MatNd_printCommentDigits(ptr noundef @.str.27, ptr noundef %136, i32 noundef 3)
  br label %137

137:                                              ; preds = %134, %123
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  store double 0.000000e+00, ptr %10, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  store i32 0, ptr %11, align 4, !tbaa !5
  br label %138

138:                                              ; preds = %170, %137
  %139 = load i32, ptr %11, align 4, !tbaa !5
  %140 = icmp slt i32 %139, 3
  br i1 %140, label %142, label %141

141:                                              ; preds = %138
  store i32 8, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  br label %173

142:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  store i32 0, ptr %13, align 4, !tbaa !5
  br label %143

143:                                              ; preds = %166, %142
  %144 = load i32, ptr %13, align 4, !tbaa !5
  %145 = load i32, ptr %6, align 4, !tbaa !5
  %146 = icmp slt i32 %144, %145
  br i1 %146, label %148, label %147

147:                                              ; preds = %143
  store i32 11, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  br label %169

148:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %149 = load ptr, ptr %7, align 8, !tbaa !9
  %150 = load i32, ptr %13, align 4, !tbaa !5
  %151 = load i32, ptr %11, align 4, !tbaa !5
  %152 = sext i32 %151 to i64
  %153 = getelementptr inbounds [4 x i32], ptr %9, i64 0, i64 %152
  %154 = load i32, ptr %153, align 4, !tbaa !5
  %155 = call double @MatNd_get(ptr noundef %149, i32 noundef %150, i32 noundef %154)
  store double %155, ptr %14, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  %156 = load ptr, ptr %8, align 8, !tbaa !9
  %157 = load i32, ptr %13, align 4, !tbaa !5
  %158 = load i32, ptr %11, align 4, !tbaa !5
  %159 = call double @MatNd_get(ptr noundef %156, i32 noundef %157, i32 noundef %158)
  store double %159, ptr %15, align 8, !tbaa !13
  %160 = load double, ptr %14, align 8, !tbaa !13
  %161 = load double, ptr %15, align 8, !tbaa !13
  %162 = fsub double %160, %161
  %163 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %162, i32 noundef 2)
  %164 = load double, ptr %10, align 8, !tbaa !13
  %165 = fadd double %164, %163
  store double %165, ptr %10, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  br label %166

166:                                              ; preds = %148
  %167 = load i32, ptr %13, align 4, !tbaa !5
  %168 = add nsw i32 %167, 1
  store i32 %168, ptr %13, align 4, !tbaa !5
  br label %143, !llvm.loop !15

169:                                              ; preds = %147
  br label %170

170:                                              ; preds = %169
  %171 = load i32, ptr %11, align 4, !tbaa !5
  %172 = add nsw i32 %171, 1
  store i32 %172, ptr %11, align 4, !tbaa !5
  br label %138, !llvm.loop !17

173:                                              ; preds = %141
  %174 = load double, ptr %10, align 8, !tbaa !13
  %175 = fcmp ogt double %174, 0.000000e+00
  br i1 %175, label %176, label %197

176:                                              ; preds = %173
  store i8 0, ptr %5, align 1, !tbaa !11
  br label %177

177:                                              ; preds = %176
  %178 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %179 = icmp ne ptr %178, null
  br i1 %179, label %180, label %183

180:                                              ; preds = %177
  %181 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %182 = load double, ptr %10, align 8, !tbaa !13
  call void (i32, ptr, ptr, i32, ptr, ...) %181(i32 noundef 2, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 229, ptr noundef @.str.28, double noundef %182)
  br label %183

183:                                              ; preds = %180, %177
  %184 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %185 = icmp sle i32 2, %184
  br i1 %185, label %186, label %194

186:                                              ; preds = %183
  %187 = load ptr, ptr @stderr, align 8, !tbaa !9
  %188 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %187, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 229) #7
  %189 = load ptr, ptr @stderr, align 8, !tbaa !9
  %190 = load double, ptr %10, align 8, !tbaa !13
  %191 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %189, ptr noundef @.str.28, double noundef %190) #7
  %192 = load ptr, ptr @stderr, align 8, !tbaa !9
  %193 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %192, ptr noundef @.str.6) #7
  br label %194

194:                                              ; preds = %186, %183
  br label %195

195:                                              ; preds = %194
  br label %196

196:                                              ; preds = %195
  br label %197

197:                                              ; preds = %196, %173
  %198 = load ptr, ptr %7, align 8, !tbaa !9
  call void @MatNd_destroy(ptr noundef %198)
  %199 = load ptr, ptr %8, align 8, !tbaa !9
  call void @MatNd_destroy(ptr noundef %199)
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  br label %200

200:                                              ; preds = %197
  %201 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %202 = icmp ne ptr %201, null
  br i1 %202, label %203, label %205

203:                                              ; preds = %200
  %204 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %204(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 238, ptr noundef @.str.24)
  br label %205

205:                                              ; preds = %203, %200
  %206 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %207 = icmp sle i32 2, %206
  br i1 %207, label %208, label %215

208:                                              ; preds = %205
  %209 = load ptr, ptr @stderr, align 8, !tbaa !9
  %210 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %209, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 238) #7
  %211 = load ptr, ptr @stderr, align 8, !tbaa !9
  %212 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %211, ptr noundef @.str.24) #7
  %213 = load ptr, ptr @stderr, align 8, !tbaa !9
  %214 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %213, ptr noundef @.str.6) #7
  br label %215

215:                                              ; preds = %208, %205
  br label %216

216:                                              ; preds = %215
  br label %217

217:                                              ; preds = %216
  br label %218

218:                                              ; preds = %217
  %219 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %220 = icmp ne ptr %219, null
  br i1 %220, label %221, label %223

221:                                              ; preds = %218
  %222 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %222(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 239, ptr noundef @.str.29)
  br label %223

223:                                              ; preds = %221, %218
  %224 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %225 = icmp sle i32 2, %224
  br i1 %225, label %226, label %233

226:                                              ; preds = %223
  %227 = load ptr, ptr @stderr, align 8, !tbaa !9
  %228 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %227, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 239) #7
  %229 = load ptr, ptr @stderr, align 8, !tbaa !9
  %230 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %229, ptr noundef @.str.29) #7
  %231 = load ptr, ptr @stderr, align 8, !tbaa !9
  %232 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %231, ptr noundef @.str.6) #7
  br label %233

233:                                              ; preds = %226, %223
  br label %234

234:                                              ; preds = %233
  br label %235

235:                                              ; preds = %234
  br label %236

236:                                              ; preds = %235
  %237 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %238 = icmp ne ptr %237, null
  br i1 %238, label %239, label %241

239:                                              ; preds = %236
  %240 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %240(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 240, ptr noundef @.str.24)
  br label %241

241:                                              ; preds = %239, %236
  %242 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %243 = icmp sle i32 2, %242
  br i1 %243, label %244, label %251

244:                                              ; preds = %241
  %245 = load ptr, ptr @stderr, align 8, !tbaa !9
  %246 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %245, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 240) #7
  %247 = load ptr, ptr @stderr, align 8, !tbaa !9
  %248 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %247, ptr noundef @.str.24) #7
  %249 = load ptr, ptr @stderr, align 8, !tbaa !9
  %250 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %249, ptr noundef @.str.6) #7
  br label %251

251:                                              ; preds = %244, %241
  br label %252

252:                                              ; preds = %251
  br label %253

253:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  %254 = call ptr @MatNd_create(i32 noundef 2, i32 noundef 3)
  store ptr %254, ptr %16, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 512, ptr %17) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %17, ptr align 16 @__const.testSimpleMatrixFunctions.matrixA, i64 512, i1 false)
  %255 = load ptr, ptr %16, align 8, !tbaa !9
  %256 = getelementptr inbounds [512 x i8], ptr %17, i64 0, i64 0
  call void @MatNd_fromString(ptr noundef %255, ptr noundef %256)
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %257 = call ptr @MatNd_create(i32 noundef 3, i32 noundef 1)
  store ptr %257, ptr %18, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 512, ptr %19) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %19, ptr align 16 @__const.testSimpleMatrixFunctions.matrixB, i64 512, i1 false)
  %258 = load ptr, ptr %18, align 8, !tbaa !9
  %259 = getelementptr inbounds [512 x i8], ptr %19, i64 0, i64 0
  call void @MatNd_fromString(ptr noundef %258, ptr noundef %259)
  %260 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %261 = icmp sle i32 2, %260
  br i1 %261, label %262, label %287

262:                                              ; preds = %253
  br label %263

263:                                              ; preds = %262
  %264 = load ptr, ptr @stderr, align 8, !tbaa !9
  %265 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %264, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 251) #7
  %266 = load ptr, ptr @stderr, align 8, !tbaa !9
  %267 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %266, ptr noundef @.str.30) #7
  %268 = load ptr, ptr @stderr, align 8, !tbaa !9
  %269 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %268, ptr noundef @.str.6) #7
  %270 = load ptr, ptr @stderr, align 8, !tbaa !9
  %271 = call i32 @fflush(ptr noundef %270)
  br label %272

272:                                              ; preds = %263
  br label %273

273:                                              ; preds = %272
  %274 = load ptr, ptr %16, align 8, !tbaa !9
  call void @MatNd_print(ptr noundef %274)
  br label %275

275:                                              ; preds = %273
  %276 = load ptr, ptr @stderr, align 8, !tbaa !9
  %277 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %276, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 253) #7
  %278 = load ptr, ptr @stderr, align 8, !tbaa !9
  %279 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %278, ptr noundef @.str.31) #7
  %280 = load ptr, ptr @stderr, align 8, !tbaa !9
  %281 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %280, ptr noundef @.str.6) #7
  %282 = load ptr, ptr @stderr, align 8, !tbaa !9
  %283 = call i32 @fflush(ptr noundef %282)
  br label %284

284:                                              ; preds = %275
  br label %285

285:                                              ; preds = %284
  %286 = load ptr, ptr %18, align 8, !tbaa !9
  call void @MatNd_print(ptr noundef %286)
  br label %287

287:                                              ; preds = %285, %253
  %288 = load ptr, ptr %16, align 8, !tbaa !9
  %289 = load ptr, ptr %18, align 8, !tbaa !9
  call void @MatNd_postMulDiagSelf(ptr noundef %288, ptr noundef %289)
  %290 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %291 = icmp sle i32 2, %290
  br i1 %291, label %292, label %360

292:                                              ; preds = %287
  br label %293

293:                                              ; preds = %292
  %294 = load ptr, ptr @stderr, align 8, !tbaa !9
  %295 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %294, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 261) #7
  %296 = load ptr, ptr @stderr, align 8, !tbaa !9
  %297 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %296, ptr noundef @.str.32) #7
  %298 = load ptr, ptr @stderr, align 8, !tbaa !9
  %299 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %298, ptr noundef @.str.6) #7
  %300 = load ptr, ptr @stderr, align 8, !tbaa !9
  %301 = call i32 @fflush(ptr noundef %300)
  br label %302

302:                                              ; preds = %293
  br label %303

303:                                              ; preds = %302
  %304 = load ptr, ptr %16, align 8, !tbaa !9
  call void @MatNd_print(ptr noundef %304)
  br label %305

305:                                              ; preds = %303
  %306 = load ptr, ptr @stderr, align 8, !tbaa !9
  %307 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %306, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 264) #7
  %308 = load ptr, ptr @stderr, align 8, !tbaa !9
  %309 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %308, ptr noundef @.str.33) #7
  %310 = load ptr, ptr @stderr, align 8, !tbaa !9
  %311 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %310, ptr noundef @.str.6) #7
  %312 = load ptr, ptr @stderr, align 8, !tbaa !9
  %313 = call i32 @fflush(ptr noundef %312)
  br label %314

314:                                              ; preds = %305
  br label %315

315:                                              ; preds = %314
  br label %316

316:                                              ; preds = %315
  %317 = load ptr, ptr @stderr, align 8, !tbaa !9
  %318 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %317, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 265) #7
  %319 = load ptr, ptr @stderr, align 8, !tbaa !9
  %320 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %319, ptr noundef @.str.34) #7
  %321 = load ptr, ptr @stderr, align 8, !tbaa !9
  %322 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %321, ptr noundef @.str.6) #7
  %323 = load ptr, ptr @stderr, align 8, !tbaa !9
  %324 = call i32 @fflush(ptr noundef %323)
  br label %325

325:                                              ; preds = %316
  br label %326

326:                                              ; preds = %325
  br label %327

327:                                              ; preds = %326
  %328 = load ptr, ptr @stderr, align 8, !tbaa !9
  %329 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %328, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 266) #7
  %330 = load ptr, ptr @stderr, align 8, !tbaa !9
  %331 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %330, ptr noundef @.str.35) #7
  %332 = load ptr, ptr @stderr, align 8, !tbaa !9
  %333 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %332, ptr noundef @.str.6) #7
  %334 = load ptr, ptr @stderr, align 8, !tbaa !9
  %335 = call i32 @fflush(ptr noundef %334)
  br label %336

336:                                              ; preds = %327
  br label %337

337:                                              ; preds = %336
  br label %338

338:                                              ; preds = %337
  %339 = load ptr, ptr @stderr, align 8, !tbaa !9
  %340 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %339, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 267) #7
  %341 = load ptr, ptr @stderr, align 8, !tbaa !9
  %342 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %341, ptr noundef @.str.36) #7
  %343 = load ptr, ptr @stderr, align 8, !tbaa !9
  %344 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %343, ptr noundef @.str.6) #7
  %345 = load ptr, ptr @stderr, align 8, !tbaa !9
  %346 = call i32 @fflush(ptr noundef %345)
  br label %347

347:                                              ; preds = %338
  br label %348

348:                                              ; preds = %347
  br label %349

349:                                              ; preds = %348
  %350 = load ptr, ptr @stderr, align 8, !tbaa !9
  %351 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %350, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 268) #7
  %352 = load ptr, ptr @stderr, align 8, !tbaa !9
  %353 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %352, ptr noundef @.str.37) #7
  %354 = load ptr, ptr @stderr, align 8, !tbaa !9
  %355 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %354, ptr noundef @.str.6) #7
  %356 = load ptr, ptr @stderr, align 8, !tbaa !9
  %357 = call i32 @fflush(ptr noundef %356)
  br label %358

358:                                              ; preds = %349
  br label %359

359:                                              ; preds = %358
  br label %360

360:                                              ; preds = %359, %287
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %361 = call ptr @MatNd_create(i32 noundef 2, i32 noundef 3)
  store ptr %361, ptr %20, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 512, ptr %21) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %21, ptr align 16 @__const.testSimpleMatrixFunctions.res, i64 512, i1 false)
  %362 = load ptr, ptr %20, align 8, !tbaa !9
  %363 = getelementptr inbounds [512 x i8], ptr %21, i64 0, i64 0
  call void @MatNd_fromString(ptr noundef %362, ptr noundef %363)
  %364 = load ptr, ptr %20, align 8, !tbaa !9
  %365 = load ptr, ptr %16, align 8, !tbaa !9
  %366 = call zeroext i1 @MatNd_isEqual(ptr noundef %364, ptr noundef %365, double noundef 0.000000e+00)
  %367 = zext i1 %366 to i32
  %368 = icmp eq i32 %367, 0
  br i1 %368, label %369, label %388

369:                                              ; preds = %360
  store i8 0, ptr %5, align 1, !tbaa !11
  br label %370

370:                                              ; preds = %369
  %371 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %372 = icmp ne ptr %371, null
  br i1 %372, label %373, label %375

373:                                              ; preds = %370
  %374 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %374(i32 noundef 2, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 278, ptr noundef @.str.38)
  br label %375

375:                                              ; preds = %373, %370
  %376 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %377 = icmp sle i32 2, %376
  br i1 %377, label %378, label %385

378:                                              ; preds = %375
  %379 = load ptr, ptr @stderr, align 8, !tbaa !9
  %380 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %379, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 278) #7
  %381 = load ptr, ptr @stderr, align 8, !tbaa !9
  %382 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %381, ptr noundef @.str.38) #7
  %383 = load ptr, ptr @stderr, align 8, !tbaa !9
  %384 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %383, ptr noundef @.str.6) #7
  br label %385

385:                                              ; preds = %378, %375
  br label %386

386:                                              ; preds = %385
  br label %387

387:                                              ; preds = %386
  br label %388

388:                                              ; preds = %387, %360
  %389 = load ptr, ptr %16, align 8, !tbaa !9
  call void @MatNd_destroy(ptr noundef %389)
  %390 = load ptr, ptr %18, align 8, !tbaa !9
  call void @MatNd_destroy(ptr noundef %390)
  %391 = load ptr, ptr %20, align 8, !tbaa !9
  call void @MatNd_destroy(ptr noundef %391)
  call void @llvm.lifetime.end.p0(i64 512, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 512, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 512, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  br label %392

392:                                              ; preds = %388
  %393 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %394 = icmp ne ptr %393, null
  br i1 %394, label %395, label %397

395:                                              ; preds = %392
  %396 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %396(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 288, ptr noundef @.str.24)
  br label %397

397:                                              ; preds = %395, %392
  %398 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %399 = icmp sle i32 2, %398
  br i1 %399, label %400, label %407

400:                                              ; preds = %397
  %401 = load ptr, ptr @stderr, align 8, !tbaa !9
  %402 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %401, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 288) #7
  %403 = load ptr, ptr @stderr, align 8, !tbaa !9
  %404 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %403, ptr noundef @.str.24) #7
  %405 = load ptr, ptr @stderr, align 8, !tbaa !9
  %406 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %405, ptr noundef @.str.6) #7
  br label %407

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

408:                                              ; preds = %407
  br label %409

409:                                              ; preds = %408
  br label %410

410:                                              ; preds = %409
  %411 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %412 = icmp ne ptr %411, null
  br i1 %412, label %413, label %415

413:                                              ; preds = %410
  %414 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %414(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 289, ptr noundef @.str.39)
  br label %415

415:                                              ; preds = %413, %410
  %416 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %417 = icmp sle i32 2, %416
  br i1 %417, label %418, label %425

418:                                              ; preds = %415
  %419 = load ptr, ptr @stderr, align 8, !tbaa !9
  %420 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %419, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 289) #7
  %421 = load ptr, ptr @stderr, align 8, !tbaa !9
  %422 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %421, ptr noundef @.str.39) #7
  %423 = load ptr, ptr @stderr, align 8, !tbaa !9
  %424 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %423, ptr noundef @.str.6) #7
  br label %425

425:                                              ; preds = %418, %415
  br label %426

426:                                              ; preds = %425
  br label %427

427:                                              ; preds = %426
  br label %428

428:                                              ; preds = %427
  %429 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %430 = icmp ne ptr %429, null
  br i1 %430, label %431, label %433

431:                                              ; preds = %428
  %432 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %432(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 290, ptr noundef @.str.24)
  br label %433

433:                                              ; preds = %431, %428
  %434 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %435 = icmp sle i32 2, %434
  br i1 %435, label %436, label %443

436:                                              ; preds = %433
  %437 = load ptr, ptr @stderr, align 8, !tbaa !9
  %438 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %437, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 290) #7
  %439 = load ptr, ptr @stderr, align 8, !tbaa !9
  %440 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %439, ptr noundef @.str.24) #7
  %441 = load ptr, ptr @stderr, align 8, !tbaa !9
  %442 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %441, ptr noundef @.str.6) #7
  br label %443

443:                                              ; preds = %436, %433
  br label %444

444:                                              ; preds = %443
  br label %445

445:                                              ; preds = %444
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  store i32 10, ptr %22, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %446 = load i32, ptr %22, align 4, !tbaa !5
  %447 = call ptr @MatNd_create(i32 noundef %446, i32 noundef 5)
  store ptr %447, ptr %23, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  store i32 0, ptr %24, align 4, !tbaa !5
  br label %448

448:                                              ; preds = %473, %445
  %449 = load i32, ptr %24, align 4, !tbaa !5
  %450 = load ptr, ptr %23, align 8, !tbaa !9
  %451 = getelementptr inbounds %struct._MatNd, ptr %450, i32 0, i32 2
  %452 = load i32, ptr %451, align 4, !tbaa !18
  %453 = icmp ult i32 %449, %452
  br i1 %453, label %455, label %454

454:                                              ; preds = %448
  store i32 46, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  br label %476

455:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  store i32 0, ptr %25, align 4, !tbaa !5
  br label %456

456:                                              ; preds = %469, %455
  %457 = load i32, ptr %25, align 4, !tbaa !5
  %458 = load ptr, ptr %23, align 8, !tbaa !9
  %459 = getelementptr inbounds %struct._MatNd, ptr %458, i32 0, i32 1
  %460 = load i32, ptr %459, align 8, !tbaa !20
  %461 = icmp ult i32 %457, %460
  br i1 %461, label %463, label %462

462:                                              ; preds = %456
  store i32 49, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  br label %472

463:                                              ; preds = %456
  %464 = load ptr, ptr %23, align 8, !tbaa !9
  %465 = load i32, ptr %25, align 4, !tbaa !5
  %466 = load i32, ptr %24, align 4, !tbaa !5
  %467 = load i32, ptr %24, align 4, !tbaa !5
  %468 = uitofp i32 %467 to double
  call void @MatNd_set(ptr noundef %464, i32 noundef %465, i32 noundef %466, double noundef %468)
  br label %469

469:                                              ; preds = %463
  %470 = load i32, ptr %25, align 4, !tbaa !5
  %471 = add i32 %470, 1
  store i32 %471, ptr %25, align 4, !tbaa !5
  br label %456, !llvm.loop !21

472:                                              ; preds = %462
  br label %473

473:                                              ; preds = %472
  %474 = load i32, ptr %24, align 4, !tbaa !5
  %475 = add i32 %474, 1
  store i32 %475, ptr %24, align 4, !tbaa !5
  br label %448, !llvm.loop !22

476:                                              ; preds = %454
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %477 = load ptr, ptr %23, align 8, !tbaa !9
  %478 = call ptr @MatNd_clone(ptr noundef %477)
  store ptr %478, ptr %26, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %479 = load i32, ptr %22, align 4, !tbaa !5
  %480 = call ptr @MatNd_create(i32 noundef %479, i32 noundef 5)
  store ptr %480, ptr %27, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  store i32 0, ptr %28, align 4, !tbaa !5
  br label %481

481:                                              ; preds = %507, %476
  %482 = load i32, ptr %28, align 4, !tbaa !5
  %483 = load ptr, ptr %27, align 8, !tbaa !9
  %484 = getelementptr inbounds %struct._MatNd, ptr %483, i32 0, i32 2
  %485 = load i32, ptr %484, align 4, !tbaa !18
  %486 = icmp ult i32 %482, %485
  br i1 %486, label %488, label %487

487:                                              ; preds = %481
  store i32 52, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %510

488:                                              ; preds = %481
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  store i32 0, ptr %29, align 4, !tbaa !5
  br label %489

489:                                              ; preds = %503, %488
  %490 = load i32, ptr %29, align 4, !tbaa !5
  %491 = load ptr, ptr %27, align 8, !tbaa !9
  %492 = getelementptr inbounds %struct._MatNd, ptr %491, i32 0, i32 1
  %493 = load i32, ptr %492, align 8, !tbaa !20
  %494 = icmp ult i32 %490, %493
  br i1 %494, label %496, label %495

495:                                              ; preds = %489
  store i32 55, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  br label %506

496:                                              ; preds = %489
  %497 = load ptr, ptr %27, align 8, !tbaa !9
  %498 = load i32, ptr %29, align 4, !tbaa !5
  %499 = load i32, ptr %28, align 4, !tbaa !5
  %500 = load i32, ptr %28, align 4, !tbaa !5
  %501 = add i32 %500, 10
  %502 = uitofp i32 %501 to double
  call void @MatNd_set(ptr noundef %497, i32 noundef %498, i32 noundef %499, double noundef %502)
  br label %503

503:                                              ; preds = %496
  %504 = load i32, ptr %29, align 4, !tbaa !5
  %505 = add i32 %504, 1
  store i32 %505, ptr %29, align 4, !tbaa !5
  br label %489, !llvm.loop !23

506:                                              ; preds = %495
  br label %507

507:                                              ; preds = %506
  %508 = load i32, ptr %28, align 4, !tbaa !5
  %509 = add i32 %508, 1
  store i32 %509, ptr %28, align 4, !tbaa !5
  br label %481, !llvm.loop !24

510:                                              ; preds = %487
  %511 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %512 = icmp sle i32 2, %511
  br i1 %512, label %513, label %527

513:                                              ; preds = %510
  %514 = load ptr, ptr %26, align 8, !tbaa !9
  call void @MatNd_printCommentDigits(ptr noundef @.str.40, ptr noundef %514, i32 noundef 3)
  %515 = load ptr, ptr %27, align 8, !tbaa !9
  call void @MatNd_printCommentDigits(ptr noundef @.str.41, ptr noundef %515, i32 noundef 3)
  br label %516

516:                                              ; preds = %513
  %517 = load ptr, ptr @stderr, align 8, !tbaa !9
  %518 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %517, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 312) #7
  %519 = load ptr, ptr @stderr, align 8, !tbaa !9
  %520 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %519, ptr noundef @.str.42) #7
  %521 = load ptr, ptr @stderr, align 8, !tbaa !9
  %522 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %521, ptr noundef @.str.6) #7
  %523 = load ptr, ptr @stderr, align 8, !tbaa !9
  %524 = call i32 @fflush(ptr noundef %523)
  br label %525

525:                                              ; preds = %516
  br label %526

526:                                              ; preds = %525
  br label %527

527:                                              ; preds = %526, %510
  %528 = load ptr, ptr %23, align 8, !tbaa !9
  %529 = load ptr, ptr %27, align 8, !tbaa !9
  call void @MatNd_insertColumns(ptr noundef %528, i32 noundef 1, ptr noundef %529, i32 noundef 1, i32 noundef 3)
  %530 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %531 = icmp sle i32 2, %530
  br i1 %531, label %532, label %534

532:                                              ; preds = %527
  %533 = load ptr, ptr %23, align 8, !tbaa !9
  call void @MatNd_printCommentDigits(ptr noundef @.str.40, ptr noundef %533, i32 noundef 3)
  br label %534

534:                                              ; preds = %532, %527
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  store double 0.000000e+00, ptr %30, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  store i32 0, ptr %31, align 4, !tbaa !5
  br label %535

535:                                              ; preds = %564, %534
  %536 = load i32, ptr %31, align 4, !tbaa !5
  %537 = icmp slt i32 %536, 2
  br i1 %537, label %539, label %538

538:                                              ; preds = %535
  store i32 60, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  br label %567

539:                                              ; preds = %535
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  store i32 0, ptr %32, align 4, !tbaa !5
  br label %540

540:                                              ; preds = %560, %539
  %541 = load i32, ptr %32, align 4, !tbaa !5
  %542 = load i32, ptr %22, align 4, !tbaa !5
  %543 = icmp slt i32 %541, %542
  br i1 %543, label %545, label %544

544:                                              ; preds = %540
  store i32 63, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  br label %563

545:                                              ; preds = %540
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %546 = load ptr, ptr %26, align 8, !tbaa !9
  %547 = load i32, ptr %32, align 4, !tbaa !5
  %548 = load i32, ptr %31, align 4, !tbaa !5
  %549 = call double @MatNd_get(ptr noundef %546, i32 noundef %547, i32 noundef %548)
  store double %549, ptr %33, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %550 = load ptr, ptr %23, align 8, !tbaa !9
  %551 = load i32, ptr %32, align 4, !tbaa !5
  %552 = load i32, ptr %31, align 4, !tbaa !5
  %553 = call double @MatNd_get(ptr noundef %550, i32 noundef %551, i32 noundef %552)
  store double %553, ptr %34, align 8, !tbaa !13
  %554 = load double, ptr %33, align 8, !tbaa !13
  %555 = load double, ptr %34, align 8, !tbaa !13
  %556 = fsub double %554, %555
  %557 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %556, i32 noundef 2)
  %558 = load double, ptr %30, align 8, !tbaa !13
  %559 = fadd double %558, %557
  store double %559, ptr %30, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  br label %560

560:                                              ; preds = %545
  %561 = load i32, ptr %32, align 4, !tbaa !5
  %562 = add nsw i32 %561, 1
  store i32 %562, ptr %32, align 4, !tbaa !5
  br label %540, !llvm.loop !25

563:                                              ; preds = %544
  br label %564

564:                                              ; preds = %563
  %565 = load i32, ptr %31, align 4, !tbaa !5
  %566 = add nsw i32 %565, 1
  store i32 %566, ptr %31, align 4, !tbaa !5
  br label %535, !llvm.loop !26

567:                                              ; preds = %538
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  store i32 2, ptr %35, align 4, !tbaa !5
  br label %568

568:                                              ; preds = %598, %567
  %569 = load i32, ptr %35, align 4, !tbaa !5
  %570 = icmp slt i32 %569, 5
  br i1 %570, label %572, label %571

571:                                              ; preds = %568
  store i32 66, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  br label %601

572:                                              ; preds = %568
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  store i32 0, ptr %36, align 4, !tbaa !5
  br label %573

573:                                              ; preds = %594, %572
  %574 = load i32, ptr %36, align 4, !tbaa !5
  %575 = load i32, ptr %22, align 4, !tbaa !5
  %576 = icmp slt i32 %574, %575
  br i1 %576, label %578, label %577

577:                                              ; preds = %573
  store i32 69, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  br label %597

578:                                              ; preds = %573
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %579 = load ptr, ptr %27, align 8, !tbaa !9
  %580 = load i32, ptr %36, align 4, !tbaa !5
  %581 = load i32, ptr %35, align 4, !tbaa !5
  %582 = sub nsw i32 %581, 1
  %583 = call double @MatNd_get(ptr noundef %579, i32 noundef %580, i32 noundef %582)
  store double %583, ptr %37, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %584 = load ptr, ptr %23, align 8, !tbaa !9
  %585 = load i32, ptr %36, align 4, !tbaa !5
  %586 = load i32, ptr %35, align 4, !tbaa !5
  %587 = call double @MatNd_get(ptr noundef %584, i32 noundef %585, i32 noundef %586)
  store double %587, ptr %38, align 8, !tbaa !13
  %588 = load double, ptr %37, align 8, !tbaa !13
  %589 = load double, ptr %38, align 8, !tbaa !13
  %590 = fsub double %588, %589
  %591 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %590, i32 noundef 2)
  %592 = load double, ptr %30, align 8, !tbaa !13
  %593 = fadd double %592, %591
  store double %593, ptr %30, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  br label %594

594:                                              ; preds = %578
  %595 = load i32, ptr %36, align 4, !tbaa !5
  %596 = add nsw i32 %595, 1
  store i32 %596, ptr %36, align 4, !tbaa !5
  br label %573, !llvm.loop !27

597:                                              ; preds = %577
  br label %598

598:                                              ; preds = %597
  %599 = load i32, ptr %35, align 4, !tbaa !5
  %600 = add nsw i32 %599, 1
  store i32 %600, ptr %35, align 4, !tbaa !5
  br label %568, !llvm.loop !28

601:                                              ; preds = %571
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #7
  store i32 5, ptr %39, align 4, !tbaa !5
  br label %602

602:                                              ; preds = %632, %601
  %603 = load i32, ptr %39, align 4, !tbaa !5
  %604 = icmp slt i32 %603, 8
  br i1 %604, label %606, label %605

605:                                              ; preds = %602
  store i32 72, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  br label %635

606:                                              ; preds = %602
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  store i32 0, ptr %40, align 4, !tbaa !5
  br label %607

607:                                              ; preds = %628, %606
  %608 = load i32, ptr %40, align 4, !tbaa !5
  %609 = load i32, ptr %22, align 4, !tbaa !5
  %610 = icmp slt i32 %608, %609
  br i1 %610, label %612, label %611

611:                                              ; preds = %607
  store i32 75, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  br label %631

612:                                              ; preds = %607
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  %613 = load ptr, ptr %26, align 8, !tbaa !9
  %614 = load i32, ptr %40, align 4, !tbaa !5
  %615 = load i32, ptr %39, align 4, !tbaa !5
  %616 = sub nsw i32 %615, 3
  %617 = call double @MatNd_get(ptr noundef %613, i32 noundef %614, i32 noundef %616)
  store double %617, ptr %41, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %618 = load ptr, ptr %23, align 8, !tbaa !9
  %619 = load i32, ptr %40, align 4, !tbaa !5
  %620 = load i32, ptr %39, align 4, !tbaa !5
  %621 = call double @MatNd_get(ptr noundef %618, i32 noundef %619, i32 noundef %620)
  store double %621, ptr %42, align 8, !tbaa !13
  %622 = load double, ptr %41, align 8, !tbaa !13
  %623 = load double, ptr %42, align 8, !tbaa !13
  %624 = fsub double %622, %623
  %625 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %624, i32 noundef 2)
  %626 = load double, ptr %30, align 8, !tbaa !13
  %627 = fadd double %626, %625
  store double %627, ptr %30, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  br label %628

628:                                              ; preds = %612
  %629 = load i32, ptr %40, align 4, !tbaa !5
  %630 = add nsw i32 %629, 1
  store i32 %630, ptr %40, align 4, !tbaa !5
  br label %607, !llvm.loop !29

631:                                              ; preds = %611
  br label %632

632:                                              ; preds = %631
  %633 = load i32, ptr %39, align 4, !tbaa !5
  %634 = add nsw i32 %633, 1
  store i32 %634, ptr %39, align 4, !tbaa !5
  br label %602, !llvm.loop !30

635:                                              ; preds = %605
  %636 = load double, ptr %30, align 8, !tbaa !13
  %637 = fcmp ogt double %636, 0.000000e+00
  br i1 %637, label %638, label %659

638:                                              ; preds = %635
  store i8 0, ptr %5, align 1, !tbaa !11
  br label %639

639:                                              ; preds = %638
  %640 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %641 = icmp ne ptr %640, null
  br i1 %641, label %642, label %645

642:                                              ; preds = %639
  %643 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %644 = load double, ptr %30, align 8, !tbaa !13
  call void (i32, ptr, ptr, i32, ptr, ...) %643(i32 noundef 2, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 360, ptr noundef @.str.43, double noundef %644)
  br label %645

645:                                              ; preds = %642, %639
  %646 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %647 = icmp sle i32 2, %646
  br i1 %647, label %648, label %656

648:                                              ; preds = %645
  %649 = load ptr, ptr @stderr, align 8, !tbaa !9
  %650 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %649, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 360) #7
  %651 = load ptr, ptr @stderr, align 8, !tbaa !9
  %652 = load double, ptr %30, align 8, !tbaa !13
  %653 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %651, ptr noundef @.str.43, double noundef %652) #7
  %654 = load ptr, ptr @stderr, align 8, !tbaa !9
  %655 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %654, ptr noundef @.str.6) #7
  br label %656

656:                                              ; preds = %648, %645
  br label %657

657:                                              ; preds = %656
  br label %658

658:                                              ; preds = %657
  br label %659

659:                                              ; preds = %658, %635
  %660 = load ptr, ptr %23, align 8, !tbaa !9
  call void @MatNd_destroy(ptr noundef %660)
  %661 = load ptr, ptr %26, align 8, !tbaa !9
  call void @MatNd_destroy(ptr noundef %661)
  %662 = load ptr, ptr %27, align 8, !tbaa !9
  call void @MatNd_destroy(ptr noundef %662)
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %663

663:                                              ; preds = %659
  %664 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %665 = icmp ne ptr %664, null
  br i1 %665, label %666, label %668

666:                                              ; preds = %663
  %667 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %667(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 374, ptr noundef @.str.24)
  br label %668

668:                                              ; preds = %666, %663
  %669 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %670 = icmp sle i32 2, %669
  br i1 %670, label %671, label %678

671:                                              ; preds = %668
  %672 = load ptr, ptr @stderr, align 8, !tbaa !9
  %673 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %672, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 374) #7
  %674 = load ptr, ptr @stderr, align 8, !tbaa !9
  %675 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %674, ptr noundef @.str.24) #7
  %676 = load ptr, ptr @stderr, align 8, !tbaa !9
  %677 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %676, ptr noundef @.str.6) #7
  br label %678

678:                                              ; preds = %671, %668
  br label %679

679:                                              ; preds = %678
  br label %680

680:                                              ; preds = %679
  br label %681

681:                                              ; preds = %680
  %682 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %683 = icmp ne ptr %682, null
  br i1 %683, label %684, label %686

684:                                              ; preds = %681
  %685 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %685(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 375, ptr noundef @.str.44)
  br label %686

686:                                              ; preds = %684, %681
  %687 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %688 = icmp sle i32 2, %687
  br i1 %688, label %689, label %696

689:                                              ; preds = %686
  %690 = load ptr, ptr @stderr, align 8, !tbaa !9
  %691 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %690, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 375) #7
  %692 = load ptr, ptr @stderr, align 8, !tbaa !9
  %693 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %692, ptr noundef @.str.44) #7
  %694 = load ptr, ptr @stderr, align 8, !tbaa !9
  %695 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %694, ptr noundef @.str.6) #7
  br label %696

696:                                              ; preds = %689, %686
  br label %697

697:                                              ; preds = %696
  br label %698

698:                                              ; preds = %697
  br label %699

699:                                              ; preds = %698
  %700 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %701 = icmp ne ptr %700, null
  br i1 %701, label %702, label %704

702:                                              ; preds = %699
  %703 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %703(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 376, ptr noundef @.str.45)
  br label %704

704:                                              ; preds = %702, %699
  %705 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %706 = icmp sle i32 2, %705
  br i1 %706, label %707, label %714

707:                                              ; preds = %704
  %708 = load ptr, ptr @stderr, align 8, !tbaa !9
  %709 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %708, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 376) #7
  %710 = load ptr, ptr @stderr, align 8, !tbaa !9
  %711 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %710, ptr noundef @.str.45) #7
  %712 = load ptr, ptr @stderr, align 8, !tbaa !9
  %713 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %712, ptr noundef @.str.6) #7
  br label %714

714:                                              ; preds = %707, %704
  br label %715

715:                                              ; preds = %714
  br label %716

716:                                              ; preds = %715
  br label %717

717:                                              ; preds = %716
  %718 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %719 = icmp ne ptr %718, null
  br i1 %719, label %720, label %722

720:                                              ; preds = %717
  %721 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %721(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 377, ptr noundef @.str.46)
  br label %722

722:                                              ; preds = %720, %717
  %723 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %724 = icmp sle i32 2, %723
  br i1 %724, label %725, label %732

725:                                              ; preds = %722
  %726 = load ptr, ptr @stderr, align 8, !tbaa !9
  %727 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %726, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 377) #7
  %728 = load ptr, ptr @stderr, align 8, !tbaa !9
  %729 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %728, ptr noundef @.str.46) #7
  %730 = load ptr, ptr @stderr, align 8, !tbaa !9
  %731 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %730, ptr noundef @.str.6) #7
  br label %732

732:                                              ; preds = %725, %722
  br label %733

733:                                              ; preds = %732
  br label %734

734:                                              ; preds = %733
  br label %735

735:                                              ; preds = %734
  %736 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %737 = icmp ne ptr %736, null
  br i1 %737, label %738, label %740

738:                                              ; preds = %735
  %739 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %739(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 378, ptr noundef @.str.24)
  br label %740

740:                                              ; preds = %738, %735
  %741 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %742 = icmp sle i32 2, %741
  br i1 %742, label %743, label %750

743:                                              ; preds = %740
  %744 = load ptr, ptr @stderr, align 8, !tbaa !9
  %745 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %744, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 378) #7
  %746 = load ptr, ptr @stderr, align 8, !tbaa !9
  %747 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %746, ptr noundef @.str.24) #7
  %748 = load ptr, ptr @stderr, align 8, !tbaa !9
  %749 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %748, ptr noundef @.str.6) #7
  br label %750

750:                                              ; preds = %743, %740
  br label %751

751:                                              ; preds = %750
  br label %752

752:                                              ; preds = %751
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  %753 = call ptr @MatNd_create(i32 noundef 10, i32 noundef 10)
  store ptr %753, ptr %43, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %754 = call ptr @MatNd_create(i32 noundef 10, i32 noundef 10)
  store ptr %754, ptr %44, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 512, ptr %45) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %45, ptr align 16 @__const.testSimpleMatrixFunctions.matrix, i64 512, i1 false)
  %755 = load ptr, ptr %43, align 8, !tbaa !9
  %756 = getelementptr inbounds [512 x i8], ptr %45, i64 0, i64 0
  call void @MatNd_fromString(ptr noundef %755, ptr noundef %756)
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  store ptr @.str.47, ptr %46, align 8, !tbaa !9
  %757 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %758 = icmp sle i32 2, %757
  br i1 %758, label %759, label %772

759:                                              ; preds = %752
  br label %760

760:                                              ; preds = %759
  %761 = load ptr, ptr @stderr, align 8, !tbaa !9
  %762 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %761, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 392) #7
  %763 = load ptr, ptr @stderr, align 8, !tbaa !9
  %764 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %763, ptr noundef @.str.30) #7
  %765 = load ptr, ptr @stderr, align 8, !tbaa !9
  %766 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %765, ptr noundef @.str.6) #7
  %767 = load ptr, ptr @stderr, align 8, !tbaa !9
  %768 = call i32 @fflush(ptr noundef %767)
  br label %769

769:                                              ; preds = %760
  br label %770

770:                                              ; preds = %769
  %771 = load ptr, ptr %43, align 8, !tbaa !9
  call void @MatNd_print(ptr noundef %771)
  br label %772

772:                                              ; preds = %770, %752
  br label %773

773:                                              ; preds = %772
  %774 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %775 = icmp ne ptr %774, null
  br i1 %775, label %776, label %779

776:                                              ; preds = %773
  %777 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %778 = load ptr, ptr %46, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %777(i32 noundef 2, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 396, ptr noundef @.str.48, ptr noundef %778)
  br label %779

779:                                              ; preds = %776, %773
  %780 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %781 = icmp sle i32 2, %780
  br i1 %781, label %782, label %790

782:                                              ; preds = %779
  %783 = load ptr, ptr @stderr, align 8, !tbaa !9
  %784 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %783, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 396) #7
  %785 = load ptr, ptr @stderr, align 8, !tbaa !9
  %786 = load ptr, ptr %46, align 8, !tbaa !9
  %787 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %785, ptr noundef @.str.48, ptr noundef %786) #7
  %788 = load ptr, ptr @stderr, align 8, !tbaa !9
  %789 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %788, ptr noundef @.str.6) #7
  br label %790

790:                                              ; preds = %782, %779
  br label %791

791:                                              ; preds = %790
  br label %792

792:                                              ; preds = %791
  %793 = load ptr, ptr %43, align 8, !tbaa !9
  %794 = load ptr, ptr %46, align 8, !tbaa !9
  %795 = call zeroext i1 @MatNd_toFile(ptr noundef %793, ptr noundef %794)
  br label %796

796:                                              ; preds = %792
  %797 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %798 = icmp ne ptr %797, null
  br i1 %798, label %799, label %802

799:                                              ; preds = %796
  %800 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %801 = load ptr, ptr %46, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %800(i32 noundef 2, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 399, ptr noundef @.str.49, ptr noundef %801)
  br label %802

802:                                              ; preds = %799, %796
  %803 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %804 = icmp sle i32 2, %803
  br i1 %804, label %805, label %813

805:                                              ; preds = %802
  %806 = load ptr, ptr @stderr, align 8, !tbaa !9
  %807 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %806, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 399) #7
  %808 = load ptr, ptr @stderr, align 8, !tbaa !9
  %809 = load ptr, ptr %46, align 8, !tbaa !9
  %810 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %808, ptr noundef @.str.49, ptr noundef %809) #7
  %811 = load ptr, ptr @stderr, align 8, !tbaa !9
  %812 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %811, ptr noundef @.str.6) #7
  br label %813

813:                                              ; preds = %805, %802
  br label %814

814:                                              ; preds = %813
  br label %815

815:                                              ; preds = %814
  %816 = load ptr, ptr %44, align 8, !tbaa !9
  %817 = load ptr, ptr %46, align 8, !tbaa !9
  %818 = call zeroext i1 @MatNd_fromFile(ptr noundef %816, ptr noundef %817)
  %819 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %820 = icmp sle i32 2, %819
  br i1 %820, label %821, label %834

821:                                              ; preds = %815
  br label %822

822:                                              ; preds = %821
  %823 = load ptr, ptr @stderr, align 8, !tbaa !9
  %824 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %823, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 404) #7
  %825 = load ptr, ptr @stderr, align 8, !tbaa !9
  %826 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %825, ptr noundef @.str.31) #7
  %827 = load ptr, ptr @stderr, align 8, !tbaa !9
  %828 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %827, ptr noundef @.str.6) #7
  %829 = load ptr, ptr @stderr, align 8, !tbaa !9
  %830 = call i32 @fflush(ptr noundef %829)
  br label %831

831:                                              ; preds = %822
  br label %832

832:                                              ; preds = %831
  %833 = load ptr, ptr %44, align 8, !tbaa !9
  call void @MatNd_print(ptr noundef %833)
  br label %834

834:                                              ; preds = %832, %815
  %835 = load ptr, ptr %43, align 8, !tbaa !9
  %836 = load ptr, ptr %44, align 8, !tbaa !9
  %837 = call zeroext i1 @MatNd_isEqual(ptr noundef %835, ptr noundef %836, double noundef 0.000000e+00)
  %838 = zext i1 %837 to i32
  %839 = icmp eq i32 %838, 0
  br i1 %839, label %840, label %858

840:                                              ; preds = %834
  %841 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %842 = icmp sle i32 2, %841
  br i1 %842, label %843, label %857

843:                                              ; preds = %840
  br label %844

844:                                              ; preds = %843
  %845 = load ptr, ptr @stderr, align 8, !tbaa !9
  %846 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %845, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 413) #7
  %847 = load ptr, ptr @stderr, align 8, !tbaa !9
  %848 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %847, ptr noundef @.str.50) #7
  %849 = load ptr, ptr @stderr, align 8, !tbaa !9
  %850 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %849, ptr noundef @.str.6) #7
  %851 = load ptr, ptr @stderr, align 8, !tbaa !9
  %852 = call i32 @fflush(ptr noundef %851)
  br label %853

853:                                              ; preds = %844
  br label %854

854:                                              ; preds = %853
  %855 = load ptr, ptr %43, align 8, !tbaa !9
  call void @MatNd_print(ptr noundef %855)
  %856 = load ptr, ptr %44, align 8, !tbaa !9
  call void @MatNd_print(ptr noundef %856)
  br label %857

857:                                              ; preds = %854, %840
  store i8 0, ptr %5, align 1, !tbaa !11
  br label %858

858:                                              ; preds = %857, %834
  %859 = load ptr, ptr %43, align 8, !tbaa !9
  call void @MatNd_destroy(ptr noundef %859)
  %860 = load ptr, ptr %44, align 8, !tbaa !9
  call void @MatNd_destroy(ptr noundef %860)
  br label %861

861:                                              ; preds = %858
  %862 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %863 = icmp ne ptr %862, null
  br i1 %863, label %864, label %867

864:                                              ; preds = %861
  %865 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %866 = load ptr, ptr %46, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %865(i32 noundef 2, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 424, ptr noundef @.str.51, ptr noundef %866)
  br label %867

867:                                              ; preds = %864, %861
  %868 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %869 = icmp sle i32 2, %868
  br i1 %869, label %870, label %878

870:                                              ; preds = %867
  %871 = load ptr, ptr @stderr, align 8, !tbaa !9
  %872 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %871, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 424) #7
  %873 = load ptr, ptr @stderr, align 8, !tbaa !9
  %874 = load ptr, ptr %46, align 8, !tbaa !9
  %875 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %873, ptr noundef @.str.51, ptr noundef %874) #7
  %876 = load ptr, ptr @stderr, align 8, !tbaa !9
  %877 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %876, ptr noundef @.str.6) #7
  br label %878

878:                                              ; preds = %870, %867
  br label %879

879:                                              ; preds = %878
  br label %880

880:                                              ; preds = %879
  call void @llvm.lifetime.start.p0(i64 256, ptr %47) #7
  %881 = getelementptr inbounds [256 x i8], ptr %47, i64 0, i64 0
  %882 = call ptr @strcpy(ptr noundef %881, ptr noundef @.str.52) #7
  %883 = getelementptr inbounds [256 x i8], ptr %47, i64 0, i64 0
  %884 = load ptr, ptr %46, align 8, !tbaa !9
  %885 = call ptr @strcat(ptr noundef %883, ptr noundef %884) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #7
  %886 = getelementptr inbounds [256 x i8], ptr %47, i64 0, i64 0
  %887 = call i32 @system(ptr noundef %886)
  store i32 %887, ptr %48, align 4, !tbaa !5
  %888 = load i32, ptr %48, align 4, !tbaa !5
  %889 = icmp eq i32 %888, -1
  br i1 %889, label %890, label %911

890:                                              ; preds = %880
  br label %891

891:                                              ; preds = %890
  %892 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %893 = icmp ne ptr %892, null
  br i1 %893, label %894, label %897

894:                                              ; preds = %891
  %895 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %896 = load ptr, ptr %46, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %895(i32 noundef 2, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 436, ptr noundef @.str.53, ptr noundef %896)
  br label %897

897:                                              ; preds = %894, %891
  %898 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %899 = icmp sle i32 2, %898
  br i1 %899, label %900, label %908

900:                                              ; preds = %897
  %901 = load ptr, ptr @stderr, align 8, !tbaa !9
  %902 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %901, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 436) #7
  %903 = load ptr, ptr @stderr, align 8, !tbaa !9
  %904 = load ptr, ptr %46, align 8, !tbaa !9
  %905 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %903, ptr noundef @.str.53, ptr noundef %904) #7
  %906 = load ptr, ptr @stderr, align 8, !tbaa !9
  %907 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %906, ptr noundef @.str.6) #7
  br label %908

908:                                              ; preds = %900, %897
  br label %909

909:                                              ; preds = %908
  br label %910

910:                                              ; preds = %909
  store i8 0, ptr %5, align 1, !tbaa !11
  br label %911

911:                                              ; preds = %910, %880
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 256, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 512, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  br label %912

912:                                              ; preds = %911
  %913 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %914 = icmp ne ptr %913, null
  br i1 %914, label %915, label %917

915:                                              ; preds = %912
  %916 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %916(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 444, ptr noundef @.str.24)
  br label %917

917:                                              ; preds = %915, %912
  %918 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %919 = icmp sle i32 2, %918
  br i1 %919, label %920, label %927

920:                                              ; preds = %917
  %921 = load ptr, ptr @stderr, align 8, !tbaa !9
  %922 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %921, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 444) #7
  %923 = load ptr, ptr @stderr, align 8, !tbaa !9
  %924 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %923, ptr noundef @.str.24) #7
  %925 = load ptr, ptr @stderr, align 8, !tbaa !9
  %926 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %925, ptr noundef @.str.6) #7
  br label %927

927:                                              ; preds = %920, %917
  br label %928

928:                                              ; preds = %927
  br label %929

929:                                              ; preds = %928
  br label %930

930:                                              ; preds = %929
  %931 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %932 = icmp ne ptr %931, null
  br i1 %932, label %933, label %935

933:                                              ; preds = %930
  %934 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %934(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 445, ptr noundef @.str.54)
  br label %935

935:                                              ; preds = %933, %930
  %936 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %937 = icmp sle i32 2, %936
  br i1 %937, label %938, label %945

938:                                              ; preds = %935
  %939 = load ptr, ptr @stderr, align 8, !tbaa !9
  %940 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %939, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 445) #7
  %941 = load ptr, ptr @stderr, align 8, !tbaa !9
  %942 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %941, ptr noundef @.str.54) #7
  %943 = load ptr, ptr @stderr, align 8, !tbaa !9
  %944 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %943, ptr noundef @.str.6) #7
  br label %945

945:                                              ; preds = %938, %935
  br label %946

946:                                              ; preds = %945
  br label %947

947:                                              ; preds = %946
  br label %948

948:                                              ; preds = %947
  %949 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %950 = icmp ne ptr %949, null
  br i1 %950, label %951, label %953

951:                                              ; preds = %948
  %952 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %952(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 446, ptr noundef @.str.24)
  br label %953

953:                                              ; preds = %951, %948
  %954 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %955 = icmp sle i32 2, %954
  br i1 %955, label %956, label %963

956:                                              ; preds = %953
  %957 = load ptr, ptr @stderr, align 8, !tbaa !9
  %958 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %957, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 446) #7
  %959 = load ptr, ptr @stderr, align 8, !tbaa !9
  %960 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %959, ptr noundef @.str.24) #7
  %961 = load ptr, ptr @stderr, align 8, !tbaa !9
  %962 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %961, ptr noundef @.str.6) #7
  br label %963

963:                                              ; preds = %956, %953
  br label %964

964:                                              ; preds = %963
  br label %965

965:                                              ; preds = %964
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  %966 = call ptr @MatNd_create(i32 noundef 5, i32 noundef 2)
  store ptr %966, ptr %49, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  store ptr @.str.55, ptr %50, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #7
  store i32 0, ptr %51, align 4, !tbaa !5
  br label %967

967:                                              ; preds = %998, %965
  %968 = load i32, ptr %51, align 4, !tbaa !5
  %969 = load ptr, ptr %49, align 8, !tbaa !9
  %970 = getelementptr inbounds %struct._MatNd, ptr %969, i32 0, i32 1
  %971 = load i32, ptr %970, align 8, !tbaa !20
  %972 = icmp ult i32 %968, %971
  br i1 %972, label %974, label %973

973:                                              ; preds = %967
  store i32 110, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #7
  br label %1001

974:                                              ; preds = %967
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #7
  store i32 0, ptr %52, align 4, !tbaa !5
  br label %975

975:                                              ; preds = %994, %974
  %976 = load i32, ptr %52, align 4, !tbaa !5
  %977 = load ptr, ptr %49, align 8, !tbaa !9
  %978 = getelementptr inbounds %struct._MatNd, ptr %977, i32 0, i32 2
  %979 = load i32, ptr %978, align 4, !tbaa !18
  %980 = icmp ult i32 %976, %979
  br i1 %980, label %982, label %981

981:                                              ; preds = %975
  store i32 113, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #7
  br label %997

982:                                              ; preds = %975
  %983 = load ptr, ptr %49, align 8, !tbaa !9
  %984 = load i32, ptr %51, align 4, !tbaa !5
  %985 = load i32, ptr %52, align 4, !tbaa !5
  %986 = load i32, ptr %51, align 4, !tbaa !5
  %987 = load ptr, ptr %49, align 8, !tbaa !9
  %988 = getelementptr inbounds %struct._MatNd, ptr %987, i32 0, i32 2
  %989 = load i32, ptr %988, align 4, !tbaa !18
  %990 = mul i32 %986, %989
  %991 = load i32, ptr %52, align 4, !tbaa !5
  %992 = add i32 %990, %991
  %993 = uitofp i32 %992 to double
  call void @MatNd_set(ptr noundef %983, i32 noundef %984, i32 noundef %985, double noundef %993)
  br label %994

994:                                              ; preds = %982
  %995 = load i32, ptr %52, align 4, !tbaa !5
  %996 = add i32 %995, 1
  store i32 %996, ptr %52, align 4, !tbaa !5
  br label %975, !llvm.loop !31

997:                                              ; preds = %981
  br label %998

998:                                              ; preds = %997
  %999 = load i32, ptr %51, align 4, !tbaa !5
  %1000 = add i32 %999, 1
  store i32 %1000, ptr %51, align 4, !tbaa !5
  br label %967, !llvm.loop !32

1001:                                             ; preds = %973
  %1002 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %1003 = icmp sle i32 2, %1002
  br i1 %1003, label %1004, label %1017

1004:                                             ; preds = %1001
  br label %1005

1005:                                             ; preds = %1004
  %1006 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1007 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1006, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 466) #7
  %1008 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1009 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1008, ptr noundef @.str.30) #7
  %1010 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1011 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1010, ptr noundef @.str.6) #7
  %1012 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1013 = call i32 @fflush(ptr noundef %1012)
  br label %1014

1014:                                             ; preds = %1005
  br label %1015

1015:                                             ; preds = %1014
  %1016 = load ptr, ptr %49, align 8, !tbaa !9
  call void @MatNd_print(ptr noundef %1016)
  br label %1017

1017:                                             ; preds = %1015, %1001
  br label %1018

1018:                                             ; preds = %1017
  %1019 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %1020 = icmp ne ptr %1019, null
  br i1 %1020, label %1021, label %1024

1021:                                             ; preds = %1018
  %1022 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %1023 = load ptr, ptr %50, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %1022(i32 noundef 2, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 470, ptr noundef @.str.48, ptr noundef %1023)
  br label %1024

1024:                                             ; preds = %1021, %1018
  %1025 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %1026 = icmp sle i32 2, %1025
  br i1 %1026, label %1027, label %1035

1027:                                             ; preds = %1024
  %1028 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1029 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1028, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 470) #7
  %1030 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1031 = load ptr, ptr %50, align 8, !tbaa !9
  %1032 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1030, ptr noundef @.str.48, ptr noundef %1031) #7
  %1033 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1034 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1033, ptr noundef @.str.6) #7
  br label %1035

1035:                                             ; preds = %1027, %1024
  br label %1036

1036:                                             ; preds = %1035
  br label %1037

1037:                                             ; preds = %1036
  %1038 = load ptr, ptr %49, align 8, !tbaa !9
  %1039 = load ptr, ptr %50, align 8, !tbaa !9
  %1040 = call zeroext i1 @MatNd_toFile(ptr noundef %1038, ptr noundef %1039)
  br label %1041

1041:                                             ; preds = %1037
  %1042 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %1043 = icmp ne ptr %1042, null
  br i1 %1043, label %1044, label %1047

1044:                                             ; preds = %1041
  %1045 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %1046 = load ptr, ptr %50, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %1045(i32 noundef 2, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 473, ptr noundef @.str.56, ptr noundef %1046)
  br label %1047

1047:                                             ; preds = %1044, %1041
  %1048 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %1049 = icmp sle i32 2, %1048
  br i1 %1049, label %1050, label %1058

1050:                                             ; preds = %1047
  %1051 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1052 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1051, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 473) #7
  %1053 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1054 = load ptr, ptr %50, align 8, !tbaa !9
  %1055 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1053, ptr noundef @.str.56, ptr noundef %1054) #7
  %1056 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1057 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1056, ptr noundef @.str.6) #7
  br label %1058

1058:                                             ; preds = %1050, %1047
  br label %1059

1059:                                             ; preds = %1058
  br label %1060

1060:                                             ; preds = %1059
  %1061 = load ptr, ptr %49, align 8, !tbaa !9
  %1062 = load ptr, ptr %50, align 8, !tbaa !9
  call void @MatNd_appendToFile(ptr noundef %1061, ptr noundef %1062)
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  %1063 = load ptr, ptr %50, align 8, !tbaa !9
  %1064 = call ptr @MatNd_createFromFile(ptr noundef %1063)
  store ptr %1064, ptr %53, align 8, !tbaa !9
  br label %1065

1065:                                             ; preds = %1060
  %1066 = load ptr, ptr %53, align 8, !tbaa !9
  %1067 = icmp ne ptr %1066, null
  br i1 %1067, label %1071, label %1068

1068:                                             ; preds = %1065
  %1069 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1070 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1069, ptr noundef @.str.57, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 477, ptr noundef @.str.41) #7
  call void @print_trace()
  call void @abort() #8
  unreachable

1071:                                             ; preds = %1065
  br label %1072

1072:                                             ; preds = %1071
  br label %1073

1073:                                             ; preds = %1072
  %1074 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %1075 = icmp sle i32 2, %1074
  br i1 %1075, label %1076, label %1078

1076:                                             ; preds = %1073
  %1077 = load ptr, ptr %53, align 8, !tbaa !9
  call void @MatNd_printCommentDigits(ptr noundef @.str.58, ptr noundef %1077, i32 noundef 3)
  br label %1078

1078:                                             ; preds = %1076, %1073
  br label %1079

1079:                                             ; preds = %1078
  %1080 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %1081 = icmp ne ptr %1080, null
  br i1 %1081, label %1082, label %1085

1082:                                             ; preds = %1079
  %1083 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %1084 = load ptr, ptr %50, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %1083(i32 noundef 2, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 484, ptr noundef @.str.51, ptr noundef %1084)
  br label %1085

1085:                                             ; preds = %1082, %1079
  %1086 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %1087 = icmp sle i32 2, %1086
  br i1 %1087, label %1088, label %1096

1088:                                             ; preds = %1085
  %1089 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1090 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1089, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 484) #7
  %1091 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1092 = load ptr, ptr %50, align 8, !tbaa !9
  %1093 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1091, ptr noundef @.str.51, ptr noundef %1092) #7
  %1094 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1095 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1094, ptr noundef @.str.6) #7
  br label %1096

1096:                                             ; preds = %1088, %1085
  br label %1097

1097:                                             ; preds = %1096
  br label %1098

1098:                                             ; preds = %1097
  call void @llvm.lifetime.start.p0(i64 256, ptr %54) #7
  %1099 = getelementptr inbounds [256 x i8], ptr %54, i64 0, i64 0
  %1100 = call ptr @strcpy(ptr noundef %1099, ptr noundef @.str.52) #7
  %1101 = getelementptr inbounds [256 x i8], ptr %54, i64 0, i64 0
  %1102 = load ptr, ptr %50, align 8, !tbaa !9
  %1103 = call ptr @strcat(ptr noundef %1101, ptr noundef %1102) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #7
  %1104 = getelementptr inbounds [256 x i8], ptr %54, i64 0, i64 0
  %1105 = call i32 @system(ptr noundef %1104)
  store i32 %1105, ptr %55, align 4, !tbaa !5
  %1106 = load i32, ptr %55, align 4, !tbaa !5
  %1107 = icmp eq i32 %1106, -1
  br i1 %1107, label %1108, label %1129

1108:                                             ; preds = %1098
  br label %1109

1109:                                             ; preds = %1108
  %1110 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %1111 = icmp ne ptr %1110, null
  br i1 %1111, label %1112, label %1115

1112:                                             ; preds = %1109
  %1113 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %1114 = load ptr, ptr %50, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %1113(i32 noundef 2, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 496, ptr noundef @.str.53, ptr noundef %1114)
  br label %1115

1115:                                             ; preds = %1112, %1109
  %1116 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %1117 = icmp sle i32 2, %1116
  br i1 %1117, label %1118, label %1126

1118:                                             ; preds = %1115
  %1119 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1120 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1119, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 496) #7
  %1121 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1122 = load ptr, ptr %50, align 8, !tbaa !9
  %1123 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1121, ptr noundef @.str.53, ptr noundef %1122) #7
  %1124 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1125 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1124, ptr noundef @.str.6) #7
  br label %1126

1126:                                             ; preds = %1118, %1115
  br label %1127

1127:                                             ; preds = %1126
  br label %1128

1128:                                             ; preds = %1127
  store i8 0, ptr %5, align 1, !tbaa !11
  br label %1129

1129:                                             ; preds = %1128, %1098
  %1130 = load ptr, ptr %49, align 8, !tbaa !9
  call void @MatNd_destroy(ptr noundef %1130)
  %1131 = load ptr, ptr %53, align 8, !tbaa !9
  call void @MatNd_destroy(ptr noundef %1131)
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 256, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  br label %1132

1132:                                             ; preds = %1129
  %1133 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %1134 = icmp ne ptr %1133, null
  br i1 %1134, label %1135, label %1137

1135:                                             ; preds = %1132
  %1136 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %1136(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 506, ptr noundef @.str.24)
  br label %1137

1137:                                             ; preds = %1135, %1132
  %1138 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %1139 = icmp sle i32 2, %1138
  br i1 %1139, label %1140, label %1147

1140:                                             ; preds = %1137
  %1141 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1142 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1141, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 506) #7
  %1143 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1144 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1143, ptr noundef @.str.24) #7
  %1145 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1146 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1145, ptr noundef @.str.6) #7
  br label %1147

1147:                                             ; preds = %1140, %1137
  br label %1148

1148:                                             ; preds = %1147
  br label %1149

1149:                                             ; preds = %1148
  br label %1150

1150:                                             ; preds = %1149
  %1151 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %1152 = icmp ne ptr %1151, null
  br i1 %1152, label %1153, label %1155

1153:                                             ; preds = %1150
  %1154 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %1154(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 507, ptr noundef @.str.59)
  br label %1155

1155:                                             ; preds = %1153, %1150
  %1156 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %1157 = icmp sle i32 2, %1156
  br i1 %1157, label %1158, label %1165

1158:                                             ; preds = %1155
  %1159 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1160 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1159, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 507) #7
  %1161 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1162 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1161, ptr noundef @.str.59) #7
  %1163 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1164 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1163, ptr noundef @.str.6) #7
  br label %1165

1165:                                             ; preds = %1158, %1155
  br label %1166

1166:                                             ; preds = %1165
  br label %1167

1167:                                             ; preds = %1166
  br label %1168

1168:                                             ; preds = %1167
  %1169 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %1170 = icmp ne ptr %1169, null
  br i1 %1170, label %1171, label %1173

1171:                                             ; preds = %1168
  %1172 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  call void (i32, ptr, ptr, i32, ptr, ...) %1172(i32 noundef 2, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 508, ptr noundef @.str.24)
  br label %1173

1173:                                             ; preds = %1171, %1168
  %1174 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %1175 = icmp sle i32 2, %1174
  br i1 %1175, label %1176, label %1183

1176:                                             ; preds = %1173
  %1177 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1178 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1177, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 508) #7
  %1179 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1180 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1179, ptr noundef @.str.24) #7
  %1181 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1182 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1181, ptr noundef @.str.6) #7
  br label %1183

1183:                                             ; preds = %1176, %1173
  br label %1184

1184:                                             ; preds = %1183
  br label %1185

1185:                                             ; preds = %1184
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #7
  store i32 30, ptr %56, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #7
  store i32 10, ptr %57, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #7
  store i32 1, ptr %58, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #7
  %1186 = load i32, ptr %3, align 4, !tbaa !5
  %1187 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN3Rcs13CmdLineParserC1EiPPc(ptr noundef nonnull align 1 dereferenceable(1) %59, i32 noundef %1186, ptr noundef %1187)
  %1188 = call noundef zeroext i1 (ptr, ptr, ptr, ptr, ...) @_ZNK3Rcs13CmdLineParser11getArgumentEPKcPiS2_z(ptr noundef nonnull align 1 dereferenceable(1) %59, ptr noundef @.str.60, ptr noundef %56, ptr noundef @.str.61)
  %1189 = call noundef zeroext i1 (ptr, ptr, ptr, ptr, ...) @_ZNK3Rcs13CmdLineParser11getArgumentEPKcPiS2_z(ptr noundef nonnull align 1 dereferenceable(1) %59, ptr noundef @.str.62, ptr noundef %57, ptr noundef @.str.63)
  %1190 = call noundef zeroext i1 (ptr, ptr, ptr, ptr, ...) @_ZNK3Rcs13CmdLineParser11getArgumentEPKcPiS2_z(ptr noundef nonnull align 1 dereferenceable(1) %59, ptr noundef @.str.64, ptr noundef %58, ptr noundef @.str.65)
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #7
  %1191 = call noundef zeroext i1 (ptr, ptr, ptr, ...) @_ZNK3Rcs13CmdLineParser11hasArgumentEPKcS2_z(ptr noundef nonnull align 1 dereferenceable(1) %59, ptr noundef @.str.66, ptr noundef @.str.67)
  %1192 = zext i1 %1191 to i8
  store i8 %1192, ptr %60, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #7
  %1193 = load i32, ptr %56, align 4, !tbaa !5
  %1194 = load i32, ptr %57, align 4, !tbaa !5
  %1195 = call ptr @MatNd_create(i32 noundef %1193, i32 noundef %1194)
  store ptr %1195, ptr %61, align 8, !tbaa !9
  %1196 = load ptr, ptr %61, align 8, !tbaa !9
  call void @MatNd_setRandom(ptr noundef %1196, double noundef -1.000000e+00, double noundef 1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #7
  store ptr null, ptr %62, align 8, !tbaa !9
  %1197 = load i8, ptr %60, align 1, !tbaa !11, !range !33, !noundef !34
  %1198 = trunc i8 %1197 to i1
  %1199 = zext i1 %1198 to i32
  %1200 = icmp eq i32 %1199, 0
  br i1 %1200, label %1201, label %1205

1201:                                             ; preds = %1185
  %1202 = load i32, ptr %57, align 4, !tbaa !5
  %1203 = call ptr @MatNd_create(i32 noundef %1202, i32 noundef 1)
  store ptr %1203, ptr %62, align 8, !tbaa !9
  %1204 = load ptr, ptr %62, align 8, !tbaa !9
  call void @MatNd_setRandom(ptr noundef %1204, double noundef -1.000000e+00, double noundef 1.000000e+00)
  br label %1205

1205:                                             ; preds = %1201, %1185
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #7
  %1206 = load i32, ptr %56, align 4, !tbaa !5
  %1207 = load i32, ptr %56, align 4, !tbaa !5
  %1208 = call ptr @MatNd_create(i32 noundef %1206, i32 noundef %1207)
  store ptr %1208, ptr %63, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #7
  %1209 = load i32, ptr %56, align 4, !tbaa !5
  %1210 = load i32, ptr %56, align 4, !tbaa !5
  %1211 = call ptr @MatNd_create(i32 noundef %1209, i32 noundef %1210)
  store ptr %1211, ptr %64, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #7
  %1212 = call double @Timer_getTime()
  store double %1212, ptr %65, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #7
  store i32 0, ptr %66, align 4, !tbaa !5
  br label %1213

1213:                                             ; preds = %1222, %1205
  %1214 = load i32, ptr %66, align 4, !tbaa !5
  %1215 = load i32, ptr %58, align 4, !tbaa !5
  %1216 = icmp slt i32 %1214, %1215
  br i1 %1216, label %1218, label %1217

1217:                                             ; preds = %1213
  store i32 134, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #7
  br label %1225

1218:                                             ; preds = %1213
  %1219 = load ptr, ptr %63, align 8, !tbaa !9
  %1220 = load ptr, ptr %61, align 8, !tbaa !9
  %1221 = load ptr, ptr %62, align 8, !tbaa !9
  call void @_ZL23MatNd_sqrMulABAt_simpleP6_MatNdPKS_S2_(ptr noundef %1219, ptr noundef %1220, ptr noundef %1221)
  br label %1222

1222:                                             ; preds = %1218
  %1223 = load i32, ptr %66, align 4, !tbaa !5
  %1224 = add nsw i32 %1223, 1
  store i32 %1224, ptr %66, align 4, !tbaa !5
  br label %1213, !llvm.loop !35

1225:                                             ; preds = %1217
  %1226 = load i32, ptr %58, align 4, !tbaa !5
  %1227 = sitofp i32 %1226 to double
  %1228 = fdiv double 1.000000e+00, %1227
  %1229 = call double @Timer_getTime()
  %1230 = load double, ptr %65, align 8, !tbaa !13
  %1231 = fsub double %1229, %1230
  %1232 = fmul double %1228, %1231
  store double %1232, ptr %65, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #7
  %1233 = call double @Timer_getTime()
  store double %1233, ptr %67, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #7
  store i32 0, ptr %68, align 4, !tbaa !5
  br label %1234

1234:                                             ; preds = %1243, %1225
  %1235 = load i32, ptr %68, align 4, !tbaa !5
  %1236 = load i32, ptr %58, align 4, !tbaa !5
  %1237 = icmp slt i32 %1235, %1236
  br i1 %1237, label %1239, label %1238

1238:                                             ; preds = %1234
  store i32 137, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #7
  br label %1246

1239:                                             ; preds = %1234
  %1240 = load ptr, ptr %64, align 8, !tbaa !9
  %1241 = load ptr, ptr %61, align 8, !tbaa !9
  %1242 = load ptr, ptr %62, align 8, !tbaa !9
  call void @MatNd_sqrMulABAt(ptr noundef %1240, ptr noundef %1241, ptr noundef %1242)
  br label %1243

1243:                                             ; preds = %1239
  %1244 = load i32, ptr %68, align 4, !tbaa !5
  %1245 = add nsw i32 %1244, 1
  store i32 %1245, ptr %68, align 4, !tbaa !5
  br label %1234, !llvm.loop !36

1246:                                             ; preds = %1238
  %1247 = load i32, ptr %58, align 4, !tbaa !5
  %1248 = sitofp i32 %1247 to double
  %1249 = fdiv double 1.000000e+00, %1248
  %1250 = call double @Timer_getTime()
  %1251 = load double, ptr %67, align 8, !tbaa !13
  %1252 = fsub double %1250, %1251
  %1253 = fmul double %1249, %1252
  store double %1253, ptr %67, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #7
  %1254 = load ptr, ptr %63, align 8, !tbaa !9
  %1255 = load ptr, ptr %64, align 8, !tbaa !9
  %1256 = call double @MatNd_msqError(ptr noundef %1254, ptr noundef %1255)
  store double %1256, ptr %69, align 8, !tbaa !13
  br label %1257

1257:                                             ; preds = %1246
  %1258 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %1259 = icmp ne ptr %1258, null
  br i1 %1259, label %1260, label %1267

1260:                                             ; preds = %1257
  %1261 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %1262 = load double, ptr %65, align 8, !tbaa !13
  %1263 = fmul double 1.000000e+06, %1262
  %1264 = load double, ptr %67, align 8, !tbaa !13
  %1265 = fmul double 1.000000e+06, %1264
  %1266 = load double, ptr %69, align 8, !tbaa !13
  call void (i32, ptr, ptr, i32, ptr, ...) %1261(i32 noundef 2, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 547, ptr noundef @.str.68, double noundef %1263, double noundef %1265, double noundef %1266)
  br label %1267

1267:                                             ; preds = %1260, %1257
  %1268 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %1269 = icmp sle i32 2, %1268
  br i1 %1269, label %1270, label %1282

1270:                                             ; preds = %1267
  %1271 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1272 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1271, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 547) #7
  %1273 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1274 = load double, ptr %65, align 8, !tbaa !13
  %1275 = fmul double 1.000000e+06, %1274
  %1276 = load double, ptr %67, align 8, !tbaa !13
  %1277 = fmul double 1.000000e+06, %1276
  %1278 = load double, ptr %69, align 8, !tbaa !13
  %1279 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1273, ptr noundef @.str.68, double noundef %1275, double noundef %1277, double noundef %1278) #7
  %1280 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1281 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1280, ptr noundef @.str.6) #7
  br label %1282

1282:                                             ; preds = %1270, %1267
  br label %1283

1283:                                             ; preds = %1282
  br label %1284

1284:                                             ; preds = %1283
  %1285 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %1286 = icmp sle i32 3, %1285
  br i1 %1286, label %1287, label %1290

1287:                                             ; preds = %1284
  %1288 = load ptr, ptr %63, align 8, !tbaa !9
  %1289 = load ptr, ptr %64, align 8, !tbaa !9
  call void @MatNd_printTwoArraysDiff(ptr noundef %1288, ptr noundef %1289, i32 noundef 3)
  br label %1290

1290:                                             ; preds = %1287, %1284
  %1291 = load double, ptr %69, align 8, !tbaa !13
  %1292 = fcmp ogt double %1291, 1.000000e-08
  br i1 %1292, label %1293, label %1314

1293:                                             ; preds = %1290
  br label %1294

1294:                                             ; preds = %1293
  %1295 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %1296 = icmp ne ptr %1295, null
  br i1 %1296, label %1297, label %1300

1297:                                             ; preds = %1294
  %1298 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %1299 = load double, ptr %69, align 8, !tbaa !13
  call void (i32, ptr, ptr, i32, ptr, ...) %1298(i32 noundef 2, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 556, ptr noundef @.str.69, double noundef %1299)
  br label %1300

1300:                                             ; preds = %1297, %1294
  %1301 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %1302 = icmp sle i32 2, %1301
  br i1 %1302, label %1303, label %1311

1303:                                             ; preds = %1300
  %1304 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1305 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1304, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 556) #7
  %1306 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1307 = load double, ptr %69, align 8, !tbaa !13
  %1308 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1306, ptr noundef @.str.69, double noundef %1307) #7
  %1309 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1310 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1309, ptr noundef @.str.6) #7
  br label %1311

1311:                                             ; preds = %1303, %1300
  br label %1312

1312:                                             ; preds = %1311
  br label %1313

1313:                                             ; preds = %1312
  store i8 0, ptr %5, align 1, !tbaa !11
  br label %1314

1314:                                             ; preds = %1313, %1290
  %1315 = load ptr, ptr %61, align 8, !tbaa !9
  call void @MatNd_destroy(ptr noundef %1315)
  %1316 = load ptr, ptr %62, align 8, !tbaa !9
  call void @MatNd_destroy(ptr noundef %1316)
  %1317 = load ptr, ptr %63, align 8, !tbaa !9
  call void @MatNd_destroy(ptr noundef %1317)
  %1318 = load ptr, ptr %64, align 8, !tbaa !9
  call void @MatNd_destroy(ptr noundef %1318)
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #7
  br label %1319

1319:                                             ; preds = %1314
  %1320 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %1321 = icmp ne ptr %1320, null
  br i1 %1321, label %1322, label %1331

1322:                                             ; preds = %1319
  %1323 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !9
  %1324 = load i8, ptr %5, align 1, !tbaa !11, !range !33, !noundef !34
  %1325 = trunc i8 %1324 to i1
  br i1 %1325, label %1326, label %1327

1326:                                             ; preds = %1322
  br label %1328

1327:                                             ; preds = %1322
  br label %1328

1328:                                             ; preds = %1327, %1326
  %1329 = phi ptr [ @.str.20, %1326 ], [ @.str.21, %1327 ]
  %1330 = getelementptr inbounds [8 x i8], ptr %1329, i64 0, i64 0
  call void (i32, ptr, ptr, i32, ptr, ...) %1323(i32 noundef 1, ptr noundef @.str.18, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 567, ptr noundef @.str.70, ptr noundef %1330)
  br label %1331

1331:                                             ; preds = %1328, %1319
  %1332 = load i32, ptr @RcsLogLevel, align 4, !tbaa !5
  %1333 = icmp sle i32 1, %1332
  br i1 %1333, label %1334, label %1348

1334:                                             ; preds = %1331
  %1335 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1336 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1335, ptr noundef @.str.22, ptr noundef @__func__.testSimpleMatrixFunctions, i32 noundef 567) #7
  %1337 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1338 = load i8, ptr %5, align 1, !tbaa !11, !range !33, !noundef !34
  %1339 = trunc i8 %1338 to i1
  br i1 %1339, label %1340, label %1341

1340:                                             ; preds = %1334
  br label %1342

1341:                                             ; preds = %1334
  br label %1342

1342:                                             ; preds = %1341, %1340
  %1343 = phi ptr [ @.str.20, %1340 ], [ @.str.21, %1341 ]
  %1344 = getelementptr inbounds [8 x i8], ptr %1343, i64 0, i64 0
  %1345 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1337, ptr noundef @.str.70, ptr noundef %1344) #7
  %1346 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1347 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1346, ptr noundef @.str.6) #7
  br label %1348

1348:                                             ; preds = %1342, %1331
  br label %1349

1349:                                             ; preds = %1348
  br label %1350

1350:                                             ; preds = %1349
  %1351 = load i8, ptr %5, align 1, !tbaa !11, !range !33, !noundef !34
  %1352 = trunc i8 %1351 to i1
  store i32 1, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #7
  ret i1 %1352
}

declare ptr @MatNd_create(i32 noundef, i32 noundef) #2

declare void @MatNd_setRandom(ptr noundef, double noundef, double noundef) #2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4

declare void @MatNd_copyColumns(ptr noundef, ptr noundef, ptr noundef) #2

declare void @MatNd_printCommentDigits(ptr noundef, ptr noundef, i32 noundef) #2

declare double @MatNd_get(ptr noundef, i32 noundef, i32 noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef, i32 noundef) #5

declare void @MatNd_destroy(ptr noundef) #2

declare void @MatNd_fromString(ptr noundef, ptr noundef) #2

declare i32 @fflush(ptr noundef) #2

declare void @MatNd_print(ptr noundef) #2

declare void @MatNd_postMulDiagSelf(ptr noundef, ptr noundef) #2

declare zeroext i1 @MatNd_isEqual(ptr noundef, ptr noundef, double noundef) #2

declare void @MatNd_set(ptr noundef, i32 noundef, i32 noundef, double noundef) #2

declare ptr @MatNd_clone(ptr noundef) #2

declare void @MatNd_insertColumns(ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef) #2

declare zeroext i1 @MatNd_toFile(ptr noundef, ptr noundef) #2

declare zeroext i1 @MatNd_fromFile(ptr noundef, ptr noundef) #2

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

; Function Attrs: nounwind
declare ptr @strcat(ptr noundef, ptr noundef) #1

declare i32 @system(ptr noundef) #2

declare void @MatNd_appendToFile(ptr noundef, ptr noundef) #2

declare ptr @MatNd_createFromFile(ptr noundef) #2

declare void @print_trace() #2

; Function Attrs: noreturn nounwind
declare void @abort() #6

declare noundef zeroext i1 @_ZNK3Rcs13CmdLineParser11getArgumentEPKcPiS2_z(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef, ptr noundef, ptr noundef, ...) #2

declare noundef zeroext i1 @_ZNK3Rcs13CmdLineParser11hasArgumentEPKcS2_z(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef, ptr noundef, ...) #2

declare double @Timer_getTime() #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL23MatNd_sqrMulABAt_simpleP6_MatNdPKS_S2_(ptr noundef, ptr noundef, ptr noundef) #3

declare void @MatNd_sqrMulABAt(ptr noundef, ptr noundef, ptr noundef) #2

declare double @MatNd_msqError(ptr noundef, ptr noundef) #2

declare void @MatNd_printTwoArraysDiff(ptr noundef, ptr noundef, i32 noundef) #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = !{!19, !6, i64 12}
!19 = !{!"_ZTS6_MatNd", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16, !12, i64 20}
!20 = !{!19, !6, i64 8}
!21 = distinct !{!21, !16}
!22 = distinct !{!22, !16}
!23 = distinct !{!23, !16}
!24 = distinct !{!24, !16}
!25 = distinct !{!25, !16}
!26 = distinct !{!26, !16}
!27 = distinct !{!27, !16}
!28 = distinct !{!28, !16}
!29 = distinct !{!29, !16}
!30 = distinct !{!30, !16}
!31 = distinct !{!31, !16}
!32 = distinct !{!32, !16}
!33 = !{i8 0, i8 2}
!34 = !{}
!35 = distinct !{!35, !16}
!36 = distinct !{!36, !16}


; 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.Rcs::CmdLineParser" = type { i8 }

@RCS_GLOBAL_RLOG_CB = external local_unnamed_addr global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [74 x i8], align 1
@RcsLogLevel = external local_unnamed_addr global i32, align 4
@stderr = external local_unnamed_addr global ptr, align 8
@.str.5 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [11 x i8], align 1
@__func__.testSimpleMatrixFunctions = external hidden unnamed_addr constant [26 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [27 x i8], align 1
@__const.testSimpleMatrixFunctions.cols = external hidden unnamed_addr constant [4 x i32], align 16
@.str.26 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [31 x i8], align 1
@__const.testSimpleMatrixFunctions.matrixA = external hidden unnamed_addr constant [512 x i8], align 16
@__const.testSimpleMatrixFunctions.matrixB = external hidden unnamed_addr constant [512 x i8], align 16
@.str.30 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [18 x i8], align 1
@__const.testSimpleMatrixFunctions.res = external hidden unnamed_addr constant [512 x i8], align 16
@.str.38 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [24 x i8], align 1
@__const.testSimpleMatrixFunctions.matrix = external hidden unnamed_addr constant [512 x i8], align 16
@.str.47 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [35 x i8], align 1

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

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

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

declare void @_ZN3Rcs13CmdLineParserC1EiPPc(ptr noundef nonnull align 1 dereferenceable(1), i32 noundef, ptr noundef) unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local zeroext i1 @testSimpleMatrixFunctions(i32 noundef %0, ptr noundef %1) local_unnamed_addr #3 {
  %3 = alloca [4 x i32], align 16
  %4 = alloca [512 x i8], align 16
  %5 = alloca [512 x i8], align 16
  %6 = alloca [512 x i8], align 16
  %7 = alloca [512 x i8], align 16
  %8 = alloca [256 x i8], align 16
  %9 = alloca [256 x i8], align 16
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca %"class.Rcs::CmdLineParser", align 1
  %14 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not = icmp eq ptr %14, null
  br i1 %.not, label %16, label %15

15:                                               ; preds = %2
  tail call void (i32, ptr, ptr, i32, ptr, ...) %14(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 197, ptr noundef nonnull @.str.24)
  br label %16

16:                                               ; preds = %15, %2
  %17 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %18 = icmp sgt i32 %17, 1
  br i1 %18, label %19, label %26

19:                                               ; preds = %16
  %20 = load ptr, ptr @stderr, align 8, !tbaa !5
  %21 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %20, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 197) #9
  %22 = load ptr, ptr @stderr, align 8, !tbaa !5
  %23 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %22, ptr noundef nonnull @.str.24) #9
  %24 = load ptr, ptr @stderr, align 8, !tbaa !5
  %25 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %24, ptr noundef nonnull @.str.6) #9
  br label %26

26:                                               ; preds = %16, %19
  %27 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not271 = icmp eq ptr %27, null
  br i1 %.not271, label %29, label %28

28:                                               ; preds = %26
  tail call void (i32, ptr, ptr, i32, ptr, ...) %27(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 198, ptr noundef nonnull @.str.25)
  br label %29

29:                                               ; preds = %28, %26
  %30 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %31 = icmp sgt i32 %30, 1
  br i1 %31, label %32, label %39

32:                                               ; preds = %29
  %33 = load ptr, ptr @stderr, align 8, !tbaa !5
  %34 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %33, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 198) #9
  %35 = load ptr, ptr @stderr, align 8, !tbaa !5
  %36 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %35, ptr noundef nonnull @.str.25) #9
  %37 = load ptr, ptr @stderr, align 8, !tbaa !5
  %38 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %37, ptr noundef nonnull @.str.6) #9
  br label %39

39:                                               ; preds = %29, %32
  %40 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not272 = icmp eq ptr %40, null
  br i1 %.not272, label %42, label %41

41:                                               ; preds = %39
  tail call void (i32, ptr, ptr, i32, ptr, ...) %40(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 199, ptr noundef nonnull @.str.24)
  br label %42

42:                                               ; preds = %41, %39
  %43 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %44 = icmp sgt i32 %43, 1
  br i1 %44, label %45, label %52

45:                                               ; preds = %42
  %46 = load ptr, ptr @stderr, align 8, !tbaa !5
  %47 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %46, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 199) #9
  %48 = load ptr, ptr @stderr, align 8, !tbaa !5
  %49 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %48, ptr noundef nonnull @.str.24) #9
  %50 = load ptr, ptr @stderr, align 8, !tbaa !5
  %51 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %50, ptr noundef nonnull @.str.6) #9
  br label %52

52:                                               ; preds = %45, %42
  %53 = tail call ptr @MatNd_create(i32 noundef 5, i32 noundef 6)
  tail call void @MatNd_setRandom(ptr noundef %53, double noundef 0.000000e+00, double noundef 1.000000e+00)
  %54 = tail call ptr @MatNd_create(i32 noundef 5, i32 noundef 6)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %3, ptr noundef nonnull align 16 dereferenceable(16) @__const.testSimpleMatrixFunctions.cols, i64 16, i1 false)
  call void @MatNd_copyColumns(ptr noundef %54, ptr noundef %53, ptr noundef nonnull %3)
  %55 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %56 = icmp sgt i32 %55, 1
  br i1 %56, label %57, label %.preheader312

57:                                               ; preds = %52
  call void @MatNd_printCommentDigits(ptr noundef nonnull @.str.26, ptr noundef %53, i32 noundef 3)
  call void @MatNd_printCommentDigits(ptr noundef nonnull @.str.27, ptr noundef %54, i32 noundef 3)
  br label %.preheader312

.preheader312:                                    ; preds = %57, %52
  %58 = load i32, ptr %3, align 16, !tbaa !9
  %59 = call double @MatNd_get(ptr noundef %53, i32 noundef 0, i32 noundef %58)
  %60 = call double @MatNd_get(ptr noundef %54, i32 noundef 0, i32 noundef 0)
  %61 = fsub double %59, %60
  %62 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %61, i32 noundef 2)
  %63 = fadd double %62, 0.000000e+00
  %64 = load i32, ptr %3, align 16, !tbaa !9
  %65 = call double @MatNd_get(ptr noundef %53, i32 noundef 1, i32 noundef %64)
  %66 = call double @MatNd_get(ptr noundef %54, i32 noundef 1, i32 noundef 0)
  %67 = fsub double %65, %66
  %68 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %67, i32 noundef 2)
  %69 = fadd double %63, %68
  %70 = load i32, ptr %3, align 16, !tbaa !9
  %71 = call double @MatNd_get(ptr noundef %53, i32 noundef 2, i32 noundef %70)
  %72 = call double @MatNd_get(ptr noundef %54, i32 noundef 2, i32 noundef 0)
  %73 = fsub double %71, %72
  %74 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %73, i32 noundef 2)
  %75 = fadd double %69, %74
  %76 = load i32, ptr %3, align 16, !tbaa !9
  %77 = call double @MatNd_get(ptr noundef %53, i32 noundef 3, i32 noundef %76)
  %78 = call double @MatNd_get(ptr noundef %54, i32 noundef 3, i32 noundef 0)
  %79 = fsub double %77, %78
  %80 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %79, i32 noundef 2)
  %81 = fadd double %75, %80
  %82 = load i32, ptr %3, align 16, !tbaa !9
  %83 = call double @MatNd_get(ptr noundef %53, i32 noundef 4, i32 noundef %82)
  %84 = call double @MatNd_get(ptr noundef %54, i32 noundef 4, i32 noundef 0)
  %85 = fsub double %83, %84
  %86 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %85, i32 noundef 2)
  %87 = fadd double %81, %86
  %88 = getelementptr inbounds i8, ptr %3, i64 4
  %89 = load i32, ptr %88, align 4, !tbaa !9
  %90 = call double @MatNd_get(ptr noundef %53, i32 noundef 0, i32 noundef %89)
  %91 = call double @MatNd_get(ptr noundef %54, i32 noundef 0, i32 noundef 1)
  %92 = fsub double %90, %91
  %93 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %92, i32 noundef 2)
  %94 = fadd double %87, %93
  %95 = load i32, ptr %88, align 4, !tbaa !9
  %96 = call double @MatNd_get(ptr noundef %53, i32 noundef 1, i32 noundef %95)
  %97 = call double @MatNd_get(ptr noundef %54, i32 noundef 1, i32 noundef 1)
  %98 = fsub double %96, %97
  %99 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %98, i32 noundef 2)
  %100 = fadd double %94, %99
  %101 = load i32, ptr %88, align 4, !tbaa !9
  %102 = call double @MatNd_get(ptr noundef %53, i32 noundef 2, i32 noundef %101)
  %103 = call double @MatNd_get(ptr noundef %54, i32 noundef 2, i32 noundef 1)
  %104 = fsub double %102, %103
  %105 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %104, i32 noundef 2)
  %106 = fadd double %100, %105
  %107 = load i32, ptr %88, align 4, !tbaa !9
  %108 = call double @MatNd_get(ptr noundef %53, i32 noundef 3, i32 noundef %107)
  %109 = call double @MatNd_get(ptr noundef %54, i32 noundef 3, i32 noundef 1)
  %110 = fsub double %108, %109
  %111 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %110, i32 noundef 2)
  %112 = fadd double %106, %111
  %113 = load i32, ptr %88, align 4, !tbaa !9
  %114 = call double @MatNd_get(ptr noundef %53, i32 noundef 4, i32 noundef %113)
  %115 = call double @MatNd_get(ptr noundef %54, i32 noundef 4, i32 noundef 1)
  %116 = fsub double %114, %115
  %117 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %116, i32 noundef 2)
  %118 = fadd double %112, %117
  %119 = getelementptr inbounds i8, ptr %3, i64 8
  %120 = load i32, ptr %119, align 8, !tbaa !9
  %121 = call double @MatNd_get(ptr noundef %53, i32 noundef 0, i32 noundef %120)
  %122 = call double @MatNd_get(ptr noundef %54, i32 noundef 0, i32 noundef 2)
  %123 = fsub double %121, %122
  %124 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %123, i32 noundef 2)
  %125 = fadd double %118, %124
  %126 = load i32, ptr %119, align 8, !tbaa !9
  %127 = call double @MatNd_get(ptr noundef %53, i32 noundef 1, i32 noundef %126)
  %128 = call double @MatNd_get(ptr noundef %54, i32 noundef 1, i32 noundef 2)
  %129 = fsub double %127, %128
  %130 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %129, i32 noundef 2)
  %131 = fadd double %125, %130
  %132 = load i32, ptr %119, align 8, !tbaa !9
  %133 = call double @MatNd_get(ptr noundef %53, i32 noundef 2, i32 noundef %132)
  %134 = call double @MatNd_get(ptr noundef %54, i32 noundef 2, i32 noundef 2)
  %135 = fsub double %133, %134
  %136 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %135, i32 noundef 2)
  %137 = fadd double %131, %136
  %138 = load i32, ptr %119, align 8, !tbaa !9
  %139 = call double @MatNd_get(ptr noundef %53, i32 noundef 3, i32 noundef %138)
  %140 = call double @MatNd_get(ptr noundef %54, i32 noundef 3, i32 noundef 2)
  %141 = fsub double %139, %140
  %142 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %141, i32 noundef 2)
  %143 = fadd double %137, %142
  %144 = load i32, ptr %119, align 8, !tbaa !9
  %145 = call double @MatNd_get(ptr noundef %53, i32 noundef 4, i32 noundef %144)
  %146 = call double @MatNd_get(ptr noundef %54, i32 noundef 4, i32 noundef 2)
  %147 = fsub double %145, %146
  %148 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %147, i32 noundef 2)
  %149 = fadd double %143, %148
  %150 = fcmp ogt double %149, 0.000000e+00
  br i1 %150, label %151, label %164

151:                                              ; preds = %.preheader312
  %152 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not273 = icmp eq ptr %152, null
  br i1 %.not273, label %154, label %153

153:                                              ; preds = %151
  call void (i32, ptr, ptr, i32, ptr, ...) %152(i32 noundef 2, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 229, ptr noundef nonnull @.str.28, double noundef %149)
  br label %154

154:                                              ; preds = %153, %151
  %155 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %156 = icmp sgt i32 %155, 1
  br i1 %156, label %157, label %164

157:                                              ; preds = %154
  %158 = load ptr, ptr @stderr, align 8, !tbaa !5
  %159 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %158, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 229) #9
  %160 = load ptr, ptr @stderr, align 8, !tbaa !5
  %161 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %160, ptr noundef nonnull @.str.28, double noundef %149) #9
  %162 = load ptr, ptr @stderr, align 8, !tbaa !5
  %163 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %162, ptr noundef nonnull @.str.6) #9
  br label %164

164:                                              ; preds = %154, %157, %.preheader312
  %.0 = phi i8 [ 0, %157 ], [ 0, %154 ], [ 1, %.preheader312 ]
  call void @MatNd_destroy(ptr noundef %53)
  call void @MatNd_destroy(ptr noundef %54)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #10
  %165 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not274 = icmp eq ptr %165, null
  br i1 %.not274, label %167, label %166

166:                                              ; preds = %164
  call void (i32, ptr, ptr, i32, ptr, ...) %165(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 238, ptr noundef nonnull @.str.24)
  br label %167

167:                                              ; preds = %166, %164
  %168 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %169 = icmp sgt i32 %168, 1
  br i1 %169, label %170, label %177

170:                                              ; preds = %167
  %171 = load ptr, ptr @stderr, align 8, !tbaa !5
  %172 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %171, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 238) #9
  %173 = load ptr, ptr @stderr, align 8, !tbaa !5
  %174 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %173, ptr noundef nonnull @.str.24) #9
  %175 = load ptr, ptr @stderr, align 8, !tbaa !5
  %176 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %175, ptr noundef nonnull @.str.6) #9
  br label %177

177:                                              ; preds = %167, %170
  %178 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not275 = icmp eq ptr %178, null
  br i1 %.not275, label %180, label %179

179:                                              ; preds = %177
  call void (i32, ptr, ptr, i32, ptr, ...) %178(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 239, ptr noundef nonnull @.str.29)
  br label %180

180:                                              ; preds = %179, %177
  %181 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %182 = icmp sgt i32 %181, 1
  br i1 %182, label %183, label %190

183:                                              ; preds = %180
  %184 = load ptr, ptr @stderr, align 8, !tbaa !5
  %185 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %184, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 239) #9
  %186 = load ptr, ptr @stderr, align 8, !tbaa !5
  %187 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %186, ptr noundef nonnull @.str.29) #9
  %188 = load ptr, ptr @stderr, align 8, !tbaa !5
  %189 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %188, ptr noundef nonnull @.str.6) #9
  br label %190

190:                                              ; preds = %180, %183
  %191 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not276 = icmp eq ptr %191, null
  br i1 %.not276, label %193, label %192

192:                                              ; preds = %190
  call void (i32, ptr, ptr, i32, ptr, ...) %191(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 240, ptr noundef nonnull @.str.24)
  br label %193

193:                                              ; preds = %192, %190
  %194 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %195 = icmp sgt i32 %194, 1
  br i1 %195, label %196, label %203

196:                                              ; preds = %193
  %197 = load ptr, ptr @stderr, align 8, !tbaa !5
  %198 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 240) #9
  %199 = load ptr, ptr @stderr, align 8, !tbaa !5
  %200 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %199, ptr noundef nonnull @.str.24) #9
  %201 = load ptr, ptr @stderr, align 8, !tbaa !5
  %202 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %201, ptr noundef nonnull @.str.6) #9
  br label %203

203:                                              ; preds = %196, %193
  %204 = call ptr @MatNd_create(i32 noundef 2, i32 noundef 3)
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %4) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(512) %4, ptr noundef nonnull align 16 dereferenceable(512) @__const.testSimpleMatrixFunctions.matrixA, i64 512, i1 false)
  call void @MatNd_fromString(ptr noundef %204, ptr noundef nonnull %4)
  %205 = call ptr @MatNd_create(i32 noundef 3, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %5) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(512) %5, ptr noundef nonnull align 16 dereferenceable(512) @__const.testSimpleMatrixFunctions.matrixB, i64 512, i1 false)
  call void @MatNd_fromString(ptr noundef %205, ptr noundef nonnull %5)
  %206 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %207 = icmp sgt i32 %206, 1
  br i1 %207, label %208, label %225

208:                                              ; preds = %203
  %209 = load ptr, ptr @stderr, align 8, !tbaa !5
  %210 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %209, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 251) #9
  %211 = load ptr, ptr @stderr, align 8, !tbaa !5
  %212 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %211, ptr noundef nonnull @.str.30) #9
  %213 = load ptr, ptr @stderr, align 8, !tbaa !5
  %214 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %213, ptr noundef nonnull @.str.6) #9
  %215 = load ptr, ptr @stderr, align 8, !tbaa !5
  %216 = call i32 @fflush(ptr noundef %215)
  call void @MatNd_print(ptr noundef %204)
  %217 = load ptr, ptr @stderr, align 8, !tbaa !5
  %218 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %217, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 253) #9
  %219 = load ptr, ptr @stderr, align 8, !tbaa !5
  %220 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %219, ptr noundef nonnull @.str.31) #9
  %221 = load ptr, ptr @stderr, align 8, !tbaa !5
  %222 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %221, ptr noundef nonnull @.str.6) #9
  %223 = load ptr, ptr @stderr, align 8, !tbaa !5
  %224 = call i32 @fflush(ptr noundef %223)
  call void @MatNd_print(ptr noundef %205)
  br label %225

225:                                              ; preds = %208, %203
  call void @MatNd_postMulDiagSelf(ptr noundef %204, ptr noundef %205)
  %226 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %227 = icmp sgt i32 %226, 1
  br i1 %227, label %228, label %277

228:                                              ; preds = %225
  %229 = load ptr, ptr @stderr, align 8, !tbaa !5
  %230 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %229, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 261) #9
  %231 = load ptr, ptr @stderr, align 8, !tbaa !5
  %232 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %231, ptr noundef nonnull @.str.32) #9
  %233 = load ptr, ptr @stderr, align 8, !tbaa !5
  %234 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %233, ptr noundef nonnull @.str.6) #9
  %235 = load ptr, ptr @stderr, align 8, !tbaa !5
  %236 = call i32 @fflush(ptr noundef %235)
  call void @MatNd_print(ptr noundef %204)
  %237 = load ptr, ptr @stderr, align 8, !tbaa !5
  %238 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %237, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 264) #9
  %239 = load ptr, ptr @stderr, align 8, !tbaa !5
  %240 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %239, ptr noundef nonnull @.str.33) #9
  %241 = load ptr, ptr @stderr, align 8, !tbaa !5
  %242 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %241, ptr noundef nonnull @.str.6) #9
  %243 = load ptr, ptr @stderr, align 8, !tbaa !5
  %244 = call i32 @fflush(ptr noundef %243)
  %245 = load ptr, ptr @stderr, align 8, !tbaa !5
  %246 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %245, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 265) #9
  %247 = load ptr, ptr @stderr, align 8, !tbaa !5
  %248 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %247, ptr noundef nonnull @.str.34) #9
  %249 = load ptr, ptr @stderr, align 8, !tbaa !5
  %250 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %249, ptr noundef nonnull @.str.6) #9
  %251 = load ptr, ptr @stderr, align 8, !tbaa !5
  %252 = call i32 @fflush(ptr noundef %251)
  %253 = load ptr, ptr @stderr, align 8, !tbaa !5
  %254 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %253, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 266) #9
  %255 = load ptr, ptr @stderr, align 8, !tbaa !5
  %256 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %255, ptr noundef nonnull @.str.35) #9
  %257 = load ptr, ptr @stderr, align 8, !tbaa !5
  %258 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %257, ptr noundef nonnull @.str.6) #9
  %259 = load ptr, ptr @stderr, align 8, !tbaa !5
  %260 = call i32 @fflush(ptr noundef %259)
  %261 = load ptr, ptr @stderr, align 8, !tbaa !5
  %262 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %261, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 267) #9
  %263 = load ptr, ptr @stderr, align 8, !tbaa !5
  %264 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %263, ptr noundef nonnull @.str.36) #9
  %265 = load ptr, ptr @stderr, align 8, !tbaa !5
  %266 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %265, ptr noundef nonnull @.str.6) #9
  %267 = load ptr, ptr @stderr, align 8, !tbaa !5
  %268 = call i32 @fflush(ptr noundef %267)
  %269 = load ptr, ptr @stderr, align 8, !tbaa !5
  %270 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %269, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 268) #9
  %271 = load ptr, ptr @stderr, align 8, !tbaa !5
  %272 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %271, ptr noundef nonnull @.str.37) #9
  %273 = load ptr, ptr @stderr, align 8, !tbaa !5
  %274 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %273, ptr noundef nonnull @.str.6) #9
  %275 = load ptr, ptr @stderr, align 8, !tbaa !5
  %276 = call i32 @fflush(ptr noundef %275)
  br label %277

277:                                              ; preds = %228, %225
  %278 = call ptr @MatNd_create(i32 noundef 2, i32 noundef 3)
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %6) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(512) %6, ptr noundef nonnull align 16 dereferenceable(512) @__const.testSimpleMatrixFunctions.res, i64 512, i1 false)
  call void @MatNd_fromString(ptr noundef %278, ptr noundef nonnull %6)
  %279 = call zeroext i1 @MatNd_isEqual(ptr noundef %278, ptr noundef %204, double noundef 0.000000e+00)
  br i1 %279, label %293, label %280

280:                                              ; preds = %277
  %281 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not277 = icmp eq ptr %281, null
  br i1 %.not277, label %283, label %282

282:                                              ; preds = %280
  call void (i32, ptr, ptr, i32, ptr, ...) %281(i32 noundef 2, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 278, ptr noundef nonnull @.str.38)
  br label %283

283:                                              ; preds = %282, %280
  %284 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %285 = icmp sgt i32 %284, 1
  br i1 %285, label %286, label %293

286:                                              ; preds = %283
  %287 = load ptr, ptr @stderr, align 8, !tbaa !5
  %288 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %287, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 278) #9
  %289 = load ptr, ptr @stderr, align 8, !tbaa !5
  %290 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %289, ptr noundef nonnull @.str.38) #9
  %291 = load ptr, ptr @stderr, align 8, !tbaa !5
  %292 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %291, ptr noundef nonnull @.str.6) #9
  br label %293

293:                                              ; preds = %283, %286, %277
  %.1 = phi i8 [ 0, %286 ], [ 0, %283 ], [ %.0, %277 ]
  call void @MatNd_destroy(ptr noundef %204)
  call void @MatNd_destroy(ptr noundef %205)
  call void @MatNd_destroy(ptr noundef %278)
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %4) #10
  %294 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not278 = icmp eq ptr %294, null
  br i1 %.not278, label %296, label %295

295:                                              ; preds = %293
  call void (i32, ptr, ptr, i32, ptr, ...) %294(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 288, ptr noundef nonnull @.str.24)
  br label %296

296:                                              ; preds = %295, %293
  %297 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %298 = icmp sgt i32 %297, 1
  br i1 %298, label %299, label %306

299:                                              ; preds = %296
  %300 = load ptr, ptr @stderr, align 8, !tbaa !5
  %301 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %300, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 288) #9
  %302 = load ptr, ptr @stderr, align 8, !tbaa !5
  %303 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %302, ptr noundef nonnull @.str.24) #9
  %304 = load ptr, ptr @stderr, align 8, !tbaa !5
  %305 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %304, ptr noundef nonnull @.str.6) #9
  br label %306

306:                                              ; preds = %296, %299
  %307 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not279 = icmp eq ptr %307, null
  br i1 %.not279, label %309, label %308

308:                                              ; preds = %306
  call void (i32, ptr, ptr, i32, ptr, ...) %307(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 289, ptr noundef nonnull @.str.39)
  br label %309

309:                                              ; preds = %308, %306
  %310 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %311 = icmp sgt i32 %310, 1
  br i1 %311, label %312, label %319

312:                                              ; preds = %309
  %313 = load ptr, ptr @stderr, align 8, !tbaa !5
  %314 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %313, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 289) #9
  %315 = load ptr, ptr @stderr, align 8, !tbaa !5
  %316 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %315, ptr noundef nonnull @.str.39) #9
  %317 = load ptr, ptr @stderr, align 8, !tbaa !5
  %318 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %317, ptr noundef nonnull @.str.6) #9
  br label %319

319:                                              ; preds = %309, %312
  %320 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not280 = icmp eq ptr %320, null
  br i1 %.not280, label %322, label %321

321:                                              ; preds = %319
  call void (i32, ptr, ptr, i32, ptr, ...) %320(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 290, ptr noundef nonnull @.str.24)
  br label %322

322:                                              ; preds = %321, %319
  %323 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %324 = icmp sgt i32 %323, 1
  br i1 %324, label %325, label %332

325:                                              ; preds = %322
  %326 = load ptr, ptr @stderr, align 8, !tbaa !5
  %327 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %326, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 290) #9
  %328 = load ptr, ptr @stderr, align 8, !tbaa !5
  %329 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %328, ptr noundef nonnull @.str.24) #9
  %330 = load ptr, ptr @stderr, align 8, !tbaa !5
  %331 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %330, ptr noundef nonnull @.str.6) #9
  br label %332

332:                                              ; preds = %325, %322
  %333 = call ptr @MatNd_create(i32 noundef 10, i32 noundef 5)
  %334 = getelementptr inbounds i8, ptr %333, i64 12
  %335 = load i32, ptr %334, align 4, !tbaa !11
  %.not352 = icmp eq i32 %335, 0
  br i1 %.not352, label %._crit_edge320, label %.preheader311.lr.ph

.preheader311.lr.ph:                              ; preds = %332
  %336 = getelementptr inbounds i8, ptr %333, i64 8
  %337 = load i32, ptr %336, align 8, !tbaa !14
  %.not353 = icmp eq i32 %337, 0
  br i1 %.not353, label %._crit_edge320, label %.preheader311

.preheader311:                                    ; preds = %.preheader311.lr.ph, %._crit_edge
  %338 = phi i32 [ %347, %._crit_edge ], [ %335, %.preheader311.lr.ph ]
  %339 = phi i32 [ %348, %._crit_edge ], [ 1, %.preheader311.lr.ph ]
  %.0214319 = phi i32 [ %349, %._crit_edge ], [ 0, %.preheader311.lr.ph ]
  %.not354 = icmp eq i32 %339, 0
  br i1 %.not354, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader311
  %340 = uitofp i32 %.0214319 to double
  br label %351

._crit_edge320:                                   ; preds = %._crit_edge, %.preheader311.lr.ph, %332
  %341 = call ptr @MatNd_clone(ptr noundef nonnull %333)
  %342 = call ptr @MatNd_create(i32 noundef 10, i32 noundef 5)
  %343 = getelementptr inbounds i8, ptr %342, i64 12
  %344 = load i32, ptr %343, align 4, !tbaa !11
  %.not355 = icmp eq i32 %344, 0
  br i1 %.not355, label %._crit_edge325, label %.preheader310.lr.ph

.preheader310.lr.ph:                              ; preds = %._crit_edge320
  %345 = getelementptr inbounds i8, ptr %342, i64 8
  %346 = load i32, ptr %345, align 8, !tbaa !14
  %.not356 = icmp eq i32 %346, 0
  br i1 %.not356, label %._crit_edge325, label %.preheader310

._crit_edge.loopexit:                             ; preds = %351
  %.pre = load i32, ptr %334, align 4, !tbaa !11
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader311
  %347 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %338, %.preheader311 ]
  %348 = phi i32 [ %353, %._crit_edge.loopexit ], [ 0, %.preheader311 ]
  %349 = add nuw i32 %.0214319, 1
  %350 = icmp ult i32 %349, %347
  br i1 %350, label %.preheader311, label %._crit_edge320, !llvm.loop !15

351:                                              ; preds = %.lr.ph, %351
  %.0215318 = phi i32 [ 0, %.lr.ph ], [ %352, %351 ]
  call void @MatNd_set(ptr noundef nonnull %333, i32 noundef %.0215318, i32 noundef %.0214319, double noundef %340)
  %352 = add nuw i32 %.0215318, 1
  %353 = load i32, ptr %336, align 8, !tbaa !14
  %354 = icmp ult i32 %352, %353
  br i1 %354, label %351, label %._crit_edge.loopexit, !llvm.loop !18

.preheader310:                                    ; preds = %.preheader310.lr.ph, %._crit_edge323
  %355 = phi i32 [ %361, %._crit_edge323 ], [ %344, %.preheader310.lr.ph ]
  %356 = phi i32 [ %362, %._crit_edge323 ], [ 1, %.preheader310.lr.ph ]
  %.0218324 = phi i32 [ %363, %._crit_edge323 ], [ 0, %.preheader310.lr.ph ]
  %.not357 = icmp eq i32 %356, 0
  br i1 %.not357, label %._crit_edge323, label %.lr.ph322

.lr.ph322:                                        ; preds = %.preheader310
  %357 = add i32 %.0218324, 10
  %358 = uitofp i32 %357 to double
  br label %365

._crit_edge325:                                   ; preds = %._crit_edge323, %.preheader310.lr.ph, %._crit_edge320
  %359 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %360 = icmp sgt i32 %359, 1
  br i1 %360, label %369, label %378

._crit_edge323.loopexit:                          ; preds = %365
  %.pre373 = load i32, ptr %343, align 4, !tbaa !11
  br label %._crit_edge323

._crit_edge323:                                   ; preds = %._crit_edge323.loopexit, %.preheader310
  %361 = phi i32 [ %.pre373, %._crit_edge323.loopexit ], [ %355, %.preheader310 ]
  %362 = phi i32 [ %367, %._crit_edge323.loopexit ], [ 0, %.preheader310 ]
  %363 = add nuw i32 %.0218324, 1
  %364 = icmp ult i32 %363, %361
  br i1 %364, label %.preheader310, label %._crit_edge325, !llvm.loop !19

365:                                              ; preds = %.lr.ph322, %365
  %.0219321 = phi i32 [ 0, %.lr.ph322 ], [ %366, %365 ]
  call void @MatNd_set(ptr noundef nonnull %342, i32 noundef %.0219321, i32 noundef %.0218324, double noundef %358)
  %366 = add nuw i32 %.0219321, 1
  %367 = load i32, ptr %345, align 8, !tbaa !14
  %368 = icmp ult i32 %366, %367
  br i1 %368, label %365, label %._crit_edge323.loopexit, !llvm.loop !20

369:                                              ; preds = %._crit_edge325
  call void @MatNd_printCommentDigits(ptr noundef nonnull @.str.40, ptr noundef %341, i32 noundef 3)
  call void @MatNd_printCommentDigits(ptr noundef nonnull @.str.41, ptr noundef nonnull %342, i32 noundef 3)
  %370 = load ptr, ptr @stderr, align 8, !tbaa !5
  %371 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %370, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 312) #9
  %372 = load ptr, ptr @stderr, align 8, !tbaa !5
  %373 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %372, ptr noundef nonnull @.str.42) #9
  %374 = load ptr, ptr @stderr, align 8, !tbaa !5
  %375 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %374, ptr noundef nonnull @.str.6) #9
  %376 = load ptr, ptr @stderr, align 8, !tbaa !5
  %377 = call i32 @fflush(ptr noundef %376)
  br label %378

378:                                              ; preds = %369, %._crit_edge325
  call void @MatNd_insertColumns(ptr noundef %333, i32 noundef 1, ptr noundef nonnull %342, i32 noundef 1, i32 noundef 3)
  %379 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %380 = icmp sgt i32 %379, 1
  br i1 %380, label %381, label %.preheader309

381:                                              ; preds = %378
  call void @MatNd_printCommentDigits(ptr noundef nonnull @.str.40, ptr noundef %333, i32 noundef 3)
  br label %.preheader309

.preheader309:                                    ; preds = %381, %378
  %382 = call double @MatNd_get(ptr noundef %341, i32 noundef 0, i32 noundef 0)
  %383 = call double @MatNd_get(ptr noundef %333, i32 noundef 0, i32 noundef 0)
  %384 = fsub double %382, %383
  %385 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %384, i32 noundef 2)
  %386 = fadd double %385, 0.000000e+00
  %387 = call double @MatNd_get(ptr noundef %341, i32 noundef 1, i32 noundef 0)
  %388 = call double @MatNd_get(ptr noundef %333, i32 noundef 1, i32 noundef 0)
  %389 = fsub double %387, %388
  %390 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %389, i32 noundef 2)
  %391 = fadd double %386, %390
  %392 = call double @MatNd_get(ptr noundef %341, i32 noundef 2, i32 noundef 0)
  %393 = call double @MatNd_get(ptr noundef %333, i32 noundef 2, i32 noundef 0)
  %394 = fsub double %392, %393
  %395 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %394, i32 noundef 2)
  %396 = fadd double %391, %395
  %397 = call double @MatNd_get(ptr noundef %341, i32 noundef 3, i32 noundef 0)
  %398 = call double @MatNd_get(ptr noundef %333, i32 noundef 3, i32 noundef 0)
  %399 = fsub double %397, %398
  %400 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %399, i32 noundef 2)
  %401 = fadd double %396, %400
  %402 = call double @MatNd_get(ptr noundef %341, i32 noundef 4, i32 noundef 0)
  %403 = call double @MatNd_get(ptr noundef %333, i32 noundef 4, i32 noundef 0)
  %404 = fsub double %402, %403
  %405 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %404, i32 noundef 2)
  %406 = fadd double %401, %405
  %407 = call double @MatNd_get(ptr noundef %341, i32 noundef 5, i32 noundef 0)
  %408 = call double @MatNd_get(ptr noundef %333, i32 noundef 5, i32 noundef 0)
  %409 = fsub double %407, %408
  %410 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %409, i32 noundef 2)
  %411 = fadd double %406, %410
  %412 = call double @MatNd_get(ptr noundef %341, i32 noundef 6, i32 noundef 0)
  %413 = call double @MatNd_get(ptr noundef %333, i32 noundef 6, i32 noundef 0)
  %414 = fsub double %412, %413
  %415 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %414, i32 noundef 2)
  %416 = fadd double %411, %415
  %417 = call double @MatNd_get(ptr noundef %341, i32 noundef 7, i32 noundef 0)
  %418 = call double @MatNd_get(ptr noundef %333, i32 noundef 7, i32 noundef 0)
  %419 = fsub double %417, %418
  %420 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %419, i32 noundef 2)
  %421 = fadd double %416, %420
  %422 = call double @MatNd_get(ptr noundef %341, i32 noundef 8, i32 noundef 0)
  %423 = call double @MatNd_get(ptr noundef %333, i32 noundef 8, i32 noundef 0)
  %424 = fsub double %422, %423
  %425 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %424, i32 noundef 2)
  %426 = fadd double %421, %425
  %427 = call double @MatNd_get(ptr noundef %341, i32 noundef 9, i32 noundef 0)
  %428 = call double @MatNd_get(ptr noundef %333, i32 noundef 9, i32 noundef 0)
  %429 = fsub double %427, %428
  %430 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %429, i32 noundef 2)
  %431 = fadd double %426, %430
  %432 = call double @MatNd_get(ptr noundef %341, i32 noundef 0, i32 noundef 1)
  %433 = call double @MatNd_get(ptr noundef %333, i32 noundef 0, i32 noundef 1)
  %434 = fsub double %432, %433
  %435 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %434, i32 noundef 2)
  %436 = fadd double %431, %435
  %437 = call double @MatNd_get(ptr noundef %341, i32 noundef 1, i32 noundef 1)
  %438 = call double @MatNd_get(ptr noundef %333, i32 noundef 1, i32 noundef 1)
  %439 = fsub double %437, %438
  %440 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %439, i32 noundef 2)
  %441 = fadd double %436, %440
  %442 = call double @MatNd_get(ptr noundef %341, i32 noundef 2, i32 noundef 1)
  %443 = call double @MatNd_get(ptr noundef %333, i32 noundef 2, i32 noundef 1)
  %444 = fsub double %442, %443
  %445 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %444, i32 noundef 2)
  %446 = fadd double %441, %445
  %447 = call double @MatNd_get(ptr noundef %341, i32 noundef 3, i32 noundef 1)
  %448 = call double @MatNd_get(ptr noundef %333, i32 noundef 3, i32 noundef 1)
  %449 = fsub double %447, %448
  %450 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %449, i32 noundef 2)
  %451 = fadd double %446, %450
  %452 = call double @MatNd_get(ptr noundef %341, i32 noundef 4, i32 noundef 1)
  %453 = call double @MatNd_get(ptr noundef %333, i32 noundef 4, i32 noundef 1)
  %454 = fsub double %452, %453
  %455 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %454, i32 noundef 2)
  %456 = fadd double %451, %455
  %457 = call double @MatNd_get(ptr noundef %341, i32 noundef 5, i32 noundef 1)
  %458 = call double @MatNd_get(ptr noundef %333, i32 noundef 5, i32 noundef 1)
  %459 = fsub double %457, %458
  %460 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %459, i32 noundef 2)
  %461 = fadd double %456, %460
  %462 = call double @MatNd_get(ptr noundef %341, i32 noundef 6, i32 noundef 1)
  %463 = call double @MatNd_get(ptr noundef %333, i32 noundef 6, i32 noundef 1)
  %464 = fsub double %462, %463
  %465 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %464, i32 noundef 2)
  %466 = fadd double %461, %465
  %467 = call double @MatNd_get(ptr noundef %341, i32 noundef 7, i32 noundef 1)
  %468 = call double @MatNd_get(ptr noundef %333, i32 noundef 7, i32 noundef 1)
  %469 = fsub double %467, %468
  %470 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %469, i32 noundef 2)
  %471 = fadd double %466, %470
  %472 = call double @MatNd_get(ptr noundef %341, i32 noundef 8, i32 noundef 1)
  %473 = call double @MatNd_get(ptr noundef %333, i32 noundef 8, i32 noundef 1)
  %474 = fsub double %472, %473
  %475 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %474, i32 noundef 2)
  %476 = fadd double %471, %475
  %477 = call double @MatNd_get(ptr noundef %341, i32 noundef 9, i32 noundef 1)
  %478 = call double @MatNd_get(ptr noundef %333, i32 noundef 9, i32 noundef 1)
  %479 = fsub double %477, %478
  %480 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %479, i32 noundef 2)
  %481 = fadd double %476, %480
  br label %.preheader307

.preheader307:                                    ; preds = %.preheader309, %.preheader307
  %.2222333 = phi double [ %532, %.preheader307 ], [ %481, %.preheader309 ]
  %.0228332 = phi i32 [ %533, %.preheader307 ], [ 2, %.preheader309 ]
  %482 = add nsw i32 %.0228332, -1
  %483 = call double @MatNd_get(ptr noundef %342, i32 noundef 0, i32 noundef %482)
  %484 = call double @MatNd_get(ptr noundef %333, i32 noundef 0, i32 noundef %.0228332)
  %485 = fsub double %483, %484
  %486 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %485, i32 noundef 2)
  %487 = fadd double %.2222333, %486
  %488 = call double @MatNd_get(ptr noundef %342, i32 noundef 1, i32 noundef %482)
  %489 = call double @MatNd_get(ptr noundef %333, i32 noundef 1, i32 noundef %.0228332)
  %490 = fsub double %488, %489
  %491 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %490, i32 noundef 2)
  %492 = fadd double %487, %491
  %493 = call double @MatNd_get(ptr noundef %342, i32 noundef 2, i32 noundef %482)
  %494 = call double @MatNd_get(ptr noundef %333, i32 noundef 2, i32 noundef %.0228332)
  %495 = fsub double %493, %494
  %496 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %495, i32 noundef 2)
  %497 = fadd double %492, %496
  %498 = call double @MatNd_get(ptr noundef %342, i32 noundef 3, i32 noundef %482)
  %499 = call double @MatNd_get(ptr noundef %333, i32 noundef 3, i32 noundef %.0228332)
  %500 = fsub double %498, %499
  %501 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %500, i32 noundef 2)
  %502 = fadd double %497, %501
  %503 = call double @MatNd_get(ptr noundef %342, i32 noundef 4, i32 noundef %482)
  %504 = call double @MatNd_get(ptr noundef %333, i32 noundef 4, i32 noundef %.0228332)
  %505 = fsub double %503, %504
  %506 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %505, i32 noundef 2)
  %507 = fadd double %502, %506
  %508 = call double @MatNd_get(ptr noundef %342, i32 noundef 5, i32 noundef %482)
  %509 = call double @MatNd_get(ptr noundef %333, i32 noundef 5, i32 noundef %.0228332)
  %510 = fsub double %508, %509
  %511 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %510, i32 noundef 2)
  %512 = fadd double %507, %511
  %513 = call double @MatNd_get(ptr noundef %342, i32 noundef 6, i32 noundef %482)
  %514 = call double @MatNd_get(ptr noundef %333, i32 noundef 6, i32 noundef %.0228332)
  %515 = fsub double %513, %514
  %516 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %515, i32 noundef 2)
  %517 = fadd double %512, %516
  %518 = call double @MatNd_get(ptr noundef %342, i32 noundef 7, i32 noundef %482)
  %519 = call double @MatNd_get(ptr noundef %333, i32 noundef 7, i32 noundef %.0228332)
  %520 = fsub double %518, %519
  %521 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %520, i32 noundef 2)
  %522 = fadd double %517, %521
  %523 = call double @MatNd_get(ptr noundef %342, i32 noundef 8, i32 noundef %482)
  %524 = call double @MatNd_get(ptr noundef %333, i32 noundef 8, i32 noundef %.0228332)
  %525 = fsub double %523, %524
  %526 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %525, i32 noundef 2)
  %527 = fadd double %522, %526
  %528 = call double @MatNd_get(ptr noundef %342, i32 noundef 9, i32 noundef %482)
  %529 = call double @MatNd_get(ptr noundef %333, i32 noundef 9, i32 noundef %.0228332)
  %530 = fsub double %528, %529
  %531 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %530, i32 noundef 2)
  %532 = fadd double %527, %531
  %533 = add nuw nsw i32 %.0228332, 1
  %exitcond.not = icmp eq i32 %533, 5
  br i1 %exitcond.not, label %.preheader305, label %.preheader307, !llvm.loop !21

.preheader305:                                    ; preds = %.preheader307, %.preheader305
  %.4224337 = phi double [ %584, %.preheader305 ], [ %532, %.preheader307 ]
  %.0230336 = phi i32 [ %585, %.preheader305 ], [ 5, %.preheader307 ]
  %534 = add nsw i32 %.0230336, -3
  %535 = call double @MatNd_get(ptr noundef %341, i32 noundef 0, i32 noundef %534)
  %536 = call double @MatNd_get(ptr noundef %333, i32 noundef 0, i32 noundef %.0230336)
  %537 = fsub double %535, %536
  %538 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %537, i32 noundef 2)
  %539 = fadd double %.4224337, %538
  %540 = call double @MatNd_get(ptr noundef %341, i32 noundef 1, i32 noundef %534)
  %541 = call double @MatNd_get(ptr noundef %333, i32 noundef 1, i32 noundef %.0230336)
  %542 = fsub double %540, %541
  %543 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %542, i32 noundef 2)
  %544 = fadd double %539, %543
  %545 = call double @MatNd_get(ptr noundef %341, i32 noundef 2, i32 noundef %534)
  %546 = call double @MatNd_get(ptr noundef %333, i32 noundef 2, i32 noundef %.0230336)
  %547 = fsub double %545, %546
  %548 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %547, i32 noundef 2)
  %549 = fadd double %544, %548
  %550 = call double @MatNd_get(ptr noundef %341, i32 noundef 3, i32 noundef %534)
  %551 = call double @MatNd_get(ptr noundef %333, i32 noundef 3, i32 noundef %.0230336)
  %552 = fsub double %550, %551
  %553 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %552, i32 noundef 2)
  %554 = fadd double %549, %553
  %555 = call double @MatNd_get(ptr noundef %341, i32 noundef 4, i32 noundef %534)
  %556 = call double @MatNd_get(ptr noundef %333, i32 noundef 4, i32 noundef %.0230336)
  %557 = fsub double %555, %556
  %558 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %557, i32 noundef 2)
  %559 = fadd double %554, %558
  %560 = call double @MatNd_get(ptr noundef %341, i32 noundef 5, i32 noundef %534)
  %561 = call double @MatNd_get(ptr noundef %333, i32 noundef 5, i32 noundef %.0230336)
  %562 = fsub double %560, %561
  %563 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %562, i32 noundef 2)
  %564 = fadd double %559, %563
  %565 = call double @MatNd_get(ptr noundef %341, i32 noundef 6, i32 noundef %534)
  %566 = call double @MatNd_get(ptr noundef %333, i32 noundef 6, i32 noundef %.0230336)
  %567 = fsub double %565, %566
  %568 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %567, i32 noundef 2)
  %569 = fadd double %564, %568
  %570 = call double @MatNd_get(ptr noundef %341, i32 noundef 7, i32 noundef %534)
  %571 = call double @MatNd_get(ptr noundef %333, i32 noundef 7, i32 noundef %.0230336)
  %572 = fsub double %570, %571
  %573 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %572, i32 noundef 2)
  %574 = fadd double %569, %573
  %575 = call double @MatNd_get(ptr noundef %341, i32 noundef 8, i32 noundef %534)
  %576 = call double @MatNd_get(ptr noundef %333, i32 noundef 8, i32 noundef %.0230336)
  %577 = fsub double %575, %576
  %578 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %577, i32 noundef 2)
  %579 = fadd double %574, %578
  %580 = call double @MatNd_get(ptr noundef %341, i32 noundef 9, i32 noundef %534)
  %581 = call double @MatNd_get(ptr noundef %333, i32 noundef 9, i32 noundef %.0230336)
  %582 = fsub double %580, %581
  %583 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %582, i32 noundef 2)
  %584 = fadd double %579, %583
  %585 = add nuw nsw i32 %.0230336, 1
  %exitcond372.not = icmp eq i32 %585, 8
  br i1 %exitcond372.not, label %586, label %.preheader305, !llvm.loop !22

586:                                              ; preds = %.preheader305
  %587 = fcmp ogt double %584, 0.000000e+00
  br i1 %587, label %588, label %601

588:                                              ; preds = %586
  %589 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not281 = icmp eq ptr %589, null
  br i1 %.not281, label %591, label %590

590:                                              ; preds = %588
  call void (i32, ptr, ptr, i32, ptr, ...) %589(i32 noundef 2, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 360, ptr noundef nonnull @.str.43, double noundef %584)
  br label %591

591:                                              ; preds = %590, %588
  %592 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %593 = icmp sgt i32 %592, 1
  br i1 %593, label %594, label %601

594:                                              ; preds = %591
  %595 = load ptr, ptr @stderr, align 8, !tbaa !5
  %596 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %595, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 360) #9
  %597 = load ptr, ptr @stderr, align 8, !tbaa !5
  %598 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %597, ptr noundef nonnull @.str.43, double noundef %584) #9
  %599 = load ptr, ptr @stderr, align 8, !tbaa !5
  %600 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %599, ptr noundef nonnull @.str.6) #9
  br label %601

601:                                              ; preds = %591, %594, %586
  %.2 = phi i8 [ 0, %594 ], [ 0, %591 ], [ %.1, %586 ]
  call void @MatNd_destroy(ptr noundef %333)
  call void @MatNd_destroy(ptr noundef %341)
  call void @MatNd_destroy(ptr noundef %342)
  %602 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not282 = icmp eq ptr %602, null
  br i1 %.not282, label %604, label %603

603:                                              ; preds = %601
  call void (i32, ptr, ptr, i32, ptr, ...) %602(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 374, ptr noundef nonnull @.str.24)
  br label %604

604:                                              ; preds = %603, %601
  %605 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %606 = icmp sgt i32 %605, 1
  br i1 %606, label %607, label %614

607:                                              ; preds = %604
  %608 = load ptr, ptr @stderr, align 8, !tbaa !5
  %609 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %608, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 374) #9
  %610 = load ptr, ptr @stderr, align 8, !tbaa !5
  %611 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %610, ptr noundef nonnull @.str.24) #9
  %612 = load ptr, ptr @stderr, align 8, !tbaa !5
  %613 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %612, ptr noundef nonnull @.str.6) #9
  br label %614

614:                                              ; preds = %604, %607
  %615 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not283 = icmp eq ptr %615, null
  br i1 %.not283, label %617, label %616

616:                                              ; preds = %614
  call void (i32, ptr, ptr, i32, ptr, ...) %615(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 375, ptr noundef nonnull @.str.44)
  br label %617

617:                                              ; preds = %616, %614
  %618 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %619 = icmp sgt i32 %618, 1
  br i1 %619, label %620, label %627

620:                                              ; preds = %617
  %621 = load ptr, ptr @stderr, align 8, !tbaa !5
  %622 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %621, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 375) #9
  %623 = load ptr, ptr @stderr, align 8, !tbaa !5
  %624 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %623, ptr noundef nonnull @.str.44) #9
  %625 = load ptr, ptr @stderr, align 8, !tbaa !5
  %626 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %625, ptr noundef nonnull @.str.6) #9
  br label %627

627:                                              ; preds = %617, %620
  %628 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not284 = icmp eq ptr %628, null
  br i1 %.not284, label %630, label %629

629:                                              ; preds = %627
  call void (i32, ptr, ptr, i32, ptr, ...) %628(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 376, ptr noundef nonnull @.str.45)
  br label %630

630:                                              ; preds = %629, %627
  %631 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %632 = icmp sgt i32 %631, 1
  br i1 %632, label %633, label %640

633:                                              ; preds = %630
  %634 = load ptr, ptr @stderr, align 8, !tbaa !5
  %635 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %634, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 376) #9
  %636 = load ptr, ptr @stderr, align 8, !tbaa !5
  %637 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %636, ptr noundef nonnull @.str.45) #9
  %638 = load ptr, ptr @stderr, align 8, !tbaa !5
  %639 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %638, ptr noundef nonnull @.str.6) #9
  br label %640

640:                                              ; preds = %630, %633
  %641 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not285 = icmp eq ptr %641, null
  br i1 %.not285, label %643, label %642

642:                                              ; preds = %640
  call void (i32, ptr, ptr, i32, ptr, ...) %641(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 377, ptr noundef nonnull @.str.46)
  br label %643

643:                                              ; preds = %642, %640
  %644 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %645 = icmp sgt i32 %644, 1
  br i1 %645, label %646, label %653

646:                                              ; preds = %643
  %647 = load ptr, ptr @stderr, align 8, !tbaa !5
  %648 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %647, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 377) #9
  %649 = load ptr, ptr @stderr, align 8, !tbaa !5
  %650 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %649, ptr noundef nonnull @.str.46) #9
  %651 = load ptr, ptr @stderr, align 8, !tbaa !5
  %652 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %651, ptr noundef nonnull @.str.6) #9
  br label %653

653:                                              ; preds = %643, %646
  %654 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not286 = icmp eq ptr %654, null
  br i1 %.not286, label %656, label %655

655:                                              ; preds = %653
  call void (i32, ptr, ptr, i32, ptr, ...) %654(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 378, ptr noundef nonnull @.str.24)
  br label %656

656:                                              ; preds = %655, %653
  %657 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %658 = icmp sgt i32 %657, 1
  br i1 %658, label %659, label %666

659:                                              ; preds = %656
  %660 = load ptr, ptr @stderr, align 8, !tbaa !5
  %661 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %660, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 378) #9
  %662 = load ptr, ptr @stderr, align 8, !tbaa !5
  %663 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %662, ptr noundef nonnull @.str.24) #9
  %664 = load ptr, ptr @stderr, align 8, !tbaa !5
  %665 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %664, ptr noundef nonnull @.str.6) #9
  br label %666

666:                                              ; preds = %659, %656
  %667 = call ptr @MatNd_create(i32 noundef 10, i32 noundef 10)
  %668 = call ptr @MatNd_create(i32 noundef 10, i32 noundef 10)
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %7) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(512) %7, ptr noundef nonnull align 16 dereferenceable(512) @__const.testSimpleMatrixFunctions.matrix, i64 512, i1 false)
  call void @MatNd_fromString(ptr noundef %667, ptr noundef nonnull %7)
  %669 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %670 = icmp sgt i32 %669, 1
  br i1 %670, label %671, label %680

671:                                              ; preds = %666
  %672 = load ptr, ptr @stderr, align 8, !tbaa !5
  %673 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %672, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 392) #9
  %674 = load ptr, ptr @stderr, align 8, !tbaa !5
  %675 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %674, ptr noundef nonnull @.str.30) #9
  %676 = load ptr, ptr @stderr, align 8, !tbaa !5
  %677 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %676, ptr noundef nonnull @.str.6) #9
  %678 = load ptr, ptr @stderr, align 8, !tbaa !5
  %679 = call i32 @fflush(ptr noundef %678)
  call void @MatNd_print(ptr noundef %667)
  br label %680

680:                                              ; preds = %666, %671
  %681 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not287 = icmp eq ptr %681, null
  br i1 %.not287, label %683, label %682

682:                                              ; preds = %680
  call void (i32, ptr, ptr, i32, ptr, ...) %681(i32 noundef 2, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 396, ptr noundef nonnull @.str.48, ptr noundef nonnull @.str.47)
  br label %683

683:                                              ; preds = %682, %680
  %684 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %685 = icmp sgt i32 %684, 1
  br i1 %685, label %686, label %693

686:                                              ; preds = %683
  %687 = load ptr, ptr @stderr, align 8, !tbaa !5
  %688 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %687, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 396) #9
  %689 = load ptr, ptr @stderr, align 8, !tbaa !5
  %690 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %689, ptr noundef nonnull @.str.48, ptr noundef nonnull @.str.47) #9
  %691 = load ptr, ptr @stderr, align 8, !tbaa !5
  %692 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %691, ptr noundef nonnull @.str.6) #9
  br label %693

693:                                              ; preds = %686, %683
  %694 = call zeroext i1 @MatNd_toFile(ptr noundef %667, ptr noundef nonnull @.str.47)
  %695 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not288 = icmp eq ptr %695, null
  br i1 %.not288, label %697, label %696

696:                                              ; preds = %693
  call void (i32, ptr, ptr, i32, ptr, ...) %695(i32 noundef 2, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 399, ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.47)
  br label %697

697:                                              ; preds = %696, %693
  %698 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %699 = icmp sgt i32 %698, 1
  br i1 %699, label %700, label %707

700:                                              ; preds = %697
  %701 = load ptr, ptr @stderr, align 8, !tbaa !5
  %702 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %701, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 399) #9
  %703 = load ptr, ptr @stderr, align 8, !tbaa !5
  %704 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %703, ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.47) #9
  %705 = load ptr, ptr @stderr, align 8, !tbaa !5
  %706 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %705, ptr noundef nonnull @.str.6) #9
  br label %707

707:                                              ; preds = %700, %697
  %708 = call zeroext i1 @MatNd_fromFile(ptr noundef %668, ptr noundef nonnull @.str.47)
  %709 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %710 = icmp sgt i32 %709, 1
  br i1 %710, label %711, label %720

711:                                              ; preds = %707
  %712 = load ptr, ptr @stderr, align 8, !tbaa !5
  %713 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %712, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 404) #9
  %714 = load ptr, ptr @stderr, align 8, !tbaa !5
  %715 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %714, ptr noundef nonnull @.str.31) #9
  %716 = load ptr, ptr @stderr, align 8, !tbaa !5
  %717 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %716, ptr noundef nonnull @.str.6) #9
  %718 = load ptr, ptr @stderr, align 8, !tbaa !5
  %719 = call i32 @fflush(ptr noundef %718)
  call void @MatNd_print(ptr noundef %668)
  br label %720

720:                                              ; preds = %711, %707
  %721 = call zeroext i1 @MatNd_isEqual(ptr noundef %667, ptr noundef %668, double noundef 0.000000e+00)
  br i1 %721, label %734, label %722

722:                                              ; preds = %720
  %723 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %724 = icmp sgt i32 %723, 1
  br i1 %724, label %725, label %734

725:                                              ; preds = %722
  %726 = load ptr, ptr @stderr, align 8, !tbaa !5
  %727 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %726, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 413) #9
  %728 = load ptr, ptr @stderr, align 8, !tbaa !5
  %729 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %728, ptr noundef nonnull @.str.50) #9
  %730 = load ptr, ptr @stderr, align 8, !tbaa !5
  %731 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %730, ptr noundef nonnull @.str.6) #9
  %732 = load ptr, ptr @stderr, align 8, !tbaa !5
  %733 = call i32 @fflush(ptr noundef %732)
  call void @MatNd_print(ptr noundef %667)
  call void @MatNd_print(ptr noundef %668)
  br label %734

734:                                              ; preds = %722, %725, %720
  %.3 = phi i8 [ %.2, %720 ], [ 0, %725 ], [ 0, %722 ]
  call void @MatNd_destroy(ptr noundef %667)
  call void @MatNd_destroy(ptr noundef %668)
  %735 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not289 = icmp eq ptr %735, null
  br i1 %.not289, label %737, label %736

736:                                              ; preds = %734
  call void (i32, ptr, ptr, i32, ptr, ...) %735(i32 noundef 2, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 424, ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.47)
  br label %737

737:                                              ; preds = %736, %734
  %738 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %739 = icmp sgt i32 %738, 1
  br i1 %739, label %740, label %747

740:                                              ; preds = %737
  %741 = load ptr, ptr @stderr, align 8, !tbaa !5
  %742 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %741, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 424) #9
  %743 = load ptr, ptr @stderr, align 8, !tbaa !5
  %744 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %743, ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.47) #9
  %745 = load ptr, ptr @stderr, align 8, !tbaa !5
  %746 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %745, ptr noundef nonnull @.str.6) #9
  br label %747

747:                                              ; preds = %740, %737
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %8) #10
  %748 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %8, ptr noundef nonnull dereferenceable(1) @.str.52) #10
  %749 = call ptr @strcat(ptr noundef nonnull dereferenceable(1) %8, ptr noundef nonnull dereferenceable(1) @.str.47) #10
  %750 = call i32 @system(ptr noundef nonnull %8)
  %751 = icmp eq i32 %750, -1
  br i1 %751, label %752, label %765

752:                                              ; preds = %747
  %753 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not290 = icmp eq ptr %753, null
  br i1 %.not290, label %755, label %754

754:                                              ; preds = %752
  call void (i32, ptr, ptr, i32, ptr, ...) %753(i32 noundef 2, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 436, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.47)
  br label %755

755:                                              ; preds = %754, %752
  %756 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %757 = icmp sgt i32 %756, 1
  br i1 %757, label %758, label %765

758:                                              ; preds = %755
  %759 = load ptr, ptr @stderr, align 8, !tbaa !5
  %760 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %759, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 436) #9
  %761 = load ptr, ptr @stderr, align 8, !tbaa !5
  %762 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %761, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.47) #9
  %763 = load ptr, ptr @stderr, align 8, !tbaa !5
  %764 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %763, ptr noundef nonnull @.str.6) #9
  br label %765

765:                                              ; preds = %755, %758, %747
  %.4 = phi i8 [ %.3, %747 ], [ 0, %758 ], [ 0, %755 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %7) #10
  %766 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not291 = icmp eq ptr %766, null
  br i1 %.not291, label %768, label %767

767:                                              ; preds = %765
  call void (i32, ptr, ptr, i32, ptr, ...) %766(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 444, ptr noundef nonnull @.str.24)
  br label %768

768:                                              ; preds = %767, %765
  %769 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %770 = icmp sgt i32 %769, 1
  br i1 %770, label %771, label %778

771:                                              ; preds = %768
  %772 = load ptr, ptr @stderr, align 8, !tbaa !5
  %773 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %772, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 444) #9
  %774 = load ptr, ptr @stderr, align 8, !tbaa !5
  %775 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %774, ptr noundef nonnull @.str.24) #9
  %776 = load ptr, ptr @stderr, align 8, !tbaa !5
  %777 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %776, ptr noundef nonnull @.str.6) #9
  br label %778

778:                                              ; preds = %768, %771
  %779 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not292 = icmp eq ptr %779, null
  br i1 %.not292, label %781, label %780

780:                                              ; preds = %778
  call void (i32, ptr, ptr, i32, ptr, ...) %779(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 445, ptr noundef nonnull @.str.54)
  br label %781

781:                                              ; preds = %780, %778
  %782 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %783 = icmp sgt i32 %782, 1
  br i1 %783, label %784, label %791

784:                                              ; preds = %781
  %785 = load ptr, ptr @stderr, align 8, !tbaa !5
  %786 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %785, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 445) #9
  %787 = load ptr, ptr @stderr, align 8, !tbaa !5
  %788 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %787, ptr noundef nonnull @.str.54) #9
  %789 = load ptr, ptr @stderr, align 8, !tbaa !5
  %790 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %789, ptr noundef nonnull @.str.6) #9
  br label %791

791:                                              ; preds = %781, %784
  %792 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not293 = icmp eq ptr %792, null
  br i1 %.not293, label %794, label %793

793:                                              ; preds = %791
  call void (i32, ptr, ptr, i32, ptr, ...) %792(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 446, ptr noundef nonnull @.str.24)
  br label %794

794:                                              ; preds = %793, %791
  %795 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %796 = icmp sgt i32 %795, 1
  br i1 %796, label %797, label %804

797:                                              ; preds = %794
  %798 = load ptr, ptr @stderr, align 8, !tbaa !5
  %799 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %798, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 446) #9
  %800 = load ptr, ptr @stderr, align 8, !tbaa !5
  %801 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %800, ptr noundef nonnull @.str.24) #9
  %802 = load ptr, ptr @stderr, align 8, !tbaa !5
  %803 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %802, ptr noundef nonnull @.str.6) #9
  br label %804

804:                                              ; preds = %797, %794
  %805 = call ptr @MatNd_create(i32 noundef 5, i32 noundef 2)
  %806 = getelementptr inbounds i8, ptr %805, i64 8
  %807 = load i32, ptr %806, align 8, !tbaa !14
  %.not358 = icmp eq i32 %807, 0
  br i1 %.not358, label %._crit_edge342, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %804
  %808 = getelementptr inbounds i8, ptr %805, i64 12
  %809 = load i32, ptr %808, align 4, !tbaa !11
  %.not359 = icmp eq i32 %809, 0
  br i1 %.not359, label %._crit_edge342, label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge340
  %810 = phi i32 [ %814, %._crit_edge340 ], [ %807, %.preheader.lr.ph ]
  %811 = phi i32 [ %815, %._crit_edge340 ], [ %809, %.preheader.lr.ph ]
  %.0217341 = phi i32 [ %816, %._crit_edge340 ], [ 0, %.preheader.lr.ph ]
  %.not360 = icmp eq i32 %811, 0
  br i1 %.not360, label %._crit_edge340, label %.lr.ph339

._crit_edge342:                                   ; preds = %._crit_edge340, %.preheader.lr.ph, %804
  %812 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %813 = icmp sgt i32 %812, 1
  br i1 %813, label %825, label %834

._crit_edge340.loopexit:                          ; preds = %.lr.ph339
  %.pre374 = load i32, ptr %806, align 8, !tbaa !14
  br label %._crit_edge340

._crit_edge340:                                   ; preds = %._crit_edge340.loopexit, %.preheader
  %814 = phi i32 [ %.pre374, %._crit_edge340.loopexit ], [ %810, %.preheader ]
  %815 = phi i32 [ %823, %._crit_edge340.loopexit ], [ 0, %.preheader ]
  %816 = add nuw i32 %.0217341, 1
  %817 = icmp ult i32 %816, %814
  br i1 %817, label %.preheader, label %._crit_edge342, !llvm.loop !23

.lr.ph339:                                        ; preds = %.preheader, %.lr.ph339
  %818 = phi i32 [ %823, %.lr.ph339 ], [ %811, %.preheader ]
  %.0216338 = phi i32 [ %822, %.lr.ph339 ], [ 0, %.preheader ]
  %819 = mul i32 %818, %.0217341
  %820 = add i32 %819, %.0216338
  %821 = uitofp i32 %820 to double
  call void @MatNd_set(ptr noundef nonnull %805, i32 noundef %.0217341, i32 noundef %.0216338, double noundef %821)
  %822 = add nuw i32 %.0216338, 1
  %823 = load i32, ptr %808, align 4, !tbaa !11
  %824 = icmp ult i32 %822, %823
  br i1 %824, label %.lr.ph339, label %._crit_edge340.loopexit, !llvm.loop !24

825:                                              ; preds = %._crit_edge342
  %826 = load ptr, ptr @stderr, align 8, !tbaa !5
  %827 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %826, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 466) #9
  %828 = load ptr, ptr @stderr, align 8, !tbaa !5
  %829 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %828, ptr noundef nonnull @.str.30) #9
  %830 = load ptr, ptr @stderr, align 8, !tbaa !5
  %831 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %830, ptr noundef nonnull @.str.6) #9
  %832 = load ptr, ptr @stderr, align 8, !tbaa !5
  %833 = call i32 @fflush(ptr noundef %832)
  call void @MatNd_print(ptr noundef nonnull %805)
  br label %834

834:                                              ; preds = %._crit_edge342, %825
  %835 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not294 = icmp eq ptr %835, null
  br i1 %.not294, label %837, label %836

836:                                              ; preds = %834
  call void (i32, ptr, ptr, i32, ptr, ...) %835(i32 noundef 2, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 470, ptr noundef nonnull @.str.48, ptr noundef nonnull @.str.55)
  br label %837

837:                                              ; preds = %836, %834
  %838 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %839 = icmp sgt i32 %838, 1
  br i1 %839, label %840, label %847

840:                                              ; preds = %837
  %841 = load ptr, ptr @stderr, align 8, !tbaa !5
  %842 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %841, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 470) #9
  %843 = load ptr, ptr @stderr, align 8, !tbaa !5
  %844 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %843, ptr noundef nonnull @.str.48, ptr noundef nonnull @.str.55) #9
  %845 = load ptr, ptr @stderr, align 8, !tbaa !5
  %846 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %845, ptr noundef nonnull @.str.6) #9
  br label %847

847:                                              ; preds = %840, %837
  %848 = call zeroext i1 @MatNd_toFile(ptr noundef nonnull %805, ptr noundef nonnull @.str.55)
  %849 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not295 = icmp eq ptr %849, null
  br i1 %.not295, label %851, label %850

850:                                              ; preds = %847
  call void (i32, ptr, ptr, i32, ptr, ...) %849(i32 noundef 2, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 473, ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.55)
  br label %851

851:                                              ; preds = %850, %847
  %852 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %853 = icmp sgt i32 %852, 1
  br i1 %853, label %854, label %861

854:                                              ; preds = %851
  %855 = load ptr, ptr @stderr, align 8, !tbaa !5
  %856 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %855, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 473) #9
  %857 = load ptr, ptr @stderr, align 8, !tbaa !5
  %858 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %857, ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.55) #9
  %859 = load ptr, ptr @stderr, align 8, !tbaa !5
  %860 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %859, ptr noundef nonnull @.str.6) #9
  br label %861

861:                                              ; preds = %854, %851
  call void @MatNd_appendToFile(ptr noundef nonnull %805, ptr noundef nonnull @.str.55)
  %862 = call ptr @MatNd_createFromFile(ptr noundef nonnull @.str.55)
  %.not296 = icmp eq ptr %862, null
  br i1 %.not296, label %863, label %866

863:                                              ; preds = %861
  %864 = load ptr, ptr @stderr, align 8, !tbaa !5
  %865 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %864, ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 477, ptr noundef nonnull @.str.41) #9
  call void @print_trace()
  call void @abort() #11
  unreachable

866:                                              ; preds = %861
  %867 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %868 = icmp sgt i32 %867, 1
  br i1 %868, label %869, label %870

869:                                              ; preds = %866
  call void @MatNd_printCommentDigits(ptr noundef nonnull @.str.58, ptr noundef nonnull %862, i32 noundef 3)
  br label %870

870:                                              ; preds = %866, %869
  %871 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not297 = icmp eq ptr %871, null
  br i1 %.not297, label %873, label %872

872:                                              ; preds = %870
  call void (i32, ptr, ptr, i32, ptr, ...) %871(i32 noundef 2, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 484, ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.55)
  br label %873

873:                                              ; preds = %872, %870
  %874 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %875 = icmp sgt i32 %874, 1
  br i1 %875, label %876, label %883

876:                                              ; preds = %873
  %877 = load ptr, ptr @stderr, align 8, !tbaa !5
  %878 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %877, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 484) #9
  %879 = load ptr, ptr @stderr, align 8, !tbaa !5
  %880 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %879, ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.55) #9
  %881 = load ptr, ptr @stderr, align 8, !tbaa !5
  %882 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %881, ptr noundef nonnull @.str.6) #9
  br label %883

883:                                              ; preds = %876, %873
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %9) #10
  %884 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.52) #10
  %885 = call ptr @strcat(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.55) #10
  %886 = call i32 @system(ptr noundef nonnull %9)
  %887 = icmp eq i32 %886, -1
  br i1 %887, label %888, label %901

888:                                              ; preds = %883
  %889 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not298 = icmp eq ptr %889, null
  br i1 %.not298, label %891, label %890

890:                                              ; preds = %888
  call void (i32, ptr, ptr, i32, ptr, ...) %889(i32 noundef 2, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 496, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.55)
  br label %891

891:                                              ; preds = %890, %888
  %892 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %893 = icmp sgt i32 %892, 1
  br i1 %893, label %894, label %901

894:                                              ; preds = %891
  %895 = load ptr, ptr @stderr, align 8, !tbaa !5
  %896 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %895, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 496) #9
  %897 = load ptr, ptr @stderr, align 8, !tbaa !5
  %898 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %897, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.55) #9
  %899 = load ptr, ptr @stderr, align 8, !tbaa !5
  %900 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %899, ptr noundef nonnull @.str.6) #9
  br label %901

901:                                              ; preds = %891, %894, %883
  %.5 = phi i8 [ %.4, %883 ], [ 0, %894 ], [ 0, %891 ]
  call void @MatNd_destroy(ptr noundef nonnull %805)
  call void @MatNd_destroy(ptr noundef nonnull %862)
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %9) #10
  %902 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not299 = icmp eq ptr %902, null
  br i1 %.not299, label %904, label %903

903:                                              ; preds = %901
  call void (i32, ptr, ptr, i32, ptr, ...) %902(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 506, ptr noundef nonnull @.str.24)
  br label %904

904:                                              ; preds = %903, %901
  %905 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %906 = icmp sgt i32 %905, 1
  br i1 %906, label %907, label %914

907:                                              ; preds = %904
  %908 = load ptr, ptr @stderr, align 8, !tbaa !5
  %909 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %908, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 506) #9
  %910 = load ptr, ptr @stderr, align 8, !tbaa !5
  %911 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %910, ptr noundef nonnull @.str.24) #9
  %912 = load ptr, ptr @stderr, align 8, !tbaa !5
  %913 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %912, ptr noundef nonnull @.str.6) #9
  br label %914

914:                                              ; preds = %904, %907
  %915 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not300 = icmp eq ptr %915, null
  br i1 %.not300, label %917, label %916

916:                                              ; preds = %914
  call void (i32, ptr, ptr, i32, ptr, ...) %915(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 507, ptr noundef nonnull @.str.59)
  br label %917

917:                                              ; preds = %916, %914
  %918 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %919 = icmp sgt i32 %918, 1
  br i1 %919, label %920, label %927

920:                                              ; preds = %917
  %921 = load ptr, ptr @stderr, align 8, !tbaa !5
  %922 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %921, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 507) #9
  %923 = load ptr, ptr @stderr, align 8, !tbaa !5
  %924 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %923, ptr noundef nonnull @.str.59) #9
  %925 = load ptr, ptr @stderr, align 8, !tbaa !5
  %926 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %925, ptr noundef nonnull @.str.6) #9
  br label %927

927:                                              ; preds = %917, %920
  %928 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not301 = icmp eq ptr %928, null
  br i1 %.not301, label %930, label %929

929:                                              ; preds = %927
  call void (i32, ptr, ptr, i32, ptr, ...) %928(i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 508, ptr noundef nonnull @.str.24)
  br label %930

930:                                              ; preds = %929, %927
  %931 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %932 = icmp sgt i32 %931, 1
  br i1 %932, label %933, label %940

933:                                              ; preds = %930
  %934 = load ptr, ptr @stderr, align 8, !tbaa !5
  %935 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %934, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 508) #9
  %936 = load ptr, ptr @stderr, align 8, !tbaa !5
  %937 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %936, ptr noundef nonnull @.str.24) #9
  %938 = load ptr, ptr @stderr, align 8, !tbaa !5
  %939 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %938, ptr noundef nonnull @.str.6) #9
  br label %940

940:                                              ; preds = %933, %930
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #10
  store i32 30, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #10
  store i32 10, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #10
  store i32 1, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #10
  call void @_ZN3Rcs13CmdLineParserC1EiPPc(ptr noundef nonnull align 1 dereferenceable(1) %13, i32 noundef %0, ptr noundef %1)
  %941 = call noundef zeroext i1 (ptr, ptr, ptr, ptr, ...) @_ZNK3Rcs13CmdLineParser11getArgumentEPKcPiS2_z(ptr noundef nonnull align 1 dereferenceable(1) %13, ptr noundef nonnull @.str.60, ptr noundef nonnull %10, ptr noundef nonnull @.str.61)
  %942 = call noundef zeroext i1 (ptr, ptr, ptr, ptr, ...) @_ZNK3Rcs13CmdLineParser11getArgumentEPKcPiS2_z(ptr noundef nonnull align 1 dereferenceable(1) %13, ptr noundef nonnull @.str.62, ptr noundef nonnull %11, ptr noundef nonnull @.str.63)
  %943 = call noundef zeroext i1 (ptr, ptr, ptr, ptr, ...) @_ZNK3Rcs13CmdLineParser11getArgumentEPKcPiS2_z(ptr noundef nonnull align 1 dereferenceable(1) %13, ptr noundef nonnull @.str.64, ptr noundef nonnull %12, ptr noundef nonnull @.str.65)
  %944 = call noundef zeroext i1 (ptr, ptr, ptr, ...) @_ZNK3Rcs13CmdLineParser11hasArgumentEPKcS2_z(ptr noundef nonnull align 1 dereferenceable(1) %13, ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.67)
  %945 = load i32, ptr %10, align 4, !tbaa !9
  %946 = load i32, ptr %11, align 4, !tbaa !9
  %947 = call ptr @MatNd_create(i32 noundef %945, i32 noundef %946)
  call void @MatNd_setRandom(ptr noundef %947, double noundef -1.000000e+00, double noundef 1.000000e+00)
  br i1 %944, label %951, label %948

948:                                              ; preds = %940
  %949 = load i32, ptr %11, align 4, !tbaa !9
  %950 = call ptr @MatNd_create(i32 noundef %949, i32 noundef 1)
  call void @MatNd_setRandom(ptr noundef %950, double noundef -1.000000e+00, double noundef 1.000000e+00)
  br label %951

951:                                              ; preds = %948, %940
  %.0212 = phi ptr [ %950, %948 ], [ null, %940 ]
  %952 = load i32, ptr %10, align 4, !tbaa !9
  %953 = call ptr @MatNd_create(i32 noundef %952, i32 noundef %952)
  %954 = load i32, ptr %10, align 4, !tbaa !9
  %955 = call ptr @MatNd_create(i32 noundef %954, i32 noundef %954)
  %956 = call double @Timer_getTime()
  %957 = load i32, ptr %12, align 4, !tbaa !9
  %958 = icmp sgt i32 %957, 0
  br i1 %958, label %.lr.ph345, label %._crit_edge346

._crit_edge346:                                   ; preds = %.lr.ph345, %951
  %.lcssa313 = phi i32 [ %957, %951 ], [ %968, %.lr.ph345 ]
  %959 = sitofp i32 %.lcssa313 to double
  %960 = fdiv double 1.000000e+00, %959
  %961 = call double @Timer_getTime()
  %962 = fsub double %961, %956
  %963 = fmul double %960, %962
  %964 = call double @Timer_getTime()
  %965 = load i32, ptr %12, align 4, !tbaa !9
  %966 = icmp sgt i32 %965, 0
  br i1 %966, label %.lr.ph349, label %._crit_edge350

.lr.ph345:                                        ; preds = %951, %.lr.ph345
  %.0208343 = phi i32 [ %967, %.lr.ph345 ], [ 0, %951 ]
  call void @_ZL23MatNd_sqrMulABAt_simpleP6_MatNdPKS_S2_(ptr noundef %953, ptr noundef %947, ptr noundef %.0212)
  %967 = add nuw nsw i32 %.0208343, 1
  %968 = load i32, ptr %12, align 4, !tbaa !9
  %969 = icmp slt i32 %967, %968
  br i1 %969, label %.lr.ph345, label %._crit_edge346, !llvm.loop !25

._crit_edge350:                                   ; preds = %.lr.ph349, %._crit_edge346
  %.lcssa = phi i32 [ %965, %._crit_edge346 ], [ %978, %.lr.ph349 ]
  %970 = sitofp i32 %.lcssa to double
  %971 = fdiv double 1.000000e+00, %970
  %972 = call double @Timer_getTime()
  %973 = fsub double %972, %964
  %974 = fmul double %971, %973
  %975 = call double @MatNd_msqError(ptr noundef %953, ptr noundef %955)
  %976 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not302 = icmp eq ptr %976, null
  br i1 %.not302, label %983, label %980

.lr.ph349:                                        ; preds = %._crit_edge346, %.lr.ph349
  %.0207347 = phi i32 [ %977, %.lr.ph349 ], [ 0, %._crit_edge346 ]
  call void @MatNd_sqrMulABAt(ptr noundef %955, ptr noundef %947, ptr noundef %.0212)
  %977 = add nuw nsw i32 %.0207347, 1
  %978 = load i32, ptr %12, align 4, !tbaa !9
  %979 = icmp slt i32 %977, %978
  br i1 %979, label %.lr.ph349, label %._crit_edge350, !llvm.loop !26

980:                                              ; preds = %._crit_edge350
  %981 = fmul double %963, 1.000000e+06
  %982 = fmul double %974, 1.000000e+06
  call void (i32, ptr, ptr, i32, ptr, ...) %976(i32 noundef 2, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 547, ptr noundef nonnull @.str.68, double noundef %981, double noundef %982, double noundef %975)
  br label %983

983:                                              ; preds = %980, %._crit_edge350
  %984 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %985 = icmp sgt i32 %984, 1
  br i1 %985, label %986, label %.thread

986:                                              ; preds = %983
  %987 = load ptr, ptr @stderr, align 8, !tbaa !5
  %988 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %987, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 547) #9
  %989 = load ptr, ptr @stderr, align 8, !tbaa !5
  %990 = fmul double %963, 1.000000e+06
  %991 = fmul double %974, 1.000000e+06
  %992 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %989, ptr noundef nonnull @.str.68, double noundef %990, double noundef %991, double noundef %975) #9
  %993 = load ptr, ptr @stderr, align 8, !tbaa !5
  %994 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %993, ptr noundef nonnull @.str.6) #9
  %.pr = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %995 = icmp sgt i32 %.pr, 2
  br i1 %995, label %996, label %.thread

996:                                              ; preds = %986
  call void @MatNd_printTwoArraysDiff(ptr noundef %953, ptr noundef %955, i32 noundef 3)
  br label %.thread

.thread:                                          ; preds = %983, %996, %986
  %997 = fcmp ogt double %975, 1.000000e-08
  br i1 %997, label %998, label %1011

998:                                              ; preds = %.thread
  %999 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not303 = icmp eq ptr %999, null
  br i1 %.not303, label %1001, label %1000

1000:                                             ; preds = %998
  call void (i32, ptr, ptr, i32, ptr, ...) %999(i32 noundef 2, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 556, ptr noundef nonnull @.str.69, double noundef %975)
  br label %1001

1001:                                             ; preds = %1000, %998
  %1002 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %1003 = icmp sgt i32 %1002, 1
  br i1 %1003, label %1004, label %1011

1004:                                             ; preds = %1001
  %1005 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1006 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1005, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 556) #9
  %1007 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1008 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1007, ptr noundef nonnull @.str.69, double noundef %975) #9
  %1009 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1010 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1009, ptr noundef nonnull @.str.6) #9
  br label %1011

1011:                                             ; preds = %1001, %1004, %.thread
  %.6 = phi i8 [ %.5, %.thread ], [ 0, %1004 ], [ 0, %1001 ]
  call void @MatNd_destroy(ptr noundef %947)
  call void @MatNd_destroy(ptr noundef %.0212)
  call void @MatNd_destroy(ptr noundef %953)
  call void @MatNd_destroy(ptr noundef %955)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #10
  %1012 = load ptr, ptr @RCS_GLOBAL_RLOG_CB, align 8, !tbaa !5
  %.not304 = icmp eq ptr %1012, null
  br i1 %.not304, label %1015, label %1013

1013:                                             ; preds = %1011
  %1014 = trunc nuw i8 %.6 to i1
  %.str.20..str.21 = select i1 %1014, ptr @.str.20, ptr @.str.21
  call void (i32, ptr, ptr, i32, ptr, ...) %1012(i32 noundef 1, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 567, ptr noundef nonnull @.str.70, ptr noundef nonnull %.str.20..str.21)
  br label %1015

1015:                                             ; preds = %1013, %1011
  %1016 = load i32, ptr @RcsLogLevel, align 4, !tbaa !9
  %1017 = icmp sgt i32 %1016, 0
  br i1 %1017, label %1018, label %._crit_edge375

._crit_edge375:                                   ; preds = %1015
  %.pre376 = trunc nuw i8 %.6 to i1
  br label %1026

1018:                                             ; preds = %1015
  %1019 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1020 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1019, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__.testSimpleMatrixFunctions, i32 noundef 567) #9
  %1021 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1022 = trunc nuw i8 %.6 to i1
  %.str.20..str.211 = select i1 %1022, ptr @.str.20, ptr @.str.21
  %1023 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1021, ptr noundef nonnull @.str.70, ptr noundef nonnull %.str.20..str.211) #9
  %1024 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1025 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1024, ptr noundef nonnull @.str.6) #9
  br label %1026

1026:                                             ; preds = %._crit_edge375, %1018
  %.pre-phi = phi i1 [ %.pre376, %._crit_edge375 ], [ %1022, %1018 ]
  ret i1 %.pre-phi
}

declare ptr @MatNd_create(i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @MatNd_setRandom(ptr noundef, double noundef, double noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4

declare void @MatNd_copyColumns(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @MatNd_printCommentDigits(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare double @MatNd_get(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef, i32 noundef) local_unnamed_addr #5

declare void @MatNd_destroy(ptr noundef) local_unnamed_addr #2

declare void @MatNd_fromString(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare noundef i32 @fflush(ptr nocapture noundef) local_unnamed_addr #1

declare void @MatNd_print(ptr noundef) local_unnamed_addr #2

declare void @MatNd_postMulDiagSelf(ptr noundef, ptr noundef) local_unnamed_addr #2

declare zeroext i1 @MatNd_isEqual(ptr noundef, ptr noundef, double noundef) local_unnamed_addr #2

declare void @MatNd_set(ptr noundef, i32 noundef, i32 noundef, double noundef) local_unnamed_addr #2

declare ptr @MatNd_clone(ptr noundef) local_unnamed_addr #2

declare void @MatNd_insertColumns(ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare zeroext i1 @MatNd_toFile(ptr noundef, ptr noundef) local_unnamed_addr #2

declare zeroext i1 @MatNd_fromFile(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strcpy(ptr noalias noundef returned writeonly, ptr noalias nocapture noundef readonly) local_unnamed_addr #6

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strcat(ptr noalias noundef returned, ptr noalias nocapture noundef readonly) local_unnamed_addr #6

; Function Attrs: nofree
declare noundef i32 @system(ptr nocapture noundef readonly) local_unnamed_addr #7

declare void @MatNd_appendToFile(ptr noundef, ptr noundef) local_unnamed_addr #2

declare ptr @MatNd_createFromFile(ptr noundef) local_unnamed_addr #2

declare void @print_trace() local_unnamed_addr #2

; Function Attrs: noreturn nounwind
declare void @abort() local_unnamed_addr #8

declare noundef zeroext i1 @_ZNK3Rcs13CmdLineParser11getArgumentEPKcPiS2_z(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef, ptr noundef, ptr noundef, ...) local_unnamed_addr #2

declare noundef zeroext i1 @_ZNK3Rcs13CmdLineParser11hasArgumentEPKcS2_z(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef, ptr noundef, ...) local_unnamed_addr #2

declare double @Timer_getTime() local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL23MatNd_sqrMulABAt_simpleP6_MatNdPKS_S2_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @MatNd_sqrMulABAt(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @MatNd_msqError(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @MatNd_printTwoArraysDiff(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

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

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

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


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