; LLVM IR from niessner/Matterport :: code/gaps/apps/mpview/mp.ll (ZN7MPHouse21ReadConfigurationFileEPKc)

; 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.RGBDConfiguration = type { ptr, %class.RNArray.10, %class.RNArray.11, ptr, ptr, ptr, ptr, %class.R3Box }
%class.RNArray.10 = type { %class.RNVArray }
%class.RNVArray = type { ptr, i32, i32 }
%class.RNArray.11 = type { %class.RNVArray }
%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.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]] }
%struct.MPImage = type { ptr, i32, ptr, i32, ptr, i32, i32, %class.RGBDImage, %class.R4Matrix, %class.R3Matrix, i32, i32, %class.R3Point }
%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 }
%struct.MPHouse = type { %class.RNArray.0, %class.RNArray.1, %class.RNArray.2, %class.RNArray.3, %class.RNArray.4, %class.RNArray.5, %class.RNArray.6, %class.RNArray.7, %class.RNArray.8, %class.RNArray.9, %class.RGBDConfiguration, ptr, ptr, %class.R3Box, ptr, ptr }
%class.RNArray.0 = type { %class.RNVArray }
%class.RNArray.1 = type { %class.RNVArray }
%class.RNArray.2 = type { %class.RNVArray }
%class.RNArray.3 = type { %class.RNVArray }
%class.RNArray.4 = type { %class.RNVArray }
%class.RNArray.5 = type { %class.RNVArray }
%class.RNArray.6 = type { %class.RNVArray }
%class.RNArray.7 = type { %class.RNVArray }
%class.RNArray.8 = type { %class.RNVArray }
%class.RNArray.9 = type { %class.RNVArray }
%struct.MPPanorama = type { ptr, i32, ptr, i32, ptr, %class.RNArray.0, %class.R3Point }

@stderr = external global ptr, align 8
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [3 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10MPPanorama11InsertImageEP7MPImage(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef) #0 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8MPRegion14InsertPanoramaEP10MPPanorama(ptr noundef nonnull align 8 dereferenceable(192), ptr noundef) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK7RNArrayIP10MPPanoramaE3KthEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #0 align 2

declare void @_ZN17RGBDConfigurationC1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #5

; Function Attrs: nounwind
declare noalias ptr @strdup(ptr noundef) #3

; Function Attrs: nounwind
declare void @_ZN17RGBDConfigurationD1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7MPHouse11InsertImageEP7MPImage(ptr noundef nonnull align 8 dereferenceable(376), ptr noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7MPHouse14InsertPanoramaEP10MPPanorama(ptr noundef nonnull align 8 dereferenceable(376), ptr noundef) #0 align 2

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK7MPHouse10FindRegionERK7R3Pointd(ptr noundef nonnull align 8 dereferenceable(376), ptr noundef nonnull align 8 dereferenceable(24), double noundef) #0 align 2

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

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

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

; Function Attrs: nounwind
declare i32 @sprintf(ptr noundef, ptr noundef, ...) #3

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

declare void @_ZN9RGBDImage13SetExtrinsicsERK8R4Matrix(ptr noundef nonnull align 8 dereferenceable(488), ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #5

declare void @_ZN9RGBDImage13SetIntrinsicsERK8R3Matrix(ptr noundef nonnull align 8 dereferenceable(488), ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #5

declare void @_ZN9RGBDImage16SetDepthFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(488), ptr noundef) unnamed_addr #5

declare void @_ZN9RGBDImage16SetColorFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(488), ptr noundef) unnamed_addr #5

declare void @_ZN9RGBDImage7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(488), ptr noundef) unnamed_addr #5

declare noundef nonnull align 8 dereferenceable(128) ptr @_ZN8R4MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(128)) #5

declare noundef nonnull align 8 dereferenceable(72) ptr @_ZN8R3MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72)) #5

; Function Attrs: nounwind
declare ptr @strncpy(ptr noundef, ptr noundef, i64 noundef) #3

; Function Attrs: inlinehint mustprogress nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr noundef nonnull) #8

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7MPHouse21ReadConfigurationFileEPKc(ptr noundef nonnull align 8 dereferenceable(376) %0, ptr noundef %1) #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca %class.RGBDConfiguration, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca %class.R3Point, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca [4096 x i8], align 16
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca %class.R3Affine, align 8
  %22 = alloca %class.R3Point, align 8
  %23 = alloca [1024 x i8], align 16
  %24 = alloca [1024 x i8], align 16
  %25 = alloca %class.R4Matrix, align 8
  %26 = alloca %class.R3Matrix, align 8
  %27 = alloca ptr, align 8
  %28 = alloca i32, align 4
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca %class.R3Box, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %32 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 128, ptr %6) #10
  call void @_ZN17RGBDConfigurationC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %6)
  %33 = load ptr, ptr %5, align 8, !tbaa !5
  %34 = invoke noundef i32 @_ZN17RGBDConfiguration8ReadFileEPKci(ptr noundef nonnull align 8 dereferenceable(128) %6, ptr noundef %33, i32 noundef 1)
          to label %35 unwind label %41

35:                                               ; preds = %2
  %36 = icmp ne i32 %34, 0
  br i1 %36, label %45, label %37

37:                                               ; preds = %35
  %38 = load ptr, ptr @stderr, align 8, !tbaa !5
  %39 = load ptr, ptr %5, align 8, !tbaa !5
  %40 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %38, ptr noundef @.str.90, ptr noundef %39) #10
  store i32 0, ptr %3, align 4
  store i32 1, ptr %9, align 4
  br label %441

41:                                               ; preds = %2
  %42 = landingpad { ptr, i32 }
          cleanup
  %43 = extractvalue { ptr, i32 } %42, 0
  store ptr %43, ptr %7, align 8
  %44 = extractvalue { ptr, i32 } %42, 1
  store i32 %44, ptr %8, align 4
  br label %443

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

46:                                               ; preds = %416, %45
  %47 = load i32, ptr %10, align 4, !tbaa !9
  %48 = invoke noundef i32 @_ZNK17RGBDConfiguration7NImagesEv(ptr noundef nonnull align 8 dereferenceable(128) %6)
          to label %49 unwind label %52

49:                                               ; preds = %46
  %50 = icmp slt i32 %47, %48
  br i1 %50, label %56, label %51

51:                                               ; preds = %49
  store i32 2, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #10
  br label %428

52:                                               ; preds = %46
  %53 = landingpad { ptr, i32 }
          cleanup
  %54 = extractvalue { ptr, i32 } %53, 0
  store ptr %54, ptr %7, align 8
  %55 = extractvalue { ptr, i32 } %53, 1
  store i32 %55, ptr %8, align 4
  br label %427

56:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #10
  %57 = load i32, ptr %10, align 4, !tbaa !9
  %58 = invoke noundef ptr @_ZNK17RGBDConfiguration5ImageEi(ptr noundef nonnull align 8 dereferenceable(128) %6, i32 noundef %57)
          to label %59 unwind label %111

59:                                               ; preds = %56
  store ptr %58, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #10
  %60 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK9RGBDImage14WorldViewpointEv(ptr dead_on_unwind writable sret(%class.R3Point) align 8 %12, ptr noundef nonnull align 8 dereferenceable(488) %60)
          to label %61 unwind label %115

61:                                               ; preds = %59
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #10
  %62 = load ptr, ptr %11, align 8, !tbaa !5
  %63 = invoke noundef i32 @_ZNK9RGBDImage7NPixelsEi(ptr noundef nonnull align 8 dereferenceable(488) %62, i32 noundef 0)
          to label %64 unwind label %119

64:                                               ; preds = %61
  %65 = icmp sgt i32 %63, 0
  br i1 %65, label %66, label %70

66:                                               ; preds = %64
  %67 = load ptr, ptr %11, align 8, !tbaa !5
  %68 = invoke noundef i32 @_ZNK9RGBDImage7NPixelsEi(ptr noundef nonnull align 8 dereferenceable(488) %67, i32 noundef 0)
          to label %69 unwind label %119

69:                                               ; preds = %66
  br label %71

70:                                               ; preds = %64
  br label %71

71:                                               ; preds = %70, %69
  %72 = phi i32 [ %68, %69 ], [ 1280, %70 ]
  store i32 %72, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #10
  %73 = load ptr, ptr %11, align 8, !tbaa !5
  %74 = invoke noundef i32 @_ZNK9RGBDImage7NPixelsEi(ptr noundef nonnull align 8 dereferenceable(488) %73, i32 noundef 1)
          to label %75 unwind label %123

75:                                               ; preds = %71
  %76 = icmp sgt i32 %74, 0
  br i1 %76, label %77, label %81

77:                                               ; preds = %75
  %78 = load ptr, ptr %11, align 8, !tbaa !5
  %79 = invoke noundef i32 @_ZNK9RGBDImage7NPixelsEi(ptr noundef nonnull align 8 dereferenceable(488) %78, i32 noundef 1)
          to label %80 unwind label %123

