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

; 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 float @_ZNK6Corner4getXEv(ptr noundef nonnull align 4 dereferenceable(88)) #1 align 2

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

; 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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK6Corner14getCornerScaleEv(ptr noundef nonnull align 4 dereferenceable(88)) #1 align 2

; 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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z14displayEllipseP12ImageContentP16CornerDescriptorf(ptr noundef %0, ptr noundef %1, float noundef %2) #4 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca float, align 4
  %7 = alloca %class.Matrix, align 8
  %8 = alloca %class.Matrix, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %class.Matrix, align 8
  %12 = alloca %class.Matrix, align 8
  %13 = alloca %class.Matrix, align 8
  %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 float, align 4
  %20 = alloca float, align 4
  %21 = alloca float, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca float, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, 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 float, align 4
  %37 = alloca float, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca float, align 4
  %41 = alloca float, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store float %2, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %7) #7
  call void @_ZN6MatrixC1Eii(ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef 2, i32 noundef 2)
  call void @llvm.lifetime.start.p0(i64 24, ptr %8) #7
  invoke void @_ZN6MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %42 unwind label %112

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

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

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

45:                                               ; preds = %44
  %46 = load ptr, ptr %5, align 8, !tbaa !5
  %47 = invoke noundef float @_ZNK6Corner7getMi11Ev(ptr noundef nonnull align 4 dereferenceable(88) %46)
          to label %48 unwind label %128

48:                                               ; preds = %45
  %49 = fpext float %47 to double
  %50 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef 1, i32 noundef 1)
          to label %51 unwind label %128

51:                                               ; preds = %48
  store double %49, ptr %50, align 8, !tbaa !11
  %52 = load ptr, ptr %5, align 8, !tbaa !5
  %53 = invoke noundef float @_ZNK6Corner7getMi12Ev(ptr noundef nonnull align 4 dereferenceable(88) %52)
          to label %54 unwind label %128

54:                                               ; preds = %51
  %55 = fpext float %53 to double
  %56 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef 1, i32 noundef 2)
          to label %57 unwind label %128

57:                                               ; preds = %54
  store double %55, ptr %56, align 8, !tbaa !11
  %58 = load ptr, ptr %5, align 8, !tbaa !5
  %59 = invoke noundef float @_ZNK6Corner7getMi21Ev(ptr noundef nonnull align 4 dereferenceable(88) %58)
          to label %60 unwind label %128

60:                                               ; preds = %57
  %61 = fpext float %59 to double
  %62 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef 2, i32 noundef 1)
          to label %63 unwind label %128

63:                                               ; preds = %60
  store double %61, ptr %62, align 8, !tbaa !11
  %64 = load ptr, ptr %5, align 8, !tbaa !5
  %65 = invoke noundef float @_ZNK6Corner7getMi22Ev(ptr noundef nonnull align 4 dereferenceable(88) %64)
          to label %66 unwind label %128

66:                                               ; preds = %63
  %67 = fpext float %65 to double
  %68 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef 2, i32 noundef 2)
          to label %69 unwind label %128

69:                                               ; preds = %66
  store double %67, ptr %68, align 8, !tbaa !11
  invoke void @_ZNK6Matrix3svdERS_S0_S0_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(24) %11)
          to label %70 unwind label %128

70:                                               ; preds = %69
  %71 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %11)
          to label %72 unwind label %128

72:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  %73 = load ptr, ptr %5, align 8, !tbaa !5
  %74 = invoke noundef float @_ZNK6Corner14getCornerScaleEv(ptr noundef nonnull align 4 dereferenceable(88) %73)
          to label %75 unwind label %132

75:                                               ; preds = %72
  store float %74, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  store float 1.000000e+00, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  store float 0.000000e+00, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  store float 1.000000e+00, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  %76 = load float, ptr %19, align 4, !tbaa !9
  %77 = load float, ptr %17, align 4, !tbaa !9
  %78 = fmul float %76, %77
  %79 = fpext float %78 to double
  %80 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %12, i32 noundef 1, i32 noundef 1)
          to label %81 unwind label %136

81:                                               ; preds = %75
  %82 = load double, ptr %80, align 8, !tbaa !11
  %83 = fmul double %79, %82
  %84 = load float, ptr %14, align 4, !tbaa !9
  %85 = fpext float %84 to double
  %86 = fmul double %83, %85
  %87 = fptrunc double %86 to float
  store float %87, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  %88 = load float, ptr %19, align 4, !tbaa !9
  %89 = load float, ptr %17, align 4, !tbaa !9
  %90 = fmul float %88, %89
  %91 = fpext float %90 to double
  %92 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %12, i32 noundef 2, i32 noundef 2)
          to label %93 unwind label %140

93:                                               ; preds = %81
  %94 = load double, ptr %92, align 8, !tbaa !11
  %95 = fmul double %91, %94
  %96 = load float, ptr %14, align 4, !tbaa !9
  %97 = fpext float %96 to double
  %98 = fmul double %95, %97
  %99 = fptrunc double %98 to float
  store float %99, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  %100 = load ptr, ptr %5, align 8, !tbaa !5
  %101 = invoke noundef float @_ZNK6Corner4getXEv(ptr noundef nonnull align 4 dereferenceable(88) %100)
          to label %102 unwind label %144

102:                                              ; preds = %93
  %103 = fptosi float %101 to i32
  store i32 %103, ptr %22, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  %104 = load ptr, ptr %5, align 8, !tbaa !5
  %105 = invoke noundef float @_ZNK6Corner4getYEv(ptr noundef nonnull align 4 dereferenceable(88) %104)
          to label %106 unwind label %148

106:                                              ; preds = %102
  %107 = fptosi float %105 to i32
  store i32 %107, ptr %23, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  store i32 -2, ptr %24, align 4, !tbaa !13
  br label %108

108:                                              ; preds = %227, %106
  %109 = load i32, ptr %24, align 4, !tbaa !13
  %110 = icmp sle i32 %109, 2
  br i1 %110, label %152, label %111

111:                                              ; preds = %108
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  br label %230

112:                                              ; preds = %3
  %113 = landingpad { ptr, i32 }
          cleanup
  %114 = extractvalue { ptr, i32 } %113, 0
  store ptr %114, ptr %9, align 8
  %115 = extractvalue { ptr, i32 } %113, 1
  store i32 %115, ptr %10, align 4
  br label %877

116:                                              ; preds = %42
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %9, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %10, align 4
  br label %876

120:                                              ; preds = %43
  %121 = landingpad { ptr, i32 }
          cleanup
  %122 = extractvalue { ptr, i32 } %121, 0
  store ptr %122, ptr %9, align 8
  %123 = extractvalue { ptr, i32 } %121, 1
  store i32 %123, ptr %10, align 4
  br label %875

124:                                              ; preds = %44
  %125 = landingpad { ptr, i32 }
          cleanup
  %126 = extractvalue { ptr, i32 } %125, 0
  store ptr %126, ptr %9, align 8
  %127 = extractvalue { ptr, i32 } %125, 1
  store i32 %127, ptr %10, align 4
  br label %874

128:                                              ; preds = %70, %69, %66, %63, %60, %57, %54, %51, %48, %45
  %129 = landingpad { ptr, i32 }
          cleanup
  %130 = extractvalue { ptr, i32 } %129, 0
  store ptr %130, ptr %9, align 8
  %131 = extractvalue { ptr, i32 } %129, 1
  store i32 %131, ptr %10, align 4
  br label %873

132:                                              ; preds = %72
  %133 = landingpad { ptr, i32 }
          cleanup
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %9, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %10, align 4
  br label %872

136:                                              ; preds = %75
  %137 = landingpad { ptr, i32 }
          cleanup
  %138 = extractvalue { ptr, i32 } %137, 0
  store ptr %138, ptr %9, align 8
  %139 = extractvalue { ptr, i32 } %137, 1
  store i32 %139, ptr %10, align 4
  br label %871

140:                                              ; preds = %81
  %141 = landingpad { ptr, i32 }
          cleanup
  %142 = extractvalue { ptr, i32 } %141, 0
  store ptr %142, ptr %9, align 8
  %143 = extractvalue { ptr, i32 } %141, 1
  store i32 %143, ptr %10, align 4
  br label %870

144:                                              ; preds = %93
  %145 = landingpad { ptr, i32 }
          cleanup
  %146 = extractvalue { ptr, i32 } %145, 0
  store ptr %146, ptr %9, align 8
  %147 = extractvalue { ptr, i32 } %145, 1
  store i32 %147, ptr %10, align 4
  br label %869

148:                                              ; preds = %102
  %149 = landingpad { ptr, i32 }
          cleanup
  %150 = extractvalue { ptr, i32 } %149, 0
  store ptr %150, ptr %9, align 8
  %151 = extractvalue { ptr, i32 } %149, 1
  store i32 %151, ptr %10, align 4
  br label %868

152:                                              ; preds = %108
  %153 = load i32, ptr %23, align 4, !tbaa !13
  %154 = icmp sgt i32 %153, 0
  br i1 %154, label %155, label %226

155:                                              ; preds = %152
  %156 = load i32, ptr %23, align 4, !tbaa !13
  %157 = load ptr, ptr %4, align 8, !tbaa !5
  %158 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %157)
          to label %159 unwind label %222

159:                                              ; preds = %155
  %160 = icmp ult i32 %156, %158
  br i1 %160, label %161, label %226

161:                                              ; preds = %159
  %162 = load i32, ptr %23, align 4, !tbaa !13
  %163 = load i32, ptr %24, align 4, !tbaa !13
  %164 = add nsw i32 %162, %163
  %165 = icmp sgt i32 %164, 0
  br i1 %165, label %166, label %226

166:                                              ; preds = %161
  %167 = load i32, ptr %23, align 4, !tbaa !13
  %168 = load i32, ptr %24, align 4, !tbaa !13
  %169 = add nsw i32 %167, %168
  %170 = load ptr, ptr %4, align 8, !tbaa !5
  %171 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %170)
          to label %172 unwind label %222

172:                                              ; preds = %166
  %173 = icmp ult i32 %169, %171
  br i1 %173, label %174, label %226

174:                                              ; preds = %172
  %175 = load i32, ptr %22, align 4, !tbaa !13
  %176 = icmp sgt i32 %175, 0
  br i1 %176, label %177, label %226

177:                                              ; preds = %174
  %178 = load i32, ptr %22, align 4, !tbaa !13
  %179 = load ptr, ptr %4, align 8, !tbaa !5
  %180 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %179)
          to label %181 unwind label %222

181:                                              ; preds = %177
  %182 = icmp ult i32 %178, %180
  br i1 %182, label %183, label %226

183:                                              ; preds = %181
  %184 = load i32, ptr %22, align 4, !tbaa !13
  %185 = load i32, ptr %24, align 4, !tbaa !13
  %186 = add nsw i32 %184, %185
  %187 = icmp sgt i32 %186, 0
  br i1 %187, label %188, label %226

