; LLVM IR from ox-vgg/vise :: src/search_engine/relja_retrival/external/KMCode_relja/descriptor/AffineRegion._aaec4dda (Z14displayEllipseP12ImageContentiiffffff)

; 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.Matrix = type { ptr, ptr, i32, i32 }
%class.ImageContent = type { i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80)) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80)) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4rintf(float noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4sqrtf(float noundef) #1

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

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

declare void @_ZN6MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) unnamed_addr #1 align 2

declare void @_ZNK6Matrix3svdERS_S0_S0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #4

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN6MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #4

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

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

; Function Attrs: nounwind
declare void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5

; Function Attrs: mustprogress uwtable
define dso_local void @_Z14displayEllipseP12ImageContentiiffffff(ptr noundef %0, i32 noundef %1, i32 noundef %2, float noundef %3, float noundef %4, float noundef %5, float noundef %6, float noundef %7, float noundef %8) #6 personality ptr @__gxx_personality_v0 {
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca float, align 4
  %14 = alloca float, align 4
  %15 = alloca float, align 4
  %16 = alloca float, align 4
  %17 = alloca float, align 4
  %18 = alloca float, align 4
  %19 = alloca %class.Matrix, align 8
  %20 = alloca %class.Matrix, align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca %class.Matrix, align 8
  %24 = alloca %class.Matrix, align 8
  %25 = alloca %class.Matrix, align 8
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca float, align 4
  %29 = alloca float, align 4
  %30 = alloca float, align 4
  %31 = alloca float, align 4
  %32 = alloca float, align 4
  %33 = alloca float, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca float, align 4
  %42 = alloca float, align 4
  store ptr %0, ptr %10, align 8, !tbaa !5
  store i32 %1, ptr %11, align 4, !tbaa !9
  store i32 %2, ptr %12, align 4, !tbaa !9
  store float %3, ptr %13, align 4, !tbaa !11
  store float %4, ptr %14, align 4, !tbaa !11
  store float %5, ptr %15, align 4, !tbaa !11
  store float %6, ptr %16, align 4, !tbaa !11
  store float %7, ptr %17, align 4, !tbaa !11
  store float %8, ptr %18, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #7
  call void @_ZN6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %19, i32 noundef 2, i32 noundef 2)
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #7
  invoke void @_ZN6MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %20)
          to label %43 unwind label %102

43:                                               ; preds = %9
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #7
  invoke void @_ZN6MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %44 unwind label %106

44:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #7
  invoke void @_ZN6MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %24)
          to label %45 unwind label %110

45:                                               ; preds = %44
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #7
  invoke void @_ZN6MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %25)
          to label %46 unwind label %114

46:                                               ; preds = %45
  %47 = load float, ptr %14, align 4, !tbaa !11
  %48 = fpext float %47 to double
  %49 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %19, i32 noundef 1, i32 noundef 1)
          to label %50 unwind label %118

50:                                               ; preds = %46
  store double %48, ptr %49, align 8, !tbaa !13
  %51 = load float, ptr %15, align 4, !tbaa !11
  %52 = fpext float %51 to double
  %53 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %19, i32 noundef 1, i32 noundef 2)
          to label %54 unwind label %118

54:                                               ; preds = %50
  store double %52, ptr %53, align 8, !tbaa !13
  %55 = load float, ptr %16, align 4, !tbaa !11
  %56 = fpext float %55 to double
  %57 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %19, i32 noundef 2, i32 noundef 1)
          to label %58 unwind label %118

58:                                               ; preds = %54
  store double %56, ptr %57, align 8, !tbaa !13
  %59 = load float, ptr %17, align 4, !tbaa !11
  %60 = fpext float %59 to double
  %61 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %19, i32 noundef 2, i32 noundef 2)
          to label %62 unwind label %118

62:                                               ; preds = %58
  store double %60, ptr %61, align 8, !tbaa !13
  invoke void @_ZNK6Matrix3svdERS_S0_S0_(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %63 unwind label %118

63:                                               ; preds = %62
  %64 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %65 unwind label %118

65:                                               ; preds = %63
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #7
  %66 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 1, i32 noundef 1)
          to label %67 unwind label %122

67:                                               ; preds = %65
  %68 = load double, ptr %66, align 8, !tbaa !13
  %69 = fmul double 1.000000e+00, %68
  %70 = load float, ptr %13, align 4, !tbaa !11
  %71 = fpext float %70 to double
  %72 = fmul double %69, %71
  %73 = fptrunc double %72 to float
  store float %73, ptr %26, align 4, !tbaa !11
  %74 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 2, i32 noundef 2)
          to label %75 unwind label %122

75:                                               ; preds = %67
  %76 = load double, ptr %74, align 8, !tbaa !13
  %77 = fmul double 1.000000e+00, %76
  %78 = load float, ptr %13, align 4, !tbaa !11
  %79 = fpext float %78 to double
  %80 = fmul double %77, %79
  %81 = fptrunc double %80 to float
  store float %81, ptr %27, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  %82 = load float, ptr %27, align 4, !tbaa !11
  %83 = load float, ptr %27, align 4, !tbaa !11
  %84 = fmul float %82, %83
  store float %84, ptr %28, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  %85 = load float, ptr %26, align 4, !tbaa !11
  %86 = load float, ptr %26, align 4, !tbaa !11
  %87 = fmul float %85, %86
  store float %87, ptr %29, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #7
  %88 = load float, ptr %28, align 4, !tbaa !11
  %89 = load float, ptr %29, align 4, !tbaa !11
  %90 = fdiv float %88, %89
  store float %90, ptr %30, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  %91 = load float, ptr %29, align 4, !tbaa !11
  %92 = load float, ptr %28, align 4, !tbaa !11
  %93 = fdiv float %91, %92
  store float %93, ptr %31, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  %94 = load i32, ptr %11, align 4, !tbaa !9
  %95 = sub nsw i32 %94, 2
  store i32 %95, ptr %36, align 4, !tbaa !9
  br label %96

96:                                               ; preds = %176, %75
  %97 = load i32, ptr %36, align 4, !tbaa !9
  %98 = load i32, ptr %11, align 4, !tbaa !9
  %99 = add nsw i32 %98, 2
  %100 = icmp sle i32 %97, %99
  br i1 %100, label %126, label %101

101:                                              ; preds = %96
  store i32 2, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  br label %179

102:                                              ; preds = %9
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %21, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %22, align 4
  br label %810

106:                                              ; preds = %43
  %107 = landingpad { ptr, i32 }
          cleanup
  %108 = extractvalue { ptr, i32 } %107, 0
  store ptr %108, ptr %21, align 8
  %109 = extractvalue { ptr, i32 } %107, 1
  store i32 %109, ptr %22, align 4
  br label %809

110:                                              ; preds = %44
  %111 = landingpad { ptr, i32 }
          cleanup
  %112 = extractvalue { ptr, i32 } %111, 0
  store ptr %112, ptr %21, align 8
  %113 = extractvalue { ptr, i32 } %111, 1
  store i32 %113, ptr %22, align 4
  br label %808

114:                                              ; preds = %45
  %115 = landingpad { ptr, i32 }
          cleanup
  %116 = extractvalue { ptr, i32 } %115, 0
  store ptr %116, ptr %21, align 8
  %117 = extractvalue { ptr, i32 } %115, 1
  store i32 %117, ptr %22, align 4
  br label %807

118:                                              ; preds = %63, %62, %58, %54, %50, %46
  %119 = landingpad { ptr, i32 }
          cleanup
  %120 = extractvalue { ptr, i32 } %119, 0
  store ptr %120, ptr %21, align 8
  %121 = extractvalue { ptr, i32 } %119, 1
  store i32 %121, ptr %22, align 4
  br label %806

122:                                              ; preds = %67, %65
  %123 = landingpad { ptr, i32 }
          cleanup
  %124 = extractvalue { ptr, i32 } %123, 0
  store ptr %124, ptr %21, align 8
  %125 = extractvalue { ptr, i32 } %123, 1
  store i32 %125, ptr %22, align 4
  br label %805

126:                                              ; preds = %96
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #7
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %127

127:                                              ; preds = %172, %126
  %128 = load i32, ptr %38, align 4, !tbaa !9
  %129 = icmp sle i32 %128, 0
  br i1 %129, label %131, label %130

130:                                              ; preds = %127
  store i32 5, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  br label %175

131:                                              ; preds = %127
  %132 = load i32, ptr %36, align 4, !tbaa !9
  %133 = icmp sge i32 %132, 0
  br i1 %133, label %134, label %171

134:                                              ; preds = %131
  %135 = load i32, ptr %36, align 4, !tbaa !9
  %136 = load ptr, ptr %10, align 8, !tbaa !5
  %137 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %136)
          to label %138 unwind label %167

138:                                              ; preds = %134
  %139 = icmp ult i32 %135, %137
  br i1 %139, label %140, label %171

140:                                              ; preds = %138
  %141 = load i32, ptr %12, align 4, !tbaa !9
  %142 = load i32, ptr %38, align 4, !tbaa !9
  %143 = add nsw i32 %141, %142
  %144 = icmp sge i32 %143, 0
  br i1 %144, label %145, label %171

145:                                              ; preds = %140
  %146 = load i32, ptr %12, align 4, !tbaa !9
  %147 = load i32, ptr %38, align 4, !tbaa !9
  %148 = add nsw i32 %146, %147
  %149 = load ptr, ptr %10, align 8, !tbaa !5
  %150 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %149)
          to label %151 unwind label %167

151:                                              ; preds = %145
  %152 = icmp ult i32 %148, %150
  br i1 %152, label %153, label %171

153:                                              ; preds = %151
  %154 = load float, ptr %18, align 4, !tbaa !11
  %155 = load ptr, ptr %10, align 8, !tbaa !5
  %156 = getelementptr inbounds %class.ImageContent, ptr %155, i32 0, i32 4
  %157 = load ptr, ptr %156, align 8, !tbaa !15
  %158 = load i32, ptr %12, align 4, !tbaa !9
  %159 = load i32, ptr %38, align 4, !tbaa !9
  %160 = add nsw i32 %158, %159
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds ptr, ptr %157, i64 %161
  %163 = load ptr, ptr %162, align 8, !tbaa !5
  %164 = load i32, ptr %36, align 4, !tbaa !9
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds float, ptr %163, i64 %165
  store float %154, ptr %166, align 4, !tbaa !11
  br label %171

