; LLVM IR from niessner/Matterport :: code/gaps/pkgs/RGBD/RGBDImage.ll (ZNK9RGBDImage9WorldBBoxEv)

; 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.R3Box = type { %class.R3Solid, %class.R3Point, %class.R3Point }
%class.R3Solid = type { %class.R3Shape }
%class.R3Shape = type { ptr }
%class.R3Point = type { [3 x double] }
%class.R2Point = type { [2 x double] }
%class.R3Vector = type { [3 x double] }
%class.RGBDImage = type { ptr, ptr, i32, %class.RNArray, i32, i32, %class.R3Affine, %class.R3Matrix, %class.R3Box, i32, ptr, ptr, ptr, i32, i32 }
%class.RNArray = type { %class.RNVArray }
%class.RNVArray = type { ptr, i32, i32 }
%class.R3Affine = type { %class.R3Transformation, %class.R4Matrix, %class.R4Matrix, %class.RNFlags }
%class.R3Transformation = type { ptr }
%class.R4Matrix = type { [4 x [4 x double]] }
%class.RNFlags = type { i64 }
%class.R3Matrix = type { [3 x [3 x double]] }

@R3null_box = external global %class.R3Box, align 8

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: nounwind
declare void @_ZN7R3SolidD2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #1

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK9RGBDImage9WorldBBoxEv(ptr dead_on_unwind noalias writable sret(%class.R3Box) align 8 %0, ptr noundef nonnull align 8 dereferenceable(488) %1) #4 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i1, align 1
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca %class.R3Point, align 8
  %12 = alloca %class.R2Point, align 8
  %13 = alloca %class.R3Point, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca %class.R3Point, align 8
  %20 = alloca %class.R3Point, align 8
  %21 = alloca %class.R3Vector, align 8
  %22 = alloca %class.R3Vector, align 8
  %23 = alloca %class.R3Vector, align 8
  %24 = alloca %class.R3Vector, align 8
  %25 = alloca %class.R3Vector, align 8
  %26 = alloca %class.R3Vector, align 8
  %27 = alloca %class.R3Vector, align 8
  %28 = alloca %class.R3Vector, align 8
  %29 = alloca %class.R3Vector, align 8
  %30 = alloca %class.R3Vector, align 8
  %31 = alloca %class.R3Vector, align 8
  %32 = alloca %class.R3Vector, align 8
  %33 = alloca %class.R3Point, align 8
  %34 = alloca %class.R3Point, align 8
  %35 = alloca %class.R3Point, align 8
  %36 = alloca %class.R3Point, align 8
  %37 = alloca %class.R3Point, align 8
  %38 = alloca %class.R3Point, align 8
  %39 = alloca %class.R3Point, align 8
  %40 = alloca %class.R3Point, align 8
  %41 = alloca %class.R3Point, align 8
  store ptr %0, ptr %3, align 8
  store ptr %1, ptr %4, align 8, !tbaa !5
  %42 = load ptr, ptr %4, align 8
  %43 = getelementptr inbounds %class.RGBDImage, ptr %42, i32 0, i32 8
  %44 = call noundef i32 @_ZNK5R3Box7IsEmptyEv(ptr noundef nonnull align 8 dereferenceable(56) %43)
  %45 = icmp ne i32 %44, 0
  br i1 %45, label %48, label %46

46:                                               ; preds = %2
  %47 = getelementptr inbounds %class.RGBDImage, ptr %42, i32 0, i32 8
  call void @_ZN5R3BoxC1ERKS_(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(56) %47)
  br label %263

48:                                               ; preds = %2
  store i1 false, ptr %5, align 1
  call void @_ZN5R3BoxC1ERKS_(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(56) @R3null_box)
  %49 = invoke noundef ptr @_ZNK9RGBDImage12DepthChannelEv(ptr noundef nonnull align 8 dereferenceable(488) %42)
          to label %50 unwind label %61

50:                                               ; preds = %48
  %51 = icmp ne ptr %49, null
  br i1 %51, label %52, label %118

52:                                               ; preds = %50
  %53 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5R3BoxaSERKS_(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(56) @R3null_box)
          to label %54 unwind label %61

54:                                               ; preds = %52
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #6
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %55

55:                                               ; preds = %100, %54
  %56 = load i32, ptr %8, align 4, !tbaa !9
  %57 = getelementptr inbounds %class.RGBDImage, ptr %42, i32 0, i32 5
  %58 = load i32, ptr %57, align 4, !tbaa !11
  %59 = icmp slt i32 %56, %58
  br i1 %59, label %65, label %60

60:                                               ; preds = %55
  store i32 2, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  br label %103

61:                                               ; preds = %114, %103, %52, %48
  %62 = landingpad { ptr, i32 }
          cleanup
  %63 = extractvalue { ptr, i32 } %62, 0
  store ptr %63, ptr %6, align 8
  %64 = extractvalue { ptr, i32 } %62, 1
  store i32 %64, ptr %7, align 4
  br label %262

65:                                               ; preds = %55
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  store i32 0, ptr %10, align 4, !tbaa !9
  br label %66

66:                                               ; preds = %95, %65
  %67 = load i32, ptr %10, align 4, !tbaa !9
  %68 = getelementptr inbounds %class.RGBDImage, ptr %42, i32 0, i32 4
  %69 = load i32, ptr %68, align 8, !tbaa !25
  %70 = icmp slt i32 %67, %69
  br i1 %70, label %72, label %71

71:                                               ; preds = %66
  store i32 5, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  br label %99

72:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #6
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %11)
          to label %73 unwind label %86

73:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #6
  %74 = load i32, ptr %10, align 4, !tbaa !9
  %75 = sitofp i32 %74 to double
  %76 = fadd double %75, 5.000000e-01
  %77 = load i32, ptr %8, align 4, !tbaa !9
  %78 = sitofp i32 %77 to double
  %79 = fadd double %78, 5.000000e-01
  invoke void @_ZN7R2PointC1Edd(ptr noundef nonnull align 8 dereferenceable(16) %12, double noundef %76, double noundef %79)
          to label %80 unwind label %90

