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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK7RNFlagscvmEv(ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL9LoadColori(i32 noundef) #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL9LoadIndexii(i32 noundef, i32 noundef) #1

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) unnamed_addr #0 align 2

declare void @glDisable(i32 noundef) #3

declare void @glEnable(i32 noundef) #3

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

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

declare void @glColor3d(double noundef, double noundef, double noundef) #3

declare void @glBegin(i32 noundef) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z12R3LoadNormalRK8R3Vector(ptr noundef nonnull align 8 dereferenceable(24)) #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh10FaceNormalEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6R3Mesh12VertexOnFaceEPK10R3MeshFacei(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef, i32 noundef) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z9RNLoadRgbRK5RNRgb(ptr noundef nonnull align 8 dereferenceable(24)) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh11VertexColorEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24)) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef) #0 align 2

declare void @glEnd() #3

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK7MPHouse8DrawMeshE7RNFlags(ptr noundef nonnull align 8 dereferenceable(376) %0, i64 %1) #1 align 2 {
  %3 = alloca %class.RNFlags, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %class.RNFlags, align 8
  %6 = alloca %class.RNFlags, align 8
  %7 = alloca %class.RNFlags, align 8
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca %class.RNFlags, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca %class.RNFlags, align 8
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca %class.RNFlags, align 8
  %28 = alloca %class.RNFlags, align 8
  %29 = alloca %class.RNFlags, align 8
  %30 = alloca %class.RNFlags, align 8
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca %class.RNFlags, align 8
  %35 = alloca i32, align 4
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca i32, align 4
  %39 = alloca %class.RNFlags, align 8
  %40 = alloca i32, align 4
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca ptr, align 8
  %46 = getelementptr inbounds %class.RNFlags, ptr %3, i32 0, i32 0
  store i64 %1, ptr %46, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  %47 = load ptr, ptr %4, align 8
  %48 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %49 = load ptr, ptr %48, align 8, !tbaa !9
  %50 = icmp ne ptr %49, null
  br i1 %50, label %52, label %51

51:                                               ; preds = %2
  br label %419

52:                                               ; preds = %2
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %5, i64 noundef 131072)
  %53 = getelementptr inbounds %class.RNFlags, ptr %5, i32 0, i32 0
  %54 = load i64, ptr %53, align 8
  %55 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %54)
  %56 = icmp ne i32 %55, 0
  br i1 %56, label %58, label %57

57:                                               ; preds = %52
  br label %419

58:                                               ; preds = %52
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef 4)
  %59 = getelementptr inbounds %class.RNFlags, ptr %6, i32 0, i32 0
  %60 = load i64, ptr %59, align 8
  %61 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %60)
  %62 = icmp ne i32 %61, 0
  br i1 %62, label %63, label %244

63:                                               ; preds = %58
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %7, i64 noundef 2147483648)
  %64 = getelementptr inbounds %class.RNFlags, ptr %7, i32 0, i32 0
  %65 = load i64, ptr %64, align 8
  %66 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %65)
  %67 = icmp ne i32 %66, 0
  br i1 %67, label %68, label %92

68:                                               ; preds = %63
  call void @glDisable(i32 noundef 2896)
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #5
  store i32 0, ptr %8, align 4, !tbaa !30
  br label %69

69:                                               ; preds = %88, %68
  %70 = load i32, ptr %8, align 4, !tbaa !30
  %71 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %72 = load ptr, ptr %71, align 8, !tbaa !9
  %73 = call noundef i32 @_ZNK6R3Mesh6NFacesEv(ptr noundef nonnull align 8 dereferenceable(272) %72)
  %74 = icmp slt i32 %70, %73
  br i1 %74, label %76, label %75

75:                                               ; preds = %69
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  br label %91

76:                                               ; preds = %69
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  %77 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %78 = load ptr, ptr %77, align 8, !tbaa !9
  %79 = load i32, ptr %8, align 4, !tbaa !30
  %80 = call noundef ptr @_ZNK6R3Mesh4FaceEi(ptr noundef nonnull align 8 dereferenceable(272) %78, i32 noundef %79)
  store ptr %80, ptr %9, align 8, !tbaa !5
  %81 = load i32, ptr %8, align 4, !tbaa !30
  call void @_ZL9LoadIndexii(i32 noundef %81, i32 noundef 249)
  %82 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %83 = load ptr, ptr %82, align 8, !tbaa !9
  %84 = load ptr, ptr %9, align 8, !tbaa !5
  %85 = load ptr, ptr %83, align 8, !tbaa !31
  %86 = getelementptr inbounds ptr, ptr %85, i64 45
  %87 = load ptr, ptr %86, align 8
  call void %87(ptr noundef nonnull align 8 dereferenceable(272) %83, ptr noundef %84)
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  br label %88

88:                                               ; preds = %76
  %89 = load i32, ptr %8, align 4, !tbaa !30
  %90 = add nsw i32 %89, 1
  store i32 %90, ptr %8, align 4, !tbaa !30
  br label %69, !llvm.loop !33

91:                                               ; preds = %75
  br label %243

92:                                               ; preds = %63
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %10, i64 noundef 268435456)
  %93 = getelementptr inbounds %class.RNFlags, ptr %10, i32 0, i32 0
  %94 = load i64, ptr %93, align 8
  %95 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %94)
  %96 = icmp ne i32 %95, 0
  br i1 %96, label %97, label %147

97:                                               ; preds = %92
  %98 = call noundef i64 @_ZNK7RNFlagscvmEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %99 = and i64 %98, 2147483648
  %100 = icmp ne i64 %99, 0
  br i1 %100, label %101, label %102

101:                                              ; preds = %97
  call void @glDisable(i32 noundef 2896)
  br label %103

102:                                              ; preds = %97
  call void @glEnable(i32 noundef 2896)
  br label %103

103:                                              ; preds = %102, %101
  call void @glBegin(i32 noundef 4)
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  store i32 0, ptr %11, align 4, !tbaa !30
  br label %104

104:                                              ; preds = %143, %103
  %105 = load i32, ptr %11, align 4, !tbaa !30
  %106 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %107 = load ptr, ptr %106, align 8, !tbaa !9
  %108 = call noundef i32 @_ZNK6R3Mesh6NFacesEv(ptr noundef nonnull align 8 dereferenceable(272) %107)
  %109 = icmp slt i32 %105, %108
  br i1 %109, label %111, label %110

110:                                              ; preds = %104
  store i32 5, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  br label %146

111:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  %112 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %113 = load ptr, ptr %112, align 8, !tbaa !9
  %114 = load i32, ptr %11, align 4, !tbaa !30
  %115 = call noundef ptr @_ZNK6R3Mesh4FaceEi(ptr noundef nonnull align 8 dereferenceable(272) %113, i32 noundef %114)
  store ptr %115, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  %116 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %117 = load ptr, ptr %116, align 8, !tbaa !9
  %118 = load ptr, ptr %13, align 8, !tbaa !5
  %119 = call noundef i32 @_ZNK6R3Mesh12FaceCategoryEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272) %117, ptr noundef %118)
  store i32 %119, ptr %14, align 4, !tbaa !30
  %120 = load i32, ptr %14, align 4, !tbaa !30
  call void @_ZL9LoadColori(i32 noundef %120)
  %121 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %122 = load ptr, ptr %121, align 8, !tbaa !9
  %123 = load ptr, ptr %13, align 8, !tbaa !5
  %124 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh10FaceNormalEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272) %122, ptr noundef %123)
  call void @_Z12R3LoadNormalRK8R3Vector(ptr noundef nonnull align 8 dereferenceable(24) %124)
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  store i32 0, ptr %15, align 4, !tbaa !30
  br label %125