80:                                               ; preds = %77
  br label %82

81:                                               ; preds = %75
  br label %82

82:                                               ; preds = %81, %80
  %83 = phi i32 [ %79, %80 ], [ 1024, %81 ]
  store i32 %83, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4096, ptr %15) #10
  %84 = getelementptr inbounds [4096 x i8], ptr %15, i64 0, i64 0
  %85 = load ptr, ptr %11, align 8, !tbaa !5
  %86 = invoke noundef ptr @_ZNK9RGBDImage13DepthFilenameEv(ptr noundef nonnull align 8 dereferenceable(488) %85)
          to label %87 unwind label %127

87:                                               ; preds = %82
  %88 = call ptr @strncpy(ptr noundef %84, ptr noundef %86, i64 noundef 4096) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  %89 = getelementptr inbounds [4096 x i8], ptr %15, i64 0, i64 0
  %90 = call noundef ptr @strrchr(ptr noundef %89, i32 noundef 47) #11
  %91 = icmp ne ptr %90, null
  br i1 %91, label %92, label %96

92:                                               ; preds = %87
  %93 = getelementptr inbounds [4096 x i8], ptr %15, i64 0, i64 0
  %94 = call noundef ptr @strrchr(ptr noundef %93, i32 noundef 47) #11
  %95 = getelementptr inbounds i8, ptr %94, i64 1
  br label %98

96:                                               ; preds = %87
  %97 = getelementptr inbounds [4096 x i8], ptr %15, i64 0, i64 0
  br label %98

98:                                               ; preds = %96, %92
  %99 = phi ptr [ %95, %92 ], [ %97, %96 ]
  store ptr %99, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #10
  %100 = load ptr, ptr %16, align 8, !tbaa !5
  %101 = call noundef ptr @strstr(ptr noundef %100, ptr noundef @.str.91) #11
  store ptr %101, ptr %17, align 8, !tbaa !5
  %102 = load ptr, ptr %17, align 8, !tbaa !5
  %103 = icmp ne ptr %102, null
  br i1 %103, label %104, label %131

104:                                              ; preds = %98
  %105 = load ptr, ptr %17, align 8, !tbaa !5
  store i8 0, ptr %105, align 1, !tbaa !11
  %106 = load ptr, ptr %17, align 8, !tbaa !5
  %107 = getelementptr inbounds i8, ptr %106, i32 1
  store ptr %107, ptr %17, align 8, !tbaa !5
  %108 = load ptr, ptr %17, align 8, !tbaa !5
  store i8 0, ptr %108, align 1, !tbaa !11
  %109 = load ptr, ptr %17, align 8, !tbaa !5
  %110 = getelementptr inbounds i8, ptr %109, i32 1
  store ptr %110, ptr %17, align 8, !tbaa !5
  br label %131

111:                                              ; preds = %56
  %112 = landingpad { ptr, i32 }
          cleanup
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %7, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %8, align 4
  br label %426

115:                                              ; preds = %59
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %7, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %8, align 4
  br label %425

119:                                              ; preds = %66, %61
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %7, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %8, align 4
  br label %424

123:                                              ; preds = %77, %71
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %7, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %8, align 4
  br label %423

127:                                              ; preds = %82
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %7, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %8, align 4
  br label %422

131:                                              ; preds = %104, %98
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #10
  %132 = load ptr, ptr %17, align 8, !tbaa !5
  %133 = call noundef ptr @strchr(ptr noundef %132, i32 noundef 95) #11
  store ptr %133, ptr %18, align 8, !tbaa !5
  %134 = load ptr, ptr %18, align 8, !tbaa !5
  %135 = icmp ne ptr %134, null
  br i1 %135, label %136, label %140

136:                                              ; preds = %131
  %137 = load ptr, ptr %18, align 8, !tbaa !5
  store i8 0, ptr %137, align 1, !tbaa !11
  %138 = load ptr, ptr %18, align 8, !tbaa !5
  %139 = getelementptr inbounds i8, ptr %138, i32 1
  store ptr %139, ptr %18, align 8, !tbaa !5
  br label %140

140:                                              ; preds = %136, %131
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  %141 = load ptr, ptr %18, align 8, !tbaa !5
  %142 = call noundef ptr @strchr(ptr noundef %141, i32 noundef 46) #11
  store ptr %142, ptr %19, align 8, !tbaa !5
  %143 = load ptr, ptr %19, align 8, !tbaa !5
  %144 = icmp ne ptr %143, null
  br i1 %144, label %145, label %149

145:                                              ; preds = %140
  %146 = load ptr, ptr %19, align 8, !tbaa !5
  store i8 0, ptr %146, align 1, !tbaa !11
  %147 = load ptr, ptr %19, align 8, !tbaa !5
  %148 = getelementptr inbounds i8, ptr %147, i32 1
  store ptr %148, ptr %19, align 8, !tbaa !5
  br label %149

149:                                              ; preds = %145, %140
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #10
  %150 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 768) #12
          to label %151 unwind label %282

151:                                              ; preds = %149
  invoke void @_ZN7MPImageC1Ev(ptr noundef nonnull align 8 dereferenceable(768) %150)
          to label %152 unwind label %286

152:                                              ; preds = %151
  store ptr %150, ptr %20, align 8, !tbaa !5
  %153 = load ptr, ptr %16, align 8, !tbaa !5
  %154 = icmp ne ptr %153, null
  br i1 %154, label %155, label %162

155:                                              ; preds = %152
  %156 = load ptr, ptr %16, align 8, !tbaa !5
  %157 = call i32 @strcmp(ptr noundef %156, ptr noundef @.str.15) #11
  %158 = icmp ne i32 %157, 0
  br i1 %158, label %159, label %162

159:                                              ; preds = %155
  %160 = load ptr, ptr %16, align 8, !tbaa !5
  %161 = call noalias ptr @strdup(ptr noundef %160) #10
  br label %163

162:                                              ; preds = %155, %152
  br label %163

163:                                              ; preds = %162, %159
  %164 = phi ptr [ %161, %159 ], [ null, %162 ]
  %165 = load ptr, ptr %20, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.MPImage, ptr %165, i32 0, i32 4
  store ptr %164, ptr %166, align 8, !tbaa !12
  %167 = load ptr, ptr %17, align 8, !tbaa !5
  %168 = icmp ne ptr %167, null
  br i1 %168, label %169, label %172

169:                                              ; preds = %163
  %170 = load ptr, ptr %17, align 8, !tbaa !5
  %171 = call i32 @atoi(ptr noundef %170) #11
  br label %173

172:                                              ; preds = %163
  br label %173

173:                                              ; preds = %172, %169
  %174 = phi i32 [ %171, %169 ], [ -1, %172 ]
  %175 = load ptr, ptr %20, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.MPImage, ptr %175, i32 0, i32 5
  store i32 %174, ptr %176, align 8, !tbaa !27
  %177 = load ptr, ptr %18, align 8, !tbaa !5
  %178 = icmp ne ptr %177, null
  br i1 %178, label %179, label %182

179:                                              ; preds = %173
  %180 = load ptr, ptr %18, align 8, !tbaa !5
  %181 = call i32 @atoi(ptr noundef %180) #11
  br label %183

182:                                              ; preds = %173
  br label %183

183:                                              ; preds = %182, %179
  %184 = phi i32 [ %181, %179 ], [ -1, %182 ]
  %185 = load ptr, ptr %20, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.MPImage, ptr %185, i32 0, i32 6
  store i32 %184, ptr %186, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 272, ptr %21) #10
  %187 = load ptr, ptr %11, align 8, !tbaa !5
  %188 = invoke noundef nonnull align 8 dereferenceable(272) ptr @_ZNK9RGBDImage13CameraToWorldEv(ptr noundef nonnull align 8 dereferenceable(488) %187)
          to label %189 unwind label %290

189:                                              ; preds = %183
  invoke void @_ZNK8R3Affine7InverseEv(ptr dead_on_unwind writable sret(%class.R3Affine) align 8 %21, ptr noundef nonnull align 8 dereferenceable(272) %188)
          to label %190 unwind label %290

190:                                              ; preds = %189
  %191 = invoke noundef nonnull align 8 dereferenceable(128) ptr @_ZNK8R3Affine6MatrixEv(ptr noundef nonnull align 8 dereferenceable(272) %21)
          to label %192 unwind label %294

192:                                              ; preds = %190
  %193 = load ptr, ptr %20, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.MPImage, ptr %193, i32 0, i32 8
  %195 = invoke noundef nonnull align 8 dereferenceable(128) ptr @_ZN8R4MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(128) %194, ptr noundef nonnull align 8 dereferenceable(128) %191)
          to label %196 unwind label %294

196:                                              ; preds = %192
  call void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272) %21) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr %21) #10
  %197 = load ptr, ptr %11, align 8, !tbaa !5
  %198 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZNK9RGBDImage10IntrinsicsEv(ptr noundef nonnull align 8 dereferenceable(488) %197)
          to label %199 unwind label %282