80:                                               ; preds = %73
  %81 = invoke noundef i32 @_Z25RGBDTransformImageToWorldRK7R2PointR7R3PointPK9RGBDImage(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef %42)
          to label %82 unwind label %90

82:                                               ; preds = %80
  %83 = icmp ne i32 %81, 0
  br i1 %83, label %84, label %94

84:                                               ; preds = %82
  invoke void @_ZN5R3Box5UnionERK7R3Point(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(24) %11)
          to label %85 unwind label %90

85:                                               ; preds = %84
  br label %94

86:                                               ; preds = %72
  %87 = landingpad { ptr, i32 }
          cleanup
  %88 = extractvalue { ptr, i32 } %87, 0
  store ptr %88, ptr %6, align 8
  %89 = extractvalue { ptr, i32 } %87, 1
  store i32 %89, ptr %7, align 4
  br label %98

90:                                               ; preds = %84, %80, %73
  %91 = landingpad { ptr, i32 }
          cleanup
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %6, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #6
  br label %98

94:                                               ; preds = %85, %82
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #6
  br label %95

95:                                               ; preds = %94
  %96 = load i32, ptr %10, align 4, !tbaa !9
  %97 = add nsw i32 %96, 1
  store i32 %97, ptr %10, align 4, !tbaa !9
  br label %66, !llvm.loop !26

98:                                               ; preds = %90, %86
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  br label %262

99:                                               ; preds = %71
  br label %100

100:                                              ; preds = %99
  %101 = load i32, ptr %8, align 4, !tbaa !9
  %102 = add nsw i32 %101, 1
  store i32 %102, ptr %8, align 4, !tbaa !9
  br label %55, !llvm.loop !28

103:                                              ; preds = %60
  %104 = invoke noundef i32 @_ZNK5R3Box7IsEmptyEv(ptr noundef nonnull align 8 dereferenceable(56) %0)
          to label %105 unwind label %61

105:                                              ; preds = %103
  %106 = icmp ne i32 %104, 0
  br i1 %106, label %107, label %114

107:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #6
  invoke void @_ZNK9RGBDImage14WorldViewpointEv(ptr dead_on_unwind writable sret(%class.R3Point) align 8 %13, ptr noundef nonnull align 8 dereferenceable(488) %42)
          to label %108 unwind label %110

108:                                              ; preds = %107
  invoke void @_ZN5R3Box5UnionERK7R3Point(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(24) %13)
          to label %109 unwind label %110

109:                                              ; preds = %108
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #6
  br label %114

110:                                              ; preds = %108, %107
  %111 = landingpad { ptr, i32 }
          cleanup
  %112 = extractvalue { ptr, i32 } %111, 0
  store ptr %112, ptr %6, align 8
  %113 = extractvalue { ptr, i32 } %111, 1
  store i32 %113, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #6
  br label %262

114:                                              ; preds = %109, %105
  %115 = getelementptr inbounds %class.RGBDImage, ptr %42, i32 0, i32 8
  %116 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5R3BoxaSERKS_(ptr noundef nonnull align 8 dereferenceable(56) %115, ptr noundef nonnull align 8 dereferenceable(56) %0)
          to label %117 unwind label %61

117:                                              ; preds = %114
  br label %258

118:                                              ; preds = %50
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  store double 7.000000e+00, ptr %14, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #6
  %119 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZNK9RGBDImage10IntrinsicsEv(ptr noundef nonnull align 8 dereferenceable(488) %42)
          to label %120 unwind label %188

120:                                              ; preds = %118
  %121 = invoke noundef ptr @_ZNK8R3MatrixixEi(ptr noundef nonnull align 8 dereferenceable(72) %119, i32 noundef 0)
          to label %122 unwind label %188

122:                                              ; preds = %120
  %123 = getelementptr inbounds double, ptr %121, i64 0
  %124 = load double, ptr %123, align 8, !tbaa !29
  store double %124, ptr %15, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #6
  %125 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZNK9RGBDImage10IntrinsicsEv(ptr noundef nonnull align 8 dereferenceable(488) %42)
          to label %126 unwind label %192

126:                                              ; preds = %122
  %127 = invoke noundef ptr @_ZNK8R3MatrixixEi(ptr noundef nonnull align 8 dereferenceable(72) %125, i32 noundef 1)
          to label %128 unwind label %192

128:                                              ; preds = %126
  %129 = getelementptr inbounds double, ptr %127, i64 1
  %130 = load double, ptr %129, align 8, !tbaa !29
  store double %130, ptr %16, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  %131 = load double, ptr %15, align 8, !tbaa !29
  %132 = fcmp ogt double %131, 0.000000e+00
  br i1 %132, label %133, label %140

133:                                              ; preds = %128
  %134 = invoke noundef i32 @_ZNK9RGBDImage7NPixelsEi(ptr noundef nonnull align 8 dereferenceable(488) %42, i32 noundef 0)
          to label %135 unwind label %196

135:                                              ; preds = %133
  %136 = sitofp i32 %134 to double
  %137 = fmul double 5.000000e-01, %136
  %138 = load double, ptr %15, align 8, !tbaa !29
  %139 = fdiv double %137, %138
  br label %141

140:                                              ; preds = %128
  br label %141

141:                                              ; preds = %140, %135
  %142 = phi double [ %139, %135 ], [ 1.000000e+00, %140 ]
  store double %142, ptr %17, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  %143 = load double, ptr %16, align 8, !tbaa !29
  %144 = fcmp ogt double %143, 0.000000e+00
  br i1 %144, label %145, label %152

145:                                              ; preds = %141
  %146 = invoke noundef i32 @_ZNK9RGBDImage7NPixelsEi(ptr noundef nonnull align 8 dereferenceable(488) %42, i32 noundef 1)
          to label %147 unwind label %200

147:                                              ; preds = %145
  %148 = sitofp i32 %146 to double
  %149 = fmul double 5.000000e-01, %148
  %150 = load double, ptr %16, align 8, !tbaa !29
  %151 = fdiv double %149, %150
  br label %153