167:                                              ; preds = %145, %134
  %168 = landingpad { ptr, i32 }
          cleanup
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %21, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  br label %804

171:                                              ; preds = %153, %151, %140, %138, %131
  br label %172

172:                                              ; preds = %171
  %173 = load i32, ptr %38, align 4, !tbaa !9
  %174 = add nsw i32 %173, 1
  store i32 %174, ptr %38, align 4, !tbaa !9
  br label %127, !llvm.loop !17

175:                                              ; preds = %130
  br label %176

176:                                              ; preds = %175
  %177 = load i32, ptr %36, align 4, !tbaa !9
  %178 = add nsw i32 %177, 1
  store i32 %178, ptr %36, align 4, !tbaa !9
  br label %96, !llvm.loop !19

179:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #7
  %180 = load i32, ptr %12, align 4, !tbaa !9
  %181 = sub nsw i32 %180, 2
  store i32 %181, ptr %39, align 4, !tbaa !9
  br label %182

182:                                              ; preds = %238, %179
  %183 = load i32, ptr %39, align 4, !tbaa !9
  %184 = load i32, ptr %12, align 4, !tbaa !9
  %185 = add nsw i32 %184, 2
  %186 = icmp sle i32 %183, %185
  br i1 %186, label %188, label %187

187:                                              ; preds = %182
  store i32 8, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  br label %241

188:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  store i32 0, ptr %40, align 4, !tbaa !9
  br label %189

189:                                              ; preds = %234, %188
  %190 = load i32, ptr %40, align 4, !tbaa !9
  %191 = icmp sle i32 %190, 0
  br i1 %191, label %193, label %192

192:                                              ; preds = %189
  store i32 11, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  br label %237

193:                                              ; preds = %189
  %194 = load i32, ptr %11, align 4, !tbaa !9
  %195 = load i32, ptr %40, align 4, !tbaa !9
  %196 = add nsw i32 %194, %195
  %197 = icmp sge i32 %196, 0
  br i1 %197, label %198, label %233

198:                                              ; preds = %193
  %199 = load i32, ptr %11, align 4, !tbaa !9
  %200 = load i32, ptr %40, align 4, !tbaa !9
  %201 = add nsw i32 %199, %200
  %202 = load ptr, ptr %10, align 8, !tbaa !5
  %203 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %202)
          to label %204 unwind label %229

204:                                              ; preds = %198
  %205 = icmp ult i32 %201, %203
  br i1 %205, label %206, label %233

206:                                              ; preds = %204
  %207 = load i32, ptr %39, align 4, !tbaa !9
  %208 = icmp sge i32 %207, 0
  br i1 %208, label %209, label %233

209:                                              ; preds = %206
  %210 = load i32, ptr %39, align 4, !tbaa !9
  %211 = load ptr, ptr %10, align 8, !tbaa !5
  %212 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %211)
          to label %213 unwind label %229

213:                                              ; preds = %209
  %214 = icmp ult i32 %210, %212
  br i1 %214, label %215, label %233

215:                                              ; preds = %213
  %216 = load float, ptr %18, align 4, !tbaa !11
  %217 = load ptr, ptr %10, align 8, !tbaa !5
  %218 = getelementptr inbounds %class.ImageContent, ptr %217, i32 0, i32 4
  %219 = load ptr, ptr %218, align 8, !tbaa !15
  %220 = load i32, ptr %39, align 4, !tbaa !9
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds ptr, ptr %219, i64 %221
  %223 = load ptr, ptr %222, align 8, !tbaa !5
  %224 = load i32, ptr %11, align 4, !tbaa !9
  %225 = load i32, ptr %40, align 4, !tbaa !9
  %226 = add nsw i32 %224, %225
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds float, ptr %223, i64 %227
  store float %216, ptr %228, align 4, !tbaa !11
  br label %233

229:                                              ; preds = %209, %198
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %21, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  br label %804

233:                                              ; preds = %215, %213, %206, %204, %193
  br label %234

234:                                              ; preds = %233
  %235 = load i32, ptr %40, align 4, !tbaa !9
  %236 = add nsw i32 %235, 1
  store i32 %236, ptr %40, align 4, !tbaa !9
  br label %189, !llvm.loop !20

237:                                              ; preds = %192
  br label %238

238:                                              ; preds = %237
  %239 = load i32, ptr %39, align 4, !tbaa !9
  %240 = add nsw i32 %239, 1
  store i32 %240, ptr %39, align 4, !tbaa !9
  br label %182, !llvm.loop !21

241:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #7
  store float 0.000000e+00, ptr %41, align 4, !tbaa !11
  br label %242

242:                                              ; preds = %517, %241
  %243 = load float, ptr %41, align 4, !tbaa !11
  %244 = load float, ptr %26, align 4, !tbaa !11
  %245 = fcmp olt float %243, %244
  br i1 %245, label %247, label %246

246:                                              ; preds = %242
  store i32 14, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  br label %520

247:                                              ; preds = %242
  %248 = load float, ptr %28, align 4, !tbaa !11
  %249 = load float, ptr %30, align 4, !tbaa !11
  %250 = load float, ptr %41, align 4, !tbaa !11
  %251 = fmul float %249, %250
  %252 = load float, ptr %41, align 4, !tbaa !11
  %253 = fneg float %251
  %254 = call float @llvm.fmuladd.f32(float %253, float %252, float %248)
  %255 = invoke noundef float @_ZSt4sqrtf(float noundef %254)
          to label %256 unwind label %318

256:                                              ; preds = %247
  store float %255, ptr %33, align 4, !tbaa !11
  %257 = load i32, ptr %11, align 4, !tbaa !9
  %258 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 1, i32 noundef 1)
          to label %259 unwind label %318

259:                                              ; preds = %256
  %260 = load double, ptr %258, align 8, !tbaa !13
  %261 = load float, ptr %41, align 4, !tbaa !11
  %262 = fpext float %261 to double
  %263 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 1, i32 noundef 2)
          to label %264 unwind label %318

264:                                              ; preds = %259
  %265 = load double, ptr %263, align 8, !tbaa !13
  %266 = load float, ptr %33, align 4, !tbaa !11
  %267 = fpext float %266 to double
  %268 = fmul double %265, %267
  %269 = call double @llvm.fmuladd.f64(double %260, double %262, double %268)
  %270 = call double @llvm.rint.f64(double %269)
  %271 = fptosi double %270 to i32
  %272 = add nsw i32 %257, %271
  store i32 %272, ptr %34, align 4, !tbaa !9
  %273 = load i32, ptr %12, align 4, !tbaa !9
  %274 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 2, i32 noundef 1)
          to label %275 unwind label %318

275:                                              ; preds = %264
  %276 = load double, ptr %274, align 8, !tbaa !13
  %277 = load float, ptr %41, align 4, !tbaa !11
  %278 = fpext float %277 to double
  %279 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 2, i32 noundef 2)
          to label %280 unwind label %318

280:                                              ; preds = %275
  %281 = load double, ptr %279, align 8, !tbaa !13
  %282 = load float, ptr %33, align 4, !tbaa !11
  %283 = fpext float %282 to double
  %284 = fmul double %281, %283
  %285 = call double @llvm.fmuladd.f64(double %276, double %278, double %284)
  %286 = call double @llvm.rint.f64(double %285)
  %287 = fptosi double %286 to i32
  %288 = add nsw i32 %273, %287
  store i32 %288, ptr %35, align 4, !tbaa !9
  %289 = load i32, ptr %34, align 4, !tbaa !9
  %290 = icmp sge i32 %289, 0
  br i1 %290, label %291, label %322

291:                                              ; preds = %280
  %292 = load i32, ptr %34, align 4, !tbaa !9
  %293 = load ptr, ptr %10, align 8, !tbaa !5
  %294 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %293)
          to label %295 unwind label %318

295:                                              ; preds = %291
  %296 = icmp ult i32 %292, %294
  br i1 %296, label %297, label %322

297:                                              ; preds = %295
  %298 = load i32, ptr %35, align 4, !tbaa !9
  %299 = icmp sge i32 %298, 0
  br i1 %299, label %300, label %322

300:                                              ; preds = %297
  %301 = load i32, ptr %35, align 4, !tbaa !9
  %302 = load ptr, ptr %10, align 8, !tbaa !5
  %303 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %302)
          to label %304 unwind label %318

304:                                              ; preds = %300
  %305 = icmp ult i32 %301, %303
  br i1 %305, label %306, label %322

306:                                              ; preds = %304
  %307 = load float, ptr %18, align 4, !tbaa !11
  %308 = load ptr, ptr %10, align 8, !tbaa !5
  %309 = getelementptr inbounds %class.ImageContent, ptr %308, i32 0, i32 4
  %310 = load ptr, ptr %309, align 8, !tbaa !15
  %311 = load i32, ptr %35, align 4, !tbaa !9
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds ptr, ptr %310, i64 %312
  %314 = load ptr, ptr %313, align 8, !tbaa !5
  %315 = load i32, ptr %34, align 4, !tbaa !9
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds float, ptr %314, i64 %316
  store float %307, ptr %317, align 4, !tbaa !11
  br label %322

318:                                              ; preds = %498, %489, %471, %459, %453, %450, %432, %423, %406, %395, %389, %386, %368, %359, %342, %330, %325, %322, %300, %291, %275, %264, %259, %256, %247
  %319 = landingpad { ptr, i32 }
          cleanup
  %320 = extractvalue { ptr, i32 } %319, 0
  store ptr %320, ptr %21, align 8
  %321 = extractvalue { ptr, i32 } %319, 1
  store i32 %321, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  br label %804

322:                                              ; preds = %306, %304, %297, %295, %280
  %323 = load i32, ptr %11, align 4, !tbaa !9
  %324 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 1, i32 noundef 1)
          to label %325 unwind label %318

325:                                              ; preds = %322
  %326 = load double, ptr %324, align 8, !tbaa !13
  %327 = load float, ptr %41, align 4, !tbaa !11
  %328 = fpext float %327 to double
  %329 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 1, i32 noundef 2)
          to label %330 unwind label %318

330:                                              ; preds = %325
  %331 = load double, ptr %329, align 8, !tbaa !13
  %332 = load float, ptr %33, align 4, !tbaa !11
  %333 = fpext float %332 to double
  %334 = fmul double %331, %333
  %335 = fneg double %334
  %336 = call double @llvm.fmuladd.f64(double %326, double %328, double %335)
  %337 = call double @llvm.rint.f64(double %336)
  %338 = fptosi double %337 to i32
  %339 = add nsw i32 %323, %338
  store i32 %339, ptr %34, align 4, !tbaa !9
  %340 = load i32, ptr %12, align 4, !tbaa !9
  %341 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 2, i32 noundef 1)
          to label %342 unwind label %318