188:                                              ; preds = %183
  %189 = load i32, ptr %22, align 4, !tbaa !13
  %190 = load i32, ptr %24, align 4, !tbaa !13
  %191 = add nsw i32 %189, %190
  %192 = load ptr, ptr %4, align 8, !tbaa !5
  %193 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %192)
          to label %194 unwind label %222

194:                                              ; preds = %188
  %195 = icmp ult i32 %191, %193
  br i1 %195, label %196, label %226

196:                                              ; preds = %194
  %197 = load float, ptr %6, align 4, !tbaa !9
  %198 = load ptr, ptr %4, align 8, !tbaa !5
  %199 = getelementptr inbounds %class.ImageContent, ptr %198, i32 0, i32 4
  %200 = load ptr, ptr %199, align 8, !tbaa !15
  %201 = load i32, ptr %23, align 4, !tbaa !13
  %202 = load i32, ptr %24, align 4, !tbaa !13
  %203 = add nsw i32 %201, %202
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds ptr, ptr %200, i64 %204
  %206 = load ptr, ptr %205, align 8, !tbaa !5
  %207 = load i32, ptr %22, align 4, !tbaa !13
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds float, ptr %206, i64 %208
  store float %197, ptr %209, align 4, !tbaa !9
  %210 = load ptr, ptr %4, align 8, !tbaa !5
  %211 = getelementptr inbounds %class.ImageContent, ptr %210, i32 0, i32 4
  %212 = load ptr, ptr %211, align 8, !tbaa !15
  %213 = load i32, ptr %23, align 4, !tbaa !13
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds ptr, ptr %212, i64 %214
  %216 = load ptr, ptr %215, align 8, !tbaa !5
  %217 = load i32, ptr %22, align 4, !tbaa !13
  %218 = load i32, ptr %24, align 4, !tbaa !13
  %219 = add nsw i32 %217, %218
  %220 = sext i32 %219 to i64
  %221 = getelementptr inbounds float, ptr %216, i64 %220
  store float %197, ptr %221, align 4, !tbaa !9
  br label %226

222:                                              ; preds = %188, %177, %166, %155
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %9, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  br label %868

226:                                              ; preds = %196, %194, %183, %181, %174, %172, %161, %159, %152
  br label %227

227:                                              ; preds = %226
  %228 = load i32, ptr %24, align 4, !tbaa !13
  %229 = add nsw i32 %228, 1
  store i32 %229, ptr %24, align 4, !tbaa !13
  br label %108, !llvm.loop !17

230:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  store float 0.000000e+00, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  store i32 0, ptr %26, align 4, !tbaa !13
  br label %231

231:                                              ; preds = %864, %230
  %232 = load i32, ptr %26, align 4, !tbaa !13
  %233 = icmp slt i32 %232, 2
  br i1 %233, label %235, label %234

234:                                              ; preds = %231
  store i32 5, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %867

235:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  %236 = load float, ptr %20, align 4, !tbaa !9
  %237 = load float, ptr %25, align 4, !tbaa !9
  %238 = fsub float %236, %237
  store float %238, ptr %28, align 4, !tbaa !9
  br label %239

239:                                              ; preds = %857, %235
  %240 = load float, ptr %28, align 4, !tbaa !9
  %241 = load float, ptr %20, align 4, !tbaa !9
  %242 = load float, ptr %25, align 4, !tbaa !9
  %243 = fadd float %241, %242
  %244 = fcmp ole float %240, %243
  br i1 %244, label %246, label %245

245:                                              ; preds = %239
  store i32 8, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %862

246:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  %247 = load float, ptr %21, align 4, !tbaa !9
  %248 = load float, ptr %25, align 4, !tbaa !9
  %249 = fsub float %247, %248
  store float %249, ptr %29, align 4, !tbaa !9
  br label %250

250:                                              ; preds = %848, %246
  %251 = load float, ptr %29, align 4, !tbaa !9
  %252 = load float, ptr %21, align 4, !tbaa !9
  %253 = load float, ptr %25, align 4, !tbaa !9
  %254 = fadd float %252, %253
  %255 = fcmp ole float %251, %254
  br i1 %255, label %257, label %256

256:                                              ; preds = %250
  store i32 11, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  br label %856

257:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #7
  %258 = load float, ptr %29, align 4, !tbaa !9
  %259 = load float, ptr %29, align 4, !tbaa !9
  %260 = fmul float %258, %259
  store float %260, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  %261 = load float, ptr %28, align 4, !tbaa !9
  %262 = load float, ptr %28, align 4, !tbaa !9
  %263 = fmul float %261, %262
  store float %263, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  %264 = load float, ptr %30, align 4, !tbaa !9
  %265 = load float, ptr %31, align 4, !tbaa !9
  %266 = fdiv float %264, %265
  store float %266, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  %267 = load float, ptr %31, align 4, !tbaa !9
  %268 = load float, ptr %30, align 4, !tbaa !9
  %269 = fdiv float %267, %268
  store float %269, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  %270 = load ptr, ptr %5, align 8, !tbaa !5
  %271 = invoke noundef float @_ZNK6Corner4getXEv(ptr noundef nonnull align 4 dereferenceable(88) %270)
          to label %272 unwind label %283

272:                                              ; preds = %257
  %273 = fptosi float %271 to i32
  store i32 %273, ptr %34, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  %274 = load ptr, ptr %5, align 8, !tbaa !5
  %275 = invoke noundef float @_ZNK6Corner4getYEv(ptr noundef nonnull align 4 dereferenceable(88) %274)
          to label %276 unwind label %287

276:                                              ; preds = %272
  %277 = fptosi float %275 to i32
  store i32 %277, ptr %35, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  store float 0.000000e+00, ptr %40, align 4, !tbaa !9
  br label %278

278:                                              ; preds = %561, %276
  %279 = load float, ptr %40, align 4, !tbaa !9
  %280 = load float, ptr %28, align 4, !tbaa !9
  %281 = fcmp olt float %279, %280
  br i1 %281, label %291, label %282

282:                                              ; preds = %278
  store i32 14, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  br label %564

283:                                              ; preds = %257
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %9, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %10, align 4
  br label %855

287:                                              ; preds = %272
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %9, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %10, align 4
  br label %854

291:                                              ; preds = %278
  %292 = load float, ptr %30, align 4, !tbaa !9
  %293 = load float, ptr %32, align 4, !tbaa !9
  %294 = load float, ptr %40, align 4, !tbaa !9
  %295 = fmul float %293, %294
  %296 = load float, ptr %40, align 4, !tbaa !9
  %297 = fneg float %295
  %298 = call float @llvm.fmuladd.f32(float %297, float %296, float %292)
  %299 = invoke noundef float @_ZSt4sqrtf(float noundef %298)
          to label %300 unwind label %362

300:                                              ; preds = %291
  store float %299, ptr %37, align 4, !tbaa !9
  %301 = load i32, ptr %34, align 4, !tbaa !13
  %302 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 1, i32 noundef 1)
          to label %303 unwind label %362

303:                                              ; preds = %300
  %304 = load double, ptr %302, align 8, !tbaa !11
  %305 = load float, ptr %40, align 4, !tbaa !9
  %306 = fpext float %305 to double
  %307 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 1, i32 noundef 2)
          to label %308 unwind label %362

308:                                              ; preds = %303
  %309 = load double, ptr %307, align 8, !tbaa !11
  %310 = load float, ptr %37, align 4, !tbaa !9
  %311 = fpext float %310 to double
  %312 = fmul double %309, %311
  %313 = call double @llvm.fmuladd.f64(double %304, double %306, double %312)
  %314 = call double @llvm.rint.f64(double %313)
  %315 = fptosi double %314 to i32
  %316 = add nsw i32 %301, %315
  store i32 %316, ptr %38, align 4, !tbaa !13
  %317 = load i32, ptr %35, align 4, !tbaa !13
  %318 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2, i32 noundef 1)
          to label %319 unwind label %362

319:                                              ; preds = %308
  %320 = load double, ptr %318, align 8, !tbaa !11
  %321 = load float, ptr %40, align 4, !tbaa !9
  %322 = fpext float %321 to double
  %323 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2, i32 noundef 2)
          to label %324 unwind label %362

324:                                              ; preds = %319
  %325 = load double, ptr %323, align 8, !tbaa !11
  %326 = load float, ptr %37, align 4, !tbaa !9
  %327 = fpext float %326 to double
  %328 = fmul double %325, %327
  %329 = call double @llvm.fmuladd.f64(double %320, double %322, double %328)
  %330 = call double @llvm.rint.f64(double %329)
  %331 = fptosi double %330 to i32
  %332 = add nsw i32 %317, %331
  store i32 %332, ptr %39, align 4, !tbaa !13
  %333 = load i32, ptr %38, align 4, !tbaa !13
  %334 = icmp sge i32 %333, 0
  br i1 %334, label %335, label %366

335:                                              ; preds = %324
  %336 = load i32, ptr %38, align 4, !tbaa !13
  %337 = load ptr, ptr %4, align 8, !tbaa !5
  %338 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %337)
          to label %339 unwind label %362

339:                                              ; preds = %335
  %340 = icmp ult i32 %336, %338
  br i1 %340, label %341, label %366

341:                                              ; preds = %339
  %342 = load i32, ptr %39, align 4, !tbaa !13
  %343 = icmp sge i32 %342, 0
  br i1 %343, label %344, label %366

344:                                              ; preds = %341
  %345 = load i32, ptr %39, align 4, !tbaa !13
  %346 = load ptr, ptr %4, align 8, !tbaa !5
  %347 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %346)
          to label %348 unwind label %362

348:                                              ; preds = %344
  %349 = icmp ult i32 %345, %347
  br i1 %349, label %350, label %366

350:                                              ; preds = %348
  %351 = load float, ptr %18, align 4, !tbaa !9
  %352 = load ptr, ptr %4, align 8, !tbaa !5
  %353 = getelementptr inbounds %class.ImageContent, ptr %352, i32 0, i32 4
  %354 = load ptr, ptr %353, align 8, !tbaa !15
  %355 = load i32, ptr %39, align 4, !tbaa !13
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds ptr, ptr %354, i64 %356
  %358 = load ptr, ptr %357, align 8, !tbaa !5
  %359 = load i32, ptr %38, align 4, !tbaa !13
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds float, ptr %358, i64 %360
  store float %351, ptr %361, align 4, !tbaa !9
  br label %366

362:                                              ; preds = %542, %533, %515, %503, %497, %494, %476, %467, %450, %439, %433, %430, %412, %403, %386, %374, %369, %366, %344, %335, %319, %308, %303, %300, %291
  %363 = landingpad { ptr, i32 }
          cleanup
  %364 = extractvalue { ptr, i32 } %363, 0
  store ptr %364, ptr %9, align 8
  %365 = extractvalue { ptr, i32 } %363, 1
  store i32 %365, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  br label %853