125:                                              ; preds = %139, %111
  %126 = load i32, ptr %15, align 4, !tbaa !30
  %127 = icmp slt i32 %126, 3
  br i1 %127, label %129, label %128

128:                                              ; preds = %125
  store i32 8, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  br label %142

129:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  %130 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %131 = load ptr, ptr %130, align 8, !tbaa !9
  %132 = load ptr, ptr %13, align 8, !tbaa !5
  %133 = load i32, ptr %15, align 4, !tbaa !30
  %134 = call noundef ptr @_ZNK6R3Mesh12VertexOnFaceEPK10R3MeshFacei(ptr noundef nonnull align 8 dereferenceable(272) %131, ptr noundef %132, i32 noundef %133)
  store ptr %134, ptr %16, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %136 = load ptr, ptr %135, align 8, !tbaa !9
  %137 = load ptr, ptr %16, align 8, !tbaa !5
  %138 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %136, ptr noundef %137)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %138)
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  br label %139

139:                                              ; preds = %129
  %140 = load i32, ptr %15, align 4, !tbaa !30
  %141 = add nsw i32 %140, 1
  store i32 %141, ptr %15, align 4, !tbaa !30
  br label %125, !llvm.loop !35

142:                                              ; preds = %128
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  br label %143

143:                                              ; preds = %142
  %144 = load i32, ptr %11, align 4, !tbaa !30
  %145 = add nsw i32 %144, 1
  store i32 %145, ptr %11, align 4, !tbaa !30
  br label %104, !llvm.loop !36

146:                                              ; preds = %110
  call void @glEnd()
  br label %242

147:                                              ; preds = %92
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %17, i64 noundef 536870912)
  %148 = getelementptr inbounds %class.RNFlags, ptr %17, i32 0, i32 0
  %149 = load i64, ptr %148, align 8
  %150 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %149)
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %152, label %202

152:                                              ; preds = %147
  %153 = call noundef i64 @_ZNK7RNFlagscvmEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %154 = and i64 %153, 2147483648
  %155 = icmp ne i64 %154, 0
  br i1 %155, label %156, label %157

156:                                              ; preds = %152
  call void @glDisable(i32 noundef 2896)
  br label %158

157:                                              ; preds = %152
  call void @glEnable(i32 noundef 2896)
  br label %158

158:                                              ; preds = %157, %156
  call void @glBegin(i32 noundef 4)
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  store i32 0, ptr %18, align 4, !tbaa !30
  br label %159

159:                                              ; preds = %198, %158
  %160 = load i32, ptr %18, align 4, !tbaa !30
  %161 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %162 = load ptr, ptr %161, align 8, !tbaa !9
  %163 = call noundef i32 @_ZNK6R3Mesh6NFacesEv(ptr noundef nonnull align 8 dereferenceable(272) %162)
  %164 = icmp slt i32 %160, %163
  br i1 %164, label %166, label %165

165:                                              ; preds = %159
  store i32 11, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  br label %201

166:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  %167 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %168 = load ptr, ptr %167, align 8, !tbaa !9
  %169 = load i32, ptr %18, align 4, !tbaa !30
  %170 = call noundef ptr @_ZNK6R3Mesh4FaceEi(ptr noundef nonnull align 8 dereferenceable(272) %168, i32 noundef %169)
  store ptr %170, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  %171 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %172 = load ptr, ptr %171, align 8, !tbaa !9
  %173 = load ptr, ptr %19, align 8, !tbaa !5
  %174 = call noundef i32 @_ZNK6R3Mesh11FaceSegmentEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272) %172, ptr noundef %173)
  store i32 %174, ptr %20, align 4, !tbaa !30
  %175 = load i32, ptr %20, align 4, !tbaa !30
  call void @_ZL9LoadColori(i32 noundef %175)
  %176 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %177 = load ptr, ptr %176, align 8, !tbaa !9
  %178 = load ptr, ptr %19, align 8, !tbaa !5
  %179 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh10FaceNormalEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272) %177, ptr noundef %178)
  call void @_Z12R3LoadNormalRK8R3Vector(ptr noundef nonnull align 8 dereferenceable(24) %179)
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  store i32 0, ptr %21, align 4, !tbaa !30
  br label %180

180:                                              ; preds = %194, %166
  %181 = load i32, ptr %21, align 4, !tbaa !30
  %182 = icmp slt i32 %181, 3
  br i1 %182, label %184, label %183

183:                                              ; preds = %180
  store i32 14, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  br label %197

184:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  %185 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %186 = load ptr, ptr %185, align 8, !tbaa !9
  %187 = load ptr, ptr %19, align 8, !tbaa !5
  %188 = load i32, ptr %21, align 4, !tbaa !30
  %189 = call noundef ptr @_ZNK6R3Mesh12VertexOnFaceEPK10R3MeshFacei(ptr noundef nonnull align 8 dereferenceable(272) %186, ptr noundef %187, i32 noundef %188)
  store ptr %189, ptr %22, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %191 = load ptr, ptr %190, align 8, !tbaa !9
  %192 = load ptr, ptr %22, align 8, !tbaa !5
  %193 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %191, ptr noundef %192)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %193)
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  br label %194

194:                                              ; preds = %184
  %195 = load i32, ptr %21, align 4, !tbaa !30
  %196 = add nsw i32 %195, 1
  store i32 %196, ptr %21, align 4, !tbaa !30
  br label %180, !llvm.loop !37

197:                                              ; preds = %183
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  br label %198

198:                                              ; preds = %197
  %199 = load i32, ptr %18, align 4, !tbaa !30
  %200 = add nsw i32 %199, 1
  store i32 %200, ptr %18, align 4, !tbaa !30
  br label %159, !llvm.loop !38

201:                                              ; preds = %165
  call void @glEnd()
  br label %241

202:                                              ; preds = %147
  call void @glDisable(i32 noundef 2896)
  call void @glBegin(i32 noundef 4)
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  store i32 0, ptr %23, align 4, !tbaa !30
  br label %203

203:                                              ; preds = %237, %202
  %204 = load i32, ptr %23, align 4, !tbaa !30
  %205 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %206 = load ptr, ptr %205, align 8, !tbaa !9
  %207 = call noundef i32 @_ZNK6R3Mesh6NFacesEv(ptr noundef nonnull align 8 dereferenceable(272) %206)
  %208 = icmp slt i32 %204, %207
  br i1 %208, label %210, label %209

209:                                              ; preds = %203
  store i32 17, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  br label %240

210:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  %211 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %212 = load ptr, ptr %211, align 8, !tbaa !9
  %213 = load i32, ptr %23, align 4, !tbaa !30
  %214 = call noundef ptr @_ZNK6R3Mesh4FaceEi(ptr noundef nonnull align 8 dereferenceable(272) %212, i32 noundef %213)
  store ptr %214, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  store i32 0, ptr %25, align 4, !tbaa !30
  br label %215

215:                                              ; preds = %233, %210
  %216 = load i32, ptr %25, align 4, !tbaa !30
  %217 = icmp slt i32 %216, 3
  br i1 %217, label %219, label %218

218:                                              ; preds = %215
  store i32 20, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  br label %236

219:                                              ; preds = %215
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  %220 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %221 = load ptr, ptr %220, align 8, !tbaa !9
  %222 = load ptr, ptr %24, align 8, !tbaa !5
  %223 = load i32, ptr %25, align 4, !tbaa !30
  %224 = call noundef ptr @_ZNK6R3Mesh12VertexOnFaceEPK10R3MeshFacei(ptr noundef nonnull align 8 dereferenceable(272) %221, ptr noundef %222, i32 noundef %223)
  store ptr %224, ptr %26, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %226 = load ptr, ptr %225, align 8, !tbaa !9
  %227 = load ptr, ptr %26, align 8, !tbaa !5
  %228 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh11VertexColorEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %226, ptr noundef %227)
  call void @_Z9RNLoadRgbRK5RNRgb(ptr noundef nonnull align 8 dereferenceable(24) %228)
  %229 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %230 = load ptr, ptr %229, align 8, !tbaa !9
  %231 = load ptr, ptr %26, align 8, !tbaa !5
  %232 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %230, ptr noundef %231)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %232)
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  br label %233