342:                                              ; preds = %330
  %343 = load double, ptr %341, align 8, !tbaa !13
  %344 = load float, ptr %41, align 4, !tbaa !11
  %345 = fpext float %344 to double
  %346 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 2, i32 noundef 2)
          to label %347 unwind label %318

347:                                              ; preds = %342
  %348 = load double, ptr %346, align 8, !tbaa !13
  %349 = load float, ptr %33, align 4, !tbaa !11
  %350 = fpext float %349 to double
  %351 = fmul double %348, %350
  %352 = fneg double %351
  %353 = call double @llvm.fmuladd.f64(double %343, double %345, double %352)
  %354 = call double @llvm.rint.f64(double %353)
  %355 = fptosi double %354 to i32
  %356 = add nsw i32 %340, %355
  store i32 %356, ptr %35, align 4, !tbaa !9
  %357 = load i32, ptr %34, align 4, !tbaa !9
  %358 = icmp sge i32 %357, 0
  br i1 %358, label %359, label %386

359:                                              ; preds = %347
  %360 = load i32, ptr %34, align 4, !tbaa !9
  %361 = load ptr, ptr %10, align 8, !tbaa !5
  %362 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %361)
          to label %363 unwind label %318

363:                                              ; preds = %359
  %364 = icmp ult i32 %360, %362
  br i1 %364, label %365, label %386

365:                                              ; preds = %363
  %366 = load i32, ptr %35, align 4, !tbaa !9
  %367 = icmp sge i32 %366, 0
  br i1 %367, label %368, label %386

368:                                              ; preds = %365
  %369 = load i32, ptr %35, align 4, !tbaa !9
  %370 = load ptr, ptr %10, align 8, !tbaa !5
  %371 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %370)
          to label %372 unwind label %318

372:                                              ; preds = %368
  %373 = icmp ult i32 %369, %371
  br i1 %373, label %374, label %386

374:                                              ; preds = %372
  %375 = load float, ptr %18, align 4, !tbaa !11
  %376 = load ptr, ptr %10, align 8, !tbaa !5
  %377 = getelementptr inbounds %class.ImageContent, ptr %376, i32 0, i32 4
  %378 = load ptr, ptr %377, align 8, !tbaa !15
  %379 = load i32, ptr %35, align 4, !tbaa !9
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds ptr, ptr %378, i64 %380
  %382 = load ptr, ptr %381, align 8, !tbaa !5
  %383 = load i32, ptr %34, align 4, !tbaa !9
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds float, ptr %382, i64 %384
  store float %375, ptr %385, align 4, !tbaa !11
  br label %386

386:                                              ; preds = %374, %372, %365, %363, %347
  %387 = load i32, ptr %11, align 4, !tbaa !9
  %388 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 1, i32 noundef 1)
          to label %389 unwind label %318

389:                                              ; preds = %386
  %390 = load double, ptr %388, align 8, !tbaa !13
  %391 = fneg double %390
  %392 = load float, ptr %41, align 4, !tbaa !11
  %393 = fpext float %392 to double
  %394 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 1, i32 noundef 2)
          to label %395 unwind label %318

395:                                              ; preds = %389
  %396 = load double, ptr %394, align 8, !tbaa !13
  %397 = load float, ptr %33, align 4, !tbaa !11
  %398 = fpext float %397 to double
  %399 = fmul double %396, %398
  %400 = call double @llvm.fmuladd.f64(double %391, double %393, double %399)
  %401 = call double @llvm.rint.f64(double %400)
  %402 = fptosi double %401 to i32
  %403 = add nsw i32 %387, %402
  store i32 %403, ptr %34, align 4, !tbaa !9
  %404 = load i32, ptr %12, align 4, !tbaa !9
  %405 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 2, i32 noundef 1)
          to label %406 unwind label %318

406:                                              ; preds = %395
  %407 = load double, ptr %405, align 8, !tbaa !13
  %408 = fneg double %407
  %409 = load float, ptr %41, align 4, !tbaa !11
  %410 = fpext float %409 to double
  %411 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 2, i32 noundef 2)
          to label %412 unwind label %318

412:                                              ; preds = %406
  %413 = load double, ptr %411, align 8, !tbaa !13
  %414 = load float, ptr %33, align 4, !tbaa !11
  %415 = fpext float %414 to double
  %416 = fmul double %413, %415
  %417 = call double @llvm.fmuladd.f64(double %408, double %410, double %416)
  %418 = call double @llvm.rint.f64(double %417)
  %419 = fptosi double %418 to i32
  %420 = add nsw i32 %404, %419
  store i32 %420, ptr %35, align 4, !tbaa !9
  %421 = load i32, ptr %34, align 4, !tbaa !9
  %422 = icmp sge i32 %421, 0
  br i1 %422, label %423, label %450

423:                                              ; preds = %412
  %424 = load i32, ptr %34, align 4, !tbaa !9
  %425 = load ptr, ptr %10, align 8, !tbaa !5
  %426 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %425)
          to label %427 unwind label %318

427:                                              ; preds = %423
  %428 = icmp ult i32 %424, %426
  br i1 %428, label %429, label %450

429:                                              ; preds = %427
  %430 = load i32, ptr %35, align 4, !tbaa !9
  %431 = icmp sge i32 %430, 0
  br i1 %431, label %432, label %450

432:                                              ; preds = %429
  %433 = load i32, ptr %35, align 4, !tbaa !9
  %434 = load ptr, ptr %10, align 8, !tbaa !5
  %435 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %434)
          to label %436 unwind label %318

436:                                              ; preds = %432
  %437 = icmp ult i32 %433, %435
  br i1 %437, label %438, label %450

438:                                              ; preds = %436
  %439 = load float, ptr %18, align 4, !tbaa !11
  %440 = load ptr, ptr %10, align 8, !tbaa !5
  %441 = getelementptr inbounds %class.ImageContent, ptr %440, i32 0, i32 4
  %442 = load ptr, ptr %441, align 8, !tbaa !15
  %443 = load i32, ptr %35, align 4, !tbaa !9
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds ptr, ptr %442, i64 %444
  %446 = load ptr, ptr %445, align 8, !tbaa !5
  %447 = load i32, ptr %34, align 4, !tbaa !9
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds float, ptr %446, i64 %448
  store float %439, ptr %449, align 4, !tbaa !11
  br label %450

450:                                              ; preds = %438, %436, %429, %427, %412
  %451 = load i32, ptr %11, align 4, !tbaa !9
  %452 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 1, i32 noundef 1)
          to label %453 unwind label %318

453:                                              ; preds = %450
  %454 = load double, ptr %452, align 8, !tbaa !13
  %455 = fneg double %454
  %456 = load float, ptr %41, align 4, !tbaa !11
  %457 = fpext float %456 to double
  %458 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 1, i32 noundef 2)
          to label %459 unwind label %318

459:                                              ; preds = %453
  %460 = load double, ptr %458, align 8, !tbaa !13
  %461 = load float, ptr %33, align 4, !tbaa !11
  %462 = fpext float %461 to double
  %463 = fmul double %460, %462
  %464 = fneg double %463
  %465 = call double @llvm.fmuladd.f64(double %455, double %457, double %464)
  %466 = call double @llvm.rint.f64(double %465)
  %467 = fptosi double %466 to i32
  %468 = add nsw i32 %451, %467
  store i32 %468, ptr %34, align 4, !tbaa !9
  %469 = load i32, ptr %12, align 4, !tbaa !9
  %470 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 2, i32 noundef 1)
          to label %471 unwind label %318

471:                                              ; preds = %459
  %472 = load double, ptr %470, align 8, !tbaa !13
  %473 = fneg double %472
  %474 = load float, ptr %41, align 4, !tbaa !11
  %475 = fpext float %474 to double
  %476 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 2, i32 noundef 2)
          to label %477 unwind label %318

477:                                              ; preds = %471
  %478 = load double, ptr %476, align 8, !tbaa !13
  %479 = load float, ptr %33, align 4, !tbaa !11
  %480 = fpext float %479 to double
  %481 = fmul double %478, %480
  %482 = fneg double %481
  %483 = call double @llvm.fmuladd.f64(double %473, double %475, double %482)
  %484 = call double @llvm.rint.f64(double %483)
  %485 = fptosi double %484 to i32
  %486 = add nsw i32 %469, %485
  store i32 %486, ptr %35, align 4, !tbaa !9
  %487 = load i32, ptr %34, align 4, !tbaa !9
  %488 = icmp sge i32 %487, 0
  br i1 %488, label %489, label %516

489:                                              ; preds = %477
  %490 = load i32, ptr %34, align 4, !tbaa !9
  %491 = load ptr, ptr %10, align 8, !tbaa !5
  %492 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %491)
          to label %493 unwind label %318

493:                                              ; preds = %489
  %494 = icmp ult i32 %490, %492
  br i1 %494, label %495, label %516

495:                                              ; preds = %493
  %496 = load i32, ptr %35, align 4, !tbaa !9
  %497 = icmp sge i32 %496, 0
  br i1 %497, label %498, label %516

498:                                              ; preds = %495
  %499 = load i32, ptr %35, align 4, !tbaa !9
  %500 = load ptr, ptr %10, align 8, !tbaa !5
  %501 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %500)
          to label %502 unwind label %318

502:                                              ; preds = %498
  %503 = icmp ult i32 %499, %501
  br i1 %503, label %504, label %516

504:                                              ; preds = %502
  %505 = load float, ptr %18, align 4, !tbaa !11
  %506 = load ptr, ptr %10, align 8, !tbaa !5
  %507 = getelementptr inbounds %class.ImageContent, ptr %506, i32 0, i32 4
  %508 = load ptr, ptr %507, align 8, !tbaa !15
  %509 = load i32, ptr %35, align 4, !tbaa !9
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds ptr, ptr %508, i64 %510
  %512 = load ptr, ptr %511, align 8, !tbaa !5
  %513 = load i32, ptr %34, align 4, !tbaa !9
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds float, ptr %512, i64 %514
  store float %505, ptr %515, align 4, !tbaa !11
  br label %516

516:                                              ; preds = %504, %502, %495, %493, %477
  br label %517