199:                                              ; preds = %196
  %200 = load ptr, ptr %20, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.MPImage, ptr %200, i32 0, i32 9
  %202 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZN8R3MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(72) %201, ptr noundef nonnull align 8 dereferenceable(72) %198)
          to label %203 unwind label %282

203:                                              ; preds = %199
  %204 = load i32, ptr %13, align 4, !tbaa !9
  %205 = load ptr, ptr %20, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.MPImage, ptr %205, i32 0, i32 10
  store i32 %204, ptr %206, align 8, !tbaa !29
  %207 = load i32, ptr %14, align 4, !tbaa !9
  %208 = load ptr, ptr %20, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.MPImage, ptr %208, i32 0, i32 11
  store i32 %207, ptr %209, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #10
  %210 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK9RGBDImage14WorldViewpointEv(ptr dead_on_unwind writable sret(%class.R3Point) align 8 %22, ptr noundef nonnull align 8 dereferenceable(488) %210)
          to label %211 unwind label %299

211:                                              ; preds = %203
  %212 = load ptr, ptr %20, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.MPImage, ptr %212, i32 0, i32 12
  %214 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN7R3PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %213, ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %215 unwind label %299

215:                                              ; preds = %211
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #10
  %216 = load ptr, ptr %20, align 8, !tbaa !5
  invoke void @_ZN7MPHouse11InsertImageEP7MPImage(ptr noundef nonnull align 8 dereferenceable(376) %32, ptr noundef %216)
          to label %217 unwind label %282

217:                                              ; preds = %215
  call void @llvm.lifetime.start.p0(i64 1024, ptr %23) #10
  call void @llvm.lifetime.start.p0(i64 1024, ptr %24) #10
  %218 = getelementptr inbounds [1024 x i8], ptr %23, i64 0, i64 0
  %219 = load ptr, ptr %20, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.MPImage, ptr %219, i32 0, i32 4
  %221 = load ptr, ptr %220, align 8, !tbaa !12
  %222 = load ptr, ptr %20, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.MPImage, ptr %222, i32 0, i32 5
  %224 = load i32, ptr %223, align 8, !tbaa !27
  %225 = load ptr, ptr %20, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.MPImage, ptr %225, i32 0, i32 6
  %227 = load i32, ptr %226, align 4, !tbaa !28
  %228 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %218, ptr noundef @.str.32, ptr noundef %221, i32 noundef %224, i32 noundef %227) #10
  %229 = getelementptr inbounds [1024 x i8], ptr %24, i64 0, i64 0
  %230 = load ptr, ptr %20, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.MPImage, ptr %230, i32 0, i32 4
  %232 = load ptr, ptr %231, align 8, !tbaa !12
  %233 = load ptr, ptr %20, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.MPImage, ptr %233, i32 0, i32 5
  %235 = load i32, ptr %234, align 8, !tbaa !27
  %236 = load ptr, ptr %20, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.MPImage, ptr %236, i32 0, i32 6
  %238 = load i32, ptr %237, align 4, !tbaa !28
  %239 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %229, ptr noundef @.str.33, ptr noundef %232, i32 noundef %235, i32 noundef %238) #10
  %240 = load ptr, ptr %20, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.MPImage, ptr %240, i32 0, i32 7
  %242 = load ptr, ptr %20, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.MPImage, ptr %242, i32 0, i32 10
  %244 = load i32, ptr %243, align 8, !tbaa !29
  %245 = load ptr, ptr %20, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.MPImage, ptr %245, i32 0, i32 11
  %247 = load i32, ptr %246, align 4, !tbaa !30
  invoke void @_ZN9RGBDImage10SetNPixelsEii(ptr noundef nonnull align 8 dereferenceable(488) %241, i32 noundef %244, i32 noundef %247)
          to label %248 unwind label %303

248:                                              ; preds = %217
  %249 = load ptr, ptr %20, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.MPImage, ptr %249, i32 0, i32 7
  call void @llvm.lifetime.start.p0(i64 128, ptr %25) #10
  %251 = load ptr, ptr %20, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.MPImage, ptr %251, i32 0, i32 8
  invoke void @_ZN8R4MatrixC1ERKS_(ptr noundef nonnull align 8 dereferenceable(128) %25, ptr noundef nonnull align 8 dereferenceable(128) %252)
          to label %253 unwind label %307

253:                                              ; preds = %248
  invoke void @_ZN9RGBDImage13SetExtrinsicsERK8R4Matrix(ptr noundef nonnull align 8 dereferenceable(488) %250, ptr noundef nonnull align 8 dereferenceable(128) %25)
          to label %254 unwind label %307

254:                                              ; preds = %253
  call void @llvm.lifetime.end.p0(i64 128, ptr %25) #10
  %255 = load ptr, ptr %20, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.MPImage, ptr %255, i32 0, i32 7
  call void @llvm.lifetime.start.p0(i64 72, ptr %26) #10
  %257 = load ptr, ptr %20, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.MPImage, ptr %257, i32 0, i32 9
  invoke void @_ZN8R3MatrixC1ERKS_(ptr noundef nonnull align 8 dereferenceable(72) %26, ptr noundef nonnull align 8 dereferenceable(72) %258)
          to label %259 unwind label %311

259:                                              ; preds = %254
  invoke void @_ZN9RGBDImage13SetIntrinsicsERK8R3Matrix(ptr noundef nonnull align 8 dereferenceable(488) %256, ptr noundef nonnull align 8 dereferenceable(72) %26)
          to label %260 unwind label %311

260:                                              ; preds = %259
  call void @llvm.lifetime.end.p0(i64 72, ptr %26) #10
  %261 = load ptr, ptr %20, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.MPImage, ptr %261, i32 0, i32 7
  %263 = getelementptr inbounds [1024 x i8], ptr %23, i64 0, i64 0
  invoke void @_ZN9RGBDImage16SetDepthFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(488) %262, ptr noundef %263)
          to label %264 unwind label %303

264:                                              ; preds = %260
  %265 = load ptr, ptr %20, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.MPImage, ptr %265, i32 0, i32 7
  %267 = getelementptr inbounds [1024 x i8], ptr %24, i64 0, i64 0
  invoke void @_ZN9RGBDImage16SetColorFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(488) %266, ptr noundef %267)
          to label %268 unwind label %303

268:                                              ; preds = %264
  %269 = load ptr, ptr %20, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.MPImage, ptr %269, i32 0, i32 7
  %271 = load ptr, ptr %20, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.MPImage, ptr %271, i32 0, i32 4
  %273 = load ptr, ptr %272, align 8, !tbaa !12
  invoke void @_ZN9RGBDImage7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(488) %270, ptr noundef %273)
          to label %274 unwind label %303

274:                                              ; preds = %268
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #10
  store ptr null, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #10
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %275

275:                                              ; preds = %355, %274
  %276 = load i32, ptr %28, align 4, !tbaa !9
  %277 = getelementptr inbounds %struct.MPHouse, ptr %32, i32 0, i32 1
  %278 = invoke noundef i32 @_ZNK8RNVArray8NEntriesEv(ptr noundef nonnull align 8 dereferenceable(16) %277)
          to label %279 unwind label %315

279:                                              ; preds = %275
  %280 = icmp slt i32 %276, %278
  br i1 %280, label %319, label %281

281:                                              ; preds = %279
  store i32 5, ptr %9, align 4
  br label %358

282:                                              ; preds = %215, %199, %196, %149
  %283 = landingpad { ptr, i32 }
          cleanup
  %284 = extractvalue { ptr, i32 } %283, 0
  store ptr %284, ptr %7, align 8
  %285 = extractvalue { ptr, i32 } %283, 1
  store i32 %285, ptr %8, align 4
  br label %421

286:                                              ; preds = %151
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %7, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %150, i64 noundef 768) #13
  br label %421

290:                                              ; preds = %189, %183
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %7, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %8, align 4
  br label %298

294:                                              ; preds = %192, %190
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %7, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %8, align 4
  call void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272) %21) #10
  br label %298

298:                                              ; preds = %294, %290
  call void @llvm.lifetime.end.p0(i64 272, ptr %21) #10
  br label %421

299:                                              ; preds = %211, %203
  %300 = landingpad { ptr, i32 }
          cleanup
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %7, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #10
  br label %421

303:                                              ; preds = %268, %264, %260, %217
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %7, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %8, align 4
  br label %420

307:                                              ; preds = %253, %248
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %7, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 128, ptr %25) #10
  br label %420

311:                                              ; preds = %259, %254
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %7, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 72, ptr %26) #10
  br label %420

315:                                              ; preds = %275
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %7, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %8, align 4
  br label %359

319:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %320 = getelementptr inbounds %struct.MPHouse, ptr %32, i32 0, i32 1
  %321 = load i32, ptr %28, align 4, !tbaa !9
  %322 = invoke noundef ptr @_ZNK7RNArrayIP10MPPanoramaE3KthEi(ptr noundef nonnull align 8 dereferenceable(16) %320, i32 noundef %321)
          to label %323 unwind label %346