233:                                              ; preds = %219
  %234 = load i32, ptr %25, align 4, !tbaa !30
  %235 = add nsw i32 %234, 1
  store i32 %235, ptr %25, align 4, !tbaa !30
  br label %215, !llvm.loop !39

236:                                              ; preds = %218
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  br label %237

237:                                              ; preds = %236
  %238 = load i32, ptr %23, align 4, !tbaa !30
  %239 = add nsw i32 %238, 1
  store i32 %239, ptr %23, align 4, !tbaa !30
  br label %203, !llvm.loop !40

240:                                              ; preds = %209
  call void @glEnd()
  br label %241

241:                                              ; preds = %240, %201
  br label %242

242:                                              ; preds = %241, %146
  br label %243

243:                                              ; preds = %242, %91
  br label %244

244:                                              ; preds = %243, %58
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %27, i64 noundef 2)
  %245 = getelementptr inbounds %class.RNFlags, ptr %27, i32 0, i32 0
  %246 = load i64, ptr %245, align 8
  %247 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %246)
  %248 = icmp ne i32 %247, 0
  br i1 %248, label %249, label %261

249:                                              ; preds = %244
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %28, i64 noundef 2147483648)
  %250 = getelementptr inbounds %class.RNFlags, ptr %28, i32 0, i32 0
  %251 = load i64, ptr %250, align 8
  %252 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %251)
  %253 = icmp ne i32 %252, 0
  br i1 %253, label %260, label %254

254:                                              ; preds = %249
  call void @glDisable(i32 noundef 2896)
  call void @glColor3d(double noundef 0.000000e+00, double noundef 1.000000e+00, double noundef 0.000000e+00)
  %255 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %256 = load ptr, ptr %255, align 8, !tbaa !9
  %257 = load ptr, ptr %256, align 8, !tbaa !31
  %258 = getelementptr inbounds ptr, ptr %257, i64 38
  %259 = load ptr, ptr %258, align 8
  call void %259(ptr noundef nonnull align 8 dereferenceable(272) %256)
  br label %260

260:                                              ; preds = %254, %249
  br label %261

261:                                              ; preds = %260, %244
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %29, i64 noundef 1)
  %262 = getelementptr inbounds %class.RNFlags, ptr %29, i32 0, i32 0
  %263 = load i64, ptr %262, align 8
  %264 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %263)
  %265 = icmp ne i32 %264, 0
  br i1 %265, label %266, label %419

266:                                              ; preds = %261
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %30, i64 noundef 2147483648)
  %267 = getelementptr inbounds %class.RNFlags, ptr %30, i32 0, i32 0
  %268 = load i64, ptr %267, align 8
  %269 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %268)
  %270 = icmp ne i32 %269, 0
  br i1 %270, label %271, label %307

271:                                              ; preds = %266
  call void @glDisable(i32 noundef 2896)
  call void @glBegin(i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #5
  store i32 0, ptr %31, align 4, !tbaa !30
  br label %272

272:                                              ; preds = %303, %271
  %273 = load i32, ptr %31, align 4, !tbaa !30
  %274 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %275 = load ptr, ptr %274, align 8, !tbaa !9
  %276 = call noundef i32 @_ZNK6R3Mesh9NVerticesEv(ptr noundef nonnull align 8 dereferenceable(272) %275)
  %277 = icmp slt i32 %273, %276
  br i1 %277, label %279, label %278

278:                                              ; preds = %272
  store i32 23, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  br label %306

279:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  %280 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %281 = load ptr, ptr %280, align 8, !tbaa !9
  %282 = load i32, ptr %31, align 4, !tbaa !30
  %283 = call noundef ptr @_ZNK6R3Mesh6VertexEi(ptr noundef nonnull align 8 dereferenceable(272) %281, i32 noundef %282)
  store ptr %283, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  %284 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %285 = load ptr, ptr %284, align 8, !tbaa !9
  %286 = load ptr, ptr %32, align 8, !tbaa !5
  %287 = call noundef ptr @_ZNK6R3Mesh12FaceOnVertexEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %285, ptr noundef %286)
  store ptr %287, ptr %33, align 8, !tbaa !5
  %288 = load ptr, ptr %33, align 8, !tbaa !5
  %289 = icmp ne ptr %288, null
  br i1 %289, label %291, label %290

290:                                              ; preds = %279
  store i32 25, ptr %12, align 4
  br label %300

291:                                              ; preds = %279
  %292 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %293 = load ptr, ptr %292, align 8, !tbaa !9
  %294 = load ptr, ptr %33, align 8, !tbaa !5
  %295 = call noundef i32 @_ZNK6R3Mesh6FaceIDEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272) %293, ptr noundef %294)
  call void @_ZL9LoadIndexii(i32 noundef %295, i32 noundef 249)
  %296 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %297 = load ptr, ptr %296, align 8, !tbaa !9
  %298 = load ptr, ptr %32, align 8, !tbaa !5
  %299 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %297, ptr noundef %298)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %299)
  store i32 0, ptr %12, align 4
  br label %300

300:                                              ; preds = %291, %290
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  %301 = load i32, ptr %12, align 4
  switch i32 %301, label %420 [
    i32 0, label %302
    i32 25, label %303
  ]

302:                                              ; preds = %300
  br label %303

303:                                              ; preds = %302, %300
  %304 = load i32, ptr %31, align 4, !tbaa !30
  %305 = add nsw i32 %304, 1
  store i32 %305, ptr %31, align 4, !tbaa !30
  br label %272, !llvm.loop !41

306:                                              ; preds = %278
  call void @glEnd()
  br label %418

307:                                              ; preds = %266
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %34, i64 noundef 268435456)
  %308 = getelementptr inbounds %class.RNFlags, ptr %34, i32 0, i32 0
  %309 = load i64, ptr %308, align 8
  %310 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %309)
  %311 = icmp ne i32 %310, 0
  br i1 %311, label %312, label %349

312:                                              ; preds = %307
  call void @glDisable(i32 noundef 2896)
  call void @glBegin(i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #5
  store i32 0, ptr %35, align 4, !tbaa !30
  br label %313

313:                                              ; preds = %345, %312
  %314 = load i32, ptr %35, align 4, !tbaa !30
  %315 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %316 = load ptr, ptr %315, align 8, !tbaa !9
  %317 = call noundef i32 @_ZNK6R3Mesh9NVerticesEv(ptr noundef nonnull align 8 dereferenceable(272) %316)
  %318 = icmp slt i32 %314, %317
  br i1 %318, label %320, label %319

319:                                              ; preds = %313
  store i32 26, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  br label %348

320:                                              ; preds = %313
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  %321 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %322 = load ptr, ptr %321, align 8, !tbaa !9
  %323 = load i32, ptr %35, align 4, !tbaa !30
  %324 = call noundef ptr @_ZNK6R3Mesh6VertexEi(ptr noundef nonnull align 8 dereferenceable(272) %322, i32 noundef %323)
  store ptr %324, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  %325 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %326 = load ptr, ptr %325, align 8, !tbaa !9
  %327 = load ptr, ptr %36, align 8, !tbaa !5
  %328 = call noundef ptr @_ZNK6R3Mesh12FaceOnVertexEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %326, ptr noundef %327)
  store ptr %328, ptr %37, align 8, !tbaa !5
  %329 = load ptr, ptr %37, align 8, !tbaa !5
  %330 = icmp ne ptr %329, null
  br i1 %330, label %332, label %331