517:                                              ; preds = %516
  %518 = load float, ptr %41, align 4, !tbaa !11
  %519 = fadd float %518, 1.000000e+00
  store float %519, ptr %41, align 4, !tbaa !11
  br label %242, !llvm.loop !22

520:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #7
  store float 1.000000e+00, ptr %42, align 4, !tbaa !11
  br label %521

521:                                              ; preds = %800, %520
  %522 = load float, ptr %42, align 4, !tbaa !11
  %523 = load float, ptr %27, align 4, !tbaa !11
  %524 = fcmp olt float %522, %523
  br i1 %524, label %526, label %525

525:                                              ; preds = %521
  store i32 17, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  br label %803

526:                                              ; preds = %521
  %527 = load float, ptr %29, align 4, !tbaa !11
  %528 = load float, ptr %31, align 4, !tbaa !11
  %529 = load float, ptr %42, align 4, !tbaa !11
  %530 = fmul float %528, %529
  %531 = load float, ptr %42, align 4, !tbaa !11
  %532 = fneg float %530
  %533 = call float @llvm.fmuladd.f32(float %532, float %531, float %527)
  %534 = invoke noundef float @_ZSt4sqrtf(float noundef %533)
          to label %535 unwind label %601

535:                                              ; preds = %526
  %536 = invoke noundef float @_ZSt4rintf(float noundef %534)
          to label %537 unwind label %601

537:                                              ; preds = %535
  %538 = fptosi float %536 to i32
  %539 = sitofp i32 %538 to float
  store float %539, ptr %32, align 4, !tbaa !11
  %540 = load i32, ptr %11, align 4, !tbaa !9
  %541 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 1, i32 noundef 1)
          to label %542 unwind label %601

542:                                              ; preds = %537
  %543 = load double, ptr %541, align 8, !tbaa !13
  %544 = load float, ptr %32, align 4, !tbaa !11
  %545 = fpext float %544 to double
  %546 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 1, i32 noundef 2)
          to label %547 unwind label %601

547:                                              ; preds = %542
  %548 = load double, ptr %546, align 8, !tbaa !13
  %549 = load float, ptr %42, align 4, !tbaa !11
  %550 = fpext float %549 to double
  %551 = fmul double %548, %550
  %552 = call double @llvm.fmuladd.f64(double %543, double %545, double %551)
  %553 = call double @llvm.rint.f64(double %552)
  %554 = fptosi double %553 to i32
  %555 = add nsw i32 %540, %554
  store i32 %555, ptr %34, align 4, !tbaa !9
  %556 = load i32, ptr %12, align 4, !tbaa !9
  %557 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 2, i32 noundef 1)
          to label %558 unwind label %601

558:                                              ; preds = %547
  %559 = load double, ptr %557, align 8, !tbaa !13
  %560 = load float, ptr %32, align 4, !tbaa !11
  %561 = fpext float %560 to double
  %562 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 2, i32 noundef 2)
          to label %563 unwind label %601

563:                                              ; preds = %558
  %564 = load double, ptr %562, align 8, !tbaa !13
  %565 = load float, ptr %42, align 4, !tbaa !11
  %566 = fpext float %565 to double
  %567 = fmul double %564, %566
  %568 = call double @llvm.fmuladd.f64(double %559, double %561, double %567)
  %569 = call double @llvm.rint.f64(double %568)
  %570 = fptosi double %569 to i32
  %571 = add nsw i32 %556, %570
  store i32 %571, ptr %35, align 4, !tbaa !9
  %572 = load i32, ptr %34, align 4, !tbaa !9
  %573 = icmp sge i32 %572, 0
  br i1 %573, label %574, label %605

574:                                              ; preds = %563
  %575 = load i32, ptr %34, align 4, !tbaa !9
  %576 = load ptr, ptr %10, align 8, !tbaa !5
  %577 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %576)
          to label %578 unwind label %601

578:                                              ; preds = %574
  %579 = icmp ult i32 %575, %577
  br i1 %579, label %580, label %605

580:                                              ; preds = %578
  %581 = load i32, ptr %35, align 4, !tbaa !9
  %582 = icmp sge i32 %581, 0
  br i1 %582, label %583, label %605

583:                                              ; preds = %580
  %584 = load i32, ptr %35, align 4, !tbaa !9
  %585 = load ptr, ptr %10, align 8, !tbaa !5
  %586 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %585)
          to label %587 unwind label %601

587:                                              ; preds = %583
  %588 = icmp ult i32 %584, %586
  br i1 %588, label %589, label %605

589:                                              ; preds = %587
  %590 = load float, ptr %18, align 4, !tbaa !11
  %591 = load ptr, ptr %10, align 8, !tbaa !5
  %592 = getelementptr inbounds %class.ImageContent, ptr %591, i32 0, i32 4
  %593 = load ptr, ptr %592, align 8, !tbaa !15
  %594 = load i32, ptr %35, align 4, !tbaa !9
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds ptr, ptr %593, i64 %595
  %597 = load ptr, ptr %596, align 8, !tbaa !5
  %598 = load i32, ptr %34, align 4, !tbaa !9
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds float, ptr %597, i64 %599
  store float %590, ptr %600, align 4, !tbaa !11
  br label %605

601:                                              ; preds = %781, %772, %754, %742, %736, %733, %715, %706, %689, %678, %672, %669, %651, %642, %625, %613, %608, %605, %583, %574, %558, %547, %542, %537, %535, %526
  %602 = landingpad { ptr, i32 }
          cleanup
  %603 = extractvalue { ptr, i32 } %602, 0
  store ptr %603, ptr %21, align 8
  %604 = extractvalue { ptr, i32 } %602, 1
  store i32 %604, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  br label %804

605:                                              ; preds = %589, %587, %580, %578, %563
  %606 = load i32, ptr %11, align 4, !tbaa !9
  %607 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 1, i32 noundef 1)
          to label %608 unwind label %601

608:                                              ; preds = %605
  %609 = load double, ptr %607, align 8, !tbaa !13
  %610 = load float, ptr %32, align 4, !tbaa !11
  %611 = fpext float %610 to double
  %612 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 1, i32 noundef 2)
          to label %613 unwind label %601

613:                                              ; preds = %608
  %614 = load double, ptr %612, align 8, !tbaa !13
  %615 = load float, ptr %42, align 4, !tbaa !11
  %616 = fpext float %615 to double
  %617 = fmul double %614, %616
  %618 = fneg double %617
  %619 = call double @llvm.fmuladd.f64(double %609, double %611, double %618)
  %620 = call double @llvm.rint.f64(double %619)
  %621 = fptosi double %620 to i32
  %622 = add nsw i32 %606, %621
  store i32 %622, ptr %34, align 4, !tbaa !9
  %623 = load i32, ptr %12, align 4, !tbaa !9
  %624 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 2, i32 noundef 1)
          to label %625 unwind label %601

625:                                              ; preds = %613
  %626 = load double, ptr %624, align 8, !tbaa !13
  %627 = load float, ptr %32, align 4, !tbaa !11
  %628 = fpext float %627 to double
  %629 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 2, i32 noundef 2)
          to label %630 unwind label %601

630:                                              ; preds = %625
  %631 = load double, ptr %629, align 8, !tbaa !13
  %632 = load float, ptr %42, align 4, !tbaa !11
  %633 = fpext float %632 to double
  %634 = fmul double %631, %633
  %635 = fneg double %634
  %636 = call double @llvm.fmuladd.f64(double %626, double %628, double %635)
  %637 = call double @llvm.rint.f64(double %636)
  %638 = fptosi double %637 to i32
  %639 = add nsw i32 %623, %638
  store i32 %639, ptr %35, align 4, !tbaa !9
  %640 = load i32, ptr %34, align 4, !tbaa !9
  %641 = icmp sge i32 %640, 0
  br i1 %641, label %642, label %669

642:                                              ; preds = %630
  %643 = load i32, ptr %34, align 4, !tbaa !9
  %644 = load ptr, ptr %10, align 8, !tbaa !5
  %645 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %644)
          to label %646 unwind label %601

646:                                              ; preds = %642
  %647 = icmp ult i32 %643, %645
  br i1 %647, label %648, label %669

648:                                              ; preds = %646
  %649 = load i32, ptr %35, align 4, !tbaa !9
  %650 = icmp sge i32 %649, 0
  br i1 %650, label %651, label %669

651:                                              ; preds = %648
  %652 = load i32, ptr %35, align 4, !tbaa !9
  %653 = load ptr, ptr %10, align 8, !tbaa !5
  %654 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %653)
          to label %655 unwind label %601

655:                                              ; preds = %651
  %656 = icmp ult i32 %652, %654
  br i1 %656, label %657, label %669

657:                                              ; preds = %655
  %658 = load float, ptr %18, align 4, !tbaa !11
  %659 = load ptr, ptr %10, align 8, !tbaa !5
  %660 = getelementptr inbounds %class.ImageContent, ptr %659, i32 0, i32 4
  %661 = load ptr, ptr %660, align 8, !tbaa !15
  %662 = load i32, ptr %35, align 4, !tbaa !9
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds ptr, ptr %661, i64 %663
  %665 = load ptr, ptr %664, align 8, !tbaa !5
  %666 = load i32, ptr %34, align 4, !tbaa !9
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds float, ptr %665, i64 %667
  store float %658, ptr %668, align 4, !tbaa !11
  br label %669

669:                                              ; preds = %657, %655, %648, %646, %630
  %670 = load i32, ptr %11, align 4, !tbaa !9
  %671 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 1, i32 noundef 1)
          to label %672 unwind label %601

672:                                              ; preds = %669
  %673 = load double, ptr %671, align 8, !tbaa !13
  %674 = fneg double %673
  %675 = load float, ptr %32, align 4, !tbaa !11
  %676 = fpext float %675 to double
  %677 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 1, i32 noundef 2)
          to label %678 unwind label %601

678:                                              ; preds = %672
  %679 = load double, ptr %677, align 8, !tbaa !13
  %680 = load float, ptr %42, align 4, !tbaa !11
  %681 = fpext float %680 to double
  %682 = fmul double %679, %681
  %683 = call double @llvm.fmuladd.f64(double %674, double %676, double %682)
  %684 = call double @llvm.rint.f64(double %683)
  %685 = fptosi double %684 to i32
  %686 = add nsw i32 %670, %685
  store i32 %686, ptr %34, align 4, !tbaa !9
  %687 = load i32, ptr %12, align 4, !tbaa !9
  %688 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 2, i32 noundef 1)
          to label %689 unwind label %601