152:                                              ; preds = %141
  br label %153

153:                                              ; preds = %152, %147
  %154 = phi double [ %151, %147 ], [ 1.000000e+00, %152 ]
  store double %154, ptr %18, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #6
  invoke void @_ZNK9RGBDImage14WorldViewpointEv(ptr dead_on_unwind writable sret(%class.R3Point) align 8 %20, ptr noundef nonnull align 8 dereferenceable(488) %42)
          to label %155 unwind label %204

155:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #6
  %156 = load double, ptr %14, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #6
  invoke void @_ZNK9RGBDImage12WorldTowardsEv(ptr dead_on_unwind writable sret(%class.R3Vector) align 8 %22, ptr noundef nonnull align 8 dereferenceable(488) %42)
          to label %157 unwind label %208

157:                                              ; preds = %155
  invoke void @_ZmldRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Vector) align 8 %21, double noundef %156, ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %158 unwind label %208

158:                                              ; preds = %157
  invoke void @_ZplRK7R3PointRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Point) align 8 %19, ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %159 unwind label %208

159:                                              ; preds = %158
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %26) #6
  invoke void @_ZNK9RGBDImage10WorldRightEv(ptr dead_on_unwind writable sret(%class.R3Vector) align 8 %26, ptr noundef nonnull align 8 dereferenceable(488) %42)
          to label %160 unwind label %213

160:                                              ; preds = %159
  %161 = load double, ptr %14, align 8, !tbaa !29
  invoke void @_ZmlRK8R3Vectord(ptr dead_on_unwind writable sret(%class.R3Vector) align 8 %25, ptr noundef nonnull align 8 dereferenceable(24) %26, double noundef %161)
          to label %162 unwind label %213

162:                                              ; preds = %160
  %163 = load double, ptr %17, align 8, !tbaa !29
  invoke void @_ZmlRK8R3Vectord(ptr dead_on_unwind writable sret(%class.R3Vector) align 8 %24, ptr noundef nonnull align 8 dereferenceable(24) %25, double noundef %163)
          to label %164 unwind label %213

164:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #6
  invoke void @_ZNK9RGBDImage10WorldRightEv(ptr dead_on_unwind writable sret(%class.R3Vector) align 8 %27, ptr noundef nonnull align 8 dereferenceable(488) %42)
          to label %165 unwind label %217

165:                                              ; preds = %164
  invoke void @_ZmlRK8R3VectorS1_(ptr dead_on_unwind writable sret(%class.R3Vector) align 8 %23, ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(24) %27)
          to label %166 unwind label %217

166:                                              ; preds = %165
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #6
  invoke void @_ZNK9RGBDImage10WorldRightEv(ptr dead_on_unwind writable sret(%class.R3Vector) align 8 %31, ptr noundef nonnull align 8 dereferenceable(488) %42)
          to label %167 unwind label %222

167:                                              ; preds = %166
  %168 = load double, ptr %14, align 8, !tbaa !29
  invoke void @_ZmlRK8R3Vectord(ptr dead_on_unwind writable sret(%class.R3Vector) align 8 %30, ptr noundef nonnull align 8 dereferenceable(24) %31, double noundef %168)
          to label %169 unwind label %222

169:                                              ; preds = %167
  %170 = load double, ptr %18, align 8, !tbaa !29
  invoke void @_ZmlRK8R3Vectord(ptr dead_on_unwind writable sret(%class.R3Vector) align 8 %29, ptr noundef nonnull align 8 dereferenceable(24) %30, double noundef %170)
          to label %171 unwind label %222

171:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #6
  invoke void @_ZNK9RGBDImage7WorldUpEv(ptr dead_on_unwind writable sret(%class.R3Vector) align 8 %32, ptr noundef nonnull align 8 dereferenceable(488) %42)
          to label %172 unwind label %226

172:                                              ; preds = %171
  invoke void @_ZmlRK8R3VectorS1_(ptr dead_on_unwind writable sret(%class.R3Vector) align 8 %28, ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(24) %32)
          to label %173 unwind label %226

173:                                              ; preds = %172
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %33) #6
  invoke void @_ZNK9RGBDImage14WorldViewpointEv(ptr dead_on_unwind writable sret(%class.R3Point) align 8 %33, ptr noundef nonnull align 8 dereferenceable(488) %42)
          to label %174 unwind label %231

174:                                              ; preds = %173
  invoke void @_ZN5R3Box5UnionERK7R3Point(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(24) %33)
          to label %175 unwind label %231

175:                                              ; preds = %174
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %35) #6
  invoke void @_ZmiRK7R3PointRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Point) align 8 %35, ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %176 unwind label %235

176:                                              ; preds = %175
  invoke void @_ZmiRK7R3PointRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Point) align 8 %34, ptr noundef nonnull align 8 dereferenceable(24) %35, ptr noundef nonnull align 8 dereferenceable(24) %28)
          to label %177 unwind label %235

177:                                              ; preds = %176
  invoke void @_ZN5R3Box5UnionERK7R3Point(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(24) %34)
          to label %178 unwind label %235

178:                                              ; preds = %177
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %37) #6
  invoke void @_ZplRK7R3PointRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Point) align 8 %37, ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %179 unwind label %239

179:                                              ; preds = %178
  invoke void @_ZmiRK7R3PointRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Point) align 8 %36, ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(24) %28)
          to label %180 unwind label %239

180:                                              ; preds = %179
  invoke void @_ZN5R3Box5UnionERK7R3Point(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(24) %36)
          to label %181 unwind label %239

181:                                              ; preds = %180
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %39) #6
  invoke void @_ZmiRK7R3PointRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Point) align 8 %39, ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %182 unwind label %243

182:                                              ; preds = %181
  invoke void @_ZplRK7R3PointRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Point) align 8 %38, ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(24) %28)
          to label %183 unwind label %243

183:                                              ; preds = %182
  invoke void @_ZN5R3Box5UnionERK7R3Point(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(24) %38)
          to label %184 unwind label %243