331:                                              ; preds = %320
  store i32 28, ptr %12, align 4
  br label %342

332:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #5
  %333 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %334 = load ptr, ptr %333, align 8, !tbaa !9
  %335 = load ptr, ptr %37, align 8, !tbaa !5
  %336 = call noundef i32 @_ZNK6R3Mesh12FaceCategoryEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272) %334, ptr noundef %335)
  store i32 %336, ptr %38, align 4, !tbaa !30
  %337 = load i32, ptr %38, align 4, !tbaa !30
  call void @_ZL9LoadColori(i32 noundef %337)
  %338 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %339 = load ptr, ptr %338, align 8, !tbaa !9
  %340 = load ptr, ptr %36, align 8, !tbaa !5
  %341 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %339, ptr noundef %340)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %341)
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  store i32 0, ptr %12, align 4
  br label %342

342:                                              ; preds = %332, %331
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  %343 = load i32, ptr %12, align 4
  switch i32 %343, label %420 [
    i32 0, label %344
    i32 28, label %345
  ]

344:                                              ; preds = %342
  br label %345

345:                                              ; preds = %344, %342
  %346 = load i32, ptr %35, align 4, !tbaa !30
  %347 = add nsw i32 %346, 1
  store i32 %347, ptr %35, align 4, !tbaa !30
  br label %313, !llvm.loop !42

348:                                              ; preds = %319
  call void @glEnd()
  br label %417

349:                                              ; preds = %307
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %39, i64 noundef 536870912)
  %350 = getelementptr inbounds %class.RNFlags, ptr %39, i32 0, i32 0
  %351 = load i64, ptr %350, align 8
  %352 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %351)
  %353 = icmp ne i32 %352, 0
  br i1 %353, label %354, label %391

354:                                              ; preds = %349
  call void @glDisable(i32 noundef 2896)
  call void @glBegin(i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #5
  store i32 0, ptr %40, align 4, !tbaa !30
  br label %355

355:                                              ; preds = %387, %354
  %356 = load i32, ptr %40, align 4, !tbaa !30
  %357 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %358 = load ptr, ptr %357, align 8, !tbaa !9
  %359 = call noundef i32 @_ZNK6R3Mesh9NVerticesEv(ptr noundef nonnull align 8 dereferenceable(272) %358)
  %360 = icmp slt i32 %356, %359
  br i1 %360, label %362, label %361

361:                                              ; preds = %355
  store i32 29, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  br label %390

362:                                              ; preds = %355
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  %363 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %364 = load ptr, ptr %363, align 8, !tbaa !9
  %365 = load i32, ptr %40, align 4, !tbaa !30
  %366 = call noundef ptr @_ZNK6R3Mesh6VertexEi(ptr noundef nonnull align 8 dereferenceable(272) %364, i32 noundef %365)
  store ptr %366, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  %367 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %368 = load ptr, ptr %367, align 8, !tbaa !9
  %369 = load ptr, ptr %41, align 8, !tbaa !5
  %370 = call noundef ptr @_ZNK6R3Mesh12FaceOnVertexEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %368, ptr noundef %369)
  store ptr %370, ptr %42, align 8, !tbaa !5
  %371 = load ptr, ptr %42, align 8, !tbaa !5
  %372 = icmp ne ptr %371, null
  br i1 %372, label %374, label %373

373:                                              ; preds = %362
  store i32 31, ptr %12, align 4
  br label %384

374:                                              ; preds = %362
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #5
  %375 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %376 = load ptr, ptr %375, align 8, !tbaa !9
  %377 = load ptr, ptr %42, align 8, !tbaa !5
  %378 = call noundef i32 @_ZNK6R3Mesh11FaceSegmentEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272) %376, ptr noundef %377)
  store i32 %378, ptr %43, align 4, !tbaa !30
  %379 = load i32, ptr %43, align 4, !tbaa !30
  call void @_ZL9LoadColori(i32 noundef %379)
  %380 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %381 = load ptr, ptr %380, align 8, !tbaa !9
  %382 = load ptr, ptr %41, align 8, !tbaa !5
  %383 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %381, ptr noundef %382)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %383)
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  store i32 0, ptr %12, align 4
  br label %384

384:                                              ; preds = %374, %373
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  %385 = load i32, ptr %12, align 4
  switch i32 %385, label %420 [
    i32 0, label %386
    i32 31, label %387
  ]

386:                                              ; preds = %384
  br label %387

387:                                              ; preds = %386, %384
  %388 = load i32, ptr %40, align 4, !tbaa !30
  %389 = add nsw i32 %388, 1
  store i32 %389, ptr %40, align 4, !tbaa !30
  br label %355, !llvm.loop !43

390:                                              ; preds = %361
  call void @glEnd()
  br label %416

391:                                              ; preds = %349
  call void @glDisable(i32 noundef 2896)
  call void @glBegin(i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #5
  store i32 0, ptr %44, align 4, !tbaa !30
  br label %392

392:                                              ; preds = %412, %391
  %393 = load i32, ptr %44, align 4, !tbaa !30
  %394 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %395 = load ptr, ptr %394, align 8, !tbaa !9
  %396 = call noundef i32 @_ZNK6R3Mesh9NVerticesEv(ptr noundef nonnull align 8 dereferenceable(272) %395)
  %397 = icmp slt i32 %393, %396
  br i1 %397, label %399, label %398

398:                                              ; preds = %392
  store i32 32, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #5
  br label %415

399:                                              ; preds = %392
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  %400 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %401 = load ptr, ptr %400, align 8, !tbaa !9
  %402 = load i32, ptr %44, align 4, !tbaa !30
  %403 = call noundef ptr @_ZNK6R3Mesh6VertexEi(ptr noundef nonnull align 8 dereferenceable(272) %401, i32 noundef %402)
  store ptr %403, ptr %45, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %405 = load ptr, ptr %404, align 8, !tbaa !9
  %406 = load ptr, ptr %45, align 8, !tbaa !5
  %407 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh11VertexColorEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %405, ptr noundef %406)
  call void @_Z9RNLoadRgbRK5RNRgb(ptr noundef nonnull align 8 dereferenceable(24) %407)
  %408 = getelementptr inbounds %struct.MPHouse, ptr %47, i32 0, i32 12
  %409 = load ptr, ptr %408, align 8, !tbaa !9
  %410 = load ptr, ptr %45, align 8, !tbaa !5
  %411 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %409, ptr noundef %410)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %411)
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  br label %412

412:                                              ; preds = %399
  %413 = load i32, ptr %44, align 4, !tbaa !30
  %414 = add nsw i32 %413, 1
  store i32 %414, ptr %44, align 4, !tbaa !30
  br label %392, !llvm.loop !44

415:                                              ; preds = %398
  call void @glEnd()
  br label %416

416:                                              ; preds = %415, %390
  br label %417

417:                                              ; preds = %416, %348
  br label %418

418:                                              ; preds = %417, %306
  br label %419

419:                                              ; preds = %418, %261, %57, %51
  ret void

420:                                              ; preds = %384, %342, %300
  unreachable
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6R3Mesh6NFacesEv(ptr noundef nonnull align 8 dereferenceable(272)) #0 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6R3Mesh12FaceCategoryEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef) #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6R3Mesh11FaceSegmentEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef) #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6R3Mesh9NVerticesEv(ptr noundef nonnull align 8 dereferenceable(272)) #0 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6R3Mesh6FaceIDEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef) #0 align 2