366:                                              ; preds = %350, %348, %341, %339, %324
  %367 = load i32, ptr %34, align 4, !tbaa !13
  %368 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 1, i32 noundef 1)
          to label %369 unwind label %362

369:                                              ; preds = %366
  %370 = load double, ptr %368, align 8, !tbaa !11
  %371 = load float, ptr %40, align 4, !tbaa !9
  %372 = fpext float %371 to double
  %373 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 1, i32 noundef 2)
          to label %374 unwind label %362

374:                                              ; preds = %369
  %375 = load double, ptr %373, align 8, !tbaa !11
  %376 = load float, ptr %37, align 4, !tbaa !9
  %377 = fpext float %376 to double
  %378 = fmul double %375, %377
  %379 = fneg double %378
  %380 = call double @llvm.fmuladd.f64(double %370, double %372, double %379)
  %381 = call double @llvm.rint.f64(double %380)
  %382 = fptosi double %381 to i32
  %383 = add nsw i32 %367, %382
  store i32 %383, ptr %38, align 4, !tbaa !13
  %384 = load i32, ptr %35, align 4, !tbaa !13
  %385 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2, i32 noundef 1)
          to label %386 unwind label %362

386:                                              ; preds = %374
  %387 = load double, ptr %385, align 8, !tbaa !11
  %388 = load float, ptr %40, align 4, !tbaa !9
  %389 = fpext float %388 to double
  %390 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2, i32 noundef 2)
          to label %391 unwind label %362

391:                                              ; preds = %386
  %392 = load double, ptr %390, align 8, !tbaa !11
  %393 = load float, ptr %37, align 4, !tbaa !9
  %394 = fpext float %393 to double
  %395 = fmul double %392, %394
  %396 = fneg double %395
  %397 = call double @llvm.fmuladd.f64(double %387, double %389, double %396)
  %398 = call double @llvm.rint.f64(double %397)
  %399 = fptosi double %398 to i32
  %400 = add nsw i32 %384, %399
  store i32 %400, ptr %39, align 4, !tbaa !13
  %401 = load i32, ptr %38, align 4, !tbaa !13
  %402 = icmp sge i32 %401, 0
  br i1 %402, label %403, label %430

403:                                              ; preds = %391
  %404 = load i32, ptr %38, align 4, !tbaa !13
  %405 = load ptr, ptr %4, align 8, !tbaa !5
  %406 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %405)
          to label %407 unwind label %362

407:                                              ; preds = %403
  %408 = icmp ult i32 %404, %406
  br i1 %408, label %409, label %430

409:                                              ; preds = %407
  %410 = load i32, ptr %39, align 4, !tbaa !13
  %411 = icmp sge i32 %410, 0
  br i1 %411, label %412, label %430

412:                                              ; preds = %409
  %413 = load i32, ptr %39, align 4, !tbaa !13
  %414 = load ptr, ptr %4, align 8, !tbaa !5
  %415 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %414)
          to label %416 unwind label %362

416:                                              ; preds = %412
  %417 = icmp ult i32 %413, %415
  br i1 %417, label %418, label %430

418:                                              ; preds = %416
  %419 = load float, ptr %18, align 4, !tbaa !9
  %420 = load ptr, ptr %4, align 8, !tbaa !5
  %421 = getelementptr inbounds %class.ImageContent, ptr %420, i32 0, i32 4
  %422 = load ptr, ptr %421, align 8, !tbaa !15
  %423 = load i32, ptr %39, align 4, !tbaa !13
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds ptr, ptr %422, i64 %424
  %426 = load ptr, ptr %425, align 8, !tbaa !5
  %427 = load i32, ptr %38, align 4, !tbaa !13
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds float, ptr %426, i64 %428
  store float %419, ptr %429, align 4, !tbaa !9
  br label %430

430:                                              ; preds = %418, %416, %409, %407, %391
  %431 = load i32, ptr %34, align 4, !tbaa !13
  %432 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 1, i32 noundef 1)
          to label %433 unwind label %362

433:                                              ; preds = %430
  %434 = load double, ptr %432, align 8, !tbaa !11
  %435 = fneg double %434
  %436 = load float, ptr %40, align 4, !tbaa !9
  %437 = fpext float %436 to double
  %438 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 1, i32 noundef 2)
          to label %439 unwind label %362

439:                                              ; preds = %433
  %440 = load double, ptr %438, align 8, !tbaa !11
  %441 = load float, ptr %37, align 4, !tbaa !9
  %442 = fpext float %441 to double
  %443 = fmul double %440, %442
  %444 = call double @llvm.fmuladd.f64(double %435, double %437, double %443)
  %445 = call double @llvm.rint.f64(double %444)
  %446 = fptosi double %445 to i32
  %447 = add nsw i32 %431, %446
  store i32 %447, ptr %38, align 4, !tbaa !13
  %448 = load i32, ptr %35, align 4, !tbaa !13
  %449 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2, i32 noundef 1)
          to label %450 unwind label %362

450:                                              ; preds = %439
  %451 = load double, ptr %449, align 8, !tbaa !11
  %452 = fneg double %451
  %453 = load float, ptr %40, align 4, !tbaa !9
  %454 = fpext float %453 to double
  %455 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2, i32 noundef 2)
          to label %456 unwind label %362

456:                                              ; preds = %450
  %457 = load double, ptr %455, align 8, !tbaa !11
  %458 = load float, ptr %37, align 4, !tbaa !9
  %459 = fpext float %458 to double
  %460 = fmul double %457, %459
  %461 = call double @llvm.fmuladd.f64(double %452, double %454, double %460)
  %462 = call double @llvm.rint.f64(double %461)
  %463 = fptosi double %462 to i32
  %464 = add nsw i32 %448, %463
  store i32 %464, ptr %39, align 4, !tbaa !13
  %465 = load i32, ptr %38, align 4, !tbaa !13
  %466 = icmp sge i32 %465, 0
  br i1 %466, label %467, label %494

467:                                              ; preds = %456
  %468 = load i32, ptr %38, align 4, !tbaa !13
  %469 = load ptr, ptr %4, align 8, !tbaa !5
  %470 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %469)
          to label %471 unwind label %362

471:                                              ; preds = %467
  %472 = icmp ult i32 %468, %470
  br i1 %472, label %473, label %494

473:                                              ; preds = %471
  %474 = load i32, ptr %39, align 4, !tbaa !13
  %475 = icmp sge i32 %474, 0
  br i1 %475, label %476, label %494

476:                                              ; preds = %473
  %477 = load i32, ptr %39, align 4, !tbaa !13
  %478 = load ptr, ptr %4, align 8, !tbaa !5
  %479 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %478)
          to label %480 unwind label %362

480:                                              ; preds = %476
  %481 = icmp ult i32 %477, %479
  br i1 %481, label %482, label %494

482:                                              ; preds = %480
  %483 = load float, ptr %18, align 4, !tbaa !9
  %484 = load ptr, ptr %4, align 8, !tbaa !5
  %485 = getelementptr inbounds %class.ImageContent, ptr %484, i32 0, i32 4
  %486 = load ptr, ptr %485, align 8, !tbaa !15
  %487 = load i32, ptr %39, align 4, !tbaa !13
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds ptr, ptr %486, i64 %488
  %490 = load ptr, ptr %489, align 8, !tbaa !5
  %491 = load i32, ptr %38, align 4, !tbaa !13
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds float, ptr %490, i64 %492
  store float %483, ptr %493, align 4, !tbaa !9
  br label %494

494:                                              ; preds = %482, %480, %473, %471, %456
  %495 = load i32, ptr %34, align 4, !tbaa !13
  %496 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 1, i32 noundef 1)
          to label %497 unwind label %362

497:                                              ; preds = %494
  %498 = load double, ptr %496, align 8, !tbaa !11
  %499 = fneg double %498
  %500 = load float, ptr %40, align 4, !tbaa !9
  %501 = fpext float %500 to double
  %502 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 1, i32 noundef 2)
          to label %503 unwind label %362

503:                                              ; preds = %497
  %504 = load double, ptr %502, align 8, !tbaa !11
  %505 = load float, ptr %37, align 4, !tbaa !9
  %506 = fpext float %505 to double
  %507 = fmul double %504, %506
  %508 = fneg double %507
  %509 = call double @llvm.fmuladd.f64(double %499, double %501, double %508)
  %510 = call double @llvm.rint.f64(double %509)
  %511 = fptosi double %510 to i32
  %512 = add nsw i32 %495, %511
  store i32 %512, ptr %38, align 4, !tbaa !13
  %513 = load i32, ptr %35, align 4, !tbaa !13
  %514 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2, i32 noundef 1)
          to label %515 unwind label %362

515:                                              ; preds = %503
  %516 = load double, ptr %514, align 8, !tbaa !11
  %517 = fneg double %516
  %518 = load float, ptr %40, align 4, !tbaa !9
  %519 = fpext float %518 to double
  %520 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2, i32 noundef 2)
          to label %521 unwind label %362

521:                                              ; preds = %515
  %522 = load double, ptr %520, align 8, !tbaa !11
  %523 = load float, ptr %37, align 4, !tbaa !9
  %524 = fpext float %523 to double
  %525 = fmul double %522, %524
  %526 = fneg double %525
  %527 = call double @llvm.fmuladd.f64(double %517, double %519, double %526)
  %528 = call double @llvm.rint.f64(double %527)
  %529 = fptosi double %528 to i32
  %530 = add nsw i32 %513, %529
  store i32 %530, ptr %39, align 4, !tbaa !13
  %531 = load i32, ptr %38, align 4, !tbaa !13
  %532 = icmp sge i32 %531, 0
  br i1 %532, label %533, label %560

533:                                              ; preds = %521
  %534 = load i32, ptr %38, align 4, !tbaa !13
  %535 = load ptr, ptr %4, align 8, !tbaa !5
  %536 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %535)
          to label %537 unwind label %362

537:                                              ; preds = %533
  %538 = icmp ult i32 %534, %536
  br i1 %538, label %539, label %560

539:                                              ; preds = %537
  %540 = load i32, ptr %39, align 4, !tbaa !13
  %541 = icmp sge i32 %540, 0
  br i1 %541, label %542, label %560

542:                                              ; preds = %539
  %543 = load i32, ptr %39, align 4, !tbaa !13
  %544 = load ptr, ptr %4, align 8, !tbaa !5
  %545 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %544)
          to label %546 unwind label %362

546:                                              ; preds = %542
  %547 = icmp ult i32 %543, %545
  br i1 %547, label %548, label %560