323:                                              ; preds = %319
  store ptr %322, ptr %29, align 8, !tbaa !5
  %324 = load ptr, ptr %29, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.MPPanorama, ptr %324, i32 0, i32 4
  %326 = load ptr, ptr %325, align 8, !tbaa !31
  %327 = icmp ne ptr %326, null
  br i1 %327, label %328, label %351

328:                                              ; preds = %323
  %329 = load ptr, ptr %16, align 8, !tbaa !5
  %330 = icmp ne ptr %329, null
  br i1 %330, label %331, label %351

331:                                              ; preds = %328
  %332 = load ptr, ptr %29, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.MPPanorama, ptr %332, i32 0, i32 4
  %334 = load ptr, ptr %333, align 8, !tbaa !31
  %335 = load ptr, ptr %16, align 8, !tbaa !5
  %336 = call i32 @strcmp(ptr noundef %334, ptr noundef %335) #11
  %337 = icmp ne i32 %336, 0
  br i1 %337, label %351, label %338

338:                                              ; preds = %331
  %339 = load ptr, ptr %29, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.MPPanorama, ptr %339, i32 0, i32 6
  %341 = invoke noundef double @_Z17R3SquaredDistanceRK7R3PointS1_(ptr noundef nonnull align 8 dereferenceable(24) %340, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %342 unwind label %346

342:                                              ; preds = %338
  %343 = fcmp olt double %341, 5.000000e-01
  br i1 %343, label %344, label %350

344:                                              ; preds = %342
  %345 = load ptr, ptr %29, align 8, !tbaa !5
  store ptr %345, ptr %27, align 8, !tbaa !5
  store i32 5, ptr %9, align 4
  br label %352

346:                                              ; preds = %338, %319
  %347 = landingpad { ptr, i32 }
          cleanup
  %348 = extractvalue { ptr, i32 } %347, 0
  store ptr %348, ptr %7, align 8
  %349 = extractvalue { ptr, i32 } %347, 1
  store i32 %349, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %359

350:                                              ; preds = %342
  br label %351

351:                                              ; preds = %350, %331, %328, %323
  store i32 0, ptr %9, align 4
  br label %352

352:                                              ; preds = %351, %344
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  %353 = load i32, ptr %9, align 4
  switch i32 %353, label %358 [
    i32 0, label %354
  ]

354:                                              ; preds = %352
  br label %355

355:                                              ; preds = %354
  %356 = load i32, ptr %28, align 4, !tbaa !9
  %357 = add nsw i32 %356, 1
  store i32 %357, ptr %28, align 4, !tbaa !9
  br label %275, !llvm.loop !34

358:                                              ; preds = %352, %281
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #10
  br label %360

359:                                              ; preds = %346, %315
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #10
  br label %419

360:                                              ; preds = %358
  %361 = load ptr, ptr %27, align 8, !tbaa !5
  %362 = icmp ne ptr %361, null
  br i1 %362, label %363, label %371

363:                                              ; preds = %360
  %364 = load ptr, ptr %27, align 8, !tbaa !5
  %365 = load ptr, ptr %20, align 8, !tbaa !5
  invoke void @_ZN10MPPanorama11InsertImageEP7MPImage(ptr noundef nonnull align 8 dereferenceable(80) %364, ptr noundef %365)
          to label %366 unwind label %367

366:                                              ; preds = %363
  br label %415

367:                                              ; preds = %395, %392, %385, %371, %363
  %368 = landingpad { ptr, i32 }
          cleanup
  %369 = extractvalue { ptr, i32 } %368, 0
  store ptr %369, ptr %7, align 8
  %370 = extractvalue { ptr, i32 } %368, 1
  store i32 %370, ptr %8, align 4
  br label %419

371:                                              ; preds = %360
  %372 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #12
          to label %373 unwind label %367

373:                                              ; preds = %371
  invoke void @_ZN10MPPanoramaC1Ev(ptr noundef nonnull align 8 dereferenceable(80) %372)
          to label %374 unwind label %406

374:                                              ; preds = %373
  store ptr %372, ptr %27, align 8, !tbaa !5
  %375 = load ptr, ptr %16, align 8, !tbaa !5
  %376 = icmp ne ptr %375, null
  br i1 %376, label %377, label %384

377:                                              ; preds = %374
  %378 = load ptr, ptr %16, align 8, !tbaa !5
  %379 = call i32 @strcmp(ptr noundef %378, ptr noundef @.str.15) #11
  %380 = icmp ne i32 %379, 0
  br i1 %380, label %381, label %384

381:                                              ; preds = %377
  %382 = load ptr, ptr %16, align 8, !tbaa !5
  %383 = call noalias ptr @strdup(ptr noundef %382) #10
  br label %385

384:                                              ; preds = %377, %374
  br label %385

385:                                              ; preds = %384, %381
  %386 = phi ptr [ %383, %381 ], [ null, %384 ]
  %387 = load ptr, ptr %27, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.MPPanorama, ptr %387, i32 0, i32 4
  store ptr %386, ptr %388, align 8, !tbaa !31
  %389 = load ptr, ptr %27, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.MPPanorama, ptr %389, i32 0, i32 6
  %391 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN7R3PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %390, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %392 unwind label %367

392:                                              ; preds = %385
  %393 = load ptr, ptr %27, align 8, !tbaa !5
  %394 = load ptr, ptr %20, align 8, !tbaa !5
  invoke void @_ZN10MPPanorama11InsertImageEP7MPImage(ptr noundef nonnull align 8 dereferenceable(80) %393, ptr noundef %394)
          to label %395 unwind label %367

395:                                              ; preds = %392
  %396 = load ptr, ptr %27, align 8, !tbaa !5
  invoke void @_ZN7MPHouse14InsertPanoramaEP10MPPanorama(ptr noundef nonnull align 8 dereferenceable(376) %32, ptr noundef %396)
          to label %397 unwind label %367

397:                                              ; preds = %395
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  %398 = invoke noundef ptr @_ZNK7MPHouse10FindRegionERK7R3Pointd(ptr noundef nonnull align 8 dereferenceable(376) %32, ptr noundef nonnull align 8 dereferenceable(24) %12, double noundef 1.000000e+00)
          to label %399 unwind label %410

399:                                              ; preds = %397
  store ptr %398, ptr %30, align 8, !tbaa !5
  %400 = load ptr, ptr %30, align 8, !tbaa !5
  %401 = icmp ne ptr %400, null
  br i1 %401, label %402, label %414

402:                                              ; preds = %399
  %403 = load ptr, ptr %30, align 8, !tbaa !5
  %404 = load ptr, ptr %27, align 8, !tbaa !5
  invoke void @_ZN8MPRegion14InsertPanoramaEP10MPPanorama(ptr noundef nonnull align 8 dereferenceable(192) %403, ptr noundef %404)
          to label %405 unwind label %410

405:                                              ; preds = %402
  br label %414

406:                                              ; preds = %373
  %407 = landingpad { ptr, i32 }
          cleanup
  %408 = extractvalue { ptr, i32 } %407, 0
  store ptr %408, ptr %7, align 8
  %409 = extractvalue { ptr, i32 } %407, 1
  store i32 %409, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %372, i64 noundef 80) #13
  br label %419

410:                                              ; preds = %402, %397
  %411 = landingpad { ptr, i32 }
          cleanup
  %412 = extractvalue { ptr, i32 } %411, 0
  store ptr %412, ptr %7, align 8
  %413 = extractvalue { ptr, i32 } %411, 1
  store i32 %413, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %419

414:                                              ; preds = %405, %399
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %415

415:                                              ; preds = %414, %366
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 1024, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 1024, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 4096, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  br label %416

416:                                              ; preds = %415
  %417 = load i32, ptr %10, align 4, !tbaa !9
  %418 = add nsw i32 %417, 1
  store i32 %418, ptr %10, align 4, !tbaa !9
  br label %46, !llvm.loop !36

419:                                              ; preds = %410, %406, %367, %359
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  br label %420

420:                                              ; preds = %419, %311, %307, %303
  call void @llvm.lifetime.end.p0(i64 1024, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 1024, ptr %23) #10
  br label %421

421:                                              ; preds = %420, %299, %298, %286, %282
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  br label %422

422:                                              ; preds = %421, %127
  call void @llvm.lifetime.end.p0(i64 4096, ptr %15) #10
  br label %423

423:                                              ; preds = %422, %123
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #10
  br label %424

424:                                              ; preds = %423, %119
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  br label %425

425:                                              ; preds = %424, %115
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #10
  br label %426

426:                                              ; preds = %425, %111
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  br label %427

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

428:                                              ; preds = %51
  %429 = getelementptr inbounds %struct.MPHouse, ptr %32, i32 0, i32 13
  call void @llvm.lifetime.start.p0(i64 56, ptr %31) #10
  invoke void @_ZNK17RGBDConfiguration9WorldBBoxEv(ptr dead_on_unwind writable sret(%class.R3Box) align 8 %31, ptr noundef nonnull align 8 dereferenceable(128) %6)
          to label %430 unwind label %432