689:                                              ; preds = %678
  %690 = load double, ptr %688, align 8, !tbaa !13
  %691 = fneg double %690
  %692 = load float, ptr %32, align 4, !tbaa !11
  %693 = fpext float %692 to double
  %694 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 2, i32 noundef 2)
          to label %695 unwind label %601

695:                                              ; preds = %689
  %696 = load double, ptr %694, align 8, !tbaa !13
  %697 = load float, ptr %42, align 4, !tbaa !11
  %698 = fpext float %697 to double
  %699 = fmul double %696, %698
  %700 = call double @llvm.fmuladd.f64(double %691, double %693, double %699)
  %701 = call double @llvm.rint.f64(double %700)
  %702 = fptosi double %701 to i32
  %703 = add nsw i32 %687, %702
  store i32 %703, ptr %35, align 4, !tbaa !9
  %704 = load i32, ptr %34, align 4, !tbaa !9
  %705 = icmp sge i32 %704, 0
  br i1 %705, label %706, label %733

706:                                              ; preds = %695
  %707 = load i32, ptr %34, align 4, !tbaa !9
  %708 = load ptr, ptr %10, align 8, !tbaa !5
  %709 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %708)
          to label %710 unwind label %601

710:                                              ; preds = %706
  %711 = icmp ult i32 %707, %709
  br i1 %711, label %712, label %733

712:                                              ; preds = %710
  %713 = load i32, ptr %35, align 4, !tbaa !9
  %714 = icmp sge i32 %713, 0
  br i1 %714, label %715, label %733

715:                                              ; preds = %712
  %716 = load i32, ptr %35, align 4, !tbaa !9
  %717 = load ptr, ptr %10, align 8, !tbaa !5
  %718 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %717)
          to label %719 unwind label %601

719:                                              ; preds = %715
  %720 = icmp ult i32 %716, %718
  br i1 %720, label %721, label %733

721:                                              ; preds = %719
  %722 = load float, ptr %18, align 4, !tbaa !11
  %723 = load ptr, ptr %10, align 8, !tbaa !5
  %724 = getelementptr inbounds %class.ImageContent, ptr %723, i32 0, i32 4
  %725 = load ptr, ptr %724, align 8, !tbaa !15
  %726 = load i32, ptr %35, align 4, !tbaa !9
  %727 = sext i32 %726 to i64
  %728 = getelementptr inbounds ptr, ptr %725, i64 %727
  %729 = load ptr, ptr %728, align 8, !tbaa !5
  %730 = load i32, ptr %34, align 4, !tbaa !9
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds float, ptr %729, i64 %731
  store float %722, ptr %732, align 4, !tbaa !11
  br label %733

733:                                              ; preds = %721, %719, %712, %710, %695
  %734 = load i32, ptr %11, align 4, !tbaa !9
  %735 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 1, i32 noundef 1)
          to label %736 unwind label %601

736:                                              ; preds = %733
  %737 = load double, ptr %735, align 8, !tbaa !13
  %738 = fneg double %737
  %739 = load float, ptr %32, align 4, !tbaa !11
  %740 = fpext float %739 to double
  %741 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 1, i32 noundef 2)
          to label %742 unwind label %601

742:                                              ; preds = %736
  %743 = load double, ptr %741, align 8, !tbaa !13
  %744 = load float, ptr %42, align 4, !tbaa !11
  %745 = fpext float %744 to double
  %746 = fmul double %743, %745
  %747 = fneg double %746
  %748 = call double @llvm.fmuladd.f64(double %738, double %740, double %747)
  %749 = call double @llvm.rint.f64(double %748)
  %750 = fptosi double %749 to i32
  %751 = add nsw i32 %734, %750
  store i32 %751, ptr %34, align 4, !tbaa !9
  %752 = load i32, ptr %12, align 4, !tbaa !9
  %753 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 2, i32 noundef 1)
          to label %754 unwind label %601

754:                                              ; preds = %742
  %755 = load double, ptr %753, align 8, !tbaa !13
  %756 = fneg double %755
  %757 = load float, ptr %32, align 4, !tbaa !11
  %758 = fpext float %757 to double
  %759 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 2, i32 noundef 2)
          to label %760 unwind label %601

760:                                              ; preds = %754
  %761 = load double, ptr %759, align 8, !tbaa !13
  %762 = load float, ptr %42, align 4, !tbaa !11
  %763 = fpext float %762 to double
  %764 = fmul double %761, %763
  %765 = fneg double %764
  %766 = call double @llvm.fmuladd.f64(double %756, double %758, double %765)
  %767 = call double @llvm.rint.f64(double %766)
  %768 = fptosi double %767 to i32
  %769 = add nsw i32 %752, %768
  store i32 %769, ptr %35, align 4, !tbaa !9
  %770 = load i32, ptr %34, align 4, !tbaa !9
  %771 = icmp sge i32 %770, 0
  br i1 %771, label %772, label %799

772:                                              ; preds = %760
  %773 = load i32, ptr %34, align 4, !tbaa !9
  %774 = load ptr, ptr %10, align 8, !tbaa !5
  %775 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %774)
          to label %776 unwind label %601

776:                                              ; preds = %772
  %777 = icmp ult i32 %773, %775
  br i1 %777, label %778, label %799

778:                                              ; preds = %776
  %779 = load i32, ptr %35, align 4, !tbaa !9
  %780 = icmp sge i32 %779, 0
  br i1 %780, label %781, label %799

781:                                              ; preds = %778
  %782 = load i32, ptr %35, align 4, !tbaa !9
  %783 = load ptr, ptr %10, align 8, !tbaa !5
  %784 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %783)
          to label %785 unwind label %601

785:                                              ; preds = %781
  %786 = icmp ult i32 %782, %784
  br i1 %786, label %787, label %799

787:                                              ; preds = %785
  %788 = load float, ptr %18, align 4, !tbaa !11
  %789 = load ptr, ptr %10, align 8, !tbaa !5
  %790 = getelementptr inbounds %class.ImageContent, ptr %789, i32 0, i32 4
  %791 = load ptr, ptr %790, align 8, !tbaa !15
  %792 = load i32, ptr %35, align 4, !tbaa !9
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds ptr, ptr %791, i64 %793
  %795 = load ptr, ptr %794, align 8, !tbaa !5
  %796 = load i32, ptr %34, align 4, !tbaa !9
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds float, ptr %795, i64 %797
  store float %788, ptr %798, align 4, !tbaa !11
  br label %799

799:                                              ; preds = %787, %785, %778, %776, %760
  br label %800

800:                                              ; preds = %799
  %801 = load float, ptr %42, align 4, !tbaa !11
  %802 = fadd float %801, 1.000000e+00
  store float %802, ptr %42, align 4, !tbaa !11
  br label %521, !llvm.loop !23

803:                                              ; preds = %525
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  ret void

804:                                              ; preds = %601, %318, %229, %167
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %805

805:                                              ; preds = %804, %122
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %806

806:                                              ; preds = %805, %118
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #7
  br label %807

807:                                              ; preds = %806, %114
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #7
  br label %808

808:                                              ; preds = %807, %110
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #7
  br label %809

809:                                              ; preds = %808, %106
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  br label %810

810:                                              ; preds = %809, %102
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  br label %811

811:                                              ; preds = %810
  %812 = load ptr, ptr %21, align 8
  %813 = load i32, ptr %22, align 4
  %814 = insertvalue { ptr, i32 } poison, ptr %812, 0
  %815 = insertvalue { ptr, i32 } %814, i32 %813, 1
  resume { ptr, i32 } %815
}

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

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

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


; 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.Matrix = type { ptr, ptr, i32, i32 }

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4rintf(float noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4sqrtf(float noundef) local_unnamed_addr #1

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

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

declare void @_ZN6MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) unnamed_addr #1 align 2

declare void @_ZNK6Matrix3svdERS_S0_S0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN6MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

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

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

; Function Attrs: nounwind
declare void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5

; Function Attrs: mustprogress uwtable
define dso_local void @_Z14displayEllipseP12ImageContentiiffffff(ptr noundef %0, i32 noundef %1, i32 noundef %2, float noundef %3, float noundef %4, float noundef %5, float noundef %6, float noundef %7, float noundef %8) local_unnamed_addr #6 personality ptr @__gxx_personality_v0 {
  %10 = alloca %class.Matrix, align 8
  %11 = alloca %class.Matrix, align 8
  %12 = alloca %class.Matrix, align 8
  %13 = alloca %class.Matrix, align 8
  %14 = alloca %class.Matrix, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #7
  call void @_ZN6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 2, i32 noundef 2)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #7
  invoke void @_ZN6MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %11)
          to label %15 unwind label %118

15:                                               ; preds = %9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #7
  invoke void @_ZN6MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %16 unwind label %120

16:                                               ; preds = %15
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #7
  invoke void @_ZN6MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %13)
          to label %17 unwind label %122

17:                                               ; preds = %16
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #7
  invoke void @_ZN6MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %18 unwind label %124

18:                                               ; preds = %17
  %19 = fpext float %4 to double
  %20 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 1, i32 noundef 1)
  store double %19, ptr %20, align 8, !tbaa !5
  %21 = fpext float %5 to double
  %22 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 1, i32 noundef 2)
  store double %21, ptr %22, align 8, !tbaa !5
  %23 = fpext float %6 to double
  %24 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 2, i32 noundef 1)
  store double %23, ptr %24, align 8, !tbaa !5
  %25 = fpext float %7 to double
  %26 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 2, i32 noundef 2)
  store double %25, ptr %26, align 8, !tbaa !5
  invoke void @_ZNK6Matrix3svdERS_S0_S0_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %27 unwind label %126

27:                                               ; preds = %18
  %28 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %29 unwind label %126

29:                                               ; preds = %27
  %30 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 1, i32 noundef 1)
  %31 = load double, ptr %30, align 8, !tbaa !5
  %32 = fpext float %3 to double
  %33 = fmul double %31, %32
  %34 = fptrunc double %33 to float
  %35 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2, i32 noundef 2)
  %36 = load double, ptr %35, align 8, !tbaa !5
  %37 = fmul double %36, %32
  %38 = fptrunc double %37 to float
  %39 = fmul float %38, %38
  %40 = fmul float %34, %34
  %41 = add nsw i32 %1, -2
  %42 = icmp sgt i32 %2, -1
  %43 = getelementptr inbounds i8, ptr %0, i64 16
  %44 = zext nneg i32 %2 to i64
  %45 = icmp sgt i32 %1, 1
  br i1 %42, label %.split.preheader, label %.split.us.preheader