548:                                              ; preds = %546
  %549 = load float, ptr %18, align 4, !tbaa !9
  %550 = load ptr, ptr %4, align 8, !tbaa !5
  %551 = getelementptr inbounds %class.ImageContent, ptr %550, i32 0, i32 4
  %552 = load ptr, ptr %551, align 8, !tbaa !15
  %553 = load i32, ptr %39, align 4, !tbaa !13
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds ptr, ptr %552, i64 %554
  %556 = load ptr, ptr %555, align 8, !tbaa !5
  %557 = load i32, ptr %38, align 4, !tbaa !13
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds float, ptr %556, i64 %558
  store float %549, ptr %559, align 4, !tbaa !9
  br label %560

560:                                              ; preds = %548, %546, %539, %537, %521
  br label %561

561:                                              ; preds = %560
  %562 = load float, ptr %40, align 4, !tbaa !9
  %563 = fadd float %562, 1.000000e+00
  store float %563, ptr %40, align 4, !tbaa !9
  br label %278, !llvm.loop !19

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

565:                                              ; preds = %844, %564
  %566 = load float, ptr %41, align 4, !tbaa !9
  %567 = load float, ptr %29, align 4, !tbaa !9
  %568 = fcmp olt float %566, %567
  br i1 %568, label %570, label %569

569:                                              ; preds = %565
  store i32 17, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  br label %847

570:                                              ; preds = %565
  %571 = load float, ptr %31, align 4, !tbaa !9
  %572 = load float, ptr %33, align 4, !tbaa !9
  %573 = load float, ptr %41, align 4, !tbaa !9
  %574 = fmul float %572, %573
  %575 = load float, ptr %41, align 4, !tbaa !9
  %576 = fneg float %574
  %577 = call float @llvm.fmuladd.f32(float %576, float %575, float %571)
  %578 = invoke noundef float @_ZSt4sqrtf(float noundef %577)
          to label %579 unwind label %645

579:                                              ; preds = %570
  %580 = invoke noundef float @_ZSt4rintf(float noundef %578)
          to label %581 unwind label %645

581:                                              ; preds = %579
  %582 = fptosi float %580 to i32
  %583 = sitofp i32 %582 to float
  store float %583, ptr %36, align 4, !tbaa !9
  %584 = load i32, ptr %34, align 4, !tbaa !13
  %585 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 1, i32 noundef 1)
          to label %586 unwind label %645

586:                                              ; preds = %581
  %587 = load double, ptr %585, align 8, !tbaa !11
  %588 = load float, ptr %36, align 4, !tbaa !9
  %589 = fpext float %588 to double
  %590 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 1, i32 noundef 2)
          to label %591 unwind label %645

591:                                              ; preds = %586
  %592 = load double, ptr %590, align 8, !tbaa !11
  %593 = load float, ptr %41, align 4, !tbaa !9
  %594 = fpext float %593 to double
  %595 = fmul double %592, %594
  %596 = call double @llvm.fmuladd.f64(double %587, double %589, double %595)
  %597 = call double @llvm.rint.f64(double %596)
  %598 = fptosi double %597 to i32
  %599 = add nsw i32 %584, %598
  store i32 %599, ptr %38, align 4, !tbaa !13
  %600 = load i32, ptr %35, align 4, !tbaa !13
  %601 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2, i32 noundef 1)
          to label %602 unwind label %645

602:                                              ; preds = %591
  %603 = load double, ptr %601, align 8, !tbaa !11
  %604 = load float, ptr %36, align 4, !tbaa !9
  %605 = fpext float %604 to double
  %606 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2, i32 noundef 2)
          to label %607 unwind label %645

607:                                              ; preds = %602
  %608 = load double, ptr %606, align 8, !tbaa !11
  %609 = load float, ptr %41, align 4, !tbaa !9
  %610 = fpext float %609 to double
  %611 = fmul double %608, %610
  %612 = call double @llvm.fmuladd.f64(double %603, double %605, double %611)
  %613 = call double @llvm.rint.f64(double %612)
  %614 = fptosi double %613 to i32
  %615 = add nsw i32 %600, %614
  store i32 %615, ptr %39, align 4, !tbaa !13
  %616 = load i32, ptr %38, align 4, !tbaa !13
  %617 = icmp sge i32 %616, 0
  br i1 %617, label %618, label %649

618:                                              ; preds = %607
  %619 = load i32, ptr %38, align 4, !tbaa !13
  %620 = load ptr, ptr %4, align 8, !tbaa !5
  %621 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %620)
          to label %622 unwind label %645

622:                                              ; preds = %618
  %623 = icmp ult i32 %619, %621
  br i1 %623, label %624, label %649

624:                                              ; preds = %622
  %625 = load i32, ptr %39, align 4, !tbaa !13
  %626 = icmp sge i32 %625, 0
  br i1 %626, label %627, label %649

627:                                              ; preds = %624
  %628 = load i32, ptr %39, align 4, !tbaa !13
  %629 = load ptr, ptr %4, align 8, !tbaa !5
  %630 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %629)
          to label %631 unwind label %645

631:                                              ; preds = %627
  %632 = icmp ult i32 %628, %630
  br i1 %632, label %633, label %649

633:                                              ; preds = %631
  %634 = load float, ptr %18, align 4, !tbaa !9
  %635 = load ptr, ptr %4, align 8, !tbaa !5
  %636 = getelementptr inbounds %class.ImageContent, ptr %635, i32 0, i32 4
  %637 = load ptr, ptr %636, align 8, !tbaa !15
  %638 = load i32, ptr %39, align 4, !tbaa !13
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds ptr, ptr %637, i64 %639
  %641 = load ptr, ptr %640, align 8, !tbaa !5
  %642 = load i32, ptr %38, align 4, !tbaa !13
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds float, ptr %641, i64 %643
  store float %634, ptr %644, align 4, !tbaa !9
  br label %649

645:                                              ; preds = %825, %816, %798, %786, %780, %777, %759, %750, %733, %722, %716, %713, %695, %686, %669, %657, %652, %649, %627, %618, %602, %591, %586, %581, %579, %570
  %646 = landingpad { ptr, i32 }
          cleanup
  %647 = extractvalue { ptr, i32 } %646, 0
  store ptr %647, ptr %9, align 8
  %648 = extractvalue { ptr, i32 } %646, 1
  store i32 %648, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  br label %853

649:                                              ; preds = %633, %631, %624, %622, %607
  %650 = load i32, ptr %34, align 4, !tbaa !13
  %651 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 1, i32 noundef 1)
          to label %652 unwind label %645

652:                                              ; preds = %649
  %653 = load double, ptr %651, align 8, !tbaa !11
  %654 = load float, ptr %36, align 4, !tbaa !9
  %655 = fpext float %654 to double
  %656 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 1, i32 noundef 2)
          to label %657 unwind label %645

657:                                              ; preds = %652
  %658 = load double, ptr %656, align 8, !tbaa !11
  %659 = load float, ptr %41, align 4, !tbaa !9
  %660 = fpext float %659 to double
  %661 = fmul double %658, %660
  %662 = fneg double %661
  %663 = call double @llvm.fmuladd.f64(double %653, double %655, double %662)
  %664 = call double @llvm.rint.f64(double %663)
  %665 = fptosi double %664 to i32
  %666 = add nsw i32 %650, %665
  store i32 %666, ptr %38, align 4, !tbaa !13
  %667 = load i32, ptr %35, align 4, !tbaa !13
  %668 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2, i32 noundef 1)
          to label %669 unwind label %645

669:                                              ; preds = %657
  %670 = load double, ptr %668, align 8, !tbaa !11
  %671 = load float, ptr %36, align 4, !tbaa !9
  %672 = fpext float %671 to double
  %673 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2, i32 noundef 2)
          to label %674 unwind label %645

674:                                              ; preds = %669
  %675 = load double, ptr %673, align 8, !tbaa !11
  %676 = load float, ptr %41, align 4, !tbaa !9
  %677 = fpext float %676 to double
  %678 = fmul double %675, %677
  %679 = fneg double %678
  %680 = call double @llvm.fmuladd.f64(double %670, double %672, double %679)
  %681 = call double @llvm.rint.f64(double %680)
  %682 = fptosi double %681 to i32
  %683 = add nsw i32 %667, %682
  store i32 %683, ptr %39, align 4, !tbaa !13
  %684 = load i32, ptr %38, align 4, !tbaa !13
  %685 = icmp sge i32 %684, 0
  br i1 %685, label %686, label %713

686:                                              ; preds = %674
  %687 = load i32, ptr %38, align 4, !tbaa !13
  %688 = load ptr, ptr %4, align 8, !tbaa !5
  %689 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %688)
          to label %690 unwind label %645

690:                                              ; preds = %686
  %691 = icmp ult i32 %687, %689
  br i1 %691, label %692, label %713

692:                                              ; preds = %690
  %693 = load i32, ptr %39, align 4, !tbaa !13
  %694 = icmp sge i32 %693, 0
  br i1 %694, label %695, label %713

695:                                              ; preds = %692
  %696 = load i32, ptr %39, align 4, !tbaa !13
  %697 = load ptr, ptr %4, align 8, !tbaa !5
  %698 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %697)
          to label %699 unwind label %645

699:                                              ; preds = %695
  %700 = icmp ult i32 %696, %698
  br i1 %700, label %701, label %713

701:                                              ; preds = %699
  %702 = load float, ptr %18, align 4, !tbaa !9
  %703 = load ptr, ptr %4, align 8, !tbaa !5
  %704 = getelementptr inbounds %class.ImageContent, ptr %703, i32 0, i32 4
  %705 = load ptr, ptr %704, align 8, !tbaa !15
  %706 = load i32, ptr %39, align 4, !tbaa !13
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds ptr, ptr %705, i64 %707
  %709 = load ptr, ptr %708, align 8, !tbaa !5
  %710 = load i32, ptr %38, align 4, !tbaa !13
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds float, ptr %709, i64 %711
  store float %702, ptr %712, align 4, !tbaa !9
  br label %713

713:                                              ; preds = %701, %699, %692, %690, %674
  %714 = load i32, ptr %34, align 4, !tbaa !13
  %715 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 1, i32 noundef 1)
          to label %716 unwind label %645

716:                                              ; preds = %713
  %717 = load double, ptr %715, align 8, !tbaa !11
  %718 = fneg double %717
  %719 = load float, ptr %36, align 4, !tbaa !9
  %720 = fpext float %719 to double
  %721 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 1, i32 noundef 2)
          to label %722 unwind label %645

722:                                              ; preds = %716
  %723 = load double, ptr %721, align 8, !tbaa !11
  %724 = load float, ptr %41, align 4, !tbaa !9
  %725 = fpext float %724 to double
  %726 = fmul double %723, %725
  %727 = call double @llvm.fmuladd.f64(double %718, double %720, double %726)
  %728 = call double @llvm.rint.f64(double %727)
  %729 = fptosi double %728 to i32
  %730 = add nsw i32 %714, %729
  store i32 %730, ptr %38, align 4, !tbaa !13
  %731 = load i32, ptr %35, align 4, !tbaa !13
  %732 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2, i32 noundef 1)
          to label %733 unwind label %645