430:                                              ; preds = %428
  invoke void @_ZN5R3Box5UnionERKS_(ptr noundef nonnull align 8 dereferenceable(56) %429, ptr noundef nonnull align 8 dereferenceable(56) %31)
          to label %431 unwind label %436

431:                                              ; preds = %430
  call void @_ZN7R3SolidD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %31) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %31) #10
  store i32 1, ptr %3, align 4
  store i32 1, ptr %9, align 4
  br label %441

432:                                              ; preds = %428
  %433 = landingpad { ptr, i32 }
          cleanup
  %434 = extractvalue { ptr, i32 } %433, 0
  store ptr %434, ptr %7, align 8
  %435 = extractvalue { ptr, i32 } %433, 1
  store i32 %435, ptr %8, align 4
  br label %440

436:                                              ; preds = %430
  %437 = landingpad { ptr, i32 }
          cleanup
  %438 = extractvalue { ptr, i32 } %437, 0
  store ptr %438, ptr %7, align 8
  %439 = extractvalue { ptr, i32 } %437, 1
  store i32 %439, ptr %8, align 4
  call void @_ZN7R3SolidD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %31) #10
  br label %440

440:                                              ; preds = %436, %432
  call void @llvm.lifetime.end.p0(i64 56, ptr %31) #10
  br label %443

441:                                              ; preds = %431, %37
  call void @_ZN17RGBDConfigurationD1Ev(ptr noundef nonnull align 8 dereferenceable(128) %6) #10
  call void @llvm.lifetime.end.p0(i64 128, ptr %6) #10
  %442 = load i32, ptr %3, align 4
  ret i32 %442

443:                                              ; preds = %440, %427, %41
  call void @_ZN17RGBDConfigurationD1Ev(ptr noundef nonnull align 8 dereferenceable(128) %6) #10
  call void @llvm.lifetime.end.p0(i64 128, ptr %6) #10
  br label %444

444:                                              ; preds = %443
  %445 = load ptr, ptr %7, align 8
  %446 = load i32, ptr %8, align 4
  %447 = insertvalue { ptr, i32 } poison, ptr %445, 0
  %448 = insertvalue { ptr, i32 } %447, i32 %446, 1
  resume { ptr, i32 } %448
}

declare noundef i32 @_ZN17RGBDConfiguration8ReadFileEPKci(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef, i32 noundef) unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZNK17RGBDConfiguration5ImageEi(ptr noundef nonnull align 8 dereferenceable(128), i32 noundef) #9 align 2

; 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)) #9 align 2

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

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

; Function Attrs: nounwind willreturn memory(read)
declare noundef ptr @strrchr(ptr noundef, i32 noundef) #6

; Function Attrs: nounwind willreturn memory(read)
declare noundef ptr @strstr(ptr noundef, ptr noundef) #6

; Function Attrs: nounwind willreturn memory(read)
declare noundef ptr @strchr(ptr noundef, i32 noundef) #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK8R3Affine7InverseEv(ptr dead_on_unwind noalias writable sret(%class.R3Affine) align 8, ptr noundef nonnull align 8 dereferenceable(272)) #9 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(128) ptr @_ZNK8R3Affine6MatrixEv(ptr noundef nonnull align 8 dereferenceable(272)) #1 align 2

; Function Attrs: nounwind
declare void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272)) unnamed_addr #3

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

declare void @_ZN8R4MatrixC1ERKS_(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #5

declare void @_ZN8R3MatrixC1ERKS_(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK17RGBDConfiguration9WorldBBoxEv(ptr dead_on_unwind noalias writable sret(%class.R3Box) align 8, ptr noundef nonnull align 8 dereferenceable(128)) #9 align 2

declare void @_ZN7MPImageC1Ev(ptr)

declare void @_ZN10MPPanoramaC1Ev(ptr)

attributes #0 = { 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 #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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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 willreturn memory(read) "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 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { inlinehint mustprogress nounwind willreturn memory(read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { nounwind }
attributes #11 = { nounwind willreturn memory(read) }
attributes #12 = { builtin allocsize(0) }
attributes #13 = { builtin 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 = !{!7, !7, i64 0}
!12 = !{!13, !6, i64 32}
!13 = !{!"_ZTS7MPImage", !6, i64 0, !10, i64 8, !6, i64 16, !10, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !14, i64 48, !19, i64 536, !22, i64 664, !10, i64 736, !10, i64 740, !26, i64 744}
!14 = !{!"_ZTS9RGBDImage", !6, i64 8, !10, i64 16, !15, i64 24, !10, i64 40, !10, i64 44, !17, i64 48, !22, i64 320, !23, i64 392, !10, i64 448, !6, i64 456, !6, i64 464, !6, i64 472, !10, i64 480, !10, i64 484}
!15 = !{!"_ZTS7RNArrayIP6R2GridE", !16, i64 0}
!16 = !{!"_ZTS8RNVArray", !6, i64 0, !10, i64 8, !10, i64 12}
!17 = !{!"_ZTS8R3Affine", !18, i64 0, !19, i64 8, !19, i64 136, !20, i64 264}
!18 = !{!"_ZTS16R3Transformation"}
!19 = !{!"_ZTS8R4Matrix", !7, i64 0}
!20 = !{!"_ZTS7RNFlags", !21, i64 0}
!21 = !{!"long", !7, i64 0}
!22 = !{!"_ZTS8R3Matrix", !7, i64 0}
!23 = !{!"_ZTS5R3Box", !24, i64 0, !26, i64 8, !26, i64 32}
!24 = !{!"_ZTS7R3Solid", !25, i64 0}
!25 = !{!"_ZTS7R3Shape"}
!26 = !{!"_ZTS7R3Point", !7, i64 0}
!27 = !{!13, !10, i64 40}
!28 = !{!13, !10, i64 44}
!29 = !{!13, !10, i64 736}
!30 = !{!13, !10, i64 740}
!31 = !{!32, !6, i64 32}
!32 = !{!"_ZTS10MPPanorama", !6, i64 0, !10, i64 8, !6, i64 16, !10, i64 24, !6, i64 32, !33, i64 40, !26, i64 56}
!33 = !{!"_ZTS7RNArrayIP7MPImageE", !16, i64 0}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = distinct !{!36, !35}


; 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.RGBDConfiguration = type { ptr, %class.RNArray.10, %class.RNArray.11, ptr, ptr, ptr, ptr, %class.R3Box }
%class.RNArray.10 = type { %class.RNVArray }
%class.RNVArray = type { ptr, i32, i32 }
%class.RNArray.11 = type { %class.RNVArray }
%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.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]] }

@stderr = external local_unnamed_addr global ptr, align 8
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [3 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10MPPanorama11InsertImageEP7MPImage(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef) local_unnamed_addr #0 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8MPRegion14InsertPanoramaEP10MPPanorama(ptr noundef nonnull align 8 dereferenceable(192), ptr noundef) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK7RNArrayIP10MPPanoramaE3KthEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #0 align 2

declare void @_ZN17RGBDConfigurationC1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #5

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

; Function Attrs: nounwind
declare void @_ZN17RGBDConfigurationD1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7MPHouse11InsertImageEP7MPImage(ptr noundef nonnull align 8 dereferenceable(376), ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7MPHouse14InsertPanoramaEP10MPPanorama(ptr noundef nonnull align 8 dereferenceable(376), ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK7MPHouse10FindRegionERK7R3Pointd(ptr noundef nonnull align 8 dereferenceable(376), ptr noundef nonnull align 8 dereferenceable(24), double noundef) local_unnamed_addr #0 align 2

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

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

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

; Function Attrs: nofree nounwind
declare noundef i32 @sprintf(ptr noalias nocapture noundef writeonly, ptr nocapture noundef readonly, ...) local_unnamed_addr #8

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

declare void @_ZN9RGBDImage13SetExtrinsicsERK8R4Matrix(ptr noundef nonnull align 8 dereferenceable(488), ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #5

declare void @_ZN9RGBDImage13SetIntrinsicsERK8R3Matrix(ptr noundef nonnull align 8 dereferenceable(488), ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #5

declare void @_ZN9RGBDImage16SetDepthFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(488), ptr noundef) unnamed_addr #5

declare void @_ZN9RGBDImage16SetColorFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(488), ptr noundef) unnamed_addr #5

declare void @_ZN9RGBDImage7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(488), ptr noundef) unnamed_addr #5

declare noundef nonnull align 8 dereferenceable(128) ptr @_ZN8R4MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #5

declare noundef nonnull align 8 dereferenceable(72) ptr @_ZN8R3MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr nocapture noundef nonnull) local_unnamed_addr #11

; Function Attrs: mustprogress uwtable
define dso_local noundef range(i32 0, 2) i32 @_ZN7MPHouse21ReadConfigurationFileEPKc(ptr noundef nonnull align 8 dereferenceable(376) %0, ptr noundef %1) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %class.RGBDConfiguration, align 8
  %4 = alloca %class.R3Point, align 8
  %5 = alloca [4096 x i8], align 16
  %6 = alloca %class.R3Affine, align 8
  %7 = alloca %class.R3Point, align 8
  %8 = alloca [1024 x i8], align 16
  %9 = alloca [1024 x i8], align 16
  %10 = alloca %class.R4Matrix, align 8
  %11 = alloca %class.R3Matrix, align 8
  %12 = alloca %class.R3Box, align 8
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %3) #13
  call void @_ZN17RGBDConfigurationC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %3)
  %13 = invoke noundef i32 @_ZN17RGBDConfiguration8ReadFileEPKci(ptr noundef nonnull align 8 dereferenceable(128) %3, ptr noundef %1, i32 noundef 1)
          to label %14 unwind label %21