attributes #0 = { 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 #1 = { 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 #2 = { 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 #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { 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, !6, i64 296}
!10 = !{!"_ZTS7MPHouse", !11, i64 0, !14, i64 16, !15, i64 32, !16, i64 48, !17, i64 64, !18, i64 80, !19, i64 96, !20, i64 112, !21, i64 128, !22, i64 144, !23, i64 160, !6, i64 288, !6, i64 296, !26, i64 304, !6, i64 360, !6, i64 368}
!11 = !{!"_ZTS7RNArrayIP7MPImageE", !12, i64 0}
!12 = !{!"_ZTS8RNVArray", !6, i64 0, !13, i64 8, !13, i64 12}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS7RNArrayIP10MPPanoramaE", !12, i64 0}
!15 = !{!"_ZTS7RNArrayIP10MPCategoryE", !12, i64 0}
!16 = !{!"_ZTS7RNArrayIP9MPSegmentE", !12, i64 0}
!17 = !{!"_ZTS7RNArrayIP8MPObjectE", !12, i64 0}
!18 = !{!"_ZTS7RNArrayIP8MPVertexE", !12, i64 0}
!19 = !{!"_ZTS7RNArrayIP9MPSurfaceE", !12, i64 0}
!20 = !{!"_ZTS7RNArrayIP8MPRegionE", !12, i64 0}
!21 = !{!"_ZTS7RNArrayIP8MPPortalE", !12, i64 0}
!22 = !{!"_ZTS7RNArrayIP7MPLevelE", !12, i64 0}
!23 = !{!"_ZTS17RGBDConfiguration", !24, i64 8, !25, i64 24, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !26, i64 72}
!24 = !{!"_ZTS7RNArrayIP9RGBDImageE", !12, i64 0}
!25 = !{!"_ZTS7RNArrayIP11RGBDSurfaceE", !12, i64 0}
!26 = !{!"_ZTS5R3Box", !27, i64 0, !29, i64 8, !29, i64 32}
!27 = !{!"_ZTS7R3Solid", !28, i64 0}
!28 = !{!"_ZTS7R3Shape"}
!29 = !{!"_ZTS7R3Point", !7, i64 0}
!30 = !{!13, !13, i64 0}
!31 = !{!32, !32, i64 0}
!32 = !{!"vtable pointer", !8, i64 0}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}
!35 = distinct !{!35, !34}
!36 = distinct !{!36, !34}
!37 = distinct !{!37, !34}
!38 = distinct !{!38, !34}
!39 = distinct !{!39, !34}
!40 = distinct !{!40, !34}
!41 = distinct !{!41, !34}
!42 = distinct !{!42, !34}
!43 = distinct !{!43, !34}
!44 = distinct !{!44, !34}


; 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.RNFlags = type { i64 }

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK7RNFlagscvmEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL9LoadColori(i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL9LoadIndexii(i32 noundef, i32 noundef) local_unnamed_addr #1

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) unnamed_addr #0 align 2

declare void @glDisable(i32 noundef) local_unnamed_addr #3

declare void @glEnable(i32 noundef) local_unnamed_addr #3

declare void @glColor3d(double noundef, double noundef, double noundef) local_unnamed_addr #3

declare void @glBegin(i32 noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z12R3LoadNormalRK8R3Vector(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh10FaceNormalEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6R3Mesh12VertexOnFaceEPK10R3MeshFacei(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef, i32 noundef) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z9RNLoadRgbRK5RNRgb(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh11VertexColorEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef) local_unnamed_addr #0 align 2

declare void @glEnd() local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK7MPHouse8DrawMeshE7RNFlags(ptr nocapture noundef nonnull readonly align 8 dereferenceable(376) %0, i64 %1) local_unnamed_addr #1 align 2 {
  %3 = alloca %class.RNFlags, align 8
  %4 = alloca %class.RNFlags, align 8
  %5 = alloca %class.RNFlags, align 8
  %6 = alloca %class.RNFlags, align 8
  %7 = alloca %class.RNFlags, align 8
  %8 = alloca %class.RNFlags, align 8
  %9 = alloca %class.RNFlags, align 8
  %10 = alloca %class.RNFlags, align 8
  %11 = alloca %class.RNFlags, align 8
  %12 = alloca %class.RNFlags, align 8
  %13 = alloca %class.RNFlags, align 8
  %14 = alloca %class.RNFlags, align 8
  store i64 %1, ptr %3, align 8
  %15 = getelementptr inbounds i8, ptr %0, i64 296
  %16 = load ptr, ptr %15, align 8, !tbaa !5
  %.not = icmp eq ptr %16, null
  br i1 %.not, label %223, label %17

17:                                               ; preds = %2
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 131072)
  %18 = load i64, ptr %4, align 8
  %19 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %18)
  %.not77 = icmp eq i32 %19, 0
  br i1 %.not77, label %223, label %20

20:                                               ; preds = %17
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %5, i64 noundef 4)
  %21 = load i64, ptr %5, align 8
  %22 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %21)
  %.not78 = icmp eq i32 %22, 0
  br i1 %.not78, label %.loopexit, label %23

23:                                               ; preds = %20
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef 2147483648)
  %24 = load i64, ptr %6, align 8
  %25 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %24)
  %.not79 = icmp eq i32 %25, 0
  br i1 %.not79, label %40, label %26

26:                                               ; preds = %23
  call void @glDisable(i32 noundef 2896)
  %27 = load ptr, ptr %15, align 8, !tbaa !5
  %28 = call noundef i32 @_ZNK6R3Mesh6NFacesEv(ptr noundef nonnull align 8 dereferenceable(272) %27)
  %29 = icmp sgt i32 %28, 0
  br i1 %29, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %26, %.lr.ph
  %.093 = phi i32 [ %36, %.lr.ph ], [ 0, %26 ]
  %30 = load ptr, ptr %15, align 8, !tbaa !5
  %31 = call noundef ptr @_ZNK6R3Mesh4FaceEi(ptr noundef nonnull align 8 dereferenceable(272) %30, i32 noundef %.093)
  call void @_ZL9LoadIndexii(i32 noundef %.093, i32 noundef 249)
  %32 = load ptr, ptr %15, align 8, !tbaa !5
  %33 = load ptr, ptr %32, align 8, !tbaa !29
  %34 = getelementptr inbounds i8, ptr %33, i64 360
  %35 = load ptr, ptr %34, align 8
  call void %35(ptr noundef nonnull align 8 dereferenceable(272) %32, ptr noundef %31)
  %36 = add nuw nsw i32 %.093, 1
  %37 = load ptr, ptr %15, align 8, !tbaa !5
  %38 = call noundef i32 @_ZNK6R3Mesh6NFacesEv(ptr noundef nonnull align 8 dereferenceable(272) %37)
  %39 = icmp slt i32 %36, %38
  br i1 %39, label %.lr.ph, label %.loopexit, !llvm.loop !31

40:                                               ; preds = %23
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %7, i64 noundef 268435456)
  %41 = load i64, ptr %7, align 8
  %42 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %41)
  %.not80 = icmp eq i32 %42, 0
  br i1 %.not80, label %74, label %43

43:                                               ; preds = %40
  %44 = call noundef i64 @_ZNK7RNFlagscvmEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %45 = and i64 %44, 2147483648
  %.not83 = icmp eq i64 %45, 0
  br i1 %.not83, label %47, label %46

46:                                               ; preds = %43
  call void @glDisable(i32 noundef 2896)
  br label %48

47:                                               ; preds = %43
  call void @glEnable(i32 noundef 2896)
  br label %48

48:                                               ; preds = %47, %46
  call void @glBegin(i32 noundef 4)
  %49 = load ptr, ptr %15, align 8, !tbaa !5
  %50 = call noundef i32 @_ZNK6R3Mesh6NFacesEv(ptr noundef nonnull align 8 dereferenceable(272) %49)
  %51 = icmp sgt i32 %50, 0
  br i1 %51, label %.lr.ph96, label %.loopexit.sink.split