733:                                              ; preds = %722
  %734 = load double, ptr %732, align 8, !tbaa !11
  %735 = fneg double %734
  %736 = load float, ptr %36, align 4, !tbaa !9
  %737 = fpext float %736 to double
  %738 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2, i32 noundef 2)
          to label %739 unwind label %645

739:                                              ; preds = %733
  %740 = load double, ptr %738, align 8, !tbaa !11
  %741 = load float, ptr %41, align 4, !tbaa !9
  %742 = fpext float %741 to double
  %743 = fmul double %740, %742
  %744 = call double @llvm.fmuladd.f64(double %735, double %737, double %743)
  %745 = call double @llvm.rint.f64(double %744)
  %746 = fptosi double %745 to i32
  %747 = add nsw i32 %731, %746
  store i32 %747, ptr %39, align 4, !tbaa !13
  %748 = load i32, ptr %38, align 4, !tbaa !13
  %749 = icmp sge i32 %748, 0
  br i1 %749, label %750, label %777

750:                                              ; preds = %739
  %751 = load i32, ptr %38, align 4, !tbaa !13
  %752 = load ptr, ptr %4, align 8, !tbaa !5
  %753 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %752)
          to label %754 unwind label %645

754:                                              ; preds = %750
  %755 = icmp ult i32 %751, %753
  br i1 %755, label %756, label %777

756:                                              ; preds = %754
  %757 = load i32, ptr %39, align 4, !tbaa !13
  %758 = icmp sge i32 %757, 0
  br i1 %758, label %759, label %777

759:                                              ; preds = %756
  %760 = load i32, ptr %39, align 4, !tbaa !13
  %761 = load ptr, ptr %4, align 8, !tbaa !5
  %762 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %761)
          to label %763 unwind label %645

763:                                              ; preds = %759
  %764 = icmp ult i32 %760, %762
  br i1 %764, label %765, label %777

765:                                              ; preds = %763
  %766 = load float, ptr %18, align 4, !tbaa !9
  %767 = load ptr, ptr %4, align 8, !tbaa !5
  %768 = getelementptr inbounds %class.ImageContent, ptr %767, i32 0, i32 4
  %769 = load ptr, ptr %768, align 8, !tbaa !15
  %770 = load i32, ptr %39, align 4, !tbaa !13
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds ptr, ptr %769, i64 %771
  %773 = load ptr, ptr %772, align 8, !tbaa !5
  %774 = load i32, ptr %38, align 4, !tbaa !13
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds float, ptr %773, i64 %775
  store float %766, ptr %776, align 4, !tbaa !9
  br label %777

777:                                              ; preds = %765, %763, %756, %754, %739
  %778 = load i32, ptr %34, align 4, !tbaa !13
  %779 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 1, i32 noundef 1)
          to label %780 unwind label %645

780:                                              ; preds = %777
  %781 = load double, ptr %779, align 8, !tbaa !11
  %782 = fneg double %781
  %783 = load float, ptr %36, align 4, !tbaa !9
  %784 = fpext float %783 to double
  %785 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 1, i32 noundef 2)
          to label %786 unwind label %645

786:                                              ; preds = %780
  %787 = load double, ptr %785, align 8, !tbaa !11
  %788 = load float, ptr %41, align 4, !tbaa !9
  %789 = fpext float %788 to double
  %790 = fmul double %787, %789
  %791 = fneg double %790
  %792 = call double @llvm.fmuladd.f64(double %782, double %784, double %791)
  %793 = call double @llvm.rint.f64(double %792)
  %794 = fptosi double %793 to i32
  %795 = add nsw i32 %778, %794
  store i32 %795, ptr %38, align 4, !tbaa !13
  %796 = load i32, ptr %35, align 4, !tbaa !13
  %797 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2, i32 noundef 1)
          to label %798 unwind label %645

798:                                              ; preds = %786
  %799 = load double, ptr %797, align 8, !tbaa !11
  %800 = fneg double %799
  %801 = load float, ptr %36, align 4, !tbaa !9
  %802 = fpext float %801 to double
  %803 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2, i32 noundef 2)
          to label %804 unwind label %645

804:                                              ; preds = %798
  %805 = load double, ptr %803, align 8, !tbaa !11
  %806 = load float, ptr %41, align 4, !tbaa !9
  %807 = fpext float %806 to double
  %808 = fmul double %805, %807
  %809 = fneg double %808
  %810 = call double @llvm.fmuladd.f64(double %800, double %802, double %809)
  %811 = call double @llvm.rint.f64(double %810)
  %812 = fptosi double %811 to i32
  %813 = add nsw i32 %796, %812
  store i32 %813, ptr %39, align 4, !tbaa !13
  %814 = load i32, ptr %38, align 4, !tbaa !13
  %815 = icmp sge i32 %814, 0
  br i1 %815, label %816, label %843

816:                                              ; preds = %804
  %817 = load i32, ptr %38, align 4, !tbaa !13
  %818 = load ptr, ptr %4, align 8, !tbaa !5
  %819 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %818)
          to label %820 unwind label %645

820:                                              ; preds = %816
  %821 = icmp ult i32 %817, %819
  br i1 %821, label %822, label %843

822:                                              ; preds = %820
  %823 = load i32, ptr %39, align 4, !tbaa !13
  %824 = icmp sge i32 %823, 0
  br i1 %824, label %825, label %843

825:                                              ; preds = %822
  %826 = load i32, ptr %39, align 4, !tbaa !13
  %827 = load ptr, ptr %4, align 8, !tbaa !5
  %828 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %827)
          to label %829 unwind label %645

829:                                              ; preds = %825
  %830 = icmp ult i32 %826, %828
  br i1 %830, label %831, label %843

831:                                              ; preds = %829
  %832 = load float, ptr %18, align 4, !tbaa !9
  %833 = load ptr, ptr %4, align 8, !tbaa !5
  %834 = getelementptr inbounds %class.ImageContent, ptr %833, i32 0, i32 4
  %835 = load ptr, ptr %834, align 8, !tbaa !15
  %836 = load i32, ptr %39, align 4, !tbaa !13
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds ptr, ptr %835, i64 %837
  %839 = load ptr, ptr %838, align 8, !tbaa !5
  %840 = load i32, ptr %38, align 4, !tbaa !13
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds float, ptr %839, i64 %841
  store float %832, ptr %842, align 4, !tbaa !9
  br label %843

843:                                              ; preds = %831, %829, %822, %820, %804
  br label %844

844:                                              ; preds = %843
  %845 = load float, ptr %41, align 4, !tbaa !9
  %846 = fadd float %845, 1.000000e+00
  store float %846, ptr %41, align 4, !tbaa !9
  br label %565, !llvm.loop !20

847:                                              ; preds = %569
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  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
  br label %848

848:                                              ; preds = %847
  %849 = load float, ptr %29, align 4, !tbaa !9
  %850 = fpext float %849 to double
  %851 = fadd double %850, 4.000000e-01
  %852 = fptrunc double %851 to float
  store float %852, ptr %29, align 4, !tbaa !9
  br label %250, !llvm.loop !21

853:                                              ; preds = %645, %362
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  br label %854

854:                                              ; preds = %853, %287
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  br label %855

855:                                              ; preds = %854, %283
  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 %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  br label %868

856:                                              ; preds = %256
  br label %857

857:                                              ; preds = %856
  %858 = load float, ptr %28, align 4, !tbaa !9
  %859 = fpext float %858 to double
  %860 = fadd double %859, 4.000000e-01
  %861 = fptrunc double %860 to float
  store float %861, ptr %28, align 4, !tbaa !9
  br label %239, !llvm.loop !22

862:                                              ; preds = %245
  store float 0.000000e+00, ptr %25, align 4, !tbaa !9
  %863 = load float, ptr %6, align 4, !tbaa !9
  store float %863, ptr %18, align 4, !tbaa !9
  br label %864

864:                                              ; preds = %862
  %865 = load i32, ptr %26, align 4, !tbaa !13
  %866 = add nsw i32 %865, 1
  store i32 %866, ptr %26, align 4, !tbaa !13
  br label %231, !llvm.loop !23

867:                                              ; preds = %234
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %7) #7
  ret void

868:                                              ; preds = %855, %222, %148
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br label %869

869:                                              ; preds = %868, %144
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %870

870:                                              ; preds = %869, %140
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  br label %871

871:                                              ; preds = %870, %136
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  br label %872

872:                                              ; preds = %871, %132
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  br label %873

873:                                              ; preds = %872, %128
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  br label %874

874:                                              ; preds = %873, %124
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  br label %875

875:                                              ; preds = %874, %120
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  br label %876

876:                                              ; preds = %875, %116
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  br label %877

877:                                              ; preds = %876, %112
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %7) #7
  br label %878

878:                                              ; preds = %877
  %879 = load ptr, ptr %9, align 8
  %880 = load i32, ptr %10, align 4
  %881 = insertvalue { ptr, i32 } poison, ptr %879, 0
  %882 = insertvalue { ptr, i32 } %881, i32 %880, 1
  resume { ptr, i32 } %882
}

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

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

declare i32 @__gxx_personality_v0(...)

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

; 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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK6Corner7getMi22Ev(ptr noundef nonnull align 4 dereferenceable(88)) #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)) #5

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

; 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 #6

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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }

!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 = !{!"float", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!16, !6, i64 16}
!16 = !{!"_ZTS12ImageContent", !14, i64 0, !14, i64 4, !14, i64 8, !14, 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 float @_ZNK6Corner4getXEv(ptr noundef nonnull align 4 dereferenceable(88)) local_unnamed_addr #1 align 2

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

; 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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK6Corner14getCornerScaleEv(ptr noundef nonnull align 4 dereferenceable(88)) local_unnamed_addr #1 align 2

; 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

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

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

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

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

12:                                               ; preds = %11
  %13 = call noundef float @_ZNK6Corner7getMi11Ev(ptr noundef nonnull align 4 dereferenceable(88) %1)
  %14 = fpext float %13 to double
  %15 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %4, i32 noundef 1, i32 noundef 1)
  store double %14, ptr %15, align 8, !tbaa !5
  %16 = call noundef float @_ZNK6Corner7getMi12Ev(ptr noundef nonnull align 4 dereferenceable(88) %1)
  %17 = fpext float %16 to double
  %18 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %4, i32 noundef 1, i32 noundef 2)
  store double %17, ptr %18, align 8, !tbaa !5
  %19 = call noundef float @_ZNK6Corner7getMi21Ev(ptr noundef nonnull align 4 dereferenceable(88) %1)
  %20 = fpext float %19 to double
  %21 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %4, i32 noundef 2, i32 noundef 1)
  store double %20, ptr %21, align 8, !tbaa !5
  %22 = call noundef float @_ZNK6Corner7getMi22Ev(ptr noundef nonnull align 4 dereferenceable(88) %1)
  %23 = fpext float %22 to double
  %24 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %4, i32 noundef 2, i32 noundef 2)
  store double %23, ptr %24, align 8, !tbaa !5
  invoke void @_ZNK6Matrix3svdERS_S0_S0_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %25 unwind label %191