14:                                               ; preds = %2
  %.not = icmp eq i32 %13, 0
  br i1 %.not, label %18, label %.preheader148

.preheader148:                                    ; preds = %14
  %15 = call noundef i32 @_ZNK17RGBDConfiguration7NImagesEv(ptr noundef nonnull align 8 dereferenceable(128) %3)
  %16 = icmp sgt i32 %15, 0
  br i1 %16, label %.lr.ph164, label %._crit_edge165

.lr.ph164:                                        ; preds = %.preheader148
  %17 = getelementptr inbounds i8, ptr %0, i64 16
  br label %23

18:                                               ; preds = %14
  %19 = load ptr, ptr @stderr, align 8, !tbaa !5
  %20 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %19, ptr noundef nonnull @.str.90, ptr noundef %1) #14
  br label %196

21:                                               ; preds = %2
  %22 = landingpad { ptr, i32 }
          cleanup
  br label %197

._crit_edge165:                                   ; preds = %181, %.preheader148
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %12) #13
  invoke void @_ZNK17RGBDConfiguration9WorldBBoxEv(ptr dead_on_unwind nonnull writable sret(%class.R3Box) align 8 %12, ptr noundef nonnull align 8 dereferenceable(128) %3)
          to label %188 unwind label %191

23:                                               ; preds = %.lr.ph164, %181
  %.0109163 = phi i32 [ 0, %.lr.ph164 ], [ %182, %181 ]
  %24 = invoke noundef ptr @_ZNK17RGBDConfiguration5ImageEi(ptr noundef nonnull align 8 dereferenceable(128) %3, i32 noundef %.0109163)
          to label %25 unwind label %50

25:                                               ; preds = %23
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #13
  invoke void @_ZNK9RGBDImage14WorldViewpointEv(ptr dead_on_unwind nonnull writable sret(%class.R3Point) align 8 %4, ptr noundef nonnull align 8 dereferenceable(488) %24)
          to label %26 unwind label %52

26:                                               ; preds = %25
  %27 = invoke noundef i32 @_ZNK9RGBDImage7NPixelsEi(ptr noundef nonnull align 8 dereferenceable(488) %24, i32 noundef 0)
          to label %28 unwind label %54

28:                                               ; preds = %26
  %29 = icmp sgt i32 %27, 0
  br i1 %29, label %30, label %32

30:                                               ; preds = %28
  %31 = invoke noundef i32 @_ZNK9RGBDImage7NPixelsEi(ptr noundef nonnull align 8 dereferenceable(488) %24, i32 noundef 0)
          to label %32 unwind label %54

32:                                               ; preds = %28, %30
  %33 = phi i32 [ %31, %30 ], [ 1280, %28 ]
  %34 = invoke noundef i32 @_ZNK9RGBDImage7NPixelsEi(ptr noundef nonnull align 8 dereferenceable(488) %24, i32 noundef 1)
          to label %35 unwind label %56

35:                                               ; preds = %32
  %36 = icmp sgt i32 %34, 0
  br i1 %36, label %37, label %39

37:                                               ; preds = %35
  %38 = invoke noundef i32 @_ZNK9RGBDImage7NPixelsEi(ptr noundef nonnull align 8 dereferenceable(488) %24, i32 noundef 1)
          to label %39 unwind label %56

39:                                               ; preds = %35, %37
  %40 = phi i32 [ %38, %37 ], [ 1024, %35 ]
  call void @llvm.lifetime.start.p0(i64 4096, ptr nonnull %5) #13
  %41 = call noundef ptr @_ZNK9RGBDImage13DepthFilenameEv(ptr noundef nonnull align 8 dereferenceable(488) %24)
  %42 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) %41, i64 noundef 4096) #13
  %43 = call noundef ptr @strrchr(ptr noundef nonnull dereferenceable(1) %5, i32 noundef 47) #15
  %.not119 = icmp eq ptr %43, null
  %44 = getelementptr inbounds i8, ptr %43, i64 1
  %45 = select i1 %.not119, ptr %5, ptr %44
  %46 = call noundef ptr @strstr(ptr noundef nonnull dereferenceable(1) %45, ptr noundef nonnull dereferenceable(1) @.str.91) #15
  %.not120 = icmp eq ptr %46, null
  br i1 %.not120, label %58, label %47

47:                                               ; preds = %39
  store i8 0, ptr %46, align 1, !tbaa !9
  %48 = getelementptr inbounds i8, ptr %46, i64 1
  store i8 0, ptr %48, align 1, !tbaa !9
  %49 = getelementptr inbounds i8, ptr %46, i64 2
  br label %58

50:                                               ; preds = %23
  %51 = landingpad { ptr, i32 }
          cleanup
  br label %197

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

54:                                               ; preds = %30, %26
  %55 = landingpad { ptr, i32 }
          cleanup
  br label %187

56:                                               ; preds = %37, %32
  %57 = landingpad { ptr, i32 }
          cleanup
  br label %187

58:                                               ; preds = %47, %39
  %.0107 = phi ptr [ %49, %47 ], [ null, %39 ]
  %59 = call noundef ptr @strchr(ptr noundef nonnull dereferenceable(1) %.0107, i32 noundef 95) #15
  %.not121 = icmp eq ptr %59, null
  br i1 %.not121, label %62, label %60

60:                                               ; preds = %58
  store i8 0, ptr %59, align 1, !tbaa !9
  %61 = getelementptr inbounds i8, ptr %59, i64 1
  br label %62

62:                                               ; preds = %60, %58
  %.0106 = phi ptr [ %61, %60 ], [ null, %58 ]
  %63 = call noundef ptr @strchr(ptr noundef nonnull dereferenceable(1) %.0106, i32 noundef 46) #15
  %.not122 = icmp eq ptr %63, null
  br i1 %.not122, label %65, label %64

64:                                               ; preds = %62
  store i8 0, ptr %63, align 1, !tbaa !9
  br label %65

65:                                               ; preds = %64, %62
  %66 = invoke noalias noundef nonnull dereferenceable(768) ptr @_Znwm(i64 noundef 768) #16
          to label %67 unwind label %123

67:                                               ; preds = %65
  invoke void @_ZN7MPImageC1Ev(ptr noundef nonnull align 8 dereferenceable(768) %66)
          to label %68 unwind label %125

68:                                               ; preds = %67
  %69 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %45, ptr noundef nonnull dereferenceable(1) @.str.15) #15
  %.not123 = icmp eq i32 %69, 0
  br i1 %.not123, label %72, label %70

70:                                               ; preds = %68
  %71 = call noalias ptr @strdup(ptr noundef nonnull %45) #13
  br label %72

72:                                               ; preds = %68, %70
  %73 = phi ptr [ %71, %70 ], [ null, %68 ]
  %74 = getelementptr inbounds i8, ptr %66, i64 32
  store ptr %73, ptr %74, align 8, !tbaa !10
  %.not124 = icmp eq ptr %.0107, null
  br i1 %.not124, label %77, label %75

75:                                               ; preds = %72
  %76 = call i32 @atoi(ptr nocapture noundef %.0107) #15
  br label %77

77:                                               ; preds = %72, %75
  %78 = phi i32 [ %76, %75 ], [ -1, %72 ]
  %79 = getelementptr inbounds i8, ptr %66, i64 40
  store i32 %78, ptr %79, align 8, !tbaa !26
  %.not125 = icmp eq ptr %.0106, null
  br i1 %.not125, label %82, label %80

80:                                               ; preds = %77
  %81 = call i32 @atoi(ptr nocapture noundef %.0106) #15
  br label %82

82:                                               ; preds = %77, %80
  %83 = phi i32 [ %81, %80 ], [ -1, %77 ]
  %84 = getelementptr inbounds i8, ptr %66, i64 44
  store i32 %83, ptr %84, align 4, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %6) #13
  %85 = call noundef nonnull align 8 dereferenceable(272) ptr @_ZNK9RGBDImage13CameraToWorldEv(ptr noundef nonnull align 8 dereferenceable(488) %24)
  invoke void @_ZNK8R3Affine7InverseEv(ptr dead_on_unwind nonnull writable sret(%class.R3Affine) align 8 %6, ptr noundef nonnull align 8 dereferenceable(272) %85)
          to label %86 unwind label %127