.split.us.preheader:                              ; preds = %29
  br i1 %45, label %.split.us.1.thread, label %.split.us.1

.split.preheader:                                 ; preds = %29
  br i1 %45, label %128, label %.split.1

.split.us.1.thread:                               ; preds = %.split.us.preheader
  %46 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  br label %.critedge.us.1.thread

.split.us.1:                                      ; preds = %.split.us.preheader
  %47 = icmp eq i32 %1, 1
  br i1 %47, label %.critedge.us.1.thread, label %.critedge.us.1

.critedge.us.1.thread:                            ; preds = %.split.us.1, %.split.us.1.thread
  %48 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  br label %.critedge.us.2.thread

.critedge.us.1:                                   ; preds = %.split.us.1
  %49 = icmp sgt i32 %1, -1
  br i1 %49, label %.critedge.us.2.thread, label %.critedge.us.2

.critedge.us.2.thread:                            ; preds = %.critedge.us.1, %.critedge.us.1.thread
  %50 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  br label %.critedge.us.3.thread

.critedge.us.2:                                   ; preds = %.critedge.us.1
  switch i32 %1, label %.preheader248 [
    i32 -1, label %.critedge.us.3.thread
    i32 -2, label %52
  ]

.critedge.us.3.thread:                            ; preds = %.critedge.us.2, %.critedge.us.2.thread
  %51 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  br label %52

52:                                               ; preds = %.critedge.us.2, %.critedge.us.3.thread
  %53 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  br label %.split251.us

.split251.us:                                     ; preds = %52, %189, %186, %182
  %54 = add nsw i32 %2, -2
  %55 = icmp sgt i32 %1, -1
  %56 = zext nneg i32 %1 to i64
  br i1 %55, label %.split253.us.preheader, label %.preheader248

.split253.us.preheader:                           ; preds = %.split251.us
  %57 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %58 = icmp ugt i32 %57, %1
  %59 = icmp sgt i32 %2, 1
  %or.cond.us = and i1 %59, %58
  br i1 %or.cond.us, label %60, label %.split253.us.1

60:                                               ; preds = %.split253.us.preheader
  %61 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %62 = icmp ult i32 %54, %61
  br i1 %62, label %63, label %.split253.us.1

63:                                               ; preds = %60
  %64 = load ptr, ptr %43, align 8, !tbaa !9
  %65 = zext nneg i32 %54 to i64
  %66 = getelementptr inbounds ptr, ptr %64, i64 %65
  %67 = load ptr, ptr %66, align 8, !tbaa !13
  %68 = getelementptr inbounds float, ptr %67, i64 %56
  store float %8, ptr %68, align 4, !tbaa !14
  br label %.split253.us.1

.split253.us.1:                                   ; preds = %.split253.us.preheader, %60, %63
  %69 = add nsw i32 %2, -1
  %70 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %71 = icmp ugt i32 %70, %1
  %72 = icmp sgt i32 %2, 0
  %or.cond.us.1 = and i1 %72, %71
  br i1 %or.cond.us.1, label %73, label %.critedge247.us.1

73:                                               ; preds = %.split253.us.1
  %74 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %75 = icmp ult i32 %69, %74
  br i1 %75, label %76, label %.critedge247.us.1

76:                                               ; preds = %73
  %77 = load ptr, ptr %43, align 8, !tbaa !9
  %78 = zext nneg i32 %69 to i64
  %79 = getelementptr inbounds ptr, ptr %77, i64 %78
  %80 = load ptr, ptr %79, align 8, !tbaa !13
  %81 = getelementptr inbounds float, ptr %80, i64 %56
  store float %8, ptr %81, align 4, !tbaa !14
  br label %.critedge247.us.1

.critedge247.us.1:                                ; preds = %76, %73, %.split253.us.1
  %82 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %83 = icmp ugt i32 %82, %1
  %or.cond.us.2 = and i1 %42, %83
  br i1 %or.cond.us.2, label %84, label %.critedge247.us.2

84:                                               ; preds = %.critedge247.us.1
  %85 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %86 = icmp ugt i32 %85, %2
  br i1 %86, label %87, label %.critedge247.us.2

87:                                               ; preds = %84
  %88 = load ptr, ptr %43, align 8, !tbaa !9
  %89 = getelementptr inbounds ptr, ptr %88, i64 %44
  %90 = load ptr, ptr %89, align 8, !tbaa !13
  %91 = getelementptr inbounds float, ptr %90, i64 %56
  store float %8, ptr %91, align 4, !tbaa !14
  br label %.critedge247.us.2

.critedge247.us.2:                                ; preds = %87, %84, %.critedge247.us.1
  %92 = add nsw i32 %2, 1
  %93 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %94 = icmp ugt i32 %93, %1
  %95 = icmp sgt i32 %2, -2
  %or.cond.us.3 = and i1 %95, %94
  br i1 %or.cond.us.3, label %96, label %.critedge247.us.3

96:                                               ; preds = %.critedge247.us.2
  %97 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %98 = icmp ult i32 %92, %97
  br i1 %98, label %99, label %.critedge247.us.3

99:                                               ; preds = %96
  %100 = load ptr, ptr %43, align 8, !tbaa !9
  %101 = zext nneg i32 %92 to i64
  %102 = getelementptr inbounds ptr, ptr %100, i64 %101
  %103 = load ptr, ptr %102, align 8, !tbaa !13
  %104 = getelementptr inbounds float, ptr %103, i64 %56
  store float %8, ptr %104, align 4, !tbaa !14
  br label %.critedge247.us.3

.critedge247.us.3:                                ; preds = %99, %96, %.critedge247.us.2
  %105 = add nsw i32 %2, 2
  %106 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %107 = icmp ugt i32 %106, %1
  %108 = icmp sgt i32 %2, -3
  %or.cond.us.4 = and i1 %108, %107
  br i1 %or.cond.us.4, label %109, label %.preheader248

109:                                              ; preds = %.critedge247.us.3
  %110 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %111 = icmp ult i32 %105, %110
  br i1 %111, label %112, label %.preheader248

112:                                              ; preds = %109
  %113 = load ptr, ptr %43, align 8, !tbaa !9
  %114 = zext nneg i32 %105 to i64
  %115 = getelementptr inbounds ptr, ptr %113, i64 %114
  %116 = load ptr, ptr %115, align 8, !tbaa !13
  %117 = getelementptr inbounds float, ptr %116, i64 %56
  store float %8, ptr %117, align 4, !tbaa !14
  br label %.preheader248

118:                                              ; preds = %9
  %119 = landingpad { ptr, i32 }
          cleanup
  br label %510

120:                                              ; preds = %15
  %121 = landingpad { ptr, i32 }
          cleanup
  br label %509

122:                                              ; preds = %16
  %123 = landingpad { ptr, i32 }
          cleanup
  br label %508

124:                                              ; preds = %17
  %125 = landingpad { ptr, i32 }
          cleanup
  br label %507

126:                                              ; preds = %27, %18
  %127 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  br label %507

128:                                              ; preds = %.split.preheader
  %129 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %130 = icmp ult i32 %41, %129
  br i1 %130, label %131, label %.split.1.thread

131:                                              ; preds = %128
  %132 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %133 = icmp ugt i32 %132, %2
  br i1 %133, label %134, label %.split.1.thread

134:                                              ; preds = %131
  %135 = load ptr, ptr %43, align 8, !tbaa !9
  %136 = getelementptr inbounds ptr, ptr %135, i64 %44
  %137 = load ptr, ptr %136, align 8, !tbaa !13
  %138 = zext nneg i32 %41 to i64
  %139 = getelementptr inbounds float, ptr %137, i64 %138
  store float %8, ptr %139, align 4, !tbaa !14
  br label %.split.1.thread

.split.1.thread:                                  ; preds = %134, %131, %128
  %140 = add nsw i32 %1, -1
  br label %142

.split.1:                                         ; preds = %.split.preheader
  %141 = icmp eq i32 %1, 1
  br i1 %141, label %142, label %.critedge.1

142:                                              ; preds = %.split.1.thread, %.split.1
  %143 = phi i32 [ %140, %.split.1.thread ], [ 0, %.split.1 ]
  %144 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %145 = icmp ult i32 %143, %144
  br i1 %145, label %146, label %.critedge.1.thread

146:                                              ; preds = %142
  %147 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %148 = icmp ugt i32 %147, %2
  br i1 %148, label %149, label %.critedge.1.thread

149:                                              ; preds = %146
  %150 = load ptr, ptr %43, align 8, !tbaa !9
  %151 = getelementptr inbounds ptr, ptr %150, i64 %44
  %152 = load ptr, ptr %151, align 8, !tbaa !13
  %153 = zext nneg i32 %143 to i64
  %154 = getelementptr inbounds float, ptr %152, i64 %153
  store float %8, ptr %154, align 4, !tbaa !14
  br label %.critedge.1.thread

.critedge.1:                                      ; preds = %.split.1
  %155 = icmp sgt i32 %1, -1
  br i1 %155, label %.critedge.1.thread, label %.critedge.2

.critedge.1.thread:                               ; preds = %142, %146, %149, %.critedge.1
  %156 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %157 = icmp ugt i32 %156, %1
  br i1 %157, label %158, label %.critedge.2.thread

158:                                              ; preds = %.critedge.1.thread
  %159 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %160 = icmp ugt i32 %159, %2
  br i1 %160, label %161, label %.critedge.2.thread

161:                                              ; preds = %158
  %162 = load ptr, ptr %43, align 8, !tbaa !9
  %163 = getelementptr inbounds ptr, ptr %162, i64 %44
  %164 = load ptr, ptr %163, align 8, !tbaa !13
  %165 = zext nneg i32 %1 to i64
  %166 = getelementptr inbounds float, ptr %164, i64 %165
  store float %8, ptr %166, align 4, !tbaa !14
  br label %.critedge.2.thread

.critedge.2.thread:                               ; preds = %161, %158, %.critedge.1.thread
  %167 = add nuw nsw i32 %1, 1
  br label %168

.critedge.2:                                      ; preds = %.critedge.1
  switch i32 %1, label %.preheader248 [
    i32 -1, label %168
    i32 -2, label %182
  ]