25:                                               ; preds = %12
  %26 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %27 unwind label %191

27:                                               ; preds = %25
  %28 = call noundef float @_ZNK6Corner14getCornerScaleEv(ptr noundef nonnull align 4 dereferenceable(88) %1)
  %29 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef 1, i32 noundef 1)
  %30 = load double, ptr %29, align 8, !tbaa !5
  %31 = fpext float %28 to double
  %32 = fmul double %30, %31
  %33 = fptrunc double %32 to float
  %34 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef 2, i32 noundef 2)
  %35 = load double, ptr %34, align 8, !tbaa !5
  %36 = fmul double %35, %31
  %37 = fptrunc double %36 to float
  %38 = call noundef float @_ZNK6Corner4getXEv(ptr noundef nonnull align 4 dereferenceable(88) %1)
  %39 = fptosi float %38 to i32
  %.fr282 = freeze i32 %39
  %40 = call noundef float @_ZNK6Corner4getYEv(ptr noundef nonnull align 4 dereferenceable(88) %1)
  %41 = fptosi float %40 to i32
  %42 = icmp sgt i32 %41, 0
  %43 = getelementptr inbounds i8, ptr %0, i64 16
  %44 = zext nneg i32 %.fr282 to i64
  %45 = zext nneg i32 %41 to i64
  br i1 %42, label %.split.us, label %.preheader263

.split.us:                                        ; preds = %27
  %46 = icmp sgt i32 %.fr282, 0
  %47 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %48 = icmp ugt i32 %47, %41
  br i1 %46, label %.split.us.split.preheader, label %.split.us.split.us.preheader

.split.us.split.us.preheader:                     ; preds = %.split.us
  %49 = icmp ugt i32 %41, 2
  %or.cond = and i1 %48, %49
  br i1 %or.cond, label %50, label %.split.us.split.us.1

.split.us.split.preheader:                        ; preds = %.split.us
  br i1 %48, label %69, label %.split.us.split.1

50:                                               ; preds = %.split.us.split.us.preheader
  %51 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  br label %.split.us.split.us.1

.split.us.split.us.1:                             ; preds = %50, %.split.us.split.us.preheader
  %52 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %53 = icmp ugt i32 %52, %41
  %54 = icmp ne i32 %41, 1
  %or.cond.1 = and i1 %53, %54
  br i1 %or.cond.1, label %55, label %.split.us.split.us.2

55:                                               ; preds = %.split.us.split.us.1
  %56 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  br label %.split.us.split.us.2

.split.us.split.us.2:                             ; preds = %55, %.split.us.split.us.1
  %57 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %58 = icmp ugt i32 %57, %41
  br i1 %58, label %59, label %.split.us.split.us.3

59:                                               ; preds = %.split.us.split.us.2
  %60 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  br label %.split.us.split.us.3

.split.us.split.us.3:                             ; preds = %59, %.split.us.split.us.2
  %61 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %62 = icmp ugt i32 %61, %41
  br i1 %62, label %63, label %.split.us.split.us.4

63:                                               ; preds = %.split.us.split.us.3
  %64 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  br label %.split.us.split.us.4

.split.us.split.us.4:                             ; preds = %63, %.split.us.split.us.3
  %65 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %66 = icmp ugt i32 %65, %41
  br i1 %66, label %67, label %.preheader263

67:                                               ; preds = %.split.us.split.us.4
  %68 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  br label %.preheader263

69:                                               ; preds = %.split.us.split.preheader
  %70 = add nsw i32 %41, -2
  %71 = icmp ugt i32 %41, 2
  br i1 %71, label %72, label %.split.us.split.1

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

75:                                               ; preds = %72
  %76 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %77 = icmp ugt i32 %76, %.fr282
  br i1 %77, label %78, label %.split.us.split.1

78:                                               ; preds = %75
  %79 = add nsw i32 %.fr282, -2
  %80 = icmp ugt i32 %.fr282, 2
  br i1 %80, label %81, label %.split.us.split.1

81:                                               ; preds = %78
  %82 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %83 = icmp ult i32 %79, %82
  br i1 %83, label %84, label %.split.us.split.1

84:                                               ; preds = %81
  %85 = load ptr, ptr %43, align 8, !tbaa !9
  %86 = zext nneg i32 %70 to i64
  %87 = getelementptr inbounds ptr, ptr %85, i64 %86
  %88 = load ptr, ptr %87, align 8, !tbaa !13
  %89 = getelementptr inbounds float, ptr %88, i64 %44
  store float %2, ptr %89, align 4, !tbaa !14
  %90 = getelementptr inbounds ptr, ptr %85, i64 %45
  %91 = load ptr, ptr %90, align 8, !tbaa !13
  %92 = zext nneg i32 %79 to i64
  %93 = getelementptr inbounds float, ptr %91, i64 %92
  store float %2, ptr %93, align 4, !tbaa !14
  br label %.split.us.split.1

.split.us.split.1:                                ; preds = %84, %81, %78, %75, %72, %69, %.split.us.split.preheader
  %94 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %95 = icmp ugt i32 %94, %41
  br i1 %95, label %96, label %.split.us.split.2

96:                                               ; preds = %.split.us.split.1
  %97 = add nsw i32 %41, -1
  %.not = icmp eq i32 %41, 1
  br i1 %.not, label %.split.us.split.2, label %98

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

101:                                              ; preds = %98
  %102 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %103 = icmp ugt i32 %102, %.fr282
  br i1 %103, label %104, label %.split.us.split.2

104:                                              ; preds = %101
  %105 = add nsw i32 %.fr282, -1
  %.not288 = icmp eq i32 %.fr282, 1
  br i1 %.not288, label %.split.us.split.2, label %106

106:                                              ; preds = %104
  %107 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %108 = icmp ult i32 %105, %107
  br i1 %108, label %109, label %.split.us.split.2

109:                                              ; preds = %106
  %110 = load ptr, ptr %43, align 8, !tbaa !9
  %111 = zext nneg i32 %97 to i64
  %112 = getelementptr inbounds ptr, ptr %110, i64 %111
  %113 = load ptr, ptr %112, align 8, !tbaa !13
  %114 = getelementptr inbounds float, ptr %113, i64 %44
  store float %2, ptr %114, align 4, !tbaa !14
  %115 = getelementptr inbounds ptr, ptr %110, i64 %45
  %116 = load ptr, ptr %115, align 8, !tbaa !13
  %117 = zext nneg i32 %105 to i64
  %118 = getelementptr inbounds float, ptr %116, i64 %117
  store float %2, ptr %118, align 4, !tbaa !14
  br label %.split.us.split.2

.split.us.split.2:                                ; preds = %109, %106, %104, %101, %98, %96, %.split.us.split.1
  %119 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %120 = icmp ugt i32 %119, %41
  br i1 %120, label %121, label %.split.us.split.3

121:                                              ; preds = %.split.us.split.2
  %122 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %123 = icmp ugt i32 %122, %41
  br i1 %123, label %124, label %.split.us.split.3

124:                                              ; preds = %121
  %125 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %126 = icmp ugt i32 %125, %.fr282
  br i1 %126, label %127, label %.split.us.split.3

127:                                              ; preds = %124
  %128 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %129 = icmp ult i32 %.fr282, %128
  br i1 %129, label %130, label %.split.us.split.3

130:                                              ; preds = %127
  %131 = load ptr, ptr %43, align 8, !tbaa !9
  %132 = getelementptr inbounds ptr, ptr %131, i64 %45
  %133 = load ptr, ptr %132, align 8, !tbaa !13
  %134 = getelementptr inbounds float, ptr %133, i64 %44
  store float %2, ptr %134, align 4, !tbaa !14
  br label %.split.us.split.3

.split.us.split.3:                                ; preds = %130, %127, %124, %121, %.split.us.split.2
  %135 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %136 = icmp ugt i32 %135, %41
  br i1 %136, label %137, label %.split.us.split.4

137:                                              ; preds = %.split.us.split.3
  %138 = add nuw nsw i32 %41, 1
  %139 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %140 = icmp ult i32 %138, %139
  br i1 %140, label %141, label %.split.us.split.4

141:                                              ; preds = %137
  %142 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %143 = icmp ugt i32 %142, %.fr282
  br i1 %143, label %144, label %.split.us.split.4

144:                                              ; preds = %141
  %145 = add nuw nsw i32 %.fr282, 1
  %146 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %147 = icmp ult i32 %145, %146
  br i1 %147, label %148, label %.split.us.split.4

148:                                              ; preds = %144
  %149 = load ptr, ptr %43, align 8, !tbaa !9
  %150 = zext nneg i32 %138 to i64
  %151 = getelementptr inbounds ptr, ptr %149, i64 %150
  %152 = load ptr, ptr %151, align 8, !tbaa !13
  %153 = getelementptr inbounds float, ptr %152, i64 %44
  store float %2, ptr %153, align 4, !tbaa !14
  %154 = getelementptr inbounds ptr, ptr %149, i64 %45
  %155 = load ptr, ptr %154, align 8, !tbaa !13
  %156 = zext nneg i32 %145 to i64
  %157 = getelementptr inbounds float, ptr %155, i64 %156
  store float %2, ptr %157, align 4, !tbaa !14
  br label %.split.us.split.4

.split.us.split.4:                                ; preds = %148, %144, %141, %137, %.split.us.split.3
  %158 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %159 = icmp ugt i32 %158, %41
  br i1 %159, label %160, label %.preheader263

160:                                              ; preds = %.split.us.split.4
  %161 = add nuw nsw i32 %41, 2
  %162 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %163 = icmp ult i32 %161, %162
  br i1 %163, label %164, label %.preheader263

164:                                              ; preds = %160
  %165 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %166 = icmp ugt i32 %165, %.fr282
  br i1 %166, label %167, label %.preheader263

167:                                              ; preds = %164
  %168 = add nuw nsw i32 %.fr282, 2
  %169 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %170 = icmp ult i32 %168, %169
  br i1 %170, label %171, label %.preheader263

171:                                              ; preds = %167
  %172 = load ptr, ptr %43, align 8, !tbaa !9
  %173 = zext nneg i32 %161 to i64
  %174 = getelementptr inbounds ptr, ptr %172, i64 %173
  %175 = load ptr, ptr %174, align 8, !tbaa !13
  %176 = getelementptr inbounds float, ptr %175, i64 %44
  store float %2, ptr %176, align 4, !tbaa !14
  %177 = getelementptr inbounds ptr, ptr %172, i64 %45
  %178 = load ptr, ptr %177, align 8, !tbaa !13
  %179 = zext nneg i32 %168 to i64
  %180 = getelementptr inbounds float, ptr %178, i64 %179
  store float %2, ptr %180, align 4, !tbaa !14
  br label %.preheader263