184:                                              ; preds = %183
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %41) #6
  invoke void @_ZplRK7R3PointRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Point) align 8 %41, ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %185 unwind label %247

185:                                              ; preds = %184
  invoke void @_ZplRK7R3PointRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Point) align 8 %40, ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 8 dereferenceable(24) %28)
          to label %186 unwind label %247

186:                                              ; preds = %185
  invoke void @_ZN5R3Box5UnionERK7R3Point(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(24) %40)
          to label %187 unwind label %247

187:                                              ; preds = %186
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  br label %258

188:                                              ; preds = %120, %118
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %6, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %7, align 4
  br label %257

192:                                              ; preds = %126, %122
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %6, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %7, align 4
  br label %256

196:                                              ; preds = %133
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %6, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %7, align 4
  br label %255

200:                                              ; preds = %145
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %6, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %7, align 4
  br label %254

204:                                              ; preds = %153
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %6, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %7, align 4
  br label %212

208:                                              ; preds = %158, %157, %155
  %209 = landingpad { ptr, i32 }
          cleanup
  %210 = extractvalue { ptr, i32 } %209, 0
  store ptr %210, ptr %6, align 8
  %211 = extractvalue { ptr, i32 } %209, 1
  store i32 %211, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #6
  br label %212

212:                                              ; preds = %208, %204
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #6
  br label %253

213:                                              ; preds = %162, %160, %159
  %214 = landingpad { ptr, i32 }
          cleanup
  %215 = extractvalue { ptr, i32 } %214, 0
  store ptr %215, ptr %6, align 8
  %216 = extractvalue { ptr, i32 } %214, 1
  store i32 %216, ptr %7, align 4
  br label %221

217:                                              ; preds = %165, %164
  %218 = landingpad { ptr, i32 }
          cleanup
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %6, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #6
  br label %221

221:                                              ; preds = %217, %213
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #6
  br label %252

222:                                              ; preds = %169, %167, %166
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %6, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %7, align 4
  br label %230

226:                                              ; preds = %172, %171
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %6, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #6
  br label %230

230:                                              ; preds = %226, %222
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #6
  br label %251

231:                                              ; preds = %174, %173
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %6, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #6
  br label %251

235:                                              ; preds = %177, %176, %175
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %6, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #6
  br label %251

239:                                              ; preds = %180, %179, %178
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %6, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #6
  br label %251

243:                                              ; preds = %183, %182, %181
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %6, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #6
  br label %251

247:                                              ; preds = %186, %185, %184
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %6, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #6
  br label %251

251:                                              ; preds = %247, %243, %239, %235, %231, %230
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #6
  br label %252

252:                                              ; preds = %251, %221
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #6
  br label %253

253:                                              ; preds = %252, %212
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #6
  br label %254

254:                                              ; preds = %253, %200
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  br label %255

255:                                              ; preds = %254, %196
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  br label %256

256:                                              ; preds = %255, %192
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  br label %257

257:                                              ; preds = %256, %188
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  br label %262

258:                                              ; preds = %187, %117
  store i1 true, ptr %5, align 1
  store i32 1, ptr %9, align 4
  %259 = load i1, ptr %5, align 1
  br i1 %259, label %261, label %260

260:                                              ; preds = %258
  call void @_ZN7R3SolidD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %0) #6
  br label %261

261:                                              ; preds = %260, %258
  br label %263

262:                                              ; preds = %257, %110, %98, %61
  call void @_ZN7R3SolidD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %0) #6
  br label %264

263:                                              ; preds = %261, %46
  ret void

264:                                              ; preds = %262
  %265 = load ptr, ptr %6, align 8
  %266 = load i32, ptr %7, align 4
  %267 = insertvalue { ptr, i32 } poison, ptr %265, 0
  %268 = insertvalue { ptr, i32 } %267, i32 %266, 1
  resume { ptr, i32 } %268
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZNK5R3Box7IsEmptyEv(ptr noundef nonnull align 8 dereferenceable(56)) #3 align 2

declare void @_ZN5R3BoxC1ERKS_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZNK9RGBDImage12DepthChannelEv(ptr noundef nonnull align 8 dereferenceable(488)) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZN5R3BoxaSERKS_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) #3 align 2

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

declare void @_ZN7R2PointC1Edd(ptr noundef nonnull align 8 dereferenceable(16), double noundef, double noundef) unnamed_addr #5

declare noundef i32 @_Z25RGBDTransformImageToWorldRK7R2PointR7R3PointPK9RGBDImage(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK9RGBDImage14WorldViewpointEv(ptr dead_on_unwind noalias writable sret(%class.R3Point) align 8, ptr noundef nonnull align 8 dereferenceable(488)) #3 align 2

declare void @_ZplRK7R3PointRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Point) align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZmldRK8R3Vector(ptr dead_on_unwind noalias writable sret(%class.R3Vector) align 8, double noundef, ptr noundef nonnull align 8 dereferenceable(24)) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK9RGBDImage12WorldTowardsEv(ptr dead_on_unwind noalias writable sret(%class.R3Vector) align 8, ptr noundef nonnull align 8 dereferenceable(488)) #3 align 2