168:                                              ; preds = %.critedge.2, %.critedge.2.thread
  %169 = phi i32 [ %167, %.critedge.2.thread ], [ 0, %.critedge.2 ]
  %170 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %171 = icmp ult i32 %169, %170
  br i1 %171, label %172, label %.critedge.3.thread

172:                                              ; preds = %168
  %173 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %174 = icmp ugt i32 %173, %2
  br i1 %174, label %175, label %.critedge.3.thread

175:                                              ; preds = %172
  %176 = load ptr, ptr %43, align 8, !tbaa !9
  %177 = getelementptr inbounds ptr, ptr %176, i64 %44
  %178 = load ptr, ptr %177, align 8, !tbaa !13
  %179 = zext nneg i32 %169 to i64
  %180 = getelementptr inbounds float, ptr %178, i64 %179
  store float %8, ptr %180, align 4, !tbaa !14
  br label %.critedge.3.thread

.critedge.3.thread:                               ; preds = %175, %172, %168
  %181 = add nsw i32 %1, 2
  br label %182

182:                                              ; preds = %.critedge.2, %.critedge.3.thread
  %183 = phi i32 [ %181, %.critedge.3.thread ], [ 0, %.critedge.2 ]
  %184 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %185 = icmp ult i32 %183, %184
  br i1 %185, label %186, label %.split251.us

186:                                              ; preds = %182
  %187 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %188 = icmp ugt i32 %187, %2
  br i1 %188, label %189, label %.split251.us

189:                                              ; preds = %186
  %190 = load ptr, ptr %43, align 8, !tbaa !9
  %191 = getelementptr inbounds ptr, ptr %190, i64 %44
  %192 = load ptr, ptr %191, align 8, !tbaa !13
  %193 = zext nneg i32 %183 to i64
  %194 = getelementptr inbounds float, ptr %192, i64 %193
  store float %8, ptr %194, align 4, !tbaa !14
  br label %.split251.us

.preheader248:                                    ; preds = %.critedge.2, %.critedge.us.2, %112, %109, %.critedge247.us.3, %.split251.us
  %195 = fcmp ogt float %34, 0.000000e+00
  br i1 %195, label %.lr.ph, label %.preheader

.lr.ph:                                           ; preds = %.preheader248
  %196 = fneg float %39
  %197 = fdiv float %196, %40
  br label %201

.preheader:                                       ; preds = %350, %.preheader248
  %198 = fcmp ogt float %38, 1.000000e+00
  br i1 %198, label %.lr.ph256, label %._crit_edge

.lr.ph256:                                        ; preds = %.preheader
  %199 = fneg float %40
  %200 = fdiv float %199, %39
  br label %353

201:                                              ; preds = %.lr.ph, %350
  %.0212254 = phi float [ 0.000000e+00, %.lr.ph ], [ %351, %350 ]
  %202 = fmul float %197, %.0212254
  %203 = call float @llvm.fmuladd.f32(float %202, float %.0212254, float %39)
  %204 = call noundef float @_ZSt4sqrtf(float noundef %203)
  %205 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 1, i32 noundef 1)
  %206 = load double, ptr %205, align 8, !tbaa !5
  %207 = fpext float %.0212254 to double
  %208 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 1, i32 noundef 2)
  %209 = load double, ptr %208, align 8, !tbaa !5
  %210 = fpext float %204 to double
  %211 = fmul double %209, %210
  %212 = call double @llvm.fmuladd.f64(double %206, double %207, double %211)
  %213 = call double @llvm.rint.f64(double %212)
  %214 = fptosi double %213 to i32
  %215 = add nsw i32 %214, %1
  %216 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 2, i32 noundef 1)
  %217 = load double, ptr %216, align 8, !tbaa !5
  %218 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 2, i32 noundef 2)
  %219 = load double, ptr %218, align 8, !tbaa !5
  %220 = fmul double %219, %210
  %221 = call double @llvm.fmuladd.f64(double %217, double %207, double %220)
  %222 = call double @llvm.rint.f64(double %221)
  %223 = fptosi double %222 to i32
  %224 = add nsw i32 %223, %2
  %225 = icmp sgt i32 %215, -1
  br i1 %225, label %226, label %240

226:                                              ; preds = %201
  %227 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %228 = icmp ult i32 %215, %227
  %229 = icmp sgt i32 %224, -1
  %or.cond3 = select i1 %228, i1 %229, i1 false
  br i1 %or.cond3, label %230, label %240

230:                                              ; preds = %226
  %231 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %232 = icmp ult i32 %224, %231
  br i1 %232, label %233, label %240

233:                                              ; preds = %230
  %234 = load ptr, ptr %43, align 8, !tbaa !9
  %235 = zext nneg i32 %224 to i64
  %236 = getelementptr inbounds ptr, ptr %234, i64 %235
  %237 = load ptr, ptr %236, align 8, !tbaa !13
  %238 = zext nneg i32 %215 to i64
  %239 = getelementptr inbounds float, ptr %237, i64 %238
  store float %8, ptr %239, align 4, !tbaa !14
  br label %240

240:                                              ; preds = %233, %230, %226, %201
  %241 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 1, i32 noundef 1)
  %242 = load double, ptr %241, align 8, !tbaa !5
  %243 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 1, i32 noundef 2)
  %244 = load double, ptr %243, align 8, !tbaa !5
  %245 = fneg double %244
  %246 = fmul double %210, %245
  %247 = call double @llvm.fmuladd.f64(double %242, double %207, double %246)
  %248 = call double @llvm.rint.f64(double %247)
  %249 = fptosi double %248 to i32
  %250 = add nsw i32 %249, %1
  %251 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 2, i32 noundef 1)
  %252 = load double, ptr %251, align 8, !tbaa !5
  %253 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 2, i32 noundef 2)
  %254 = load double, ptr %253, align 8, !tbaa !5
  %255 = fneg double %254
  %256 = fmul double %210, %255
  %257 = call double @llvm.fmuladd.f64(double %252, double %207, double %256)
  %258 = call double @llvm.rint.f64(double %257)
  %259 = fptosi double %258 to i32
  %260 = add nsw i32 %259, %2
  %261 = icmp sgt i32 %250, -1
  br i1 %261, label %262, label %276

262:                                              ; preds = %240
  %263 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %264 = icmp ult i32 %250, %263
  %265 = icmp sgt i32 %260, -1
  %or.cond5 = select i1 %264, i1 %265, i1 false
  br i1 %or.cond5, label %266, label %276

266:                                              ; preds = %262
  %267 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %268 = icmp ult i32 %260, %267
  br i1 %268, label %269, label %276

269:                                              ; preds = %266
  %270 = load ptr, ptr %43, align 8, !tbaa !9
  %271 = zext nneg i32 %260 to i64
  %272 = getelementptr inbounds ptr, ptr %270, i64 %271
  %273 = load ptr, ptr %272, align 8, !tbaa !13
  %274 = zext nneg i32 %250 to i64
  %275 = getelementptr inbounds float, ptr %273, i64 %274
  store float %8, ptr %275, align 4, !tbaa !14
  br label %276

276:                                              ; preds = %269, %266, %262, %240
  %277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 1, i32 noundef 1)
  %278 = load double, ptr %277, align 8, !tbaa !5
  %279 = fneg double %278
  %280 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 1, i32 noundef 2)
  %281 = load double, ptr %280, align 8, !tbaa !5
  %282 = fmul double %281, %210
  %283 = call double @llvm.fmuladd.f64(double %279, double %207, double %282)
  %284 = call double @llvm.rint.f64(double %283)
  %285 = fptosi double %284 to i32
  %286 = add nsw i32 %285, %1
  %287 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 2, i32 noundef 1)
  %288 = load double, ptr %287, align 8, !tbaa !5
  %289 = fneg double %288
  %290 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 2, i32 noundef 2)
  %291 = load double, ptr %290, align 8, !tbaa !5
  %292 = fmul double %291, %210
  %293 = call double @llvm.fmuladd.f64(double %289, double %207, double %292)
  %294 = call double @llvm.rint.f64(double %293)
  %295 = fptosi double %294 to i32
  %296 = add nsw i32 %295, %2
  %297 = icmp sgt i32 %286, -1
  br i1 %297, label %298, label %312

298:                                              ; preds = %276
  %299 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %300 = icmp ult i32 %286, %299
  %301 = icmp sgt i32 %296, -1
  %or.cond7 = select i1 %300, i1 %301, i1 false
  br i1 %or.cond7, label %302, label %312

302:                                              ; preds = %298
  %303 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %304 = icmp ult i32 %296, %303
  br i1 %304, label %305, label %312

305:                                              ; preds = %302
  %306 = load ptr, ptr %43, align 8, !tbaa !9
  %307 = zext nneg i32 %296 to i64
  %308 = getelementptr inbounds ptr, ptr %306, i64 %307
  %309 = load ptr, ptr %308, align 8, !tbaa !13
  %310 = zext nneg i32 %286 to i64
  %311 = getelementptr inbounds float, ptr %309, i64 %310
  store float %8, ptr %311, align 4, !tbaa !14
  br label %312

312:                                              ; preds = %305, %302, %298, %276
  %313 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 1, i32 noundef 1)
  %314 = load double, ptr %313, align 8, !tbaa !5
  %315 = fneg double %314
  %316 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 1, i32 noundef 2)
  %317 = load double, ptr %316, align 8, !tbaa !5
  %318 = fneg double %317
  %319 = fmul double %210, %318
  %320 = call double @llvm.fmuladd.f64(double %315, double %207, double %319)
  %321 = call double @llvm.rint.f64(double %320)
  %322 = fptosi double %321 to i32
  %323 = add nsw i32 %322, %1
  %324 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 2, i32 noundef 1)
  %325 = load double, ptr %324, align 8, !tbaa !5
  %326 = fneg double %325
  %327 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 2, i32 noundef 2)
  %328 = load double, ptr %327, align 8, !tbaa !5
  %329 = fneg double %328
  %330 = fmul double %210, %329
  %331 = call double @llvm.fmuladd.f64(double %326, double %207, double %330)
  %332 = call double @llvm.rint.f64(double %331)
  %333 = fptosi double %332 to i32
  %334 = add nsw i32 %333, %2
  %335 = icmp sgt i32 %323, -1
  br i1 %335, label %336, label %350

336:                                              ; preds = %312
  %337 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %338 = icmp ult i32 %323, %337
  %339 = icmp sgt i32 %334, -1
  %or.cond9 = select i1 %338, i1 %339, i1 false
  br i1 %or.cond9, label %340, label %350