.preheader263:                                    ; preds = %.split.us.split.4, %160, %164, %167, %171, %.split.us.split.us.4, %67, %27
  %181 = fcmp uno float %33, 0.000000e+00
  %182 = fcmp uno float %37, 0.000000e+00
  %or.cond289 = select i1 %181, i1 true, i1 %182
  br i1 %or.cond289, label %.split277.us, label %.preheader262

183:                                              ; preds = %3
  %184 = landingpad { ptr, i32 }
          cleanup
  br label %524

185:                                              ; preds = %9
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %523

187:                                              ; preds = %10
  %188 = landingpad { ptr, i32 }
          cleanup
  br label %522

189:                                              ; preds = %11
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %521

191:                                              ; preds = %25, %12
  %192 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  br label %521

.preheader262:                                    ; preds = %.preheader263, %._crit_edge272.split
  %.0231274 = phi float [ %2, %._crit_edge272.split ], [ 0.000000e+00, %.preheader263 ]
  %193 = phi i1 [ false, %._crit_edge272.split ], [ true, %.preheader263 ]
  br label %.preheader261

.split277.us:                                     ; preds = %._crit_edge272.split, %.preheader263
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #7
  ret void

.preheader261:                                    ; preds = %.preheader262, %._crit_edge270
  %.0235271 = phi float [ %33, %.preheader262 ], [ %199, %._crit_edge270 ]
  %194 = fmul float %.0235271, %.0235271
  %195 = fcmp ogt float %.0235271, 0.000000e+00
  %196 = fneg float %194
  br label %201

._crit_edge272.split:                             ; preds = %._crit_edge270
  br i1 %193, label %.preheader262, label %.split277.us, !llvm.loop !16

._crit_edge270:                                   ; preds = %._crit_edge
  %197 = fpext float %.0235271 to double
  %198 = fadd double %197, 4.000000e-01
  %199 = fptrunc double %198 to float
  %200 = fcmp ugt float %199, %33
  br i1 %200, label %._crit_edge272.split, label %.preheader261, !llvm.loop !18

201:                                              ; preds = %.preheader261, %._crit_edge
  %.0236268 = phi float [ %37, %.preheader261 ], [ %365, %._crit_edge ]
  %202 = fmul float %.0236268, %.0236268
  %203 = call noundef float @_ZNK6Corner4getXEv(ptr noundef nonnull align 4 dereferenceable(88) %1)
  %204 = fptosi float %203 to i32
  %205 = call noundef float @_ZNK6Corner4getYEv(ptr noundef nonnull align 4 dereferenceable(88) %1)
  %206 = fptosi float %205 to i32
  br i1 %195, label %.lr.ph, label %.preheader

.lr.ph:                                           ; preds = %201
  %207 = fneg float %202
  %208 = fdiv float %207, %194
  br label %211

.preheader:                                       ; preds = %360, %201
  %209 = fcmp ogt float %.0236268, 0.000000e+00
  br i1 %209, label %.lr.ph267, label %._crit_edge

.lr.ph267:                                        ; preds = %.preheader
  %210 = fdiv float %196, %202
  br label %367

211:                                              ; preds = %.lr.ph, %360
  %.0225265 = phi float [ 0.000000e+00, %.lr.ph ], [ %361, %360 ]
  %212 = fmul float %208, %.0225265
  %213 = call float @llvm.fmuladd.f32(float %212, float %.0225265, float %202)
  %214 = call noundef float @_ZSt4sqrtf(float noundef %213)
  %215 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 1, i32 noundef 1)
  %216 = load double, ptr %215, align 8, !tbaa !5
  %217 = fpext float %.0225265 to double
  %218 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 1, i32 noundef 2)
  %219 = load double, ptr %218, align 8, !tbaa !5
  %220 = fpext float %214 to double
  %221 = fmul double %219, %220
  %222 = call double @llvm.fmuladd.f64(double %216, double %217, double %221)
  %223 = call double @llvm.rint.f64(double %222)
  %224 = fptosi double %223 to i32
  %225 = add nsw i32 %224, %204
  %226 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 1)
  %227 = load double, ptr %226, align 8, !tbaa !5
  %228 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 2)
  %229 = load double, ptr %228, align 8, !tbaa !5
  %230 = fmul double %229, %220
  %231 = call double @llvm.fmuladd.f64(double %227, double %217, double %230)
  %232 = call double @llvm.rint.f64(double %231)
  %233 = fptosi double %232 to i32
  %234 = add nsw i32 %233, %206
  %235 = icmp sgt i32 %225, -1
  br i1 %235, label %236, label %250

236:                                              ; preds = %211
  %237 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %238 = icmp ult i32 %225, %237
  %239 = icmp sgt i32 %234, -1
  %or.cond3 = select i1 %238, i1 %239, i1 false
  br i1 %or.cond3, label %240, label %250

240:                                              ; preds = %236
  %241 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %242 = icmp ult i32 %234, %241
  br i1 %242, label %243, label %250

243:                                              ; preds = %240
  %244 = load ptr, ptr %43, align 8, !tbaa !9
  %245 = zext nneg i32 %234 to i64
  %246 = getelementptr inbounds ptr, ptr %244, i64 %245
  %247 = load ptr, ptr %246, align 8, !tbaa !13
  %248 = zext nneg i32 %225 to i64
  %249 = getelementptr inbounds float, ptr %247, i64 %248
  store float %.0231274, ptr %249, align 4, !tbaa !14
  br label %250

250:                                              ; preds = %243, %240, %236, %211
  %251 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 1, 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) %8, i32 noundef 1, i32 noundef 2)
  %254 = load double, ptr %253, align 8, !tbaa !5
  %255 = fneg double %254
  %256 = fmul double %220, %255
  %257 = call double @llvm.fmuladd.f64(double %252, double %217, double %256)
  %258 = call double @llvm.rint.f64(double %257)
  %259 = fptosi double %258 to i32
  %260 = add nsw i32 %259, %204
  %261 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 1)
  %262 = load double, ptr %261, align 8, !tbaa !5
  %263 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 2)
  %264 = load double, ptr %263, align 8, !tbaa !5
  %265 = fneg double %264
  %266 = fmul double %220, %265
  %267 = call double @llvm.fmuladd.f64(double %262, double %217, double %266)
  %268 = call double @llvm.rint.f64(double %267)
  %269 = fptosi double %268 to i32
  %270 = add nsw i32 %269, %206
  %271 = icmp sgt i32 %260, -1
  br i1 %271, label %272, label %286

272:                                              ; preds = %250
  %273 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %274 = icmp ult i32 %260, %273
  %275 = icmp sgt i32 %270, -1
  %or.cond5 = select i1 %274, i1 %275, i1 false
  br i1 %or.cond5, label %276, label %286

276:                                              ; preds = %272
  %277 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %278 = icmp ult i32 %270, %277
  br i1 %278, label %279, label %286

279:                                              ; preds = %276
  %280 = load ptr, ptr %43, align 8, !tbaa !9
  %281 = zext nneg i32 %270 to i64
  %282 = getelementptr inbounds ptr, ptr %280, i64 %281
  %283 = load ptr, ptr %282, align 8, !tbaa !13
  %284 = zext nneg i32 %260 to i64
  %285 = getelementptr inbounds float, ptr %283, i64 %284
  store float %.0231274, ptr %285, align 4, !tbaa !14
  br label %286

286:                                              ; preds = %279, %276, %272, %250
  %287 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 1, 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) %8, i32 noundef 1, i32 noundef 2)
  %291 = load double, ptr %290, align 8, !tbaa !5
  %292 = fmul double %291, %220
  %293 = call double @llvm.fmuladd.f64(double %289, double %217, double %292)
  %294 = call double @llvm.rint.f64(double %293)
  %295 = fptosi double %294 to i32
  %296 = add nsw i32 %295, %204
  %297 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 1)
  %298 = load double, ptr %297, align 8, !tbaa !5
  %299 = fneg double %298
  %300 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 2)
  %301 = load double, ptr %300, align 8, !tbaa !5
  %302 = fmul double %301, %220
  %303 = call double @llvm.fmuladd.f64(double %299, double %217, double %302)
  %304 = call double @llvm.rint.f64(double %303)
  %305 = fptosi double %304 to i32
  %306 = add nsw i32 %305, %206
  %307 = icmp sgt i32 %296, -1
  br i1 %307, label %308, label %322

308:                                              ; preds = %286
  %309 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %310 = icmp ult i32 %296, %309
  %311 = icmp sgt i32 %306, -1
  %or.cond7 = select i1 %310, i1 %311, i1 false
  br i1 %or.cond7, label %312, label %322

312:                                              ; preds = %308
  %313 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %314 = icmp ult i32 %306, %313
  br i1 %314, label %315, label %322

315:                                              ; preds = %312
  %316 = load ptr, ptr %43, align 8, !tbaa !9
  %317 = zext nneg i32 %306 to i64
  %318 = getelementptr inbounds ptr, ptr %316, i64 %317
  %319 = load ptr, ptr %318, align 8, !tbaa !13
  %320 = zext nneg i32 %296 to i64
  %321 = getelementptr inbounds float, ptr %319, i64 %320
  store float %.0231274, ptr %321, align 4, !tbaa !14
  br label %322

322:                                              ; preds = %315, %312, %308, %286
  %323 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 1, i32 noundef 1)
  %324 = load double, ptr %323, align 8, !tbaa !5
  %325 = fneg double %324
  %326 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 1, i32 noundef 2)
  %327 = load double, ptr %326, align 8, !tbaa !5
  %328 = fneg double %327
  %329 = fmul double %220, %328
  %330 = call double @llvm.fmuladd.f64(double %325, double %217, double %329)
  %331 = call double @llvm.rint.f64(double %330)
  %332 = fptosi double %331 to i32
  %333 = add nsw i32 %332, %204
  %334 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 1)
  %335 = load double, ptr %334, align 8, !tbaa !5
  %336 = fneg double %335
  %337 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 2)
  %338 = load double, ptr %337, align 8, !tbaa !5
  %339 = fneg double %338
  %340 = fmul double %220, %339
  %341 = call double @llvm.fmuladd.f64(double %336, double %217, double %340)
  %342 = call double @llvm.rint.f64(double %341)
  %343 = fptosi double %342 to i32
  %344 = add nsw i32 %343, %206
  %345 = icmp sgt i32 %333, -1
  br i1 %345, label %346, label %360

346:                                              ; preds = %322
  %347 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %348 = icmp ult i32 %333, %347
  %349 = icmp sgt i32 %344, -1
  %or.cond9 = select i1 %348, i1 %349, i1 false
  br i1 %or.cond9, label %350, label %360