.lr.ph96:                                         ; preds = %48, %.lr.ph96
  %.06595 = phi i32 [ %70, %.lr.ph96 ], [ 0, %48 ]
  %52 = load ptr, ptr %15, align 8, !tbaa !5
  %53 = call noundef ptr @_ZNK6R3Mesh4FaceEi(ptr noundef nonnull align 8 dereferenceable(272) %52, i32 noundef %.06595)
  %54 = load ptr, ptr %15, align 8, !tbaa !5
  %55 = call noundef i32 @_ZNK6R3Mesh12FaceCategoryEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272) %54, ptr noundef %53)
  call void @_ZL9LoadColori(i32 noundef %55)
  %56 = load ptr, ptr %15, align 8, !tbaa !5
  %57 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh10FaceNormalEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272) %56, ptr noundef %53)
  call void @_Z12R3LoadNormalRK8R3Vector(ptr noundef nonnull align 8 dereferenceable(24) %57)
  %58 = load ptr, ptr %15, align 8, !tbaa !5
  %59 = call noundef ptr @_ZNK6R3Mesh12VertexOnFaceEPK10R3MeshFacei(ptr noundef nonnull align 8 dereferenceable(272) %58, ptr noundef %53, i32 noundef 0)
  %60 = load ptr, ptr %15, align 8, !tbaa !5
  %61 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %60, ptr noundef %59)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %61)
  %62 = load ptr, ptr %15, align 8, !tbaa !5
  %63 = call noundef ptr @_ZNK6R3Mesh12VertexOnFaceEPK10R3MeshFacei(ptr noundef nonnull align 8 dereferenceable(272) %62, ptr noundef %53, i32 noundef 1)
  %64 = load ptr, ptr %15, align 8, !tbaa !5
  %65 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %64, ptr noundef %63)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %65)
  %66 = load ptr, ptr %15, align 8, !tbaa !5
  %67 = call noundef ptr @_ZNK6R3Mesh12VertexOnFaceEPK10R3MeshFacei(ptr noundef nonnull align 8 dereferenceable(272) %66, ptr noundef %53, i32 noundef 2)
  %68 = load ptr, ptr %15, align 8, !tbaa !5
  %69 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %68, ptr noundef %67)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %69)
  %70 = add nuw nsw i32 %.06595, 1
  %71 = load ptr, ptr %15, align 8, !tbaa !5
  %72 = call noundef i32 @_ZNK6R3Mesh6NFacesEv(ptr noundef nonnull align 8 dereferenceable(272) %71)
  %73 = icmp slt i32 %70, %72
  br i1 %73, label %.lr.ph96, label %.loopexit.sink.split, !llvm.loop !33

74:                                               ; preds = %40
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %8, i64 noundef 536870912)
  %75 = load i64, ptr %8, align 8
  %76 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %75)
  %.not81 = icmp eq i32 %76, 0
  br i1 %.not81, label %108, label %77

77:                                               ; preds = %74
  %78 = call noundef i64 @_ZNK7RNFlagscvmEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %79 = and i64 %78, 2147483648
  %.not82 = icmp eq i64 %79, 0
  br i1 %.not82, label %81, label %80

80:                                               ; preds = %77
  call void @glDisable(i32 noundef 2896)
  br label %82

81:                                               ; preds = %77
  call void @glEnable(i32 noundef 2896)
  br label %82

82:                                               ; preds = %81, %80
  call void @glBegin(i32 noundef 4)
  %83 = load ptr, ptr %15, align 8, !tbaa !5
  %84 = call noundef i32 @_ZNK6R3Mesh6NFacesEv(ptr noundef nonnull align 8 dereferenceable(272) %83)
  %85 = icmp sgt i32 %84, 0
  br i1 %85, label %.lr.ph100, label %.loopexit.sink.split

.lr.ph100:                                        ; preds = %82, %.lr.ph100
  %.06898 = phi i32 [ %104, %.lr.ph100 ], [ 0, %82 ]
  %86 = load ptr, ptr %15, align 8, !tbaa !5
  %87 = call noundef ptr @_ZNK6R3Mesh4FaceEi(ptr noundef nonnull align 8 dereferenceable(272) %86, i32 noundef %.06898)
  %88 = load ptr, ptr %15, align 8, !tbaa !5
  %89 = call noundef i32 @_ZNK6R3Mesh11FaceSegmentEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272) %88, ptr noundef %87)
  call void @_ZL9LoadColori(i32 noundef %89)
  %90 = load ptr, ptr %15, align 8, !tbaa !5
  %91 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh10FaceNormalEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272) %90, ptr noundef %87)
  call void @_Z12R3LoadNormalRK8R3Vector(ptr noundef nonnull align 8 dereferenceable(24) %91)
  %92 = load ptr, ptr %15, align 8, !tbaa !5
  %93 = call noundef ptr @_ZNK6R3Mesh12VertexOnFaceEPK10R3MeshFacei(ptr noundef nonnull align 8 dereferenceable(272) %92, ptr noundef %87, i32 noundef 0)
  %94 = load ptr, ptr %15, align 8, !tbaa !5
  %95 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %94, ptr noundef %93)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %95)
  %96 = load ptr, ptr %15, align 8, !tbaa !5
  %97 = call noundef ptr @_ZNK6R3Mesh12VertexOnFaceEPK10R3MeshFacei(ptr noundef nonnull align 8 dereferenceable(272) %96, ptr noundef %87, i32 noundef 1)
  %98 = load ptr, ptr %15, align 8, !tbaa !5
  %99 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %98, ptr noundef %97)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %99)
  %100 = load ptr, ptr %15, align 8, !tbaa !5
  %101 = call noundef ptr @_ZNK6R3Mesh12VertexOnFaceEPK10R3MeshFacei(ptr noundef nonnull align 8 dereferenceable(272) %100, ptr noundef %87, i32 noundef 2)
  %102 = load ptr, ptr %15, align 8, !tbaa !5
  %103 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %102, ptr noundef %101)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %103)
  %104 = add nuw nsw i32 %.06898, 1
  %105 = load ptr, ptr %15, align 8, !tbaa !5
  %106 = call noundef i32 @_ZNK6R3Mesh6NFacesEv(ptr noundef nonnull align 8 dereferenceable(272) %105)
  %107 = icmp slt i32 %104, %106
  br i1 %107, label %.lr.ph100, label %.loopexit.sink.split, !llvm.loop !34

108:                                              ; preds = %74
  call void @glDisable(i32 noundef 2896)
  call void @glBegin(i32 noundef 4)
  %109 = load ptr, ptr %15, align 8, !tbaa !5
  %110 = call noundef i32 @_ZNK6R3Mesh6NFacesEv(ptr noundef nonnull align 8 dereferenceable(272) %109)
  %111 = icmp sgt i32 %110, 0
  br i1 %111, label %.lr.ph105, label %.loopexit.sink.split