declare void @_ZmlRK8R3VectorS1_(ptr dead_on_unwind writable sret(%class.R3Vector) align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #5

declare void @_ZmlRK8R3Vectord(ptr dead_on_unwind writable sret(%class.R3Vector) align 8, ptr noundef nonnull align 8 dereferenceable(24), double noundef) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK9RGBDImage10WorldRightEv(ptr dead_on_unwind noalias writable sret(%class.R3Vector) align 8, ptr noundef nonnull align 8 dereferenceable(488)) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK9RGBDImage7WorldUpEv(ptr dead_on_unwind noalias writable sret(%class.R3Vector) align 8, ptr noundef nonnull align 8 dereferenceable(488)) #3 align 2

declare void @_ZmiRK7R3PointRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Point) align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 44}
!12 = !{!"_ZTS9RGBDImage", !6, i64 8, !10, i64 16, !13, i64 24, !10, i64 40, !10, i64 44, !15, i64 48, !20, i64 320, !21, i64 392, !10, i64 448, !6, i64 456, !6, i64 464, !6, i64 472, !10, i64 480, !10, i64 484}
!13 = !{!"_ZTS7RNArrayIP6R2GridE", !14, i64 0}
!14 = !{!"_ZTS8RNVArray", !6, i64 0, !10, i64 8, !10, i64 12}
!15 = !{!"_ZTS8R3Affine", !16, i64 0, !17, i64 8, !17, i64 136, !18, i64 264}
!16 = !{!"_ZTS16R3Transformation"}
!17 = !{!"_ZTS8R4Matrix", !7, i64 0}
!18 = !{!"_ZTS7RNFlags", !19, i64 0}
!19 = !{!"long", !7, i64 0}
!20 = !{!"_ZTS8R3Matrix", !7, i64 0}
!21 = !{!"_ZTS5R3Box", !22, i64 0, !24, i64 8, !24, i64 32}
!22 = !{!"_ZTS7R3Solid", !23, i64 0}
!23 = !{!"_ZTS7R3Shape"}
!24 = !{!"_ZTS7R3Point", !7, i64 0}
!25 = !{!12, !10, i64 40}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = distinct !{!28, !27}
!29 = !{!30, !30, i64 0}
!30 = !{!"double", !7, i64 0}


; 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.R3Box = type { %class.R3Solid, %class.R3Point, %class.R3Point }
%class.R3Solid = type { %class.R3Shape }
%class.R3Shape = type { ptr }
%class.R3Point = type { [3 x double] }
%class.R2Point = type { [2 x double] }
%class.R3Vector = type { [3 x double] }

@R3null_box = external global %class.R3Box, align 8

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: nounwind
declare void @_ZN7R3SolidD2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #1

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK9RGBDImage9WorldBBoxEv(ptr dead_on_unwind noalias writable sret(%class.R3Box) align 8 %0, ptr noundef nonnull align 8 dereferenceable(488) %1) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %class.R3Point, align 8
  %4 = alloca %class.R2Point, align 8
  %5 = alloca %class.R3Point, align 8
  %6 = alloca %class.R3Point, align 8
  %7 = alloca %class.R3Point, align 8
  %8 = alloca %class.R3Vector, align 8
  %9 = alloca %class.R3Vector, align 8
  %10 = alloca %class.R3Vector, align 8
  %11 = alloca %class.R3Vector, align 8
  %12 = alloca %class.R3Vector, align 8
  %13 = alloca %class.R3Vector, align 8
  %14 = alloca %class.R3Vector, align 8
  %15 = alloca %class.R3Vector, align 8
  %16 = alloca %class.R3Vector, align 8
  %17 = alloca %class.R3Vector, align 8
  %18 = alloca %class.R3Vector, align 8
  %19 = alloca %class.R3Vector, align 8
  %20 = alloca %class.R3Point, align 8
  %21 = alloca %class.R3Point, align 8
  %22 = alloca %class.R3Point, align 8
  %23 = alloca %class.R3Point, align 8
  %24 = alloca %class.R3Point, align 8
  %25 = alloca %class.R3Point, align 8
  %26 = alloca %class.R3Point, align 8
  %27 = alloca %class.R3Point, align 8
  %28 = alloca %class.R3Point, align 8
  %29 = getelementptr inbounds i8, ptr %1, i64 392
  %30 = tail call noundef i32 @_ZNK5R3Box7IsEmptyEv(ptr noundef nonnull align 8 dereferenceable(56) %29)
  %.not = icmp eq i32 %30, 0
  br i1 %.not, label %31, label %32

31:                                               ; preds = %2
  tail call void @_ZN5R3BoxC1ERKS_(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(56) %29)
  br label %173

32:                                               ; preds = %2
  tail call void @_ZN5R3BoxC1ERKS_(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(56) @R3null_box)
  %33 = invoke noundef ptr @_ZNK9RGBDImage12DepthChannelEv(ptr noundef nonnull align 8 dereferenceable(488) %1)
          to label %34 unwind label %49

34:                                               ; preds = %32
  %.not34 = icmp eq ptr %33, null
  br i1 %.not34, label %80, label %35

35:                                               ; preds = %34
  %36 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5R3BoxaSERKS_(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(56) @R3null_box)
          to label %.preheader53 unwind label %49

.preheader53:                                     ; preds = %35
  %37 = getelementptr inbounds i8, ptr %1, i64 44
  %38 = load i32, ptr %37, align 4, !tbaa !5
  %39 = icmp sgt i32 %38, 0
  br i1 %39, label %.preheader.lr.ph, label %._crit_edge56

.preheader.lr.ph:                                 ; preds = %.preheader53
  %40 = getelementptr inbounds i8, ptr %1, i64 40
  %41 = load i32, ptr %40, align 8, !tbaa !23
  %42 = icmp sgt i32 %41, 0
  br i1 %42, label %.preheader, label %._crit_edge56

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge
  %43 = phi i32 [ %51, %._crit_edge ], [ %38, %.preheader.lr.ph ]
  %44 = phi i32 [ %52, %._crit_edge ], [ %41, %.preheader.lr.ph ]
  %.03055 = phi i32 [ %53, %._crit_edge ], [ 0, %.preheader.lr.ph ]
  %45 = icmp sgt i32 %44, 0
  br i1 %45, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader
  %46 = uitofp nneg i32 %.03055 to double
  %47 = fadd double %46, 5.000000e-01
  br label %55

._crit_edge56:                                    ; preds = %._crit_edge, %.preheader.lr.ph, %.preheader53
  %48 = invoke noundef i32 @_ZNK5R3Box7IsEmptyEv(ptr noundef nonnull align 8 dereferenceable(56) %0)
          to label %72 unwind label %49

49:                                               ; preds = %78, %._crit_edge56, %35, %32
  %50 = landingpad { ptr, i32 }
          cleanup
  br label %172