86:                                               ; preds = %82
  %87 = call noundef nonnull align 8 dereferenceable(128) ptr @_ZNK8R3Affine6MatrixEv(ptr noundef nonnull align 8 dereferenceable(272) %6)
  %88 = getelementptr inbounds i8, ptr %66, i64 536
  %89 = invoke noundef nonnull align 8 dereferenceable(128) ptr @_ZN8R4MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(128) %88, ptr noundef nonnull align 8 dereferenceable(128) %87)
          to label %90 unwind label %129

90:                                               ; preds = %86
  call void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272) %6) #13
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %6) #13
  %91 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNK9RGBDImage10IntrinsicsEv(ptr noundef nonnull align 8 dereferenceable(488) %24)
  %92 = getelementptr inbounds i8, ptr %66, i64 664
  %93 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZN8R3MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(72) %92, ptr noundef nonnull align 8 dereferenceable(72) %91)
          to label %94 unwind label %123

94:                                               ; preds = %90
  %95 = getelementptr inbounds i8, ptr %66, i64 736
  store i32 %33, ptr %95, align 8, !tbaa !28
  %96 = getelementptr inbounds i8, ptr %66, i64 740
  store i32 %40, ptr %96, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #13
  invoke void @_ZNK9RGBDImage14WorldViewpointEv(ptr dead_on_unwind nonnull writable sret(%class.R3Point) align 8 %7, ptr noundef nonnull align 8 dereferenceable(488) %24)
          to label %97 unwind label %132

97:                                               ; preds = %94
  %98 = getelementptr inbounds i8, ptr %66, i64 744
  %99 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN7R3PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %98, ptr noundef nonnull align 8 dereferenceable(24) %7)
          to label %100 unwind label %132

100:                                              ; preds = %97
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #13
  invoke void @_ZN7MPHouse11InsertImageEP7MPImage(ptr noundef nonnull align 8 dereferenceable(376) %0, ptr noundef nonnull %66)
          to label %101 unwind label %123

101:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %8) #13
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %9) #13
  %102 = load ptr, ptr %74, align 8, !tbaa !10
  %103 = load i32, ptr %79, align 8, !tbaa !26
  %104 = load i32, ptr %84, align 4, !tbaa !27
  %105 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %8, ptr noundef nonnull dereferenceable(1) @.str.32, ptr noundef %102, i32 noundef %103, i32 noundef %104) #13
  %106 = load ptr, ptr %74, align 8, !tbaa !10
  %107 = load i32, ptr %79, align 8, !tbaa !26
  %108 = load i32, ptr %84, align 4, !tbaa !27
  %109 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.33, ptr noundef %106, i32 noundef %107, i32 noundef %108) #13
  %110 = getelementptr inbounds i8, ptr %66, i64 48
  %111 = load i32, ptr %95, align 8, !tbaa !28
  %112 = load i32, ptr %96, align 4, !tbaa !29
  invoke void @_ZN9RGBDImage10SetNPixelsEii(ptr noundef nonnull align 8 dereferenceable(488) %110, i32 noundef %111, i32 noundef %112)
          to label %113 unwind label %134

113:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %10) #13
  invoke void @_ZN8R4MatrixC1ERKS_(ptr noundef nonnull align 8 dereferenceable(128) %10, ptr noundef nonnull align 8 dereferenceable(128) %88)
          to label %114 unwind label %136

114:                                              ; preds = %113
  invoke void @_ZN9RGBDImage13SetExtrinsicsERK8R4Matrix(ptr noundef nonnull align 8 dereferenceable(488) %110, ptr noundef nonnull align 8 dereferenceable(128) %10)
          to label %115 unwind label %136

115:                                              ; preds = %114
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %10) #13
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %11) #13
  invoke void @_ZN8R3MatrixC1ERKS_(ptr noundef nonnull align 8 dereferenceable(72) %11, ptr noundef nonnull align 8 dereferenceable(72) %92)
          to label %116 unwind label %138

116:                                              ; preds = %115
  invoke void @_ZN9RGBDImage13SetIntrinsicsERK8R3Matrix(ptr noundef nonnull align 8 dereferenceable(488) %110, ptr noundef nonnull align 8 dereferenceable(72) %11)
          to label %117 unwind label %138

117:                                              ; preds = %116
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %11) #13
  invoke void @_ZN9RGBDImage16SetDepthFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(488) %110, ptr noundef nonnull %8)
          to label %118 unwind label %134

118:                                              ; preds = %117
  invoke void @_ZN9RGBDImage16SetColorFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(488) %110, ptr noundef nonnull %9)
          to label %119 unwind label %134

119:                                              ; preds = %118
  %120 = load ptr, ptr %74, align 8, !tbaa !10
  invoke void @_ZN9RGBDImage7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(488) %110, ptr noundef %120)
          to label %.preheader unwind label %134

.preheader:                                       ; preds = %119
  %121 = call noundef i32 @_ZNK8RNVArray8NEntriesEv(ptr noundef nonnull align 8 dereferenceable(16) %17)
  %122 = icmp sgt i32 %121, 0
  br i1 %122, label %.lr.ph, label %._crit_edge

123:                                              ; preds = %100, %90, %65
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %186

125:                                              ; preds = %67
  %126 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %66, i64 noundef 768) #17
  br label %186

127:                                              ; preds = %82
  %128 = landingpad { ptr, i32 }
          cleanup
  br label %131

129:                                              ; preds = %86
  %130 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272) %6) #13
  br label %131

131:                                              ; preds = %129, %127
  %.pn126 = phi { ptr, i32 } [ %130, %129 ], [ %128, %127 ]
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %6) #13
  br label %186

132:                                              ; preds = %97, %94
  %133 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #13
  br label %186

134:                                              ; preds = %119, %118, %117, %101
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %185

136:                                              ; preds = %114, %113
  %137 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %10) #13
  br label %185

138:                                              ; preds = %116, %115
  %139 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %11) #13
  br label %185

.lr.ph:                                           ; preds = %.preheader, %153
  %.092162 = phi i32 [ %154, %153 ], [ 0, %.preheader ]
  %140 = invoke noundef ptr @_ZNK7RNArrayIP10MPPanoramaE3KthEi(ptr noundef nonnull align 8 dereferenceable(16) %17, i32 noundef %.092162)
          to label %141 unwind label %151

141:                                              ; preds = %.lr.ph
  %142 = getelementptr inbounds i8, ptr %140, i64 32
  %143 = load ptr, ptr %142, align 8, !tbaa !30
  %.not128 = icmp eq ptr %143, null
  br i1 %.not128, label %153, label %144

144:                                              ; preds = %141
  %145 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %143, ptr noundef nonnull dereferenceable(1) %45) #15
  %.not129 = icmp eq i32 %145, 0
  br i1 %.not129, label %146, label %153

146:                                              ; preds = %144
  %147 = getelementptr inbounds i8, ptr %140, i64 56
  %148 = invoke noundef double @_Z17R3SquaredDistanceRK7R3PointS1_(ptr noundef nonnull align 8 dereferenceable(24) %147, ptr noundef nonnull align 8 dereferenceable(24) %4)
          to label %149 unwind label %151

149:                                              ; preds = %146
  %150 = fcmp olt double %148, 5.000000e-01
  br i1 %150, label %157, label %153

151:                                              ; preds = %146, %.lr.ph
  %152 = landingpad { ptr, i32 }
          cleanup
  br label %185

153:                                              ; preds = %141, %144, %149
  %154 = add nuw nsw i32 %.092162, 1
  %155 = call noundef i32 @_ZNK8RNVArray8NEntriesEv(ptr noundef nonnull align 8 dereferenceable(16) %17)
  %156 = icmp slt i32 %154, %155
  br i1 %156, label %.lr.ph, label %._crit_edge, !llvm.loop !33

157:                                              ; preds = %149
  invoke void @_ZN10MPPanorama11InsertImageEP7MPImage(ptr noundef nonnull align 8 dereferenceable(80) %140, ptr noundef nonnull %66)
          to label %181 unwind label %158

158:                                              ; preds = %172, %171, %166, %._crit_edge, %157
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %185

._crit_edge:                                      ; preds = %153, %.preheader
  %160 = invoke noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #16
          to label %161 unwind label %158

161:                                              ; preds = %._crit_edge
  invoke void @_ZN10MPPanoramaC1Ev(ptr noundef nonnull align 8 dereferenceable(80) %160)
          to label %162 unwind label %177

162:                                              ; preds = %161
  %163 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %45, ptr noundef nonnull dereferenceable(1) @.str.15) #15
  %.not131 = icmp eq i32 %163, 0
  br i1 %.not131, label %166, label %164

164:                                              ; preds = %162
  %165 = call noalias ptr @strdup(ptr noundef nonnull %45) #13
  br label %166