350:                                              ; preds = %346
  %351 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %352 = icmp ult i32 %344, %351
  br i1 %352, label %353, label %360

353:                                              ; preds = %350
  %354 = load ptr, ptr %43, align 8, !tbaa !9
  %355 = zext nneg i32 %344 to i64
  %356 = getelementptr inbounds ptr, ptr %354, i64 %355
  %357 = load ptr, ptr %356, align 8, !tbaa !13
  %358 = zext nneg i32 %333 to i64
  %359 = getelementptr inbounds float, ptr %357, i64 %358
  store float %.0231274, ptr %359, align 4, !tbaa !14
  br label %360

360:                                              ; preds = %322, %346, %350, %353
  %361 = fadd float %.0225265, 1.000000e+00
  %362 = fcmp olt float %361, %.0235271
  br i1 %362, label %211, label %.preheader, !llvm.loop !19

._crit_edge:                                      ; preds = %518, %.preheader
  %363 = fpext float %.0236268 to double
  %364 = fadd double %363, 4.000000e-01
  %365 = fptrunc double %364 to float
  %366 = fcmp ugt float %365, %37
  br i1 %366, label %._crit_edge270, label %201, !llvm.loop !20

367:                                              ; preds = %.lr.ph267, %518
  %.0266 = phi float [ 0.000000e+00, %.lr.ph267 ], [ %519, %518 ]
  %368 = fmul float %210, %.0266
  %369 = call float @llvm.fmuladd.f32(float %368, float %.0266, float %194)
  %370 = call noundef float @_ZSt4sqrtf(float noundef %369)
  %371 = call noundef float @_ZSt4rintf(float noundef %370)
  %372 = fptosi float %371 to i32
  %373 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 1, i32 noundef 1)
  %374 = load double, ptr %373, align 8, !tbaa !5
  %375 = sitofp i32 %372 to double
  %376 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 1, i32 noundef 2)
  %377 = load double, ptr %376, align 8, !tbaa !5
  %378 = fpext float %.0266 to double
  %379 = fmul double %377, %378
  %380 = call double @llvm.fmuladd.f64(double %374, double %375, double %379)
  %381 = call double @llvm.rint.f64(double %380)
  %382 = fptosi double %381 to i32
  %383 = add nsw i32 %382, %204
  %384 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 1)
  %385 = load double, ptr %384, align 8, !tbaa !5
  %386 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 2)
  %387 = load double, ptr %386, align 8, !tbaa !5
  %388 = fmul double %387, %378
  %389 = call double @llvm.fmuladd.f64(double %385, double %375, double %388)
  %390 = call double @llvm.rint.f64(double %389)
  %391 = fptosi double %390 to i32
  %392 = add nsw i32 %391, %206
  %393 = icmp sgt i32 %383, -1
  br i1 %393, label %394, label %408

394:                                              ; preds = %367
  %395 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %396 = icmp ult i32 %383, %395
  %397 = icmp sgt i32 %392, -1
  %or.cond11 = select i1 %396, i1 %397, i1 false
  br i1 %or.cond11, label %398, label %408

398:                                              ; preds = %394
  %399 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %400 = icmp ult i32 %392, %399
  br i1 %400, label %401, label %408

401:                                              ; preds = %398
  %402 = load ptr, ptr %43, align 8, !tbaa !9
  %403 = zext nneg i32 %392 to i64
  %404 = getelementptr inbounds ptr, ptr %402, i64 %403
  %405 = load ptr, ptr %404, align 8, !tbaa !13
  %406 = zext nneg i32 %383 to i64
  %407 = getelementptr inbounds float, ptr %405, i64 %406
  store float %.0231274, ptr %407, align 4, !tbaa !14
  br label %408

408:                                              ; preds = %401, %398, %394, %367
  %409 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 1, i32 noundef 1)
  %410 = load double, ptr %409, align 8, !tbaa !5
  %411 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 1, i32 noundef 2)
  %412 = load double, ptr %411, align 8, !tbaa !5
  %413 = fneg double %412
  %414 = fmul double %378, %413
  %415 = call double @llvm.fmuladd.f64(double %410, double %375, double %414)
  %416 = call double @llvm.rint.f64(double %415)
  %417 = fptosi double %416 to i32
  %418 = add nsw i32 %417, %204
  %419 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 1)
  %420 = load double, ptr %419, align 8, !tbaa !5
  %421 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 2)
  %422 = load double, ptr %421, align 8, !tbaa !5
  %423 = fneg double %422
  %424 = fmul double %378, %423
  %425 = call double @llvm.fmuladd.f64(double %420, double %375, double %424)
  %426 = call double @llvm.rint.f64(double %425)
  %427 = fptosi double %426 to i32
  %428 = add nsw i32 %427, %206
  %429 = icmp sgt i32 %418, -1
  br i1 %429, label %430, label %444

430:                                              ; preds = %408
  %431 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %432 = icmp ult i32 %418, %431
  %433 = icmp sgt i32 %428, -1
  %or.cond13 = select i1 %432, i1 %433, i1 false
  br i1 %or.cond13, label %434, label %444

434:                                              ; preds = %430
  %435 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %436 = icmp ult i32 %428, %435
  br i1 %436, label %437, label %444

437:                                              ; preds = %434
  %438 = load ptr, ptr %43, align 8, !tbaa !9
  %439 = zext nneg i32 %428 to i64
  %440 = getelementptr inbounds ptr, ptr %438, i64 %439
  %441 = load ptr, ptr %440, align 8, !tbaa !13
  %442 = zext nneg i32 %418 to i64
  %443 = getelementptr inbounds float, ptr %441, i64 %442
  store float %.0231274, ptr %443, align 4, !tbaa !14
  br label %444

444:                                              ; preds = %437, %434, %430, %408
  %445 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 1, i32 noundef 1)
  %446 = load double, ptr %445, align 8, !tbaa !5
  %447 = fneg double %446
  %448 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 1, i32 noundef 2)
  %449 = load double, ptr %448, align 8, !tbaa !5
  %450 = fmul double %449, %378
  %451 = call double @llvm.fmuladd.f64(double %447, double %375, double %450)
  %452 = call double @llvm.rint.f64(double %451)
  %453 = fptosi double %452 to i32
  %454 = add nsw i32 %453, %204
  %455 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 1)
  %456 = load double, ptr %455, align 8, !tbaa !5
  %457 = fneg double %456
  %458 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 2)
  %459 = load double, ptr %458, align 8, !tbaa !5
  %460 = fmul double %459, %378
  %461 = call double @llvm.fmuladd.f64(double %457, double %375, double %460)
  %462 = call double @llvm.rint.f64(double %461)
  %463 = fptosi double %462 to i32
  %464 = add nsw i32 %463, %206
  %465 = icmp sgt i32 %454, -1
  br i1 %465, label %466, label %480

466:                                              ; preds = %444
  %467 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %468 = icmp ult i32 %454, %467
  %469 = icmp sgt i32 %464, -1
  %or.cond15 = select i1 %468, i1 %469, i1 false
  br i1 %or.cond15, label %470, label %480

470:                                              ; preds = %466
  %471 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %472 = icmp ult i32 %464, %471
  br i1 %472, label %473, label %480

473:                                              ; preds = %470
  %474 = load ptr, ptr %43, align 8, !tbaa !9
  %475 = zext nneg i32 %464 to i64
  %476 = getelementptr inbounds ptr, ptr %474, i64 %475
  %477 = load ptr, ptr %476, align 8, !tbaa !13
  %478 = zext nneg i32 %454 to i64
  %479 = getelementptr inbounds float, ptr %477, i64 %478
  store float %.0231274, ptr %479, align 4, !tbaa !14
  br label %480

480:                                              ; preds = %473, %470, %466, %444
  %481 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 1, i32 noundef 1)
  %482 = load double, ptr %481, align 8, !tbaa !5
  %483 = fneg double %482
  %484 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 1, i32 noundef 2)
  %485 = load double, ptr %484, align 8, !tbaa !5
  %486 = fneg double %485
  %487 = fmul double %378, %486
  %488 = call double @llvm.fmuladd.f64(double %483, double %375, double %487)
  %489 = call double @llvm.rint.f64(double %488)
  %490 = fptosi double %489 to i32
  %491 = add nsw i32 %490, %204
  %492 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 1)
  %493 = load double, ptr %492, align 8, !tbaa !5
  %494 = fneg double %493
  %495 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 2)
  %496 = load double, ptr %495, align 8, !tbaa !5
  %497 = fneg double %496
  %498 = fmul double %378, %497
  %499 = call double @llvm.fmuladd.f64(double %494, double %375, double %498)
  %500 = call double @llvm.rint.f64(double %499)
  %501 = fptosi double %500 to i32
  %502 = add nsw i32 %501, %206
  %503 = icmp sgt i32 %491, -1
  br i1 %503, label %504, label %518

504:                                              ; preds = %480
  %505 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %506 = icmp ult i32 %491, %505
  %507 = icmp sgt i32 %502, -1
  %or.cond17 = select i1 %506, i1 %507, i1 false
  br i1 %or.cond17, label %508, label %518

508:                                              ; preds = %504
  %509 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %510 = icmp ult i32 %502, %509
  br i1 %510, label %511, label %518

511:                                              ; preds = %508
  %512 = load ptr, ptr %43, align 8, !tbaa !9
  %513 = zext nneg i32 %502 to i64
  %514 = getelementptr inbounds ptr, ptr %512, i64 %513
  %515 = load ptr, ptr %514, align 8, !tbaa !13
  %516 = zext nneg i32 %491 to i64
  %517 = getelementptr inbounds float, ptr %515, i64 %516
  store float %.0231274, ptr %517, align 4, !tbaa !14
  br label %518

518:                                              ; preds = %480, %504, %508, %511
  %519 = fadd float %.0266, 1.000000e+00
  %520 = fcmp olt float %519, %.0236268
  br i1 %520, label %367, label %._crit_edge, !llvm.loop !21

521:                                              ; preds = %191, %189
  %.pn = phi { ptr, i32 } [ %192, %191 ], [ %190, %189 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  br label %522

522:                                              ; preds = %521, %187
  %.pn.pn = phi { ptr, i32 } [ %.pn, %521 ], [ %188, %187 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  br label %523

523:                                              ; preds = %522, %185
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %522 ], [ %186, %185 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  br label %524

524:                                              ; preds = %523, %183
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %523 ], [ %184, %183 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #7
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #7
  resume { ptr, i32 } %.pn.pn.pn.pn
}

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

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

declare i32 @__gxx_personality_v0(...)

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

; 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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK6Corner7getMi22Ev(ptr noundef nonnull align 4 dereferenceable(88)) local_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 #5

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 #5

; 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 #6

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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }

!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}
!19 = distinct !{!19, !17}
!20 = distinct !{!20, !17}
!21 = distinct !{!21, !17}


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