._crit_edge.loopexit:                             ; preds = %67
  %.pre = load i32, ptr %37, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader
  %51 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %43, %.preheader ]
  %52 = phi i32 [ %69, %._crit_edge.loopexit ], [ %44, %.preheader ]
  %53 = add nuw nsw i32 %.03055, 1
  %54 = icmp slt i32 %53, %51
  br i1 %54, label %.preheader, label %._crit_edge56, !llvm.loop !24

55:                                               ; preds = %.lr.ph, %67
  %.03154 = phi i32 [ 0, %.lr.ph ], [ %68, %67 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #6
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %56 unwind label %63

56:                                               ; preds = %55
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #6
  %57 = uitofp nneg i32 %.03154 to double
  %58 = fadd double %57, 5.000000e-01
  invoke void @_ZN7R2PointC1Edd(ptr noundef nonnull align 8 dereferenceable(16) %4, double noundef %58, double noundef %47)
          to label %59 unwind label %65

59:                                               ; preds = %56
  %60 = invoke noundef i32 @_Z25RGBDTransformImageToWorldRK7R2PointR7R3PointPK9RGBDImage(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull %1)
          to label %61 unwind label %65

61:                                               ; preds = %59
  %.not49 = icmp eq i32 %60, 0
  br i1 %.not49, label %67, label %62

62:                                               ; preds = %61
  invoke void @_ZN5R3Box5UnionERK7R3Point(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %67 unwind label %65

63:                                               ; preds = %55
  %64 = landingpad { ptr, i32 }
          cleanup
  br label %71

65:                                               ; preds = %62, %59, %56
  %66 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #6
  br label %71

67:                                               ; preds = %62, %61
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #6
  %68 = add nuw nsw i32 %.03154, 1
  %69 = load i32, ptr %40, align 8, !tbaa !23
  %70 = icmp slt i32 %68, %69
  br i1 %70, label %55, label %._crit_edge.loopexit, !llvm.loop !27

71:                                               ; preds = %65, %63
  %.pn50 = phi { ptr, i32 } [ %66, %65 ], [ %64, %63 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #6
  br label %172

72:                                               ; preds = %._crit_edge56
  %.not48 = icmp eq i32 %48, 0
  br i1 %.not48, label %78, label %73

73:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #6
  invoke void @_ZNK9RGBDImage14WorldViewpointEv(ptr dead_on_unwind nonnull writable sret(%class.R3Point) align 8 %5, ptr noundef nonnull align 8 dereferenceable(488) %1)
          to label %74 unwind label %76

74:                                               ; preds = %73
  invoke void @_ZN5R3Box5UnionERK7R3Point(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(24) %5)
          to label %75 unwind label %76

75:                                               ; preds = %74
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #6
  br label %78

76:                                               ; preds = %74, %73
  %77 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #6
  br label %172

78:                                               ; preds = %75, %72
  %79 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5R3BoxaSERKS_(ptr noundef nonnull align 8 dereferenceable(56) %29, ptr noundef nonnull align 8 dereferenceable(56) %0)
          to label %173 unwind label %49

80:                                               ; preds = %34
  %81 = tail call noundef nonnull align 8 dereferenceable(72) ptr @_ZNK9RGBDImage10IntrinsicsEv(ptr noundef nonnull align 8 dereferenceable(488) %1)
  %82 = invoke noundef ptr @_ZNK8R3MatrixixEi(ptr noundef nonnull align 8 dereferenceable(72) %81, i32 noundef 0)
          to label %83 unwind label %136

83:                                               ; preds = %80
  %84 = load double, ptr %82, align 8, !tbaa !28
  %85 = tail call noundef nonnull align 8 dereferenceable(72) ptr @_ZNK9RGBDImage10IntrinsicsEv(ptr noundef nonnull align 8 dereferenceable(488) %1)
  %86 = invoke noundef ptr @_ZNK8R3MatrixixEi(ptr noundef nonnull align 8 dereferenceable(72) %85, i32 noundef 1)
          to label %87 unwind label %138

87:                                               ; preds = %83
  %88 = getelementptr inbounds i8, ptr %86, i64 8
  %89 = load double, ptr %88, align 8, !tbaa !28
  %90 = fcmp ogt double %84, 0.000000e+00
  br i1 %90, label %91, label %97

91:                                               ; preds = %87
  %92 = invoke noundef i32 @_ZNK9RGBDImage7NPixelsEi(ptr noundef nonnull align 8 dereferenceable(488) %1, i32 noundef 0)
          to label %93 unwind label %140

93:                                               ; preds = %91
  %94 = sitofp i32 %92 to double
  %95 = fmul double %94, 5.000000e-01
  %96 = fdiv double %95, %84
  br label %97

97:                                               ; preds = %87, %93
  %98 = phi double [ %96, %93 ], [ 1.000000e+00, %87 ]
  %99 = fcmp ogt double %89, 0.000000e+00
  br i1 %99, label %100, label %106

100:                                              ; preds = %97
  %101 = invoke noundef i32 @_ZNK9RGBDImage7NPixelsEi(ptr noundef nonnull align 8 dereferenceable(488) %1, i32 noundef 1)
          to label %102 unwind label %142

102:                                              ; preds = %100
  %103 = sitofp i32 %101 to double
  %104 = fmul double %103, 5.000000e-01
  %105 = fdiv double %104, %89
  br label %106

106:                                              ; preds = %97, %102
  %107 = phi double [ %105, %102 ], [ 1.000000e+00, %97 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #6
  invoke void @_ZNK9RGBDImage14WorldViewpointEv(ptr dead_on_unwind nonnull writable sret(%class.R3Point) align 8 %7, ptr noundef nonnull align 8 dereferenceable(488) %1)
          to label %108 unwind label %144

108:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #6
  invoke void @_ZNK9RGBDImage12WorldTowardsEv(ptr dead_on_unwind nonnull writable sret(%class.R3Vector) align 8 %9, ptr noundef nonnull align 8 dereferenceable(488) %1)
          to label %109 unwind label %146

109:                                              ; preds = %108
  invoke void @_ZmldRK8R3Vector(ptr dead_on_unwind nonnull writable sret(%class.R3Vector) align 8 %8, double noundef 7.000000e+00, ptr noundef nonnull align 8 dereferenceable(24) %9)
          to label %110 unwind label %146

110:                                              ; preds = %109
  invoke void @_ZplRK7R3PointRK8R3Vector(ptr dead_on_unwind nonnull writable sret(%class.R3Point) align 8 %6, ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %111 unwind label %146

111:                                              ; preds = %110
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #6
  invoke void @_ZNK9RGBDImage10WorldRightEv(ptr dead_on_unwind nonnull writable sret(%class.R3Vector) align 8 %13, ptr noundef nonnull align 8 dereferenceable(488) %1)
          to label %112 unwind label %149

112:                                              ; preds = %111
  invoke void @_ZmlRK8R3Vectord(ptr dead_on_unwind nonnull writable sret(%class.R3Vector) align 8 %12, ptr noundef nonnull align 8 dereferenceable(24) %13, double noundef 7.000000e+00)
          to label %113 unwind label %149

113:                                              ; preds = %112
  invoke void @_ZmlRK8R3Vectord(ptr dead_on_unwind nonnull writable sret(%class.R3Vector) align 8 %11, ptr noundef nonnull align 8 dereferenceable(24) %12, double noundef %98)
          to label %114 unwind label %149

114:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #6
  invoke void @_ZNK9RGBDImage10WorldRightEv(ptr dead_on_unwind nonnull writable sret(%class.R3Vector) align 8 %14, ptr noundef nonnull align 8 dereferenceable(488) %1)
          to label %115 unwind label %151

115:                                              ; preds = %114
  invoke void @_ZmlRK8R3VectorS1_(ptr dead_on_unwind nonnull writable sret(%class.R3Vector) align 8 %10, ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %116 unwind label %151

116:                                              ; preds = %115
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #6
  invoke void @_ZNK9RGBDImage10WorldRightEv(ptr dead_on_unwind nonnull writable sret(%class.R3Vector) align 8 %18, ptr noundef nonnull align 8 dereferenceable(488) %1)
          to label %117 unwind label %154

117:                                              ; preds = %116
  invoke void @_ZmlRK8R3Vectord(ptr dead_on_unwind nonnull writable sret(%class.R3Vector) align 8 %17, ptr noundef nonnull align 8 dereferenceable(24) %18, double noundef 7.000000e+00)
          to label %118 unwind label %154

118:                                              ; preds = %117
  invoke void @_ZmlRK8R3Vectord(ptr dead_on_unwind nonnull writable sret(%class.R3Vector) align 8 %16, ptr noundef nonnull align 8 dereferenceable(24) %17, double noundef %107)
          to label %119 unwind label %154

119:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #6
  invoke void @_ZNK9RGBDImage7WorldUpEv(ptr dead_on_unwind nonnull writable sret(%class.R3Vector) align 8 %19, ptr noundef nonnull align 8 dereferenceable(488) %1)
          to label %120 unwind label %156

120:                                              ; preds = %119
  invoke void @_ZmlRK8R3VectorS1_(ptr dead_on_unwind nonnull writable sret(%class.R3Vector) align 8 %15, ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %121 unwind label %156

121:                                              ; preds = %120
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #6
  invoke void @_ZNK9RGBDImage14WorldViewpointEv(ptr dead_on_unwind nonnull writable sret(%class.R3Point) align 8 %20, ptr noundef nonnull align 8 dereferenceable(488) %1)
          to label %122 unwind label %159

122:                                              ; preds = %121
  invoke void @_ZN5R3Box5UnionERK7R3Point(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(24) %20)
          to label %123 unwind label %159

123:                                              ; preds = %122
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #6
  invoke void @_ZmiRK7R3PointRK8R3Vector(ptr dead_on_unwind nonnull writable sret(%class.R3Point) align 8 %22, ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %10)
          to label %124 unwind label %161

124:                                              ; preds = %123
  invoke void @_ZmiRK7R3PointRK8R3Vector(ptr dead_on_unwind nonnull writable sret(%class.R3Point) align 8 %21, ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %125 unwind label %161

125:                                              ; preds = %124
  invoke void @_ZN5R3Box5UnionERK7R3Point(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %126 unwind label %161

126:                                              ; preds = %125
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #6
  invoke void @_ZplRK7R3PointRK8R3Vector(ptr dead_on_unwind nonnull writable sret(%class.R3Point) align 8 %24, ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %10)
          to label %127 unwind label %163

127:                                              ; preds = %126
  invoke void @_ZmiRK7R3PointRK8R3Vector(ptr dead_on_unwind nonnull writable sret(%class.R3Point) align 8 %23, ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %128 unwind label %163

128:                                              ; preds = %127
  invoke void @_ZN5R3Box5UnionERK7R3Point(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %129 unwind label %163

129:                                              ; preds = %128
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #6
  invoke void @_ZmiRK7R3PointRK8R3Vector(ptr dead_on_unwind nonnull writable sret(%class.R3Point) align 8 %26, ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %10)
          to label %130 unwind label %165

130:                                              ; preds = %129
  invoke void @_ZplRK7R3PointRK8R3Vector(ptr dead_on_unwind nonnull writable sret(%class.R3Point) align 8 %25, ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %131 unwind label %165

131:                                              ; preds = %130
  invoke void @_ZN5R3Box5UnionERK7R3Point(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(24) %25)
          to label %132 unwind label %165

132:                                              ; preds = %131
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) #6
  invoke void @_ZplRK7R3PointRK8R3Vector(ptr dead_on_unwind nonnull writable sret(%class.R3Point) align 8 %28, ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %10)
          to label %133 unwind label %167

133:                                              ; preds = %132
  invoke void @_ZplRK7R3PointRK8R3Vector(ptr dead_on_unwind nonnull writable sret(%class.R3Point) align 8 %27, ptr noundef nonnull align 8 dereferenceable(24) %28, ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %134 unwind label %167

134:                                              ; preds = %133
  invoke void @_ZN5R3Box5UnionERK7R3Point(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(24) %27)
          to label %135 unwind label %167

135:                                              ; preds = %134
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #6
  br label %173

136:                                              ; preds = %80
  %137 = landingpad { ptr, i32 }
          cleanup
  br label %172

138:                                              ; preds = %83
  %139 = landingpad { ptr, i32 }
          cleanup
  br label %172

140:                                              ; preds = %91
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %172

142:                                              ; preds = %100
  %143 = landingpad { ptr, i32 }
          cleanup
  br label %172

144:                                              ; preds = %106
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %148

146:                                              ; preds = %110, %109, %108
  %147 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #6
  br label %148

148:                                              ; preds = %146, %144
  %.pn = phi { ptr, i32 } [ %147, %146 ], [ %145, %144 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #6
  br label %171

149:                                              ; preds = %113, %112, %111
  %150 = landingpad { ptr, i32 }
          cleanup
  br label %153

151:                                              ; preds = %115, %114
  %152 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #6
  br label %153

153:                                              ; preds = %151, %149
  %.pn36 = phi { ptr, i32 } [ %152, %151 ], [ %150, %149 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #6
  br label %170

154:                                              ; preds = %118, %117, %116
  %155 = landingpad { ptr, i32 }
          cleanup
  br label %158

156:                                              ; preds = %120, %119
  %157 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #6
  br label %158

158:                                              ; preds = %156, %154
  %.pn38 = phi { ptr, i32 } [ %157, %156 ], [ %155, %154 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #6
  br label %169

159:                                              ; preds = %122, %121
  %160 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #6
  br label %169

161:                                              ; preds = %125, %124, %123
  %162 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #6
  br label %169

163:                                              ; preds = %128, %127, %126
  %164 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #6
  br label %169

165:                                              ; preds = %131, %130, %129
  %166 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #6
  br label %169

167:                                              ; preds = %134, %133, %132
  %168 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #6
  br label %169

169:                                              ; preds = %167, %165, %163, %161, %159, %158
  %.pn40 = phi { ptr, i32 } [ %168, %167 ], [ %166, %165 ], [ %164, %163 ], [ %162, %161 ], [ %160, %159 ], [ %.pn38, %158 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #6
  br label %170

170:                                              ; preds = %169, %153
  %.pn40.pn = phi { ptr, i32 } [ %.pn40, %169 ], [ %.pn36, %153 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  br label %171

171:                                              ; preds = %170, %148
  %.pn40.pn.pn = phi { ptr, i32 } [ %.pn40.pn, %170 ], [ %.pn, %148 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #6
  br label %172

172:                                              ; preds = %136, %140, %171, %142, %138, %76, %71, %49
  %.pn50.pn = phi { ptr, i32 } [ %.pn50, %71 ], [ %50, %49 ], [ %77, %76 ], [ %137, %136 ], [ %139, %138 ], [ %141, %140 ], [ %.pn40.pn.pn, %171 ], [ %143, %142 ]
  call void @_ZN7R3SolidD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %0) #6
  resume { ptr, i32 } %.pn50.pn

173:                                              ; preds = %135, %78, %31
  ret void
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZNK5R3Box7IsEmptyEv(ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #3 align 2

declare void @_ZN5R3BoxC1ERKS_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZNK9RGBDImage12DepthChannelEv(ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZN5R3BoxaSERKS_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #3 align 2

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

declare void @_ZN7R2PointC1Edd(ptr noundef nonnull align 8 dereferenceable(16), double noundef, double noundef) unnamed_addr #5

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK9RGBDImage14WorldViewpointEv(ptr dead_on_unwind noalias writable sret(%class.R3Point) align 8, ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #3 align 2

declare void @_ZplRK7R3PointRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Point) align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZmldRK8R3Vector(ptr dead_on_unwind noalias writable sret(%class.R3Vector) align 8, double noundef, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK9RGBDImage12WorldTowardsEv(ptr dead_on_unwind noalias writable sret(%class.R3Vector) align 8, ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #3 align 2

declare void @_ZmlRK8R3VectorS1_(ptr dead_on_unwind writable sret(%class.R3Vector) align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5

declare void @_ZmlRK8R3Vectord(ptr dead_on_unwind writable sret(%class.R3Vector) align 8, ptr noundef nonnull align 8 dereferenceable(24), double noundef) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK9RGBDImage10WorldRightEv(ptr dead_on_unwind noalias writable sret(%class.R3Vector) align 8, ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK9RGBDImage7WorldUpEv(ptr dead_on_unwind noalias writable sret(%class.R3Vector) align 8, ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #3 align 2

declare void @_ZmiRK7R3PointRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Point) align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5

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

!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, !10, i64 44}
!6 = !{!"_ZTS9RGBDImage", !7, i64 8, !10, i64 16, !11, i64 24, !10, i64 40, !10, i64 44, !13, i64 48, !18, i64 320, !19, i64 392, !10, i64 448, !7, i64 456, !7, i64 464, !7, i64 472, !10, i64 480, !10, i64 484}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTS7RNArrayIP6R2GridE", !12, i64 0}
!12 = !{!"_ZTS8RNVArray", !7, i64 0, !10, i64 8, !10, i64 12}
!13 = !{!"_ZTS8R3Affine", !14, i64 0, !15, i64 8, !15, i64 136, !16, i64 264}
!14 = !{!"_ZTS16R3Transformation"}
!15 = !{!"_ZTS8R4Matrix", !8, i64 0}
!16 = !{!"_ZTS7RNFlags", !17, i64 0}
!17 = !{!"long", !8, i64 0}
!18 = !{!"_ZTS8R3Matrix", !8, i64 0}
!19 = !{!"_ZTS5R3Box", !20, i64 0, !22, i64 8, !22, i64 32}
!20 = !{!"_ZTS7R3Solid", !21, i64 0}
!21 = !{!"_ZTS7R3Shape"}
!22 = !{!"_ZTS7R3Point", !8, i64 0}
!23 = !{!6, !10, i64 40}
!24 = distinct !{!24, !25, !26}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!"llvm.loop.unswitch.partial.disable"}
!27 = distinct !{!27, !25}
!28 = !{!29, !29, i64 0}
!29 = !{!"double", !8, i64 0}


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