.lr.ph105:                                        ; preds = %108, %.lr.ph105
  %.070103 = phi i32 [ %132, %.lr.ph105 ], [ 0, %108 ]
  %112 = load ptr, ptr %15, align 8, !tbaa !5
  %113 = call noundef ptr @_ZNK6R3Mesh4FaceEi(ptr noundef nonnull align 8 dereferenceable(272) %112, i32 noundef %.070103)
  %114 = load ptr, ptr %15, align 8, !tbaa !5
  %115 = call noundef ptr @_ZNK6R3Mesh12VertexOnFaceEPK10R3MeshFacei(ptr noundef nonnull align 8 dereferenceable(272) %114, ptr noundef %113, i32 noundef 0)
  %116 = load ptr, ptr %15, align 8, !tbaa !5
  %117 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh11VertexColorEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %116, ptr noundef %115)
  call void @_Z9RNLoadRgbRK5RNRgb(ptr noundef nonnull align 8 dereferenceable(24) %117)
  %118 = load ptr, ptr %15, align 8, !tbaa !5
  %119 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %118, ptr noundef %115)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %119)
  %120 = load ptr, ptr %15, align 8, !tbaa !5
  %121 = call noundef ptr @_ZNK6R3Mesh12VertexOnFaceEPK10R3MeshFacei(ptr noundef nonnull align 8 dereferenceable(272) %120, ptr noundef %113, i32 noundef 1)
  %122 = load ptr, ptr %15, align 8, !tbaa !5
  %123 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh11VertexColorEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %122, ptr noundef %121)
  call void @_Z9RNLoadRgbRK5RNRgb(ptr noundef nonnull align 8 dereferenceable(24) %123)
  %124 = load ptr, ptr %15, align 8, !tbaa !5
  %125 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %124, ptr noundef %121)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %125)
  %126 = load ptr, ptr %15, align 8, !tbaa !5
  %127 = call noundef ptr @_ZNK6R3Mesh12VertexOnFaceEPK10R3MeshFacei(ptr noundef nonnull align 8 dereferenceable(272) %126, ptr noundef %113, i32 noundef 2)
  %128 = load ptr, ptr %15, align 8, !tbaa !5
  %129 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh11VertexColorEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %128, ptr noundef %127)
  call void @_Z9RNLoadRgbRK5RNRgb(ptr noundef nonnull align 8 dereferenceable(24) %129)
  %130 = load ptr, ptr %15, align 8, !tbaa !5
  %131 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %130, ptr noundef %127)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %131)
  %132 = add nuw nsw i32 %.070103, 1
  %133 = load ptr, ptr %15, align 8, !tbaa !5
  %134 = call noundef i32 @_ZNK6R3Mesh6NFacesEv(ptr noundef nonnull align 8 dereferenceable(272) %133)
  %135 = icmp slt i32 %132, %134
  br i1 %135, label %.lr.ph105, label %.loopexit.sink.split, !llvm.loop !35

.loopexit.sink.split:                             ; preds = %.lr.ph96, %.lr.ph100, %.lr.ph105, %108, %82, %48
  call void @glEnd()
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph, %.loopexit.sink.split, %26, %20
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %9, i64 noundef 2)
  %136 = load i64, ptr %9, align 8
  %137 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %136)
  %.not84 = icmp eq i32 %137, 0
  br i1 %.not84, label %146, label %138

138:                                              ; preds = %.loopexit
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %10, i64 noundef 2147483648)
  %139 = load i64, ptr %10, align 8
  %140 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %139)
  %.not85 = icmp eq i32 %140, 0
  br i1 %.not85, label %141, label %146

141:                                              ; preds = %138
  call void @glDisable(i32 noundef 2896)
  call void @glColor3d(double noundef 0.000000e+00, double noundef 1.000000e+00, double noundef 0.000000e+00)
  %142 = load ptr, ptr %15, align 8, !tbaa !5
  %143 = load ptr, ptr %142, align 8, !tbaa !29
  %144 = getelementptr inbounds i8, ptr %143, i64 304
  %145 = load ptr, ptr %144, align 8
  call void %145(ptr noundef nonnull align 8 dereferenceable(272) %142)
  br label %146

146:                                              ; preds = %138, %141, %.loopexit
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %11, i64 noundef 1)
  %147 = load i64, ptr %11, align 8
  %148 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %147)
  %.not86 = icmp eq i32 %148, 0
  br i1 %.not86, label %223, label %149

149:                                              ; preds = %146
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %12, i64 noundef 2147483648)
  %150 = load i64, ptr %12, align 8
  %151 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %150)
  %.not87 = icmp eq i32 %151, 0
  br i1 %.not87, label %170, label %152

152:                                              ; preds = %149
  call void @glDisable(i32 noundef 2896)
  call void @glBegin(i32 noundef 0)
  %153 = load ptr, ptr %15, align 8, !tbaa !5
  %154 = call noundef i32 @_ZNK6R3Mesh9NVerticesEv(ptr noundef nonnull align 8 dereferenceable(272) %153)
  %155 = icmp sgt i32 %154, 0
  br i1 %155, label %.lr.ph109, label %.sink.split

.lr.ph109:                                        ; preds = %152, %165
  %.073107 = phi i32 [ %166, %165 ], [ 0, %152 ]
  %156 = load ptr, ptr %15, align 8, !tbaa !5
  %157 = call noundef ptr @_ZNK6R3Mesh6VertexEi(ptr noundef nonnull align 8 dereferenceable(272) %156, i32 noundef %.073107)
  %158 = load ptr, ptr %15, align 8, !tbaa !5
  %159 = call noundef ptr @_ZNK6R3Mesh12FaceOnVertexEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %158, ptr noundef %157)
  %.not92 = icmp eq ptr %159, null
  br i1 %.not92, label %165, label %160

160:                                              ; preds = %.lr.ph109
  %161 = load ptr, ptr %15, align 8, !tbaa !5
  %162 = call noundef i32 @_ZNK6R3Mesh6FaceIDEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272) %161, ptr noundef nonnull %159)
  call void @_ZL9LoadIndexii(i32 noundef %162, i32 noundef 249)
  %163 = load ptr, ptr %15, align 8, !tbaa !5
  %164 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %163, ptr noundef %157)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %164)
  br label %165

165:                                              ; preds = %.lr.ph109, %160
  %166 = add nuw nsw i32 %.073107, 1
  %167 = load ptr, ptr %15, align 8, !tbaa !5
  %168 = call noundef i32 @_ZNK6R3Mesh9NVerticesEv(ptr noundef nonnull align 8 dereferenceable(272) %167)
  %169 = icmp slt i32 %166, %168
  br i1 %169, label %.lr.ph109, label %.sink.split, !llvm.loop !36

170:                                              ; preds = %149
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %13, i64 noundef 268435456)
  %171 = load i64, ptr %13, align 8
  %172 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %171)
  %.not88 = icmp eq i32 %172, 0
  br i1 %.not88, label %191, label %173

173:                                              ; preds = %170
  call void @glDisable(i32 noundef 2896)
  call void @glBegin(i32 noundef 0)
  %174 = load ptr, ptr %15, align 8, !tbaa !5
  %175 = call noundef i32 @_ZNK6R3Mesh9NVerticesEv(ptr noundef nonnull align 8 dereferenceable(272) %174)
  %176 = icmp sgt i32 %175, 0
  br i1 %176, label %.lr.ph113, label %.sink.split

.lr.ph113:                                        ; preds = %173, %186
  %.071111 = phi i32 [ %187, %186 ], [ 0, %173 ]
  %177 = load ptr, ptr %15, align 8, !tbaa !5
  %178 = call noundef ptr @_ZNK6R3Mesh6VertexEi(ptr noundef nonnull align 8 dereferenceable(272) %177, i32 noundef %.071111)
  %179 = load ptr, ptr %15, align 8, !tbaa !5
  %180 = call noundef ptr @_ZNK6R3Mesh12FaceOnVertexEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %179, ptr noundef %178)
  %.not91 = icmp eq ptr %180, null
  br i1 %.not91, label %186, label %181

181:                                              ; preds = %.lr.ph113
  %182 = load ptr, ptr %15, align 8, !tbaa !5
  %183 = call noundef i32 @_ZNK6R3Mesh12FaceCategoryEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272) %182, ptr noundef nonnull %180)
  call void @_ZL9LoadColori(i32 noundef %183)
  %184 = load ptr, ptr %15, align 8, !tbaa !5
  %185 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %184, ptr noundef %178)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %185)
  br label %186