340:                                              ; preds = %336
  %341 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %342 = icmp ult i32 %334, %341
  br i1 %342, label %343, label %350

343:                                              ; preds = %340
  %344 = load ptr, ptr %43, align 8, !tbaa !9
  %345 = zext nneg i32 %334 to i64
  %346 = getelementptr inbounds ptr, ptr %344, i64 %345
  %347 = load ptr, ptr %346, align 8, !tbaa !13
  %348 = zext nneg i32 %323 to i64
  %349 = getelementptr inbounds float, ptr %347, i64 %348
  store float %8, ptr %349, align 4, !tbaa !14
  br label %350

350:                                              ; preds = %312, %336, %340, %343
  %351 = fadd float %.0212254, 1.000000e+00
  %352 = fcmp olt float %351, %34
  br i1 %352, label %201, label %.preheader, !llvm.loop !16

._crit_edge:                                      ; preds = %504, %.preheader
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  ret void

353:                                              ; preds = %.lr.ph256, %504
  %.0255 = phi float [ 1.000000e+00, %.lr.ph256 ], [ %505, %504 ]
  %354 = fmul float %200, %.0255
  %355 = call float @llvm.fmuladd.f32(float %354, float %.0255, float %40)
  %356 = call noundef float @_ZSt4sqrtf(float noundef %355)
  %357 = call noundef float @_ZSt4rintf(float noundef %356)
  %358 = fptosi float %357 to i32
  %359 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 1, i32 noundef 1)
  %360 = load double, ptr %359, align 8, !tbaa !5
  %361 = sitofp i32 %358 to double
  %362 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 1, i32 noundef 2)
  %363 = load double, ptr %362, align 8, !tbaa !5
  %364 = fpext float %.0255 to double
  %365 = fmul double %363, %364
  %366 = call double @llvm.fmuladd.f64(double %360, double %361, double %365)
  %367 = call double @llvm.rint.f64(double %366)
  %368 = fptosi double %367 to i32
  %369 = add nsw i32 %368, %1
  %370 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 2, i32 noundef 1)
  %371 = load double, ptr %370, align 8, !tbaa !5
  %372 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 2, i32 noundef 2)
  %373 = load double, ptr %372, align 8, !tbaa !5
  %374 = fmul double %373, %364
  %375 = call double @llvm.fmuladd.f64(double %371, double %361, double %374)
  %376 = call double @llvm.rint.f64(double %375)
  %377 = fptosi double %376 to i32
  %378 = add nsw i32 %377, %2
  %379 = icmp sgt i32 %369, -1
  br i1 %379, label %380, label %394

380:                                              ; preds = %353
  %381 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %382 = icmp ult i32 %369, %381
  %383 = icmp sgt i32 %378, -1
  %or.cond11 = select i1 %382, i1 %383, i1 false
  br i1 %or.cond11, label %384, label %394

384:                                              ; preds = %380
  %385 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %386 = icmp ult i32 %378, %385
  br i1 %386, label %387, label %394

387:                                              ; preds = %384
  %388 = load ptr, ptr %43, align 8, !tbaa !9
  %389 = zext nneg i32 %378 to i64
  %390 = getelementptr inbounds ptr, ptr %388, i64 %389
  %391 = load ptr, ptr %390, align 8, !tbaa !13
  %392 = zext nneg i32 %369 to i64
  %393 = getelementptr inbounds float, ptr %391, i64 %392
  store float %8, ptr %393, align 4, !tbaa !14
  br label %394

394:                                              ; preds = %387, %384, %380, %353
  %395 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 1, i32 noundef 1)
  %396 = load double, ptr %395, align 8, !tbaa !5
  %397 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 1, i32 noundef 2)
  %398 = load double, ptr %397, align 8, !tbaa !5
  %399 = fneg double %398
  %400 = fmul double %364, %399
  %401 = call double @llvm.fmuladd.f64(double %396, double %361, double %400)
  %402 = call double @llvm.rint.f64(double %401)
  %403 = fptosi double %402 to i32
  %404 = add nsw i32 %403, %1
  %405 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 2, i32 noundef 1)
  %406 = load double, ptr %405, align 8, !tbaa !5
  %407 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 2, i32 noundef 2)
  %408 = load double, ptr %407, align 8, !tbaa !5
  %409 = fneg double %408
  %410 = fmul double %364, %409
  %411 = call double @llvm.fmuladd.f64(double %406, double %361, double %410)
  %412 = call double @llvm.rint.f64(double %411)
  %413 = fptosi double %412 to i32
  %414 = add nsw i32 %413, %2
  %415 = icmp sgt i32 %404, -1
  br i1 %415, label %416, label %430

416:                                              ; preds = %394
  %417 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %418 = icmp ult i32 %404, %417
  %419 = icmp sgt i32 %414, -1
  %or.cond13 = select i1 %418, i1 %419, i1 false
  br i1 %or.cond13, label %420, label %430

420:                                              ; preds = %416
  %421 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %422 = icmp ult i32 %414, %421
  br i1 %422, label %423, label %430

423:                                              ; preds = %420
  %424 = load ptr, ptr %43, align 8, !tbaa !9
  %425 = zext nneg i32 %414 to i64
  %426 = getelementptr inbounds ptr, ptr %424, i64 %425
  %427 = load ptr, ptr %426, align 8, !tbaa !13
  %428 = zext nneg i32 %404 to i64
  %429 = getelementptr inbounds float, ptr %427, i64 %428
  store float %8, ptr %429, align 4, !tbaa !14
  br label %430

430:                                              ; preds = %423, %420, %416, %394
  %431 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 1, i32 noundef 1)
  %432 = load double, ptr %431, align 8, !tbaa !5
  %433 = fneg double %432
  %434 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 1, i32 noundef 2)
  %435 = load double, ptr %434, align 8, !tbaa !5
  %436 = fmul double %435, %364
  %437 = call double @llvm.fmuladd.f64(double %433, double %361, double %436)
  %438 = call double @llvm.rint.f64(double %437)
  %439 = fptosi double %438 to i32
  %440 = add nsw i32 %439, %1
  %441 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 2, i32 noundef 1)
  %442 = load double, ptr %441, align 8, !tbaa !5
  %443 = fneg double %442
  %444 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 2, i32 noundef 2)
  %445 = load double, ptr %444, align 8, !tbaa !5
  %446 = fmul double %445, %364
  %447 = call double @llvm.fmuladd.f64(double %443, double %361, double %446)
  %448 = call double @llvm.rint.f64(double %447)
  %449 = fptosi double %448 to i32
  %450 = add nsw i32 %449, %2
  %451 = icmp sgt i32 %440, -1
  br i1 %451, label %452, label %466

452:                                              ; preds = %430
  %453 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %454 = icmp ult i32 %440, %453
  %455 = icmp sgt i32 %450, -1
  %or.cond15 = select i1 %454, i1 %455, i1 false
  br i1 %or.cond15, label %456, label %466

456:                                              ; preds = %452
  %457 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %458 = icmp ult i32 %450, %457
  br i1 %458, label %459, label %466

459:                                              ; preds = %456
  %460 = load ptr, ptr %43, align 8, !tbaa !9
  %461 = zext nneg i32 %450 to i64
  %462 = getelementptr inbounds ptr, ptr %460, i64 %461
  %463 = load ptr, ptr %462, align 8, !tbaa !13
  %464 = zext nneg i32 %440 to i64
  %465 = getelementptr inbounds float, ptr %463, i64 %464
  store float %8, ptr %465, align 4, !tbaa !14
  br label %466

466:                                              ; preds = %459, %456, %452, %430
  %467 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 1, i32 noundef 1)
  %468 = load double, ptr %467, align 8, !tbaa !5
  %469 = fneg double %468
  %470 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 1, i32 noundef 2)
  %471 = load double, ptr %470, align 8, !tbaa !5
  %472 = fneg double %471
  %473 = fmul double %364, %472
  %474 = call double @llvm.fmuladd.f64(double %469, double %361, double %473)
  %475 = call double @llvm.rint.f64(double %474)
  %476 = fptosi double %475 to i32
  %477 = add nsw i32 %476, %1
  %478 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 2, i32 noundef 1)
  %479 = load double, ptr %478, align 8, !tbaa !5
  %480 = fneg double %479
  %481 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 2, i32 noundef 2)
  %482 = load double, ptr %481, align 8, !tbaa !5
  %483 = fneg double %482
  %484 = fmul double %364, %483
  %485 = call double @llvm.fmuladd.f64(double %480, double %361, double %484)
  %486 = call double @llvm.rint.f64(double %485)
  %487 = fptosi double %486 to i32
  %488 = add nsw i32 %487, %2
  %489 = icmp sgt i32 %477, -1
  br i1 %489, label %490, label %504

490:                                              ; preds = %466
  %491 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %492 = icmp ult i32 %477, %491
  %493 = icmp sgt i32 %488, -1
  %or.cond17 = select i1 %492, i1 %493, i1 false
  br i1 %or.cond17, label %494, label %504

494:                                              ; preds = %490
  %495 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %496 = icmp ult i32 %488, %495
  br i1 %496, label %497, label %504

497:                                              ; preds = %494
  %498 = load ptr, ptr %43, align 8, !tbaa !9
  %499 = zext nneg i32 %488 to i64
  %500 = getelementptr inbounds ptr, ptr %498, i64 %499
  %501 = load ptr, ptr %500, align 8, !tbaa !13
  %502 = zext nneg i32 %477 to i64
  %503 = getelementptr inbounds float, ptr %501, i64 %502
  store float %8, ptr %503, align 4, !tbaa !14
  br label %504

504:                                              ; preds = %466, %490, %494, %497
  %505 = fadd float %.0255, 1.000000e+00
  %506 = fcmp olt float %505, %38
  br i1 %506, label %353, label %._crit_edge, !llvm.loop !18

507:                                              ; preds = %126, %124
  %.pn = phi { ptr, i32 } [ %127, %126 ], [ %125, %124 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  br label %508

508:                                              ; preds = %507, %122
  %.pn.pn = phi { ptr, i32 } [ %.pn, %507 ], [ %123, %122 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  br label %509

509:                                              ; preds = %508, %120
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %508 ], [ %121, %120 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  br label %510

510:                                              ; preds = %509, %118
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %509 ], [ %119, %118 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  resume { ptr, i32 } %.pn.pn.pn.pn
}

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

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

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


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