166:                                              ; preds = %162, %164
  %167 = phi ptr [ %165, %164 ], [ null, %162 ]
  %168 = getelementptr inbounds i8, ptr %160, i64 32
  store ptr %167, ptr %168, align 8, !tbaa !30
  %169 = getelementptr inbounds i8, ptr %160, i64 56
  %170 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN7R3PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %169, ptr noundef nonnull align 8 dereferenceable(24) %4)
          to label %171 unwind label %158

171:                                              ; preds = %166
  invoke void @_ZN10MPPanorama11InsertImageEP7MPImage(ptr noundef nonnull align 8 dereferenceable(80) %160, ptr noundef nonnull %66)
          to label %172 unwind label %158

172:                                              ; preds = %171
  invoke void @_ZN7MPHouse14InsertPanoramaEP10MPPanorama(ptr noundef nonnull align 8 dereferenceable(376) %0, ptr noundef nonnull %160)
          to label %173 unwind label %158

173:                                              ; preds = %172
  %174 = invoke noundef ptr @_ZNK7MPHouse10FindRegionERK7R3Pointd(ptr noundef nonnull align 8 dereferenceable(376) %0, ptr noundef nonnull align 8 dereferenceable(24) %4, double noundef 1.000000e+00)
          to label %175 unwind label %179

175:                                              ; preds = %173
  %.not132 = icmp eq ptr %174, null
  br i1 %.not132, label %181, label %176

176:                                              ; preds = %175
  invoke void @_ZN8MPRegion14InsertPanoramaEP10MPPanorama(ptr noundef nonnull align 8 dereferenceable(192) %174, ptr noundef nonnull %160)
          to label %181 unwind label %179

177:                                              ; preds = %161
  %178 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %160, i64 noundef 80) #17
  br label %185

179:                                              ; preds = %176, %173
  %180 = landingpad { ptr, i32 }
          cleanup
  br label %185

181:                                              ; preds = %175, %176, %157
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %9) #13
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %8) #13
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %5) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #13
  %182 = add nuw nsw i32 %.0109163, 1
  %183 = call noundef i32 @_ZNK17RGBDConfiguration7NImagesEv(ptr noundef nonnull align 8 dereferenceable(128) %3)
  %184 = icmp slt i32 %182, %183
  br i1 %184, label %23, label %._crit_edge165, !llvm.loop !35

185:                                              ; preds = %151, %158, %177, %179, %138, %136, %134
  %.pn133.pn = phi { ptr, i32 } [ %135, %134 ], [ %139, %138 ], [ %137, %136 ], [ %159, %158 ], [ %180, %179 ], [ %178, %177 ], [ %152, %151 ]
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %9) #13
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %8) #13
  br label %186

186:                                              ; preds = %185, %132, %131, %125, %123
  %.pn133.pn.pn = phi { ptr, i32 } [ %.pn133.pn, %185 ], [ %124, %123 ], [ %133, %132 ], [ %.pn126, %131 ], [ %126, %125 ]
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %5) #13
  br label %187

187:                                              ; preds = %54, %186, %56, %52
  %.pn133.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %53, %52 ], [ %55, %54 ], [ %.pn133.pn.pn, %186 ], [ %57, %56 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #13
  br label %197

188:                                              ; preds = %._crit_edge165
  %189 = getelementptr inbounds i8, ptr %0, i64 304
  invoke void @_ZN5R3Box5UnionERKS_(ptr noundef nonnull align 8 dereferenceable(56) %189, ptr noundef nonnull align 8 dereferenceable(56) %12)
          to label %190 unwind label %193

190:                                              ; preds = %188
  call void @_ZN7R3SolidD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %12) #13
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %12) #13
  br label %196

191:                                              ; preds = %._crit_edge165
  %192 = landingpad { ptr, i32 }
          cleanup
  br label %195

193:                                              ; preds = %188
  %194 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7R3SolidD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %12) #13
  br label %195

195:                                              ; preds = %193, %191
  %.pn = phi { ptr, i32 } [ %194, %193 ], [ %192, %191 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %12) #13
  br label %197

196:                                              ; preds = %190, %18
  %.0 = phi i32 [ 1, %190 ], [ 0, %18 ]
  call void @_ZN17RGBDConfigurationD1Ev(ptr noundef nonnull align 8 dereferenceable(128) %3) #13
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %3) #13
  ret i32 %.0

197:                                              ; preds = %50, %187, %195, %21
  %.pn133.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn, %195 ], [ %22, %21 ], [ %.pn133.pn.pn.pn.pn.pn, %187 ], [ %51, %50 ]
  call void @_ZN17RGBDConfigurationD1Ev(ptr noundef nonnull align 8 dereferenceable(128) %3) #13
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %3) #13
  resume { ptr, i32 } %.pn133.pn.pn.pn.pn.pn.pn.pn
}

declare noundef i32 @_ZN17RGBDConfiguration8ReadFileEPKci(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef, i32 noundef) unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZNK17RGBDConfiguration5ImageEi(ptr noundef nonnull align 8 dereferenceable(128), i32 noundef) local_unnamed_addr #12 align 2

; 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 #12 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 #12 align 2

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare noundef ptr @strrchr(ptr noundef, i32 noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare noundef ptr @strstr(ptr noundef, ptr nocapture noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare noundef ptr @strchr(ptr noundef, i32 noundef) local_unnamed_addr #7

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK8R3Affine7InverseEv(ptr dead_on_unwind noalias writable sret(%class.R3Affine) align 8, ptr noundef nonnull align 8 dereferenceable(272)) local_unnamed_addr #12 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(128) ptr @_ZNK8R3Affine6MatrixEv(ptr noundef nonnull align 8 dereferenceable(272)) local_unnamed_addr #1 align 2

; Function Attrs: nounwind
declare void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272)) unnamed_addr #3

; 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 #1 align 2

declare void @_ZN8R4MatrixC1ERKS_(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #5

declare void @_ZN8R3MatrixC1ERKS_(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #5

declare noundef double @_Z17R3SquaredDistanceRK7R3PointS1_(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 @_ZNK17RGBDConfiguration9WorldBBoxEv(ptr dead_on_unwind noalias writable sret(%class.R3Box) align 8, ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #12 align 2

declare void @_ZN7MPImageC1Ev(ptr) local_unnamed_addr

declare void @_ZN10MPPanoramaC1Ev(ptr) local_unnamed_addr

attributes #0 = { 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 #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 nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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 = { mustprogress nofree nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 = { mustprogress nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { mustprogress nofree nounwind willreturn memory(argmem: readwrite) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #11 = { inlinehint mustprogress nofree nounwind willreturn memory(read) 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 #12 = { 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 #13 = { nounwind }
attributes #14 = { cold nounwind }
attributes #15 = { nounwind willreturn memory(read) }
attributes #16 = { builtin allocsize(0) }
attributes #17 = { builtin 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 = !{!7, !7, i64 0}
!10 = !{!11, !6, i64 32}
!11 = !{!"_ZTS7MPImage", !6, i64 0, !12, i64 8, !6, i64 16, !12, i64 24, !6, i64 32, !12, i64 40, !12, i64 44, !13, i64 48, !18, i64 536, !21, i64 664, !12, i64 736, !12, i64 740, !25, i64 744}
!12 = !{!"int", !7, i64 0}
!13 = !{!"_ZTS9RGBDImage", !6, i64 8, !12, i64 16, !14, i64 24, !12, i64 40, !12, i64 44, !16, i64 48, !21, i64 320, !22, i64 392, !12, i64 448, !6, i64 456, !6, i64 464, !6, i64 472, !12, i64 480, !12, i64 484}
!14 = !{!"_ZTS7RNArrayIP6R2GridE", !15, i64 0}
!15 = !{!"_ZTS8RNVArray", !6, i64 0, !12, i64 8, !12, i64 12}
!16 = !{!"_ZTS8R3Affine", !17, i64 0, !18, i64 8, !18, i64 136, !19, i64 264}
!17 = !{!"_ZTS16R3Transformation"}
!18 = !{!"_ZTS8R4Matrix", !7, i64 0}
!19 = !{!"_ZTS7RNFlags", !20, i64 0}
!20 = !{!"long", !7, i64 0}
!21 = !{!"_ZTS8R3Matrix", !7, i64 0}
!22 = !{!"_ZTS5R3Box", !23, i64 0, !25, i64 8, !25, i64 32}
!23 = !{!"_ZTS7R3Solid", !24, i64 0}
!24 = !{!"_ZTS7R3Shape"}
!25 = !{!"_ZTS7R3Point", !7, i64 0}
!26 = !{!11, !12, i64 40}
!27 = !{!11, !12, i64 44}
!28 = !{!11, !12, i64 736}
!29 = !{!11, !12, i64 740}
!30 = !{!31, !6, i64 32}
!31 = !{!"_ZTS10MPPanorama", !6, i64 0, !12, i64 8, !6, i64 16, !12, i64 24, !6, i64 32, !32, i64 40, !25, i64 56}
!32 = !{!"_ZTS7RNArrayIP7MPImageE", !15, i64 0}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}
!35 = distinct !{!35, !34}


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