186:                                              ; preds = %.lr.ph113, %181
  %187 = add nuw nsw i32 %.071111, 1
  %188 = load ptr, ptr %15, align 8, !tbaa !5
  %189 = call noundef i32 @_ZNK6R3Mesh9NVerticesEv(ptr noundef nonnull align 8 dereferenceable(272) %188)
  %190 = icmp slt i32 %187, %189
  br i1 %190, label %.lr.ph113, label %.sink.split, !llvm.loop !37

191:                                              ; preds = %170
  call void @_ZN7RNFlagsC2Em(ptr noundef nonnull align 8 dereferenceable(8) %14, i64 noundef 536870912)
  %192 = load i64, ptr %14, align 8
  %193 = call noundef i32 @_ZNK7RNFlagsixES_(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 %192)
  %.not89 = icmp eq i32 %193, 0
  call void @glDisable(i32 noundef 2896)
  call void @glBegin(i32 noundef 0)
  %194 = load ptr, ptr %15, align 8, !tbaa !5
  %195 = call noundef i32 @_ZNK6R3Mesh9NVerticesEv(ptr noundef nonnull align 8 dereferenceable(272) %194)
  %196 = icmp sgt i32 %195, 0
  br i1 %.not89, label %212, label %197

197:                                              ; preds = %191
  br i1 %196, label %.lr.ph117, label %.sink.split

.lr.ph117:                                        ; preds = %197, %207
  %.067115 = phi i32 [ %208, %207 ], [ 0, %197 ]
  %198 = load ptr, ptr %15, align 8, !tbaa !5
  %199 = call noundef ptr @_ZNK6R3Mesh6VertexEi(ptr noundef nonnull align 8 dereferenceable(272) %198, i32 noundef %.067115)
  %200 = load ptr, ptr %15, align 8, !tbaa !5
  %201 = call noundef ptr @_ZNK6R3Mesh12FaceOnVertexEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %200, ptr noundef %199)
  %.not90 = icmp eq ptr %201, null
  br i1 %.not90, label %207, label %202

202:                                              ; preds = %.lr.ph117
  %203 = load ptr, ptr %15, align 8, !tbaa !5
  %204 = call noundef i32 @_ZNK6R3Mesh11FaceSegmentEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272) %203, ptr noundef nonnull %201)
  call void @_ZL9LoadColori(i32 noundef %204)
  %205 = load ptr, ptr %15, align 8, !tbaa !5
  %206 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %205, ptr noundef %199)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %206)
  br label %207

207:                                              ; preds = %.lr.ph117, %202
  %208 = add nuw nsw i32 %.067115, 1
  %209 = load ptr, ptr %15, align 8, !tbaa !5
  %210 = call noundef i32 @_ZNK6R3Mesh9NVerticesEv(ptr noundef nonnull align 8 dereferenceable(272) %209)
  %211 = icmp slt i32 %208, %210
  br i1 %211, label %.lr.ph117, label %.sink.split, !llvm.loop !38

212:                                              ; preds = %191
  br i1 %196, label %.lr.ph121, label %.sink.split

.lr.ph121:                                        ; preds = %212, %.lr.ph121
  %.064119 = phi i32 [ %219, %.lr.ph121 ], [ 0, %212 ]
  %213 = load ptr, ptr %15, align 8, !tbaa !5
  %214 = call noundef ptr @_ZNK6R3Mesh6VertexEi(ptr noundef nonnull align 8 dereferenceable(272) %213, i32 noundef %.064119)
  %215 = load ptr, ptr %15, align 8, !tbaa !5
  %216 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh11VertexColorEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %215, ptr noundef %214)
  call void @_Z9RNLoadRgbRK5RNRgb(ptr noundef nonnull align 8 dereferenceable(24) %216)
  %217 = load ptr, ptr %15, align 8, !tbaa !5
  %218 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6R3Mesh14VertexPositionEPK12R3MeshVertex(ptr noundef nonnull align 8 dereferenceable(272) %217, ptr noundef %214)
  call void @_Z11R3LoadPointRK7R3Point(ptr noundef nonnull align 8 dereferenceable(24) %218)
  %219 = add nuw nsw i32 %.064119, 1
  %220 = load ptr, ptr %15, align 8, !tbaa !5
  %221 = call noundef i32 @_ZNK6R3Mesh9NVerticesEv(ptr noundef nonnull align 8 dereferenceable(272) %220)
  %222 = icmp slt i32 %219, %221
  br i1 %222, label %.lr.ph121, label %.sink.split, !llvm.loop !39

.sink.split:                                      ; preds = %165, %186, %207, %.lr.ph121, %212, %197, %173, %152
  call void @glEnd()
  br label %223

223:                                              ; preds = %.sink.split, %17, %2, %146
  ret void
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6R3Mesh6NFacesEv(ptr noundef nonnull align 8 dereferenceable(272)) local_unnamed_addr #0 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6R3Mesh12FaceCategoryEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6R3Mesh11FaceSegmentEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6R3Mesh9NVerticesEv(ptr noundef nonnull align 8 dereferenceable(272)) local_unnamed_addr #0 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6R3Mesh6FaceIDEPK10R3MeshFace(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef) local_unnamed_addr #0 align 2

attributes #0 = { 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 #1 = { 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 #2 = { 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 #3 = { "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" }

!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, !9, i64 296}
!6 = !{!"_ZTS7MPHouse", !7, i64 0, !13, i64 16, !14, i64 32, !15, i64 48, !16, i64 64, !17, i64 80, !18, i64 96, !19, i64 112, !20, i64 128, !21, i64 144, !22, i64 160, !9, i64 288, !9, i64 296, !25, i64 304, !9, i64 360, !9, i64 368}
!7 = !{!"_ZTS7RNArrayIP7MPImageE", !8, i64 0}
!8 = !{!"_ZTS8RNVArray", !9, i64 0, !12, i64 8, !12, i64 12}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"int", !10, i64 0}
!13 = !{!"_ZTS7RNArrayIP10MPPanoramaE", !8, i64 0}
!14 = !{!"_ZTS7RNArrayIP10MPCategoryE", !8, i64 0}
!15 = !{!"_ZTS7RNArrayIP9MPSegmentE", !8, i64 0}
!16 = !{!"_ZTS7RNArrayIP8MPObjectE", !8, i64 0}
!17 = !{!"_ZTS7RNArrayIP8MPVertexE", !8, i64 0}
!18 = !{!"_ZTS7RNArrayIP9MPSurfaceE", !8, i64 0}
!19 = !{!"_ZTS7RNArrayIP8MPRegionE", !8, i64 0}
!20 = !{!"_ZTS7RNArrayIP8MPPortalE", !8, i64 0}
!21 = !{!"_ZTS7RNArrayIP7MPLevelE", !8, i64 0}
!22 = !{!"_ZTS17RGBDConfiguration", !23, i64 8, !24, i64 24, !9, i64 40, !9, i64 48, !9, i64 56, !9, i64 64, !25, i64 72}
!23 = !{!"_ZTS7RNArrayIP9RGBDImageE", !8, i64 0}
!24 = !{!"_ZTS7RNArrayIP11RGBDSurfaceE", !8, i64 0}
!25 = !{!"_ZTS5R3Box", !26, i64 0, !28, i64 8, !28, i64 32}
!26 = !{!"_ZTS7R3Solid", !27, i64 0}
!27 = !{!"_ZTS7R3Shape"}
!28 = !{!"_ZTS7R3Point", !10, i64 0}
!29 = !{!30, !30, i64 0}
!30 = !{!"vtable pointer", !11, i64 0}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = distinct !{!33, !32}
!34 = distinct !{!34, !32}
!35 = distinct !{!35, !32}
!36 = distinct !{!36, !32}
!37 = distinct !{!37, !32}
!38 = distinct !{!38, !32}
!39 = distinct !{!39, !32}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass